🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@runlane/utilities

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@runlane/utilities - npm Package Compare versions

Comparing version
0.1.1
to
0.2.0
+1
-6
dist/index.cjs

@@ -200,8 +200,3 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });

}, message);
return zod.unknown().superRefine((signal, context) => {
if (!abortSignalSurfaceSchema.safeParse(signal).success) context.addIssue({
code: "custom",
message
});
}).transform((signal) => signal);
return zod.custom((signal) => abortSignalSurfaceSchema.safeParse(signal).success, message);
}

@@ -208,0 +203,0 @@ /**

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"index.cjs","names":["z","z","z"],"sources":["../src/zod.ts","../src/abort-signal.ts","../src/date.ts","../src/duration.ts","../src/structured-clone.ts"],"sourcesContent":["import * as z from 'zod'\n\ninterface ZodIssueWithCode {\n readonly code: string\n}\n\ntype ZodErrorFactory<TOutput, TError> = (error: z.ZodError<TOutput>) => TError\ntype StandardSchemaPathSegment = PropertyKey | { readonly key: PropertyKey }\n\ninterface StandardSchemaIssueLike {\n readonly message: string\n readonly path?: readonly StandardSchemaPathSegment[]\n}\n\n/**\n * JSON-serializable Standard Schema issue shape suitable for structured error metadata.\n */\ninterface JsonValidationIssueBase {\n readonly [key: string]: readonly string[] | string\n readonly message: string\n}\n\ninterface JsonValidationIssueWithPath extends JsonValidationIssueBase {\n readonly path: readonly string[]\n}\n\nexport type JsonValidationIssue = JsonValidationIssueBase | JsonValidationIssueWithPath\n\n/**\n * Options for parsing untrusted date strings.\n */\nexport interface DateStringSchemaOptions {\n /**\n * Require an ISO 8601 date-time string with a `Z` or numeric offset before converting it to a Date.\n */\n readonly requireIsoDateTime?: boolean\n}\n\n/**\n * Stable message policy for one Zod issue at a public or adapter contract boundary.\n */\nexport interface ZodIssueMessageOptions<TField extends string = string> {\n /** Message returned when no issue is available. */\n readonly fallbackMessage: string\n /**\n * Maximum path depth that may use a configured field message.\n *\n * Deeper issues keep their schema-owned messages, which lets callers say \"queues must be an array\" for a bad top-level\n * queues value while preserving specific nested queue-definition messages such as \"Queue name must not be empty.\"\n */\n readonly fieldMessageMaxPathDepth?: Partial<Record<TField, number>>\n /** Public messages for known top-level fields. */\n readonly fieldMessages?: Partial<Record<TField, string>>\n /** Number of leading path segments already handled by the caller. */\n readonly pathOffset?: number\n /** Message returned for non-custom root failures. */\n readonly rootMessage?: string\n /** Message factory for unsupported strict-object keys. */\n readonly unsupportedKeyMessage?: (key: string) => string\n}\n\nconst isoDateTimeStringSchema = z.iso.datetime({ offset: true })\n\n/**\n * Shared schema for public/query limits that must be positive safe integers.\n */\nexport function createPositiveSafeIntegerSchema(message = 'Expected a positive safe integer.') {\n return z\n .number(message)\n .int(message)\n .min(1, message)\n .refine((value) => Number.isSafeInteger(value), message)\n}\n\n/**\n * Shared schema for public/query limits that must be positive safe integers.\n */\nexport const positiveSafeIntegerSchema = createPositiveSafeIntegerSchema()\n\n/**\n * Builds a schema for object-like surfaces while preserving the original value's identity and prototype.\n */\nexport function createObjectSurfaceSchema<TObject extends object = Record<string, unknown>>(\n message = 'Expected an object.',\n): z.ZodType<TObject> {\n const objectShapeSchema = z.object({}, message)\n\n return z\n .unknown()\n .superRefine((value, context) => {\n const objectResult = objectShapeSchema.safeParse(value)\n\n if (!objectResult.success) {\n context.addIssue({ code: 'custom', message })\n }\n })\n .transform((value) => value as TObject)\n}\n\n/**\n * Shared object-surface validator for untrusted values whose methods/prototype must survive validation.\n */\nexport const objectSurfaceSchema = createObjectSurfaceSchema()\n\n/**\n * Builds a schema that parses URL strings into `URL` instances at untrusted boundaries.\n */\nexport function createUrlSchema(message = 'Expected a valid URL.') {\n return z\n .string()\n .min(1)\n .transform((value, context) => {\n try {\n return new URL(value)\n } catch {\n context.addIssue({ code: 'custom', message })\n\n return z.NEVER\n }\n })\n}\n\n/**\n * Shared URL parser for untrusted string inputs.\n */\nexport const urlSchema = createUrlSchema()\n\n/**\n * Builds a schema that parses date strings into `Date` instances at untrusted boundaries.\n */\nexport function createDateStringSchema(\n message = 'Expected a valid date string.',\n options: DateStringSchemaOptions = {},\n) {\n return z.string().transform((value, context) => {\n if (options.requireIsoDateTime === true && !isoDateTimeStringSchema.safeParse(value).success) {\n context.addIssue({ code: 'custom', message })\n\n return z.NEVER\n }\n\n const date = new Date(value)\n\n if (!Number.isFinite(date.getTime())) {\n context.addIssue({ code: 'custom', message })\n\n return z.NEVER\n }\n\n return date\n })\n}\n\n/**\n * Shared date-string parser for untrusted string inputs.\n */\nexport const dateStringSchema = createDateStringSchema()\n\n/**\n * Builds a Zod validator for function-valued contract surfaces.\n */\nexport function createFunctionSchema<TFunction>(message?: string): z.ZodType<TFunction> {\n return z.custom<TFunction>((value) => typeof value === 'function', message)\n}\n\n/**\n * Parses a Zod boundary and throws the caller's domain error when validation fails.\n *\n * @note `value` is `unknown` because this helper is the shared untrusted-input validation boundary.\n */\nexport function parseZodOrThrow<TOutput>(\n schema: z.ZodType<TOutput>,\n value: unknown,\n toError: ZodErrorFactory<TOutput, Error>,\n): TOutput {\n const parseResult = schema.safeParse(value)\n\n if (!parseResult.success) {\n throw toError(parseResult.error)\n }\n\n return parseResult.data\n}\n\n/**\n * Returns the first unsupported strict-object key from a Zod issue.\n */\nexport function getUnrecognizedKey(issue: ZodIssueWithCode): string | undefined {\n if (issue.code !== 'unrecognized_keys' || !('keys' in issue) || !Array.isArray(issue.keys)) {\n return undefined\n }\n\n return issue.keys.find((key): key is string => typeof key === 'string')\n}\n\n/**\n * Returns the shallowest issue from a Zod issue set so object-level messages win over noisy nested field errors.\n */\nexport function getShallowestZodIssue(issues: readonly z.core.$ZodIssue[]): z.core.$ZodIssue | undefined {\n return issues.reduce<z.core.$ZodIssue | undefined>((selectedIssue, issue) => {\n if (selectedIssue === undefined || issue.path.length < selectedIssue.path.length) {\n return issue\n }\n\n return selectedIssue\n }, undefined)\n}\n\n/**\n * Reads one path segment from a Zod issue without repeating direct `issue.path[index]` access at boundaries.\n */\nexport function getZodIssuePathSegment(issue: z.core.$ZodIssue | undefined, index = 0): PropertyKey | undefined {\n return issue?.path[index]\n}\n\n/**\n * Returns the stable domain message for one Zod issue without repeating switch-based issue translators per boundary.\n */\nexport function getZodIssueMessage<TField extends string = string>(\n issue: z.core.$ZodIssue | undefined,\n options: ZodIssueMessageOptions<TField>,\n): string {\n if (issue === undefined) {\n return options.fallbackMessage\n }\n\n const unsupportedKey = options.unsupportedKeyMessage === undefined ? undefined : getUnrecognizedKey(issue)\n\n if (unsupportedKey !== undefined && options.unsupportedKeyMessage !== undefined) {\n return options.unsupportedKeyMessage(unsupportedKey)\n }\n\n if (issue.code === 'unrecognized_keys') {\n return issue.message\n }\n\n const nestedInvalidKeyMessage = getNestedInvalidKeyMessage(issue)\n\n if (nestedInvalidKeyMessage !== undefined) {\n return nestedInvalidKeyMessage\n }\n\n const pathOffset = options.pathOffset ?? 0\n\n if (issue.code === 'custom') {\n return issue.message\n }\n\n if (issue.path.length <= pathOffset) {\n return options.rootMessage ?? options.fallbackMessage\n }\n\n const configuredFieldMessage = getConfiguredFieldMessage(issue, options, pathOffset)\n\n if (configuredFieldMessage !== undefined) {\n return configuredFieldMessage\n }\n\n return issue.message\n}\n\nfunction getNestedInvalidKeyMessage(issue: z.core.$ZodIssue): string | undefined {\n if (issue.code !== 'invalid_key' || !('issues' in issue) || !Array.isArray(issue.issues)) {\n return undefined\n }\n\n return issue.issues[0]?.message\n}\n\n/**\n * Applies caller-owned field message overrides without swallowing deeper schema-owned messages.\n *\n * This is the replacement for repeated boundary-specific checks like `field === \"queues\" && issue.path.length > 2`.\n */\nfunction getConfiguredFieldMessage<TField extends string>(\n issue: z.core.$ZodIssue,\n options: ZodIssueMessageOptions<TField>,\n pathOffset: number,\n): string | undefined {\n const field = issue.path[pathOffset]\n\n if (\n typeof field !== 'string' ||\n options.fieldMessages === undefined ||\n !Object.hasOwn(options.fieldMessages, field)\n ) {\n return undefined\n }\n\n const maxPathDepth = options.fieldMessageMaxPathDepth?.[field as TField]\n\n if (maxPathDepth !== undefined && issue.path.length - pathOffset > maxPathDepth) {\n return issue.message\n }\n\n return options.fieldMessages[field as TField] ?? issue.message\n}\n\n/**\n * Converts a Standard Schema issue into JSON-serializable structured error metadata.\n *\n * Standard Schema path segments may be raw property keys or wrapper objects with a `key` field. Error metadata must be\n * JSON-safe, so every segment is stringified here instead of leaking symbols or object-shaped path entries.\n */\nexport function toJsonValidationIssue(issue: StandardSchemaIssueLike): JsonValidationIssue {\n const path = issue.path?.map((segment) => String(typeof segment === 'object' ? segment.key : segment))\n\n if (path === undefined || path.length === 0) {\n return { message: issue.message }\n }\n\n return {\n message: issue.message,\n path,\n }\n}\n","import * as z from 'zod'\n\nimport { createFunctionSchema } from './zod.js'\n\n/**\n * Abort controller with disposable external abort wiring.\n */\nexport interface LinkedAbortController {\n /**\n * Child signal exposed to work that should stop when this controller or the upstream signal aborts.\n */\n readonly signal: AbortSignal\n /**\n * Aborts the child signal.\n */\n abort(): void\n /**\n * Removes external abort listeners. Calling this does not abort the child signal.\n */\n dispose(): void\n}\n\ninterface ProcessSignalSource {\n off(signalName: NodeJS.Signals, listener: (signal: NodeJS.Signals) => void): void\n once(signalName: NodeJS.Signals, listener: (signal: NodeJS.Signals) => void): void\n}\n\nconst defaultProcessAbortSignalNames: readonly NodeJS.Signals[] = ['SIGINT', 'SIGTERM']\n\n/**\n * Builds a Zod validator for the AbortSignal surface used by runtime code.\n */\nexport function createAbortSignalSchema(message = 'AbortSignal is invalid.'): z.ZodType<AbortSignal> {\n const abortSignalSurfaceSchema = z.object(\n {\n aborted: z.boolean(message),\n addEventListener: createFunctionSchema<AbortSignal['addEventListener']>(message),\n removeEventListener: createFunctionSchema<AbortSignal['removeEventListener']>(message),\n },\n message,\n )\n\n return z\n .unknown()\n .superRefine((signal, context) => {\n const signalResult = abortSignalSurfaceSchema.safeParse(signal)\n\n if (!signalResult.success) {\n context.addIssue({ code: 'custom', message })\n }\n })\n .transform((signal) => signal as AbortSignal)\n}\n\n/**\n * Default Zod validator for AbortSignal-compatible values.\n */\nexport const abortSignalSchema = createAbortSignalSchema()\n\n/**\n * Creates a child abort controller that aborts when the upstream signal aborts.\n */\nexport function createLinkedAbortController(sourceSignal: AbortSignal | undefined): LinkedAbortController {\n const abortController = new AbortController()\n\n if (sourceSignal === undefined) {\n return {\n abort: () => {\n abortController.abort()\n },\n dispose: () => undefined,\n signal: abortController.signal,\n }\n }\n\n const abortLinkedController = () => {\n abortController.abort()\n }\n\n if (sourceSignal.aborted) {\n abortLinkedController()\n\n return {\n abort: abortLinkedController,\n dispose: () => undefined,\n signal: abortController.signal,\n }\n }\n\n let disposed = false\n\n sourceSignal.addEventListener('abort', abortLinkedController, { once: true })\n\n return {\n abort: abortLinkedController,\n dispose: () => {\n if (disposed) {\n return\n }\n\n disposed = true\n sourceSignal.removeEventListener('abort', abortLinkedController)\n },\n signal: abortController.signal,\n }\n}\n\n/**\n * Creates an abort controller that aborts when the process receives one of the configured signals.\n */\nexport function createProcessSignalAbortController(\n signalSource: ProcessSignalSource,\n signalNames: readonly NodeJS.Signals[] = defaultProcessAbortSignalNames,\n): LinkedAbortController {\n const abortController = createLinkedAbortController(undefined)\n const abortFromProcessSignal = () => {\n abortController.abort()\n }\n\n for (const signalName of signalNames) {\n signalSource.once(signalName, abortFromProcessSignal)\n }\n\n let disposed = false\n\n return {\n abort: () => {\n abortController.abort()\n },\n dispose: () => {\n if (disposed) {\n return\n }\n\n disposed = true\n\n for (const signalName of signalNames) {\n signalSource.off(signalName, abortFromProcessSignal)\n }\n\n abortController.dispose()\n },\n signal: abortController.signal,\n }\n}\n\n/**\n * Resolves after a timeout, or sooner when the signal aborts.\n */\nexport function waitForAbortableTimeout(milliseconds: number, signal: AbortSignal): Promise<void> {\n if (signal.aborted) {\n return Promise.resolve()\n }\n\n return new Promise((resolve) => {\n const finish = () => {\n clearTimeout(timeout)\n signal.removeEventListener('abort', finish)\n resolve()\n }\n\n const timeout = setTimeout(finish, milliseconds)\n signal.addEventListener('abort', finish, { once: true })\n })\n}\n","const dateRangeMessage = 'Calculated date is outside the supported Date range.'\n\nexport interface AddMillisecondsToDateOptions<TError extends Error = RangeError> {\n readonly createRangeError?: (message: string) => TError\n}\n\n/**\n * Returns a fresh `Date` at the Unix epoch.\n *\n * A new instance is returned every time because `Date` objects are mutable.\n */\nexport function createUnixEpochDate(): Date {\n return new Date(0)\n}\n\n/**\n * Returns a new Date offset by a safe integer millisecond count.\n *\n * The input date is never mutated. Invalid dates, unsafe offsets, and dates outside the JavaScript Date range throw\n * the caller-selected range error instead of leaking raw `Invalid Date` values into callers.\n */\nexport function addMillisecondsToDate<TError extends Error = RangeError>(\n date: Date,\n milliseconds: number,\n options: AddMillisecondsToDateOptions<TError> = {},\n): Date {\n const createRangeError = options.createRangeError ?? ((message: string) => new RangeError(message))\n\n if (!Number.isSafeInteger(milliseconds)) {\n throw createRangeError(dateRangeMessage)\n }\n\n const shiftedDate = new Date(date.getTime() + milliseconds)\n\n if (!Number.isSafeInteger(shiftedDate.getTime())) {\n throw createRangeError(dateRangeMessage)\n }\n\n return shiftedDate\n}\n","import ms from 'ms'\nimport * as z from 'zod'\n\n/**\n * Units accepted by human-readable duration strings.\n */\nexport enum DurationUnit {\n Day = 'd',\n Hour = 'h',\n Millisecond = 'ms',\n Minute = 'm',\n Second = 's',\n}\n\n/**\n * Human-readable duration string such as `500ms`, `30s`, `5m`, `2h`, or `7d`.\n */\nexport type DurationString = `${number}${DurationUnit}`\n\nconst durationMessage =\n 'Expected a positive duration string that resolves to whole milliseconds, such as 500ms, 0.5s, 5m, 2h, or 7d.'\n\nconst durationTokenPattern = new RegExp(\n `^(?:(?:0|[1-9]\\\\d*)(?:\\\\.\\\\d+)?|\\\\.\\\\d+)(${Object.values(DurationUnit)\n .sort((leftUnit, rightUnit) => rightUnit.length - leftUnit.length)\n .join('|')})$`,\n)\n\n/**\n * Zod parser for runtime code that needs both the public duration string and executable milliseconds.\n */\nexport const durationSchema = createDurationSchema()\n\n/**\n * Parsed duration value that keeps the public string and the executable millisecond offset together.\n */\nexport type DurationValue = z.infer<typeof durationSchema>\n\n/**\n * Creates a Zod parser for duration strings that resolves both the public string and milliseconds.\n */\nexport function createDurationSchema(message = durationMessage) {\n return z\n .string(message)\n .max(100, message)\n .regex(durationTokenPattern, message)\n .transform((value, context) => {\n const milliseconds = ms(value as ms.StringValue)\n\n if (milliseconds <= 0 || !Number.isSafeInteger(milliseconds)) {\n context.addIssue({ code: 'custom', message })\n\n return z.NEVER\n }\n\n return {\n duration: value as DurationString,\n milliseconds,\n }\n })\n}\n","/**\n * Copies a value with the platform structured clone algorithm.\n *\n * This exists so adapter and runtime boundaries do not scatter direct `structuredClone` calls or invent adapter-specific\n * clone wrappers. The clone policy is still needed because storage adapters must not leak mutable `Date` or object\n * references across storage boundaries, but the policy belongs in one shared utility instead of per-adapter vanity\n * wrappers.\n */\nexport function copyStructuredValue<TValue>(value: TValue): TValue {\n return structuredClone(value)\n}\n"],"mappings":"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"}
{"version":3,"file":"index.cjs","names":["z","z","z"],"sources":["../src/zod.ts","../src/abort-signal.ts","../src/date.ts","../src/duration.ts","../src/structured-clone.ts"],"sourcesContent":["import * as z from 'zod'\n\ninterface ZodIssueWithCode {\n readonly code: string\n}\n\ntype ZodErrorFactory<TOutput, TError> = (error: z.ZodError<TOutput>) => TError\ntype StandardSchemaPathSegment = PropertyKey | { readonly key: PropertyKey }\n\ninterface StandardSchemaIssueLike {\n readonly message: string\n readonly path?: readonly StandardSchemaPathSegment[]\n}\n\n/**\n * JSON-serializable Standard Schema issue shape suitable for structured error metadata.\n */\ninterface JsonValidationIssueBase {\n readonly [key: string]: readonly string[] | string\n readonly message: string\n}\n\ninterface JsonValidationIssueWithPath extends JsonValidationIssueBase {\n readonly path: readonly string[]\n}\n\nexport type JsonValidationIssue = JsonValidationIssueBase | JsonValidationIssueWithPath\n\n/**\n * Options for parsing untrusted date strings.\n */\nexport interface DateStringSchemaOptions {\n /**\n * Require an ISO 8601 date-time string with a `Z` or numeric offset before converting it to a Date.\n */\n readonly requireIsoDateTime?: boolean\n}\n\n/**\n * Stable message policy for one Zod issue at a public or adapter contract boundary.\n */\nexport interface ZodIssueMessageOptions<TField extends string = string> {\n /** Message returned when no issue is available. */\n readonly fallbackMessage: string\n /**\n * Maximum path depth that may use a configured field message.\n *\n * Deeper issues keep their schema-owned messages, which lets callers say \"queues must be an array\" for a bad top-level\n * queues value while preserving specific nested queue-definition messages such as \"Queue name must not be empty.\"\n */\n readonly fieldMessageMaxPathDepth?: Partial<Record<TField, number>>\n /** Public messages for known top-level fields. */\n readonly fieldMessages?: Partial<Record<TField, string>>\n /** Number of leading path segments already handled by the caller. */\n readonly pathOffset?: number\n /** Message returned for non-custom root failures. */\n readonly rootMessage?: string\n /** Message factory for unsupported strict-object keys. */\n readonly unsupportedKeyMessage?: (key: string) => string\n}\n\nconst isoDateTimeStringSchema = z.iso.datetime({ offset: true })\n\n/**\n * Shared schema for public/query limits that must be positive safe integers.\n */\nexport function createPositiveSafeIntegerSchema(message = 'Expected a positive safe integer.') {\n return z\n .number(message)\n .int(message)\n .min(1, message)\n .refine((value) => Number.isSafeInteger(value), message)\n}\n\n/**\n * Shared schema for public/query limits that must be positive safe integers.\n */\nexport const positiveSafeIntegerSchema = createPositiveSafeIntegerSchema()\n\n/**\n * Builds a schema for object-like surfaces while preserving the original value's identity and prototype.\n */\nexport function createObjectSurfaceSchema<TObject extends object = Record<string, unknown>>(\n message = 'Expected an object.',\n): z.ZodType<TObject> {\n const objectShapeSchema = z.object({}, message)\n\n return z\n .unknown()\n .superRefine((value, context) => {\n const objectResult = objectShapeSchema.safeParse(value)\n\n if (!objectResult.success) {\n context.addIssue({ code: 'custom', message })\n }\n })\n .transform((value) => value as TObject)\n}\n\n/**\n * Shared object-surface validator for untrusted values whose methods/prototype must survive validation.\n */\nexport const objectSurfaceSchema = createObjectSurfaceSchema()\n\n/**\n * Builds a schema that parses URL strings into `URL` instances at untrusted boundaries.\n */\nexport function createUrlSchema(message = 'Expected a valid URL.') {\n return z\n .string()\n .min(1)\n .transform((value, context) => {\n try {\n return new URL(value)\n } catch {\n context.addIssue({ code: 'custom', message })\n\n return z.NEVER\n }\n })\n}\n\n/**\n * Shared URL parser for untrusted string inputs.\n */\nexport const urlSchema = createUrlSchema()\n\n/**\n * Builds a schema that parses date strings into `Date` instances at untrusted boundaries.\n */\nexport function createDateStringSchema(\n message = 'Expected a valid date string.',\n options: DateStringSchemaOptions = {},\n) {\n return z.string().transform((value, context) => {\n if (options.requireIsoDateTime === true && !isoDateTimeStringSchema.safeParse(value).success) {\n context.addIssue({ code: 'custom', message })\n\n return z.NEVER\n }\n\n const date = new Date(value)\n\n if (!Number.isFinite(date.getTime())) {\n context.addIssue({ code: 'custom', message })\n\n return z.NEVER\n }\n\n return date\n })\n}\n\n/**\n * Shared date-string parser for untrusted string inputs.\n */\nexport const dateStringSchema = createDateStringSchema()\n\n/**\n * Builds a Zod validator for function-valued contract surfaces.\n */\nexport function createFunctionSchema<TFunction>(message?: string): z.ZodType<TFunction, TFunction> {\n return z.custom<TFunction>((value) => typeof value === 'function', message)\n}\n\n/**\n * Parses a Zod boundary and throws the caller's domain error when validation fails.\n *\n * @note `value` is `unknown` because this helper is the shared untrusted-input validation boundary.\n */\nexport function parseZodOrThrow<TOutput>(\n schema: z.ZodType<TOutput>,\n value: unknown,\n toError: ZodErrorFactory<TOutput, Error>,\n): TOutput {\n const parseResult = schema.safeParse(value)\n\n if (!parseResult.success) {\n throw toError(parseResult.error)\n }\n\n return parseResult.data\n}\n\n/**\n * Returns the first unsupported strict-object key from a Zod issue.\n */\nexport function getUnrecognizedKey(issue: ZodIssueWithCode): string | undefined {\n if (issue.code !== 'unrecognized_keys' || !('keys' in issue) || !Array.isArray(issue.keys)) {\n return undefined\n }\n\n return issue.keys.find((key): key is string => typeof key === 'string')\n}\n\n/**\n * Returns the shallowest issue from a Zod issue set so object-level messages win over noisy nested field errors.\n */\nexport function getShallowestZodIssue(issues: readonly z.core.$ZodIssue[]): z.core.$ZodIssue | undefined {\n return issues.reduce<z.core.$ZodIssue | undefined>((selectedIssue, issue) => {\n if (selectedIssue === undefined || issue.path.length < selectedIssue.path.length) {\n return issue\n }\n\n return selectedIssue\n }, undefined)\n}\n\n/**\n * Reads one path segment from a Zod issue without repeating direct `issue.path[index]` access at boundaries.\n */\nexport function getZodIssuePathSegment(issue: z.core.$ZodIssue | undefined, index = 0): PropertyKey | undefined {\n return issue?.path[index]\n}\n\n/**\n * Returns the stable domain message for one Zod issue without repeating switch-based issue translators per boundary.\n */\nexport function getZodIssueMessage<TField extends string = string>(\n issue: z.core.$ZodIssue | undefined,\n options: ZodIssueMessageOptions<TField>,\n): string {\n if (issue === undefined) {\n return options.fallbackMessage\n }\n\n const unsupportedKey = options.unsupportedKeyMessage === undefined ? undefined : getUnrecognizedKey(issue)\n\n if (unsupportedKey !== undefined && options.unsupportedKeyMessage !== undefined) {\n return options.unsupportedKeyMessage(unsupportedKey)\n }\n\n if (issue.code === 'unrecognized_keys') {\n return issue.message\n }\n\n const nestedInvalidKeyMessage = getNestedInvalidKeyMessage(issue)\n\n if (nestedInvalidKeyMessage !== undefined) {\n return nestedInvalidKeyMessage\n }\n\n const pathOffset = options.pathOffset ?? 0\n\n if (issue.code === 'custom') {\n return issue.message\n }\n\n if (issue.path.length <= pathOffset) {\n return options.rootMessage ?? options.fallbackMessage\n }\n\n const configuredFieldMessage = getConfiguredFieldMessage(issue, options, pathOffset)\n\n if (configuredFieldMessage !== undefined) {\n return configuredFieldMessage\n }\n\n return issue.message\n}\n\nfunction getNestedInvalidKeyMessage(issue: z.core.$ZodIssue): string | undefined {\n if (issue.code !== 'invalid_key' || !('issues' in issue) || !Array.isArray(issue.issues)) {\n return undefined\n }\n\n return issue.issues[0]?.message\n}\n\n/**\n * Applies caller-owned field message overrides without swallowing deeper schema-owned messages.\n *\n * This is the replacement for repeated boundary-specific checks like `field === \"queues\" && issue.path.length > 2`.\n */\nfunction getConfiguredFieldMessage<TField extends string>(\n issue: z.core.$ZodIssue,\n options: ZodIssueMessageOptions<TField>,\n pathOffset: number,\n): string | undefined {\n const field = issue.path[pathOffset]\n\n if (\n typeof field !== 'string' ||\n options.fieldMessages === undefined ||\n !Object.hasOwn(options.fieldMessages, field)\n ) {\n return undefined\n }\n\n const maxPathDepth = options.fieldMessageMaxPathDepth?.[field as TField]\n\n if (maxPathDepth !== undefined && issue.path.length - pathOffset > maxPathDepth) {\n return issue.message\n }\n\n return options.fieldMessages[field as TField] ?? issue.message\n}\n\n/**\n * Converts a Standard Schema issue into JSON-serializable structured error metadata.\n *\n * Standard Schema path segments may be raw property keys or wrapper objects with a `key` field. Error metadata must be\n * JSON-safe, so every segment is stringified here instead of leaking symbols or object-shaped path entries.\n */\nexport function toJsonValidationIssue(issue: StandardSchemaIssueLike): JsonValidationIssue {\n const path = issue.path?.map((segment) => String(typeof segment === 'object' ? segment.key : segment))\n\n if (path === undefined || path.length === 0) {\n return { message: issue.message }\n }\n\n return {\n message: issue.message,\n path,\n }\n}\n","import * as z from 'zod'\n\nimport { createFunctionSchema } from './zod.js'\n\n/**\n * Abort controller with disposable external abort wiring.\n */\nexport interface LinkedAbortController {\n /**\n * Child signal exposed to work that should stop when this controller or the upstream signal aborts.\n */\n readonly signal: AbortSignal\n /**\n * Aborts the child signal.\n */\n abort(): void\n /**\n * Removes external abort listeners. Calling this does not abort the child signal.\n */\n dispose(): void\n}\n\ninterface ProcessSignalSource {\n off(signalName: NodeJS.Signals, listener: (signal: NodeJS.Signals) => void): void\n once(signalName: NodeJS.Signals, listener: (signal: NodeJS.Signals) => void): void\n}\n\nconst defaultProcessAbortSignalNames: readonly NodeJS.Signals[] = ['SIGINT', 'SIGTERM']\n\n/**\n * Builds a Zod validator for the AbortSignal surface used by runtime code.\n */\nexport function createAbortSignalSchema(message = 'AbortSignal is invalid.'): z.ZodType<AbortSignal, AbortSignal> {\n const abortSignalSurfaceSchema = z.object(\n {\n aborted: z.boolean(message),\n addEventListener: createFunctionSchema<AbortSignal['addEventListener']>(message),\n removeEventListener: createFunctionSchema<AbortSignal['removeEventListener']>(message),\n },\n message,\n )\n\n return z.custom<AbortSignal>((signal) => abortSignalSurfaceSchema.safeParse(signal).success, message)\n}\n\n/**\n * Default Zod validator for AbortSignal-compatible values.\n */\nexport const abortSignalSchema = createAbortSignalSchema()\n\n/**\n * Creates a child abort controller that aborts when the upstream signal aborts.\n */\nexport function createLinkedAbortController(sourceSignal: AbortSignal | undefined): LinkedAbortController {\n const abortController = new AbortController()\n\n if (sourceSignal === undefined) {\n return {\n abort: () => {\n abortController.abort()\n },\n dispose: () => undefined,\n signal: abortController.signal,\n }\n }\n\n const abortLinkedController = () => {\n abortController.abort()\n }\n\n if (sourceSignal.aborted) {\n abortLinkedController()\n\n return {\n abort: abortLinkedController,\n dispose: () => undefined,\n signal: abortController.signal,\n }\n }\n\n let disposed = false\n\n sourceSignal.addEventListener('abort', abortLinkedController, { once: true })\n\n return {\n abort: abortLinkedController,\n dispose: () => {\n if (disposed) {\n return\n }\n\n disposed = true\n sourceSignal.removeEventListener('abort', abortLinkedController)\n },\n signal: abortController.signal,\n }\n}\n\n/**\n * Creates an abort controller that aborts when the process receives one of the configured signals.\n */\nexport function createProcessSignalAbortController(\n signalSource: ProcessSignalSource,\n signalNames: readonly NodeJS.Signals[] = defaultProcessAbortSignalNames,\n): LinkedAbortController {\n const abortController = createLinkedAbortController(undefined)\n const abortFromProcessSignal = () => {\n abortController.abort()\n }\n\n for (const signalName of signalNames) {\n signalSource.once(signalName, abortFromProcessSignal)\n }\n\n let disposed = false\n\n return {\n abort: () => {\n abortController.abort()\n },\n dispose: () => {\n if (disposed) {\n return\n }\n\n disposed = true\n\n for (const signalName of signalNames) {\n signalSource.off(signalName, abortFromProcessSignal)\n }\n\n abortController.dispose()\n },\n signal: abortController.signal,\n }\n}\n\n/**\n * Resolves after a timeout, or sooner when the signal aborts.\n */\nexport function waitForAbortableTimeout(milliseconds: number, signal: AbortSignal): Promise<void> {\n if (signal.aborted) {\n return Promise.resolve()\n }\n\n return new Promise((resolve) => {\n const finish = () => {\n clearTimeout(timeout)\n signal.removeEventListener('abort', finish)\n resolve()\n }\n\n const timeout = setTimeout(finish, milliseconds)\n signal.addEventListener('abort', finish, { once: true })\n })\n}\n","const dateRangeMessage = 'Calculated date is outside the supported Date range.'\n\nexport interface AddMillisecondsToDateOptions<TError extends Error = RangeError> {\n readonly createRangeError?: (message: string) => TError\n}\n\n/**\n * Returns a fresh `Date` at the Unix epoch.\n *\n * A new instance is returned every time because `Date` objects are mutable.\n */\nexport function createUnixEpochDate(): Date {\n return new Date(0)\n}\n\n/**\n * Returns a new Date offset by a safe integer millisecond count.\n *\n * The input date is never mutated. Invalid dates, unsafe offsets, and dates outside the JavaScript Date range throw\n * the caller-selected range error instead of leaking raw `Invalid Date` values into callers.\n */\nexport function addMillisecondsToDate<TError extends Error = RangeError>(\n date: Date,\n milliseconds: number,\n options: AddMillisecondsToDateOptions<TError> = {},\n): Date {\n const createRangeError = options.createRangeError ?? ((message: string) => new RangeError(message))\n\n if (!Number.isSafeInteger(milliseconds)) {\n throw createRangeError(dateRangeMessage)\n }\n\n const shiftedDate = new Date(date.getTime() + milliseconds)\n\n if (!Number.isSafeInteger(shiftedDate.getTime())) {\n throw createRangeError(dateRangeMessage)\n }\n\n return shiftedDate\n}\n","import ms from 'ms'\nimport * as z from 'zod'\n\n/**\n * Units accepted by human-readable duration strings.\n */\nexport enum DurationUnit {\n Day = 'd',\n Hour = 'h',\n Millisecond = 'ms',\n Minute = 'm',\n Second = 's',\n}\n\n/**\n * Human-readable duration string such as `500ms`, `30s`, `5m`, `2h`, or `7d`.\n */\nexport type DurationString = `${number}${DurationUnit}`\n\nconst durationMessage =\n 'Expected a positive duration string that resolves to whole milliseconds, such as 500ms, 0.5s, 5m, 2h, or 7d.'\n\nconst durationTokenPattern = new RegExp(\n `^(?:(?:0|[1-9]\\\\d*)(?:\\\\.\\\\d+)?|\\\\.\\\\d+)(${Object.values(DurationUnit)\n .sort((leftUnit, rightUnit) => rightUnit.length - leftUnit.length)\n .join('|')})$`,\n)\n\n/**\n * Zod parser for runtime code that needs both the public duration string and executable milliseconds.\n */\nexport const durationSchema = createDurationSchema()\n\n/**\n * Parsed duration value that keeps the public string and the executable millisecond offset together.\n */\nexport type DurationValue = z.infer<typeof durationSchema>\n\n/**\n * Creates a Zod parser for duration strings that resolves both the public string and milliseconds.\n */\nexport function createDurationSchema(message = durationMessage) {\n return z\n .string(message)\n .max(100, message)\n .regex(durationTokenPattern, message)\n .transform((value, context) => {\n const milliseconds = ms(value as ms.StringValue)\n\n if (milliseconds <= 0 || !Number.isSafeInteger(milliseconds)) {\n context.addIssue({ code: 'custom', message })\n\n return z.NEVER\n }\n\n return {\n duration: value as DurationString,\n milliseconds,\n }\n })\n}\n","/**\n * Copies a value with the platform structured clone algorithm.\n *\n * This exists so adapter and runtime boundaries do not scatter direct `structuredClone` calls or invent adapter-specific\n * clone wrappers. The clone policy is still needed because storage adapters must not leak mutable `Date` or object\n * references across storage boundaries, but the policy belongs in one shared utility instead of per-adapter vanity\n * wrappers.\n */\nexport function copyStructuredValue<TValue>(value: TValue): TValue {\n return structuredClone(value)\n}\n"],"mappings":"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"}

