@bemedev/decompose 1.3.1 → 1.4.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/README.md +18 -1
- package/lib/decompose.cjs +3 -4
- package/lib/decompose.cjs.map +1 -1
- package/lib/decompose.d.ts +2 -1
- package/lib/decompose.d.ts.map +1 -1
- package/lib/decompose.js +1 -2
- package/lib/decompose.js.map +1 -1
- package/lib/flatByKey.cjs +2 -2
- package/lib/flatByKey.cjs.map +1 -1
- package/lib/flatByKey.d.ts +1 -1
- package/lib/flatByKey.d.ts.map +1 -1
- package/lib/flatByKey.js +1 -1
- package/lib/flatByKey.js.map +1 -1
- package/lib/helpers.cjs +11 -0
- package/lib/helpers.cjs.map +1 -1
- package/lib/helpers.d.ts +9 -0
- package/lib/helpers.d.ts.map +1 -1
- package/lib/helpers.js +10 -1
- package/lib/helpers.js.map +1 -1
- package/lib/index.cjs +3 -3
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/types.types.d.ts +19 -11
- package/lib/types.types.d.ts.map +1 -1
- package/package.json +16 -16
- package/lib/types.types.cjs +0 -16
- package/lib/types.types.cjs.map +0 -1
- package/lib/types.types.js +0 -13
- package/lib/types.types.js.map +0 -1
package/README.md
CHANGED
|
@@ -16,7 +16,12 @@ yarn add @bemedev/decompose
|
|
|
16
16
|
## Usage
|
|
17
17
|
|
|
18
18
|
```typescript
|
|
19
|
-
import {
|
|
19
|
+
import {
|
|
20
|
+
decompose,
|
|
21
|
+
decomposeKeys,
|
|
22
|
+
decomposeSV,
|
|
23
|
+
recompose,
|
|
24
|
+
} from '@bemedev/decompose';
|
|
20
25
|
|
|
21
26
|
const obj = {
|
|
22
27
|
data: {
|
|
@@ -32,6 +37,18 @@ const decomposed = decompose(obj);
|
|
|
32
37
|
|
|
33
38
|
const recomposed = recompose(decomposed);
|
|
34
39
|
// Returns original object structure
|
|
40
|
+
|
|
41
|
+
const keys = decomposeKeys(obj);
|
|
42
|
+
// Result: ['data', 'data.name', 'data.name.firstName', 'data.name.lastName']
|
|
43
|
+
|
|
44
|
+
const sv = {
|
|
45
|
+
red: {
|
|
46
|
+
walk: 'stop',
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const decomposedSV = decomposeSV(sv);
|
|
51
|
+
// Result: ['red', 'red.walk', 'red.walk.stop']
|
|
35
52
|
```
|
|
36
53
|
|
|
37
54
|
## [CHANGELOG](https://github.com/chlbri/decompose/blob/main/CHANGELOG.md)
|
package/lib/decompose.cjs
CHANGED
|
@@ -2,11 +2,10 @@
|
|
|
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');
|
|
6
5
|
|
|
7
|
-
function ddecompose(arg, prev = '', options =
|
|
6
|
+
function ddecompose(arg, prev = '', options = helpers.DEFAULT_DECOMPOSE_OPTIONS) {
|
|
8
7
|
const { object } = {
|
|
9
|
-
...
|
|
8
|
+
...helpers.DEFAULT_DECOMPOSE_OPTIONS,
|
|
10
9
|
...options,
|
|
11
10
|
};
|
|
12
11
|
const canAddObjectKeys = object === 'both' || object === 'object';
|
|
@@ -42,7 +41,7 @@ function ddecompose(arg, prev = '', options = types_types.DEFAULT_DECOMPOSE_OPTI
|
|
|
42
41
|
const _decompose = (val, options) => {
|
|
43
42
|
const entries1 = ddecompose(val, '', options);
|
|
44
43
|
const { sep, start } = {
|
|
45
|
-
...
|
|
44
|
+
...helpers.DEFAULT_DECOMPOSE_OPTIONS,
|
|
46
45
|
...options,
|
|
47
46
|
};
|
|
48
47
|
if (entries1.length == 0)
|
package/lib/decompose.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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
|
|
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 { DEFAULT_DECOMPOSE_OPTIONS, isPrimitive } from './helpers';\nimport type { Decompose, DecomposeOptions } 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 = <\n T,\n O extends DecomposeOptions = typeof DEFAULT_DECOMPOSE_OPTIONS,\n>(\n val: T,\n options?: O,\n) => Decompose<T, O>;\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,4 +1,5 @@
|
|
|
1
|
-
import { DEFAULT_DECOMPOSE_OPTIONS
|
|
1
|
+
import { DEFAULT_DECOMPOSE_OPTIONS } from './helpers';
|
|
2
|
+
import type { Decompose, DecomposeOptions } from './types.types';
|
|
2
3
|
type Decompose_F = <T, O extends DecomposeOptions = typeof DEFAULT_DECOMPOSE_OPTIONS>(val: T, options?: O) => Decompose<T, O>;
|
|
3
4
|
type _Decompose_F = (val: any, options?: DecomposeOptions) => any;
|
|
4
5
|
export type Decomposer = 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":"AAKA,OAAO,EAAE,yBAAyB,EAAe,MAAM,WAAW,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAkDjE,KAAK,WAAW,GAAG,CACjB,CAAC,EACD,CAAC,SAAS,gBAAgB,GAAG,OAAO,yBAAyB,EAE7D,GAAG,EAAE,CAAC,EACN,OAAO,CAAC,EAAE,CAAC,KACR,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,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,6 +1,5 @@
|
|
|
1
1
|
import { LEFT_BRACKET, RIGHT_BRACKET, DELIMITER } from './constants/strings.js';
|
|
2
|
-
import { isPrimitive } from './helpers.js';
|
|
3
|
-
import { DEFAULT_DECOMPOSE_OPTIONS } from './types.types.js';
|
|
2
|
+
import { DEFAULT_DECOMPOSE_OPTIONS, isPrimitive } from './helpers.js';
|
|
4
3
|
|
|
5
4
|
function ddecompose(arg, prev = '', options = DEFAULT_DECOMPOSE_OPTIONS) {
|
|
6
5
|
const { object } = {
|
package/lib/decompose.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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
|
|
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 { DEFAULT_DECOMPOSE_OPTIONS, isPrimitive } from './helpers';\nimport type { Decompose, DecomposeOptions } 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 = <\n T,\n O extends DecomposeOptions = typeof DEFAULT_DECOMPOSE_OPTIONS,\n>(\n val: T,\n options?: O,\n) => Decompose<T, O>;\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/flatByKey.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var helpers = require('./helpers.cjs');
|
|
4
4
|
|
|
5
5
|
const _flat = (val, omitKey, options, path = '') => {
|
|
6
|
-
const _options = { ...
|
|
6
|
+
const _options = { ...helpers.DEFAULT_FLAT_OPTIONS, ...options };
|
|
7
7
|
const { [omitKey]: recursives, ...rest } = val;
|
|
8
8
|
const check = _options.children;
|
|
9
9
|
let out = {};
|
package/lib/flatByKey.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flatByKey.cjs","sources":["../src/flatByKey.ts"],"sourcesContent":["import type { types } from '@bemedev/types';\nimport {
|
|
1
|
+
{"version":3,"file":"flatByKey.cjs","sources":["../src/flatByKey.ts"],"sourcesContent":["import type { types } from '@bemedev/types';\nimport { DEFAULT_FLAT_OPTIONS } from './helpers';\nimport type { FlatByKey, FlatOptions } 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 = (\n val: any,\n omitKey: string,\n options?: FlatOptions,\n path?: string,\n) => any;\n\nexport type Flat = Flat_F & {\n strict: Flat_F;\n low: _Flat_F;\n};\n\nconst _flat: _Flat_F = (val, omitKey, options, path = '') => {\n const _options = { ...DEFAULT_FLAT_OPTIONS, ...options };\n const { [omitKey]: recursives, ...rest } = val;\n\n const check = _options.children;\n\n let out: any = {};\n out[path === '' ? _options.sep : path] = check ? val : rest;\n\n if (recursives) {\n for (const key in recursives) {\n if (Object.prototype.hasOwnProperty.call(recursives, key)) {\n const element = recursives[key];\n const inner = _flat(\n element,\n omitKey,\n options,\n `${path}${_options.sep}${key}`,\n );\n out = { ...out, ...inner };\n }\n }\n }\n\n return out;\n};\n\nexport const flatByKey: Flat = (val, key, options) =>\n _flat(val, key, options);\nflatByKey.low = _flat;\nflatByKey.strict = _flat;\n"],"names":["DEFAULT_FLAT_OPTIONS"],"mappings":";;;;AAyBA,MAAM,KAAK,GAAY,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,KAAI;IAC1D,MAAM,QAAQ,GAAG,EAAE,GAAGA,4BAAoB,EAAE,GAAG,OAAO,EAAE;AACxD,IAAA,MAAM,EAAE,CAAC,OAAO,GAAG,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG;AAE9C,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ;IAE/B,IAAI,GAAG,GAAQ,EAAE;IACjB,GAAG,CAAC,IAAI,KAAK,EAAE,GAAG,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI;IAE3D,IAAI,UAAU,EAAE;AACd,QAAA,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;AAC5B,YAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE;AACzD,gBAAA,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC;gBAC/B,MAAM,KAAK,GAAG,KAAK,CACjB,OAAO,EACP,OAAO,EACP,OAAO,EACP,GAAG,IAAI,CAAA,EAAG,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAA,CAAE,CAC/B;gBACD,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE;YAC5B;QACF;IACF;AAEA,IAAA,OAAO,GAAG;AACZ,CAAC;MAEY,SAAS,GAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,KAC/C,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO;AACzB,SAAS,CAAC,GAAG,GAAG,KAAK;AACrB,SAAS,CAAC,MAAM,GAAG,KAAK;;;;"}
|
package/lib/flatByKey.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { types } from '@bemedev/types';
|
|
2
|
-
import {
|
|
2
|
+
import type { FlatByKey, FlatOptions } from './types.types';
|
|
3
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
4
|
type _Flat_F = (val: any, omitKey: string, options?: FlatOptions, path?: string) => any;
|
|
5
5
|
export type Flat = Flat_F & {
|
package/lib/flatByKey.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flatByKey.d.ts","sourceRoot":"","sources":["../src/flatByKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"flatByKey.d.ts","sourceRoot":"","sources":["../src/flatByKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5D,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,CACb,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,WAAW,EACrB,IAAI,CAAC,EAAE,MAAM,KACV,GAAG,CAAC;AAET,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;AA6BF,eAAO,MAAM,SAAS,EAAE,IACE,CAAC"}
|
package/lib/flatByKey.js
CHANGED
package/lib/flatByKey.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flatByKey.js","sources":["../src/flatByKey.ts"],"sourcesContent":["import type { types } from '@bemedev/types';\nimport {
|
|
1
|
+
{"version":3,"file":"flatByKey.js","sources":["../src/flatByKey.ts"],"sourcesContent":["import type { types } from '@bemedev/types';\nimport { DEFAULT_FLAT_OPTIONS } from './helpers';\nimport type { FlatByKey, FlatOptions } 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 = (\n val: any,\n omitKey: string,\n options?: FlatOptions,\n path?: string,\n) => any;\n\nexport type Flat = Flat_F & {\n strict: Flat_F;\n low: _Flat_F;\n};\n\nconst _flat: _Flat_F = (val, omitKey, options, path = '') => {\n const _options = { ...DEFAULT_FLAT_OPTIONS, ...options };\n const { [omitKey]: recursives, ...rest } = val;\n\n const check = _options.children;\n\n let out: any = {};\n out[path === '' ? _options.sep : path] = check ? val : rest;\n\n if (recursives) {\n for (const key in recursives) {\n if (Object.prototype.hasOwnProperty.call(recursives, key)) {\n const element = recursives[key];\n const inner = _flat(\n element,\n omitKey,\n options,\n `${path}${_options.sep}${key}`,\n );\n out = { ...out, ...inner };\n }\n }\n }\n\n return out;\n};\n\nexport const flatByKey: Flat = (val, key, options) =>\n _flat(val, key, options);\nflatByKey.low = _flat;\nflatByKey.strict = _flat;\n"],"names":[],"mappings":";;AAyBA,MAAM,KAAK,GAAY,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,KAAI;IAC1D,MAAM,QAAQ,GAAG,EAAE,GAAG,oBAAoB,EAAE,GAAG,OAAO,EAAE;AACxD,IAAA,MAAM,EAAE,CAAC,OAAO,GAAG,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG;AAE9C,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ;IAE/B,IAAI,GAAG,GAAQ,EAAE;IACjB,GAAG,CAAC,IAAI,KAAK,EAAE,GAAG,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI;IAE3D,IAAI,UAAU,EAAE;AACd,QAAA,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;AAC5B,YAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE;AACzD,gBAAA,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC;gBAC/B,MAAM,KAAK,GAAG,KAAK,CACjB,OAAO,EACP,OAAO,EACP,OAAO,EACP,GAAG,IAAI,CAAA,EAAG,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAA,CAAE,CAC/B;gBACD,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE;YAC5B;QACF;IACF;AAEA,IAAA,OAAO,GAAG;AACZ,CAAC;MAEY,SAAS,GAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,KAC/C,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO;AACzB,SAAS,CAAC,GAAG,GAAG,KAAK;AACrB,SAAS,CAAC,MAAM,GAAG,KAAK;;;;"}
|
package/lib/helpers.cjs
CHANGED
|
@@ -7,6 +7,17 @@ function isPrimitive(arg) {
|
|
|
7
7
|
arg === undefined ||
|
|
8
8
|
arg === null);
|
|
9
9
|
}
|
|
10
|
+
const DEFAULT_FLAT_OPTIONS = {
|
|
11
|
+
sep: '.',
|
|
12
|
+
children: false,
|
|
13
|
+
};
|
|
14
|
+
const DEFAULT_DECOMPOSE_OPTIONS = {
|
|
15
|
+
sep: '.',
|
|
16
|
+
object: 'key',
|
|
17
|
+
start: true,
|
|
18
|
+
};
|
|
10
19
|
|
|
20
|
+
exports.DEFAULT_DECOMPOSE_OPTIONS = DEFAULT_DECOMPOSE_OPTIONS;
|
|
21
|
+
exports.DEFAULT_FLAT_OPTIONS = DEFAULT_FLAT_OPTIONS;
|
|
11
22
|
exports.isPrimitive = isPrimitive;
|
|
12
23
|
//# sourceMappingURL=helpers.cjs.map
|
package/lib/helpers.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.cjs","sources":["../src/helpers.ts"],"sourcesContent":["type Primitive = string | number | boolean | null | undefined;\n\nexport function isPrimitive(arg: unknown): arg is Primitive {\n return (\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'boolean' ||\n arg === undefined ||\n arg === null\n );\n}\n"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"helpers.cjs","sources":["../src/helpers.ts"],"sourcesContent":["import type { DecomposeOptions, FlatOptions } from './types.types';\n\ntype Primitive = string | number | boolean | null | undefined;\n\nexport function isPrimitive(arg: unknown): arg is Primitive {\n return (\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'boolean' ||\n arg === undefined ||\n arg === null\n );\n}\n\nexport const DEFAULT_FLAT_OPTIONS = {\n sep: '.',\n children: false,\n} as const satisfies FlatOptions;\n\nexport const DEFAULT_DECOMPOSE_OPTIONS = {\n sep: '.',\n object: 'key',\n start: true,\n} as const satisfies DecomposeOptions;\n"],"names":[],"mappings":";;AAIM,SAAU,WAAW,CAAC,GAAY,EAAA;AACtC,IAAA,QACE,OAAO,GAAG,KAAK,QAAQ;QACvB,OAAO,GAAG,KAAK,QAAQ;QACvB,OAAO,GAAG,KAAK,SAAS;AACxB,QAAA,GAAG,KAAK,SAAS;QACjB,GAAG,KAAK,IAAI;AAEhB;AAEO,MAAM,oBAAoB,GAAG;AAClC,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,QAAQ,EAAE,KAAK;;AAGV,MAAM,yBAAyB,GAAG;AACvC,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,KAAK,EAAE,IAAI;;;;;;;"}
|
package/lib/helpers.d.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
type Primitive = string | number | boolean | null | undefined;
|
|
2
2
|
export declare function isPrimitive(arg: unknown): arg is Primitive;
|
|
3
|
+
export declare const DEFAULT_FLAT_OPTIONS: {
|
|
4
|
+
readonly sep: ".";
|
|
5
|
+
readonly children: false;
|
|
6
|
+
};
|
|
7
|
+
export declare const DEFAULT_DECOMPOSE_OPTIONS: {
|
|
8
|
+
readonly sep: ".";
|
|
9
|
+
readonly object: "key";
|
|
10
|
+
readonly start: true;
|
|
11
|
+
};
|
|
3
12
|
export {};
|
|
4
13
|
//# sourceMappingURL=helpers.d.ts.map
|
package/lib/helpers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAEA,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAE9D,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,SAAS,CAQ1D;AAED,eAAO,MAAM,oBAAoB;;;CAGD,CAAC;AAEjC,eAAO,MAAM,yBAAyB;;;;CAID,CAAC"}
|
package/lib/helpers.js
CHANGED
|
@@ -5,6 +5,15 @@ function isPrimitive(arg) {
|
|
|
5
5
|
arg === undefined ||
|
|
6
6
|
arg === null);
|
|
7
7
|
}
|
|
8
|
+
const DEFAULT_FLAT_OPTIONS = {
|
|
9
|
+
sep: '.',
|
|
10
|
+
children: false,
|
|
11
|
+
};
|
|
12
|
+
const DEFAULT_DECOMPOSE_OPTIONS = {
|
|
13
|
+
sep: '.',
|
|
14
|
+
object: 'key',
|
|
15
|
+
start: true,
|
|
16
|
+
};
|
|
8
17
|
|
|
9
|
-
export { isPrimitive };
|
|
18
|
+
export { DEFAULT_DECOMPOSE_OPTIONS, DEFAULT_FLAT_OPTIONS, isPrimitive };
|
|
10
19
|
//# sourceMappingURL=helpers.js.map
|
package/lib/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../src/helpers.ts"],"sourcesContent":["type Primitive = string | number | boolean | null | undefined;\n\nexport function isPrimitive(arg: unknown): arg is Primitive {\n return (\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'boolean' ||\n arg === undefined ||\n arg === null\n );\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../src/helpers.ts"],"sourcesContent":["import type { DecomposeOptions, FlatOptions } from './types.types';\n\ntype Primitive = string | number | boolean | null | undefined;\n\nexport function isPrimitive(arg: unknown): arg is Primitive {\n return (\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'boolean' ||\n arg === undefined ||\n arg === null\n );\n}\n\nexport const DEFAULT_FLAT_OPTIONS = {\n sep: '.',\n children: false,\n} as const satisfies FlatOptions;\n\nexport const DEFAULT_DECOMPOSE_OPTIONS = {\n sep: '.',\n object: 'key',\n start: true,\n} as const satisfies DecomposeOptions;\n"],"names":[],"mappings":"AAIM,SAAU,WAAW,CAAC,GAAY,EAAA;AACtC,IAAA,QACE,OAAO,GAAG,KAAK,QAAQ;QACvB,OAAO,GAAG,KAAK,QAAQ;QACvB,OAAO,GAAG,KAAK,SAAS;AACxB,QAAA,GAAG,KAAK,SAAS;QACjB,GAAG,KAAK,IAAI;AAEhB;AAEO,MAAM,oBAAoB,GAAG;AAClC,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,QAAQ,EAAE,KAAK;;AAGV,MAAM,yBAAyB,GAAG;AACvC,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,KAAK,EAAE,IAAI;;;;;"}
|
package/lib/index.cjs
CHANGED
|
@@ -6,7 +6,7 @@ var decomposeSV = require('./decomposeSV.cjs');
|
|
|
6
6
|
var flatByKey = require('./flatByKey.cjs');
|
|
7
7
|
var recompose = require('./recompose.cjs');
|
|
8
8
|
var sortMap = require('./sortMap.cjs');
|
|
9
|
-
var
|
|
9
|
+
var helpers = require('./helpers.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
@@ -17,6 +17,6 @@ exports.flatByKey = flatByKey.flatByKey;
|
|
|
17
17
|
exports.recompose = recompose.recompose;
|
|
18
18
|
exports.recomposeObjectUrl = recompose.recomposeObjectUrl;
|
|
19
19
|
exports.sortMap = sortMap.sortMap;
|
|
20
|
-
exports.DEFAULT_DECOMPOSE_OPTIONS =
|
|
21
|
-
exports.DEFAULT_FLAT_OPTIONS =
|
|
20
|
+
exports.DEFAULT_DECOMPOSE_OPTIONS = helpers.DEFAULT_DECOMPOSE_OPTIONS;
|
|
21
|
+
exports.DEFAULT_FLAT_OPTIONS = helpers.DEFAULT_FLAT_OPTIONS;
|
|
22
22
|
//# sourceMappingURL=index.cjs.map
|
package/lib/index.d.ts
CHANGED
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,WAAW,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -4,5 +4,5 @@ export { decomposeSV } from './decomposeSV.js';
|
|
|
4
4
|
export { flatByKey } from './flatByKey.js';
|
|
5
5
|
export { recompose, recomposeObjectUrl } from './recompose.js';
|
|
6
6
|
export { sortMap } from './sortMap.js';
|
|
7
|
-
export { DEFAULT_DECOMPOSE_OPTIONS, DEFAULT_FLAT_OPTIONS } from './
|
|
7
|
+
export { DEFAULT_DECOMPOSE_OPTIONS, DEFAULT_FLAT_OPTIONS } from './helpers.js';
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
package/lib/types.types.d.ts
CHANGED
|
@@ -1,27 +1,39 @@
|
|
|
1
1
|
import type { types } from '@bemedev/types';
|
|
2
|
+
import type { DEFAULT_DECOMPOSE_OPTIONS, DEFAULT_FLAT_OPTIONS } from './helpers';
|
|
2
3
|
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
4
|
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
5
|
export type EmptyObject = {};
|
|
6
|
+
export type SeparateOptionalAndRequiredKeys<T> = {
|
|
7
|
+
requireds: {
|
|
8
|
+
[K in keyof T as EmptyObject extends Pick<T, K> ? never : K]: T[K];
|
|
9
|
+
};
|
|
10
|
+
optionals: {
|
|
11
|
+
[K in keyof T as EmptyObject extends Pick<T, K> ? K : never]: T[K];
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export type SeparateUndefinedAndRequiredKeys<T> = {
|
|
15
|
+
requireds: {
|
|
16
|
+
[K in keyof T as undefined extends T[K] ? never : K]: T[K];
|
|
17
|
+
};
|
|
18
|
+
undefineds: {
|
|
19
|
+
[K in keyof T as undefined extends T[K] ? K : never]: T[K];
|
|
20
|
+
};
|
|
21
|
+
};
|
|
5
22
|
type WO = 'key' | 'object' | 'both';
|
|
6
23
|
type _Decompose<T, sep extends string = '.', wo extends WO = 'key', Remaining extends string = ''> = {
|
|
7
24
|
[k in Exclude<keyof T, undefined>]: T[k] extends infer Tk ? types._UnionToIntersection2<Tk extends types.AnyArray<infer A> ? number extends Tk['length'] ? (wo extends 'object' | 'both' ? Record<`${Remaining}${k & string}`, Tk> : EmptyObject) & (wo extends 'key' | 'both' ? {
|
|
8
25
|
[Key in `${Remaining}${k & string}${sep}[${number}]`]: A;
|
|
9
26
|
} : EmptyObject) : Extract<{
|
|
10
27
|
[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;
|
|
11
|
-
} extends infer ARR ? ARR[keyof ARR] : never, object> & (wo extends 'object' | 'both' ? Record<`${Remaining}${k & string}`, Tk> : EmptyObject) : Tk extends Ru ? object extends Required<Tk> ? Record<`${Remaining}${k & string}`, Tk> : _Decompose<
|
|
28
|
+
} extends infer ARR ? ARR[keyof ARR] : never, object> & (wo extends 'object' | 'both' ? Record<`${Remaining}${k & string}`, Tk> : EmptyObject) : Tk extends Ru ? object extends Required<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;
|
|
12
29
|
}[Exclude<keyof T, undefined>];
|
|
13
30
|
export type DecomposeOptions = {
|
|
14
31
|
sep?: string;
|
|
15
32
|
object?: WO;
|
|
16
33
|
start?: boolean;
|
|
17
34
|
};
|
|
18
|
-
export declare const DEFAULT_DECOMPOSE_OPTIONS: {
|
|
19
|
-
readonly sep: ".";
|
|
20
|
-
readonly object: "key";
|
|
21
|
-
readonly start: true;
|
|
22
|
-
};
|
|
23
35
|
type DefaultDecomposeOptions = typeof DEFAULT_DECOMPOSE_OPTIONS;
|
|
24
|
-
export type Decompose<T, O extends DecomposeOptions = DefaultDecomposeOptions, sep extends string = O['sep'] extends string ? O['sep'] : DefaultDecomposeOptions['sep']> =
|
|
36
|
+
export type Decompose<T, O extends DecomposeOptions = DefaultDecomposeOptions, sep extends string = O['sep'] extends string ? O['sep'] : DefaultDecomposeOptions['sep']> = EmptyObject extends Required<T> ? EmptyObject : types.UnionToIntersection<_Decompose<T, sep, O['object'] extends WO ? O['object'] : DefaultDecomposeOptions['object'], O['start'] extends infer S extends boolean ? S extends true ? sep : '' : sep>> extends infer P ? {
|
|
25
37
|
[K in keyof P]: P[K];
|
|
26
38
|
} : never;
|
|
27
39
|
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}` | ''>;
|
|
@@ -37,10 +49,6 @@ export type FlatOptions = {
|
|
|
37
49
|
sep?: string;
|
|
38
50
|
children?: boolean;
|
|
39
51
|
};
|
|
40
|
-
export declare const DEFAULT_FLAT_OPTIONS: {
|
|
41
|
-
readonly sep: ".";
|
|
42
|
-
readonly children: false;
|
|
43
|
-
};
|
|
44
52
|
type DefaultFlatOptions = typeof DEFAULT_FLAT_OPTIONS;
|
|
45
53
|
export type FlatByKey<T, 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']>;
|
|
46
54
|
export type StateValue = string | StateValueMap;
|
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;
|
|
1
|
+
{"version":3,"file":"types.types.d.ts","sourceRoot":"","sources":["../src/types.types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bemedev/decompose",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "Decompose object and so more",
|
|
5
5
|
"author": {
|
|
6
6
|
"email": "bri_lvi@icloud.com",
|
|
@@ -54,37 +54,37 @@
|
|
|
54
54
|
"lint-watch": "onchange --await-write-finish 5500 \"**/*\" -- pnpm run lint",
|
|
55
55
|
"prepublishOnly": "",
|
|
56
56
|
"prepare": "husky",
|
|
57
|
-
"upgrade": "pnpm up --latest"
|
|
57
|
+
"upgrade": "pnpm up --latest && pnpm add -D vitest@3.2.4 @vitest/coverage-v8@3.2.4"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
|
-
"@bemedev/fsf": "^0.
|
|
61
|
-
"@bemedev/rollup-config": "^0.
|
|
60
|
+
"@bemedev/fsf": "^1.0.1",
|
|
61
|
+
"@bemedev/rollup-config": "^0.2.2",
|
|
62
62
|
"@bemedev/vitest-alias": "^0.0.3",
|
|
63
63
|
"@bemedev/vitest-exclude": "^0.1.1",
|
|
64
|
-
"@bemedev/vitest-extended": "^1.3
|
|
64
|
+
"@bemedev/vitest-extended": "^1.5.3",
|
|
65
65
|
"@eslint/eslintrc": "^3.3.1",
|
|
66
|
-
"@eslint/js": "^9.
|
|
67
|
-
"@types/node": "^24.
|
|
68
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
69
|
-
"@typescript-eslint/parser": "^8.
|
|
66
|
+
"@eslint/js": "^9.39.1",
|
|
67
|
+
"@types/node": "^24.10.1",
|
|
68
|
+
"@typescript-eslint/eslint-plugin": "^8.47.0",
|
|
69
|
+
"@typescript-eslint/parser": "^8.47.0",
|
|
70
70
|
"@vitest/coverage-v8": "^3.2.4",
|
|
71
|
-
"eslint": "^9.
|
|
72
|
-
"glob": "^
|
|
73
|
-
"globals": "^16.
|
|
71
|
+
"eslint": "^9.39.1",
|
|
72
|
+
"glob": "^13.0.0",
|
|
73
|
+
"globals": "^16.5.0",
|
|
74
74
|
"husky": "^9.1.7",
|
|
75
|
-
"immer": "^
|
|
75
|
+
"immer": "^11.0.0",
|
|
76
76
|
"onchange": "^7.1.0",
|
|
77
77
|
"prettier": "^3.6.2",
|
|
78
78
|
"pretty-quick": "^4.2.2",
|
|
79
|
-
"rollup": "^4.
|
|
79
|
+
"rollup": "^4.53.3",
|
|
80
80
|
"rollup-plugin-tsc-alias": "^1.1.4",
|
|
81
81
|
"rollup-plugin-typescript2": "^0.36.0",
|
|
82
82
|
"tslib": "^2.8.1",
|
|
83
|
-
"typescript": "^5.9.
|
|
83
|
+
"typescript": "^5.9.3",
|
|
84
84
|
"vitest": "^3.2.4"
|
|
85
85
|
},
|
|
86
86
|
"dependencies": {
|
|
87
|
-
"@bemedev/build-tests": "^0.1.
|
|
87
|
+
"@bemedev/build-tests": "^0.1.2",
|
|
88
88
|
"ts-deepmerge": "^7.0.3"
|
|
89
89
|
},
|
|
90
90
|
"peerDependencies": {
|
package/lib/types.types.cjs
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
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
|
package/lib/types.types.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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 Exclude<keyof T, undefined>]: T[k] extends infer Tk\n ? types._UnionToIntersection2<\n Tk extends types.AnyArray<infer A>\n ? number extends Tk['length']\n ? (wo extends 'object' | 'both'\n ? Record<`${Remaining}${k & string}`, Tk>\n : EmptyObject) &\n (wo extends 'key' | 'both'\n ? {\n [Key in `${Remaining}${k & string}${sep}[${number}]`]: A;\n }\n : EmptyObject)\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 Required<Tk>\n ? Record<`${Remaining}${k & string}`, Tk>\n : _Decompose<\n Required<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}[Exclude<keyof T, undefined>];\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 Required<T>\n ? NonNullable<unknown>\n : types.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 > extends infer P\n ? {\n [K in keyof P]: P[K];\n }\n : never;\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,\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, sep> as ExcludeFrom<\n K,\n KEY,\n sep\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,\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\nexport type UnionKeys<U> = U extends Record<infer K, any> ? K : never;\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<\n key & string\n >]: types._UnionToIntersection1<\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":";;AA8GO,MAAM,yBAAyB,GAAG;AACvC,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,KAAK,EAAE,IAAI;;AA0FN,MAAM,oBAAoB,GAAG;AAClC,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,QAAQ,EAAE,KAAK;;AAyEjB;;;;;"}
|
package/lib/types.types.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
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
|
package/lib/types.types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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 Exclude<keyof T, undefined>]: T[k] extends infer Tk\n ? types._UnionToIntersection2<\n Tk extends types.AnyArray<infer A>\n ? number extends Tk['length']\n ? (wo extends 'object' | 'both'\n ? Record<`${Remaining}${k & string}`, Tk>\n : EmptyObject) &\n (wo extends 'key' | 'both'\n ? {\n [Key in `${Remaining}${k & string}${sep}[${number}]`]: A;\n }\n : EmptyObject)\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 Required<Tk>\n ? Record<`${Remaining}${k & string}`, Tk>\n : _Decompose<\n Required<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}[Exclude<keyof T, undefined>];\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 Required<T>\n ? NonNullable<unknown>\n : types.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 > extends infer P\n ? {\n [K in keyof P]: P[K];\n }\n : never;\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,\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, sep> as ExcludeFrom<\n K,\n KEY,\n sep\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,\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\nexport type UnionKeys<U> = U extends Record<infer K, any> ? K : never;\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<\n key & string\n >]: types._UnionToIntersection1<\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":"AA8GO,MAAM,yBAAyB,GAAG;AACvC,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,KAAK,EAAE,IAAI;;AA0FN,MAAM,oBAAoB,GAAG;AAClC,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,QAAQ,EAAE,KAAK;;AAyEjB;;;;"}
|