@forgeax/engine-ecs 0.1.20 → 0.1.23

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 (100) hide show
  1. package/README.md +50 -16
  2. package/dist/__tests__/changed-block-summary.candidate.test.d.ts +2 -0
  3. package/dist/__tests__/changed-block-summary.candidate.test.d.ts.map +1 -0
  4. package/dist/__tests__/component-requirements.unit.test.d.ts +2 -0
  5. package/dist/__tests__/component-requirements.unit.test.d.ts.map +1 -0
  6. package/dist/__tests__/component-version-surface.test.d.ts +2 -0
  7. package/dist/__tests__/component-version-surface.test.d.ts.map +1 -0
  8. package/dist/__tests__/derived-range-writer.contract.test-d.d.ts +2 -0
  9. package/dist/__tests__/derived-range-writer.contract.test-d.d.ts.map +1 -0
  10. package/dist/__tests__/derived-range-writer.contract.test.d.ts +2 -0
  11. package/dist/__tests__/derived-range-writer.contract.test.d.ts.map +1 -0
  12. package/dist/__tests__/structural-evidence.contract.test-d.d.ts +2 -0
  13. package/dist/__tests__/structural-evidence.contract.test-d.d.ts.map +1 -0
  14. package/dist/__tests__/structural-evidence.contract.test.d.ts +2 -0
  15. package/dist/__tests__/structural-evidence.contract.test.d.ts.map +1 -0
  16. package/dist/component-schema.d.ts +17 -0
  17. package/dist/component-schema.d.ts.map +1 -1
  18. package/dist/component.d.ts +7 -1
  19. package/dist/component.d.ts.map +1 -1
  20. package/dist/errors/query-and-component-errors.d.ts +1 -1
  21. package/dist/errors/query-and-component-errors.d.ts.map +1 -1
  22. package/dist/errors/validation-errors.d.ts +24 -0
  23. package/dist/errors/validation-errors.d.ts.map +1 -1
  24. package/dist/errors.d.ts +14 -2
  25. package/dist/errors.d.ts.map +1 -1
  26. package/dist/externalization/index.mjs.map +1 -1
  27. package/dist/index.mjs +415 -128
  28. package/dist/index.mjs.map +1 -1
  29. package/dist/internal.d.ts +16 -0
  30. package/dist/internal.d.ts.map +1 -0
  31. package/dist/internal.mjs +15 -2
  32. package/dist/internal.mjs.map +1 -1
  33. package/dist/projection/index.d.ts +27 -52
  34. package/dist/projection/index.d.ts.map +1 -1
  35. package/dist/projection/index.mjs +66 -76
  36. package/dist/projection/index.mjs.map +1 -1
  37. package/dist/query/derived-range-writer.d.ts +48 -0
  38. package/dist/query/derived-range-writer.d.ts.map +1 -0
  39. package/dist/query/query.d.ts +1 -1
  40. package/dist/query/query.d.ts.map +1 -1
  41. package/dist/relationship-index.d.ts +8 -0
  42. package/dist/relationship-index.d.ts.map +1 -1
  43. package/dist/shared-ref-store.d.ts +5 -9
  44. package/dist/shared-ref-store.d.ts.map +1 -1
  45. package/dist/shared.mjs.map +1 -1
  46. package/dist/storage/change-detection.d.ts +1 -3
  47. package/dist/storage/change-detection.d.ts.map +1 -1
  48. package/dist/storage/structural-evidence.d.ts +30 -0
  49. package/dist/storage/structural-evidence.d.ts.map +1 -0
  50. package/dist/world-component-access.d.ts +4 -3
  51. package/dist/world-component-access.d.ts.map +1 -1
  52. package/dist/world-core.d.ts +2 -2
  53. package/dist/world-core.d.ts.map +1 -1
  54. package/dist/world-entity-lifecycle.d.ts.map +1 -1
  55. package/dist/world-internal.d.ts +1 -1
  56. package/dist/world-internal.d.ts.map +1 -1
  57. package/dist/world.d.ts +10 -14
  58. package/dist/world.d.ts.map +1 -1
  59. package/package.json +5 -5
  60. package/src/__tests__/changed-block-summary.candidate.test.ts +57 -0
  61. package/src/__tests__/component-requirements.unit.test.ts +76 -0
  62. package/src/__tests__/component-version-surface.test.ts +45 -0
  63. package/src/__tests__/derived-range-writer.contract.test-d.ts +35 -0
  64. package/src/__tests__/derived-range-writer.contract.test.ts +339 -0
  65. package/src/__tests__/errors.unit.test.ts +21 -5
  66. package/src/__tests__/externalization-render-read-lease.test-d.ts +1 -1
  67. package/src/__tests__/externalization-render-read-lease.unit.test.ts +15 -15
  68. package/src/__tests__/query-storage-trends.perf.test.ts +19 -0
  69. package/src/__tests__/query.unit.test.ts +10 -6
  70. package/src/__tests__/shared-ref-store.unit.test.ts +3 -8
  71. package/src/__tests__/structural-evidence.contract.test-d.ts +6 -0
  72. package/src/__tests__/structural-evidence.contract.test.ts +49 -0
  73. package/src/component-schema.ts +51 -0
  74. package/src/component.ts +12 -2
  75. package/src/errors/query-and-component-errors.ts +1 -1
  76. package/src/errors/validation-errors.ts +30 -0
  77. package/src/errors.ts +29 -5
  78. package/src/internal.ts +56 -0
  79. package/src/projection/index.ts +68 -149
  80. package/src/query/derived-range-writer.ts +332 -0
  81. package/src/query/query.ts +89 -15
  82. package/src/relationship-index.ts +13 -1
  83. package/src/shared-ref-store.ts +16 -24
  84. package/src/storage/change-detection.ts +0 -15
  85. package/src/storage/structural-evidence.ts +64 -0
  86. package/src/world-component-access.ts +53 -5
  87. package/src/world-core.ts +2 -2
  88. package/src/world-entity-lifecycle.ts +10 -1
  89. package/src/world-internal.ts +5 -5
  90. package/src/world.ts +45 -50
  91. package/dist/.tsbuildinfo +0 -1
  92. package/dist/__tests__/world-change-journal.unit.test.d.ts +0 -2
  93. package/dist/__tests__/world-change-journal.unit.test.d.ts.map +0 -1
  94. package/dist/__tests__/world-internal-identity.unit.test.d.ts +0 -2
  95. package/dist/__tests__/world-internal-identity.unit.test.d.ts.map +0 -1
  96. package/dist/world-change-journal.d.ts +0 -34
  97. package/dist/world-change-journal.d.ts.map +0 -1
  98. package/src/__tests__/world-change-journal.unit.test.ts +0 -97
  99. package/src/__tests__/world-internal-identity.unit.test.ts +0 -17
  100. package/src/world-change-journal.ts +0 -84
