pipework 0.199.0 → 0.200.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/CHANGELOG.md +20 -0
- package/REFERENCE.md +53 -0
- package/dist/REFERENCE.md +7 -195
- package/dist/async/jobs/queue-door.d.ts +20 -0
- package/dist/async/jobs/queue-door.d.ts.map +1 -0
- package/dist/async/jobs/queue-door.js +38 -0
- package/dist/async/jobs/queue-door.js.map +1 -0
- package/dist/async/jobs/queue.d.ts +5 -0
- package/dist/async/jobs/queue.d.ts.map +1 -1
- package/dist/async/jobs/queue.js +2 -0
- package/dist/async/jobs/queue.js.map +1 -1
- package/dist/auth/tenant/in-tenant.d.ts +12 -1
- package/dist/auth/tenant/in-tenant.d.ts.map +1 -1
- package/dist/auth/tenant/in-tenant.js +28 -11
- package/dist/auth/tenant/in-tenant.js.map +1 -1
- package/dist/auth/tenant/scoped-db.d.ts +8 -0
- package/dist/auth/tenant/scoped-db.d.ts.map +1 -1
- package/dist/auth/tenant/scoped-db.js +47 -0
- package/dist/auth/tenant/scoped-db.js.map +1 -1
- package/dist/cli/commands/alerts.js +4 -2
- package/dist/cli/commands/alerts.js.map +1 -1
- package/dist/cli/commands/check.d.ts +14 -0
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +26 -1
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/db.d.ts.map +1 -1
- package/dist/cli/commands/db.js +26 -1
- package/dist/cli/commands/db.js.map +1 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +8 -2
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/core/config/load.d.ts +19 -0
- package/dist/core/config/load.d.ts.map +1 -1
- package/dist/core/config/load.js +30 -3
- package/dist/core/config/load.js.map +1 -1
- package/dist/core/config/namespace.d.ts +8 -0
- package/dist/core/config/namespace.d.ts.map +1 -1
- package/dist/core/config/resolve.d.ts +2 -0
- package/dist/core/config/resolve.d.ts.map +1 -1
- package/dist/core/config/resolve.js +2 -2
- package/dist/core/config/resolve.js.map +1 -1
- package/dist/core/config/schema.d.ts +17 -0
- package/dist/core/config/schema.d.ts.map +1 -1
- package/dist/core/config/schema.js +64 -0
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/pipework.d.ts +10 -2
- package/dist/core/pipework.d.ts.map +1 -1
- package/dist/core/pipework.js +18 -5
- package/dist/core/pipework.js.map +1 -1
- package/dist/core/surface/worker.d.ts.map +1 -1
- package/dist/core/surface/worker.js +16 -9
- package/dist/core/surface/worker.js.map +1 -1
- package/dist/core/validation/connectivity.d.ts.map +1 -1
- package/dist/core/validation/connectivity.js +2 -1
- package/dist/core/validation/connectivity.js.map +1 -1
- package/dist/core/validation/rls-role.d.ts +5 -0
- package/dist/core/validation/rls-role.d.ts.map +1 -1
- package/dist/core/validation/rls-role.js +43 -0
- package/dist/core/validation/rls-role.js.map +1 -1
- package/dist/core/validation/startup.d.ts.map +1 -1
- package/dist/core/validation/startup.js +2 -1
- package/dist/core/validation/startup.js.map +1 -1
- package/dist/data/db/db.d.ts +48 -0
- package/dist/data/db/db.d.ts.map +1 -1
- package/dist/data/db/db.js +117 -3
- package/dist/data/db/db.js.map +1 -1
- package/dist/data/db/namespace.d.ts +3 -1
- package/dist/data/db/namespace.d.ts.map +1 -1
- package/dist/data/db/namespace.js +3 -1
- package/dist/data/db/namespace.js.map +1 -1
- package/dist/data/db/owner-labels.d.ts +9 -0
- package/dist/data/db/owner-labels.d.ts.map +1 -0
- package/dist/data/db/owner-labels.js +9 -0
- package/dist/data/db/owner-labels.js.map +1 -0
- package/dist/data/db/pool.d.ts +4 -2
- package/dist/data/db/pool.d.ts.map +1 -1
- package/dist/data/db/pool.js.map +1 -1
- package/dist/data/db/unbound.d.ts +18 -0
- package/dist/data/db/unbound.d.ts.map +1 -0
- package/dist/data/db/unbound.js +26 -0
- package/dist/data/db/unbound.js.map +1 -0
- package/dist/data/migrate/door-generate.d.ts +35 -0
- package/dist/data/migrate/door-generate.d.ts.map +1 -0
- package/dist/data/migrate/door-generate.js +96 -0
- package/dist/data/migrate/door-generate.js.map +1 -0
- package/dist/data/migrate/generate.d.ts +2 -2
- package/dist/data/migrate/generate.d.ts.map +1 -1
- package/dist/data/migrate/generate.js +15 -4
- package/dist/data/migrate/generate.js.map +1 -1
- package/dist/data/migrate/run.d.ts.map +1 -1
- package/dist/data/migrate/run.js +2 -1
- package/dist/data/migrate/run.js.map +1 -1
- package/dist/data/migrate/snapshot.d.ts +6 -0
- package/dist/data/migrate/snapshot.d.ts.map +1 -1
- package/dist/data/migrate/snapshot.js.map +1 -1
- package/dist/infra/cache/create.d.ts.map +1 -1
- package/dist/infra/cache/create.js +3 -3
- package/dist/infra/cache/create.js.map +1 -1
- package/dist/infra/cache/entry.d.ts +7 -1
- package/dist/infra/cache/entry.d.ts.map +1 -1
- package/dist/infra/cache/entry.js +10 -5
- package/dist/infra/cache/entry.js.map +1 -1
- package/dist/infra/cache/tenant.d.ts.map +1 -1
- package/dist/infra/cache/tenant.js +2 -3
- package/dist/infra/cache/tenant.js.map +1 -1
- package/dist/infra/email/sigv4.d.ts +24 -0
- package/dist/infra/email/sigv4.d.ts.map +1 -0
- package/dist/infra/email/sigv4.js +55 -0
- package/dist/infra/email/sigv4.js.map +1 -0
- package/dist/infra/storage/handle.d.ts.map +1 -1
- package/dist/infra/storage/handle.js +28 -6
- package/dist/infra/storage/handle.js.map +1 -1
- package/dist/request/di/resolve.d.ts.map +1 -1
- package/dist/request/di/resolve.js +2 -2
- package/dist/request/di/resolve.js.map +1 -1
- package/dist/request/http/server.d.ts.map +1 -1
- package/dist/request/http/server.js +2 -3
- package/dist/request/http/server.js.map +1 -1
- package/dist/test/plugin.d.ts.map +1 -1
- package/dist/test/plugin.js +8 -1
- package/dist/test/plugin.js.map +1 -1
- package/dist/test/setup.d.ts.map +1 -1
- package/dist/test/setup.js +28 -0
- package/dist/test/setup.js.map +1 -1
- package/dist/test/system-channel.d.ts +3 -1
- package/dist/test/system-channel.d.ts.map +1 -1
- package/dist/test/system-channel.js +10 -3
- package/dist/test/system-channel.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../src/data/db/pool.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAW,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAKtE,
|
|
1
|
+
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../src/data/db/pool.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAW,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAKtE,wVAAwV;AACxV,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAA;AAEvD,0HAA0H;AAC1H,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAA;IACpC,yHAAyH;IACzH,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAA;IACpC,mIAAmI;IACnI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,kBAAkB,CAAA;IACpD;;;;;;;;;;;;;;OAcG;IACH,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IACrF,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5D;AAED,mJAAmJ;AACnJ,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAA;CACxE;AAuDD;;;;;GAKG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,iBAAiB,CAmB5E;AAED,6KAA6K;AAC7K,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,IAAI,EACnB,aAAa,CAAC,EAAE,qBAAqB,GACpC,iBAAiB,CAmCnB"}
|
package/dist/data/db/pool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../../../src/data/db/pool.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,OAAO,EAA2B,MAAM,+BAA+B,CAAA;AAGhF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAA;AACtF,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../../../src/data/db/pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { DB } from './index.js';
|
|
2
|
+
import type { Flow } from '../../request/context/types.js';
|
|
3
|
+
import type { ResolvedDatabase } from '../../core/config/load.js';
|
|
4
|
+
/**
|
|
5
|
+
* The database handle for a Flow with no bound transaction on `dbName`: the
|
|
6
|
+
* pooled connection.
|
|
7
|
+
*
|
|
8
|
+
* On a platform-mode database that connection is the platform role, which sees
|
|
9
|
+
* no tenant row until the tenant setting is set, and the setting can only be
|
|
10
|
+
* set for a transaction. A builder from `pipe()` runs lazily on the handle it
|
|
11
|
+
* was built from, with nothing wrapping the statement, so there is no per-statement
|
|
12
|
+
* place to set it (src/data/query/postgres-js/session.ts sends each statement on
|
|
13
|
+
* the pool client). A Flow with a tenant is therefore refused here, naming the fix;
|
|
14
|
+
* a Flow with no tenant gets the connection as is and tenant tables return nothing.
|
|
15
|
+
* Under a test connection override the test's own connection is used.
|
|
16
|
+
*/
|
|
17
|
+
export declare function unboundDb(ctx: Flow, dbName: string, dbConfig: ResolvedDatabase, caller: string): DB;
|
|
18
|
+
//# sourceMappingURL=unbound.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unbound.d.ts","sourceRoot":"","sources":["../../../src/data/db/unbound.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAEjE;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,EAAE,CAenG"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The database handle for a Flow with no bound transaction on `dbName`: the
|
|
3
|
+
* pooled connection.
|
|
4
|
+
*
|
|
5
|
+
* On a platform-mode database that connection is the platform role, which sees
|
|
6
|
+
* no tenant row until the tenant setting is set, and the setting can only be
|
|
7
|
+
* set for a transaction. A builder from `pipe()` runs lazily on the handle it
|
|
8
|
+
* was built from, with nothing wrapping the statement, so there is no per-statement
|
|
9
|
+
* place to set it (src/data/query/postgres-js/session.ts sends each statement on
|
|
10
|
+
* the pool client). A Flow with a tenant is therefore refused here, naming the fix;
|
|
11
|
+
* a Flow with no tenant gets the connection as is and tenant tables return nothing.
|
|
12
|
+
* Under a test connection override the test's own connection is used.
|
|
13
|
+
*/
|
|
14
|
+
export function unboundDb(ctx, dbName, dbConfig, caller) {
|
|
15
|
+
if (dbConfig.rls?.platformRole !== undefined
|
|
16
|
+
&& ctx.tenant !== null
|
|
17
|
+
&& !ctx.instance.pool.isOverridden(dbName)) {
|
|
18
|
+
throw new Error(`[pipework] ${caller} has no transaction bound for database "${dbName}", and this Flow has a tenant.\n\n` +
|
|
19
|
+
` "${dbName}" is in platform mode (rls.platformRole): its pooled connection is the platform role, which\n` +
|
|
20
|
+
' sees no tenant row, and the tenant setting can only be set per transaction.\n' +
|
|
21
|
+
' Fix: run the code in a request or job (each binds a tenant-scoped transaction), or wrap it in\n' +
|
|
22
|
+
' pipe.transaction(async (tx) => { ... }).\n');
|
|
23
|
+
}
|
|
24
|
+
return ctx.instance.pool.getOrCreate(dbConfig).drizzle;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=unbound.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unbound.js","sourceRoot":"","sources":["../../../src/data/db/unbound.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CAAC,GAAS,EAAE,MAAc,EAAE,QAA0B,EAAE,MAAc;IAC7F,IACE,QAAQ,CAAC,GAAG,EAAE,YAAY,KAAK,SAAS;WACrC,GAAG,CAAC,MAAM,KAAK,IAAI;WACnB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAC1C,CAAC;QACD,MAAM,IAAI,KAAK,CACb,cAAc,MAAM,2CAA2C,MAAM,oCAAoC;YACzG,MAAM,MAAM,+FAA+F;YAC3G,iFAAiF;YACjF,mGAAmG;YACnG,8CAA8C,CAC/C,CAAA;IACH,CAAC;IACD,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAA;AACxD,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { DefinedTable } from '../domain/types.js';
|
|
2
|
+
import type { ResolvedDoor } from '../../core/config/load.js';
|
|
3
|
+
/** The setting a door's policy reads; `pipe.door()` sets it for one transaction. */
|
|
4
|
+
export declare const DOOR_SETTING = "pipework.door";
|
|
5
|
+
/** What a snapshot remembers of a door, so the next generate can tell an added, removed or moved one. */
|
|
6
|
+
export interface DoorSnapshot {
|
|
7
|
+
readonly table: string;
|
|
8
|
+
readonly role: string;
|
|
9
|
+
/** Present only for a door that also writes (pipework's own); an app door is SELECT-only. */
|
|
10
|
+
readonly ops?: readonly DoorOp[];
|
|
11
|
+
}
|
|
12
|
+
export type DoorOp = 'select' | 'update' | 'delete';
|
|
13
|
+
export declare function doorOpPolicyName(door: string, op: 'update' | 'delete'): string;
|
|
14
|
+
export declare function doorDeletePolicyName(door: string): string;
|
|
15
|
+
export declare function doorPolicyName(door: string): string;
|
|
16
|
+
export declare function createDoorPolicy(door: string, snapshot: DoorSnapshot): string;
|
|
17
|
+
export declare function createDoorOpPolicy(door: string, snapshot: DoorSnapshot, op: 'update' | 'delete'): string;
|
|
18
|
+
export declare function createDoorDeletePolicy(door: string, snapshot: DoorSnapshot): string;
|
|
19
|
+
export declare function dropDoorOpPolicy(door: string, snapshot: DoorSnapshot, op: 'update' | 'delete'): string;
|
|
20
|
+
export declare function dropDoorDeletePolicy(door: string, snapshot: DoorSnapshot): string;
|
|
21
|
+
export declare function dropDoorPolicy(door: string, snapshot: DoorSnapshot): string;
|
|
22
|
+
/**
|
|
23
|
+
* The doors a database's migrations must carry: its declared doors when it is
|
|
24
|
+
* in platform mode, none otherwise. Each door's table must be tenant-scoped in
|
|
25
|
+
* a definition — any other table needs no door, and the platform role reads it
|
|
26
|
+
* on its ordinary grants.
|
|
27
|
+
*/
|
|
28
|
+
export declare function doorSnapshots(doors: readonly ResolvedDoor[], platformRole: string | undefined, definitions: ReadonlyMap<string, DefinedTable>): Record<string, DoorSnapshot>;
|
|
29
|
+
/** Statements that move a database from the doors `prev` recorded to the doors `cur` declares. A door whose table, role or operations changed is dropped from the old table and created on the new. */
|
|
30
|
+
export declare function diffDoors(prev: Readonly<Record<string, DoorSnapshot>> | undefined, cur: Readonly<Record<string, DoorSnapshot>>): string[];
|
|
31
|
+
/** The name prefix reserved for doors pipework declares itself. */
|
|
32
|
+
export declare const FRAMEWORK_DOOR_PREFIX = "pipework.";
|
|
33
|
+
/** The storage sweep's door: it reads and deletes `storage_file` across tenants. */
|
|
34
|
+
export declare const STORAGE_SWEEP_DOOR = "pipework.storage_sweep";
|
|
35
|
+
//# sourceMappingURL=door-generate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"door-generate.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/door-generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAI7D,oFAAoF;AACpF,eAAO,MAAM,YAAY,kBAAkB,CAAA;AAE3C,yGAAyG;AACzG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,6FAA6F;IAC7F,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACjC;AAED,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAQnD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAE9E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAMD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,MAAM,CAI7E;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAIxG;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,MAAM,CAEnF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAEtG;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,MAAM,CAEjF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,MAAM,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,YAAY,EAAE,EAC9B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,GAC7C,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAuB9B;AAED,uMAAuM;AACvM,wBAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,GAAG,SAAS,EACxD,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,GAC1C,MAAM,EAAE,CAgBV;AAED,mEAAmE;AACnE,eAAO,MAAM,qBAAqB,cAAc,CAAA;AAEhD,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,2BAA2B,CAAA"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { ConfigError } from '../../core/config/errors.js';
|
|
2
|
+
import { quoteIdentifier } from '../db/identifiers.js';
|
|
3
|
+
/** The setting a door's policy reads; `pipe.door()` sets it for one transaction. */
|
|
4
|
+
export const DOOR_SETTING = 'pipework.door';
|
|
5
|
+
/** The operations a door opens beyond SELECT, which every door has. */
|
|
6
|
+
const writes = (snapshot) => ['update', 'delete'].filter(op => snapshot.ops?.includes(op) === true);
|
|
7
|
+
const sameDoor = (a, b) => a.table === b.table && a.role === b.role && writes(a).join() === writes(b).join();
|
|
8
|
+
export function doorOpPolicyName(door, op) {
|
|
9
|
+
return `${doorPolicyName(door)}__${op}`;
|
|
10
|
+
}
|
|
11
|
+
export function doorDeletePolicyName(door) {
|
|
12
|
+
return doorOpPolicyName(door, 'delete');
|
|
13
|
+
}
|
|
14
|
+
export function doorPolicyName(door) {
|
|
15
|
+
return `pipework_door_${door.replace(/\./g, '__')}`;
|
|
16
|
+
}
|
|
17
|
+
function sqlString(value) {
|
|
18
|
+
return `'${value.replace(/'/g, "''")}'`;
|
|
19
|
+
}
|
|
20
|
+
export function createDoorPolicy(door, snapshot) {
|
|
21
|
+
return `CREATE POLICY ${quoteIdentifier(doorPolicyName(door), 'policy')} ON ${quoteIdentifier(snapshot.table, 'table')} ` +
|
|
22
|
+
`AS PERMISSIVE FOR SELECT TO ${quoteIdentifier(snapshot.role, 'role')} ` +
|
|
23
|
+
`USING (current_setting('${DOOR_SETTING}', true) = ${sqlString(door)})`;
|
|
24
|
+
}
|
|
25
|
+
export function createDoorOpPolicy(door, snapshot, op) {
|
|
26
|
+
return `CREATE POLICY ${quoteIdentifier(doorOpPolicyName(door, op), 'policy')} ON ${quoteIdentifier(snapshot.table, 'table')} ` +
|
|
27
|
+
`AS PERMISSIVE FOR ${op.toUpperCase()} TO ${quoteIdentifier(snapshot.role, 'role')} ` +
|
|
28
|
+
`USING (current_setting('${DOOR_SETTING}', true) = ${sqlString(door)})`;
|
|
29
|
+
}
|
|
30
|
+
export function createDoorDeletePolicy(door, snapshot) {
|
|
31
|
+
return createDoorOpPolicy(door, snapshot, 'delete');
|
|
32
|
+
}
|
|
33
|
+
export function dropDoorOpPolicy(door, snapshot, op) {
|
|
34
|
+
return `DROP POLICY IF EXISTS ${quoteIdentifier(doorOpPolicyName(door, op), 'policy')} ON ${quoteIdentifier(snapshot.table, 'table')}`;
|
|
35
|
+
}
|
|
36
|
+
export function dropDoorDeletePolicy(door, snapshot) {
|
|
37
|
+
return dropDoorOpPolicy(door, snapshot, 'delete');
|
|
38
|
+
}
|
|
39
|
+
export function dropDoorPolicy(door, snapshot) {
|
|
40
|
+
return `DROP POLICY IF EXISTS ${quoteIdentifier(doorPolicyName(door), 'policy')} ON ${quoteIdentifier(snapshot.table, 'table')}`;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The doors a database's migrations must carry: its declared doors when it is
|
|
44
|
+
* in platform mode, none otherwise. Each door's table must be tenant-scoped in
|
|
45
|
+
* a definition — any other table needs no door, and the platform role reads it
|
|
46
|
+
* on its ordinary grants.
|
|
47
|
+
*/
|
|
48
|
+
export function doorSnapshots(doors, platformRole, definitions) {
|
|
49
|
+
if (platformRole === undefined)
|
|
50
|
+
return {};
|
|
51
|
+
const out = {};
|
|
52
|
+
for (const door of doors) {
|
|
53
|
+
if (door.framework === true) {
|
|
54
|
+
const ops = door.ops?.filter(op => op !== 'select') ?? [];
|
|
55
|
+
out[door.name] = { table: door.table, role: platformRole, ...(ops.length > 0 ? { ops: ['select', ...ops] } : {}) };
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
const definition = definitions.get(door.table);
|
|
59
|
+
const tenanted = definition !== undefined
|
|
60
|
+
&& Object.values(definition.$fields).some(field => field._meta.tenant === true);
|
|
61
|
+
if (!tenanted) {
|
|
62
|
+
throw new ConfigError(`Door "${door.name}" names table "${door.table}", which is not tenant-scoped in any definition.`, definition === undefined
|
|
63
|
+
? `No definition produces a table named "${door.table}". Door tables are SQL names of tables defined with a .tenant() field.`
|
|
64
|
+
: `"${door.table}" has no .tenant() field, so row-level security does not hide it from the platform role and it needs no door. Remove the door.`);
|
|
65
|
+
}
|
|
66
|
+
out[door.name] = { table: door.table, role: platformRole };
|
|
67
|
+
}
|
|
68
|
+
return out;
|
|
69
|
+
}
|
|
70
|
+
/** Statements that move a database from the doors `prev` recorded to the doors `cur` declares. A door whose table, role or operations changed is dropped from the old table and created on the new. */
|
|
71
|
+
export function diffDoors(prev, cur) {
|
|
72
|
+
const before = prev ?? {};
|
|
73
|
+
const statements = [];
|
|
74
|
+
for (const [name, old] of Object.entries(before)) {
|
|
75
|
+
const now = cur[name];
|
|
76
|
+
if (now !== undefined && sameDoor(old, now))
|
|
77
|
+
continue;
|
|
78
|
+
statements.push(dropDoorPolicy(name, old));
|
|
79
|
+
for (const op of writes(old))
|
|
80
|
+
statements.push(dropDoorOpPolicy(name, old, op));
|
|
81
|
+
}
|
|
82
|
+
for (const [name, now] of Object.entries(cur)) {
|
|
83
|
+
const old = before[name];
|
|
84
|
+
if (old !== undefined && sameDoor(old, now))
|
|
85
|
+
continue;
|
|
86
|
+
statements.push(createDoorPolicy(name, now));
|
|
87
|
+
for (const op of writes(now))
|
|
88
|
+
statements.push(createDoorOpPolicy(name, now, op));
|
|
89
|
+
}
|
|
90
|
+
return statements;
|
|
91
|
+
}
|
|
92
|
+
/** The name prefix reserved for doors pipework declares itself. */
|
|
93
|
+
export const FRAMEWORK_DOOR_PREFIX = 'pipework.';
|
|
94
|
+
/** The storage sweep's door: it reads and deletes `storage_file` across tenants. */
|
|
95
|
+
export const STORAGE_SWEEP_DOOR = 'pipework.storage_sweep';
|
|
96
|
+
//# sourceMappingURL=door-generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"door-generate.js","sourceRoot":"","sources":["../../../src/data/migrate/door-generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { ResolvedDatabase } from '../../core/config/load.js';
|
|
1
|
+
import type { ResolvedDatabase, ResolvedDoor } from '../../core/config/load.js';
|
|
2
2
|
export interface GenerateResult {
|
|
3
3
|
database: string;
|
|
4
4
|
migrationFile: string | null;
|
|
5
5
|
snapshotFile: string;
|
|
6
6
|
statements: number;
|
|
7
7
|
}
|
|
8
|
-
export declare function generateForDatabase(dbConfig: ResolvedDatabase, migrationName?: string, internalDefinitions?: () => Promise<Record<string, unknown
|
|
8
|
+
export declare function generateForDatabase(dbConfig: ResolvedDatabase, migrationName?: string, internalDefinitions?: () => Promise<Record<string, unknown>>, doors?: readonly ResolvedDoor[] | (() => readonly ResolvedDoor[])): Promise<GenerateResult>;
|
|
9
9
|
export declare function idempotentAuthTable(statement: string): string;
|
|
10
10
|
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/generate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/generate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAuB/E,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACnB;AAgBD,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,gBAAgB,EAC1B,aAAa,CAAC,EAAE,MAAM,EACtB,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC5D,KAAK,GAAE,SAAS,YAAY,EAAE,GAAG,CAAC,MAAM,SAAS,YAAY,EAAE,CAAM,GACpE,OAAO,CAAC,cAAc,CAAC,CAqHzB;AAOD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAO7D"}
|
|
@@ -4,6 +4,7 @@ import { pathToFileURL } from 'node:url';
|
|
|
4
4
|
import { glob } from 'node:fs/promises';
|
|
5
5
|
import { ConfigError } from '../../core/config/errors.js';
|
|
6
6
|
import { postProcessMigration } from './post-process.js';
|
|
7
|
+
import { diffDoors, doorSnapshots } from './door-generate.js';
|
|
7
8
|
import { generateRlsStatements } from './rls-generate.js';
|
|
8
9
|
import { generateAppendOnlyStatements } from './append-only-generate.js';
|
|
9
10
|
import { definitions } from '../domain/index.js';
|
|
@@ -14,7 +15,7 @@ import { PARTITIONED_TRACE_TABLE_NAMES } from '../../trace/partition/tables.js';
|
|
|
14
15
|
import { AUTH_TABLE_NAMES } from '../../auth/auth/schema.js';
|
|
15
16
|
import { EMAIL_TABLE_NAMES } from '../../infra/email/schema.js';
|
|
16
17
|
import { SCHEDULE_TABLE_NAMES } from '../../async/jobs/schedules-table.js';
|
|
17
|
-
export async function generateForDatabase(dbConfig, migrationName, internalDefinitions) {
|
|
18
|
+
export async function generateForDatabase(dbConfig, migrationName, internalDefinitions, doors = []) {
|
|
18
19
|
if (dbConfig.schema === undefined) {
|
|
19
20
|
throw new ConfigError(`Database "${dbConfig.name}" has no schema path configured.`, `Add a schema path to your database config:\n\n` +
|
|
20
21
|
` databases: {\n` +
|
|
@@ -65,6 +66,12 @@ export async function generateForDatabase(dbConfig, migrationName, internalDefin
|
|
|
65
66
|
}
|
|
66
67
|
const prevSnapshot = readPreviousSnapshot(metaDir);
|
|
67
68
|
const currentSnapshot = buildSnapshot(imports, prevSnapshot.id);
|
|
69
|
+
// Doors are not tables, so the table diff never sees them: their policies are
|
|
70
|
+
// diffed against the doors the previous snapshot recorded.
|
|
71
|
+
const currentDoors = doorSnapshots(typeof doors === 'function' ? doors() : doors, dbConfig.rls?.platformRole, definitions());
|
|
72
|
+
const doorStatements = diffDoors(prevSnapshot.doors, currentDoors);
|
|
73
|
+
if (Object.keys(currentDoors).length > 0 || prevSnapshot.doors !== undefined)
|
|
74
|
+
currentSnapshot.doors = currentDoors;
|
|
68
75
|
const ops = diffSnapshots(prevSnapshot, currentSnapshot);
|
|
69
76
|
// Framework-owned partitioned tables (the trace family) stay in the snapshot
|
|
70
77
|
// but are never emitted into an application migration: they are PARTITION BY
|
|
@@ -73,7 +80,7 @@ export async function generateForDatabase(dbConfig, migrationName, internalDefin
|
|
|
73
80
|
// partitions — itself. Issue #313.
|
|
74
81
|
const emittableOps = ops.filter(op => !PARTITIONED_TRACE_TABLE_NAMES.has(diffOpTableName(op)));
|
|
75
82
|
const statements = emitSQL(emittableOps).map(idempotentAuthTable);
|
|
76
|
-
if (statements.length === 0) {
|
|
83
|
+
if (statements.length === 0 && doorStatements.length === 0) {
|
|
77
84
|
const snapshotFile = writeSnapshot(metaDir, currentSnapshot, readJournal(metaDir));
|
|
78
85
|
return {
|
|
79
86
|
database: dbConfig.name,
|
|
@@ -86,9 +93,13 @@ export async function generateForDatabase(dbConfig, migrationName, internalDefin
|
|
|
86
93
|
const idx = journal.entries.length;
|
|
87
94
|
const tag = formatTag(idx, migrationName);
|
|
88
95
|
const joined = statements.map(s => s + ';').join('\n');
|
|
89
|
-
const
|
|
96
|
+
const withTenantRls = dbConfig.rls !== undefined
|
|
90
97
|
? generateRlsStatements(joined, definitions(), dbConfig.rls.sessionVar, dbConfig.rls.force)
|
|
91
98
|
: joined;
|
|
99
|
+
// After the tenant policies: a door's policy goes on a table that is row-secured by then.
|
|
100
|
+
const withRls = doorStatements.length > 0
|
|
101
|
+
? `${withTenantRls}${withTenantRls === '' ? '' : '\n\n'}${doorStatements.map(s => s + ';').join('\n')}`
|
|
102
|
+
: withTenantRls;
|
|
92
103
|
const withAppendOnly = generateAppendOnlyStatements(withRls, definitions());
|
|
93
104
|
const sqlContent = postProcessMigration(withAppendOnly);
|
|
94
105
|
const migrationFile = join(migrationsDir, `${tag}.sql`);
|
|
@@ -98,7 +109,7 @@ export async function generateForDatabase(dbConfig, migrationName, internalDefin
|
|
|
98
109
|
database: dbConfig.name,
|
|
99
110
|
migrationFile,
|
|
100
111
|
snapshotFile,
|
|
101
|
-
statements: statements.length,
|
|
112
|
+
statements: statements.length + doorStatements.length,
|
|
102
113
|
};
|
|
103
114
|
}
|
|
104
115
|
// The session, org, email and schedules tables predate their definitions: apps
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/data/migrate/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAmB,MAAM,eAAe,CAAA;AAC9E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AA+B1E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAA0B,EAC1B,aAAsB,EACtB,mBAA4D;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/data/migrate/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/run.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/run.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAGlE,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAGvE,OAAO,EAA4B,KAAK,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAM/F,MAAM,WAAW,cAAc;CAAG;AAElC,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,WAAW,EAAE,oBAAoB,CAAA;IACjC,4EAA4E;IAC5E,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,2EAA2E;IAC3E,eAAe,EAAE,qBAAqB,CAAA;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,gDAAgD;IAChD,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,qBAAa,oBAAqB,SAAQ,KAAK;aAG3B,KAAK,EAAE,oBAAoB;IAF7C,SAAkB,IAAI,0BAAyB;gBAE7B,KAAK,EAAE,oBAAoB,EAC3C,OAAO,EAAE,MAAM;CAIlB;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAU3G;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CA+DtI"}
|
package/dist/data/migrate/run.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { sql } from '../query/index.js';
|
|
2
2
|
import { quoteIdentifier } from '../db/identifiers.js';
|
|
3
|
+
import { OWNER_LABEL_MIGRATE } from '../db/owner-labels.js';
|
|
3
4
|
import { checkMigrations } from './check.js';
|
|
4
5
|
import { readAppliedState } from './applied.js';
|
|
5
6
|
import { applyMigrations } from './apply.js';
|
|
@@ -23,7 +24,7 @@ export async function migrateAll(instance, options = {}) {
|
|
|
23
24
|
return results;
|
|
24
25
|
}
|
|
25
26
|
export async function migrateOne(instance, dbConfig, _options = {}) {
|
|
26
|
-
const conn = instance.pool.getOrCreate(dbConfig);
|
|
27
|
+
const conn = instance.pool.getOrCreate(dbConfig, 'owner', OWNER_LABEL_MIGRATE);
|
|
27
28
|
// Scope the safety gate to pending migrations only — hazards in already-applied
|
|
28
29
|
// migrations are history, not a decision the operator still gets to make.
|
|
29
30
|
// Without this, a fully-current database with a destructive op anywhere in its
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/data/migrate/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAGvC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,eAAe,EAA6B,MAAM,YAAY,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,wBAAwB,EAA8B,MAAM,0BAA0B,CAAA;AA0B/F,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAG3B;IAFA,IAAI,GAAG,sBAAsB,CAAA;IAC/C,YACkB,KAA2B,EAC3C,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAA;QAHE,UAAK,GAAL,KAAK,CAAsB;IAI7C,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAkB,EAAE,UAA0B,EAAE;IAC/E,MAAM,OAAO,GAAoB,EAAE,CAAA;IAEnC,KAAK,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;QACvD,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS;YAAE,SAAQ;QAC/C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC5D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACtB,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAkB,EAAE,QAA0B,EAAE,WAA2B,EAAE;IAC5G,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/data/migrate/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,12 @@ export interface PwSnapshot {
|
|
|
5
5
|
id: string;
|
|
6
6
|
prevId: string;
|
|
7
7
|
tables: Record<string, PwTableSnapshot>;
|
|
8
|
+
/** Cross-tenant read doors with a generated policy; absent in snapshots written before doors existed. */
|
|
9
|
+
doors?: Record<string, {
|
|
10
|
+
table: string;
|
|
11
|
+
role: string;
|
|
12
|
+
ops?: readonly ('select' | 'update' | 'delete')[];
|
|
13
|
+
}>;
|
|
8
14
|
}
|
|
9
15
|
export interface PwTableSnapshot {
|
|
10
16
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/snapshot.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAMzC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAK3C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,KAAK,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../src/data/migrate/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../src/data/migrate/snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/infra/cache/create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/infra/cache/create.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAc,MAAM,YAAY,CAAA;AAGhE,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAqD/D"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getContext } from '../../request/context/store.js';
|
|
2
|
+
import { loadWithDb, createEmptyEntry, isExpired, getOrLoad, preloadEntry } from './entry.js';
|
|
2
3
|
export function createCache(config) {
|
|
3
4
|
const entry = createEmptyEntry();
|
|
4
5
|
let lastLoadAt = null;
|
|
5
6
|
let lastLoadDurationMs = null;
|
|
6
7
|
async function doLoad(e) {
|
|
7
|
-
const db = resolveDb(config.database, config.name);
|
|
8
8
|
const start = Date.now();
|
|
9
|
-
const result = await config.load(db);
|
|
9
|
+
const result = await loadWithDb(config.database, config.name, getContext()?.tenant ?? null, db => config.load(db));
|
|
10
10
|
lastLoadDurationMs = Date.now() - start;
|
|
11
11
|
lastLoadAt = Date.now();
|
|
12
12
|
e.loadedAt = Date.now();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/infra/cache/create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/infra/cache/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAE3D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAwB,MAAM,YAAY,CAAA;AAEnH,MAAM,UAAU,WAAW,CAAI,MAAsB;IACnD,MAAM,KAAK,GAAG,gBAAgB,EAAK,CAAA;IACnC,IAAI,UAAU,GAAkB,IAAI,CAAA;IACpC,IAAI,kBAAkB,GAAkB,IAAI,CAAA;IAE5C,KAAK,UAAU,MAAM,CAAC,CAAqB;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACxB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;QAClH,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;QACvC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACvB,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACvB,CAAC,CAAC,IAAI,GAAG,MAAM,CAAA;QACf,CAAC,CAAC,WAAW,GAAG,IAAI,CAAA;QACpB,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO;QACL,KAAK,CAAC,GAAG;YACP,OAAO,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC/C,CAAC;QAED,UAAU;YACR,KAAK,CAAC,IAAI,GAAG,SAAS,CAAA;YACtB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAA;YACrB,KAAK,CAAC,WAAW,GAAG,IAAI,CAAA;QAC1B,CAAC;QAED,KAAK;YACH,IAAI,MAA4B,CAAA;YAChC,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;gBAC/B,MAAM,GAAG,SAAS,CAAA;YACpB,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACpC,MAAM,GAAG,OAAO,CAAA;YAClB,CAAC;iBAAM,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1C,MAAM,GAAG,OAAO,CAAA;YAClB,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,QAAQ,CAAA;YACnB,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM;gBACN,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,UAAU;gBACV,kBAAkB;aACnB,CAAA;QACH,CAAC;QAED,KAAK,CAAC,OAAO;YACX,OAAO,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAClD,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import type { DB } from '../../data/db/index.js';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Runs a cache loader with the database handle it reads through. On a
|
|
4
|
+
* platform-mode database the loader's statements run in a short transaction
|
|
5
|
+
* with the tenant setting set to `tenant`, so a `.tenant()` table returns that
|
|
6
|
+
* tenant's rows; with no tenant they run on the platform connection as is.
|
|
7
|
+
*/
|
|
8
|
+
export declare function loadWithDb<T>(database: string, cacheName: string, tenant: string | null, load: (db: DB) => Promise<T>): Promise<T>;
|
|
3
9
|
export interface CacheEntryState<T> {
|
|
4
10
|
data: T | undefined;
|
|
5
11
|
loadPromise: Promise<T> | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../../src/infra/cache/entry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../../src/infra/cache/entry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;AAIhD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,CAAC,CAAC,CAOZ;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,GAAG,SAAS,CAAA;IACnB,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IAC9B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,gBAAgB,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC,CAQxD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAI1F;AAED,wBAAsB,SAAS,CAAC,CAAC,EAC/B,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,EACzB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAChD,OAAO,CAAC,CAAC,CAAC,CAcZ;AAED,wBAAsB,YAAY,CAAC,CAAC,EAClC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,EACzB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAChD,OAAO,CAAC,IAAI,CAAC,CAQf"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { getContext } from '../../request/context/store.js';
|
|
2
|
-
|
|
2
|
+
import { withTenantSetting } from '../../auth/tenant/in-tenant.js';
|
|
3
|
+
/**
|
|
4
|
+
* Runs a cache loader with the database handle it reads through. On a
|
|
5
|
+
* platform-mode database the loader's statements run in a short transaction
|
|
6
|
+
* with the tenant setting set to `tenant`, so a `.tenant()` table returns that
|
|
7
|
+
* tenant's rows; with no tenant they run on the platform connection as is.
|
|
8
|
+
*/
|
|
9
|
+
export function loadWithDb(database, cacheName, tenant, load) {
|
|
3
10
|
const ctx = getContext();
|
|
4
|
-
if (ctx !== undefined)
|
|
5
|
-
|
|
6
|
-
return ctx.instance.pool.getOrCreate(dbConfig).drizzle;
|
|
7
|
-
}
|
|
11
|
+
if (ctx !== undefined)
|
|
12
|
+
return withTenantSetting(ctx.instance, database, tenant, load);
|
|
8
13
|
throw new Error(`[pipework] Cache "${cacheName}" requires a managed context to load data. ` +
|
|
9
14
|
`Call .get() inside a request handler or job, or use .preload() during startup with an explicit instance.`);
|
|
10
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../../src/infra/cache/entry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../../src/infra/cache/entry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAElE;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,QAAgB,EAChB,SAAiB,EACjB,MAAqB,EACrB,IAA4B;IAE5B,MAAM,GAAG,GAAG,UAAU,EAAE,CAAA;IACxB,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACrF,MAAM,IAAI,KAAK,CACb,qBAAqB,SAAS,6CAA6C;QAC3E,0GAA0G,CAC3G,CAAA;AACH,CAAC;AAUD,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;KACV,CAAA;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAI,KAAyB,EAAE,KAAyB;IAC/E,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACrC,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAA;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,KAAyB,EACzB,KAAyB,EACzB,MAAiD;IAEjD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;QACzD,KAAK,CAAC,IAAI,EAAE,CAAA;QACZ,OAAO,KAAK,CAAC,IAAI,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,MAAM,EAAE,CAAA;IAEd,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,WAAW,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACjC,OAAO,KAAK,CAAC,WAAW,CAAA;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAyB,EACzB,KAAyB,EACzB,MAAiD;IAEjD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,OAAM;IAChE,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QAC/B,MAAM,KAAK,CAAC,WAAW,CAAA;QACvB,OAAM;IACR,CAAC;IACD,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACjC,MAAM,KAAK,CAAC,WAAW,CAAA;AACzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenant.d.ts","sourceRoot":"","sources":["../../../src/infra/cache/tenant.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;AAIhD,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAClC,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,KAAK,IAAI,gBAAgB,CAAA;IACzB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACzC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"tenant.d.ts","sourceRoot":"","sources":["../../../src/infra/cache/tenant.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;AAIhD,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAClC,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,KAAK,IAAI,gBAAgB,CAAA;IACzB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACzC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAmEjF"}
|