@bemedev/decompose 0.3.1 → 0.5.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 +2 -2
- package/lib/constants/strings.cjs.map +1 -1
- package/lib/constants/strings.d.ts +1 -1
- package/lib/constants/strings.js +2 -2
- package/lib/constants/strings.js.map +1 -1
- package/lib/decompose.cjs +1 -1
- package/lib/decompose.cjs.map +1 -1
- package/lib/decompose.d.ts +1 -1
- package/lib/decompose.d.ts.map +1 -1
- package/lib/decompose.js +1 -1
- package/lib/decompose.js.map +1 -1
- package/lib/decomposeSV.cjs +5 -5
- package/lib/decomposeSV.cjs.map +1 -1
- package/lib/decomposeSV.d.ts.map +1 -1
- package/lib/decomposeSV.js +5 -5
- package/lib/decomposeSV.js.map +1 -1
- package/lib/recompose.cjs +27 -3
- package/lib/recompose.cjs.map +1 -1
- package/lib/recompose.d.ts +22 -2
- package/lib/recompose.d.ts.map +1 -1
- package/lib/recompose.js +28 -4
- package/lib/recompose.js.map +1 -1
- package/lib/types.d.ts +2 -6
- package/lib/types.d.ts.map +1 -1
- package/package.json +2 -2
package/lib/recompose.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recompose.d.ts","sourceRoot":"","sources":["../src/recompose.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"recompose.d.ts","sourceRoot":"","sources":["../src/recompose.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE7C,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAc5D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,gBAY/C"}
|
package/lib/recompose.js
CHANGED
|
@@ -1,30 +1,54 @@
|
|
|
1
1
|
import { merge } from 'ts-deepmerge';
|
|
2
|
-
import {
|
|
2
|
+
import { SEPARATOR } from './constants/strings.js';
|
|
3
3
|
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
5
|
function recomposeObjectUrl(shape, value) {
|
|
6
6
|
const obj = {};
|
|
7
7
|
if (shape.length <= 0)
|
|
8
8
|
return obj;
|
|
9
|
-
const keys = shape.split(
|
|
9
|
+
const keys = shape.split(SEPARATOR);
|
|
10
10
|
if (keys.length === 1) {
|
|
11
11
|
const key = keys.shift();
|
|
12
12
|
obj[key] = value;
|
|
13
13
|
}
|
|
14
14
|
else {
|
|
15
15
|
const key = keys.shift();
|
|
16
|
-
obj[key] = recomposeObjectUrl(keys.join(
|
|
16
|
+
obj[key] = recomposeObjectUrl(keys.join(SEPARATOR), value);
|
|
17
17
|
}
|
|
18
18
|
return obj;
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Recompose a flatten object
|
|
22
|
+
* @example
|
|
23
|
+
*
|
|
24
|
+
* { 'data.age': 10, 'human.login': 'login' }
|
|
25
|
+
* will become
|
|
26
|
+
* {
|
|
27
|
+
data: {
|
|
28
|
+
age: 10,
|
|
29
|
+
},
|
|
30
|
+
human: {
|
|
31
|
+
login: 'login',
|
|
32
|
+
},
|
|
33
|
+
}
|
|
34
|
+
* @remark
|
|
35
|
+
* The generated typescript type takes too much ressources
|
|
36
|
+
|
|
37
|
+
* @todo
|
|
38
|
+
Add type to the return
|
|
39
|
+
*/
|
|
20
40
|
function recompose(shape) {
|
|
21
41
|
const entries = Object.entries(shape);
|
|
22
42
|
const arr = [];
|
|
23
43
|
entries.forEach(([key, value]) => {
|
|
24
44
|
arr.push(recomposeObjectUrl(key, value));
|
|
25
45
|
});
|
|
46
|
+
/**
|
|
47
|
+
* @todo
|
|
48
|
+
* Add a return type
|
|
49
|
+
*/
|
|
26
50
|
const output = merge(...arr);
|
|
27
|
-
return
|
|
51
|
+
return output;
|
|
28
52
|
}
|
|
29
53
|
|
|
30
54
|
export { recompose, recomposeObjectUrl };
|
package/lib/recompose.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recompose.js","sources":["../src/recompose.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { merge } from 'ts-deepmerge';\nimport {
|
|
1
|
+
{"version":3,"file":"recompose.js","sources":["../src/recompose.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { merge } from 'ts-deepmerge';\nimport { SEPARATOR } from './constants/strings';\nimport type { Recompose, Ru } from './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 */\nexport function recompose<T extends Ru>(shape: T) {\n const entries = Object.entries(shape);\n const arr: any[] = [];\n entries.forEach(([key, value]) => {\n arr.push(recomposeObjectUrl(key, value));\n });\n /**\n * @todo\n * Add a return type\n */\n const output = merge(...arr);\n return output as Recompose<T>;\n}\n"],"names":[],"mappings":";;;AAAA;AAKgB,SAAA,kBAAkB,CAAI,KAAa,EAAE,KAAQ,EAAA;IAC3D,MAAM,GAAG,GAAO,EAAE,CAAC;AACnB,IAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;AAAE,QAAA,OAAO,GAAG,CAAC;IAElC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACpC,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACzB,QAAA,GAAG,CAAC,GAAI,CAAC,GAAG,KAAK,CAAC;KACnB;SAAM;AACL,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACzB,QAAA,GAAG,CAAC,GAAI,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;KAC7D;AAED,IAAA,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;;;AAmBG;AACG,SAAU,SAAS,CAAe,KAAQ,EAAA;IAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAU,EAAE,CAAC;IACtB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;QAC/B,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3C,KAAC,CAAC,CAAC;AACH;;;AAGG;AACH,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AAC7B,IAAA,OAAO,MAAsB,CAAC;AAChC;;;;"}
|
package/lib/types.d.ts
CHANGED
|
@@ -9,14 +9,10 @@ export interface StateValueMap {
|
|
|
9
9
|
[key: string]: StateValue;
|
|
10
10
|
}
|
|
11
11
|
export type Ru = Record<string, unknown>;
|
|
12
|
-
type _SplitString<T extends Ru> = {
|
|
13
|
-
[key in keyof T]: key extends `${string}.${infer A}` ? A extends `${string}.${string}` ? _SplitString<Record<A, T[key]>> : Record<A, T[key]> : T[key];
|
|
14
|
-
};
|
|
15
12
|
type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
16
13
|
type SplitSeparator<S extends string> = S extends `${infer A}.${string}` ? A : S;
|
|
17
|
-
type
|
|
18
|
-
[key in keyof T as SplitSeparator<key & string>]:
|
|
14
|
+
export type Recompose<T extends Ru> = {
|
|
15
|
+
[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]>;
|
|
19
16
|
};
|
|
20
|
-
export type Recompose<T extends Ru> = SplitKeys<_SplitString<T>>;
|
|
21
17
|
export {};
|
|
22
18
|
//# sourceMappingURL=types.d.ts.map
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,CACvB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAC1C,GAAG,GAAG,MAAM,CAAC,IAEb,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,GAAG,SAAS,MAAM,GAChB,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,GAAG,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,GAClD,GAAG,GAAG,MAAM,GACd,KAAK,GACP,CAAC,CAAC;AAER,MAAM,MAAM,QAAQ,CAAC,CAAC,IACpB,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;AAE1D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,aAAa,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;CAC3B;AAED,MAAM,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAIzC,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,CACvB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAC1C,GAAG,GAAG,MAAM,CAAC,IAEb,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,GAAG,SAAS,MAAM,GAChB,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,GAAG,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,GAClD,GAAG,GAAG,MAAM,GACd,KAAK,GACP,CAAC,CAAC;AAER,MAAM,MAAM,QAAQ,CAAC,CAAC,IACpB,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;AAE1D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,aAAa,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;CAC3B;AAED,MAAM,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAIzC,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAC5B,CAAC,SAAS,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAC3C,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,GAC1B,CAAC,GACD,KAAK,CAAC;AAEV,KAAK,cAAc,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,GACpE,CAAC,GACD,CAAC,CAAC;AAGN,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,EAAE,IAAI;KACnC,GAAG,IAAI,MAAM,CAAC,IAAI,cAAc,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,mBAAmB,CACnE,GAAG,SAAS,GAAG,MAAM,IAAI,MAAM,CAAC,EAAE,GAC9B,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,EAAE,GAC7B,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAC5B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GACnB,CAAC,CAAC,GAAG,CAAC,CACX;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bemedev/decompose",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Decompose object and so more",
|
|
5
5
|
"author": {
|
|
6
6
|
"email": "bri_lvi@icloud.com",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"ci": "pnpm run config:off && pnpm run lint && pnpm run test && pnpm run build",
|
|
37
37
|
"ci:online": "pnpm run config && pnpm run lint && pnpm run test && pnpm run build",
|
|
38
38
|
"ci:admin": "pnpm run rm && pnpm run ci:online",
|
|
39
|
-
"rollup": "
|
|
39
|
+
"rollup": "rollup -c",
|
|
40
40
|
"build": "rm -rf lib && pnpm run rollup",
|
|
41
41
|
"rm": "rm -rf node_modules pnpm-lock.yaml",
|
|
42
42
|
"rinit": "pnpm run rm && pnpm run config",
|