@@ -0,0 +1,16 @@
1
+ export * from './component';
2
+ import type { Result } from '@forgeax/engine-types';
3
+ import type { Component } from './component';
4
+ import type { QuerySpanUnavailableError } from './errors';
5
+ import type { DerivedRangeWriter } from './query/derived-range-writer';
6
+ import type { Query } from './query/query';
7
+ /** Internal identity for the ECS-owned derived range writer accessor. */
8
+ export declare const DERIVED_WRITER: unique symbol;
9
+ /**
10
+ * Resolve the ECS-owned derived writer through its internal symbol seam.
11
+ * Consumers of this module retain the component/query type relationship while
12
+ * the public Query and QuerySpan surfaces remain read/write-only contracts.
13
+ */
14
+ export declare function getDerivedWriter<R extends readonly Component[], W extends readonly Component[], O extends readonly Component[], C extends W[number]>(query: Query<R, W, O>, component: C): Result<DerivedRangeWriter<R[number], C>, QuerySpanUnavailableError>;
15
+ export type { DerivedColumnBinding, DerivedRangeRowCommit, DerivedRangeRowProbe, DerivedRangeWriter, } from './query/derived-range-writer';
16
+ //# sourceMappingURL=internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AASA,cAAc,aAAa,CAAC;AAE5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,yEAAyE;AACzE,eAAO,MAAM,cAAc,EAAE,OAAO,MAEC,CAAC;AAYtC;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,SAAS,SAAS,SAAS,EAAE,EAC9B,CAAC,SAAS,SAAS,SAAS,EAAE,EAC9B,CAAC,SAAS,SAAS,SAAS,EAAE,EAC9B,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAEnB,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACrB,SAAS,EAAE,CAAC,GACX,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAGrE;AAED,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,8BAA8B,CAAC"}
package/dist/internal.mjs CHANGED
@@ -400,7 +400,11 @@ function defineComponent(name, fields, options) {
400
400
  registerComponentDefinition(token, {
401
401
  fields: frozenFields,
402
402
  defaults: frozenDefaults,
403
- policy: { transient: options?.transient ?? false, meta }
403
+ policy: {
404
+ transient: options?.transient ?? false,
405
+ meta,
406
+ requires: Object.freeze([...options?.requires ?? []])
407
+ }
404
408
  });
405
409
  return Object.freeze(token);
406
410
  }
@@ -474,6 +478,15 @@ var ComponentCatalog = class {
474
478
  }
475
479
  };
476
480
 
477
- export { ComponentCatalog, ComponentInUseError, ComponentNameConflictError, MANAGED_ARRAY_ELEMENT_TYPES, TYPE_METADATA, bufferFieldByteLength, componentDefinition, componentId, componentSchema, defineComponent, fieldTypeToMetaKey, isComponentDefinitionOrderValid, isEntityField, isManagedArrayField, isManagedBufferField, isManagedField, isSchemaVocabKeyword, parseManagedArraySchema };
481
+ // src/internal.ts
482
+ var DERIVED_WRITER = /* @__PURE__ */ Symbol.for(
483
+ "forgeax.ecs.query.derivedWriter"
484
+ );
485
+ function getDerivedWriter(query, component) {
486
+ const internalQuery = query;
487
+ return internalQuery[DERIVED_WRITER](component);
488
+ }
489
+
490
+ export { ComponentCatalog, ComponentInUseError, ComponentNameConflictError, DERIVED_WRITER, MANAGED_ARRAY_ELEMENT_TYPES, TYPE_METADATA, bufferFieldByteLength, componentDefinition, componentId, componentSchema, defineComponent, fieldTypeToMetaKey, getDerivedWriter, isComponentDefinitionOrderValid, isEntityField, isManagedArrayField, isManagedBufferField, isManagedField, isSchemaVocabKeyword, parseManagedArraySchema };
478
491
  //# sourceMappingURL=internal.mjs.map
479
492
  //# sourceMappingURL=internal.mjs.map