@adobe/data 0.9.63 → 0.9.65

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.
@@ -21,32 +21,35 @@ type CreatePluginResult<XP extends Database.Plugin, CS, RS, A, TD, S extends str
21
21
  * **IMPORTANT: Property Order Requirement**
22
22
  *
23
23
  * Properties MUST be defined in this exact order:
24
- * 1. extends (optional) - Base plugin to extend
25
- * 2. services (optional) - Service factory functions
26
- * 3. components (optional) - Component schema definitions
27
- * 4. resources (optional) - Resource schema definitions
28
- * 5. archetypes (optional) - Archetype definitions
29
- * 6. indexes (optional) - Index declarations over components
30
- * 7. computed (optional) - Computed observe factories (each returns Observe<unknown>)
31
- * 8. transactions (optional) - Transaction declarations
32
- * 9. actions (optional) - Action declarations
33
- * 10. systems (optional) - System declarations
24
+ * 1. imports (optional) - Dependency plugins whose types are visible to local
25
+ * declarations but NOT re-exported into the result
26
+ * 2. extends (optional) - Base plugin to extend (types re-exported into result)
27
+ * 3. services (optional) - Service factory functions
28
+ * 4. components (optional) - Component schema definitions
29
+ * 5. resources (optional) - Resource schema definitions
30
+ * 6. archetypes (optional) - Archetype definitions
31
+ * 7. indexes (optional) - Index declarations over components
32
+ * 8. computed (optional) - Computed observe factories (each returns Observe<unknown>)
33
+ * 9. transactions (optional) - Transaction declarations
34
+ * 10. actions (optional) - Action declarations
35
+ * 11. systems (optional) - System declarations
34
36
  *
35
37
  * Example:
36
38
  * ```ts
37
39
  * Database.Plugin.create({
38
- * extends: basePlugin, // 1. extends first
39
- * services: { // 2. services last
40
+ * imports: depPlugin, // 1. imports first
41
+ * extends: basePlugin, // 2. extends
42
+ * services: { // 3. services
40
43
  * myService: (db) => createMyService(db.resources.config),
41
44
  * }
42
- * components: { ... }, // 3. components
43
- * resources: { ... }, // 4. resources
44
- * archetypes: { ... }, // 5. archetypes
45
- * indexes: { ... }, // 6. indexes
46
- * computed: { ... }, // 7. computed
47
- * transactions: { ... }, // 8. transactions
48
- * actions: { ... }, // 9. actions
49
- * systems: { ... }, // 10. systems
45
+ * components: { ... }, // 4. components
46
+ * resources: { ... }, // 5. resources
47
+ * archetypes: { ... }, // 6. archetypes
48
+ * indexes: { ... }, // 7. indexes
49
+ * computed: { ... }, // 8. computed
50
+ * transactions: { ... }, // 9. transactions
51
+ * actions: { ... }, // 10. actions
52
+ * systems: { ... }, // 11. systems
50
53
  * })
51
54
  * ```
52
55
  *
@@ -62,32 +65,51 @@ type CreatePluginResult<XP extends Database.Plugin, CS, RS, A, TD, S extends str
62
65
  * @throws Error if properties are not in the correct order
63
66
  */
64
67
  type FullDBForPlugin<CS, RS, A, TD, S extends string, AD, XP extends Database.Plugin, SVF extends ServiceFactories<Database.FromPlugin<XP>>> = Database<FromSchemas<CS & XP['components']>, FromSchemas<RS & XP['resources']>, A & XP['archetypes'], ToTransactionFunctions<TD & XP['transactions']>, S | StringKeyof<XP['systems']>, ToActionFunctions<AD & XP['actions']>, FromServiceFactories<RemoveIndex<SVF> & XP['services']>>;
