@decaf-ts/decoration 0.6.4 → 0.8.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.
Files changed (44) hide show
  1. package/README.md +49 -1
  2. package/dist/decoration.cjs +1 -1
  3. package/dist/decoration.cjs.map +1 -1
  4. package/dist/decoration.js +1 -1
  5. package/dist/decoration.js.map +1 -1
  6. package/lib/constants.cjs +10 -1
  7. package/lib/constants.d.ts +8 -0
  8. package/lib/constants.js.map +1 -1
  9. package/lib/decoration/Decoration.cjs +275 -42
  10. package/lib/decoration/Decoration.d.ts +19 -12
  11. package/lib/decoration/Decoration.js.map +1 -1
  12. package/lib/decorators.cjs +56 -17
  13. package/lib/decorators.d.ts +3 -2
  14. package/lib/decorators.js.map +1 -1
  15. package/lib/esm/constants.d.ts +8 -0
  16. package/lib/esm/constants.js +9 -0
  17. package/lib/esm/constants.js.map +1 -1
  18. package/lib/esm/decoration/Decoration.d.ts +19 -12
  19. package/lib/esm/decoration/Decoration.js +276 -43
  20. package/lib/esm/decoration/Decoration.js.map +1 -1
  21. package/lib/esm/decorators.d.ts +3 -2
  22. package/lib/esm/decorators.js +55 -17
  23. package/lib/esm/decorators.js.map +1 -1
  24. package/lib/esm/index.d.ts +1 -8
  25. package/lib/esm/index.js +1 -10
  26. package/lib/esm/index.js.map +1 -1
  27. package/lib/esm/metadata/Metadata.d.ts +4 -0
  28. package/lib/esm/metadata/Metadata.js +42 -1
  29. package/lib/esm/metadata/Metadata.js.map +1 -1
  30. package/lib/esm/metadata/types.d.ts +1 -0
  31. package/lib/esm/version.d.ts +9 -0
  32. package/lib/esm/version.js +10 -0
  33. package/lib/esm/version.js.map +1 -0
  34. package/lib/index.cjs +1 -11
  35. package/lib/index.d.ts +1 -8
  36. package/lib/index.js.map +1 -1
  37. package/lib/metadata/Metadata.cjs +41 -0
  38. package/lib/metadata/Metadata.d.ts +4 -0
  39. package/lib/metadata/Metadata.js.map +1 -1
  40. package/lib/metadata/types.d.ts +1 -0
  41. package/lib/version.cjs +13 -0
  42. package/lib/version.d.ts +9 -0
  43. package/lib/version.js.map +1 -0
  44. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,10 @@ export declare enum DecorationKeys {
40
40
  CONSTRUCTOR = "__original",
41
41
  /** @description Collected parameter metadata for configured decorators. */
42
42
  PARAMETERS = "parameters",
43
+ /** @description identifies the decoration flavour. */
44
+ FLAVOUR = "flavour",
45
+ /** @description identifies if the model has pending decoration. */
46
+ DECORATION = "decoration",
43
47
  /** @description Reflect metadata key for a property's design type. */
44
48
  DESIGN_TYPE = "design:type",
45
49
  /** @description Reflect metadata key for recorded constructor parameter types. */
@@ -47,6 +51,10 @@ export declare enum DecorationKeys {
47
51
  /** @description Reflect metadata key for a method's return type. */
48
52
  DESIGN_RETURN = "design:returntype"
49
53
  }
54
+ export declare enum DecorationState {
55
+ PENDING = "pending",
56
+ ONGOING = "ongoing"
57
+ }
50
58
  /**
51
59
  * @description Default metadata instance.
52
60
  * @summary Provides the default metadata shape used when initialising new metadata entries for a model.
@@ -40,6 +40,10 @@ export var DecorationKeys;
40
40
  DecorationKeys["CONSTRUCTOR"] = "__original";
41
41
  /** @description Collected parameter metadata for configured decorators. */
42
42
  DecorationKeys["PARAMETERS"] = "parameters";
43
+ /** @description identifies the decoration flavour. */
44
+ DecorationKeys["FLAVOUR"] = "flavour";
45
+ /** @description identifies if the model has pending decoration. */
46
+ DecorationKeys["DECORATION"] = "decoration";
43
47
  /** @description Reflect metadata key for a property's design type. */
44
48
  DecorationKeys["DESIGN_TYPE"] = "design:type";
45
49
  /** @description Reflect metadata key for recorded constructor parameter types. */
@@ -47,6 +51,11 @@ export var DecorationKeys;
47
51
  /** @description Reflect metadata key for a method's return type. */
48
52
  DecorationKeys["DESIGN_RETURN"] = "design:returntype";
49
53
  })(DecorationKeys || (DecorationKeys = {}));
