ts-fortress 7.0.1 → 7.0.2
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/dist/compose/intersection.d.mts.map +1 -1
- package/dist/compose/intersection.mjs +6 -7
- package/dist/compose/intersection.mjs.map +1 -1
- package/dist/compose/union.d.mts.map +1 -1
- package/dist/compose/union.mjs +7 -9
- package/dist/compose/union.mjs.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/other-types/recursion.mjs +4 -4
- package/dist/other-types/recursion.mjs.map +1 -1
- package/dist/record/keyof.d.mts.map +1 -1
- package/dist/record/keyof.mjs +21 -2
- package/dist/record/keyof.mjs.map +1 -1
- package/dist/record/merge-records.d.mts.map +1 -1
- package/dist/record/merge-records.mjs +52 -8
- package/dist/record/merge-records.mjs.map +1 -1
- package/dist/record/omit.d.mts.map +1 -1
- package/dist/record/omit.mjs +6 -2
- package/dist/record/omit.mjs.map +1 -1
- package/dist/record/partial.d.mts.map +1 -1
- package/dist/record/partial.mjs +7 -3
- package/dist/record/partial.mjs.map +1 -1
- package/dist/record/pick.d.mts.map +1 -1
- package/dist/record/pick.mjs +6 -2
- package/dist/record/pick.mjs.map +1 -1
- package/dist/record/record.mjs +1 -1
- package/dist/record/record.mjs.map +1 -1
- package/dist/record/required.d.mts.map +1 -1
- package/dist/record/required.mjs +7 -3
- package/dist/record/required.mjs.map +1 -1
- package/dist/record/valueof.d.mts.map +1 -1
- package/dist/record/valueof.mjs +6 -4
- package/dist/record/valueof.mjs.map +1 -1
- package/dist/type.d.mts +16 -1
- package/dist/type.d.mts.map +1 -1
- package/dist/type.mjs +52 -4
- package/dist/type.mjs.map +1 -1
- package/package.json +2 -2
- package/src/compose/intersection.mts +7 -16
- package/src/compose/union.mts +8 -19
- package/src/other-types/recursion.mts +4 -4
- package/src/record/key-value-record.test.mts +41 -0
- package/src/record/keyof.mts +31 -6
- package/src/record/keyof.test.mts +30 -0
- package/src/record/merge-records.mts +75 -12
- package/src/record/merge-records.test.mts +1026 -37
- package/src/record/omit.mts +21 -1
- package/src/record/partial.mts +12 -3
- package/src/record/pick.mts +10 -1
- package/src/record/record.mts +1 -1
- package/src/record/required.mts +12 -3
- package/src/record/valueof.mts +10 -5
- package/src/record/valueof.test.mts +34 -0
- package/src/type.mts +77 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intersection.d.mts","sourceRoot":"","sources":["../../src/compose/intersection.mts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"intersection.d.mts","sourceRoot":"","sources":["../../src/compose/intersection.mts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,IAAI,EACT,KAAK,MAAM,EACZ,MAAM,aAAa,CAAC;AASrB,eAAO,MAAM,YAAY,GAAI,KAAK,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAC3E,OAAO,KAAK,EACZ,aAAa,gBAAgB,CAAC,KAAK,CAAC,EACpC,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CACH,KACA,gBAAgB,CAAC,KAAK,CAyExB,CAAC;AAEF,KAAK,gBAAgB,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CACtE,qBAAqB,CAAC,KAAK,CAAC,CAC7B,CAAC;AAEF,KAAK,qBAAqB,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IACnE,kBAAkB,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;AAEtD,kBAAU,kBAAkB,CAAC;IAC3B,MAAM,MAAM,yBAAyB,CACnC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IACxC,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE/C,KAAK,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAClE,CAAC,GACD,KAAK,CAAC;;CACX;AA4BD,KAAK,cAAc,CAAC,KAAK,SAAS,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE,IACxD,kBAAkB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAE3C,kBAAU,kBAAkB,CAAC;IAC3B,MAAM,MAAM,cAAc,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,IACzD,KAAK,SAAS,SAAS,EAAE,GACrB,SAAS,EAAE,GACX,KAAK,SAAS,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GAChD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,GACvD,KAAK,CAAC;IAGd,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;;CACzD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Arr,
|
|
1
|
+
import { Arr, Result } from 'ts-data-forge';
|
|
2
2
|
import { hasRecordInternals } from '../type.mjs';
|
|
3
3
|
import { createAssertFn } from '../utils/create-assert-fn.mjs';
|
|
4
4
|
import { createCastFn } from '../utils/create-cast-fn.mjs';
|
|
@@ -46,17 +46,16 @@ const intersection = (types, defaultType, options) => {
|
|
|
46
46
|
};
|
|
47
47
|
// If all types are records, add RecordTypeInternals
|
|
48
48
|
if (types.every(hasRecordInternals)) {
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
const shapes = Arr.map(recordTypes, (t) => t.shape);
|
|
52
|
-
const mergedShape = Obj.merge(...shapes);
|
|
53
|
-
const excessProperty = recordTypes.some((t) => t.excessProperty === 'reject')
|
|
49
|
+
const shapeStructures = Arr.map(types, (t) => t.shapeStructure);
|
|
50
|
+
const excessProperty = Arr.some(types, (t) => t.excessProperty === 'reject')
|
|
54
51
|
? 'reject'
|
|
55
52
|
: 'allow';
|
|
56
53
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
57
54
|
return {
|
|
58
55
|
...baseType,
|
|
59
|
-
|
|
56
|
+
shapeStructure: Arr.isArrayOfLength(shapeStructures, 1)
|
|
57
|
+
? shapeStructures[0]
|
|
58
|
+
: { kind: 'intersection', parts: shapeStructures },
|
|
60
59
|
excessProperty,
|
|
61
60
|
};
|
|
62
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intersection.mjs","sources":["../../src/compose/intersection.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"intersection.mjs","sources":["../../src/compose/intersection.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAeO,MAAM,YAAY,GAAG,CAC1B,KAAY,EACZ,WAAoC,EACpC,OAIC,KAC0B;AAG3B,IAAA,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ;AACjB,QAAA,CAAA,CAAA,EAAI,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG;AAE3D,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;AAC1C,QAAA,MAAM,MAAM,GAA+B,GAAG,CAAC,QAAQ,CAAC,aAAS;AAC/D,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE5B,gBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACrB,MAAM;AACJ,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,WAAW,EAAE,CAAC;AACd,wBAAA,YAAY,EAAE,cAAc;AAC5B,wBAAA,QAAQ,EAAE,cAAc;AACxB,wBAAA,OAAO,EAAE;AACP,4BAAA,IAAI,EAAE,cAAc;AACpB,4BAAA,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;AACxC,yBAAA;qBACwB;AAE3B,oBAAA,OAAO,GAAG,CAAC,KAAK;;;AAGtB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC1B,YAAA,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;;;AAI3B,QAAA,OAAO,MAAM,CAAC,EAAE,CAAC,CAAM,CAAC;AAC1B,IAAA,CAAC;AAED,IAAA,MAAM,EAAE,GAAG,UAAU,CAAI,QAAQ,CAAC;IAElC,MAAM,IAAI,GAAoB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEtE,IAAA,MAAM,QAAQ,GAAY;AACxB,QAAA,QAAQ,EAAE,cAAc;QACxB,YAAY,EAAE,WAAW,CAAC,YAAY;QACtC,IAAI;QACJ,QAAQ;QACR,EAAE;AACF,QAAA,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;KACpB;;AAGV,IAAA,IAAI,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;AACnC,QAAA,MAAM,eAAe,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC;AAE/D,QAAA,MAAM,cAAc,GAAyB,GAAG,CAAC,IAAI,CACnD,KAAK,EACL,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,KAAK,QAAQ;AAEpC,cAAE;cACA,OAAO;;QAGX,OAAO;AACL,YAAA,GAAG,QAAQ;YACX,cAAc,EAAE,GAAG,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;AACpD,kBAAE,eAAe,CAAC,CAAC;kBAChB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAY;YAC/D,cAAc;SACY;;AAG9B,IAAA,OAAO,QAAmC;AAC5C;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"union.d.mts","sourceRoot":"","sources":["../../src/compose/union.mts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"union.d.mts","sourceRoot":"","sources":["../../src/compose/union.mts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,IAAI,EACT,KAAK,MAAM,EACZ,MAAM,aAAa,CAAC;AASrB,eAAO,MAAM,KAAK,GAAI,KAAK,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EACpE,OAAO,KAAK,EACZ,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;CAC/B,CAAC,CACH,KACA,SAAS,CAAC,KAAK,CAmEjB,CAAC;AAEF,KAAK,SAAS,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAC/D,cAAc,CAAC,KAAK,CAAC,CACtB,CAAC;AAEF,KAAK,cAAc,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAC5D,kBAAkB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAE/C,kBAAU,kBAAkB,CAAC;IAC3B,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IACvE,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAEnC,KAAK,WAAW,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;;CAC7E"}
|
package/dist/compose/union.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { memoizeFunction, Arr,
|
|
1
|
+
import { memoizeFunction, Arr, Result } from 'ts-data-forge';
|
|
2
2
|
import { hasRecordInternals } from '../type.mjs';
|
|
3
3
|
import { createAssertFn } from '../utils/create-assert-fn.mjs';
|
|
4
4
|
import { createCastFn } from '../utils/create-cast-fn.mjs';
|
|
@@ -38,20 +38,18 @@ const union = (types, options) => {
|
|
|
38
38
|
assertIs: createAssertFn(validate),
|
|
39
39
|
cast: createCastFn(validate),
|
|
40
40
|
};
|
|
41
|
-
// If all types are records, add RecordTypeInternals
|
|
41
|
+
// If all types are records, add RecordTypeInternals with union structure
|
|
42
42
|
if (types.every(hasRecordInternals)) {
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
const shapes = Arr.map(recordTypes, (t) => t.shape);
|
|
46
|
-
// For union, merge all shapes to get all possible keys
|
|
47
|
-
const mergedShape = Obj.merge(...shapes);
|
|
48
|
-
const excessProperty = recordTypes.some((t) => t.excessProperty === 'reject')
|
|
43
|
+
const shapeStructures = Arr.map(types, (t) => t.shapeStructure);
|
|
44
|
+
const excessProperty = Arr.some(types, (t) => t.excessProperty === 'reject')
|
|
49
45
|
? 'reject'
|
|
50
46
|
: 'allow';
|
|
51
47
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
52
48
|
return {
|
|
53
49
|
...baseType,
|
|
54
|
-
|
|
50
|
+
shapeStructure: Arr.isArrayOfLength(shapeStructures, 1)
|
|
51
|
+
? shapeStructures[0]
|
|
52
|
+
: { kind: 'union', variants: shapeStructures },
|
|
55
53
|
excessProperty,
|
|
56
54
|
};
|
|
57
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"union.mjs","sources":["../../src/compose/union.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"union.mjs","sources":["../../src/compose/union.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;MAea,KAAK,GAAG,CACnB,KAAY,EACZ,OAKC,KACmB;AAGpB,IAAA,MAAM,cAAc,GAAG,eAAe,CACpC;;IAEE,OAAO,EAAE,WAAW,IAAK,KAAK,CAAC,CAAC,CAAsB,CACzD;IAED,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ,IAAI,CAAA,CAAA,EAAI,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA,CAAA,CAAG;IAEzE,MAAM,QAAQ,GAAwB,CAAC,CAAC,KACtC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB;AACE,YAAA,MAAM,CAAC,EAAE,CAAC,CAAM;AAClB,UAAE,MAAM,CAAC,GAAG,CAAC;AACT,YAAA;AACE,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,YAAY,EAAE,cAAc;AAC5B,gBAAA,QAAQ,EAAE,cAAc;AACxB,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;AACxC,iBAAA;AACwB,aAAA;AAC5B,SAAA,CAAC;AAER,IAAA,MAAM,EAAE,GAAG,UAAU,CAAI,QAAQ,CAAC;IAElC,MAAM,IAAI,GAAoB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAE3E,IAAA,MAAM,QAAQ,GAAY;AACxB,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,IAAI,YAAY,GAAA;AACd,YAAA,OAAO,cAAc,EAAE,CAAC,YAAY;SACrC;QACD,IAAI;QACJ,QAAQ;QACR,EAAE;AACF,QAAA,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;KACpB;;AAGV,IAAA,IAAI,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;AACnC,QAAA,MAAM,eAAe,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC;AAE/D,QAAA,MAAM,cAAc,GAAyB,GAAG,CAAC,IAAI,CACnD,KAAK,EACL,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,KAAK,QAAQ;AAEpC,cAAE;cACA,OAAO;;QAGX,OAAO;AACL,YAAA,GAAG,QAAQ;YACX,cAAc,EAAE,GAAG,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;AACpD,kBAAE,eAAe,CAAC,CAAC;kBAChB,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAY;YAC3D,cAAc;SACK;;AAGvB,IAAA,OAAO,QAA4B;AACrC;;;;"}
|
package/dist/index.mjs
CHANGED
|
@@ -59,7 +59,7 @@ export { pick } from './record/pick.mjs';
|
|
|
59
59
|
export { record, strictRecord } from './record/record.mjs';
|
|
60
60
|
export { required } from './record/required.mjs';
|
|
61
61
|
export { valueof } from './record/valueof.mjs';
|
|
62
|
-
export { hasRecordInternals } from './type.mjs';
|
|
62
|
+
export { flattenShapeStructure, getShape, hasRecordInternals } from './type.mjs';
|
|
63
63
|
export { createAssertFn } from './utils/create-assert-fn.mjs';
|
|
64
64
|
export { createCastFn } from './utils/create-cast-fn.mjs';
|
|
65
65
|
export { createIsFn } from './utils/create-is-fn.mjs';
|
|
@@ -168,7 +168,7 @@ const recursion = (typeName, definition, options) => {
|
|
|
168
168
|
// Proxy to propagate RecordTypeInternals if the inner type has them
|
|
169
169
|
return new Proxy(baseType, {
|
|
170
170
|
get: (target, prop) => {
|
|
171
|
-
if (prop === '
|
|
171
|
+
if (prop === 'shapeStructure' || prop === 'excessProperty') {
|
|
172
172
|
const inner = getInnerType();
|
|
173
173
|
if (hasRecordInternals(inner)) {
|
|
174
174
|
return inner[prop];
|
|
@@ -182,7 +182,7 @@ const recursion = (typeName, definition, options) => {
|
|
|
182
182
|
return undefined;
|
|
183
183
|
},
|
|
184
184
|
has: (target, prop) => {
|
|
185
|
-
if (prop === '
|
|
185
|
+
if (prop === 'shapeStructure' || prop === 'excessProperty') {
|
|
186
186
|
const inner = getInnerType();
|
|
187
187
|
return hasRecordInternals(inner);
|
|
188
188
|
}
|
|
@@ -191,12 +191,12 @@ const recursion = (typeName, definition, options) => {
|
|
|
191
191
|
ownKeys: (target) => {
|
|
192
192
|
const inner = getInnerType();
|
|
193
193
|
if (hasRecordInternals(inner)) {
|
|
194
|
-
return [...Object.keys(target), '
|
|
194
|
+
return [...Object.keys(target), 'shapeStructure', 'excessProperty'];
|
|
195
195
|
}
|
|
196
196
|
return Object.keys(target);
|
|
197
197
|
},
|
|
198
198
|
getOwnPropertyDescriptor: (target, prop) => {
|
|
199
|
-
if (prop === '
|
|
199
|
+
if (prop === 'shapeStructure' || prop === 'excessProperty') {
|
|
200
200
|
const inner = getInnerType();
|
|
201
201
|
if (hasRecordInternals(inner)) {
|
|
202
202
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recursion.mjs","sources":["../../src/other-types/recursion.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+IG;AACI,MAAM,SAAS,GAAG,CACvB,QAAgB,EAChB,UAAyB,EACzB,OAIC,KACU;AACX,IAAA,MAAM,eAAe,GAAG,eAAe,CACrC,MAAS,OAAO,EAAE,YAAY,IAAI,YAAY,EAAE,CAAC,YAAY,CAC9D;AAED,IAAA,MAAM,YAAY,GAAkB,eAAe,CAAC,UAAU,CAAC;AAE/D,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEvE,IAAA,MAAM,EAAE,GAAG,UAAU,CAAI,QAAQ,CAAC;AAElC,IAAA,MAAM,IAAI,GAAoB,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAE3D,IAAA,MAAM,QAAQ,GAAY;QACxB,QAAQ;AACR,QAAA,IAAI,YAAY,GAAA;YACd,OAAO,eAAe,EAAE;QAC1B,CAAC;QACD,IAAI;QACJ,QAAQ;QACR,EAAE;AACF,QAAA,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;KACpB;;AAGV,IAAA,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;AACzB,QAAA,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,KAAI;YACpB,IAAI,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"recursion.mjs","sources":["../../src/other-types/recursion.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyof.d.mts","sourceRoot":"","sources":["../../src/record/keyof.mts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"keyof.d.mts","sourceRoot":"","sources":["../../src/record/keyof.mts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,IAAI,EAGV,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,KAAK,GAAI,KAAK,CAAC,CAAC,SAAS,aAAa,EACjD,YAAY,IAAI,CAAC,CAAC,CAAC,EACnB,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CACH,KACA,SAAS,CAAC,CAAC,CAeb,CAAC;AA+BF,KAAK,SAAS,CAAC,CAAC,SAAS,aAAa,IACpC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/record/keyof.mjs
CHANGED
|
@@ -10,13 +10,32 @@ const keyof = (recordType, options) => {
|
|
|
10
10
|
throw new Error(`Expected a record type but received: ${recordType.typeName}`);
|
|
11
11
|
}
|
|
12
12
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
13
|
-
return pipe(
|
|
13
|
+
return pipe(getKeysFromStructure(recordType.shapeStructure)).map((keys) => Arr.isNonEmpty(keys)
|
|
14
14
|
? enumType(keys, {
|
|
15
15
|
typeName: options?.typeName ?? `keyof ${recordType.typeName}`,
|
|
16
16
|
})
|
|
17
17
|
: undefinedType).value;
|
|
18
18
|
};
|
|
19
|
-
const
|
|
19
|
+
const getKeysFromStructure = (structure) => {
|
|
20
|
+
switch (structure.kind) {
|
|
21
|
+
case 'simple':
|
|
22
|
+
return Object.keys(structure.shape);
|
|
23
|
+
case 'union':
|
|
24
|
+
return getKeysHelper(structure.variants);
|
|
25
|
+
case 'intersection':
|
|
26
|
+
return getKeysHelper(structure.parts);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
const getKeysHelper = (structures) => {
|
|
30
|
+
const mut_allKeys = new Set();
|
|
31
|
+
for (const part of structures) {
|
|
32
|
+
const keys = getKeysFromStructure(part);
|
|
33
|
+
for (const key of keys) {
|
|
34
|
+
mut_allKeys.add(key);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return Array.from(mut_allKeys);
|
|
38
|
+
};
|
|
20
39
|
|
|
21
40
|
export { keyof };
|
|
22
41
|
//# sourceMappingURL=keyof.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyof.mjs","sources":["../../src/record/keyof.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;MAUa,KAAK,GAAG,CACnB,UAAmB,EACnB,OAIC,KACe;AAChB,IAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE;QACnC,MAAM,IAAI,KAAK,CACb,CAAA,qCAAA,EAAwC,UAAU,CAAC,QAAQ,CAAA,CAAE,CAC9D;;;IAIH,OAAO,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"keyof.mjs","sources":["../../src/record/keyof.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;MAUa,KAAK,GAAG,CACnB,UAAmB,EACnB,OAIC,KACe;AAChB,IAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE;QACnC,MAAM,IAAI,KAAK,CACb,CAAA,qCAAA,EAAwC,UAAU,CAAC,QAAQ,CAAA,CAAE,CAC9D;;;IAIH,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KACpE,GAAG,CAAC,UAAU,CAAC,IAAI;AACjB,UAAG,QAAQ,CAAC,IAAI,EAAE;YACd,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAA,MAAA,EAAS,UAAU,CAAC,QAAQ,CAAA,CAAE;SAC9D;AACH,UAAG,aAAwC,CAC9C,CAAC,KAAqB;AACzB;AAEA,MAAM,oBAAoB,GAAG,CAAC,SAAyB,KAAuB;AAC5E,IAAA,QAAQ,SAAS,CAAC,IAAI;AACpB,QAAA,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAErC,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC;AAE1C,QAAA,KAAK,cAAc;AACjB,YAAA,OAAO,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC;;AAE3C,CAAC;AAED,MAAM,aAAa,GAAG,CACpB,UAAqC,KAChB;AACrB,IAAA,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU;AAErC,IAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;AAC7B,QAAA,MAAM,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC;AAEvC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;;;AAIxB,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;AAChC,CAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-records.d.mts","sourceRoot":"","sources":["../../src/record/merge-records.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"merge-records.d.mts","sourceRoot":"","sources":["../../src/record/merge-records.mts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,oBAAoB,EAGzB,KAAK,IAAI,EAIV,MAAM,aAAa,CAAC;AAMrB,eAAO,MAAM,YAAY,GACvB,KAAK,CAAC,KAAK,SAAS,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAEtD,aAAa,KAAK,EAClB,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,oBAAoB,CAAC;CACtC,CAAC,CACH,KACA,gBAAgB,CAAC,KAAK,CA6DxB,CAAC;AA6BF,KAAK,gBAAgB,CAAC,KAAK,SAAS,SAAS,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,IAAI,CACxE,gBAAgB,CAAC,KAAK,CAAC,CACxB,CAAC;AAEF,+EAA+E;AAC/E,KAAK,gBAAgB,CAAC,KAAK,SAAS,SAAS,IAAI,CAAC,aAAa,CAAC,EAAE,IAChE,mBAAmB,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE5D,oGAAoG;AACpG,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,aAAa,GACjD,QAAQ,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,GAClC,CAAC,CAAC;AAEN,KAAK,eAAe,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,IACnD,KAAK,SAAS,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GAC9C,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,GACvD,SAAS,EAAE,CAAC;AAElB,KAAK,YAAY,CAAC,CAAC,IACjB,CAAC,SAAS,QAAQ,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC"}
|
|
@@ -1,26 +1,70 @@
|
|
|
1
1
|
import { Arr, Obj } from 'ts-data-forge';
|
|
2
|
+
import { hasRecordInternals } from '../type.mjs';
|
|
2
3
|
import { toIntersectionString } from '../utils/to-union-string.mjs';
|
|
4
|
+
import { union } from '../compose/union.mjs';
|
|
3
5
|
import '@sindresorhus/is';
|
|
4
|
-
import { hasRecordInternals } from '../type.mjs';
|
|
5
6
|
import '../other-types/unknown.mjs';
|
|
6
7
|
import { record } from './record.mjs';
|
|
7
8
|
|
|
9
|
+
const MERGE_RECORDS_MAX_VARIANTS = 10_000;
|
|
8
10
|
const mergeRecords = (recordTypes, options) => {
|
|
9
11
|
if (!recordTypes.every(hasRecordInternals)) {
|
|
10
12
|
throw new Error('Expected a record type but received a non-record type in mergeRecords');
|
|
11
13
|
}
|
|
12
14
|
const typeNameFilled = options?.typeName ??
|
|
13
15
|
`(${toIntersectionString(recordTypes.map((a) => a.typeName))})`;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
// Expand all shape structures to get all possible shape combinations
|
|
17
|
+
const expandedShapesPerType = Arr.map(recordTypes, (t) => expandShapeStructure(t.shapeStructure));
|
|
18
|
+
// Estimate the total number of merged variants that would be produced.
|
|
19
|
+
// This is the product of the number of variants for each record type.
|
|
20
|
+
const estimatedVariantCount = expandedShapesPerType.reduce((acc, shapes) => acc * shapes.length, 1);
|
|
21
|
+
if (estimatedVariantCount > MERGE_RECORDS_MAX_VARIANTS) {
|
|
22
|
+
throw new Error(`mergeRecords would create ${estimatedVariantCount} record variants, exceeding the limit of ${MERGE_RECORDS_MAX_VARIANTS}. ` +
|
|
23
|
+
'This could lead to excessive memory or CPU usage. Consider simplifying the record types or reducing union/intersection nesting.');
|
|
24
|
+
}
|
|
25
|
+
// For merging records (which is an intersection operation),
|
|
26
|
+
// we need to create the cartesian product of all variants
|
|
27
|
+
// For example: {a} & ({b} | {c}) = ({a} & {b}) | ({a} & {c})
|
|
28
|
+
const allCombinations = Arr.cartesianProduct(expandedShapesPerType);
|
|
29
|
+
// Merge each combination
|
|
30
|
+
const mergedShapes = Arr.map(allCombinations, (shapes) => Obj.merge(...shapes));
|
|
17
31
|
const excessProperty = options?.excessProperty ?? deriveStrictestExcessProperty(recordTypes);
|
|
18
|
-
|
|
32
|
+
// If there's only one merged shape, return it directly
|
|
33
|
+
if (Arr.isArrayOfLength(mergedShapes, 1)) {
|
|
34
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
35
|
+
return record(mergedShapes[0], {
|
|
36
|
+
typeName: typeNameFilled,
|
|
37
|
+
excessProperty,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
// If there are multiple variants, we need to return a union
|
|
41
|
+
const variants = Arr.map(mergedShapes, (shape) => record(shape, { excessProperty }));
|
|
42
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
43
|
+
return union(variants, {
|
|
19
44
|
typeName: typeNameFilled,
|
|
20
|
-
excessProperty,
|
|
21
45
|
});
|
|
22
|
-
|
|
23
|
-
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Expands a ShapeStructure into all possible simple shapes.
|
|
49
|
+
* For union structures, returns an array of all variant shapes.
|
|
50
|
+
* For intersection structures, computes cartesian product of all parts.
|
|
51
|
+
*/
|
|
52
|
+
const expandShapeStructure = (structure) => {
|
|
53
|
+
switch (structure.kind) {
|
|
54
|
+
case 'simple': {
|
|
55
|
+
return [structure.shape];
|
|
56
|
+
}
|
|
57
|
+
case 'union': {
|
|
58
|
+
// Union: flatten all variants
|
|
59
|
+
return structure.variants.flatMap(expandShapeStructure);
|
|
60
|
+
}
|
|
61
|
+
case 'intersection': {
|
|
62
|
+
// Intersection: compute cartesian product of all parts
|
|
63
|
+
const expandedParts = structure.parts.map(expandShapeStructure);
|
|
64
|
+
const combinations = Arr.cartesianProduct(expandedParts);
|
|
65
|
+
return Arr.map(combinations, (shapes) => Obj.merge(...shapes));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
24
68
|
};
|
|
25
69
|
const deriveStrictestExcessProperty = (types) => types.some((t) => t.excessProperty === 'reject') ? 'reject' : 'allow';
|
|
26
70
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-records.mjs","sources":["../../src/record/merge-records.mts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"merge-records.mjs","sources":["../../src/record/merge-records.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AAeA,MAAM,0BAA0B,GAAG,MAAM;MAE5B,YAAY,GAAG,CAG1B,WAAkB,EAClB,OAKC,KAC0B;IAC3B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;AAC1C,QAAA,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE;;AAGH,IAAA,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ;AACjB,QAAA,CAAA,CAAA,EAAI,oBAAoB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG;;IAGjE,MAAM,qBAAqB,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,KACnD,oBAAoB,CAAC,CAAC,CAAC,cAAc,CAAC,CACvC;;;IAID,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,MAAM,CACxD,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EACpC,CAAC,CACF;AAED,IAAA,IAAI,qBAAqB,GAAG,0BAA0B,EAAE;AACtD,QAAA,MAAM,IAAI,KAAK,CACb,6BAA6B,qBAAqB,CAAA,yCAAA,EAA4C,0BAA0B,CAAA,EAAA,CAAI;AAC1H,YAAA,iIAAiI,CACpI;;;;;IAMH,MAAM,eAAe,GAAG,GAAG,CAAC,gBAAgB,CAAC,qBAAqB,CAAC;;IAGnE,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,MAAM,KACnD,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CACrB;IAED,MAAM,cAAc,GAClB,OAAO,EAAE,cAAc,IAAI,6BAA6B,CAAC,WAAW,CAAC;;IAGvE,IAAI,GAAG,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE;;AAExC,QAAA,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;AAC7B,YAAA,QAAQ,EAAE,cAAc;YACxB,cAAc;AACf,SAAA,CAA4B;;;IAI/B,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,KAAK,KAC3C,MAAM,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,CAAC,CAClC;;IAGD,OAAO,KAAK,CAAC,QAA8C,EAAE;AAC3D,QAAA,QAAQ,EAAE,cAAc;AACzB,KAAA,CAA4B;AAC/B;AAEA;;;;AAIG;AACH,MAAM,oBAAoB,GAAG,CAC3B,SAAyB,KACE;AAC3B,IAAA,QAAQ,SAAS,CAAC,IAAI;QACpB,KAAK,QAAQ,EAAE;AACb,YAAA,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;;QAE1B,KAAK,OAAO,EAAE;;YAEZ,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC;;QAEzD,KAAK,cAAc,EAAE;;YAEnB,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC;YAE/D,MAAM,YAAY,GAAG,GAAG,CAAC,gBAAgB,CAAC,aAAa,CAAC;AAExD,YAAA,OAAO,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;;;AAGpE,CAAC;AAuBD,MAAM,6BAA6B,GAAG,CACpC,KAAqC,KAErC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,KAAK,QAAQ,CAAC,GAAG,QAAQ,GAAG,OAAO;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"omit.d.mts","sourceRoot":"","sources":["../../src/record/omit.mts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,oBAAoB,
|
|
1
|
+
{"version":3,"file":"omit.d.mts","sourceRoot":"","sources":["../../src/record/omit.mts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,oBAAoB,EAGzB,KAAK,IAAI,EAEV,MAAM,aAAa,CAAC;AAIrB,+CAA+C;AAC/C,eAAO,MAAM,IAAI,GACf,KAAK,CAAC,CAAC,SAAS,aAAa,EAC7B,KAAK,CAAC,UAAU,SAAS,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,EAEtD,YAAY,IAAI,CAAC,CAAC,CAAC,EACnB,YAAY,UAAU,EACtB,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,oBAAoB,CAAC;CACtC,CAAC,CACH,KACA,WAAW,CAAC,CAAC,EAAE,UAAU,CAuB3B,CAAC;AAEF,KAAK,WAAW,CACd,CAAC,SAAS,aAAa,EACvB,UAAU,SAAS,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,IAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/record/omit.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Obj } from 'ts-data-forge';
|
|
2
|
-
import { hasRecordInternals } from '../type.mjs';
|
|
2
|
+
import { hasRecordInternals, flattenShapeStructure } from '../type.mjs';
|
|
3
3
|
import { toUnionKeyString } from '../utils/to-union-string.mjs';
|
|
4
4
|
import { record } from './record.mjs';
|
|
5
5
|
|
|
@@ -8,8 +8,12 @@ const omit = (recordType, keysToOmit, options) => {
|
|
|
8
8
|
if (!hasRecordInternals(recordType)) {
|
|
9
9
|
throw new Error(`Expected a record type but received: ${recordType.typeName}`);
|
|
10
10
|
}
|
|
11
|
+
const shape = flattenShapeStructure(recordType.shapeStructure);
|
|
12
|
+
if (shape === undefined) {
|
|
13
|
+
throw new Error(`omit() requires a simple or intersection record type, but received a union type`);
|
|
14
|
+
}
|
|
11
15
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
12
|
-
return record(Obj.omit(
|
|
16
|
+
return record(Obj.omit(shape, keysToOmit), {
|
|
13
17
|
typeName: options?.typeName ??
|
|
14
18
|
`Omit<${recordType.typeName}, ${toUnionKeyString(keysToOmit)}>`,
|
|
15
19
|
excessProperty: options?.excessProperty ?? recordType.excessProperty,
|
package/dist/record/omit.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"omit.mjs","sources":["../../src/record/omit.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"omit.mjs","sources":["../../src/record/omit.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAWA;AACO,MAAM,IAAI,GAAG,CAIlB,UAAmB,EACnB,UAAsB,EACtB,OAKC,KAC6B;AAC9B,IAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE;QACnC,MAAM,IAAI,KAAK,CACb,CAAA,qCAAA,EAAwC,UAAU,CAAC,QAAQ,CAAA,CAAE,CAC9D;;IAGH,MAAM,KAAK,GAAG,qBAAqB,CAAC,UAAU,CAAC,cAAc,CAAC;AAE9D,IAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,QAAA,MAAM,IAAI,KAAK,CACb,CAAA,+EAAA,CAAiF,CAClF;;;IAIH,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;QACzC,QAAQ,EACN,OAAO,EAAE,QAAQ;YACjB,CAAA,KAAA,EAAQ,UAAU,CAAC,QAAQ,CAAA,EAAA,EAAK,gBAAgB,CAAC,UAAU,CAAC,CAAA,CAAA,CAAG;AAEjE,QAAA,cAAc,EAAE,OAAO,EAAE,cAAc,IAAI,UAAU,CAAC,cAAc;AACrE,KAAA,CAA0C;AAC7C;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"partial.d.mts","sourceRoot":"","sources":["../../src/record/partial.mts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,oBAAoB,
|
|
1
|
+
{"version":3,"file":"partial.d.mts","sourceRoot":"","sources":["../../src/record/partial.mts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,IAAI,EAKV,MAAM,aAAa,CAAC;AAKrB;;;GAGG;AACH,eAAO,MAAM,OAAO,GAClB,KAAK,CAAC,CAAC,SAAS,aAAa,EAC7B,KAAK,CAAC,gBAAgB,SAAS,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAE9D,YAAY,IAAI,CAAC,CAAC,CAAC,EACnB,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,oBAAoB,CAAC;CACtC,CAAC,CACH,KACA,WAAW,CAAC,CAAC,EAAE,gBAAgB,CAoCjC,CAAC;AAEF,KAAK,WAAW,CACd,CAAC,SAAS,aAAa,EACvB,gBAAgB,SAAS,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS,GAClE,SAAS,IACT,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAE5C,sCAAsC;AACtC,KAAK,YAAY,CACf,CAAC,SAAS,aAAa,EACvB,gBAAgB,SAAS,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS,IAEpE,MAAM,CAAC,gBAAgB,EAAE,SAAS,CAAC,SAAS,IAAI,GAC5C,OAAO,CAAC,CAAC,CAAC,GACV,gBAAgB,CAAC,CAAC,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC"}
|
package/dist/record/partial.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'ts-data-forge';
|
|
2
|
-
import { hasRecordInternals } from '../type.mjs';
|
|
2
|
+
import { hasRecordInternals, flattenShapeStructure } from '../type.mjs';
|
|
3
3
|
import { toUnionKeyString } from '../utils/to-union-string.mjs';
|
|
4
4
|
import { optional } from './optional.mjs';
|
|
5
5
|
import { record } from './record.mjs';
|
|
@@ -12,12 +12,16 @@ const partial = (recordType, options) => {
|
|
|
12
12
|
if (!hasRecordInternals(recordType)) {
|
|
13
13
|
throw new Error(`Expected a record type but received: ${recordType.typeName}`);
|
|
14
14
|
}
|
|
15
|
+
const shape = flattenShapeStructure(recordType.shapeStructure);
|
|
16
|
+
if (shape === undefined) {
|
|
17
|
+
throw new Error(`partial() requires a simple or intersection record type, but received a union type`);
|
|
18
|
+
}
|
|
15
19
|
const typeNameFilled = options?.typeName ??
|
|
16
20
|
(options?.keysToBeOptional === undefined
|
|
17
21
|
? `Partial<${recordType.typeName}>`
|
|
18
22
|
: `PartiallyPartial<${recordType.typeName}, ${toUnionKeyString(options.keysToBeOptional)}>`);
|
|
19
|
-
const keysToBeOptional = new Set(options?.keysToBeOptional ?? Object.keys(
|
|
20
|
-
const partialShape = Object.fromEntries(Object.entries(
|
|
23
|
+
const keysToBeOptional = new Set(options?.keysToBeOptional ?? Object.keys(shape));
|
|
24
|
+
const partialShape = Object.fromEntries(Object.entries(shape).map(([k, v]) => [k, keysToBeOptional.has(k) ? optional(v) : v]));
|
|
21
25
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
22
26
|
return record(partialShape, {
|
|
23
27
|
typeName: typeNameFilled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"partial.mjs","sources":["../../src/record/partial.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"partial.mjs","sources":["../../src/record/partial.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAaA;;;AAGG;MACU,OAAO,GAAG,CAIrB,UAAmB,EACnB,OAMC,KACmC;AACpC,IAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE;QACnC,MAAM,IAAI,KAAK,CACb,CAAA,qCAAA,EAAwC,UAAU,CAAC,QAAQ,CAAA,CAAE,CAC9D;;IAGH,MAAM,KAAK,GAAG,qBAAqB,CAAC,UAAU,CAAC,cAAc,CAAC;AAE9D,IAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,QAAA,MAAM,IAAI,KAAK,CACb,CAAA,kFAAA,CAAoF,CACrF;;AAGH,IAAA,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ;AACjB,SAAC,OAAO,EAAE,gBAAgB,KAAK;AAC7B,cAAE,CAAA,QAAA,EAAW,UAAU,CAAC,QAAQ,CAAA,CAAA;AAChC,cAAE,CAAA,iBAAA,EAAoB,UAAU,CAAC,QAAQ,CAAA,EAAA,EAAK,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,CAAA,CAAG,CAAC;AAEhG,IAAA,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CACnD,OAAO,EAAE,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAChD;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CACrC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CACvB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAU,CACpE,CACqB;;IAGxB,OAAO,MAAM,CAAC,YAAY,EAAE;AAC1B,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,cAAc,EAAE,OAAO,EAAE,cAAc,IAAI,UAAU,CAAC,cAAc;AACrE,KAAA,CAAgD;AACnD;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pick.d.mts","sourceRoot":"","sources":["../../src/record/pick.mts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,oBAAoB,
|
|
1
|
+
{"version":3,"file":"pick.d.mts","sourceRoot":"","sources":["../../src/record/pick.mts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,oBAAoB,EAGzB,KAAK,IAAI,EAEV,MAAM,aAAa,CAAC;AAIrB,8CAA8C;AAC9C,eAAO,MAAM,IAAI,GACf,KAAK,CAAC,CAAC,SAAS,aAAa,EAC7B,KAAK,CAAC,UAAU,SAAS,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,EAEtD,YAAY,IAAI,CAAC,CAAC,CAAC,EACnB,YAAY,UAAU,EACtB,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,oBAAoB,CAAC;CACtC,CAAC,CACH,KACA,UAAU,CAAC,CAAC,EAAE,UAAU,CAuB1B,CAAC;AAEF,KAAK,UAAU,CACb,CAAC,SAAS,aAAa,EACvB,UAAU,SAAS,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,IAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/record/pick.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Obj } from 'ts-data-forge';
|
|
2
|
-
import { hasRecordInternals } from '../type.mjs';
|
|
2
|
+
import { hasRecordInternals, flattenShapeStructure } from '../type.mjs';
|
|
3
3
|
import { toUnionKeyString } from '../utils/to-union-string.mjs';
|
|
4
4
|
import { record } from './record.mjs';
|
|
5
5
|
|
|
@@ -8,8 +8,12 @@ const pick = (recordType, keysToPick, options) => {
|
|
|
8
8
|
if (!hasRecordInternals(recordType)) {
|
|
9
9
|
throw new Error(`Expected a record type but received: ${recordType.typeName}`);
|
|
10
10
|
}
|
|
11
|
+
const shape = flattenShapeStructure(recordType.shapeStructure);
|
|
12
|
+
if (shape === undefined) {
|
|
13
|
+
throw new Error(`pick() requires a simple or intersection record type, but received a union type`);
|
|
14
|
+
}
|
|
11
15
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
12
|
-
return record(Obj.pick(
|
|
16
|
+
return record(Obj.pick(shape, keysToPick), {
|
|
13
17
|
typeName: options?.typeName ??
|
|
14
18
|
`Pick<${recordType.typeName}, ${toUnionKeyString(keysToPick)}>`,
|
|
15
19
|
excessProperty: options?.excessProperty ?? recordType.excessProperty,
|
package/dist/record/pick.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pick.mjs","sources":["../../src/record/pick.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"pick.mjs","sources":["../../src/record/pick.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAWA;AACO,MAAM,IAAI,GAAG,CAIlB,UAAmB,EACnB,UAAsB,EACtB,OAKC,KAC4B;AAC7B,IAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE;QACnC,MAAM,IAAI,KAAK,CACb,CAAA,qCAAA,EAAwC,UAAU,CAAC,QAAQ,CAAA,CAAE,CAC9D;;IAGH,MAAM,KAAK,GAAG,qBAAqB,CAAC,UAAU,CAAC,cAAc,CAAC;AAE9D,IAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,QAAA,MAAM,IAAI,KAAK,CACb,CAAA,+EAAA,CAAiF,CAClF;;;IAIH,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;QACzC,QAAQ,EACN,OAAO,EAAE,QAAQ;YACjB,CAAA,KAAA,EAAQ,UAAU,CAAC,QAAQ,CAAA,EAAA,EAAK,gBAAgB,CAAC,UAAU,CAAC,CAAA,CAAA,CAAG;AAEjE,QAAA,cAAc,EAAE,OAAO,EAAE,cAAc,IAAI,UAAU,CAAC,cAAc;AACrE,KAAA,CAAyC;AAC5C;;;;"}
|
package/dist/record/record.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.mjs","sources":["../../src/record/record.mts"],"sourcesContent":[null],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"record.mjs","sources":["../../src/record/record.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"required.d.mts","sourceRoot":"","sources":["../../src/record/required.mts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"required.d.mts","sourceRoot":"","sources":["../../src/record/required.mts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,IAAI,EAGV,MAAM,aAAa,CAAC;AAKrB;;;GAGG;AACH,eAAO,MAAM,QAAQ,GACnB,KAAK,CAAC,CAAC,SAAS,aAAa,EAC7B,KAAK,CAAC,gBAAgB,SAAS,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAE9D,YAAY,IAAI,CAAC,CAAC,CAAC,EACnB,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,oBAAoB,CAAC;CACtC,CAAC,CACH,KACA,YAAY,CAAC,CAAC,EAAE,gBAAgB,CAoClC,CAAC;AAEF,KAAK,YAAY,CACf,CAAC,SAAS,aAAa,EACvB,gBAAgB,SAAS,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IACtD,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAE7C,uCAAuC;AACvC,KAAK,aAAa,CAChB,CAAC,SAAS,aAAa,EACvB,gBAAgB,SAAS,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS,IAEpE,MAAM,CAAC,gBAAgB,EAAE,SAAS,CAAC,SAAS,IAAI,GAC5C,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GACrB,iBAAiB,CAAC,CAAC,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC"}
|
package/dist/record/required.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'ts-data-forge';
|
|
2
|
-
import { hasRecordInternals } from '../type.mjs';
|
|
2
|
+
import { hasRecordInternals, flattenShapeStructure } from '../type.mjs';
|
|
3
3
|
import { toUnionKeyString } from '../utils/to-union-string.mjs';
|
|
4
4
|
import { isOptionalProperty } from './optional.mjs';
|
|
5
5
|
import { record } from './record.mjs';
|
|
@@ -12,12 +12,16 @@ const required = (recordType, options) => {
|
|
|
12
12
|
if (!hasRecordInternals(recordType)) {
|
|
13
13
|
throw new Error(`Expected a record type but received: ${recordType.typeName}`);
|
|
14
14
|
}
|
|
15
|
+
const shape = flattenShapeStructure(recordType.shapeStructure);
|
|
16
|
+
if (shape === undefined) {
|
|
17
|
+
throw new Error(`required() requires a simple or intersection record type, but received a union type`);
|
|
18
|
+
}
|
|
15
19
|
const typeNameFilled = options?.typeName ??
|
|
16
20
|
(options?.keysToBeRequired === undefined
|
|
17
21
|
? `Required<${recordType.typeName}>`
|
|
18
22
|
: `PartiallyRequired<${recordType.typeName}, ${toUnionKeyString(options.keysToBeRequired)}>`);
|
|
19
|
-
const keysToBeRequired = new Set(options?.keysToBeRequired ?? Object.keys(
|
|
20
|
-
const requiredShape = Object.fromEntries(Object.entries(
|
|
23
|
+
const keysToBeRequired = new Set(options?.keysToBeRequired ?? Object.keys(shape));
|
|
24
|
+
const requiredShape = Object.fromEntries(Object.entries(shape).map(([k, v]) => [k, keysToBeRequired.has(k) ? makeRequired(v) : v]));
|
|
21
25
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
22
26
|
return record(requiredShape, {
|
|
23
27
|
typeName: typeNameFilled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"required.mjs","sources":["../../src/record/required.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"required.mjs","sources":["../../src/record/required.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAaA;;;AAGG;MACU,QAAQ,GAAG,CAItB,UAAmB,EACnB,OAMC,KACoC;AACrC,IAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE;QACnC,MAAM,IAAI,KAAK,CACb,CAAA,qCAAA,EAAwC,UAAU,CAAC,QAAQ,CAAA,CAAE,CAC9D;;IAGH,MAAM,KAAK,GAAG,qBAAqB,CAAC,UAAU,CAAC,cAAc,CAAC;AAE9D,IAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,QAAA,MAAM,IAAI,KAAK,CACb,CAAA,mFAAA,CAAqF,CACtF;;AAGH,IAAA,MAAM,cAAc,GAClB,OAAO,EAAE,QAAQ;AACjB,SAAC,OAAO,EAAE,gBAAgB,KAAK;AAC7B,cAAE,CAAA,SAAA,EAAY,UAAU,CAAC,QAAQ,CAAA,CAAA;AACjC,cAAE,CAAA,kBAAA,EAAqB,UAAU,CAAC,QAAQ,CAAA,EAAA,EAAK,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,CAAA,CAAG,CAAC;AAEjG,IAAA,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CACnD,OAAO,EAAE,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAChD;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CACtC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CACvB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAU,CACxE,CACqC;;IAGxC,OAAO,MAAM,CAAC,aAAa,EAAE;AAC3B,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,cAAc,EAAE,OAAO,EAAE,cAAc,IAAI,UAAU,CAAC,cAAc;AACrE,KAAA,CAAwD;AAC3D;AAgBA;;AAEG;AACH,MAAM,YAAY,GAAG,CACnB,CAAI,KACuB;AAC3B,IAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;;AAE1B,QAAA,OAAO,CAA4B;;IAGrC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC;;AAGlC,IAAA,OAAO,IAA+B;AACxC,CAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valueof.d.mts","sourceRoot":"","sources":["../../src/record/valueof.mts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"valueof.d.mts","sourceRoot":"","sources":["../../src/record/valueof.mts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,IAAI,EAEV,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,OAAO,GAAI,KAAK,CAAC,CAAC,SAAS,aAAa,EACnD,YAAY,IAAI,CAAC,CAAC,CAAC,EACnB,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CACH,KACA,WAAW,CAAC,CAAC,CAiCf,CAAC;AAEF,KAAK,WAAW,CAAC,CAAC,SAAS,aAAa,IACtC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/record/valueof.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Arr } from 'ts-data-forge';
|
|
2
|
-
import { hasRecordInternals } from '../type.mjs';
|
|
2
|
+
import { hasRecordInternals, flattenShapeStructure } from '../type.mjs';
|
|
3
3
|
import { union } from '../compose/union.mjs';
|
|
4
4
|
import '@sindresorhus/is';
|
|
5
5
|
import '../other-types/unknown.mjs';
|
|
@@ -9,9 +9,11 @@ const valueof = (recordType, options) => {
|
|
|
9
9
|
if (!hasRecordInternals(recordType)) {
|
|
10
10
|
throw new Error(`Expected a record type but received: ${recordType.typeName}`);
|
|
11
11
|
}
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
const shape = flattenShapeStructure(recordType.shapeStructure);
|
|
13
|
+
if (shape === undefined) {
|
|
14
|
+
throw new Error(`valueof() requires a simple or intersection record type, but received a union type`);
|
|
15
|
+
}
|
|
16
|
+
const types = Object.values(shape);
|
|
15
17
|
if (Arr.isArrayAtLeastLength(types, 2)) {
|
|
16
18
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
17
19
|
return union(types, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valueof.mjs","sources":["../../src/record/valueof.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;MAUa,OAAO,GAAG,CACrB,UAAmB,EACnB,OAIC,KACiB;AAClB,IAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE;QACnC,MAAM,IAAI,KAAK,CACb,CAAA,qCAAA,EAAwC,UAAU,CAAC,QAAQ,CAAA,CAAE,CAC9D;;
|
|
1
|
+
{"version":3,"file":"valueof.mjs","sources":["../../src/record/valueof.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;MAUa,OAAO,GAAG,CACrB,UAAmB,EACnB,OAIC,KACiB;AAClB,IAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE;QACnC,MAAM,IAAI,KAAK,CACb,CAAA,qCAAA,EAAwC,UAAU,CAAC,QAAQ,CAAA,CAAE,CAC9D;;IAGH,MAAM,KAAK,GAAG,qBAAqB,CAAC,UAAU,CAAC,cAAc,CAAC;AAE9D,IAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,QAAA,MAAM,IAAI,KAAK,CACb,CAAA,kFAAA,CAAoF,CACrF;;IAGH,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;IAElC,IAAI,GAAG,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE;;QAEtC,OAAO,KAAK,CAAC,KAAK,EAAE;YAClB,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAA,QAAA,EAAW,UAAU,CAAC,QAAQ,CAAA,CAAA,CAAG;AACjE,SAAA,CAAmB;;AAGtB,IAAA,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;;AAEzB,QAAA,OAAO,KAAK,CAAC,CAAC,CAAmB;;;;AAMnC,IAAA,OAAO,aAAyD;AAClE;;;;"}
|
package/dist/type.d.mts
CHANGED
|
@@ -33,11 +33,26 @@ export type TypeOf<A extends Type<unknown>> = A['defaultValue'];
|
|
|
33
33
|
export type ExcessPropertyOption = 'allow' | 'reject';
|
|
34
34
|
/** @internal */
|
|
35
35
|
export type UnknownShape = ReadonlyRecord<string, Type<unknown>>;
|
|
36
|
+
/** @internal Shape structure that can represent union and intersection */
|
|
37
|
+
export type ShapeStructure = Readonly<{
|
|
38
|
+
kind: 'simple';
|
|
39
|
+
shape: UnknownShape;
|
|
40
|
+
} | {
|
|
41
|
+
kind: 'union';
|
|
42
|
+
variants: readonly ShapeStructure[];
|
|
43
|
+
} | {
|
|
44
|
+
kind: 'intersection';
|
|
45
|
+
parts: readonly ShapeStructure[];
|
|
46
|
+
}>;
|
|
36
47
|
/** @internal Runtime type for accessing internal record properties via cast. */
|
|
37
48
|
export type RecordTypeInternals = Readonly<{
|
|
38
|
-
|
|
49
|
+
shapeStructure: ShapeStructure;
|
|
39
50
|
excessProperty: ExcessPropertyOption;
|
|
40
51
|
}>;
|
|
52
|
+
/** @internal Helper to flatten ShapeStructure to a simple shape if possible */
|
|
53
|
+
export declare const flattenShapeStructure: (structure: ShapeStructure) => UnknownShape | undefined;
|
|
54
|
+
/** @internal Backward compatibility: simple shape accessor */
|
|
55
|
+
export declare const getShape: (internals: RecordTypeInternals) => UnknownShape;
|
|
41
56
|
/** @internal Runtime check for record type internals. */
|
|
42
57
|
export declare const hasRecordInternals: <T extends Type<unknown>>(t: T) => t is T & RecordTypeInternals;
|
|
43
58
|
//# sourceMappingURL=type.d.mts.map
|
package/dist/type.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.d.mts","sourceRoot":"","sources":["../src/type.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;;;;;;GASG;AACH,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,CAAC,CAAC;IAChB,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC;IACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC;IACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC,CAAC;IAEhE,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,IAAI,CAAC;CACjB,CAAC,CAAC;AAEH,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AAEhE;;;;;;;;GAQG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtD,gBAAgB;AAChB,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAEjE,gFAAgF;AAChF,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,
|
|
1
|
+
{"version":3,"file":"type.d.mts","sourceRoot":"","sources":["../src/type.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;;;;;;GASG;AACH,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,CAAC,CAAC;IAChB,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC;IACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC;IACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC,CAAC;IAEhE,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,IAAI,CAAC;CACjB,CAAC,CAAC;AAEH,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AAEhE;;;;;;;;GAQG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtD,gBAAgB;AAChB,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAEjE,0EAA0E;AAC1E,MAAM,MAAM,cAAc,GAAG,QAAQ,CACjC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAA;CAAE,CAC7D,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,oBAAoB,CAAC;CACtC,CAAC,CAAC;AAEH,+EAA+E;AAC/E,eAAO,MAAM,qBAAqB,GAChC,WAAW,cAAc,KACxB,YAAY,GAAG,SAsBjB,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,QAAQ,GAAI,WAAW,mBAAmB,KAAG,YAUzD,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,EACxD,GAAG,CAAC,KACH,CAAC,IAAI,CAAC,GAAG,mBAAgD,CAAC"}
|