65
- export declare function createPlugin<const XP extends Database.Plugin<{}, {}, {}, {}, never, {}, {}, {}, {}>, const CS extends ComponentSchemas, const RS extends ResourceSchemas, const A extends ArchetypeComponents<StringKeyof<RemoveIndex<CS> & XP['components']>>, const IX extends IndexDeclarations<FromSchemas<RemoveIndex<CS> & XP['components']>, RemoveIndex<A> & XP['archetypes']>, const TD extends TransactionDeclarations<FromSchemas<RemoveIndex<CS> & XP['components']>, FromSchemas<RemoveIndex<RS> & XP['resources']>, RemoveIndex<A> & XP['archetypes'], RemoveIndex<IX> & XP['indexes']>, const AD, const S extends string = never, const SVF extends ServiceFactories<Database.FromPlugin<XP>> = {}, const CVF extends PluginComputedFactories<FullDBForPlugin<RemoveIndex<CS>, RemoveIndex<RS>, RemoveIndex<A>, RemoveIndex<TD>, S, RemoveIndex<AD> & XP['actions'], XP, RemoveIndex<SVF>>> = {}>(plugins: {
68
+ /**
69
+ * Ambient plugin context used for *parameter typing only*: the union of the
70
+ * `extends` base (XP) and the `imports` dependencies (IP).
71
+ *
72
+ * Local declarations (action/system `db`, the component/archetype/transaction
73
+ * constraints) are typed against this ambient so they see BOTH bases with full
74
+ * type safety. Crucially, this alias does NOT appear in createPlugin's return
75
+ * type — only XP (the `extends` base) flows into the result via
76
+ * CreatePluginResult. That asymmetry is the whole point of `imports`: a plugin
77
+ * can depend on another's types without re-exporting them, so the result type
78
+ * stays O(local members) instead of O(accumulated chain).
79
+ *
80
+ * Direct property access (not CombinePlugins<[XP, IP]>) to avoid the 8-way
81
+ * conditional expansion that amplifies TS7056. For the common `extends`-only
82
+ * case IP is the empty-plugin constraint, so every `& IP['x']` reduces to
83
+ * `& {}` (identity on the object-typed buckets) — no cost or behavior change.
84
+ */
85
+ type AmbientPlugin<XP extends Database.Plugin, IP extends Database.Plugin> = Database.Plugin<XP['components'] & IP['components'], XP['resources'] & IP['resources'], XP['archetypes'] & IP['archetypes'], XP['transactions'] & IP['transactions'], StringKeyof<XP['systems']> | StringKeyof<IP['systems']>, XP['actions'] & IP['actions'], XP['services'] & IP['services'], XP['computed'] & IP['computed'], XP['indexes'] & IP['indexes']>;
86
+ export declare function createPlugin<const XP extends Database.Plugin<{}, {}, {}, {}, never, {}, {}, {}, {}>, const IP extends Database.Plugin<{}, {}, {}, {}, never, {}, {}, {}, {}>, const CS extends ComponentSchemas, const RS extends ResourceSchemas, const A extends ArchetypeComponents<StringKeyof<RemoveIndex<CS> & XP['components'] & IP['components']>>, const IX extends IndexDeclarations<FromSchemas<RemoveIndex<CS> & XP['components'] & IP['components']>, RemoveIndex<A> & XP['archetypes'] & IP['archetypes']>, const TD extends TransactionDeclarations<FromSchemas<RemoveIndex<CS> & XP['components'] & IP['components']>, FromSchemas<RemoveIndex<RS> & XP['resources'] & IP['resources']>, RemoveIndex<A> & XP['archetypes'] & IP['archetypes'], RemoveIndex<IX> & XP['indexes'] & IP['indexes']>, const AD, const S extends string = never, const SVF extends ServiceFactories<Database.FromPlugin<AmbientPlugin<XP, IP>>> = {}, const CVF extends PluginComputedFactories<FullDBForPlugin<RemoveIndex<CS>, RemoveIndex<RS>, RemoveIndex<A>, RemoveIndex<TD>, S, RemoveIndex<AD> & XP['actions'] & IP['actions'], AmbientPlugin<XP, IP>, RemoveIndex<SVF>>> = {}>(plugins: {
87
+ imports?: IP;
66
88
  extends?: XP;
67
89
  services?: SVF & {
68
- readonly [K: string]: (db: Database.FromPlugin<XP>) => unknown;
90
+ readonly [K: string]: (db: Database.FromPlugin<AmbientPlugin<XP, IP>>) => unknown;
69
91
  };
70
92
  components?: CS;
71
93
  resources?: RS;
72
94
  archetypes?: A;
73
95
  indexes?: IX;
74
- computed?: CVF & PluginComputedFactories<FullDBForPlugin<RemoveIndex<CS>, RemoveIndex<RS>, RemoveIndex<A>, {}, string, RemoveIndex<AD> & XP['actions'], XP, RemoveIndex<SVF>>>;
96
+ computed?: CVF & PluginComputedFactories<FullDBForPlugin<RemoveIndex<CS>, RemoveIndex<RS>, RemoveIndex<A>, {}, string, RemoveIndex<AD> & XP['actions'] & IP['actions'], AmbientPlugin<XP, IP>, RemoveIndex<SVF>>>;
75
97
  transactions?: TD;
76
98
  actions?: AD & {
77
- readonly [K: string]: (db: Database<FromSchemas<RemoveIndex<CS> & XP['components']>, FromSchemas<RemoveIndex<RS> & XP['resources']>, RemoveIndex<A> & XP['archetypes'], ToTransactionFunctions<RemoveIndex<TD> & XP['transactions']>, S | StringKeyof<XP['systems']>, ToActionFunctions<XP['actions']>, FromServiceFactories<RemoveIndex<SVF> & XP['services']>, FromComputedFactories<RemoveIndex<CVF> & XP['computed']>, RemoveIndex<IX> & XP['indexes']>, input?: any) => any;
99
+ readonly [K: string]: (db: Database<FromSchemas<RemoveIndex<CS> & XP['components'] & IP['components']>, FromSchemas<RemoveIndex<RS> & XP['resources'] & IP['resources']>, RemoveIndex<A> & XP['archetypes'] & IP['archetypes'], ToTransactionFunctions<RemoveIndex<TD> & XP['transactions'] & IP['transactions']>, S | StringKeyof<XP['systems']> | StringKeyof<IP['systems']>, ToActionFunctions<XP['actions'] & IP['actions']>, FromServiceFactories<RemoveIndex<SVF> & XP['services'] & IP['services']>, FromComputedFactories<RemoveIndex<CVF> & XP['computed'] & IP['computed']>, RemoveIndex<IX> & XP['indexes'] & IP['indexes']>, input?: any) => any;
78
100
  };
79
101
  systems?: {
80
102
  readonly [K in S]: {
81
- readonly create: (db: Database<FromSchemas<RemoveIndex<CS> & XP['components']>, FromSchemas<RemoveIndex<RS> & XP['resources']>, RemoveIndex<A> & XP['archetypes'], ToTransactionFunctions<RemoveIndex<TD> & XP['transactions']>, S | StringKeyof<XP['systems']>, ToActionFunctions<RemoveIndex<AD> & XP['actions']>, FromServiceFactories<RemoveIndex<SVF> & XP['services']>, FromComputedFactories<RemoveIndex<CVF> & XP['computed']>, RemoveIndex<IX> & XP['indexes']> & {
82
- readonly store: Store<FromSchemas<RemoveIndex<CS> & XP['components']>, FromSchemas<RemoveIndex<RS> & XP['resources']>, RemoveIndex<A> & XP['archetypes']>;
103
+ readonly create: (db: Database<FromSchemas<RemoveIndex<CS> & XP['components'] & IP['components']>, FromSchemas<RemoveIndex<RS> & XP['resources'] & IP['resources']>, RemoveIndex<A> & XP['archetypes'] & IP['archetypes'], ToTransactionFunctions<RemoveIndex<TD> & XP['transactions'] & IP['transactions']>, S | StringKeyof<XP['systems']> | StringKeyof<IP['systems']>, ToActionFunctions<RemoveIndex<AD> & XP['actions'] & IP['actions']>, FromServiceFactories<RemoveIndex<SVF> & XP['services'] & IP['services']>, FromComputedFactories<RemoveIndex<CVF> & XP['computed'] & IP['computed']>, RemoveIndex<IX> & XP['indexes'] & IP['indexes']> & {
104
+ readonly store: Store<FromSchemas<RemoveIndex<CS> & XP['components'] & IP['components']>, FromSchemas<RemoveIndex<RS> & XP['resources'] & IP['resources']>, RemoveIndex<A> & XP['archetypes'] & IP['archetypes']>;
83
105
  services: {
84
- -readonly [K in keyof FromServiceFactories<RemoveIndex<SVF> & XP['services']>]: FromServiceFactories<RemoveIndex<SVF> & XP['services']>[K];
106
+ -readonly [K in keyof FromServiceFactories<RemoveIndex<SVF> & XP['services'] & IP['services']>]: FromServiceFactories<RemoveIndex<SVF> & XP['services'] & IP['services']>[K];
85
107
  };
86
108
  }) => SystemFunction | void;
87
109
  readonly schedule?: {
88
- readonly before?: readonly NoInfer<Exclude<S | StringKeyof<XP['systems']>, K>>[];
89
- readonly after?: readonly NoInfer<Exclude<S | StringKeyof<XP['systems']>, K>>[];
90
- readonly during?: readonly NoInfer<Exclude<S | StringKeyof<XP['systems']>, K>>[];
110
+ readonly before?: readonly NoInfer<Exclude<S | StringKeyof<XP['systems']> | StringKeyof<IP['systems']>, K>>[];
111
+ readonly after?: readonly NoInfer<Exclude<S | StringKeyof<XP['systems']> | StringKeyof<IP['systems']>, K>>[];
112
+ readonly during?: readonly NoInfer<Exclude<S | StringKeyof<XP['systems']> | StringKeyof<IP['systems']>, K>>[];
91
113
  };
92
114
  };
93
115
  };
@@ -1,7 +1,7 @@
1
1
  // © 2026 Adobe. MIT License. See /LICENSE for details.
2
2
  import { combinePlugins } from "./combine-plugins.js";
3
3
  function validatePropertyOrder(plugins) {
4
- const expectedOrder = ['extends', 'services', 'components', 'resources', 'archetypes', 'indexes', 'computed', 'transactions', 'actions', 'systems'];
4
+ const expectedOrder = ['imports', 'extends', 'services', 'components', 'resources', 'archetypes', 'indexes', 'computed', 'transactions', 'actions', 'systems'];
5
5
  const actualKeys = Object.keys(plugins);
6
6
  const definedKeys = actualKeys.filter(key => key in plugins);
7
7
  for (let i = 0; i < definedKeys.length; i++) {
@@ -35,8 +35,21 @@ export function createPlugin(plugins) {
35
35
  actions: plugins.actions ?? {},
36
36
  systems: plugins.systems ?? {},
37
37
  };
38
- if (plugins.extends) {
39
- return combinePlugins(plugins.extends, plugin);
38
+ // `imports` differs from `extends` only at the TYPE level: the imported
39
+ // plugins' members are NOT declared in this plugin's result type, so they
40
+ // don't propagate through downstream result types (the source of the
41
+ // quadratic `extends` blowup). At RUNTIME, however, imports merge in exactly
42
+ // like extends — so the imported components/resources/transactions/etc. are
43
+ // present in the assembled database without the consumer having to re-list
44
+ // them in the top-level combine. Order: imports first, then extends, then
45
+ // this plugin's own declarations (preserves service initialization order).
46
+ const bases = [];
47
+ if (plugins.imports)
48
+ bases.push(plugins.imports);
49
+ if (plugins.extends)
50
+ bases.push(plugins.extends);
51
+ if (bases.length > 0) {
52
+ return combinePlugins(...bases, plugin);
40
53
  }
41
54
  return plugin;
42
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-plugin.js","sourceRoot":"","sources":["../../../src/ecs/database/create-plugin.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAUvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA0CtD,SAAS,qBAAqB,CAAC,OAAgC;IAC3D,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACpJ,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;IAE7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,6CAA6C,GAAG,4BAA4B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5H,CAAC;QACD,uDAAuD;QACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,iBAAiB,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACzD,IAAI,iBAAiB,GAAG,aAAa,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACX,qCAAqC,GAAG,uBAAuB,OAAO,KAAK;oBAC3E,mBAAmB,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrF,CAAC;YACN,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC;AA6DD,MAAM,UAAU,YAAY,CAYxB,OAkDC;IAED,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE/B,mEAAmE;IACnE,MAAM,MAAM,GAAQ;QAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;QAClC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;QACpC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;QAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE;QACxC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;QAC9B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;KACjC,CAAC;IAEF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAQ,CAAC;IAC1D,CAAC;IACD,OAAO,MAAa,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"create-plugin.js","sourceRoot":"","sources":["../../../src/ecs/database/create-plugin.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAUvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA0CtD,SAAS,qBAAqB,CAAC,OAAgC;IAC3D,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC/J,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;IAE7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,6CAA6C,GAAG,4BAA4B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5H,CAAC;QACD,uDAAuD;QACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,iBAAiB,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACzD,IAAI,iBAAiB,GAAG,aAAa,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACX,qCAAqC,GAAG,uBAAuB,OAAO,KAAK;oBAC3E,mBAAmB,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrF,CAAC;YACN,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC;AA6FD,MAAM,UAAU,YAAY,CAaxB,OAmDC;IAED,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE/B,mEAAmE;IACnE,MAAM,MAAM,GAAQ;QAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;QAClC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;QACpC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;QAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE;QACxC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;QAC9B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;KACjC,CAAC;IAEF,wEAAwE;IACxE,0EAA0E;IAC1E,qEAAqE;IACrE,6EAA6E;IAC7E,4EAA4E;IAC5E,2EAA2E;IAC3E,0EAA0E;IAC1E,2EAA2E;IAC3E,MAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,IAAI,OAAO,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC,GAAG,KAAK,EAAE,MAAM,CAAQ,CAAC;IACnD,CAAC;IACD,OAAO,MAAa,CAAC;AACzB,CAAC"}
@@ -12,6 +12,12 @@ describe("Database.Plugin.create", () => {
12
12
  extends: undefined, // extends should come first
13
13
  });
14
14
  }).toThrow('Property "extends" must come before "components"');
15
+ expect(() => {
16
+ Database.Plugin.create({
17
+ extends: undefined,
18
+ imports: undefined, // imports should come before extends
19
+ });
20
+ }).toThrow('Property "imports" must come before "extends"');
15
21
  expect(() => {
16
22
  Database.Plugin.create({
17
23
  components: {},
@@ -581,5 +587,53 @@ describe("Database.Plugin.create", () => {
581
587
  }).not.toThrow();
582
588
  });
583
589
  });
590
+ describe("imports runtime behavior", () => {
591
+ // `imports` differs from `extends` ONLY in the result type (imported
592
+ // members are not declared there — see imports-chain.type-test.ts).
593
+ // At runtime, imports merge into the assembled plugin exactly like
594
+ // extends, so the consumer does NOT have to re-list the imported plugin
595
+ // in the top-level combine for its members to exist.
596
+ const basePlugin = createPlugin({
597
+ resources: { baseScale: { default: 7 } },
598
+ transactions: {
599
+ setBaseScale: (_t, _input) => { },
600
+ },
601
+ });
602
+ it("merges imported plugin members into the runtime plugin object", () => {
603
+ const featurePlugin = createPlugin({
604
+ imports: basePlugin,
605
+ resources: { featureFlag: { default: true } },
606
+ });
607
+ // Imported members are present on the assembled plugin at runtime...
608
+ expect(featurePlugin.resources.baseScale).toBeDefined();
609
+ expect(featurePlugin.transactions.setBaseScale).toBeDefined();
610
+ // ...alongside the local ones.
611
+ expect(featurePlugin.resources.featureFlag).toBeDefined();
612
+ });
613
+ it("imported members are usable on a database built from the plugin alone", () => {
614
+ const featurePlugin = createPlugin({
615
+ imports: basePlugin,
616
+ resources: { featureFlag: { default: true } },
617
+ });
618
+ // No separate combine(basePlugin, ...) — imports already merged.
619
+ const db = Database.create(featurePlugin);
620
+ expect(db.resources.baseScale).toBe(7);
621
+ expect(() => db.transactions.setBaseScale({ scale: 9 })).not.toThrow();
622
+ });
623
+ it("merges imports first, then extends, then local declarations", () => {
624
+ const extendedBase = createPlugin({
625
+ resources: { fromExtends: { default: 1 } },
626
+ });
627
+ const combined = createPlugin({
628
+ imports: basePlugin,
629
+ extends: extendedBase,
630
+ resources: { fromLocal: { default: 2 } },
631
+ });
632
+ const r = combined.resources;
633
+ expect(r.baseScale).toBeDefined(); // from imports
634
+ expect(r.fromExtends).toBeDefined(); // from extends
635
+ expect(r.fromLocal).toBeDefined(); // local
636
+ });
637
+ });
584
638
  });
585
639
  //# sourceMappingURL=create-plugin.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-plugin.test.js","sourceRoot":"","sources":["../../../src/ecs/database/create-plugin.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-plugin.test.js","sourceRoot":"","sources":["../../../src/ecs/database/create-plugin.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,92 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { createPlugin } from "./create-plugin.js";
3
+ import { Database } from "./database.js";
4
+ /**
5
+ * Type-only tests for the `imports` property.
6
+ *
7
+ * `imports` is the complement of `extends`:
8
+ *
9
+ * - `extends` — base types are visible to local declarations AND
10
+ * re-exported into the result plugin's type.
11
+ * - `imports` — base types are visible to local declarations ONLY;
12
+ * they do NOT flow into the result plugin's TYPE.
13
+ *
14
+ * The two merge identically at RUNTIME (both pull the base's members into the
15
+ * assembled plugin); they differ only in the result TYPE. That result-type
16
+ * asymmetry is what keeps deep dependency graphs cheap: an `imports` link's
17
+ * result type stays O(local members) instead of accumulating the full chain
18
+ * (see scripts/typeperf — `imports` is linear where `extends` is quadratic in
19
+ * chain depth). Runtime-merge behavior is covered by create-plugin.test.ts
20
+ * ("imports runtime behavior"); this file covers the type contract:
21
+ * 1. Visibility — a plugin that `imports` a base gets FULL type safety on the
22
+ * base's components/resources/transactions (no weakening vs `extends`).
23
+ * 2. Non-export — the imported members are absent from the result TYPE.
24
+ */
25
+ // ============================================================================
26
+ // A fat base plugin
27
+ // ============================================================================
28
+ const basePlugin = createPlugin({
29
+ components: {
30
+ baseColor: { type: 'string' },
31
+ baseWidth: { type: 'number' },
32
+ },
33
+ resources: {
34
+ baseScale: { default: 1 },
35
+ },
36
+ transactions: {
37
+ setBaseColor: (t, _input) => { },
38
+ setBaseWidth: (t, _input) => { },
39
+ },
40
+ });
41
+ // ============================================================================
42
+ // 1. Visibility — `imports` gives local declarations full type safety
43
+ // ============================================================================
44
+ const featurePlugin = createPlugin({
45
+ imports: basePlugin,
46
+ components: {
47
+ featureFlag: { type: 'boolean' },
48
+ },
49
+ transactions: {
50
+ toggleFeature: (t, _input) => { },
51
+ },
52
+ actions: {
53
+ // The imported base's transactions are fully typed here — wrong names
54
+ // or argument shapes are compile errors, exactly as with `extends`.
55
+ recolor: async (db, color) => {
56
+ db.transactions.setBaseColor({ color }); // imported tx, typed
57
+ db.transactions.toggleFeature({ on: true }); // local tx, typed
58
+ const _scale = db.resources.baseScale; // imported resource, typed
59
+ },
60
+ },
61
+ });
62
+ // Negative guard: referencing a non-existent imported member must NOT compile.
63
+ const _negativeGuard = createPlugin({
64
+ imports: basePlugin,
65
+ actions: {
66
+ broken: async (db) => {
67
+ // @ts-expect-error — typo'd transaction name is caught (full safety)
68
+ db.transactions.setBaseColour({ color: 'red' });
69
+ // @ts-expect-error — wrong argument shape is caught
70
+ db.transactions.setBaseWidth({ width: 'wide' });
71
+ },
72
+ },
73
+ });
74
+ // Contrast: the same base via `extends` DOES re-export.
75
+ const extendedPlugin = createPlugin({
76
+ extends: basePlugin,
77
+ components: { featureFlag: { type: 'boolean' } },
78
+ });
79
+ // ============================================================================
80
+ // 3. To regain the imported members in the TYPE, combine the base back in
81
+ // explicitly (runtime already merged them — this is purely to surface the
82
+ // base's members on the database type for the consumer).
83
+ // ============================================================================
84
+ function testCombinedUsage() {
85
+ const plugin = Database.Plugin.combine(basePlugin, featurePlugin);
86
+ const db = Database.create(plugin);
87
+ db.transactions.setBaseColor({ color: 'blue' }); // from base
88
+ db.transactions.toggleFeature({ on: false }); // from feature
89
+ db.actions.recolor('green'); // from feature
90
+ const _e = 0;
91
+ }
92
+ //# sourceMappingURL=imports-chain.type-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imports-chain.type-test.js","sourceRoot":"","sources":["../../../src/ecs/database/imports-chain.type-test.ts"],"names":[],"mappings":"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"}