@usequeek/app-sdk 0.5.1 → 0.6.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.
Files changed (74) hide show
  1. package/README.md +166 -12
  2. package/dist/app-auth.d.ts +9 -1
  3. package/dist/app-auth.d.ts.map +1 -1
  4. package/dist/app-auth.js +11 -1
  5. package/dist/app-auth.js.map +1 -1
  6. package/dist/auth-fetch.d.ts +90 -0
  7. package/dist/auth-fetch.d.ts.map +1 -0
  8. package/dist/auth-fetch.js +261 -0
  9. package/dist/auth-fetch.js.map +1 -0
  10. package/dist/client.d.ts +32 -10
  11. package/dist/client.d.ts.map +1 -1
  12. package/dist/client.js +6 -2
  13. package/dist/client.js.map +1 -1
  14. package/dist/frame.d.ts +233 -4
  15. package/dist/frame.d.ts.map +1 -1
  16. package/dist/frame.js +694 -19
  17. package/dist/frame.js.map +1 -1
  18. package/dist/handoff.d.ts +32 -2
  19. package/dist/handoff.d.ts.map +1 -1
  20. package/dist/handoff.js +2 -1
  21. package/dist/handoff.js.map +1 -1
  22. package/dist/hono.d.ts +13 -0
  23. package/dist/hono.d.ts.map +1 -1
  24. package/dist/hono.js +15 -0
  25. package/dist/hono.js.map +1 -1
  26. package/dist/index.d.ts +11 -7
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +10 -6
  29. package/dist/index.js.map +1 -1
  30. package/dist/install-handlers.d.ts +33 -8
  31. package/dist/install-handlers.d.ts.map +1 -1
  32. package/dist/install-handlers.js +133 -15
  33. package/dist/install-handlers.js.map +1 -1
  34. package/dist/merchant-schema.d.ts +1550 -68
  35. package/dist/merchant-schema.d.ts.map +1 -1
  36. package/dist/merchant-schema.js +1 -1
  37. package/dist/proxy.d.ts +122 -0
  38. package/dist/proxy.d.ts.map +1 -0
  39. package/dist/proxy.js +204 -0
  40. package/dist/proxy.js.map +1 -0
  41. package/dist/react.d.ts +78 -0
  42. package/dist/react.d.ts.map +1 -0
  43. package/dist/react.js +262 -0
  44. package/dist/react.js.map +1 -0
  45. package/dist/scopes.d.ts +174 -0
  46. package/dist/scopes.d.ts.map +1 -0
  47. package/dist/scopes.js +297 -0
  48. package/dist/scopes.js.map +1 -0
  49. package/dist/server.d.ts +2 -2
  50. package/dist/server.d.ts.map +1 -1
  51. package/dist/server.js +1 -1
  52. package/dist/server.js.map +1 -1
  53. package/dist/session.d.ts +52 -2
  54. package/dist/session.d.ts.map +1 -1
  55. package/dist/session.js +99 -12
  56. package/dist/session.js.map +1 -1
  57. package/dist/store.d.ts +33 -0
  58. package/dist/store.d.ts.map +1 -1
  59. package/dist/store.js +114 -4
  60. package/dist/store.js.map +1 -1
  61. package/dist/theme.d.ts +96 -0
  62. package/dist/theme.d.ts.map +1 -0
  63. package/dist/theme.js +158 -0
  64. package/dist/theme.js.map +1 -0
  65. package/dist/tokens.d.ts +30 -15
  66. package/dist/tokens.d.ts.map +1 -1
  67. package/dist/tokens.js +57 -19
  68. package/dist/tokens.js.map +1 -1
  69. package/dist/webhooks.d.ts.map +1 -1
  70. package/dist/webhooks.js +1 -1
  71. package/dist/webhooks.js.map +1 -1
  72. package/package.json +17 -5
  73. package/CHANGELOG.md +0 -162
  74. package/openapi/merchant.json +0 -21452
@@ -1,6 +1,7 @@
1
- import { INSTALL_EVENT, RESYNC_EVENT, SETTINGS_EVENT, UNINSTALL_EVENT, } from "./handoff.js";
2
1
  import { decodeBody, readHeader, toResponse, } from "./delivery.js";
