@nejs/basic-extensions 2.21.5 → 2.22.6
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/README.md +78 -4
- package/dist/@nejs/basic-extensions.bundle.2.22.6.js +25 -0
- package/dist/@nejs/basic-extensions.bundle.2.22.6.js.map +7 -0
- package/dist/cjs/classes/index.cjs +11129 -0
- package/dist/cjs/classes/index.cjs.map +7 -0
- package/dist/cjs/index.cjs +15191 -0
- package/dist/cjs/index.cjs.map +7 -0
- package/dist/cjs/utils/index.cjs +3954 -0
- package/dist/cjs/utils/index.cjs.map +7 -0
- package/dist/esm/basic-extensions.mjs +25 -0
- package/dist/esm/basic-extensions.mjs.map +7 -0
- package/package.json +16 -22
- package/repl.bootstrap.js +4 -7
- package/repl.history +26 -26
- package/src/classes/enumeration.js +466 -0
- package/src/classes/index.js +5 -1
- package/src/index.js +3 -1
- package/src/regular.expression.extensions.js +0 -35
- package/src/utils/toolkit.js +699 -516
- package/tests/arrayextensions.test.js +3 -3
- package/tests/index.test.js +3 -1
- package/tests/newClasses/asyncIterable.test.js +3 -3
- package/tests/newClasses/deferred.test.js +3 -3
- package/tests/newClasses/descriptor.test.js +3 -3
- package/tests/newClasses/iterable.test.js +3 -3
- package/tests/newClasses/refmap.test.js +3 -3
- package/tests/newClasses/refset.test.js +3 -3
- package/tests/objectextensions.test.js +3 -3
- package/tests/setextensions.test.js +3 -3
- package/tests/stringextensions.test.js +3 -2
- package/tests/utils/descriptor.utils.test.js +1 -1
- package/tests/utils/toolkit.test.js +429 -163
- package/.esdoc.json +0 -9
- package/.vscode/settings.json +0 -5
- package/bin/build +0 -27
- package/bin/clean +0 -14
- package/bin/esbuild +0 -91
- package/bin/fixup +0 -13
- package/bin/repl.basics.js +0 -584
- package/bin/repl.signature.js +0 -63
- package/bin/version +0 -100
- package/dist/@nejs/basic-extensions.bundle.2.21.5.js +0 -25
- package/dist/@nejs/basic-extensions.bundle.2.21.5.js.map +0 -7
- package/dist/cjs/array.extensions.d.ts +0 -39
- package/dist/cjs/array.extensions.js +0 -477
- package/dist/cjs/array.extensions.js.map +0 -1
- package/dist/cjs/big.int.extension.d.ts +0 -31
- package/dist/cjs/big.int.extension.js +0 -273
- package/dist/cjs/big.int.extension.js.map +0 -1
- package/dist/cjs/classes/asyncIterable.d.ts +0 -126
- package/dist/cjs/classes/asyncIterable.js +0 -209
- package/dist/cjs/classes/asyncIterable.js.map +0 -1
- package/dist/cjs/classes/deferred.d.ts +0 -146
- package/dist/cjs/classes/deferred.js +0 -291
- package/dist/cjs/classes/deferred.js.map +0 -1
- package/dist/cjs/classes/descriptor.d.ts +0 -334
- package/dist/cjs/classes/descriptor.js +0 -537
- package/dist/cjs/classes/descriptor.js.map +0 -1
- package/dist/cjs/classes/enum.d.ts +0 -50
- package/dist/cjs/classes/enum.js +0 -405
- package/dist/cjs/classes/enum.js.map +0 -1
- package/dist/cjs/classes/index.d.ts +0 -15
- package/dist/cjs/classes/index.js +0 -63
- package/dist/cjs/classes/index.js.map +0 -1
- package/dist/cjs/classes/introspector.d.ts +0 -20
- package/dist/cjs/classes/introspector.js +0 -130
- package/dist/cjs/classes/introspector.js.map +0 -1
- package/dist/cjs/classes/iterable.d.ts +0 -169
- package/dist/cjs/classes/iterable.js +0 -268
- package/dist/cjs/classes/iterable.js.map +0 -1
- package/dist/cjs/classes/param.parser.d.ts +0 -221
- package/dist/cjs/classes/param.parser.js +0 -242
- package/dist/cjs/classes/param.parser.js.map +0 -1
- package/dist/cjs/classes/pluggable.proxy.d.ts +0 -153
- package/dist/cjs/classes/pluggable.proxy.js +0 -444
- package/dist/cjs/classes/pluggable.proxy.js.map +0 -1
- package/dist/cjs/classes/property.d.ts +0 -79
- package/dist/cjs/classes/property.js +0 -284
- package/dist/cjs/classes/property.js.map +0 -1
- package/dist/cjs/classes/refmap.d.ts +0 -238
- package/dist/cjs/classes/refmap.js +0 -421
- package/dist/cjs/classes/refmap.js.map +0 -1
- package/dist/cjs/classes/refset.d.ts +0 -186
- package/dist/cjs/classes/refset.js +0 -370
- package/dist/cjs/classes/refset.js.map +0 -1
- package/dist/cjs/classes/symkeys.d.ts +0 -349
- package/dist/cjs/classes/symkeys.js +0 -510
- package/dist/cjs/classes/symkeys.js.map +0 -1
- package/dist/cjs/classes/type.d.ts +0 -56
- package/dist/cjs/classes/type.js +0 -405
- package/dist/cjs/classes/type.js.map +0 -1
- package/dist/cjs/function.extensions.d.ts +0 -12
- package/dist/cjs/function.extensions.js +0 -758
- package/dist/cjs/function.extensions.js.map +0 -1
- package/dist/cjs/global.this.d.ts +0 -2
- package/dist/cjs/global.this.js +0 -300
- package/dist/cjs/global.this.js.map +0 -1
- package/dist/cjs/index.d.ts +0 -31
- package/dist/cjs/index.js +0 -228
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/json.extensions.d.ts +0 -2
- package/dist/cjs/json.extensions.js +0 -109
- package/dist/cjs/json.extensions.js.map +0 -1
- package/dist/cjs/map.extensions.d.ts +0 -3
- package/dist/cjs/map.extensions.js +0 -143
- package/dist/cjs/map.extensions.js.map +0 -1
- package/dist/cjs/math.extension.d.ts +0 -14
- package/dist/cjs/math.extension.js +0 -71
- package/dist/cjs/math.extension.js.map +0 -1
- package/dist/cjs/number.extension.d.ts +0 -44
- package/dist/cjs/number.extension.js +0 -278
- package/dist/cjs/number.extension.js.map +0 -1
- package/dist/cjs/object.extensions.d.ts +0 -33
- package/dist/cjs/object.extensions.js +0 -1091
- package/dist/cjs/object.extensions.js.map +0 -1
- package/dist/cjs/package.json +0 -3
- package/dist/cjs/proxy.extensions.d.ts +0 -2
- package/dist/cjs/proxy.extensions.js +0 -207
- package/dist/cjs/proxy.extensions.js.map +0 -1
- package/dist/cjs/reflect.extensions.d.ts +0 -14
- package/dist/cjs/reflect.extensions.js +0 -316
- package/dist/cjs/reflect.extensions.js.map +0 -1
- package/dist/cjs/regular.expression.extensions.d.ts +0 -2
- package/dist/cjs/regular.expression.extensions.js +0 -423
- package/dist/cjs/regular.expression.extensions.js.map +0 -1
- package/dist/cjs/set.extensions.d.ts +0 -40
- package/dist/cjs/set.extensions.js +0 -355
- package/dist/cjs/set.extensions.js.map +0 -1
- package/dist/cjs/string.extensions.d.ts +0 -23
- package/dist/cjs/string.extensions.js +0 -704
- package/dist/cjs/string.extensions.js.map +0 -1
- package/dist/cjs/symbol.extensions.d.ts +0 -11
- package/dist/cjs/symbol.extensions.js +0 -735
- package/dist/cjs/symbol.extensions.js.map +0 -1
- package/dist/cjs/utils/copy.object.d.ts +0 -408
- package/dist/cjs/utils/copy.object.js +0 -720
- package/dist/cjs/utils/copy.object.js.map +0 -1
- package/dist/cjs/utils/descriptor.utils.d.ts +0 -298
- package/dist/cjs/utils/descriptor.utils.js +0 -889
- package/dist/cjs/utils/descriptor.utils.js.map +0 -1
- package/dist/cjs/utils/index.d.ts +0 -75
- package/dist/cjs/utils/index.js +0 -61
- package/dist/cjs/utils/index.js.map +0 -1
- package/dist/cjs/utils/stdout.d.ts +0 -742
- package/dist/cjs/utils/stdout.js +0 -1042
- package/dist/cjs/utils/stdout.js.map +0 -1
- package/dist/cjs/utils/toolkit.d.ts +0 -1898
- package/dist/cjs/utils/toolkit.js +0 -1378
- package/dist/cjs/utils/toolkit.js.map +0 -1
- package/dist/cjs/weakref.extensions.d.ts +0 -2
- package/dist/cjs/weakref.extensions.js +0 -19
- package/dist/cjs/weakref.extensions.js.map +0 -1
- package/dist/mjs/array.extensions.d.ts +0 -39
- package/dist/mjs/array.extensions.js +0 -474
- package/dist/mjs/array.extensions.js.map +0 -1
- package/dist/mjs/big.int.extension.d.ts +0 -31
- package/dist/mjs/big.int.extension.js +0 -270
- package/dist/mjs/big.int.extension.js.map +0 -1
- package/dist/mjs/classes/asyncIterable.d.ts +0 -126
- package/dist/mjs/classes/asyncIterable.js +0 -204
- package/dist/mjs/classes/asyncIterable.js.map +0 -1
- package/dist/mjs/classes/deferred.d.ts +0 -146
- package/dist/mjs/classes/deferred.js +0 -287
- package/dist/mjs/classes/deferred.js.map +0 -1
- package/dist/mjs/classes/descriptor.d.ts +0 -334
- package/dist/mjs/classes/descriptor.js +0 -533
- package/dist/mjs/classes/descriptor.js.map +0 -1
- package/dist/mjs/classes/enum.d.ts +0 -50
- package/dist/mjs/classes/enum.js +0 -400
- package/dist/mjs/classes/enum.js.map +0 -1
- package/dist/mjs/classes/index.d.ts +0 -15
- package/dist/mjs/classes/index.js +0 -46
- package/dist/mjs/classes/index.js.map +0 -1
- package/dist/mjs/classes/introspector.d.ts +0 -20
- package/dist/mjs/classes/introspector.js +0 -126
- package/dist/mjs/classes/introspector.js.map +0 -1
- package/dist/mjs/classes/iterable.d.ts +0 -169
- package/dist/mjs/classes/iterable.js +0 -263
- package/dist/mjs/classes/iterable.js.map +0 -1
- package/dist/mjs/classes/param.parser.d.ts +0 -221
- package/dist/mjs/classes/param.parser.js +0 -238
- package/dist/mjs/classes/param.parser.js.map +0 -1
- package/dist/mjs/classes/pluggable.proxy.d.ts +0 -153
- package/dist/mjs/classes/pluggable.proxy.js +0 -438
- package/dist/mjs/classes/pluggable.proxy.js.map +0 -1
- package/dist/mjs/classes/property.d.ts +0 -79
- package/dist/mjs/classes/property.js +0 -280
- package/dist/mjs/classes/property.js.map +0 -1
- package/dist/mjs/classes/refmap.d.ts +0 -238
- package/dist/mjs/classes/refmap.js +0 -417
- package/dist/mjs/classes/refmap.js.map +0 -1
- package/dist/mjs/classes/refset.d.ts +0 -186
- package/dist/mjs/classes/refset.js +0 -366
- package/dist/mjs/classes/refset.js.map +0 -1
- package/dist/mjs/classes/symkeys.d.ts +0 -349
- package/dist/mjs/classes/symkeys.js +0 -506
- package/dist/mjs/classes/symkeys.js.map +0 -1
- package/dist/mjs/classes/type.d.ts +0 -56
- package/dist/mjs/classes/type.js +0 -401
- package/dist/mjs/classes/type.js.map +0 -1
- package/dist/mjs/function.extensions.d.ts +0 -12
- package/dist/mjs/function.extensions.js +0 -755
- package/dist/mjs/function.extensions.js.map +0 -1
- package/dist/mjs/global.this.d.ts +0 -2
- package/dist/mjs/global.this.js +0 -264
- package/dist/mjs/global.this.js.map +0 -1
- package/dist/mjs/index.d.ts +0 -31
- package/dist/mjs/index.js +0 -206
- package/dist/mjs/index.js.map +0 -1
- package/dist/mjs/json.extensions.d.ts +0 -2
- package/dist/mjs/json.extensions.js +0 -106
- package/dist/mjs/json.extensions.js.map +0 -1
- package/dist/mjs/map.extensions.d.ts +0 -3
- package/dist/mjs/map.extensions.js +0 -140
- package/dist/mjs/map.extensions.js.map +0 -1
- package/dist/mjs/math.extension.d.ts +0 -14
- package/dist/mjs/math.extension.js +0 -68
- package/dist/mjs/math.extension.js.map +0 -1
- package/dist/mjs/number.extension.d.ts +0 -44
- package/dist/mjs/number.extension.js +0 -275
- package/dist/mjs/number.extension.js.map +0 -1
- package/dist/mjs/object.extensions.d.ts +0 -33
- package/dist/mjs/object.extensions.js +0 -1088
- package/dist/mjs/object.extensions.js.map +0 -1
- package/dist/mjs/package.json +0 -3
- package/dist/mjs/proxy.extensions.d.ts +0 -2
- package/dist/mjs/proxy.extensions.js +0 -204
- package/dist/mjs/proxy.extensions.js.map +0 -1
- package/dist/mjs/reflect.extensions.d.ts +0 -14
- package/dist/mjs/reflect.extensions.js +0 -313
- package/dist/mjs/reflect.extensions.js.map +0 -1
- package/dist/mjs/regular.expression.extensions.d.ts +0 -2
- package/dist/mjs/regular.expression.extensions.js +0 -420
- package/dist/mjs/regular.expression.extensions.js.map +0 -1
- package/dist/mjs/set.extensions.d.ts +0 -40
- package/dist/mjs/set.extensions.js +0 -352
- package/dist/mjs/set.extensions.js.map +0 -1
- package/dist/mjs/string.extensions.d.ts +0 -23
- package/dist/mjs/string.extensions.js +0 -701
- package/dist/mjs/string.extensions.js.map +0 -1
- package/dist/mjs/symbol.extensions.d.ts +0 -11
- package/dist/mjs/symbol.extensions.js +0 -732
- package/dist/mjs/symbol.extensions.js.map +0 -1
- package/dist/mjs/utils/copy.object.d.ts +0 -408
- package/dist/mjs/utils/copy.object.js +0 -702
- package/dist/mjs/utils/copy.object.js.map +0 -1
- package/dist/mjs/utils/descriptor.utils.d.ts +0 -298
- package/dist/mjs/utils/descriptor.utils.js +0 -875
- package/dist/mjs/utils/descriptor.utils.js.map +0 -1
- package/dist/mjs/utils/index.d.ts +0 -75
- package/dist/mjs/utils/index.js +0 -45
- package/dist/mjs/utils/index.js.map +0 -1
- package/dist/mjs/utils/stdout.d.ts +0 -742
- package/dist/mjs/utils/stdout.js +0 -1037
- package/dist/mjs/utils/stdout.js.map +0 -1
- package/dist/mjs/utils/toolkit.d.ts +0 -1898
- package/dist/mjs/utils/toolkit.js +0 -1373
- package/dist/mjs/utils/toolkit.js.map +0 -1
- package/dist/mjs/weakref.extensions.d.ts +0 -2
- package/dist/mjs/weakref.extensions.js +0 -16
- package/dist/mjs/weakref.extensions.js.map +0 -1
- package/jsdoc-config.json +0 -31
- package/tsconfig.base.json +0 -28
- package/tsconfig.cjs.json +0 -8
- package/tsconfig.esm.json +0 -8
- package/vitest.config.js +0 -7
|
@@ -1,444 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PluggableProxyExtensionSet = exports.PluggableProxyExtensions = exports.ProxyHandlerExtensions = exports.PluggableProxy = exports.ProxyHandler = exports.ProxyHandlerResponse = void 0;
|
|
4
|
-
const extension_1 = require("@nejs/extension");
|
|
5
|
-
const { toStringTag, hasInstance } = Symbol;
|
|
6
|
-
class ProxyHandlerResponse {
|
|
7
|
-
constructor(success = false, value = undefined, context = undefined) {
|
|
8
|
-
Object.assign(this, { succes, value, context });
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* A getter method for the toStringTag symbol.
|
|
12
|
-
* This method returns the name of the constructor of the instance.
|
|
13
|
-
* It is used to provide a custom string description of the object,
|
|
14
|
-
* which can be useful for debugging or logging purposes.
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* const response = new ProxyHandlerResponse();
|
|
18
|
-
* console.log(response[Symbol.toStringTag]); // logs: "ProxyHandlerResponse"
|
|
19
|
-
*
|
|
20
|
-
* @returns {string} The name of the constructor of the instance.
|
|
21
|
-
*/
|
|
22
|
-
get [toStringTag]() { return this.constructor.name; }
|
|
23
|
-
/**
|
|
24
|
-
* This static method is a Symbol.hasInstance method implementation.
|
|
25
|
-
* It checks if the provided instance is an instance of the class.
|
|
26
|
-
* It does this by comparing the instance's toStringTag or constructor
|
|
27
|
-
* to the class's name or the class itself respectively.
|
|
28
|
-
*
|
|
29
|
-
* @param {Object} instance - The instance to check.
|
|
30
|
-
* @returns {boolean} True if the instance is of the class, false otherwise.
|
|
31
|
-
*
|
|
32
|
-
* @example
|
|
33
|
-
* // Assuming MyClass has implemented this method
|
|
34
|
-
* const myInstance = new MyClass();
|
|
35
|
-
* // logs: true
|
|
36
|
-
* console.log(MyClass[Symbol.hasInstance](myInstance));
|
|
37
|
-
*/
|
|
38
|
-
static [hasInstance](instance) {
|
|
39
|
-
return (instance?.[toStringTag] === this.name ||
|
|
40
|
-
instance?.constructor === this);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
exports.ProxyHandlerResponse = ProxyHandlerResponse;
|
|
44
|
-
class ProxyHandler {
|
|
45
|
-
constructor(handler, type = ProxyHandler.type.get) {
|
|
46
|
-
this.handler = handler;
|
|
47
|
-
this.typeName = Array.isArray(type)
|
|
48
|
-
? ProxyHandler.nameFromType(type) ?? 'get'
|
|
49
|
-
: String(type);
|
|
50
|
-
this.type = Array.isArray(type) ? type : ProxyHandler.type[type ?? 'get'];
|
|
51
|
-
}
|
|
52
|
-
invoke(...args) {
|
|
53
|
-
const context = {
|
|
54
|
-
defaultValue: Reflect[this.typeName](...args),
|
|
55
|
-
proxyHandler: this,
|
|
56
|
-
typeHandler: this.handler,
|
|
57
|
-
};
|
|
58
|
-
try {
|
|
59
|
-
const result = this.handler.apply(context, args);
|
|
60
|
-
if (!(result?.[Symbol.toStringTag] === ProxyHandler.ResponseType)) {
|
|
61
|
-
return ProxyHandler.response(!!result, result, context);
|
|
62
|
-
}
|
|
63
|
-
result.context = context;
|
|
64
|
-
return result;
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
return ProxyHandler.response(false, error);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* This static method is used to create a response object. The response
|
|
72
|
-
* object contains the success status, the value, and the context of the
|
|
73
|
-
* response. It also includes a getter for the Symbol.toStringTag property
|
|
74
|
-
* that returns the ResponseType of the ProxyHandler.
|
|
75
|
-
*
|
|
76
|
-
* @param {boolean} success - The success status of the response.
|
|
77
|
-
* @param {*} value - The value of the response.
|
|
78
|
-
* @param {Object} context - The context of the response.
|
|
79
|
-
* @returns {Object} The response object.
|
|
80
|
-
*
|
|
81
|
-
* @example
|
|
82
|
-
* // Create a response object
|
|
83
|
-
* const response = ProxyHandler.response(
|
|
84
|
-
* true, 'value', { key: 'context' }
|
|
85
|
-
* );
|
|
86
|
-
*
|
|
87
|
-
* // Output: { success: true, value: 'value', context: { key: 'context' },
|
|
88
|
-
* // [Symbol.toStringTag]: 'ProxyHandlerResponse' }
|
|
89
|
-
* console.log(response);
|
|
90
|
-
*/
|
|
91
|
-
static response(success, value, context) {
|
|
92
|
-
return {
|
|
93
|
-
success, value, context,
|
|
94
|
-
get [Symbol.toStringTag]() { return this.ResponseType; }
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* This static getter method is used to retrieve the response type
|
|
99
|
-
* of the ProxyHandler. It returns a string that represents the
|
|
100
|
-
* response type of the ProxyHandler.
|
|
101
|
-
*
|
|
102
|
-
* @property {function} ResponseType - A static getter method that
|
|
103
|
-
* returns the response type of the ProxyHandler.
|
|
104
|
-
* @returns {string} A string representing the response type of the
|
|
105
|
-
* ProxyHandler.
|
|
106
|
-
*
|
|
107
|
-
* @example
|
|
108
|
-
* // Get the response type of the ProxyHandler
|
|
109
|
-
* const responseType = ProxyHandler.ResponseType;
|
|
110
|
-
*
|
|
111
|
-
* // Output: 'ProxyHandlerResponse'
|
|
112
|
-
* console.log(responseType);
|
|
113
|
-
*/
|
|
114
|
-
static get ResponseType() { return 'ProxyHandlerResponse'; }
|
|
115
|
-
/**
|
|
116
|
-
* This static method is used to retrieve the name of a ProxyHandler type
|
|
117
|
-
* from a given array of arguments. If the array of arguments matches any
|
|
118
|
-
* of the ProxyHandler types, the name of that type is returned. If no
|
|
119
|
-
* match is found, or if the input is not an array, 'custom' is returned.
|
|
120
|
-
*
|
|
121
|
-
* @param {Array.<*>} proxyHandlerType - An array of arguments to match
|
|
122
|
-
* against the ProxyHandler types.
|
|
123
|
-
* @returns {string} The name of the matching ProxyHandler type, or 'custom'
|
|
124
|
-
* if no match is found.
|
|
125
|
-
*
|
|
126
|
-
* @example
|
|
127
|
-
* // Get the name of a type from its arguments
|
|
128
|
-
* const typeName = ProxyHandler.nameFromType(
|
|
129
|
-
* ['target', 'thisArg', 'argumentsList']
|
|
130
|
-
* );
|
|
131
|
-
*
|
|
132
|
-
* // Output: 'apply'
|
|
133
|
-
* console.log(typeName);
|
|
134
|
-
*
|
|
135
|
-
* @throws {TypeError} If ProxyHandler.type is undefined.
|
|
136
|
-
*/
|
|
137
|
-
static nameFromType(proxyHandlerType) {
|
|
138
|
-
if (!Array.isArray(proxyHandlerType)) {
|
|
139
|
-
return 'custom';
|
|
140
|
-
}
|
|
141
|
-
const names = Object.entries(ProxyHandler.type);
|
|
142
|
-
for (const [name, args] of names) {
|
|
143
|
-
if (proxyHandlerType.every(element => ~args.indexOf(element))) {
|
|
144
|
-
return name;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
return 'custom';
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* This method is used to retrieve all the types of ProxyHandler available
|
|
151
|
-
* in the ProxyHandler.type object. It is useful when you need to iterate
|
|
152
|
-
* over all the types or when you need to check if a certain type exists.
|
|
153
|
-
*
|
|
154
|
-
* @property {function} typeNames - A static getter method that returns an
|
|
155
|
-
* array of keys from the ProxyHandler.type object.
|
|
156
|
-
* @returns {Array.<string>} An array of strings representing the keys of
|
|
157
|
-
* the ProxyHandler.type object.
|
|
158
|
-
*
|
|
159
|
-
* @example
|
|
160
|
-
* // Get all type names
|
|
161
|
-
* const types = ProxyHandler.typeNames;
|
|
162
|
-
*
|
|
163
|
-
* // Output: ['apply', 'construct', 'defineProperty', ...]
|
|
164
|
-
* console.log(types);
|
|
165
|
-
*
|
|
166
|
-
* @throws {TypeError} If ProxyHandler.type is undefined.
|
|
167
|
-
*/
|
|
168
|
-
static get typeNames() {
|
|
169
|
-
return Object.keys(ProxyHandler.type);
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* A static getter method that returns an object containing keyed proxy
|
|
173
|
-
* trap types and their associated expected arguments list by name. A
|
|
174
|
-
* docstring description complete with url shortening links for each entry
|
|
175
|
-
* are provided (links go to the MDN documentation)
|
|
176
|
-
*
|
|
177
|
-
* @property {function} type - A static getter method that returns an object
|
|
178
|
-
* of ProxyHandler types.
|
|
179
|
-
* @returns {Object.<string, function>} An object where each key is a type
|
|
180
|
-
* name and each value is a function that returns an array of strings
|
|
181
|
-
* representing the arguments for that type.
|
|
182
|
-
*
|
|
183
|
-
* @example
|
|
184
|
-
* // Get the 'apply' type
|
|
185
|
-
* const applyType = ProxyHandler.type.apply;
|
|
186
|
-
*
|
|
187
|
-
* // Output: ['target', 'thisArg', 'argumentsList']
|
|
188
|
-
* console.log(applyType());
|
|
189
|
-
*
|
|
190
|
-
* @throws {TypeError} If ProxyHandler.type is undefined.
|
|
191
|
-
*/
|
|
192
|
-
static get type() {
|
|
193
|
-
return {
|
|
194
|
-
/**
|
|
195
|
-
* The handler.apply() method is a trap for the [[Call]] object internal
|
|
196
|
-
* method, which is used by operations such as function calls.
|
|
197
|
-
* MDN link: https://t.ly/orBsG
|
|
198
|
-
*/
|
|
199
|
-
get apply() { return ['target', 'thisArg', 'argumentsList']; },
|
|
200
|
-
/**
|
|
201
|
-
* The handler.construct() method is a trap for the [[Construct]] object
|
|
202
|
-
* internal method, which is used by operations such as the new operator.
|
|
203
|
-
* In order for the new operation to be valid on the resulting Proxy
|
|
204
|
-
* object, the target used to initialize the proxy must itself be a
|
|
205
|
-
* valid constructor.
|
|
206
|
-
* MDN link: https://t.ly/1LukS
|
|
207
|
-
*/
|
|
208
|
-
get construct() { return ['target', 'args']; },
|
|
209
|
-
/**
|
|
210
|
-
* The handler.defineProperty() method is a trap for the
|
|
211
|
-
* [[DefineOwnProperty]] object internal method, which is used by
|
|
212
|
-
* operations such as Object.defineProperty().
|
|
213
|
-
* MDN link: https://t.ly/3Ml9y
|
|
214
|
-
*/
|
|
215
|
-
get defineProperty() { return ['target', 'key', 'descriptor']; },
|
|
216
|
-
/**
|
|
217
|
-
* The handler.deleteProperty() method is a trap for the [[Delete]]
|
|
218
|
-
* object internal method, which is used by operations such as the
|
|
219
|
-
* delete operator.
|
|
220
|
-
* MDN link: https://t.ly/neu2H
|
|
221
|
-
*/
|
|
222
|
-
get deleteProperty() { return ['target', 'property']; },
|
|
223
|
-
/**
|
|
224
|
-
* The handler.get() method is a trap for the [[Get]] object internal
|
|
225
|
-
* method, which is used by operations such as property accessors.
|
|
226
|
-
* MDN link: https://t.ly/E419x
|
|
227
|
-
*/
|
|
228
|
-
get get() { return ['target', 'property', 'receiver']; },
|
|
229
|
-
/**
|
|
230
|
-
* The handler.getOwnPropertyDescriptor() method is a trap for the
|
|
231
|
-
* [[GetOwnProperty]] object internal method, which is used by operations
|
|
232
|
-
* such as Object.getOwnPropertyDescriptor().
|
|
233
|
-
* MDN link: https://t.ly/wzPTX
|
|
234
|
-
*/
|
|
235
|
-
get getOwnPropertyDescriptor() { return ['target', 'property']; },
|
|
236
|
-
/**
|
|
237
|
-
* The handler.getPrototypeOf() method is a trap for the
|
|
238
|
-
* [[GetPrototypeOf]] object internal method, which is used by operations
|
|
239
|
-
* such as Object.getPrototypeOf().
|
|
240
|
-
* MDN link: https://t.ly/Ww4S1
|
|
241
|
-
*/
|
|
242
|
-
get getPrototypeOf() { return ['target']; },
|
|
243
|
-
/**
|
|
244
|
-
* The handler.has() method is a trap for the [[HasProperty]] object
|
|
245
|
-
* internal method, which is used by operations such as the in operator.
|
|
246
|
-
* MDN link: https://t.ly/UcJL-
|
|
247
|
-
*/
|
|
248
|
-
get has() { return ['target', 'prototype']; },
|
|
249
|
-
/**
|
|
250
|
-
* The handler.isExtensible() method is a trap for the [[IsExtensible]]
|
|
251
|
-
* object internal method, which is used by operations such as
|
|
252
|
-
* Object.isExtensible().
|
|
253
|
-
* MDN link: https://t.ly/MkdIK
|
|
254
|
-
*/
|
|
255
|
-
get isExtensible() { return ['target']; },
|
|
256
|
-
/**
|
|
257
|
-
* The handler.ownKeys() method is a trap for the [[OwnPropertyKeys]]
|
|
258
|
-
* object internal method, which is used by operations such as
|
|
259
|
-
* Object.keys(), Reflect.ownKeys(), etc.
|
|
260
|
-
* MDN link: https://t.ly/QkiTI
|
|
261
|
-
*/
|
|
262
|
-
get ownKeys() { return ['target']; },
|
|
263
|
-
/**
|
|
264
|
-
* The handler.preventExtensions() method is a trap for the
|
|
265
|
-
* [[PreventExtensions]] object internal method, which is used by
|
|
266
|
-
* operations such as Object.preventExtensions().
|
|
267
|
-
* MDN link: https://t.ly/nvfjJ
|
|
268
|
-
*/
|
|
269
|
-
get preventExtensions() { return ['target']; },
|
|
270
|
-
/**
|
|
271
|
-
* The handler.set() method is a trap for the [[Set]] object internal
|
|
272
|
-
* method, which is used by operations such as using property accessors
|
|
273
|
-
* to set a property's value.
|
|
274
|
-
* MDN link: https://t.ly/FDWcl
|
|
275
|
-
*/
|
|
276
|
-
get set() { return ['target', 'property', 'value', 'receiver']; },
|
|
277
|
-
/**
|
|
278
|
-
* The handler.setPrototypeOf() method is a trap for the
|
|
279
|
-
* [[SetPrototypeOf]] object internal method, which is used by operations
|
|
280
|
-
* such as Object.setPrototypeOf().
|
|
281
|
-
* MDN link: https://t.ly/pS8ej
|
|
282
|
-
*/
|
|
283
|
-
get setPrototypeOf() { return ['target', 'prototype']; },
|
|
284
|
-
};
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
exports.ProxyHandler = ProxyHandler;
|
|
288
|
-
class PluggableProxy {
|
|
289
|
-
constructor(Class, handlers, options = {
|
|
290
|
-
prototype: undefined, // undefined means extract from class
|
|
291
|
-
apply: true,
|
|
292
|
-
}) {
|
|
293
|
-
const validHandlers = handlers.filter(h => h instanceof ProxyHandler);
|
|
294
|
-
Object.assign(this, {
|
|
295
|
-
class: Class instanceof Function ? Class : Class.constructor,
|
|
296
|
-
instance: Class instanceof Function ? null : Class,
|
|
297
|
-
});
|
|
298
|
-
this.handlers = new Map();
|
|
299
|
-
for (let typeName of ProxyHandler.typeNames) {
|
|
300
|
-
const handlersOfType = [].concat(validHandlers.filter(h => h.typeName === typeName));
|
|
301
|
-
this.handlers.set(typeName, handlersOfType);
|
|
302
|
-
}
|
|
303
|
-
this[PluggableProxy.kOriginal] = (options?.prototype ?? Object.getPrototypeOf(this.class));
|
|
304
|
-
this[PluggableProxy.kCreated] = Object.create(this[PluggableProxy.kOriginal], this.instance);
|
|
305
|
-
this[PluggableProxy.kProxy] = new Proxy(this[PluggableProxy.kCreated], this);
|
|
306
|
-
if (options?.apply != true) {
|
|
307
|
-
const target = this?.instance ?? this.class;
|
|
308
|
-
Object.setPrototypeOf(target, this[PluggableProxy.kCreated]);
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
handlersOfType(typeName) {
|
|
312
|
-
return this.handlers.get(typeName);
|
|
313
|
-
}
|
|
314
|
-
tryEachOfType(type, ...args) {
|
|
315
|
-
const types = ProxyHandler.typeNames;
|
|
316
|
-
const failures = [];
|
|
317
|
-
for (const handler of types) {
|
|
318
|
-
const result = handler.invoke(...args);
|
|
319
|
-
if (result.success) {
|
|
320
|
-
return [result, failures];
|
|
321
|
-
}
|
|
322
|
-
failures.push(result);
|
|
323
|
-
}
|
|
324
|
-
return [undefined, failures];
|
|
325
|
-
}
|
|
326
|
-
apply(target, thisArg, argumentsList) {
|
|
327
|
-
const type = 'apply', args = [target, thisArg, argumentsList];
|
|
328
|
-
const [result, _fails] = tryEachOfType(type, ...args);
|
|
329
|
-
if (result) {
|
|
330
|
-
return result;
|
|
331
|
-
}
|
|
332
|
-
return Reflect[type](...args);
|
|
333
|
-
}
|
|
334
|
-
construct(target, args) {
|
|
335
|
-
const type = 'construct', _args = [target, args];
|
|
336
|
-
const [result, _fails] = tryEachOfType(type, ..._args);
|
|
337
|
-
if (result) {
|
|
338
|
-
return result;
|
|
339
|
-
}
|
|
340
|
-
return Reflect[type](..._args);
|
|
341
|
-
}
|
|
342
|
-
defineProperty(target, key, descriptor) {
|
|
343
|
-
const type = 'defineProperty', args = [target, key, descriptor];
|
|
344
|
-
const [result, _fails] = tryEachOfType(type, ...args);
|
|
345
|
-
if (result) {
|
|
346
|
-
return result;
|
|
347
|
-
}
|
|
348
|
-
return Reflect[type](...args);
|
|
349
|
-
}
|
|
350
|
-
deleteProperty(target, property) {
|
|
351
|
-
const type = 'deleteProperty', args = [target, property];
|
|
352
|
-
const [result, _fails] = tryEachOfType(type, ...args);
|
|
353
|
-
if (result) {
|
|
354
|
-
return result;
|
|
355
|
-
}
|
|
356
|
-
return Reflect[type](...args);
|
|
357
|
-
}
|
|
358
|
-
get(target, property, receiver) {
|
|
359
|
-
const type = 'get', args = [target, property, receiver];
|
|
360
|
-
const [result, _fails] = tryEachOfType(type, ...args);
|
|
361
|
-
if (result) {
|
|
362
|
-
return result;
|
|
363
|
-
}
|
|
364
|
-
return Reflect[type](...args);
|
|
365
|
-
}
|
|
366
|
-
getOwnPropertyDescriptor(target, property) {
|
|
367
|
-
const type = 'getOwnPropertyDescriptor', args = [target, property];
|
|
368
|
-
const [result, _fails] = tryEachOfType(type, ...args);
|
|
369
|
-
if (result) {
|
|
370
|
-
return result;
|
|
371
|
-
}
|
|
372
|
-
return Reflect[type](...args);
|
|
373
|
-
}
|
|
374
|
-
getPrototypeOf(target) {
|
|
375
|
-
const type = 'getPrototypeOf', args = [target];
|
|
376
|
-
const [result, _fails] = tryEachOfType(type, ...args);
|
|
377
|
-
if (result) {
|
|
378
|
-
return result;
|
|
379
|
-
}
|
|
380
|
-
return Reflect[type](...args);
|
|
381
|
-
}
|
|
382
|
-
has(target, property) {
|
|
383
|
-
const type = 'has', args = [target, property];
|
|
384
|
-
const [result, _fails] = tryEachOfType(type, ...args);
|
|
385
|
-
if (result) {
|
|
386
|
-
return result;
|
|
387
|
-
}
|
|
388
|
-
return Reflect[type](...args);
|
|
389
|
-
}
|
|
390
|
-
isExtensible(target) {
|
|
391
|
-
const type = 'isExtensible', args = [target];
|
|
392
|
-
const [result, _fails] = tryEachOfType(type, ...args);
|
|
393
|
-
if (result) {
|
|
394
|
-
return result;
|
|
395
|
-
}
|
|
396
|
-
return Reflect[type](...args);
|
|
397
|
-
}
|
|
398
|
-
ownKeys(target) {
|
|
399
|
-
const type = 'ownKeys', args = [target];
|
|
400
|
-
const [result, _fails] = tryEachOfType(type, ...args);
|
|
401
|
-
if (result) {
|
|
402
|
-
return result;
|
|
403
|
-
}
|
|
404
|
-
return Reflect[type](...args);
|
|
405
|
-
}
|
|
406
|
-
preventExtensions(target) {
|
|
407
|
-
const type = 'preventExtensions', args = [target];
|
|
408
|
-
const [result, _fails] = tryEachOfType(type, ...args);
|
|
409
|
-
if (result) {
|
|
410
|
-
return result;
|
|
411
|
-
}
|
|
412
|
-
return Reflect[type](...args);
|
|
413
|
-
}
|
|
414
|
-
set(target, property, value, receiver) {
|
|
415
|
-
const type = 'set', args = [target, property, value, receiver];
|
|
416
|
-
const [result, _fails] = tryEachOfType(type, ...args);
|
|
417
|
-
if (result) {
|
|
418
|
-
return result;
|
|
419
|
-
}
|
|
420
|
-
return Reflect[type](...args);
|
|
421
|
-
}
|
|
422
|
-
setPrototypeOf(target, prototype) {
|
|
423
|
-
const type = 'setPrototypeOf', args = [target, prototype];
|
|
424
|
-
const [result, _fails] = tryEachOfType(type, ...args);
|
|
425
|
-
if (result) {
|
|
426
|
-
return result;
|
|
427
|
-
}
|
|
428
|
-
return Reflect[type](...args);
|
|
429
|
-
}
|
|
430
|
-
static get kCreated() {
|
|
431
|
-
return Symbol.for('pp.prototype.created');
|
|
432
|
-
}
|
|
433
|
-
static get kOriginal() {
|
|
434
|
-
return Symbol.for('pp.prototype.original');
|
|
435
|
-
}
|
|
436
|
-
static get kProxy() {
|
|
437
|
-
return Symbol.for('pp.proxy');
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
exports.PluggableProxy = PluggableProxy;
|
|
441
|
-
exports.ProxyHandlerExtensions = new extension_1.Extension(ProxyHandler);
|
|
442
|
-
exports.PluggableProxyExtensions = new extension_1.Extension(PluggableProxy);
|
|
443
|
-
exports.PluggableProxyExtensionSet = new extension_1.Extension.ExtensionSet('PluggableProxyExtensionSet', exports.ProxyHandlerExtensions, exports.PluggableProxyExtensions);
|
|
444
|
-
//# sourceMappingURL=pluggable.proxy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pluggable.proxy.js","sourceRoot":"","sources":["../../../src/classes/pluggable.proxy.js"],"names":[],"mappings":"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"}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
export class Property {
|
|
2
|
-
/**
|
|
3
|
-
* Creates an accessor property with customizable getter and setter functions.
|
|
4
|
-
*
|
|
5
|
-
* This method offers flexible ways to define accessor properties, including
|
|
6
|
-
* support for storage-based getters and setters. It can handle various input
|
|
7
|
-
* formats, making it versatile for different use cases.
|
|
8
|
-
*
|
|
9
|
-
* @param {string} name - The name of the accessor property.
|
|
10
|
-
* @param {Object} accessors - Object containing getter and/or setter functions.
|
|
11
|
-
* @param {Function} [accessors.get] - Getter function for the property.
|
|
12
|
-
* @param {Function} [accessors.set] - Setter function for the property.
|
|
13
|
-
* @param {Object} [accessors.prototype] - Prototype object for getter/setter.
|
|
14
|
-
* @param {Object} [options] - Additional options for the accessor property.
|
|
15
|
-
* @param {boolean} [options.configurable=true] - Whether property is configurable.
|
|
16
|
-
* @param {boolean} [options.enumerable=true] - Whether property is enumerable.
|
|
17
|
-
* @param {Object} [options.storage] - Storage object for getter/setter closures.
|
|
18
|
-
* @returns {Property} A new Property instance representing the accessor.
|
|
19
|
-
* @throws {TypeError} If no name, getter, or setter is provided.
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* // Basic usage
|
|
23
|
-
* Property.accessor('color', {
|
|
24
|
-
* get() { return this._color; },
|
|
25
|
-
* set(value) { this._color = value; }
|
|
26
|
-
* });
|
|
27
|
-
*
|
|
28
|
-
* @example
|
|
29
|
-
* // Using storage
|
|
30
|
-
* Property.accessor('keyword', {
|
|
31
|
-
* get(storage) { return () => storage.keyword; },
|
|
32
|
-
* set(storage) { return (value) => { storage.keyword = value; } }
|
|
33
|
-
* }, { storage: { keyword: 'initial' } });
|
|
34
|
-
*
|
|
35
|
-
* @example
|
|
36
|
-
* // Using named getter function
|
|
37
|
-
* Property.accessor('color', function get() { return 'red' })
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* // Using prototype
|
|
41
|
-
* const ColorAccessors = {
|
|
42
|
-
* red: { get() { return this._red; } }
|
|
43
|
-
* };
|
|
44
|
-
* Property.accessor('red', ColorAccessors.red);
|
|
45
|
-
*/
|
|
46
|
-
static accessor(name: string, { get, set, prototype }: {
|
|
47
|
-
get?: Function | undefined;
|
|
48
|
-
set?: Function | undefined;
|
|
49
|
-
prototype?: Object | undefined;
|
|
50
|
-
}, { configurable, enumerable, storage }?: {
|
|
51
|
-
configurable?: boolean | undefined;
|
|
52
|
-
enumerable?: boolean | undefined;
|
|
53
|
-
storage?: Object | undefined;
|
|
54
|
-
}): Property;
|
|
55
|
-
static data(name: any, value: any, { writable, configurable, enumerable }?: {}): Property;
|
|
56
|
-
static from(object: any, name: any): Property;
|
|
57
|
-
static get is(): {
|
|
58
|
-
object(value: any): any;
|
|
59
|
-
descriptor(object: any): boolean;
|
|
60
|
-
};
|
|
61
|
-
constructor(key: any, descriptor: any);
|
|
62
|
-
key: string | symbol;
|
|
63
|
-
set descriptor(descriptor: {
|
|
64
|
-
enumerable: any;
|
|
65
|
-
configurable: any;
|
|
66
|
-
});
|
|
67
|
-
get descriptor(): {
|
|
68
|
-
enumerable: any;
|
|
69
|
-
configurable: any;
|
|
70
|
-
};
|
|
71
|
-
apply(toObject: any, asKey: any): any;
|
|
72
|
-
get is(): {
|
|
73
|
-
readonly accessor: boolean;
|
|
74
|
-
readonly data: boolean;
|
|
75
|
-
};
|
|
76
|
-
toString(colors?: boolean, { key, descriptor }?: {}): string;
|
|
77
|
-
}
|
|
78
|
-
export const PropertyExtensions: Extension;
|
|
79
|
-
import { Extension } from '@nejs/extension';
|