54
+ export var DecorationState;
55
+ (function (DecorationState) {
56
+ DecorationState["PENDING"] = "pending";
57
+ DecorationState["ONGOING"] = "ongoing";
58
+ })(DecorationState || (DecorationState = {}));
50
59
  /**
51
60
  * @description Default metadata instance.
52
61
  * @summary Provides the default metadata shape used when initialising new metadata entries for a model.
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC;;;;;;;GAOG;AACH,MAAM,CAAN,IAAY,cAuBX;AAvBD,WAAY,cAAc;IACxB,8EAA8E;IAC9E,yCAAuB,CAAA;IACvB,qFAAqF;IACrF,qCAA+B,CAAA;IAC/B,yEAAyE;IACzE,2CAAyB,CAAA;IACzB,uEAAuE;IACvE,qCAAmB,CAAA;IACnB,iFAAiF;IACjF,iCAAe,CAAA;IACf,wEAAwE;IACxE,6CAA2B,CAAA;IAC3B,mFAAmF;IACnF,4CAA0B,CAAA;IAC1B,2EAA2E;IAC3E,2CAAyB,CAAA;IACzB,sEAAsE;IACtE,6CAA2B,CAAA;IAC3B,kFAAkF;IAClF,qDAAmC,CAAA;IACnC,oEAAoE;IACpE,qDAAmC,CAAA;AACrC,CAAC,EAvBW,cAAc,KAAd,cAAc,QAuBzB;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAuB;IACjD,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,EAAE;CACC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC;;;;;;;GAOG;AACH,MAAM,CAAN,IAAY,cA2BX;AA3BD,WAAY,cAAc;IACxB,8EAA8E;IAC9E,yCAAuB,CAAA;IACvB,qFAAqF;IACrF,qCAA+B,CAAA;IAC/B,yEAAyE;IACzE,2CAAyB,CAAA;IACzB,uEAAuE;IACvE,qCAAmB,CAAA;IACnB,iFAAiF;IACjF,iCAAe,CAAA;IACf,wEAAwE;IACxE,6CAA2B,CAAA;IAC3B,mFAAmF;IACnF,4CAA0B,CAAA;IAC1B,2EAA2E;IAC3E,2CAAyB,CAAA;IACzB,sDAAsD;IACtD,qCAAmB,CAAA;IACnB,mEAAmE;IACnE,2CAAyB,CAAA;IACzB,sEAAsE;IACtE,6CAA2B,CAAA;IAC3B,kFAAkF;IAClF,qDAAmC,CAAA;IACnC,oEAAoE;IACpE,qDAAmC,CAAA;AACrC,CAAC,EA3BW,cAAc,KAAd,cAAc,QA2BzB;AAED,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;AACrB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAuB;IACjD,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,EAAE;CACC,CAAC"}
@@ -76,6 +76,8 @@ export type ExtendDecoratorData = DecoratorTypes | Omit<DecoratorFactoryArgs, "a
76
76
  */
