@tstdl/base 0.85.22 → 0.85.24
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/decorators/index.d.ts +1 -0
- package/decorators/index.js +18 -0
- package/decorators/log.d.ts +2 -0
- package/decorators/log.js +52 -0
- package/function/index.d.ts +1 -0
- package/function/index.js +18 -0
- package/function/log.d.ts +6 -0
- package/function/log.js +37 -0
- package/package.json +1 -1
- package/reflection/registry.d.ts +0 -1
- package/reflection/registry.js +40 -41
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './log.js';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
|
+
var decorators_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(decorators_exports);
|
|
18
|
+
__reExport(decorators_exports, require("./log.js"), module.exports);
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var log_exports = {};
|
|
20
|
+
__export(log_exports, {
|
|
21
|
+
Log: () => Log
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(log_exports);
|
|
24
|
+
var import_log = require("../function/log.js");
|
|
25
|
+
var import_utils = require("../reflection/utils.js");
|
|
26
|
+
var import_object = require("../utils/object/object.js");
|
|
27
|
+
var import_type_guards = require("../utils/type-guards.js");
|
|
28
|
+
const isLogWrapped = Symbol("log wrapped");
|
|
29
|
+
function wrapLogTagged(fn, options) {
|
|
30
|
+
const wrapped = (0, import_log.wrapLog)(fn, options);
|
|
31
|
+
wrapped[isLogWrapped] = true;
|
|
32
|
+
return wrapped;
|
|
33
|
+
}
|
|
34
|
+
function isWrapped(fn) {
|
|
35
|
+
return fn[isLogWrapped] ?? false;
|
|
36
|
+
}
|
|
37
|
+
function Log() {
|
|
38
|
+
return (0, import_utils.createDecorator)({ class: true, method: true }, (data) => {
|
|
39
|
+
if (data.type == "method") {
|
|
40
|
+
return { value: wrapLogTagged(data.descriptor.value) };
|
|
41
|
+
}
|
|
42
|
+
const staticProperties = (0, import_object.objectKeys)(data.constructor).filter((property) => property != "length" && property != "name" && property != "prototype" && (0, import_type_guards.isFunction)(data.constructor[property]) && !isWrapped(data.constructor[property]));
|
|
43
|
+
const instanceProperties = (0, import_object.objectKeys)(data.prototype).filter((property) => property != "constructor" && (0, import_type_guards.isFunction)(data.prototype[property]) && !isWrapped(data.prototype[property]));
|
|
44
|
+
for (const property of staticProperties) {
|
|
45
|
+
data.constructor[property] = wrapLogTagged(data.constructor[property], property);
|
|
46
|
+
}
|
|
47
|
+
for (const property of instanceProperties) {
|
|
48
|
+
data.prototype[property] = wrapLogTagged(data.prototype[property], property);
|
|
49
|
+
}
|
|
50
|
+
return void 0;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './log.js';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
|
+
var function_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(function_exports);
|
|
18
|
+
__reExport(function_exports, require("./log.js"), module.exports);
|
package/function/log.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var log_exports = {};
|
|
20
|
+
__export(log_exports, {
|
|
21
|
+
wrapLog: () => wrapLog
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(log_exports);
|
|
24
|
+
var import_type_guards = require("../utils/type-guards.js");
|
|
25
|
+
var import_type_of = require("../utils/type-of.js");
|
|
26
|
+
function wrapLog(fn, options) {
|
|
27
|
+
const fnName = options?.fnName ?? fn.name;
|
|
28
|
+
const log = options?.logger?.trace.bind(options.logger) ?? console.log.bind(console);
|
|
29
|
+
const wrapped = {
|
|
30
|
+
[fnName](...args) {
|
|
31
|
+
const argString = args.map((arg) => (0, import_type_guards.isPrimitive)(arg) ? arg : (0, import_type_of.typeOf)(arg)).join(", ");
|
|
32
|
+
log(`[call: ${fnName}(${argString})]`);
|
|
33
|
+
return Reflect.apply(fn, this, args);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
return wrapped[fnName];
|
|
37
|
+
}
|
package/package.json
CHANGED
package/reflection/registry.d.ts
CHANGED
package/reflection/registry.js
CHANGED
|
@@ -87,52 +87,51 @@ class ReflectionRegistry {
|
|
|
87
87
|
throw new Error("Reflection data was accessed before registration was done.");
|
|
88
88
|
}
|
|
89
89
|
if (!this.metadataMap.has(type)) {
|
|
90
|
-
const metadata =
|
|
90
|
+
const metadata = initializeType(type);
|
|
91
91
|
this.metadataMap.set(type, metadata);
|
|
92
92
|
return metadata;
|
|
93
93
|
}
|
|
94
94
|
return this.metadataMap.get(type);
|
|
95
95
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
96
|
+
}
|
|
97
|
+
function initializeType(type) {
|
|
98
|
+
return (0, import_lazy_property.lazyObject)({
|
|
99
|
+
metadataType: "type",
|
|
100
|
+
constructor: (0, import_lazy_property.lazyObjectValue)(type),
|
|
101
|
+
parent: (0, import_lazy_property.lazyObjectValue)(Reflect.getPrototypeOf(type)),
|
|
102
|
+
parameters: {
|
|
103
|
+
initializer() {
|
|
104
|
+
const parametersTypes = (0, import_reflection.getParameterTypes)(type);
|
|
105
|
+
return parametersTypes?.map((parameterType, index) => ({ metadataType: "constructor-parameter", index, type: parameterType, data: new import_reflection_data_map.ReflectionDataMap() }));
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
properties: {
|
|
109
|
+
initializer: () => new import_factory_map.FactoryMap((key) => ({ metadataType: "property", key, type: (0, import_reflection.getDesignType)(type.prototype, key), isAccessor: false, data: new import_reflection_data_map.ReflectionDataMap() }))
|
|
110
|
+
},
|
|
111
|
+
staticProperties: {
|
|
112
|
+
initializer: () => new import_factory_map.FactoryMap((key) => ({ metadataType: "property", key, type: (0, import_reflection.getDesignType)(type, key), isAccessor: false, data: new import_reflection_data_map.ReflectionDataMap() }))
|
|
113
|
+
},
|
|
114
|
+
methods: {
|
|
115
|
+
initializer: () => new import_factory_map.FactoryMap((key) => {
|
|
116
|
+
const parameters = (0, import_reflection.getParameterTypes)(type.prototype, key);
|
|
117
|
+
const returnType = (0, import_reflection.getReturnType)(type.prototype, key);
|
|
118
|
+
if ((0, import_type_guards.isUndefined)(parameters)) {
|
|
119
|
+
throw new Error(`Could not get parameters for method ${key.toString()} of type ${type.name}`);
|
|
106
120
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
})
|
|
123
|
-
},
|
|
124
|
-
staticMethods: {
|
|
125
|
-
initializer: () => new import_factory_map.FactoryMap((key) => {
|
|
126
|
-
const parameters = (0, import_reflection.getParameterTypes)(type, key);
|
|
127
|
-
const returnType = (0, import_reflection.getReturnType)(type, key);
|
|
128
|
-
if ((0, import_type_guards.isUndefined)(parameters)) {
|
|
129
|
-
throw new Error(`Could not get parameters for static method ${key.toString()} of type ${type.name}`);
|
|
130
|
-
}
|
|
131
|
-
return { metadataType: "method", parameters: parameters.map((parameter, index) => ({ metadataType: "method-parameter", index, type: parameter, data: new import_reflection_data_map.ReflectionDataMap() })), returnType, data: new import_reflection_data_map.ReflectionDataMap() };
|
|
132
|
-
})
|
|
133
|
-
},
|
|
134
|
-
data: { initializer: () => new import_reflection_data_map.ReflectionDataMap() }
|
|
135
|
-
});
|
|
136
|
-
}
|
|
121
|
+
return { metadataType: "method", parameters: parameters.map((parameter, index) => ({ metadataType: "method-parameter", index, type: parameter, data: new import_reflection_data_map.ReflectionDataMap() })), returnType, data: new import_reflection_data_map.ReflectionDataMap() };
|
|
122
|
+
})
|
|
123
|
+
},
|
|
124
|
+
staticMethods: {
|
|
125
|
+
initializer: () => new import_factory_map.FactoryMap((key) => {
|
|
126
|
+
const parameters = (0, import_reflection.getParameterTypes)(type, key);
|
|
127
|
+
const returnType = (0, import_reflection.getReturnType)(type, key);
|
|
128
|
+
if ((0, import_type_guards.isUndefined)(parameters)) {
|
|
129
|
+
throw new Error(`Could not get parameters for static method ${key.toString()} of type ${type.name}`);
|
|
130
|
+
}
|
|
131
|
+
return { metadataType: "method", parameters: parameters.map((parameter, index) => ({ metadataType: "method-parameter", index, type: parameter, data: new import_reflection_data_map.ReflectionDataMap() })), returnType, data: new import_reflection_data_map.ReflectionDataMap() };
|
|
132
|
+
})
|
|
133
|
+
},
|
|
134
|
+
data: { initializer: () => new import_reflection_data_map.ReflectionDataMap() }
|
|
135
|
+
});
|
|
137
136
|
}
|
|
138
137
|
const reflectionRegistry = new ReflectionRegistry();
|