@happyvertical/smrt-core 0.51.16 → 0.51.18

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.
Files changed (44) hide show
  1. package/AGENTS.md +7 -0
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +2 -1
  5. package/dist/manifest/manifest-loader.d.ts.map +1 -1
  6. package/dist/manifest/manifest-loader.js +4 -0
  7. package/dist/manifest/manifest-loader.js.map +1 -1
  8. package/dist/manifest/static-manifest.js +1 -1
  9. package/dist/manifest/static-manifest.js.map +1 -1
  10. package/dist/manifest/store.d.ts.map +1 -1
  11. package/dist/manifest/store.js +10 -3
  12. package/dist/manifest/store.js.map +1 -1
  13. package/dist/manifest.json +1 -1
  14. package/dist/migrations/differ.d.ts.map +1 -1
  15. package/dist/migrations/differ.js +33 -18
  16. package/dist/migrations/differ.js.map +1 -1
  17. package/dist/registry/class-registration.d.ts +5 -0
  18. package/dist/registry/class-registration.d.ts.map +1 -1
  19. package/dist/registry/class-registration.js +25 -0
  20. package/dist/registry/class-registration.js.map +1 -1
  21. package/dist/registry/generation.d.ts +47 -0
  22. package/dist/registry/generation.d.ts.map +1 -0
  23. package/dist/registry/generation.js +56 -0
  24. package/dist/registry/generation.js.map +1 -0
  25. package/dist/registry/name-resolver.d.ts.map +1 -1
  26. package/dist/registry/name-resolver.js +48 -11
  27. package/dist/registry/name-resolver.js.map +1 -1
  28. package/dist/registry/shared-state.d.ts.map +1 -1
  29. package/dist/registry/shared-state.js +6 -2
  30. package/dist/registry/shared-state.js.map +1 -1
  31. package/dist/registry.d.ts.map +1 -1
  32. package/dist/registry.js +39 -7
  33. package/dist/registry.js.map +1 -1
  34. package/dist/schema/live-parity.d.ts.map +1 -1
  35. package/dist/schema/live-parity.js +13 -0
  36. package/dist/schema/live-parity.js.map +1 -1
  37. package/dist/schema/text-cast-probe.d.ts +25 -9
  38. package/dist/schema/text-cast-probe.d.ts.map +1 -1
  39. package/dist/schema/text-cast-probe.js +84 -9
  40. package/dist/schema/text-cast-probe.js.map +1 -1
  41. package/dist/smrt-knowledge.json +5 -5
  42. package/dist/utils/chunk.js +23 -1
  43. package/dist/utils/chunk.js.map +1 -1
  44. package/package.json +4 -4
@@ -1,6 +1,11 @@
1
1
  import { SmrtObject } from '../object';
2
2
  import { SmartObjectDefinition } from '../scanner/types.js';
3
3
  import { RegisteredClass, RegisteredField, SmartObjectConfig } from './types.js';
4
+ /**
5
+ * Register (or re-register) a class. Every registration can add, replace or
6
+ * mutate a registered class in place, so it invalidates the generation-keyed
7
+ * registry memos before and after (#3047) — including when it throws partway.
8
+ */
4
9
  export declare function register(ctor: typeof SmrtObject, config?: SmartObjectConfig): void;
5
10
  export declare function registerCollection(objectName: string, collectionConstructor: NonNullable<RegisteredClass['collectionConstructor']>): void;
6
11
  export declare function ensureTenantScopedField(fields: Map<string, RegisteredField>, tenantScopedConfig: RegisteredClass['tenantScopedConfig'] | undefined): void;
@@ -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;AAwC7B,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,iBAAiB,EAElB,MAAM,YAAY,CAAC;AA2gBpB,wBAAgB,QAAQ,CACtB,IAAI,EAAE,OAAO,UAAU,EACvB,MAAM,GAAE,iBAAsB,GAC7B,IAAI,CAg2BN;AAyCD,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,CAuCN;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,CA2CN;AA2KD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,qBAAqB,EAChC,mBAAmB,CAAC,EAAE,MAAM,GAC3B,IAAI,CAoSN"}
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;AAyC7B,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,iBAAiB,EAElB,MAAM,YAAY,CAAC;AA2gBpB;;;;GAIG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,OAAO,UAAU,EACvB,MAAM,GAAE,iBAAsB,GAC7B,IAAI,CAON;AA+4BD,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"}
@@ -1,6 +1,7 @@
1
1
  import { ConfigurationError } from "../errors.js";
