@almadar/runtime 6.8.0 → 6.8.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.
@@ -1,4 +1,4 @@
1
- export { InMemoryPersistence, OrbitalServerRuntime, collectDeclaredConfigDefaults, createOrbitalServerRuntime } from './chunk-WOXI5KCA.js';
1
+ export { InMemoryPersistence, OrbitalServerRuntime, collectDeclaredConfigDefaults, createOrbitalServerRuntime } from './chunk-L3FDWEQL.js';
2
2
  import './chunk-PZ5AY32C.js';
3
3
  //# sourceMappingURL=OrbitalServerRuntime.js.map
4
4
  //# sourceMappingURL=OrbitalServerRuntime.js.map
@@ -1703,7 +1703,7 @@ function picsumUrl(entityName, fieldName, width = 400, height = 400) {
1703
1703
  return `https://picsum.photos/seed/${encodeURIComponent(seed)}/${width}/${height}`;
1704
1704
  }
1705
1705
  var SEED_REFERENCE_TIMESTAMP = "2024-01-01T00:00:00.000Z";
1706
- var MockPersistenceAdapter = class {
1706
+ var MockPersistenceAdapter = class _MockPersistenceAdapter {
1707
1707
  stores = /* @__PURE__ */ new Map();
1708
1708
  schemas = /* @__PURE__ */ new Map();
1709
1709
  idCounters = /* @__PURE__ */ new Map();
@@ -1822,10 +1822,17 @@ var MockPersistenceAdapter = class {
1822
1822
  }
1823
1823
  return item;
1824
1824
  }
1825
+ /** Max nesting depth for recursive array/object schemas (e.g. a Comment
1826
+ * entity whose `replies: [Comment]` field references itself). Without
1827
+ * this guard, generateArrayValue → generateObjectValue → generateArray…
1828
+ * recurses until stack overflow on every recursive type. Three levels
1829
+ * is enough to render a useful thread depth (parent → reply → sub-reply)
1830
+ * in catalog/preview without blowing the fixture. */
1831
+ static MAX_NESTED_DEPTH = 3;
1825
1832
  /**
1826
1833
  * Generate a mock value for a field based on its schema.
1827
1834
  */
1828
- generateFieldValue(entityName, field, index) {
1835
+ generateFieldValue(entityName, field, index, depth = 0) {
1829
1836
  const fieldTypeLc = field.type.toLowerCase();
1830
1837
  mockLog.debug("field:generate", {
1831
1838
  entityName,
@@ -1861,9 +1868,9 @@ var MockPersistenceAdapter = class {
1861
1868
  return null;
1862
1869
  // Relations need special handling
1863
1870
  case "array":
1864
- return this.generateArrayValue(entityName, field, index);
1871
+ return this.generateArrayValue(entityName, field, index, depth);
1865
1872
  case "object":
1866
- return this.generateObjectValue(entityName, field, index);
1873
+ return this.generateObjectValue(entityName, field, index, depth);
1867
1874
  default:
1868
1875
  return this.generateStringValue(entityName, field, index);
1869
1876
  }
@@ -1877,8 +1884,9 @@ var MockPersistenceAdapter = class {
1877
1884
  * with no element schema), falls back to an empty array — the historical
1878
1885
  * behavior.
1879
1886
  */
1880
- generateArrayValue(entityName, field, index) {
1887
+ generateArrayValue(entityName, field, index, depth = 0) {
1881
1888
  if (!field.items) return [];
1889
+ if (depth >= _MockPersistenceAdapter.MAX_NESTED_DEPTH) return [];
1882
1890
  const count = faker.number.int({ min: 3, max: 5 });
1883
1891
  const out = [];
1884
1892
  for (let i = 0; i < count; i++) {
@@ -1886,7 +1894,7 @@ var MockPersistenceAdapter = class {
1886
1894
  ...field.items,
1887
1895
  name: `${field.name}[${i}]`
1888
1896
  };
1889
- out.push(this.generateFieldValue(entityName, elementField, index * 10 + i));
1897
+ out.push(this.generateFieldValue(entityName, elementField, index * 10 + i, depth + 1));
1890
1898
  }
1891
1899
  return out;
1892
1900
  }
@@ -1896,12 +1904,13 @@ var MockPersistenceAdapter = class {
1896
1904
  * `generateFieldValue` per property so nested objects-of-arrays-of-objects
1897
1905
  * compose correctly.
1898
1906
  */
1899
- generateObjectValue(entityName, field, index) {
1907
+ generateObjectValue(entityName, field, index, depth = 0) {
1900
1908
  if (!field.properties) return null;
1909
+ if (depth >= _MockPersistenceAdapter.MAX_NESTED_DEPTH) return null;
1901
1910
  const out = {};
1902
1911
  for (const [propName, propField] of Object.entries(field.properties)) {
1903
1912
  const childField = { ...propField, name: propName };
1904
- out[propName] = this.generateFieldValue(entityName, childField, index);
1913
+ out[propName] = this.generateFieldValue(entityName, childField, index, depth + 1);
1905
1914
  }
1906
1915
  return out;
1907
1916
  }
@@ -5443,5 +5452,5 @@ function buildMatcher(src, listenerOrbital) {
5443
5452
  }
5444
5453
 
5445
5454
  export { EffectExecutor, EventBus, HANDLER_MANIFEST, InMemoryPersistence, MockPersistenceAdapter, OrbitalServerRuntime, StateMachineManager, buildEmitsFromTraits, collectDeclaredConfigDefaults, containsBindings, createContextFromBindings, createInitialTraitState, createMockPersistence, createOrbitalServerRuntime, createTestExecutor, createUnifiedLoader, extractBindings, findInitialState, findTransition, formatPayloadValidationError, getIsolatedCollectionName, getNamespacedEvent, interpolateProps, interpolateValue, isBrowser, isElectron, isNamespacedEvent, isNode, normalizeEventKey, parseNamespacedEvent, preprocessSchema, processEvent, validateEventPayload, validatePayloadShapes };
5446
- //# sourceMappingURL=chunk-WOXI5KCA.js.map
5447
- //# sourceMappingURL=chunk-WOXI5KCA.js.map
5455
+ //# sourceMappingURL=chunk-L3FDWEQL.js.map
5456
+ //# sourceMappingURL=chunk-L3FDWEQL.js.map