@bemedev/decompose 0.9.0 → 1.1.0
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/lib/constants/strings.cjs +4 -0
- package/lib/constants/strings.cjs.map +1 -1
- package/lib/constants/strings.d.ts +2 -0
- package/lib/constants/strings.d.ts.map +1 -1
- package/lib/constants/strings.js +3 -1
- package/lib/constants/strings.js.map +1 -1
- package/lib/decompose.cjs +48 -17
- package/lib/decompose.cjs.map +1 -1
- package/lib/decompose.d.ts +3 -4
- package/lib/decompose.d.ts.map +1 -1
- package/lib/decompose.js +49 -18
- package/lib/decompose.js.map +1 -1
- package/lib/flat.cjs +40 -0
- package/lib/flat.cjs.map +1 -0
- package/lib/flat.d.ts +11 -0
- package/lib/flat.d.ts.map +1 -0
- package/lib/flat.js +38 -0
- package/lib/flat.js.map +1 -0
- package/lib/index.cjs +3 -0
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/recompose.cjs +22 -1
- package/lib/recompose.cjs.map +1 -1
- package/lib/recompose.d.ts +3 -2
- package/lib/recompose.d.ts.map +1 -1
- package/lib/recompose.js +22 -1
- package/lib/recompose.js.map +1 -1
- package/lib/types.types.cjs +16 -0
- package/lib/types.types.cjs.map +1 -0
- package/lib/types.types.d.ts +49 -20
- package/lib/types.types.d.ts.map +1 -1
- package/lib/types.types.js +13 -0
- package/lib/types.types.js.map +1 -0
- package/package.json +11 -11
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const DELIMITER = '-{/./:}-';
|
|
4
|
+
const LEFT_BRACKET = '-{LEFT_BRACKET}-';
|
|
5
|
+
const RIGHT_BRACKET = '-{RIGHT_BRACKET}-';
|
|
4
6
|
const SEPARATOR = '.';
|
|
5
7
|
|
|
6
8
|
exports.DELIMITER = DELIMITER;
|
|
9
|
+
exports.LEFT_BRACKET = LEFT_BRACKET;
|
|
10
|
+
exports.RIGHT_BRACKET = RIGHT_BRACKET;
|
|
7
11
|
exports.SEPARATOR = SEPARATOR;
|
|
8
12
|
//# sourceMappingURL=strings.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strings.cjs","sources":["../../src/constants/strings.ts"],"sourcesContent":["export const DELIMITER = '-{/./:}-' as const;\nexport const SEPARATOR = '.' as const;\n"],"names":[],"mappings":";;AAAO,MAAM,SAAS,GAAG;AAClB,MAAM,SAAS,GAAG
|
|
1
|
+
{"version":3,"file":"strings.cjs","sources":["../../src/constants/strings.ts"],"sourcesContent":["export const DELIMITER = '-{/./:}-' as const;\nexport const LEFT_BRACKET = '-{LEFT_BRACKET}-' as const;\nexport const RIGHT_BRACKET = '-{RIGHT_BRACKET}-' as const;\nexport const SEPARATOR = '.' as const;\n"],"names":[],"mappings":";;AAAO,MAAM,SAAS,GAAG;AAClB,MAAM,YAAY,GAAG;AACrB,MAAM,aAAa,GAAG;AACtB,MAAM,SAAS,GAAG;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../../src/constants/strings.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,EAAG,UAAmB,CAAC;AAC7C,eAAO,MAAM,SAAS,EAAG,GAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../../src/constants/strings.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,EAAG,UAAmB,CAAC;AAC7C,eAAO,MAAM,YAAY,EAAG,kBAA2B,CAAC;AACxD,eAAO,MAAM,aAAa,EAAG,mBAA4B,CAAC;AAC1D,eAAO,MAAM,SAAS,EAAG,GAAY,CAAC"}
|
package/lib/constants/strings.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
const DELIMITER = '-{/./:}-';
|
|
2
|
+
const LEFT_BRACKET = '-{LEFT_BRACKET}-';
|
|
3
|
+
const RIGHT_BRACKET = '-{RIGHT_BRACKET}-';
|
|
2
4
|
const SEPARATOR = '.';
|
|
3
5
|
|
|
4
|
-
export { DELIMITER, SEPARATOR };
|
|
6
|
+
export { DELIMITER, LEFT_BRACKET, RIGHT_BRACKET, SEPARATOR };
|
|
5
7
|
//# sourceMappingURL=strings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strings.js","sources":["../../src/constants/strings.ts"],"sourcesContent":["export const DELIMITER = '-{/./:}-' as const;\nexport const SEPARATOR = '.' as const;\n"],"names":[],"mappings":"AAAO,MAAM,SAAS,GAAG;AAClB,MAAM,SAAS,GAAG;;;;"}
|
|
1
|
+
{"version":3,"file":"strings.js","sources":["../../src/constants/strings.ts"],"sourcesContent":["export const DELIMITER = '-{/./:}-' as const;\nexport const LEFT_BRACKET = '-{LEFT_BRACKET}-' as const;\nexport const RIGHT_BRACKET = '-{RIGHT_BRACKET}-' as const;\nexport const SEPARATOR = '.' as const;\n"],"names":[],"mappings":"AAAO,MAAM,SAAS,GAAG;AAClB,MAAM,YAAY,GAAG;AACrB,MAAM,aAAa,GAAG;AACtB,MAAM,SAAS,GAAG;;;;"}
|
package/lib/decompose.cjs
CHANGED
|
@@ -2,36 +2,67 @@
|
|
|
2
2
|
|
|
3
3
|
var constants_strings = require('./constants/strings.cjs');
|
|
4
4
|
var helpers = require('./helpers.cjs');
|
|
5
|
+
var types_types = require('./types.types.cjs');
|
|
5
6
|
|
|
6
|
-
function ddecompose(
|
|
7
|
+
function ddecompose(arg, prev = '', options = types_types.DEFAULT_DECOMPOSE_OPTIONS) {
|
|
8
|
+
const { object } = {
|
|
9
|
+
...types_types.DEFAULT_DECOMPOSE_OPTIONS,
|
|
10
|
+
...options,
|
|
11
|
+
};
|
|
12
|
+
const canAddObjectKeys = object === 'both' || object === 'object';
|
|
13
|
+
const canAddKeys = object === 'both' || object === 'key';
|
|
7
14
|
const _prev = prev ? prev + constants_strings.DELIMITER : '';
|
|
8
15
|
const output = [];
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
16
|
+
const isArray = Array.isArray(arg);
|
|
17
|
+
if (isArray) {
|
|
18
|
+
if (canAddObjectKeys)
|
|
19
|
+
output.push([`${prev}`, arg]);
|
|
20
|
+
arg.forEach((item, index) => {
|
|
21
|
+
const values = ddecompose(item, `${_prev}${constants_strings.LEFT_BRACKET}${index}${constants_strings.RIGHT_BRACKET}`, options);
|
|
14
22
|
output.push(...values);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
|
|
23
|
+
});
|
|
24
|
+
return output;
|
|
25
|
+
}
|
|
26
|
+
const isPrimit = helpers.isPrimitive(arg);
|
|
27
|
+
if (isPrimit) {
|
|
28
|
+
const isFirst = !prev.includes(constants_strings.DELIMITER);
|
|
29
|
+
if (canAddKeys || isFirst)
|
|
30
|
+
output.push([`${prev}`, arg]);
|
|
31
|
+
return output;
|
|
32
|
+
}
|
|
33
|
+
if (canAddObjectKeys && prev !== '')
|
|
34
|
+
output.push([`${prev}`, arg]);
|
|
35
|
+
const entries1 = Object.entries(arg);
|
|
36
|
+
entries1.forEach(([key, value]) => {
|
|
37
|
+
const values = ddecompose(value, `${_prev}${key}`, options);
|
|
38
|
+
output.push(...values);
|
|
18
39
|
});
|
|
19
40
|
return output;
|
|
20
41
|
}
|
|
21
|
-
const _decompose = val => {
|
|
22
|
-
const entries1 = ddecompose(val, '');
|
|
42
|
+
const _decompose = (val, options) => {
|
|
43
|
+
const entries1 = ddecompose(val, '', options);
|
|
44
|
+
const { sep, start } = {
|
|
45
|
+
...types_types.DEFAULT_DECOMPOSE_OPTIONS,
|
|
46
|
+
...options,
|
|
47
|
+
};
|
|
23
48
|
if (entries1.length == 0)
|
|
24
49
|
return {};
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
50
|
+
const regexDel = new RegExp(constants_strings.DELIMITER, 'g');
|
|
51
|
+
const regexLeft = new RegExp(constants_strings.LEFT_BRACKET, 'g');
|
|
52
|
+
const regexRight = new RegExp(constants_strings.RIGHT_BRACKET, 'g');
|
|
53
|
+
const entries2 = entries1.map(([__key, value]) => {
|
|
54
|
+
const _key = __key
|
|
55
|
+
.replace(regexDel, sep)
|
|
56
|
+
.replace(regexLeft, `[`)
|
|
57
|
+
.replace(regexRight, `]`);
|
|
58
|
+
const key = start ? `${sep}${_key}` : _key;
|
|
59
|
+
return [key, value];
|
|
60
|
+
});
|
|
30
61
|
const output = Object.fromEntries(entries2);
|
|
31
62
|
return output;
|
|
32
63
|
};
|
|
33
64
|
/* v8 ignore next 1 */
|
|
34
|
-
const decompose = val => _decompose(val);
|
|
65
|
+
const decompose = (val, options) => _decompose(val, options);
|
|
35
66
|
decompose.low = _decompose;
|
|
36
67
|
decompose.strict = _decompose;
|
|
37
68
|
|
package/lib/decompose.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decompose.cjs","sources":["../src/decompose.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"decompose.cjs","sources":["../src/decompose.ts"],"sourcesContent":["import {\n DELIMITER,\n LEFT_BRACKET,\n RIGHT_BRACKET,\n} from './constants/strings';\nimport { isPrimitive } from './helpers';\nimport {\n DEFAULT_DECOMPOSE_OPTIONS,\n type Decompose,\n type DecomposeOptions,\n} from './types.types';\n\nfunction ddecompose(\n arg: any,\n prev = '',\n options: DecomposeOptions = DEFAULT_DECOMPOSE_OPTIONS,\n) {\n const { object } = {\n ...DEFAULT_DECOMPOSE_OPTIONS,\n ...options,\n };\n const canAddObjectKeys = object === 'both' || object === 'object';\n const canAddKeys = object === 'both' || object === 'key';\n\n const _prev = prev ? prev + DELIMITER : '';\n const output: [string, any][] = [];\n\n const isArray = Array.isArray(arg);\n if (isArray) {\n if (canAddObjectKeys) output.push([`${prev}`, arg]);\n\n arg.forEach((item, index) => {\n const values = ddecompose(\n item,\n `${_prev}${LEFT_BRACKET}${index}${RIGHT_BRACKET}`,\n options,\n );\n output.push(...values);\n });\n return output;\n }\n\n const isPrimit = isPrimitive(arg);\n if (isPrimit) {\n const isFirst = !prev.includes(DELIMITER);\n if (canAddKeys || isFirst) output.push([`${prev}`, arg]);\n return output;\n }\n\n if (canAddObjectKeys && prev !== '') output.push([`${prev}`, arg]);\n\n const entries1 = Object.entries(arg);\n entries1.forEach(([key, value]) => {\n const values = ddecompose(value, `${_prev}${key}`, options);\n output.push(...values);\n });\n\n return output;\n}\n\ntype Decompose_F = <T>(val: T, options?: DecomposeOptions) => Decompose<T>;\ntype _Decompose_F = (val: any, options?: DecomposeOptions) => any;\n\nexport type Decomposer = Decompose_F & {\n strict: Decompose_F;\n low: _Decompose_F;\n};\n\nconst _decompose: _Decompose_F = (val, options) => {\n const entries1 = ddecompose(val, '', options);\n\n const { sep, start } = {\n ...DEFAULT_DECOMPOSE_OPTIONS,\n ...options,\n };\n if (entries1.length == 0) return {};\n\n const regexDel = new RegExp(DELIMITER, 'g');\n const regexLeft = new RegExp(LEFT_BRACKET, 'g');\n const regexRight = new RegExp(RIGHT_BRACKET, 'g');\n const entries2 = entries1.map(([__key, value]) => {\n const _key = __key\n .replace(regexDel, sep)\n .replace(regexLeft, `[`)\n .replace(regexRight, `]`);\n const key = start ? `${sep}${_key}` : _key;\n return [key, value];\n });\n\n const output = Object.fromEntries(entries2);\n return output;\n};\n\n/* v8 ignore next 1 */\nexport const decompose: Decomposer = (val, options) =>\n _decompose(val, options);\ndecompose.low = _decompose;\ndecompose.strict = _decompose;\n"],"names":["DEFAULT_DECOMPOSE_OPTIONS","DELIMITER","LEFT_BRACKET","RIGHT_BRACKET","isPrimitive"],"mappings":"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"}
|
package/lib/decompose.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
3
|
-
type
|
|
4
|
-
type _Decompose_F = (val: any) => any;
|
|
1
|
+
import { type Decompose, type DecomposeOptions } from './types.types';
|
|
2
|
+
type Decompose_F = <T>(val: T, options?: DecomposeOptions) => Decompose<T>;
|
|
3
|
+
type _Decompose_F = (val: any, options?: DecomposeOptions) => any;
|
|
5
4
|
export type Decomposer = Decompose_F & {
|
|
6
5
|
strict: Decompose_F;
|
|
7
6
|
low: _Decompose_F;
|
package/lib/decompose.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decompose.d.ts","sourceRoot":"","sources":["../src/decompose.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"decompose.d.ts","sourceRoot":"","sources":["../src/decompose.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AAkDvB,KAAK,WAAW,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3E,KAAK,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,gBAAgB,KAAK,GAAG,CAAC;AAElE,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG;IACrC,MAAM,EAAE,WAAW,CAAC;IACpB,GAAG,EAAE,YAAY,CAAC;CACnB,CAAC;AA4BF,eAAO,MAAM,SAAS,EAAE,UACE,CAAC"}
|
package/lib/decompose.js
CHANGED
|
@@ -1,35 +1,66 @@
|
|
|
1
|
-
import { DELIMITER } from './constants/strings.js';
|
|
1
|
+
import { LEFT_BRACKET, RIGHT_BRACKET, DELIMITER } from './constants/strings.js';
|
|
2
2
|
import { isPrimitive } from './helpers.js';
|
|
3
|
+
import { DEFAULT_DECOMPOSE_OPTIONS } from './types.types.js';
|
|
3
4
|
|
|
4
|
-
function ddecompose(
|
|
5
|
+
function ddecompose(arg, prev = '', options = DEFAULT_DECOMPOSE_OPTIONS) {
|
|
6
|
+
const { object } = {
|
|
7
|
+
...DEFAULT_DECOMPOSE_OPTIONS,
|
|
8
|
+
...options,
|
|
9
|
+
};
|
|
10
|
+
const canAddObjectKeys = object === 'both' || object === 'object';
|
|
11
|
+
const canAddKeys = object === 'both' || object === 'key';
|
|
5
12
|
const _prev = prev ? prev + DELIMITER : '';
|
|
6
13
|
const output = [];
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
14
|
+
const isArray = Array.isArray(arg);
|
|
15
|
+
if (isArray) {
|
|
16
|
+
if (canAddObjectKeys)
|
|
17
|
+
output.push([`${prev}`, arg]);
|
|
18
|
+
arg.forEach((item, index) => {
|
|
19
|
+
const values = ddecompose(item, `${_prev}${LEFT_BRACKET}${index}${RIGHT_BRACKET}`, options);
|
|
12
20
|
output.push(...values);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
|
|
21
|
+
});
|
|
22
|
+
return output;
|
|
23
|
+
}
|
|
24
|
+
const isPrimit = isPrimitive(arg);
|
|
25
|
+
if (isPrimit) {
|
|
26
|
+
const isFirst = !prev.includes(DELIMITER);
|
|
27
|
+
if (canAddKeys || isFirst)
|
|
28
|
+
output.push([`${prev}`, arg]);
|
|
29
|
+
return output;
|
|
30
|
+
}
|
|
31
|
+
if (canAddObjectKeys && prev !== '')
|
|
32
|
+
output.push([`${prev}`, arg]);
|
|
33
|
+
const entries1 = Object.entries(arg);
|
|
34
|
+
entries1.forEach(([key, value]) => {
|
|
35
|
+
const values = ddecompose(value, `${_prev}${key}`, options);
|
|
36
|
+
output.push(...values);
|
|
16
37
|
});
|
|
17
38
|
return output;
|
|
18
39
|
}
|
|
19
|
-
const _decompose = val => {
|
|
20
|
-
const entries1 = ddecompose(val, '');
|
|
40
|
+
const _decompose = (val, options) => {
|
|
41
|
+
const entries1 = ddecompose(val, '', options);
|
|
42
|
+
const { sep, start } = {
|
|
43
|
+
...DEFAULT_DECOMPOSE_OPTIONS,
|
|
44
|
+
...options,
|
|
45
|
+
};
|
|
21
46
|
if (entries1.length == 0)
|
|
22
47
|
return {};
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
48
|
+
const regexDel = new RegExp(DELIMITER, 'g');
|
|
49
|
+
const regexLeft = new RegExp(LEFT_BRACKET, 'g');
|
|
50
|
+
const regexRight = new RegExp(RIGHT_BRACKET, 'g');
|
|
51
|
+
const entries2 = entries1.map(([__key, value]) => {
|
|
52
|
+
const _key = __key
|
|
53
|
+
.replace(regexDel, sep)
|
|
54
|
+
.replace(regexLeft, `[`)
|
|
55
|
+
.replace(regexRight, `]`);
|
|
56
|
+
const key = start ? `${sep}${_key}` : _key;
|
|
57
|
+
return [key, value];
|
|
58
|
+
});
|
|
28
59
|
const output = Object.fromEntries(entries2);
|
|
29
60
|
return output;
|
|
30
61
|
};
|
|
31
62
|
/* v8 ignore next 1 */
|
|
32
|
-
const decompose = val => _decompose(val);
|
|
63
|
+
const decompose = (val, options) => _decompose(val, options);
|
|
33
64
|
decompose.low = _decompose;
|
|
34
65
|
decompose.strict = _decompose;
|
|
35
66
|
|
package/lib/decompose.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decompose.js","sources":["../src/decompose.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"decompose.js","sources":["../src/decompose.ts"],"sourcesContent":["import {\n DELIMITER,\n LEFT_BRACKET,\n RIGHT_BRACKET,\n} from './constants/strings';\nimport { isPrimitive } from './helpers';\nimport {\n DEFAULT_DECOMPOSE_OPTIONS,\n type Decompose,\n type DecomposeOptions,\n} from './types.types';\n\nfunction ddecompose(\n arg: any,\n prev = '',\n options: DecomposeOptions = DEFAULT_DECOMPOSE_OPTIONS,\n) {\n const { object } = {\n ...DEFAULT_DECOMPOSE_OPTIONS,\n ...options,\n };\n const canAddObjectKeys = object === 'both' || object === 'object';\n const canAddKeys = object === 'both' || object === 'key';\n\n const _prev = prev ? prev + DELIMITER : '';\n const output: [string, any][] = [];\n\n const isArray = Array.isArray(arg);\n if (isArray) {\n if (canAddObjectKeys) output.push([`${prev}`, arg]);\n\n arg.forEach((item, index) => {\n const values = ddecompose(\n item,\n `${_prev}${LEFT_BRACKET}${index}${RIGHT_BRACKET}`,\n options,\n );\n output.push(...values);\n });\n return output;\n }\n\n const isPrimit = isPrimitive(arg);\n if (isPrimit) {\n const isFirst = !prev.includes(DELIMITER);\n if (canAddKeys || isFirst) output.push([`${prev}`, arg]);\n return output;\n }\n\n if (canAddObjectKeys && prev !== '') output.push([`${prev}`, arg]);\n\n const entries1 = Object.entries(arg);\n entries1.forEach(([key, value]) => {\n const values = ddecompose(value, `${_prev}${key}`, options);\n output.push(...values);\n });\n\n return output;\n}\n\ntype Decompose_F = <T>(val: T, options?: DecomposeOptions) => Decompose<T>;\ntype _Decompose_F = (val: any, options?: DecomposeOptions) => any;\n\nexport type Decomposer = Decompose_F & {\n strict: Decompose_F;\n low: _Decompose_F;\n};\n\nconst _decompose: _Decompose_F = (val, options) => {\n const entries1 = ddecompose(val, '', options);\n\n const { sep, start } = {\n ...DEFAULT_DECOMPOSE_OPTIONS,\n ...options,\n };\n if (entries1.length == 0) return {};\n\n const regexDel = new RegExp(DELIMITER, 'g');\n const regexLeft = new RegExp(LEFT_BRACKET, 'g');\n const regexRight = new RegExp(RIGHT_BRACKET, 'g');\n const entries2 = entries1.map(([__key, value]) => {\n const _key = __key\n .replace(regexDel, sep)\n .replace(regexLeft, `[`)\n .replace(regexRight, `]`);\n const key = start ? `${sep}${_key}` : _key;\n return [key, value];\n });\n\n const output = Object.fromEntries(entries2);\n return output;\n};\n\n/* v8 ignore next 1 */\nexport const decompose: Decomposer = (val, options) =>\n _decompose(val, options);\ndecompose.low = _decompose;\ndecompose.strict = _decompose;\n"],"names":[],"mappings":"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"}
|
package/lib/flat.cjs
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var decompose = require('./decompose.cjs');
|
|
4
|
+
var types_types = require('./types.types.cjs');
|
|
5
|
+
|
|
6
|
+
const _flat = (val, omitKey, options = types_types.DEFAULT_FLAT_OPTIONS) => {
|
|
7
|
+
const { sep, children } = {
|
|
8
|
+
...types_types.DEFAULT_FLAT_OPTIONS,
|
|
9
|
+
...options,
|
|
10
|
+
};
|
|
11
|
+
const first = decompose.decompose(val, {
|
|
12
|
+
object: 'object',
|
|
13
|
+
sep,
|
|
14
|
+
start: true,
|
|
15
|
+
});
|
|
16
|
+
const output = {};
|
|
17
|
+
const entries = Object.entries(first);
|
|
18
|
+
if (entries.length === 0)
|
|
19
|
+
return output;
|
|
20
|
+
entries
|
|
21
|
+
.filter(([k]) => {
|
|
22
|
+
const splits = k.split(`${sep}${omitKey}${sep}`);
|
|
23
|
+
const last = splits[splits.length - 1];
|
|
24
|
+
return !last.includes(omitKey);
|
|
25
|
+
})
|
|
26
|
+
.forEach(([k, v]) => {
|
|
27
|
+
const _value = structuredClone(v);
|
|
28
|
+
if (!children)
|
|
29
|
+
delete _value[omitKey];
|
|
30
|
+
const key = k.replace(new RegExp(`${omitKey}${sep}`, 'g'), '');
|
|
31
|
+
output[key] = _value;
|
|
32
|
+
});
|
|
33
|
+
return output;
|
|
34
|
+
};
|
|
35
|
+
const flat = (val, key, options) => _flat(val, key, options);
|
|
36
|
+
flat.low = _flat;
|
|
37
|
+
flat.strict = _flat;
|
|
38
|
+
|
|
39
|
+
exports.flat = flat;
|
|
40
|
+
//# sourceMappingURL=flat.cjs.map
|
package/lib/flat.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flat.cjs","sources":["../src/flat.ts"],"sourcesContent":["import type { types } from '@bemedev/types';\nimport { decompose } from './decompose';\nimport {\n DEFAULT_FLAT_OPTIONS,\n type FlatByKey,\n type FlatOptions,\n} from './types.types';\n\ntype Flat_F = <\n T extends types.Ru,\n omit extends types.PickKeysBy<T, object> & string,\n>(\n val: T,\n omitKey: omit,\n options?: FlatOptions,\n) => FlatByKey<T, omit, FlatOptions>;\n\ntype _Flat_F = (val: any, omitKey: string, options?: FlatOptions) => any;\n\nexport type Flat = Flat_F & {\n strict: Flat_F;\n low: _Flat_F;\n};\n\nconst _flat: _Flat_F = (val, omitKey, options = DEFAULT_FLAT_OPTIONS) => {\n const { sep, children } = {\n ...DEFAULT_FLAT_OPTIONS,\n ...options,\n };\n\n const first = decompose(val, {\n object: 'object',\n sep,\n start: true,\n });\n\n const output: any = {};\n\n const entries: [string, any][] = Object.entries(first);\n if (entries.length === 0) return output;\n\n entries\n .filter(([k]) => {\n const splits = k.split(`${sep}${omitKey}${sep}`);\n const last = splits[splits.length - 1];\n\n return !last.includes(omitKey);\n })\n .forEach(([k, v]) => {\n const _value = structuredClone(v);\n if (!children) delete _value[omitKey];\n const key = k.replace(new RegExp(`${omitKey}${sep}`, 'g'), '');\n\n output[key] = _value;\n });\n\n return output;\n};\n\nexport const flat: Flat = (val, key, options) => _flat(val, key, options);\nflat.low = _flat;\nflat.strict = _flat;\n"],"names":["DEFAULT_FLAT_OPTIONS","decompose"],"mappings":";;;;;AAwBA,MAAM,KAAK,GAAY,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAGA,gCAAoB,KAAI;AACtE,IAAA,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AACxB,QAAA,GAAGA,gCAAoB;AACvB,QAAA,GAAG,OAAO;KACX;AAED,IAAA,MAAM,KAAK,GAAGC,mBAAS,CAAC,GAAG,EAAE;AAC3B,QAAA,MAAM,EAAE,QAAQ;QAChB,GAAG;AACH,QAAA,KAAK,EAAE,IAAI;AACZ,KAAA,CAAC;IAEF,MAAM,MAAM,GAAQ,EAAE;IAEtB,MAAM,OAAO,GAAoB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACtD,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,MAAM;IAEvC;AACG,SAAA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAI;AACd,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA,EAAG,GAAG,CAAA,EAAG,OAAO,CAAA,EAAG,GAAG,CAAA,CAAE,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAEtC,QAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAChC,IAAA,CAAC;SACA,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAI;AAClB,QAAA,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,MAAM,CAAC,OAAO,CAAC;QACrC,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAA,EAAG,OAAO,CAAA,EAAG,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AAE9D,QAAA,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM;AACtB,IAAA,CAAC,CAAC;AAEJ,IAAA,OAAO,MAAM;AACf,CAAC;MAEY,IAAI,GAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO;AACxE,IAAI,CAAC,GAAG,GAAG,KAAK;AAChB,IAAI,CAAC,MAAM,GAAG,KAAK;;;;"}
|
package/lib/flat.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { types } from '@bemedev/types';
|
|
2
|
+
import { type FlatByKey, type FlatOptions } from './types.types';
|
|
3
|
+
type Flat_F = <T extends types.Ru, omit extends types.PickKeysBy<T, object> & string>(val: T, omitKey: omit, options?: FlatOptions) => FlatByKey<T, omit, FlatOptions>;
|
|
4
|
+
type _Flat_F = (val: any, omitKey: string, options?: FlatOptions) => any;
|
|
5
|
+
export type Flat = Flat_F & {
|
|
6
|
+
strict: Flat_F;
|
|
7
|
+
low: _Flat_F;
|
|
8
|
+
};
|
|
9
|
+
export declare const flat: Flat;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=flat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flat.d.ts","sourceRoot":"","sources":["../src/flat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,eAAe,CAAC;AAEvB,KAAK,MAAM,GAAG,CACZ,CAAC,SAAS,KAAK,CAAC,EAAE,EAClB,IAAI,SAAS,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM,EAEjD,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,IAAI,EACb,OAAO,CAAC,EAAE,WAAW,KAClB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AAErC,KAAK,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,GAAG,CAAC;AAEzE,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;AAqCF,eAAO,MAAM,IAAI,EAAE,IAAsD,CAAC"}
|
package/lib/flat.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { decompose } from './decompose.js';
|
|
2
|
+
import { DEFAULT_FLAT_OPTIONS } from './types.types.js';
|
|
3
|
+
|
|
4
|
+
const _flat = (val, omitKey, options = DEFAULT_FLAT_OPTIONS) => {
|
|
5
|
+
const { sep, children } = {
|
|
6
|
+
...DEFAULT_FLAT_OPTIONS,
|
|
7
|
+
...options,
|
|
8
|
+
};
|
|
9
|
+
const first = decompose(val, {
|
|
10
|
+
object: 'object',
|
|
11
|
+
sep,
|
|
12
|
+
start: true,
|
|
13
|
+
});
|
|
14
|
+
const output = {};
|
|
15
|
+
const entries = Object.entries(first);
|
|
16
|
+
if (entries.length === 0)
|
|
17
|
+
return output;
|
|
18
|
+
entries
|
|
19
|
+
.filter(([k]) => {
|
|
20
|
+
const splits = k.split(`${sep}${omitKey}${sep}`);
|
|
21
|
+
const last = splits[splits.length - 1];
|
|
22
|
+
return !last.includes(omitKey);
|
|
23
|
+
})
|
|
24
|
+
.forEach(([k, v]) => {
|
|
25
|
+
const _value = structuredClone(v);
|
|
26
|
+
if (!children)
|
|
27
|
+
delete _value[omitKey];
|
|
28
|
+
const key = k.replace(new RegExp(`${omitKey}${sep}`, 'g'), '');
|
|
29
|
+
output[key] = _value;
|
|
30
|
+
});
|
|
31
|
+
return output;
|
|
32
|
+
};
|
|
33
|
+
const flat = (val, key, options) => _flat(val, key, options);
|
|
34
|
+
flat.low = _flat;
|
|
35
|
+
flat.strict = _flat;
|
|
36
|
+
|
|
37
|
+
export { flat };
|
|
38
|
+
//# sourceMappingURL=flat.js.map
|
package/lib/flat.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flat.js","sources":["../src/flat.ts"],"sourcesContent":["import type { types } from '@bemedev/types';\nimport { decompose } from './decompose';\nimport {\n DEFAULT_FLAT_OPTIONS,\n type FlatByKey,\n type FlatOptions,\n} from './types.types';\n\ntype Flat_F = <\n T extends types.Ru,\n omit extends types.PickKeysBy<T, object> & string,\n>(\n val: T,\n omitKey: omit,\n options?: FlatOptions,\n) => FlatByKey<T, omit, FlatOptions>;\n\ntype _Flat_F = (val: any, omitKey: string, options?: FlatOptions) => any;\n\nexport type Flat = Flat_F & {\n strict: Flat_F;\n low: _Flat_F;\n};\n\nconst _flat: _Flat_F = (val, omitKey, options = DEFAULT_FLAT_OPTIONS) => {\n const { sep, children } = {\n ...DEFAULT_FLAT_OPTIONS,\n ...options,\n };\n\n const first = decompose(val, {\n object: 'object',\n sep,\n start: true,\n });\n\n const output: any = {};\n\n const entries: [string, any][] = Object.entries(first);\n if (entries.length === 0) return output;\n\n entries\n .filter(([k]) => {\n const splits = k.split(`${sep}${omitKey}${sep}`);\n const last = splits[splits.length - 1];\n\n return !last.includes(omitKey);\n })\n .forEach(([k, v]) => {\n const _value = structuredClone(v);\n if (!children) delete _value[omitKey];\n const key = k.replace(new RegExp(`${omitKey}${sep}`, 'g'), '');\n\n output[key] = _value;\n });\n\n return output;\n};\n\nexport const flat: Flat = (val, key, options) => _flat(val, key, options);\nflat.low = _flat;\nflat.strict = _flat;\n"],"names":[],"mappings":";;;AAwBA,MAAM,KAAK,GAAY,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAG,oBAAoB,KAAI;AACtE,IAAA,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AACxB,QAAA,GAAG,oBAAoB;AACvB,QAAA,GAAG,OAAO;KACX;AAED,IAAA,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE;AAC3B,QAAA,MAAM,EAAE,QAAQ;QAChB,GAAG;AACH,QAAA,KAAK,EAAE,IAAI;AACZ,KAAA,CAAC;IAEF,MAAM,MAAM,GAAQ,EAAE;IAEtB,MAAM,OAAO,GAAoB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACtD,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,MAAM;IAEvC;AACG,SAAA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAI;AACd,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA,EAAG,GAAG,CAAA,EAAG,OAAO,CAAA,EAAG,GAAG,CAAA,CAAE,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAEtC,QAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAChC,IAAA,CAAC;SACA,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAI;AAClB,QAAA,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,MAAM,CAAC,OAAO,CAAC;QACrC,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAA,EAAG,OAAO,CAAA,EAAG,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AAE9D,QAAA,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM;AACtB,IAAA,CAAC,CAAC;AAEJ,IAAA,OAAO,MAAM;AACf,CAAC;MAEY,IAAI,GAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO;AACxE,IAAI,CAAC,GAAG,GAAG,KAAK;AAChB,IAAI,CAAC,MAAM,GAAG,KAAK;;;;"}
|
package/lib/index.cjs
CHANGED
|
@@ -5,6 +5,7 @@ var decomposeKeys = require('./decomposeKeys.cjs');
|
|
|
5
5
|
var decomposeSV = require('./decomposeSV.cjs');
|
|
6
6
|
var recompose = require('./recompose.cjs');
|
|
7
7
|
var sortMap = require('./sortMap.cjs');
|
|
8
|
+
var types_types = require('./types.types.cjs');
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
|
|
@@ -14,4 +15,6 @@ exports.decomposeSV = decomposeSV.decomposeSV;
|
|
|
14
15
|
exports.recompose = recompose.recompose;
|
|
15
16
|
exports.recomposeObjectUrl = recompose.recomposeObjectUrl;
|
|
16
17
|
exports.sortMap = sortMap.sortMap;
|
|
18
|
+
exports.DEFAULT_DECOMPOSE_OPTIONS = types_types.DEFAULT_DECOMPOSE_OPTIONS;
|
|
19
|
+
exports.DEFAULT_FLAT_OPTIONS = types_types.DEFAULT_FLAT_OPTIONS;
|
|
17
20
|
//# sourceMappingURL=index.cjs.map
|
package/lib/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
|
package/lib/index.js
CHANGED
|
@@ -3,4 +3,5 @@ export { decomposeKeys } from './decomposeKeys.js';
|
|
|
3
3
|
export { decomposeSV } from './decomposeSV.js';
|
|
4
4
|
export { recompose, recomposeObjectUrl } from './recompose.js';
|
|
5
5
|
export { sortMap } from './sortMap.js';
|
|
6
|
+
export { DEFAULT_DECOMPOSE_OPTIONS, DEFAULT_FLAT_OPTIONS } from './types.types.js';
|
|
6
7
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|
package/lib/recompose.cjs
CHANGED
|
@@ -20,11 +20,32 @@ function recomposeObjectUrl(shape, value) {
|
|
|
20
20
|
}
|
|
21
21
|
const _recompose = shape => {
|
|
22
22
|
const entries = Object.entries(shape);
|
|
23
|
+
if (entries.length === 0)
|
|
24
|
+
return {};
|
|
23
25
|
const arr = [];
|
|
24
26
|
entries.forEach(([key, value]) => {
|
|
25
27
|
arr.push(recomposeObjectUrl(key, value));
|
|
26
28
|
});
|
|
27
|
-
return tsDeepmerge.merge(...arr);
|
|
29
|
+
return _recompose2(tsDeepmerge.merge(...arr));
|
|
30
|
+
};
|
|
31
|
+
const _recompose2 = shape => {
|
|
32
|
+
const mustReturn = typeof shape !== 'object' || shape === null || Array.isArray(shape);
|
|
33
|
+
if (mustReturn)
|
|
34
|
+
return shape;
|
|
35
|
+
const entries = Object.entries(shape).sort(([a], [b]) => a.localeCompare(b));
|
|
36
|
+
const isArray = entries.every(([key]) => key.startsWith('[') && key.endsWith(']'));
|
|
37
|
+
if (isArray) {
|
|
38
|
+
const arr = [];
|
|
39
|
+
entries.forEach(([key, value]) => {
|
|
40
|
+
const index = parseInt(key.slice(1, -1), 10);
|
|
41
|
+
arr[index] = _recompose2(value);
|
|
42
|
+
});
|
|
43
|
+
return arr;
|
|
44
|
+
}
|
|
45
|
+
return entries.reduce((acc, [key, value]) => {
|
|
46
|
+
acc[key] = _recompose2(value);
|
|
47
|
+
return acc;
|
|
48
|
+
}, {});
|
|
28
49
|
};
|
|
29
50
|
const recompose = shape => _recompose(shape);
|
|
30
51
|
recompose.low = _recompose;
|
package/lib/recompose.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recompose.cjs","sources":["../src/recompose.ts"],"sourcesContent":["import { merge } from 'ts-deepmerge';\nimport { SEPARATOR } from './constants/strings';\nimport type { Recompose, Ru } from './types.types';\n\nexport function recomposeObjectUrl<T>(shape: string, value: T) {\n const obj: Ru = {};\n if (shape.length <= 0) return obj;\n\n const keys = shape.split(SEPARATOR);\n if (keys.length === 1) {\n const key = keys.shift();\n obj[key!] = value;\n } else {\n const key = keys.shift();\n obj[key!] = recomposeObjectUrl(keys.join(SEPARATOR), value);\n }\n\n return obj;\n}\n\n/**\n * Recompose a flatten object \n * @example\n * \n * { 'data.age': 10, 'human.login': 'login' }\n * will become\n * {\n data: {\n age: 10,\n },\n human: {\n login: 'login',\n },\n }\n * @remark \n * The generated typescript type takes too much ressources\n\n * @todo\n Add type to the return\n */\ntype Recompose_F = <T extends Ru>(shape: T) => Recompose<T>;\ntype _Recompose_F = (shape: any) => any;\n\nexport type Recomposer =
|
|
1
|
+
{"version":3,"file":"recompose.cjs","sources":["../src/recompose.ts"],"sourcesContent":["import { merge } from 'ts-deepmerge';\nimport { SEPARATOR } from './constants/strings';\nimport type { Recompose, Ru } from './types.types';\n\nexport function recomposeObjectUrl<T>(shape: string, value: T) {\n const obj: Ru = {};\n if (shape.length <= 0) return obj;\n\n const keys = shape.split(SEPARATOR);\n if (keys.length === 1) {\n const key = keys.shift();\n obj[key!] = value;\n } else {\n const key = keys.shift();\n obj[key!] = recomposeObjectUrl(keys.join(SEPARATOR), value);\n }\n\n return obj;\n}\n\n/**\n * Recompose a flatten object \n * @example\n * \n * { 'data.age': 10, 'human.login': 'login' }\n * will become\n * {\n data: {\n age: 10,\n },\n human: {\n login: 'login',\n },\n }\n * @remark \n * The generated typescript type takes too much ressources\n\n * @todo\n Add type to the return\n */\ntype Recompose_F = <const T extends Ru>(shape: T) => Recompose<T>;\ntype _Recompose_F = (shape: any) => any;\ntype _Recompose2_F = <T extends Ru>(shape: T) => Recompose<T>;\n\nexport type Recomposer = _Recompose2_F & {\n strict: Recompose_F;\n low: _Recompose_F;\n};\n\nconst _recompose: _Recompose_F = shape => {\n const entries = Object.entries(shape);\n if (entries.length === 0) return {};\n const arr: any[] = [];\n entries.forEach(([key, value]) => {\n arr.push(recomposeObjectUrl(key, value));\n });\n return _recompose2(merge(...arr));\n};\n\nconst _recompose2: _Recompose_F = shape => {\n const mustReturn =\n typeof shape !== 'object' || shape === null || Array.isArray(shape);\n if (mustReturn) return shape;\n\n const entries = Object.entries(shape).sort(([a], [b]) =>\n a.localeCompare(b),\n );\n\n const isArray = entries.every(\n ([key]) => key.startsWith('[') && key.endsWith(']'),\n );\n if (isArray) {\n const arr: any[] = [];\n entries.forEach(([key, value]) => {\n const index = parseInt(key.slice(1, -1), 10);\n arr[index] = _recompose2(value);\n });\n return arr;\n }\n\n return entries.reduce((acc, [key, value]) => {\n acc[key] = _recompose2(value);\n return acc;\n }, {} as any);\n};\n\nexport const recompose: Recomposer = shape => _recompose(shape);\nrecompose.low = _recompose;\nrecompose.strict = _recompose;\n"],"names":["SEPARATOR","merge"],"mappings":";;;;;AAIM,SAAU,kBAAkB,CAAI,KAAa,EAAE,KAAQ,EAAA;IAC3D,MAAM,GAAG,GAAO,EAAE;AAClB,IAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;AAAE,QAAA,OAAO,GAAG;IAEjC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAACA,2BAAS,CAAC;AACnC,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,GAAG,CAAC,GAAI,CAAC,GAAG,KAAK;IACnB;SAAO;AACL,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,GAAG,CAAC,GAAI,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAACA,2BAAS,CAAC,EAAE,KAAK,CAAC;IAC7D;AAEA,IAAA,OAAO,GAAG;AACZ;AA+BA,MAAM,UAAU,GAAiB,KAAK,IAAG;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACrC,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,EAAE;IACnC,MAAM,GAAG,GAAU,EAAE;IACrB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;QAC/B,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC1C,IAAA,CAAC,CAAC;IACF,OAAO,WAAW,CAACC,iBAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,WAAW,GAAiB,KAAK,IAAG;AACxC,IAAA,MAAM,UAAU,GACd,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACrE,IAAA,IAAI,UAAU;AAAE,QAAA,OAAO,KAAK;AAE5B,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAClD,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CACnB;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAC3B,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CACpD;IACD,IAAI,OAAO,EAAE;QACX,MAAM,GAAG,GAAU,EAAE;QACrB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AAC/B,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,GAAG,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;AACjC,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;QAC1C,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;AAC7B,QAAA,OAAO,GAAG;IACZ,CAAC,EAAE,EAAS,CAAC;AACf,CAAC;AAEM,MAAM,SAAS,GAAe,KAAK,IAAI,UAAU,CAAC,KAAK;AAC9D,SAAS,CAAC,GAAG,GAAG,UAAU;AAC1B,SAAS,CAAC,MAAM,GAAG,UAAU;;;;;"}
|
package/lib/recompose.d.ts
CHANGED
|
@@ -20,9 +20,10 @@ export declare function recomposeObjectUrl<T>(shape: string, value: T): Ru;
|
|
|
20
20
|
* @todo
|
|
21
21
|
Add type to the return
|
|
22
22
|
*/
|
|
23
|
-
type Recompose_F = <T extends Ru>(shape: T) => Recompose<T>;
|
|
23
|
+
type Recompose_F = <const T extends Ru>(shape: T) => Recompose<T>;
|
|
24
24
|
type _Recompose_F = (shape: any) => any;
|
|
25
|
-
|
|
25
|
+
type _Recompose2_F = <T extends Ru>(shape: T) => Recompose<T>;
|
|
26
|
+
export type Recomposer = _Recompose2_F & {
|
|
26
27
|
strict: Recompose_F;
|
|
27
28
|
low: _Recompose_F;
|
|
28
29
|
};
|
package/lib/recompose.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recompose.d.ts","sourceRoot":"","sources":["../src/recompose.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAEnD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAc5D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,KAAK,WAAW,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"recompose.d.ts","sourceRoot":"","sources":["../src/recompose.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAEnD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAc5D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,KAAK,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC;AAClE,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;AACxC,KAAK,aAAa,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC;AAE9D,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG;IACvC,MAAM,EAAE,WAAW,CAAC;IACpB,GAAG,EAAE,YAAY,CAAC;CACnB,CAAC;AAuCF,eAAO,MAAM,SAAS,EAAE,UAAuC,CAAC"}
|
package/lib/recompose.js
CHANGED
|
@@ -18,11 +18,32 @@ function recomposeObjectUrl(shape, value) {
|
|
|
18
18
|
}
|
|
19
19
|
const _recompose = shape => {
|
|
20
20
|
const entries = Object.entries(shape);
|
|
21
|
+
if (entries.length === 0)
|
|
22
|
+
return {};
|
|
21
23
|
const arr = [];
|
|
22
24
|
entries.forEach(([key, value]) => {
|
|
23
25
|
arr.push(recomposeObjectUrl(key, value));
|
|
24
26
|
});
|
|
25
|
-
return merge(...arr);
|
|
27
|
+
return _recompose2(merge(...arr));
|
|
28
|
+
};
|
|
29
|
+
const _recompose2 = shape => {
|
|
30
|
+
const mustReturn = typeof shape !== 'object' || shape === null || Array.isArray(shape);
|
|
31
|
+
if (mustReturn)
|
|
32
|
+
return shape;
|
|
33
|
+
const entries = Object.entries(shape).sort(([a], [b]) => a.localeCompare(b));
|
|
34
|
+
const isArray = entries.every(([key]) => key.startsWith('[') && key.endsWith(']'));
|
|
35
|
+
if (isArray) {
|
|
36
|
+
const arr = [];
|
|
37
|
+
entries.forEach(([key, value]) => {
|
|
38
|
+
const index = parseInt(key.slice(1, -1), 10);
|
|
39
|
+
arr[index] = _recompose2(value);
|
|
40
|
+
});
|
|
41
|
+
return arr;
|
|
42
|
+
}
|
|
43
|
+
return entries.reduce((acc, [key, value]) => {
|
|
44
|
+
acc[key] = _recompose2(value);
|
|
45
|
+
return acc;
|
|
46
|
+
}, {});
|
|
26
47
|
};
|
|
27
48
|
const recompose = shape => _recompose(shape);
|
|
28
49
|
recompose.low = _recompose;
|
package/lib/recompose.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recompose.js","sources":["../src/recompose.ts"],"sourcesContent":["import { merge } from 'ts-deepmerge';\nimport { SEPARATOR } from './constants/strings';\nimport type { Recompose, Ru } from './types.types';\n\nexport function recomposeObjectUrl<T>(shape: string, value: T) {\n const obj: Ru = {};\n if (shape.length <= 0) return obj;\n\n const keys = shape.split(SEPARATOR);\n if (keys.length === 1) {\n const key = keys.shift();\n obj[key!] = value;\n } else {\n const key = keys.shift();\n obj[key!] = recomposeObjectUrl(keys.join(SEPARATOR), value);\n }\n\n return obj;\n}\n\n/**\n * Recompose a flatten object \n * @example\n * \n * { 'data.age': 10, 'human.login': 'login' }\n * will become\n * {\n data: {\n age: 10,\n },\n human: {\n login: 'login',\n },\n }\n * @remark \n * The generated typescript type takes too much ressources\n\n * @todo\n Add type to the return\n */\ntype Recompose_F = <T extends Ru>(shape: T) => Recompose<T>;\ntype _Recompose_F = (shape: any) => any;\n\nexport type Recomposer =
|
|
1
|
+
{"version":3,"file":"recompose.js","sources":["../src/recompose.ts"],"sourcesContent":["import { merge } from 'ts-deepmerge';\nimport { SEPARATOR } from './constants/strings';\nimport type { Recompose, Ru } from './types.types';\n\nexport function recomposeObjectUrl<T>(shape: string, value: T) {\n const obj: Ru = {};\n if (shape.length <= 0) return obj;\n\n const keys = shape.split(SEPARATOR);\n if (keys.length === 1) {\n const key = keys.shift();\n obj[key!] = value;\n } else {\n const key = keys.shift();\n obj[key!] = recomposeObjectUrl(keys.join(SEPARATOR), value);\n }\n\n return obj;\n}\n\n/**\n * Recompose a flatten object \n * @example\n * \n * { 'data.age': 10, 'human.login': 'login' }\n * will become\n * {\n data: {\n age: 10,\n },\n human: {\n login: 'login',\n },\n }\n * @remark \n * The generated typescript type takes too much ressources\n\n * @todo\n Add type to the return\n */\ntype Recompose_F = <const T extends Ru>(shape: T) => Recompose<T>;\ntype _Recompose_F = (shape: any) => any;\ntype _Recompose2_F = <T extends Ru>(shape: T) => Recompose<T>;\n\nexport type Recomposer = _Recompose2_F & {\n strict: Recompose_F;\n low: _Recompose_F;\n};\n\nconst _recompose: _Recompose_F = shape => {\n const entries = Object.entries(shape);\n if (entries.length === 0) return {};\n const arr: any[] = [];\n entries.forEach(([key, value]) => {\n arr.push(recomposeObjectUrl(key, value));\n });\n return _recompose2(merge(...arr));\n};\n\nconst _recompose2: _Recompose_F = shape => {\n const mustReturn =\n typeof shape !== 'object' || shape === null || Array.isArray(shape);\n if (mustReturn) return shape;\n\n const entries = Object.entries(shape).sort(([a], [b]) =>\n a.localeCompare(b),\n );\n\n const isArray = entries.every(\n ([key]) => key.startsWith('[') && key.endsWith(']'),\n );\n if (isArray) {\n const arr: any[] = [];\n entries.forEach(([key, value]) => {\n const index = parseInt(key.slice(1, -1), 10);\n arr[index] = _recompose2(value);\n });\n return arr;\n }\n\n return entries.reduce((acc, [key, value]) => {\n acc[key] = _recompose2(value);\n return acc;\n }, {} as any);\n};\n\nexport const recompose: Recomposer = shape => _recompose(shape);\nrecompose.low = _recompose;\nrecompose.strict = _recompose;\n"],"names":[],"mappings":";;;AAIM,SAAU,kBAAkB,CAAI,KAAa,EAAE,KAAQ,EAAA;IAC3D,MAAM,GAAG,GAAO,EAAE;AAClB,IAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;AAAE,QAAA,OAAO,GAAG;IAEjC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;AACnC,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,GAAG,CAAC,GAAI,CAAC,GAAG,KAAK;IACnB;SAAO;AACL,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,GAAG,CAAC,GAAI,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;IAC7D;AAEA,IAAA,OAAO,GAAG;AACZ;AA+BA,MAAM,UAAU,GAAiB,KAAK,IAAG;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACrC,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,EAAE;IACnC,MAAM,GAAG,GAAU,EAAE;IACrB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;QAC/B,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC1C,IAAA,CAAC,CAAC;IACF,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,WAAW,GAAiB,KAAK,IAAG;AACxC,IAAA,MAAM,UAAU,GACd,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACrE,IAAA,IAAI,UAAU;AAAE,QAAA,OAAO,KAAK;AAE5B,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAClD,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CACnB;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAC3B,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CACpD;IACD,IAAI,OAAO,EAAE;QACX,MAAM,GAAG,GAAU,EAAE;QACrB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AAC/B,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,GAAG,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;AACjC,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;QAC1C,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;AAC7B,QAAA,OAAO,GAAG;IACZ,CAAC,EAAE,EAAS,CAAC;AACf,CAAC;AAEM,MAAM,SAAS,GAAe,KAAK,IAAI,UAAU,CAAC,KAAK;AAC9D,SAAS,CAAC,GAAG,GAAG,UAAU;AAC1B,SAAS,CAAC,MAAM,GAAG,UAAU;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const DEFAULT_DECOMPOSE_OPTIONS = {
|
|
4
|
+
sep: '.',
|
|
5
|
+
object: 'key',
|
|
6
|
+
start: true,
|
|
7
|
+
};
|
|
8
|
+
const DEFAULT_FLAT_OPTIONS = {
|
|
9
|
+
sep: '.',
|
|
10
|
+
children: false,
|
|
11
|
+
};
|
|
12
|
+
// #endregion
|
|
13
|
+
|
|
14
|
+
exports.DEFAULT_DECOMPOSE_OPTIONS = DEFAULT_DECOMPOSE_OPTIONS;
|
|
15
|
+
exports.DEFAULT_FLAT_OPTIONS = DEFAULT_FLAT_OPTIONS;
|
|
16
|
+
//# sourceMappingURL=types.types.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.types.cjs","sources":["../src/types.types.ts"],"sourcesContent":["import type { types } from '@bemedev/types';\n\nexport type StateMatching<\n T extends StateValue,\n Key = keyof T,\n> = T extends StateValueMap\n ? Key extends string\n ? T[Key] extends StateValueMap\n ? `${Key}.${StateMatching<T[Key]>}` | Key\n : `${Key}.${T[Key] & string}` | Key\n : never\n : T;\n\nexport type KeysMatching<\n T extends types.TrueObject,\n AddObjectKeys extends boolean = true,\n Key extends keyof T = keyof T,\n> = Key extends string\n ? Required<T[Key]> extends types.TrueObject\n ?\n | `${Key}.${KeysMatching<Required<T[Key]>, AddObjectKeys> & string}`\n | (AddObjectKeys extends true ? Key : never)\n : Key\n : never;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport type EmptyObject = {};\n\n// #region Decompose\n\n// #region type Decompose\ntype WO = 'key' | 'object' | 'both';\n\ntype _Decompose<\n T,\n sep extends string = '.',\n wo extends WO = 'key',\n Remaining extends string = '',\n> = {\n [k in keyof T]: T[k] extends infer Tk\n ? UnionToIntersection2<\n Tk extends ReadonlyArray<any>\n ? Extract<\n {\n [Key in Extract<\n keyof Tk,\n `${number}`\n > as `${Remaining}${k & string}${sep}[${Key & string}]`]: Tk[Key] extends infer TK2\n ? TK2 extends Ru\n ? _Decompose<\n TK2,\n sep,\n wo,\n `${Remaining}${k & string}${sep}[${Key & string}]${sep}`\n > &\n (wo extends 'object' | 'both'\n ? Record<\n `${Remaining}${k & string}${sep}[${Key & string}]`,\n TK2\n >\n : EmptyObject)\n : wo extends 'key' | 'both'\n ? Record<\n `${Remaining}${k & string}${sep}[${Key & string}]`,\n TK2\n >\n : never\n : never;\n } extends infer ARR\n ? ARR[keyof ARR]\n : never,\n object\n > &\n (wo extends 'object' | 'both'\n ? Record<`${Remaining}${k & string}`, Tk>\n : EmptyObject)\n : Tk extends Ru\n ? object extends Tk\n ? Record<`${Remaining}${k & string}`, Tk>\n : _Decompose<\n Tk,\n sep,\n wo,\n `${Remaining}${k & string}${sep}`\n > &\n (wo extends 'object' | 'both'\n ? Record<`${Remaining}${k & string}`, Tk>\n : EmptyObject)\n : wo extends 'key' | 'both'\n ? Record<`${Remaining}${k & string}`, Tk>\n : never\n >\n : never;\n}[keyof T];\n\nexport type DecomposeOptions = {\n sep?: string;\n object?: WO;\n start?: boolean;\n};\n\nexport const DEFAULT_DECOMPOSE_OPTIONS = {\n sep: '.',\n object: 'key',\n start: true,\n} as const satisfies DecomposeOptions;\n\ntype DefaultDecomposeOptions = typeof DEFAULT_DECOMPOSE_OPTIONS;\n\nexport type Decompose<\n T,\n O extends DecomposeOptions = DefaultDecomposeOptions,\n sep extends string = O['sep'] extends string\n ? O['sep']\n : DefaultDecomposeOptions['sep'],\n> =\n NonNullable<unknown> extends T\n ? NonNullable<unknown>\n : UnionToIntersection<\n _Decompose<\n T,\n sep,\n O['object'] extends WO\n ? O['object']\n : DefaultDecomposeOptions['object'],\n O['start'] extends infer S extends boolean\n ? S extends true\n ? sep\n : ''\n : sep\n >\n >;\n// #endregion\n\n// #endregion\n\n// #region type FlatByKey\ntype _ExcludeFrom<\n S extends string,\n T extends string,\n Delimiter extends string = '.',\n> = Exclude<\n S extends `${string}${T}${infer V}` ? _ExcludeFrom<V, T, Delimiter> : S,\n `${string}${string}${Delimiter}${string}` | ''\n>;\n\nexport type ExtractEndsFrom<\n S extends string,\n T extends string,\n Delimiter extends string = '.',\n> = Extract<\n S,\n `${string}${Delimiter}${T}${_ExcludeFrom<S, T, Delimiter>}`\n>;\n\nexport type ExcludeFrom<\n S extends string,\n T extends string,\n Delimiter extends string = '.',\n> = S extends `${infer P}${Delimiter}${T}${infer V}`\n ? ExcludeFrom<`${P}${V}`, T, Delimiter>\n : S;\n\n// export type ExcludeFrom<\n// S extends string,\n// T extends string,\n// Delimiter extends string = '.',\n// > = _ExcludeFrom2<ExtractFrom<S, T, Delimiter>, T>;\n\ntype _FlatByKey<\n T extends object,\n KEY extends types.PickKeysBy<T, object>,\n wc extends boolean = false,\n sep extends string = '.',\n> = (Decompose<T, { sep: sep; object: 'object' }> extends infer D\n ? {\n [K in ExtractEndsFrom<keyof D & string, KEY> as ExcludeFrom<\n K,\n KEY\n >]: wc extends true ? D[K] : Omit<D[K], KEY>;\n }\n : never) &\n Record<sep, T>;\n\nexport type FlatOptions = {\n sep?: string;\n children?: boolean;\n};\n\nexport const DEFAULT_FLAT_OPTIONS = {\n sep: '.',\n children: false,\n} as const satisfies FlatOptions;\n\ntype DefaultFlatOptions = typeof DEFAULT_FLAT_OPTIONS;\n\nexport type FlatByKey<\n T extends object,\n omit extends types.PickKeysBy<T, object>,\n O extends FlatOptions = DefaultFlatOptions,\n> = _FlatByKey<\n T,\n omit,\n O['children'] extends boolean\n ? O['children']\n : DefaultFlatOptions['children'],\n O['sep'] extends string ? O['sep'] : DefaultFlatOptions['sep']\n>;\n\n//#endregion\n\nexport type StateValue = string | StateValueMap;\n\nexport interface StateValueMap {\n [key: string]: StateValue;\n}\n\nexport type Ru = Record<string, unknown>;\n\n// #region Recompose\n// #region Preparation\n// type Primitive = string | number | boolean | null | undefined | never;\nexport type UnionToIntersection<U> = boolean extends U\n ? U\n : (U extends any ? (k: U) => void : never) extends (k: infer I) => void\n ? I\n : never;\n\nexport type UnionKeys<U> = U extends Record<infer K, any> ? K : never;\n\nexport type UnionToIntersection2<U extends object> = {\n [K in UnionKeys<U>]: U extends Record<K, infer T> ? T : never;\n};\n\ntype SplitSeparator<S extends string> = S extends `${infer A}.${string}`\n ? A\n : S;\n\n// Simple tuple creation for arrays up to 10 elements\n\nexport type IndexString = `[${number}]`;\n\n// #endregion\n\ntype _Recompose<T extends Ru> = {\n [key in keyof T as SplitSeparator<key & string>]: UnionToIntersection<\n key extends `${string}.${infer A}`\n ? A extends `${string}.${string}`\n ? _Recompose<Record<A, T[key]>>\n : Record<A, T[key]>\n : T[key]\n >;\n};\n\nexport type Recompose<T extends Ru> = Recompose3<_Recompose<T>>;\n\nexport type Compare<T, U> = T extends U\n ? U extends T\n ? true\n : false\n : false;\n\nexport type Recompose3<T extends types.To> = keyof T extends never\n ? NonNullable<unknown>\n : keyof T extends IndexString\n ? types.ValuesOf<T>[]\n : {\n [K in keyof T]: T[K] extends infer TK extends types.To\n ? Recompose3<TK>\n : T[K];\n };\n\n// #endregion\n"],"names":[],"mappings":";;AAqGO,MAAM,yBAAyB,GAAG;AACvC,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,KAAK,EAAE,IAAI;;AAqFN,MAAM,oBAAoB,GAAG;AAClC,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,QAAQ,EAAE,KAAK;;AAiFjB;;;;;"}
|
package/lib/types.types.d.ts
CHANGED
|
@@ -1,34 +1,63 @@
|
|
|
1
1
|
import type { types } from '@bemedev/types';
|
|
2
2
|
export type StateMatching<T extends StateValue, Key = keyof T> = T extends StateValueMap ? Key extends string ? T[Key] extends StateValueMap ? `${Key}.${StateMatching<T[Key]>}` | Key : `${Key}.${T[Key] & string}` | Key : never : T;
|
|
3
3
|
export type KeysMatching<T extends types.TrueObject, AddObjectKeys extends boolean = true, Key extends keyof T = keyof T> = Key extends string ? Required<T[Key]> extends types.TrueObject ? `${Key}.${KeysMatching<Required<T[Key]>, AddObjectKeys> & string}` | (AddObjectKeys extends true ? Key : never) : Key : never;
|
|
4
|
-
type
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
export type EmptyObject = {};
|
|
5
|
+
type WO = 'key' | 'object' | 'both';
|
|
6
|
+
type _Decompose<T, sep extends string = '.', wo extends WO = 'key', Remaining extends string = ''> = {
|
|
7
|
+
[k in keyof T]: T[k] extends infer Tk ? UnionToIntersection2<Tk extends ReadonlyArray<any> ? Extract<{
|
|
8
|
+
[Key in Extract<keyof Tk, `${number}`> as `${Remaining}${k & string}${sep}[${Key & string}]`]: Tk[Key] extends infer TK2 ? TK2 extends Ru ? _Decompose<TK2, sep, wo, `${Remaining}${k & string}${sep}[${Key & string}]${sep}`> & (wo extends 'object' | 'both' ? Record<`${Remaining}${k & string}${sep}[${Key & string}]`, TK2> : EmptyObject) : wo extends 'key' | 'both' ? Record<`${Remaining}${k & string}${sep}[${Key & string}]`, TK2> : never : never;
|
|
9
|
+
} extends infer ARR ? ARR[keyof ARR] : never, object> & (wo extends 'object' | 'both' ? Record<`${Remaining}${k & string}`, Tk> : EmptyObject) : Tk extends Ru ? object extends Tk ? Record<`${Remaining}${k & string}`, Tk> : _Decompose<Tk, sep, wo, `${Remaining}${k & string}${sep}`> & (wo extends 'object' | 'both' ? Record<`${Remaining}${k & string}`, Tk> : EmptyObject) : wo extends 'key' | 'both' ? Record<`${Remaining}${k & string}`, Tk> : never> : never;
|
|
10
|
+
}[keyof T];
|
|
11
|
+
export type DecomposeOptions = {
|
|
12
|
+
sep?: string;
|
|
13
|
+
object?: WO;
|
|
14
|
+
start?: boolean;
|
|
9
15
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
[P in T['path']]: Extract<T, {
|
|
15
|
-
path: P;
|
|
16
|
-
}>['type'];
|
|
16
|
+
export declare const DEFAULT_DECOMPOSE_OPTIONS: {
|
|
17
|
+
readonly sep: ".";
|
|
18
|
+
readonly object: "key";
|
|
19
|
+
readonly start: true;
|
|
17
20
|
};
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
export type
|
|
22
|
-
export type
|
|
21
|
+
type DefaultDecomposeOptions = typeof DEFAULT_DECOMPOSE_OPTIONS;
|
|
22
|
+
export type Decompose<T, O extends DecomposeOptions = DefaultDecomposeOptions, sep extends string = O['sep'] extends string ? O['sep'] : DefaultDecomposeOptions['sep']> = NonNullable<unknown> extends T ? NonNullable<unknown> : UnionToIntersection<_Decompose<T, sep, O['object'] extends WO ? O['object'] : DefaultDecomposeOptions['object'], O['start'] extends infer S extends boolean ? S extends true ? sep : '' : sep>>;
|
|
23
|
+
type _ExcludeFrom<S extends string, T extends string, Delimiter extends string = '.'> = Exclude<S extends `${string}${T}${infer V}` ? _ExcludeFrom<V, T, Delimiter> : S, `${string}${string}${Delimiter}${string}` | ''>;
|
|
24
|
+
export type ExtractEndsFrom<S extends string, T extends string, Delimiter extends string = '.'> = Extract<S, `${string}${Delimiter}${T}${_ExcludeFrom<S, T, Delimiter>}`>;
|
|
25
|
+
export type ExcludeFrom<S extends string, T extends string, Delimiter extends string = '.'> = S extends `${infer P}${Delimiter}${T}${infer V}` ? ExcludeFrom<`${P}${V}`, T, Delimiter> : S;
|
|
26
|
+
type _FlatByKey<T extends object, KEY extends types.PickKeysBy<T, object>, wc extends boolean = false, sep extends string = '.'> = (Decompose<T, {
|
|
27
|
+
sep: sep;
|
|
28
|
+
object: 'object';
|
|
29
|
+
}> extends infer D ? {
|
|
30
|
+
[K in ExtractEndsFrom<keyof D & string, KEY> as ExcludeFrom<K, KEY>]: wc extends true ? D[K] : Omit<D[K], KEY>;
|
|
31
|
+
} : never) & Record<sep, T>;
|
|
32
|
+
export type FlatOptions = {
|
|
33
|
+
sep?: string;
|
|
34
|
+
children?: boolean;
|
|
35
|
+
};
|
|
36
|
+
export declare const DEFAULT_FLAT_OPTIONS: {
|
|
37
|
+
readonly sep: ".";
|
|
38
|
+
readonly children: false;
|
|
39
|
+
};
|
|
40
|
+
type DefaultFlatOptions = typeof DEFAULT_FLAT_OPTIONS;
|
|
41
|
+
export type FlatByKey<T extends object, omit extends types.PickKeysBy<T, object>, O extends FlatOptions = DefaultFlatOptions> = _FlatByKey<T, omit, O['children'] extends boolean ? O['children'] : DefaultFlatOptions['children'], O['sep'] extends string ? O['sep'] : DefaultFlatOptions['sep']>;
|
|
23
42
|
export type StateValue = string | StateValueMap;
|
|
24
43
|
export interface StateValueMap {
|
|
25
44
|
[key: string]: StateValue;
|
|
26
45
|
}
|
|
27
46
|
export type Ru = Record<string, unknown>;
|
|
28
|
-
type UnionToIntersection<U> = boolean extends U ? U : (U extends
|
|
47
|
+
export type UnionToIntersection<U> = boolean extends U ? U : (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
48
|
+
export type UnionKeys<U> = U extends Record<infer K, any> ? K : never;
|
|
49
|
+
export type UnionToIntersection2<U extends object> = {
|
|
50
|
+
[K in UnionKeys<U>]: U extends Record<K, infer T> ? T : never;
|
|
51
|
+
};
|
|
29
52
|
type SplitSeparator<S extends string> = S extends `${infer A}.${string}` ? A : S;
|
|
30
|
-
export type
|
|
31
|
-
|
|
53
|
+
export type IndexString = `[${number}]`;
|
|
54
|
+
type _Recompose<T extends Ru> = {
|
|
55
|
+
[key in keyof T as SplitSeparator<key & string>]: UnionToIntersection<key extends `${string}.${infer A}` ? A extends `${string}.${string}` ? _Recompose<Record<A, T[key]>> : Record<A, T[key]> : T[key]>;
|
|
56
|
+
};
|
|
57
|
+
export type Recompose<T extends Ru> = Recompose3<_Recompose<T>>;
|
|
58
|
+
export type Compare<T, U> = T extends U ? U extends T ? true : false : false;
|
|
59
|
+
export type Recompose3<T extends types.To> = keyof T extends never ? NonNullable<unknown> : keyof T extends IndexString ? types.ValuesOf<T>[] : {
|
|
60
|
+
[K in keyof T]: T[K] extends infer TK extends types.To ? Recompose3<TK> : T[K];
|
|
32
61
|
};
|
|
33
62
|
export {};
|
|
34
63
|
//# sourceMappingURL=types.types.d.ts.map
|
package/lib/types.types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.types.d.ts","sourceRoot":"","sources":["../src/types.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,MAAM,aAAa,CACvB,CAAC,SAAS,UAAU,EACpB,GAAG,GAAG,MAAM,CAAC,IACX,CAAC,SAAS,aAAa,GACvB,GAAG,SAAS,MAAM,GAChB,CAAC,CAAC,GAAG,CAAC,SAAS,aAAa,GAC1B,GAAG,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GACvC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,GAAG,GACnC,KAAK,GACP,CAAC,CAAC;AAEN,MAAM,MAAM,YAAY,CACtB,CAAC,SAAS,KAAK,CAAC,UAAU,EAC1B,aAAa,SAAS,OAAO,GAAG,IAAI,EACpC,GAAG,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,IAC3B,GAAG,SAAS,MAAM,GAClB,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,UAAU,GAEnC,GAAG,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,MAAM,EAAE,GAClE,CAAC,aAAa,SAAS,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,GAC9C,GAAG,GACL,KAAK,CAAC;AAGV,KAAK,
|
|
1
|
+
{"version":3,"file":"types.types.d.ts","sourceRoot":"","sources":["../src/types.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const DEFAULT_DECOMPOSE_OPTIONS = {
|
|
2
|
+
sep: '.',
|
|
3
|
+
object: 'key',
|
|
4
|
+
start: true,
|
|
5
|
+
};
|
|
6
|
+
const DEFAULT_FLAT_OPTIONS = {
|
|
7
|
+
sep: '.',
|
|
8
|
+
children: false,
|
|
9
|
+
};
|
|
10
|
+
// #endregion
|
|
11
|
+
|
|
12
|
+
export { DEFAULT_DECOMPOSE_OPTIONS, DEFAULT_FLAT_OPTIONS };
|
|
13
|
+
//# sourceMappingURL=types.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.types.js","sources":["../src/types.types.ts"],"sourcesContent":["import type { types } from '@bemedev/types';\n\nexport type StateMatching<\n T extends StateValue,\n Key = keyof T,\n> = T extends StateValueMap\n ? Key extends string\n ? T[Key] extends StateValueMap\n ? `${Key}.${StateMatching<T[Key]>}` | Key\n : `${Key}.${T[Key] & string}` | Key\n : never\n : T;\n\nexport type KeysMatching<\n T extends types.TrueObject,\n AddObjectKeys extends boolean = true,\n Key extends keyof T = keyof T,\n> = Key extends string\n ? Required<T[Key]> extends types.TrueObject\n ?\n | `${Key}.${KeysMatching<Required<T[Key]>, AddObjectKeys> & string}`\n | (AddObjectKeys extends true ? Key : never)\n : Key\n : never;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport type EmptyObject = {};\n\n// #region Decompose\n\n// #region type Decompose\ntype WO = 'key' | 'object' | 'both';\n\ntype _Decompose<\n T,\n sep extends string = '.',\n wo extends WO = 'key',\n Remaining extends string = '',\n> = {\n [k in keyof T]: T[k] extends infer Tk\n ? UnionToIntersection2<\n Tk extends ReadonlyArray<any>\n ? Extract<\n {\n [Key in Extract<\n keyof Tk,\n `${number}`\n > as `${Remaining}${k & string}${sep}[${Key & string}]`]: Tk[Key] extends infer TK2\n ? TK2 extends Ru\n ? _Decompose<\n TK2,\n sep,\n wo,\n `${Remaining}${k & string}${sep}[${Key & string}]${sep}`\n > &\n (wo extends 'object' | 'both'\n ? Record<\n `${Remaining}${k & string}${sep}[${Key & string}]`,\n TK2\n >\n : EmptyObject)\n : wo extends 'key' | 'both'\n ? Record<\n `${Remaining}${k & string}${sep}[${Key & string}]`,\n TK2\n >\n : never\n : never;\n } extends infer ARR\n ? ARR[keyof ARR]\n : never,\n object\n > &\n (wo extends 'object' | 'both'\n ? Record<`${Remaining}${k & string}`, Tk>\n : EmptyObject)\n : Tk extends Ru\n ? object extends Tk\n ? Record<`${Remaining}${k & string}`, Tk>\n : _Decompose<\n Tk,\n sep,\n wo,\n `${Remaining}${k & string}${sep}`\n > &\n (wo extends 'object' | 'both'\n ? Record<`${Remaining}${k & string}`, Tk>\n : EmptyObject)\n : wo extends 'key' | 'both'\n ? Record<`${Remaining}${k & string}`, Tk>\n : never\n >\n : never;\n}[keyof T];\n\nexport type DecomposeOptions = {\n sep?: string;\n object?: WO;\n start?: boolean;\n};\n\nexport const DEFAULT_DECOMPOSE_OPTIONS = {\n sep: '.',\n object: 'key',\n start: true,\n} as const satisfies DecomposeOptions;\n\ntype DefaultDecomposeOptions = typeof DEFAULT_DECOMPOSE_OPTIONS;\n\nexport type Decompose<\n T,\n O extends DecomposeOptions = DefaultDecomposeOptions,\n sep extends string = O['sep'] extends string\n ? O['sep']\n : DefaultDecomposeOptions['sep'],\n> =\n NonNullable<unknown> extends T\n ? NonNullable<unknown>\n : UnionToIntersection<\n _Decompose<\n T,\n sep,\n O['object'] extends WO\n ? O['object']\n : DefaultDecomposeOptions['object'],\n O['start'] extends infer S extends boolean\n ? S extends true\n ? sep\n : ''\n : sep\n >\n >;\n// #endregion\n\n// #endregion\n\n// #region type FlatByKey\ntype _ExcludeFrom<\n S extends string,\n T extends string,\n Delimiter extends string = '.',\n> = Exclude<\n S extends `${string}${T}${infer V}` ? _ExcludeFrom<V, T, Delimiter> : S,\n `${string}${string}${Delimiter}${string}` | ''\n>;\n\nexport type ExtractEndsFrom<\n S extends string,\n T extends string,\n Delimiter extends string = '.',\n> = Extract<\n S,\n `${string}${Delimiter}${T}${_ExcludeFrom<S, T, Delimiter>}`\n>;\n\nexport type ExcludeFrom<\n S extends string,\n T extends string,\n Delimiter extends string = '.',\n> = S extends `${infer P}${Delimiter}${T}${infer V}`\n ? ExcludeFrom<`${P}${V}`, T, Delimiter>\n : S;\n\n// export type ExcludeFrom<\n// S extends string,\n// T extends string,\n// Delimiter extends string = '.',\n// > = _ExcludeFrom2<ExtractFrom<S, T, Delimiter>, T>;\n\ntype _FlatByKey<\n T extends object,\n KEY extends types.PickKeysBy<T, object>,\n wc extends boolean = false,\n sep extends string = '.',\n> = (Decompose<T, { sep: sep; object: 'object' }> extends infer D\n ? {\n [K in ExtractEndsFrom<keyof D & string, KEY> as ExcludeFrom<\n K,\n KEY\n >]: wc extends true ? D[K] : Omit<D[K], KEY>;\n }\n : never) &\n Record<sep, T>;\n\nexport type FlatOptions = {\n sep?: string;\n children?: boolean;\n};\n\nexport const DEFAULT_FLAT_OPTIONS = {\n sep: '.',\n children: false,\n} as const satisfies FlatOptions;\n\ntype DefaultFlatOptions = typeof DEFAULT_FLAT_OPTIONS;\n\nexport type FlatByKey<\n T extends object,\n omit extends types.PickKeysBy<T, object>,\n O extends FlatOptions = DefaultFlatOptions,\n> = _FlatByKey<\n T,\n omit,\n O['children'] extends boolean\n ? O['children']\n : DefaultFlatOptions['children'],\n O['sep'] extends string ? O['sep'] : DefaultFlatOptions['sep']\n>;\n\n//#endregion\n\nexport type StateValue = string | StateValueMap;\n\nexport interface StateValueMap {\n [key: string]: StateValue;\n}\n\nexport type Ru = Record<string, unknown>;\n\n// #region Recompose\n// #region Preparation\n// type Primitive = string | number | boolean | null | undefined | never;\nexport type UnionToIntersection<U> = boolean extends U\n ? U\n : (U extends any ? (k: U) => void : never) extends (k: infer I) => void\n ? I\n : never;\n\nexport type UnionKeys<U> = U extends Record<infer K, any> ? K : never;\n\nexport type UnionToIntersection2<U extends object> = {\n [K in UnionKeys<U>]: U extends Record<K, infer T> ? T : never;\n};\n\ntype SplitSeparator<S extends string> = S extends `${infer A}.${string}`\n ? A\n : S;\n\n// Simple tuple creation for arrays up to 10 elements\n\nexport type IndexString = `[${number}]`;\n\n// #endregion\n\ntype _Recompose<T extends Ru> = {\n [key in keyof T as SplitSeparator<key & string>]: UnionToIntersection<\n key extends `${string}.${infer A}`\n ? A extends `${string}.${string}`\n ? _Recompose<Record<A, T[key]>>\n : Record<A, T[key]>\n : T[key]\n >;\n};\n\nexport type Recompose<T extends Ru> = Recompose3<_Recompose<T>>;\n\nexport type Compare<T, U> = T extends U\n ? U extends T\n ? true\n : false\n : false;\n\nexport type Recompose3<T extends types.To> = keyof T extends never\n ? NonNullable<unknown>\n : keyof T extends IndexString\n ? types.ValuesOf<T>[]\n : {\n [K in keyof T]: T[K] extends infer TK extends types.To\n ? Recompose3<TK>\n : T[K];\n };\n\n// #endregion\n"],"names":[],"mappings":"AAqGO,MAAM,yBAAyB,GAAG;AACvC,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,KAAK,EAAE,IAAI;;AAqFN,MAAM,oBAAoB,GAAG;AAClC,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,QAAQ,EAAE,KAAK;;AAiFjB;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bemedev/decompose",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Decompose object and so more",
|
|
5
5
|
"author": {
|
|
6
6
|
"email": "bri_lvi@icloud.com",
|
|
@@ -34,12 +34,12 @@
|
|
|
34
34
|
"config": "pnpm install",
|
|
35
35
|
"config:off": "pnpm run config --offline",
|
|
36
36
|
"ci": "pnpm run config:off && pnpm run lint && pnpm run test",
|
|
37
|
-
"ci:admin": "pnpm run rm && pnpm run ci",
|
|
37
|
+
"ci:admin": "pnpm run rm && pnpm run upgrade && pnpm run ci",
|
|
38
38
|
"rollup": "rollup -c",
|
|
39
39
|
"build": "rm -rf lib && pnpm run rollup",
|
|
40
40
|
"pretest": "pnpm run build",
|
|
41
41
|
"posttest": "pnpm run prettier && pnpm run p-q",
|
|
42
|
-
"rm": "
|
|
42
|
+
"rm": "pnpx rimraf -rf node_modules pnpm-lock.yaml",
|
|
43
43
|
"p-q": "pretty-quick",
|
|
44
44
|
"rinit": "pnpm run rm && pnpm run config",
|
|
45
45
|
"rinit:off": "pnpm run rm && pnpm run config:off",
|
|
@@ -59,17 +59,17 @@
|
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@bemedev/fsf": "^0.8.0",
|
|
61
61
|
"@bemedev/rollup-config": "^0.1.1",
|
|
62
|
-
"@bemedev/types": "^0.1
|
|
62
|
+
"@bemedev/types": "^0.3.1",
|
|
63
63
|
"@bemedev/vitest-alias": "^0.0.3",
|
|
64
64
|
"@bemedev/vitest-exclude": "^0.1.1",
|
|
65
65
|
"@bemedev/vitest-extended": "^1.3.6",
|
|
66
66
|
"@eslint/eslintrc": "^3.3.1",
|
|
67
|
-
"@eslint/js": "^9.
|
|
68
|
-
"@types/node": "^24.0
|
|
69
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
70
|
-
"@typescript-eslint/parser": "^8.
|
|
67
|
+
"@eslint/js": "^9.32.0",
|
|
68
|
+
"@types/node": "^24.2.0",
|
|
69
|
+
"@typescript-eslint/eslint-plugin": "^8.39.0",
|
|
70
|
+
"@typescript-eslint/parser": "^8.39.0",
|
|
71
71
|
"@vitest/coverage-v8": "^3.2.4",
|
|
72
|
-
"eslint": "^9.
|
|
72
|
+
"eslint": "^9.32.0",
|
|
73
73
|
"glob": "^11.0.3",
|
|
74
74
|
"globals": "^16.3.0",
|
|
75
75
|
"husky": "^9.1.7",
|
|
@@ -77,11 +77,11 @@
|
|
|
77
77
|
"onchange": "^7.1.0",
|
|
78
78
|
"prettier": "^3.6.2",
|
|
79
79
|
"pretty-quick": "^4.2.2",
|
|
80
|
-
"rollup": "^4.
|
|
80
|
+
"rollup": "^4.46.2",
|
|
81
81
|
"rollup-plugin-tsc-alias": "^1.1.4",
|
|
82
82
|
"rollup-plugin-typescript2": "^0.36.0",
|
|
83
83
|
"tslib": "^2.8.1",
|
|
84
|
-
"typescript": "^5.
|
|
84
|
+
"typescript": "^5.9.2",
|
|
85
85
|
"vitest": "^3.2.4"
|
|
86
86
|
},
|
|
87
87
|
"dependencies": {
|