2
2
  import { toSnakeCase } from "../utils/naming.js";
3
3
  import { declareChangeFeedSensitiveTable, setChangeFeedSensitiveClassResolver } from "../change-feed-sensitivity.js";
4
+ import { bumpRegistryGeneration } from "./generation.js";
4
5
  import { createQualifiedName, isQualifiedName } from "../utils/qualified-names.js";
5
6
  import { cloneManifestSchemaColumns } from "../manifest/store.js";
6
7
  import { getClasses, getCollections, getConstructorFieldDecorators, getConstructorIndex, getConstructorTenantScopedDeclarations, getInheritanceCache, getLegacyFieldDecorators, getSourceFileFromStack, getStiSiblingsLoaded, verboseLog } from "./shared-state.js";
@@ -282,7 +283,20 @@ function setSmrtQualifiedName(ctor, qualifiedName) {
282
283
  configurable: true
283
284
  });
284
285
  }
286
+ /**
287
+ * Register (or re-register) a class. Every registration can add, replace or
288
+ * mutate a registered class in place, so it invalidates the generation-keyed
289
+ * registry memos before and after (#3047) — including when it throws partway.
290
+ */
285
291
  function register(ctor, config = {}) {
292
+ bumpRegistryGeneration();
293
+ try {
294
+ registerUntracked(ctor, config);
295
+ } finally {
296
+ bumpRegistryGeneration();
297
+ }
298
+ }
299
+ function registerUntracked(ctor, config = {}) {
286
300
  const name = config.name || ctor.name;
287
301
  const explicitPackageName = config.packageName;
288
302
  let promotedCollectionConstructor;
@@ -302,6 +316,7 @@ function register(ctor, config = {}) {
302
316
  };
303
317
  existing.name = name;
304
318
  existing.packageName = nextPackageName;
319
+ bumpRegistryGeneration();
305
320
  existing.qualifiedName = nextPackageName ? createQualifiedName(nextPackageName, name) : void 0;
306
321
  const nextTableName = resolveTableName(ctor, name, {
307
322
  ...existing.config,
@@ -673,6 +688,7 @@ function normalizeTenantScopedConfig(tenantScoped) {
673
688
  }
674
689
  function ensureTenantScopedField(fields, tenantScopedConfig) {
675
690
  if (!tenantScopedConfig) return;
691
+ bumpRegistryGeneration();
676
692
  const fieldName = tenantScopedConfig.field;
677
693
  const existingField = fields.get(fieldName);
678
694
  if (existingField) {
@@ -758,6 +774,7 @@ function applySqlTypeOverrides(columns, fieldEntries) {
758
774
  * shim in registry.ts.
759
775
  */
760
776
  function invalidateInheritanceEntries(existing, previousIdentity) {
777
+ bumpRegistryGeneration();
761
778
  const cache = getInheritanceCache();
762
779
  const affectedNames = /* @__PURE__ */ new Set();
763
780
  const remember = (name) => {
@@ -876,6 +893,14 @@ function mergeManifestIntoExistingRegistration(existing, objectDef, packageName)
876
893
  invalidateInheritanceEntries(existing);
877
894
  }
878
895
  function registerFromManifest(name, objectDef, manifestPackageName) {
896
+ bumpRegistryGeneration();
897
+ try {
898
+ registerFromManifestUntracked(name, objectDef, manifestPackageName);
899
+ } finally {
900
+ bumpRegistryGeneration();
901
+ }
902
+ }
903
+ function registerFromManifestUntracked(name, objectDef, manifestPackageName) {
879
904
  const packageName = objectDef.packageName || manifestPackageName;
880
905
  const simpleClassName = objectDef.className || name;
881
906
  const qualifiedNameEarly = packageName ? createQualifiedName(packageName, simpleClassName) : objectDef.qualifiedName;