@transcend-io/type-utils 3.2.0 → 3.3.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/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +23 -6
- package/dist/index.mjs.map +1 -1
- package/package.json +8 -8
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":["JSONSchema4TypeName","JSONSchema4Type","JSONSchema4Object","JSONSchema4Array","key","Array","JSONSchema4Version","JSONSchema4","id","$ref","$schema","title","description","default","multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","items","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","definitions","k","properties","patternProperties","dependencies","enum","type","allOf","anyOf","oneOf","not","extends","format","JSONSchema6TypeName","JSONSchema6Type","JSONSchema6Object","JSONSchema6Array","JSONSchema6Version","JSONSchema6Definition","JSONSchema6","$id","contains","propertyNames","const","examples","JSONSchema7TypeName","JSONSchema7Type","JSONSchema7Object","JSONSchema7Array","JSONSchema7Version","JSONSchema7Definition","JSONSchema7","$comment","$defs","if","then","else","contentMediaType","contentEncoding","readOnly","writeOnly","ValidationResult","ValidationError","valid","errors","property","message","validate","instance","schema","checkPropertyChange","value","mustBeValid","result"],"sources":["../src/types.ts","../src/apply.ts","../src/codecTools/decodeCodec.ts","../src/codecTools/dictionary.ts","../src/codecTools/FixedLengthString.ts","../src/codecTools/FixedLengthArray.ts","../src/codecTools/partialRecord.ts","../src/codecTools/isCodecError.ts","../src/codecTools/NonEmptyString.ts","../../../node_modules/.pnpm/@types+json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts","../src/codecTools/toJsonSchema.ts","../src/codecTools/createDefaultCodec.ts","../src/enum.ts","../src/enums.ts","../src/getEntries.ts","../src/getKeys.ts","../src/getValues.ts","../src/groupBy.ts","../src/gql.ts","../src/invert.ts","../src/valuesOf.ts","../src/findAllWithRegex.ts","../src/flattenObject.ts","../src/aggregateObjects.ts","../src/transposeObjectArray.ts","../src/fromEntries.ts","../src/noExcess.ts"],"x_google_ignoreList":[9],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":["JSONSchema4TypeName","JSONSchema4Type","JSONSchema4Object","JSONSchema4Array","key","Array","JSONSchema4Version","JSONSchema4","id","$ref","$schema","title","description","default","multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","items","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","definitions","k","properties","patternProperties","dependencies","enum","type","allOf","anyOf","oneOf","not","extends","format","JSONSchema6TypeName","JSONSchema6Type","JSONSchema6Object","JSONSchema6Array","JSONSchema6Version","JSONSchema6Definition","JSONSchema6","$id","contains","propertyNames","const","examples","JSONSchema7TypeName","JSONSchema7Type","JSONSchema7Object","JSONSchema7Array","JSONSchema7Version","JSONSchema7Definition","JSONSchema7","$comment","$defs","if","then","else","contentMediaType","contentEncoding","readOnly","writeOnly","ValidationResult","ValidationError","valid","errors","property","message","validate","instance","schema","checkPropertyChange","value","mustBeValid","result"],"sources":["../src/types.ts","../src/apply.ts","../src/codecTools/decodeCodec.ts","../src/codecTools/dictionary.ts","../src/codecTools/FixedLengthString.ts","../src/codecTools/FixedLengthArray.ts","../src/codecTools/partialRecord.ts","../src/codecTools/isCodecError.ts","../src/codecTools/NonEmptyString.ts","../../../node_modules/.pnpm/@types+json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts","../src/codecTools/toJsonSchema.ts","../src/codecTools/createDefaultCodec.ts","../src/enum.ts","../src/enums.ts","../src/getEntries.ts","../src/getKeys.ts","../src/getValues.ts","../src/groupBy.ts","../src/gql.ts","../src/invert.ts","../src/valuesOf.ts","../src/findAllWithRegex.ts","../src/flattenObject.ts","../src/aggregateObjects.ts","../src/transposeObjectArray.ts","../src/fromEntries.ts","../src/noExcess.ts"],"x_google_ignoreList":[9],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -174,12 +174,7 @@ const convertToJsonSchema = (rawType, strict, alwaysIncludeRequired, context) =>
|
|
|
174
174
|
const results = type.types.map((subtype) => convertToJsonSchema(subtype, strict, alwaysIncludeRequired, context));
|
|
175
175
|
if (!results.every((result) => result.type === "object")) throw new Error("InterfaceType must have all children as type=object");
|
|
176
176
|
return tracked({
|
|
177
|
-
|
|
178
|
-
required: results.map((result) => result.required).flat(),
|
|
179
|
-
properties: results.reduce((accumulator, result) => ({
|
|
180
|
-
...accumulator,
|
|
181
|
-
...result.properties
|
|
182
|
-
}), {}),
|
|
177
|
+
...mergeObjectSchemas(results),
|
|
183
178
|
...strict ? { additionalProperties: false } : {}
|
|
184
179
|
});
|
|
185
180
|
}
|
|
@@ -220,9 +215,31 @@ const convertToJsonSchema = (rawType, strict, alwaysIncludeRequired, context) =>
|
|
|
220
215
|
description: `Predicate: ${type.predicate.name || type.name}`
|
|
221
216
|
});
|
|
222
217
|
}
|
|
218
|
+
if (type._tag === "NoExcessType") {
|
|
219
|
+
const { allOf, ...schema } = convertToJsonSchema(type.type, strict, alwaysIncludeRequired, context);
|
|
220
|
+
return tracked({
|
|
221
|
+
...schema,
|
|
222
|
+
...allOf ? mergeObjectSchemas(allOf) : {},
|
|
223
|
+
additionalProperties: false
|
|
224
|
+
});
|
|
225
|
+
}
|
|
223
226
|
return tracked(unhandledType(type));
|
|
224
227
|
};
|
|
225
228
|
/**
|
|
229
|
+
* Merge the object schemas of intersection members into one object schema.
|
|
230
|
+
*
|
|
231
|
+
* @param schemas - Schema generated for each intersection member
|
|
232
|
+
* @returns Object schema with the combined required keys and properties
|
|
233
|
+
*/
|
|
234
|
+
function mergeObjectSchemas(schemas) {
|
|
235
|
+
const objects = schemas.filter((schema) => typeof schema === "object");
|
|
236
|
+
return {
|
|
237
|
+
type: "object",
|
|
238
|
+
required: objects.flatMap((schema) => schema.required ?? []),
|
|
239
|
+
properties: Object.assign({}, ...objects.map((schema) => schema.properties))
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
226
243
|
* Associate a generated schema object with the codec that produced it.
|
|
227
244
|
*
|
|
228
245
|
* @param codec - Source codec
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/enum.ts","../src/getKeys.ts","../src/apply.ts","../src/codecTools/decodeCodec.ts","../src/codecTools/dictionary.ts","../src/codecTools/FixedLengthString.ts","../src/codecTools/FixedLengthArray.ts","../src/codecTools/partialRecord.ts","../src/codecTools/isCodecError.ts","../src/codecTools/NonEmptyString.ts","../src/codecTools/toJsonSchema.ts","../src/codecTools/createDefaultCodec.ts","../src/enums.ts","../src/getEntries.ts","../src/getValues.ts","../src/groupBy.ts","../src/gql.ts","../src/invert.ts","../src/valuesOf.ts","../src/findAllWithRegex.ts","../src/aggregateObjects.ts","../src/flattenObject.ts","../src/transposeObjectArray.ts","../src/fromEntries.ts","../src/noExcess.ts"],"sourcesContent":["import type { ObjByString } from './types.js';\n\n// TODO: https://linear.app/transcend/issue/LAK-2351 – Remove deprecated enum utils\n\n/**\n * An enumerated value.\n * @deprecated - Enum utils are deprecated\n */\nexport type Enumerate<T = string, TKey extends string = string> = {\n [key in TKey]: T;\n};\n\n/**\n * A TypeScript enum with string values.\n * @deprecated - Enum utils are deprecated\n */\nexport type TypescriptEnum = { [key in string]: string } | { [key in number]: string };\n\n/**\n * An input when defining an enum can be an object of string -> string or a list\n * of strings.\n * @deprecated - Enum utils are deprecated\n */\nexport type EnumInput<T, TKey extends string = string> = Enumerate<T, TKey> | string[];\n\n/**\n * Convert a list of strings to an enum-like object.\n * @deprecated - Enum utils are deprecated\n */\nexport function listToEnum(attributes: string[]): Enumerate<string> {\n const initialValue: Enumerate<string> = {};\n return attributes.reduce((accumulator, value) => {\n accumulator[value] = value;\n return accumulator;\n }, initialValue);\n}\n\n/**\n * Merge enum-like inputs into a single enum object.\n * @deprecated - Enum utils are deprecated\n */\nexport function createEnum<T = string, TKey extends string = string>(\n ...attributes: EnumInput<T, TKey>[]\n): Enumerate<T, TKey> {\n const objectAttributes = attributes.map((attribute) =>\n Array.isArray(attribute) ? listToEnum(attribute) : attribute,\n );\n\n return Object.assign({}, ...objectAttributes);\n}\n\n/**\n * Filter an enum and return the keys that remain.\n * @deprecated - Enum utils are deprecated\n */\nexport function filterEnum<T extends ObjByString>(\n obj: T,\n filterFunc: (value: T[keyof T], key: keyof T, calculatedEnum: Enumerate<T[keyof T]>) => boolean,\n): (keyof T)[] {\n return (Object.keys(obj) as (keyof T)[])\n .filter((key) => filterFunc(obj[key], key, obj))\n .map((key) => key);\n}\n\n/**\n * Make an enum compatible with type inference without changing its runtime\n * shape.\n * @deprecated – Enum utils are deprecated\n */\nexport function makeEnum<T extends { [index: string]: Value | Value[] }, Value extends string>(\n value: T,\n): T {\n return value;\n}\n","import type { StringKeys } from './types.js';\n\n/**\n * `Object.keys` for string keys only.\n */\nexport function getStringKeys<T extends {}>(obj: T): StringKeys<T>[] {\n return Object.keys(obj).filter((key) => typeof key === 'string') as StringKeys<T>[];\n}\n\n/**\n * `Object.keys` that preserves key types.\n */\nexport function getKeys<T extends {}>(obj: T): (keyof T)[] {\n return Object.keys(obj) as (keyof T)[];\n}\n","import { createEnum } from './enum.js';\nimport { getKeys } from './getKeys.js';\nimport type { ObjByString, StringKeys } from './types.js';\n\n/**\n * Apply a function to each value of an object while preserving the key types.\n */\nexport function apply<TInput extends ObjByString, TOutput>(\n obj: TInput,\n applyFunc: (\n value: TInput[keyof TInput],\n key: StringKeys<TInput>,\n fullObj: typeof obj,\n index: number,\n ) => TOutput,\n): { [key in keyof TInput]: TOutput } {\n const result = Object.keys(obj).reduce(\n (accumulator, key, index) =>\n Object.assign(accumulator, {\n [key]: applyFunc(obj[key], key as StringKeys<TInput>, obj, index),\n }),\n {},\n );\n\n return result as { [key in keyof TInput]: TOutput };\n}\n\n/**\n * Async version of `apply`.\n */\nexport async function asyncApply<TInput extends ObjByString, TOutput>(\n obj: TInput,\n applyFunc: (\n value: TInput[keyof TInput],\n key: StringKeys<TInput>,\n fullObj: typeof obj,\n index: number,\n ) => Promise<TOutput>,\n): Promise<{ [key in keyof TInput]: TOutput }> {\n const entries = await Promise.all(\n getKeys(obj).map(async (key, index) => ({\n key,\n value: await applyFunc(obj[key], key as StringKeys<TInput>, obj, index),\n })),\n );\n\n const result = entries.reduce(\n (accumulator, { key, value }) =>\n Object.assign(accumulator, {\n [key]: value,\n }),\n {},\n );\n\n return result as { [key in keyof TInput]: TOutput };\n}\n\n/**\n * Convert a TypeScript enum to a value-to-value map and then call `apply`.\n */\nexport function applyEnum<TEnum extends string, TOutput>(\n enm: { [key in string]: TEnum },\n applyFunc: (value: TEnum, key: TEnum, fullObj: typeof enm, index: number) => TOutput,\n): { [key in TEnum]: TOutput } {\n const obj = createEnum<TEnum, TEnum>(Object.values(enm));\n return apply(obj, applyFunc) as any;\n}\n","import * as either from 'fp-ts/lib/Either.js';\nimport { pipe } from 'fp-ts/lib/function.js';\nimport * as t from 'io-ts';\n\n/**\n * Determine the codec paths that are invalid.\n */\nfunction getPaths<A>(validation: t.Validation<A>): string[] {\n return pipe(\n validation,\n either.fold(\n (errors) =>\n errors.map((error) => {\n const lastContext = error.context.at(-1);\n const fullPath = error.context.map(({ key }) => key).join('.');\n return `${fullPath} expected type '${lastContext?.type.name}'`;\n }),\n () => ['no errors'],\n ),\n );\n}\n\n/**\n * Get custom error messages for the errors.\n */\nfunction getCustomErrors<A>(\n validation: t.Validation<A>,\n customErrorFromContext: (validationContext: t.Context) => string,\n): string[] {\n return pipe(\n validation,\n either.fold(\n (errors) => errors.map((error) => customErrorFromContext(error.context)),\n () => ['no errors'],\n ),\n );\n}\n\nexport const CODEC_ERROR_MESSAGE = 'Failed to decode codec:';\n\n/**\n * Decode a codec, returning the decoded value or throwing an error.\n */\nexport function decodeCodec<TCodec extends t.Any>(\n codec: TCodec,\n txt: unknown,\n parse = true,\n customErrorFromContext: ((validationContext: t.Context) => string) | undefined = undefined,\n): t.TypeOf<TCodec> {\n const decoded = codec.decode(parse && typeof txt === 'string' ? JSON.parse(txt) : txt);\n\n if (either.isLeft(decoded)) {\n const errorPaths = getPaths(decoded);\n const customError =\n customErrorFromContext !== undefined\n ? JSON.stringify(getCustomErrors(decoded, customErrorFromContext), null, 2)\n : undefined;\n\n throw new Error(\n `${CODEC_ERROR_MESSAGE} ${JSON.stringify(errorPaths, null, 2)}${customError ?? ''}`,\n );\n }\n\n return decoded.right;\n}\n","import { unsafeCoerce } from 'fp-ts/lib/function.js';\nimport * as t from 'io-ts';\n\n/**\n * A record with optional keys.\n */\nexport interface DictionaryC<D extends t.Mixed, C extends t.Mixed> extends t.DictionaryType<\n D,\n C,\n {\n [K in t.TypeOf<D>]?: t.TypeOf<C>;\n },\n {\n [K in t.OutputOf<D>]?: t.OutputOf<C>;\n },\n unknown\n> {}\n\n/**\n * Helper to encode/decode a record with partial keys.\n */\nexport const dictionary = <D extends t.Mixed, C extends t.Mixed>(\n keys: D,\n values: C,\n name?: string,\n): DictionaryC<D, C> => unsafeCoerce(t.record(t.union([keys, t.undefined]), values, name));\n","import * as t from 'io-ts';\n\n/**\n * Brand for strings of fixed length.\n */\nexport type FixedLengthStringBrand<N extends number> = {\n /** The expected length of the string. */\n readonly length: N;\n /** Unique symbol to ensure uniqueness of this type across modules/packages. */\n readonly FixedLengthString: unique symbol;\n};\n\n/**\n * Codec for strings constrained to a fixed length.\n */\nexport const FixedLengthString = <N extends number>(\n len: N,\n): t.BrandC<t.StringC, FixedLengthStringBrand<N>> =>\n t.brand(\n t.string,\n (value): value is t.Branded<string, FixedLengthStringBrand<N>> => value.length === len,\n 'FixedLengthString',\n );\n\n/**\n * Branded fixed-length string type.\n */\nexport type FixedLengthString<N extends number> = t.TypeOf<\n t.BrandC<t.StringC, FixedLengthStringBrand<N>>\n>;\n","import * as t from 'io-ts';\n\n/**\n * Brand for arrays with bounded length.\n */\nexport interface FixedLengthArrayBrand<T> extends Array<T> {\n /** Unique symbol to ensure uniqueness of this type across modules/packages. */\n readonly fixedLengthArray: unique symbol;\n /** The minimum length of the array. */\n readonly min: number;\n /** The maximum length of the array. */\n readonly max: number;\n}\n\n/**\n * Codec for arrays constrained to a fixed length range.\n */\nexport const FixedLengthArray = <C extends t.Mixed>(\n min: number,\n max: number,\n codec: C,\n): t.BrandC<t.ArrayC<C>, FixedLengthArrayBrand<C>> =>\n t.brand(\n t.array(codec),\n (value: Array<C>): value is t.Branded<Array<C>, FixedLengthArrayBrand<C>> =>\n min <= value.length && value.length <= max,\n 'fixedLengthArray',\n );\n\n/**\n * Branded fixed-length array type.\n */\nexport type FixedLengthArray<C extends t.Mixed> = t.TypeOf<\n t.BrandC<t.ArrayC<C>, FixedLengthArrayBrand<C>>\n>;\n","import * as t from 'io-ts';\n\n/**\n * Like `t.record`, but where the keys are all optional to include.\n */\nexport interface PartialRecordC<D extends t.Mixed, C extends t.Mixed> extends t.DictionaryType<\n D,\n C,\n {\n [K in t.TypeOf<D>]?: t.TypeOf<C>;\n },\n {\n [K in t.OutputOf<D>]?: t.OutputOf<C>;\n },\n unknown\n> {}\n\n/**\n * Create an `io-ts` compatible partial record.\n */\nexport const partialRecord = <D extends t.Mixed, C extends t.Mixed>(\n domain: D,\n codomain: C,\n name?: string,\n): PartialRecordC<D, C> =>\n t.record(t.union([domain, t.undefined]), codomain, name) as unknown as PartialRecordC<D, C>;\n","/**\n * Checks an error message to see if it is an `io-ts` codec error.\n */\nexport function isCodecError(err: Error): boolean {\n return err.message.startsWith('Failed to decode codec');\n}\n","import * as t from 'io-ts';\n\n/**\n * Brand for non-empty strings.\n */\ntype NonEmptyStringBrand = {\n /** Unique symbol to ensure uniqueness of this type across modules/packages. */\n readonly NonEmptyString: symbol;\n};\n\n/**\n * Codec for non-empty trimmed strings.\n */\nexport const NonEmptyString = t.brand(\n t.string,\n (value): value is t.Branded<string, NonEmptyStringBrand> => value.trim().length !== 0,\n 'NonEmptyString',\n);\n\n/**\n * Branded non-empty string type.\n */\nexport type NonEmptyString = t.TypeOf<typeof NonEmptyString>;\n","import * as t from 'io-ts';\nimport type { JSONSchema7 } from 'json-schema';\n\n/**\n * `io-ts` types compatible with JSON Schema.\n */\ntype MappableType =\n | t.NumberType\n | t.StringType\n | t.NullType\n | t.BooleanType\n | t.LiteralType<any>\n | t.KeyofType<any>\n | t.InterfaceType<any>\n | t.DictionaryType<any, any>\n | t.PartialType<any>\n | t.UnionType<any>\n | t.ArrayType<any>\n | t.TupleType<any>\n | t.IntersectionType<any>\n | t.RefinementType<any>;\n\n/**\n * Options for converting an `io-ts` codec to JSON Schema.\n */\nexport interface ToJsonSchemaOptions {\n /**\n * Replace reused codecs with local draft-07 `definitions` references when\n * doing so makes the serialized schema smaller.\n */\n useReferences?: boolean;\n}\n\n/**\n * State shared while an `io-ts` codec graph is converted.\n */\ninterface ConversionContext {\n /** Codec identity associated with each generated schema object. */\n schemaCodecs: WeakMap<JSONSchema7, object>;\n}\n\n/**\n * A reused codec schema that may be moved into `definitions`.\n */\ninterface CodecSchemaCandidate {\n /** Codec object represented by the generated schemas. */\n codec: object;\n /** Number of occurrences in the generated schema. */\n occurrences: number;\n /** Generated schema objects representing this codec and schema variant. */\n schemas: JSONSchema7[];\n /** Serialized schema used to identify structural matches. */\n serializedSchema: string;\n /** Generated schema used as the definition body. */\n schema: JSONSchema7;\n}\n\n/**\n * Runtime metadata exposed by an `io-ts` codec.\n */\ninterface CodecMetadata {\n /** Human-readable codec name. */\n name?: unknown;\n /** Internal `io-ts` codec tag. */\n _tag?: unknown;\n}\n\n/**\n * Convert an `io-ts` codec to a JSON Schema (v7).\n */\nexport const toJsonSchema = (\n rawType: any,\n strict = false,\n alwaysIncludeRequired = false,\n options: ToJsonSchemaOptions = {},\n): JSONSchema7 => {\n const context: ConversionContext = {\n schemaCodecs: new WeakMap(),\n };\n const schema = convertToJsonSchema(rawType, strict, alwaysIncludeRequired, context);\n return options.useReferences ? addCodecReferences(schema, context) : schema;\n};\n\n/**\n * Recursively convert an `io-ts` codec to an inline JSON Schema.\n *\n * Keeping this pass reference-free is important because parent codecs inspect\n * and transform their generated child schemas.\n */\nconst convertToJsonSchema = (\n rawType: any,\n strict: boolean,\n alwaysIncludeRequired: boolean,\n context: ConversionContext,\n): JSONSchema7 => {\n const type = rawType as MappableType;\n const tracked = (schema: JSONSchema7): JSONSchema7 => trackSchema(type, schema, context);\n\n if (type._tag === 'StringType') {\n return tracked({ type: 'string' });\n }\n\n if (type._tag === 'NumberType') {\n return tracked({ type: 'number' });\n }\n\n if (type._tag === 'NullType') {\n return tracked({ type: 'null' });\n }\n\n if (type._tag === 'BooleanType') {\n return tracked({ type: 'boolean' });\n }\n\n if (type._tag === 'LiteralType') {\n return tracked({ const: type.value });\n }\n\n if (type._tag === 'KeyofType') {\n return tracked({ type: 'string', enum: Object.keys(type.keys) });\n }\n\n if (type._tag === 'UnionType') {\n return tracked({\n anyOf: type.types.map((subtype: any) =>\n convertToJsonSchema(subtype, strict, alwaysIncludeRequired, context),\n ),\n });\n }\n\n if (type._tag === 'IntersectionType' && !alwaysIncludeRequired) {\n return tracked({\n allOf: type.types.map((subtype: any) =>\n convertToJsonSchema(subtype, strict, alwaysIncludeRequired, context),\n ),\n });\n }\n\n if (type._tag === 'IntersectionType' && alwaysIncludeRequired) {\n const results = type.types.map((subtype: any) =>\n convertToJsonSchema(subtype, strict, alwaysIncludeRequired, context),\n );\n\n if (!results.every((result: any) => result.type === 'object')) {\n throw new Error('InterfaceType must have all children as type=object');\n }\n\n return tracked({\n type: 'object',\n required: results.map((result: any) => result.required).flat(),\n properties: results.reduce(\n (accumulator: any, result: any) => ({ ...accumulator, ...result.properties }),\n {},\n ),\n ...(strict ? { additionalProperties: false } : {}),\n });\n }\n\n if (type._tag === 'InterfaceType') {\n return tracked({\n type: 'object',\n required: Object.keys(type.props),\n properties: Object.fromEntries(\n Object.entries(type.props).map(([key, subtype]) => [\n key,\n convertToJsonSchema(subtype as t.Type<any>, strict, alwaysIncludeRequired, context),\n ]),\n ),\n ...(strict ? { additionalProperties: false } : {}),\n });\n }\n\n if (type._tag === 'DictionaryType') {\n return tracked({\n type: 'object',\n additionalProperties: convertToJsonSchema(\n type.codomain,\n strict,\n alwaysIncludeRequired,\n context,\n ),\n });\n }\n\n if (type._tag === 'PartialType') {\n return tracked({\n type: 'object',\n ...(alwaysIncludeRequired ? { required: Object.keys(type.props) } : {}),\n properties: Object.fromEntries(\n Object.entries(type.props).map(([key, subtype]) => {\n const result = convertToJsonSchema(\n subtype as t.Type<any>,\n strict,\n alwaysIncludeRequired,\n context,\n );\n const transformedResult =\n alwaysIncludeRequired && result.type\n ? trackSchema(\n subtype as object,\n {\n ...result,\n type: [result.type as any, 'null'],\n },\n context,\n )\n : result;\n return [key, transformedResult];\n }),\n ),\n ...(strict ? { additionalProperties: false } : {}),\n });\n }\n\n if (type._tag === 'ArrayType') {\n return tracked({\n type: 'array',\n items: convertToJsonSchema(type.type, strict, alwaysIncludeRequired, context),\n });\n }\n\n if (type._tag === 'TupleType') {\n return tracked({\n type: 'array',\n items: type.types.map((subtype: any) =>\n convertToJsonSchema(subtype, strict, alwaysIncludeRequired, context),\n ),\n });\n }\n\n if (type._tag === 'RefinementType') {\n if (type.name === 'Int') {\n return tracked({ type: 'integer' });\n }\n\n return tracked({\n ...convertToJsonSchema(type.type, strict, alwaysIncludeRequired, context),\n description: `Predicate: ${type.predicate.name || type.name}`,\n });\n }\n\n return tracked(unhandledType(type as never));\n};\n\n/**\n * Associate a generated schema object with the codec that produced it.\n *\n * @param codec - Source codec\n * @param schema - Generated schema\n * @param context - Shared conversion state\n * @returns The generated schema\n */\nfunction trackSchema(codec: object, schema: JSONSchema7, context: ConversionContext): JSONSchema7 {\n context.schemaCodecs.set(schema, codec);\n return schema;\n}\n\n/**\n * Move schemas produced by reused codec objects into local draft-07\n * definitions.\n *\n * @param schema - Fully generated inline schema\n * @param context - Shared conversion state\n * @returns A smaller equivalent schema when references are beneficial\n */\nfunction addCodecReferences(schema: JSONSchema7, context: ConversionContext): JSONSchema7 {\n const candidates = new Map<object, Map<string, CodecSchemaCandidate>>();\n collectCodecCandidates(schema, context, candidates);\n\n const definitionNames = new WeakMap<JSONSchema7, string>();\n const selectedCandidates = new Map<string, CodecSchemaCandidate>();\n const usedDefinitionNames = new Set<string>();\n\n for (const variants of candidates.values()) {\n for (const candidate of variants.values()) {\n if (candidate.occurrences < 2) {\n continue;\n }\n\n const definitionName = buildDefinitionName(candidate, usedDefinitionNames);\n const reference = { $ref: `#/definitions/${definitionName}` };\n const inlineSize = candidate.serializedSchema.length * candidate.occurrences;\n const referencedSize =\n candidate.serializedSchema.length +\n JSON.stringify(definitionName).length +\n 1 +\n JSON.stringify(reference).length * candidate.occurrences;\n\n if (referencedSize < inlineSize) {\n usedDefinitionNames.add(definitionName);\n selectedCandidates.set(definitionName, candidate);\n candidate.schemas.forEach((candidateSchema) =>\n definitionNames.set(candidateSchema, definitionName),\n );\n }\n }\n }\n\n if (selectedCandidates.size === 0) {\n return schema;\n }\n\n const definitions: Record<string, JSONSchema7> = {};\n const referencedSchema = replaceCodecCandidates(\n schema,\n definitionNames,\n selectedCandidates,\n definitions,\n ) as JSONSchema7;\n const result = inlineUnprofitableDefinitions(referencedSchema, definitions);\n\n return JSON.stringify(result).length < JSON.stringify(schema).length ? result : schema;\n}\n\n/**\n * Collect schema variants by the identity of the codec that produced them.\n *\n * A codec can produce different schemas in different parent contexts, so its\n * serialized schema is a secondary key.\n *\n * @param value - Current generated schema value\n * @param context - Shared conversion state\n * @param candidates - Candidates grouped by codec identity and schema variant\n */\nfunction collectCodecCandidates(\n value: unknown,\n context: ConversionContext,\n candidates: Map<object, Map<string, CodecSchemaCandidate>>,\n): void {\n if (Array.isArray(value)) {\n value.forEach((item) => collectCodecCandidates(item, context, candidates));\n return;\n }\n\n if (!isRecord(value)) {\n return;\n }\n\n const schema = value as JSONSchema7;\n const codec = context.schemaCodecs.get(schema);\n\n if (codec) {\n const serializedSchema = JSON.stringify(schema);\n const variants = candidates.get(codec) ?? new Map<string, CodecSchemaCandidate>();\n const candidate = variants.get(serializedSchema);\n\n if (candidate) {\n candidate.occurrences += 1;\n candidate.schemas.push(schema);\n } else {\n variants.set(serializedSchema, {\n codec,\n occurrences: 1,\n schemas: [schema],\n serializedSchema,\n schema,\n });\n candidates.set(codec, variants);\n }\n }\n\n Object.values(value).forEach((child) => collectCodecCandidates(child, context, candidates));\n}\n\n/**\n * Replace selected codec schemas with references, creating definitions lazily\n * so unused nested candidates are omitted.\n *\n * @param value - Current generated schema value\n * @param definitionNames - Definition name for each selected schema object\n * @param selectedCandidates - Selected candidates indexed by definition name\n * @param definitions - Definitions created while replacing candidates\n * @returns A copy with selected codec schemas replaced\n */\nfunction replaceCodecCandidates(\n value: unknown,\n definitionNames: WeakMap<JSONSchema7, string>,\n selectedCandidates: Map<string, CodecSchemaCandidate>,\n definitions: Record<string, JSONSchema7>,\n): unknown {\n if (Array.isArray(value)) {\n return value.map((item) =>\n replaceCodecCandidates(item, definitionNames, selectedCandidates, definitions),\n );\n }\n\n if (!isRecord(value)) {\n return value;\n }\n\n const definitionName = definitionNames.get(value as JSONSchema7);\n if (definitionName) {\n ensureDefinition(definitionName, definitionNames, selectedCandidates, definitions);\n return { $ref: `#/definitions/${definitionName}` };\n }\n\n return replaceSchemaChildren(value, definitionNames, selectedCandidates, definitions);\n}\n\n/**\n * Create a selected definition and replace any nested selected codecs.\n *\n * @param definitionName - Definition to create\n * @param definitionNames - Definition name for each selected schema object\n * @param selectedCandidates - Selected candidates indexed by definition name\n * @param definitions - Definitions created while replacing candidates\n */\nfunction ensureDefinition(\n definitionName: string,\n definitionNames: WeakMap<JSONSchema7, string>,\n selectedCandidates: Map<string, CodecSchemaCandidate>,\n definitions: Record<string, JSONSchema7>,\n): void {\n if (Object.hasOwn(definitions, definitionName)) {\n return;\n }\n\n definitions[definitionName] = {};\n const candidate = selectedCandidates.get(definitionName)!;\n definitions[definitionName] = replaceSchemaChildren(\n candidate.schema,\n definitionNames,\n selectedCandidates,\n definitions,\n ) as JSONSchema7;\n}\n\n/**\n * Replace selected codecs below a schema object without replacing the object\n * itself.\n *\n * @param schema - Schema whose children should be replaced\n * @param definitionNames - Definition name for each selected schema object\n * @param selectedCandidates - Selected candidates indexed by definition name\n * @param definitions - Definitions created while replacing candidates\n * @returns Schema object with replaced children\n */\nfunction replaceSchemaChildren(\n schema: object,\n definitionNames: WeakMap<JSONSchema7, string>,\n selectedCandidates: Map<string, CodecSchemaCandidate>,\n definitions: Record<string, JSONSchema7>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(schema).map(([key, child]) => [\n key,\n replaceCodecCandidates(child, definitionNames, selectedCandidates, definitions),\n ]),\n );\n}\n\n/**\n * Inline definitions whose remaining references cost at least as much as the\n * repeated schema bodies. This removes nested candidates that became\n * single-use after a parent codec was moved into a definition.\n *\n * @param schema - Root schema without its definitions\n * @param definitions - Generated definitions\n * @returns Schema with only profitable definitions\n */\nfunction inlineUnprofitableDefinitions(\n schema: JSONSchema7,\n definitions: Record<string, JSONSchema7>,\n): JSONSchema7 {\n let result = schema;\n const remainingDefinitions = { ...definitions };\n\n while (true) {\n const referenceCounts = new Map<string, number>();\n countDefinitionReferences(result, referenceCounts);\n Object.values(remainingDefinitions).forEach((definition) =>\n countDefinitionReferences(definition, referenceCounts),\n );\n\n const definitionNames = Object.keys(remainingDefinitions);\n const definitionName =\n definitionNames.find((name) => (referenceCounts.get(name) ?? 0) < 2) ??\n definitionNames.find((name) => {\n const definition = remainingDefinitions[name]!;\n const occurrences = referenceCounts.get(name) ?? 0;\n const referenceSize = JSON.stringify({ $ref: `#/definitions/${name}` }).length;\n const definitionSize = JSON.stringify(definition).length + JSON.stringify(name).length + 1;\n return (\n JSON.stringify(definition).length * occurrences <=\n definitionSize + referenceSize * occurrences\n );\n });\n\n if (!definitionName) {\n break;\n }\n\n const definition = remainingDefinitions[definitionName]!;\n delete remainingDefinitions[definitionName];\n result = replaceDefinitionReference(result, definitionName, definition) as JSONSchema7;\n\n for (const [name, remainingDefinition] of Object.entries(remainingDefinitions)) {\n remainingDefinitions[name] = replaceDefinitionReference(\n remainingDefinition,\n definitionName,\n definition,\n ) as JSONSchema7;\n }\n }\n\n return Object.keys(remainingDefinitions).length > 0\n ? { ...result, definitions: remainingDefinitions }\n : result;\n}\n\n/**\n * Count local references to generated definitions.\n *\n * @param value - Current schema value\n * @param referenceCounts - Counts indexed by definition name\n */\nfunction countDefinitionReferences(value: unknown, referenceCounts: Map<string, number>): void {\n if (Array.isArray(value)) {\n value.forEach((item) => countDefinitionReferences(item, referenceCounts));\n return;\n }\n\n if (!isRecord(value)) {\n return;\n }\n\n if (typeof value.$ref === 'string' && value.$ref.startsWith('#/definitions/')) {\n const definitionName = value.$ref.slice('#/definitions/'.length);\n referenceCounts.set(definitionName, (referenceCounts.get(definitionName) ?? 0) + 1);\n }\n\n Object.values(value).forEach((child) => countDefinitionReferences(child, referenceCounts));\n}\n\n/**\n * Inline every bare reference to one generated definition.\n *\n * @param value - Current schema value\n * @param definitionName - Definition to inline\n * @param definition - Definition body\n * @returns Schema value with matching references replaced\n */\nfunction replaceDefinitionReference(\n value: unknown,\n definitionName: string,\n definition: JSONSchema7,\n): unknown {\n if (Array.isArray(value)) {\n return value.map((item) => replaceDefinitionReference(item, definitionName, definition));\n }\n\n if (!isRecord(value)) {\n return value;\n }\n\n if (Object.keys(value).length === 1 && value.$ref === `#/definitions/${definitionName}`) {\n return definition;\n }\n\n return Object.fromEntries(\n Object.entries(value).map(([key, child]) => [\n key,\n replaceDefinitionReference(child, definitionName, definition),\n ]),\n );\n}\n\n/**\n * Build a stable, JSON Pointer-safe definition name.\n *\n * Explicit simple codec names are preferred. Generated io-ts expression names\n * fall back to a codec tag and content hash.\n *\n * @param candidate - Codec schema being named\n * @param usedDefinitionNames - Definition names already allocated\n * @returns Definition name\n */\nfunction buildDefinitionName(\n candidate: CodecSchemaCandidate,\n usedDefinitionNames: Set<string>,\n): string {\n const metadata = candidate.codec as CodecMetadata;\n const explicitName =\n typeof metadata.name === 'string' && /^[A-Za-z_][A-Za-z0-9_-]*$/u.test(metadata.name)\n ? metadata.name\n : undefined;\n const codecTag =\n typeof metadata._tag === 'string'\n ? metadata._tag.replace(/Type$/u, '').toLowerCase()\n : 'schema';\n const baseName =\n explicitName ?? `${codecTag || 'schema'}-${hashString(candidate.serializedSchema)}`;\n let definitionName = baseName;\n let suffix = 2;\n\n while (usedDefinitionNames.has(definitionName)) {\n definitionName = `${baseName}-${suffix}`;\n suffix += 1;\n }\n\n return definitionName;\n}\n\n/**\n * Produce a compact deterministic hash for a definition name.\n *\n * Hash collisions cannot affect correctness because definition names are\n * checked against their serialized schemas before use.\n *\n * @param value - Value to hash\n * @returns Unsigned base-36 FNV-1a hash\n */\nfunction hashString(value: string): string {\n let hash = 2_166_136_261;\n\n for (let index = 0; index < value.length; index += 1) {\n hash ^= value.charCodeAt(index);\n hash = Math.imul(hash, 16_777_619);\n }\n\n return (hash >>> 0).toString(36);\n}\n\n/**\n * Check whether a value is a non-null object record.\n *\n * @param value - Value to check\n * @returns Whether the value is a record\n */\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nconst unhandledType = (_shouldBeNever: never) => ({});\n","import * as t from 'io-ts';\n\n/**\n * Creates a default value for an `io-ts` codec.\n */\nexport const createDefaultCodec = <C extends t.Mixed>(codec: C): t.TypeOf<C> => {\n if (codec instanceof t.UnionType) {\n const arrayType = codec.types.find((type: any) => type instanceof t.ArrayType);\n if (arrayType) {\n return createDefaultCodec(arrayType);\n }\n\n const objectType = codec.types.find(\n (type: any) =>\n type instanceof t.InterfaceType ||\n type instanceof t.PartialType ||\n type instanceof t.IntersectionType ||\n type instanceof t.ArrayType,\n );\n if (objectType) {\n return createDefaultCodec(objectType);\n }\n\n const hasNull = codec.types.some(\n (type: any) => type instanceof t.NullType || type.name === 'null',\n );\n if (hasNull) {\n return null as t.TypeOf<C>;\n }\n\n return createDefaultCodec(codec.types[0]);\n }\n\n if (codec instanceof t.InterfaceType || codec instanceof t.PartialType) {\n const defaults: Record<string, any> = {};\n Object.entries(codec.props).forEach(([key, type]) => {\n defaults[key] = createDefaultCodec(type as any);\n });\n return defaults as t.TypeOf<C>;\n }\n\n if (codec instanceof t.IntersectionType) {\n return codec.types.reduce(\n (accumulator: t.TypeOf<C>, type: any) => ({\n ...accumulator,\n ...createDefaultCodec(type),\n }),\n {},\n );\n }\n\n if (codec instanceof t.ArrayType) {\n const elementType = codec.type;\n const isObjectType =\n elementType instanceof t.InterfaceType ||\n elementType instanceof t.PartialType ||\n elementType instanceof t.IntersectionType;\n\n return (isObjectType ? [createDefaultCodec(elementType)] : []) as t.TypeOf<C>;\n }\n\n if (codec instanceof t.LiteralType) {\n return codec.value as t.TypeOf<C>;\n }\n\n if (codec instanceof t.ObjectType) {\n return {} as t.TypeOf<C>;\n }\n\n switch (codec.name) {\n case 'string':\n return '' as t.TypeOf<C>;\n case 'number':\n return 0 as t.TypeOf<C>;\n case 'boolean':\n return false as t.TypeOf<C>;\n case 'null':\n return null as t.TypeOf<C>;\n case 'undefined':\n return undefined as t.TypeOf<C>;\n default:\n return null as t.TypeOf<C>;\n }\n};\n","import { makeEnum } from './enum.js';\n\n/**\n * The HTTP method types.\n */\nexport const HttpMethod = {\n /** A GET request. */\n Get: 'GET',\n /** A POST request. */\n Post: 'POST',\n /** A DELETE request. */\n Delete: 'DELETE',\n /** A PUT request. */\n Put: 'PUT',\n /** A PATCH request. */\n Patch: 'PATCH',\n} as const;\n\n/**\n * The HTTP method string union.\n */\nexport type HttpMethod = (typeof HttpMethod)[keyof typeof HttpMethod];\n","import type { ObjByString } from './types.js';\n\n/**\n * `Object.entries` that preserves entry types.\n */\nexport function getEntries<TKey extends keyof TObj, TObj extends ObjByString>(\n obj: TObj,\n): [TKey, TObj[TKey]][] {\n return Object.entries(obj) as any;\n}\n","/**\n * `Object.values` that preserves value types.\n */\nexport function getValues<TValue>(obj: {\n [key in string | number | symbol]: TValue;\n}): TValue[] {\n return Object.values(obj) as TValue[];\n}\n","/**\n * A typed version of lodash's `groupBy`.\n */\nexport function groupBy<TItem, TKey>(\n iterable: TItem[],\n getKey: (item: TItem) => TKey,\n): Map<TKey, TItem[]> {\n return iterable.reduce((groupedItems, item) => {\n const groupedKey = getKey(item);\n return groupedItems.set(groupedKey, [...(groupedItems.get(groupedKey) ?? []), item]);\n }, new Map<TKey, TItem[]>());\n}\n","/**\n * Identify whether a string looks like a GraphQL interface/type/input\n * declaration.\n */\nexport const INTERFACE_REGEX = /(interface|type|input) [a-zA-Z0-9]* (implements .+?|){([\\s\\S]+?)}/;\n\n/**\n * A `gql` is simply a string branded with the associated GraphQL type.\n */\nexport type Gql<TGraphQLType extends object> = string & {\n /** The TypeScript type definition that relates to the gql string. */\n graphQLType: TGraphQLType;\n};\n\n/**\n * Template tag for GraphQL fragments with a small amount of interpolation\n * support for interface bodies.\n */\nexport function gql<TGraphQLType extends object>(\n strings: TemplateStringsArray,\n ...expressions: (string | number)[]\n): Gql<TGraphQLType> {\n if (expressions.length === 0) {\n return strings[0] as Gql<TGraphQLType>;\n }\n\n const count = strings.length - 1;\n let result = '';\n for (let index = 0; index < count; index += 1) {\n const expression = expressions[index]!;\n const text = typeof expression === 'string' ? expression : expression.toString();\n const useExpression = INTERFACE_REGEX.test(text)\n ? (INTERFACE_REGEX.exec(text) || [])[3]\n : expression;\n result += (strings[index] ?? '') + (useExpression ?? '');\n }\n\n result += strings[count] ?? '';\n return result as Gql<TGraphQLType>;\n}\n","import { getEntries } from './getEntries.js';\n\n/**\n * Invert an object so the values look up the keys. Arrays are expanded and map\n * back to arrays of keys.\n */\nexport function invert<TKey extends string, TValue extends string | string[]>(\n obj: { [key in TKey]?: TValue },\n throwOnDuplicate = true,\n): {\n [key in TValue extends (infer Item)[] ? Item : TValue]: TValue extends any[] ? TKey[] : TKey;\n} {\n const result: any = {};\n\n getEntries(obj).forEach(([key, instance]: [TKey, TValue | undefined]) => {\n if (instance === undefined) {\n throw new Error('inverse found undefined value, this is not supported');\n }\n\n if (Array.isArray(instance)) {\n instance.forEach((listKey) => {\n if (!result[listKey]) {\n result[listKey] = [key];\n } else {\n result[listKey].push(key);\n }\n });\n return;\n }\n\n if (result[instance] && throwOnDuplicate) {\n throw new Error(\n `Encountered duplicate value inverting object: \"${instance}: ${key} and ${result[instance]}\"`,\n );\n }\n\n result[instance] = key;\n });\n\n return result;\n}\n\n/**\n * Safely invert an object into `{ [value]: key[] }`.\n */\nexport function invertSafe<TKey extends string, TValue extends string>(obj: {\n [key in TKey]: TValue | TValue[];\n}): {\n [key in TValue]: TKey[];\n} {\n const result: any = {};\n\n getEntries(obj).forEach(([key, instance]) => {\n if (instance === undefined) {\n throw new Error('inverse found undefined value, this is not supported');\n }\n\n if (Array.isArray(instance)) {\n instance.forEach((listKey) => {\n if (!result[listKey]) {\n result[listKey] = [key];\n } else {\n result[listKey].push(key);\n }\n });\n return;\n }\n\n if (!result[instance]) {\n result[instance] = [key];\n return;\n }\n\n result[instance].push(key);\n });\n\n return result;\n}\n","import * as t from 'io-ts';\n\nimport { invert } from './invert.js';\n\n/**\n * Build an `io-ts` codec over the values of an enum-like object.\n *\n * @param enm - Enum-like object\n * @param name - Optional stable codec name\n * @returns Codec accepting the enum values\n */\nexport function valuesOf<TEnum extends string>(\n enm: {\n [key in string]: TEnum;\n },\n name?: string,\n): t.KeyofC<{ [key in TEnum]: unknown }> {\n return t.keyof(invert(enm) as any, name);\n}\n","/**\n * The full match returned when `regex.exec` finds a match.\n */\nexport interface RegExpMatch {\n /** The full regex match. */\n fullMatch: string;\n /** The index in the text where the match was found. */\n matchIndex: number;\n /** Whether the match satisfies an optional stricter regex. */\n isStrict?: boolean;\n}\n\n/**\n * Definition for finding all regex matches and mapping capture groups to keys.\n */\nexport interface FindAllRegExp<TMatchKeys extends string> {\n /** The regex to test. */\n value: RegExp;\n /**\n * A stricter regex used to annotate matches that satisfy a more exact\n * standard.\n */\n strict?: RegExp;\n /** Capture group names mapped by index. */\n matches: readonly TMatchKeys[];\n /** When true, skip validation of matches being the expected length. */\n skipMatchValidation?: boolean;\n}\n\n/**\n * Use a regex with the global flag to find all matches and return the list with\n * capture groups mapped to named properties.\n */\nexport function findAllWithRegex<TMatchKeys extends string>(\n regex: FindAllRegExp<TMatchKeys>,\n text: string,\n): ({ [key in TMatchKeys]: string } & RegExpMatch)[] {\n if (!regex.value.flags.includes('g')) {\n throw new Error('Regex.value must have a g flag');\n }\n\n const matchParams = ['fullMatch', ...regex.matches];\n const results: ({ [key in TMatchKeys]: string } & RegExpMatch)[] = [];\n\n let match = regex.value.exec(text);\n let index = 0;\n\n while (match) {\n if (matchParams.length !== match.length && !regex.skipMatchValidation) {\n throw new Error(\n `Mismatch in match length at index [${index}]: \"${match.length}\" vs expected: \"${matchParams.length}\"`,\n );\n }\n\n const result = match.reduce(\n (accumulator, matchResult, matchIndex) =>\n Object.assign(accumulator, {\n [matchParams[matchIndex] as string]: matchResult,\n }),\n {},\n ) as { [key in TMatchKeys]: string } & RegExpMatch;\n\n result.matchIndex = match.index;\n\n if (regex.strict) {\n result.isStrict = regex.strict.test(result.fullMatch);\n }\n\n results.push(result);\n\n match = regex.value.exec(text);\n index += 1;\n }\n\n return results;\n}\n","/**\n * Aggregates multiple objects into a single object by combining values of\n * matching keys into comma-separated strings.\n */\nexport const aggregateObjects = ({\n objs,\n wrap = false,\n}: {\n /** The objects to aggregate in a single one. */\n objs: any[];\n /** Whether to wrap the concatenated values in `[]`. */\n wrap?: boolean;\n}): any => {\n const allKeys = Array.from(\n new Set(objs.flatMap((obj) => (obj && typeof obj === 'object' ? Object.keys(obj) : []))),\n );\n\n return allKeys.reduce(\n (accumulator, key) => {\n const values = objs\n .map((obj) => (wrap ? `[${obj?.[key] ?? ''}]` : (obj?.[key] ?? '')))\n .join(',');\n accumulator[key] = values;\n return accumulator;\n },\n {} as Record<string, any>,\n );\n};\n","import { aggregateObjects } from './aggregateObjects.js';\n\n/**\n * Flattens a nested object into a single-level object with concatenated key\n * names.\n */\nexport const flattenObject = ({\n obj,\n prefix = '',\n}: {\n /** The object to flatten. */\n obj: any;\n /** The prefix to prepend to keys while recursing. */\n prefix?: string;\n}): any =>\n !obj\n ? {}\n : Object.keys(obj ?? []).reduce(\n (accumulator, key) => {\n const newKey = prefix ? `${prefix}_${key}` : key;\n const entry = obj[key];\n\n if (\n Array.isArray(entry) &&\n entry.length > 0 &&\n entry.some((item) => typeof item === 'object' && item !== null)\n ) {\n const objectEntries = entry.filter((item) => typeof item === 'object' && item !== null);\n const flattenedObjects = objectEntries.map((item) => flattenObject({ obj: item }));\n const aggregated = aggregateObjects({ objs: flattenedObjects });\n Object.entries(aggregated).forEach(([aggregatedKey, value]) => {\n accumulator[`${newKey}_${aggregatedKey}`] = value;\n });\n } else if (typeof entry === 'object' && entry !== null && !Array.isArray(entry)) {\n Object.assign(accumulator, flattenObject({ obj: entry, prefix: newKey }));\n } else {\n accumulator[newKey] = Array.isArray(entry)\n ? entry\n .map((item) => {\n if (typeof item === 'string') {\n return item.replaceAll(',', '');\n }\n\n return item ?? '';\n })\n .join(',')\n : typeof entry === 'string'\n ? entry.replaceAll(',', '')\n : (entry ?? '');\n }\n\n return accumulator;\n },\n {} as Record<string, any>,\n );\n","/**\n * Type representing a transposed array of objects.\n */\ntype TransposedObjectArray<T, K extends keyof T> = {\n [P in K]: Array<T[P]>;\n} & {\n /** Properties not selected for transposition. */\n rest: Array<Omit<T, K>>;\n};\n\n/**\n * Transpose an array of objects by converting selected properties into arrays\n * while keeping the remaining properties grouped in `rest`.\n */\nexport const transposeObjectArray = <T extends object, K extends keyof T>({\n objects,\n properties,\n options = { includeOtherProperties: true },\n}: {\n /** Array of objects to transpose. */\n objects: T[];\n /** Property keys to transpose into arrays. */\n properties: K[];\n /** Options for how to transpose the array. */\n options?: {\n /** Whether to include non-transposed properties in the final result. */\n includeOtherProperties?: boolean;\n };\n}): TransposedObjectArray<T, K> =>\n objects.reduce(\n (accumulator, item) => {\n const result = { ...accumulator } as TransposedObjectArray<T, K>;\n\n properties.forEach((property) => {\n const currentArray = (accumulator[property] || []) as T[K][];\n result[property] = [...currentArray, item[property]] as any;\n });\n\n const restObject = {} as Omit<T, K>;\n Object.entries(item).forEach(([key, value]) => {\n if (!properties.includes(key as K)) {\n (restObject as any)[key] = value;\n }\n });\n\n if (options.includeOtherProperties) {\n result.rest = [...(accumulator.rest || []), restObject];\n }\n\n return result;\n },\n {} as TransposedObjectArray<T, K>,\n );\n","/**\n * `Object.fromEntries` that preserves entry types.\n */\nexport function fromEntries<const TEntries extends ReadonlyArray<readonly [PropertyKey, unknown]>>(\n entries: TEntries,\n): { [K in TEntries[number] as K[0]]: K[1] } {\n return Object.fromEntries(entries) as { [K in TEntries[number] as K[0]]: K[1] };\n}\n","import type { Either, Right } from 'fp-ts/lib/Either.js';\nimport * as either from 'fp-ts/lib/Either.js';\nimport { pipe } from 'fp-ts/lib/function.js';\nimport * as t from 'io-ts';\n\n/**\n * Creates a type guard function that checks if a codec matches a specific tag.\n */\nconst getIsCodec =\n <T extends t.Any>(tag: string) =>\n (codec: t.Any): codec is T =>\n (codec as any)._tag === tag;\n\nconst isInterfaceCodec = getIsCodec<t.InterfaceType<t.Props>>('InterfaceType');\nconst isPartialCodec = getIsCodec<t.PartialType<t.Props>>('PartialType');\n\n/**\n * Extract property definitions from various codec types.\n */\nconst getProps = (codec: t.HasProps): t.Props => {\n switch (codec._tag) {\n case 'RefinementType':\n case 'ReadonlyType':\n return getProps(codec.type);\n case 'InterfaceType':\n case 'StrictType':\n case 'PartialType':\n return codec.props;\n case 'IntersectionType':\n return codec.types.reduce<t.Props>((props, type) => Object.assign(props, getProps(type)), {});\n default:\n return {};\n }\n};\n\n/**\n * Generate a string representation of props for type naming.\n */\nconst getNameFromProps = (props: t.Props): string =>\n Object.keys(props)\n .map((key) => `${key}: ${props[key]!.name}`)\n .join(', ');\n\n/**\n * Wrap a type name with `Partial<>`.\n */\nconst getPartialTypeName = (inner: string): string => `Partial<${inner}>`;\n\n/**\n * Generate a human-readable type name for the no-excess wrapper.\n */\nconst getNoExcessTypeName = (codec: t.Any): string => {\n if (isInterfaceCodec(codec)) {\n return `{| ${getNameFromProps(codec.props)} |}`;\n }\n\n if (isPartialCodec(codec)) {\n return getPartialTypeName(`{| ${getNameFromProps(codec.props)} |}`);\n }\n\n return `Excess<${codec.name}>`;\n};\n\n/**\n * Compare an object's keys against expected properties and return either the\n * object or a list of excess keys.\n */\nconst stripKeys = <T = any>(obj: T, props: t.Props): Either<string[], T> => {\n const keys = Object.getOwnPropertyNames(obj);\n const propKeys = Object.getOwnPropertyNames(props);\n\n propKeys.forEach((propKey) => {\n const index = keys.indexOf(propKey);\n if (index !== -1) {\n keys.splice(index, 1);\n }\n });\n\n return keys.length ? either.left(keys) : either.right(obj);\n};\n\n/**\n * Wrap an `io-ts` codec so validation fails when excess properties are present.\n */\nexport const noExcess = <C extends t.HasProps>(\n codec: C,\n name: string = getNoExcessTypeName(codec),\n): NoExcessType<C> => {\n const props: t.Props = getProps(codec);\n\n return new NoExcessType<C>(\n name,\n (value): value is C => either.isRight(stripKeys(value, props)) && codec.is(value),\n (value, context) => {\n const unknownRecordValidation = t.UnknownRecord.validate(value, context);\n if (either.isLeft(unknownRecordValidation)) {\n return unknownRecordValidation;\n }\n\n const codecValidation = codec.validate(value, context);\n if (either.isLeft(codecValidation)) {\n return codecValidation;\n }\n\n return pipe(\n stripKeys<C>(codecValidation.right, props),\n either.mapLeft((keys) =>\n keys.map((key) => ({\n value: codecValidation.right[key],\n context,\n message: `excess key \"${key}\" found`,\n })),\n ),\n );\n },\n (value) => codec.encode((stripKeys(value, props) as Right<any>).right),\n codec,\n );\n};\n\n/**\n * A wrapper type used with `io-ts` to ensure there are not any excess keys.\n */\nexport class NoExcessType<C extends t.Any, A = C['_A'], O = A, I = unknown> extends t.Type<\n A,\n O,\n I\n> {\n public readonly _tag = 'NoExcessType' as const;\n\n public constructor(\n name: string,\n is: NoExcessType<C, A, O, I>['is'],\n validate: NoExcessType<C, A, O, I>['validate'],\n encode: NoExcessType<C, A, O, I>['encode'],\n public readonly type: C,\n ) {\n super(name, is, validate, encode);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/enum.ts","../src/getKeys.ts","../src/apply.ts","../src/codecTools/decodeCodec.ts","../src/codecTools/dictionary.ts","../src/codecTools/FixedLengthString.ts","../src/codecTools/FixedLengthArray.ts","../src/codecTools/partialRecord.ts","../src/codecTools/isCodecError.ts","../src/codecTools/NonEmptyString.ts","../src/codecTools/toJsonSchema.ts","../src/codecTools/createDefaultCodec.ts","../src/enums.ts","../src/getEntries.ts","../src/getValues.ts","../src/groupBy.ts","../src/gql.ts","../src/invert.ts","../src/valuesOf.ts","../src/findAllWithRegex.ts","../src/aggregateObjects.ts","../src/flattenObject.ts","../src/transposeObjectArray.ts","../src/fromEntries.ts","../src/noExcess.ts"],"sourcesContent":["import type { ObjByString } from './types.js';\n\n// TODO: https://linear.app/transcend/issue/LAK-2351 – Remove deprecated enum utils\n\n/**\n * An enumerated value.\n * @deprecated - Enum utils are deprecated\n */\nexport type Enumerate<T = string, TKey extends string = string> = {\n [key in TKey]: T;\n};\n\n/**\n * A TypeScript enum with string values.\n * @deprecated - Enum utils are deprecated\n */\nexport type TypescriptEnum = { [key in string]: string } | { [key in number]: string };\n\n/**\n * An input when defining an enum can be an object of string -> string or a list\n * of strings.\n * @deprecated - Enum utils are deprecated\n */\nexport type EnumInput<T, TKey extends string = string> = Enumerate<T, TKey> | string[];\n\n/**\n * Convert a list of strings to an enum-like object.\n * @deprecated - Enum utils are deprecated\n */\nexport function listToEnum(attributes: string[]): Enumerate<string> {\n const initialValue: Enumerate<string> = {};\n return attributes.reduce((accumulator, value) => {\n accumulator[value] = value;\n return accumulator;\n }, initialValue);\n}\n\n/**\n * Merge enum-like inputs into a single enum object.\n * @deprecated - Enum utils are deprecated\n */\nexport function createEnum<T = string, TKey extends string = string>(\n ...attributes: EnumInput<T, TKey>[]\n): Enumerate<T, TKey> {\n const objectAttributes = attributes.map((attribute) =>\n Array.isArray(attribute) ? listToEnum(attribute) : attribute,\n );\n\n return Object.assign({}, ...objectAttributes);\n}\n\n/**\n * Filter an enum and return the keys that remain.\n * @deprecated - Enum utils are deprecated\n */\nexport function filterEnum<T extends ObjByString>(\n obj: T,\n filterFunc: (value: T[keyof T], key: keyof T, calculatedEnum: Enumerate<T[keyof T]>) => boolean,\n): (keyof T)[] {\n return (Object.keys(obj) as (keyof T)[])\n .filter((key) => filterFunc(obj[key], key, obj))\n .map((key) => key);\n}\n\n/**\n * Make an enum compatible with type inference without changing its runtime\n * shape.\n * @deprecated – Enum utils are deprecated\n */\nexport function makeEnum<T extends { [index: string]: Value | Value[] }, Value extends string>(\n value: T,\n): T {\n return value;\n}\n","import type { StringKeys } from './types.js';\n\n/**\n * `Object.keys` for string keys only.\n */\nexport function getStringKeys<T extends {}>(obj: T): StringKeys<T>[] {\n return Object.keys(obj).filter((key) => typeof key === 'string') as StringKeys<T>[];\n}\n\n/**\n * `Object.keys` that preserves key types.\n */\nexport function getKeys<T extends {}>(obj: T): (keyof T)[] {\n return Object.keys(obj) as (keyof T)[];\n}\n","import { createEnum } from './enum.js';\nimport { getKeys } from './getKeys.js';\nimport type { ObjByString, StringKeys } from './types.js';\n\n/**\n * Apply a function to each value of an object while preserving the key types.\n */\nexport function apply<TInput extends ObjByString, TOutput>(\n obj: TInput,\n applyFunc: (\n value: TInput[keyof TInput],\n key: StringKeys<TInput>,\n fullObj: typeof obj,\n index: number,\n ) => TOutput,\n): { [key in keyof TInput]: TOutput } {\n const result = Object.keys(obj).reduce(\n (accumulator, key, index) =>\n Object.assign(accumulator, {\n [key]: applyFunc(obj[key], key as StringKeys<TInput>, obj, index),\n }),\n {},\n );\n\n return result as { [key in keyof TInput]: TOutput };\n}\n\n/**\n * Async version of `apply`.\n */\nexport async function asyncApply<TInput extends ObjByString, TOutput>(\n obj: TInput,\n applyFunc: (\n value: TInput[keyof TInput],\n key: StringKeys<TInput>,\n fullObj: typeof obj,\n index: number,\n ) => Promise<TOutput>,\n): Promise<{ [key in keyof TInput]: TOutput }> {\n const entries = await Promise.all(\n getKeys(obj).map(async (key, index) => ({\n key,\n value: await applyFunc(obj[key], key as StringKeys<TInput>, obj, index),\n })),\n );\n\n const result = entries.reduce(\n (accumulator, { key, value }) =>\n Object.assign(accumulator, {\n [key]: value,\n }),\n {},\n );\n\n return result as { [key in keyof TInput]: TOutput };\n}\n\n/**\n * Convert a TypeScript enum to a value-to-value map and then call `apply`.\n */\nexport function applyEnum<TEnum extends string, TOutput>(\n enm: { [key in string]: TEnum },\n applyFunc: (value: TEnum, key: TEnum, fullObj: typeof enm, index: number) => TOutput,\n): { [key in TEnum]: TOutput } {\n const obj = createEnum<TEnum, TEnum>(Object.values(enm));\n return apply(obj, applyFunc) as any;\n}\n","import * as either from 'fp-ts/lib/Either.js';\nimport { pipe } from 'fp-ts/lib/function.js';\nimport * as t from 'io-ts';\n\n/**\n * Determine the codec paths that are invalid.\n */\nfunction getPaths<A>(validation: t.Validation<A>): string[] {\n return pipe(\n validation,\n either.fold(\n (errors) =>\n errors.map((error) => {\n const lastContext = error.context.at(-1);\n const fullPath = error.context.map(({ key }) => key).join('.');\n return `${fullPath} expected type '${lastContext?.type.name}'`;\n }),\n () => ['no errors'],\n ),\n );\n}\n\n/**\n * Get custom error messages for the errors.\n */\nfunction getCustomErrors<A>(\n validation: t.Validation<A>,\n customErrorFromContext: (validationContext: t.Context) => string,\n): string[] {\n return pipe(\n validation,\n either.fold(\n (errors) => errors.map((error) => customErrorFromContext(error.context)),\n () => ['no errors'],\n ),\n );\n}\n\nexport const CODEC_ERROR_MESSAGE = 'Failed to decode codec:';\n\n/**\n * Decode a codec, returning the decoded value or throwing an error.\n */\nexport function decodeCodec<TCodec extends t.Any>(\n codec: TCodec,\n txt: unknown,\n parse = true,\n customErrorFromContext: ((validationContext: t.Context) => string) | undefined = undefined,\n): t.TypeOf<TCodec> {\n const decoded = codec.decode(parse && typeof txt === 'string' ? JSON.parse(txt) : txt);\n\n if (either.isLeft(decoded)) {\n const errorPaths = getPaths(decoded);\n const customError =\n customErrorFromContext !== undefined\n ? JSON.stringify(getCustomErrors(decoded, customErrorFromContext), null, 2)\n : undefined;\n\n throw new Error(\n `${CODEC_ERROR_MESSAGE} ${JSON.stringify(errorPaths, null, 2)}${customError ?? ''}`,\n );\n }\n\n return decoded.right;\n}\n","import { unsafeCoerce } from 'fp-ts/lib/function.js';\nimport * as t from 'io-ts';\n\n/**\n * A record with optional keys.\n */\nexport interface DictionaryC<D extends t.Mixed, C extends t.Mixed> extends t.DictionaryType<\n D,\n C,\n {\n [K in t.TypeOf<D>]?: t.TypeOf<C>;\n },\n {\n [K in t.OutputOf<D>]?: t.OutputOf<C>;\n },\n unknown\n> {}\n\n/**\n * Helper to encode/decode a record with partial keys.\n */\nexport const dictionary = <D extends t.Mixed, C extends t.Mixed>(\n keys: D,\n values: C,\n name?: string,\n): DictionaryC<D, C> => unsafeCoerce(t.record(t.union([keys, t.undefined]), values, name));\n","import * as t from 'io-ts';\n\n/**\n * Brand for strings of fixed length.\n */\nexport type FixedLengthStringBrand<N extends number> = {\n /** The expected length of the string. */\n readonly length: N;\n /** Unique symbol to ensure uniqueness of this type across modules/packages. */\n readonly FixedLengthString: unique symbol;\n};\n\n/**\n * Codec for strings constrained to a fixed length.\n */\nexport const FixedLengthString = <N extends number>(\n len: N,\n): t.BrandC<t.StringC, FixedLengthStringBrand<N>> =>\n t.brand(\n t.string,\n (value): value is t.Branded<string, FixedLengthStringBrand<N>> => value.length === len,\n 'FixedLengthString',\n );\n\n/**\n * Branded fixed-length string type.\n */\nexport type FixedLengthString<N extends number> = t.TypeOf<\n t.BrandC<t.StringC, FixedLengthStringBrand<N>>\n>;\n","import * as t from 'io-ts';\n\n/**\n * Brand for arrays with bounded length.\n */\nexport interface FixedLengthArrayBrand<T> extends Array<T> {\n /** Unique symbol to ensure uniqueness of this type across modules/packages. */\n readonly fixedLengthArray: unique symbol;\n /** The minimum length of the array. */\n readonly min: number;\n /** The maximum length of the array. */\n readonly max: number;\n}\n\n/**\n * Codec for arrays constrained to a fixed length range.\n */\nexport const FixedLengthArray = <C extends t.Mixed>(\n min: number,\n max: number,\n codec: C,\n): t.BrandC<t.ArrayC<C>, FixedLengthArrayBrand<C>> =>\n t.brand(\n t.array(codec),\n (value: Array<C>): value is t.Branded<Array<C>, FixedLengthArrayBrand<C>> =>\n min <= value.length && value.length <= max,\n 'fixedLengthArray',\n );\n\n/**\n * Branded fixed-length array type.\n */\nexport type FixedLengthArray<C extends t.Mixed> = t.TypeOf<\n t.BrandC<t.ArrayC<C>, FixedLengthArrayBrand<C>>\n>;\n","import * as t from 'io-ts';\n\n/**\n * Like `t.record`, but where the keys are all optional to include.\n */\nexport interface PartialRecordC<D extends t.Mixed, C extends t.Mixed> extends t.DictionaryType<\n D,\n C,\n {\n [K in t.TypeOf<D>]?: t.TypeOf<C>;\n },\n {\n [K in t.OutputOf<D>]?: t.OutputOf<C>;\n },\n unknown\n> {}\n\n/**\n * Create an `io-ts` compatible partial record.\n */\nexport const partialRecord = <D extends t.Mixed, C extends t.Mixed>(\n domain: D,\n codomain: C,\n name?: string,\n): PartialRecordC<D, C> =>\n t.record(t.union([domain, t.undefined]), codomain, name) as unknown as PartialRecordC<D, C>;\n","/**\n * Checks an error message to see if it is an `io-ts` codec error.\n */\nexport function isCodecError(err: Error): boolean {\n return err.message.startsWith('Failed to decode codec');\n}\n","import * as t from 'io-ts';\n\n/**\n * Brand for non-empty strings.\n */\ntype NonEmptyStringBrand = {\n /** Unique symbol to ensure uniqueness of this type across modules/packages. */\n readonly NonEmptyString: symbol;\n};\n\n/**\n * Codec for non-empty trimmed strings.\n */\nexport const NonEmptyString = t.brand(\n t.string,\n (value): value is t.Branded<string, NonEmptyStringBrand> => value.trim().length !== 0,\n 'NonEmptyString',\n);\n\n/**\n * Branded non-empty string type.\n */\nexport type NonEmptyString = t.TypeOf<typeof NonEmptyString>;\n","import * as t from 'io-ts';\nimport type { JSONSchema7, JSONSchema7Definition } from 'json-schema';\n\nimport type { NoExcessType } from '../noExcess.js';\n\n/**\n * `io-ts` types compatible with JSON Schema.\n */\ntype MappableType =\n | t.NumberType\n | t.StringType\n | t.NullType\n | t.BooleanType\n | t.LiteralType<any>\n | t.KeyofType<any>\n | t.InterfaceType<any>\n | t.DictionaryType<any, any>\n | t.PartialType<any>\n | t.UnionType<any>\n | t.ArrayType<any>\n | t.TupleType<any>\n | t.IntersectionType<any>\n | t.RefinementType<any>\n | NoExcessType<any>;\n\n/**\n * Options for converting an `io-ts` codec to JSON Schema.\n */\nexport interface ToJsonSchemaOptions {\n /**\n * Replace reused codecs with local draft-07 `definitions` references when\n * doing so makes the serialized schema smaller.\n */\n useReferences?: boolean;\n}\n\n/**\n * State shared while an `io-ts` codec graph is converted.\n */\ninterface ConversionContext {\n /** Codec identity associated with each generated schema object. */\n schemaCodecs: WeakMap<JSONSchema7, object>;\n}\n\n/**\n * A reused codec schema that may be moved into `definitions`.\n */\ninterface CodecSchemaCandidate {\n /** Codec object represented by the generated schemas. */\n codec: object;\n /** Number of occurrences in the generated schema. */\n occurrences: number;\n /** Generated schema objects representing this codec and schema variant. */\n schemas: JSONSchema7[];\n /** Serialized schema used to identify structural matches. */\n serializedSchema: string;\n /** Generated schema used as the definition body. */\n schema: JSONSchema7;\n}\n\n/**\n * Runtime metadata exposed by an `io-ts` codec.\n */\ninterface CodecMetadata {\n /** Human-readable codec name. */\n name?: unknown;\n /** Internal `io-ts` codec tag. */\n _tag?: unknown;\n}\n\n/**\n * Convert an `io-ts` codec to a JSON Schema (v7).\n */\nexport const toJsonSchema = (\n rawType: any,\n strict = false,\n alwaysIncludeRequired = false,\n options: ToJsonSchemaOptions = {},\n): JSONSchema7 => {\n const context: ConversionContext = {\n schemaCodecs: new WeakMap(),\n };\n const schema = convertToJsonSchema(rawType, strict, alwaysIncludeRequired, context);\n return options.useReferences ? addCodecReferences(schema, context) : schema;\n};\n\n/**\n * Recursively convert an `io-ts` codec to an inline JSON Schema.\n *\n * Keeping this pass reference-free is important because parent codecs inspect\n * and transform their generated child schemas.\n */\nconst convertToJsonSchema = (\n rawType: any,\n strict: boolean,\n alwaysIncludeRequired: boolean,\n context: ConversionContext,\n): JSONSchema7 => {\n const type = rawType as MappableType;\n const tracked = (schema: JSONSchema7): JSONSchema7 => trackSchema(type, schema, context);\n\n if (type._tag === 'StringType') {\n return tracked({ type: 'string' });\n }\n\n if (type._tag === 'NumberType') {\n return tracked({ type: 'number' });\n }\n\n if (type._tag === 'NullType') {\n return tracked({ type: 'null' });\n }\n\n if (type._tag === 'BooleanType') {\n return tracked({ type: 'boolean' });\n }\n\n if (type._tag === 'LiteralType') {\n return tracked({ const: type.value });\n }\n\n if (type._tag === 'KeyofType') {\n return tracked({ type: 'string', enum: Object.keys(type.keys) });\n }\n\n if (type._tag === 'UnionType') {\n return tracked({\n anyOf: type.types.map((subtype: any) =>\n convertToJsonSchema(subtype, strict, alwaysIncludeRequired, context),\n ),\n });\n }\n\n if (type._tag === 'IntersectionType' && !alwaysIncludeRequired) {\n return tracked({\n allOf: type.types.map((subtype: any) =>\n convertToJsonSchema(subtype, strict, alwaysIncludeRequired, context),\n ),\n });\n }\n\n if (type._tag === 'IntersectionType' && alwaysIncludeRequired) {\n const results = type.types.map((subtype: any) =>\n convertToJsonSchema(subtype, strict, alwaysIncludeRequired, context),\n );\n\n if (!results.every((result: any) => result.type === 'object')) {\n throw new Error('InterfaceType must have all children as type=object');\n }\n\n return tracked({\n ...mergeObjectSchemas(results),\n ...(strict ? { additionalProperties: false } : {}),\n });\n }\n\n if (type._tag === 'InterfaceType') {\n return tracked({\n type: 'object',\n required: Object.keys(type.props),\n properties: Object.fromEntries(\n Object.entries(type.props).map(([key, subtype]) => [\n key,\n convertToJsonSchema(subtype as t.Type<any>, strict, alwaysIncludeRequired, context),\n ]),\n ),\n ...(strict ? { additionalProperties: false } : {}),\n });\n }\n\n if (type._tag === 'DictionaryType') {\n return tracked({\n type: 'object',\n additionalProperties: convertToJsonSchema(\n type.codomain,\n strict,\n alwaysIncludeRequired,\n context,\n ),\n });\n }\n\n if (type._tag === 'PartialType') {\n return tracked({\n type: 'object',\n ...(alwaysIncludeRequired ? { required: Object.keys(type.props) } : {}),\n properties: Object.fromEntries(\n Object.entries(type.props).map(([key, subtype]) => {\n const result = convertToJsonSchema(\n subtype as t.Type<any>,\n strict,\n alwaysIncludeRequired,\n context,\n );\n const transformedResult =\n alwaysIncludeRequired && result.type\n ? trackSchema(\n subtype as object,\n {\n ...result,\n type: [result.type as any, 'null'],\n },\n context,\n )\n : result;\n return [key, transformedResult];\n }),\n ),\n ...(strict ? { additionalProperties: false } : {}),\n });\n }\n\n if (type._tag === 'ArrayType') {\n return tracked({\n type: 'array',\n items: convertToJsonSchema(type.type, strict, alwaysIncludeRequired, context),\n });\n }\n\n if (type._tag === 'TupleType') {\n return tracked({\n type: 'array',\n items: type.types.map((subtype: any) =>\n convertToJsonSchema(subtype, strict, alwaysIncludeRequired, context),\n ),\n });\n }\n\n if (type._tag === 'RefinementType') {\n if (type.name === 'Int') {\n return tracked({ type: 'integer' });\n }\n\n return tracked({\n ...convertToJsonSchema(type.type, strict, alwaysIncludeRequired, context),\n description: `Predicate: ${type.predicate.name || type.name}`,\n });\n }\n\n if (type._tag === 'NoExcessType') {\n const { allOf, ...schema } = convertToJsonSchema(\n type.type,\n strict,\n alwaysIncludeRequired,\n context,\n );\n\n // `noExcess` rejects keys outside the wrapped codec's props. An\n // intersection is merged first because `additionalProperties: false` on\n // each `allOf` member would reject the other members' keys.\n return tracked({\n ...schema,\n ...(allOf ? mergeObjectSchemas(allOf) : {}),\n additionalProperties: false,\n });\n }\n\n return tracked(unhandledType(type as never));\n};\n\n/**\n * Merge the object schemas of intersection members into one object schema.\n *\n * @param schemas - Schema generated for each intersection member\n * @returns Object schema with the combined required keys and properties\n */\nfunction mergeObjectSchemas(schemas: JSONSchema7Definition[]): JSONSchema7 {\n const objects = schemas.filter((schema) => typeof schema === 'object');\n\n return {\n type: 'object',\n required: objects.flatMap((schema) => schema.required ?? []),\n properties: Object.assign({}, ...objects.map((schema) => schema.properties)),\n };\n}\n\n/**\n * Associate a generated schema object with the codec that produced it.\n *\n * @param codec - Source codec\n * @param schema - Generated schema\n * @param context - Shared conversion state\n * @returns The generated schema\n */\nfunction trackSchema(codec: object, schema: JSONSchema7, context: ConversionContext): JSONSchema7 {\n context.schemaCodecs.set(schema, codec);\n return schema;\n}\n\n/**\n * Move schemas produced by reused codec objects into local draft-07\n * definitions.\n *\n * @param schema - Fully generated inline schema\n * @param context - Shared conversion state\n * @returns A smaller equivalent schema when references are beneficial\n */\nfunction addCodecReferences(schema: JSONSchema7, context: ConversionContext): JSONSchema7 {\n const candidates = new Map<object, Map<string, CodecSchemaCandidate>>();\n collectCodecCandidates(schema, context, candidates);\n\n const definitionNames = new WeakMap<JSONSchema7, string>();\n const selectedCandidates = new Map<string, CodecSchemaCandidate>();\n const usedDefinitionNames = new Set<string>();\n\n for (const variants of candidates.values()) {\n for (const candidate of variants.values()) {\n if (candidate.occurrences < 2) {\n continue;\n }\n\n const definitionName = buildDefinitionName(candidate, usedDefinitionNames);\n const reference = { $ref: `#/definitions/${definitionName}` };\n const inlineSize = candidate.serializedSchema.length * candidate.occurrences;\n const referencedSize =\n candidate.serializedSchema.length +\n JSON.stringify(definitionName).length +\n 1 +\n JSON.stringify(reference).length * candidate.occurrences;\n\n if (referencedSize < inlineSize) {\n usedDefinitionNames.add(definitionName);\n selectedCandidates.set(definitionName, candidate);\n candidate.schemas.forEach((candidateSchema) =>\n definitionNames.set(candidateSchema, definitionName),\n );\n }\n }\n }\n\n if (selectedCandidates.size === 0) {\n return schema;\n }\n\n const definitions: Record<string, JSONSchema7> = {};\n const referencedSchema = replaceCodecCandidates(\n schema,\n definitionNames,\n selectedCandidates,\n definitions,\n ) as JSONSchema7;\n const result = inlineUnprofitableDefinitions(referencedSchema, definitions);\n\n return JSON.stringify(result).length < JSON.stringify(schema).length ? result : schema;\n}\n\n/**\n * Collect schema variants by the identity of the codec that produced them.\n *\n * A codec can produce different schemas in different parent contexts, so its\n * serialized schema is a secondary key.\n *\n * @param value - Current generated schema value\n * @param context - Shared conversion state\n * @param candidates - Candidates grouped by codec identity and schema variant\n */\nfunction collectCodecCandidates(\n value: unknown,\n context: ConversionContext,\n candidates: Map<object, Map<string, CodecSchemaCandidate>>,\n): void {\n if (Array.isArray(value)) {\n value.forEach((item) => collectCodecCandidates(item, context, candidates));\n return;\n }\n\n if (!isRecord(value)) {\n return;\n }\n\n const schema = value as JSONSchema7;\n const codec = context.schemaCodecs.get(schema);\n\n if (codec) {\n const serializedSchema = JSON.stringify(schema);\n const variants = candidates.get(codec) ?? new Map<string, CodecSchemaCandidate>();\n const candidate = variants.get(serializedSchema);\n\n if (candidate) {\n candidate.occurrences += 1;\n candidate.schemas.push(schema);\n } else {\n variants.set(serializedSchema, {\n codec,\n occurrences: 1,\n schemas: [schema],\n serializedSchema,\n schema,\n });\n candidates.set(codec, variants);\n }\n }\n\n Object.values(value).forEach((child) => collectCodecCandidates(child, context, candidates));\n}\n\n/**\n * Replace selected codec schemas with references, creating definitions lazily\n * so unused nested candidates are omitted.\n *\n * @param value - Current generated schema value\n * @param definitionNames - Definition name for each selected schema object\n * @param selectedCandidates - Selected candidates indexed by definition name\n * @param definitions - Definitions created while replacing candidates\n * @returns A copy with selected codec schemas replaced\n */\nfunction replaceCodecCandidates(\n value: unknown,\n definitionNames: WeakMap<JSONSchema7, string>,\n selectedCandidates: Map<string, CodecSchemaCandidate>,\n definitions: Record<string, JSONSchema7>,\n): unknown {\n if (Array.isArray(value)) {\n return value.map((item) =>\n replaceCodecCandidates(item, definitionNames, selectedCandidates, definitions),\n );\n }\n\n if (!isRecord(value)) {\n return value;\n }\n\n const definitionName = definitionNames.get(value as JSONSchema7);\n if (definitionName) {\n ensureDefinition(definitionName, definitionNames, selectedCandidates, definitions);\n return { $ref: `#/definitions/${definitionName}` };\n }\n\n return replaceSchemaChildren(value, definitionNames, selectedCandidates, definitions);\n}\n\n/**\n * Create a selected definition and replace any nested selected codecs.\n *\n * @param definitionName - Definition to create\n * @param definitionNames - Definition name for each selected schema object\n * @param selectedCandidates - Selected candidates indexed by definition name\n * @param definitions - Definitions created while replacing candidates\n */\nfunction ensureDefinition(\n definitionName: string,\n definitionNames: WeakMap<JSONSchema7, string>,\n selectedCandidates: Map<string, CodecSchemaCandidate>,\n definitions: Record<string, JSONSchema7>,\n): void {\n if (Object.hasOwn(definitions, definitionName)) {\n return;\n }\n\n definitions[definitionName] = {};\n const candidate = selectedCandidates.get(definitionName)!;\n definitions[definitionName] = replaceSchemaChildren(\n candidate.schema,\n definitionNames,\n selectedCandidates,\n definitions,\n ) as JSONSchema7;\n}\n\n/**\n * Replace selected codecs below a schema object without replacing the object\n * itself.\n *\n * @param schema - Schema whose children should be replaced\n * @param definitionNames - Definition name for each selected schema object\n * @param selectedCandidates - Selected candidates indexed by definition name\n * @param definitions - Definitions created while replacing candidates\n * @returns Schema object with replaced children\n */\nfunction replaceSchemaChildren(\n schema: object,\n definitionNames: WeakMap<JSONSchema7, string>,\n selectedCandidates: Map<string, CodecSchemaCandidate>,\n definitions: Record<string, JSONSchema7>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(schema).map(([key, child]) => [\n key,\n replaceCodecCandidates(child, definitionNames, selectedCandidates, definitions),\n ]),\n );\n}\n\n/**\n * Inline definitions whose remaining references cost at least as much as the\n * repeated schema bodies. This removes nested candidates that became\n * single-use after a parent codec was moved into a definition.\n *\n * @param schema - Root schema without its definitions\n * @param definitions - Generated definitions\n * @returns Schema with only profitable definitions\n */\nfunction inlineUnprofitableDefinitions(\n schema: JSONSchema7,\n definitions: Record<string, JSONSchema7>,\n): JSONSchema7 {\n let result = schema;\n const remainingDefinitions = { ...definitions };\n\n while (true) {\n const referenceCounts = new Map<string, number>();\n countDefinitionReferences(result, referenceCounts);\n Object.values(remainingDefinitions).forEach((definition) =>\n countDefinitionReferences(definition, referenceCounts),\n );\n\n const definitionNames = Object.keys(remainingDefinitions);\n const definitionName =\n definitionNames.find((name) => (referenceCounts.get(name) ?? 0) < 2) ??\n definitionNames.find((name) => {\n const definition = remainingDefinitions[name]!;\n const occurrences = referenceCounts.get(name) ?? 0;\n const referenceSize = JSON.stringify({ $ref: `#/definitions/${name}` }).length;\n const definitionSize = JSON.stringify(definition).length + JSON.stringify(name).length + 1;\n return (\n JSON.stringify(definition).length * occurrences <=\n definitionSize + referenceSize * occurrences\n );\n });\n\n if (!definitionName) {\n break;\n }\n\n const definition = remainingDefinitions[definitionName]!;\n delete remainingDefinitions[definitionName];\n result = replaceDefinitionReference(result, definitionName, definition) as JSONSchema7;\n\n for (const [name, remainingDefinition] of Object.entries(remainingDefinitions)) {\n remainingDefinitions[name] = replaceDefinitionReference(\n remainingDefinition,\n definitionName,\n definition,\n ) as JSONSchema7;\n }\n }\n\n return Object.keys(remainingDefinitions).length > 0\n ? { ...result, definitions: remainingDefinitions }\n : result;\n}\n\n/**\n * Count local references to generated definitions.\n *\n * @param value - Current schema value\n * @param referenceCounts - Counts indexed by definition name\n */\nfunction countDefinitionReferences(value: unknown, referenceCounts: Map<string, number>): void {\n if (Array.isArray(value)) {\n value.forEach((item) => countDefinitionReferences(item, referenceCounts));\n return;\n }\n\n if (!isRecord(value)) {\n return;\n }\n\n if (typeof value.$ref === 'string' && value.$ref.startsWith('#/definitions/')) {\n const definitionName = value.$ref.slice('#/definitions/'.length);\n referenceCounts.set(definitionName, (referenceCounts.get(definitionName) ?? 0) + 1);\n }\n\n Object.values(value).forEach((child) => countDefinitionReferences(child, referenceCounts));\n}\n\n/**\n * Inline every bare reference to one generated definition.\n *\n * @param value - Current schema value\n * @param definitionName - Definition to inline\n * @param definition - Definition body\n * @returns Schema value with matching references replaced\n */\nfunction replaceDefinitionReference(\n value: unknown,\n definitionName: string,\n definition: JSONSchema7,\n): unknown {\n if (Array.isArray(value)) {\n return value.map((item) => replaceDefinitionReference(item, definitionName, definition));\n }\n\n if (!isRecord(value)) {\n return value;\n }\n\n if (Object.keys(value).length === 1 && value.$ref === `#/definitions/${definitionName}`) {\n return definition;\n }\n\n return Object.fromEntries(\n Object.entries(value).map(([key, child]) => [\n key,\n replaceDefinitionReference(child, definitionName, definition),\n ]),\n );\n}\n\n/**\n * Build a stable, JSON Pointer-safe definition name.\n *\n * Explicit simple codec names are preferred. Generated io-ts expression names\n * fall back to a codec tag and content hash.\n *\n * @param candidate - Codec schema being named\n * @param usedDefinitionNames - Definition names already allocated\n * @returns Definition name\n */\nfunction buildDefinitionName(\n candidate: CodecSchemaCandidate,\n usedDefinitionNames: Set<string>,\n): string {\n const metadata = candidate.codec as CodecMetadata;\n const explicitName =\n typeof metadata.name === 'string' && /^[A-Za-z_][A-Za-z0-9_-]*$/u.test(metadata.name)\n ? metadata.name\n : undefined;\n const codecTag =\n typeof metadata._tag === 'string'\n ? metadata._tag.replace(/Type$/u, '').toLowerCase()\n : 'schema';\n const baseName =\n explicitName ?? `${codecTag || 'schema'}-${hashString(candidate.serializedSchema)}`;\n let definitionName = baseName;\n let suffix = 2;\n\n while (usedDefinitionNames.has(definitionName)) {\n definitionName = `${baseName}-${suffix}`;\n suffix += 1;\n }\n\n return definitionName;\n}\n\n/**\n * Produce a compact deterministic hash for a definition name.\n *\n * Hash collisions cannot affect correctness because definition names are\n * checked against their serialized schemas before use.\n *\n * @param value - Value to hash\n * @returns Unsigned base-36 FNV-1a hash\n */\nfunction hashString(value: string): string {\n let hash = 2_166_136_261;\n\n for (let index = 0; index < value.length; index += 1) {\n hash ^= value.charCodeAt(index);\n hash = Math.imul(hash, 16_777_619);\n }\n\n return (hash >>> 0).toString(36);\n}\n\n/**\n * Check whether a value is a non-null object record.\n *\n * @param value - Value to check\n * @returns Whether the value is a record\n */\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nconst unhandledType = (_shouldBeNever: never) => ({});\n","import * as t from 'io-ts';\n\n/**\n * Creates a default value for an `io-ts` codec.\n */\nexport const createDefaultCodec = <C extends t.Mixed>(codec: C): t.TypeOf<C> => {\n if (codec instanceof t.UnionType) {\n const arrayType = codec.types.find((type: any) => type instanceof t.ArrayType);\n if (arrayType) {\n return createDefaultCodec(arrayType);\n }\n\n const objectType = codec.types.find(\n (type: any) =>\n type instanceof t.InterfaceType ||\n type instanceof t.PartialType ||\n type instanceof t.IntersectionType ||\n type instanceof t.ArrayType,\n );\n if (objectType) {\n return createDefaultCodec(objectType);\n }\n\n const hasNull = codec.types.some(\n (type: any) => type instanceof t.NullType || type.name === 'null',\n );\n if (hasNull) {\n return null as t.TypeOf<C>;\n }\n\n return createDefaultCodec(codec.types[0]);\n }\n\n if (codec instanceof t.InterfaceType || codec instanceof t.PartialType) {\n const defaults: Record<string, any> = {};\n Object.entries(codec.props).forEach(([key, type]) => {\n defaults[key] = createDefaultCodec(type as any);\n });\n return defaults as t.TypeOf<C>;\n }\n\n if (codec instanceof t.IntersectionType) {\n return codec.types.reduce(\n (accumulator: t.TypeOf<C>, type: any) => ({\n ...accumulator,\n ...createDefaultCodec(type),\n }),\n {},\n );\n }\n\n if (codec instanceof t.ArrayType) {\n const elementType = codec.type;\n const isObjectType =\n elementType instanceof t.InterfaceType ||\n elementType instanceof t.PartialType ||\n elementType instanceof t.IntersectionType;\n\n return (isObjectType ? [createDefaultCodec(elementType)] : []) as t.TypeOf<C>;\n }\n\n if (codec instanceof t.LiteralType) {\n return codec.value as t.TypeOf<C>;\n }\n\n if (codec instanceof t.ObjectType) {\n return {} as t.TypeOf<C>;\n }\n\n switch (codec.name) {\n case 'string':\n return '' as t.TypeOf<C>;\n case 'number':\n return 0 as t.TypeOf<C>;\n case 'boolean':\n return false as t.TypeOf<C>;\n case 'null':\n return null as t.TypeOf<C>;\n case 'undefined':\n return undefined as t.TypeOf<C>;\n default:\n return null as t.TypeOf<C>;\n }\n};\n","import { makeEnum } from './enum.js';\n\n/**\n * The HTTP method types.\n */\nexport const HttpMethod = {\n /** A GET request. */\n Get: 'GET',\n /** A POST request. */\n Post: 'POST',\n /** A DELETE request. */\n Delete: 'DELETE',\n /** A PUT request. */\n Put: 'PUT',\n /** A PATCH request. */\n Patch: 'PATCH',\n} as const;\n\n/**\n * The HTTP method string union.\n */\nexport type HttpMethod = (typeof HttpMethod)[keyof typeof HttpMethod];\n","import type { ObjByString } from './types.js';\n\n/**\n * `Object.entries` that preserves entry types.\n */\nexport function getEntries<TKey extends keyof TObj, TObj extends ObjByString>(\n obj: TObj,\n): [TKey, TObj[TKey]][] {\n return Object.entries(obj) as any;\n}\n","/**\n * `Object.values` that preserves value types.\n */\nexport function getValues<TValue>(obj: {\n [key in string | number | symbol]: TValue;\n}): TValue[] {\n return Object.values(obj) as TValue[];\n}\n","/**\n * A typed version of lodash's `groupBy`.\n */\nexport function groupBy<TItem, TKey>(\n iterable: TItem[],\n getKey: (item: TItem) => TKey,\n): Map<TKey, TItem[]> {\n return iterable.reduce((groupedItems, item) => {\n const groupedKey = getKey(item);\n return groupedItems.set(groupedKey, [...(groupedItems.get(groupedKey) ?? []), item]);\n }, new Map<TKey, TItem[]>());\n}\n","/**\n * Identify whether a string looks like a GraphQL interface/type/input\n * declaration.\n */\nexport const INTERFACE_REGEX = /(interface|type|input) [a-zA-Z0-9]* (implements .+?|){([\\s\\S]+?)}/;\n\n/**\n * A `gql` is simply a string branded with the associated GraphQL type.\n */\nexport type Gql<TGraphQLType extends object> = string & {\n /** The TypeScript type definition that relates to the gql string. */\n graphQLType: TGraphQLType;\n};\n\n/**\n * Template tag for GraphQL fragments with a small amount of interpolation\n * support for interface bodies.\n */\nexport function gql<TGraphQLType extends object>(\n strings: TemplateStringsArray,\n ...expressions: (string | number)[]\n): Gql<TGraphQLType> {\n if (expressions.length === 0) {\n return strings[0] as Gql<TGraphQLType>;\n }\n\n const count = strings.length - 1;\n let result = '';\n for (let index = 0; index < count; index += 1) {\n const expression = expressions[index]!;\n const text = typeof expression === 'string' ? expression : expression.toString();\n const useExpression = INTERFACE_REGEX.test(text)\n ? (INTERFACE_REGEX.exec(text) || [])[3]\n : expression;\n result += (strings[index] ?? '') + (useExpression ?? '');\n }\n\n result += strings[count] ?? '';\n return result as Gql<TGraphQLType>;\n}\n","import { getEntries } from './getEntries.js';\n\n/**\n * Invert an object so the values look up the keys. Arrays are expanded and map\n * back to arrays of keys.\n */\nexport function invert<TKey extends string, TValue extends string | string[]>(\n obj: { [key in TKey]?: TValue },\n throwOnDuplicate = true,\n): {\n [key in TValue extends (infer Item)[] ? Item : TValue]: TValue extends any[] ? TKey[] : TKey;\n} {\n const result: any = {};\n\n getEntries(obj).forEach(([key, instance]: [TKey, TValue | undefined]) => {\n if (instance === undefined) {\n throw new Error('inverse found undefined value, this is not supported');\n }\n\n if (Array.isArray(instance)) {\n instance.forEach((listKey) => {\n if (!result[listKey]) {\n result[listKey] = [key];\n } else {\n result[listKey].push(key);\n }\n });\n return;\n }\n\n if (result[instance] && throwOnDuplicate) {\n throw new Error(\n `Encountered duplicate value inverting object: \"${instance}: ${key} and ${result[instance]}\"`,\n );\n }\n\n result[instance] = key;\n });\n\n return result;\n}\n\n/**\n * Safely invert an object into `{ [value]: key[] }`.\n */\nexport function invertSafe<TKey extends string, TValue extends string>(obj: {\n [key in TKey]: TValue | TValue[];\n}): {\n [key in TValue]: TKey[];\n} {\n const result: any = {};\n\n getEntries(obj).forEach(([key, instance]) => {\n if (instance === undefined) {\n throw new Error('inverse found undefined value, this is not supported');\n }\n\n if (Array.isArray(instance)) {\n instance.forEach((listKey) => {\n if (!result[listKey]) {\n result[listKey] = [key];\n } else {\n result[listKey].push(key);\n }\n });\n return;\n }\n\n if (!result[instance]) {\n result[instance] = [key];\n return;\n }\n\n result[instance].push(key);\n });\n\n return result;\n}\n","import * as t from 'io-ts';\n\nimport { invert } from './invert.js';\n\n/**\n * Build an `io-ts` codec over the values of an enum-like object.\n *\n * @param enm - Enum-like object\n * @param name - Optional stable codec name\n * @returns Codec accepting the enum values\n */\nexport function valuesOf<TEnum extends string>(\n enm: {\n [key in string]: TEnum;\n },\n name?: string,\n): t.KeyofC<{ [key in TEnum]: unknown }> {\n return t.keyof(invert(enm) as any, name);\n}\n","/**\n * The full match returned when `regex.exec` finds a match.\n */\nexport interface RegExpMatch {\n /** The full regex match. */\n fullMatch: string;\n /** The index in the text where the match was found. */\n matchIndex: number;\n /** Whether the match satisfies an optional stricter regex. */\n isStrict?: boolean;\n}\n\n/**\n * Definition for finding all regex matches and mapping capture groups to keys.\n */\nexport interface FindAllRegExp<TMatchKeys extends string> {\n /** The regex to test. */\n value: RegExp;\n /**\n * A stricter regex used to annotate matches that satisfy a more exact\n * standard.\n */\n strict?: RegExp;\n /** Capture group names mapped by index. */\n matches: readonly TMatchKeys[];\n /** When true, skip validation of matches being the expected length. */\n skipMatchValidation?: boolean;\n}\n\n/**\n * Use a regex with the global flag to find all matches and return the list with\n * capture groups mapped to named properties.\n */\nexport function findAllWithRegex<TMatchKeys extends string>(\n regex: FindAllRegExp<TMatchKeys>,\n text: string,\n): ({ [key in TMatchKeys]: string } & RegExpMatch)[] {\n if (!regex.value.flags.includes('g')) {\n throw new Error('Regex.value must have a g flag');\n }\n\n const matchParams = ['fullMatch', ...regex.matches];\n const results: ({ [key in TMatchKeys]: string } & RegExpMatch)[] = [];\n\n let match = regex.value.exec(text);\n let index = 0;\n\n while (match) {\n if (matchParams.length !== match.length && !regex.skipMatchValidation) {\n throw new Error(\n `Mismatch in match length at index [${index}]: \"${match.length}\" vs expected: \"${matchParams.length}\"`,\n );\n }\n\n const result = match.reduce(\n (accumulator, matchResult, matchIndex) =>\n Object.assign(accumulator, {\n [matchParams[matchIndex] as string]: matchResult,\n }),\n {},\n ) as { [key in TMatchKeys]: string } & RegExpMatch;\n\n result.matchIndex = match.index;\n\n if (regex.strict) {\n result.isStrict = regex.strict.test(result.fullMatch);\n }\n\n results.push(result);\n\n match = regex.value.exec(text);\n index += 1;\n }\n\n return results;\n}\n","/**\n * Aggregates multiple objects into a single object by combining values of\n * matching keys into comma-separated strings.\n */\nexport const aggregateObjects = ({\n objs,\n wrap = false,\n}: {\n /** The objects to aggregate in a single one. */\n objs: any[];\n /** Whether to wrap the concatenated values in `[]`. */\n wrap?: boolean;\n}): any => {\n const allKeys = Array.from(\n new Set(objs.flatMap((obj) => (obj && typeof obj === 'object' ? Object.keys(obj) : []))),\n );\n\n return allKeys.reduce(\n (accumulator, key) => {\n const values = objs\n .map((obj) => (wrap ? `[${obj?.[key] ?? ''}]` : (obj?.[key] ?? '')))\n .join(',');\n accumulator[key] = values;\n return accumulator;\n },\n {} as Record<string, any>,\n );\n};\n","import { aggregateObjects } from './aggregateObjects.js';\n\n/**\n * Flattens a nested object into a single-level object with concatenated key\n * names.\n */\nexport const flattenObject = ({\n obj,\n prefix = '',\n}: {\n /** The object to flatten. */\n obj: any;\n /** The prefix to prepend to keys while recursing. */\n prefix?: string;\n}): any =>\n !obj\n ? {}\n : Object.keys(obj ?? []).reduce(\n (accumulator, key) => {\n const newKey = prefix ? `${prefix}_${key}` : key;\n const entry = obj[key];\n\n if (\n Array.isArray(entry) &&\n entry.length > 0 &&\n entry.some((item) => typeof item === 'object' && item !== null)\n ) {\n const objectEntries = entry.filter((item) => typeof item === 'object' && item !== null);\n const flattenedObjects = objectEntries.map((item) => flattenObject({ obj: item }));\n const aggregated = aggregateObjects({ objs: flattenedObjects });\n Object.entries(aggregated).forEach(([aggregatedKey, value]) => {\n accumulator[`${newKey}_${aggregatedKey}`] = value;\n });\n } else if (typeof entry === 'object' && entry !== null && !Array.isArray(entry)) {\n Object.assign(accumulator, flattenObject({ obj: entry, prefix: newKey }));\n } else {\n accumulator[newKey] = Array.isArray(entry)\n ? entry\n .map((item) => {\n if (typeof item === 'string') {\n return item.replaceAll(',', '');\n }\n\n return item ?? '';\n })\n .join(',')\n : typeof entry === 'string'\n ? entry.replaceAll(',', '')\n : (entry ?? '');\n }\n\n return accumulator;\n },\n {} as Record<string, any>,\n );\n","/**\n * Type representing a transposed array of objects.\n */\ntype TransposedObjectArray<T, K extends keyof T> = {\n [P in K]: Array<T[P]>;\n} & {\n /** Properties not selected for transposition. */\n rest: Array<Omit<T, K>>;\n};\n\n/**\n * Transpose an array of objects by converting selected properties into arrays\n * while keeping the remaining properties grouped in `rest`.\n */\nexport const transposeObjectArray = <T extends object, K extends keyof T>({\n objects,\n properties,\n options = { includeOtherProperties: true },\n}: {\n /** Array of objects to transpose. */\n objects: T[];\n /** Property keys to transpose into arrays. */\n properties: K[];\n /** Options for how to transpose the array. */\n options?: {\n /** Whether to include non-transposed properties in the final result. */\n includeOtherProperties?: boolean;\n };\n}): TransposedObjectArray<T, K> =>\n objects.reduce(\n (accumulator, item) => {\n const result = { ...accumulator } as TransposedObjectArray<T, K>;\n\n properties.forEach((property) => {\n const currentArray = (accumulator[property] || []) as T[K][];\n result[property] = [...currentArray, item[property]] as any;\n });\n\n const restObject = {} as Omit<T, K>;\n Object.entries(item).forEach(([key, value]) => {\n if (!properties.includes(key as K)) {\n (restObject as any)[key] = value;\n }\n });\n\n if (options.includeOtherProperties) {\n result.rest = [...(accumulator.rest || []), restObject];\n }\n\n return result;\n },\n {} as TransposedObjectArray<T, K>,\n );\n","/**\n * `Object.fromEntries` that preserves entry types.\n */\nexport function fromEntries<const TEntries extends ReadonlyArray<readonly [PropertyKey, unknown]>>(\n entries: TEntries,\n): { [K in TEntries[number] as K[0]]: K[1] } {\n return Object.fromEntries(entries) as { [K in TEntries[number] as K[0]]: K[1] };\n}\n","import type { Either, Right } from 'fp-ts/lib/Either.js';\nimport * as either from 'fp-ts/lib/Either.js';\nimport { pipe } from 'fp-ts/lib/function.js';\nimport * as t from 'io-ts';\n\n/**\n * Creates a type guard function that checks if a codec matches a specific tag.\n */\nconst getIsCodec =\n <T extends t.Any>(tag: string) =>\n (codec: t.Any): codec is T =>\n (codec as any)._tag === tag;\n\nconst isInterfaceCodec = getIsCodec<t.InterfaceType<t.Props>>('InterfaceType');\nconst isPartialCodec = getIsCodec<t.PartialType<t.Props>>('PartialType');\n\n/**\n * Extract property definitions from various codec types.\n */\nconst getProps = (codec: t.HasProps): t.Props => {\n switch (codec._tag) {\n case 'RefinementType':\n case 'ReadonlyType':\n return getProps(codec.type);\n case 'InterfaceType':\n case 'StrictType':\n case 'PartialType':\n return codec.props;\n case 'IntersectionType':\n return codec.types.reduce<t.Props>((props, type) => Object.assign(props, getProps(type)), {});\n default:\n return {};\n }\n};\n\n/**\n * Generate a string representation of props for type naming.\n */\nconst getNameFromProps = (props: t.Props): string =>\n Object.keys(props)\n .map((key) => `${key}: ${props[key]!.name}`)\n .join(', ');\n\n/**\n * Wrap a type name with `Partial<>`.\n */\nconst getPartialTypeName = (inner: string): string => `Partial<${inner}>`;\n\n/**\n * Generate a human-readable type name for the no-excess wrapper.\n */\nconst getNoExcessTypeName = (codec: t.Any): string => {\n if (isInterfaceCodec(codec)) {\n return `{| ${getNameFromProps(codec.props)} |}`;\n }\n\n if (isPartialCodec(codec)) {\n return getPartialTypeName(`{| ${getNameFromProps(codec.props)} |}`);\n }\n\n return `Excess<${codec.name}>`;\n};\n\n/**\n * Compare an object's keys against expected properties and return either the\n * object or a list of excess keys.\n */\nconst stripKeys = <T = any>(obj: T, props: t.Props): Either<string[], T> => {\n const keys = Object.getOwnPropertyNames(obj);\n const propKeys = Object.getOwnPropertyNames(props);\n\n propKeys.forEach((propKey) => {\n const index = keys.indexOf(propKey);\n if (index !== -1) {\n keys.splice(index, 1);\n }\n });\n\n return keys.length ? either.left(keys) : either.right(obj);\n};\n\n/**\n * Wrap an `io-ts` codec so validation fails when excess properties are present.\n */\nexport const noExcess = <C extends t.HasProps>(\n codec: C,\n name: string = getNoExcessTypeName(codec),\n): NoExcessType<C> => {\n const props: t.Props = getProps(codec);\n\n return new NoExcessType<C>(\n name,\n (value): value is C => either.isRight(stripKeys(value, props)) && codec.is(value),\n (value, context) => {\n const unknownRecordValidation = t.UnknownRecord.validate(value, context);\n if (either.isLeft(unknownRecordValidation)) {\n return unknownRecordValidation;\n }\n\n const codecValidation = codec.validate(value, context);\n if (either.isLeft(codecValidation)) {\n return codecValidation;\n }\n\n return pipe(\n stripKeys<C>(codecValidation.right, props),\n either.mapLeft((keys) =>\n keys.map((key) => ({\n value: codecValidation.right[key],\n context,\n message: `excess key \"${key}\" found`,\n })),\n ),\n );\n },\n (value) => codec.encode((stripKeys(value, props) as Right<any>).right),\n codec,\n );\n};\n\n/**\n * A wrapper type used with `io-ts` to ensure there are not any excess keys.\n */\nexport class NoExcessType<C extends t.Any, A = C['_A'], O = A, I = unknown> extends t.Type<\n A,\n O,\n I\n> {\n public readonly _tag = 'NoExcessType' as const;\n\n public constructor(\n name: string,\n is: NoExcessType<C, A, O, I>['is'],\n validate: NoExcessType<C, A, O, I>['validate'],\n encode: NoExcessType<C, A, O, I>['encode'],\n public readonly type: C,\n ) {\n super(name, is, validate, encode);\n }\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@transcend-io/type-utils",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"description": "Typed runtime and compile-time utilities for the Transcend developer tools monorepo.",
|
|
5
5
|
"homepage": "https://github.com/transcend-io/tools/tree/main/packages/type-utils",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -31,13 +31,13 @@
|
|
|
31
31
|
"io-ts": "^2.2.21"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@arethetypeswrong/cli": "
|
|
35
|
-
"@types/json-schema": "
|
|
36
|
-
"@types/node": "
|
|
37
|
-
"publint": "
|
|
38
|
-
"tsdown": "
|
|
39
|
-
"typescript": "
|
|
40
|
-
"vitest": "
|
|
34
|
+
"@arethetypeswrong/cli": "0.18.3",
|
|
35
|
+
"@types/json-schema": "7.0.15",
|
|
36
|
+
"@types/node": "24.13.3",
|
|
37
|
+
"publint": "0.3.21",
|
|
38
|
+
"tsdown": "0.21.10",
|
|
39
|
+
"typescript": "6.0.3",
|
|
40
|
+
"vitest": "4.1.11"
|
|
41
41
|
},
|
|
42
42
|
"engines": {
|
|
43
43
|
"node": ">=22.12.0"
|