@xemahq/biome-database-nest 0.6.0 → 0.6.1
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/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/control-plane-client.d.ts.map +1 -1
- package/dist/lib/control-plane-client.js +2 -11
- package/dist/lib/control-plane-client.js.map +1 -1
- package/dist/lib/identifier.d.ts +18 -0
- package/dist/lib/identifier.d.ts.map +1 -0
- package/dist/lib/identifier.js +49 -0
- package/dist/lib/identifier.js.map +1 -0
- package/dist/lib/nest/org-erasure.module.d.ts.map +1 -1
- package/dist/lib/nest/org-erasure.module.js +2 -0
- package/dist/lib/nest/org-erasure.module.js.map +1 -1
- package/dist/lib/response-envelope.d.ts +2 -0
- package/dist/lib/response-envelope.d.ts.map +1 -0
- package/dist/lib/response-envelope.js +26 -0
- package/dist/lib/response-envelope.js.map +1 -0
- package/dist/lib/role-names.d.ts +14 -0
- package/dist/lib/role-names.d.ts.map +1 -0
- package/dist/lib/role-names.js +32 -0
- package/dist/lib/role-names.js.map +1 -0
- package/dist/lib/schema-name.d.ts.map +1 -1
- package/dist/lib/schema-name.js +8 -24
- package/dist/lib/schema-name.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export { DEFAULT_BIOME_DB_KEY, deriveBiomeSchemaName } from './lib/schema-name';
|
|
2
|
+
export { composeIdentifier, fitIdentifier, IDENTIFIER_HASH_LENGTH, POSTGRES_MAX_IDENTIFIER_LENGTH, sanitizeIdentifierChars, sanitizeIdentifierSegment, type ComposeIdentifierInput, type FitIdentifierInput, } from './lib/identifier';
|
|
3
|
+
export { rolesForSchema, schemaRoleBase, schemaRoleName, SchemaRoleKind, SCHEMA_ROLE_BASE_MAX_LENGTH, SCHEMA_ROLE_SUFFIX_LENGTH, type SchemaRoleNames, } from './lib/role-names';
|
|
4
|
+
export { unwrapPlatformResponseEnvelope } from './lib/response-envelope';
|
|
2
5
|
export { resolveBiomeDatabaseConfigFromEnv, type BiomeDatabaseConfig, } from './lib/config';
|
|
3
6
|
export { createBiomePrismaAdapter, createBiomePrismaAdapterFromEnv, } from './lib/adapter';
|
|
4
7
|
export { fetchSystemDatabaseConfig, type SystemDatabaseConfigRequest, } from './lib/control-plane-client';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EACL,iCAAiC,EACjC,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,wBAAwB,EACxB,+BAA+B,GAChC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,yBAAyB,EACzB,KAAK,2BAA2B,GACjC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAC9B,KAAK,4BAA4B,GAClC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,GACpC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,0BAA0B,GAChC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,+BAA+B,EACpC,KAAK,6BAA6B,EAClC,KAAK,eAAe,GACrB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,mBAAmB,EACnB,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,8BAA8B,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,8BAA8B,EAC9B,KAAK,qCAAqC,EAC1C,KAAK,kCAAkC,EACvC,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,GACjC,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACtB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,2BAA2B,EAC3B,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,GACtB,MAAM,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,8BAA8B,EAC9B,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,2BAA2B,EAC3B,yBAAyB,EACzB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EACL,iCAAiC,EACjC,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,wBAAwB,EACxB,+BAA+B,GAChC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,yBAAyB,EACzB,KAAK,2BAA2B,GACjC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAC9B,KAAK,4BAA4B,GAClC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,GACpC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,0BAA0B,GAChC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,+BAA+B,EACpC,KAAK,6BAA6B,EAClC,KAAK,eAAe,GACrB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,mBAAmB,EACnB,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,8BAA8B,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,8BAA8B,EAC9B,KAAK,qCAAqC,EAC1C,KAAK,kCAAkC,EACvC,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,GACjC,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACtB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,2BAA2B,EAC3B,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,GACtB,MAAM,+BAA+B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ORG_ERASURE_ROUTE_PATH = exports.ORG_DATA_ERASURE_CAPABILITY = exports.ORG_ERASURE_RUNNER = exports.OrgErasureController = exports.OrgErasureModule = exports.OrgErasureBlockedError = exports.eraseOrgData = exports.createTenantIsolationExtension = exports.collectOrgScopedModels = exports.DEFAULT_ORG_FIELD = exports.scopeArgsToOrg = exports.PrismaModelOperation = exports.formatTenantIsolationViolation = exports.TenantIsolationViolationKind = exports.TenantIsolationError = exports.resolveTenantIsolationMode = exports.TENANT_ISOLATION_MODE_ENV_VAR = exports.TenantIsolationMode = exports.createBiomePrismaService = exports.BIOME_DATABASE_READY = exports.BiomeDatabaseModule = exports.bootstrapBiomeDatabases = exports.ORG_DATABASE_POOL_SERVICE_NAME = exports.resolveControlPlaneBaseUrl = exports.fetchSystemDatabaseConfig = exports.createBiomePrismaAdapterFromEnv = exports.createBiomePrismaAdapter = exports.resolveBiomeDatabaseConfigFromEnv = exports.deriveBiomeSchemaName = exports.DEFAULT_BIOME_DB_KEY = void 0;
|
|
3
|
+
exports.ORG_ERASURE_ROUTE_PATH = exports.ORG_DATA_ERASURE_CAPABILITY = exports.ORG_ERASURE_RUNNER = exports.OrgErasureController = exports.OrgErasureModule = exports.OrgErasureBlockedError = exports.eraseOrgData = exports.createTenantIsolationExtension = exports.collectOrgScopedModels = exports.DEFAULT_ORG_FIELD = exports.scopeArgsToOrg = exports.PrismaModelOperation = exports.formatTenantIsolationViolation = exports.TenantIsolationViolationKind = exports.TenantIsolationError = exports.resolveTenantIsolationMode = exports.TENANT_ISOLATION_MODE_ENV_VAR = exports.TenantIsolationMode = exports.createBiomePrismaService = exports.BIOME_DATABASE_READY = exports.BiomeDatabaseModule = exports.bootstrapBiomeDatabases = exports.ORG_DATABASE_POOL_SERVICE_NAME = exports.resolveControlPlaneBaseUrl = exports.fetchSystemDatabaseConfig = exports.createBiomePrismaAdapterFromEnv = exports.createBiomePrismaAdapter = exports.resolveBiomeDatabaseConfigFromEnv = exports.unwrapPlatformResponseEnvelope = exports.SCHEMA_ROLE_SUFFIX_LENGTH = exports.SCHEMA_ROLE_BASE_MAX_LENGTH = exports.SchemaRoleKind = exports.schemaRoleName = exports.schemaRoleBase = exports.rolesForSchema = exports.sanitizeIdentifierSegment = exports.sanitizeIdentifierChars = exports.POSTGRES_MAX_IDENTIFIER_LENGTH = exports.IDENTIFIER_HASH_LENGTH = exports.fitIdentifier = exports.composeIdentifier = exports.deriveBiomeSchemaName = exports.DEFAULT_BIOME_DB_KEY = void 0;
|
|
4
4
|
var schema_name_1 = require("./lib/schema-name");
|
|
5
5
|
Object.defineProperty(exports, "DEFAULT_BIOME_DB_KEY", { enumerable: true, get: function () { return schema_name_1.DEFAULT_BIOME_DB_KEY; } });
|
|
6
6
|
Object.defineProperty(exports, "deriveBiomeSchemaName", { enumerable: true, get: function () { return schema_name_1.deriveBiomeSchemaName; } });
|
|
7
|
+
var identifier_1 = require("./lib/identifier");
|
|
8
|
+
Object.defineProperty(exports, "composeIdentifier", { enumerable: true, get: function () { return identifier_1.composeIdentifier; } });
|
|
9
|
+
Object.defineProperty(exports, "fitIdentifier", { enumerable: true, get: function () { return identifier_1.fitIdentifier; } });
|
|
10
|
+
Object.defineProperty(exports, "IDENTIFIER_HASH_LENGTH", { enumerable: true, get: function () { return identifier_1.IDENTIFIER_HASH_LENGTH; } });
|
|
11
|
+
Object.defineProperty(exports, "POSTGRES_MAX_IDENTIFIER_LENGTH", { enumerable: true, get: function () { return identifier_1.POSTGRES_MAX_IDENTIFIER_LENGTH; } });
|
|
12
|
+
Object.defineProperty(exports, "sanitizeIdentifierChars", { enumerable: true, get: function () { return identifier_1.sanitizeIdentifierChars; } });
|
|
13
|
+
Object.defineProperty(exports, "sanitizeIdentifierSegment", { enumerable: true, get: function () { return identifier_1.sanitizeIdentifierSegment; } });
|
|
14
|
+
var role_names_1 = require("./lib/role-names");
|
|
15
|
+
Object.defineProperty(exports, "rolesForSchema", { enumerable: true, get: function () { return role_names_1.rolesForSchema; } });
|
|
16
|
+
Object.defineProperty(exports, "schemaRoleBase", { enumerable: true, get: function () { return role_names_1.schemaRoleBase; } });
|
|
17
|
+
Object.defineProperty(exports, "schemaRoleName", { enumerable: true, get: function () { return role_names_1.schemaRoleName; } });
|
|
18
|
+
Object.defineProperty(exports, "SchemaRoleKind", { enumerable: true, get: function () { return role_names_1.SchemaRoleKind; } });
|
|
19
|
+
Object.defineProperty(exports, "SCHEMA_ROLE_BASE_MAX_LENGTH", { enumerable: true, get: function () { return role_names_1.SCHEMA_ROLE_BASE_MAX_LENGTH; } });
|
|
20
|
+
Object.defineProperty(exports, "SCHEMA_ROLE_SUFFIX_LENGTH", { enumerable: true, get: function () { return role_names_1.SCHEMA_ROLE_SUFFIX_LENGTH; } });
|
|
21
|
+
var response_envelope_1 = require("./lib/response-envelope");
|
|
22
|
+
Object.defineProperty(exports, "unwrapPlatformResponseEnvelope", { enumerable: true, get: function () { return response_envelope_1.unwrapPlatformResponseEnvelope; } });
|
|
7
23
|
var config_1 = require("./lib/config");
|
|
8
24
|
Object.defineProperty(exports, "resolveBiomeDatabaseConfigFromEnv", { enumerable: true, get: function () { return config_1.resolveBiomeDatabaseConfigFromEnv; } });
|
|
9
25
|
var adapter_1 = require("./lib/adapter");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iDAAgF;AAAvE,mHAAA,oBAAoB,OAAA;AAAE,oHAAA,qBAAqB,OAAA;AACpD,uCAGsB;AAFpB,2HAAA,iCAAiC,OAAA;AAGnC,yCAGuB;AAFrB,mHAAA,wBAAwB,OAAA;AACxB,0HAAA,+BAA+B,OAAA;AAEjC,mEAGoC;AAFlC,iIAAA,yBAAyB,OAAA;AAG3B,yEAIuC;AAHrC,qIAAA,0BAA0B,OAAA;AAC1B,yIAAA,8BAA8B,OAAA;AAGhC,6CAIyB;AAHvB,oHAAA,uBAAuB,OAAA;AAIzB,0EAI0C;AAHxC,4HAAA,mBAAmB,OAAA;AACnB,6HAAA,oBAAoB,OAAA;AAGtB,4EAQ2C;AAPzC,kIAAA,wBAAwB,OAAA;AAQ1B,sFAIsD;AAHpD,4HAAA,mBAAmB,OAAA;AACnB,sIAAA,6BAA6B,OAAA;AAC7B,mIAAA,0BAA0B,OAAA;AAE5B,wFAKuD;AAJrD,8HAAA,oBAAoB,OAAA;AACpB,sIAAA,4BAA4B,OAAA;AAC5B,wIAAA,8BAA8B,OAAA;AAGhC,8DAK0C;AAJxC,iHAAA,oBAAoB,OAAA;AACpB,2GAAA,cAAc,OAAA;AAIhB,gGAQ2D;AAPzD,+HAAA,iBAAiB,OAAA;AACjB,oIAAA,sBAAsB,OAAA;AACtB,4IAAA,8BAA8B,OAAA;AAMhC,kEAK4C;AAJ1C,2GAAA,YAAY,OAAA;AACZ,qHAAA,sBAAsB,OAAA;AAIxB,oEAQuC;AAPrC,sHAAA,gBAAgB,OAAA;AAChB,0HAAA,oBAAoB,OAAA;AACpB,wHAAA,kBAAkB,OAAA;AAClB,iIAAA,2BAA2B,OAAA;AAC3B,4HAAA,sBAAsB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iDAAgF;AAAvE,mHAAA,oBAAoB,OAAA;AAAE,oHAAA,qBAAqB,OAAA;AACpD,+CAS0B;AARxB,+GAAA,iBAAiB,OAAA;AACjB,2GAAA,aAAa,OAAA;AACb,oHAAA,sBAAsB,OAAA;AACtB,4HAAA,8BAA8B,OAAA;AAC9B,qHAAA,uBAAuB,OAAA;AACvB,uHAAA,yBAAyB,OAAA;AAI3B,+CAQ0B;AAPxB,4GAAA,cAAc,OAAA;AACd,4GAAA,cAAc,OAAA;AACd,4GAAA,cAAc,OAAA;AACd,4GAAA,cAAc,OAAA;AACd,yHAAA,2BAA2B,OAAA;AAC3B,uHAAA,yBAAyB,OAAA;AAG3B,6DAAyE;AAAhE,mIAAA,8BAA8B,OAAA;AACvC,uCAGsB;AAFpB,2HAAA,iCAAiC,OAAA;AAGnC,yCAGuB;AAFrB,mHAAA,wBAAwB,OAAA;AACxB,0HAAA,+BAA+B,OAAA;AAEjC,mEAGoC;AAFlC,iIAAA,yBAAyB,OAAA;AAG3B,yEAIuC;AAHrC,qIAAA,0BAA0B,OAAA;AAC1B,yIAAA,8BAA8B,OAAA;AAGhC,6CAIyB;AAHvB,oHAAA,uBAAuB,OAAA;AAIzB,0EAI0C;AAHxC,4HAAA,mBAAmB,OAAA;AACnB,6HAAA,oBAAoB,OAAA;AAGtB,4EAQ2C;AAPzC,kIAAA,wBAAwB,OAAA;AAQ1B,sFAIsD;AAHpD,4HAAA,mBAAmB,OAAA;AACnB,sIAAA,6BAA6B,OAAA;AAC7B,mIAAA,0BAA0B,OAAA;AAE5B,wFAKuD;AAJrD,8HAAA,oBAAoB,OAAA;AACpB,sIAAA,4BAA4B,OAAA;AAC5B,wIAAA,8BAA8B,OAAA;AAGhC,8DAK0C;AAJxC,iHAAA,oBAAoB,OAAA;AACpB,2GAAA,cAAc,OAAA;AAIhB,gGAQ2D;AAPzD,+HAAA,iBAAiB,OAAA;AACjB,oIAAA,sBAAsB,OAAA;AACtB,4IAAA,8BAA8B,OAAA;AAMhC,kEAK4C;AAJ1C,2GAAA,YAAY,OAAA;AACZ,qHAAA,sBAAsB,OAAA;AAIxB,oEAQuC;AAPrC,sHAAA,gBAAgB,OAAA;AAChB,0HAAA,oBAAoB,OAAA;AACpB,wHAAA,kBAAkB,OAAA;AAClB,iIAAA,2BAA2B,OAAA;AAC3B,4HAAA,sBAAsB,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-plane-client.d.ts","sourceRoot":"","sources":["../../src/lib/control-plane-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"control-plane-client.d.ts","sourceRoot":"","sources":["../../src/lib/control-plane-client.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAYD,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,2BAA2B,GAC/B,OAAO,CAAC,mBAAmB,CAAC,CA6B9B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.fetchSystemDatabaseConfig = fetchSystemDatabaseConfig;
|
|
4
|
+
const response_envelope_1 = require("./response-envelope");
|
|
4
5
|
async function fetchSystemDatabaseConfig(baseUrl, serviceToken, req) {
|
|
5
6
|
const url = `${baseUrl.replace(/\/$/, '')}/system-databases/config`;
|
|
6
7
|
const response = await fetch(url, {
|
|
@@ -19,7 +20,7 @@ async function fetchSystemDatabaseConfig(baseUrl, serviceToken, req) {
|
|
|
19
20
|
throw new Error(`fetchSystemDatabaseConfig: ${url} responded ${response.status} ${response.statusText}: ${body}`);
|
|
20
21
|
}
|
|
21
22
|
const payload = (await response.json());
|
|
22
|
-
const config =
|
|
23
|
+
const config = (0, response_envelope_1.unwrapPlatformResponseEnvelope)(payload, `fetchSystemDatabaseConfig: ${url}`);
|
|
23
24
|
assertCompleteConfig(config, url);
|
|
24
25
|
return config;
|
|
25
26
|
}
|
|
@@ -30,16 +31,6 @@ const REQUIRED_CONFIG_FIELDS = [
|
|
|
30
31
|
'password',
|
|
31
32
|
'database',
|
|
32
33
|
];
|
|
33
|
-
function unwrapEnvelope(payload) {
|
|
34
|
-
if (payload !== null &&
|
|
35
|
-
typeof payload === 'object' &&
|
|
36
|
-
'data' in payload &&
|
|
37
|
-
payload.data !== null &&
|
|
38
|
-
typeof payload.data === 'object') {
|
|
39
|
-
return payload.data;
|
|
40
|
-
}
|
|
41
|
-
return payload;
|
|
42
|
-
}
|
|
43
34
|
function assertCompleteConfig(config, url) {
|
|
44
35
|
const record = config !== null && typeof config === 'object'
|
|
45
36
|
? config
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-plane-client.js","sourceRoot":"","sources":["../../src/lib/control-plane-client.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"control-plane-client.js","sourceRoot":"","sources":["../../src/lib/control-plane-client.ts"],"names":[],"mappings":";;AAmDA,8DAiCC;AApDD,2DAAqE;AAmB9D,KAAK,UAAU,yBAAyB,CAC7C,OAAe,EACf,YAAoB,EACpB,GAAgC;IAEhC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,0BAA0B,CAAC;IAEpE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,YAAY,EAAE;YACvC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,CAAC;KACH,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,CAAC;QACpE,MAAM,IAAI,KAAK,CACb,8BAA8B,GAAG,cAAc,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,KAAK,IAAI,EAAE,CACjG,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAY,CAAC;IACnD,MAAM,MAAM,GAAG,IAAA,kDAA8B,EAC3C,OAAO,EACP,8BAA8B,GAAG,EAAE,CACpC,CAAC;IACF,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,sBAAsB,GAAG;IAC7B,MAAM;IACN,MAAM;IACN,UAAU;IACV,UAAU;IACV,UAAU;CACF,CAAC;AASX,SAAS,oBAAoB,CAC3B,MAA2B,EAC3B,GAAW;IAIX,MAAM,MAAM,GACV,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;QAC3C,CAAC,CAAE,MAA6C;QAChD,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,8BAA8B,GAAG,sCAAsC;YACrE,aAAa,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB;YACjD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,mCAAmC;YACrE,gDAAgD,CACnD,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const POSTGRES_MAX_IDENTIFIER_LENGTH = 63;
|
|
2
|
+
export declare const IDENTIFIER_HASH_LENGTH = 12;
|
|
3
|
+
export declare function sanitizeIdentifierChars(value: string): string;
|
|
4
|
+
export declare function sanitizeIdentifierSegment(value: string): string;
|
|
5
|
+
export interface FitIdentifierInput {
|
|
6
|
+
readonly candidate: string;
|
|
7
|
+
readonly maxLength: number;
|
|
8
|
+
readonly hashInput: string;
|
|
9
|
+
readonly hashLength?: number;
|
|
10
|
+
}
|
|
11
|
+
export declare function fitIdentifier({ candidate, maxLength, hashInput, hashLength, }: FitIdentifierInput): string;
|
|
12
|
+
export interface ComposeIdentifierInput {
|
|
13
|
+
readonly prefix: string;
|
|
14
|
+
readonly parts: readonly string[];
|
|
15
|
+
readonly maxLength?: number;
|
|
16
|
+
}
|
|
17
|
+
export declare function composeIdentifier({ prefix, parts, maxLength, }: ComposeIdentifierInput): string;
|
|
18
|
+
//# sourceMappingURL=identifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifier.d.ts","sourceRoot":"","sources":["../../src/lib/identifier.ts"],"names":[],"mappings":"AAsCA,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAOjD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAczC,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7D;AAUD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI/D;AAED,MAAM,WAAW,kBAAkB;IAEjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAM3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAO3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAWD,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,SAAS,EACT,SAAS,EACT,UAAmC,GACpC,EAAE,kBAAkB,GAAG,MAAM,CAqB7B;AAED,MAAM,WAAW,sBAAsB;IAMrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAElC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AASD,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,KAAK,EACL,SAA0C,GAC3C,EAAE,sBAAsB,GAAG,MAAM,CAkBjC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IDENTIFIER_HASH_LENGTH = exports.POSTGRES_MAX_IDENTIFIER_LENGTH = void 0;
|
|
4
|
+
exports.sanitizeIdentifierChars = sanitizeIdentifierChars;
|
|
5
|
+
exports.sanitizeIdentifierSegment = sanitizeIdentifierSegment;
|
|
6
|
+
exports.fitIdentifier = fitIdentifier;
|
|
7
|
+
exports.composeIdentifier = composeIdentifier;
|
|
8
|
+
const node_crypto_1 = require("node:crypto");
|
|
9
|
+
exports.POSTGRES_MAX_IDENTIFIER_LENGTH = 63;
|
|
10
|
+
exports.IDENTIFIER_HASH_LENGTH = 12;
|
|
11
|
+
const IDENTIFIER_PREFIX_PATTERN = /^[a-z][a-z0-9_]*$/;
|
|
12
|
+
function sanitizeIdentifierChars(value) {
|
|
13
|
+
return value.toLowerCase().replace(/[^a-z0-9_]/g, '_');
|
|
14
|
+
}
|
|
15
|
+
function sanitizeIdentifierSegment(value) {
|
|
16
|
+
return sanitizeIdentifierChars(value)
|
|
17
|
+
.replace(/_+/g, '_')
|
|
18
|
+
.replace(/^_+|_+$/g, '');
|
|
19
|
+
}
|
|
20
|
+
function fitIdentifier({ candidate, maxLength, hashInput, hashLength = exports.IDENTIFIER_HASH_LENGTH, }) {
|
|
21
|
+
if (!Number.isInteger(maxLength) || maxLength <= hashLength + 1) {
|
|
22
|
+
throw new Error(`fitIdentifier: maxLength must be an integer greater than ${hashLength + 1} (hashLength + 1) to leave room for the disambiguating hash; received ${maxLength}`);
|
|
23
|
+
}
|
|
24
|
+
if (candidate.length <= maxLength) {
|
|
25
|
+
return candidate;
|
|
26
|
+
}
|
|
27
|
+
const hash = (0, node_crypto_1.createHash)('sha256')
|
|
28
|
+
.update(hashInput)
|
|
29
|
+
.digest('hex')
|
|
30
|
+
.slice(0, hashLength);
|
|
31
|
+
const prefix = candidate
|
|
32
|
+
.slice(0, maxLength - hashLength - 1)
|
|
33
|
+
.replace(/_+$/g, '');
|
|
34
|
+
return `${prefix}_${hash}`;
|
|
35
|
+
}
|
|
36
|
+
function composeIdentifier({ prefix, parts, maxLength = exports.POSTGRES_MAX_IDENTIFIER_LENGTH, }) {
|
|
37
|
+
if (!IDENTIFIER_PREFIX_PATTERN.test(prefix)) {
|
|
38
|
+
throw new Error(`composeIdentifier: prefix "${prefix}" is not a bare lowercase identifier fragment (${String(IDENTIFIER_PREFIX_PATTERN)})`);
|
|
39
|
+
}
|
|
40
|
+
const segments = parts
|
|
41
|
+
.map((part) => sanitizeIdentifierSegment(part))
|
|
42
|
+
.filter((part) => part.length > 0);
|
|
43
|
+
return fitIdentifier({
|
|
44
|
+
candidate: [prefix, ...segments].join('_'),
|
|
45
|
+
maxLength,
|
|
46
|
+
hashInput: parts.join(':'),
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=identifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifier.js","sourceRoot":"","sources":["../../src/lib/identifier.ts"],"names":[],"mappings":";;;AA2DA,0DAEC;AAUD,8DAIC;AA+BD,sCA0BC;AAsBD,8CAsBC;AAhLD,6CAAyC;AAsC5B,QAAA,8BAA8B,GAAG,EAAE,CAAC;AAOpC,QAAA,sBAAsB,GAAG,EAAE,CAAC;AAGzC,MAAM,yBAAyB,GAAG,mBAAmB,CAAC;AAWtD,SAAgB,uBAAuB,CAAC,KAAa;IACnD,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACzD,CAAC;AAUD,SAAgB,yBAAyB,CAAC,KAAa;IACrD,OAAO,uBAAuB,CAAC,KAAK,CAAC;SAClC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AA+BD,SAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,SAAS,EACT,SAAS,EACT,UAAU,GAAG,8BAAsB,GAChB;IACnB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CACb,4DACE,UAAU,GAAG,CACf,yEAAyE,SAAS,EAAE,CACrF,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC;SAC9B,MAAM,CAAC,SAAS,CAAC;SACjB,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACxB,MAAM,MAAM,GAAG,SAAS;SACrB,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,CAAC,CAAC;SACpC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvB,OAAO,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC;AAC7B,CAAC;AAsBD,SAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,KAAK,EACL,SAAS,GAAG,sCAA8B,GACnB;IACvB,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,8BAA8B,MAAM,kDAAkD,MAAM,CAC1F,yBAAyB,CAC1B,GAAG,CACL,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK;SACnB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;SAC9C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAErC,OAAO,aAAa,CAAC;QACnB,SAAS,EAAE,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC1C,SAAS;QACT,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;KAC3B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -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":"AA4BA,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,IAAI,EACV,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,iCAAiC,CAAC;AAKzC,eAAO,MAAM,kBAAkB,eAE9B,CAAC;AAUF,eAAO,MAAM,2BAA2B,0BAA0B,CAAC;AAGnE,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACjD;AAED,qBAGa,oBAAoB;IAED,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IASvE,KAAK,CAAiB,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAGhE;AAED,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAMlE,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC;CAC9D;AAQD,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,aAAa;CAiBhE"}
|
|
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.OrgErasureModule = exports.OrgErasureController = exports.ORG_ERASURE_ROUTE_PATH = exports.ORG_DATA_ERASURE_CAPABILITY = exports.ORG_ERASURE_RUNNER = void 0;
|
|
16
16
|
const common_1 = require("@nestjs/common");
|
|
17
17
|
const swagger_1 = require("@nestjs/swagger");
|
|
18
|
+
const platform_common_1 = require("@xemahq/platform-common");
|
|
18
19
|
const xema_decorators_1 = require("@xemahq/xema-decorators");
|
|
19
20
|
const org_erasure_1 = require("../tenant-isolation/org-erasure");
|
|
20
21
|
exports.ORG_ERASURE_RUNNER = Symbol.for('@xemahq/biome-database-nest/org-erasure-runner');
|
|
@@ -43,6 +44,7 @@ __decorate([
|
|
|
43
44
|
], OrgErasureController.prototype, "erase", null);
|
|
44
45
|
exports.OrgErasureController = OrgErasureController = __decorate([
|
|
45
46
|
(0, swagger_1.ApiTags)('org-erasure'),
|
|
47
|
+
(0, common_1.UseGuards)(platform_common_1.ServiceActorGuard),
|
|
46
48
|
(0, common_1.Controller)('internal/org-erasure'),
|
|
47
49
|
__param(0, (0, common_1.Inject)(exports.ORG_ERASURE_RUNNER)),
|
|
48
50
|
__metadata("design:paramtypes", [Object])
|
|
@@ -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":";;;;;;;;;;;;;;;AA4BA,2CAQwB;AACxB,6CAAwD;AACxD,6DAA4D;AAC5D,6DAAmF;AAEnF,iEAIyC;AAK5B,QAAA,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAC1C,gDAAgD,CACjD,CAAC;AAUW,QAAA,2BAA2B,GAAG,uBAAuB,CAAC;AAGtD,QAAA,sBAAsB,GAAG,sBAAsB,CAAC;AAStD,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAEgB;IAD/C,YAC+C,MAAwB;QAAxB,WAAM,GAAN,MAAM,CAAkB;IACpE,CAAC;IAQJ,KAAK,CAAiB,KAAa;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACF,CAAA;AAdY,oDAAoB;AAW/B;IANC,IAAA,mCAAiB,EAAC,EAAE,QAAQ,EAAE,uCAAqB,CAAC,OAAO,EAAE,CAAC;IAC9D,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,sBAAY,EAAC;QACZ,OAAO,EACL,6EAA6E;KAChF,CAAC;IACK,WAAA,IAAA,cAAK,EAAC,OAAO,CAAC,CAAA;;;;iDAEpB;+BAbU,oBAAoB;IAHhC,IAAA,iBAAO,EAAC,aAAa,CAAC;IACtB,IAAA,kBAAS,EAAC,mCAAiB,CAAC;IAC5B,IAAA,mBAAU,EAAC,sBAAsB,CAAC;IAG9B,WAAA,IAAA,eAAM,EAAC,0BAAkB,CAAC,CAAA;;GAFlB,oBAAoB,CAchC;AAiBD,MAAa,gBAAgB;IAC3B,MAAM,CAAC,OAAO,CAAC,OAAgC;QAC7C,MAAM,EAAE,kBAAkB,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC;QACxD,OAAO;YACL,MAAM,EAAE,gBAAgB;YACxB,WAAW,EAAE,CAAC,oBAAoB,CAAC;YACnC,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,0BAAkB;oBAC3B,UAAU,EAAE,CAAC,MAAwB,EAAoB,EAAE,CAAC,CAAC;wBAC3D,KAAK,EAAE,CAAC,KAAa,EAA6B,EAAE,CAClD,IAAA,0BAAY,EAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC;qBACvD,CAAC;oBACF,MAAM,EAAE,CAAC,kBAAkB,CAAC;iBAC7B;aACF;SACF,CAAC;IACJ,CAAC;CACF;AAlBD,4CAkBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-envelope.d.ts","sourceRoot":"","sources":["../../src/lib/response-envelope.ts"],"names":[],"mappings":"AAwCA,wBAAgB,8BAA8B,CAAC,CAAC,EAC9C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,GACd,CAAC,CAaH"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.unwrapPlatformResponseEnvelope = unwrapPlatformResponseEnvelope;
|
|
4
|
+
function describePayload(payload) {
|
|
5
|
+
if (payload === null) {
|
|
6
|
+
return 'null';
|
|
7
|
+
}
|
|
8
|
+
if (Array.isArray(payload)) {
|
|
9
|
+
return 'a bare array';
|
|
10
|
+
}
|
|
11
|
+
if (typeof payload === 'object') {
|
|
12
|
+
return `an object with keys [${Object.keys(payload).join(', ')}]`;
|
|
13
|
+
}
|
|
14
|
+
return `a bare ${typeof payload}`;
|
|
15
|
+
}
|
|
16
|
+
function unwrapPlatformResponseEnvelope(payload, context) {
|
|
17
|
+
if (payload === null ||
|
|
18
|
+
typeof payload !== 'object' ||
|
|
19
|
+
!('data' in payload)) {
|
|
20
|
+
throw new Error(`${context}: response is not a platform envelope — expected an object with a 'data' property, ` +
|
|
21
|
+
`received ${describePayload(payload)}. The peer either is not a Xema platform service or is ` +
|
|
22
|
+
`missing the global ResponseEnvelopeInterceptor.`);
|
|
23
|
+
}
|
|
24
|
+
return payload.data;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=response-envelope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-envelope.js","sourceRoot":"","sources":["../../src/lib/response-envelope.ts"],"names":[],"mappings":";;AAwCA,wEAgBC;AAvCD,SAAS,eAAe,CAAC,OAAgB;IACvC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,wBAAwB,MAAM,CAAC,IAAI,CACxC,OAAkC,CACnC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IACD,OAAO,UAAU,OAAO,OAAO,EAAE,CAAC;AACpC,CAAC;AAUD,SAAgB,8BAA8B,CAC5C,OAAgB,EAChB,OAAe;IAEf,IACE,OAAO,KAAK,IAAI;QAChB,OAAO,OAAO,KAAK,QAAQ;QAC3B,CAAC,CAAC,MAAM,IAAK,OAAmC,CAAC,EACjD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,GAAG,OAAO,qFAAqF;YAC7F,YAAY,eAAe,CAAC,OAAO,CAAC,yDAAyD;YAC7F,iDAAiD,CACpD,CAAC;IACJ,CAAC;IACD,OAAQ,OAAuB,CAAC,IAAI,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare enum SchemaRoleKind {
|
|
2
|
+
ReadWrite = "rw",
|
|
3
|
+
ReadOnly = "ro"
|
|
4
|
+
}
|
|
5
|
+
export declare const SCHEMA_ROLE_SUFFIX_LENGTH = 3;
|
|
6
|
+
export declare const SCHEMA_ROLE_BASE_MAX_LENGTH: number;
|
|
7
|
+
export interface SchemaRoleNames {
|
|
8
|
+
readonly rwRoleName: string;
|
|
9
|
+
readonly roRoleName: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function schemaRoleBase(schemaName: string): string;
|
|
12
|
+
export declare function schemaRoleName(schemaName: string, kind: SchemaRoleKind): string;
|
|
13
|
+
export declare function rolesForSchema(schemaName: string): SchemaRoleNames;
|
|
14
|
+
//# sourceMappingURL=role-names.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role-names.d.ts","sourceRoot":"","sources":["../../src/lib/role-names.ts"],"names":[],"mappings":"AAcA,oBAAY,cAAc;IACxB,SAAS,OAAO;IAChB,QAAQ,OAAO;CAChB;AAGD,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAU3C,eAAO,MAAM,2BAA2B,QACoB,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAaD,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAMzD;AAGD,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,cAAc,GACnB,MAAM,CAER;AAOD,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CAMlE"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SCHEMA_ROLE_BASE_MAX_LENGTH = exports.SCHEMA_ROLE_SUFFIX_LENGTH = exports.SchemaRoleKind = void 0;
|
|
4
|
+
exports.schemaRoleBase = schemaRoleBase;
|
|
5
|
+
exports.schemaRoleName = schemaRoleName;
|
|
6
|
+
exports.rolesForSchema = rolesForSchema;
|
|
7
|
+
const identifier_1 = require("./identifier");
|
|
8
|
+
var SchemaRoleKind;
|
|
9
|
+
(function (SchemaRoleKind) {
|
|
10
|
+
SchemaRoleKind["ReadWrite"] = "rw";
|
|
11
|
+
SchemaRoleKind["ReadOnly"] = "ro";
|
|
12
|
+
})(SchemaRoleKind || (exports.SchemaRoleKind = SchemaRoleKind = {}));
|
|
13
|
+
exports.SCHEMA_ROLE_SUFFIX_LENGTH = 3;
|
|
14
|
+
exports.SCHEMA_ROLE_BASE_MAX_LENGTH = identifier_1.POSTGRES_MAX_IDENTIFIER_LENGTH - exports.SCHEMA_ROLE_SUFFIX_LENGTH;
|
|
15
|
+
function schemaRoleBase(schemaName) {
|
|
16
|
+
return (0, identifier_1.fitIdentifier)({
|
|
17
|
+
candidate: (0, identifier_1.sanitizeIdentifierChars)(schemaName),
|
|
18
|
+
maxLength: exports.SCHEMA_ROLE_BASE_MAX_LENGTH,
|
|
19
|
+
hashInput: schemaName,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function schemaRoleName(schemaName, kind) {
|
|
23
|
+
return `${schemaRoleBase(schemaName)}_${kind}`;
|
|
24
|
+
}
|
|
25
|
+
function rolesForSchema(schemaName) {
|
|
26
|
+
const base = schemaRoleBase(schemaName);
|
|
27
|
+
return {
|
|
28
|
+
rwRoleName: `${base}_${SchemaRoleKind.ReadWrite}`,
|
|
29
|
+
roRoleName: `${base}_${SchemaRoleKind.ReadOnly}`,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=role-names.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role-names.js","sourceRoot":"","sources":["../../src/lib/role-names.ts"],"names":[],"mappings":";;;AAiDA,wCAMC;AAGD,wCAKC;AAOD,wCAMC;AA5ED,6CAIsB;AAUtB,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,kCAAgB,CAAA;IAChB,iCAAe,CAAA;AACjB,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB;AAGY,QAAA,yBAAyB,GAAG,CAAC,CAAC;AAU9B,QAAA,2BAA2B,GACtC,2CAA8B,GAAG,iCAAyB,CAAC;AAkB7D,SAAgB,cAAc,CAAC,UAAkB;IAC/C,OAAO,IAAA,0BAAa,EAAC;QACnB,SAAS,EAAE,IAAA,oCAAuB,EAAC,UAAU,CAAC;QAC9C,SAAS,EAAE,mCAA2B;QACtC,SAAS,EAAE,UAAU;KACtB,CAAC,CAAC;AACL,CAAC;AAGD,SAAgB,cAAc,CAC5B,UAAkB,EAClB,IAAoB;IAEpB,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;AACjD,CAAC;AAOD,SAAgB,cAAc,CAAC,UAAkB;IAC/C,MAAM,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IACxC,OAAO;QACL,UAAU,EAAE,GAAG,IAAI,IAAI,cAAc,CAAC,SAAS,EAAE;QACjD,UAAU,EAAE,GAAG,IAAI,IAAI,cAAc,CAAC,QAAQ,EAAE;KACjD,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-name.d.ts","sourceRoot":"","sources":["../../src/lib/schema-name.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema-name.d.ts","sourceRoot":"","sources":["../../src/lib/schema-name.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAoB9C,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CA+B7E"}
|
package/dist/lib/schema-name.js
CHANGED
|
@@ -2,43 +2,27 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DEFAULT_BIOME_DB_KEY = void 0;
|
|
4
4
|
exports.deriveBiomeSchemaName = deriveBiomeSchemaName;
|
|
5
|
-
const
|
|
5
|
+
const identifier_1 = require("./identifier");
|
|
6
6
|
exports.DEFAULT_BIOME_DB_KEY = 'primary';
|
|
7
7
|
const SCHEMA_PREFIX = 'biome';
|
|
8
|
-
const MAX_IDENTIFIER_LENGTH = 63;
|
|
9
|
-
const HASH_LENGTH = 12;
|
|
10
|
-
function sanitizeSegment(segment) {
|
|
11
|
-
return segment
|
|
12
|
-
.toLowerCase()
|
|
13
|
-
.replace(/[^a-z0-9_]/g, '_')
|
|
14
|
-
.replace(/_+/g, '_')
|
|
15
|
-
.replace(/^_+|_+$/g, '');
|
|
16
|
-
}
|
|
17
8
|
function deriveBiomeSchemaName(biomeId, dbKey) {
|
|
18
|
-
const sanitizedBiomeId =
|
|
9
|
+
const sanitizedBiomeId = (0, identifier_1.sanitizeIdentifierSegment)(biomeId);
|
|
19
10
|
if (sanitizedBiomeId.length === 0) {
|
|
20
11
|
throw new Error(`deriveBiomeSchemaName: biomeId "${biomeId}" sanitises to an empty identifier`);
|
|
21
12
|
}
|
|
22
13
|
const isDefaultKey = dbKey === undefined || dbKey === '' || dbKey === exports.DEFAULT_BIOME_DB_KEY;
|
|
23
|
-
const sanitizedDbKey = isDefaultKey ? '' :
|
|
14
|
+
const sanitizedDbKey = isDefaultKey ? '' : (0, identifier_1.sanitizeIdentifierSegment)(dbKey);
|
|
24
15
|
if (!isDefaultKey && sanitizedDbKey.length === 0) {
|
|
25
16
|
throw new Error(`deriveBiomeSchemaName: dbKey "${dbKey}" sanitises to an empty identifier`);
|
|
26
17
|
}
|
|
27
18
|
const candidate = isDefaultKey
|
|
28
19
|
? `${SCHEMA_PREFIX}_${sanitizedBiomeId}`
|
|
29
20
|
: `${SCHEMA_PREFIX}_${sanitizedBiomeId}__${sanitizedDbKey}`;
|
|
30
|
-
if (candidate.length <= MAX_IDENTIFIER_LENGTH) {
|
|
31
|
-
return candidate;
|
|
32
|
-
}
|
|
33
21
|
const hashParts = isDefaultKey ? [biomeId] : [biomeId, dbKey];
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
.
|
|
37
|
-
.
|
|
38
|
-
|
|
39
|
-
const trimmedPrefix = candidate
|
|
40
|
-
.slice(0, maxPrefixLength)
|
|
41
|
-
.replace(/_+$/g, '');
|
|
42
|
-
return `${trimmedPrefix}_${hash}`;
|
|
22
|
+
return (0, identifier_1.fitIdentifier)({
|
|
23
|
+
candidate,
|
|
24
|
+
maxLength: identifier_1.POSTGRES_MAX_IDENTIFIER_LENGTH,
|
|
25
|
+
hashInput: hashParts.join(':'),
|
|
26
|
+
});
|
|
43
27
|
}
|
|
44
28
|
//# sourceMappingURL=schema-name.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-name.js","sourceRoot":"","sources":["../../src/lib/schema-name.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"schema-name.js","sourceRoot":"","sources":["../../src/lib/schema-name.ts"],"names":[],"mappings":";;;AA8BA,sDA+BC;AA7DD,6CAIsB;AAMT,QAAA,oBAAoB,GAAG,SAAS,CAAC;AAE9C,MAAM,aAAa,GAAG,OAAO,CAAC;AAkB9B,SAAgB,qBAAqB,CAAC,OAAe,EAAE,KAAc;IACnE,MAAM,gBAAgB,GAAG,IAAA,sCAAyB,EAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,mCAAmC,OAAO,oCAAoC,CAC/E,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAChB,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,4BAAoB,CAAC;IACxE,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAA,sCAAyB,EAAC,KAAK,CAAC,CAAC;IAE5E,IAAI,CAAC,YAAY,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,iCAAiC,KAAK,oCAAoC,CAC3E,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,YAAY;QAC5B,CAAC,CAAC,GAAG,aAAa,IAAI,gBAAgB,EAAE;QACxC,CAAC,CAAC,GAAG,aAAa,IAAI,gBAAgB,KAAK,cAAc,EAAE,CAAC;IAI9D,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAe,CAAC,CAAC;IAExE,OAAO,IAAA,0BAAa,EAAC;QACnB,SAAS;QACT,SAAS,EAAE,2CAA8B;QACzC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;KAC/B,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xemahq/biome-database-nest",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "Layer 1 SDK that centralizes ALL database concerns for Xema biome services. Provides the single correct construction of a schema-qualified Prisma driver-adapter (the second-arg `{ schema }` that makes `@prisma/adapter-pg` qualify `biome_<id>.<table>` instead of `public.<table>`), the per-biome schema-naming convention, env/control-plane config resolution, and a boot-time bootstrap that creates the schema and runs migrations. Biomes carry zero DB boilerplate.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Neuralchowder Inc. <developer@xema.dev> (https://xema.dev)",
|
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
"@types/node": "25.2.3",
|
|
29
29
|
"@types/pg": "^8.16.0",
|
|
30
30
|
"@xemahq/identity-client": "^0.3.5",
|
|
31
|
-
"@xemahq/kernel-contracts": "^0.
|
|
31
|
+
"@xemahq/kernel-contracts": "^0.52.0",
|
|
32
32
|
"@xemahq/xema-decorators": "^0.2.0",
|
|
33
33
|
"jest": "^30.3.0",
|
|
34
34
|
"prettier": "3.6.2",
|
|
35
35
|
"ts-jest": "^29.4.9",
|
|
36
36
|
"typescript": "5.9.3",
|
|
37
|
-
"@xemahq/service-registry-nest": "0.
|
|
37
|
+
"@xemahq/service-registry-nest": "0.5.0"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
40
|
"@nestjs/common": "^10 || ^11",
|