2
+ import { INSTALL_EVENT, RESYNC_EVENT, SCOPES_UPDATE_EVENT, SETTINGS_EVENT, UNINSTALL_EVENT, } from "./handoff.js";
3
3
  import { MAX_TIMESTAMP_SKEW_SECONDS, verifyQueekSignatureDetailed, WEBHOOK_ID_HEADER, WEBHOOK_SIGNATURE_HEADER, WEBHOOK_TIMESTAMP_HEADER, } from "./signatures.js";
4
+ import { normaliseNullablePid, normalisePid } from "./store.js";
4
5
  /**
5
6
  * Build the storable installation record from install `data`. Timestamps
6
7
  * default to now. Exported so apps with a custom `onInstall` (e.g. to
@@ -13,14 +14,20 @@ export function buildInstallationRecord(data, nowIso = new Date().toISOString())
13
14
  function installationRecordFromInstall(data, nowIso) {
14
15
  return {
15
16
  installationId: data.installation.id,
16
- installationPid: data.installation.p_id,
17
+ // The installation p_id arrives as a string on the wire (the backend
18
+ // casts). `normalisePid` stays as tolerance: a JSON integer would reach
19
+ // here as a JS number, which `node:sqlite` would store as `"1021.0"`
20
+ // in the TEXT column — never equal to the proxy `kid` — so non-string
21
+ // forms still normalise to integer strings.
22
+ installationPid: normalisePid(data.installation.p_id),
17
23
  vendorId: data.store.id,
18
- storePid: data.store.p_id,
24
+ storePid: normaliseNullablePid(data.store.p_id),
19
25
  storeName: data.store.name,
20
26
  apiBase: data.api_base,
21
27
  // No credential crosses the handoff (S1): a fresh row caches no token
22
28
  // (the first call mints one); see `saveResyncedInstallation` for the
23
- // existing-row path, which keeps the cached token.
29
+ // existing-row path, which keeps the cached token unless the grant
30
+ // changed.
24
31
  token: null,
25
32
  tokenExpiresAt: null,
26
33
  tokenKid: null,
@@ -41,23 +48,57 @@ function installationRecordFromInstall(data, nowIso) {
41
48
  };
42
49
  }
43
50
  /**
44
- * Merge a re-delivered install envelope (resync) into an existing row:
45
- * refresh the ref fields, scopes, settings and webhook secret, but keep
46
- * the original `installedAt` and the cached installation token (a secret
47
- * rotation does not invalidate minted tokens; `resyncFromQueek` drops
48
- * tokens explicitly when it wants fresh ones).
51
+ * Compare two scope grants order-insensitively. Any difference (added,
52
+ * removed, or replaced scope) means the grant changed.
53
+ */
54
+ export function installationScopesEqual(a, b) {
55
+ if (a.length !== b.length)
56
+ return false;
57
+ const sortedA = [...a].sort();
58
+ const sortedB = [...b].sort();
59
+ return sortedA.every((scope, index) => scope === sortedB[index]);
60
+ }
61
+ /**
62
+ * Merge a grant-change handoff (`app/scopes_update`) into an existing row:
63
+ * refresh the cached grant, nothing else. The cached installation token is
64
+ * dropped whenever the grant changed — same compare-and-clear as the resync
65
+ * path: a token minted for the old scopes fails with `insufficient_scope`
66
+ * on the new grant, so the next call re-mints. An unchanged grant (a
67
+ * redelivered handoff) keeps the token.
68
+ */
69
+ export function saveScopesUpdateInstallation(existing, scopes, nowIso = new Date().toISOString()) {
70
+ const grantChanged = !installationScopesEqual(existing.scopes, scopes);
71
+ return {
72
+ ...existing,
73
+ scopes: [...scopes],
74
+ token: grantChanged ? null : existing.token,
75
+ tokenExpiresAt: grantChanged ? null : existing.tokenExpiresAt,
76
+ tokenKid: grantChanged ? null : existing.tokenKid,
77
+ updatedAt: nowIso,
78
+ };
79
+ }
80
+ /**
81
+ * Merge a re-delivered install envelope (resync or re-grant) into an
82
+ * existing row: refresh the ref fields, scopes, settings and webhook
83
+ * secret, but keep the original `installedAt`. The cached installation
84
+ * token survives a secret rotation (minted tokens stay valid) but is
85
+ * dropped whenever the grant changes — a token minted for the old scopes
86
+ * fails with `insufficient_scope` on the new grant, so the next call
87
+ * re-mints. `resyncFromQueek` drops tokens explicitly when it wants fresh
88
+ * ones.
49
89
  */
