@happyvertical/smrt-core 0.51.24 → 0.51.25
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/AGENTS.md +8 -0
- package/dist/index.js +1 -1
- package/dist/manifest/manifest-loader.d.ts +0 -25
- package/dist/manifest/manifest-loader.d.ts.map +1 -1
- package/dist/manifest/manifest-loader.js +21 -8
- package/dist/manifest/manifest-loader.js.map +1 -1
- package/dist/manifest/static-manifest.js +1 -1
- package/dist/manifest/static-manifest.js.map +1 -1
- package/dist/manifest/store.d.ts.map +1 -1
- package/dist/manifest/store.js +7 -2
- package/dist/manifest/store.js.map +1 -1
- package/dist/manifest.json +1 -1
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +26 -26
- package/dist/object.js.map +1 -1
- package/dist/registry/class-registration.d.ts.map +1 -1
- package/dist/registry/class-registration.js +31 -11
- package/dist/registry/class-registration.js.map +1 -1
- package/dist/registry/inheritance-resolver.js +1 -1
- package/dist/registry/name-resolver.d.ts.map +1 -1
- package/dist/registry/name-resolver.js +11 -0
- package/dist/registry/name-resolver.js.map +1 -1
- package/dist/registry/schema-builder.d.ts.map +1 -1
- package/dist/registry/schema-builder.js +71 -31
- package/dist/registry/schema-builder.js.map +1 -1
- package/dist/registry/shared-state.js +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +11 -7
- package/dist/registry.js.map +1 -1
- package/dist/scanner/manifest-generator.js +1 -1
- package/dist/smrt-knowledge.json +5 -5
- package/dist/testing/database.js +1 -1
- package/dist/utils/stack-frames.d.ts +7 -0
- package/dist/utils/stack-frames.d.ts.map +1 -1
- package/dist/utils/stack-frames.js +21 -2
- package/dist/utils/stack-frames.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"class-registration.d.ts","sourceRoot":"","sources":["../../src/registry/class-registration.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAKV,qBAAqB,EAGtB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"class-registration.d.ts","sourceRoot":"","sources":["../../src/registry/class-registration.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAKV,qBAAqB,EAGtB,MAAM,qBAAqB,CAAC;AA0C7B,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAqiBpB;;;;GAIG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,OAAO,UAAU,EACvB,MAAM,GAAE,iBAAsB,GAC7B,IAAI,CAON;AAy7BD,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAMlB,qBAAqB,EAAE,WAAW,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC,GAC3E,IAAI,CAeN;AA+BD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EACpC,kBAAkB,EAAE,eAAe,CAAC,oBAAoB,CAAC,GAAG,SAAS,GACpE,IAAI,CAyCN;AAoHD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,eAAe,EACzB,gBAAgB,CAAC,EAAE;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GACA,IAAI,CA4CN;AA2KD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,qBAAqB,EAChC,mBAAmB,CAAC,EAAE,MAAM,GAC3B,IAAI,CAQN"}
|
|
@@ -3,11 +3,11 @@ import { toSnakeCase } from "../utils/naming.js";
|
|
|
3
3
|
import { declareChangeFeedSensitiveTable, setChangeFeedSensitiveClassResolver } from "../change-feed-sensitivity.js";
|
|
4
4
|
import { bumpRegistryGeneration } from "./generation.js";
|
|
5
5
|
import { createQualifiedName, isQualifiedName } from "../utils/qualified-names.js";
|
|
6
|
-
import { cloneManifestSchemaColumns } from "../manifest/store.js";
|
|
7
6
|
import { getClasses, getCollections, getConstructorFieldDecorators, getConstructorIndex, getConstructorTenantScopedDeclarations, getInheritanceCache, getLegacyFieldDecorators, getSourceFileFromStack, getStiSiblingsLoaded, verboseLog } from "./shared-state.js";
|
|
8
|
-
import {
|
|
9
|
-
import { buildInheritanceChain } from "./inheritance-resolver.js";
|
|
7
|
+
import { cloneManifestSchemaColumns } from "../manifest/store.js";
|
|
10
8
|
import { discoverManifestSync, discoverSTISiblingsSync, getPackageName, lookupInManifest } from "../manifest/manifest-loader.js";
|
|
9
|
+
import { findClass, findClassesByName, getCanonicalClassName, hasClassCaseInsensitive, qualifyExtendsName } from "./name-resolver.js";
|
|
10
|
+
import { buildInheritanceChain } from "./inheritance-resolver.js";
|
|
11
11
|
import { compileValidators } from "./validator.js";
|
|
12
12
|
import { tableNameFromClass } from "../utils.js";
|
|
13
13
|
import { SmrtObject } from "../object.js";
|
|
@@ -194,9 +194,22 @@ function applyManifestCollisionPolicy(args) {
|
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
196
|
function resolveTableName(ctor, name, config) {
|
|
197
|
-
const manifestEntry = config._manifest ? lookupRegistrationManifest(config._manifest, name, config.packageName, config._manifestKey) : discoverManifestSync(name);
|
|
197
|
+
const manifestEntry = config._manifest ? lookupRegistrationManifest(config._manifest, name, config.packageName, config._manifestKey) : discoverManifestSync(config.packageName ? createQualifiedName(config.packageName, name) : name);
|
|
198
198
|
return manifestEntry?.schema?.tableName || manifestEntry?.decoratorConfig?.tableName || config.tableName || tableNameFromClass(ctor);
|
|
199
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* Whether `packageName` itself declares the class `qualifiedKey` names: it is
|
|
202
|
+
* registered under that key (a manifest stub or an earlier registration), or
|
|
203
|
+
* a manifest owned by that package describes it. A stack-derived package is
|
|
204
|
+
* only trusted as a class's identity on this evidence — a consumer bundle
|
|
205
|
+
* that inlined a dependency reports the consumer's package, whose manifest
|
|
206
|
+
* describes the dependency's classes under the dependency's name (#3098).
|
|
207
|
+
*/
|
|
208
|
+
function packageDeclaresClass(packageName, qualifiedKey) {
|
|
209
|
+
if (getClasses().has(qualifiedKey)) return true;
|
|
210
|
+
const entry = discoverManifestSync(qualifiedKey);
|
|
211
|
+
return !!entry && (entry.packageName === void 0 || entry.packageName === packageName);
|
|
212
|
+
}
|
|
200
213
|
function lookupRegistrationManifest(manifest, name, _packageName, manifestKey) {
|
|
201
214
|
if (manifestKey) return manifest.objects[manifestKey];
|
|
202
215
|
return lookupInManifest(manifest, name);
|
|
@@ -320,7 +333,8 @@ function registerUntracked(ctor, config = {}) {
|
|
|
320
333
|
existing.qualifiedName = nextPackageName ? createQualifiedName(nextPackageName, name) : void 0;
|
|
321
334
|
const nextTableName = resolveTableName(ctor, name, {
|
|
322
335
|
...existing.config,
|
|
323
|
-
...config
|
|
336
|
+
...config,
|
|
337
|
+
...nextPackageName ? { packageName: nextPackageName } : {}
|
|
324
338
|
});
|
|
325
339
|
existing.config = {
|
|
326
340
|
...existing.config,
|
|
@@ -385,16 +399,18 @@ function registerUntracked(ctor, config = {}) {
|
|
|
385
399
|
upsertExistingEntry(constructorKey, constructorEntry);
|
|
386
400
|
return;
|
|
387
401
|
}
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
402
|
+
const ownQualifiedKey = newPackageName ? createQualifiedName(newPackageName, name) : void 0;
|
|
403
|
+
const ownPackageDeclaresClass = !!ownQualifiedKey && !!newPackageName && (!!explicitPackageName || packageDeclaresClass(newPackageName, ownQualifiedKey));
|
|
404
|
+
const belongsToAnotherPackage = (existing) => ownPackageDeclaresClass && !!existing.packageName && existing.packageName !== newPackageName;
|
|
405
|
+
const exactExisting = getClasses().get(name);
|
|
406
|
+
if (exactExisting && !belongsToAnotherPackage(exactExisting)) {
|
|
391
407
|
if (applyRegisterCollisionPolicy({
|
|
392
408
|
ctor,
|
|
393
409
|
name,
|
|
394
410
|
newPackageName,
|
|
395
411
|
newSourceFile,
|
|
396
412
|
newInBundledContext,
|
|
397
|
-
existing,
|
|
413
|
+
existing: exactExisting,
|
|
398
414
|
existingKey: name,
|
|
399
415
|
matchKind: "exact-key",
|
|
400
416
|
upsertExistingEntry
|
|
@@ -406,6 +422,7 @@ function registerUntracked(ctor, config = {}) {
|
|
|
406
422
|
const nameMatches = existing.name?.toLowerCase() === lowerName;
|
|
407
423
|
if (!(keyMatches || nameMatches) || existingKey === name) continue;
|
|
408
424
|
if (explicitPackageName && existing.packageName && explicitPackageName !== existing.packageName && isQualifiedName(existingKey)) continue;
|
|
425
|
+
if (belongsToAnotherPackage(existing)) continue;
|
|
409
426
|
if (applyRegisterCollisionPolicy({
|
|
410
427
|
ctor,
|
|
411
428
|
name,
|
|
@@ -422,7 +439,7 @@ function registerUntracked(ctor, config = {}) {
|
|
|
422
439
|
const sourceFilePath = getSourceFileFromStack();
|
|
423
440
|
let manifestEntry;
|
|
424
441
|
if (config._manifest) manifestEntry = lookupRegistrationManifest(config._manifest, name, explicitPackageName, config._manifestKey);
|
|
425
|
-
if (!manifestEntry) manifestEntry = discoverManifestSync(name);
|
|
442
|
+
if (!manifestEntry) manifestEntry = ownQualifiedKey && ownPackageDeclaresClass ? discoverManifestSync(ownQualifiedKey) ?? (findClassesByName(name).some((candidate) => !!candidate.packageName && candidate.packageName !== newPackageName) ? void 0 : discoverManifestSync(name)) : discoverManifestSync(name);
|
|
426
443
|
const runtimeTenantScopedDeclaration = getConstructorTenantScopedDeclarations().get(ctor);
|
|
427
444
|
if (manifestEntry && config.tenantScoped === void 0 && normalizeTenantScopedConfig(manifestEntry.decoratorConfig?.tenantScoped) === void 0 && runtimeTenantScopedDeclaration) throw new ConfigurationError(`Manifest for '${name}' omits or disables tenantScoped but its runtime constructor is decorated with @TenantScoped(). Regenerate the manifest so tenancy schema and runtime enforcement agree.`, "CONFIG_TENANT_MANIFEST_CONFLICT");
|
|
428
445
|
const fields = /* @__PURE__ */ new Map();
|
|
@@ -552,7 +569,10 @@ function registerUntracked(ctor, config = {}) {
|
|
|
552
569
|
if (childStrategy !== void 0 && parentStrategy !== childStrategy) throw ConfigurationError.incompatibleStrategy(name, childStrategy, parentName, parentStrategy);
|
|
553
570
|
}
|
|
554
571
|
}
|
|
555
|
-
const tableName = resolveTableName(ctor, name,
|
|
572
|
+
const tableName = resolveTableName(ctor, name, {
|
|
573
|
+
...config,
|
|
574
|
+
...ownPackageDeclaresClass && newPackageName ? { packageName: newPackageName } : {}
|
|
575
|
+
});
|
|
556
576
|
setSmrtTableName(ctor, tableName);
|
|
557
577
|
let schema;
|
|
558
578
|
if (manifestEntry?.schema) {
|