@decaf-ts/decoration 0.7.0 → 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 +1 -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 +259 -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 +260 -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
@@ -2,17 +2,27 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Decoration = void 0;
4
4
  const constants_1 = require("./../constants.cjs");
5
+ const Metadata_1 = require("./../metadata/Metadata.cjs");
6
+ const decorators_1 = require("./../decorators.cjs");
5
7
  /**
6
8
  * @description Default resolver that returns the current default flavour.
7
9
  * @summary Resolves the flavour for a given target by always returning the library's `DefaultFlavour` value.
8
10
  * @param {object} target Target object being decorated.
9
11
  * @return {string} Resolved flavour identifier.
10
- * @function defaultFlavourResolver
12
+ * @function flavourResolver
11
13
  * @memberOf module:decoration
12
14
  */
13
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
14
- function defaultFlavourResolver(target) {
15
- return constants_1.DefaultFlavour;
15
+ function flavourResolver(target) {
16
+ const owner = Metadata_1.Metadata.constr(typeof target === "function" ? target : target?.constructor);
17
+ const meta = Metadata_1.Metadata["innerGet"](Metadata_1.Metadata.Symbol(owner), constants_1.DecorationKeys.FLAVOUR);
18
+ if (meta && meta !== Decoration.defaultFlavour)
19
+ return meta;
20
+ const registered = typeof Metadata_1.Metadata["registeredFlavour"] === "function"
21
+ ? Metadata_1.Metadata.registeredFlavour(owner)
22
+ : undefined;
23
+ if (registered && registered !== Decoration.defaultFlavour)
24
+ return registered;
25
+ return meta ?? Decoration.defaultFlavour;
16
26
  }
17
27
  /**
18
28
  * @description A decorator management class that handles flavoured decorators.
@@ -54,6 +64,8 @@ function defaultFlavourResolver(target) {
54
64
  * F-->>C: decorated target
55
65
  */
56
66
  class Decoration {
67
+ static { this.defaultFlavour = constants_1.DefaultFlavour; }
68
+ static { this.targetStates = new WeakMap(); }
57
69
  /**
58
70
  * @description Static map of registered decorators.
59
71
  * @summary Stores all registered decorators organised by key and flavour.
@@ -63,10 +75,163 @@ class Decoration {
63
75
  * @description Function to resolve flavour from a target.
64
76
  * @summary Resolver function that determines the appropriate flavour for a given target.
65
77
  */
66
- static { this.flavourResolver = defaultFlavourResolver; }
67
- constructor(flavour = constants_1.DefaultFlavour) {
78
+ static { this.flavourResolver = flavourResolver; }
79
+ constructor(flavour = Decoration.defaultFlavour) {
68
80
  this.flavour = flavour;
69
81
  }
82
+ /**
83
+ * Register a decorator operation to be executed after class decorator runs.
84
+ * This solves the execution order issue: property decorators run before class decorators.
85
+ *
86
+ * @param target - The class being decorated
87
+ * @param callback - Function to execute once flavour is resolved
88
+ * @param propertyKey - Optional property key for property decorators
89
+ * @returns Unique key for this registration
90
+ */
91
+ static getTargetState(owner) {
92
+ if (!owner) {
93
+ throw new Error("Invalid target provided to Decoration state tracker");
94
+ }
95
+ let state = this.targetStates.get(owner);
96
+ if (!state) {
97
+ state = { pending: [], flavour: undefined, directApply: false };
98
+ this.targetStates.set(owner, state);
99
+ }
100
+ return state;
101
+ }
102
+ static applyPendingEntry(entry, flavour) {
103
+ try {
104
+ const descriptorResult = entry.callback(flavour, entry.argsOverride)(entry.target, entry.propertyKey, entry.descriptor);
105
+ if (typeof entry.propertyKey !== "undefined" &&
106
+ descriptorResult &&
107
+ entry.target) {
108
+ Object.defineProperty(entry.target, entry.propertyKey, descriptorResult);
109
+ }
110
+ }
111
+ catch (error) {
112
+ console.error(`Error resolving pending decorator for ${entry.owner?.name || "anonymous"}.${String(entry.propertyKey)}`, error);
113
+ }
114
+ }
115
+ static markPending(owner) {
116
+ if (!owner)
117
+ return;
118
+ const state = this.getTargetState(owner);
119
+ state.resolved = false;
120
+ if (!state.flavour)
121
+ state.flavour = Decoration.defaultFlavour;
122
+ Metadata_1.Metadata.set(owner, constants_1.DecorationKeys.DECORATION, constants_1.DecorationState.PENDING);
123
+ }
124
+ static registerPendingDecorator(owner, target, callback, propertyKey, descriptor, argsOverride) {
125
+ const key = `${owner?.name || "anonymous"}:${String(propertyKey || "class")}:${Date.now()}:${Math.random()}`;
126
+ const state = this.getTargetState(owner);
127
+ const entry = {
128
+ owner,
129
+ target,
130
+ propertyKey,
131
+ descriptor,
132
+ callback,
133
+ argsOverride,
134
+ key,
135
+ };
136
+ const applyImmediately = () => {
137
+ const flavourToUse = state.flavour ||
138
+ Metadata_1.Metadata.get(owner, constants_1.DecorationKeys.FLAVOUR) ||
139
+ Decoration.defaultFlavour;
140
+ this.applyPendingEntry(entry, flavourToUse);
141
+ entry.lastAppliedPass = state.passId;
142
+ return flavourToUse;
143
+ };
144
+ if (state.directApply) {
145
+ const flavourToUse = applyImmediately();
146
+ state.flavour = flavourToUse;
147
+ Metadata_1.Metadata.set(owner, constants_1.DecorationKeys.DECORATION, true);
148
+ return key;
149
+ }
150
+ state.pending.push(entry);
151
+ if (state.applying) {
152
+ applyImmediately();
153
+ }
154
+ if (Decoration.flavourResolver !== flavourResolver) {
155
+ try {
156
+ const eagerFlavour = Decoration.flavourResolver(owner);
157
+ if (eagerFlavour && eagerFlavour !== Decoration.defaultFlavour) {
158
+ this.resolvePendingDecorators(owner, eagerFlavour);
159
+ return key;
160
+ }
161
+ }
162
+ catch {
163
+ // Ignore resolver errors during eager resolution attempts.
164
+ }
165
+ }
166
+ return key;
167
+ }
168
+ static resolvePendingDecorators(target, flavour) {
169
+ const owner = typeof target === "function" ? target : target?.constructor || target;
170
+ if (!owner)
171
+ return;
172
+ const state = this.getTargetState(owner);
173
+ if (!state.pending.length && !flavour)
174
+ return;
175
+ const resolvedFlavour = flavour ||
176
+ state.flavour ||
177
+ Metadata_1.Metadata.get(owner, constants_1.DecorationKeys.FLAVOUR) ||
178
+ Decoration.defaultFlavour;
179
+ if (state.applying)
180
+ return;
181
+ const cursor = state.appliedCount || 0;
182
+ if (!flavour &&
183
+ state.lastAppliedFlavour === resolvedFlavour &&
184
+ cursor >= state.pending.length) {
185
+ return;
186
+ }
187
+ const shouldFinalize = Boolean(flavour && flavour !== Decoration.defaultFlavour) ||
188
+ state.directApply;
189
+ if (!state.pending.length)
190
+ return;
191
+ const currentPass = (state.passId || 0) + 1;
192
+ state.passId = currentPass;
193
+ state.applying = true;
194
+ try {
195
+ if (shouldFinalize) {
196
+ while (state.pending.length) {
197
+ const entry = state.pending.shift();
198
+ if (!entry)
199
+ continue;
200
+ if (entry.lastAppliedPass === currentPass)
201
+ continue;
202
+ this.applyPendingEntry(entry, resolvedFlavour);
203
+ entry.lastAppliedPass = currentPass;
204
+ }
205
+ }
206
+ else {
207
+ let index = cursor;
208
+ while (index < state.pending.length) {
209
+ const entry = state.pending[index++];
210
+ if (!entry)
211
+ continue;
212
+ if (entry.lastAppliedPass === currentPass)
213
+ continue;
214
+ this.applyPendingEntry(entry, resolvedFlavour);
215
+ entry.lastAppliedPass = currentPass;
216
+ }
217
+ state.appliedCount = state.pending.length;
218
+ }
219
+ }
220
+ finally {
221
+ state.applying = false;
222
+ }
223
+ state.flavour = resolvedFlavour;
224
+ state.resolved = true;
225
+ state.lastAppliedFlavour = resolvedFlavour;
226
+ if (shouldFinalize) {
227
+ state.pending.length = 0;
228
+ state.appliedCount = 0;
229
+ if (resolvedFlavour !== Decoration.defaultFlavour) {
230
+ state.directApply = true;
231
+ }
232
+ }
233
+ Metadata_1.Metadata.set(owner, constants_1.DecorationKeys.DECORATION, true);
234
+ }
70
235
  /**
71
236
  * @description Sets the key for the decoration builder.
72
237
  * @summary Initialises a new decoration chain with the specified key.
@@ -89,7 +254,7 @@ class Decoration {
89
254
  throw new Error("key must be provided before decorators can be added");
90
255
  if ((!decorators || !decorators.length) &&
91
256
  !addon &&
92
- this.flavour !== constants_1.DefaultFlavour)
257
+ this.flavour !== Decoration.defaultFlavour)
93
258
  throw new Error("Must provide overrides or addons to override or extend decaf's decorators");
94
259
  // For addon (extend) we merge with existing extras; for base (define) we replace
95
260
  if (addon) {
@@ -104,6 +269,19 @@ class Decoration {
104
269
  }
105
270
  return this;
106
271
  }
272
+ snapshotDecoratorArgs() {
273
+ if (!this.decorators || !this.decorators.size)
274
+ return undefined;
275
+ const overrides = {};
276
+ Array.from(this.decorators.values()).forEach((entry, index) => {
277
+ if (typeof entry === "object" &&
278
+ "args" in entry &&
279
+ Array.isArray(entry.args)) {
280
+ overrides[index] = [...entry.args];
281
+ }
282
+ });
283
+ return Object.keys(overrides).length ? overrides : undefined;
284
+ }
107
285
  /**
108
286
  * @description Defines the base decorators.
109
287
  * @summary Sets the primary decorators for the current context.
@@ -150,14 +328,14 @@ class Decoration {
150
328
  * A->>U: invoke decorator(target, key?, desc?)
151
329
  * end
152
330
  */
153
- decoratorFactory(key, f = constants_1.DefaultFlavour) {
331
+ decoratorFactory(key, f, overrides) {
154
332
  function contextDecorator(target, propertyKey, descriptor) {
155
- const flavour = Decoration.flavourResolver(target);
333
+ const flavour = f ?? Decoration.flavourResolver(target);
156
334
  const cache = Decoration.decorators[key];
157
335
  let decorators;
158
336
  const extras = cache[flavour]
159
337
  ? cache[flavour].extras
160
- : cache[constants_1.DefaultFlavour].extras;
338
+ : cache[Decoration.defaultFlavour].extras;
161
339
  if (cache &&
162
340
  cache[flavour] &&
163
341
  cache[flavour].decorators &&
@@ -165,11 +343,11 @@ class Decoration {
165
343
  decorators = cache[flavour].decorators;
166
344
  }
167
345
  else {
168
- decorators = cache[constants_1.DefaultFlavour].decorators;
346
+ decorators = cache[Decoration.defaultFlavour].decorators;
169
347
  }
170
348
  const baseDecoratorsList = [...(decorators ? decorators.values() : [])];
171
349
  const defaultDecoratorsList = [
172
- ...(cache[constants_1.DefaultFlavour]?.decorators || new Set()).values(),
350
+ ...(cache[Decoration.defaultFlavour]?.decorators || new Set()).values(),
173
351
  ];
174
352
  const baseArgsByIndex = baseDecoratorsList.reduce((accum, entry, index) => {
175
353
  if (typeof entry === "object" &&
@@ -192,28 +370,46 @@ class Decoration {
192
370
  ...(extras ? extras.values() : []),
193
371
  ];
194
372
  const baseLength = baseDecoratorsList.length;
195
- return toApply.reduce((_, d, index) => {
196
- switch (typeof d) {
197
- case "object": {
198
- const entry = d;
199
- const candidateIndex = index < baseLength ? index : 0;
200
- const args = "args" in entry && Array.isArray(entry.args)
373
+ const argsOverrides = overrides || {};
374
+ let currentTarget = target;
375
+ let currentDescriptor = descriptor;
376
+ toApply.forEach((d, index) => {
377
+ let decoratorFn;
378
+ if (typeof d === "object") {
379
+ const entry = d;
380
+ const candidateIndex = index < baseLength ? index : 0;
381
+ const overrideArgs = index < baseLength ? argsOverrides[candidateIndex] : undefined;
382
+ const args = overrideArgs ||
383
+ ("args" in entry && Array.isArray(entry.args)
201
384
  ? entry.args
202
385
  : (baseArgsByIndex[candidateIndex] ??
203
386
  defaultArgsByIndex[candidateIndex] ??
204
387
  defaultArgsByIndex[0] ??
205
- []);
206
- return entry.decorator(...args)(target, propertyKey, descriptor);
388
+ []));
389
+ decoratorFn = entry.decorator(...args);
390
+ }
391
+ else if (typeof d === "function") {
392
+ decoratorFn = d;
393
+ }
394
+ else {
395
+ throw new Error(`Unexpected decorator type: ${typeof d}`);
396
+ }
397
+ const result = decoratorFn(typeof propertyKey === "undefined" ? currentTarget : target, propertyKey, currentDescriptor);
398
+ if (typeof propertyKey === "undefined") {
399
+ if (typeof result === "function") {
400
+ currentTarget = result;
207
401
  }
208
- case "function":
209
- return d(target, propertyKey, descriptor);
210
- default:
211
- throw new Error(`Unexpected decorator type: ${typeof d}`);
212
402
  }
213
- }, { target, propertyKey, descriptor });
403
+ else if (typeof result !== "undefined") {
404
+ currentDescriptor = result;
405
+ }
406
+ });
407
+ return typeof propertyKey === "undefined"
408
+ ? currentTarget
409
+ : currentDescriptor;
214
410
  }
215
411
  Object.defineProperty(contextDecorator, "name", {
216
- value: [f, key].join("_decorator_for_"),
412
+ value: [f || "dynamic", key].join("_decorator_for_"),
217
413
  writable: false,
218
414
  });
219
415
  return contextDecorator;
@@ -226,16 +422,46 @@ class Decoration {
226
422
  apply() {
227
423
  if (!this.key)
228
424
  throw new Error("No key provided for the decoration builder");
425
+ const key = this.key;
229
426
  const existingDecorators = Decoration.decorators[this.key]?.[this.flavour]?.decorators;
230
427
  const decoratorsToRegister = this.decorators || existingDecorators || new Set();
231
- // If this builder explicitly configured decorators (via define), we want
232
- // to replace previously registered base decorators. Previously we cleared
233
- // extras when define() was called — restore the behaviour where define()
234
- // does not remove previously registered extras unless extras were
235
- // explicitly supplied.
236
428
  const extrasToRegister = typeof this.extras !== "undefined" ? this.extras : undefined;
237
429
  Decoration.register(this.key, this.flavour, decoratorsToRegister, extrasToRegister);
238
- return this.decoratorFactory(this.key, this.flavour);
430
+ const wrapper = (target, propertyKey, descriptor) => {
431
+ const isMember = typeof propertyKey !== "undefined";
432
+ const owner = typeof target === "function" ? target : target?.constructor || target;
433
+ if (owner && isMember) {
434
+ const currentFlavour = Metadata_1.Metadata["innerGet"](Metadata_1.Metadata.Symbol(owner), constants_1.DecorationKeys.FLAVOUR);
435
+ if (!currentFlavour)
436
+ (0, decorators_1.uses)(Decoration.defaultFlavour)(owner);
437
+ const argsOverride = this.snapshotDecoratorArgs();
438
+ Decoration.registerPendingDecorator(owner, target, (resolvedFlavour) => {
439
+ return this.decoratorFactory(key, resolvedFlavour, argsOverride);
440
+ }, propertyKey, descriptor, argsOverride);
441
+ Decoration.resolvePendingDecorators(owner);
442
+ if (propertyKey && !descriptor) {
443
+ (0, decorators_1.prop)()(owner, propertyKey); // auto tag as a property
444
+ }
445
+ if (propertyKey && descriptor) {
446
+ // TODO this probably needs refining. under some compilation processes, the descriptor can exit on a prop
447
+ (0, decorators_1.method)()(owner, propertyKey, descriptor); // auto tag as a method
448
+ }
449
+ return descriptor;
450
+ }
451
+ const flavourHint = this.flavour === Decoration.defaultFlavour ? undefined : this.flavour;
452
+ return this.decoratorFactory(key, flavourHint)(target, propertyKey, descriptor);
453
+ };
454
+ try {
455
+ Object.defineProperty(wrapper, "name", {
456
+ value: [this.flavour, key].join("_decorator_for_"),
457
+ writable: false,
458
+ });
459
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
460
+ }
461
+ catch (e) {
462
+ // Ignore environments that forbid redefining function name
463
+ }
464
+ return wrapper;
239
465
  }
240
466
  /**
241
467
  * @description Registers decorators for a specific key and flavour.
@@ -258,21 +484,12 @@ class Decoration {
258
484
  Decoration.decorators[key] = {};
259
485
  if (!Decoration.decorators[key][flavour])
260
486
  Decoration.decorators[key][flavour] = {};
261
- // Always set decorators. Only overwrite extras when an explicit value is
262
- // provided so that calling define() without extras does not accidentally
263
- // clear previously registered extras.
264
487
  Decoration.decorators[key][flavour].decorators = decorators;
265
488
  if (typeof extras !== "undefined") {
266
489
  Decoration.decorators[key][flavour].extras = extras;
267
490
  }
268
491
  }
269
- /**
270
- * @description Sets the global flavour resolver.
271
- * @summary Configures the function used to determine decorator flavours.
272
- * @param {FlavourResolver} resolver Function to resolve flavours.
273
- * @return {void}
274
- */
275
- static setFlavourResolver(resolver) {
492
+ static setResolver(resolver) {
276
493
  Decoration.flavourResolver = resolver;
277
494
  }
278
495
  /**
@@ -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 +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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"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.metadata = metadata;
4
4
  exports.metadataArray = metadataArray;
5
+ exports.uses = uses;
5
6
  exports.prop = prop;
6
7
  exports.param = param;
7
8
  exports.paramMetadata = paramMetadata;
@@ -26,7 +27,14 @@ function metadata(key, value) {
26
27
  return function metadata(model, prop,
27
28
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
28
29
  descriptor) {
29
- Metadata_1.Metadata.set(prop ? model.constructor : model, key, value);
30
+ let targetModel = model;
31
+ if (prop) {
32
+ targetModel =
33
+ typeof model === "function"
34
+ ? model
35
+ : model.constructor || model;
36
+ }
37
+ Metadata_1.Metadata.set(targetModel, key, value);
30
38
  };
31
39
  }
32
40
  function metadataArray(key, ...data) {
@@ -37,6 +45,46 @@ function metadataArray(key, ...data) {
37
45
  return apply(...arr)(target, propertyKey, descriptor);
38
46
  };
39
47
  }
48
+ function manageFlavourRMetadata(object, flavour) {
49
+ const canonical = Metadata_1.Metadata.constr(object);
50
+ const flav = Metadata_1.Metadata["innerGet"](Metadata_1.Metadata.Symbol(object), constants_1.DecorationKeys.FLAVOUR) || Decoration_1.Decoration.defaultFlavour;
51
+ const old = Metadata_1.Metadata["innerGet"](Symbol.for(constants_1.DecorationKeys.FLAVOUR), flav) || [];
52
+ const filtered = old.filter((o) => {
53
+ return Metadata_1.Metadata.constr(o) !== canonical;
54
+ });
55
+ Metadata_1.Metadata.set(constants_1.DecorationKeys.FLAVOUR, flav, filtered);
56
+ const current = new Set(Metadata_1.Metadata["innerGet"](Symbol.for(constants_1.DecorationKeys.FLAVOUR), flavour) || []);
57
+ current.add(object);
58
+ Metadata_1.Metadata.set(constants_1.DecorationKeys.FLAVOUR, flavour, [...current]);
59
+ }
60
+ function uses(flavour) {
61
+ return (object) => {
62
+ const constr = Metadata_1.Metadata.constr(object);
63
+ manageFlavourRMetadata(object, flavour);
64
+ Metadata_1.Metadata.set(constr, constants_1.DecorationKeys.FLAVOUR, flavour);
65
+ if (flavour !== Decoration_1.Decoration.defaultFlavour) {
66
+ Decoration_1.Decoration["resolvePendingDecorators"](constr, flavour);
67
+ }
68
+ else {
69
+ let resolved;
70
+ try {
71
+ resolved = Decoration_1.Decoration["flavourResolver"]
72
+ ? Decoration_1.Decoration["flavourResolver"](constr)
73
+ : undefined;
74
+ }
75
+ catch {
76
+ resolved = undefined;
77
+ }
78
+ if (resolved && resolved !== Decoration_1.Decoration.defaultFlavour) {
79
+ Decoration_1.Decoration["resolvePendingDecorators"](constr, resolved);
80
+ }
81
+ else {
82
+ Decoration_1.Decoration["markPending"](constr);
83
+ }
84
+ }
85
+ return object;
86
+ };
87
+ }
40
88
  /**
41
89
  * @description Captures and stores a property's design type.
42
90
  * @summary Decorator factory that reads the reflected `design:type` for a property and registers it in the metadata store under the properties map.
@@ -45,18 +93,12 @@ function metadataArray(key, ...data) {
45
93
  * @category Property Decorators
46
94
  */
47
95
  function prop() {
48
- function innerProp() {
49
- return function innerProp(model, prop) {
50
- const designType = Reflect.getOwnMetadata(constants_1.DecorationKeys.DESIGN_TYPE, model, prop);
51
- return metadata(Metadata_1.Metadata.key(constants_1.DecorationKeys.PROPERTIES, prop), designType)(model, prop);
52
- };
53
- }
54
- return Decoration_1.Decoration.for(constants_1.DecorationKeys.PROPERTIES)
55
- .define({
56
- decorator: innerProp,
57
- args: [],
58
- })
59
- .apply();
96
+ // function innerProp() {
97
+ return function innerProp(model, prop) {
98
+ const metadataTarget = typeof model === "function" ? model.prototype : model;
99
+ const designType = Reflect.getOwnMetadata(constants_1.DecorationKeys.DESIGN_TYPE, metadataTarget, prop);
100
+ return metadata(Metadata_1.Metadata.key(constants_1.DecorationKeys.PROPERTIES, prop), designType)(model, prop);
101
+ };
60
102
  }
61
103
  /**
62
104
  * @description Captures a single parameter type for the decorated method.
@@ -193,10 +235,7 @@ function methodMetadata(key, value) {
193
235
  function description(desc) {
194
236
  function innerDescription(desc) {
195
237
  return function innerDescription(original, prop, descriptor) {
196
- return metadata([
197
- constants_1.DecorationKeys.DESCRIPTION,
198
- prop ? prop.toString() : constants_1.DecorationKeys.CLASS,
199
- ].join(Metadata_1.Metadata.splitter), desc)(original, prop, descriptor);
238
+ return metadata(Metadata_1.Metadata.key(constants_1.DecorationKeys.DESCRIPTION, prop ? prop.toString() : constants_1.DecorationKeys.CLASS), desc)(original, prop, descriptor);
200
239
  };
201
240
  }
202
241
  return Decoration_1.Decoration.for(constants_1.DecorationKeys.DESCRIPTION)
@@ -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.