@atproto/lex-schema 0.1.5 → 0.1.6
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/CHANGELOG.md +14 -0
- package/dist/core/$type.d.ts +2 -2
- package/dist/core/$type.d.ts.map +1 -1
- package/dist/core/$type.js.map +1 -1
- package/dist/core/record-key.d.ts +1 -1
- package/dist/core/record-key.d.ts.map +1 -1
- package/dist/core/record-key.js.map +1 -1
- package/dist/core/schema.d.ts +3 -2
- package/dist/core/schema.d.ts.map +1 -1
- package/dist/core/schema.js +1 -1
- package/dist/core/schema.js.map +1 -1
- package/dist/core/standard-schema.d.ts +2 -2
- package/dist/core/standard-schema.d.ts.map +1 -1
- package/dist/core/standard-schema.js.map +1 -1
- package/dist/core/string-format.d.ts +2 -2
- package/dist/core/string-format.d.ts.map +1 -1
- package/dist/core/string-format.js.map +1 -1
- package/dist/core/validation-error.d.ts +1 -1
- package/dist/core/validation-error.d.ts.map +1 -1
- package/dist/core/validation-error.js +1 -1
- package/dist/core/validation-error.js.map +1 -1
- package/dist/core/validator.d.ts +1 -1
- package/dist/core/validator.d.ts.map +1 -1
- package/dist/core/validator.js +1 -1
- package/dist/core/validator.js.map +1 -1
- package/dist/helpers.d.ts +2 -2
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +2 -2
- package/dist/helpers.js.map +1 -1
- package/dist/schema/array.d.ts +1 -1
- package/dist/schema/array.d.ts.map +1 -1
- package/dist/schema/array.js +1 -1
- package/dist/schema/array.js.map +1 -1
- package/dist/schema/blob.d.ts +1 -1
- package/dist/schema/blob.d.ts.map +1 -1
- package/dist/schema/blob.js +2 -2
- package/dist/schema/blob.js.map +1 -1
- package/dist/schema/boolean.js +1 -1
- package/dist/schema/boolean.js.map +1 -1
- package/dist/schema/bytes.js +1 -1
- package/dist/schema/bytes.js.map +1 -1
- package/dist/schema/cid.d.ts +1 -1
- package/dist/schema/cid.d.ts.map +1 -1
- package/dist/schema/cid.js +3 -3
- package/dist/schema/cid.js.map +1 -1
- package/dist/schema/custom.js +1 -1
- package/dist/schema/custom.js.map +1 -1
- package/dist/schema/dict.d.ts +1 -1
- package/dist/schema/dict.d.ts.map +1 -1
- package/dist/schema/dict.js +1 -1
- package/dist/schema/dict.js.map +1 -1
- package/dist/schema/discriminated-union.d.ts +1 -1
- package/dist/schema/discriminated-union.d.ts.map +1 -1
- package/dist/schema/discriminated-union.js +2 -1
- package/dist/schema/discriminated-union.js.map +1 -1
- package/dist/schema/enum.js +1 -1
- package/dist/schema/enum.js.map +1 -1
- package/dist/schema/integer.js +1 -1
- package/dist/schema/integer.js.map +1 -1
- package/dist/schema/intersection.d.ts +1 -1
- package/dist/schema/intersection.d.ts.map +1 -1
- package/dist/schema/intersection.js +3 -1
- package/dist/schema/intersection.js.map +1 -1
- package/dist/schema/lex-map.d.ts +1 -1
- package/dist/schema/lex-map.d.ts.map +1 -1
- package/dist/schema/lex-map.js +1 -1
- package/dist/schema/lex-map.js.map +1 -1
- package/dist/schema/lex-value.d.ts +1 -1
- package/dist/schema/lex-value.d.ts.map +1 -1
- package/dist/schema/lex-value.js +1 -1
- package/dist/schema/lex-value.js.map +1 -1
- package/dist/schema/literal.js +1 -1
- package/dist/schema/literal.js.map +1 -1
- package/dist/schema/never.js +1 -1
- package/dist/schema/never.js.map +1 -1
- package/dist/schema/null.js +1 -1
- package/dist/schema/null.js.map +1 -1
- package/dist/schema/nullable.d.ts +1 -1
- package/dist/schema/nullable.d.ts.map +1 -1
- package/dist/schema/nullable.js +1 -1
- package/dist/schema/nullable.js.map +1 -1
- package/dist/schema/object.d.ts +2 -1
- package/dist/schema/object.d.ts.map +1 -1
- package/dist/schema/object.js +1 -1
- package/dist/schema/object.js.map +1 -1
- package/dist/schema/optional.d.ts +2 -1
- package/dist/schema/optional.d.ts.map +1 -1
- package/dist/schema/optional.js +2 -1
- package/dist/schema/optional.js.map +1 -1
- package/dist/schema/params.d.ts +1 -1
- package/dist/schema/params.d.ts.map +1 -1
- package/dist/schema/params.js +1 -1
- package/dist/schema/params.js.map +1 -1
- package/dist/schema/payload.d.ts +3 -2
- package/dist/schema/payload.d.ts.map +1 -1
- package/dist/schema/payload.js +2 -1
- package/dist/schema/payload.js.map +1 -1
- package/dist/schema/permission-set.d.ts +1 -1
- package/dist/schema/permission-set.d.ts.map +1 -1
- package/dist/schema/permission-set.js +1 -0
- package/dist/schema/permission-set.js.map +1 -1
- package/dist/schema/permission.d.ts +1 -1
- package/dist/schema/permission.d.ts.map +1 -1
- package/dist/schema/permission.js.map +1 -1
- package/dist/schema/procedure.d.ts +1 -1
- package/dist/schema/procedure.d.ts.map +1 -1
- package/dist/schema/procedure.js +2 -0
- package/dist/schema/procedure.js.map +1 -1
- package/dist/schema/query.d.ts +1 -1
- package/dist/schema/query.d.ts.map +1 -1
- package/dist/schema/query.js +2 -0
- package/dist/schema/query.js.map +1 -1
- package/dist/schema/record.d.ts +2 -2
- package/dist/schema/record.d.ts.map +1 -1
- package/dist/schema/record.js +1 -1
- package/dist/schema/record.js.map +1 -1
- package/dist/schema/ref.d.ts +1 -1
- package/dist/schema/ref.d.ts.map +1 -1
- package/dist/schema/ref.js +1 -1
- package/dist/schema/ref.js.map +1 -1
- package/dist/schema/refine.d.ts +2 -2
- package/dist/schema/refine.d.ts.map +1 -1
- package/dist/schema/refine.js +1 -1
- package/dist/schema/refine.js.map +1 -1
- package/dist/schema/regexp.js +1 -1
- package/dist/schema/regexp.js.map +1 -1
- package/dist/schema/string.d.ts +2 -2
- package/dist/schema/string.d.ts.map +1 -1
- package/dist/schema/string.js +1 -1
- package/dist/schema/string.js.map +1 -1
- package/dist/schema/subscription.d.ts +3 -2
- package/dist/schema/subscription.d.ts.map +1 -1
- package/dist/schema/subscription.js +2 -0
- package/dist/schema/subscription.js.map +1 -1
- package/dist/schema/token.d.ts +1 -1
- package/dist/schema/token.d.ts.map +1 -1
- package/dist/schema/token.js +1 -1
- package/dist/schema/token.js.map +1 -1
- package/dist/schema/typed-object.d.ts +2 -2
- package/dist/schema/typed-object.d.ts.map +1 -1
- package/dist/schema/typed-object.js +1 -1
- package/dist/schema/typed-object.js.map +1 -1
- package/dist/schema/typed-ref.d.ts +1 -1
- package/dist/schema/typed-ref.d.ts.map +1 -1
- package/dist/schema/typed-ref.js +1 -1
- package/dist/schema/typed-ref.js.map +1 -1
- package/dist/schema/typed-union.d.ts +1 -1
- package/dist/schema/typed-union.d.ts.map +1 -1
- package/dist/schema/typed-union.js +3 -1
- package/dist/schema/typed-union.js.map +1 -1
- package/dist/schema/union.d.ts +1 -1
- package/dist/schema/union.d.ts.map +1 -1
- package/dist/schema/union.js +1 -1
- package/dist/schema/union.js.map +1 -1
- package/dist/schema/unknown.js +1 -1
- package/dist/schema/unknown.js.map +1 -1
- package/dist/schema/with-default.d.ts +1 -1
- package/dist/schema/with-default.d.ts.map +1 -1
- package/dist/schema/with-default.js +1 -1
- package/dist/schema/with-default.js.map +1 -1
- package/package.json +6 -10
- package/src/core/$type.test.ts +0 -24
- package/src/core/$type.ts +0 -199
- package/src/core/record-key.ts +0 -85
- package/src/core/result.ts +0 -15
- package/src/core/schema.ts +0 -412
- package/src/core/standard-schema.test.ts +0 -124
- package/src/core/standard-schema.ts +0 -31
- package/src/core/string-format.ts +0 -411
- package/src/core/types.ts +0 -120
- package/src/core/validation-error.ts +0 -134
- package/src/core/validation-issue.ts +0 -340
- package/src/core/validator.ts +0 -636
- package/src/core.ts +0 -9
- package/src/external.ts +0 -3
- package/src/helpers.test.ts +0 -694
- package/src/helpers.ts +0 -222
- package/src/index.ts +0 -3
- package/src/schema/array.test.ts +0 -251
- package/src/schema/array.ts +0 -126
- package/src/schema/blob.test.ts +0 -733
- package/src/schema/blob.ts +0 -150
- package/src/schema/boolean.test.ts +0 -118
- package/src/schema/boolean.ts +0 -46
- package/src/schema/bytes.test.ts +0 -227
- package/src/schema/bytes.ts +0 -81
- package/src/schema/cid.test.ts +0 -125
- package/src/schema/cid.ts +0 -69
- package/src/schema/custom.test.ts +0 -414
- package/src/schema/custom.ts +0 -106
- package/src/schema/dict.test.ts +0 -181
- package/src/schema/dict.ts +0 -122
- package/src/schema/discriminated-union.test.ts +0 -676
- package/src/schema/discriminated-union.ts +0 -196
- package/src/schema/enum.test.ts +0 -398
- package/src/schema/enum.ts +0 -77
- package/src/schema/integer.test.ts +0 -314
- package/src/schema/integer.ts +0 -86
- package/src/schema/intersection.test.ts +0 -33
- package/src/schema/intersection.ts +0 -113
- package/src/schema/lex-map.test.ts +0 -593
- package/src/schema/lex-map.ts +0 -63
- package/src/schema/lex-value.test.ts +0 -81
- package/src/schema/lex-value.ts +0 -86
- package/src/schema/literal.test.ts +0 -533
- package/src/schema/literal.ts +0 -70
- package/src/schema/never.test.ts +0 -175
- package/src/schema/never.ts +0 -56
- package/src/schema/null.test.ts +0 -80
- package/src/schema/null.ts +0 -49
- package/src/schema/nullable.test.ts +0 -470
- package/src/schema/nullable.ts +0 -74
- package/src/schema/object.test.ts +0 -69
- package/src/schema/object.ts +0 -136
- package/src/schema/optional.test.ts +0 -479
- package/src/schema/optional.ts +0 -92
- package/src/schema/params.test.ts +0 -1118
- package/src/schema/params.ts +0 -371
- package/src/schema/payload.test.ts +0 -340
- package/src/schema/payload.ts +0 -204
- package/src/schema/permission-set.test.ts +0 -613
- package/src/schema/permission-set.ts +0 -86
- package/src/schema/permission.test.ts +0 -537
- package/src/schema/permission.ts +0 -63
- package/src/schema/procedure.test.ts +0 -324
- package/src/schema/procedure.ts +0 -98
- package/src/schema/query.test.ts +0 -348
- package/src/schema/query.ts +0 -86
- package/src/schema/record.test.ts +0 -812
- package/src/schema/record.ts +0 -217
- package/src/schema/ref.test.ts +0 -349
- package/src/schema/ref.ts +0 -103
- package/src/schema/refine.test.ts +0 -579
- package/src/schema/refine.ts +0 -153
- package/src/schema/regexp.test.ts +0 -577
- package/src/schema/regexp.ts +0 -82
- package/src/schema/string.test.ts +0 -773
- package/src/schema/string.ts +0 -229
- package/src/schema/subscription.test.ts +0 -499
- package/src/schema/subscription.ts +0 -108
- package/src/schema/token.test.ts +0 -152
- package/src/schema/token.ts +0 -103
- package/src/schema/typed-object.test.ts +0 -745
- package/src/schema/typed-object.ts +0 -181
- package/src/schema/typed-ref.test.ts +0 -796
- package/src/schema/typed-ref.ts +0 -126
- package/src/schema/typed-union.test.ts +0 -355
- package/src/schema/typed-union.ts +0 -130
- package/src/schema/union.test.ts +0 -191
- package/src/schema/union.ts +0 -89
- package/src/schema/unknown.test.ts +0 -313
- package/src/schema/unknown.ts +0 -47
- package/src/schema/with-default.ts +0 -81
- package/src/schema.ts +0 -43
- package/src/util/array-agg.test.ts +0 -42
- package/src/util/array-agg.ts +0 -44
- package/src/util/assertion-util.ts +0 -1
- package/src/util/if-any.ts +0 -3
- package/src/util/lazy-property.ts +0 -14
- package/src/util/memoize.ts +0 -37
- package/tsconfig.build.json +0 -12
- package/tsconfig.json +0 -7
- package/tsconfig.tests.json +0 -8
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
InferInput,
|
|
3
|
-
InferOutput,
|
|
4
|
-
Schema,
|
|
5
|
-
ValidationContext,
|
|
6
|
-
Validator,
|
|
7
|
-
} from '../core.js'
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Schema wrapper that provides a default value when the input is undefined.
|
|
11
|
-
*
|
|
12
|
-
* In parse mode, when the input is `undefined`, the default value is used
|
|
13
|
-
* instead. In validate mode, undefined values pass through unchanged (the
|
|
14
|
-
* default is not applied).
|
|
15
|
-
*
|
|
16
|
-
* @template TValidator - The wrapped validator type
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```ts
|
|
20
|
-
* const schema = new WithDefaultSchema(l.integer(), 0)
|
|
21
|
-
* schema.parse(undefined) // 0
|
|
22
|
-
* schema.parse(42) // 42
|
|
23
|
-
* ```
|
|
24
|
-
*/
|
|
25
|
-
export class WithDefaultSchema<
|
|
26
|
-
const TValidator extends Validator,
|
|
27
|
-
> extends Schema<InferInput<TValidator>, InferOutput<TValidator>> {
|
|
28
|
-
readonly type = 'withDefault' as const
|
|
29
|
-
|
|
30
|
-
constructor(
|
|
31
|
-
readonly validator: TValidator,
|
|
32
|
-
readonly defaultValue: InferInput<TValidator>,
|
|
33
|
-
) {
|
|
34
|
-
super()
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
validateInContext(input: unknown, ctx: ValidationContext) {
|
|
38
|
-
// When in a validation context, the output should not be altered,
|
|
39
|
-
// so we don't apply the default.
|
|
40
|
-
if (input === undefined && ctx.options.mode !== 'validate') {
|
|
41
|
-
return ctx.validate(this.defaultValue, this.validator)
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return ctx.validate(input, this.validator)
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Creates a schema that applies a default value when the input is undefined.
|
|
50
|
-
*
|
|
51
|
-
* Commonly used with `optional()` to provide fallback values for missing
|
|
52
|
-
* properties. The default value is validated against the schema.
|
|
53
|
-
*
|
|
54
|
-
* @param validator - The validator for the value
|
|
55
|
-
* @param defaultValue - The default value to use when input is undefined
|
|
56
|
-
* @returns A new {@link WithDefaultSchema} instance
|
|
57
|
-
*
|
|
58
|
-
* @example
|
|
59
|
-
* ```ts
|
|
60
|
-
* // Integer with default
|
|
61
|
-
* const countSchema = l.withDefault(l.integer(), 0)
|
|
62
|
-
* countSchema.parse(undefined) // 0
|
|
63
|
-
* countSchema.parse(5) // 5
|
|
64
|
-
*
|
|
65
|
-
* // Commonly combined with optional in objects
|
|
66
|
-
* const settingsSchema = l.object({
|
|
67
|
-
* theme: l.optional(l.withDefault(l.string(), 'light')),
|
|
68
|
-
* pageSize: l.optional(l.withDefault(l.integer(), 25)),
|
|
69
|
-
* })
|
|
70
|
-
* settingsSchema.parse({}) // { theme: 'light', pageSize: 25 }
|
|
71
|
-
*
|
|
72
|
-
* // Boolean with default
|
|
73
|
-
* const enabledSchema = l.withDefault(l.boolean(), false)
|
|
74
|
-
* ```
|
|
75
|
-
*/
|
|
76
|
-
export function withDefault<const TValidator extends Validator>(
|
|
77
|
-
validator: TValidator,
|
|
78
|
-
defaultValue: InferInput<TValidator>,
|
|
79
|
-
) {
|
|
80
|
-
return new WithDefaultSchema<TValidator>(validator, defaultValue)
|
|
81
|
-
}
|
package/src/schema.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
// Concrete Types
|
|
2
|
-
export * from './schema/array.js'
|
|
3
|
-
export * from './schema/blob.js'
|
|
4
|
-
export * from './schema/boolean.js'
|
|
5
|
-
export * from './schema/bytes.js'
|
|
6
|
-
export * from './schema/cid.js'
|
|
7
|
-
export * from './schema/dict.js'
|
|
8
|
-
export * from './schema/enum.js'
|
|
9
|
-
export * from './schema/integer.js'
|
|
10
|
-
export * from './schema/lex-map.js'
|
|
11
|
-
export * from './schema/lex-value.js'
|
|
12
|
-
export * from './schema/literal.js'
|
|
13
|
-
export * from './schema/never.js'
|
|
14
|
-
export * from './schema/null.js'
|
|
15
|
-
export * from './schema/object.js'
|
|
16
|
-
export * from './schema/regexp.js'
|
|
17
|
-
export * from './schema/string.js'
|
|
18
|
-
export * from './schema/unknown.js'
|
|
19
|
-
|
|
20
|
-
// Composite Types
|
|
21
|
-
export * from './schema/custom.js'
|
|
22
|
-
export * from './schema/discriminated-union.js'
|
|
23
|
-
export * from './schema/intersection.js'
|
|
24
|
-
export * from './schema/nullable.js'
|
|
25
|
-
export * from './schema/optional.js'
|
|
26
|
-
export * from './schema/ref.js'
|
|
27
|
-
export * from './schema/refine.js'
|
|
28
|
-
export * from './schema/union.js'
|
|
29
|
-
export * from './schema/with-default.js'
|
|
30
|
-
|
|
31
|
-
// Lexicon specific Types
|
|
32
|
-
export * from './schema/params.js'
|
|
33
|
-
export * from './schema/payload.js'
|
|
34
|
-
export * from './schema/permission-set.js'
|
|
35
|
-
export * from './schema/permission.js'
|
|
36
|
-
export * from './schema/procedure.js'
|
|
37
|
-
export * from './schema/query.js'
|
|
38
|
-
export * from './schema/record.js'
|
|
39
|
-
export * from './schema/subscription.js'
|
|
40
|
-
export * from './schema/token.js'
|
|
41
|
-
export * from './schema/typed-object.js'
|
|
42
|
-
export * from './schema/typed-ref.js'
|
|
43
|
-
export * from './schema/typed-union.js'
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest'
|
|
2
|
-
import { arrayAgg } from './array-agg.js'
|
|
3
|
-
|
|
4
|
-
describe('arrayAgg', () => {
|
|
5
|
-
it('aggregates items based on comparison and aggregation functions', () => {
|
|
6
|
-
const input = [1, 1, 2, 2, 3, 3, 3]
|
|
7
|
-
const result = arrayAgg(
|
|
8
|
-
input,
|
|
9
|
-
(a, b) => a === b,
|
|
10
|
-
(items) => ({ value: items[0], count: items.length }),
|
|
11
|
-
)
|
|
12
|
-
expect(result).toEqual([
|
|
13
|
-
{ value: 1, count: 2 },
|
|
14
|
-
{ value: 2, count: 2 },
|
|
15
|
-
{ value: 3, count: 3 },
|
|
16
|
-
])
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
it('returns an empty array when input is empty', () => {
|
|
20
|
-
const input: number[] = []
|
|
21
|
-
const result = arrayAgg(
|
|
22
|
-
input,
|
|
23
|
-
(a, b) => a === b,
|
|
24
|
-
(items) => ({ value: items[0], count: items.length }),
|
|
25
|
-
)
|
|
26
|
-
expect(result).toEqual([])
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
it('handles non-consecutive grouping', () => {
|
|
30
|
-
const input = [1, 2, 1, 2, 3, 1]
|
|
31
|
-
const result = arrayAgg(
|
|
32
|
-
input,
|
|
33
|
-
(a, b) => a === b,
|
|
34
|
-
(items) => ({ value: items[0], count: items.length }),
|
|
35
|
-
)
|
|
36
|
-
expect(result).toEqual([
|
|
37
|
-
{ value: 1, count: 3 },
|
|
38
|
-
{ value: 2, count: 2 },
|
|
39
|
-
{ value: 3, count: 1 },
|
|
40
|
-
])
|
|
41
|
-
})
|
|
42
|
-
})
|
package/src/util/array-agg.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Aggregates items in an array based on a comparison function and an aggregation function.
|
|
3
|
-
*
|
|
4
|
-
* @param arr - The input array to aggregate.
|
|
5
|
-
* @param cmp - A comparison function that determines if two items belong to the same group.
|
|
6
|
-
* @param agg - An aggregation function that combines items in a group into a single item.
|
|
7
|
-
* @returns An array of aggregated items.
|
|
8
|
-
* @example
|
|
9
|
-
* ```ts
|
|
10
|
-
* const input = [1, 1, 2, 2, 3, 3, 3]
|
|
11
|
-
* const result = arrayAgg(
|
|
12
|
-
* input,
|
|
13
|
-
* (a, b) => a === b,
|
|
14
|
-
* (items) => { value: items[0], sum: items.reduce((sum, item) => sum + item, 0) },
|
|
15
|
-
* )
|
|
16
|
-
* // result is [{ value: 1, sum: 2 }, { value: 2, sum: 4 }, { value: 3, sum: 6 }]
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
/*@__NO_SIDE_EFFECTS__*/
|
|
20
|
-
export function arrayAgg<T, O>(
|
|
21
|
-
arr: readonly T[],
|
|
22
|
-
cmp: (a: T, b: T) => boolean,
|
|
23
|
-
agg: (items: [T, ...T[]]) => O,
|
|
24
|
-
): O[] {
|
|
25
|
-
if (arr.length === 0) return []
|
|
26
|
-
|
|
27
|
-
const groups: [T, ...T[]][] = [[arr[0]]]
|
|
28
|
-
const skipped = Array<undefined | boolean>(arr.length)
|
|
29
|
-
|
|
30
|
-
outer: for (let i = 1; i < arr.length; i++) {
|
|
31
|
-
if (skipped[i]) continue
|
|
32
|
-
const item = arr[i]
|
|
33
|
-
for (let j = 0; j < groups.length; j++) {
|
|
34
|
-
if (cmp(item, groups[j][0])) {
|
|
35
|
-
groups[j].push(item)
|
|
36
|
-
skipped[i] = true
|
|
37
|
-
continue outer
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
groups.push([item])
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return groups.map(agg)
|
|
44
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type CheckFn<T> = <I extends string>(input: I) => input is I & T
|
package/src/util/if-any.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/*@__NO_SIDE_EFFECTS__*/
|
|
2
|
-
export function lazyProperty<
|
|
3
|
-
O extends object,
|
|
4
|
-
const K extends keyof O,
|
|
5
|
-
const V extends O[K],
|
|
6
|
-
>(obj: O, key: K, value: V): V {
|
|
7
|
-
Object.defineProperty(obj, key, {
|
|
8
|
-
value,
|
|
9
|
-
writable: false,
|
|
10
|
-
enumerable: false,
|
|
11
|
-
configurable: true,
|
|
12
|
-
})
|
|
13
|
-
return value
|
|
14
|
-
}
|
package/src/util/memoize.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/*@__NO_SIDE_EFFECTS__*/
|
|
2
|
-
export function memoizedOptions<F extends (...args: any[]) => any>(fn: F): F {
|
|
3
|
-
let cache: null | { value: ReturnType<F> } = null
|
|
4
|
-
|
|
5
|
-
return function cached(...args: any[]): ReturnType<F> {
|
|
6
|
-
// Not using the cache if there are args
|
|
7
|
-
if (args.length > 0) {
|
|
8
|
-
return fn(...args)
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
if (cache != null) {
|
|
12
|
-
return cache.value
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const value = fn(...args)
|
|
16
|
-
cache = { value }
|
|
17
|
-
return value
|
|
18
|
-
} as F
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/*@__NO_SIDE_EFFECTS__*/
|
|
22
|
-
export function memoizedTransformer<
|
|
23
|
-
F extends (key: any, ...args: any[]) => unknown,
|
|
24
|
-
>(fn: F): F {
|
|
25
|
-
let cache: WeakMap<object, ReturnType<F>>
|
|
26
|
-
|
|
27
|
-
return function cached(key: any, ...args: any[]): any {
|
|
28
|
-
if (args.length > 0) return fn(key, ...args)
|
|
29
|
-
|
|
30
|
-
cache ??= new WeakMap()
|
|
31
|
-
const cached = cache.get(key)
|
|
32
|
-
if (cached) return cached
|
|
33
|
-
const result = fn(key, ...args) as ReturnType<F>
|
|
34
|
-
cache.set(key, result)
|
|
35
|
-
return result
|
|
36
|
-
} as F
|
|
37
|
-
}
|
package/tsconfig.build.json
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": ["../../../tsconfig/isomorphic.json"],
|
|
3
|
-
"include": ["./src"],
|
|
4
|
-
"exclude": ["**/*.test.ts"],
|
|
5
|
-
"compilerOptions": {
|
|
6
|
-
"noImplicitAny": true,
|
|
7
|
-
"importHelpers": true,
|
|
8
|
-
"target": "ES2023",
|
|
9
|
-
"rootDir": "./src",
|
|
10
|
-
"outDir": "./dist",
|
|
11
|
-
},
|
|
12
|
-
}
|
package/tsconfig.json
DELETED