@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.
- package/.npm/_logs/2026-05-02T22_04_53_277Z-debug-0.log +22 -0
- package/.npm/_logs/2026-05-02T22_04_53_601Z-debug-0.log +18 -0
- package/.npm/_logs/2026-05-02T22_04_58_522Z-debug-0.log +18 -0
- package/.npm/_logs/2026-05-02T22_05_00_812Z-debug-0.log +19 -0
- package/.npm/_logs/2026-05-02T22_05_00_961Z-debug-0.log +14 -0
- package/build/decorators/factory/clone.d.ts +3 -0
- package/build/decorators/factory/clone.js +85 -0
- package/build/decorators/factory/decoratorRegistry.d.ts +2 -0
- package/build/decorators/factory/decoratorRegistry.js +213 -0
- package/build/decorators/factory/examples/accessors.d.ts +25 -0
- package/build/decorators/factory/examples/accessors.js +87 -0
- package/build/decorators/factory/examples/crud.d.ts +50 -0
- package/build/decorators/factory/examples/crud.js +120 -0
- package/build/decorators/factory/examples/orm.d.ts +45 -0
- package/build/decorators/factory/examples/orm.js +107 -0
- package/build/decorators/factory/examples/routing.d.ts +43 -0
- package/build/decorators/factory/examples/routing.js +112 -0
- package/build/decorators/factory/examples/runExamples.d.ts +1 -0
- package/build/decorators/factory/examples/runExamples.js +22 -0
- package/build/decorators/factory/examples/serialization.d.ts +24 -0
- package/build/decorators/factory/examples/serialization.js +79 -0
- package/build/decorators/factory/index.d.ts +3 -0
- package/build/decorators/factory/index.js +8 -0
- package/build/decorators/factory/snapshot.d.ts +2 -0
- package/build/decorators/factory/snapshot.js +75 -0
- package/build/decorators/factory/symbolMetadata.d.ts +2 -0
- package/build/decorators/factory/symbolMetadata.js +17 -0
- package/build/decorators/factory/types.d.ts +123 -0
- package/build/decorators/factory/types.js +2 -0
- package/build/decorators/validation/validatable.d.ts +0 -0
- package/build/decorators/validation/validatable.js +64 -0
- package/build/index.d.ts +5 -0
- package/build/index.js +12 -0
- package/build/package.json +49 -0
- package/coverage/clover.xml +220 -0
- package/coverage/coverage-final.json +6 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/clone.ts.html +352 -0
- package/coverage/lcov-report/decoratorRegistry.ts.html +1183 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +176 -0
- package/coverage/lcov-report/index.ts.html +145 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/snapshot.ts.html +370 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +210 -0
- package/coverage/lcov-report/symbolMetadata.ts.html +145 -0
- package/coverage/lcov.info +490 -0
- package/package.json +47 -0
- package/src/decorators/factory/__tests__/cloneAndSnapshot.test.ts +223 -0
- package/src/decorators/factory/__tests__/decoratorRegistry.test.ts +292 -0
- package/src/decorators/factory/__tests__/decoratorRegistryEdges.test.ts +262 -0
- package/src/decorators/factory/clone.ts +89 -0
- package/src/decorators/factory/decoratorRegistry.ts +366 -0
- package/src/decorators/factory/examples/accessors.ts +38 -0
- package/src/decorators/factory/examples/crud.ts +82 -0
- package/src/decorators/factory/examples/orm.ts +83 -0
- package/src/decorators/factory/examples/routing.ts +70 -0
- package/src/decorators/factory/examples/runExamples.ts +22 -0
- package/src/decorators/factory/examples/serialization.ts +47 -0
- package/src/decorators/factory/index.ts +20 -0
- package/src/decorators/factory/snapshot.ts +95 -0
- package/src/decorators/factory/symbolMetadata.ts +20 -0
- package/src/decorators/factory/type-tests/decoratorRegistry.type-test.ts +302 -0
- package/src/decorators/factory/types.ts +259 -0
- package/src/decorators/validation/validatable.ts +63 -0
- package/src/index.ts +9 -0
- package/tsconfig.json +19 -0
- 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
|
+
}
|
|
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);
|
package/build/index.d.ts
ADDED
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>
|