@epsilon-asi/foundation 0.0.1-testing

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 (71) hide show
  1. package/.npm/_logs/2026-05-02T22_04_53_277Z-debug-0.log +22 -0
  2. package/.npm/_logs/2026-05-02T22_04_53_601Z-debug-0.log +18 -0
  3. package/.npm/_logs/2026-05-02T22_04_58_522Z-debug-0.log +18 -0
  4. package/.npm/_logs/2026-05-02T22_05_00_812Z-debug-0.log +19 -0
  5. package/.npm/_logs/2026-05-02T22_05_00_961Z-debug-0.log +14 -0
  6. package/build/decorators/factory/clone.d.ts +3 -0
  7. package/build/decorators/factory/clone.js +85 -0
  8. package/build/decorators/factory/decoratorRegistry.d.ts +2 -0
  9. package/build/decorators/factory/decoratorRegistry.js +213 -0
  10. package/build/decorators/factory/examples/accessors.d.ts +25 -0
  11. package/build/decorators/factory/examples/accessors.js +87 -0
  12. package/build/decorators/factory/examples/crud.d.ts +50 -0
  13. package/build/decorators/factory/examples/crud.js +120 -0
  14. package/build/decorators/factory/examples/orm.d.ts +45 -0
  15. package/build/decorators/factory/examples/orm.js +107 -0
  16. package/build/decorators/factory/examples/routing.d.ts +43 -0
  17. package/build/decorators/factory/examples/routing.js +112 -0
  18. package/build/decorators/factory/examples/runExamples.d.ts +1 -0
  19. package/build/decorators/factory/examples/runExamples.js +22 -0
  20. package/build/decorators/factory/examples/serialization.d.ts +24 -0
  21. package/build/decorators/factory/examples/serialization.js +79 -0
  22. package/build/decorators/factory/index.d.ts +3 -0
  23. package/build/decorators/factory/index.js +8 -0
  24. package/build/decorators/factory/snapshot.d.ts +2 -0
  25. package/build/decorators/factory/snapshot.js +75 -0
  26. package/build/decorators/factory/symbolMetadata.d.ts +2 -0
  27. package/build/decorators/factory/symbolMetadata.js +17 -0
  28. package/build/decorators/factory/types.d.ts +123 -0
  29. package/build/decorators/factory/types.js +2 -0
  30. package/build/decorators/validation/validatable.d.ts +0 -0
  31. package/build/decorators/validation/validatable.js +64 -0
  32. package/build/index.d.ts +5 -0
  33. package/build/index.js +12 -0
  34. package/build/package.json +49 -0
  35. package/coverage/clover.xml +220 -0
  36. package/coverage/coverage-final.json +6 -0
  37. package/coverage/lcov-report/base.css +224 -0
  38. package/coverage/lcov-report/block-navigation.js +87 -0
  39. package/coverage/lcov-report/clone.ts.html +352 -0
  40. package/coverage/lcov-report/decoratorRegistry.ts.html +1183 -0
  41. package/coverage/lcov-report/favicon.png +0 -0
  42. package/coverage/lcov-report/index.html +176 -0
  43. package/coverage/lcov-report/index.ts.html +145 -0
  44. package/coverage/lcov-report/prettify.css +1 -0
  45. package/coverage/lcov-report/prettify.js +2 -0
  46. package/coverage/lcov-report/snapshot.ts.html +370 -0
  47. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  48. package/coverage/lcov-report/sorter.js +210 -0
  49. package/coverage/lcov-report/symbolMetadata.ts.html +145 -0
  50. package/coverage/lcov.info +490 -0
  51. package/package.json +47 -0
  52. package/src/decorators/factory/__tests__/cloneAndSnapshot.test.ts +223 -0
  53. package/src/decorators/factory/__tests__/decoratorRegistry.test.ts +292 -0
  54. package/src/decorators/factory/__tests__/decoratorRegistryEdges.test.ts +262 -0
  55. package/src/decorators/factory/clone.ts +89 -0
  56. package/src/decorators/factory/decoratorRegistry.ts +366 -0
  57. package/src/decorators/factory/examples/accessors.ts +38 -0
  58. package/src/decorators/factory/examples/crud.ts +82 -0
  59. package/src/decorators/factory/examples/orm.ts +83 -0
  60. package/src/decorators/factory/examples/routing.ts +70 -0
  61. package/src/decorators/factory/examples/runExamples.ts +22 -0
  62. package/src/decorators/factory/examples/serialization.ts +47 -0
  63. package/src/decorators/factory/index.ts +20 -0
  64. package/src/decorators/factory/snapshot.ts +95 -0
  65. package/src/decorators/factory/symbolMetadata.ts +20 -0
  66. package/src/decorators/factory/type-tests/decoratorRegistry.type-test.ts +302 -0
  67. package/src/decorators/factory/types.ts +259 -0
  68. package/src/decorators/validation/validatable.ts +63 -0
  69. package/src/index.ts +9 -0
  70. package/tsconfig.json +19 -0
  71. package/tsconfig.type-tests.json +8 -0
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.symbolMetadata = void 0;
4
+ exports.ensureSymbolMetadata = ensureSymbolMetadata;
5
+ function ensureSymbolMetadata() {
6
+ const symbolConstructor = Symbol;
7
+ if (symbolConstructor.metadata === undefined) {
8
+ Object.defineProperty(symbolConstructor, 'metadata', {
9
+ configurable: false,
10
+ enumerable: false,
11
+ writable: false,
12
+ value: Symbol('Symbol.metadata'),
13
+ });
14
+ }
15
+ return symbolConstructor.metadata;
16
+ }
17
+ exports.symbolMetadata = ensureSymbolMetadata();
@@ -0,0 +1,123 @@
1
+ export type AnyFunction = (...args: any[]) => any;
2
+ export type Constructor<T = unknown> = abstract new (...args: any[]) => T;
3
+ export type PublicMemberKey = string | symbol;
4
+ export type DecorationKind = 'class' | 'property' | 'method' | 'accessor';
5
+ export interface ClassDecoratorDefinition<TMetadata = unknown> {
6
+ metadata: TMetadata;
7
+ }
8
+ export interface PropertyDecoratorDefinition<TMetadata = unknown, TTarget = unknown> {
9
+ metadata: TMetadata;
10
+ target: TTarget;
11
+ }
12
+ export interface MethodDecoratorDefinition<TMetadata = unknown, TTarget extends AnyFunction = AnyFunction> {
13
+ metadata: TMetadata;
14
+ target: TTarget;
15
+ }
16
+ export interface AccessorDecoratorDefinition<TMetadata = unknown, TTarget = unknown> {
17
+ metadata: TMetadata;
18
+ target: TTarget;
19
+ }
20
+ export type DecoratorSchema = {
21
+ class: Record<string, ClassDecoratorDefinition<any>>;
22
+ property: Record<string, PropertyDecoratorDefinition<any, any>>;
23
+ method: Record<string, MethodDecoratorDefinition<any, AnyFunction>>;
24
+ accessor: Record<string, AccessorDecoratorDefinition<any, any>>;
25
+ };
26
+ export type MetadataOf<TDefinition> = TDefinition extends {
27
+ metadata: infer TMetadata;
28
+ } ? TMetadata : never;
29
+ export type TargetOf<TDefinition> = TDefinition extends {
30
+ target: infer TTarget;
31
+ } ? TTarget : unknown;
32
+ export type StringKeyOf<TObject> = Extract<keyof TObject, string>;
33
+ export type MemberKeyOf<TObject> = Extract<keyof TObject, PublicMemberKey>;
34
+ export type KeysOfType<TObject, TValue> = {
35
+ [K in MemberKeyOf<TObject>]-?: TObject[K] extends TValue ? K : never;
36
+ }[MemberKeyOf<TObject>];
37
+ export type MethodKeysOfType<TObject, TValue extends AnyFunction> = {
38
+ [K in MemberKeyOf<TObject>]-?: TObject[K] extends TValue ? TObject[K] extends AnyFunction ? K : never : never;
39
+ }[MemberKeyOf<TObject>];
40
+ export type MetadataArgs<TMetadata> = [TMetadata] extends [undefined] ? [] : [metadata: TMetadata];
41
+ export type KeyedMetadataArgs<TKey extends PublicMemberKey, TMetadata> = [TMetadata] extends [undefined] ? [key: TKey] : [key: TKey, metadata: TMetadata];
42
+ export type DirectKeyedMetadataArgs<TKey extends PublicMemberKey, TMetadata> = [
43
+ TMetadata
44
+ ] extends [undefined] ? [key: never] : [key: TKey, metadata: TMetadata];
45
+ export interface DecorationRecord {
46
+ id: string;
47
+ kind: DecorationKind;
48
+ decorator: string;
49
+ metadata: unknown;
50
+ memberName?: string | symbol;
51
+ static: boolean;
52
+ private: boolean;
53
+ order: number;
54
+ }
55
+ export interface RegistryMetadataSnapshot {
56
+ readonly all: readonly DecorationRecord[];
57
+ readonly classes: readonly DecorationRecord[];
58
+ readonly properties: readonly DecorationRecord[];
59
+ readonly methods: readonly DecorationRecord[];
60
+ readonly accessors: readonly DecorationRecord[];
61
+ firstClass(decorator: string): DecorationRecord | undefined;
62
+ classRecords(decorator?: string): readonly DecorationRecord[];
63
+ propertyRecords(decorator?: string): readonly DecorationRecord[];
64
+ methodRecords(decorator?: string): readonly DecorationRecord[];
65
+ accessorRecords(decorator?: string): readonly DecorationRecord[];
66
+ propertyMap(decorator?: string): ReadonlyMap<string | symbol, readonly DecorationRecord[]>;
67
+ methodMap(decorator?: string): ReadonlyMap<string | symbol, readonly DecorationRecord[]>;
68
+ accessorMap(decorator?: string): ReadonlyMap<string | symbol, readonly DecorationRecord[]>;
69
+ }
70
+ export interface CreateDecoratorRegistryOptions {
71
+ namespace?: string;
72
+ allowPrivateMembers?: boolean;
73
+ }
74
+ export interface RegistryReadOptions {
75
+ includeInherited?: boolean;
76
+ }
77
+ export type StandardClassDecorator<TExpected, TMetadata> = (...args: MetadataArgs<TMetadata>) => <TClass extends Constructor<TExpected>>(value: TClass, context: ClassDecoratorContext<TClass>) => void;
78
+ export type UnscopedClassDecoratorFactory<TMetadata> = <TExpected = unknown>(...args: MetadataArgs<TMetadata>) => <TClass extends Constructor<TExpected>>(value: TClass, context: ClassDecoratorContext<TClass>) => void;
79
+ export interface PropertyDecoratorFactory<TContract, TTarget, TMetadata> {
80
+ (...args: MetadataArgs<TMetadata>): (value: undefined, context: ClassFieldDecoratorContext<any, TTarget>) => void;
81
+ <K extends KeysOfType<TContract, TTarget>>(...args: DirectKeyedMetadataArgs<K, TMetadata>): (value: undefined, context: ClassFieldDecoratorContext<TContract, TContract[K]> & {
82
+ name: K;
83
+ }) => void;
84
+ on<K extends KeysOfType<TContract, TTarget>>(...args: KeyedMetadataArgs<K, TMetadata>): (value: undefined, context: ClassFieldDecoratorContext<TContract, TContract[K]> & {
85
+ name: K;
86
+ }) => void;
87
+ }
88
+ export interface MethodDecoratorFactory<TContract, TTarget extends AnyFunction, TMetadata> {
89
+ (...args: MetadataArgs<TMetadata>): (value: TTarget, context: ClassMethodDecoratorContext<any, TTarget>) => void;
90
+ <K extends MethodKeysOfType<TContract, TTarget>>(...args: DirectKeyedMetadataArgs<K, TMetadata>): (value: TContract[K] extends AnyFunction ? TContract[K] : never, context: ClassMethodDecoratorContext<TContract, TContract[K] extends AnyFunction ? TContract[K] : never> & {
91
+ name: K;
92
+ }) => void;
93
+ on<K extends MethodKeysOfType<TContract, TTarget>>(...args: KeyedMetadataArgs<K, TMetadata>): (value: TContract[K] extends AnyFunction ? TContract[K] : never, context: ClassMethodDecoratorContext<TContract, TContract[K] extends AnyFunction ? TContract[K] : never> & {
94
+ name: K;
95
+ }) => void;
96
+ }
97
+ export type GetterDecorator<TContract, TTarget, K extends PublicMemberKey = PublicMemberKey> = (value: (this: TContract) => TTarget, context: ClassGetterDecoratorContext<TContract, TTarget> & {
98
+ name: K;
99
+ }) => void;
100
+ export type SetterDecorator<TContract, TTarget, K extends PublicMemberKey = PublicMemberKey> = (value: (this: TContract, value: TTarget) => void, context: ClassSetterDecoratorContext<TContract, TTarget> & {
101
+ name: K;
102
+ }) => void;
103
+ export type AutoAccessorDecorator<TContract, TTarget, K extends PublicMemberKey = PublicMemberKey> = (value: ClassAccessorDecoratorTarget<TContract, TTarget>, context: ClassAccessorDecoratorContext<TContract, TTarget> & {
104
+ name: K;
105
+ }) => void;
106
+ export interface AccessorDecoratorFactory<TContract, TTarget, TMetadata> {
107
+ (...args: MetadataArgs<TMetadata>): GetterDecorator<any, TTarget> & SetterDecorator<any, TTarget> & AutoAccessorDecorator<any, TTarget>;
108
+ <K extends KeysOfType<TContract, TTarget>>(...args: DirectKeyedMetadataArgs<K, TMetadata>): GetterDecorator<TContract, TContract[K], K> & SetterDecorator<TContract, TContract[K], K> & AutoAccessorDecorator<TContract, TContract[K], K>;
109
+ on<K extends KeysOfType<TContract, TTarget>>(...args: KeyedMetadataArgs<K, TMetadata>): GetterDecorator<TContract, TContract[K], K> & SetterDecorator<TContract, TContract[K], K> & AutoAccessorDecorator<TContract, TContract[K], K>;
110
+ }
111
+ export type ScopedDecoratorBuilder<TSchema extends DecoratorSchema, TContract> = {
112
+ class<K extends StringKeyOf<TSchema['class']>>(name: K): StandardClassDecorator<TContract, MetadataOf<TSchema['class'][K]>>;
113
+ property<K extends StringKeyOf<TSchema['property']>>(name: K): PropertyDecoratorFactory<TContract, TargetOf<TSchema['property'][K]>, MetadataOf<TSchema['property'][K]>>;
114
+ method<K extends StringKeyOf<TSchema['method']>>(name: K): MethodDecoratorFactory<TContract, Extract<TargetOf<TSchema['method'][K]>, AnyFunction>, MetadataOf<TSchema['method'][K]>>;
115
+ accessor<K extends StringKeyOf<TSchema['accessor']>>(name: K): AccessorDecoratorFactory<TContract, TargetOf<TSchema['accessor'][K]>, MetadataOf<TSchema['accessor'][K]>>;
116
+ };
117
+ export interface DecoratorRegistry<TSchema extends DecoratorSchema> {
118
+ readonly namespace: string;
119
+ readonly allowPrivateMembers: boolean;
120
+ class<K extends StringKeyOf<TSchema['class']>>(name: K): UnscopedClassDecoratorFactory<MetadataOf<TSchema['class'][K]>>;
121
+ for<TContract>(): ScopedDecoratorBuilder<TSchema, TContract>;
122
+ read(target: Constructor | object, options?: RegistryReadOptions): RegistryMetadataSnapshot;
123
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
File without changes
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ // import {createDecoratorRegistry} from "../factory";
3
+ // export class ValidatableClass<T = any> {}
4
+ //
5
+ // type CrudDecorators = {
6
+ // class:{
7
+ // crud: {
8
+ // metadata: {
9
+ // aiTool?: boolean,
10
+ // listable?: boolean,
11
+ // filters?: string[],
12
+ // sorting?: string[],
13
+ // }
14
+ // }
15
+ // },
16
+ // property: {
17
+ // CrudID: {
18
+ // metadata: {
19
+ // editable: false,
20
+ // },
21
+ // target: string
22
+ // },
23
+ // CrudProperty: {
24
+ // metadata: {
25
+ // editable: boolean | "onCreate" | "onEdit",
26
+ // source?: "body" | "param" | "query" | "header" // Defaults to body.
27
+ // },
28
+ // target: string | boolean | number | Date,
29
+ // },
30
+ // },
31
+ // method: {},
32
+ // accessor: {},
33
+ // }
34
+ // const registry = createDecoratorRegistry<CrudDecorators>({ namespace: 'crud-example' });
35
+ // const ValidatableRegistry = registry.for<ValidatableClass>()
36
+ // const CRUD = ValidatableRegistry.class('crud');
37
+ // const CrudProperty = ValidatableRegistry.property('CrudProperty');
38
+ // const CrudID = ValidatableRegistry.property('CrudID');
39
+ //
40
+ //
41
+ // @CRUD({
42
+ // aiTool: true,
43
+ // listable: true,
44
+ // filters: [],
45
+ // sorting: [],
46
+ // })
47
+ // export class CrudExample {
48
+ // @CrudID({
49
+ // editable: false
50
+ // })
51
+ // id!: string
52
+ //
53
+ // @CrudProperty({
54
+ // editable: false
55
+ // })
56
+ // property!: string
57
+ //
58
+ // @CrudProperty({
59
+ // editable: true,
60
+ // })
61
+ // other!: string
62
+ // }
63
+ //
64
+ // const x = registry.read(CrudExample);
@@ -0,0 +1,5 @@
1
+ export declare const TestConstant = 1;
2
+ export declare class TestClass {
3
+ constructor();
4
+ }
5
+ export declare function TestFunction(): void;
package/build/index.js ADDED
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TestClass = exports.TestConstant = void 0;
4
+ exports.TestFunction = TestFunction;
5
+ exports.TestConstant = 1;
6
+ class TestClass {
7
+ constructor() {
8
+ }
9
+ }
10
+ exports.TestClass = TestClass;
11
+ function TestFunction() {
12
+ }
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@epsilon-asi/foundation",
3
+ "version": "0.0.1",
4
+ "description": "",
5
+ "mainDir": "./",
6
+ "scripts": {
7
+ "build": "tsc && cp package.json ./build",
8
+ "build:clean": "rm -rf ./build && npm run build",
9
+ "typecheck": "tsc --noEmit",
10
+ "typecheck:tests": "tsc -p tsconfig.type-tests.json --noEmit",
11
+ "examples": "npm run build && node build/decorators/factory/examples/runExamples.js",
12
+ "start:dev": "npx nodemon --exec \"npx tsc\" --watch src -e ts",
13
+ "test": "export IS_TEST='true' && jest --clearCache && jest --coverage --detectOpenHandles",
14
+ "test:watch": "export IS_TEST='true' && jest --clearCache && jest --coverage --detectOpenHandles --watchAll",
15
+ "verify": "npm run typecheck && npm run typecheck:tests && npm run examples && npm run test && npm run build"
16
+ },
17
+ "jest": {
18
+ "clearMocks": true,
19
+ "maxWorkers": 1,
20
+ "preset": "ts-jest",
21
+ "testEnvironment": "node",
22
+ "coverageThreshold": {
23
+ "global": {
24
+ "branches": 80,
25
+ "functions": 80,
26
+ "lines": 80,
27
+ "statements": 80
28
+ }
29
+ },
30
+ "testMatch": [
31
+ "**/**/*.test.ts"
32
+ ],
33
+ "collectCoverageFrom": [
34
+ "src/**/*.ts",
35
+ "!src/**/*.test.ts",
36
+ "!src/**/*.type-test.ts",
37
+ "!src/**/__tests__/**",
38
+ "!src/type-tests/**",
39
+ "!src/examples/**",
40
+ "!src/decorators/factory/examples/**",
41
+ "!src/index.ts"
42
+ ]
43
+ },
44
+ "author": "",
45
+ "license": "ISC",
46
+ "dependencies": {
47
+
48
+ }
49
+ }
@@ -0,0 +1,220 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <coverage generated="1777759498404" clover="3.2.0">
3
+ <project timestamp="1777759498404" name="All files">
4
+ <metrics statements="199" coveredstatements="197" conditionals="128" coveredconditionals="123" methods="59" coveredmethods="56" elements="386" coveredelements="376" complexity="0" loc="199" ncloc="199" packages="1" files="5" classes="5"/>
5
+ <file name="clone.ts" path="/builds/epsilon-asi/foundations/packages/foundation/src/decorators/factory/clone.ts">
6
+ <metrics statements="52" coveredstatements="52" conditionals="33" coveredconditionals="32" methods="4" coveredmethods="4"/>
7
+ <line num="2" count="181" type="cond" truecount="3" falsecount="0"/>
8
+ <line num="5" count="3" type="cond" truecount="1" falsecount="0"/>
9
+ <line num="6" count="94" type="cond" truecount="2" falsecount="0"/>
10
+ <line num="8" count="45" type="cond" truecount="2" falsecount="0"/>
11
+ <line num="10" count="44" type="stmt"/>
12
+ <line num="11" count="44" type="cond" truecount="2" falsecount="0"/>
13
+ <line num="13" count="43" type="cond" truecount="2" falsecount="0"/>
14
+ <line num="14" count="1" type="stmt"/>
15
+ <line num="17" count="42" type="cond" truecount="2" falsecount="0"/>
16
+ <line num="18" count="1" type="stmt"/>
17
+ <line num="21" count="41" type="cond" truecount="2" falsecount="0"/>
18
+ <line num="22" count="1" type="stmt"/>
19
+ <line num="23" count="1" type="stmt"/>
20
+ <line num="24" count="1" type="stmt"/>
21
+ <line num="25" count="1" type="stmt"/>
22
+ <line num="27" count="1" type="stmt"/>
23
+ <line num="30" count="40" type="cond" truecount="2" falsecount="0"/>
24
+ <line num="31" count="1" type="stmt"/>
25
+ <line num="32" count="1" type="stmt"/>
26
+ <line num="33" count="1" type="stmt"/>
27
+ <line num="34" count="1" type="stmt"/>
28
+ <line num="36" count="1" type="stmt"/>
29
+ <line num="39" count="39" type="cond" truecount="2" falsecount="0"/>
30
+ <line num="40" count="2" type="stmt"/>
31
+ <line num="41" count="2" type="stmt"/>
32
+ <line num="42" count="2" type="stmt"/>
33
+ <line num="43" count="2" type="stmt"/>
34
+ <line num="46" count="37" type="stmt"/>
35
+ <line num="47" count="37" type="stmt"/>
36
+ <line num="49" count="37" type="stmt"/>
37
+ <line num="50" count="53" type="stmt"/>
38
+ <line num="51" count="53" type="cond" truecount="1" falsecount="1"/>
39
+ <line num="53" count="53" type="cond" truecount="2" falsecount="0"/>
40
+ <line num="54" count="52" type="stmt"/>
41
+ <line num="57" count="53" type="stmt"/>
42
+ <line num="60" count="37" type="stmt"/>
43
+ <line num="63" count="3" type="cond" truecount="1" falsecount="0"/>
44
+ <line num="64" count="87" type="cond" truecount="2" falsecount="0"/>
45
+ <line num="65" count="41" type="cond" truecount="2" falsecount="0"/>
46
+ <line num="67" count="40" type="stmt"/>
47
+ <line num="69" count="40" type="cond" truecount="2" falsecount="0"/>
48
+ <line num="70" count="1" type="stmt"/>
49
+ <line num="71" count="1" type="stmt"/>
50
+ <line num="72" count="1" type="stmt"/>
51
+ <line num="74" count="39" type="cond" truecount="2" falsecount="0"/>
52
+ <line num="75" count="1" type="stmt"/>
53
+ <line num="76" count="1" type="stmt"/>
54
+ <line num="79" count="38" type="stmt"/>
55
+ <line num="80" count="51" type="stmt"/>
56
+ <line num="84" count="40" type="stmt"/>
57
+ <line num="87" count="3" type="stmt"/>
58
+ <line num="88" count="31" type="stmt"/>
59
+ </file>
60
+ <file name="decoratorRegistry.ts" path="/builds/epsilon-asi/foundations/packages/foundation/src/decorators/factory/decoratorRegistry.ts">
61
+ <metrics statements="106" coveredstatements="104" conditionals="79" coveredconditionals="75" methods="36" coveredmethods="35"/>
62
+ <line num="1" count="2" type="stmt"/>
63
+ <line num="2" count="2" type="stmt"/>
64
+ <line num="3" count="2" type="stmt"/>
65
+ <line num="46" count="12" type="cond" truecount="2" falsecount="0"/>
66
+ <line num="50" count="12" type="cond" truecount="2" falsecount="0"/>
67
+ <line num="51" count="2" type="stmt"/>
68
+ <line num="57" count="25" type="cond" truecount="2" falsecount="0"/>
69
+ <line num="58" count="1" type="stmt"/>
70
+ <line num="61" count="24" type="cond" truecount="2" falsecount="0"/>
71
+ <line num="62" count="18" type="stmt"/>
72
+ <line num="65" count="6" type="stmt"/>
73
+ <line num="72" count="7" type="cond" truecount="2" falsecount="0"/>
74
+ <line num="73" count="1" type="stmt"/>
75
+ <line num="76" count="6" type="stmt"/>
76
+ <line num="87" count="37" type="cond" truecount="4" falsecount="0"/>
77
+ <line num="88" count="30" type="cond" truecount="4" falsecount="0"/>
78
+ <line num="89" count="13" type="cond" truecount="4" falsecount="0"/>
79
+ <line num="90" count="9" type="cond" truecount="2" falsecount="0"/>
80
+ <line num="94" count="5" type="stmt"/>
81
+ <line num="97" count="4" type="stmt"/>
82
+ <line num="103" count="22" type="cond" truecount="2" falsecount="0"/>
83
+ <line num="104" count="20" type="stmt"/>
84
+ <line num="107" count="2" type="stmt"/>
85
+ <line num="108" count="2" type="cond" truecount="2" falsecount="0"/>
86
+ <line num="112" count="21" type="cond" truecount="2" falsecount="0"/>
87
+ <line num="114" count="20" type="stmt"/>
88
+ <line num="115" count="20" type="stmt"/>
89
+ <line num="117" count="20" type="cond" truecount="2" falsecount="0"/>
90
+ <line num="118" count="21" type="stmt"/>
91
+ <line num="119" count="21" type="stmt"/>
92
+ <line num="122" count="20" type="stmt"/>
93
+ <line num="126" count="22" type="cond" truecount="2" falsecount="0"/>
94
+ <line num="127" count="1" type="stmt"/>
95
+ <line num="130" count="21" type="stmt"/>
96
+ <line num="131" count="21" type="cond" truecount="3" falsecount="1"/>
97
+ <line num="135" count="10" type="stmt"/>
98
+ <line num="144" count="21" type="stmt"/>
99
+ <line num="145" count="21" type="stmt"/>
100
+ <line num="148" count="21" type="cond" truecount="4" falsecount="0"/>
101
+ <line num="149" count="21" type="cond" truecount="4" falsecount="0"/>
102
+ <line num="155" count="2" type="stmt"/>
103
+ <line num="159" count="19" type="stmt"/>
104
+ <line num="161" count="21" type="stmt"/>
105
+ <line num="164" count="25" type="stmt"/>
106
+ <line num="171" count="11" type="stmt"/>
107
+ <line num="178" count="12" type="stmt"/>
108
+ <line num="190" count="22" type="stmt"/>
109
+ <line num="191" count="22" type="cond" truecount="2" falsecount="0"/>
110
+ <line num="192" count="1" type="stmt"/>
111
+ <line num="195" count="21" type="cond" truecount="4" falsecount="0"/>
112
+ <line num="196" count="21" type="stmt"/>
113
+ <line num="197" count="21" type="stmt"/>
114
+ <line num="199" count="21" type="stmt"/>
115
+ <line num="200" count="22" type="stmt"/>
116
+ <line num="201" count="22" type="cond" truecount="2" falsecount="0"/>
117
+ <line num="203" count="21" type="stmt"/>
118
+ <line num="204" count="21" type="cond" truecount="1" falsecount="1"/>
119
+ <line num="207" count="21" type="stmt"/>
120
+ <line num="213" count="2" type="stmt"/>
121
+ <line num="214" count="2" type="cond" truecount="2" falsecount="0"/>
122
+ <line num="216" count="2" type="stmt"/>
123
+ <line num="220" count="2" type="stmt"/>
124
+ <line num="221" count="2" type="stmt"/>
125
+ <line num="231" count="2" type="stmt"/>
126
+ <line num="237" count="21" type="stmt"/>
127
+ <line num="238" count="6" type="cond" truecount="1" falsecount="1"/>
128
+ <line num="240" count="6" type="stmt"/>
129
+ <line num="244" count="6" type="stmt"/>
130
+ <line num="245" count="5" type="stmt"/>
131
+ <line num="259" count="25" type="stmt"/>
132
+ <line num="260" count="15" type="stmt"/>
133
+ <line num="261" count="14" type="stmt"/>
134
+ <line num="264" count="25" type="stmt"/>
135
+ <line num="265" count="6" type="stmt"/>
136
+ <line num="266" count="4" type="stmt"/>
137
+ <line num="269" count="25" type="stmt"/>
138
+ <line num="275" count="11" type="stmt"/>
139
+ <line num="276" count="4" type="stmt"/>
140
+ <line num="277" count="4" type="stmt"/>
141
+ <line num="280" count="11" type="stmt"/>
142
+ <line num="281" count="1" type="stmt"/>
143
+ <line num="282" count="1" type="stmt"/>
144
+ <line num="285" count="11" type="stmt"/>
145
+ <line num="291" count="12" type="stmt"/>
146
+ <line num="292" count="6" type="stmt"/>
147
+ <line num="293" count="6" type="stmt"/>
148
+ <line num="296" count="12" type="stmt"/>
149
+ <line num="297" count="0" type="stmt"/>
150
+ <line num="298" count="0" type="stmt"/>
151
+ <line num="301" count="12" type="stmt"/>
152
+ <line num="309" count="29" type="stmt"/>
153
+ <line num="310" count="29" type="stmt"/>
154
+ <line num="312" count="26" type="cond" truecount="4" falsecount="0"/>
155
+ <line num="313" count="1" type="stmt"/>
156
+ <line num="320" count="25" type="cond" truecount="4" falsecount="0"/>
157
+ <line num="321" count="2" type="stmt"/>
158
+ <line num="328" count="23" type="stmt"/>
159
+ <line num="343" count="30" type="stmt"/>
160
+ <line num="344" count="30" type="stmt"/>
161
+ <line num="346" count="30" type="stmt"/>
162
+ <line num="353" count="30" type="stmt"/>
163
+ <line num="354" count="30" type="cond" truecount="2" falsecount="0"/>
164
+ <line num="355" count="15" type="stmt"/>
165
+ <line num="357" count="15" type="stmt"/>
166
+ <line num="362" count="2" type="stmt"/>
167
+ <line num="365" count="21" type="stmt"/>
168
+ </file>
169
+ <file name="index.ts" path="/builds/epsilon-asi/foundations/packages/foundation/src/decorators/factory/index.ts">
170
+ <metrics statements="2" coveredstatements="2" conditionals="0" coveredconditionals="0" methods="3" coveredmethods="1"/>
171
+ <line num="1" count="23" type="stmt"/>
172
+ <line num="2" count="2" type="stmt"/>
173
+ </file>
174
+ <file name="snapshot.ts" path="/builds/epsilon-asi/foundations/packages/foundation/src/decorators/factory/snapshot.ts">
175
+ <metrics statements="33" coveredstatements="33" conditionals="14" coveredconditionals="14" methods="15" coveredmethods="15"/>
176
+ <line num="4" count="24" type="stmt"/>
177
+ <line num="12" count="119" type="stmt"/>
178
+ <line num="14" count="262" type="cond" truecount="2" falsecount="0"/>
179
+ <line num="15" count="78" type="cond" truecount="2" falsecount="0"/>
180
+ <line num="25" count="18" type="stmt"/>
181
+ <line num="27" count="18" type="stmt"/>
182
+ <line num="28" count="79" type="cond" truecount="2" falsecount="0"/>
183
+ <line num="29" count="29" type="cond" truecount="4" falsecount="0"/>
184
+ <line num="30" count="21" type="cond" truecount="2" falsecount="0"/>
185
+ <line num="32" count="20" type="stmt"/>
186
+ <line num="33" count="20" type="cond" truecount="2" falsecount="0"/>
187
+ <line num="34" count="19" type="stmt"/>
188
+ <line num="36" count="1" type="stmt"/>
189
+ <line num="40" count="18" type="stmt"/>
190
+ <line num="41" count="18" type="stmt"/>
191
+ <line num="42" count="19" type="stmt"/>
192
+ <line num="45" count="18" type="stmt"/>
193
+ <line num="48" count="3" type="stmt"/>
194
+ <line num="49" count="31" type="stmt"/>
195
+ <line num="50" count="24" type="stmt"/>
196
+ <line num="51" count="24" type="stmt"/>
197
+ <line num="52" count="24" type="stmt"/>
198
+ <line num="53" count="24" type="stmt"/>
199
+ <line num="54" count="24" type="stmt"/>
200
+ <line num="56" count="24" type="stmt"/>
201
+ <line num="64" count="8" type="stmt"/>
202
+ <line num="68" count="4" type="stmt"/>
203
+ <line num="72" count="12" type="stmt"/>
204
+ <line num="76" count="4" type="stmt"/>
205
+ <line num="80" count="3" type="stmt"/>
206
+ <line num="84" count="9" type="stmt"/>
207
+ <line num="88" count="5" type="stmt"/>
208
+ <line num="92" count="4" type="stmt"/>
209
+ </file>
210
+ <file name="symbolMetadata.ts" path="/builds/epsilon-asi/foundations/packages/foundation/src/decorators/factory/symbolMetadata.ts">
211
+ <metrics statements="6" coveredstatements="6" conditionals="2" coveredconditionals="2" methods="1" coveredmethods="1"/>
212
+ <line num="5" count="2" type="stmt"/>
213
+ <line num="6" count="4" type="stmt"/>
214
+ <line num="8" count="4" type="cond" truecount="2" falsecount="0"/>
215
+ <line num="9" count="2" type="stmt"/>
216
+ <line num="17" count="4" type="stmt"/>
217
+ <line num="20" count="2" type="stmt"/>
218
+ </file>
219
+ </project>
220
+ </coverage>