@xemahq/biome-database-nest 7.2.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -0
- package/dist/index.d.ts +13 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +43 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/advisory-lock.d.ts +2 -0
- package/dist/lib/advisory-lock.d.ts.map +1 -1
- package/dist/lib/advisory-lock.js +8 -0
- package/dist/lib/advisory-lock.js.map +1 -1
- package/dist/lib/biome-migrations.d.ts +2 -0
- package/dist/lib/biome-migrations.d.ts.map +1 -1
- package/dist/lib/biome-migrations.js +3 -1
- package/dist/lib/biome-migrations.js.map +1 -1
- package/dist/lib/bootstrap.d.ts +2 -0
- package/dist/lib/bootstrap.d.ts.map +1 -1
- package/dist/lib/bootstrap.js +4 -3
- package/dist/lib/bootstrap.js.map +1 -1
- package/dist/lib/ledger-rows.d.ts +1 -0
- package/dist/lib/ledger-rows.d.ts.map +1 -1
- package/dist/lib/ledger-rows.js +9 -0
- package/dist/lib/ledger-rows.js.map +1 -1
- package/dist/lib/nest/biome-database.module.d.ts +2 -0
- package/dist/lib/nest/biome-database.module.d.ts.map +1 -1
- package/dist/lib/nest/biome-database.module.js +5 -0
- package/dist/lib/nest/biome-database.module.js.map +1 -1
- package/dist/lib/nest/org-erasure.module.d.ts.map +1 -1
- package/dist/lib/nest/org-erasure.module.js +4 -6
- package/dist/lib/nest/org-erasure.module.js.map +1 -1
- package/dist/lib/nest/prisma-service-factory.d.ts.map +1 -1
- package/dist/lib/nest/prisma-service-factory.js +23 -13
- package/dist/lib/nest/prisma-service-factory.js.map +1 -1
- package/dist/lib/org-erasure-coverage/assert-org-erasure-armed.d.ts +4 -0
- package/dist/lib/org-erasure-coverage/assert-org-erasure-armed.d.ts.map +1 -0
- package/dist/lib/org-erasure-coverage/assert-org-erasure-armed.js +13 -0
- package/dist/lib/org-erasure-coverage/assert-org-erasure-armed.js.map +1 -0
- package/dist/lib/org-quiesce/org-erasure-isolation-error.d.ts +6 -0
- package/dist/lib/org-quiesce/org-erasure-isolation-error.d.ts.map +1 -0
- package/dist/lib/org-quiesce/org-erasure-isolation-error.js +16 -0
- package/dist/lib/org-quiesce/org-erasure-isolation-error.js.map +1 -0
- package/dist/lib/org-quiesce/org-erasure-transaction.d.ts +2 -0
- package/dist/lib/org-quiesce/org-erasure-transaction.d.ts.map +1 -0
- package/dist/lib/org-quiesce/org-erasure-transaction.js +16 -0
- package/dist/lib/org-quiesce/org-erasure-transaction.js.map +1 -0
- package/dist/lib/org-quiesce/org-quiesce-marks.d.ts +9 -0
- package/dist/lib/org-quiesce/org-quiesce-marks.d.ts.map +1 -0
- package/dist/lib/org-quiesce/org-quiesce-marks.js +42 -0
- package/dist/lib/org-quiesce/org-quiesce-marks.js.map +1 -0
- package/dist/lib/org-quiesce/org-quiesce-marks.migrations.d.ts +4 -0
- package/dist/lib/org-quiesce/org-quiesce-marks.migrations.d.ts.map +1 -0
- package/dist/lib/org-quiesce/org-quiesce-marks.migrations.js +74 -0
- package/dist/lib/org-quiesce/org-quiesce-marks.migrations.js.map +1 -0
- package/dist/lib/org-quiesce/org-quiesce-marks.module.d.ts +3 -0
- package/dist/lib/org-quiesce/org-quiesce-marks.module.d.ts.map +1 -0
- package/dist/lib/org-quiesce/org-quiesce-marks.module.js +21 -0
- package/dist/lib/org-quiesce/org-quiesce-marks.module.js.map +1 -0
- package/dist/lib/org-quiesce/org-quiesce-refusal-mapping.d.ts +13 -0
- package/dist/lib/org-quiesce/org-quiesce-refusal-mapping.d.ts.map +1 -0
- package/dist/lib/org-quiesce/org-quiesce-refusal-mapping.js +63 -0
- package/dist/lib/org-quiesce/org-quiesce-refusal-mapping.js.map +1 -0
- package/dist/lib/org-quiesce/org-quiesce-refusal.d.ts +33 -0
- package/dist/lib/org-quiesce/org-quiesce-refusal.d.ts.map +1 -0
- package/dist/lib/org-quiesce/org-quiesce-refusal.js +50 -0
- package/dist/lib/org-quiesce/org-quiesce-refusal.js.map +1 -0
- package/dist/lib/org-quiesce/org-write-fence-apply.d.ts +10 -0
- package/dist/lib/org-quiesce/org-write-fence-apply.d.ts.map +1 -0
- package/dist/lib/org-quiesce/org-write-fence-apply.js +55 -0
- package/dist/lib/org-quiesce/org-write-fence-apply.js.map +1 -0
- package/dist/lib/org-quiesce/org-write-fence-coverage.d.ts +18 -0
- package/dist/lib/org-quiesce/org-write-fence-coverage.d.ts.map +1 -0
- package/dist/lib/org-quiesce/org-write-fence-coverage.js +51 -0
- package/dist/lib/org-quiesce/org-write-fence-coverage.js.map +1 -0
- package/dist/lib/org-quiesce/org-write-fence-token.sql.d.ts +2 -0
- package/dist/lib/org-quiesce/org-write-fence-token.sql.d.ts.map +1 -0
- package/dist/lib/org-quiesce/org-write-fence-token.sql.js +80 -0
- package/dist/lib/org-quiesce/org-write-fence-token.sql.js.map +1 -0
- package/dist/lib/org-quiesce/org-write-fence-triggers.d.ts +48 -0
- package/dist/lib/org-quiesce/org-write-fence-triggers.d.ts.map +1 -0
- package/dist/lib/org-quiesce/org-write-fence-triggers.js +171 -0
- package/dist/lib/org-quiesce/org-write-fence-triggers.js.map +1 -0
- package/dist/lib/org-quiesce/org-write-fence.sql.d.ts +2 -0
- package/dist/lib/org-quiesce/org-write-fence.sql.d.ts.map +1 -0
- package/dist/lib/org-quiesce/org-write-fence.sql.js +132 -0
- package/dist/lib/org-quiesce/org-write-fence.sql.js.map +1 -0
- package/dist/lib/sdk-owned-migrations.d.ts.map +1 -1
- package/dist/lib/sdk-owned-migrations.js +5 -1
- package/dist/lib/sdk-owned-migrations.js.map +1 -1
- package/dist/lib/service-migration-scan.d.ts +2 -1
- package/dist/lib/service-migration-scan.d.ts.map +1 -1
- package/dist/lib/service-migration-scan.js +7 -2
- package/dist/lib/service-migration-scan.js.map +1 -1
- package/dist/lib/session-timezone.d.ts +6 -1
- package/dist/lib/session-timezone.d.ts.map +1 -1
- package/dist/lib/session-timezone.js +12 -0
- package/dist/lib/session-timezone.js.map +1 -1
- package/dist/lib/tenant-isolation/authored-resource-org-erasure.d.ts.map +1 -1
- package/dist/lib/tenant-isolation/authored-resource-org-erasure.js +22 -19
- package/dist/lib/tenant-isolation/authored-resource-org-erasure.js.map +1 -1
- package/dist/lib/tenant-isolation/org-erasure.d.ts +1 -0
- package/dist/lib/tenant-isolation/org-erasure.d.ts.map +1 -1
- package/dist/lib/tenant-isolation/org-erasure.js +9 -7
- package/dist/lib/tenant-isolation/org-erasure.js.map +1 -1
- package/package.json +12 -11
- package/xema-peer-facts.json +7 -7
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { IdentityBootstrapService } from '@xemahq/identity-client';
|
|
2
2
|
import { BiomeDatabaseBootMode } from '../boot-mode';
|
|
3
3
|
import { BiomeDatabaseMigrationMode } from '../migration-mode';
|
|
4
|
+
import { type OrgWriteFenceTable } from '../org-quiesce/org-write-fence-triggers';
|
|
4
5
|
import type { BiomeDatabaseDeclaration } from '../bootstrap';
|
|
5
6
|
import type { CredentialGrantSource } from '../credential-client';
|
|
6
7
|
import type { DynamicModule, OnApplicationShutdown } from '@nestjs/common';
|
|
@@ -17,6 +18,7 @@ export interface ApplicationManagedBiomeDatabaseModuleOptions extends BiomeDatab
|
|
|
17
18
|
readonly migrationMode: BiomeDatabaseMigrationMode.ApplicationManaged;
|
|
18
19
|
readonly databases: readonly BiomeDatabaseDeclaration[];
|
|
19
20
|
readonly requiredExtensions?: readonly string[];
|
|
21
|
+
readonly orgWriteFenceTables?: readonly OrgWriteFenceTable[];
|
|
20
22
|
}
|
|
21
23
|
export type BiomeDatabaseModuleOptions = ApplicationManagedBiomeDatabaseModuleOptions;
|
|
22
24
|
export declare class BiomeDatabaseModule implements OnApplicationShutdown {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"biome-database.module.d.ts","sourceRoot":"","sources":["../../../src/lib/nest/biome-database.module.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAInE,OAAO,EAAE,qBAAqB,EAAgC,MAAM,cAAc,CAAC;AAGnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"biome-database.module.d.ts","sourceRoot":"","sources":["../../../src/lib/nest/biome-database.module.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAInE,OAAO,EAAE,qBAAqB,EAAgC,MAAM,cAAc,CAAC;AAGnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,yCAAyC,CAAC;AAcjD,OAAO,KAAK,EACV,wBAAwB,EACzB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAIlE,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE3E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAWnE,eAAO,MAAM,oBAAoB,eAEhC,CAAC;AAUF,UAAU,gCAAgC;IAExC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAgBzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC,UAAU,CAAC;IAQvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IAS1C,QAAQ,CAAC,eAAe,EAAE,CACxB,QAAQ,EAAE,wBAAwB,KAC/B,qBAAqB,CAAC;IAU3B,QAAQ,CAAC,kBAAkB,EAAE,CAC3B,QAAQ,EAAE,wBAAwB,KAC/B,kBAAkB,CAAC;CACzB;AAED,MAAM,WAAW,4CACf,SAAQ,gCAAgC;IACxC,QAAQ,CAAC,aAAa,EAAE,0BAA0B,CAAC,kBAAkB,CAAC;IAKtE,QAAQ,CAAC,SAAS,EAAE,SAAS,wBAAwB,EAAE,CAAC;IASxD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAYhD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAC9D;AAID,MAAM,MAAM,0BAA0B,GACpC,4CAA4C,CAAC;AAuF/C,qBACa,mBAAoB,YAAW,qBAAqB;IAM/D,qBAAqB,IAAI,IAAI;IAI7B,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,0BAA0B,GAAG,aAAa;CAqIhE"}
|
|
@@ -17,6 +17,7 @@ const boot_mode_1 = require("../boot-mode");
|
|
|
17
17
|
const bootstrap_1 = require("../bootstrap");
|
|
18
18
|
const credential_lease_1 = require("../credential-lease");
|
|
19
19
|
const migration_mode_1 = require("../migration-mode");
|
|
20
|
+
const org_write_fence_triggers_1 = require("../org-quiesce/org-write-fence-triggers");
|
|
20
21
|
const pool_sizing_1 = require("../pool-sizing");
|
|
21
22
|
const scoped_env_1 = require("../scoped-env");
|
|
22
23
|
const sdk_owned_contribution_1 = require("./sdk-owned-contribution");
|
|
@@ -49,6 +50,7 @@ let BiomeDatabaseModule = BiomeDatabaseModule_1 = class BiomeDatabaseModule {
|
|
|
49
50
|
static forRoot(opts) {
|
|
50
51
|
assertBiomeDatabaseModuleOptions(opts);
|
|
51
52
|
const databases = opts.databases;
|
|
53
|
+
(0, org_write_fence_triggers_1.orgWriteFenceTriggerSql)(opts.orgWriteFenceTables ?? []);
|
|
52
54
|
return {
|
|
53
55
|
module: BiomeDatabaseModule_1,
|
|
54
56
|
global: true,
|
|
@@ -89,6 +91,9 @@ let BiomeDatabaseModule = BiomeDatabaseModule_1 = class BiomeDatabaseModule {
|
|
|
89
91
|
databases,
|
|
90
92
|
...(opts.env !== undefined ? { env: opts.env } : {}),
|
|
91
93
|
sdkOwnedMigrations,
|
|
94
|
+
...(opts.orgWriteFenceTables !== undefined
|
|
95
|
+
? { orgWriteFenceTables: opts.orgWriteFenceTables }
|
|
96
|
+
: {}),
|
|
92
97
|
...(opts.requiredExtensions !== undefined
|
|
93
98
|
? { requiredExtensions: opts.requiredExtensions }
|
|
94
99
|
: {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"biome-database.module.js","sourceRoot":"","sources":["../../../src/lib/nest/biome-database.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAwC;AACxC,uCAAiE;AACjE,6DAAmE;AACnE,+DAAgE;AAChE,yEAAmE;AAEnE,4CAAmF;AACnF,4CAAuD;AACvD,0DAA8D;AAC9D,sDAA+D;AAC/D,gDAIwB;AACxB,8CAA8C;AAC9C,qEAKkC;AAsBrB,QAAA,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAC5C,mCAAmC,CACpC,CAAC;AAQF,MAAM,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"biome-database.module.js","sourceRoot":"","sources":["../../../src/lib/nest/biome-database.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"org-erasure.module.d.ts","sourceRoot":"","sources":["../../../src/lib/nest/org-erasure.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"org-erasure.module.d.ts","sourceRoot":"","sources":["../../../src/lib/nest/org-erasure.module.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAU,KAAK,aAAa,EAAE,KAAK,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAYvE,MAAM,WAAW,uBAAuB;IAKtC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC;CAC9D;AAED,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,aAAa;CAmBhE"}
|
|
@@ -3,16 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.OrgErasureModule = void 0;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
5
|
const org_erasure_nest_1 = require("@xemahq/org-erasure-nest");
|
|
6
|
+
const assert_org_erasure_armed_1 = require("../org-erasure-coverage/assert-org-erasure-armed");
|
|
7
|
+
const org_quiesce_marks_module_1 = require("../org-quiesce/org-quiesce-marks.module");
|
|
6
8
|
class OrgErasureModule {
|
|
7
9
|
static forRoot(options) {
|
|
8
10
|
return org_erasure_nest_1.OrgErasureEndpointModule.forRunner({
|
|
11
|
+
imports: [org_quiesce_marks_module_1.OrgQuiesceMarksModule],
|
|
9
12
|
useFactory: (prisma) => {
|
|
10
|
-
|
|
11
|
-
if (sweep === undefined) {
|
|
12
|
-
throw new Error('[org-erasure] OrgErasureModule is mounted as an org-erasure ' +
|
|
13
|
-
'participant but the Prisma service declares no orgErasure.sweep.');
|
|
14
|
-
}
|
|
15
|
-
new common_1.Logger(OrgErasureModule.name).log(`org-erasure participant armed on "${sweep.orgField}" over ${swept.length} model(s): ${swept.join(', ')}`);
|
|
13
|
+
(0, assert_org_erasure_armed_1.assertOrgErasureArmed)(prisma.orgErasureCoverage, new common_1.Logger(OrgErasureModule.name));
|
|
16
14
|
return {
|
|
17
15
|
erase: (orgId) => prisma.eraseOrg(orgId),
|
|
18
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"org-erasure.module.js","sourceRoot":"","sources":["../../../src/lib/nest/org-erasure.module.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"org-erasure.module.js","sourceRoot":"","sources":["../../../src/lib/nest/org-erasure.module.ts"],"names":[],"mappings":";;;AA6BA,2CAAuE;AACvE,+DAIkC;AAElC,+FAAyF;AACzF,sFAAgF;AAYhF,MAAa,gBAAgB;IAC3B,MAAM,CAAC,OAAO,CAAC,OAAgC;QAC7C,OAAO,2CAAwB,CAAC,SAAS,CAAC;YAIxC,OAAO,EAAE,CAAC,gDAAqB,CAAC;YAChC,UAAU,EAAE,CAAC,MAAqB,EAAoB,EAAE;gBACtD,IAAA,gDAAqB,EACnB,MAAM,CAAC,kBAAkB,EACzB,IAAI,eAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAClC,CAAC;gBACF,OAAO;oBACL,KAAK,EAAE,CAAC,KAAa,EAA6B,EAAE,CAClD,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;iBACzB,CAAC;YACJ,CAAC;YACD,MAAM,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC;SACrC,CAAC,CAAC;IACL,CAAC;CACF;AApBD,4CAoBC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma-service-factory.d.ts","sourceRoot":"","sources":["../../../src/lib/nest/prisma-service-factory.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,iDAAiD,CAAC;
|
|
1
|
+
{"version":3,"file":"prisma-service-factory.d.ts","sourceRoot":"","sources":["../../../src/lib/nest/prisma-service-factory.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,iDAAiD,CAAC;AAEzD,OAAO,EACL,mBAAmB,EAEpB,MAAM,2CAA2C,CAAC;AAQnD,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,qCAAqC,CAAC;AAE7C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sDAAsD,CAAC;AACtG,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAY1E,MAAM,MAAM,qBAAqB,GAAG,KAIlC,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,iBAAiB,CAAC;AAGvB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAGD,MAAM,WAAW,6BAA6B;IAK5C,QAAQ,CAAC,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAEpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAK3B,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IA0B1C,QAAQ,CAAC,cAAc,CAAC,EAAE,yBAAyB,CAAC;CACrD;AAGD,MAAM,WAAW,+BAA+B;IAM9C,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAE/C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,6BAA6B,CAAC;IAYzD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAMD,MAAM,WAAW,eAAe,CAAC,OAAO;IAOtC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAM/B,QAAQ,IAAI,OAAO,CAAC;CACrB;AAGD,MAAM,MAAM,0BAA0B,CAAC,OAAO,IAAI,OAAO,GACvD,eAAe,CAAC,OAAO,CAAC,GACxB,aAAa,GACb,YAAY,GACZ,eAAe,CAAC;AAGlB,MAAM,MAAM,uBAAuB,CAAC,OAAO,IAAI,IAAI,CACjD,0BAA0B,CAAC,OAAO,CAAC,CACpC,GAAG;IAEF,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;CAC3C,CAAC;AAqEF,wBAAgB,wBAAwB,CACtC,WAAW,SAAS,qBAAqB,EAEzC,gBAAgB,EAAE,WAAW,EAC7B,OAAO,EAAE,+BAA+B,GACvC,uBAAuB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAoOpD"}
|
|
@@ -14,6 +14,7 @@ const common_1 = require("@nestjs/common");
|
|
|
14
14
|
const platform_common_1 = require("@xemahq/platform-common");
|
|
15
15
|
const adapter_1 = require("../adapter");
|
|
16
16
|
const resolve_org_erasure_api_1 = require("../org-erasure-coverage/resolve-org-erasure-api");
|
|
17
|
+
const org_quiesce_refusal_mapping_1 = require("../org-quiesce/org-quiesce-refusal-mapping");
|
|
17
18
|
const tenant_isolation_mode_1 = require("../tenant-isolation/tenant-isolation-mode");
|
|
18
19
|
const tenant_isolation_extension_1 = require("../tenant-isolation/tenant-isolation.extension");
|
|
19
20
|
const unscoped_models_1 = require("../tenant-isolation/unscoped-models");
|
|
@@ -42,14 +43,16 @@ function createBiomePrismaService(PrismaClientCtor, options) {
|
|
|
42
43
|
const mode = (0, tenant_isolation_mode_1.resolveTenantIsolationMode)(tenantOptions.mode);
|
|
43
44
|
const raw = this;
|
|
44
45
|
const tenantLogger = new common_1.Logger(`${loggerContext}:tenant-isolation`);
|
|
45
|
-
const
|
|
46
|
-
const extendsFn =
|
|
46
|
+
const extendWith = (client, extension) => {
|
|
47
|
+
const extendsFn = client.$extends;
|
|
47
48
|
if (typeof extendsFn !== 'function') {
|
|
48
49
|
throw new Error('[tenant-isolation] the Prisma client has no $extends — tenant ' +
|
|
49
|
-
'isolation
|
|
50
|
+
'isolation and the org write-fence refusal mapping require a generated @prisma/client >= 5 (this SDK peers on ^7).');
|
|
50
51
|
}
|
|
51
|
-
return extendsFn.
|
|
52
|
+
return extendsFn.call(client, extension);
|
|
52
53
|
};
|
|
54
|
+
const base = extendWith(raw, (0, org_quiesce_refusal_mapping_1.createOrgQuiesceRefusalExtension)());
|
|
55
|
+
const requireExtends = () => (extension) => extendWith(base, extension);
|
|
53
56
|
let scopedModelsCache;
|
|
54
57
|
const getScopedModels = () => {
|
|
55
58
|
scopedModelsCache ??= (0, tenant_isolation_extension_1.collectOrgScopedModels)(raw, orgField, exemptModels);
|
|
@@ -86,23 +89,29 @@ function createBiomePrismaService(PrismaClientCtor, options) {
|
|
|
86
89
|
seenSystemCallSites.add(callSite);
|
|
87
90
|
tenantLogger.debug(`[tenant-isolation] asSystem() unscoped access from ${callSite}`);
|
|
88
91
|
}
|
|
89
|
-
return
|
|
92
|
+
return base;
|
|
90
93
|
};
|
|
94
|
+
const shadowOf = (client) => Object.create(client);
|
|
91
95
|
const explicitApi = new Map([
|
|
92
96
|
['forOrg', forOrg],
|
|
93
97
|
['asSystem', asSystem],
|
|
94
98
|
['orgErasureCoverage', orgErasureApi.orgErasureCoverage],
|
|
95
99
|
['eraseOrg', orgErasureApi.eraseOrg],
|
|
96
100
|
]);
|
|
101
|
+
const rawOn = raw.$on;
|
|
102
|
+
if (typeof rawOn === 'function') {
|
|
103
|
+
explicitApi.set('$on', rawOn.bind(raw));
|
|
104
|
+
}
|
|
97
105
|
if (mode === tenant_isolation_mode_1.TenantIsolationMode.Off) {
|
|
98
|
-
return new Proxy(
|
|
99
|
-
get(
|
|
106
|
+
return new Proxy(shadowOf(base), {
|
|
107
|
+
get(_target, prop, _receiver) {
|
|
100
108
|
if (explicitApi.has(prop)) {
|
|
101
109
|
return explicitApi.get(prop);
|
|
102
110
|
}
|
|
103
|
-
const value = Reflect.get(
|
|
104
|
-
return typeof value === 'function' ? value.bind(
|
|
111
|
+
const value = Reflect.get(base, prop, base);
|
|
112
|
+
return typeof value === 'function' ? value.bind(base) : value;
|
|
105
113
|
},
|
|
114
|
+
has: (_target, prop) => explicitApi.has(prop) || prop in base,
|
|
106
115
|
});
|
|
107
116
|
}
|
|
108
117
|
const ambientClient = requireExtends()((0, tenant_isolation_extension_1.createTenantIsolationExtension)({
|
|
@@ -116,8 +125,8 @@ function createBiomePrismaService(PrismaClientCtor, options) {
|
|
|
116
125
|
for (const modelName of getScopedModels()) {
|
|
117
126
|
routedProps.add(lowerFirst(modelName));
|
|
118
127
|
}
|
|
119
|
-
return new Proxy(
|
|
120
|
-
get(
|
|
128
|
+
return new Proxy(shadowOf(base), {
|
|
129
|
+
get(_target, prop, _receiver) {
|
|
121
130
|
if (explicitApi.has(prop)) {
|
|
122
131
|
return explicitApi.get(prop);
|
|
123
132
|
}
|
|
@@ -127,9 +136,10 @@ function createBiomePrismaService(PrismaClientCtor, options) {
|
|
|
127
136
|
? value.bind(ambientClient)
|
|
128
137
|
: value;
|
|
129
138
|
}
|
|
130
|
-
const value = Reflect.get(
|
|
131
|
-
return typeof value === 'function' ? value.bind(
|
|
139
|
+
const value = Reflect.get(base, prop, base);
|
|
140
|
+
return typeof value === 'function' ? value.bind(base) : value;
|
|
132
141
|
},
|
|
142
|
+
has: (_target, prop) => explicitApi.has(prop) || prop in base,
|
|
133
143
|
});
|
|
134
144
|
}
|
|
135
145
|
async onModuleInit() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma-service-factory.js","sourceRoot":"","sources":["../../../src/lib/nest/prisma-service-factory.ts"],"names":[],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"prisma-service-factory.js","sourceRoot":"","sources":["../../../src/lib/nest/prisma-service-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { OrgErasureCoverage } from './org-erasure-coverage';
|
|
2
|
+
import type { OrgErasureCoverageLogger } from './resolve-org-erasure-api';
|
|
3
|
+
export declare function assertOrgErasureArmed(coverage: OrgErasureCoverage, logger: OrgErasureCoverageLogger): NonNullable<OrgErasureCoverage['sweep']>;
|
|
4
|
+
//# sourceMappingURL=assert-org-erasure-armed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert-org-erasure-armed.d.ts","sourceRoot":"","sources":["../../../src/lib/org-erasure-coverage/assert-org-erasure-armed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAW1E,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,wBAAwB,GAC/B,WAAW,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAY1C"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assertOrgErasureArmed = assertOrgErasureArmed;
|
|
4
|
+
function assertOrgErasureArmed(coverage, logger) {
|
|
5
|
+
const { sweep, swept } = coverage;
|
|
6
|
+
if (sweep === undefined) {
|
|
7
|
+
throw new Error('[org-erasure] OrgErasureModule is mounted as an org-erasure ' +
|
|
8
|
+
'participant but the Prisma service declares no orgErasure.sweep.');
|
|
9
|
+
}
|
|
10
|
+
logger.log(`org-erasure participant armed on "${sweep.orgField}" over ${swept.length} model(s): ${swept.join(', ')}`);
|
|
11
|
+
return sweep;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=assert-org-erasure-armed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert-org-erasure-armed.js","sourceRoot":"","sources":["../../../src/lib/org-erasure-coverage/assert-org-erasure-armed.ts"],"names":[],"mappings":";;AAYA,sDAeC;AAfD,SAAgB,qBAAqB,CACnC,QAA4B,EAC5B,MAAgC;IAEhC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;IAClC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,8DAA8D;YAC5D,kEAAkE,CACrE,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,GAAG,CACR,qCAAqC,KAAK,CAAC,QAAQ,UAAU,KAAK,CAAC,MAAM,cAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1G,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-erasure-isolation-error.d.ts","sourceRoot":"","sources":["../../../src/lib/org-quiesce/org-erasure-isolation-error.ts"],"names":[],"mappings":"AACA,qBAAa,wBAAyB,SAAQ,KAAK;aAI/B,cAAc,EAAE,MAAM;IAHxC,SAAgB,IAAI,2BAA2B;gBAG7B,cAAc,EAAE,MAAM;CASzC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OrgErasureIsolationError = void 0;
|
|
4
|
+
class OrgErasureIsolationError extends Error {
|
|
5
|
+
isolationLevel;
|
|
6
|
+
code = 'ORG_ERASURE_ISOLATION';
|
|
7
|
+
constructor(isolationLevel) {
|
|
8
|
+
super(`[org-erasure] ORG_ERASURE_ISOLATION: an org erasure must run in a READ COMMITTED transaction, but this one is ${isolationLevel}. ` +
|
|
9
|
+
'Under a fixed snapshot the eraser would not see a row a Read Committed writer commits while the eraser waits for the org lock, and that row would survive the erasure. ' +
|
|
10
|
+
'Open the transaction with isolationLevel ReadCommitted (inOrgErasureTransaction does).');
|
|
11
|
+
this.isolationLevel = isolationLevel;
|
|
12
|
+
this.name = 'OrgErasureIsolationError';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.OrgErasureIsolationError = OrgErasureIsolationError;
|
|
16
|
+
//# sourceMappingURL=org-erasure-isolation-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-erasure-isolation-error.js","sourceRoot":"","sources":["../../../src/lib/org-quiesce/org-erasure-isolation-error.ts"],"names":[],"mappings":";;;AACA,MAAa,wBAAyB,SAAQ,KAAK;IAI/B;IAHF,IAAI,GAAG,uBAAuB,CAAC;IAE/C,YACkB,cAAsB;QAEtC,KAAK,CACH,iHAAiH,cAAc,IAAI;YACjI,yKAAyK;YACzK,wFAAwF,CAC3F,CAAC;QANc,mBAAc,GAAd,cAAc,CAAQ;QAOtC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAbD,4DAaC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-erasure-transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/org-quiesce/org-erasure-transaction.ts"],"names":[],"mappings":"AAqBA,wBAAsB,uBAAuB,CAAC,CAAC,EAC7C,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAChD,OAAO,CAAC,CAAC,CAAC,CAmBZ"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.inOrgErasureTransaction = inOrgErasureTransaction;
|
|
4
|
+
const org_quiesce_marks_1 = require("./org-quiesce-marks");
|
|
5
|
+
const ORG_ERASURE_ISOLATION_LEVEL = 'ReadCommitted';
|
|
6
|
+
async function inOrgErasureTransaction(client, orgId, work) {
|
|
7
|
+
if (typeof client?.$transaction !==
|
|
8
|
+
'function') {
|
|
9
|
+
throw new Error('[org-erasure] the Prisma client has no $transaction; an org erasure runs inside one so it can hold the org quiesce lock.');
|
|
10
|
+
}
|
|
11
|
+
return await client.$transaction(async (tx) => {
|
|
12
|
+
await (0, org_quiesce_marks_1.beginOrgErasureWithinTx)(tx, orgId);
|
|
13
|
+
return await work(tx);
|
|
14
|
+
}, { isolationLevel: ORG_ERASURE_ISOLATION_LEVEL });
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=org-erasure-transaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-erasure-transaction.js","sourceRoot":"","sources":["../../../src/lib/org-quiesce/org-erasure-transaction.ts"],"names":[],"mappings":";;AAqBA,0DAuBC;AA5CD,2DAA8D;AAK9D,MAAM,2BAA2B,GAAG,eAAe,CAAC;AAgB7C,KAAK,UAAU,uBAAuB,CAC3C,MAAe,EACf,KAAa,EACb,IAAiD;IAEjD,IACE,OAAQ,MAA8C,EAAE,YAAY;QACpE,UAAU,EACV,CAAC;QACD,MAAM,IAAI,KAAK,CACb,0HAA0H,CAC3H,CAAC;IACJ,CAAC;IAID,OAAO,MAAO,MAA8B,CAAC,YAAY,CACvD,KAAK,EAAE,EAAE,EAAE,EAAE;QACX,MAAM,IAAA,2CAAuB,EAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC,EACD,EAAE,cAAc,EAAE,2BAA2B,EAAE,CAChD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type Sql } from '@prisma/client/runtime/client';
|
|
2
|
+
import type { AdvisoryLockClient } from '../advisory-lock';
|
|
3
|
+
export declare function markOrgQuiescingWithinTx(tx: AdvisoryLockClient, orgId: string): Promise<void>;
|
|
4
|
+
export declare function isOrgQuiescingWithinTx(tx: AdvisoryLockClient, orgId: string): Promise<boolean>;
|
|
5
|
+
export declare function beginOrgErasureWithinTx(tx: AdvisoryLockClient, orgId: string): Promise<void>;
|
|
6
|
+
export declare function assertOrgNotQuiescingWithinTx(tx: AdvisoryLockClient, orgId: string): Promise<void>;
|
|
7
|
+
export declare function isOrgQuiescing(db: AdvisoryLockClient, orgId: string): Promise<boolean>;
|
|
8
|
+
export declare function orgNotQuiescingSql(orgIdColumn: Sql): Sql;
|
|
9
|
+
//# sourceMappingURL=org-quiesce-marks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-quiesce-marks.d.ts","sourceRoot":"","sources":["../../../src/lib/org-quiesce/org-quiesce-marks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,GAAG,EAAE,MAAM,+BAA+B,CAAC;AAKjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAa3D,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAEf;AAgBD,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC,CAKlB;AAiBD,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAcf;AAGD,wBAAsB,6BAA6B,CACjD,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAIf;AAOD,wBAAsB,cAAc,CAClC,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC,CAElB;AAwBD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,CAExD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.markOrgQuiescingWithinTx = markOrgQuiescingWithinTx;
|
|
4
|
+
exports.isOrgQuiescingWithinTx = isOrgQuiescingWithinTx;
|
|
5
|
+
exports.beginOrgErasureWithinTx = beginOrgErasureWithinTx;
|
|
6
|
+
exports.assertOrgNotQuiescingWithinTx = assertOrgNotQuiescingWithinTx;
|
|
7
|
+
exports.isOrgQuiescing = isOrgQuiescing;
|
|
8
|
+
exports.orgNotQuiescingSql = orgNotQuiescingSql;
|
|
9
|
+
const client_1 = require("@prisma/client/runtime/client");
|
|
10
|
+
const org_erasure_isolation_error_1 = require("./org-erasure-isolation-error");
|
|
11
|
+
const org_quiesce_refusal_1 = require("./org-quiesce-refusal");
|
|
12
|
+
async function markOrgQuiescingWithinTx(tx, orgId) {
|
|
13
|
+
await tx.$executeRaw `SELECT xema_org_quiesce_mark(${orgId})`;
|
|
14
|
+
}
|
|
15
|
+
async function isOrgQuiescingWithinTx(tx, orgId) {
|
|
16
|
+
const rows = await tx.$queryRaw `SELECT xema_org_is_quiescing(${orgId}) AS quiescing`;
|
|
17
|
+
return rows[0]?.quiescing === true;
|
|
18
|
+
}
|
|
19
|
+
async function beginOrgErasureWithinTx(tx, orgId) {
|
|
20
|
+
const rows = await tx.$queryRaw `SELECT current_setting('transaction_isolation') AS level`;
|
|
21
|
+
const level = rows[0]?.level;
|
|
22
|
+
if (level !== 'read committed') {
|
|
23
|
+
throw new org_erasure_isolation_error_1.OrgErasureIsolationError(level ?? 'unknown');
|
|
24
|
+
}
|
|
25
|
+
await tx.$executeRaw `SELECT xema_org_begin_erasure(${orgId})`;
|
|
26
|
+
}
|
|
27
|
+
async function assertOrgNotQuiescingWithinTx(tx, orgId) {
|
|
28
|
+
if (await isOrgQuiescingWithinTx(tx, orgId)) {
|
|
29
|
+
throw new org_quiesce_refusal_1.OrgQuiescingRefusedError(orgId);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async function isOrgQuiescing(db, orgId) {
|
|
33
|
+
return readMark(db, orgId);
|
|
34
|
+
}
|
|
35
|
+
function orgNotQuiescingSql(orgIdColumn) {
|
|
36
|
+
return (0, client_1.sqltag) `NOT EXISTS (SELECT 1 FROM "org_quiesce_marks" WHERE "org_quiesce_marks"."org_id" = ${orgIdColumn})`;
|
|
37
|
+
}
|
|
38
|
+
async function readMark(db, orgId) {
|
|
39
|
+
const rows = await db.$queryRaw `SELECT "org_id" FROM "org_quiesce_marks" WHERE "org_id" = ${orgId}`;
|
|
40
|
+
return rows.length > 0;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=org-quiesce-marks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-quiesce-marks.js","sourceRoot":"","sources":["../../../src/lib/org-quiesce/org-quiesce-marks.ts"],"names":[],"mappings":";;AAkBA,4DAKC;AAgBD,wDAQC;AAiBD,0DAiBC;AAGD,sEAOC;AAOD,wCAKC;AAwBD,gDAEC;AAjID,0DAAiE;AAEjE,+EAAyE;AACzE,+DAAiE;AAe1D,KAAK,UAAU,wBAAwB,CAC5C,EAAsB,EACtB,KAAa;IAEb,MAAM,EAAE,CAAC,WAAW,CAAA,gCAAgC,KAAK,GAAG,CAAC;AAC/D,CAAC;AAgBM,KAAK,UAAU,sBAAsB,CAC1C,EAAsB,EACtB,KAAa;IAEb,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,SAAS,CAE9B,gCAAgC,KAAK,gBAAgB,CAAC;IACvD,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;AACrC,CAAC;AAiBM,KAAK,UAAU,uBAAuB,CAC3C,EAAsB,EACtB,KAAa;IAOb,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,SAAS,CAE9B,0DAA0D,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IAC7B,IAAI,KAAK,KAAK,gBAAgB,EAAE,CAAC;QAC/B,MAAM,IAAI,sDAAwB,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,EAAE,CAAC,WAAW,CAAA,iCAAiC,KAAK,GAAG,CAAC;AAChE,CAAC;AAGM,KAAK,UAAU,6BAA6B,CACjD,EAAsB,EACtB,KAAa;IAEb,IAAI,MAAM,sBAAsB,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,8CAAwB,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAOM,KAAK,UAAU,cAAc,CAClC,EAAsB,EACtB,KAAa;IAEb,OAAO,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC;AAwBD,SAAgB,kBAAkB,CAAC,WAAgB;IACjD,OAAO,IAAA,eAAM,EAAA,sFAAsF,WAAW,GAAG,CAAC;AACpH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,EAAsB,EAAE,KAAa;IAC3D,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,SAAS,CAE9B,6DAA6D,KAAK,EAAE,CAAC;IACtE,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-quiesce-marks.migrations.d.ts","sourceRoot":"","sources":["../../../src/lib/org-quiesce/org-quiesce-marks.migrations.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,oBAAoB,EAErB,MAAM,4BAA4B,CAAC;AAkEpC,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C,eAAO,MAAM,yBAAyB,EAAE,oBA4CvC,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.orgQuiesceMarksMigrations = exports.ORG_QUIESCE_OWNER = void 0;
|
|
4
|
+
const org_write_fence_token_sql_1 = require("./org-write-fence-token.sql");
|
|
5
|
+
const org_write_fence_sql_1 = require("./org-write-fence.sql");
|
|
6
|
+
const MARKS_SQL = `
|
|
7
|
+
CREATE TABLE "org_quiesce_marks" (
|
|
8
|
+
"org_id" TEXT NOT NULL,
|
|
9
|
+
"marked_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
10
|
+
CONSTRAINT "org_quiesce_marks_pkey" PRIMARY KEY ("org_id")
|
|
11
|
+
);
|
|
12
|
+
`;
|
|
13
|
+
const MARKS_SHAPE = {
|
|
14
|
+
name: 'org_quiesce_marks',
|
|
15
|
+
columns: [
|
|
16
|
+
{ name: 'org_id', type: 'text', notNull: true, default: null },
|
|
17
|
+
{
|
|
18
|
+
name: 'marked_at',
|
|
19
|
+
type: 'timestamp(3) without time zone',
|
|
20
|
+
notNull: true,
|
|
21
|
+
default: 'CURRENT_TIMESTAMP',
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
primaryKey: ['org_id'],
|
|
25
|
+
checks: [],
|
|
26
|
+
indexes: [],
|
|
27
|
+
};
|
|
28
|
+
const TOKEN_SHAPE = {
|
|
29
|
+
name: 'org_write_fence_rows',
|
|
30
|
+
columns: [
|
|
31
|
+
{ name: 'org_id', type: 'text', notNull: true, default: null },
|
|
32
|
+
{ name: 'version', type: 'bigint', notNull: true, default: '0' },
|
|
33
|
+
],
|
|
34
|
+
primaryKey: ['org_id'],
|
|
35
|
+
checks: [],
|
|
36
|
+
indexes: [],
|
|
37
|
+
};
|
|
38
|
+
const MIGRATION_VERSION = '0001-org-quiesce-marks';
|
|
39
|
+
const priorCreator = (serviceMigration, sha256) => ({
|
|
40
|
+
table: 'org_quiesce_marks',
|
|
41
|
+
serviceMigration,
|
|
42
|
+
sha256,
|
|
43
|
+
standsInFor: MIGRATION_VERSION,
|
|
44
|
+
createdShape: MARKS_SHAPE,
|
|
45
|
+
});
|
|
46
|
+
exports.ORG_QUIESCE_OWNER = 'org-quiesce';
|
|
47
|
+
exports.orgQuiesceMarksMigrations = {
|
|
48
|
+
owner: exports.ORG_QUIESCE_OWNER,
|
|
49
|
+
migrations: [
|
|
50
|
+
{
|
|
51
|
+
version: MIGRATION_VERSION,
|
|
52
|
+
creates: ['org_quiesce_marks'],
|
|
53
|
+
sql: MARKS_SQL,
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
version: '0002-org-write-fence',
|
|
57
|
+
creates: [],
|
|
58
|
+
sql: org_write_fence_sql_1.ORG_WRITE_FENCE_SQL,
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
version: '0003-org-write-fence-token',
|
|
62
|
+
creates: ['org_write_fence_rows'],
|
|
63
|
+
sql: org_write_fence_token_sql_1.ORG_WRITE_FENCE_TOKEN_SQL,
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
tables: [MARKS_SHAPE, TOKEN_SHAPE],
|
|
67
|
+
priorCreators: [
|
|
68
|
+
priorCreator('20261018000000_org_quiesce_marks', '14b7724dedb83957b3ec55ca2df39820993ff7811f67ee3f7db781277102ec3c'),
|
|
69
|
+
priorCreator('20261018000000_org_quiesce_marks', '71587424ecd86f56c909de30e8b89a8e58a0b9915dbaf7294a4f2df638270db8'),
|
|
70
|
+
priorCreator('20261018000000_org_quiesce_marks', '101836168b4f0bac63444de28d423d565f387410e0aaadb37b1f7f13fa82acab'),
|
|
71
|
+
priorCreator('20260821120000_org_quiesce_marks', '22b296ab6fbb86a81044f7dd17f966449019317acd018b22e2835c944fd5033c'),
|
|
72
|
+
],
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=org-quiesce-marks.migrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-quiesce-marks.migrations.js","sourceRoot":"","sources":["../../../src/lib/org-quiesce/org-quiesce-marks.migrations.ts"],"names":[],"mappings":";;;AAAA,2EAAwE;AACxE,+DAA4D;AAc5D,MAAM,SAAS,GAAG;;;;;;CAMjB,CAAC;AAEF,MAAM,WAAW,GAAoB;IACnC,IAAI,EAAE,mBAAmB;IACzB,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;QAC9D;YACE,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,gCAAgC;YACtC,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,mBAAmB;SAC7B;KACF;IACD,UAAU,EAAE,CAAC,QAAQ,CAAC;IACtB,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,EAAE;CACZ,CAAC;AAGF,MAAM,WAAW,GAAoB;IACnC,IAAI,EAAE,sBAAsB;IAC5B,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;QAC9D,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE;KACjE;IACD,UAAU,EAAE,CAAC,QAAQ,CAAC;IACtB,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAEnD,MAAM,YAAY,GAAG,CACnB,gBAAwB,EACxB,MAAc,EACa,EAAE,CAAC,CAAC;IAC/B,KAAK,EAAE,mBAAmB;IAC1B,gBAAgB;IAChB,MAAM;IACN,WAAW,EAAE,iBAAiB;IAC9B,YAAY,EAAE,WAAW;CAC1B,CAAC,CAAC;AAWU,QAAA,iBAAiB,GAAG,aAAa,CAAC;AAElC,QAAA,yBAAyB,GAAyB;IAC7D,KAAK,EAAE,yBAAiB;IACxB,UAAU,EAAE;QACV;YACE,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE,CAAC,mBAAmB,CAAC;YAC9B,GAAG,EAAE,SAAS;SACf;QACD;YAEE,OAAO,EAAE,sBAAsB;YAC/B,OAAO,EAAE,EAAE;YACX,GAAG,EAAE,yCAAmB;SACzB;QACD;YAEE,OAAO,EAAE,4BAA4B;YACrC,OAAO,EAAE,CAAC,sBAAsB,CAAC;YACjC,GAAG,EAAE,qDAAyB;SAC/B;KACF;IACD,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,aAAa,EAAE;QAEb,YAAY,CACV,kCAAkC,EAClC,kEAAkE,CACnE;QAED,YAAY,CACV,kCAAkC,EAClC,kEAAkE,CACnE;QAED,YAAY,CACV,kCAAkC,EAClC,kEAAkE,CACnE;QAED,YAAY,CACV,kCAAkC,EAClC,kEAAkE,CACnE;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-quiesce-marks.module.d.ts","sourceRoot":"","sources":["../../../src/lib/org-quiesce/org-quiesce-marks.module.ts"],"names":[],"mappings":"AAaA,qBAGa,qBAAqB;CAAG"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.OrgQuiesceMarksModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const org_quiesce_marks_migrations_1 = require("./org-quiesce-marks.migrations");
|
|
12
|
+
const sdk_owned_contribution_1 = require("../nest/sdk-owned-contribution");
|
|
13
|
+
let OrgQuiesceMarksModule = class OrgQuiesceMarksModule {
|
|
14
|
+
};
|
|
15
|
+
exports.OrgQuiesceMarksModule = OrgQuiesceMarksModule;
|
|
16
|
+
exports.OrgQuiesceMarksModule = OrgQuiesceMarksModule = __decorate([
|
|
17
|
+
(0, common_1.Module)({
|
|
18
|
+
providers: [...(0, sdk_owned_contribution_1.contributeSdkOwnedMigrations)(org_quiesce_marks_migrations_1.orgQuiesceMarksMigrations)],
|
|
19
|
+
})
|
|
20
|
+
], OrgQuiesceMarksModule);
|
|
21
|
+
//# sourceMappingURL=org-quiesce-marks.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-quiesce-marks.module.js","sourceRoot":"","sources":["../../../src/lib/org-quiesce/org-quiesce-marks.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AAExC,iFAA2E;AAC3E,2EAA8E;AAavE,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;CAAG,CAAA;AAAxB,sDAAqB;gCAArB,qBAAqB;IAHjC,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,GAAG,IAAA,qDAA4B,EAAC,wDAAyB,CAAC,CAAC;KACxE,CAAC;GACW,qBAAqB,CAAG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { OrgFenceParentMissingError, OrgFenceTruncateRefusedError, OrgQuiescingRefusedError } from './org-quiesce-refusal';
|
|
2
|
+
export declare function orgFenceRefusalFrom(error: unknown): OrgQuiescingRefusedError | OrgFenceParentMissingError | OrgFenceTruncateRefusedError | undefined;
|
|
3
|
+
export declare function orgQuiescingRefusalFrom(error: unknown): OrgQuiescingRefusedError | undefined;
|
|
4
|
+
export declare function createOrgQuiesceRefusalExtension(): {
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly query: {
|
|
7
|
+
readonly $allOperations: (ctx: {
|
|
8
|
+
readonly args: unknown;
|
|
9
|
+
readonly query: (args: unknown) => Promise<unknown>;
|
|
10
|
+
}) => Promise<unknown>;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=org-quiesce-refusal-mapping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-quiesce-refusal-mapping.d.ts","sourceRoot":"","sources":["../../../src/lib/org-quiesce/org-quiesce-refusal-mapping.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAE1B,4BAA4B,EAC5B,wBAAwB,EACzB,MAAM,uBAAuB,CAAC;AAkD/B,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GAEZ,wBAAwB,GACxB,0BAA0B,GAC1B,4BAA4B,GAC5B,SAAS,CAeZ;AAGD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,GACb,wBAAwB,GAAG,SAAS,CAGtC;AASD,wBAAgB,gCAAgC,IAAI;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE;YAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;YACvB,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;SACrD,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KACxB,CAAC;CACH,CAaA"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.orgFenceRefusalFrom = orgFenceRefusalFrom;
|
|
4
|
+
exports.orgQuiescingRefusalFrom = orgQuiescingRefusalFrom;
|
|
5
|
+
exports.createOrgQuiesceRefusalExtension = createOrgQuiesceRefusalExtension;
|
|
6
|
+
const org_quiesce_refusal_1 = require("./org-quiesce-refusal");
|
|
7
|
+
const isRecord = (value) => typeof value === 'object' && value !== null;
|
|
8
|
+
function fieldsOf(candidate) {
|
|
9
|
+
if (!isRecord(candidate) || typeof candidate['code'] !== 'string') {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
const { detail } = candidate;
|
|
13
|
+
return {
|
|
14
|
+
code: candidate['code'],
|
|
15
|
+
detail: typeof detail === 'string' ? detail : undefined,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function sqlErrorOf(error) {
|
|
19
|
+
if (!isRecord(error)) {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
const { meta } = error;
|
|
23
|
+
const adapterError = isRecord(meta) ? meta['driverAdapterError'] : undefined;
|
|
24
|
+
return ((isRecord(adapterError) ? fieldsOf(adapterError['cause']) : undefined) ??
|
|
25
|
+
fieldsOf(error['cause']) ??
|
|
26
|
+
fieldsOf(error));
|
|
27
|
+
}
|
|
28
|
+
function orgFenceRefusalFrom(error) {
|
|
29
|
+
const fields = sqlErrorOf(error);
|
|
30
|
+
if (fields?.detail === undefined) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
switch (fields.code) {
|
|
34
|
+
case org_quiesce_refusal_1.OrgFenceSqlState.OrgQuiescing:
|
|
35
|
+
return new org_quiesce_refusal_1.OrgQuiescingRefusedError(fields.detail, { cause: error });
|
|
36
|
+
case org_quiesce_refusal_1.OrgFenceSqlState.ParentMissing:
|
|
37
|
+
return new org_quiesce_refusal_1.OrgFenceParentMissingError(fields.detail, { cause: error });
|
|
38
|
+
case org_quiesce_refusal_1.OrgFenceSqlState.TruncateRefused:
|
|
39
|
+
return new org_quiesce_refusal_1.OrgFenceTruncateRefusedError(fields.detail, { cause: error });
|
|
40
|
+
default:
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function orgQuiescingRefusalFrom(error) {
|
|
45
|
+
const refusal = orgFenceRefusalFrom(error);
|
|
46
|
+
return refusal instanceof org_quiesce_refusal_1.OrgQuiescingRefusedError ? refusal : undefined;
|
|
47
|
+
}
|
|
48
|
+
function createOrgQuiesceRefusalExtension() {
|
|
49
|
+
return {
|
|
50
|
+
name: 'xema-org-quiesce-refusal',
|
|
51
|
+
query: {
|
|
52
|
+
async $allOperations({ args, query }) {
|
|
53
|
+
try {
|
|
54
|
+
return await query(args);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
throw orgFenceRefusalFrom(error) ?? error;
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=org-quiesce-refusal-mapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-quiesce-refusal-mapping.js","sourceRoot":"","sources":["../../../src/lib/org-quiesce/org-quiesce-refusal-mapping.ts"],"names":[],"mappings":";;AAuDA,kDAqBC;AAGD,0DAKC;AASD,4EAqBC;AAlHD,+DAK+B;AAO/B,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AAE9C,SAAS,QAAQ,CAAC,SAAkB;IAClC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;QAClE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7B,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC;QACvB,MAAM,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;KACxD,CAAC;AACJ,CAAC;AASD,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACvB,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,OAAO,CACL,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxB,QAAQ,CAAC,KAAK,CAAC,CAChB,CAAC;AACJ,CAAC;AAWD,SAAgB,mBAAmB,CACjC,KAAc;IAMd,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,MAAM,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,sCAAgB,CAAC,YAAY;YAChC,OAAO,IAAI,8CAAwB,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,KAAK,sCAAgB,CAAC,aAAa;YACjC,OAAO,IAAI,gDAA0B,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,KAAK,sCAAgB,CAAC,eAAe;YACnC,OAAO,IAAI,kDAA4B,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3E;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAGD,SAAgB,uBAAuB,CACrC,KAAc;IAEd,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,OAAO,YAAY,8CAAwB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC;AASD,SAAgB,gCAAgC;IAS9C,OAAO;QACL,IAAI,EAAE,0BAA0B;QAChC,KAAK,EAAE;YACL,KAAK,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;gBAClC,IAAI,CAAC;oBACH,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,mBAAmB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;gBAC5C,CAAC;YACH,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
|