@transcend-io/type-utils 2.0.1 → 3.0.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/LICENSE +201 -21
- package/dist/index.d.mts +591 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +529 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +33 -43
- package/.yarn/sdks/eslint/package.json +0 -14
- package/.yarn/sdks/prettier/package.json +0 -7
- package/.yarn/sdks/typescript/package.json +0 -10
- package/README.md +0 -37
- package/build/aggregateObjects.d.ts +0 -27
- package/build/aggregateObjects.d.ts.map +0 -1
- package/build/aggregateObjects.js +0 -34
- package/build/aggregateObjects.js.map +0 -1
- package/build/apply.d.ts +0 -35
- package/build/apply.d.ts.map +0 -1
- package/build/apply.js +0 -47
- package/build/apply.js.map +0 -1
- package/build/codecTools/FixedLengthArray.d.ts +0 -20
- package/build/codecTools/FixedLengthArray.d.ts.map +0 -1
- package/build/codecTools/FixedLengthArray.js +0 -11
- package/build/codecTools/FixedLengthArray.js.map +0 -1
- package/build/codecTools/FixedLengthString.d.ts +0 -17
- package/build/codecTools/FixedLengthString.d.ts.map +0 -1
- package/build/codecTools/FixedLengthString.js +0 -10
- package/build/codecTools/FixedLengthString.js.map +0 -1
- package/build/codecTools/NonEmptyString.d.ts +0 -12
- package/build/codecTools/NonEmptyString.d.ts.map +0 -1
- package/build/codecTools/NonEmptyString.js +0 -6
- package/build/codecTools/NonEmptyString.js.map +0 -1
- package/build/codecTools/createDefaultCodec.d.ts +0 -39
- package/build/codecTools/createDefaultCodec.d.ts.map +0 -1
- package/build/codecTools/createDefaultCodec.js +0 -114
- package/build/codecTools/createDefaultCodec.js.map +0 -1
- package/build/codecTools/decodeCodec.d.ts +0 -12
- package/build/codecTools/decodeCodec.d.ts.map +0 -1
- package/build/codecTools/decodeCodec.js +0 -47
- package/build/codecTools/decodeCodec.js.map +0 -1
- package/build/codecTools/dictionary.d.ts +0 -18
- package/build/codecTools/dictionary.d.ts.map +0 -1
- package/build/codecTools/dictionary.js +0 -13
- package/build/codecTools/dictionary.js.map +0 -1
- package/build/codecTools/index.d.ts +0 -10
- package/build/codecTools/index.d.ts.map +0 -1
- package/build/codecTools/index.js +0 -10
- package/build/codecTools/index.js.map +0 -1
- package/build/codecTools/isCodecError.d.ts +0 -7
- package/build/codecTools/isCodecError.d.ts.map +0 -1
- package/build/codecTools/isCodecError.js +0 -9
- package/build/codecTools/isCodecError.js.map +0 -1
- package/build/codecTools/partialRecord.d.ts +0 -16
- package/build/codecTools/partialRecord.d.ts.map +0 -1
- package/build/codecTools/partialRecord.js +0 -11
- package/build/codecTools/partialRecord.js.map +0 -1
- package/build/codecTools/toJsonSchema.d.ts +0 -11
- package/build/codecTools/toJsonSchema.d.ts.map +0 -1
- package/build/codecTools/toJsonSchema.js +0 -115
- package/build/codecTools/toJsonSchema.js.map +0 -1
- package/build/enum.d.ts +0 -47
- package/build/enum.d.ts.map +0 -1
- package/build/enum.js +0 -44
- package/build/enum.js.map +0 -1
- package/build/enums.d.ts +0 -20
- package/build/enums.d.ts.map +0 -1
- package/build/enums.js +0 -18
- package/build/enums.js.map +0 -1
- package/build/findAllWithRegex.d.ts +0 -41
- package/build/findAllWithRegex.d.ts.map +0 -1
- package/build/findAllWithRegex.js +0 -41
- package/build/findAllWithRegex.js.map +0 -1
- package/build/flattenObject.d.ts +0 -33
- package/build/flattenObject.d.ts.map +0 -1
- package/build/flattenObject.js +0 -72
- package/build/flattenObject.js.map +0 -1
- package/build/fromEntries.d.ts +0 -9
- package/build/fromEntries.d.ts.map +0 -1
- package/build/fromEntries.js +0 -9
- package/build/fromEntries.js.map +0 -1
- package/build/getEntries.d.ts +0 -8
- package/build/getEntries.d.ts.map +0 -1
- package/build/getEntries.js +0 -10
- package/build/getEntries.js.map +0 -1
- package/build/getKeys.d.ts +0 -14
- package/build/getKeys.d.ts.map +0 -1
- package/build/getKeys.js +0 -19
- package/build/getKeys.js.map +0 -1
- package/build/getValues.d.ts +0 -9
- package/build/getValues.d.ts.map +0 -1
- package/build/getValues.js +0 -9
- package/build/getValues.js.map +0 -1
- package/build/gql.d.ts +0 -22
- package/build/gql.d.ts.map +0 -1
- package/build/gql.js +0 -32
- package/build/gql.js.map +0 -1
- package/build/groupBy.d.ts +0 -11
- package/build/groupBy.d.ts.map +0 -1
- package/build/groupBy.js +0 -20
- package/build/groupBy.js.map +0 -1
- package/build/index.d.ts +0 -19
- package/build/index.d.ts.map +0 -1
- package/build/index.js +0 -19
- package/build/index.js.map +0 -1
- package/build/invert.d.ts +0 -23
- package/build/invert.d.ts.map +0 -1
- package/build/invert.js +0 -79
- package/build/invert.js.map +0 -1
- package/build/noExcess.d.ts +0 -33
- package/build/noExcess.d.ts.map +0 -1
- package/build/noExcess.js +0 -153
- package/build/noExcess.js.map +0 -1
- package/build/tests/FixedLengthArray.test.d.ts +0 -2
- package/build/tests/FixedLengthArray.test.d.ts.map +0 -1
- package/build/tests/FixedLengthArray.test.js +0 -15
- package/build/tests/FixedLengthArray.test.js.map +0 -1
- package/build/tests/aggregateObjects.test.d.ts +0 -2
- package/build/tests/aggregateObjects.test.d.ts.map +0 -1
- package/build/tests/aggregateObjects.test.js +0 -98
- package/build/tests/aggregateObjects.test.js.map +0 -1
- package/build/tests/createDefaultCodec.test.d.ts +0 -2
- package/build/tests/createDefaultCodec.test.d.ts.map +0 -1
- package/build/tests/createDefaultCodec.test.js +0 -104
- package/build/tests/createDefaultCodec.test.js.map +0 -1
- package/build/tests/decodeCodec.test.d.ts +0 -2
- package/build/tests/decodeCodec.test.d.ts.map +0 -1
- package/build/tests/decodeCodec.test.js +0 -43
- package/build/tests/decodeCodec.test.js.map +0 -1
- package/build/tests/enum.test.d.ts +0 -2
- package/build/tests/enum.test.d.ts.map +0 -1
- package/build/tests/enum.test.js +0 -21
- package/build/tests/enum.test.js.map +0 -1
- package/build/tests/flattenObject.test.d.ts +0 -2
- package/build/tests/flattenObject.test.d.ts.map +0 -1
- package/build/tests/flattenObject.test.js +0 -115
- package/build/tests/flattenObject.test.js.map +0 -1
- package/build/tests/gql.test.d.ts +0 -2
- package/build/tests/gql.test.d.ts.map +0 -1
- package/build/tests/gql.test.js +0 -44
- package/build/tests/gql.test.js.map +0 -1
- package/build/tests/groupBy.test.d.ts +0 -2
- package/build/tests/groupBy.test.d.ts.map +0 -1
- package/build/tests/groupBy.test.js +0 -13
- package/build/tests/groupBy.test.js.map +0 -1
- package/build/tests/invert.test.d.ts +0 -2
- package/build/tests/invert.test.d.ts.map +0 -1
- package/build/tests/invert.test.js +0 -50
- package/build/tests/invert.test.js.map +0 -1
- package/build/tests/noExcess.test.d.ts +0 -2
- package/build/tests/noExcess.test.d.ts.map +0 -1
- package/build/tests/noExcess.test.js +0 -65
- package/build/tests/noExcess.test.js.map +0 -1
- package/build/tests/transposeObjectArray.test.d.ts +0 -2
- package/build/tests/transposeObjectArray.test.d.ts.map +0 -1
- package/build/tests/transposeObjectArray.test.js +0 -155
- package/build/tests/transposeObjectArray.test.js.map +0 -1
- package/build/transposeObjectArray.d.ts +0 -67
- package/build/transposeObjectArray.d.ts.map +0 -1
- package/build/transposeObjectArray.js +0 -39
- package/build/transposeObjectArray.js.map +0 -1
- package/build/tsbuildinfo +0 -1
- package/build/types.d.ts +0 -150
- package/build/types.d.ts.map +0 -1
- package/build/types.js +0 -2
- package/build/types.js.map +0 -1
- package/build/valuesOf.d.ts +0 -12
- package/build/valuesOf.d.ts.map +0 -1
- package/build/valuesOf.js +0 -14
- package/build/valuesOf.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gql.test.d.ts","sourceRoot":"","sources":["../../src/tests/gql.test.ts"],"names":[],"mappings":""}
|
package/build/tests/gql.test.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
// external
|
|
2
|
-
import { expect } from 'chai';
|
|
3
|
-
// global
|
|
4
|
-
import { gql } from '../gql.js';
|
|
5
|
-
describe('gql', () => {
|
|
6
|
-
it('should compile a template with no expressions', () => {
|
|
7
|
-
expect(gql `This is a test`).equals('This is a test');
|
|
8
|
-
});
|
|
9
|
-
it('should compile a template with expressions', () => {
|
|
10
|
-
const interfaceType = gql `
|
|
11
|
-
"""
|
|
12
|
-
A classification of data subjects that the organization may have
|
|
13
|
-
"""
|
|
14
|
-
interface DataSubjectInterface {
|
|
15
|
-
"""
|
|
16
|
-
This is an id
|
|
17
|
-
"""
|
|
18
|
-
id: ID
|
|
19
|
-
}
|
|
20
|
-
`;
|
|
21
|
-
const typeType = gql `
|
|
22
|
-
""" The internal configuration for a data subject """
|
|
23
|
-
type DataSubjectInternal implements DataSubjectInterface {
|
|
24
|
-
${interfaceType}
|
|
25
|
-
""" Whether the data subject is currently turned on """
|
|
26
|
-
active: Boolean!,
|
|
27
|
-
}
|
|
28
|
-
`;
|
|
29
|
-
expect(typeType).equals(`
|
|
30
|
-
""" The internal configuration for a data subject """
|
|
31
|
-
type DataSubjectInternal implements DataSubjectInterface {
|
|
32
|
-
${' '}
|
|
33
|
-
"""
|
|
34
|
-
This is an id
|
|
35
|
-
"""
|
|
36
|
-
id: ID
|
|
37
|
-
${' '}
|
|
38
|
-
""" Whether the data subject is currently turned on """
|
|
39
|
-
active: Boolean!,
|
|
40
|
-
}
|
|
41
|
-
`);
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
//# sourceMappingURL=gql.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gql.test.js","sourceRoot":"","sources":["../../src/tests/gql.test.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,SAAS;AACT,OAAO,EAAE,GAAG,EAAO,MAAM,WAAW,CAAC;AAErC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;IACnB,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,GAAG,CAAA,gBAAgB,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QAMpD,MAAM,aAAa,GAAG,GAAG,CAAA;;;;;;;;;;KAUK,CAAC;QAC/B,MAAM,QAAQ,GAAG,GAAG,CAAA;;;UAGd,aAAa;;;;KAIlB,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CACrB;;;EAGJ,UAAU;;;;;EAKV,QAAQ;;;;KAIL,CACA,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"groupBy.test.d.ts","sourceRoot":"","sources":["../../src/tests/groupBy.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
// external
|
|
2
|
-
import { expect } from 'chai';
|
|
3
|
-
// global
|
|
4
|
-
import { groupBy } from '../groupBy.js';
|
|
5
|
-
describe('groupBy', () => {
|
|
6
|
-
it('should group by a given key', () => {
|
|
7
|
-
const expected = new Map();
|
|
8
|
-
expected.set('foo', [{ a: 'foo' }, { a: 'foo' }]);
|
|
9
|
-
expected.set('bar', [{ a: 'bar' }]);
|
|
10
|
-
expect(groupBy([{ a: 'foo' }, { a: 'bar' }, { a: 'foo' }], ({ a }) => a)).deep.equals(expected);
|
|
11
|
-
});
|
|
12
|
-
});
|
|
13
|
-
//# sourceMappingURL=groupBy.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"groupBy.test.js","sourceRoot":"","sources":["../../src/tests/groupBy.test.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,SAAS;AACT,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAQxC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;QACjD,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAClD,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAEpC,MAAM,CACJ,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAClE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"invert.test.d.ts","sourceRoot":"","sources":["../../src/tests/invert.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
// external
|
|
2
|
-
import { expect } from 'chai';
|
|
3
|
-
// global
|
|
4
|
-
import { invert, invertSafe } from '../invert.js';
|
|
5
|
-
describe('invert', () => {
|
|
6
|
-
it('should invert a string -> string object', () => {
|
|
7
|
-
expect(invert({
|
|
8
|
-
a: 'b',
|
|
9
|
-
c: 'd',
|
|
10
|
-
e: 'f',
|
|
11
|
-
})).deep.equals({
|
|
12
|
-
b: 'a',
|
|
13
|
-
d: 'c',
|
|
14
|
-
f: 'e',
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
it('should throw an error when 1-1 invert is impossible', () => {
|
|
18
|
-
expect(() => invert({
|
|
19
|
-
a: 'b',
|
|
20
|
-
c: 'b',
|
|
21
|
-
e: 'f',
|
|
22
|
-
})).to.throw('Encountered duplicate value inverting object: "b: c and a"');
|
|
23
|
-
});
|
|
24
|
-
it('should invert a string -> string[] object', () => {
|
|
25
|
-
expect(invert({
|
|
26
|
-
a: ['b', 'd'],
|
|
27
|
-
c: ['d', 'e'],
|
|
28
|
-
e: ['f'],
|
|
29
|
-
})).deep.equals({
|
|
30
|
-
b: ['a'],
|
|
31
|
-
d: ['a', 'c'],
|
|
32
|
-
f: ['e'],
|
|
33
|
-
e: ['c'],
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
describe('invertSafe', () => {
|
|
38
|
-
it('should invert a string -> string[] object', () => {
|
|
39
|
-
expect(invertSafe({
|
|
40
|
-
a: 'b',
|
|
41
|
-
c: 'd',
|
|
42
|
-
e: 'f',
|
|
43
|
-
})).deep.equals({
|
|
44
|
-
b: ['a'],
|
|
45
|
-
d: ['c'],
|
|
46
|
-
f: ['e'],
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
//# sourceMappingURL=invert.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"invert.test.js","sourceRoot":"","sources":["../../src/tests/invert.test.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAElD,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CACJ,MAAM,CAAC;YACL,CAAC,EAAE,GAAG;YACN,CAAC,EAAE,GAAG;YACN,CAAC,EAAE,GAAG;SACP,CAAC,CACH,CAAC,IAAI,CAAC,MAAM,CAAC;YACZ,CAAC,EAAE,GAAG;YACN,CAAC,EAAE,GAAG;YACN,CAAC,EAAE,GAAG;SACP,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,GAAG,EAAE,CACV,MAAM,CAAC;YACL,CAAC,EAAE,GAAG;YACN,CAAC,EAAE,GAAG;YACN,CAAC,EAAE,GAAG;SACP,CAAC,CACH,CAAC,EAAE,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CACJ,MAAM,CAAC;YACL,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;YACb,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;YACb,CAAC,EAAE,CAAC,GAAG,CAAC;SACT,CAAC,CACH,CAAC,IAAI,CAAC,MAAM,CAAC;YACZ,CAAC,EAAE,CAAC,GAAG,CAAC;YACR,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;YACb,CAAC,EAAE,CAAC,GAAG,CAAC;YACR,CAAC,EAAE,CAAC,GAAG,CAAC;SACT,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CACJ,UAAU,CAAC;YACT,CAAC,EAAE,GAAG;YACN,CAAC,EAAE,GAAG;YACN,CAAC,EAAE,GAAG;SACP,CAAC,CACH,CAAC,IAAI,CAAC,MAAM,CAAC;YACZ,CAAC,EAAE,CAAC,GAAG,CAAC;YACR,CAAC,EAAE,CAAC,GAAG,CAAC;YACR,CAAC,EAAE,CAAC,GAAG,CAAC;SACT,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"noExcess.test.d.ts","sourceRoot":"","sources":["../../src/tests/noExcess.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/* eslint-disable max-len */
|
|
2
|
-
import { expect } from 'chai';
|
|
3
|
-
import * as t from 'io-ts';
|
|
4
|
-
import { noExcess } from '../noExcess.js';
|
|
5
|
-
import { decodeCodec } from '../codecTools/index.js';
|
|
6
|
-
describe('noExcess', () => {
|
|
7
|
-
it('should decode a wrapped codec as expected', () => {
|
|
8
|
-
const c = noExcess(t.type({
|
|
9
|
-
str: t.string,
|
|
10
|
-
num: t.number,
|
|
11
|
-
headers: t.record(t.string, t.string),
|
|
12
|
-
}));
|
|
13
|
-
const obj = {
|
|
14
|
-
str: 'abcd',
|
|
15
|
-
num: 123,
|
|
16
|
-
headers: {
|
|
17
|
-
yolo: 'one-life',
|
|
18
|
-
},
|
|
19
|
-
};
|
|
20
|
-
const decoded = decodeCodec(c, obj);
|
|
21
|
-
expect(decoded).to.deep.equal(obj);
|
|
22
|
-
});
|
|
23
|
-
// Confirms default functionality without noExcess wrapper
|
|
24
|
-
it('should not throw an error when unwrapped codec has an excess key', () => {
|
|
25
|
-
const c = t.type({
|
|
26
|
-
str: t.string,
|
|
27
|
-
num: t.number,
|
|
28
|
-
headers: t.record(t.string, t.string),
|
|
29
|
-
});
|
|
30
|
-
const obj = {
|
|
31
|
-
str: 'abcd',
|
|
32
|
-
num: 123,
|
|
33
|
-
headers: {
|
|
34
|
-
yolo: 'one-life',
|
|
35
|
-
},
|
|
36
|
-
extraKey: 'extraValue',
|
|
37
|
-
};
|
|
38
|
-
const decoded = decodeCodec(c, obj);
|
|
39
|
-
expect(decoded).to.deep.equal(obj);
|
|
40
|
-
});
|
|
41
|
-
it('should throw an error when noExcess wrapped codec has an excess key', () => {
|
|
42
|
-
const c = noExcess(t.type({
|
|
43
|
-
str: t.string,
|
|
44
|
-
num: t.number,
|
|
45
|
-
headers: t.record(t.string, t.string),
|
|
46
|
-
}));
|
|
47
|
-
const obj = {
|
|
48
|
-
str: 'abcd',
|
|
49
|
-
num: 123,
|
|
50
|
-
headers: {
|
|
51
|
-
yolo: 'one-life',
|
|
52
|
-
},
|
|
53
|
-
extraKey: 'extraValue',
|
|
54
|
-
};
|
|
55
|
-
try {
|
|
56
|
-
decodeCodec(c, obj);
|
|
57
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
58
|
-
}
|
|
59
|
-
catch (e) {
|
|
60
|
-
expect(e.message).to.equal('Failed to decode codec: [\n " expected type \'{| str: string, num: number, headers: { [K in string]: string } |}\'"\n]');
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
/* eslint-enable max-len */
|
|
65
|
-
//# sourceMappingURL=noExcess.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"noExcess.test.js","sourceRoot":"","sources":["../../src/tests/noExcess.test.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,GAAG,QAAQ,CAChB,CAAC,CAAC,IAAI,CAAC;YACL,GAAG,EAAE,CAAC,CAAC,MAAM;YACb,GAAG,EAAE,CAAC,CAAC,MAAM;YACb,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;SACtC,CAAC,CACH,CAAC;QAEF,MAAM,GAAG,GAAG;YACV,GAAG,EAAE,MAAM;YACX,GAAG,EAAE,GAAG;YACR,OAAO,EAAE;gBACP,IAAI,EAAE,UAAU;aACjB;SACF,CAAC;QAEF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,0DAA0D;IAC1D,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACf,GAAG,EAAE,CAAC,CAAC,MAAM;YACb,GAAG,EAAE,CAAC,CAAC,MAAM;YACb,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;SACtC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG;YACV,GAAG,EAAE,MAAM;YACX,GAAG,EAAE,GAAG;YACR,OAAO,EAAE;gBACP,IAAI,EAAE,UAAU;aACjB;YACD,QAAQ,EAAE,YAAY;SACvB,CAAC;QAEF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,CAAC,GAAG,QAAQ,CAChB,CAAC,CAAC,IAAI,CAAC;YACL,GAAG,EAAE,CAAC,CAAC,MAAM;YACb,GAAG,EAAE,CAAC,CAAC,MAAM;YACb,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;SACtC,CAAC,CACH,CAAC;QAEF,MAAM,GAAG,GAAG;YACV,GAAG,EAAE,MAAM;YACX,GAAG,EAAE,GAAG;YACR,OAAO,EAAE;gBACP,IAAI,EAAE,UAAU;aACjB;YACD,QAAQ,EAAE,YAAY;SACvB,CAAC;QACF,IAAI,CAAC;YACH,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACpB,8DAA8D;QAChE,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CACxB,yHAAyH,CAC1H,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AACH,2BAA2B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transposeObjectArray.test.d.ts","sourceRoot":"","sources":["../../src/tests/transposeObjectArray.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import { expect } from 'chai';
|
|
2
|
-
import { transposeObjectArray } from '../transposeObjectArray.js';
|
|
3
|
-
describe('transposeObjectArray', () => {
|
|
4
|
-
it('should handle empty array', () => {
|
|
5
|
-
const result = transposeObjectArray({
|
|
6
|
-
objects: [],
|
|
7
|
-
properties: ['id', 'name'],
|
|
8
|
-
});
|
|
9
|
-
expect(result).to.deep.equal({});
|
|
10
|
-
});
|
|
11
|
-
it('should extract multiple properties from array of objects', () => {
|
|
12
|
-
const objects = [
|
|
13
|
-
{ id: 1, name: 'John', age: 25, city: 'NY' },
|
|
14
|
-
{ id: 2, name: 'Jane', age: 30, city: 'LA' },
|
|
15
|
-
];
|
|
16
|
-
const result = transposeObjectArray({
|
|
17
|
-
objects,
|
|
18
|
-
properties: ['id', 'name'],
|
|
19
|
-
});
|
|
20
|
-
expect(result).to.deep.equal({
|
|
21
|
-
id: [1, 2],
|
|
22
|
-
name: ['John', 'Jane'],
|
|
23
|
-
rest: [
|
|
24
|
-
{ age: 25, city: 'NY' },
|
|
25
|
-
{ age: 30, city: 'LA' },
|
|
26
|
-
],
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
it('should handle objects with missing properties', () => {
|
|
30
|
-
const objects = [
|
|
31
|
-
{ id: 1, name: 'John', age: 25 },
|
|
32
|
-
{ id: 2, age: 30 },
|
|
33
|
-
{ id: 3, name: 'Bob', city: 'LA' },
|
|
34
|
-
];
|
|
35
|
-
const result = transposeObjectArray({
|
|
36
|
-
objects,
|
|
37
|
-
properties: ['id', 'name'],
|
|
38
|
-
});
|
|
39
|
-
expect(result).to.deep.equal({
|
|
40
|
-
id: [1, 2, 3],
|
|
41
|
-
name: ['John', undefined, 'Bob'],
|
|
42
|
-
rest: [{ age: 25 }, { age: 30 }, { city: 'LA' }],
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
it('should handle different value types', () => {
|
|
46
|
-
const objects = [
|
|
47
|
-
{ id: 1, active: true, count: 10, tags: ['a', 'b'] },
|
|
48
|
-
{ id: 2, active: false, count: 20, tags: ['c'] },
|
|
49
|
-
];
|
|
50
|
-
const result = transposeObjectArray({
|
|
51
|
-
objects,
|
|
52
|
-
properties: ['active', 'tags'],
|
|
53
|
-
});
|
|
54
|
-
expect(result).to.deep.equal({
|
|
55
|
-
active: [true, false],
|
|
56
|
-
tags: [['a', 'b'], ['c']],
|
|
57
|
-
rest: [
|
|
58
|
-
{ id: 1, count: 10 },
|
|
59
|
-
{ id: 2, count: 20 },
|
|
60
|
-
],
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
it('should handle extracting all properties (empty rest)', () => {
|
|
64
|
-
const objects = [
|
|
65
|
-
{ id: 1, name: 'John' },
|
|
66
|
-
{ id: 2, name: 'Jane' },
|
|
67
|
-
];
|
|
68
|
-
const result = transposeObjectArray({
|
|
69
|
-
objects,
|
|
70
|
-
properties: ['id', 'name'],
|
|
71
|
-
});
|
|
72
|
-
expect(result).to.deep.equal({
|
|
73
|
-
id: [1, 2],
|
|
74
|
-
name: ['John', 'Jane'],
|
|
75
|
-
rest: [{}, {}],
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
it('should handle extracting no properties (everything in rest)', () => {
|
|
79
|
-
const objects = [
|
|
80
|
-
{ id: 1, name: 'John' },
|
|
81
|
-
{ id: 2, name: 'Jane' },
|
|
82
|
-
];
|
|
83
|
-
const result = transposeObjectArray({ objects, properties: [] });
|
|
84
|
-
expect(result).to.deep.equal({
|
|
85
|
-
rest: [
|
|
86
|
-
{ id: 1, name: 'John' },
|
|
87
|
-
{ id: 2, name: 'Jane' },
|
|
88
|
-
],
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
it('should handle objects with null or undefined values', () => {
|
|
92
|
-
const objects = [
|
|
93
|
-
{ id: 1, name: null, age: 25 },
|
|
94
|
-
{ id: 2, name: undefined, age: 30 },
|
|
95
|
-
];
|
|
96
|
-
const result = transposeObjectArray({
|
|
97
|
-
objects,
|
|
98
|
-
properties: ['id', 'name'],
|
|
99
|
-
});
|
|
100
|
-
expect(result).to.deep.equal({
|
|
101
|
-
id: [1, 2],
|
|
102
|
-
name: [null, undefined],
|
|
103
|
-
rest: [{ age: 25 }, { age: 30 }],
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
it('should handle nested objects', () => {
|
|
107
|
-
const objects = [
|
|
108
|
-
{ id: 1, user: { name: 'John', age: 25 } },
|
|
109
|
-
{ id: 2, user: { name: 'Jane', age: 30 } },
|
|
110
|
-
];
|
|
111
|
-
const result = transposeObjectArray({
|
|
112
|
-
objects,
|
|
113
|
-
properties: ['id', 'user'],
|
|
114
|
-
});
|
|
115
|
-
expect(result).to.deep.equal({
|
|
116
|
-
id: [1, 2],
|
|
117
|
-
user: [
|
|
118
|
-
{ name: 'John', age: 25 },
|
|
119
|
-
{ name: 'Jane', age: 30 },
|
|
120
|
-
],
|
|
121
|
-
rest: [{}, {}],
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
it('should preserve property order in rest object', () => {
|
|
125
|
-
const objects = [
|
|
126
|
-
{ a: 1, b: 2, c: 3, d: 4 },
|
|
127
|
-
{ a: 5, b: 6, c: 7, d: 8 },
|
|
128
|
-
];
|
|
129
|
-
const result = transposeObjectArray({ objects, properties: ['a', 'c'] });
|
|
130
|
-
expect(result).to.deep.equal({
|
|
131
|
-
a: [1, 5],
|
|
132
|
-
c: [3, 7],
|
|
133
|
-
rest: [
|
|
134
|
-
{ b: 2, d: 4 },
|
|
135
|
-
{ b: 6, d: 8 },
|
|
136
|
-
],
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
it('should omit rest properties if includeOtherProperties is false', () => {
|
|
140
|
-
const objects = [
|
|
141
|
-
{ id: 1, name: null, age: 25 },
|
|
142
|
-
{ id: 2, name: undefined, age: 30 },
|
|
143
|
-
];
|
|
144
|
-
const result = transposeObjectArray({
|
|
145
|
-
objects,
|
|
146
|
-
properties: ['id', 'name'],
|
|
147
|
-
options: { includeOtherProperties: false },
|
|
148
|
-
});
|
|
149
|
-
expect(result).to.deep.equal({
|
|
150
|
-
id: [1, 2],
|
|
151
|
-
name: [null, undefined],
|
|
152
|
-
});
|
|
153
|
-
});
|
|
154
|
-
});
|
|
155
|
-
//# sourceMappingURL=transposeObjectArray.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transposeObjectArray.test.js","sourceRoot":"","sources":["../../src/tests/transposeObjectArray.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,MAAM,GAAG,oBAAoB,CAAC;YAClC,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC;SAC3B,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;YAC5C,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;SAC7C,CAAC;QACF,MAAM,MAAM,GAAG,oBAAoB,CAAC;YAClC,OAAO;YACP,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC;SAC3B,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACV,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;YACtB,IAAI,EAAE;gBACJ,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;gBACvB,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;aACxB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE;YAChC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;YAClB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;SACnC,CAAC;QACF,MAAM,MAAM,GAAG,oBAAoB,CAAC;YAClC,OAAO;YACP,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC;SAC3B,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC;YAChC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACjD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;YACpD,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE;SACjD,CAAC;QACF,MAAM,MAAM,GAAG,oBAAoB,CAAC;YAClC,OAAO;YACP,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;SAC/B,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;YACrB,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,EAAE;gBACJ,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBACpB,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;aACrB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;YACvB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;SACxB,CAAC;QACF,MAAM,MAAM,GAAG,oBAAoB,CAAC;YAClC,OAAO;YACP,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC;SAC3B,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACV,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;YACtB,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;SACf,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;YACvB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;SACxB,CAAC;QACF,MAAM,MAAM,GAAG,oBAAoB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,IAAI,EAAE;gBACJ,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;gBACvB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;aACxB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE;YAC9B,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE;SACpC,CAAC;QACF,MAAM,MAAM,GAAG,oBAAoB,CAAC;YAClC,OAAO;YACP,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC;SAC3B,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACV,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC;YACvB,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;SACjC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;YAC1C,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;SAC3C,CAAC;QACF,MAAM,MAAM,GAAG,oBAAoB,CAAC;YAClC,OAAO;YACP,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC;SAC3B,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACV,IAAI,EAAE;gBACJ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE;gBACzB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE;aAC1B;YACD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;SACf,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,OAAO,GAAG;YACd,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YAC1B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;SAC3B,CAAC;QACF,MAAM,MAAM,GAAG,oBAAoB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACT,IAAI,EAAE;gBACJ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;gBACd,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;aACf;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE;YAC9B,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE;SACpC,CAAC;QACF,MAAM,MAAM,GAAG,oBAAoB,CAAC;YAClC,OAAO;YACP,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC;YAC1B,OAAO,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE;SAC3C,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACV,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC;SACxB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type representing a transposed array of objects.
|
|
3
|
-
*
|
|
4
|
-
* For each selected property K from the original object type T:
|
|
5
|
-
* - Creates an array containing all values of that property
|
|
6
|
-
* - The array type matches the property's original type
|
|
7
|
-
* - Includes a 'rest' array containing all non-selected properties
|
|
8
|
-
* @template T - The source object type
|
|
9
|
-
* @template K - The keys to transpose into arrays
|
|
10
|
-
* @example
|
|
11
|
-
* // Original array of objects:
|
|
12
|
-
* const users = [
|
|
13
|
-
* { id: 1, name: 'John', age: 25, city: 'NY' },
|
|
14
|
-
* { id: 2, name: 'Jane', age: 30, city: 'LA' }
|
|
15
|
-
* ];
|
|
16
|
-
*
|
|
17
|
-
* // Type for transposing 'id' and 'name':
|
|
18
|
-
* type Result = TransposedObjectArray<typeof users[0], 'id' | 'name'>;
|
|
19
|
-
*
|
|
20
|
-
* // Resulting type structure:
|
|
21
|
-
* {
|
|
22
|
-
* id: number[]; // Array of all IDs: [1, 2]
|
|
23
|
-
* name: string[]; // Array of all names: ['John', 'Jane']
|
|
24
|
-
* rest: Array<{ // Array of remaining properties
|
|
25
|
-
* age: number; // [{ age: 25, city: 'NY' },
|
|
26
|
-
* city: string; // { age: 30, city: 'LA' }]
|
|
27
|
-
* }>;
|
|
28
|
-
* }
|
|
29
|
-
*/
|
|
30
|
-
type TransposedObjectArray<T, K extends keyof T> = {
|
|
31
|
-
[P in K]: Array<T[P]>;
|
|
32
|
-
} & {
|
|
33
|
-
/** Properties not selected for transposition */
|
|
34
|
-
rest: Array<Omit<T, K>>;
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Transposes an array of objects by converting selected properties into arrays
|
|
38
|
-
* while keeping the remaining properties grouped in a 'rest' array.
|
|
39
|
-
* @template T - The type of objects in the input array
|
|
40
|
-
* @template K - The keys of properties to transpose
|
|
41
|
-
* @param param - the objects, properties, and transposing options
|
|
42
|
-
* @returns An object containing transposed arrays for each selected property
|
|
43
|
-
* @example
|
|
44
|
-
* const objects = [
|
|
45
|
-
* { id: 1, name: 'John', age: 25 },
|
|
46
|
-
* { id: 2, name: 'Jane', age: 30 }
|
|
47
|
-
* ]
|
|
48
|
-
* const result = transposeObjectArray({objects, properties: ['id', 'name']});
|
|
49
|
-
* // Returns: {
|
|
50
|
-
* // id: [1, 2],
|
|
51
|
-
* // name: ['John', 'Jane'],
|
|
52
|
-
* // rest: [{age: 25}, {age: 30}]
|
|
53
|
-
* // }
|
|
54
|
-
*/
|
|
55
|
-
export declare const transposeObjectArray: <T extends object, K extends keyof T>({ objects, properties, options, }: {
|
|
56
|
-
/** Array of objects to transpose */
|
|
57
|
-
objects: T[];
|
|
58
|
-
/** Array of property keys to transpose into arrays */
|
|
59
|
-
properties: K[];
|
|
60
|
-
/** Options for how to transpose the array */
|
|
61
|
-
options?: {
|
|
62
|
-
/** Whether to include non-tranposed properties in the final result */
|
|
63
|
-
includeOtherProperties?: boolean | undefined;
|
|
64
|
-
} | undefined;
|
|
65
|
-
}) => TransposedObjectArray<T, K>;
|
|
66
|
-
export {};
|
|
67
|
-
//# sourceMappingURL=transposeObjectArray.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transposeObjectArray.d.ts","sourceRoot":"","sources":["../src/transposeObjectArray.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,KAAK,qBAAqB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI;KAChD,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtB,GAAG;IACF,gDAAgD;IAChD,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,oBAAoB;IAK/B,oCAAoC;;IAEpC,sDAAsD;;IAEtD,6CAA6C;;QAE3C,sEAAsE;;;iCA2BvE,CAAC"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
// eslint-disable-next-line eslint-comments/disable-enable-pair
|
|
2
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
-
/**
|
|
4
|
-
* Transposes an array of objects by converting selected properties into arrays
|
|
5
|
-
* while keeping the remaining properties grouped in a 'rest' array.
|
|
6
|
-
* @template T - The type of objects in the input array
|
|
7
|
-
* @template K - The keys of properties to transpose
|
|
8
|
-
* @param param - the objects, properties, and transposing options
|
|
9
|
-
* @returns An object containing transposed arrays for each selected property
|
|
10
|
-
* @example
|
|
11
|
-
* const objects = [
|
|
12
|
-
* { id: 1, name: 'John', age: 25 },
|
|
13
|
-
* { id: 2, name: 'Jane', age: 30 }
|
|
14
|
-
* ]
|
|
15
|
-
* const result = transposeObjectArray({objects, properties: ['id', 'name']});
|
|
16
|
-
* // Returns: {
|
|
17
|
-
* // id: [1, 2],
|
|
18
|
-
* // name: ['John', 'Jane'],
|
|
19
|
-
* // rest: [{age: 25}, {age: 30}]
|
|
20
|
-
* // }
|
|
21
|
-
*/
|
|
22
|
-
export const transposeObjectArray = ({ objects, properties, options = { includeOtherProperties: true }, }) => objects.reduce((acc, item) => {
|
|
23
|
-
const result = { ...acc };
|
|
24
|
-
properties.forEach((prop) => {
|
|
25
|
-
const currentArray = (acc[prop] || []);
|
|
26
|
-
result[prop] = [...currentArray, item[prop]];
|
|
27
|
-
});
|
|
28
|
-
const restObject = {};
|
|
29
|
-
Object.entries(item).forEach(([key, value]) => {
|
|
30
|
-
if (!properties.includes(key)) {
|
|
31
|
-
restObject[key] = value;
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
if (options.includeOtherProperties) {
|
|
35
|
-
result.rest = [...(acc.rest || []), restObject];
|
|
36
|
-
}
|
|
37
|
-
return result;
|
|
38
|
-
}, {});
|
|
39
|
-
//# sourceMappingURL=transposeObjectArray.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transposeObjectArray.js","sourceRoot":"","sources":["../src/transposeObjectArray.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,uDAAuD;AAsCvD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAsC,EACxE,OAAO,EACP,UAAU,EACV,OAAO,GAAG,EAAE,sBAAsB,EAAE,IAAI,EAAE,GAW3C,EAA+B,EAAE,CAChC,OAAO,CAAC,MAAM,CACZ,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;IACZ,MAAM,MAAM,GAAG,EAAE,GAAG,GAAG,EAAiC,CAAC;IAEzD,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1B,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAW,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAQ,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,EAAgB,CAAC;IACpC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC5C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAQ,CAAC,EAAE,CAAC;YAClC,UAAkB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACnC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,EACD,EAAiC,CAClC,CAAC"}
|