50
90
  export function saveResyncedInstallation(existing, data, nowIso = new Date().toISOString()) {
51
91
  const fresh = installationRecordFromInstall(data, nowIso);
92
+ const grantChanged = !installationScopesEqual(existing.scopes, data.scopes);
52
93
  return {
53
94
  ...fresh,
54
95
  // A handoff without the key (older payloads) keeps what is stored.
55
96
  embedSecret: data.embed_secret === undefined ? (existing.embedSecret ?? null) : fresh.embedSecret,
56
97
  appId: data.app_id === undefined ? (existing.appId ?? null) : fresh.appId,
57
98
  installedAt: existing.installedAt,
58
- token: existing.token,
59
- tokenExpiresAt: existing.tokenExpiresAt,
60
- tokenKid: existing.tokenKid,
99
+ token: grantChanged ? null : existing.token,
100
+ tokenExpiresAt: grantChanged ? null : existing.tokenExpiresAt,
101
+ tokenKid: grantChanged ? null : existing.tokenKid,
61
102
  };
62
103
  }
63
104
  /**
@@ -135,14 +176,79 @@ function isInstallPayload(data) {
135
176
  typeof data.api_base === "string");
136
177
  }
137
178
  /** Default resync apply: merge into the existing row (keeping
138
- * `installedAt`, the cached token and stored values the resync omits) or
139
- * store a fresh row when nothing is stored (post-outage recovery). */
179
+ * `installedAt`, the cached token unless the grant changed, and stored
180
+ * values the resync omits) or store a fresh row when nothing is stored
181
+ * (post-outage recovery). */
140
182
  async function applyResync(store, data) {
141
183
  const existing = await store.getInstallation(data.installation.id);
142
184
  await store.saveInstallation(existing
143
185
  ? saveResyncedInstallation(existing, data, new Date().toISOString())
144
186
  : installationRecordFromInstall(data, new Date().toISOString()));
145
187
  }
