@happyvertical/smrt-core 0.51.39 → 0.53.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/AGENTS.md +9 -0
- package/README.md +8 -2
- package/agents/model-moves.md +114 -0
- package/agents/object-runtime.md +3 -1
- package/agents/run-once.md +16 -7
- package/agents/schema-paths.md +79 -0
- package/dist/cascade.d.ts.map +1 -1
- package/dist/cascade.js +6 -3
- package/dist/cascade.js.map +1 -1
- package/dist/collection.d.ts +10 -1
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +14 -4
- package/dist/collection.js.map +1 -1
- package/dist/errors.d.ts +18 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +21 -0
- package/dist/errors.js.map +1 -1
- package/dist/generators/preflight-route.d.ts.map +1 -1
- package/dist/generators/preflight-route.js +1 -1
- package/dist/generators/preflight-route.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/knowledge.d.ts.map +1 -1
- package/dist/knowledge.js +3 -0
- package/dist/knowledge.js.map +1 -1
- package/dist/manifest/static-manifest.d.ts.map +1 -1
- package/dist/manifest/static-manifest.js +9 -1
- package/dist/manifest/static-manifest.js.map +1 -1
- package/dist/manifest/store.js +1 -1
- package/dist/manifest/store.js.map +1 -1
- package/dist/manifest.json +9 -1
- package/dist/migrations/differ.d.ts +56 -0
- package/dist/migrations/differ.d.ts.map +1 -1
- package/dist/migrations/differ.js +152 -27
- package/dist/migrations/differ.js.map +1 -1
- package/dist/migrations/index.d.ts +1 -0
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +2 -1
- package/dist/migrations/null-equal-indexes.js +1 -1
- package/dist/migrations/orchestrate.d.ts +7 -0
- package/dist/migrations/orchestrate.d.ts.map +1 -1
- package/dist/migrations/orchestrate.js +4 -2
- package/dist/migrations/orchestrate.js.map +1 -1
- package/dist/migrations/qualified-name-aliases.d.ts +134 -0
- package/dist/migrations/qualified-name-aliases.d.ts.map +1 -0
- package/dist/migrations/qualified-name-aliases.js +294 -0
- package/dist/migrations/qualified-name-aliases.js.map +1 -0
- package/dist/migrations/tracker.d.ts +29 -1
- package/dist/migrations/tracker.d.ts.map +1 -1
- package/dist/migrations/tracker.js +92 -7
- package/dist/migrations/tracker.js.map +1 -1
- package/dist/migrations.js +2 -1
- package/dist/object.d.ts +128 -0
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +333 -44
- package/dist/object.js.map +1 -1
- package/dist/polymorphic-association.d.ts +18 -0
- package/dist/polymorphic-association.d.ts.map +1 -1
- package/dist/polymorphic-association.js +27 -2
- package/dist/polymorphic-association.js.map +1 -1
- package/dist/registry/class-registration.d.ts.map +1 -1
- package/dist/registry/class-registration.js +27 -4
- package/dist/registry/class-registration.js.map +1 -1
- package/dist/registry/name-resolver.d.ts +8 -2
- package/dist/registry/name-resolver.d.ts.map +1 -1
- package/dist/registry/name-resolver.js +17 -8
- package/dist/registry/name-resolver.js.map +1 -1
- package/dist/registry/qualified-name-aliases.d.ts +109 -0
- package/dist/registry/qualified-name-aliases.d.ts.map +1 -0
- package/dist/registry/qualified-name-aliases.js +286 -0
- package/dist/registry/qualified-name-aliases.js.map +1 -0
- package/dist/registry/relationship-graph.d.ts.map +1 -1
- package/dist/registry/relationship-graph.js +1 -1
- package/dist/registry/relationship-graph.js.map +1 -1
- package/dist/registry/schema-builder.d.ts.map +1 -1
- package/dist/registry/schema-builder.js +7 -5
- package/dist/registry/schema-builder.js.map +1 -1
- package/dist/registry/types.d.ts +26 -0
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry.d.ts +127 -6
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +234 -14
- package/dist/registry.js.map +1 -1
- package/dist/scanner/index.d.ts +1 -1
- package/dist/scanner/index.d.ts.map +1 -1
- package/dist/scanner/manifest-generator.d.ts +14 -2
- package/dist/scanner/manifest-generator.d.ts.map +1 -1
- package/dist/scanner/manifest-generator.js +48 -9
- package/dist/scanner/manifest-generator.js.map +1 -1
- package/dist/scanner/types.d.ts +21 -0
- package/dist/scanner/types.d.ts.map +1 -1
- package/dist/scanner/types.js.map +1 -1
- package/dist/schema/conflict-target.d.ts +68 -11
- package/dist/schema/conflict-target.d.ts.map +1 -1
- package/dist/schema/conflict-target.js +75 -12
- package/dist/schema/conflict-target.js.map +1 -1
- package/dist/schema/foreign-key-ddl.d.ts +17 -1
- package/dist/schema/foreign-key-ddl.d.ts.map +1 -1
- package/dist/schema/foreign-key-ddl.js +29 -3
- package/dist/schema/foreign-key-ddl.js.map +1 -1
- package/dist/schema/foreign-key-policy.d.ts +8 -0
- package/dist/schema/foreign-key-policy.d.ts.map +1 -1
- package/dist/schema/foreign-key-policy.js +2 -1
- package/dist/schema/foreign-key-policy.js.map +1 -1
- package/dist/schema/generator.d.ts +7 -0
- package/dist/schema/generator.d.ts.map +1 -1
- package/dist/schema/generator.js +18 -10
- package/dist/schema/generator.js.map +1 -1
- package/dist/schema/text-cast-probe.d.ts +50 -1
- package/dist/schema/text-cast-probe.d.ts.map +1 -1
- package/dist/schema/text-cast-probe.js +46 -11
- package/dist/schema/text-cast-probe.js.map +1 -1
- package/dist/schema/types.d.ts +6 -0
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/scripts/browser-plain-json-regression.mjs +4 -1
- package/dist/smrt-knowledge.json +22 -11
- package/dist/utils/qualified-names.d.ts +11 -0
- package/dist/utils/qualified-names.d.ts.map +1 -1
- package/dist/utils/qualified-names.js +21 -1
- package/dist/utils/qualified-names.js.map +1 -1
- package/package.json +11 -11
package/dist/registry.d.ts
CHANGED
|
@@ -511,7 +511,56 @@ export declare class ObjectRegistry {
|
|
|
511
511
|
* }
|
|
512
512
|
* ```
|
|
513
513
|
*/
|
|
514
|
-
static getClassByQualifiedName(qualifiedName: string
|
|
514
|
+
static getClassByQualifiedName(qualifiedName: string, options?: {
|
|
515
|
+
source?: string;
|
|
516
|
+
}): RegisteredClass | undefined;
|
|
517
|
+
/**
|
|
518
|
+
* Every deprecated qualified name declared through
|
|
519
|
+
* `@smrt({ previousQualifiedNames })`, mapped to its class's CURRENT
|
|
520
|
+
* qualified name and sorted by old name (#3338). Aliases are lookup bridges
|
|
521
|
+
* only: they never appear in {@link getAllClasses} or any other iteration.
|
|
522
|
+
*/
|
|
523
|
+
static getQualifiedNameAliases(): Map<string, string>;
|
|
524
|
+
/**
|
|
525
|
+
* The current qualified name for `name` — itself when it is a live
|
|
526
|
+
* qualified name, the class's current name when it is a deprecated alias
|
|
527
|
+
* (logging the one-time deprecation warning), `undefined` otherwise —
|
|
528
|
+
* including for every simple (unqualified) name (#3338).
|
|
529
|
+
* Use it to normalize a stored or declared name before writing it.
|
|
530
|
+
*/
|
|
531
|
+
static resolveQualifiedName(name: string, options?: {
|
|
532
|
+
source?: string;
|
|
533
|
+
}): string | undefined;
|
|
534
|
+
/**
|
|
535
|
+
* {@link resolveQualifiedName}, also covering a class that is not
|
|
536
|
+
* registered yet: on a qualified miss it lazily loads the name from its
|
|
537
|
+
* package's manifest — or, for a deprecated name, from the manifest of the
|
|
538
|
+
* class that now declares it — before resolving (#3338). A genuinely
|
|
539
|
+
* unknown name still returns `undefined`.
|
|
540
|
+
*/
|
|
541
|
+
static resolveQualifiedNameAsync(name: string, options?: {
|
|
542
|
+
source?: string;
|
|
543
|
+
}): Promise<string | undefined>;
|
|
544
|
+
/**
|
|
545
|
+
* {@link getEquivalentQualifiedNames}, lazily loading a qualified name's
|
|
546
|
+
* class from its manifest first when it is not registered yet (#3338), so
|
|
547
|
+
* stored-name filters see a moved class's old names before anything else
|
|
548
|
+
* has registered it.
|
|
549
|
+
*/
|
|
550
|
+
static getEquivalentQualifiedNamesAsync(name: string, options?: {
|
|
551
|
+
source?: string;
|
|
552
|
+
}): Promise<string[]>;
|
|
553
|
+
/**
|
|
554
|
+
* Every qualified name stored data may use for the class `name` resolves
|
|
555
|
+
* to: its current qualified name first, then its declared
|
|
556
|
+
* `previousQualifiedNames` (#3338). Readers that match persisted names
|
|
557
|
+
* (e.g. a polymorphic `metaType` filter) use this so rows written before
|
|
558
|
+
* and after a model move both match. A simple (unqualified) or
|
|
559
|
+
* unresolvable `name` is returned alone.
|
|
560
|
+
*/
|
|
561
|
+
static getEquivalentQualifiedNames(name: string, options?: {
|
|
562
|
+
source?: string;
|
|
563
|
+
}): string[];
|
|
515
564
|
/**
|
|
516
565
|
* Get a registered class by package name and class name.
|
|
517
566
|
* This is a convenience method for looking up classes by their namespace components.
|
|
@@ -635,6 +684,14 @@ export declare class ObjectRegistry {
|
|
|
635
684
|
* collisions by preferring qualified class names where available.
|
|
636
685
|
*/
|
|
637
686
|
static getQualifiedClassNames(): string[];
|
|
687
|
+
/**
|
|
688
|
+
* Old-name claims and defined class names across every manifest this
|
|
689
|
+
* process can see: loaded caches AND every discoverable package's manifest, which this
|
|
690
|
+
* also loads into the cache so registration-time checks see it (#3338).
|
|
691
|
+
* Rebuilt only when the registry generation moves, so repeated lookups of
|
|
692
|
+
* a stale or unknown old name do not rescan every installed manifest.
|
|
693
|
+
*/
|
|
694
|
+
private static loadManifestAliasInventory;
|
|
638
695
|
/**
|
|
639
696
|
* Try to load and register a class from external SMRT packages
|
|
640
697
|
*
|
|
@@ -889,7 +946,7 @@ export declare class ObjectRegistry {
|
|
|
889
946
|
* const fields = ObjectRegistry.getFields('Place'); // Now has fields
|
|
890
947
|
* ```
|
|
891
948
|
*/
|
|
892
|
-
static ensureManifestLoaded(
|
|
949
|
+
static ensureManifestLoaded(requestedName: string): Promise<void>;
|
|
893
950
|
/**
|
|
894
951
|
* Get configuration for a registered class
|
|
895
952
|
*/
|
|
@@ -1275,10 +1332,11 @@ export declare class ObjectRegistry {
|
|
|
1275
1332
|
* primary-key column(s) — the only unique key such a table has;
|
|
1276
1333
|
* 4. the strategy default — CTI `['slug', 'context']`, STI
|
|
1277
1334
|
* `['slug', 'context', '_meta_type']` — led by the tenant column when
|
|
1278
|
-
* the schema owner is tenant-scoped (#2360)
|
|
1279
|
-
*
|
|
1280
|
-
*
|
|
1281
|
-
*
|
|
1335
|
+
* the schema owner is tenant-scoped (#2360) or carries an undeclared
|
|
1336
|
+
* `tenantId` field ({@link ObjectRegistry.getOwnershipTenantColumn}):
|
|
1337
|
+
* tenant-owned rows are unique per tenant, and without the tenant column
|
|
1338
|
+
* a second tenant's `save()` of the same natural key updated the first
|
|
1339
|
+
* tenant's row through `DO UPDATE SET`.
|
|
1282
1340
|
*
|
|
1283
1341
|
* STI subclasses share a table, so the discriminator participates in
|
|
1284
1342
|
* identity — two subtypes can coexist with the same (slug, context). The
|
|
@@ -1307,6 +1365,69 @@ export declare class ObjectRegistry {
|
|
|
1307
1365
|
* ```
|
|
1308
1366
|
*/
|
|
1309
1367
|
static getConflictColumns(className: string): string[];
|
|
1368
|
+
/**
|
|
1369
|
+
* The column that owns a table's rows for natural-key identity: the
|
|
1370
|
+
* declared tenant column ({@link ObjectRegistry.getTenantColumn}), else
|
|
1371
|
+
* `tenant_id` when the schema owner has a `tenantId` field but declares no
|
|
1372
|
+
* tenancy — the shape a consumer registers with the tenancy interceptor at
|
|
1373
|
+
* runtime. The default conflict target and unique index lead with it, so a
|
|
1374
|
+
* second tenant's same-slug row is a second row rather than an upsert onto
|
|
1375
|
+
* the first tenant's. See `resolveOwnershipTenantColumn()`.
|
|
1376
|
+
*
|
|
1377
|
+
* @param className - Name of the class (simple or qualified)
|
|
1378
|
+
* @returns The snake_case ownership column, or `undefined`
|
|
1379
|
+
*/
|
|
1380
|
+
static getOwnershipTenantColumn(className: string): string | undefined;
|
|
1381
|
+
/**
|
|
1382
|
+
* Every typed reference (`@foreignKey` / `@crossPackageRef`) that points at
|
|
1383
|
+
* `className`, resolved the same way `SmrtObject.delete()` resolves them for
|
|
1384
|
+
* cascades: the referencing class, its table and column, and the resolved
|
|
1385
|
+
* `onDelete` action. Use it to re-point references before replacing one row
|
|
1386
|
+
* with another (a tag merge) instead of letting a delete cascade them away.
|
|
1387
|
+
*
|
|
1388
|
+
* @param className - Name of the referenced class (simple or qualified)
|
|
1389
|
+
*/
|
|
1390
|
+
static getIncomingReferences(className: string): Array<{
|
|
1391
|
+
className: string;
|
|
1392
|
+
tableName: string;
|
|
1393
|
+
column: string;
|
|
1394
|
+
onDelete: string;
|
|
1395
|
+
}>;
|
|
1396
|
+
/**
|
|
1397
|
+
* Runtime ownership-column sources (see
|
|
1398
|
+
* {@link ObjectRegistry.registerOwnershipColumnSource}).
|
|
1399
|
+
*/
|
|
1400
|
+
private static ownershipColumnSources;
|
|
1401
|
+
/**
|
|
1402
|
+
* Register a source of RUNTIME ownership columns: columns that record a
|
|
1403
|
+
* row's owner for a class whose manifest does not say so — the tenancy
|
|
1404
|
+
* package's `registerTenantScopedClass('Team', { field: 'organizationId' })`
|
|
1405
|
+
* is the canonical producer.
|
|
1406
|
+
*
|
|
1407
|
+
* Core reads these only to protect ownership on save
|
|
1408
|
+
* ({@link ObjectRegistry.getOwnershipColumns}); they never change the
|
|
1409
|
+
* conflict target or the schema, which are build-time contracts a runtime
|
|
1410
|
+
* registration cannot alter without breaking `ON CONFLICT` binding. The
|
|
1411
|
+
* source is consulted on every lookup, so registrations that bind later (a
|
|
1412
|
+
* selector registered before its class) or are removed take effect
|
|
1413
|
+
* immediately.
|
|
1414
|
+
*
|
|
1415
|
+
* @param source - maps a qualified class name to its runtime ownership
|
|
1416
|
+
* columns (snake_case), or `undefined` when it has none
|
|
1417
|
+
* @returns a disposer that removes the source
|
|
1418
|
+
*/
|
|
1419
|
+
static registerOwnershipColumnSource(source: (qualifiedName: string) => readonly string[] | undefined): () => void;
|
|
1420
|
+
/**
|
|
1421
|
+
* Every column that records a row's owner for natural-key save protection:
|
|
1422
|
+
* `tenant_id`, the declared tenant column, each `@tenantId`-marked field's
|
|
1423
|
+
* column, and every runtime ownership column a registered source reports
|
|
1424
|
+
* ({@link ObjectRegistry.registerOwnershipColumnSource}) — so a runtime
|
|
1425
|
+
* tenancy registration on a custom field (`organizationId`) is compared like
|
|
1426
|
+
* `tenant_id`.
|
|
1427
|
+
*
|
|
1428
|
+
* @param className - Name of the class (simple or qualified)
|
|
1429
|
+
*/
|
|
1430
|
+
static getOwnershipColumns(className: string): Set<string>;
|
|
1310
1431
|
/**
|
|
1311
1432
|
* The tenant column of the table a class writes to, or `undefined` when its
|
|
1312
1433
|
* schema owner (the STI root for a single-table hierarchy, the class itself
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/registry.js
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { ConfigurationError } from "./errors.js";
|
|
2
|
+
import { defaultConflictColumns, resolveOwnershipTenantColumn, resolveTenantColumn } from "./schema/conflict-target.js";
|
|
2
3
|
import { classnameToTablename, toSnakeCase } from "./utils/naming.js";
|
|
4
|
+
import { buildCascadePlan } from "./cascade.js";
|
|
3
5
|
import { applyOneToManyChildAccessors } from "./child-accessors.js";
|
|
4
6
|
import { applyPendingDecoratorRegistrations } from "./decorators/compatibility.js";
|
|
5
7
|
import { bumpRegistryGeneration, getRegistryGeneration } from "./registry/generation.js";
|
|
6
|
-
import { createQualifiedName, isQualifiedName, parseQualifiedName } from "./utils/qualified-names.js";
|
|
8
|
+
import { createQualifiedName, isQualifiedName, parseQualifiedName, readPreviousQualifiedNames } from "./utils/qualified-names.js";
|
|
7
9
|
import { LRUCache } from "./utils/lru-cache.js";
|
|
8
10
|
import { getClasses, getCollectionCache, getCollectionTableNames, getCollections, getConstructorFieldDecorators, getConstructorTenantScopedDeclarations, getDbInstanceIds, getDiscoveryAttemptCache, getFieldDecorators, getInheritanceCache, getLegacyFieldDecorators, getMethodDecorators, getNextDbId, getSourceFileFromStack, getStiSiblingsLoaded, setNextDbId, verboseLog } from "./registry/shared-state.js";
|
|
9
|
-
import { defaultConflictColumns, resolveTenantColumn } from "./schema/conflict-target.js";
|
|
10
11
|
import { clearRegistryDiagnostics, flushRegistryDiagnostics, getRegistryDiagnostics, recordRegistryDiagnostic } from "./registry/diagnostics.js";
|
|
11
|
-
import { cloneManifestSchemaColumns, discoverCachedManifestSync, getManifestCache, getNodeBuiltins, loadExternalManifestSyncWithNode } from "./manifest/store.js";
|
|
12
|
+
import { cloneManifestSchemaColumns, discoverCachedManifestSync, getLocalTestManifestCache, getManifestCache, getNodeBuiltins, getStaticManifestCache, getTestManifestCache, loadExternalManifestSyncWithNode } from "./manifest/store.js";
|
|
12
13
|
import { getDefaultCompositeSource } from "./manifest/sources/composite.js";
|
|
13
14
|
import { getPackageName } from "./manifest/manifest-loader.js";
|
|
14
15
|
import { ExplicitPathsManifestSource } from "./manifest/sources/explicit-paths.js";
|
|
16
|
+
import { collectManifestAliasInventory, getQualifiedNameAliasMap, lookupQualifiedNameAlias, resetQualifiedNameAliasWarnings, resolveManifestQualifiedNameAlias, warnDeprecatedQualifiedName } from "./registry/qualified-name-aliases.js";
|
|
15
17
|
import { findClass, findClassesByName, getAllClasses, getCanonicalClassName, getClass, getClassByConstructor, getClassByQualifiedName, getClassInPackage, getClassNames, getClassesByPackage, getClassesByVisibility, getPublicClasses, getQualifiedClassNames, hasClass, hasClassCaseInsensitive, resolveType } from "./registry/name-resolver.js";
|
|
16
18
|
import { getAllFields, getAllMethods, getInheritanceChain, mergeFieldConfigs } from "./registry/inheritance-resolver.js";
|
|
17
19
|
import { resolveCollectionCacheConfig } from "./registry/cache-config.js";
|
|
@@ -71,13 +73,18 @@ var manifestLoaderModule;
|
|
|
71
73
|
* not cached, so a transient failure is retried on the next call.
|
|
72
74
|
*/
|
|
73
75
|
function importManifestLoader() {
|
|
74
|
-
if (!manifestLoaderModule) manifestLoaderModule = import(getManifestLoaderSpecifier()).catch((error) => {
|
|
76
|
+
if (!manifestLoaderModule) manifestLoaderModule = (import.meta.url.endsWith(".ts") ? import(getManifestLoaderSpecifier()) : import("./manifest/index.js")).catch((error) => {
|
|
75
77
|
manifestLoaderModule = void 0;
|
|
76
78
|
throw error;
|
|
77
79
|
});
|
|
78
80
|
return manifestLoaderModule;
|
|
79
81
|
}
|
|
80
82
|
/**
|
|
83
|
+
* Lazy alias claim inventory (#3338), keyed to the registry generation it
|
|
84
|
+
* was built at. See `ObjectRegistry.loadManifestAliasInventory()`.
|
|
85
|
+
*/
|
|
86
|
+
var manifestAliasInventory;
|
|
87
|
+
/**
|
|
81
88
|
* Registered classes whose manifest has been reconciled, keyed to the registry
|
|
82
89
|
* generation it was reconciled at (#3047). `ensureManifestLoaded()` sits on
|
|
83
90
|
* every hydration path; once a class agrees with its manifest there is nothing
|
|
@@ -99,11 +106,17 @@ function applyManifestFieldColumnMetadata(columns, fieldEntries) {
|
|
|
99
106
|
const columnName = toSnakeCase(fieldName);
|
|
100
107
|
const existingColumn = columns[columnName];
|
|
101
108
|
if (!existingColumn) continue;
|
|
102
|
-
|
|
109
|
+
const column = {
|
|
103
110
|
...existingColumn,
|
|
104
111
|
...sqlType ? { type: String(sqlType).toUpperCase() } : {},
|
|
105
112
|
...referenceKind ? { referenceKind } : {}
|
|
106
113
|
};
|
|
114
|
+
if (String(column.type).toUpperCase() === "UUID") {
|
|
115
|
+
const loose = column;
|
|
116
|
+
if (loose.default === "") delete loose.default;
|
|
117
|
+
if (loose.defaultValue === "") delete loose.defaultValue;
|
|
118
|
+
}
|
|
119
|
+
columns[columnName] = column;
|
|
107
120
|
}
|
|
108
121
|
}
|
|
109
122
|
async function discoverInstalledSmrtPackages() {
|
|
@@ -143,6 +156,22 @@ function resolveManifestByUpwardSearch(builtins, missingPath) {
|
|
|
143
156
|
return null;
|
|
144
157
|
}
|
|
145
158
|
/**
|
|
159
|
+
* The absolute filesystem path behind a Vite dev-server URL
|
|
160
|
+
* (`http(s)://host/@fs/<absolute path>`), or `null` for any other string.
|
|
161
|
+
*/
|
|
162
|
+
function viteFsUrlToPath(urlString) {
|
|
163
|
+
if (!/^https?:\/\//i.test(urlString)) return null;
|
|
164
|
+
let pathname;
|
|
165
|
+
try {
|
|
166
|
+
pathname = new URL(urlString).pathname;
|
|
167
|
+
} catch {
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
if (!pathname.startsWith("/@fs/")) return null;
|
|
171
|
+
const decoded = decodeURIComponent(pathname.slice(4));
|
|
172
|
+
return /^\/[A-Za-z]:\//.test(decoded) ? decoded.slice(1) : decoded;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
146
175
|
* Central registry for all SMRT objects
|
|
147
176
|
*
|
|
148
177
|
* Uses globalThis for cross-module state sharing, ensuring all module instances
|
|
@@ -725,8 +754,69 @@ var ObjectRegistry = class ObjectRegistry {
|
|
|
725
754
|
* }
|
|
726
755
|
* ```
|
|
727
756
|
*/
|
|
728
|
-
static getClassByQualifiedName(qualifiedName) {
|
|
729
|
-
return getClassByQualifiedName(qualifiedName);
|
|
757
|
+
static getClassByQualifiedName(qualifiedName, options = {}) {
|
|
758
|
+
return getClassByQualifiedName(qualifiedName, options.source);
|
|
759
|
+
}
|
|
760
|
+
/**
|
|
761
|
+
* Every deprecated qualified name declared through
|
|
762
|
+
* `@smrt({ previousQualifiedNames })`, mapped to its class's CURRENT
|
|
763
|
+
* qualified name and sorted by old name (#3338). Aliases are lookup bridges
|
|
764
|
+
* only: they never appear in {@link getAllClasses} or any other iteration.
|
|
765
|
+
*/
|
|
766
|
+
static getQualifiedNameAliases() {
|
|
767
|
+
return getQualifiedNameAliasMap();
|
|
768
|
+
}
|
|
769
|
+
/**
|
|
770
|
+
* The current qualified name for `name` — itself when it is a live
|
|
771
|
+
* qualified name, the class's current name when it is a deprecated alias
|
|
772
|
+
* (logging the one-time deprecation warning), `undefined` otherwise —
|
|
773
|
+
* including for every simple (unqualified) name (#3338).
|
|
774
|
+
* Use it to normalize a stored or declared name before writing it.
|
|
775
|
+
*/
|
|
776
|
+
static resolveQualifiedName(name, options = {}) {
|
|
777
|
+
if (!name.includes(":")) return void 0;
|
|
778
|
+
const registered = getClassByQualifiedName(name, options.source);
|
|
779
|
+
if (!registered) return void 0;
|
|
780
|
+
return registered.qualifiedName ?? name;
|
|
781
|
+
}
|
|
782
|
+
/**
|
|
783
|
+
* {@link resolveQualifiedName}, also covering a class that is not
|
|
784
|
+
* registered yet: on a qualified miss it lazily loads the name from its
|
|
785
|
+
* package's manifest — or, for a deprecated name, from the manifest of the
|
|
786
|
+
* class that now declares it — before resolving (#3338). A genuinely
|
|
787
|
+
* unknown name still returns `undefined`.
|
|
788
|
+
*/
|
|
789
|
+
static async resolveQualifiedNameAsync(name, options = {}) {
|
|
790
|
+
if (!name.includes(":")) return void 0;
|
|
791
|
+
const resolved = ObjectRegistry.resolveQualifiedName(name, options);
|
|
792
|
+
if (resolved) return resolved;
|
|
793
|
+
if (!await ObjectRegistry.tryLoadFromExternalPackage(name)) return;
|
|
794
|
+
return ObjectRegistry.resolveQualifiedName(name, options);
|
|
795
|
+
}
|
|
796
|
+
/**
|
|
797
|
+
* {@link getEquivalentQualifiedNames}, lazily loading a qualified name's
|
|
798
|
+
* class from its manifest first when it is not registered yet (#3338), so
|
|
799
|
+
* stored-name filters see a moved class's old names before anything else
|
|
800
|
+
* has registered it.
|
|
801
|
+
*/
|
|
802
|
+
static async getEquivalentQualifiedNamesAsync(name, options = {}) {
|
|
803
|
+
if (!name.includes(":")) return [name];
|
|
804
|
+
await ObjectRegistry.resolveQualifiedNameAsync(name, options);
|
|
805
|
+
return ObjectRegistry.getEquivalentQualifiedNames(name, options);
|
|
806
|
+
}
|
|
807
|
+
/**
|
|
808
|
+
* Every qualified name stored data may use for the class `name` resolves
|
|
809
|
+
* to: its current qualified name first, then its declared
|
|
810
|
+
* `previousQualifiedNames` (#3338). Readers that match persisted names
|
|
811
|
+
* (e.g. a polymorphic `metaType` filter) use this so rows written before
|
|
812
|
+
* and after a model move both match. A simple (unqualified) or
|
|
813
|
+
* unresolvable `name` is returned alone.
|
|
814
|
+
*/
|
|
815
|
+
static getEquivalentQualifiedNames(name, options = {}) {
|
|
816
|
+
if (!name.includes(":")) return [name];
|
|
817
|
+
const registered = getClassByQualifiedName(name, options.source);
|
|
818
|
+
if (!registered?.qualifiedName) return [name];
|
|
819
|
+
return [registered.qualifiedName, ...readPreviousQualifiedNames(registered.config).filter((alias) => alias !== registered.qualifiedName)];
|
|
730
820
|
}
|
|
731
821
|
/**
|
|
732
822
|
* Get a registered class by package name and class name.
|
|
@@ -870,6 +960,34 @@ var ObjectRegistry = class ObjectRegistry {
|
|
|
870
960
|
return getQualifiedClassNames();
|
|
871
961
|
}
|
|
872
962
|
/**
|
|
963
|
+
* Old-name claims and defined class names across every manifest this
|
|
964
|
+
* process can see: loaded caches AND every discoverable package's manifest, which this
|
|
965
|
+
* also loads into the cache so registration-time checks see it (#3338).
|
|
966
|
+
* Rebuilt only when the registry generation moves, so repeated lookups of
|
|
967
|
+
* a stale or unknown old name do not rescan every installed manifest.
|
|
968
|
+
*/
|
|
969
|
+
static async loadManifestAliasInventory(loadExternalManifest) {
|
|
970
|
+
if (manifestAliasInventory?.generation === getRegistryGeneration()) return manifestAliasInventory.inventory;
|
|
971
|
+
let packages = [];
|
|
972
|
+
try {
|
|
973
|
+
packages = await discoverInstalledSmrtPackages();
|
|
974
|
+
} catch (error) {
|
|
975
|
+
verboseLog(`[ObjectRegistry] Package discovery failed while indexing qualified-name aliases: ${error instanceof Error ? error.message : String(error)}`);
|
|
976
|
+
}
|
|
977
|
+
for (const packageName of packages) await loadExternalManifest(packageName);
|
|
978
|
+
const inventory = collectManifestAliasInventory([
|
|
979
|
+
...getManifestCache().values(),
|
|
980
|
+
getStaticManifestCache(),
|
|
981
|
+
getTestManifestCache(),
|
|
982
|
+
getLocalTestManifestCache()
|
|
983
|
+
]);
|
|
984
|
+
manifestAliasInventory = {
|
|
985
|
+
generation: getRegistryGeneration(),
|
|
986
|
+
inventory
|
|
987
|
+
};
|
|
988
|
+
return inventory;
|
|
989
|
+
}
|
|
990
|
+
/**
|
|
873
991
|
* Try to load and register a class from external SMRT packages
|
|
874
992
|
*
|
|
875
993
|
* This method attempts to auto-discover classes from @happyvertical/smrt-* packages
|
|
@@ -907,6 +1025,16 @@ var ObjectRegistry = class ObjectRegistry {
|
|
|
907
1025
|
});
|
|
908
1026
|
}
|
|
909
1027
|
if (matches.length === 0) {
|
|
1028
|
+
if (requestedPackageName) {
|
|
1029
|
+
const current = resolveManifestQualifiedNameAlias(await ObjectRegistry.loadManifestAliasInventory(loadExternalManifest), className);
|
|
1030
|
+
if (current && current !== className) {
|
|
1031
|
+
if (await ObjectRegistry.tryLoadFromExternalPackage(current)) {
|
|
1032
|
+
const registered = lookupQualifiedNameAlias(className);
|
|
1033
|
+
if (registered) warnDeprecatedQualifiedName(className, registered.qualifiedName ?? current, "manifest alias index (lazy load)");
|
|
1034
|
+
return true;
|
|
1035
|
+
}
|
|
1036
|
+
}
|
|
1037
|
+
}
|
|
910
1038
|
verboseLog(`[ObjectRegistry] ❌ Could not find ${className} in any SMRT package`);
|
|
911
1039
|
return false;
|
|
912
1040
|
}
|
|
@@ -916,6 +1044,7 @@ var ObjectRegistry = class ObjectRegistry {
|
|
|
916
1044
|
});
|
|
917
1045
|
const { manifest, packageName, objectDef } = matches[0];
|
|
918
1046
|
verboseLog(`[ObjectRegistry] ✅ Found ${className} in ${packageName} manifest`);
|
|
1047
|
+
if (Object.values(manifest.objects).some((def) => readPreviousQualifiedNames(def?.decoratorConfig).length > 0)) await ObjectRegistry.loadManifestAliasInventory(loadExternalManifest);
|
|
919
1048
|
ObjectRegistry.registerFromManifest(objectDef.className || requestedClassName, objectDef, manifest.packageName);
|
|
920
1049
|
const childClassName = objectDef.className || requestedClassName;
|
|
921
1050
|
if (objectDef.extends && objectDef.extends !== childClassName) {
|
|
@@ -1069,8 +1198,10 @@ var ObjectRegistry = class ObjectRegistry {
|
|
|
1069
1198
|
let manifest = null;
|
|
1070
1199
|
try {
|
|
1071
1200
|
const urlString = manifestUrl instanceof URL ? manifestUrl.href : manifestUrl;
|
|
1201
|
+
const devServerPath = viteFsUrlToPath(urlString);
|
|
1072
1202
|
let filePath;
|
|
1073
|
-
if (
|
|
1203
|
+
if (devServerPath) filePath = devServerPath;
|
|
1204
|
+
else if (manifestUrl instanceof URL) filePath = builtins.url.fileURLToPath(manifestUrl);
|
|
1074
1205
|
else if (urlString.startsWith("file:")) filePath = builtins.url.fileURLToPath(urlString);
|
|
1075
1206
|
else filePath = urlString;
|
|
1076
1207
|
if (!builtins.fs.existsSync(filePath)) {
|
|
@@ -1186,6 +1317,7 @@ var ObjectRegistry = class ObjectRegistry {
|
|
|
1186
1317
|
ObjectRegistry.constructorTenantScopedDeclarations.clear();
|
|
1187
1318
|
getLegacyFieldDecorators().clear();
|
|
1188
1319
|
ObjectRegistry.stiSiblingsLoaded.clear();
|
|
1320
|
+
resetQualifiedNameAliasWarnings();
|
|
1189
1321
|
ObjectRegistry.nextDbId = 1;
|
|
1190
1322
|
}
|
|
1191
1323
|
/**
|
|
@@ -1383,7 +1515,8 @@ var ObjectRegistry = class ObjectRegistry {
|
|
|
1383
1515
|
* const fields = ObjectRegistry.getFields('Place'); // Now has fields
|
|
1384
1516
|
* ```
|
|
1385
1517
|
*/
|
|
1386
|
-
static async ensureManifestLoaded(
|
|
1518
|
+
static async ensureManifestLoaded(requestedName) {
|
|
1519
|
+
let className = requestedName;
|
|
1387
1520
|
const startGeneration = getRegistryGeneration();
|
|
1388
1521
|
let registered = ObjectRegistry.findClass(className);
|
|
1389
1522
|
if (registered && manifestEnsuredAtGeneration.get(registered) === startGeneration) return;
|
|
@@ -1398,6 +1531,7 @@ var ObjectRegistry = class ObjectRegistry {
|
|
|
1398
1531
|
const testHint = process.env.NODE_ENV === "test" || process.env.VITEST === "true" || typeof testGlobals.describe !== "undefined" || typeof testGlobals.it !== "undefined" ? "\n\n⚠️ Are you using 'smrt test'? Tests require manifest generation.\n ✅ Use: smrt test\n ❌ NOT: npx vitest\n" : "";
|
|
1399
1532
|
throw new Error(`Class '${className}' is not registered. Ensure the class is decorated with @smrt() before using it.` + testHint);
|
|
1400
1533
|
}
|
|
1534
|
+
if (registered.qualifiedName && registered.qualifiedName !== className && lookupQualifiedNameAlias(className) === registered) className = registered.qualifiedName;
|
|
1401
1535
|
const existingFieldCount = registered.fields.size;
|
|
1402
1536
|
const { discoverManifestEntry } = await importManifestLoader();
|
|
1403
1537
|
const manifestEntry = await discoverManifestEntry(registered.constructor, className);
|
|
@@ -2004,10 +2138,11 @@ var ObjectRegistry = class ObjectRegistry {
|
|
|
2004
2138
|
* primary-key column(s) — the only unique key such a table has;
|
|
2005
2139
|
* 4. the strategy default — CTI `['slug', 'context']`, STI
|
|
2006
2140
|
* `['slug', 'context', '_meta_type']` — led by the tenant column when
|
|
2007
|
-
* the schema owner is tenant-scoped (#2360)
|
|
2008
|
-
*
|
|
2009
|
-
*
|
|
2010
|
-
*
|
|
2141
|
+
* the schema owner is tenant-scoped (#2360) or carries an undeclared
|
|
2142
|
+
* `tenantId` field ({@link ObjectRegistry.getOwnershipTenantColumn}):
|
|
2143
|
+
* tenant-owned rows are unique per tenant, and without the tenant column
|
|
2144
|
+
* a second tenant's `save()` of the same natural key updated the first
|
|
2145
|
+
* tenant's row through `DO UPDATE SET`.
|
|
2011
2146
|
*
|
|
2012
2147
|
* STI subclasses share a table, so the discriminator participates in
|
|
2013
2148
|
* identity — two subtypes can coexist with the same (slug, context). The
|
|
@@ -2053,7 +2188,92 @@ var ObjectRegistry = class ObjectRegistry {
|
|
|
2053
2188
|
}
|
|
2054
2189
|
const primaryKeyColumns = Array.from(owner.fields.entries()).filter(([, field]) => field?._meta?.primaryKey === true).map(([fieldName]) => toSnakeCase(fieldName));
|
|
2055
2190
|
if (primaryKeyColumns.length > 0) return primaryKeyColumns;
|
|
2056
|
-
return defaultConflictColumns(tableStrategy, ObjectRegistry.
|
|
2191
|
+
return defaultConflictColumns(tableStrategy, ObjectRegistry.getOwnershipTenantColumn(className));
|
|
2192
|
+
}
|
|
2193
|
+
/**
|
|
2194
|
+
* The column that owns a table's rows for natural-key identity: the
|
|
2195
|
+
* declared tenant column ({@link ObjectRegistry.getTenantColumn}), else
|
|
2196
|
+
* `tenant_id` when the schema owner has a `tenantId` field but declares no
|
|
2197
|
+
* tenancy — the shape a consumer registers with the tenancy interceptor at
|
|
2198
|
+
* runtime. The default conflict target and unique index lead with it, so a
|
|
2199
|
+
* second tenant's same-slug row is a second row rather than an upsert onto
|
|
2200
|
+
* the first tenant's. See `resolveOwnershipTenantColumn()`.
|
|
2201
|
+
*
|
|
2202
|
+
* @param className - Name of the class (simple or qualified)
|
|
2203
|
+
* @returns The snake_case ownership column, or `undefined`
|
|
2204
|
+
*/
|
|
2205
|
+
static getOwnershipTenantColumn(className) {
|
|
2206
|
+
const declared = ObjectRegistry.getTenantColumn(className);
|
|
2207
|
+
const registered = ObjectRegistry.findClass(className);
|
|
2208
|
+
if (!registered) return declared;
|
|
2209
|
+
const ownerName = ObjectRegistry.getTableStrategy(className) === "sti" ? ObjectRegistry.getSTIBase(className) : null;
|
|
2210
|
+
const owner = ownerName && ownerName !== className ? ObjectRegistry.findClass(ownerName) ?? registered : registered;
|
|
2211
|
+
return resolveOwnershipTenantColumn(declared, (columnName) => [...owner.fields.entries()].some(([fieldName, field]) => field?.type !== "oneToMany" && field?.type !== "manyToMany" && toSnakeCase(fieldName) === columnName));
|
|
2212
|
+
}
|
|
2213
|
+
/**
|
|
2214
|
+
* Every typed reference (`@foreignKey` / `@crossPackageRef`) that points at
|
|
2215
|
+
* `className`, resolved the same way `SmrtObject.delete()` resolves them for
|
|
2216
|
+
* cascades: the referencing class, its table and column, and the resolved
|
|
2217
|
+
* `onDelete` action. Use it to re-point references before replacing one row
|
|
2218
|
+
* with another (a tag merge) instead of letting a delete cascade them away.
|
|
2219
|
+
*
|
|
2220
|
+
* @param className - Name of the referenced class (simple or qualified)
|
|
2221
|
+
*/
|
|
2222
|
+
static getIncomingReferences(className) {
|
|
2223
|
+
return buildCascadePlan(ObjectRegistry, className).references.map((reference) => ({
|
|
2224
|
+
className: reference.className,
|
|
2225
|
+
tableName: reference.tableName,
|
|
2226
|
+
column: reference.column,
|
|
2227
|
+
onDelete: reference.action
|
|
2228
|
+
}));
|
|
2229
|
+
}
|
|
2230
|
+
/**
|
|
2231
|
+
* Runtime ownership-column sources (see
|
|
2232
|
+
* {@link ObjectRegistry.registerOwnershipColumnSource}).
|
|
2233
|
+
*/
|
|
2234
|
+
static ownershipColumnSources = /* @__PURE__ */ new Set();
|
|
2235
|
+
/**
|
|
2236
|
+
* Register a source of RUNTIME ownership columns: columns that record a
|
|
2237
|
+
* row's owner for a class whose manifest does not say so — the tenancy
|
|
2238
|
+
* package's `registerTenantScopedClass('Team', { field: 'organizationId' })`
|
|
2239
|
+
* is the canonical producer.
|
|
2240
|
+
*
|
|
2241
|
+
* Core reads these only to protect ownership on save
|
|
2242
|
+
* ({@link ObjectRegistry.getOwnershipColumns}); they never change the
|
|
2243
|
+
* conflict target or the schema, which are build-time contracts a runtime
|
|
2244
|
+
* registration cannot alter without breaking `ON CONFLICT` binding. The
|
|
2245
|
+
* source is consulted on every lookup, so registrations that bind later (a
|
|
2246
|
+
* selector registered before its class) or are removed take effect
|
|
2247
|
+
* immediately.
|
|
2248
|
+
*
|
|
2249
|
+
* @param source - maps a qualified class name to its runtime ownership
|
|
2250
|
+
* columns (snake_case), or `undefined` when it has none
|
|
2251
|
+
* @returns a disposer that removes the source
|
|
2252
|
+
*/
|
|
2253
|
+
static registerOwnershipColumnSource(source) {
|
|
2254
|
+
ObjectRegistry.ownershipColumnSources.add(source);
|
|
2255
|
+
return () => {
|
|
2256
|
+
ObjectRegistry.ownershipColumnSources.delete(source);
|
|
2257
|
+
};
|
|
2258
|
+
}
|
|
2259
|
+
/**
|
|
2260
|
+
* Every column that records a row's owner for natural-key save protection:
|
|
2261
|
+
* `tenant_id`, the declared tenant column, each `@tenantId`-marked field's
|
|
2262
|
+
* column, and every runtime ownership column a registered source reports
|
|
2263
|
+
* ({@link ObjectRegistry.registerOwnershipColumnSource}) — so a runtime
|
|
2264
|
+
* tenancy registration on a custom field (`organizationId`) is compared like
|
|
2265
|
+
* `tenant_id`.
|
|
2266
|
+
*
|
|
2267
|
+
* @param className - Name of the class (simple or qualified)
|
|
2268
|
+
*/
|
|
2269
|
+
static getOwnershipColumns(className) {
|
|
2270
|
+
const columns = /* @__PURE__ */ new Set(["tenant_id"]);
|
|
2271
|
+
const declared = ObjectRegistry.getTenantColumn(className);
|
|
2272
|
+
if (declared) columns.add(declared);
|
|
2273
|
+
for (const [name, field] of ObjectRegistry.getFields(className)) if (field.__tenancy?.isTenantIdField || field._meta?.__tenancy?.isTenantIdField) columns.add(toSnakeCase(name));
|
|
2274
|
+
const qualifiedName = ObjectRegistry.findClass(className)?.qualifiedName ?? className;
|
|
2275
|
+
for (const source of ObjectRegistry.ownershipColumnSources) for (const column of source(qualifiedName) ?? []) if (column) columns.add(column);
|
|
2276
|
+
return columns;
|
|
2057
2277
|
}
|
|
2058
2278
|
/**
|
|
2059
2279
|
* The tenant column of the table a class writes to, or `undefined` when its
|