typeomatica 0.3.39 → 0.3.57
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 +365 -19
- package/lib/errors.js +7 -7
- package/lib/fields.d.ts +5 -5
- package/lib/fields.js +21 -20
- package/lib/index.d.ts +10 -8
- package/lib/index.js +224 -130
- package/lib/types/functions.js +4 -4
- package/lib/types/index.js +16 -16
- package/lib/types/nullish.js +12 -12
- package/lib/types/objects.js +16 -16
- package/lib/types/primitives.js +45 -45
- package/lib/types/special.js +16 -16
- package/package.json +33 -15
- package/.editorconfig +0 -11
- package/.eslintignore +0 -0
- package/.eslintrc.js +0 -72
- package/.gitattributes +0 -22
- package/.github/workflows/node.js.yml +0 -62
- package/.husky/pre-commit +0 -4
- package/jest.config.js +0 -12
- package/src/errors.ts +0 -9
- package/src/fields.ts +0 -76
- package/src/index.ts +0 -301
- package/src/types/functions.ts +0 -7
- package/src/types/index.ts +0 -17
- package/src/types/nullish.ts +0 -15
- package/src/types/objects.ts +0 -19
- package/src/types/primitives.ts +0 -69
- package/src/types/special.ts +0 -19
- package/test/__snapshots__/index.ts.snap +0 -3
- package/test/index.ts +0 -676
- package/test/noJest.ts +0 -105
- package/tsconfig.jest.json +0 -34
- package/tsconfig.json +0 -31
package/lib/types/primitives.js
CHANGED
|
@@ -1,50 +1,50 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
Object.defineProperty(exports,
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.primitives = void 0;
|
|
4
|
-
const errors_1 = require(
|
|
4
|
+
const errors_1 = require("../errors");
|
|
5
5
|
const primitives = (initialValue) => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
6
|
+
let value = Object(initialValue);
|
|
7
|
+
const initialType = typeof initialValue;
|
|
8
|
+
return {
|
|
9
|
+
get() {
|
|
10
|
+
const proxyAsValue = new Proxy(value, {
|
|
11
|
+
get(_, prop) {
|
|
12
|
+
if (prop === Symbol.toPrimitive) {
|
|
13
|
+
return function (hint) {
|
|
14
|
+
if (hint !== initialType) {
|
|
15
|
+
throw new ReferenceError(errors_1.ErrorsNames.ACCESS_DENIED);
|
|
16
|
+
}
|
|
17
|
+
return value.valueOf();
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
if (prop === 'valueOf') {
|
|
21
|
+
return function () {
|
|
22
|
+
return value.valueOf();
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
if (value[prop] instanceof Function) {
|
|
26
|
+
return value[prop].bind(value);
|
|
27
|
+
}
|
|
28
|
+
const answer = value[prop];
|
|
29
|
+
return answer;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
return proxyAsValue;
|
|
33
|
+
},
|
|
34
|
+
set(replacementValue) {
|
|
35
|
+
if (replacementValue instanceof value.constructor) {
|
|
36
|
+
value = replacementValue;
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
const prevalue = Object(replacementValue);
|
|
40
|
+
if (prevalue instanceof value.constructor) {
|
|
41
|
+
value = prevalue;
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
44
|
+
const error = new TypeError(errors_1.ErrorsNames.TYPE_MISMATCH);
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
48
|
};
|
|
49
49
|
exports.primitives = primitives;
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWl0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9wcmltaXRpdmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBRWIsc0NBQXdDO0FBRWpDLE1BQU0sVUFBVSxHQUFHLENBQUMsWUFBb0IsRUFBRSxFQUFFO0lBQ2xELElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNqQyxNQUFNLFdBQVcsR0FBRyxPQUFPLFlBQVksQ0FBQztJQUV4QyxPQUFPO1FBQ04sR0FBRztZQUNGLE1BQU0sWUFBWSxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRTtnQkFFckMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJO29CQUNWLElBQUksSUFBSSxLQUFLLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQzt3QkFDakMsT0FBTyxVQUFVLElBQVk7NEJBQzVCLElBQUksSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dDQUMxQixNQUFNLElBQUksY0FBYyxDQUFDLG9CQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7NEJBQ3JELENBQUM7NEJBQ0QsT0FBTyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQ3hCLENBQUMsQ0FBQztvQkFDSCxDQUFDO29CQUVELElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUN4QixPQUFPOzRCQUNOLE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUN4QixDQUFDLENBQUM7b0JBQ0gsQ0FBQztvQkFHRCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxRQUFRLEVBQUUsQ0FBQzt3QkFDckMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNoQyxDQUFDO29CQUVELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDM0IsT0FBTyxNQUFNLENBQUM7Z0JBQ2YsQ0FBQzthQUNELENBQUMsQ0FBQztZQUNILE9BQU8sWUFBWSxDQUFDO1FBQ3JCLENBQUM7UUFhRCxHQUFHLENBQUMsZ0JBQXlCO1lBQzVCLElBQUksZ0JBQWdCLFlBQVksS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNuRCxLQUFLLEdBQUcsZ0JBQWdCLENBQUM7Z0JBQ3pCLE9BQU8sS0FBSyxDQUFDO1lBQ2QsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBRTFDLElBQUksUUFBUSxZQUFZLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDM0MsS0FBSyxHQUFHLFFBQVEsQ0FBQztnQkFDakIsT0FBTyxLQUFLLENBQUM7WUFDZCxDQUFDO1lBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxTQUFTLENBQUMsb0JBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN2RCxNQUFNLEtBQUssQ0FBQztRQUNiLENBQUM7S0FDRCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBaEVXLFFBQUEsVUFBVSxjQWdFckIiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IEVycm9yc05hbWVzIH0gZnJvbSAnLi4vZXJyb3JzJztcblxuZXhwb3J0IGNvbnN0IHByaW1pdGl2ZXMgPSAoaW5pdGlhbFZhbHVlOiBvYmplY3QpID0+IHtcblx0bGV0IHZhbHVlID0gT2JqZWN0KGluaXRpYWxWYWx1ZSk7XG5cdGNvbnN0IGluaXRpYWxUeXBlID0gdHlwZW9mIGluaXRpYWxWYWx1ZTtcblxuXHRyZXR1cm4ge1xuXHRcdGdldCgpIHtcblx0XHRcdGNvbnN0IHByb3h5QXNWYWx1ZSA9IG5ldyBQcm94eSh2YWx1ZSwge1xuXHRcdFx0XHQvLyBnZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuXHRcdFx0XHRnZXQoXywgcHJvcCkge1xuXHRcdFx0XHRcdGlmIChwcm9wID09PSBTeW1ib2wudG9QcmltaXRpdmUpIHtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoaGludDogc3RyaW5nKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChoaW50ICE9PSBpbml0aWFsVHlwZSkge1xuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihFcnJvcnNOYW1lcy5BQ0NFU1NfREVOSUVEKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWUudmFsdWVPZigpO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAocHJvcCA9PT0gJ3ZhbHVlT2YnKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWUudmFsdWVPZigpO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRcdFx0aWYgKHZhbHVlW3Byb3BdIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcblx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZVtwcm9wXS5iaW5kKHZhbHVlKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjb25zdCBhbnN3ZXIgPSB2YWx1ZVtwcm9wXTtcblx0XHRcdFx0XHRyZXR1cm4gYW5zd2VyO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBwcm94eUFzVmFsdWU7XG5cdFx0fSxcblx0XHQvLyBnZXQoKSB7XG5cdFx0Ly8gXHRjb25zdCBwcmVwYXJlZFZhbHVlID0ge1xuXHRcdC8vIFx0XHRbU3ltYm9sLnRvUHJpbWl0aXZlXSgpIHtcblx0XHQvLyBcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKCkge1xuXHRcdC8vIFx0XHRcdFx0dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKEVycm9yc05hbWVzLkFDQ0VTU19ERU5JRUQpO1xuXHRcdC8vIFx0XHRcdH07XG5cdFx0Ly8gXHRcdH1cblx0XHQvLyBcdH07XG5cdFx0Ly8gXHRSZWZsZWN0LnNldFByb3RvdHlwZU9mKHByZXBhcmVkVmFsdWUsIHZhbHVlKTtcblx0XHQvLyBcdGRlYnVnZ2VyO1xuXHRcdC8vIFx0cmV0dXJuIHByZXBhcmVkVmFsdWU7XG5cdFx0Ly8gfSxcblx0XHRzZXQocmVwbGFjZW1lbnRWYWx1ZTogdW5rbm93bikge1xuXHRcdFx0aWYgKHJlcGxhY2VtZW50VmFsdWUgaW5zdGFuY2VvZiB2YWx1ZS5jb25zdHJ1Y3Rvcikge1xuXHRcdFx0XHR2YWx1ZSA9IHJlcGxhY2VtZW50VmFsdWU7XG5cdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgcHJldmFsdWUgPSBPYmplY3QocmVwbGFjZW1lbnRWYWx1ZSk7XG5cblx0XHRcdGlmIChwcmV2YWx1ZSBpbnN0YW5jZW9mIHZhbHVlLmNvbnN0cnVjdG9yKSB7XG5cdFx0XHRcdHZhbHVlID0gcHJldmFsdWU7XG5cdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZXJyb3IgPSBuZXcgVHlwZUVycm9yKEVycm9yc05hbWVzLlRZUEVfTUlTTUFUQ0gpO1xuXHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0fVxuXHR9O1xufTsiXX0=
|
package/lib/types/special.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
Object.defineProperty(exports,
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.special = void 0;
|
|
4
|
-
const errors_1 = require(
|
|
4
|
+
const errors_1 = require("../errors");
|
|
5
5
|
const special = (value) => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
6
|
+
return {
|
|
7
|
+
get() {
|
|
8
|
+
return value;
|
|
9
|
+
},
|
|
10
|
+
set(replacementValue) {
|
|
11
|
+
if (typeof replacementValue === typeof value) {
|
|
12
|
+
value = replacementValue;
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
const error = new TypeError(errors_1.ErrorsNames.TYPE_MISMATCH);
|
|
16
|
+
throw error;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
19
|
};
|
|
20
20
|
exports.special = special;
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlY2lhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9zcGVjaWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBRWIsc0NBQXdDO0FBRWpDLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7SUFDeEMsT0FBTztRQUNOLEdBQUc7WUFDRixPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7UUFDRCxHQUFHLENBQUMsZ0JBQXdCO1lBQzNCLElBQUksT0FBTyxnQkFBZ0IsS0FBSyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUM5QyxLQUFLLEdBQUcsZ0JBQWdCLENBQUM7Z0JBQ3pCLE9BQU8sS0FBSyxDQUFDO1lBQ2QsQ0FBQztZQUNELE1BQU0sS0FBSyxHQUFHLElBQUksU0FBUyxDQUFDLG9CQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdkQsTUFBTSxLQUFLLENBQUM7UUFDYixDQUFDO0tBQ0QsQ0FBQztBQUNILENBQUMsQ0FBQztBQWRXLFFBQUEsT0FBTyxXQWNsQiIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHsgRXJyb3JzTmFtZXMgfSBmcm9tICcuLi9lcnJvcnMnO1xuXG5leHBvcnQgY29uc3Qgc3BlY2lhbCA9ICh2YWx1ZTogb2JqZWN0KSA9PiB7XG5cdHJldHVybiB7XG5cdFx0Z2V0KCkge1xuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH0sXG5cdFx0c2V0KHJlcGxhY2VtZW50VmFsdWU6IG9iamVjdCkge1xuXHRcdFx0aWYgKHR5cGVvZiByZXBsYWNlbWVudFZhbHVlID09PSB0eXBlb2YgdmFsdWUpIHtcblx0XHRcdFx0dmFsdWUgPSByZXBsYWNlbWVudFZhbHVlO1xuXHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBlcnJvciA9IG5ldyBUeXBlRXJyb3IoRXJyb3JzTmFtZXMuVFlQRV9NSVNNQVRDSCk7XG5cdFx0XHR0aHJvdyBlcnJvcjtcblx0XHR9XG5cdH07XG59OyJdfQ==
|
package/package.json
CHANGED
|
@@ -1,18 +1,35 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typeomatica",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.57",
|
|
4
4
|
"description": "type logic against javascript metaprogramming",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=16"
|
|
7
7
|
},
|
|
8
8
|
"main": "lib/index.js",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": "./lib/index.js",
|
|
11
|
+
"./module": {
|
|
12
|
+
"import": "./lib/index.js",
|
|
13
|
+
"browser": "./lib/index.js",
|
|
14
|
+
"require": "./lib/index.js",
|
|
15
|
+
"default": "./lib/index.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"README.md",
|
|
20
|
+
"LICENSE",
|
|
21
|
+
"lib"
|
|
22
|
+
],
|
|
23
|
+
"directories": {
|
|
24
|
+
"build": "lib/"
|
|
25
|
+
},
|
|
9
26
|
"scripts": {
|
|
10
|
-
"build": "rm -rf ./lib && npx tsc --pretty",
|
|
27
|
+
"build": "rm -rf ./lib && npx tsc --target esnext --pretty",
|
|
11
28
|
"lint:lib": "npx eslint --fix ./lib",
|
|
12
29
|
"lint:src": "npx eslint --fix ./src",
|
|
13
30
|
"test": "npx jest",
|
|
14
31
|
"test:cov": "npx jest --collectCoverage",
|
|
15
|
-
"test:addition": "
|
|
32
|
+
"test:addition": "node --test --experimental-test-coverage ./test/noJest.ts",
|
|
16
33
|
"debug:on-issues": "echo 'if debugger; command is not working try other Node.JS version'",
|
|
17
34
|
"debug": "node --inspect-brk --nolazy node_modules/.bin/jest --runInBand --detectOpenHandles",
|
|
18
35
|
"debug:jest": "node --nolazy --inspect-brk ./node_modules/jest/bin/jest.js --runInBand --colors --verbose",
|
|
@@ -33,19 +50,20 @@
|
|
|
33
50
|
"url": "git+https://github.com/wentout/typeomatica.git"
|
|
34
51
|
},
|
|
35
52
|
"devDependencies": {
|
|
36
|
-
"@
|
|
37
|
-
"@
|
|
38
|
-
"@
|
|
39
|
-
"@
|
|
40
|
-
"eslint": "^8.
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
53
|
+
"@eslint/eslintrc": "^3.3.3",
|
|
54
|
+
"@eslint/js": "^9.39.2",
|
|
55
|
+
"@types/jest": "^30.0.0",
|
|
56
|
+
"@types/node": "^25.0.9",
|
|
57
|
+
"@typescript-eslint/eslint-plugin": "^8.53.0",
|
|
58
|
+
"@typescript-eslint/parser": "^8.53.0",
|
|
59
|
+
"eslint": "^9.39.2",
|
|
60
|
+
"globals": "^17.0.0",
|
|
61
|
+
"husky": "^9.1.7",
|
|
62
|
+
"jest": "^30.2.0",
|
|
44
63
|
"json5": "^2.2.3",
|
|
45
|
-
"lint-staged": "^
|
|
64
|
+
"lint-staged": "^16.2.7",
|
|
46
65
|
"set-value": "^4.1.0",
|
|
47
|
-
"ts-jest": "^29.4.
|
|
48
|
-
"
|
|
49
|
-
"typescript": "^5.8.3"
|
|
66
|
+
"ts-jest": "^29.4.6",
|
|
67
|
+
"typescript": "^5.9.3"
|
|
50
68
|
}
|
|
51
69
|
}
|
package/.editorconfig
DELETED
package/.eslintignore
DELETED
|
File without changes
|
package/.eslintrc.js
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
parser: '@typescript-eslint/parser',
|
|
3
|
-
env: {
|
|
4
|
-
node: true,
|
|
5
|
-
es6: true,
|
|
6
|
-
},
|
|
7
|
-
extends: [
|
|
8
|
-
'eslint:recommended',
|
|
9
|
-
'plugin:@typescript-eslint/eslint-recommended'
|
|
10
|
-
],
|
|
11
|
-
parserOptions: {
|
|
12
|
-
ecmaVersion: 2018,
|
|
13
|
-
sourceType: 'module'
|
|
14
|
-
},
|
|
15
|
-
rules: {
|
|
16
|
-
indent: ['error', 'tab'],
|
|
17
|
-
'linebreak-style': ['error', 'unix'],
|
|
18
|
-
quotes: ['error', 'single'],
|
|
19
|
-
semi: ['error', 'always'],
|
|
20
|
-
'no-unused-vars': 'warn',
|
|
21
|
-
'no-shadow': [
|
|
22
|
-
'error',
|
|
23
|
-
{
|
|
24
|
-
builtinGlobals: true,
|
|
25
|
-
hoist: 'all',
|
|
26
|
-
allow: [],
|
|
27
|
-
},
|
|
28
|
-
],
|
|
29
|
-
// 'space-before-function-paren': [
|
|
30
|
-
// 'warn', {
|
|
31
|
-
// 'anonymous': 'always',
|
|
32
|
-
// 'named': 'always',
|
|
33
|
-
// 'asyncArrow': 'always'
|
|
34
|
-
// }
|
|
35
|
-
// ],
|
|
36
|
-
'prefer-template': 'warn',
|
|
37
|
-
'prefer-spread': 'warn',
|
|
38
|
-
'no-useless-concat': 'warn',
|
|
39
|
-
'prefer-rest-params': 'warn',
|
|
40
|
-
'prefer-destructuring': 'warn',
|
|
41
|
-
'no-useless-computed-key': 'warn',
|
|
42
|
-
'no-useless-constructor': 'warn',
|
|
43
|
-
'no-useless-rename': 'warn',
|
|
44
|
-
'no-this-before-super': 'warn',
|
|
45
|
-
'no-new-symbol': 'warn',
|
|
46
|
-
'no-duplicate-imports': 'warn',
|
|
47
|
-
'no-confusing-arrow': 'warn',
|
|
48
|
-
'no-multi-assign': 'warn',
|
|
49
|
-
'no-lonely-if': 'warn',
|
|
50
|
-
'newline-per-chained-call': 'warn',
|
|
51
|
-
'new-cap': 'warn',
|
|
52
|
-
'func-name-matching': 'error',
|
|
53
|
-
// 'consistent-this' : 'error',
|
|
54
|
-
'line-comment-position': [
|
|
55
|
-
'warn',
|
|
56
|
-
{
|
|
57
|
-
position: 'above',
|
|
58
|
-
},
|
|
59
|
-
],
|
|
60
|
-
yoda: 'warn',
|
|
61
|
-
},
|
|
62
|
-
'overrides': [
|
|
63
|
-
{
|
|
64
|
-
'files': ['lib/**/*.js'],
|
|
65
|
-
'rules': {
|
|
66
|
-
'prefer-rest-params': 0,
|
|
67
|
-
'no-redeclare': 0
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
]
|
|
71
|
-
|
|
72
|
-
};
|
package/.gitattributes
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# Automatically normalize line endings for all text-based files
|
|
3
|
-
# http://git-scm.com/docs/gitattributes#_end_of_line_conversion
|
|
4
|
-
|
|
5
|
-
# For the following file types, normalize line endings to LF on
|
|
6
|
-
# checkin and prevent conversion to CRLF when they are checked out
|
|
7
|
-
# (this is required in order to prevent newline related issues like,
|
|
8
|
-
# for example, after the build script is run)
|
|
9
|
-
*.html text eol=lf
|
|
10
|
-
*.css text eol=lf
|
|
11
|
-
*.less text eol=lf
|
|
12
|
-
*.scss text eol=lf
|
|
13
|
-
*.sss text eol=lf
|
|
14
|
-
*.sass text eol=lf
|
|
15
|
-
*.js text eol=lf
|
|
16
|
-
*.json text eol=lf
|
|
17
|
-
*.yml text eol=lf
|
|
18
|
-
*.yaml text eol=lf
|
|
19
|
-
*.md text eol=lf
|
|
20
|
-
*.sh text eol=lf
|
|
21
|
-
*.txt text eol=lf
|
|
22
|
-
*.xml text eol=lf
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
|
|
2
|
-
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
|
|
3
|
-
|
|
4
|
-
name: Node.js CI
|
|
5
|
-
|
|
6
|
-
on:
|
|
7
|
-
push:
|
|
8
|
-
branches: [ main ]
|
|
9
|
-
pull_request:
|
|
10
|
-
branches: [ main ]
|
|
11
|
-
|
|
12
|
-
jobs:
|
|
13
|
-
build:
|
|
14
|
-
|
|
15
|
-
runs-on: ubuntu-latest
|
|
16
|
-
|
|
17
|
-
strategy:
|
|
18
|
-
matrix:
|
|
19
|
-
node-version: [18.x, 20.x]
|
|
20
|
-
|
|
21
|
-
steps:
|
|
22
|
-
- uses: actions/checkout@v2
|
|
23
|
-
- name: Use Node.js ${{ matrix.node-version }}
|
|
24
|
-
uses: actions/setup-node@v1
|
|
25
|
-
with:
|
|
26
|
-
node-version: ${{ matrix.node-version }}
|
|
27
|
-
- run: npm ci
|
|
28
|
-
- run: npm run build --if-present
|
|
29
|
-
- run: npm test
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
test:
|
|
33
|
-
runs-on: ubuntu-latest
|
|
34
|
-
|
|
35
|
-
steps:
|
|
36
|
-
- uses: actions/checkout@master
|
|
37
|
-
- name: Use Node.js 18.x
|
|
38
|
-
uses: actions/setup-node@master
|
|
39
|
-
with:
|
|
40
|
-
node-version: 18.x
|
|
41
|
-
|
|
42
|
-
- name: npm install
|
|
43
|
-
run: npm install
|
|
44
|
-
|
|
45
|
-
- name: Test
|
|
46
|
-
run: npm run test:cov
|
|
47
|
-
|
|
48
|
-
- name: Coveralls Parallel
|
|
49
|
-
uses: coverallsapp/github-action@master
|
|
50
|
-
with:
|
|
51
|
-
github-token: ${{ secrets.github_token }}
|
|
52
|
-
parallel: true
|
|
53
|
-
|
|
54
|
-
finish:
|
|
55
|
-
needs: test
|
|
56
|
-
runs-on: ubuntu-latest
|
|
57
|
-
steps:
|
|
58
|
-
- name: Coveralls Finished
|
|
59
|
-
uses: coverallsapp/github-action@master
|
|
60
|
-
with:
|
|
61
|
-
github-token: ${{ secrets.github_token }}
|
|
62
|
-
parallel-finished: true
|
package/.husky/pre-commit
DELETED
package/jest.config.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
preset: 'ts-jest',
|
|
3
|
-
testEnvironment: 'node',
|
|
4
|
-
testMatch: ['**/test/**/index.ts'],
|
|
5
|
-
// testMatch: ['**/test/**/index.ts', '**/test/**/addition.js'],
|
|
6
|
-
transform : {
|
|
7
|
-
'\\./test/*.ts$': ['ts-jest', {
|
|
8
|
-
tsconfig : './tsconfig.jest.json'
|
|
9
|
-
}]
|
|
10
|
-
},
|
|
11
|
-
// workerThreads: true
|
|
12
|
-
};
|
package/src/errors.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
export const ErrorsNames = {
|
|
4
|
-
TYPE_MISMATCH: 'Type Mismatch',
|
|
5
|
-
ACCESS_DENIED: 'Value Access Denied',
|
|
6
|
-
MISSING_PROP: 'Attempt to Access to Undefined Prop',
|
|
7
|
-
RIP_FUNCTIONS: 'Functions are Restricted',
|
|
8
|
-
FORBIDDEN_RE: 'Re-Assirnment is Forbidden'
|
|
9
|
-
};
|
package/src/fields.ts
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
import { ErrorsNames } from './errors';
|
|
4
|
-
|
|
5
|
-
const SymbolInitialValue = Symbol('Initial Value');
|
|
6
|
-
|
|
7
|
-
interface FieldDefinition {
|
|
8
|
-
[SymbolInitialValue]: unknown
|
|
9
|
-
// get?: unknown
|
|
10
|
-
// set?: unknown
|
|
11
|
-
// configurable: boolean,
|
|
12
|
-
// enumerable: boolean,
|
|
13
|
-
// writable: boolean
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
// export const FieldConstructor = function (this: FieldDefinition, value: unknown) {
|
|
17
|
-
// this[SymbolInitialValue] = value;
|
|
18
|
-
// } as ObjectConstructor;
|
|
19
|
-
|
|
20
|
-
export class FieldConstructor implements FieldDefinition {
|
|
21
|
-
[SymbolInitialValue]: unknown;
|
|
22
|
-
public get get () {
|
|
23
|
-
const self = this;
|
|
24
|
-
return function (/* this: FieldDefinition */) {
|
|
25
|
-
return self[SymbolInitialValue];
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
public get set () {
|
|
29
|
-
return function () {
|
|
30
|
-
throw new TypeError(ErrorsNames.FORBIDDEN_RE);
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
constructor (value: unknown) {
|
|
34
|
-
this[SymbolInitialValue] = value;
|
|
35
|
-
}
|
|
36
|
-
static get SymbolInitialValue () {
|
|
37
|
-
return SymbolInitialValue;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// Object.assign(FieldConstructor.prototype, {
|
|
42
|
-
// configurable: false,
|
|
43
|
-
// enumerable: false,
|
|
44
|
-
// // writable: false
|
|
45
|
-
// })
|
|
46
|
-
|
|
47
|
-
// Object.defineProperty(FieldConstructor.prototype, 'get', {
|
|
48
|
-
// get() {
|
|
49
|
-
// return this[symbolValue];
|
|
50
|
-
// },
|
|
51
|
-
// // @ts-ignore
|
|
52
|
-
// set(value: unknown) {
|
|
53
|
-
// throw new Error('broken behaviour: assignment to getter');
|
|
54
|
-
// },
|
|
55
|
-
// configurable: false,
|
|
56
|
-
// enumerable: true,
|
|
57
|
-
// // writable: false
|
|
58
|
-
// });
|
|
59
|
-
|
|
60
|
-
// Object.defineProperty(FieldConstructor.prototype, 'set', {
|
|
61
|
-
// get() {
|
|
62
|
-
// return function (this: FieldDefinition, value: unknown) {
|
|
63
|
-
// this[symbolValue] = value;
|
|
64
|
-
// }
|
|
65
|
-
// },
|
|
66
|
-
// // @ts-ignore
|
|
67
|
-
// set(value: unknown) {
|
|
68
|
-
// throw new Error('broken behaviour: assignment to setter');
|
|
69
|
-
// },
|
|
70
|
-
// configurable: false,
|
|
71
|
-
// enumerable: true,
|
|
72
|
-
// // writable: false
|
|
73
|
-
// });
|
|
74
|
-
|
|
75
|
-
Object.freeze(FieldConstructor.prototype);
|
|
76
|
-
Object.seal(FieldConstructor.prototype);
|