77
77
  export declare class Decoration implements IDecorationBuilder {
78
78
  private flavour;
79
+ static defaultFlavour: string;
80
+ private static targetStates;
79
81
  /**
80
82
  * @description Static map of registered decorators.
81
83
  * @summary Stores all registered decorators organised by key and flavour.
@@ -99,6 +101,20 @@ export declare class Decoration implements IDecorationBuilder {
99
101
  */
100
102
  private key?;
101
103
  constructor(flavour?: string);
104
+ /**
105
+ * Register a decorator operation to be executed after class decorator runs.
106
+ * This solves the execution order issue: property decorators run before class decorators.
107
+ *
108
+ * @param target - The class being decorated
109
+ * @param callback - Function to execute once flavour is resolved
110
+ * @param propertyKey - Optional property key for property decorators
111
+ * @returns Unique key for this registration
112
+ */
113
+ private static getTargetState;
114
+ private static applyPendingEntry;
115
+ protected static markPending(owner: any): void;
116
+ protected static registerPendingDecorator(owner: any, target: any, callback: (flavour: string, overrides?: Record<number, any[]>) => PropertyDecorator | MethodDecorator, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<any> | number, argsOverride?: Record<number, any[]>): string;
117
+ protected static resolvePendingDecorators(target: any, flavour?: string): void;
102
118
  /**
103
119
  * @description Sets the key for the decoration builder.
104
120
  * @summary Initialises a new decoration chain with the specified key.
@@ -114,6 +130,7 @@ export declare class Decoration implements IDecorationBuilder {
114
130
  * @return {this} Current instance for chaining.
115
131
  */
116
132
  private decorate;
133
+ private snapshotDecoratorArgs;
117
134
  /**
118
135
  * @description Defines the base decorators.
119
136
  * @summary Sets the primary decorators for the current context.
@@ -150,11 +167,7 @@ export declare class Decoration implements IDecorationBuilder {
150
167
  * A->>U: invoke decorator(target, key?, desc?)
151
168
  * end
152
169
  */
153
- protected decoratorFactory(key: string, f?: string): (target: object, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => {
154
- target: object;
155
- propertyKey: any;
156
- descriptor: TypedPropertyDescriptor<any> | undefined;
157
- };
170
+ protected decoratorFactory(key: string, f?: string, overrides?: Record<number, any[]>): (target: object, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => object | undefined;
158
171
  /**
159
172
  * @description Creates the final decorator function.
160
173
  * @summary Builds and returns the decorator factory function.
@@ -171,13 +184,7 @@ export declare class Decoration implements IDecorationBuilder {
171
184
  * @return {void}
172
185
  */
173
186
  private static register;
174
- /**
175
- * @description Sets the global flavour resolver.
176
- * @summary Configures the function used to determine decorator flavours.
177
- * @param {FlavourResolver} resolver Function to resolve flavours.
178
- * @return {void}
179
- */
180
- static setFlavourResolver(resolver: FlavourResolver): void;
187
+ static setResolver(resolver: FlavourResolver): void;
181
188
  /**
182
189
  * @description Convenience static entry to start a decoration builder.
183
190
  * @summary Creates a new Decoration instance and initiates the builder chain with the provided key.
@@ -1,15 +1,25 @@
1
- import { DefaultFlavour } from "./../constants.js";
1
+ import { DecorationKeys, DecorationState, DefaultFlavour } from "./../constants.js";
2
+ import { Metadata } from "./../metadata/Metadata.js";
3
+ import { method, prop, uses } from "./../decorators.js";
2
4
  /**
3
5
  * @description Default resolver that returns the current default flavour.
4
6
  * @summary Resolves the flavour for a given target by always returning the library's `DefaultFlavour` value.
5
7
  * @param {object} target Target object being decorated.
6
8
  * @return {string} Resolved flavour identifier.
7
- * @function defaultFlavourResolver
9
+ * @function flavourResolver
8
10
  * @memberOf module:decoration
9
11
  */
10
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
11
- function defaultFlavourResolver(target) {
12
- return DefaultFlavour;
12
+ function flavourResolver(target) {
13
+ const owner = Metadata.constr(typeof target === "function" ? target : target?.constructor);
14
+ const meta = Metadata["innerGet"](Metadata.Symbol(owner), DecorationKeys.FLAVOUR);
15
+ if (meta && meta !== Decoration.defaultFlavour)
16
+ return meta;
17
+ const registered = typeof Metadata["registeredFlavour"] === "function"
18
+ ? Metadata.registeredFlavour(owner)
19
+ : undefined;
20
+ if (registered && registered !== Decoration.defaultFlavour)
21
+ return registered;
22
+ return meta ?? Decoration.defaultFlavour;
13
23
  }
14
24
  /**
15
25
  * @description A decorator management class that handles flavoured decorators.
@@ -51,6 +61,8 @@ function defaultFlavourResolver(target) {
51
61
  * F-->>C: decorated target
52
62
  */
53
63
  export class Decoration {
64
+ static { this.defaultFlavour = DefaultFlavour; }
65
+ static { this.targetStates = new WeakMap(); }
54
66
  /**
55
67
  * @description Static map of registered decorators.
56
68
  * @summary Stores all registered decorators organised by key and flavour.
@@ -60,10 +72,163 @@ export class Decoration {
60
72
  * @description Function to resolve flavour from a target.
61
73
  * @summary Resolver function that determines the appropriate flavour for a given target.
62
74
  */
63
- static { this.flavourResolver = defaultFlavourResolver; }
64
- constructor(flavour = DefaultFlavour) {
75
+ static { this.flavourResolver = flavourResolver; }
76
+ constructor(flavour = Decoration.defaultFlavour) {
65
77
  this.flavour = flavour;
66
78
  }
79
+ /**
80
+ * Register a decorator operation to be executed after class decorator runs.
81
+ * This solves the execution order issue: property decorators run before class decorators.
82
+ *
83
+ * @param target - The class being decorated
84
+ * @param callback - Function to execute once flavour is resolved
85
+ * @param propertyKey - Optional property key for property decorators
86
+ * @returns Unique key for this registration
87
+ */
88
+ static getTargetState(owner) {
89
+ if (!owner) {
90
+ throw new Error("Invalid target provided to Decoration state tracker");
91
+ }
92
+ let state = this.targetStates.get(owner);
93
+ if (!state) {
94
+ state = { pending: [], flavour: undefined, directApply: false };
95
+ this.targetStates.set(owner, state);
96
+ }
97
+ return state;
98
+ }
99
+ static applyPendingEntry(entry, flavour) {
100
+ try {
101
+ const descriptorResult = entry.callback(flavour, entry.argsOverride)(entry.target, entry.propertyKey, entry.descriptor);
102
+ if (typeof entry.propertyKey !== "undefined" &&
103
+ descriptorResult &&
104
+ entry.target) {
105
+ Object.defineProperty(entry.target, entry.propertyKey, descriptorResult);
106
+ }
107
+ }
108
+ catch (error) {
109
+ console.error(`Error resolving pending decorator for ${entry.owner?.name || "anonymous"}.${String(entry.propertyKey)}`, error);
110
+ }
111
+ }
112
+ static markPending(owner) {
113
+ if (!owner)
114
+ return;
115
+ const state = this.getTargetState(owner);
116
+ state.resolved = false;
117
+ if (!state.flavour)
118
+ state.flavour = Decoration.defaultFlavour;
119
+ Metadata.set(owner, DecorationKeys.DECORATION, DecorationState.PENDING);
120
+ }
121
+ static registerPendingDecorator(owner, target, callback, propertyKey, descriptor, argsOverride) {
122
+ const key = `${owner?.name || "anonymous"}:${String(propertyKey || "class")}:${Date.now()}:${Math.random()}`;
123
+ const state = this.getTargetState(owner);
124
+ const entry = {
125
+ owner,
126
+ target,
127
+ propertyKey,
128
+ descriptor,
129
+ callback,
130
+ argsOverride,
131
+ key,
132
+ };
133
+ const applyImmediately = () => {
134
+ const flavourToUse = state.flavour ||
135
+ Metadata.get(owner, DecorationKeys.FLAVOUR) ||
136
+ Decoration.defaultFlavour;
137
+ this.applyPendingEntry(entry, flavourToUse);
138
+ entry.lastAppliedPass = state.passId;
139
+ return flavourToUse;
140
+ };
141
+ if (state.directApply) {
142
+ const flavourToUse = applyImmediately();
143
+ state.flavour = flavourToUse;
144
+ Metadata.set(owner, DecorationKeys.DECORATION, true);
145
+ return key;
146
+ }
147
+ state.pending.push(entry);
148
+ if (state.applying) {
149
+ applyImmediately();
150
+ }
151
+ if (Decoration.flavourResolver !== flavourResolver) {
152
+ try {
153
+ const eagerFlavour = Decoration.flavourResolver(owner);
154
+ if (eagerFlavour && eagerFlavour !== Decoration.defaultFlavour) {
155
+ this.resolvePendingDecorators(owner, eagerFlavour);
156
+ return key;
157
+ }
158
+ }
159
+ catch {
160
+ // Ignore resolver errors during eager resolution attempts.
161
+ }
162
+ }
163
+ return key;
164
+ }
165
+ static resolvePendingDecorators(target, flavour) {
166
+ const owner = typeof target === "function" ? target : target?.constructor || target;
167
+ if (!owner)
168
+ return;
169
+ const state = this.getTargetState(owner);
170
+ if (!state.pending.length && !flavour)
171
+ return;
172
+ const resolvedFlavour = flavour ||
173
+ state.flavour ||
174
+ Metadata.get(owner, DecorationKeys.FLAVOUR) ||
175
+ Decoration.defaultFlavour;
176
+ if (state.applying)
177
+ return;
178
+ const cursor = state.appliedCount || 0;
179
+ if (!flavour &&
180
+ state.lastAppliedFlavour === resolvedFlavour &&
181
+ cursor >= state.pending.length) {
182
+ return;
183
+ }
184
+ const shouldFinalize = Boolean(flavour && flavour !== Decoration.defaultFlavour) ||
185
+ state.directApply;
186
+ if (!state.pending.length)
187
+ return;
188
+ const currentPass = (state.passId || 0) + 1;
189
+ state.passId = currentPass;
190
+ state.applying = true;
191
+ try {
192
+ if (shouldFinalize) {
193
+ while (state.pending.length) {
194
+ const entry = state.pending.shift();
195
+ if (!entry)
196
+ continue;
197
+ if (entry.lastAppliedPass === currentPass)
198
+ continue;
199
+ this.applyPendingEntry(entry, resolvedFlavour);
200
+ entry.lastAppliedPass = currentPass;
201
+ }
202
+ }
203
+ else {
204
+ let index = cursor;
205
+ while (index < state.pending.length) {
206
+ const entry = state.pending[index++];
207
+ if (!entry)
208
+ continue;
209
+ if (entry.lastAppliedPass === currentPass)
210
+ continue;
211
+ this.applyPendingEntry(entry, resolvedFlavour);
212
+ entry.lastAppliedPass = currentPass;
213
+ }
214
+ state.appliedCount = state.pending.length;
215
+ }
216
+ }
217
+ finally {
218
+ state.applying = false;
219
+ }
220
+ state.flavour = resolvedFlavour;
221
+ state.resolved = true;
222
+ state.lastAppliedFlavour = resolvedFlavour;
223
+ if (shouldFinalize) {
224
+ state.pending.length = 0;
225
+ state.appliedCount = 0;
226
+ if (resolvedFlavour !== Decoration.defaultFlavour) {
227
+ state.directApply = true;
228
+ }
229
+ }
230
+ Metadata.set(owner, DecorationKeys.DECORATION, true);
231
+ }
67
232
  /**
68
233
  * @description Sets the key for the decoration builder.
69
234
  * @summary Initialises a new decoration chain with the specified key.
@@ -86,14 +251,34 @@ export class Decoration {
86
251
  throw new Error("key must be provided before decorators can be added");
87
252
  if ((!decorators || !decorators.length) &&
88
253
  !addon &&
89
- this.flavour !== DefaultFlavour)
254
+ this.flavour !== Decoration.defaultFlavour)
90
255
  throw new Error("Must provide overrides or addons to override or extend decaf's decorators");
91
- this[addon ? "extras" : "decorators"] = new Set([
92
- ...(this[addon ? "extras" : "decorators"] || new Set()).values(),
93
- ...decorators,
94
- ]);
256
+ // For addon (extend) we merge with existing extras; for base (define) we replace
257
+ if (addon) {
258
+ this.extras = new Set([
259
+ ...(this.extras || new Set()).values(),
260
+ ...decorators,
261
+ ]);
262
+ }
263
+ else {
264
+ // replace any previously configured base decorators on this builder
265
+ this.decorators = new Set([...decorators]);
266
+ }
95
267
  return this;
96
268
  }
269
+ snapshotDecoratorArgs() {
270
+ if (!this.decorators || !this.decorators.size)
271
+ return undefined;
272
+ const overrides = {};
273
+ Array.from(this.decorators.values()).forEach((entry, index) => {
274
+ if (typeof entry === "object" &&
275
+ "args" in entry &&
276
+ Array.isArray(entry.args)) {
277
+ overrides[index] = [...entry.args];
278
+ }
279
+ });
280
+ return Object.keys(overrides).length ? overrides : undefined;
281
+ }
97
282
  /**
98
283
  * @description Defines the base decorators.
99
284
  * @summary Sets the primary decorators for the current context.
@@ -140,14 +325,14 @@ export class Decoration {
140
325
  * A->>U: invoke decorator(target, key?, desc?)
141
326
  * end
142
327
  */
143
- decoratorFactory(key, f = DefaultFlavour) {
328
+ decoratorFactory(key, f, overrides) {
144
329
  function contextDecorator(target, propertyKey, descriptor) {
145
- const flavour = Decoration.flavourResolver(target);
330
+ const flavour = f ?? Decoration.flavourResolver(target);
146
331
  const cache = Decoration.decorators[key];
147
332
  let decorators;
148
333
  const extras = cache[flavour]
149
334
  ? cache[flavour].extras
150
- : cache[DefaultFlavour].extras;
335
+ : cache[Decoration.defaultFlavour].extras;
151
336
  if (cache &&
152
337
  cache[flavour] &&
153
338
  cache[flavour].decorators &&
@@ -155,11 +340,11 @@ export class Decoration {
155
340
  decorators = cache[flavour].decorators;
156
341
  }
157
342
  else {
158
- decorators = cache[DefaultFlavour].decorators;
343
+ decorators = cache[Decoration.defaultFlavour].decorators;
159
344
  }
160
345
  const baseDecoratorsList = [...(decorators ? decorators.values() : [])];
161
346
  const defaultDecoratorsList = [
162
- ...(cache[DefaultFlavour]?.decorators || new Set()).values(),
347
+ ...(cache[Decoration.defaultFlavour]?.decorators || new Set()).values(),
163
348
  ];
164
349
  const baseArgsByIndex = baseDecoratorsList.reduce((accum, entry, index) => {
165
350
  if (typeof entry === "object" &&
@@ -182,28 +367,46 @@ export class Decoration {
182
367
  ...(extras ? extras.values() : []),
183
368
  ];
184
369
  const baseLength = baseDecoratorsList.length;
185
- return toApply.reduce((_, d, index) => {
186
- switch (typeof d) {
187
- case "object": {
188
- const entry = d;
189
- const candidateIndex = index < baseLength ? index : 0;
190
- const args = "args" in entry && Array.isArray(entry.args)
370
+ const argsOverrides = overrides || {};
371
+ let currentTarget = target;
372
+ let currentDescriptor = descriptor;
373
+ toApply.forEach((d, index) => {
374
+ let decoratorFn;
375
+ if (typeof d === "object") {
376
+ const entry = d;
377
+ const candidateIndex = index < baseLength ? index : 0;
378
+ const overrideArgs = index < baseLength ? argsOverrides[candidateIndex] : undefined;
379
+ const args = overrideArgs ||
380
+ ("args" in entry && Array.isArray(entry.args)
191
381
  ? entry.args
192
382
  : (baseArgsByIndex[candidateIndex] ??
193
383
  defaultArgsByIndex[candidateIndex] ??
194
384
  defaultArgsByIndex[0] ??
195
- []);
196
- return entry.decorator(...args)(target, propertyKey, descriptor);
385
+ []));
386
+ decoratorFn = entry.decorator(...args);
387
+ }
388
+ else if (typeof d === "function") {
389
+ decoratorFn = d;
390
+ }
391
+ else {
392
+ throw new Error(`Unexpected decorator type: ${typeof d}`);
393
+ }
394
+ const result = decoratorFn(typeof propertyKey === "undefined" ? currentTarget : target, propertyKey, currentDescriptor);
395
+ if (typeof propertyKey === "undefined") {
396
+ if (typeof result === "function") {
397
+ currentTarget = result;
197
398
  }
198
- case "function":
199
- return d(target, propertyKey, descriptor);
200
- default:
201
- throw new Error(`Unexpected decorator type: ${typeof d}`);
202
399
  }
203
- }, { target, propertyKey, descriptor });
400
+ else if (typeof result !== "undefined") {
401
+ currentDescriptor = result;
402
+ }
403
+ });
404
+ return typeof propertyKey === "undefined"
405
+ ? currentTarget
406
+ : currentDescriptor;
204
407
  }
205
408
  Object.defineProperty(contextDecorator, "name", {
206
- value: [f, key].join("_decorator_for_"),
409
+ value: [f || "dynamic", key].join("_decorator_for_"),
207
410
  writable: false,
208
411
  });
209
412
  return contextDecorator;
@@ -216,10 +419,46 @@ export class Decoration {
216
419
  apply() {
217
420
  if (!this.key)
218
421
  throw new Error("No key provided for the decoration builder");
422
+ const key = this.key;
219
423
  const existingDecorators = Decoration.decorators[this.key]?.[this.flavour]?.decorators;
220
424
  const decoratorsToRegister = this.decorators || existingDecorators || new Set();
221
- Decoration.register(this.key, this.flavour, decoratorsToRegister, this.extras);
222
- return this.decoratorFactory(this.key, this.flavour);
425
+ const extrasToRegister = typeof this.extras !== "undefined" ? this.extras : undefined;
426
+ Decoration.register(this.key, this.flavour, decoratorsToRegister, extrasToRegister);
427
+ const wrapper = (target, propertyKey, descriptor) => {
428
+ const isMember = typeof propertyKey !== "undefined";
429
+ const owner = typeof target === "function" ? target : target?.constructor || target;
430
+ if (owner && isMember) {
431
+ const currentFlavour = Metadata["innerGet"](Metadata.Symbol(owner), DecorationKeys.FLAVOUR);
432
+ if (!currentFlavour)
433
+ uses(Decoration.defaultFlavour)(owner);
434
+ const argsOverride = this.snapshotDecoratorArgs();
435
+ Decoration.registerPendingDecorator(owner, target, (resolvedFlavour) => {
436
+ return this.decoratorFactory(key, resolvedFlavour, argsOverride);
437
+ }, propertyKey, descriptor, argsOverride);
438
+ Decoration.resolvePendingDecorators(owner);
439
+ if (propertyKey && !descriptor) {
440
+ prop()(owner, propertyKey); // auto tag as a property
441
+ }
442
+ if (propertyKey && descriptor) {
443
+ // TODO this probably needs refining. under some compilation processes, the descriptor can exit on a prop
444
+ method()(owner, propertyKey, descriptor); // auto tag as a method
445
+ }
446
+ return descriptor;
447
+ }
448
+ const flavourHint = this.flavour === Decoration.defaultFlavour ? undefined : this.flavour;
449
+ return this.decoratorFactory(key, flavourHint)(target, propertyKey, descriptor);
450
+ };
451
+ try {
452
+ Object.defineProperty(wrapper, "name", {
453
+ value: [this.flavour, key].join("_decorator_for_"),
454
+ writable: false,
455
+ });
456
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
457
+ }
458
+ catch (e) {
459
+ // Ignore environments that forbid redefining function name
460
+ }
461
+ return wrapper;
223
462
  }
224
463
  /**
225
464
  * @description Registers decorators for a specific key and flavour.
@@ -242,18 +481,12 @@ export class Decoration {
242
481
  Decoration.decorators[key] = {};
243
482
  if (!Decoration.decorators[key][flavour])
244
483
  Decoration.decorators[key][flavour] = {};
245
- if (decorators)
246
- Decoration.decorators[key][flavour].decorators = decorators;
247
- if (extras)
484
+ Decoration.decorators[key][flavour].decorators = decorators;
485
+ if (typeof extras !== "undefined") {
248
486
  Decoration.decorators[key][flavour].extras = extras;
487
+ }
249
488
  }
250
- /**
251
- * @description Sets the global flavour resolver.
252
- * @summary Configures the function used to determine decorator flavours.
253
- * @param {FlavourResolver} resolver Function to resolve flavours.
254
- * @return {void}
255
- */
256
- static setFlavourResolver(resolver) {
489
+ static setResolver(resolver) {
257
490
  Decoration.flavourResolver = resolver;
258
491
  }
259
492
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Decoration.js","sourceRoot":"","sources":["../../../src/decoration/Decoration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Decoration.js","sourceRoot":"","sources":["../../../src/decoration/Decoration.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@
9
9
  */
10
10
  export declare function metadata(key: string, value: any): (model: any, prop?: any, descriptor?: PropertyDescriptor | number) => void;
11
11
  export declare function metadataArray(key: string, ...data: any[]): (target: any, propertyKey?: any, descriptor?: any) => void;
12
+ export declare function uses(flavour: string): (object: any) => any;
12
13
  /**
13
14
  * @description Captures and stores a property's design type.
14
15
  * @summary Decorator factory that reads the reflected `design:type` for a property and registers it in the metadata store under the properties map.
@@ -16,7 +17,7 @@ export declare function metadataArray(key: string, ...data: any[]): (target: any
16
17
  * @function prop
17
18
  * @category Property Decorators
18
19
  */
19
- export declare function prop(): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
20
+ export declare function prop(): (model: object, prop?: any) => void;
20
21
  /**
21
22
  * @description Captures a single parameter type for the decorated method.
22
23
  * @summary Decorator factory that ensures the method metadata is initialised and stores the reflected parameter constructor at the provided index.
@@ -35,7 +36,7 @@ export declare function prop(): (target: any, propertyKey?: any, descriptor?: Ty
35
36
  * P->>M: set(methods.key.index, constructor)
36
37
  * P-->>U: parameter recorded
37
38
  */
38
- export declare function param(): (model: object, prop: string | symbol | undefined, index: number) => void;
39
+ export declare function param(): (model: object, prop?: any, index?: number) => void;
39
40
  /**
40
41
  * @description Extends a parameter decorator with additional metadata.
41
42
  * @summary Applies the default `param()` decorator and augments the stored metadata with an arbitrary key/value pair.