@alterior/annotations 3.0.0-beta.9 → 3.0.0-rc.5

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 (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -9
  3. package/dist/annotations.d.ts +212 -25
  4. package/dist/annotations.d.ts.map +1 -0
  5. package/dist/annotations.js +312 -91
  6. package/dist/annotations.js.map +1 -1
  7. package/dist/annotations.test.d.ts +1 -0
  8. package/dist/annotations.test.d.ts.map +1 -0
  9. package/dist/annotations.test.js.map +1 -1
  10. package/dist/index.d.ts +1 -1
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +3 -6
  13. package/dist/index.js.map +1 -1
  14. package/dist/sealed.d.ts +4 -0
  15. package/dist/sealed.d.ts.map +1 -0
  16. package/dist/sealed.js +4 -0
  17. package/dist/sealed.js.map +1 -1
  18. package/dist/test.d.ts +1 -0
  19. package/dist/test.d.ts.map +1 -0
  20. package/dist/test.js.map +1 -1
  21. package/dist.esm/annotations.d.ts +432 -0
  22. package/dist.esm/annotations.d.ts.map +1 -0
  23. package/dist.esm/annotations.js +769 -0
  24. package/dist.esm/annotations.js.map +1 -0
  25. package/dist.esm/annotations.test.d.ts +2 -0
  26. package/dist.esm/annotations.test.d.ts.map +1 -0
  27. package/dist.esm/annotations.test.js +688 -0
  28. package/dist.esm/annotations.test.js.map +1 -0
  29. package/dist.esm/index.d.ts +3 -0
  30. package/dist.esm/index.d.ts.map +1 -0
  31. package/dist.esm/index.js +3 -0
  32. package/dist.esm/index.js.map +1 -0
  33. package/dist.esm/sealed.d.ts +13 -0
  34. package/dist.esm/sealed.d.ts.map +1 -0
  35. package/dist.esm/sealed.js +13 -0
  36. package/dist.esm/sealed.js.map +1 -0
  37. package/dist.esm/test.d.ts +2 -0
  38. package/dist.esm/test.d.ts.map +1 -0
  39. package/dist.esm/test.js +6 -0
  40. package/dist.esm/test.js.map +1 -0
  41. package/package.json +41 -31
  42. package/tsconfig.esm.json +8 -0
  43. package/tsconfig.json +15 -9
  44. package/tsconfig.tsbuildinfo +4292 -0
  45. package/dist/visibility.d.ts +0 -16
  46. package/dist/visibility.js +0 -38
  47. package/dist/visibility.js.map +0 -1
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2017-2018 William Lahti
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @alterior/annotations
2
2
 
3
- [![npm version](https://badge.fury.io/js/%40alterior%2Fannotations.svg)](https://www.npmjs.com/package/@alterior/annotations)
3
+ [![Version](https://img.shields.io/npm/v/@alterior/annotations.svg)](https://www.npmjs.com/package/@alterior/annotations)
4
4
 
5
5
  Provides a standardized way to define metadata on programmatic elements of a Typescript application by using classes and decorators. The data being attached is called an "annotation" and is represented as an instance of an Annotation class, and the functions which attach the metadata are called "decorators".
6
6
 
@@ -72,10 +72,10 @@ Sometimes you may want to add additional behavior to be run when the decorator i
72
72
 
73
73
  ```typescript
74
74
  export const Color = ColorAnnotation.decorator({
75
- factory: (site : DecoratorTarget, name : string) => {
75
+ factory(site : DecoratorTarget, name : string) {
76
76
  // do special stuff here before
77
77
  // returning the annotation to be attached.
78
- return new Color(name);
78
+ return new ColorAnnotation(name);
79
79
  }
80
80
  })
81
81
  ```
@@ -89,9 +89,3 @@ Sometimes you have multiple decorators that are storing the same type of metadat
89
89
  export const Red = () => Color('red');
90
90
  export const Blue = () => Color('red');
91
91
  ```
92
-
93
- ## Angular
94
-
95
- (This is probably only useful inside Alterior; it is used to provide Angular compatibility for `@alterior/di`)
96
-
97
- This library stores annotations the same way that Angular does, and does it in a compatible manner. However, all Alterior annotations will be ignored by Angular unless an Angular-specific metadata name is applied to the annotation. This can be done using the `@NgMetadataName()` decorator. The decorator causes the annotation instances to have their `ngMetadataName` property set to the string passed to the decorator.
@@ -1,8 +1,8 @@
1
1
  /**
2
- * @alterior/annotations -- A class library for handling Typescript metadata decorators via "annotation" classes
2
+ * @alterior/annotations
3
+ * A class library for handling Typescript metadata decorators via "annotation" classes
3
4
  *
4
- * TODO: Need Alterior-specific @Inject/@Injectable so that we can support
5
- * both Injection-JS and Angular with one set of injection decorators
5
+ * (C) 2017-2019 William Lahti
6
6
  *
7
7
  */
8
8
  import { NotSupportedError } from '@alterior/common';
@@ -12,7 +12,6 @@ import { NotSupportedError } from '@alterior/common';
12
12
  */
13
13
  export interface IAnnotation {
14
14
  $metadataName?: string;
15
- ngMetadataName?: string;
16
15
  }
17
16
  export declare const ANNOTATIONS_KEY = "__annotations__";
18
17
  export declare const CONSTRUCTOR_PARAMETERS_ANNOTATIONS_KEY = "__parameters__";
@@ -36,15 +35,15 @@ export interface AnnotationDecorator<TS extends any[]> {
36
35
  (...args: TS): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
37
36
  (...args: TS): (target: any, propertyKey: string, index: number) => void;
38
37
  }
39
- interface DecoratorTarget {
38
+ export interface DecoratorSite {
40
39
  type: 'class' | 'method' | 'property' | 'parameter';
41
40
  target: any;
42
41
  propertyKey?: string;
43
42
  propertyDescriptor?: PropertyDescriptor;
44
43
  index?: number;
45
44
  }
46
- interface AnnotationDecoratorOptions<AnnoT, TS extends any[] = []> {
47
- factory?: (target: DecoratorTarget, ...args: TS) => AnnoT | void;
45
+ export interface AnnotationDecoratorOptions<AnnoT, TS extends any[] = []> {
46
+ factory?: (target: DecoratorSite, ...args: TS) => AnnoT | void;
48
47
  validTargets?: ('class' | 'property' | 'method' | 'parameter')[];
49
48
  allowMultiple?: boolean;
50
49
  }
@@ -57,26 +56,118 @@ export declare class AnnotationTargetError extends NotSupportedError {
57
56
  private _invalidType;
58
57
  private _annotationClass;
59
58
  private _supportedTypes;
60
- readonly invalidType: string;
61
- readonly supportedTypes: string[];
62
- readonly annotationClass: Function;
59
+ get invalidType(): string;
60
+ get supportedTypes(): string[];
61
+ get annotationClass(): Function;
63
62
  }
64
63
  export declare function MetadataName(name: string): (target: any) => any;
64
+ export interface MutatorDefinition {
65
+ invoke: (site: DecoratorSite) => void;
66
+ options?: AnnotationDecoratorOptions<void>;
67
+ }
68
+ /**
69
+ * Mutators are a way to define "mutation decorators" which in some way change the value
70
+ * of the elements they are applied to, as opposed to "annotation decorators", which primarily
71
+ * attach metadata.
72
+ *
73
+ * Create a mutator with Mutator.create().
74
+ */
65
75
  export declare class Mutator {
66
- static create(mutator: (target: DecoratorTarget, ...args: any[]) => void, options?: AnnotationDecoratorOptions<void>): AnnotationDecorator<any[]>;
76
+ /**
77
+ * Low-level method to ceate a new mutation decorator (mutator) based on the given function.
78
+ * Use `Mutator.define()` instead.
79
+ */
80
+ static create(mutator: (target: DecoratorSite, ...args: any[]) => void, options?: AnnotationDecoratorOptions<void>): AnnotationDecorator<any[]>;
81
+ /**
82
+ * Define a new mutation decorator (mutator).
83
+ * This should be called and returned from a
84
+ * function definition. For example:
85
+ *
86
+ ```
87
+ function Name() {
88
+ return Mutator.define({
89
+ invoke(site) {
90
+ // ...
91
+ }
92
+ })
93
+ }
94
+ ```
95
+ *
96
+ * The `invoke()` function takes a DecoratorSite object which describes the particular
97
+ * invocation that is being run, and importantly, access to the property descriptor
98
+ * for the property being defined. If you wish to completely replace (or wrap) the
99
+ * default value of the property or method you are replacing, set the `value`
100
+ * property of the property descriptor with `site.propertyDescriptor.value`
101
+ *
102
+ * For example:
103
+ * ```
104
+ export function RunTwice() {
105
+ return Mutator.create(
106
+ site => {
107
+ let prop = site.propertyDescriptor;
108
+ let original = prop.value;
109
+ let replacement = function(...args) {
110
+ original.apply(this, args);
111
+ original.apply(this, args);
112
+ }
113
+ prop.value = replacement;
114
+ }
115
+ )
116
+ * ```
117
+ */
118
+ static define(definition: MutatorDefinition): (target: any, ...args: any[]) => void;
67
119
  }
68
120
  /**
69
121
  * Represents a metadata annotation which can be applied to classes,
70
122
  * constructor parameters, methods, properties, or method parameters
71
123
  * via decorators.
72
124
  *
73
- * To create a custom Annotation, specify an Options type, subclass Annotation
74
- * with a constructor that takes
125
+ * Custom annotations are defined as subclasses of this class.
126
+ * By convention, all custom annotation classes should have a name
127
+ * which ends in "Annotation" such as "NameAnnotation".
128
+ *
129
+ * To create a new annotation create a subclass of `Annotation`
130
+ * with a constructor that takes the parameters you are interested in
131
+ * storing, and save the appropriate information onto fields of the
132
+ * new instance. For your convenience, Annotation provides a default
133
+ * constructor which takes a map object and applies its properties onto
134
+ * the current instance, but you may replace it with a constructor that
135
+ * takes any arguments you wish.
136
+ *
137
+ * You may wish to add type safety to the default constructor parameter.
138
+ * To do so, override the constructor and define it:
139
+ *
140
+ ```
141
+ class XYZ extends Annotation {
142
+ constructor(
143
+ options : MyOptions
144
+ ) {
145
+ super(options);
146
+ }
147
+ }
148
+ ```
149
+ *
150
+ * Annotations are applied by using decorators.
151
+ * When you define a custom annotation, you must also define a
152
+ * custom decorator:
153
+ *
154
+ ```
155
+ const Name =
156
+ NameAnnotation.decorator();
157
+ ```
158
+ * You can then use that decorator:
159
+ ```
160
+ @Name()
161
+ class ABC {
162
+ // ...
163
+ }
164
+ ```
165
+ *
75
166
  */
76
167
  export declare class Annotation implements IAnnotation {
77
168
  constructor(props?: any);
78
169
  readonly $metadataName: string;
79
- readonly ngMetadataName: string;
170
+ toString(): string;
80
171
  static getMetadataName(): string;
81
172
  /**
82
173
  * Construct a decorator suitable for attaching annotations of the called type
@@ -124,16 +215,101 @@ export declare class Annotation implements IAnnotation {
124
215
  * @param index
125
216
  */
126
217
  applyToConstructorParameter(target: any, index: number): this;
218
+ /**
219
+ * Filter the given list of annotations for the ones which match this annotation class
220
+ * based on matching $metadataName.
221
+ *
222
+ * @param this
223
+ * @param annotations
224
+ */
225
+ static filter<T extends Annotation, TS extends any[]>(this: AnnotationConstructor<T, TS>, annotations: IAnnotation[]): T[];
226
+ /**
227
+ * Get all instances of this annotation class attached to the given class.
228
+ * If called on a subclass of Annotation, it returns only annotations that match
229
+ * that subclass.
230
+ * @param this
231
+ * @param type The class to check
232
+ */
127
233
  static getAllForClass<T extends Annotation, TS extends any[]>(this: AnnotationConstructor<T, TS>, type: any): T[];
234
+ /**
235
+ * Get a single instance of this annotation class attached to the given class.
236
+ * If called on a subclass of Annotation, it returns only annotations that match
237
+ * that subclass.
238
+ *
239
+ * @param this
240
+ * @param type
241
+ */
128
242
  static getForClass<T extends Annotation, TS extends any[]>(this: AnnotationConstructor<T, TS>, type: any): T;
243
+ /**
244
+ * Get all instances of this annotation class attached to the given method.
245
+ * If called on a subclass of Annotation, it returns only annotations that match
246
+ * that subclass.
247
+ *
248
+ * @param this
249
+ * @param type The class where the method is defined
250
+ * @param methodName The name of the method to check
251
+ */
129
252
  static getAllForMethod<T extends Annotation, TS extends any[]>(this: AnnotationConstructor<T, TS>, type: any, methodName: string): T[];
253
+ /**
254
+ * Get one instance of this annotation class attached to the given method.
255
+ * If called on a subclass of Annotation, it returns only annotations that match
256
+ * that subclass.
257
+ *
258
+ * @param this
259
+ * @param type The class where the method is defined
260
+ * @param methodName The name of the method to check
261
+ */
130
262
  static getForMethod<T extends Annotation, TS extends any[]>(this: AnnotationConstructor<T, TS>, type: any, methodName: string): T;
263
+ /**
264
+ * Get all instances of this annotation class attached to the given property.
265
+ * If called on a subclass of Annotation, it returns only annotations that match
266
+ * that subclass.
267
+ *
268
+ * @param this
269
+ * @param type The class where the property is defined
270
+ * @param propertyName The name of the property to check
271
+ */
131
272
  static getAllForProperty<T extends Annotation, TS extends any[]>(this: AnnotationConstructor<T, TS>, type: any, propertyName: string): T[];
273
+ /**
274
+ * Get one instance of this annotation class attached to the given property.
275
+ * If called on a subclass of Annotation, it returns only annotations that match
276
+ * that subclass.
277
+ *
278
+ * @param this
279
+ * @param type The class where the property is defined
280
+ * @param propertyName The name of the property to check
281
+ */
132
282
  static getForProperty<T extends Annotation, TS extends any[]>(this: AnnotationConstructor<T, TS>, type: any, propertyName: string): T;
283
+ /**
284
+ * Get all instances of this annotation class attached to the parameters of the given method.
285
+ * If called on a subclass of Annotation, it returns only annotations that match
286
+ * that subclass.
287
+ *
288
+ * @param this
289
+ * @param type The class where the method is defined
290
+ * @param methodName The name of the method where parameter annotations should be checked for
291
+ */
133
292
  static getAllForParameters<T extends Annotation, TS extends any[]>(this: AnnotationConstructor<T, TS>, type: any, methodName: string): T[][];
293
+ /**
294
+ * Get all instances of this annotation class attached to the parameters of the constructor
295
+ * for the given class.
296
+ * If called on a subclass of Annotation, it returns only annotations that match
297
+ * that subclass.
298
+ *
299
+ * @param this
300
+ * @param type The class where constructor parameter annotations should be checked for
301
+ */
134
302
  static getAllForConstructorParameters<T extends Annotation, TS extends any[]>(this: AnnotationConstructor<T, TS>, type: any): T[][];
135
303
  }
304
+ /**
305
+ * A helper class for managing annotations
306
+ */
136
307
  export declare class Annotations {
308
+ /**
309
+ * Copy the annotations defined for one class onto another.
310
+ * @param from The class to copy annotations from
311
+ * @param to The class to copy annotations to
312
+ */
137
313
  static copyClassAnnotations(from: Function, to: Function): void;
138
314
  /**
139
315
  * Apply this annotation to a given target.
@@ -212,15 +388,31 @@ export declare class Annotations {
212
388
  * @param methodName
213
389
  */
214
390
  static getConstructorParameterAnnotations(type: any): IAnnotation[][];
391
+ /**
392
+ * Get a list of annotations for the given class.
393
+ * @param target
394
+ */
215
395
  private static getListForClass;
396
+ /**
397
+ * Get a list of own annotations for the given class, or create that list.
398
+ * @param target
399
+ */
216
400
  private static getOrCreateListForClass;
217
- private static getMapForClassProperties;
401
+ /**
402
+ * Gets a map of the annotations defined on all properties of the given class/function. To get the annotations of instance fields,
403
+ * make sure to use `Class.prototype`, otherwise static annotations are returned.
404
+ */
405
+ static getMapForClassProperties(target: Object, mapToPopulate?: Record<string, IAnnotation[]>): Record<string, IAnnotation[]>;
218
406
  private static getOrCreateMapForClassProperties;
219
407
  private static getListForProperty;
220
408
  private static getOrCreateListForProperty;
221
409
  private static getOrCreateListForMethod;
222
410
  private static getListForMethod;
223
- private static getMapForMethodParameters;
411
+ /**
412
+ * Get a map of the annotations defined on all parameters of all methods of the given class/function.
413
+ * To get instance methods, make sure to pass `Class.prototype`, otherwise the results are for static fields.
414
+ */
415
+ static getMapForMethodParameters(target: Object, mapToPopulate?: Record<string, IAnnotation[][]>): Record<string, IAnnotation[][]>;
224
416
  private static getOrCreateMapForMethodParameters;
225
417
  private static getListForMethodParameters;
226
418
  private static getOrCreateListForMethodParameters;
@@ -228,18 +420,13 @@ export declare class Annotations {
228
420
  private static getListForConstructorParameters;
229
421
  }
230
422
  /**
231
- * Query annotations for a given target type including only Angular ones
423
+ * An annotation for attaching a label to a programmatic element.
424
+ * Can be queried with LabelAnnotation.getForClass() for example.
232
425
  */
233
- export declare class AngularAnnotations {
234
- static getClassAnnotations(target: any): IAnnotation[];
235
- static getMethodAnnotations(target: any, methodName: string): IAnnotation[];
236
- static getPropertyAnnotations(target: any, name: string): IAnnotation[];
237
- static getParameterAnnotations(target: any, methodName: string): IAnnotation[][];
238
- }
239
- export declare function NgMetadataName(name: string): (target: any) => any;
240
426
  export declare class LabelAnnotation extends Annotation {
241
427
  readonly text: string;
242
428
  constructor(text: string);
243
429
  }
244
- export declare const Label: AnnotationDecorator<[string]>;
430
+ export declare const Label: AnnotationDecorator<[text: string]>;
245
431
  export {};
432
+ //# sourceMappingURL=annotations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../src/annotations.ts"],"names":[],"mappings":"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"}