Uh oh!
There was an error while loading. Please reload this page.
v1.0.0: full rewrite as @scanii/core - #1
Merged
Merged
Conversation
Replaces the unpublishable scanii-js monorepo skeleton with a clean, single-package zero-dependency TypeScript SDK published as @scanii/core on npm. API mirrors scanii-java v8.0.0 translated to async/Promise-returning TS: process / processAsync / fetch / retrieve / ping / createAuthToken / retrieveAuthToken / deleteAuthToken. Error hierarchy: ScaniiError, ScaniiAuthError, ScaniiRateLimitError (with retryAfter). Native fetch + FormData + Blob — no polyfills, no runtime deps. ESM + CJS dual build via tsup with shipped .d.ts. Targets Node 22+ and modern browsers. Tests: jest unit suite mocking global.fetch + integration suite against scanii-cli (started via scanii/setup-cli-action@v1 in CI). Malware fixture is the UUID 38DCC0C9-... per workspace CLAUDE.md §5, generated inline (not committed). CI: pr.yml on Node 22+24 across ubuntu/macos/windows. release.yml publishes to npm via OIDC trusted publishing on release: published — does not create the GitHub Release. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
rferreira
commented
Apr 28, 2026
| ## 1.0.0 — Initial release | ||
| First public release of the Scanii Node SDK as `@scanii/core`. Replaces the unpublished `scanii-js` skeleton; supersedes the `@scanii/core@0.0.1` placeholder published to claim the name on npm. |
ContributorAuthor
There was a problem hiding this comment.
Remove mention of scanii-js
rferreira
commented
Apr 28, 2026
| First public release of the Scanii Node SDK as `@scanii/core`. Replaces the unpublished `scanii-js` skeleton; supersedes the `@scanii/core@0.0.1` placeholder published to claim the name on npm. | ||
| **Reference frozen at `scanii-java` v8.0.0.** Method names, response shape, and error hierarchy mirror the Java reference, translated to idiomatic TypeScript. |
ContributorAuthor
There was a problem hiding this comment.
Remove reference to the Java SDK
rferreira
commented
Apr 28, 2026
| - **scanii-cli** integration tests cover the cross-OS matrix (Linux / macOS / Windows on Node 22 + 24) without burning real Scanii credits. | ||
| - **OIDC trusted publishing** with provenance attestation. | ||
| ### Migration |
ContributorAuthor
There was a problem hiding this comment.
Remove migration for first release
Per PR review: scanii-js and the @scanii/core@0.0.1 placeholder are internal context, not consumer-facing release notes. Java reference is implementation detail. No migration path applies for a first release. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Full rewrite of the scanii-js skeleton (unpublishable monorepo with empty stubs) as a clean, single-package zero-dependency TypeScript SDK. Publishes as
@scanii/coreon npm at1.0.0, replacing the placeholder0.0.1stub.scanii-java v8.0.0translated to async/Promise TS —process,processAsync,fetch,retrieve,ping,createAuthToken,retrieveAuthToken,deleteAuthToken.ScaniiErrorbase,ScaniiAuthError(401/403),ScaniiRateLimitError(429, withretryAfterparsed fromRetry-After).fetch+FormData+Blob+URLSearchParams. No axios, no node-fetch, no form-data, no undici..d.tsviatsup. Built artifacts:dist/index.cjs,dist/index.mjs,dist/index.d.ts,dist/index.d.mts.global.fetchdirectly (no nock/undici). Integration suite hits scanii-cli atlocalhost:4000; uses the UUID38DCC0C9-…inline fixture per workspace CLAUDE.md §5 (not EICAR — that gets quarantined on Windows / macOS runners).pr.ymlon Node 22 + 24 across ubuntu / macos / windows, scanii-cli started viascanii/setup-cli-action@v1.release.ymltriggered byrelease: published, publishes via OIDC trusted publishing on thenpmGitHub environment, with--provenance.Naming reminder
Package name on npm is
@scanii/core— scoped, NOT unscopedscanii. The unscopedscaniiname remains a deprecated 0.0.1 placeholder for squat-protection only and is not touched by this change. README has a one-line note pointing consumers fromscaniito@scanii/core.@scanii/reactand@scanii/webare deferred — not touched here.Out of scope (per packet)
Test plan
npm ciclean installnpm run typecheckpasses (strict TS,verbatimModuleSyntax,noUncheckedIndexedAccess)npm run lintpasses (eslint flat config, typescript-eslint recommended)npm test— 32 tests pass (unit suite green; integration suite green against locally running scanii-cli, with documented self-skips for older cli builds missing the UUID signature / token-auth / callback delivery)npm run build— emitsdist/index.cjs(13 KB),dist/index.mjs(12 KB),index.d.ts(9 KB)require('./dist/index.cjs')and dynamic-import('./dist/index.mjs')both resolveScaniiClient,VERSION === "1.0.0"process()against a running scanii-cli — clean file returnsfindings: [], contentLength accuratenpmenvironment is wired so the OIDC publish step can resolve at v1.0.0 tag time@scanii/core@0.0.1placeholder will be cleanly superseded by v1.0.0 publish🤖 Generated with Claude Code