@signa-so/sdk 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -52,9 +52,9 @@ All resources follow the same pattern: `.retrieve(id)`, `.list(params)`, plus re
52
52
 
53
53
  ```ts
54
54
  await signa.trademarks.retrieve('tm_xxx');
55
- await signa.trademarks.retrieve('tm_xxx', { expand: ['owners', 'attorneys'] });
56
- await signa.trademarks.list({ office: 'US', status: 'registered', limit: 50 });
57
- await signa.trademarks.history('tm_xxx');
55
+ await signa.trademarks.retrieve('tm_xxx', { include: ['office_extensions'] });
56
+ await signa.trademarks.list({ offices: ['US'], status_stage: 'registered', limit: 50 });
57
+ await signa.trademarks.events('tm_xxx');
58
58
  ```
59
59
 
60
60
  ### `signa.owners`
@@ -182,6 +182,47 @@ bun run dev # Watch mode
182
182
  bun run typecheck # Type check
183
183
  ```
184
184
 
185
+ ## Publishing a release
186
+
187
+ Releases go to npm through the **npm Trusted Publisher (OIDC)** — GitHub
188
+ Actions proves its identity to npm at publish time and attaches a signed
189
+ provenance attestation. **No npm token, no OTP, nothing stored anywhere.**
190
+ Do NOT publish from a laptop with `npm publish`; account 2FA blocks it and
191
+ npm is retiring bypass-2FA tokens (account changes Aug 2026, direct
192
+ publishing Jan 2027).
193
+
194
+ Release procedure:
195
+
196
+ 1. On `main` (via a normal PR): bump `version` in `packages/sdk/package.json`
197
+ and date the corresponding heading in `CHANGELOG.md`. CI's
198
+ "Check SDK types sync" gate guarantees the committed generated types match
199
+ the API spec — publishing relies on this (see note below).
200
+ 2. GitHub → **Actions → "Publish SDK" → Run workflow** (branch `main`), or:
201
+
202
+ ```bash
203
+ gh workflow run "Publish SDK" --ref main -f dry_run=true # pack only, sanity check
204
+ gh workflow run "Publish SDK" --ref main # real publish
205
+ ```
206
+
207
+ 3. The workflow no-ops if the version is already on npm, so re-running is
208
+ always safe. Verify with `npm view @signa-so/sdk version`.
209
+
210
+ Configuration lives in two places:
211
+
212
+ - **Repo:** `.github/workflows/publish-sdk.yml` (the only workflow allowed to
213
+ publish).
214
+ - **npm:** npmjs.com → `@signa-so/sdk` → Settings → *Trusted Publisher*
215
+ (`hakonl/signa`, workflow `publish-sdk.yml`). Publishing access is
216
+ "Require two-factor authentication or a granular access token with bypass
217
+ 2fa enabled" — but with the trusted publisher, no token is ever needed.
218
+
219
+ Note: the workflow builds with `build:publish` (compile only, **no** type
220
+ regeneration) because regenerating types imports the whole api workspace
221
+ graph, which needs built workspace deps a fresh CI checkout doesn't have
222
+ (`@signa/db` exports `dist/`). The committed generated types are enforced
223
+ current on every PR by the types-sync CI gate, so this is safe by
224
+ construction.
225
+
185
226
  ## Requirements
186
227
 
187
228
  - Node.js >= 18 (uses native `fetch`)
@@ -16,8 +16,6 @@ export interface FetchRequest {
16
16
  accept?: string;
17
17
  /** When true, return the raw response text instead of parsing JSON. */
18
18
  rawResponse?: boolean;
19
- /** Set to 'manual' to capture redirect URLs instead of following them. */
20
- redirect?: 'follow' | 'manual';
21
19
  }
22
20
  /**
23
21
  * Execute an HTTP request with timeout, retries, and error mapping.
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-with-retry.d.ts","sourceRoot":"","sources":["../../src/_internals/fetch-with-retry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA6I9D"}
1
+ {"version":3,"file":"fetch-with-retry.d.ts","sourceRoot":"","sources":["../../src/_internals/fetch-with-retry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAuI9D"}
@@ -54,7 +54,7 @@ export async function fetchWithRetry(config, request) {
54
54
  ? request.body
55
55
  : JSON.stringify(request.body),
56
56
  signal: controller.signal,
57
- redirect: request.redirect ?? 'follow',
57
+ redirect: 'follow',
58
58
  });
59
59
  }
60
60
  finally {
@@ -84,11 +84,6 @@ export async function fetchWithRetry(config, request) {
84
84
  const reqId = response.headers.get('x-request-id') ?? '';
85
85
  console.error(`[signa] ← ${response.status} ${response.statusText} ${reqId}`);
86
86
  }
87
- // Handle manual redirects — return the Location header as body
88
- if (request.redirect === 'manual' && response.status >= 300 && response.status < 400) {
89
- const location = response.headers.get('location') ?? '';
90
- return { body: location, headers: response.headers, status: response.status };
91
- }
92
87
  if (response.ok) {
93
88
  const body = request.rawResponse
94
89
  ? await response.text()
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-with-retry.js","sourceRoot":"","sources":["../../src/_internals/fetch-with-retry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-with-retry.js","sourceRoot":"","sources":["../../src/_internals/fetch-with-retry.ts"],"names":[],"mappings":"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"}