@@ -28,7 +28,7 @@ import * as z from "zod";

*/
declare function createAbortSignalSchema(message?: string): z.ZodType<AbortSignal>;
declare function createAbortSignalSchema(message?: string): z.ZodType<AbortSignal, AbortSignal>;
/**
* Default Zod validator for AbortSignal-compatible values.
*/
declare const abortSignalSchema: z.ZodType<AbortSignal, unknown, z.core.$ZodTypeInternals<AbortSignal, unknown>>;
declare const abortSignalSchema: z.ZodType<AbortSignal, AbortSignal, z.core.$ZodTypeInternals<AbortSignal, AbortSignal>>;
/**

@@ -205,3 +205,3 @@ * Creates a child abort controller that aborts when the upstream signal aborts.

*/
declare function createFunctionSchema<TFunction>(message?: string): z.ZodType<TFunction>;
declare function createFunctionSchema<TFunction>(message?: string): z.ZodType<TFunction, TFunction>;
/**

@@ -208,0 +208,0 @@ * Parses a Zod boundary and throws the caller's domain error when validation fails.

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.cts","names":[],"sources":["../src/abort-signal.ts","../src/async.ts","../src/date.ts","../src/duration.ts","../src/structured-clone.ts","../src/zod.ts"],"mappings":"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"}
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/abort-signal.ts","../src/async.ts","../src/date.ts","../src/duration.ts","../src/structured-clone.ts","../src/zod.ts"],"mappings":"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"}

@@ -28,7 +28,7 @@ import * as z from "zod";

*/
declare function createAbortSignalSchema(message?: string): z.ZodType<AbortSignal>;
declare function createAbortSignalSchema(message?: string): z.ZodType<AbortSignal, AbortSignal>;
/**
* Default Zod validator for AbortSignal-compatible values.
*/
declare const abortSignalSchema: z.ZodType<AbortSignal, unknown, z.core.$ZodTypeInternals<AbortSignal, unknown>>;
declare const abortSignalSchema: z.ZodType<AbortSignal, AbortSignal, z.core.$ZodTypeInternals<AbortSignal, AbortSignal>>;
/**

@@ -205,3 +205,3 @@ * Creates a child abort controller that aborts when the upstream signal aborts.

*/
declare function createFunctionSchema<TFunction>(message?: string): z.ZodType<TFunction>;
declare function createFunctionSchema<TFunction>(message?: string): z.ZodType<TFunction, TFunction>;
/**

@@ -208,0 +208,0 @@ * Parses a Zod boundary and throws the caller's domain error when validation fails.

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.mts","names":[],"sources":["../src/abort-signal.ts","../src/async.ts","../src/date.ts","../src/duration.ts","../src/structured-clone.ts","../src/zod.ts"],"mappings":"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"}
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/abort-signal.ts","../src/async.ts","../src/date.ts","../src/duration.ts","../src/structured-clone.ts","../src/zod.ts"],"mappings":"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"}

@@ -175,8 +175,3 @@ import * as z from "zod";

}, message);
return z.unknown().superRefine((signal, context) => {
if (!abortSignalSurfaceSchema.safeParse(signal).success) context.addIssue({
code: "custom",
message
});
}).transform((signal) => signal);
return z.custom((signal) => abortSignalSurfaceSchema.safeParse(signal).success, message);
}

@@ -183,0 +178,0 @@ /**

@@ -1,1 +0,1 @@

{"version":3,"file":"index.mjs","names":[],"sources":["../src/zod.ts","../src/abort-signal.ts","../src/date.ts","../src/duration.ts","../src/structured-clone.ts"],"sourcesContent":["import * as z from 'zod'\n\ninterface ZodIssueWithCode {\n readonly code: string\n}\n\ntype ZodErrorFactory<TOutput, TError> = (error: z.ZodError<TOutput>) => TError\ntype StandardSchemaPathSegment = PropertyKey | { readonly key: PropertyKey }\n\ninterface StandardSchemaIssueLike {\n readonly message: string\n readonly path?: readonly StandardSchemaPathSegment[]\n}\n\n/**\n * JSON-serializable Standard Schema issue shape suitable for structured error metadata.\n */\ninterface JsonValidationIssueBase {\n readonly [key: string]: readonly string[] | string\n readonly message: string\n}\n\ninterface JsonValidationIssueWithPath extends JsonValidationIssueBase {\n readonly path: readonly string[]\n}\n\nexport type JsonValidationIssue = JsonValidationIssueBase | JsonValidationIssueWithPath\n\n/**\n * Options for parsing untrusted date strings.\n */\nexport interface DateStringSchemaOptions {\n /**\n * Require an ISO 8601 date-time string with a `Z` or numeric offset before converting it to a Date.\n */\n readonly requireIsoDateTime?: boolean\n}\n\n/**\n * Stable message policy for one Zod issue at a public or adapter contract boundary.\n */\nexport interface ZodIssueMessageOptions<TField extends string = string> {\n /** Message returned when no issue is available. */\n readonly fallbackMessage: string\n /**\n * Maximum path depth that may use a configured field message.\n *\n * Deeper issues keep their schema-owned messages, which lets callers say \"queues must be an array\" for a bad top-level\n * queues value while preserving specific nested queue-definition messages such as \"Queue name must not be empty.\"\n */\n readonly fieldMessageMaxPathDepth?: Partial<Record<TField, number>>\n /** Public messages for known top-level fields. */\n readonly fieldMessages?: Partial<Record<TField, string>>\n /** Number of leading path segments already handled by the caller. */\n readonly pathOffset?: number\n /** Message returned for non-custom root failures. */\n readonly rootMessage?: string\n /** Message factory for unsupported strict-object keys. */\n readonly unsupportedKeyMessage?: (key: string) => string\n}\n\nconst isoDateTimeStringSchema = z.iso.datetime({ offset: true })\n\n/**\n * Shared schema for public/query limits that must be positive safe integers.\n */\nexport function createPositiveSafeIntegerSchema(message = 'Expected a positive safe integer.') {\n return z\n .number(message)\n .int(message)\n .min(1, message)\n .refine((value) => Number.isSafeInteger(value), message)\n}\n\n/**\n * Shared schema for public/query limits that must be positive safe integers.\n */\nexport const positiveSafeIntegerSchema = createPositiveSafeIntegerSchema()\n\n/**\n * Builds a schema for object-like surfaces while preserving the original value's identity and prototype.\n */\nexport function createObjectSurfaceSchema<TObject extends object = Record<string, unknown>>(\n message = 'Expected an object.',\n): z.ZodType<TObject> {\n const objectShapeSchema = z.object({}, message)\n\n return z\n .unknown()\n .superRefine((value, context) => {\n const objectResult = objectShapeSchema.safeParse(value)\n\n if (!objectResult.success) {\n context.addIssue({ code: 'custom', message })\n }\n })\n .transform((value) => value as TObject)\n}\n\n/**\n * Shared object-surface validator for untrusted values whose methods/prototype must survive validation.\n */\nexport const objectSurfaceSchema = createObjectSurfaceSchema()\n\n/**\n * Builds a schema that parses URL strings into `URL` instances at untrusted boundaries.\n */\nexport function createUrlSchema(message = 'Expected a valid URL.') {\n return z\n .string()\n .min(1)\n .transform((value, context) => {\n try {\n return new URL(value)\n } catch {\n context.addIssue({ code: 'custom', message })\n\n return z.NEVER\n }\n })\n}\n\n/**\n * Shared URL parser for untrusted string inputs.\n */\nexport const urlSchema = createUrlSchema()\n\n/**\n * Builds a schema that parses date strings into `Date` instances at untrusted boundaries.\n */\nexport function createDateStringSchema(\n message = 'Expected a valid date string.',\n options: DateStringSchemaOptions = {},\n) {\n return z.string().transform((value, context) => {\n if (options.requireIsoDateTime === true && !isoDateTimeStringSchema.safeParse(value).success) {\n context.addIssue({ code: 'custom', message })\n\n return z.NEVER\n }\n\n const date = new Date(value)\n\n if (!Number.isFinite(date.getTime())) {\n context.addIssue({ code: 'custom', message })\n\n return z.NEVER\n }\n\n return date\n })\n}\n\n/**\n * Shared date-string parser for untrusted string inputs.\n */\nexport const dateStringSchema = createDateStringSchema()\n\n/**\n * Builds a Zod validator for function-valued contract surfaces.\n */\nexport function createFunctionSchema<TFunction>(message?: string): z.ZodType<TFunction> {\n return z.custom<TFunction>((value) => typeof value === 'function', message)\n}\n\n/**\n * Parses a Zod boundary and throws the caller's domain error when validation fails.\n *\n * @note `value` is `unknown` because this helper is the shared untrusted-input validation boundary.\n */\nexport function parseZodOrThrow<TOutput>(\n schema: z.ZodType<TOutput>,\n value: unknown,\n toError: ZodErrorFactory<TOutput, Error>,\n): TOutput {\n const parseResult = schema.safeParse(value)\n\n if (!parseResult.success) {\n throw toError(parseResult.error)\n }\n\n return parseResult.data\n}\n\n/**\n * Returns the first unsupported strict-object key from a Zod issue.\n */\nexport function getUnrecognizedKey(issue: ZodIssueWithCode): string | undefined {\n if (issue.code !== 'unrecognized_keys' || !('keys' in issue) || !Array.isArray(issue.keys)) {\n return undefined\n }\n\n return issue.keys.find((key): key is string => typeof key === 'string')\n}\n\n/**\n * Returns the shallowest issue from a Zod issue set so object-level messages win over noisy nested field errors.\n */\nexport function getShallowestZodIssue(issues: readonly z.core.$ZodIssue[]): z.core.$ZodIssue | undefined {\n return issues.reduce<z.core.$ZodIssue | undefined>((selectedIssue, issue) => {\n if (selectedIssue === undefined || issue.path.length < selectedIssue.path.length) {\n return issue\n }\n\n return selectedIssue\n }, undefined)\n}\n\n/**\n * Reads one path segment from a Zod issue without repeating direct `issue.path[index]` access at boundaries.\n */\nexport function getZodIssuePathSegment(issue: z.core.$ZodIssue | undefined, index = 0): PropertyKey | undefined {\n return issue?.path[index]\n}\n\n/**\n * Returns the stable domain message for one Zod issue without repeating switch-based issue translators per boundary.\n */\nexport function getZodIssueMessage<TField extends string = string>(\n issue: z.core.$ZodIssue | undefined,\n options: ZodIssueMessageOptions<TField>,\n): string {\n if (issue === undefined) {\n return options.fallbackMessage\n }\n\n const unsupportedKey = options.unsupportedKeyMessage === undefined ? undefined : getUnrecognizedKey(issue)\n\n if (unsupportedKey !== undefined && options.unsupportedKeyMessage !== undefined) {\n return options.unsupportedKeyMessage(unsupportedKey)\n }\n\n if (issue.code === 'unrecognized_keys') {\n return issue.message\n }\n\n const nestedInvalidKeyMessage = getNestedInvalidKeyMessage(issue)\n\n if (nestedInvalidKeyMessage !== undefined) {\n return nestedInvalidKeyMessage\n }\n\n const pathOffset = options.pathOffset ?? 0\n\n if (issue.code === 'custom') {\n return issue.message\n }\n\n if (issue.path.length <= pathOffset) {\n return options.rootMessage ?? options.fallbackMessage\n }\n\n const configuredFieldMessage = getConfiguredFieldMessage(issue, options, pathOffset)\n\n if (configuredFieldMessage !== undefined) {\n return configuredFieldMessage\n }\n\n return issue.message\n}\n\nfunction getNestedInvalidKeyMessage(issue: z.core.$ZodIssue): string | undefined {\n if (issue.code !== 'invalid_key' || !('issues' in issue) || !Array.isArray(issue.issues)) {\n return undefined\n }\n\n return issue.issues[0]?.message\n}\n\n/**\n * Applies caller-owned field message overrides without swallowing deeper schema-owned messages.\n *\n * This is the replacement for repeated boundary-specific checks like `field === \"queues\" && issue.path.length > 2`.\n */\nfunction getConfiguredFieldMessage<TField extends string>(\n issue: z.core.$ZodIssue,\n options: ZodIssueMessageOptions<TField>,\n pathOffset: number,\n): string | undefined {\n const field = issue.path[pathOffset]\n\n if (\n typeof field !== 'string' ||\n options.fieldMessages === undefined ||\n !Object.hasOwn(options.fieldMessages, field)\n ) {\n return undefined\n }\n\n const maxPathDepth = options.fieldMessageMaxPathDepth?.[field as TField]\n\n if (maxPathDepth !== undefined && issue.path.length - pathOffset > maxPathDepth) {\n return issue.message\n }\n\n return options.fieldMessages[field as TField] ?? issue.message\n}\n\n/**\n * Converts a Standard Schema issue into JSON-serializable structured error metadata.\n *\n * Standard Schema path segments may be raw property keys or wrapper objects with a `key` field. Error metadata must be\n * JSON-safe, so every segment is stringified here instead of leaking symbols or object-shaped path entries.\n */\nexport function toJsonValidationIssue(issue: StandardSchemaIssueLike): JsonValidationIssue {\n const path = issue.path?.map((segment) => String(typeof segment === 'object' ? segment.key : segment))\n\n if (path === undefined || path.length === 0) {\n return { message: issue.message }\n }\n\n return {\n message: issue.message,\n path,\n }\n}\n","import * as z from 'zod'\n\nimport { createFunctionSchema } from './zod.js'\n\n/**\n * Abort controller with disposable external abort wiring.\n */\nexport interface LinkedAbortController {\n /**\n * Child signal exposed to work that should stop when this controller or the upstream signal aborts.\n */\n readonly signal: AbortSignal\n /**\n * Aborts the child signal.\n */\n abort(): void\n /**\n * Removes external abort listeners. Calling this does not abort the child signal.\n */\n dispose(): void\n}\n\ninterface ProcessSignalSource {\n off(signalName: NodeJS.Signals, listener: (signal: NodeJS.Signals) => void): void\n once(signalName: NodeJS.Signals, listener: (signal: NodeJS.Signals) => void): void\n}\n\nconst defaultProcessAbortSignalNames: readonly NodeJS.Signals[] = ['SIGINT', 'SIGTERM']\n\n/**\n * Builds a Zod validator for the AbortSignal surface used by runtime code.\n */\nexport function createAbortSignalSchema(message = 'AbortSignal is invalid.'): z.ZodType<AbortSignal> {\n const abortSignalSurfaceSchema = z.object(\n {\n aborted: z.boolean(message),\n addEventListener: createFunctionSchema<AbortSignal['addEventListener']>(message),\n removeEventListener: createFunctionSchema<AbortSignal['removeEventListener']>(message),\n },\n message,\n )\n\n return z\n .unknown()\n .superRefine((signal, context) => {\n const signalResult = abortSignalSurfaceSchema.safeParse(signal)\n\n if (!signalResult.success) {\n context.addIssue({ code: 'custom', message })\n }\n })\n .transform((signal) => signal as AbortSignal)\n}\n\n/**\n * Default Zod validator for AbortSignal-compatible values.\n */\nexport const abortSignalSchema = createAbortSignalSchema()\n\n/**\n * Creates a child abort controller that aborts when the upstream signal aborts.\n */\nexport function createLinkedAbortController(sourceSignal: AbortSignal | undefined): LinkedAbortController {\n const abortController = new AbortController()\n\n if (sourceSignal === undefined) {\n return {\n abort: () => {\n abortController.abort()\n },\n dispose: () => undefined,\n signal: abortController.signal,\n }\n }\n\n const abortLinkedController = () => {\n abortController.abort()\n }\n\n if (sourceSignal.aborted) {\n abortLinkedController()\n\n return {\n abort: abortLinkedController,\n dispose: () => undefined,\n signal: abortController.signal,\n }\n }\n\n let disposed = false\n\n sourceSignal.addEventListener('abort', abortLinkedController, { once: true })\n\n return {\n abort: abortLinkedController,\n dispose: () => {\n if (disposed) {\n return\n }\n\n disposed = true\n sourceSignal.removeEventListener('abort', abortLinkedController)\n },\n signal: abortController.signal,\n }\n}\n\n/**\n * Creates an abort controller that aborts when the process receives one of the configured signals.\n */\nexport function createProcessSignalAbortController(\n signalSource: ProcessSignalSource,\n signalNames: readonly NodeJS.Signals[] = defaultProcessAbortSignalNames,\n): LinkedAbortController {\n const abortController = createLinkedAbortController(undefined)\n const abortFromProcessSignal = () => {\n abortController.abort()\n }\n\n for (const signalName of signalNames) {\n signalSource.once(signalName, abortFromProcessSignal)\n }\n\n let disposed = false\n\n return {\n abort: () => {\n abortController.abort()\n },\n dispose: () => {\n if (disposed) {\n return\n }\n\n disposed = true\n\n for (const signalName of signalNames) {\n signalSource.off(signalName, abortFromProcessSignal)\n }\n\n abortController.dispose()\n },\n signal: abortController.signal,\n }\n}\n\n/**\n * Resolves after a timeout, or sooner when the signal aborts.\n */\nexport function waitForAbortableTimeout(milliseconds: number, signal: AbortSignal): Promise<void> {\n if (signal.aborted) {\n return Promise.resolve()\n }\n\n return new Promise((resolve) => {\n const finish = () => {\n clearTimeout(timeout)\n signal.removeEventListener('abort', finish)\n resolve()\n }\n\n const timeout = setTimeout(finish, milliseconds)\n signal.addEventListener('abort', finish, { once: true })\n })\n}\n","const dateRangeMessage = 'Calculated date is outside the supported Date range.'\n\nexport interface AddMillisecondsToDateOptions<TError extends Error = RangeError> {\n readonly createRangeError?: (message: string) => TError\n}\n\n/**\n * Returns a fresh `Date` at the Unix epoch.\n *\n * A new instance is returned every time because `Date` objects are mutable.\n */\nexport function createUnixEpochDate(): Date {\n return new Date(0)\n}\n\n/**\n * Returns a new Date offset by a safe integer millisecond count.\n *\n * The input date is never mutated. Invalid dates, unsafe offsets, and dates outside the JavaScript Date range throw\n * the caller-selected range error instead of leaking raw `Invalid Date` values into callers.\n */\nexport function addMillisecondsToDate<TError extends Error = RangeError>(\n date: Date,\n milliseconds: number,\n options: AddMillisecondsToDateOptions<TError> = {},\n): Date {\n const createRangeError = options.createRangeError ?? ((message: string) => new RangeError(message))\n\n if (!Number.isSafeInteger(milliseconds)) {\n throw createRangeError(dateRangeMessage)\n }\n\n const shiftedDate = new Date(date.getTime() + milliseconds)\n\n if (!Number.isSafeInteger(shiftedDate.getTime())) {\n throw createRangeError(dateRangeMessage)\n }\n\n return shiftedDate\n}\n","import ms from 'ms'\nimport * as z from 'zod'\n\n/**\n * Units accepted by human-readable duration strings.\n */\nexport enum DurationUnit {\n Day = 'd',\n Hour = 'h',\n Millisecond = 'ms',\n Minute = 'm',\n Second = 's',\n}\n\n/**\n * Human-readable duration string such as `500ms`, `30s`, `5m`, `2h`, or `7d`.\n */\nexport type DurationString = `${number}${DurationUnit}`\n\nconst durationMessage =\n 'Expected a positive duration string that resolves to whole milliseconds, such as 500ms, 0.5s, 5m, 2h, or 7d.'\n\nconst durationTokenPattern = new RegExp(\n `^(?:(?:0|[1-9]\\\\d*)(?:\\\\.\\\\d+)?|\\\\.\\\\d+)(${Object.values(DurationUnit)\n .sort((leftUnit, rightUnit) => rightUnit.length - leftUnit.length)\n .join('|')})$`,\n)\n\n/**\n * Zod parser for runtime code that needs both the public duration string and executable milliseconds.\n */\nexport const durationSchema = createDurationSchema()\n\n/**\n * Parsed duration value that keeps the public string and the executable millisecond offset together.\n */\nexport type DurationValue = z.infer<typeof durationSchema>\n\n/**\n * Creates a Zod parser for duration strings that resolves both the public string and milliseconds.\n */\nexport function createDurationSchema(message = durationMessage) {\n return z\n .string(message)\n .max(100, message)\n .regex(durationTokenPattern, message)\n .transform((value, context) => {\n const milliseconds = ms(value as ms.StringValue)\n\n if (milliseconds <= 0 || !Number.isSafeInteger(milliseconds)) {\n context.addIssue({ code: 'custom', message })\n\n return z.NEVER\n }\n\n return {\n duration: value as DurationString,\n milliseconds,\n }\n })\n}\n","/**\n * Copies a value with the platform structured clone algorithm.\n *\n * This exists so adapter and runtime boundaries do not scatter direct `structuredClone` calls or invent adapter-specific\n * clone wrappers. The clone policy is still needed because storage adapters must not leak mutable `Date` or object\n * references across storage boundaries, but the policy belongs in one shared utility instead of per-adapter vanity\n * wrappers.\n */\nexport function copyStructuredValue<TValue>(value: TValue): TValue {\n return structuredClone(value)\n}\n"],"mappings":"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"}
{"version":3,"file":"index.mjs","names":[],"sources":["../src/zod.ts","../src/abort-signal.ts","../src/date.ts","../src/duration.ts","../src/structured-clone.ts"],"sourcesContent":["import * as z from 'zod'\n\ninterface ZodIssueWithCode {\n readonly code: string\n}\n\ntype ZodErrorFactory<TOutput, TError> = (error: z.ZodError<TOutput>) => TError\ntype StandardSchemaPathSegment = PropertyKey | { readonly key: PropertyKey }\n\ninterface StandardSchemaIssueLike {\n readonly message: string\n readonly path?: readonly StandardSchemaPathSegment[]\n}\n\n/**\n * JSON-serializable Standard Schema issue shape suitable for structured error metadata.\n */\ninterface JsonValidationIssueBase {\n readonly [key: string]: readonly string[] | string\n readonly message: string\n}\n\ninterface JsonValidationIssueWithPath extends JsonValidationIssueBase {\n readonly path: readonly string[]\n}\n\nexport type JsonValidationIssue = JsonValidationIssueBase | JsonValidationIssueWithPath\n\n/**\n * Options for parsing untrusted date strings.\n */\nexport interface DateStringSchemaOptions {\n /**\n * Require an ISO 8601 date-time string with a `Z` or numeric offset before converting it to a Date.\n */\n readonly requireIsoDateTime?: boolean\n}\n\n/**\n * Stable message policy for one Zod issue at a public or adapter contract boundary.\n */\nexport interface ZodIssueMessageOptions<TField extends string = string> {\n /** Message returned when no issue is available. */\n readonly fallbackMessage: string\n /**\n * Maximum path depth that may use a configured field message.\n *\n * Deeper issues keep their schema-owned messages, which lets callers say \"queues must be an array\" for a bad top-level\n * queues value while preserving specific nested queue-definition messages such as \"Queue name must not be empty.\"\n */\n readonly fieldMessageMaxPathDepth?: Partial<Record<TField, number>>\n /** Public messages for known top-level fields. */\n readonly fieldMessages?: Partial<Record<TField, string>>\n /** Number of leading path segments already handled by the caller. */\n readonly pathOffset?: number\n /** Message returned for non-custom root failures. */\n readonly rootMessage?: string\n /** Message factory for unsupported strict-object keys. */\n readonly unsupportedKeyMessage?: (key: string) => string\n}\n\nconst isoDateTimeStringSchema = z.iso.datetime({ offset: true })\n\n/**\n * Shared schema for public/query limits that must be positive safe integers.\n */\nexport function createPositiveSafeIntegerSchema(message = 'Expected a positive safe integer.') {\n return z\n .number(message)\n .int(message)\n .min(1, message)\n .refine((value) => Number.isSafeInteger(value), message)\n}\n\n/**\n * Shared schema for public/query limits that must be positive safe integers.\n */\nexport const positiveSafeIntegerSchema = createPositiveSafeIntegerSchema()\n\n/**\n * Builds a schema for object-like surfaces while preserving the original value's identity and prototype.\n */\nexport function createObjectSurfaceSchema<TObject extends object = Record<string, unknown>>(\n message = 'Expected an object.',\n): z.ZodType<TObject> {\n const objectShapeSchema = z.object({}, message)\n\n return z\n .unknown()\n .superRefine((value, context) => {\n const objectResult = objectShapeSchema.safeParse(value)\n\n if (!objectResult.success) {\n context.addIssue({ code: 'custom', message })\n }\n })\n .transform((value) => value as TObject)\n}\n\n/**\n * Shared object-surface validator for untrusted values whose methods/prototype must survive validation.\n */\nexport const objectSurfaceSchema = createObjectSurfaceSchema()\n\n/**\n * Builds a schema that parses URL strings into `URL` instances at untrusted boundaries.\n */\nexport function createUrlSchema(message = 'Expected a valid URL.') {\n return z\n .string()\n .min(1)\n .transform((value, context) => {\n try {\n return new URL(value)\n } catch {\n context.addIssue({ code: 'custom', message })\n\n return z.NEVER\n }\n })\n}\n\n/**\n * Shared URL parser for untrusted string inputs.\n */\nexport const urlSchema = createUrlSchema()\n\n/**\n * Builds a schema that parses date strings into `Date` instances at untrusted boundaries.\n */\nexport function createDateStringSchema(\n message = 'Expected a valid date string.',\n options: DateStringSchemaOptions = {},\n) {\n return z.string().transform((value, context) => {\n if (options.requireIsoDateTime === true && !isoDateTimeStringSchema.safeParse(value).success) {\n context.addIssue({ code: 'custom', message })\n\n return z.NEVER\n }\n\n const date = new Date(value)\n\n if (!Number.isFinite(date.getTime())) {\n context.addIssue({ code: 'custom', message })\n\n return z.NEVER\n }\n\n return date\n })\n}\n\n/**\n * Shared date-string parser for untrusted string inputs.\n */\nexport const dateStringSchema = createDateStringSchema()\n\n/**\n * Builds a Zod validator for function-valued contract surfaces.\n */\nexport function createFunctionSchema<TFunction>(message?: string): z.ZodType<TFunction, TFunction> {\n return z.custom<TFunction>((value) => typeof value === 'function', message)\n}\n\n/**\n * Parses a Zod boundary and throws the caller's domain error when validation fails.\n *\n * @note `value` is `unknown` because this helper is the shared untrusted-input validation boundary.\n */\nexport function parseZodOrThrow<TOutput>(\n schema: z.ZodType<TOutput>,\n value: unknown,\n toError: ZodErrorFactory<TOutput, Error>,\n): TOutput {\n const parseResult = schema.safeParse(value)\n\n if (!parseResult.success) {\n throw toError(parseResult.error)\n }\n\n return parseResult.data\n}\n\n/**\n * Returns the first unsupported strict-object key from a Zod issue.\n */\nexport function getUnrecognizedKey(issue: ZodIssueWithCode): string | undefined {\n if (issue.code !== 'unrecognized_keys' || !('keys' in issue) || !Array.isArray(issue.keys)) {\n return undefined\n }\n\n return issue.keys.find((key): key is string => typeof key === 'string')\n}\n\n/**\n * Returns the shallowest issue from a Zod issue set so object-level messages win over noisy nested field errors.\n */\nexport function getShallowestZodIssue(issues: readonly z.core.$ZodIssue[]): z.core.$ZodIssue | undefined {\n return issues.reduce<z.core.$ZodIssue | undefined>((selectedIssue, issue) => {\n if (selectedIssue === undefined || issue.path.length < selectedIssue.path.length) {\n return issue\n }\n\n return selectedIssue\n }, undefined)\n}\n\n/**\n * Reads one path segment from a Zod issue without repeating direct `issue.path[index]` access at boundaries.\n */\nexport function getZodIssuePathSegment(issue: z.core.$ZodIssue | undefined, index = 0): PropertyKey | undefined {\n return issue?.path[index]\n}\n\n/**\n * Returns the stable domain message for one Zod issue without repeating switch-based issue translators per boundary.\n */\nexport function getZodIssueMessage<TField extends string = string>(\n issue: z.core.$ZodIssue | undefined,\n options: ZodIssueMessageOptions<TField>,\n): string {\n if (issue === undefined) {\n return options.fallbackMessage\n }\n\n const unsupportedKey = options.unsupportedKeyMessage === undefined ? undefined : getUnrecognizedKey(issue)\n\n if (unsupportedKey !== undefined && options.unsupportedKeyMessage !== undefined) {\n return options.unsupportedKeyMessage(unsupportedKey)\n }\n\n if (issue.code === 'unrecognized_keys') {\n return issue.message\n }\n\n const nestedInvalidKeyMessage = getNestedInvalidKeyMessage(issue)\n\n if (nestedInvalidKeyMessage !== undefined) {\n return nestedInvalidKeyMessage\n }\n\n const pathOffset = options.pathOffset ?? 0\n\n if (issue.code === 'custom') {\n return issue.message\n }\n\n if (issue.path.length <= pathOffset) {\n return options.rootMessage ?? options.fallbackMessage\n }\n\n const configuredFieldMessage = getConfiguredFieldMessage(issue, options, pathOffset)\n\n if (configuredFieldMessage !== undefined) {\n return configuredFieldMessage\n }\n\n return issue.message\n}\n\nfunction getNestedInvalidKeyMessage(issue: z.core.$ZodIssue): string | undefined {\n if (issue.code !== 'invalid_key' || !('issues' in issue) || !Array.isArray(issue.issues)) {\n return undefined\n }\n\n return issue.issues[0]?.message\n}\n\n/**\n * Applies caller-owned field message overrides without swallowing deeper schema-owned messages.\n *\n * This is the replacement for repeated boundary-specific checks like `field === \"queues\" && issue.path.length > 2`.\n */\nfunction getConfiguredFieldMessage<TField extends string>(\n issue: z.core.$ZodIssue,\n options: ZodIssueMessageOptions<TField>,\n pathOffset: number,\n): string | undefined {\n const field = issue.path[pathOffset]\n\n if (\n typeof field !== 'string' ||\n options.fieldMessages === undefined ||\n !Object.hasOwn(options.fieldMessages, field)\n ) {\n return undefined\n }\n\n const maxPathDepth = options.fieldMessageMaxPathDepth?.[field as TField]\n\n if (maxPathDepth !== undefined && issue.path.length - pathOffset > maxPathDepth) {\n return issue.message\n }\n\n return options.fieldMessages[field as TField] ?? issue.message\n}\n\n/**\n * Converts a Standard Schema issue into JSON-serializable structured error metadata.\n *\n * Standard Schema path segments may be raw property keys or wrapper objects with a `key` field. Error metadata must be\n * JSON-safe, so every segment is stringified here instead of leaking symbols or object-shaped path entries.\n */\nexport function toJsonValidationIssue(issue: StandardSchemaIssueLike): JsonValidationIssue {\n const path = issue.path?.map((segment) => String(typeof segment === 'object' ? segment.key : segment))\n\n if (path === undefined || path.length === 0) {\n return { message: issue.message }\n }\n\n return {\n message: issue.message,\n path,\n }\n}\n","import * as z from 'zod'\n\nimport { createFunctionSchema } from './zod.js'\n\n/**\n * Abort controller with disposable external abort wiring.\n */\nexport interface LinkedAbortController {\n /**\n * Child signal exposed to work that should stop when this controller or the upstream signal aborts.\n */\n readonly signal: AbortSignal\n /**\n * Aborts the child signal.\n */\n abort(): void\n /**\n * Removes external abort listeners. Calling this does not abort the child signal.\n */\n dispose(): void\n}\n\ninterface ProcessSignalSource {\n off(signalName: NodeJS.Signals, listener: (signal: NodeJS.Signals) => void): void\n once(signalName: NodeJS.Signals, listener: (signal: NodeJS.Signals) => void): void\n}\n\nconst defaultProcessAbortSignalNames: readonly NodeJS.Signals[] = ['SIGINT', 'SIGTERM']\n\n/**\n * Builds a Zod validator for the AbortSignal surface used by runtime code.\n */\nexport function createAbortSignalSchema(message = 'AbortSignal is invalid.'): z.ZodType<AbortSignal, AbortSignal> {\n const abortSignalSurfaceSchema = z.object(\n {\n aborted: z.boolean(message),\n addEventListener: createFunctionSchema<AbortSignal['addEventListener']>(message),\n removeEventListener: createFunctionSchema<AbortSignal['removeEventListener']>(message),\n },\n message,\n )\n\n return z.custom<AbortSignal>((signal) => abortSignalSurfaceSchema.safeParse(signal).success, message)\n}\n\n/**\n * Default Zod validator for AbortSignal-compatible values.\n */\nexport const abortSignalSchema = createAbortSignalSchema()\n\n/**\n * Creates a child abort controller that aborts when the upstream signal aborts.\n */\nexport function createLinkedAbortController(sourceSignal: AbortSignal | undefined): LinkedAbortController {\n const abortController = new AbortController()\n\n if (sourceSignal === undefined) {\n return {\n abort: () => {\n abortController.abort()\n },\n dispose: () => undefined,\n signal: abortController.signal,\n }\n }\n\n const abortLinkedController = () => {\n abortController.abort()\n }\n\n if (sourceSignal.aborted) {\n abortLinkedController()\n\n return {\n abort: abortLinkedController,\n dispose: () => undefined,\n signal: abortController.signal,\n }\n }\n\n let disposed = false\n\n sourceSignal.addEventListener('abort', abortLinkedController, { once: true })\n\n return {\n abort: abortLinkedController,\n dispose: () => {\n if (disposed) {\n return\n }\n\n disposed = true\n sourceSignal.removeEventListener('abort', abortLinkedController)\n },\n signal: abortController.signal,\n }\n}\n\n/**\n * Creates an abort controller that aborts when the process receives one of the configured signals.\n */\nexport function createProcessSignalAbortController(\n signalSource: ProcessSignalSource,\n signalNames: readonly NodeJS.Signals[] = defaultProcessAbortSignalNames,\n): LinkedAbortController {\n const abortController = createLinkedAbortController(undefined)\n const abortFromProcessSignal = () => {\n abortController.abort()\n }\n\n for (const signalName of signalNames) {\n signalSource.once(signalName, abortFromProcessSignal)\n }\n\n let disposed = false\n\n return {\n abort: () => {\n abortController.abort()\n },\n dispose: () => {\n if (disposed) {\n return\n }\n\n disposed = true\n\n for (const signalName of signalNames) {\n signalSource.off(signalName, abortFromProcessSignal)\n }\n\n abortController.dispose()\n },\n signal: abortController.signal,\n }\n}\n\n/**\n * Resolves after a timeout, or sooner when the signal aborts.\n */\nexport function waitForAbortableTimeout(milliseconds: number, signal: AbortSignal): Promise<void> {\n if (signal.aborted) {\n return Promise.resolve()\n }\n\n return new Promise((resolve) => {\n const finish = () => {\n clearTimeout(timeout)\n signal.removeEventListener('abort', finish)\n resolve()\n }\n\n const timeout = setTimeout(finish, milliseconds)\n signal.addEventListener('abort', finish, { once: true })\n })\n}\n","const dateRangeMessage = 'Calculated date is outside the supported Date range.'\n\nexport interface AddMillisecondsToDateOptions<TError extends Error = RangeError> {\n readonly createRangeError?: (message: string) => TError\n}\n\n/**\n * Returns a fresh `Date` at the Unix epoch.\n *\n * A new instance is returned every time because `Date` objects are mutable.\n */\nexport function createUnixEpochDate(): Date {\n return new Date(0)\n}\n\n/**\n * Returns a new Date offset by a safe integer millisecond count.\n *\n * The input date is never mutated. Invalid dates, unsafe offsets, and dates outside the JavaScript Date range throw\n * the caller-selected range error instead of leaking raw `Invalid Date` values into callers.\n */\nexport function addMillisecondsToDate<TError extends Error = RangeError>(\n date: Date,\n milliseconds: number,\n options: AddMillisecondsToDateOptions<TError> = {},\n): Date {\n const createRangeError = options.createRangeError ?? ((message: string) => new RangeError(message))\n\n if (!Number.isSafeInteger(milliseconds)) {\n throw createRangeError(dateRangeMessage)\n }\n\n const shiftedDate = new Date(date.getTime() + milliseconds)\n\n if (!Number.isSafeInteger(shiftedDate.getTime())) {\n throw createRangeError(dateRangeMessage)\n }\n\n return shiftedDate\n}\n","import ms from 'ms'\nimport * as z from 'zod'\n\n/**\n * Units accepted by human-readable duration strings.\n */\nexport enum DurationUnit {\n Day = 'd',\n Hour = 'h',\n Millisecond = 'ms',\n Minute = 'm',\n Second = 's',\n}\n\n/**\n * Human-readable duration string such as `500ms`, `30s`, `5m`, `2h`, or `7d`.\n */\nexport type DurationString = `${number}${DurationUnit}`\n\nconst durationMessage =\n 'Expected a positive duration string that resolves to whole milliseconds, such as 500ms, 0.5s, 5m, 2h, or 7d.'\n\nconst durationTokenPattern = new RegExp(\n `^(?:(?:0|[1-9]\\\\d*)(?:\\\\.\\\\d+)?|\\\\.\\\\d+)(${Object.values(DurationUnit)\n .sort((leftUnit, rightUnit) => rightUnit.length - leftUnit.length)\n .join('|')})$`,\n)\n\n/**\n * Zod parser for runtime code that needs both the public duration string and executable milliseconds.\n */\nexport const durationSchema = createDurationSchema()\n\n/**\n * Parsed duration value that keeps the public string and the executable millisecond offset together.\n */\nexport type DurationValue = z.infer<typeof durationSchema>\n\n/**\n * Creates a Zod parser for duration strings that resolves both the public string and milliseconds.\n */\nexport function createDurationSchema(message = durationMessage) {\n return z\n .string(message)\n .max(100, message)\n .regex(durationTokenPattern, message)\n .transform((value, context) => {\n const milliseconds = ms(value as ms.StringValue)\n\n if (milliseconds <= 0 || !Number.isSafeInteger(milliseconds)) {\n context.addIssue({ code: 'custom', message })\n\n return z.NEVER\n }\n\n return {\n duration: value as DurationString,\n milliseconds,\n }\n })\n}\n","/**\n * Copies a value with the platform structured clone algorithm.\n *\n * This exists so adapter and runtime boundaries do not scatter direct `structuredClone` calls or invent adapter-specific\n * clone wrappers. The clone policy is still needed because storage adapters must not leak mutable `Date` or object\n * references across storage boundaries, but the policy belongs in one shared utility instead of per-adapter vanity\n * wrappers.\n */\nexport function copyStructuredValue<TValue>(value: TValue): TValue {\n return structuredClone(value)\n}\n"],"mappings":"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"}
{
"name": "@runlane/utilities",
"version": "0.1.1",
"version": "0.2.0",
"description": "Contract-free, runtime-agnostic utility primitives (duration, date, zod, abort) shared across Runlane packages.",

@@ -5,0 +5,0 @@ "type": "module",