@relaycast/engine 12.2.1 → 12.3.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/dist/adapters/actor/credential-tag.d.ts +14 -0
- package/dist/adapters/actor/credential-tag.d.ts.map +1 -0
- package/dist/adapters/actor/credential-tag.js +30 -0
- package/dist/adapters/actor/credential-tag.js.map +1 -0
- package/dist/adapters/actor/database.d.ts +50 -0
- package/dist/adapters/actor/database.d.ts.map +1 -0
- package/dist/adapters/actor/database.js +86 -0
- package/dist/adapters/actor/database.js.map +1 -0
- package/dist/adapters/actor/ephemeral-outbox.d.ts +16 -0
- package/dist/adapters/actor/ephemeral-outbox.d.ts.map +1 -0
- package/dist/adapters/actor/ephemeral-outbox.js +53 -0
- package/dist/adapters/actor/ephemeral-outbox.js.map +1 -0
- package/dist/adapters/actor/event-queue.d.ts +23 -0
- package/dist/adapters/actor/event-queue.d.ts.map +1 -0
- package/dist/adapters/actor/event-queue.js +31 -0
- package/dist/adapters/actor/event-queue.js.map +1 -0
- package/dist/adapters/actor/files.d.ts +66 -0
- package/dist/adapters/actor/files.d.ts.map +1 -0
- package/dist/adapters/actor/files.js +83 -0
- package/dist/adapters/actor/files.js.map +1 -0
- package/dist/adapters/actor/http.d.ts +19 -0
- package/dist/adapters/actor/http.d.ts.map +1 -0
- package/dist/adapters/actor/http.js +2 -0
- package/dist/adapters/actor/http.js.map +1 -0
- package/dist/adapters/actor/index.d.ts +90 -0
- package/dist/adapters/actor/index.d.ts.map +1 -0
- package/dist/adapters/actor/index.js +299 -0
- package/dist/adapters/actor/index.js.map +1 -0
- package/dist/adapters/actor/kv.d.ts +21 -0
- package/dist/adapters/actor/kv.d.ts.map +1 -0
- package/dist/adapters/actor/kv.js +33 -0
- package/dist/adapters/actor/kv.js.map +1 -0
- package/dist/adapters/actor/migrations.d.ts +15 -0
- package/dist/adapters/actor/migrations.d.ts.map +1 -0
- package/dist/adapters/actor/migrations.generated.d.ts +5 -0
- package/dist/adapters/actor/migrations.generated.d.ts.map +1 -0
- package/dist/adapters/actor/migrations.generated.js +842 -0
- package/dist/adapters/actor/migrations.generated.js.map +1 -0
- package/dist/adapters/actor/migrations.js +32 -0
- package/dist/adapters/actor/migrations.js.map +1 -0
- package/dist/adapters/node/files.d.ts +2 -0
- package/dist/adapters/node/files.d.ts.map +1 -1
- package/dist/adapters/node/files.js +31 -3
- package/dist/adapters/node/files.js.map +1 -1
- package/dist/adapters/node/index.js +1 -1
- package/dist/adapters/node/index.js.map +1 -1
- package/dist/auth/credentialTags.d.ts +43 -0
- package/dist/auth/credentialTags.d.ts.map +1 -0
- package/dist/auth/credentialTags.js +106 -0
- package/dist/auth/credentialTags.js.map +1 -0
- package/dist/auth/credentials.d.ts +103 -0
- package/dist/auth/credentials.d.ts.map +1 -0
- package/dist/auth/credentials.js +147 -0
- package/dist/auth/credentials.js.map +1 -0
- package/dist/auth/index.d.ts +7 -4
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +115 -61
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/tokenKind.d.ts +17 -26
- package/dist/auth/tokenKind.d.ts.map +1 -1
- package/dist/auth/tokenKind.js +17 -46
- package/dist/auth/tokenKind.js.map +1 -1
- package/dist/auth/workspaceExpiry.d.ts +2 -0
- package/dist/auth/workspaceExpiry.d.ts.map +1 -1
- package/dist/auth/workspaceExpiry.js +7 -0
- package/dist/auth/workspaceExpiry.js.map +1 -1
- package/dist/bin/secretEnv.d.ts +17 -0
- package/dist/bin/secretEnv.d.ts.map +1 -0
- package/dist/bin/secretEnv.js +33 -0
- package/dist/bin/secretEnv.js.map +1 -0
- package/dist/bin/serve.js +42 -4
- package/dist/bin/serve.js.map +1 -1
- package/dist/config/credentialEnv.d.ts +19 -0
- package/dist/config/credentialEnv.d.ts.map +1 -0
- package/dist/config/credentialEnv.js +53 -0
- package/dist/config/credentialEnv.js.map +1 -0
- package/dist/db/migrations/0079_credential_upgrades.sql +17 -0
- package/dist/db/schema.d.ts +164 -2
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +20 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/engine/a2a.d.ts +1 -1
- package/dist/engine/a2a.d.ts.map +1 -1
- package/dist/engine/a2a.js +2 -2
- package/dist/engine/a2a.js.map +1 -1
- package/dist/engine/a2aEgress.d.ts +3 -2
- package/dist/engine/a2aEgress.d.ts.map +1 -1
- package/dist/engine/a2aEgress.js +5 -4
- package/dist/engine/a2aEgress.js.map +1 -1
- package/dist/engine/action.d.ts +12 -0
- package/dist/engine/action.d.ts.map +1 -1
- package/dist/engine/action.js +45 -1
- package/dist/engine/action.js.map +1 -1
- package/dist/engine/agent.d.ts.map +1 -1
- package/dist/engine/agent.js +2 -1
- package/dist/engine/agent.js.map +1 -1
- package/dist/engine/agentIdentity.d.ts.map +1 -1
- package/dist/engine/agentIdentity.js +2 -1
- package/dist/engine/agentIdentity.js.map +1 -1
- package/dist/engine/credentialUpgrade.d.ts +48 -0
- package/dist/engine/credentialUpgrade.d.ts.map +1 -0
- package/dist/engine/credentialUpgrade.js +176 -0
- package/dist/engine/credentialUpgrade.js.map +1 -0
- package/dist/engine/eventDispatch.d.ts.map +1 -1
- package/dist/engine/eventDispatch.js +3 -2
- package/dist/engine/eventDispatch.js.map +1 -1
- package/dist/engine/eventSubscription.d.ts +4 -4
- package/dist/engine/file.d.ts +8 -0
- package/dist/engine/file.d.ts.map +1 -1
- package/dist/engine/file.js +18 -5
- package/dist/engine/file.js.map +1 -1
- package/dist/engine/inboundWebhook.d.ts +2 -0
- package/dist/engine/inboundWebhook.d.ts.map +1 -1
- package/dist/engine/inboundWebhook.js +10 -4
- package/dist/engine/inboundWebhook.js.map +1 -1
- package/dist/engine/internalAdmin.d.ts +80 -0
- package/dist/engine/internalAdmin.d.ts.map +1 -0
- package/dist/engine/internalAdmin.js +329 -0
- package/dist/engine/internalAdmin.js.map +1 -0
- package/dist/engine/invocationCompletion.d.ts.map +1 -1
- package/dist/engine/invocationCompletion.js +23 -5
- package/dist/engine/invocationCompletion.js.map +1 -1
- package/dist/engine/node.d.ts +38 -1
- package/dist/engine/node.d.ts.map +1 -1
- package/dist/engine/node.js +166 -11
- package/dist/engine/node.js.map +1 -1
- package/dist/engine/nodeContext.d.ts +2 -1
- package/dist/engine/nodeContext.d.ts.map +1 -1
- package/dist/engine/nodeContext.js +1 -1
- package/dist/engine/nodeContext.js.map +1 -1
- package/dist/engine/nodeDeliver.d.ts +2 -1
- package/dist/engine/nodeDeliver.d.ts.map +1 -1
- package/dist/engine/nodeDeliver.js +1 -1
- package/dist/engine/nodeDeliver.js.map +1 -1
- package/dist/engine/observerToken.d.ts +4 -0
- package/dist/engine/observerToken.d.ts.map +1 -1
- package/dist/engine/observerToken.js +14 -5
- package/dist/engine/observerToken.js.map +1 -1
- package/dist/engine/taskInvocation.d.ts +1 -1
- package/dist/engine/tokenRotate.d.ts.map +1 -1
- package/dist/engine/tokenRotate.js +4 -3
- package/dist/engine/tokenRotate.js.map +1 -1
- package/dist/engine/workspace.d.ts +8 -2
- package/dist/engine/workspace.d.ts.map +1 -1
- package/dist/engine/workspace.js +70 -21
- package/dist/engine/workspace.js.map +1 -1
- package/dist/engine/wsAuth.d.ts.map +1 -1
- package/dist/engine/wsAuth.js +14 -3
- package/dist/engine/wsAuth.js.map +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +31 -0
- package/dist/engine.js.map +1 -1
- package/dist/entrypoints/node.d.ts +3 -1
- package/dist/entrypoints/node.d.ts.map +1 -1
- package/dist/entrypoints/node.js +33 -1
- package/dist/entrypoints/node.js.map +1 -1
- package/dist/env.d.ts +2 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/gateway.d.ts +11 -0
- package/dist/gateway.d.ts.map +1 -0
- package/dist/gateway.js +16 -0
- package/dist/gateway.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/credentialNotice.d.ts +32 -0
- package/dist/lib/credentialNotice.d.ts.map +1 -0
- package/dist/lib/credentialNotice.js +76 -0
- package/dist/lib/credentialNotice.js.map +1 -0
- package/dist/lib/fileTokens.d.ts +30 -0
- package/dist/lib/fileTokens.d.ts.map +1 -0
- package/dist/lib/fileTokens.js +76 -0
- package/dist/lib/fileTokens.js.map +1 -0
- package/dist/lib/httpError.d.ts +1 -1
- package/dist/lib/httpResponse.d.ts +6 -6
- package/dist/middleware/admission.d.ts +1 -1
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +22 -31
- package/dist/middleware/auth.js.map +1 -1
- package/dist/middleware/idempotency.d.ts +1 -1
- package/dist/middleware/logger.d.ts.map +1 -1
- package/dist/middleware/logger.js +4 -1
- package/dist/middleware/logger.js.map +1 -1
- package/dist/ports/database.d.ts.map +1 -1
- package/dist/ports/database.js +8 -2
- package/dist/ports/database.js.map +1 -1
- package/dist/ports/files.d.ts +7 -1
- package/dist/ports/files.d.ts.map +1 -1
- package/dist/ports/index.d.ts +64 -1
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/index.js +4 -0
- package/dist/ports/index.js.map +1 -1
- package/dist/ports/telemetry.d.ts +1 -0
- package/dist/ports/telemetry.d.ts.map +1 -1
- package/dist/ports/telemetry.js +1 -0
- package/dist/ports/telemetry.js.map +1 -1
- package/dist/routes/action.d.ts.map +1 -1
- package/dist/routes/action.js +2 -1
- package/dist/routes/action.js.map +1 -1
- package/dist/routes/credential.d.ts +4 -0
- package/dist/routes/credential.d.ts.map +1 -0
- package/dist/routes/credential.js +97 -0
- package/dist/routes/credential.js.map +1 -0
- package/dist/routes/file.js +10 -4
- package/dist/routes/file.js.map +1 -1
- package/dist/routes/inboundWebhook.d.ts.map +1 -1
- package/dist/routes/inboundWebhook.js +11 -2
- package/dist/routes/inboundWebhook.js.map +1 -1
- package/dist/routes/internal.d.ts +14 -0
- package/dist/routes/internal.d.ts.map +1 -0
- package/dist/routes/internal.js +157 -0
- package/dist/routes/internal.js.map +1 -0
- package/dist/routes/node.d.ts.map +1 -1
- package/dist/routes/node.js +44 -2
- package/dist/routes/node.js.map +1 -1
- package/dist/routes/observerToken.js +1 -1
- package/dist/routes/observerToken.js.map +1 -1
- package/dist/routes/reaction.d.ts.map +1 -1
- package/dist/routes/reaction.js +3 -2
- package/dist/routes/reaction.js.map +1 -1
- package/dist/routes/receipt.d.ts.map +1 -1
- package/dist/routes/receipt.js +2 -1
- package/dist/routes/receipt.js.map +1 -1
- package/dist/routes/workspace.d.ts.map +1 -1
- package/dist/routes/workspace.js +12 -1
- package/dist/routes/workspace.js.map +1 -1
- package/package.json +12 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations.generated.js","sourceRoot":"","sources":["../../../src/adapters/actor/migrations.generated.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { planMigrations } from '../../db/migrationPlan.js';
|
|
2
|
+
import { ACTOR_MIGRATIONS, ACTOR_MIGRATION_SUPERSESSIONS } from './migrations.generated.js';
|
|
3
|
+
const TRACKING_TABLE = '_engine_migrations';
|
|
4
|
+
const statementsByFile = new Map(ACTOR_MIGRATIONS);
|
|
5
|
+
const files = [...statementsByFile.keys()];
|
|
6
|
+
const required = planMigrations(files, new Set(), ACTOR_MIGRATION_SUPERSESSIONS).length;
|
|
7
|
+
/**
|
|
8
|
+
* Apply the engine's bundled migrations to an actor database, statement by
|
|
9
|
+
* statement, recording each file in `_engine_migrations` (the same tracking
|
|
10
|
+
* table as the Node adapter).
|
|
11
|
+
*
|
|
12
|
+
* There is no transaction to open: the writes commit with the actor call (or
|
|
13
|
+
* constructor) they run in, and roll back with it. A rolled-back first call
|
|
14
|
+
* therefore leaves the schema unapplied, so every call checks the count
|
|
15
|
+
* first, a single indexed query once the schema is current.
|
|
16
|
+
*/
|
|
17
|
+
export function applyActorMigrations(sql) {
|
|
18
|
+
sql.exec(`CREATE TABLE IF NOT EXISTS ${TRACKING_TABLE} (name TEXT PRIMARY KEY, applied_at INTEGER NOT NULL)`);
|
|
19
|
+
const [{ count }] = sql.exec(`SELECT COUNT(*) AS count FROM ${TRACKING_TABLE}`);
|
|
20
|
+
if (count >= required)
|
|
21
|
+
return { applied: [] };
|
|
22
|
+
const done = new Set(sql.exec(`SELECT name FROM ${TRACKING_TABLE}`).map((row) => row.name));
|
|
23
|
+
const applied = [];
|
|
24
|
+
for (const file of planMigrations(files, done, ACTOR_MIGRATION_SUPERSESSIONS)) {
|
|
25
|
+
for (const statement of statementsByFile.get(file))
|
|
26
|
+
sql.exec(statement);
|
|
27
|
+
sql.exec(`INSERT INTO ${TRACKING_TABLE} (name, applied_at) VALUES (?, ?)`, file, Math.floor(Date.now() / 1000));
|
|
28
|
+
applied.push(file);
|
|
29
|
+
}
|
|
30
|
+
return { applied };
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=migrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../../src/adapters/actor/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAE5F,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAC5C,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACnD,MAAM,KAAK,GAAG,CAAC,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,6BAA6B,CAAC,CAAC,MAAM,CAAC;AAExF;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAa;IAChD,GAAG,CAAC,IAAI,CAAC,8BAA8B,cAAc,uDAAuD,CAAC,CAAC;IAC9G,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,iCAAiC,cAAc,EAAE,CAAwB,CAAC;IACvG,IAAI,KAAK,IAAI,QAAQ;QAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAE9C,MAAM,IAAI,GAAG,IAAI,GAAG,CACjB,GAAG,CAAC,IAAI,CAAC,oBAAoB,cAAc,EAAE,CAAwB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAC9F,CAAC;IACF,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,6BAA6B,CAAC,EAAE,CAAC;QAC9E,KAAK,MAAM,SAAS,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAE;YAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzE,GAAG,CAAC,IAAI,CAAC,eAAe,cAAc,mCAAmC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAChH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/adapters/node/files.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAKxD,QAAA,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/adapters/node/files.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAKxD,QAAA,MAAM,kBAAkB;;;;;;;;;iBAOtB,CAAC;AAEH,KAAK,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEvD;;;;;GAKG;AACH,qBAAa,gBAAiB,YAAW,WAAW;IAEhD,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;IAGjC,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,GAAG;IAKL,eAAe,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAQxI,iBAAiB,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAKhE,UAAU,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAY/E,aAAa,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBnE,kFAAkF;IAClF,OAAO,CAAC,WAAW;IASnB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,GAAG,IAAI;IAuB3C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBrE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAahF;AAkBD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,IAChD,SAAS,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC,CAmCnD;AAED,eAAO,MAAM,iBAAiB,iBAAe,CAAC"}
|
|
@@ -8,6 +8,9 @@ const tokenPayloadSchema = z.object({
|
|
|
8
8
|
key: z.string(),
|
|
9
9
|
op: z.enum(['put', 'get']),
|
|
10
10
|
exp: z.number(),
|
|
11
|
+
/** `put` only: the exact byte length and content type the upload must have. */
|
|
12
|
+
size: z.number().int().positive().optional(),
|
|
13
|
+
type: z.string().optional(),
|
|
11
14
|
});
|
|
12
15
|
/**
|
|
13
16
|
* Local-filesystem file storage replacing Cloudflare R2 for self-host. Blobs are
|
|
@@ -36,7 +39,7 @@ export class LocalFileStorage {
|
|
|
36
39
|
async createUploadUrl(args) {
|
|
37
40
|
const exp = Math.floor(Date.now() / 1000) + URL_TTL_SECONDS;
|
|
38
41
|
return {
|
|
39
|
-
uploadUrl: this.url({ key: args.storageKey, op: 'put', exp }),
|
|
42
|
+
uploadUrl: this.url({ key: args.storageKey, op: 'put', exp, size: args.sizeBytes, type: args.contentType }),
|
|
40
43
|
expiresAt: new Date(exp * 1000).toISOString(),
|
|
41
44
|
};
|
|
42
45
|
}
|
|
@@ -143,6 +146,23 @@ export class LocalFileStorage {
|
|
|
143
146
|
}
|
|
144
147
|
}
|
|
145
148
|
}
|
|
149
|
+
/** The body when it is exactly `size` bytes; null otherwise. Stops reading once it passes `size`. */
|
|
150
|
+
async function readExactly(request, size) {
|
|
151
|
+
const declared = request.headers.get('content-length');
|
|
152
|
+
if (declared !== null && Number(declared) !== size)
|
|
153
|
+
return null;
|
|
154
|
+
const chunks = [];
|
|
155
|
+
let length = 0;
|
|
156
|
+
if (request.body) {
|
|
157
|
+
for await (const chunk of request.body) {
|
|
158
|
+
length += chunk.byteLength;
|
|
159
|
+
if (length > size)
|
|
160
|
+
return null;
|
|
161
|
+
chunks.push(chunk);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return length === size ? Buffer.concat(chunks, length) : null;
|
|
165
|
+
}
|
|
146
166
|
/**
|
|
147
167
|
* Build a `fetch`-style handler for `${ROUTE_PREFIX}` PUT/GET. The Node
|
|
148
168
|
* entrypoint mounts it so signed upload/download URLs resolve.
|
|
@@ -156,8 +176,16 @@ export function createFileRouteHandler(storage) {
|
|
|
156
176
|
}
|
|
157
177
|
try {
|
|
158
178
|
if (request.method === 'PUT' && payload.op === 'put') {
|
|
159
|
-
|
|
160
|
-
|
|
179
|
+
// The token binds the upload's exact size and content type.
|
|
180
|
+
const contentType = request.headers.get('content-type') ?? 'application/octet-stream';
|
|
181
|
+
if (payload.type !== undefined && contentType !== payload.type) {
|
|
182
|
+
return Response.json({ ok: false, error: { code: 'content_type_mismatch', message: 'Content-Type does not match the upload' } }, { status: 400 });
|
|
183
|
+
}
|
|
184
|
+
const bytes = payload.size === undefined ? Buffer.from(await request.arrayBuffer()) : await readExactly(request, payload.size);
|
|
185
|
+
if (!bytes) {
|
|
186
|
+
return Response.json({ ok: false, error: { code: 'size_mismatch', message: 'Body size does not match the upload' } }, { status: 400 });
|
|
187
|
+
}
|
|
188
|
+
await storage.write(payload.key, bytes, contentType);
|
|
161
189
|
return Response.json({ ok: true });
|
|
162
190
|
}
|
|
163
191
|
if (request.method === 'GET' && payload.op === 'get') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/adapters/node/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,YAAY,GAAG,cAAc,CAAC;AAEpC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/adapters/node/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,YAAY,GAAG,cAAc,CAAC;AAEpC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,+EAA+E;IAC/E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAIH;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IAER;IACA;IACA;IAHnB,YACmB,GAAW,EACX,OAAe,EACf,MAAc;QAFd,QAAG,GAAH,GAAG,CAAQ;QACX,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAQ;IAC9B,CAAC;IAEI,IAAI,CAAC,OAAqB;QAChC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC/E,OAAO,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;IAC1B,CAAC;IAEO,GAAG,CAAC,OAAqB;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7C,OAAO,GAAG,IAAI,GAAG,YAAY,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAoE;QACxF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,eAAe,CAAC;QAC5D,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3G,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;SAC9C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAA4B;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,eAAe,CAAC;QAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAA4B;QAC3C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACzD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,uEAAuE;YACvE,uEAAuE;YACvE,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAClE,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAA+B;QACjD,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAC1C,iEAAiE;YACjE,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;YACpC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAc,CAAC,CAAC;YAC3E,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;gBACzB,EAAE,CAAC,GAAG,IAAI,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;gBACjC,GAAG,SAAS;qBACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACvE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACjE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,kFAAkF;IAC1E,WAAW,CAAC,GAAW;QAC7B,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YACxD,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,KAAoB;QACzB,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACpF,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACjE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CACzC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAC5D,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAC;YACjC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;YAC5B,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;gBAAE,OAAO,IAAI,CAAC;YACjD,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,KAAa,EAAE,WAAmB;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,sEAAsE;QACtE,yDAAyD;QACzD,sEAAsE;QACtE,+DAA+D;QAC/D,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,UAAU,EAAE,MAAM,CAAC;QAC1C,MAAM,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC5B,MAAM,SAAS,CAAC,KAAK,EAAE,WAAW,IAAI,0BAA0B,CAAC,CAAC;YAClE,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACxB,MAAM,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1E,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAW;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,WAAW,GAAG,0BAA0B,CAAC;YAC7C,IAAI,CAAC;gBACH,WAAW,GAAG,CAAC,MAAM,QAAQ,CAAC,GAAG,IAAI,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC;YAC7E,CAAC;YAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC;YAC5B,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAED,qGAAqG;AACrG,KAAK,UAAU,WAAW,CAAC,OAAgB,EAAE,IAAY;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACvD,IAAI,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChE,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,IAA4C,EAAE,CAAC;YAC/E,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC;YAC3B,IAAI,MAAM,GAAG,IAAI;gBAAE,OAAO,IAAI,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAyB;IAC9D,OAAO,KAAK,EAAE,OAAgB,EAAqB,EAAE;QACnD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,0BAA0B,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1H,CAAC;QAED,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;gBACrD,4DAA4D;gBAC5D,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,0BAA0B,CAAC;gBACtF,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,WAAW,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;oBAC/D,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,wCAAwC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBACpJ,CAAC;gBACD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC/H,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,qCAAqC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBACzI,CAAC;gBACD,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;gBACrD,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;gBACrD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBAChH,CAAC;gBACD,OAAO,IAAI,QAAQ,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAClH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,GAA4C,CAAC;YACvD,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,OAAO,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;QACjI,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAChI,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC"}
|
|
@@ -67,7 +67,7 @@ export function createNodeRuntime(options) {
|
|
|
67
67
|
workspaceId,
|
|
68
68
|
environment: options.config?.environment,
|
|
69
69
|
httpPushProxy: options.config?.httpPushProxy,
|
|
70
|
-
outboundWebhookFetch,
|
|
70
|
+
ephemeralEventFetch: options.config?.ephemeralEventFetch ?? outboundWebhookFetch,
|
|
71
71
|
}, {
|
|
72
72
|
subjectAgentId,
|
|
73
73
|
event: eventType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/node/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/node/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The keys `ar_` credential tags are signed with: one secret per version letter
|
|
3
|
+
* (`a`-`z`) and the version that signs new tags. Credentials outlive key
|
|
4
|
+
* changes, so rotation adds a version and makes it current; it never drops
|
|
5
|
+
* one. Removing a version is an explicit act that locks out every credential
|
|
6
|
+
* tagged under it.
|
|
7
|
+
*/
|
|
8
|
+
export interface CredentialKeyring {
|
|
9
|
+
current: string;
|
|
10
|
+
keys: Readonly<Record<string, string>>;
|
|
11
|
+
}
|
|
12
|
+
/** Parse a keyring from configuration: `{"current":"b","keys":{"a":"<secret>","b":"<secret>"}}`. */
|
|
13
|
+
export declare function parseCredentialKeyring(json: string): CredentialKeyring;
|
|
14
|
+
/**
|
|
15
|
+
* Where an engine gets the routing tag for its workspaces' `ar_` credentials
|
|
16
|
+
* (`EngineConfig.credentialTagger`). A host holding the keyring uses
|
|
17
|
+
* {@link createCredentialTagSigner}; a workspace actor uses the tag its
|
|
18
|
+
* gateway handed it at create.
|
|
19
|
+
*/
|
|
20
|
+
export interface CredentialTagger {
|
|
21
|
+
/** The tag new credentials for `workspaceId` carry. */
|
|
22
|
+
tag(workspaceId: string): Promise<string>;
|
|
23
|
+
/**
|
|
24
|
+
* Every tag a credential for `workspaceId` may carry, the current one first.
|
|
25
|
+
* Deterministic-key recovery (workspace create replay) tries each.
|
|
26
|
+
*/
|
|
27
|
+
tags(workspaceId: string): Promise<readonly string[]>;
|
|
28
|
+
}
|
|
29
|
+
export interface CredentialTagSigner extends CredentialTagger {
|
|
30
|
+
/** Whether an `ar_` credential's tag was signed for its workspace by a version in the keyring. */
|
|
31
|
+
verify(token: string): Promise<boolean>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Tags from a keyring: `<version><10 base62 of HMAC-SHA256(key, wsid)>`, where
|
|
35
|
+
* `wsid` is the credential's 11-character workspace segment. A gateway
|
|
36
|
+
* verifies a credential's tag with the version it names, so a credential for a
|
|
37
|
+
* workspace this deployment never tagged is refused without a lookup. HMAC
|
|
38
|
+
* keys are imported once per signer.
|
|
39
|
+
*/
|
|
40
|
+
export declare function createCredentialTagSigner(keyring: CredentialKeyring): CredentialTagSigner;
|
|
41
|
+
/** A tagger for one workspace whose tag was handed over at create (the workspace actor). */
|
|
42
|
+
export declare function fixedCredentialTagger(workspaceId: string, tag: () => string | undefined): CredentialTagger;
|
|
43
|
+
//# sourceMappingURL=credentialTags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentialTags.d.ts","sourceRoot":"","sources":["../../src/auth/credentialTags.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACxC;AAED,oGAAoG;AACpG,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAoBtE;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uDAAuD;IACvD,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C;;;OAGG;IACH,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,kGAAkG;IAClG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACzC;AAMD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,GAAG,mBAAmB,CA0CzF;AAED,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,MAAM,GAAG,SAAS,GAAG,gBAAgB,CAe1G"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { base62Encode, encodeArWorkspaceId, parseCredential } from '@relaycast/types';
|
|
2
|
+
/** Shortest key secret a keyring accepts. */
|
|
3
|
+
const MIN_SECRET_LENGTH = 16;
|
|
4
|
+
/** Parse a keyring from configuration: `{"current":"b","keys":{"a":"<secret>","b":"<secret>"}}`. */
|
|
5
|
+
export function parseCredentialKeyring(json) {
|
|
6
|
+
let value;
|
|
7
|
+
try {
|
|
8
|
+
value = JSON.parse(json);
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
throw new Error('The credential keyring is not valid JSON');
|
|
12
|
+
}
|
|
13
|
+
const { current, keys } = (value ?? {});
|
|
14
|
+
if (typeof current !== 'string' || !keys || typeof keys !== 'object' || Array.isArray(keys)) {
|
|
15
|
+
throw new Error('The credential keyring is {"current": "<version>", "keys": {"<version>": "<secret>"}}');
|
|
16
|
+
}
|
|
17
|
+
const entries = Object.entries(keys);
|
|
18
|
+
for (const [version, secret] of entries) {
|
|
19
|
+
if (!/^[a-z]$/.test(version))
|
|
20
|
+
throw new Error(`Credential key version ${JSON.stringify(version)} is not one letter a-z`);
|
|
21
|
+
if (typeof secret !== 'string' || secret.length < MIN_SECRET_LENGTH) {
|
|
22
|
+
throw new Error(`Credential key ${version} needs a secret of at least ${MIN_SECRET_LENGTH} characters`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (!Object.hasOwn(keys, current))
|
|
26
|
+
throw new Error(`The current credential key version ${JSON.stringify(current)} is not in the keyring`);
|
|
27
|
+
return { current, keys: Object.fromEntries(entries) };
|
|
28
|
+
}
|
|
29
|
+
const TAG_BODY_LENGTH = 10;
|
|
30
|
+
const TAG_MODULUS = 62n ** BigInt(TAG_BODY_LENGTH);
|
|
31
|
+
const encoder = new TextEncoder();
|
|
32
|
+
/**
|
|
33
|
+
* Tags from a keyring: `<version><10 base62 of HMAC-SHA256(key, wsid)>`, where
|
|
34
|
+
* `wsid` is the credential's 11-character workspace segment. A gateway
|
|
35
|
+
* verifies a credential's tag with the version it names, so a credential for a
|
|
36
|
+
* workspace this deployment never tagged is refused without a lookup. HMAC
|
|
37
|
+
* keys are imported once per signer.
|
|
38
|
+
*/
|
|
39
|
+
export function createCredentialTagSigner(keyring) {
|
|
40
|
+
const keys = new Map();
|
|
41
|
+
if (!keyring || typeof keyring.keys !== 'object' || keyring.keys === null || Array.isArray(keyring.keys)) {
|
|
42
|
+
throw new Error('The credential keyring is {"current": "<version>", "keys": {"<version>": "<secret>"}}');
|
|
43
|
+
}
|
|
44
|
+
for (const [version, secret] of Object.entries(keyring.keys)) {
|
|
45
|
+
if (!/^[a-z]$/.test(version))
|
|
46
|
+
throw new Error('A credential key version is one letter a-z');
|
|
47
|
+
if (typeof secret !== 'string' || secret.length < MIN_SECRET_LENGTH) {
|
|
48
|
+
throw new Error(`Credential key ${version} needs a secret of at least ${MIN_SECRET_LENGTH} characters`);
|
|
49
|
+
}
|
|
50
|
+
keys.set(version, crypto.subtle.importKey('raw', encoder.encode(secret), { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']));
|
|
51
|
+
}
|
|
52
|
+
if (!keys.has(keyring.current))
|
|
53
|
+
throw new Error('The current credential key version is not in the keyring');
|
|
54
|
+
const versions = [keyring.current, ...[...keys.keys()].filter((version) => version !== keyring.current)];
|
|
55
|
+
const tagFor = async (version, wsid) => {
|
|
56
|
+
const key = keys.get(version);
|
|
57
|
+
if (!key)
|
|
58
|
+
return undefined;
|
|
59
|
+
const mac = new Uint8Array(await crypto.subtle.sign('HMAC', await key, encoder.encode(wsid)));
|
|
60
|
+
let value = 0n;
|
|
61
|
+
for (const byte of mac.subarray(0, 8))
|
|
62
|
+
value = (value << 8n) | BigInt(byte);
|
|
63
|
+
return version + base62Encode(value % TAG_MODULUS, TAG_BODY_LENGTH);
|
|
64
|
+
};
|
|
65
|
+
return {
|
|
66
|
+
async tag(workspaceId) {
|
|
67
|
+
return (await tagFor(keyring.current, encodeArWorkspaceId(workspaceId)));
|
|
68
|
+
},
|
|
69
|
+
async tags(workspaceId) {
|
|
70
|
+
const wsid = encodeArWorkspaceId(workspaceId);
|
|
71
|
+
return Promise.all(versions.map(async (version) => (await tagFor(version, wsid))));
|
|
72
|
+
},
|
|
73
|
+
async verify(token) {
|
|
74
|
+
const parsed = parseCredential(token);
|
|
75
|
+
if (parsed?.family !== 'ar')
|
|
76
|
+
return false;
|
|
77
|
+
const expected = await tagFor(parsed.keyVersion, encodeArWorkspaceId(parsed.workspaceId));
|
|
78
|
+
if (!expected)
|
|
79
|
+
return false;
|
|
80
|
+
let diff = 0;
|
|
81
|
+
for (let i = 0; i < expected.length; i += 1)
|
|
82
|
+
diff |= expected.charCodeAt(i) ^ parsed.tag.charCodeAt(i);
|
|
83
|
+
return diff === 0;
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/** A tagger for one workspace whose tag was handed over at create (the workspace actor). */
|
|
88
|
+
export function fixedCredentialTagger(workspaceId, tag) {
|
|
89
|
+
const current = (forWorkspace) => {
|
|
90
|
+
if (forWorkspace !== workspaceId)
|
|
91
|
+
throw new Error(`No credential tag for workspace ${forWorkspace}`);
|
|
92
|
+
const value = tag();
|
|
93
|
+
if (!value)
|
|
94
|
+
throw new Error('This workspace has no credential tag yet; its gateway supplies one at create');
|
|
95
|
+
return value;
|
|
96
|
+
};
|
|
97
|
+
return {
|
|
98
|
+
async tag(forWorkspace) {
|
|
99
|
+
return current(forWorkspace);
|
|
100
|
+
},
|
|
101
|
+
async tags(forWorkspace) {
|
|
102
|
+
return [current(forWorkspace)];
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=credentialTags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentialTags.js","sourceRoot":"","sources":["../../src/auth/credentialTags.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { parseCredential, type CredentialFamily, type CredentialKind, type ParsedCredential } from '@relaycast/types';
|
|
2
|
+
import type { CredentialTagger } from './credentialTags.js';
|
|
3
|
+
/**
|
|
4
|
+
* The two credential families (`@relaycast/types` `parseCredential`).
|
|
5
|
+
*
|
|
6
|
+
* - `legacy`: `rk_live_` / `at_live_` / `nt_live_` / `ot_live_` / `wh_live_`
|
|
7
|
+
* plus a random hex secret.
|
|
8
|
+
* - `ar`: `ar_<kind>_<wsid>_<tag>_<secret><crc>`. The workspace is readable
|
|
9
|
+
* from the credential, so a stateless gateway routes a request to its
|
|
10
|
+
* workspace without a lookup, and the tag proves the deployment's keyring
|
|
11
|
+
* tagged that workspace. The engine still authenticates by hashing the whole
|
|
12
|
+
* credential and looking it up in the table for its kind, within that
|
|
13
|
+
* workspace.
|
|
14
|
+
*
|
|
15
|
+
* Every deployment accepts both families. Which one it mints is per deployment
|
|
16
|
+
* (`EngineConfig.credentialFormat`, default `legacy`); minting `ar` needs a
|
|
17
|
+
* {@link CredentialTagger} (`EngineConfig.credentialTagger`).
|
|
18
|
+
*/
|
|
19
|
+
export type CredentialFormat = CredentialFamily;
|
|
20
|
+
export type { CredentialKind, ParsedCredential };
|
|
21
|
+
export { parseCredential };
|
|
22
|
+
/** Why a deployment that mints `ar_` credentials refuses a workspace id. */
|
|
23
|
+
export declare const AR_WORKSPACE_ID_REQUIRED = "workspace ids must be snowflakes on deployments that mint ar_ credentials";
|
|
24
|
+
/**
|
|
25
|
+
* Minting an `ar_` credential for a workspace id that is not a 64-bit
|
|
26
|
+
* snowflake. Routes check ids before writing; this is the backstop, and it
|
|
27
|
+
* answers `400 invalid_request`.
|
|
28
|
+
*/
|
|
29
|
+
export declare class WorkspaceIdNotSnowflakeError extends Error {
|
|
30
|
+
readonly workspaceId: string;
|
|
31
|
+
readonly code = "invalid_request";
|
|
32
|
+
readonly status = 400;
|
|
33
|
+
readonly clientSafe = true;
|
|
34
|
+
constructor(workspaceId: string);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Parse an `ar_` credential, for gateways that route by it. Proves only shape
|
|
38
|
+
* and checksum; verify its tag with `createCredentialTagSigner(...).verify`.
|
|
39
|
+
*/
|
|
40
|
+
export declare function parseArCredential(token: string): {
|
|
41
|
+
kind: CredentialKind;
|
|
42
|
+
workspaceId: string;
|
|
43
|
+
tag: string;
|
|
44
|
+
keyVersion: string;
|
|
45
|
+
} | undefined;
|
|
46
|
+
/** Human-readable shape of a credential kind in the family a deployment mints, for error messages. */
|
|
47
|
+
export declare function credentialShape(kind: CredentialKind, format: CredentialFormat): string;
|
|
48
|
+
interface CredentialSettings {
|
|
49
|
+
format: CredentialFormat;
|
|
50
|
+
tagger?: CredentialTagger;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Bind the family a deployment mints, and its tagger, to its database handle.
|
|
54
|
+
* Every engine path that mints a credential holds the handle, so the settings
|
|
55
|
+
* travel with it (the same binding pattern as node liveness).
|
|
56
|
+
*/
|
|
57
|
+
export declare function configureCredentials(db: object, next: CredentialSettings): void;
|
|
58
|
+
/**
|
|
59
|
+
* Accept only `ar_` credentials on `db`'s deployment: legacy ones are refused
|
|
60
|
+
* with 401, `POST /v1/credentials/upgrade` is not served and no response is
|
|
61
|
+
* marked deprecated. Inherent to the workspace actor runtime, whose
|
|
62
|
+
* deployments never issued legacy credentials; call before `createEngine`.
|
|
63
|
+
*/
|
|
64
|
+
export declare function restrictToArCredentials(db: object): void;
|
|
65
|
+
/** Whether `db`'s deployment accepts only `ar_` credentials. */
|
|
66
|
+
export declare function acceptsOnlyAr(db: object): boolean;
|
|
67
|
+
/** Carry `db`'s credential settings onto a derived handle (a transaction). */
|
|
68
|
+
export declare function inheritCredentials(derived: object, db: object): void;
|
|
69
|
+
/** The credential family `db`'s deployment mints; `legacy` unless configured otherwise. */
|
|
70
|
+
export declare function credentialFormat(db: object): CredentialFormat;
|
|
71
|
+
/** The deployment's tagger, when it can mint `ar_` credentials. */
|
|
72
|
+
export declare function credentialTagger(db: object): CredentialTagger | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* A family a derived credential may carry: `legacy`, or `ar` under the tag
|
|
75
|
+
* it names. An `ar_` credential names its workspace and tag, so derived
|
|
76
|
+
* secret material binds both.
|
|
77
|
+
*/
|
|
78
|
+
export type DerivationFamily = {
|
|
79
|
+
format: 'legacy';
|
|
80
|
+
} | {
|
|
81
|
+
format: 'ar';
|
|
82
|
+
tag: string;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Every family a credential derived for `workspaceId` may have been committed
|
|
86
|
+
* in, the deployment's current one first: `legacy`, and `ar` under each tag
|
|
87
|
+
* the deployment's tagger knows for the workspace. A replay derives each, so
|
|
88
|
+
* one retried after a family switch or a keyring rotation still recovers what
|
|
89
|
+
* the first attempt committed.
|
|
90
|
+
*/
|
|
91
|
+
export declare function derivationFamilies(db: object, workspaceId: string): Promise<DerivationFamily[]>;
|
|
92
|
+
/**
|
|
93
|
+
* Build a credential from caller-supplied hex secret material (a random value
|
|
94
|
+
* or a deterministic HMAC/SHA-256 digest), at least as long as the family's
|
|
95
|
+
* secret. An `ar_` credential carries `tag`, by default the deployment's
|
|
96
|
+
* current tag for the workspace.
|
|
97
|
+
*/
|
|
98
|
+
export declare function credentialFromHex(db: object, format: CredentialFormat, kind: CredentialKind, workspaceId: string, hex: string, tag?: string): Promise<string>;
|
|
99
|
+
/** Mint a fresh random credential of `kind` for `workspaceId`, in `format`. */
|
|
100
|
+
export declare function mintCredential(db: object, format: CredentialFormat, kind: CredentialKind, workspaceId: string): Promise<string>;
|
|
101
|
+
/** Mint a fresh credential in the family bound to `db`. */
|
|
102
|
+
export declare function issueCredential(db: object, kind: CredentialKind, workspaceId: string): Promise<string>;
|
|
103
|
+
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":"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"}
|