188
+ function isScopesUpdatePayload(data) {
189
+ if (!data || typeof data !== "object")
190
+ return false;
191
+ const pid = data.installation?.p_id;
192
+ const scopes = data.scopes;
193
+ return ((typeof pid === "string" || typeof pid === "number") &&
194
+ Array.isArray(scopes) &&
195
+ scopes.every((scope) => typeof scope === "string"));
196
+ }
197
+ /**
198
+ * Default grant-change apply: find the row by the handoff `p_id` (the
199
+ * scopes_update payload carries no UUID — the backend `p_id` rule) and
200
+ * refresh its cached grant, dropping the cached token when the grant
201
+ * moved. Unknown `p_id` answers 404 (released, like the settings path).
202
+ */
203
+ async function applyScopesUpdate(store, data) {
204
+ // The installation p_id arrives as a string on the wire (the backend
205
+ // casts) — normalise before comparing anyway, exactly like the install
206
+ // mapping does, so a non-conforming integer form still matches.
207
+ const pid = normalisePid(data.installation.p_id);
208
+ const rows = await store.listInstallations();
209
+ const existing = rows.find((row) => row.installationPid === pid) ?? null;
210
+ if (!existing) {
211
+ return { status: 404, body: { ok: false, error: "unknown_installation" } };
212
+ }
213
+ await store.saveInstallation(saveScopesUpdateInstallation(existing, data.scopes, new Date().toISOString()));
214
+ return { status: 200, body: { ok: true } };
215
+ }
216
+ async function scopesDelivery(rawBody, headers, options) {
217
+ // Same verifier as every other handoff (freshness included) — no second
218
+ // HMAC path — then the same header-id claim.
219
+ const checked = await guard(options, headers, rawBody);
220
+ if (!checked.ok)
221
+ return { status: checked.status, body: { ok: false, error: checked.reason } };
222
+ const envelope = parseEnvelope(rawBody);
223
+ if (!envelope)
224
+ return { status: 400, body: { ok: false, error: "invalid_envelope" } };
225
+ if (envelope.type !== SCOPES_UPDATE_EVENT) {
226
+ return { status: 400, body: { ok: false, error: "unexpected event type" } };
227
+ }
228
+ if (!isScopesUpdatePayload(envelope.data)) {
229
+ return { status: 400, body: { ok: false, error: "invalid scopes payload" } };
230
+ }
231
+ if (!(await options.store.claimWebhookId(checked.id))) {
232
+ return { status: 409, body: { ok: false, error: "duplicate delivery" } };
233
+ }
234
+ try {
235
+ if (options.onScopesUpdate) {
236
+ await options.onScopesUpdate(envelope);
237
+ }
238
+ else {
239
+ const applied = await applyScopesUpdate(options.store, envelope.data);
240
+ if (applied.status !== 200) {
241
+ await options.store.releaseWebhookId(checked.id);
242
+ return applied;
243
+ }
244
+ }
245
+ }
246
+ catch {
247
+ await options.store.releaseWebhookId(checked.id);
248
+ return { status: 500, body: { ok: false, error: "scopes_update_failed" } };
249
+ }
250
+ return { status: 200, body: { ok: true } };
251
+ }
146
252
  async function installDelivery(rawBody, headers, options) {
147
253
  const checked = await guard(options, headers, rawBody);
148
254
  if (!checked.ok)
@@ -150,6 +256,13 @@ async function installDelivery(rawBody, headers, options) {
150
256
  const envelope = parseEnvelope(rawBody);
151
257
  if (!envelope)
152
258
  return { status: 400, body: { ok: false, error: "invalid_envelope" } };
259
+ // The grant-change handoff (`type: app/scopes_update`, backend
260
+ // `scopesUpdatePayload()`) is delivered to the settings URL first,
261
+ // falling back to the install URL — both routes accept it with the same
262
+ // verification, claim, and callback-failure rules as every handoff.
263
+ if (envelope.type === SCOPES_UPDATE_EVENT) {
264
+ return scopesDelivery(rawBody, headers, options);
265
+ }
153
266
  // The platform resync handoff redelivers the install-shaped data under
154
267
  // `type: app/resync` (same signed channel, same verification): it lands
155
268
  // here as well as on `settings` (the backend aims at `settings_url`
@@ -174,7 +287,7 @@ async function installDelivery(rawBody, headers, options) {
174
287
  else {
175
288
  // A resync redelivers the install envelope for an EXISTING
176
289
  // installation: merge idempotently (keep `installedAt` + the cached
177
- // token) instead of resetting the row.
290
+ // token unless the grant changed) instead of resetting the row.
178
291
  await applyResync(options.store, envelope.data);
179
292
  }
180
293
  }
@@ -220,6 +333,11 @@ async function settingsDelivery(rawBody, headers, options) {
220
333
  const envelope = parseEnvelope(rawBody);
221
334
  if (!envelope)
222
335
  return { status: 400, body: { ok: false, error: "invalid_envelope" } };
336
+ // The grant-change handoff is delivered to the settings URL first (same
337
+ // rule as resync): it takes the grant refresh here, like on `install`.
338
+ if (envelope.type === SCOPES_UPDATE_EVENT) {
339
+ return scopesDelivery(rawBody, headers, options);
340
+ }
223
341
  // The platform resync handoff (`type: app/resync`) is delivered to the
224
342
  // app's `settings_url` first: it lands here with the install-shaped
225
343
  // data, so it takes the resync merge — never the settings callback,
@@ -1 +1 @@
1
- {"version":3,"file":"install-handlers.js","sourceRoot":"","sources":["../src/install-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install-handlers.js","sourceRoot":"","sources":["../src/install-handlers.ts"],"names":[],"mappings":"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"}