@bemedev/typings 0.0.1

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.
Files changed (109) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +75 -0
  3. package/lib/constants.cjs +26 -0
  4. package/lib/constants.cjs.map +1 -0
  5. package/lib/constants.d.ts +8 -0
  6. package/lib/constants.d.ts.map +1 -0
  7. package/lib/constants.js +18 -0
  8. package/lib/constants.js.map +1 -0
  9. package/lib/helpers/any.cjs +6 -0
  10. package/lib/helpers/any.cjs.map +1 -0
  11. package/lib/helpers/any.d.ts +4 -0
  12. package/lib/helpers/any.d.ts.map +1 -0
  13. package/lib/helpers/any.js +4 -0
  14. package/lib/helpers/any.js.map +1 -0
  15. package/lib/helpers/array.cjs +10 -0
  16. package/lib/helpers/array.cjs.map +1 -0
  17. package/lib/helpers/array.d.ts +4 -0
  18. package/lib/helpers/array.d.ts.map +1 -0
  19. package/lib/helpers/array.js +8 -0
  20. package/lib/helpers/array.js.map +1 -0
  21. package/lib/helpers/custom.cjs +10 -0
  22. package/lib/helpers/custom.cjs.map +1 -0
  23. package/lib/helpers/custom.d.ts +4 -0
  24. package/lib/helpers/custom.d.ts.map +1 -0
  25. package/lib/helpers/custom.js +8 -0
  26. package/lib/helpers/custom.js.map +1 -0
  27. package/lib/helpers/index.cjs +30 -0
  28. package/lib/helpers/index.cjs.map +1 -0
  29. package/lib/helpers/index.d.ts +13 -0
  30. package/lib/helpers/index.d.ts.map +1 -0
  31. package/lib/helpers/index.js +13 -0
  32. package/lib/helpers/index.js.map +1 -0
  33. package/lib/helpers/intersection.cjs +14 -0
  34. package/lib/helpers/intersection.cjs.map +1 -0
  35. package/lib/helpers/intersection.d.ts +11 -0
  36. package/lib/helpers/intersection.d.ts.map +1 -0
  37. package/lib/helpers/intersection.js +12 -0
  38. package/lib/helpers/intersection.js.map +1 -0
  39. package/lib/helpers/litterals.cjs +6 -0
  40. package/lib/helpers/litterals.cjs.map +1 -0
  41. package/lib/helpers/litterals.d.ts +4 -0
  42. package/lib/helpers/litterals.d.ts.map +1 -0
  43. package/lib/helpers/litterals.js +4 -0
  44. package/lib/helpers/litterals.js.map +1 -0
  45. package/lib/helpers/maybe.cjs +10 -0
  46. package/lib/helpers/maybe.cjs.map +1 -0
  47. package/lib/helpers/maybe.d.ts +4 -0
  48. package/lib/helpers/maybe.d.ts.map +1 -0
  49. package/lib/helpers/maybe.js +8 -0
  50. package/lib/helpers/maybe.js.map +1 -0
  51. package/lib/helpers/partial.cjs +15 -0
  52. package/lib/helpers/partial.cjs.map +1 -0
  53. package/lib/helpers/partial.d.ts +4 -0
  54. package/lib/helpers/partial.d.ts.map +1 -0
  55. package/lib/helpers/partial.js +13 -0
  56. package/lib/helpers/partial.js.map +1 -0
  57. package/lib/helpers/record.cjs +12 -0
  58. package/lib/helpers/record.cjs.map +1 -0
  59. package/lib/helpers/record.d.ts +4 -0
  60. package/lib/helpers/record.d.ts.map +1 -0
  61. package/lib/helpers/record.js +10 -0
  62. package/lib/helpers/record.js.map +1 -0
  63. package/lib/helpers/soa.cjs +10 -0
  64. package/lib/helpers/soa.cjs.map +1 -0
  65. package/lib/helpers/soa.d.ts +4 -0
  66. package/lib/helpers/soa.d.ts.map +1 -0
  67. package/lib/helpers/soa.js +8 -0
  68. package/lib/helpers/soa.js.map +1 -0
  69. package/lib/helpers/sv.cjs +6 -0
  70. package/lib/helpers/sv.cjs.map +1 -0
  71. package/lib/helpers/sv.d.ts +4 -0
  72. package/lib/helpers/sv.d.ts.map +1 -0
  73. package/lib/helpers/sv.js +4 -0
  74. package/lib/helpers/sv.js.map +1 -0
  75. package/lib/helpers/tuple.cjs +6 -0
  76. package/lib/helpers/tuple.cjs.map +1 -0
  77. package/lib/helpers/tuple.d.ts +4 -0
  78. package/lib/helpers/tuple.d.ts.map +1 -0
  79. package/lib/helpers/tuple.js +4 -0
  80. package/lib/helpers/tuple.js.map +1 -0
  81. package/lib/helpers/union.cjs +13 -0
  82. package/lib/helpers/union.cjs.map +1 -0
  83. package/lib/helpers/union.d.ts +7 -0
  84. package/lib/helpers/union.d.ts.map +1 -0
  85. package/lib/helpers/union.js +11 -0
  86. package/lib/helpers/union.js.map +1 -0
  87. package/lib/index.cjs +40 -0
  88. package/lib/index.cjs.map +1 -0
  89. package/lib/index.d.ts +5 -0
  90. package/lib/index.d.ts.map +1 -0
  91. package/lib/index.js +15 -0
  92. package/lib/index.js.map +1 -0
  93. package/lib/transform.cjs +63 -0
  94. package/lib/transform.cjs.map +1 -0
  95. package/lib/transform.d.ts +3 -0
  96. package/lib/transform.d.ts.map +1 -0
  97. package/lib/transform.js +61 -0
  98. package/lib/transform.js.map +1 -0
  99. package/lib/transform.types.d.ts +18 -0
  100. package/lib/transform.types.d.ts.map +1 -0
  101. package/lib/types.d.ts +81 -0
  102. package/lib/types.d.ts.map +1 -0
  103. package/lib/utils/expandFn.cjs +12 -0
  104. package/lib/utils/expandFn.cjs.map +1 -0
  105. package/lib/utils/expandFn.d.ts +5 -0
  106. package/lib/utils/expandFn.d.ts.map +1 -0
  107. package/lib/utils/expandFn.js +10 -0
  108. package/lib/utils/expandFn.js.map +1 -0
  109. package/package.json +114 -0
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ const sv = {};
4
+
5
+ module.exports = sv;
6
+ //# sourceMappingURL=sv.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sv.cjs","sources":["../../src/helpers/sv.ts"],"sourcesContent":["import type { Custom, StateValue } from '../types';\n\nconst sv = {} as Custom<StateValue>;\nexport default sv;\n"],"names":[],"mappings":";;AAEA,MAAM,EAAE,GAAG;;;;"}
@@ -0,0 +1,4 @@
1
+ import type { Custom, StateValue } from '../types';
2
+ declare const sv: Custom<StateValue>;
3
+ export default sv;
4
+ //# sourceMappingURL=sv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sv.d.ts","sourceRoot":"","sources":["../../src/helpers/sv.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEnD,QAAA,MAAM,EAAE,EAAS,MAAM,CAAC,UAAU,CAAC,CAAC;AACpC,eAAe,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ const sv = {};
2
+
3
+ export { sv as default };
4
+ //# sourceMappingURL=sv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sv.js","sources":["../../src/helpers/sv.ts"],"sourcesContent":["import type { Custom, StateValue } from '../types';\n\nconst sv = {} as Custom<StateValue>;\nexport default sv;\n"],"names":[],"mappings":"AAEA,MAAM,EAAE,GAAG;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ const tuple = (...values) => values;
4
+
5
+ module.exports = tuple;
6
+ //# sourceMappingURL=tuple.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuple.cjs","sources":["../../src/helpers/tuple.ts"],"sourcesContent":["import type { __ObjectS, ArrayCustom, NotReadonly, Maybe } from '../types';\n\nconst tuple = <\n const T extends [\n __ObjectS | Maybe | ArrayCustom,\n __ObjectS | Maybe | ArrayCustom,\n ...(__ObjectS | Maybe | ArrayCustom)[],\n ],\n>(\n ...values: T\n) => values as NotReadonly<T>;\n\nexport default tuple;\n"],"names":[],"mappings":";;AAEA,MAAM,KAAK,GAAG,CAOZ,GAAG,MAAS,KACT;;;;"}
@@ -0,0 +1,4 @@
1
+ import type { __ObjectS, ArrayCustom, NotReadonly, Maybe } from '../types';
2
+ declare const tuple: <const T extends [__ObjectS | Maybe | ArrayCustom, __ObjectS | Maybe | ArrayCustom, ...(__ObjectS | Maybe | ArrayCustom)[]]>(...values: T) => NotReadonly<T>;
3
+ export default tuple;
4
+ //# sourceMappingURL=tuple.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuple.d.ts","sourceRoot":"","sources":["../../src/helpers/tuple.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE3E,QAAA,MAAM,KAAK,GACT,KAAK,CAAC,CAAC,SAAS,CACd,SAAS,GAAG,KAAK,GAAG,WAAW,EAC/B,SAAS,GAAG,KAAK,GAAG,WAAW,EAC/B,GAAG,CAAC,SAAS,GAAG,KAAK,GAAG,WAAW,CAAC,EAAE,CACvC,EAED,GAAG,QAAQ,CAAC,KACC,WAAW,CAAC,CAAC,CAAC,CAAC;AAE9B,eAAe,KAAK,CAAC"}
@@ -0,0 +1,4 @@
1
+ const tuple = (...values) => values;
2
+
3
+ export { tuple as default };
4
+ //# sourceMappingURL=tuple.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuple.js","sources":["../../src/helpers/tuple.ts"],"sourcesContent":["import type { __ObjectS, ArrayCustom, NotReadonly, Maybe } from '../types';\n\nconst tuple = <\n const T extends [\n __ObjectS | Maybe | ArrayCustom,\n __ObjectS | Maybe | ArrayCustom,\n ...(__ObjectS | Maybe | ArrayCustom)[],\n ],\n>(\n ...values: T\n) => values as NotReadonly<T>;\n\nexport default tuple;\n"],"names":[],"mappings":"AAEA,MAAM,KAAK,GAAG,CAOZ,GAAG,MAAS,KACT;;;;"}
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ var utils_expandFn = require('../utils/expandFn.cjs');
4
+
5
+ const union = (...values) => {
6
+ return values[0];
7
+ };
8
+ const fn = utils_expandFn.expandFn(union, {
9
+ discriminated: (_key, ...values) => union(...values),
10
+ });
11
+
12
+ module.exports = fn;
13
+ //# sourceMappingURL=union.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"union.cjs","sources":["../../src/helpers/union.ts"],"sourcesContent":["import type { Keys, ObjectMapS, ObjectS } from '../types';\nimport { expandFn } from '../utils/expandFn';\n\nconst union = <T extends [ObjectS, ObjectS, ...ObjectS[]]>(\n ...values: T\n) => {\n return values[0] as T[number];\n};\n\ntype Discriminated<K extends Keys> = ObjectMapS & Record<K, ObjectS>;\n\nconst fn = expandFn(union, {\n discriminated: <\n const K extends Keys,\n T extends [Discriminated<K>, Discriminated<K>, ...Discriminated<K>[]],\n >(\n _key: K,\n ...values: T\n ) => union(...values),\n});\n\nexport default fn;\n"],"names":["expandFn"],"mappings":";;;;AAGA,MAAM,KAAK,GAAG,CACZ,GAAG,MAAS,KACV;AACF,IAAA,OAAO,MAAM,CAAC,CAAC,CAAc;AAC/B,CAAC;AAID,MAAM,EAAE,GAAGA,uBAAQ,CAAC,KAAK,EAAE;AACzB,IAAA,aAAa,EAAE,CAIb,IAAO,EACP,GAAG,MAAS,KACT,KAAK,CAAC,GAAG,MAAM,CAAC;AACtB,CAAA;;;;"}
@@ -0,0 +1,7 @@
1
+ import type { Keys, ObjectMapS, ObjectS } from '../types';
2
+ type Discriminated<K extends Keys> = ObjectMapS & Record<K, ObjectS>;
3
+ declare const fn: {
4
+ readonly discriminated: <const K extends Keys, T extends [Discriminated<K>, Discriminated<K>, ...Discriminated<K>[]]>(_key: K, ...values: T) => T[number];
5
+ } & (<T extends [ObjectS, ObjectS, ...ObjectS[]]>(...values: T) => T[number]);
6
+ export default fn;
7
+ //# sourceMappingURL=union.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"union.d.ts","sourceRoot":"","sources":["../../src/helpers/union.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAS1D,KAAK,aAAa,CAAC,CAAC,SAAS,IAAI,IAAI,UAAU,GAAG,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAErE,QAAA,MAAM,EAAE;mCAEE,CAAC,SAAS,IAAI,EACpB,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,QAE/D,CAAC,aACI,CAAC;MAdD,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,aAC5C,CAAC,KAEQ,CAAC,CAAC,MAAM,CAAC,CAa7B,CAAC;AAEH,eAAe,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { expandFn } from '../utils/expandFn.js';
2
+
3
+ const union = (...values) => {
4
+ return values[0];
5
+ };
6
+ const fn = expandFn(union, {
7
+ discriminated: (_key, ...values) => union(...values),
8
+ });
9
+
10
+ export { fn as default };
11
+ //# sourceMappingURL=union.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"union.js","sources":["../../src/helpers/union.ts"],"sourcesContent":["import type { Keys, ObjectMapS, ObjectS } from '../types';\nimport { expandFn } from '../utils/expandFn';\n\nconst union = <T extends [ObjectS, ObjectS, ...ObjectS[]]>(\n ...values: T\n) => {\n return values[0] as T[number];\n};\n\ntype Discriminated<K extends Keys> = ObjectMapS & Record<K, ObjectS>;\n\nconst fn = expandFn(union, {\n discriminated: <\n const K extends Keys,\n T extends [Discriminated<K>, Discriminated<K>, ...Discriminated<K>[]],\n >(\n _key: K,\n ...values: T\n ) => union(...values),\n});\n\nexport default fn;\n"],"names":[],"mappings":";;AAGA,MAAM,KAAK,GAAG,CACZ,GAAG,MAAS,KACV;AACF,IAAA,OAAO,MAAM,CAAC,CAAC,CAAc;AAC/B,CAAC;AAID,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE;AACzB,IAAA,aAAa,EAAE,CAIb,IAAO,EACP,GAAG,MAAS,KACT,KAAK,CAAC,GAAG,MAAM,CAAC;AACtB,CAAA;;;;"}
package/lib/index.cjs ADDED
@@ -0,0 +1,40 @@
1
+ 'use strict';
2
+
3
+ var constants = require('./constants.cjs');
4
+ var helpers_any = require('./helpers/any.cjs');
5
+ var helpers_array = require('./helpers/array.cjs');
6
+ var helpers_custom = require('./helpers/custom.cjs');
7
+ var helpers_intersection = require('./helpers/intersection.cjs');
8
+ var helpers_litterals = require('./helpers/litterals.cjs');
9
+ var helpers_maybe = require('./helpers/maybe.cjs');
10
+ var helpers_partial = require('./helpers/partial.cjs');
11
+ var helpers_record = require('./helpers/record.cjs');
12
+ var helpers_soa = require('./helpers/soa.cjs');
13
+ var helpers_sv = require('./helpers/sv.cjs');
14
+ var helpers_tuple = require('./helpers/tuple.cjs');
15
+ var helpers_union = require('./helpers/union.cjs');
16
+ var transform = require('./transform.cjs');
17
+
18
+
19
+
20
+ exports.ARRAY = constants.ARRAY;
21
+ exports.CUSTOM = constants.CUSTOM;
22
+ exports.MAYBE = constants.MAYBE;
23
+ exports.PARTIAL = constants.PARTIAL;
24
+ exports.PRIMITIVES = constants.PRIMITIVES;
25
+ exports.PRIMITIVE_OBJECTS = constants.PRIMITIVE_OBJECTS;
26
+ exports.SOA = constants.SOA;
27
+ exports.any = helpers_any;
28
+ exports.array = helpers_array;
29
+ exports.custom = helpers_custom;
30
+ exports.intersection = helpers_intersection;
31
+ exports.litterals = helpers_litterals;
32
+ exports.maybe = helpers_maybe;
33
+ exports.partial = helpers_partial;
34
+ exports.record = helpers_record;
35
+ exports.soa = helpers_soa;
36
+ exports.sv = helpers_sv;
37
+ exports.tuple = helpers_tuple;
38
+ exports.union = helpers_union;
39
+ exports.transform = transform.transform;
40
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export * from './constants';
2
+ export * from './helpers';
3
+ export * from './transform';
4
+ export * from './types';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,15 @@
1
+ export { ARRAY, CUSTOM, MAYBE, PARTIAL, PRIMITIVES, PRIMITIVE_OBJECTS, SOA } from './constants.js';
2
+ export { default as any } from './helpers/any.js';
3
+ export { default as array } from './helpers/array.js';
4
+ export { default as custom } from './helpers/custom.js';
5
+ export { default as intersection } from './helpers/intersection.js';
6
+ export { default as litterals } from './helpers/litterals.js';
7
+ export { default as maybe } from './helpers/maybe.js';
8
+ export { default as partial } from './helpers/partial.js';
9
+ export { default as record } from './helpers/record.js';
10
+ export { default as soa } from './helpers/soa.js';
11
+ export { default as sv } from './helpers/sv.js';
12
+ export { default as tuple } from './helpers/tuple.js';
13
+ export { default as union } from './helpers/union.js';
14
+ export { transform } from './transform.js';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -0,0 +1,63 @@
1
+ 'use strict';
2
+
3
+ var constants = require('./constants.cjs');
4
+ var helpers_any = require('./helpers/any.cjs');
5
+ var helpers_array = require('./helpers/array.cjs');
6
+ var helpers_custom = require('./helpers/custom.cjs');
7
+ var helpers_intersection = require('./helpers/intersection.cjs');
8
+ var helpers_litterals = require('./helpers/litterals.cjs');
9
+ var helpers_maybe = require('./helpers/maybe.cjs');
10
+ var helpers_partial = require('./helpers/partial.cjs');
11
+ var helpers_record = require('./helpers/record.cjs');
12
+ var helpers_soa = require('./helpers/soa.cjs');
13
+ var helpers_sv = require('./helpers/sv.cjs');
14
+ var helpers_tuple = require('./helpers/tuple.cjs');
15
+ var helpers_union = require('./helpers/union.cjs');
16
+
17
+ const transformTypes = (type) => {
18
+ const out = type === 'primitive' ? {} : undefined;
19
+ return out;
20
+ };
21
+ const _transform = (obj) => {
22
+ const _obj = obj;
23
+ const checkArray = Array.isArray(obj);
24
+ if (checkArray) {
25
+ return obj.map(_transform);
26
+ }
27
+ const checkObject = typeof obj === 'object';
28
+ if (checkObject) {
29
+ if (constants.MAYBE in _obj) {
30
+ return _transform(_obj[constants.MAYBE]);
31
+ }
32
+ const isCustom = Object.keys(obj).every(key => key === constants.CUSTOM);
33
+ const out = {};
34
+ if (isCustom)
35
+ return out;
36
+ const entries = Object.entries(obj).filter(([key]) => key !== constants.PARTIAL);
37
+ entries.forEach(([key, value]) => {
38
+ out[key] = _transform(value);
39
+ });
40
+ return out;
41
+ }
42
+ return transformTypes(_obj);
43
+ };
44
+ const transform = option => {
45
+ const objectS = option({
46
+ any: helpers_any,
47
+ custom: helpers_custom,
48
+ intersection: helpers_intersection,
49
+ litterals: helpers_litterals,
50
+ maybe: helpers_maybe,
51
+ partial: helpers_partial,
52
+ record: helpers_record,
53
+ soa: helpers_soa,
54
+ sv: helpers_sv,
55
+ union: helpers_union,
56
+ array: helpers_array,
57
+ tuple: helpers_tuple,
58
+ });
59
+ return _transform(objectS);
60
+ };
61
+
62
+ exports.transform = transform;
63
+ //# sourceMappingURL=transform.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.cjs","sources":["../src/transform.ts"],"sourcesContent":["import { CUSTOM, MAYBE, PARTIAL } from './constants';\nimport {\n any,\n array,\n custom,\n intersection,\n litterals,\n maybe,\n partial,\n record,\n soa,\n sv,\n tuple,\n union,\n} from './helpers';\nimport type { Transform_F } from './transform.types';\nimport type { inferT, ObjectS, TransformTypes, Types } from './types';\n\nconst transformTypes = <T extends Types>(type: T): TransformTypes<T> => {\n const out: any = type === 'primitive' ? {} : undefined;\n return out;\n};\n\nconst _transform = <T extends ObjectS>(obj: T): inferT<T> => {\n const _obj = obj as any;\n\n const checkArray = Array.isArray(obj);\n if (checkArray) {\n return obj.map(_transform as any) as any;\n }\n\n const checkObject = typeof obj === 'object';\n if (checkObject) {\n if (MAYBE in _obj) {\n return _transform(_obj[MAYBE]);\n }\n\n const isCustom = Object.keys(obj).every(key => key === CUSTOM);\n const out: any = {};\n if (isCustom) return out;\n\n const entries = Object.entries(obj).filter(([key]) => key !== PARTIAL);\n\n entries.forEach(([key, value]) => {\n out[key] = _transform(value);\n });\n\n return out;\n }\n\n return transformTypes(_obj) as any;\n};\n\nexport const transform: Transform_F = option => {\n const objectS = option({\n any,\n custom,\n intersection,\n litterals,\n maybe,\n partial,\n record,\n soa,\n sv,\n union,\n array,\n tuple,\n });\n\n return _transform(objectS);\n};\n"],"names":["MAYBE","CUSTOM","PARTIAL","any","custom","intersection","litterals","maybe","partial","record","soa","sv","union","array","tuple"],"mappings":";;;;;;;;;;;;;;;;AAkBA,MAAM,cAAc,GAAG,CAAkB,IAAO,KAAuB;AACrE,IAAA,MAAM,GAAG,GAAQ,IAAI,KAAK,WAAW,GAAG,EAAE,GAAG,SAAS;AACtD,IAAA,OAAO,GAAG;AACZ,CAAC;AAED,MAAM,UAAU,GAAG,CAAoB,GAAM,KAAe;IAC1D,MAAM,IAAI,GAAG,GAAU;IAEvB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;IACrC,IAAI,UAAU,EAAE;AACd,QAAA,OAAO,GAAG,CAAC,GAAG,CAAC,UAAiB,CAAQ;IAC1C;AAEA,IAAA,MAAM,WAAW,GAAG,OAAO,GAAG,KAAK,QAAQ;IAC3C,IAAI,WAAW,EAAE;AACf,QAAA,IAAIA,eAAK,IAAI,IAAI,EAAE;AACjB,YAAA,OAAO,UAAU,CAAC,IAAI,CAACA,eAAK,CAAC,CAAC;QAChC;AAEA,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,KAAKC,gBAAM,CAAC;QAC9D,MAAM,GAAG,GAAQ,EAAE;AACnB,QAAA,IAAI,QAAQ;AAAE,YAAA,OAAO,GAAG;QAExB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,KAAKC,iBAAO,CAAC;QAEtE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;AAC9B,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,OAAO,cAAc,CAAC,IAAI,CAAQ;AACpC,CAAC;AAEM,MAAM,SAAS,GAAgB,MAAM,IAAG;IAC7C,MAAM,OAAO,GAAG,MAAM,CAAC;aACrBC,WAAG;gBACHC,cAAM;sBACNC,oBAAY;mBACZC,iBAAS;eACTC,aAAK;iBACLC,eAAO;gBACPC,cAAM;aACNC,WAAG;YACHC,UAAE;eACFC,aAAK;eACLC,aAAK;eACLC,aAAK;AACN,KAAA,CAAC;AAEF,IAAA,OAAO,UAAU,CAAC,OAAO,CAAC;AAC5B;;;;"}
@@ -0,0 +1,3 @@
1
+ import type { Transform_F } from './transform.types';
2
+ export declare const transform: Transform_F;
3
+ //# sourceMappingURL=transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAsCrD,eAAO,MAAM,SAAS,EAAE,WAiBvB,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { MAYBE, CUSTOM, PARTIAL } from './constants.js';
2
+ import any from './helpers/any.js';
3
+ import array from './helpers/array.js';
4
+ import custom from './helpers/custom.js';
5
+ import intersection from './helpers/intersection.js';
6
+ import litterals from './helpers/litterals.js';
7
+ import maybe from './helpers/maybe.js';
8
+ import partial from './helpers/partial.js';
9
+ import record from './helpers/record.js';
10
+ import soa from './helpers/soa.js';
11
+ import sv from './helpers/sv.js';
12
+ import tuple from './helpers/tuple.js';
13
+ import fn from './helpers/union.js';
14
+
15
+ const transformTypes = (type) => {
16
+ const out = type === 'primitive' ? {} : undefined;
17
+ return out;
18
+ };
19
+ const _transform = (obj) => {
20
+ const _obj = obj;
21
+ const checkArray = Array.isArray(obj);
22
+ if (checkArray) {
23
+ return obj.map(_transform);
24
+ }
25
+ const checkObject = typeof obj === 'object';
26
+ if (checkObject) {
27
+ if (MAYBE in _obj) {
28
+ return _transform(_obj[MAYBE]);
29
+ }
30
+ const isCustom = Object.keys(obj).every(key => key === CUSTOM);
31
+ const out = {};
32
+ if (isCustom)
33
+ return out;
34
+ const entries = Object.entries(obj).filter(([key]) => key !== PARTIAL);
35
+ entries.forEach(([key, value]) => {
36
+ out[key] = _transform(value);
37
+ });
38
+ return out;
39
+ }
40
+ return transformTypes(_obj);
41
+ };
42
+ const transform = option => {
43
+ const objectS = option({
44
+ any,
45
+ custom,
46
+ intersection,
47
+ litterals,
48
+ maybe,
49
+ partial,
50
+ record,
51
+ soa,
52
+ sv,
53
+ union: fn,
54
+ array,
55
+ tuple,
56
+ });
57
+ return _transform(objectS);
58
+ };
59
+
60
+ export { transform };
61
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","sources":["../src/transform.ts"],"sourcesContent":["import { CUSTOM, MAYBE, PARTIAL } from './constants';\nimport {\n any,\n array,\n custom,\n intersection,\n litterals,\n maybe,\n partial,\n record,\n soa,\n sv,\n tuple,\n union,\n} from './helpers';\nimport type { Transform_F } from './transform.types';\nimport type { inferT, ObjectS, TransformTypes, Types } from './types';\n\nconst transformTypes = <T extends Types>(type: T): TransformTypes<T> => {\n const out: any = type === 'primitive' ? {} : undefined;\n return out;\n};\n\nconst _transform = <T extends ObjectS>(obj: T): inferT<T> => {\n const _obj = obj as any;\n\n const checkArray = Array.isArray(obj);\n if (checkArray) {\n return obj.map(_transform as any) as any;\n }\n\n const checkObject = typeof obj === 'object';\n if (checkObject) {\n if (MAYBE in _obj) {\n return _transform(_obj[MAYBE]);\n }\n\n const isCustom = Object.keys(obj).every(key => key === CUSTOM);\n const out: any = {};\n if (isCustom) return out;\n\n const entries = Object.entries(obj).filter(([key]) => key !== PARTIAL);\n\n entries.forEach(([key, value]) => {\n out[key] = _transform(value);\n });\n\n return out;\n }\n\n return transformTypes(_obj) as any;\n};\n\nexport const transform: Transform_F = option => {\n const objectS = option({\n any,\n custom,\n intersection,\n litterals,\n maybe,\n partial,\n record,\n soa,\n sv,\n union,\n array,\n tuple,\n });\n\n return _transform(objectS);\n};\n"],"names":["union"],"mappings":";;;;;;;;;;;;;;AAkBA,MAAM,cAAc,GAAG,CAAkB,IAAO,KAAuB;AACrE,IAAA,MAAM,GAAG,GAAQ,IAAI,KAAK,WAAW,GAAG,EAAE,GAAG,SAAS;AACtD,IAAA,OAAO,GAAG;AACZ,CAAC;AAED,MAAM,UAAU,GAAG,CAAoB,GAAM,KAAe;IAC1D,MAAM,IAAI,GAAG,GAAU;IAEvB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;IACrC,IAAI,UAAU,EAAE;AACd,QAAA,OAAO,GAAG,CAAC,GAAG,CAAC,UAAiB,CAAQ;IAC1C;AAEA,IAAA,MAAM,WAAW,GAAG,OAAO,GAAG,KAAK,QAAQ;IAC3C,IAAI,WAAW,EAAE;AACf,QAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,YAAA,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC;AAEA,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM,CAAC;QAC9D,MAAM,GAAG,GAAQ,EAAE;AACnB,QAAA,IAAI,QAAQ;AAAE,YAAA,OAAO,GAAG;QAExB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,OAAO,CAAC;QAEtE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;AAC9B,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,OAAO,cAAc,CAAC,IAAI,CAAQ;AACpC,CAAC;AAEM,MAAM,SAAS,GAAgB,MAAM,IAAG;IAC7C,MAAM,OAAO,GAAG,MAAM,CAAC;QACrB,GAAG;QACH,MAAM;QACN,YAAY;QACZ,SAAS;QACT,KAAK;QACL,OAAO;QACP,MAAM;QACN,GAAG;QACH,EAAE;eACFA,EAAK;QACL,KAAK;QACL,KAAK;AACN,KAAA,CAAC;AAEF,IAAA,OAAO,UAAU,CAAC,OAAO,CAAC;AAC5B;;;;"}
@@ -0,0 +1,18 @@
1
+ import type { any, custom, intersection, litterals, maybe, partial, record, soa, sv, union, array, tuple } from './helpers';
2
+ import type { ObjectS, TransformS } from './types';
3
+ export type Helpers = {
4
+ any: typeof any;
5
+ custom: typeof custom;
6
+ intersection: typeof intersection;
7
+ litterals: typeof litterals;
8
+ maybe: typeof maybe;
9
+ partial: typeof partial;
10
+ record: typeof record;
11
+ soa: typeof soa;
12
+ sv: typeof sv;
13
+ union: typeof union;
14
+ array: typeof array;
15
+ tuple: typeof tuple;
16
+ };
17
+ export type Transform_F = <T extends ObjectS = ObjectS>(option: (helpers: Helpers) => T) => TransformS<T>;
18
+ //# sourceMappingURL=transform.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.types.d.ts","sourceRoot":"","sources":["../src/transform.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,GAAG,EACH,MAAM,EACN,YAAY,EACZ,SAAS,EACT,KAAK,EACL,OAAO,EACP,MAAM,EACN,GAAG,EACH,EAAE,EACF,KAAK,EACL,KAAK,EACL,KAAK,EACN,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEnD,MAAM,MAAM,OAAO,GAAG;IACpB,GAAG,EAAE,OAAO,GAAG,CAAC;IAChB,MAAM,EAAE,OAAO,MAAM,CAAC;IACtB,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,MAAM,EAAE,OAAO,MAAM,CAAC;IACtB,GAAG,EAAE,OAAO,GAAG,CAAC;IAChB,EAAE,EAAE,OAAO,EAAE,CAAC;IACd,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,KAAK,EAAE,OAAO,KAAK,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EACpD,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,CAAC,KAC5B,UAAU,CAAC,CAAC,CAAC,CAAC"}
package/lib/types.d.ts ADDED
@@ -0,0 +1,81 @@
1
+ import type { ARRAY, CUSTOM, MAYBE, PARTIAL, PRIMITIVES, PRIMITIVE_OBJECTS, SOA } from './constants';
2
+ export type Ru = Record<Keys, unknown>;
3
+ export type TrueObject = Ru & {
4
+ [Symbol.iterator]?: never;
5
+ };
6
+ export type Fn<Args extends any[] = any[], R = any> = (...args: Args) => R;
7
+ type ReduceTuple<T extends AnyArray> = T extends [
8
+ infer First,
9
+ ...infer Rest extends AnyArray
10
+ ] ? [NotReadonly<First>, ...ReduceTuple<Rest>] : T extends AnyArray<infer A> ? NotReadonly<A>[] : [];
11
+ export type NotReadonly<T> = T extends AnyArray ? ReduceTuple<T> : T extends object ? {
12
+ -readonly [P in keyof T]: T[P] extends Fn ? T[P] : T[P] extends TrueObject ? NotReadonly<T[P]> : T[P];
13
+ } : T;
14
+ export type AnyArray<T = unknown> = ReadonlyArray<T> | T[];
15
+ export type Keys = keyof any;
16
+ export type NOmit<T, K extends keyof T> = Omit<T, K>;
17
+ export type SingleOrArray<T> = T | T[] | ReadonlyArray<T>;
18
+ export type SoA<T> = SingleOrArray<T>;
19
+ export type StateValue = string | StateValueMap;
20
+ interface StateValueMap {
21
+ [key: string]: StateValue;
22
+ }
23
+ type RecursiveArrayOf<T> = Array<_SingleOrRecursiveArrayOf<T>> | ReadonlyArray<_SingleOrRecursiveArrayOf<T>>;
24
+ type _SingleOrRecursiveArrayOf<T> = T | RecursiveArrayOf<T>;
25
+ export type SingleOrRecursiveArrayOf<T> = T | RecursiveArrayOf<T>;
26
+ export type SoRa<T> = SingleOrRecursiveArrayOf<T>;
27
+ export type PrimitiveS = (typeof PRIMITIVES)[number];
28
+ type TransformPrimitiveS<T extends PrimitiveS> = T extends 'string' ? string : T extends 'number' ? number : T extends 'boolean' ? boolean : T extends 'null' ? null : T extends 'undefined' ? undefined : T extends 'symbol' ? symbol : never;
29
+ export type Types = PrimitiveS | (typeof PRIMITIVE_OBJECTS)[number];
30
+ export type TransformTypes<T extends Types> = T extends PrimitiveS ? TransformPrimitiveS<T> : T extends 'date' ? Date : {};
31
+ export type Custom<T = any> = {
32
+ [CUSTOM]: T;
33
+ };
34
+ export type SoaCustom<T extends ObjectS = any> = {
35
+ [SOA]: T;
36
+ };
37
+ export type PartialCustom = {
38
+ [PARTIAL]: undefined;
39
+ };
40
+ export type __ObjectS = Types | ObjectMapS | Custom | PartialCustom;
41
+ export type Maybe<T extends __ObjectS | ArrayCustom | __ObjectS[] = __ObjectS> = {
42
+ [MAYBE]: T;
43
+ };
44
+ export type ArrayCustom<T extends ObjectS = any> = {
45
+ [ARRAY]: T;
46
+ };
47
+ export type ObjectMapS = {
48
+ [key: Keys]: SoRa<_ObjectS>;
49
+ };
50
+ type _ObjectS = __ObjectS | Maybe | ArrayCustom;
51
+ /**
52
+ * A type that represents a primitive object, which can be a primitive value or an object
53
+ *
54
+ * @remark
55
+ */
56
+ export type ObjectS = _ObjectS | SoRa<_ObjectS>;
57
+ export type POS = ObjectS;
58
+ type ReduceTuple2<T extends AnyArray<ObjectS>> = T extends [
59
+ infer First,
60
+ ...infer Rest extends AnyArray<ObjectS>
61
+ ] ? [TransformS<First>, ...ReduceTuple2<Rest>] : T extends AnyArray<infer A extends ObjectS> ? TransformS<A>[] : [];
62
+ type __TransformPrimitiveObject<T> = T extends Types ? TransformTypes<T> : T extends ArrayCustom<infer A> ? TransformS<A>[] : T extends SoaCustom<infer TSoA> ? SoA<__TransformPrimitiveObject<TSoA>> : T extends Custom<infer TCustom> ? TCustom : T extends AnyArray<ObjectS> ? ReduceTuple2<T> : T extends PartialCustom ? Partial<__TransformPrimitiveObject<NOmit<T, typeof PARTIAL>>> : T extends Maybe<infer TMaybe> ? __TransformPrimitiveObject<TMaybe> | undefined : {
63
+ [K in keyof T]: __TransformPrimitiveObject<T[K]>;
64
+ };
65
+ type ReduceTupleU<T extends AnyArray> = T extends [
66
+ infer First,
67
+ ...infer Rest extends AnyArray
68
+ ] ? [Undefiny<First>, ...ReduceTupleU<Rest>] : T[number] extends never ? [] : T['length'] extends 0 ? [] : number extends T['length'] ? T : Undefiny<T[number]>[];
69
+ type HasUndefined<T> = undefined extends T ? true : false;
70
+ type UndefinyObject<T extends object> = {
71
+ [K in keyof T as HasUndefined<T[K]> extends true ? never : K]: Undefiny<T[K]>;
72
+ } & {
73
+ [K in keyof T as HasUndefined<T[K]> extends true ? K : never]?: Undefiny<Exclude<T[K], undefined>>;
74
+ } extends infer F ? {
75
+ [K in keyof F]: F[K];
76
+ } : never;
77
+ type Undefiny<T> = T extends AnyArray ? ReduceTupleU<T> : T extends Ru ? UndefinyObject<T> : T;
78
+ export type TransformS<T> = Undefiny<__TransformPrimitiveObject<T>>;
79
+ export type inferT<T extends ObjectS> = TransformS<T>;
80
+ export {};
81
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ const expandFn = (main, extensions) => {
4
+ const out = main;
5
+ if (extensions) {
6
+ Object.assign(out, extensions);
7
+ }
8
+ return out;
9
+ };
10
+
11
+ exports.expandFn = expandFn;
12
+ //# sourceMappingURL=expandFn.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expandFn.cjs","sources":["../../src/utils/expandFn.ts"],"sourcesContent":["type Fn<Args extends any[] = any[], R = any> = (...args: Args) => R;\n\ntype FnBasic<Main extends Fn, Tr extends object> = Tr & Main;\n\nexport const expandFn = <\n Main extends Fn,\n const Tr extends object = object,\n>(\n main: Main,\n extensions?: Tr,\n): FnBasic<Main, Tr> => {\n const out: any = main;\n\n if (extensions) {\n Object.assign(out, extensions);\n }\n\n return out;\n};\n"],"names":[],"mappings":";;MAIa,QAAQ,GAAG,CAItB,IAAU,EACV,UAAe,KACM;IACrB,MAAM,GAAG,GAAQ,IAAI;IAErB,IAAI,UAAU,EAAE;AACd,QAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC;IAChC;AAEA,IAAA,OAAO,GAAG;AACZ;;;;"}
@@ -0,0 +1,5 @@
1
+ type Fn<Args extends any[] = any[], R = any> = (...args: Args) => R;
2
+ type FnBasic<Main extends Fn, Tr extends object> = Tr & Main;
3
+ export declare const expandFn: <Main extends Fn, const Tr extends object = object>(main: Main, extensions?: Tr) => FnBasic<Main, Tr>;
4
+ export {};
5
+ //# sourceMappingURL=expandFn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expandFn.d.ts","sourceRoot":"","sources":["../../src/utils/expandFn.ts"],"names":[],"mappings":"AAAA,KAAK,EAAE,CAAC,IAAI,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC;AAEpE,KAAK,OAAO,CAAC,IAAI,SAAS,EAAE,EAAE,EAAE,SAAS,MAAM,IAAI,EAAE,GAAG,IAAI,CAAC;AAE7D,eAAO,MAAM,QAAQ,GACnB,IAAI,SAAS,EAAE,EACf,KAAK,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,EAEhC,MAAM,IAAI,EACV,aAAa,EAAE,KACd,OAAO,CAAC,IAAI,EAAE,EAAE,CAQlB,CAAC"}
@@ -0,0 +1,10 @@
1
+ const expandFn = (main, extensions) => {
2
+ const out = main;
3
+ if (extensions) {
4
+ Object.assign(out, extensions);
5
+ }
6
+ return out;
7
+ };
8
+
9
+ export { expandFn };
10
+ //# sourceMappingURL=expandFn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expandFn.js","sources":["../../src/utils/expandFn.ts"],"sourcesContent":["type Fn<Args extends any[] = any[], R = any> = (...args: Args) => R;\n\ntype FnBasic<Main extends Fn, Tr extends object> = Tr & Main;\n\nexport const expandFn = <\n Main extends Fn,\n const Tr extends object = object,\n>(\n main: Main,\n extensions?: Tr,\n): FnBasic<Main, Tr> => {\n const out: any = main;\n\n if (extensions) {\n Object.assign(out, extensions);\n }\n\n return out;\n};\n"],"names":[],"mappings":"MAIa,QAAQ,GAAG,CAItB,IAAU,EACV,UAAe,KACM;IACrB,MAAM,GAAG,GAAQ,IAAI;IAErB,IAAI,UAAU,EAAE;AACd,QAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC;IAChC;AAEA,IAAA,OAAO,GAAG;AACZ;;;;"}
package/package.json ADDED
@@ -0,0 +1,114 @@
1
+ {
2
+ "name": "@bemedev/typings",
3
+ "version": "0.0.1",
4
+ "description": "Typings by variables",
5
+ "author": {
6
+ "email": "bri_lvi@icloud.com",
7
+ "name": "chlbri",
8
+ "url": "https://bemedev.vercel.app"
9
+ },
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/chlbri/typings.git"
13
+ },
14
+ "license": "MIT",
15
+ "type": "module",
16
+ "main": "lib/index.js",
17
+ "types": "lib/index.d.ts",
18
+ "module": "lib/index.js",
19
+ "maintainers": [
20
+ {
21
+ "email": "bri_lvi@icloud.com",
22
+ "name": "chlbri",
23
+ "url": "https://bemedev.vercel.app"
24
+ }
25
+ ],
26
+ "contributors": [
27
+ {
28
+ "email": "bri_lvi@icloud.com",
29
+ "name": "chlbri",
30
+ "url": "https://bemedev.vercel.app"
31
+ }
32
+ ],
33
+ "keywords": [
34
+ "typings",
35
+ "typescript",
36
+ "types"
37
+ ],
38
+ "files": [
39
+ "lib",
40
+ "public"
41
+ ],
42
+ "engines": {
43
+ "node": ">=20"
44
+ },
45
+ "scripts": {
46
+ "build": "pnpm rm:lib && pnpm run rollup",
47
+ "ci": "pnpm run config:off && pnpm run lint && pnpm run test && pnpm run prettier && pnpm run p-q",
48
+ "ci:admin": "pnpm run rm && pnpm run upgrade && pnpm run ci",
49
+ "clean": "pnpm run rm && pnpm run config",
50
+ "config": "pnpm install",
51
+ "config:off": "pnpm run config --offline",
52
+ "eslint": "eslint \"{src/**/*,App}.{ts,tsx}\"",
53
+ "lint": "pnpm run prettier && pnpm run eslint --fix",
54
+ "lint:watch": "onchange --await-write-finish 5500 \"**/*\" -- pnpm run lint",
55
+ "prepublishOnly": "",
56
+ "prepare": "husky",
57
+ "pretest": "pnpm run build",
58
+ "posttest": "pnpm run size",
59
+ "prettier": "prettier --write \"src/**/*.{ts,tsx}\"",
60
+ "p-q": "pretty-quick",
61
+ "rinit": "pnpm run rm && pnpm run config",
62
+ "rinit:off": "pnpm run rm && pnpm run config:off",
63
+ "rimraf": "pnpx rimraf -rf",
64
+ "rm": "pnpm run rimraf -- node_modules pnpm-lock.yaml",
65
+ "rm:lib": "pnpm run rimraf -- lib",
66
+ "rollup": "rollup -c",
67
+ "size": "size-limit",
68
+ "test": "pnpm run test:coverage --no-coverage",
69
+ "test:coverage": "vitest run",
70
+ "test:watch": "vitest",
71
+ "upgrade": "pnpm upgrade --latest && pnpm add -D vitest@3.2.4 @vitest/coverage-v8@3.2.4"
72
+ },
73
+ "size-limit": [
74
+ {
75
+ "path": "lib/*.js",
76
+ "limit": "10 KB"
77
+ },
78
+ {
79
+ "path": "lib/*.cjs",
80
+ "limit": "10 KB"
81
+ }
82
+ ],
83
+ "devDependencies": {
84
+ "@bemedev/fsf": "^1.0.1",
85
+ "@bemedev/rollup-config": "^0.2.2",
86
+ "@bemedev/vitest-alias": "^0.0.3",
87
+ "@bemedev/vitest-exclude": "^0.1.1",
88
+ "@bemedev/vitest-extended": "^1.5.3",
89
+ "@eslint/eslintrc": "^3.3.3",
90
+ "@eslint/js": "^9.39.2",
91
+ "@size-limit/file": "^12.0.0",
92
+ "@types/node": "^25.0.3",
93
+ "@typescript-eslint/eslint-plugin": "^8.50.1",
94
+ "@typescript-eslint/parser": "^8.50.1",
95
+ "@vitest/coverage-v8": "^3.2.4",
96
+ "eslint": "^9.39.2",
97
+ "glob": "^13.0.0",
98
+ "globals": "^16.5.0",
99
+ "husky": "^9.1.7",
100
+ "onchange": "^7.1.0",
101
+ "prettier": "^3.7.4",
102
+ "pretty-quick": "^4.2.2",
103
+ "rollup": "^4.54.0",
104
+ "size-limit": "^12.0.0",
105
+ "tslib": "^2.8.1",
106
+ "typescript": "^5.9.3",
107
+ "vitest": "^3.2.4"
108
+ },
109
+ "pnpm": {
110
+ "onlyBuiltDependencies": [
111
+ "esbuild"
112
+ ]
113
+ }
114
+ }