@vertexvis/utils 0.24.3-testing.0 → 0.24.3
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/bundle.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.esm.js","sources":["../src/eventTargets.ts","../src/async.ts","../src/binaryReader.ts","../src/color.ts","../src/mapper.ts","../../../node_modules/fast-deep-equal/index.js","../node_modules/is-plain-object/index.es.js","../src/objects.ts","../src/range.ts","../src/sets.ts","../src/strings.ts","../src/sort.ts","../src/uri.ts","../../../node_modules/uuid/dist/esm-node/rng.js","../../../node_modules/uuid/dist/esm-node/regex.js","../../../node_modules/uuid/dist/esm-node/validate.js","../../../node_modules/uuid/dist/esm-node/stringify.js","../../../node_modules/uuid/dist/esm-node/v4.js","../src/uuid.ts","../src/eventDispatcher.ts"],"sourcesContent":["/**\n * Adds a listener to the given `target`, and returns a promise that\n * resolves with the first event emitted of the given `type`.\n *\n * @param target The target to add an event listener to.\n * @param type The event type to listen for.\n * @param opts Options to pass to `addEventListener`.\n * @returns A promise that resolves with the first event emitted of `type`.\n */\nexport async function once<E extends Event>(\n target: EventTarget,\n type: string,\n opts?: boolean | AddEventListenerOptions\n): Promise<E> {\n return new Promise((resolve) => {\n function handler(event: Event): void {\n target.removeEventListener(type, handler);\n resolve(event as E);\n }\n target.addEventListener(type, handler, opts);\n });\n}\n","import { once } from './eventTargets';\n\n/**\n * Converts an async generator to an array of results.\n *\n * @param generator The generator to convert.\n * @returns A promise that resolves with an array of results yielded by the\n * generator.\n */\nexport async function asArray<T>(generator: AsyncGenerator<T>): Promise<T[]> {\n const res = [];\n for await (const next of generator) {\n res.push(next);\n }\n return res;\n}\n\n/**\n * Returns a promise that resolves successfully after the given delay.\n *\n * @param ms The delay in milliseconds.\n */\nexport function delay(ms: number): Promise<void>;\n\n/**\n * Delays the resolution of `promise` by the given delay.\n *\n * @param ms The delay in milliseconds.\n * @param promise The promise to delay.\n */\nexport function delay<T>(ms: number, promise: Promise<T>): Promise<T>;\n\nexport async function delay(...args: unknown[]): Promise<unknown> {\n const ms = args[0];\n\n if (typeof ms === 'number') {\n const promise = args[1];\n const delay = new Promise((resolve) => setTimeout(resolve, ms));\n if (promise != null) {\n await delay;\n return promise;\n } else {\n return delay;\n }\n } else {\n return Promise.reject(\n new TypeError('First argument to `delay` must be a number')\n );\n }\n}\n\n/**\n * Returns a promise that will reject after the given duration.\n *\n * @param ms A duration in milliseconds.\n */\nexport function timeout(ms: number): Promise<void>;\n\n/**\n * Assigns a timeout to the given promise, where if the promise doesn't complete\n * within the given duration an exception will be thrown.\n *\n * @param ms The timeout, in milliseconds.\n * @param promise The promise to assign a timeout to.\n */\nexport function timeout<T>(ms: number, promise: Promise<T>): Promise<T>;\n\nexport async function timeout(...args: unknown[]): Promise<unknown> {\n const ms = args[0];\n\n if (typeof ms === 'number') {\n const promise = args[1];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let timer: any;\n const timeout = new Promise((_, reject) => {\n timer = setTimeout(\n () => reject(new Error(`Promise timed out after ${ms}ms`)),\n ms\n );\n });\n if (promise != null) {\n const res = await Promise.race([promise, timeout]);\n clearTimeout(timer);\n return res;\n } else {\n return timeout;\n }\n } else {\n return Promise.reject('First argument to `timeout` must be a number');\n }\n}\n\ninterface RetryOptions {\n /**\n * An array of delays that are used between each retry attempt.\n */\n delaysInMs?: number[];\n\n /**\n * The maximum number of retries that will be attempted.\n */\n maxRetries?: number;\n}\n\n/**\n * Executes and reattempts execution of an asynchronous function if it throws an\n * error. By default, this function will only retry once and reexecute\n * immediately after the previous execution throws. You can configure the number\n * of retry attempts and delays with the `maxRetries` and `delaysInMs` options.\n *\n * The `delaysInMs` is an array of delays in milliseconds for each retry\n * attempt. If there are more retry attempts than delays, the last delay will be\n * used.\n *\n * @param process The process to execute.\n * @param opts Options to configure retry behavior.\n * @returns A promise that resolves with a successful value, or the original\n * rejected value if the process fails.\n */\nexport async function retry<T>(\n process: () => Promise<T>,\n opts: RetryOptions = {}\n): Promise<T> {\n async function execute<T>(\n attempt: number,\n process: () => Promise<T>,\n opts: RetryOptions\n ): Promise<T> {\n const { delaysInMs = [], maxRetries = 1 } = opts;\n\n try {\n const delayInMs =\n attempt === 0 || delaysInMs.length === 0\n ? 0\n : delaysInMs[Math.min(attempt - 1, delaysInMs.length - 1)];\n await delay(delayInMs);\n return await process();\n } catch (e) {\n if (attempt < maxRetries) {\n return await execute(attempt + 1, process, opts);\n } else throw e;\n }\n }\n\n return execute(0, process, opts);\n}\n\n/**\n * Returns a promise that either resolves with the result of `promise`, or a\n * value that indicates the execution was aborted.\n *\n * **Note:** Because Promises in JS cannot be canceled, an abort signal will not\n * cancel the execution of the promise.\n *\n * @param signal A signal that communicates the process should be aborted.\n * @param promise A promise who's value will be returned if not aborted.\n * @returns A value indicating if the process was aborted, or the value of\n * `promise`.\n */\nexport async function abort<T>(\n signal: AbortSignal,\n promise: Promise<T>\n): Promise<{ aborted: true } | { aborted: false; result: T }> {\n const controller = new AbortController();\n const pendingAbort = once(signal, 'abort', { signal: controller.signal });\n const result = await Promise.race([promise, pendingAbort]);\n\n if (isAbortEvent(result)) {\n return { aborted: true };\n } else {\n controller.abort();\n return { aborted: false, result };\n }\n}\n\nfunction isAbortEvent(obj: unknown): obj is Event {\n if (obj instanceof Event) {\n return obj.type === 'abort';\n } else return false;\n}\n","/**\n * A `BinaryReader` represents a view and offset for iteratively reading data\n * from an `ArrayBuffer`.\n *\n * Readers are created by calling the `BinaryReader.fromArrayBuffer()` method,\n * and passed to helper methods such as `BinaryReader.readInt32()` to read data\n * from the buffer. These helpers return a new `BinaryReader` that contains an\n * adjusted offset and the read value, and can further be passed to additional\n * helpers.\n *\n * @example\n * ```\n * // Reading from an `ArrayBuffer`\n * const reader = BinaryReader.fromArrayBuffer(buffer);\n * const messageLength = BinaryReader.readInt32(reader);\n * console.log(messageLength.value); // 11\n *\n * const message = BinaryReader.readUtf8String(messageLength.value, messageLength);\n * console.log(message.value); // Hello world\n * ```\n */\nexport interface BinaryReader {\n offset: number;\n data: DataView;\n}\n\ninterface BinaryReaderValue<T> extends BinaryReader {\n value: T;\n}\n\n/**\n * Returns a new `BinaryReader` for an `ArrayBuffer`.\n */\nexport const fromArrayBuffer = (buffer: ArrayBuffer): BinaryReader => {\n return { offset: 0, data: new DataView(buffer) };\n};\n\n/**\n * Returns a `BinaryReader` that contains the read Int32 value at the given\n * reader's offset. The returned reader will have its offset adjusted so it can\n * be passed to the next helper.\n */\nexport const readInt32 = (reader: BinaryReader): BinaryReaderValue<number> => {\n const value = reader.data.getInt32(reader.offset);\n return { ...reader, offset: reader.offset + 4, value };\n};\n\n/**\n * Returns a `BinaryReader` that contains the read UTF-8 string at the given\n * reader's offset. The returned reader will have its offset adjusted so it can\n * be passed to the next helper.\n */\nexport const readUtf8String = (\n length: number,\n reader: BinaryReader\n): BinaryReaderValue<string> => {\n const value = String.fromCharCode.apply(\n null,\n Array.from(new Uint8Array(reader.data.buffer, reader.offset, length))\n );\n return { ...reader, offset: reader.offset + length, value };\n};\n\n/**\n * Returns a `BinaryReader` that contains the a signed `Int8Array` start from\n * the given reader's offset to the given length. The returned reader will have\n * its offset adjusted so it can be passed to the next helper.\n */\nexport const readInt8Array = (\n length: number,\n reader: BinaryReader\n): BinaryReaderValue<Int8Array> => {\n const value = new Int8Array(reader.data.buffer, reader.offset, length);\n return { ...reader, offset: reader.offset + length, value };\n};\n\n/**\n * Returns a `BinaryReader` that contains the a signed `Int8Array` sliced from\n * the start of the reader's offset to offset + length. The new reader value has\n * an offset of zero, so downstream operations will not bee effected by the\n * previous offset\n */\nexport const sliceInt8Array = (\n length: number,\n reader: BinaryReader\n): BinaryReaderValue<Int8Array> => {\n const value = new Int8Array(\n reader.data.buffer.slice(reader.offset, length + reader.offset)\n );\n\n return { ...reader, offset: 0, value };\n};\n","const rgbRegex = /rgb\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/;\nconst rgbaRegex = /rgba\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(.+)\\s*\\)/;\nconst hexRegex = /^(#|0x)?([A-Fa-f0-9]{6})$/;\n\n/**\n * A `Color` represents an object containing values for red, green, blue and\n * alpha channels. Each value represents a number between 0 and 255.\n */\nexport interface Color {\n /**\n * The color's red channel value, as a number from 0 to 255.\n */\n r: number;\n\n /**\n * The color's green channel value, as a number from 0 to 255.\n */\n g: number;\n\n /**\n * The color's blue channel value, as a number from 0 to 255.\n */\n b: number;\n\n /**\n * The color's alpha channel value, as a number from 0 to 255.\n */\n a: number;\n}\n\n/**\n * Constructs a new color with the given red, green, blue and alpha values. If\n * alpha is undefined, defaults to 1.\n */\nexport const create = (r: number, g: number, b: number, a = 255): Color => {\n return { r, g, b, a };\n};\n\n/**\n * Converts a numeric color value containing red, green and blue values to a\n * `Color`. The alpha channel will default to fully opaque.\n */\nexport const fromNumber = (num: number): Color => {\n // tslint:disable:no-bitwise\n const normalized = num & 0xffffff;\n return create(\n (normalized >> 16) & 0xff,\n (normalized >> 8) & 0xff,\n normalized & 0xff\n );\n // tslint:enable:no-bitwise\n};\n\n/**\n * Returns a `Color` from a hex string, or undefined if the color string cannot\n * be parsed. Supports hex strings in the format of `\"#00FF00\"`, `\"0x00FF00\"` or\n * `\"00FF00\"`.\n */\nexport const fromHexString = (str: string): Color | undefined => {\n const match = hexRegex.exec(str);\n if (match != null) {\n return fromNumber(parseInt(match[2], 16));\n }\n};\n\n/**\n * Creates a `Color` from a CSS color value. This function currently only\n * supports `rgb(255, 255, 255)`, `rgba(255, 255, 255, 0.5)` or `\"#FFFFFF\"`.\n * Returns `undefined` if the color cannot be parsed.\n */\nexport const fromCss = (css: string): Color | undefined => {\n const rgbMatch = rgbRegex.exec(css);\n if (rgbMatch != null) {\n return create(\n parseInt(rgbMatch[1]),\n parseInt(rgbMatch[2]),\n parseInt(rgbMatch[3])\n );\n }\n\n const rgbaMatch = rgbaRegex.exec(css);\n if (rgbaMatch != null) {\n return create(\n parseInt(rgbaMatch[1]),\n parseInt(rgbaMatch[2]),\n parseInt(rgbaMatch[3]),\n Math.floor(parseFloat(rgbaMatch[4]) * 255)\n );\n }\n\n if (hexRegex.test(css)) {\n return fromHexString(css);\n }\n};\n\n/**\n * Converts an array of four values to a `Color`. The sequence of the array is\n * expected to be `[r, g, b]` or `[r, g, b, a]`.\n */\nexport const fromArray = (rgba: number[] | Uint8ClampedArray): Color => {\n return create(rgba[0], rgba[1], rgba[2], rgba[3]);\n};\n\n/**\n * Returns `true` if the color's alpha channel is 0.\n */\nexport const isInvisible = (color: Color): boolean => {\n return color.a === 0;\n};\n\n/**\n * Returns `true` if the alpha channel of this color is fully opaque (255).\n */\nexport const isOpaque = (color: Color): boolean => {\n return color.a === 255;\n};\n\n/**\n * Converts a `Color` to a hex string. The returned string will be prefixed with\n * `#`.\n */\nexport const toHexString = (color: Omit<Color, 'a'>): string => {\n return `#${componentToHex(color.r)}${componentToHex(color.g)}${componentToHex(\n color.b\n )}`;\n};\n\nconst componentToHex = (num: number): string => {\n const hex = num.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n};\n","/**\n * A module for defining functional schemas to map between different types. This\n * module is useful for parsing to or from JSON/protobufs to domain types.\n *\n * Mappers support greedy validation, so all validation errors are aggregated\n * and reported vs failing on the first invalid input.\n *\n * @example\n *\n * ```ts\n * import { Mapper as M } from '@vertexvis/utils';\n *\n * interface Address {\n * address: string;\n * city: string;\n * state: string;\n * zip: string;\n * }\n *\n * interface Person {\n * name: string;\n * addresses: Address[];\n * }\n *\n * type AddressJson = Partial<Address>;\n * type PersonJson = {\n * name?: string;\n * addresses?: AddressJson[];\n * }\n *\n * const mapAddress: M.Func<AddressJson, Address> = M.defineMapper(\n * M.read(\n * M.requireProp('address'),\n * M.requireProp('city'),\n * M.requireProp('state'),\n * M.requireProp('zip')\n * ),\n * ([address, city, state, zip]) => ({\n * address, city, state, zip\n * })\n * );\n *\n * const mapPerson: M.Func<PersonJson, Person> = M.defineMapper(\n * M.read(\n * M.requireProp('name'),\n * M.mapProp(\n * 'addresses',\n * M.compose(M.required('addresses'), M.mapArray(mapAddress))\n * )\n * ),\n * ([name, addresses]) => ({ name, addresses })\n * );\n *\n * const person = mapPerson({\n * name: 'John',\n * addresses: [{ address: '123', city: 'Ames', state: 'IA', zip: '50010' }]\n * });\n *\n * const invalidPerson = mapPerson({\n * addresses: [{ city: 'Ames', state: 'IA', zip: '50010' }]\n * });\n * ```\n * // {\n * // errors: [\"Name is required.\", \"Address is required.\"]\n * // }\n *\n * @module\n */\n\n/**\n * An error that is thrown when validation of a schema fails.\n *\n * @see {@link ifInvalidThrow} - for throwing errors on invalid input.\n */\nexport class MapperValidationError extends Error {\n public constructor(public readonly errors: string[]) {\n super('Validation error mapping object.');\n Object.setPrototypeOf(this, MapperValidationError.prototype);\n }\n}\n\n/**\n * A type that captures all errors on invalid input.\n */\nexport interface Invalid {\n /**\n * A list of errors in the input.\n */\n errors: string[];\n}\n\n/**\n * A type that represents either a valid or invalid input.\n */\nexport type Validated<T> = Invalid | T;\n\n/**\n * A function that transforms an input into another type, or an invalid result\n * if the input violates the schema.\n */\nexport type Func<T, R> = (input: T) => Validated<R>;\n\n/**\n * A function that transforms an input into another type, or throws if the input\n * is invalid.\n */\nexport type ThrowIfInvalidFunc<T, R> = (input: T) => R;\n\n/**\n * Returns a mapper that asserts the input is not null or not undefined.\n *\n * @param name A name to report when invalid.\n */\nexport function required<T>(\n name: string\n): Func<T | null | undefined, NonNullable<T>> {\n return (input) => {\n if (input != null) {\n return input as NonNullable<T>;\n } else {\n return { errors: [`${name} is required.`] };\n }\n };\n}\n\n/**\n * Returns a mapper that asserts a property on the input is not null or not\n * defined.\n *\n * @param prop The prop to assert.\n * @returns A mapper that returns the property's value.\n */\nexport function requiredProp<T, P extends keyof T>(\n prop: P\n): Func<T, NonNullable<T[P]>> {\n return (obj) => {\n const value = obj[prop];\n if (value != null) {\n return value as NonNullable<T[P]>;\n } else {\n return { errors: [`${String(prop)} is required`] };\n }\n };\n}\n\n/**\n * Returns a mapper that invokes a function if the input is not null or not\n * undefined.\n *\n * @param mapper A mapping function.\n */\nexport function ifDefined<T, R>(\n mapper: Func<T, R | null | undefined>\n): Func<T | null | undefined, R | null | undefined> {\n return (input) => {\n if (input != null) {\n return mapper(input);\n } else {\n return input as undefined;\n }\n };\n}\n\n/**\n * Returns a mapper that extracts a property's value.\n *\n * @param prop The property to extract.\n */\nexport function getProp<T, P extends keyof T>(prop: P): Func<T, T[P]> {\n return (input) => {\n return input[prop];\n };\n}\n\n/**\n * Returns a mapper that will invoke a mapping function on an input's property.\n *\n * @param prop The name of the property to map over.\n * @param mapper A function that will be invoked with the property's value.\n */\nexport function mapProp<T, P extends keyof T, R>(\n prop: P,\n mapper: Func<T[P], R>\n): Func<T, R> {\n return (input) => {\n const value = input[prop];\n return mapper(value);\n };\n}\n\n/**\n * Returns a mapper that will check if the given property is defined, and if so\n * invoke the given mapping function.\n *\n * @param prop The name of the property to map over.\n * @param mapper A function that will be invoked with the property's value if\n * the property is defined.\n */\nexport function mapRequiredProp<T, P extends keyof T, R>(\n prop: P,\n mapper: Func<NonNullable<T[P]>, R>\n): Func<T, R> {\n return mapProp(prop, compose(required(prop.toString()), mapper));\n}\n\n/**\n * Returns a mapper that will invoke a mapper over each value in the input\n * array. Returns `Invalid` containing errors for all invalid values in the\n * array.\n *\n * @param mapper A function that will be invoked with each array value.\n * @returns\n */\nexport function mapArray<T, R>(mapper: Func<T, R>): Func<T[], R[]> {\n return (inputs) => {\n if (inputs.length > 0) {\n const [head, ...tail] = inputs;\n const first = mapper(head);\n\n return tail.reduce(\n (res, input) => {\n const value = mapper(input);\n if (isInvalid(value)) {\n return isInvalid(res)\n ? { errors: [...res.errors, ...value.errors] }\n : value;\n } else if (isInvalid(res)) {\n return res;\n } else {\n return [...res, value];\n }\n },\n isInvalid(first) ? first : [first]\n );\n } else {\n return [];\n }\n };\n}\n\n/**\n * A type guard that checks if the object is an `Invalid` type.\n */\nexport function isInvalid(obj: unknown): obj is Invalid {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return obj != null && (obj as any).hasOwnProperty('errors');\n}\n\n/**\n * Returns a function that throws an error if the input is invalid. Otherwise,\n * returns the result.\n *\n * @param mapper A mapper that will be invoked with the input.\n * @throws {@link MapperValidationError} If the input is invalid.\n */\nexport function ifInvalidThrow<T, R>(\n mapper: Func<T, R>\n): ThrowIfInvalidFunc<T, R> {\n return (input) => {\n const value = mapper(input);\n if (isInvalid(value)) {\n throw new MapperValidationError(value.errors);\n } else return value;\n };\n}\n\nfunction ifValidThen<T, R>(\n obj: Validated<T>,\n f: (value: T) => R\n): Validated<R> {\n if (isInvalid(obj)) {\n return obj;\n } else {\n return f(obj);\n }\n}\n\n/* eslint-disable padding-line-between-statements */\n/**\n * Accumulates the results of mappers into an array.\n *\n * @param mappers A sequence of mappers that will be invoked for the input.\n * @see {@link defineMapper} - This function is normally used with\n * `defineMapper`.\n */\nexport function read<T, R1>(a: Func<T, R1>): Func<T, [R1]>;\nexport function read<T, R1, R2>(\n a: Func<T, R1>,\n b: Func<T, R2>\n): Func<T, [R1, R2]>;\nexport function read<T, R1, R2, R3>(\n a: Func<T, R1>,\n b: Func<T, R2>,\n c: Func<T, R3>\n): Func<T, [R1, R2, R3]>;\nexport function read<T, R1, R2, R3, R4>(\n a: Func<T, R1>,\n b: Func<T, R2>,\n c: Func<T, R3>,\n d: Func<T, R4>\n): Func<T, [R1, R2, R3, R4]>;\nexport function read<T, R1, R2, R3, R4, R5>(\n a: Func<T, R1>,\n b: Func<T, R2>,\n c: Func<T, R3>,\n d: Func<T, R4>,\n e: Func<T, R5>\n): Func<T, [R1, R2, R3, R4, R5]>;\nexport function read<T, R1, R2, R3, R4, R5, R6>(\n a: Func<T, R1>,\n b: Func<T, R2>,\n c: Func<T, R3>,\n d: Func<T, R4>,\n e: Func<T, R5>,\n f: Func<T, R6>\n): Func<T, [R1, R2, R3, R4, R5, R6]>;\nexport function read<T, R1, R2, R3, R4, R5, R6, R7>(\n a: Func<T, R1>,\n b: Func<T, R2>,\n c: Func<T, R3>,\n d: Func<T, R4>,\n e: Func<T, R5>,\n f: Func<T, R6>,\n g: Func<T, R7>\n): Func<T, [R1, R2, R3, R4, R5, R6, R7]>;\nexport function read<T, R1, R2, R3, R4, R5, R6, R7, R8>(\n a: Func<T, R1>,\n b: Func<T, R2>,\n c: Func<T, R3>,\n d: Func<T, R4>,\n e: Func<T, R5>,\n f: Func<T, R6>,\n g: Func<T, R7>,\n h: Func<T, R8>\n): Func<T, [R1, R2, R3, R4, R5, R6, R7, R8]>;\nexport function read<T, R1, R2, R3, R4, R5, R6, R7, R8, R9>(\n a: Func<T, R1>,\n b: Func<T, R2>,\n c: Func<T, R3>,\n d: Func<T, R4>,\n e: Func<T, R5>,\n f: Func<T, R6>,\n g: Func<T, R7>,\n h: Func<T, R8>,\n i: Func<T, R9>\n): Func<T, [R1, R2, R3, R4, R5, R6, R7, R8, R9]>;\nexport function read<T, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10>(\n a: Func<T, R1>,\n b: Func<T, R2>,\n c: Func<T, R3>,\n d: Func<T, R4>,\n e: Func<T, R5>,\n f: Func<T, R6>,\n g: Func<T, R7>,\n h: Func<T, R8>,\n i: Func<T, R9>,\n j: Func<T, R10>\n): Func<T, [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10]>;\nexport function read(\n ...mappers: Func<unknown, unknown>[]\n): Func<unknown, unknown[]> {\n return (input) => {\n return mappers.reduce((res: Validated<unknown[]>, decoder) => {\n const value = decoder(input);\n if (isInvalid(value)) {\n return isInvalid(res)\n ? { errors: [...res.errors, ...value.errors] }\n : value;\n } else if (isInvalid(res)) {\n return res;\n } else {\n return [...res, value];\n }\n }, []);\n };\n}\n/* eslint-enable padding-line-between-statements */\n\n/**\n * Defines a mapper that reads the values from an input and invokes a builder to\n * transform data from one schema to another.\n *\n * @example\n *\n * ```ts\n * import { Mapper as M } from '@vertexvis/utils';\n *\n * interface Address {\n * address: string;\n * city: string;\n * state: string;\n * zip: string;\n * }\n *\n * interface Person {\n * name: string;\n * addresses: Address[];\n * }\n *\n * type AddressJson = Partial<Address>;\n * type PersonJson = {\n * name?: string;\n * addresses?: AddressJson[];\n * }\n *\n * const mapAddress: M.Func<AddressJson, Address> = M.defineMapper(\n * M.read(\n * M.requireProp('address'),\n * M.requireProp('city'),\n * M.requireProp('state'),\n * M.requireProp('zip')\n * ),\n * ([address, city, state, zip]) => ({\n * address, city, state, zip\n * })\n * );\n *\n * const mapPerson: M.Func<PersonJson, Person> = M.defineMapper(\n * M.read(\n * M.requireProp('name'),\n * M.mapProp(\n * 'addresses',\n * M.compose(M.required('addresses'), M.mapArray(mapAddress))\n * )\n * ),\n * ([name, addresses]) => ({ name, addresses })\n * )\n *\n * const person = mapPerson({\n * name: 'John',\n * addresses: [{ address: '123', city: 'Ames', state: 'IA', zip: '50010' }]\n * })\n * ```\n *\n * @param reader The mapper that reads values from the input an creates an\n * intermediate format that will be passed to the `builder`.\n * @param builder A mapper that takes the output of `reader` and constructs the\n * output format.\n * @see {@link read} - a helper function to read and validate input values.\n */\nexport function defineMapper<T, V, R>(\n reader: Func<T, V>,\n builder: Func<V, R>\n): Func<T, R> {\n return (input) => {\n const values = reader(input);\n return ifValidThen(values, builder);\n };\n}\n\n/* eslint-disable padding-line-between-statements */\n/**\n * Returns a mapper that passes the output of each mapper to the next mapper.\n */\nexport function compose<T, A, R>(a: Func<T, A>, b: Func<A, R>): Func<T, R>;\nexport function compose<T, A, B, R>(\n a: Func<T, A>,\n b: Func<A, B>,\n c: Func<B, R>\n): Func<T, R>;\nexport function compose<T, A, B, C, R>(\n a: Func<T, A>,\n b: Func<A, B>,\n c: Func<B, C>,\n d: Func<C, R>\n): Func<T, R>;\nexport function compose<T, A, B, C, D, R>(\n a: Func<T, A>,\n b: Func<A, B>,\n c: Func<B, C>,\n d: Func<C, D>,\n e: Func<D, R>\n): Func<T, R>;\nexport function compose<T, A, B, C, D, E, R>(\n a: Func<T, A>,\n b: Func<A, B>,\n c: Func<B, C>,\n d: Func<C, D>,\n e: Func<D, E>,\n f: Func<E, R>\n): Func<T, R>;\nexport function compose<T, A, B, C, D, E, F, R>(\n a: Func<T, A>,\n b: Func<A, B>,\n c: Func<B, C>,\n d: Func<C, D>,\n e: Func<D, E>,\n f: Func<E, F>,\n g: Func<F, R>\n): Func<T, R>;\nexport function compose<T, A, B, C, D, E, F, G, R>(\n a: Func<T, A>,\n b: Func<A, B>,\n c: Func<B, C>,\n d: Func<C, D>,\n e: Func<D, E>,\n f: Func<E, F>,\n g: Func<F, G>,\n h: Func<G, R>\n): Func<T, R>;\nexport function compose<T, A, B, C, D, E, F, G, H, R>(\n a: Func<T, A>,\n b: Func<A, B>,\n c: Func<B, C>,\n d: Func<C, D>,\n e: Func<D, E>,\n f: Func<E, F>,\n g: Func<F, G>,\n h: Func<G, H>,\n i: Func<H, R>\n): Func<T, R>;\nexport function compose<T, A, B, C, D, E, F, G, H, I, R>(\n a: Func<T, A>,\n b: Func<A, B>,\n c: Func<B, C>,\n d: Func<C, D>,\n e: Func<D, E>,\n f: Func<E, F>,\n g: Func<F, G>,\n h: Func<G, H>,\n i: Func<H, I>,\n j: Func<I, R>\n): Func<T, R>;\nexport function compose(\n ...decoders: Func<unknown, unknown>[]\n): Func<unknown, unknown> {\n return (input) => {\n return decoders.reduce((last, decoder) => {\n if (isInvalid(last)) {\n return last;\n } else {\n return decoder(last);\n }\n }, input);\n };\n}\n/* eslint-enable padding-line-between-statements */\n\n/* eslint-disable padding-line-between-statements */\n/**\n * Returns a mapper that returns the first defined result of a mapper. If all\n * mappers return `undefined`, then `undefined` is returned.\n */\nexport function pickFirst<T, A, B>(\n a: Func<T, A | undefined>,\n b: Func<T, B | undefined>\n): Func<T, A | B | undefined>;\nexport function pickFirst<T, A, B, C>(\n a: Func<T, A | undefined>,\n b: Func<T, B | undefined>,\n c: Func<T, C | undefined>\n): Func<T, A | B | C | undefined>;\nexport function pickFirst<T, A, B, C, D>(\n a: Func<T, A | undefined>,\n b: Func<T, B | undefined>,\n c: Func<T, C | undefined>,\n d: Func<T, D | undefined>\n): Func<T, A | B | C | undefined>;\nexport function pickFirst<T, A, B, C, D, E>(\n a: Func<T, A | undefined>,\n b: Func<T, B | undefined>,\n c: Func<T, C | undefined>,\n d: Func<T, D | undefined>,\n e: Func<T, E | undefined>\n): Func<T, A | B | C | D | E | undefined>;\nexport function pickFirst<T, A, B, C, D, E, F>(\n a: Func<T, A | undefined>,\n b: Func<T, B | undefined>,\n c: Func<T, C | undefined>,\n d: Func<T, D | undefined>,\n e: Func<T, E | undefined>,\n f: Func<T, F | undefined>\n): Func<T, A | B | C | D | E | F | undefined>;\nexport function pickFirst<T, A, B, C, D, E, F, G>(\n a: Func<T, A | undefined>,\n b: Func<T, B | undefined>,\n c: Func<T, C | undefined>,\n d: Func<T, D | undefined>,\n e: Func<T, E | undefined>,\n f: Func<T, F | undefined>,\n g: Func<T, G | undefined>\n): Func<T, A | B | C | D | E | F | G | undefined>;\nexport function pickFirst<T, A, B, C, D, E, F, G, H>(\n a: Func<T, A | undefined>,\n b: Func<T, B | undefined>,\n c: Func<T, C | undefined>,\n d: Func<T, D | undefined>,\n e: Func<T, E | undefined>,\n f: Func<T, F | undefined>,\n g: Func<T, G | undefined>,\n h: Func<T, H | undefined>\n): Func<T, A | B | C | D | E | F | G | H | undefined>;\nexport function pickFirst<T, A, B, C, D, E, F, G, H, I>(\n a: Func<T, A | undefined>,\n b: Func<T, B | undefined>,\n c: Func<T, C | undefined>,\n d: Func<T, D | undefined>,\n e: Func<T, E | undefined>,\n f: Func<T, F | undefined>,\n g: Func<T, G | undefined>,\n h: Func<T, H | undefined>,\n i: Func<T, I | undefined>\n): Func<T, A | B | C | D | E | F | G | H | I | undefined>;\nexport function pickFirst<T, A, B, C, D, E, F, G, H, I, J>(\n a: Func<T, A | undefined>,\n b: Func<T, B | undefined>,\n c: Func<T, C | undefined>,\n d: Func<T, D | undefined>,\n e: Func<T, E | undefined>,\n f: Func<T, F | undefined>,\n g: Func<T, G | undefined>,\n h: Func<T, H | undefined>,\n i: Func<T, I | undefined>,\n j: Func<T, J | undefined>\n): Func<T, A | B | C | D | E | F | G | H | I | J | undefined>;\nexport function pickFirst(\n ...decoders: Func<unknown, unknown | undefined>[]\n): Func<unknown, unknown | undefined> {\n return (input) => {\n return decoders.reduce((value, decoder) => {\n if (value === undefined) {\n return decoder(input);\n } else {\n return value;\n }\n }, undefined as unknown);\n };\n}\n/* eslint-enable padding-line-between-statements */\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","/*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(val) {\n return val != null && typeof val === 'object' && Array.isArray(val) === false;\n}\n\n/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObjectObject(o) {\n return isObject(o) === true\n && Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObjectObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (typeof ctor !== 'function') return false;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObjectObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport default isPlainObject;\n","import fastDeepEqual from 'fast-deep-equal';\nimport isSimpleObject from 'is-plain-object';\n\n/* eslint-disable padding-line-between-statements */\n/**\n * Returns a new object where any enumerable property from `other` are\n * recursively applied to `a`. Once a property is set, it will not be\n * overridden. This function is useful for constructing configs from a default\n * config.\n *\n * @example\n * ```\n * defaults({ 'a': [1] }, { 'b': 2 }, { 'a': [2] });\n * // => { a: [1], b: 2 }\n * ```\n */\nexport function defaults<A>(a: A): A;\nexport function defaults<A, B>(a: A, b: B): A & B;\nexport function defaults<A, B, C>(a: A, b: B, c: C): A & B & C;\nexport function defaults<A, B, C, D>(a: A, b: B, c: C, d: D): A & B & C & D;\nexport function defaults<A, R>(a: A, ...other: Record<string, unknown>[]): R;\nexport function defaults(\n ...objects: Record<string, unknown>[]\n): Record<string, unknown> {\n const [a, ...other] = objects;\n const result = { ...a };\n\n if (other.length === 0) {\n return result;\n } else if (other.length === 1) {\n const b = other[0];\n for (const key in b) {\n if (result[key] == null) {\n result[key] = b[key];\n } else if (isPlainObject(result[key])) {\n result[key] = defaults(result[key], b[key]);\n }\n }\n\n return result;\n } else {\n return other.reduce((result, next) => defaults(result, next), a);\n }\n}\n/* eslint-enable padding-line-between-statements */\n\n/**\n * Returns `true` if this is a plain object, which is defined by a type created\n * by the `Object` constructor. Returns `false` otherwise.\n *\n * @example\n * ```\n * isPlainObject(Object.create({})); //=> true\n * isPlainObject(Object.create(Object.prototype)); //=> true\n * isPlainObject({foo: 'bar'}); //=> true\n * isPlainObject({}); //=> true\n *\n * isPlainObject(1); //=> false\n * isPlainObject(['foo', 'bar']); //=> false\n * isPlainObject([]); //=> false\n * isPlainObject(new Foo); //=> false\n * isPlainObject(null); //=> false\n * isPlainObject(Object.create(null)); //=> false\n * ```\n */\nexport function isPlainObject(obj: unknown): boolean {\n return isSimpleObject(obj);\n}\n\n/**\n * Performs a deep comparison of two objects and returns `true` if they're\n * equal.\n *\n * This method supports comparing arrays, array buffers, booleans, date objects,\n * error objects, maps, numbers, Object objects, regexes, sets, strings,\n * symbols, and typed arrays. Object objects are compared by their own, not\n * inherited, enumerable properties. Functions and DOM nodes are compared by\n * strict equality, i.e. ===.\n *\n * @param a The object to compare with `b`.\n * @param b The object to compare with `a`.\n * @returns `true` if the two objects are equal. Otherwise `false`.\n */\nexport function isEqual(a: unknown, b: unknown): boolean {\n return fastDeepEqual(a, b);\n}\n\n/* eslint-disable padding-line-between-statements */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/**\n * Returns an array of key-value pairs for each enumerable key in `obj`.\n *\n * @example\n * ```\n * toPairs({a: 1, b: 2}); //=> [['a', 1], ['b', 2]]\n * toPairs(['a', 'b']); //=> [['0', 'a'], ['1', 'b']]\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n * toPairs(new Foo()); //=> [['a', 1], ['b', 2]]\n * ```\n */\nexport function toPairs<T>(obj: Record<string, T>): Array<[string, T]>;\nexport function toPairs<T>(obj: T[]): Array<[string, T]>;\nexport function toPairs(obj: object | null | undefined): Array<[string, any]>;\nexport function toPairs(obj: any): Array<[string, any]> {\n if (obj != null) {\n return Object.keys(obj).map((key) => [key, obj[key]]);\n } else {\n return [];\n }\n}\n/* eslint-enable padding-line-between-statements */\n/* eslint-enable @typescript-eslint/ban-types */\n/* eslint-enable @typescript-eslint/no-explicit-any */\n/* eslint-enable @typescript-eslint/explicit-module-boundary-types */\n\n/* eslint-disable padding-line-between-statements */\nexport function fromPairs<T>(\n pairs: Array<[string, T]> | undefined | null\n): Record<string, T>;\nexport function fromPairs(\n pairs: Array<unknown[]> | undefined | null\n): Record<string, unknown>;\nexport function fromPairs(pairs: unknown): Record<string, unknown> {\n if (Array.isArray(pairs)) {\n return pairs.reduce((result, pair) => {\n if (pair != null) {\n return { ...result, [pair[0]]: pair[1] };\n } else {\n return result;\n }\n }, {});\n } else {\n return {};\n }\n}\n/* eslint-enable padding-line-between-statements */\n","/**\n * A `Range` represents a sequence of numbers from a starting point to ending\n * point.\n */\nexport interface Range {\n start: number;\n end: number;\n}\n\n/**\n * Returns a new `Range` with the given start and end points.\n */\nexport const create = (start: number, end: number): Range => ({ start, end });\n\n/**\n * Returns a new `Range` with the start and end points at the given position.\n */\nexport const at = (position: number): Range => ({\n start: position,\n end: position,\n});\n\n/**\n * Returns a new `Range` with the given start point and length.\n */\nexport const withLength = (start: number, len: number): Range => ({\n start,\n end: start + len - 1,\n});\n\n/**\n * Returns a range with the start and end points shifted by the given distance.\n */\nexport const add = (distance: number, range: Range): Range => {\n return create(range.start + distance, range.end + distance);\n};\n\n/**\n * Returns a range such that `range` is constrained to the start and end points\n * of `to`. The function will try to maintain the length of the range, but will\n * shrink the range if its length is greater than `to`.\n */\nexport const constrain = (range: Range, to: Range): Range => {\n if (contains(range, to)) {\n return range;\n } else if (length(range) > length(to)) {\n return to;\n } else if (range.start < to.start) {\n return create(to.start, to.start + length(range) - 1);\n } else {\n return create(to.end - length(range) + 1, to.end);\n }\n};\n\n/**\n * Checks if the given number or range is contained within another range.\n */\nexport const contains = (numOrRange: number | Range, range: Range): boolean => {\n if (typeof numOrRange === 'number') {\n return range.start <= numOrRange && numOrRange <= range.end;\n } else {\n return contains(numOrRange.start, range) && contains(numOrRange.end, range);\n }\n};\n\n/**\n * Returns a range that represents the overlap between `other` and `range`. If\n * the two ranges do not intersect, then `undefined` is returned.\n * @param other\n * @param range\n */\nexport const intersection = (other: Range, range: Range): Range | undefined => {\n if (intersects(other, range)) {\n return create(\n Math.max(other.start, range.start),\n Math.min(other.end, range.end)\n );\n }\n};\n\n/**\n * Returns `true` if `other` intersects with `range`.\n */\nexport const intersects = (other: Range, range: Range): boolean => {\n return (\n (other.start <= range.end && other.end >= range.start) ||\n (range.start <= other.end && range.end >= other.start)\n );\n};\n\n/**\n * Checks if a range has the same starting point as another range.\n */\nexport const isAt = (other: Range, range: Range): boolean => {\n return other.start === range.start;\n};\n\n/**\n * Returns `true` if a range's start point is after the starting point of\n * another range.\n */\nexport const isAfter = (other: Range, range: Range): boolean => {\n return other.start > range.start;\n};\n\n/**\n * Returns `true` if a range start at or is after another range.\n */\nexport const isAtOrAfter = (other: Range, range: Range): boolean => {\n return isAt(other, range) || isAfter(other, range);\n};\n\n/**\n * Returns `true` if a range's starting point is before another range's starting\n * point.\n */\nexport const isBefore = (other: Range, range: Range): boolean => {\n return other.start < range.start;\n};\n\n/**\n * Returns `true` if a range's starting point is at or before another range's\n * starting point.\n */\nexport const isAtOrBefore = (other: Range, range: Range): boolean => {\n return isAt(other, range) || isBefore(other, range);\n};\n\n/**\n * Returns the length of a range.\n */\nexport const length = (range: Range): number => {\n return range.end - range.start + 1;\n};\n\n/**\n * Returns a `Range` with its start and end points subtracted by the given\n * distance.\n */\nexport const subtract = (distance: number, range: Range): Range => {\n return add(distance * -1, range);\n};\n\n/**\n * Adjusts either the start or end position of a range so that its contained\n * within another range. Unlike `constrain`, this will not attempt to retain\n * the range's length.\n *\n * If `other` does not intersect with `to`, then the range cannot be truncated\n * and `undefined` is returned.\n */\nexport const truncate = (other: Range, to: Range): Range | undefined => {\n if (intersects(to, other)) {\n return create(Math.max(other.start, to.start), Math.min(other.end, to.end));\n }\n};\n","export function diffSet<T>(a: Set<T>, b: Set<T>): Set<T> {\n const res = new Set<T>();\n for (const item of b) {\n if (!a.has(item)) {\n res.add(item);\n }\n }\n return res;\n}\n","const trimStartRegex = /^\\W+/;\nconst trimEndRegex = /\\W+$/;\nconst trimStartAndEndRegex = /^\\W+|\\W+$/g;\n\nexport function trimStart(str: string): string {\n return str.replace(trimStartRegex, '');\n}\n\nexport function trimEnd(str: string): string {\n return str.replace(trimEndRegex, '');\n}\n\nexport function trim(str: string): string {\n return str.replace(trimStartAndEndRegex, '');\n}\n","/**\n * A `Comparator` defines a function that computes the order of two values.\n */\nexport type Comparator<T> = (a: T, b: T) => number;\n\n/**\n * A comparator that sorts a number or string in ascending order.\n */\nexport const asc = (a: number | string, b: number | string): number => {\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n } else {\n return 0;\n }\n};\n\n/**\n * A comparator that sorts a number or string in descending order.\n */\nexport const desc = (a: number | string, b: number | string): number => {\n return reverse(asc)(a, b);\n};\n\n/**\n * A comparator that reverses the sort order of another comparator.\n */\nexport const reverse = <T>(comparator: Comparator<T>): Comparator<T> => {\n return (a, b) => -comparator(a, b);\n};\n\n/**\n * A comparator that plucks the first element of an array and passes that value\n * to the given comparator for sorting.\n */\nexport const head = <T>(comparator: Comparator<T>): Comparator<T[]> => {\n return ([a], [b]) => comparator(a, b);\n};\n","import * as Sort from './sort';\n\n/**\n * A type that represents a Uniform Resource Identifier (URI).\n */\nexport interface Uri {\n scheme?: string;\n authority?: string;\n path?: string;\n query?: string;\n fragment?: string;\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\ntype QueryMap = Record<string, string>;\ntype QueryEntry = [string, string];\n\n/**\n * Parses a URI string according to RFC 3986. If the URI is an empty string,\n * then an empty object is returned.\n *\n * See https://tools.ietf.org/html/rfc3986#appendix-B for parsing rules.\n *\n * @param uri The URI to parse.\n */\nexport const parse = (uri: string): Uri => {\n const regex = /^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\n const match = regex.exec(uri);\n if (match != null) {\n return {\n scheme: match[2],\n authority: match[4],\n path: match[5],\n query: match[7],\n fragment: match[9],\n };\n } else {\n return {};\n }\n};\n\n/**\n * Convenience method to create a URI from a base string and add params if present\n * @param base\n * @param params\n */\nexport const parseAndAddParams = (\n baseStr: string,\n params?: Record<string, unknown>\n): Uri => {\n const base = parse(baseStr);\n return params ? addQueryParams(params, base) : base;\n};\n\nexport const isEqual = (a: Uri, b: Uri): boolean => {\n const queryA = JSON.stringify(sortByQueryName(queryAsArray(a)));\n const queryB = JSON.stringify(sortByQueryName(queryAsArray(b)));\n return (\n a.scheme === b.scheme &&\n a.authority === b.authority &&\n a.path === b.path &&\n a.fragment === b.fragment &&\n queryA === queryB\n );\n};\n\nexport const replacePath = (path: string, uri: Uri): Uri => {\n const pathWithForwardSlash = path[0] === '/' ? path : `/${path}`;\n return { ...uri, path: pathWithForwardSlash };\n};\n\nexport const pathAsArray = (uri: Uri): string[] => {\n return uri.path != null ? sanitizePath(uri.path.split('/')) : [];\n};\n\nexport const appendPath = (path: string, uri: Uri): Uri => {\n const beforeParts = pathAsArray(uri);\n const afterParts = sanitizePath(path.split('/'));\n return replacePath(beforeParts.concat(afterParts).join('/'), uri);\n};\n\nexport const addQueryString = (query: string, uri: Uri): Uri => {\n const queryArray = stringAsQueryArray(query);\n return addQueryEntries(queryArray, uri);\n};\n\nexport const addQueryEntry = (query: QueryEntry, uri: Uri): Uri => {\n if (query[1] != null) {\n const newQuery = [...queryAsArray(uri), query];\n return {\n ...uri,\n query: newQuery\n .map((entry) => entry.map(encodeURIComponent).join('='))\n .join('&'),\n };\n } else {\n return uri;\n }\n};\n\nexport const addQueryEntries = (entries: QueryEntry[], uri: Uri): Uri => {\n return entries.reduce((result, entry) => addQueryEntry(entry, result), uri);\n};\n\nexport const addQueryParams = (params: Record<string, any>, uri: Uri): Uri => {\n return mapAsEntries(params).reduce(\n (result, entry) => addQueryEntry(entry, result),\n uri\n );\n};\n\nexport const replaceFragment = (fragment: string, uri: Uri): Uri => {\n return { ...uri, fragment };\n};\n\n/**\n * Return an array of name/value pairs representing the query string of a URI.\n * The returned names and values will be URI decoded. If the query string is\n * empty, then an empty array is returned.\n *\n * @param uri A URI to return the query string for.\n */\nexport const queryAsArray = (uri: Uri): QueryEntry[] => {\n if (uri.query != null) {\n return stringAsQueryArray(uri.query);\n } else {\n return [];\n }\n};\n\nconst stringAsQueryArray = (queryString: string): QueryEntry[] => {\n return queryString\n .split('&')\n .map((param) =>\n param.split('=').map((value) => decodeURIComponent(value))\n ) as QueryEntry[];\n};\n\n/**\n * Return a map containing a URI's query string names and their values. The\n * returned names and values will be URI decoded. If the query string contains\n * multiple instances of the same name, then the last occurrence will be used.\n *\n * If the query string is empty, an empty map is returned.\n *\n * @param uri A URI to return the query string for.\n */\nexport const queryAsMap = (uri: Uri): QueryMap => {\n return queryAsArray(uri).reduce((map, [name, value]) => {\n return { ...map, [name]: value };\n }, {});\n};\n\nexport const toString = (uri: Uri): string => {\n let result = '';\n\n if (uri.scheme != null && uri.scheme.length > 0) {\n result = `${uri.scheme}:`;\n }\n\n if (uri.authority != null && uri.authority.length > 0) {\n result += `//${uri.authority}`;\n }\n\n result += uri.path;\n\n if (uri.query != null && uri.query.length > 0) {\n result += `?${uri.query}`;\n }\n\n if (uri.fragment != null && uri.fragment.length > 0) {\n result += `#${uri.fragment}`;\n }\n\n return result;\n};\n\nconst sanitizePath = (path: string[]): string[] => {\n return path.filter((segment) => segment.length > 0);\n};\n\nconst mapAsEntries = (map: Record<string, any>): QueryEntry[] => {\n const entries: QueryEntry[] = [];\n for (const key in map) {\n entries.push([key, map[key]]);\n }\n return entries;\n};\n\nconst sortByQueryName = (entries: QueryEntry[]): QueryEntry[] => {\n return entries.concat().sort(Sort.head(Sort.asc));\n};\n\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","import crypto from 'crypto';\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\nexport default function rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n crypto.randomFillSync(rnds8Pool);\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import { v4 as uuid } from 'uuid';\n\nexport type UUID = string;\n\nexport interface UUIDMsbLsb {\n msb: string;\n lsb: string;\n}\n\nexport function create(): UUID {\n return uuid();\n}\n\nexport function fromMsbLsb(msb: bigint | string, lsb: bigint | string): UUID {\n function digits(val: bigint, ds: bigint): string {\n const hi = BigInt(1) << (ds * BigInt(4));\n return (hi | (val & (hi - BigInt(1)))).toString(16).substring(1);\n }\n\n const msbB = typeof msb === 'string' ? BigInt(msb) : msb;\n const lsbB = typeof lsb === 'string' ? BigInt(lsb) : lsb;\n\n const sec1 = digits(msbB >> BigInt(32), BigInt(8));\n const sec2 = digits(msbB >> BigInt(16), BigInt(4));\n const sec3 = digits(msbB, BigInt(4));\n const sec4 = digits(lsbB >> BigInt(48), BigInt(4));\n const sec5 = digits(lsbB, BigInt(12));\n\n return `${sec1}-${sec2}-${sec3}-${sec4}-${sec5}`;\n}\n\nexport function toMsbLsb(id: UUID): UUIDMsbLsb {\n const [c1, c2, c3, c4, c5] = id.split('-');\n\n if (c1 == null || c2 == null || c3 == null || c4 == null || c5 == null) {\n throw new Error(`Invalid UUID string ${id}`);\n }\n\n const msb = BigInt.asIntN(64, BigInt(`0x${c1 + c2 + c3}`));\n const lsb = BigInt.asIntN(64, BigInt(`0x${c4 + c5}`));\n\n return { msb: msb.toString(), lsb: lsb.toString() };\n}\n","import { Disposable } from './disposable';\nimport { Predicate } from './predicate';\n\nexport type Listener<T> = (event: T) => void;\n\ninterface OnOptions {\n abort?: AbortSignal;\n}\n\nexport class EventDispatcher<T> {\n private listeners: Listener<T>[] = [];\n\n public on(listener: Listener<T>, opts: OnOptions = {}): Disposable {\n this.listeners.push(listener);\n\n const controller = new AbortController();\n controller.signal.addEventListener('abort', () => this.off(listener));\n opts.abort?.addEventListener('abort', () => controller.abort());\n\n return { dispose: () => controller.abort() };\n }\n\n public once(opts: OnOptions = {}): Promise<T> {\n return new Promise((resolve) => {\n this.on((event) => resolve(event), opts);\n });\n }\n\n public async onceWhen(\n predicate: Predicate<T>,\n opts: OnOptions = {}\n ): Promise<T> {\n const controller = new AbortController();\n opts.abort?.addEventListener('abort', () => controller.abort());\n\n return new Promise((resolve) => {\n this.when(\n predicate,\n (event) => {\n if (predicate(event)) {\n controller.abort();\n resolve(event);\n }\n },\n { ...opts, abort: controller.signal }\n );\n });\n }\n\n public when(\n predicate: Predicate<T>,\n listener: Listener<T>,\n opts: OnOptions = {}\n ): Disposable {\n return this.on((event) => {\n if (predicate(event)) {\n listener(event);\n }\n }, opts);\n }\n\n public off(listener: Listener<T>): void {\n const index = this.listeners.indexOf(listener);\n if (index !== -1) {\n this.listeners.splice(index, 1);\n }\n }\n\n public emit(event: T): void {\n this.listeners.forEach((listener) => listener(event));\n }\n}\n"],"names":["create","isPlainObject","isSimpleObject","isEqual","Sort.head","Sort.asc","uuid"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bundle.esm.js","sources":["../src/eventTargets.ts","../src/async.ts","../src/binaryReader.ts","../src/color.ts","../src/mapper.ts","../../../node_modules/fast-deep-equal/index.js","../node_modules/is-plain-object/index.es.js","../src/objects.ts","../src/range.ts","../src/sets.ts","../src/strings.ts","../src/sort.ts","../src/uri.ts","../../../node_modules/uuid/dist/esm-node/rng.js","../../../node_modules/uuid/dist/esm-node/regex.js","../../../node_modules/uuid/dist/esm-node/validate.js","../../../node_modules/uuid/dist/esm-node/stringify.js","../../../node_modules/uuid/dist/esm-node/v4.js","../src/uuid.ts","../src/eventDispatcher.ts"],"sourcesContent":["/**\n * Adds a listener to the given `target`, and returns a promise that\n * resolves with the first event emitted of the given `type`.\n *\n * @param target The target to add an event listener to.\n * @param type The event type to listen for.\n * @param opts Options to pass to `addEventListener`.\n * @returns A promise that resolves with the first event emitted of `type`.\n */\nexport async function once<E extends Event>(\n target: EventTarget,\n type: string,\n opts?: boolean | AddEventListenerOptions\n): Promise<E> {\n return new Promise((resolve) => {\n function handler(event: Event): void {\n target.removeEventListener(type, handler);\n resolve(event as E);\n }\n target.addEventListener(type, handler, opts);\n });\n}\n","import { once } from './eventTargets';\n\n/**\n * Converts an async generator to an array of results.\n *\n * @param generator The generator to convert.\n * @returns A promise that resolves with an array of results yielded by the\n * generator.\n */\nexport async function asArray<T>(generator: AsyncGenerator<T>): Promise<T[]> {\n const res = [];\n for await (const next of generator) {\n res.push(next);\n }\n return res;\n}\n\n/**\n * Returns a promise that resolves successfully after the given delay.\n *\n * @param ms The delay in milliseconds.\n */\nexport function delay(ms: number): Promise<void>;\n\n/**\n * Delays the resolution of `promise` by the given delay.\n *\n * @param ms The delay in milliseconds.\n * @param promise The promise to delay.\n */\nexport function delay<T>(ms: number, promise: Promise<T>): Promise<T>;\n\nexport async function delay(...args: unknown[]): Promise<unknown> {\n const ms = args[0];\n\n if (typeof ms === 'number') {\n const promise = args[1];\n const delay = new Promise((resolve) => setTimeout(resolve, ms));\n if (promise != null) {\n await delay;\n return promise;\n } else {\n return delay;\n }\n } else {\n return Promise.reject(\n new TypeError('First argument to `delay` must be a number')\n );\n }\n}\n\n/**\n * Returns a promise that will reject after the given duration.\n *\n * @param ms A duration in milliseconds.\n */\nexport function timeout(ms: number): Promise<void>;\n\n/**\n * Assigns a timeout to the given promise, where if the promise doesn't complete\n * within the given duration an exception will be thrown.\n *\n * @param ms The timeout, in milliseconds.\n * @param promise The promise to assign a timeout to.\n */\nexport function timeout<T>(ms: number, promise: Promise<T>): Promise<T>;\n\nexport async function timeout(...args: unknown[]): Promise<unknown> {\n const ms = args[0];\n\n if (typeof ms === 'number') {\n const promise = args[1];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let timer: any;\n const timeout = new Promise((_, reject) => {\n timer = setTimeout(\n () => reject(new Error(`Promise timed out after ${ms}ms`)),\n ms\n );\n });\n if (promise != null) {\n const res = await Promise.race([promise, timeout]);\n clearTimeout(timer);\n return res;\n } else {\n return timeout;\n }\n } else {\n return Promise.reject('First argument to `timeout` must be a number');\n }\n}\n\ninterface RetryOptions {\n /**\n * An array of delays that are used between each retry attempt.\n */\n delaysInMs?: number[];\n\n /**\n * The maximum number of retries that will be attempted.\n */\n maxRetries?: number;\n}\n\n/**\n * Executes and reattempts execution of an asynchronous function if it throws an\n * error. By default, this function will only retry once and reexecute\n * immediately after the previous execution throws. You can configure the number\n * of retry attempts and delays with the `maxRetries` and `delaysInMs` options.\n *\n * The `delaysInMs` is an array of delays in milliseconds for each retry\n * attempt. If there are more retry attempts than delays, the last delay will be\n * used.\n *\n * @param process The process to execute.\n * @param opts Options to configure retry behavior.\n * @returns A promise that resolves with a successful value, or the original\n * rejected value if the process fails.\n */\nexport async function retry<T>(\n process: () => Promise<T>,\n opts: RetryOptions = {}\n): Promise<T> {\n async function execute<T>(\n attempt: number,\n process: () => Promise<T>,\n opts: RetryOptions\n ): Promise<T> {\n const { delaysInMs = [], maxRetries = 1 } = opts;\n\n try {\n const delayInMs =\n attempt === 0 || delaysInMs.length === 0\n ? 0\n : delaysInMs[Math.min(attempt - 1, delaysInMs.length - 1)];\n await delay(delayInMs);\n return await process();\n } catch (e) {\n if (attempt < maxRetries) {\n return await execute(attempt + 1, process, opts);\n } else throw e;\n }\n }\n\n return execute(0, process, opts);\n}\n\n/**\n * Returns a promise that either resolves with the result of `promise`, or a\n * value that indicates the execution was aborted.\n *\n * **Note:** Because Promises in JS cannot be canceled, an abort signal will not\n * cancel the execution of the promise.\n *\n * @param signal A signal that communicates the process should be aborted.\n * @param promise A promise who's value will be returned if not aborted.\n * @returns A value indicating if the process was aborted, or the value of\n * `promise`.\n */\nexport async function abort<T>(\n signal: AbortSignal,\n promise: Promise<T>\n): Promise<{ aborted: true } | { aborted: false; result: T }> {\n const controller = new AbortController();\n const pendingAbort = once(signal, 'abort', { signal: controller.signal });\n const result = await Promise.race([promise, pendingAbort]);\n\n if (isAbortEvent(result)) {\n return { aborted: true };\n } else {\n controller.abort();\n return { aborted: false, result };\n }\n}\n\nfunction isAbortEvent(obj: unknown): obj is Event {\n if (obj instanceof Event) {\n return obj.type === 'abort';\n } else return false;\n}\n","/**\n * A `BinaryReader` represents a view and offset for iteratively reading data\n * from an `ArrayBuffer`.\n *\n * Readers are created by calling the `BinaryReader.fromArrayBuffer()` method,\n * and passed to helper methods such as `BinaryReader.readInt32()` to read data\n * from the buffer. These helpers return a new `BinaryReader` that contains an\n * adjusted offset and the read value, and can further be passed to additional\n * helpers.\n *\n * @example\n * ```\n * // Reading from an `ArrayBuffer`\n * const reader = BinaryReader.fromArrayBuffer(buffer);\n * const messageLength = BinaryReader.readInt32(reader);\n * console.log(messageLength.value); // 11\n *\n * const message = BinaryReader.readUtf8String(messageLength.value, messageLength);\n * console.log(message.value); // Hello world\n * ```\n */\nexport interface BinaryReader {\n offset: number;\n data: DataView;\n}\n\ninterface BinaryReaderValue<T> extends BinaryReader {\n value: T;\n}\n\n/**\n * Returns a new `BinaryReader` for an `ArrayBuffer`.\n */\nexport const fromArrayBuffer = (buffer: ArrayBuffer): BinaryReader => {\n return { offset: 0, data: new DataView(buffer) };\n};\n\n/**\n * Returns a `BinaryReader` that contains the read Int32 value at the given\n * reader's offset. The returned reader will have its offset adjusted so it can\n * be passed to the next helper.\n */\nexport const readInt32 = (reader: BinaryReader): BinaryReaderValue<number> => {\n const value = reader.data.getInt32(reader.offset);\n return { ...reader, offset: reader.offset + 4, value };\n};\n\n/**\n * Returns a `BinaryReader` that contains the read UTF-8 string at the given\n * reader's offset. The returned reader will have its offset adjusted so it can\n * be passed to the next helper.\n */\nexport const readUtf8String = (\n length: number,\n reader: BinaryReader\n): BinaryReaderValue<string> => {\n const value = String.fromCharCode.apply(\n null,\n Array.from(new Uint8Array(reader.data.buffer, reader.offset, length))\n );\n return { ...reader, offset: reader.offset + length, value };\n};\n\n/**\n * Returns a `BinaryReader` that contains the a signed `Int8Array` start from\n * the given reader's offset to the given length. The returned reader will have\n * its offset adjusted so it can be passed to the next helper.\n */\nexport const readInt8Array = (\n length: number,\n reader: BinaryReader\n): BinaryReaderValue<Int8Array> => {\n const value = new Int8Array(reader.data.buffer, reader.offset, length);\n return { ...reader, offset: reader.offset + length, value };\n};\n\n/**\n * Returns a `BinaryReader` that contains the a signed `Int8Array` sliced from\n * the start of the reader's offset to offset + length. The new reader value has\n * an offset of zero, so downstream operations will not bee effected by the\n * previous offset\n */\nexport const sliceInt8Array = (\n length: number,\n reader: BinaryReader\n): BinaryReaderValue<Int8Array> => {\n const value = new Int8Array(\n reader.data.buffer.slice(reader.offset, length + reader.offset)\n );\n\n return { ...reader, offset: 0, value };\n};\n","const rgbRegex = /rgb\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/;\nconst rgbaRegex = /rgba\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(.+)\\s*\\)/;\nconst hexRegex = /^(#|0x)?([A-Fa-f0-9]{6})$/;\n\n/**\n * A `Color` represents an object containing values for red, green, blue and\n * alpha channels. Each value represents a number between 0 and 255.\n */\nexport interface Color {\n /**\n * The color's red channel value, as a number from 0 to 255.\n */\n r: number;\n\n /**\n * The color's green channel value, as a number from 0 to 255.\n */\n g: number;\n\n /**\n * The color's blue channel value, as a number from 0 to 255.\n */\n b: number;\n\n /**\n * The color's alpha channel value, as a number from 0 to 255.\n */\n a: number;\n}\n\n/**\n * Constructs a new color with the given red, green, blue and alpha values. If\n * alpha is undefined, defaults to 1.\n */\nexport const create = (r: number, g: number, b: number, a = 255): Color => {\n return { r, g, b, a };\n};\n\n/**\n * Converts a numeric color value containing red, green and blue values to a\n * `Color`. The alpha channel will default to fully opaque.\n */\nexport const fromNumber = (num: number): Color => {\n // tslint:disable:no-bitwise\n const normalized = num & 0xffffff;\n return create(\n (normalized >> 16) & 0xff,\n (normalized >> 8) & 0xff,\n normalized & 0xff\n );\n // tslint:enable:no-bitwise\n};\n\n/**\n * Returns a `Color` from a hex string, or undefined if the color string cannot\n * be parsed. Supports hex strings in the format of `\"#00FF00\"`, `\"0x00FF00\"` or\n * `\"00FF00\"`.\n */\nexport const fromHexString = (str: string): Color | undefined => {\n const match = hexRegex.exec(str);\n if (match != null) {\n return fromNumber(parseInt(match[2], 16));\n }\n};\n\n/**\n * Creates a `Color` from a CSS color value. This function currently only\n * supports `rgb(255, 255, 255)`, `rgba(255, 255, 255, 0.5)` or `\"#FFFFFF\"`.\n * Returns `undefined` if the color cannot be parsed.\n */\nexport const fromCss = (css: string): Color | undefined => {\n const rgbMatch = rgbRegex.exec(css);\n if (rgbMatch != null) {\n return create(\n parseInt(rgbMatch[1]),\n parseInt(rgbMatch[2]),\n parseInt(rgbMatch[3])\n );\n }\n\n const rgbaMatch = rgbaRegex.exec(css);\n if (rgbaMatch != null) {\n return create(\n parseInt(rgbaMatch[1]),\n parseInt(rgbaMatch[2]),\n parseInt(rgbaMatch[3]),\n Math.floor(parseFloat(rgbaMatch[4]) * 255)\n );\n }\n\n if (hexRegex.test(css)) {\n return fromHexString(css);\n }\n};\n\n/**\n * Converts an array of four values to a `Color`. The sequence of the array is\n * expected to be `[r, g, b]` or `[r, g, b, a]`.\n */\nexport const fromArray = (rgba: number[] | Uint8ClampedArray): Color => {\n return create(rgba[0], rgba[1], rgba[2], rgba[3]);\n};\n\n/**\n * Returns `true` if the color's alpha channel is 0.\n */\nexport const isInvisible = (color: Color): boolean => {\n return color.a === 0;\n};\n\n/**\n * Returns `true` if the alpha channel of this color is fully opaque (255).\n */\nexport const isOpaque = (color: Color): boolean => {\n return color.a === 255;\n};\n\n/**\n * Converts a `Color` to a hex string. The returned string will be prefixed with\n * `#`.\n */\nexport const toHexString = (color: Omit<Color, 'a'>): string => {\n return `#${componentToHex(color.r)}${componentToHex(color.g)}${componentToHex(\n color.b\n )}`;\n};\n\nconst componentToHex = (num: number): string => {\n const hex = num.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n};\n","/**\n * A module for defining functional schemas to map between different types. This\n * module is useful for parsing to or from JSON/protobufs to domain types.\n *\n * Mappers support greedy validation, so all validation errors are aggregated\n * and reported vs failing on the first invalid input.\n *\n * @example\n *\n * ```ts\n * import { Mapper as M } from '@vertexvis/utils';\n *\n * interface Address {\n * address: string;\n * city: string;\n * state: string;\n * zip: string;\n * }\n *\n * interface Person {\n * name: string;\n * addresses: Address[];\n * }\n *\n * type AddressJson = Partial<Address>;\n * type PersonJson = {\n * name?: string;\n * addresses?: AddressJson[];\n * }\n *\n * const mapAddress: M.Func<AddressJson, Address> = M.defineMapper(\n * M.read(\n * M.requireProp('address'),\n * M.requireProp('city'),\n * M.requireProp('state'),\n * M.requireProp('zip')\n * ),\n * ([address, city, state, zip]) => ({\n * address, city, state, zip\n * })\n * );\n *\n * const mapPerson: M.Func<PersonJson, Person> = M.defineMapper(\n * M.read(\n * M.requireProp('name'),\n * M.mapProp(\n * 'addresses',\n * M.compose(M.required('addresses'), M.mapArray(mapAddress))\n * )\n * ),\n * ([name, addresses]) => ({ name, addresses })\n * );\n *\n * const person = mapPerson({\n * name: 'John',\n * addresses: [{ address: '123', city: 'Ames', state: 'IA', zip: '50010' }]\n * });\n *\n * const invalidPerson = mapPerson({\n * addresses: [{ city: 'Ames', state: 'IA', zip: '50010' }]\n * });\n * ```\n * // {\n * // errors: [\"Name is required.\", \"Address is required.\"]\n * // }\n *\n * @module\n */\n\n/**\n * An error that is thrown when validation of a schema fails.\n *\n * @see {@link ifInvalidThrow} - for throwing errors on invalid input.\n */\nexport class MapperValidationError extends Error {\n public constructor(public readonly errors: string[]) {\n super('Validation error mapping object.');\n Object.setPrototypeOf(this, MapperValidationError.prototype);\n }\n}\n\n/**\n * A type that captures all errors on invalid input.\n */\nexport interface Invalid {\n /**\n * A list of errors in the input.\n */\n errors: string[];\n}\n\n/**\n * A type that represents either a valid or invalid input.\n */\nexport type Validated<T> = Invalid | T;\n\n/**\n * A function that transforms an input into another type, or an invalid result\n * if the input violates the schema.\n */\nexport type Func<T, R> = (input: T) => Validated<R>;\n\n/**\n * A function that transforms an input into another type, or throws if the input\n * is invalid.\n */\nexport type ThrowIfInvalidFunc<T, R> = (input: T) => R;\n\n/**\n * Returns a mapper that asserts the input is not null or not undefined.\n *\n * @param name A name to report when invalid.\n */\nexport function required<T>(\n name: string\n): Func<T | null | undefined, NonNullable<T>> {\n return (input) => {\n if (input != null) {\n return input as NonNullable<T>;\n } else {\n return { errors: [`${name} is required.`] };\n }\n };\n}\n\n/**\n * Returns a mapper that asserts a property on the input is not null or not\n * defined.\n *\n * @param prop The prop to assert.\n * @returns A mapper that returns the property's value.\n */\nexport function requiredProp<T, P extends keyof T>(\n prop: P\n): Func<T, NonNullable<T[P]>> {\n return (obj) => {\n const value = obj[prop];\n if (value != null) {\n return value as NonNullable<T[P]>;\n } else {\n return { errors: [`${String(prop)} is required`] };\n }\n };\n}\n\n/**\n * Returns a mapper that invokes a function if the input is not null or not\n * undefined.\n *\n * @param mapper A mapping function.\n */\nexport function ifDefined<T, R>(\n mapper: Func<T, R | null | undefined>\n): Func<T | null | undefined, R | null | undefined> {\n return (input) => {\n if (input != null) {\n return mapper(input);\n } else {\n return input as undefined;\n }\n };\n}\n\n/**\n * Returns a mapper that extracts a property's value.\n *\n * @param prop The property to extract.\n */\nexport function getProp<T, P extends keyof T>(prop: P): Func<T, T[P]> {\n return (input) => {\n return input[prop];\n };\n}\n\n/**\n * Returns a mapper that will invoke a mapping function on an input's property.\n *\n * @param prop The name of the property to map over.\n * @param mapper A function that will be invoked with the property's value.\n */\nexport function mapProp<T, P extends keyof T, R>(\n prop: P,\n mapper: Func<T[P], R>\n): Func<T, R> {\n return (input) => {\n const value = input[prop];\n return mapper(value);\n };\n}\n\n/**\n * Returns a mapper that will check if the given property is defined, and if so\n * invoke the given mapping function.\n *\n * @param prop The name of the property to map over.\n * @param mapper A function that will be invoked with the property's value if\n * the property is defined.\n */\nexport function mapRequiredProp<T, P extends keyof T, R>(\n prop: P,\n mapper: Func<NonNullable<T[P]>, R>\n): Func<T, R> {\n return mapProp(prop, compose(required(prop.toString()), mapper));\n}\n\n/**\n * Returns a mapper that will invoke a mapper over each value in the input\n * array. Returns `Invalid` containing errors for all invalid values in the\n * array.\n *\n * @param mapper A function that will be invoked with each array value.\n * @returns\n */\nexport function mapArray<T, R>(mapper: Func<T, R>): Func<T[], R[]> {\n return (inputs) => {\n if (inputs.length > 0) {\n const [head, ...tail] = inputs;\n const first = mapper(head);\n\n return tail.reduce(\n (res, input) => {\n const value = mapper(input);\n if (isInvalid(value)) {\n return isInvalid(res)\n ? { errors: [...res.errors, ...value.errors] }\n : value;\n } else if (isInvalid(res)) {\n return res;\n } else {\n return [...res, value];\n }\n },\n isInvalid(first) ? first : [first]\n );\n } else {\n return [];\n }\n };\n}\n\n/**\n * A type guard that checks if the object is an `Invalid` type.\n */\nexport function isInvalid(obj: unknown): obj is Invalid {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return obj != null && (obj as any).hasOwnProperty('errors');\n}\n\n/**\n * Returns a function that throws an error if the input is invalid. Otherwise,\n * returns the result.\n *\n * @param mapper A mapper that will be invoked with the input.\n * @throws {@link MapperValidationError} If the input is invalid.\n */\nexport function ifInvalidThrow<T, R>(\n mapper: Func<T, R>\n): ThrowIfInvalidFunc<T, R> {\n return (input) => {\n const value = mapper(input);\n if (isInvalid(value)) {\n throw new MapperValidationError(value.errors);\n } else return value;\n };\n}\n\nfunction ifValidThen<T, R>(\n obj: Validated<T>,\n f: (value: T) => R\n): Validated<R> {\n if (isInvalid(obj)) {\n return obj;\n } else {\n return f(obj);\n }\n}\n\n/* eslint-disable padding-line-between-statements */\n/**\n * Accumulates the results of mappers into an array.\n *\n * @param mappers A sequence of mappers that will be invoked for the input.\n * @see {@link defineMapper} - This function is normally used with\n * `defineMapper`.\n */\nexport function read<T, R1>(a: Func<T, R1>): Func<T, [R1]>;\nexport function read<T, R1, R2>(\n a: Func<T, R1>,\n b: Func<T, R2>\n): Func<T, [R1, R2]>;\nexport function read<T, R1, R2, R3>(\n a: Func<T, R1>,\n b: Func<T, R2>,\n c: Func<T, R3>\n): Func<T, [R1, R2, R3]>;\nexport function read<T, R1, R2, R3, R4>(\n a: Func<T, R1>,\n b: Func<T, R2>,\n c: Func<T, R3>,\n d: Func<T, R4>\n): Func<T, [R1, R2, R3, R4]>;\nexport function read<T, R1, R2, R3, R4, R5>(\n a: Func<T, R1>,\n b: Func<T, R2>,\n c: Func<T, R3>,\n d: Func<T, R4>,\n e: Func<T, R5>\n): Func<T, [R1, R2, R3, R4, R5]>;\nexport function read<T, R1, R2, R3, R4, R5, R6>(\n a: Func<T, R1>,\n b: Func<T, R2>,\n c: Func<T, R3>,\n d: Func<T, R4>,\n e: Func<T, R5>,\n f: Func<T, R6>\n): Func<T, [R1, R2, R3, R4, R5, R6]>;\nexport function read<T, R1, R2, R3, R4, R5, R6, R7>(\n a: Func<T, R1>,\n b: Func<T, R2>,\n c: Func<T, R3>,\n d: Func<T, R4>,\n e: Func<T, R5>,\n f: Func<T, R6>,\n g: Func<T, R7>\n): Func<T, [R1, R2, R3, R4, R5, R6, R7]>;\nexport function read<T, R1, R2, R3, R4, R5, R6, R7, R8>(\n a: Func<T, R1>,\n b: Func<T, R2>,\n c: Func<T, R3>,\n d: Func<T, R4>,\n e: Func<T, R5>,\n f: Func<T, R6>,\n g: Func<T, R7>,\n h: Func<T, R8>\n): Func<T, [R1, R2, R3, R4, R5, R6, R7, R8]>;\nexport function read<T, R1, R2, R3, R4, R5, R6, R7, R8, R9>(\n a: Func<T, R1>,\n b: Func<T, R2>,\n c: Func<T, R3>,\n d: Func<T, R4>,\n e: Func<T, R5>,\n f: Func<T, R6>,\n g: Func<T, R7>,\n h: Func<T, R8>,\n i: Func<T, R9>\n): Func<T, [R1, R2, R3, R4, R5, R6, R7, R8, R9]>;\nexport function read<T, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10>(\n a: Func<T, R1>,\n b: Func<T, R2>,\n c: Func<T, R3>,\n d: Func<T, R4>,\n e: Func<T, R5>,\n f: Func<T, R6>,\n g: Func<T, R7>,\n h: Func<T, R8>,\n i: Func<T, R9>,\n j: Func<T, R10>\n): Func<T, [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10]>;\nexport function read<T, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11>(\n a: Func<T, R1>,\n b: Func<T, R2>,\n c: Func<T, R3>,\n d: Func<T, R4>,\n e: Func<T, R5>,\n f: Func<T, R6>,\n g: Func<T, R7>,\n h: Func<T, R8>,\n i: Func<T, R9>,\n j: Func<T, R10>,\n k: Func<T, R11>\n): Func<T, [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11]>;\nexport function read(\n ...mappers: Func<unknown, unknown>[]\n): Func<unknown, unknown[]> {\n return (input) => {\n return mappers.reduce((res: Validated<unknown[]>, decoder) => {\n const value = decoder(input);\n if (isInvalid(value)) {\n return isInvalid(res)\n ? { errors: [...res.errors, ...value.errors] }\n : value;\n } else if (isInvalid(res)) {\n return res;\n } else {\n return [...res, value];\n }\n }, []);\n };\n}\n/* eslint-enable padding-line-between-statements */\n\n/**\n * Defines a mapper that reads the values from an input and invokes a builder to\n * transform data from one schema to another.\n *\n * @example\n *\n * ```ts\n * import { Mapper as M } from '@vertexvis/utils';\n *\n * interface Address {\n * address: string;\n * city: string;\n * state: string;\n * zip: string;\n * }\n *\n * interface Person {\n * name: string;\n * addresses: Address[];\n * }\n *\n * type AddressJson = Partial<Address>;\n * type PersonJson = {\n * name?: string;\n * addresses?: AddressJson[];\n * }\n *\n * const mapAddress: M.Func<AddressJson, Address> = M.defineMapper(\n * M.read(\n * M.requireProp('address'),\n * M.requireProp('city'),\n * M.requireProp('state'),\n * M.requireProp('zip')\n * ),\n * ([address, city, state, zip]) => ({\n * address, city, state, zip\n * })\n * );\n *\n * const mapPerson: M.Func<PersonJson, Person> = M.defineMapper(\n * M.read(\n * M.requireProp('name'),\n * M.mapProp(\n * 'addresses',\n * M.compose(M.required('addresses'), M.mapArray(mapAddress))\n * )\n * ),\n * ([name, addresses]) => ({ name, addresses })\n * )\n *\n * const person = mapPerson({\n * name: 'John',\n * addresses: [{ address: '123', city: 'Ames', state: 'IA', zip: '50010' }]\n * })\n * ```\n *\n * @param reader The mapper that reads values from the input an creates an\n * intermediate format that will be passed to the `builder`.\n * @param builder A mapper that takes the output of `reader` and constructs the\n * output format.\n * @see {@link read} - a helper function to read and validate input values.\n */\nexport function defineMapper<T, V, R>(\n reader: Func<T, V>,\n builder: Func<V, R>\n): Func<T, R> {\n return (input) => {\n const values = reader(input);\n return ifValidThen(values, builder);\n };\n}\n\n/* eslint-disable padding-line-between-statements */\n/**\n * Returns a mapper that passes the output of each mapper to the next mapper.\n */\nexport function compose<T, A, R>(a: Func<T, A>, b: Func<A, R>): Func<T, R>;\nexport function compose<T, A, B, R>(\n a: Func<T, A>,\n b: Func<A, B>,\n c: Func<B, R>\n): Func<T, R>;\nexport function compose<T, A, B, C, R>(\n a: Func<T, A>,\n b: Func<A, B>,\n c: Func<B, C>,\n d: Func<C, R>\n): Func<T, R>;\nexport function compose<T, A, B, C, D, R>(\n a: Func<T, A>,\n b: Func<A, B>,\n c: Func<B, C>,\n d: Func<C, D>,\n e: Func<D, R>\n): Func<T, R>;\nexport function compose<T, A, B, C, D, E, R>(\n a: Func<T, A>,\n b: Func<A, B>,\n c: Func<B, C>,\n d: Func<C, D>,\n e: Func<D, E>,\n f: Func<E, R>\n): Func<T, R>;\nexport function compose<T, A, B, C, D, E, F, R>(\n a: Func<T, A>,\n b: Func<A, B>,\n c: Func<B, C>,\n d: Func<C, D>,\n e: Func<D, E>,\n f: Func<E, F>,\n g: Func<F, R>\n): Func<T, R>;\nexport function compose<T, A, B, C, D, E, F, G, R>(\n a: Func<T, A>,\n b: Func<A, B>,\n c: Func<B, C>,\n d: Func<C, D>,\n e: Func<D, E>,\n f: Func<E, F>,\n g: Func<F, G>,\n h: Func<G, R>\n): Func<T, R>;\nexport function compose<T, A, B, C, D, E, F, G, H, R>(\n a: Func<T, A>,\n b: Func<A, B>,\n c: Func<B, C>,\n d: Func<C, D>,\n e: Func<D, E>,\n f: Func<E, F>,\n g: Func<F, G>,\n h: Func<G, H>,\n i: Func<H, R>\n): Func<T, R>;\nexport function compose<T, A, B, C, D, E, F, G, H, I, R>(\n a: Func<T, A>,\n b: Func<A, B>,\n c: Func<B, C>,\n d: Func<C, D>,\n e: Func<D, E>,\n f: Func<E, F>,\n g: Func<F, G>,\n h: Func<G, H>,\n i: Func<H, I>,\n j: Func<I, R>\n): Func<T, R>;\nexport function compose(\n ...decoders: Func<unknown, unknown>[]\n): Func<unknown, unknown> {\n return (input) => {\n return decoders.reduce((last, decoder) => {\n if (isInvalid(last)) {\n return last;\n } else {\n return decoder(last);\n }\n }, input);\n };\n}\n/* eslint-enable padding-line-between-statements */\n\n/* eslint-disable padding-line-between-statements */\n/**\n * Returns a mapper that returns the first defined result of a mapper. If all\n * mappers return `undefined`, then `undefined` is returned.\n */\nexport function pickFirst<T, A, B>(\n a: Func<T, A | undefined>,\n b: Func<T, B | undefined>\n): Func<T, A | B | undefined>;\nexport function pickFirst<T, A, B, C>(\n a: Func<T, A | undefined>,\n b: Func<T, B | undefined>,\n c: Func<T, C | undefined>\n): Func<T, A | B | C | undefined>;\nexport function pickFirst<T, A, B, C, D>(\n a: Func<T, A | undefined>,\n b: Func<T, B | undefined>,\n c: Func<T, C | undefined>,\n d: Func<T, D | undefined>\n): Func<T, A | B | C | undefined>;\nexport function pickFirst<T, A, B, C, D, E>(\n a: Func<T, A | undefined>,\n b: Func<T, B | undefined>,\n c: Func<T, C | undefined>,\n d: Func<T, D | undefined>,\n e: Func<T, E | undefined>\n): Func<T, A | B | C | D | E | undefined>;\nexport function pickFirst<T, A, B, C, D, E, F>(\n a: Func<T, A | undefined>,\n b: Func<T, B | undefined>,\n c: Func<T, C | undefined>,\n d: Func<T, D | undefined>,\n e: Func<T, E | undefined>,\n f: Func<T, F | undefined>\n): Func<T, A | B | C | D | E | F | undefined>;\nexport function pickFirst<T, A, B, C, D, E, F, G>(\n a: Func<T, A | undefined>,\n b: Func<T, B | undefined>,\n c: Func<T, C | undefined>,\n d: Func<T, D | undefined>,\n e: Func<T, E | undefined>,\n f: Func<T, F | undefined>,\n g: Func<T, G | undefined>\n): Func<T, A | B | C | D | E | F | G | undefined>;\nexport function pickFirst<T, A, B, C, D, E, F, G, H>(\n a: Func<T, A | undefined>,\n b: Func<T, B | undefined>,\n c: Func<T, C | undefined>,\n d: Func<T, D | undefined>,\n e: Func<T, E | undefined>,\n f: Func<T, F | undefined>,\n g: Func<T, G | undefined>,\n h: Func<T, H | undefined>\n): Func<T, A | B | C | D | E | F | G | H | undefined>;\nexport function pickFirst<T, A, B, C, D, E, F, G, H, I>(\n a: Func<T, A | undefined>,\n b: Func<T, B | undefined>,\n c: Func<T, C | undefined>,\n d: Func<T, D | undefined>,\n e: Func<T, E | undefined>,\n f: Func<T, F | undefined>,\n g: Func<T, G | undefined>,\n h: Func<T, H | undefined>,\n i: Func<T, I | undefined>\n): Func<T, A | B | C | D | E | F | G | H | I | undefined>;\nexport function pickFirst<T, A, B, C, D, E, F, G, H, I, J>(\n a: Func<T, A | undefined>,\n b: Func<T, B | undefined>,\n c: Func<T, C | undefined>,\n d: Func<T, D | undefined>,\n e: Func<T, E | undefined>,\n f: Func<T, F | undefined>,\n g: Func<T, G | undefined>,\n h: Func<T, H | undefined>,\n i: Func<T, I | undefined>,\n j: Func<T, J | undefined>\n): Func<T, A | B | C | D | E | F | G | H | I | J | undefined>;\nexport function pickFirst(\n ...decoders: Func<unknown, unknown | undefined>[]\n): Func<unknown, unknown | undefined> {\n return (input) => {\n return decoders.reduce((value, decoder) => {\n if (value === undefined) {\n return decoder(input);\n } else {\n return value;\n }\n }, undefined as unknown);\n };\n}\n/* eslint-enable padding-line-between-statements */\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","/*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(val) {\n return val != null && typeof val === 'object' && Array.isArray(val) === false;\n}\n\n/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObjectObject(o) {\n return isObject(o) === true\n && Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObjectObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (typeof ctor !== 'function') return false;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObjectObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport default isPlainObject;\n","import fastDeepEqual from 'fast-deep-equal';\nimport isSimpleObject from 'is-plain-object';\n\n/* eslint-disable padding-line-between-statements */\n/**\n * Returns a new object where any enumerable property from `other` are\n * recursively applied to `a`. Once a property is set, it will not be\n * overridden. This function is useful for constructing configs from a default\n * config.\n *\n * @example\n * ```\n * defaults({ 'a': [1] }, { 'b': 2 }, { 'a': [2] });\n * // => { a: [1], b: 2 }\n * ```\n */\nexport function defaults<A>(a: A): A;\nexport function defaults<A, B>(a: A, b: B): A & B;\nexport function defaults<A, B, C>(a: A, b: B, c: C): A & B & C;\nexport function defaults<A, B, C, D>(a: A, b: B, c: C, d: D): A & B & C & D;\nexport function defaults<A, R>(a: A, ...other: Record<string, unknown>[]): R;\nexport function defaults(\n ...objects: Record<string, unknown>[]\n): Record<string, unknown> {\n const [a, ...other] = objects;\n const result = { ...a };\n\n if (other.length === 0) {\n return result;\n } else if (other.length === 1) {\n const b = other[0];\n for (const key in b) {\n if (result[key] == null) {\n result[key] = b[key];\n } else if (isPlainObject(result[key])) {\n result[key] = defaults(result[key], b[key]);\n }\n }\n\n return result;\n } else {\n return other.reduce((result, next) => defaults(result, next), a);\n }\n}\n/* eslint-enable padding-line-between-statements */\n\n/**\n * Returns `true` if this is a plain object, which is defined by a type created\n * by the `Object` constructor. Returns `false` otherwise.\n *\n * @example\n * ```\n * isPlainObject(Object.create({})); //=> true\n * isPlainObject(Object.create(Object.prototype)); //=> true\n * isPlainObject({foo: 'bar'}); //=> true\n * isPlainObject({}); //=> true\n *\n * isPlainObject(1); //=> false\n * isPlainObject(['foo', 'bar']); //=> false\n * isPlainObject([]); //=> false\n * isPlainObject(new Foo); //=> false\n * isPlainObject(null); //=> false\n * isPlainObject(Object.create(null)); //=> false\n * ```\n */\nexport function isPlainObject(obj: unknown): boolean {\n return isSimpleObject(obj);\n}\n\n/**\n * Performs a deep comparison of two objects and returns `true` if they're\n * equal.\n *\n * This method supports comparing arrays, array buffers, booleans, date objects,\n * error objects, maps, numbers, Object objects, regexes, sets, strings,\n * symbols, and typed arrays. Object objects are compared by their own, not\n * inherited, enumerable properties. Functions and DOM nodes are compared by\n * strict equality, i.e. ===.\n *\n * @param a The object to compare with `b`.\n * @param b The object to compare with `a`.\n * @returns `true` if the two objects are equal. Otherwise `false`.\n */\nexport function isEqual(a: unknown, b: unknown): boolean {\n return fastDeepEqual(a, b);\n}\n\n/* eslint-disable padding-line-between-statements */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/**\n * Returns an array of key-value pairs for each enumerable key in `obj`.\n *\n * @example\n * ```\n * toPairs({a: 1, b: 2}); //=> [['a', 1], ['b', 2]]\n * toPairs(['a', 'b']); //=> [['0', 'a'], ['1', 'b']]\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n * toPairs(new Foo()); //=> [['a', 1], ['b', 2]]\n * ```\n */\nexport function toPairs<T>(obj: Record<string, T>): Array<[string, T]>;\nexport function toPairs<T>(obj: T[]): Array<[string, T]>;\nexport function toPairs(obj: object | null | undefined): Array<[string, any]>;\nexport function toPairs(obj: any): Array<[string, any]> {\n if (obj != null) {\n return Object.keys(obj).map((key) => [key, obj[key]]);\n } else {\n return [];\n }\n}\n/* eslint-enable padding-line-between-statements */\n/* eslint-enable @typescript-eslint/ban-types */\n/* eslint-enable @typescript-eslint/no-explicit-any */\n/* eslint-enable @typescript-eslint/explicit-module-boundary-types */\n\n/* eslint-disable padding-line-between-statements */\nexport function fromPairs<T>(\n pairs: Array<[string, T]> | undefined | null\n): Record<string, T>;\nexport function fromPairs(\n pairs: Array<unknown[]> | undefined | null\n): Record<string, unknown>;\nexport function fromPairs(pairs: unknown): Record<string, unknown> {\n if (Array.isArray(pairs)) {\n return pairs.reduce((result, pair) => {\n if (pair != null) {\n return { ...result, [pair[0]]: pair[1] };\n } else {\n return result;\n }\n }, {});\n } else {\n return {};\n }\n}\n/* eslint-enable padding-line-between-statements */\n","/**\n * A `Range` represents a sequence of numbers from a starting point to ending\n * point.\n */\nexport interface Range {\n start: number;\n end: number;\n}\n\n/**\n * Returns a new `Range` with the given start and end points.\n */\nexport const create = (start: number, end: number): Range => ({ start, end });\n\n/**\n * Returns a new `Range` with the start and end points at the given position.\n */\nexport const at = (position: number): Range => ({\n start: position,\n end: position,\n});\n\n/**\n * Returns a new `Range` with the given start point and length.\n */\nexport const withLength = (start: number, len: number): Range => ({\n start,\n end: start + len - 1,\n});\n\n/**\n * Returns a range with the start and end points shifted by the given distance.\n */\nexport const add = (distance: number, range: Range): Range => {\n return create(range.start + distance, range.end + distance);\n};\n\n/**\n * Returns a range such that `range` is constrained to the start and end points\n * of `to`. The function will try to maintain the length of the range, but will\n * shrink the range if its length is greater than `to`.\n */\nexport const constrain = (range: Range, to: Range): Range => {\n if (contains(range, to)) {\n return range;\n } else if (length(range) > length(to)) {\n return to;\n } else if (range.start < to.start) {\n return create(to.start, to.start + length(range) - 1);\n } else {\n return create(to.end - length(range) + 1, to.end);\n }\n};\n\n/**\n * Checks if the given number or range is contained within another range.\n */\nexport const contains = (numOrRange: number | Range, range: Range): boolean => {\n if (typeof numOrRange === 'number') {\n return range.start <= numOrRange && numOrRange <= range.end;\n } else {\n return contains(numOrRange.start, range) && contains(numOrRange.end, range);\n }\n};\n\n/**\n * Returns a range that represents the overlap between `other` and `range`. If\n * the two ranges do not intersect, then `undefined` is returned.\n * @param other\n * @param range\n */\nexport const intersection = (other: Range, range: Range): Range | undefined => {\n if (intersects(other, range)) {\n return create(\n Math.max(other.start, range.start),\n Math.min(other.end, range.end)\n );\n }\n};\n\n/**\n * Returns `true` if `other` intersects with `range`.\n */\nexport const intersects = (other: Range, range: Range): boolean => {\n return (\n (other.start <= range.end && other.end >= range.start) ||\n (range.start <= other.end && range.end >= other.start)\n );\n};\n\n/**\n * Checks if a range has the same starting point as another range.\n */\nexport const isAt = (other: Range, range: Range): boolean => {\n return other.start === range.start;\n};\n\n/**\n * Returns `true` if a range's start point is after the starting point of\n * another range.\n */\nexport const isAfter = (other: Range, range: Range): boolean => {\n return other.start > range.start;\n};\n\n/**\n * Returns `true` if a range start at or is after another range.\n */\nexport const isAtOrAfter = (other: Range, range: Range): boolean => {\n return isAt(other, range) || isAfter(other, range);\n};\n\n/**\n * Returns `true` if a range's starting point is before another range's starting\n * point.\n */\nexport const isBefore = (other: Range, range: Range): boolean => {\n return other.start < range.start;\n};\n\n/**\n * Returns `true` if a range's starting point is at or before another range's\n * starting point.\n */\nexport const isAtOrBefore = (other: Range, range: Range): boolean => {\n return isAt(other, range) || isBefore(other, range);\n};\n\n/**\n * Returns the length of a range.\n */\nexport const length = (range: Range): number => {\n return range.end - range.start + 1;\n};\n\n/**\n * Returns a `Range` with its start and end points subtracted by the given\n * distance.\n */\nexport const subtract = (distance: number, range: Range): Range => {\n return add(distance * -1, range);\n};\n\n/**\n * Adjusts either the start or end position of a range so that its contained\n * within another range. Unlike `constrain`, this will not attempt to retain\n * the range's length.\n *\n * If `other` does not intersect with `to`, then the range cannot be truncated\n * and `undefined` is returned.\n */\nexport const truncate = (other: Range, to: Range): Range | undefined => {\n if (intersects(to, other)) {\n return create(Math.max(other.start, to.start), Math.min(other.end, to.end));\n }\n};\n","export function diffSet<T>(a: Set<T>, b: Set<T>): Set<T> {\n const res = new Set<T>();\n for (const item of b) {\n if (!a.has(item)) {\n res.add(item);\n }\n }\n return res;\n}\n","const trimStartRegex = /^\\W+/;\nconst trimEndRegex = /\\W+$/;\nconst trimStartAndEndRegex = /^\\W+|\\W+$/g;\n\nexport function trimStart(str: string): string {\n return str.replace(trimStartRegex, '');\n}\n\nexport function trimEnd(str: string): string {\n return str.replace(trimEndRegex, '');\n}\n\nexport function trim(str: string): string {\n return str.replace(trimStartAndEndRegex, '');\n}\n","/**\n * A `Comparator` defines a function that computes the order of two values.\n */\nexport type Comparator<T> = (a: T, b: T) => number;\n\n/**\n * A comparator that sorts a number or string in ascending order.\n */\nexport const asc = (a: number | string, b: number | string): number => {\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n } else {\n return 0;\n }\n};\n\n/**\n * A comparator that sorts a number or string in descending order.\n */\nexport const desc = (a: number | string, b: number | string): number => {\n return reverse(asc)(a, b);\n};\n\n/**\n * A comparator that reverses the sort order of another comparator.\n */\nexport const reverse = <T>(comparator: Comparator<T>): Comparator<T> => {\n return (a, b) => -comparator(a, b);\n};\n\n/**\n * A comparator that plucks the first element of an array and passes that value\n * to the given comparator for sorting.\n */\nexport const head = <T>(comparator: Comparator<T>): Comparator<T[]> => {\n return ([a], [b]) => comparator(a, b);\n};\n","import * as Sort from './sort';\n\n/**\n * A type that represents a Uniform Resource Identifier (URI).\n */\nexport interface Uri {\n scheme?: string;\n authority?: string;\n path?: string;\n query?: string;\n fragment?: string;\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\ntype QueryMap = Record<string, string>;\ntype QueryEntry = [string, string];\n\n/**\n * Parses a URI string according to RFC 3986. If the URI is an empty string,\n * then an empty object is returned.\n *\n * See https://tools.ietf.org/html/rfc3986#appendix-B for parsing rules.\n *\n * @param uri The URI to parse.\n */\nexport const parse = (uri: string): Uri => {\n const regex = /^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\n const match = regex.exec(uri);\n if (match != null) {\n return {\n scheme: match[2],\n authority: match[4],\n path: match[5],\n query: match[7],\n fragment: match[9],\n };\n } else {\n return {};\n }\n};\n\n/**\n * Convenience method to create a URI from a base string and add params if present\n * @param base\n * @param params\n */\nexport const parseAndAddParams = (\n baseStr: string,\n params?: Record<string, unknown>\n): Uri => {\n const base = parse(baseStr);\n return params ? addQueryParams(params, base) : base;\n};\n\nexport const isEqual = (a: Uri, b: Uri): boolean => {\n const queryA = JSON.stringify(sortByQueryName(queryAsArray(a)));\n const queryB = JSON.stringify(sortByQueryName(queryAsArray(b)));\n return (\n a.scheme === b.scheme &&\n a.authority === b.authority &&\n a.path === b.path &&\n a.fragment === b.fragment &&\n queryA === queryB\n );\n};\n\nexport const replacePath = (path: string, uri: Uri): Uri => {\n const pathWithForwardSlash = path[0] === '/' ? path : `/${path}`;\n return { ...uri, path: pathWithForwardSlash };\n};\n\nexport const pathAsArray = (uri: Uri): string[] => {\n return uri.path != null ? sanitizePath(uri.path.split('/')) : [];\n};\n\nexport const appendPath = (path: string, uri: Uri): Uri => {\n const beforeParts = pathAsArray(uri);\n const afterParts = sanitizePath(path.split('/'));\n return replacePath(beforeParts.concat(afterParts).join('/'), uri);\n};\n\nexport const addQueryString = (query: string, uri: Uri): Uri => {\n const queryArray = stringAsQueryArray(query);\n return addQueryEntries(queryArray, uri);\n};\n\nexport const addQueryEntry = (query: QueryEntry, uri: Uri): Uri => {\n if (query[1] != null) {\n const newQuery = [...queryAsArray(uri), query];\n return {\n ...uri,\n query: newQuery\n .map((entry) => entry.map(encodeURIComponent).join('='))\n .join('&'),\n };\n } else {\n return uri;\n }\n};\n\nexport const addQueryEntries = (entries: QueryEntry[], uri: Uri): Uri => {\n return entries.reduce((result, entry) => addQueryEntry(entry, result), uri);\n};\n\nexport const addQueryParams = (params: Record<string, any>, uri: Uri): Uri => {\n return mapAsEntries(params).reduce(\n (result, entry) => addQueryEntry(entry, result),\n uri\n );\n};\n\nexport const replaceFragment = (fragment: string, uri: Uri): Uri => {\n return { ...uri, fragment };\n};\n\n/**\n * Return an array of name/value pairs representing the query string of a URI.\n * The returned names and values will be URI decoded. If the query string is\n * empty, then an empty array is returned.\n *\n * @param uri A URI to return the query string for.\n */\nexport const queryAsArray = (uri: Uri): QueryEntry[] => {\n if (uri.query != null) {\n return stringAsQueryArray(uri.query);\n } else {\n return [];\n }\n};\n\nconst stringAsQueryArray = (queryString: string): QueryEntry[] => {\n return queryString\n .split('&')\n .map((param) =>\n param.split('=').map((value) => decodeURIComponent(value))\n ) as QueryEntry[];\n};\n\n/**\n * Return a map containing a URI's query string names and their values. The\n * returned names and values will be URI decoded. If the query string contains\n * multiple instances of the same name, then the last occurrence will be used.\n *\n * If the query string is empty, an empty map is returned.\n *\n * @param uri A URI to return the query string for.\n */\nexport const queryAsMap = (uri: Uri): QueryMap => {\n return queryAsArray(uri).reduce((map, [name, value]) => {\n return { ...map, [name]: value };\n }, {});\n};\n\nexport const toString = (uri: Uri): string => {\n let result = '';\n\n if (uri.scheme != null && uri.scheme.length > 0) {\n result = `${uri.scheme}:`;\n }\n\n if (uri.authority != null && uri.authority.length > 0) {\n result += `//${uri.authority}`;\n }\n\n result += uri.path;\n\n if (uri.query != null && uri.query.length > 0) {\n result += `?${uri.query}`;\n }\n\n if (uri.fragment != null && uri.fragment.length > 0) {\n result += `#${uri.fragment}`;\n }\n\n return result;\n};\n\nconst sanitizePath = (path: string[]): string[] => {\n return path.filter((segment) => segment.length > 0);\n};\n\nconst mapAsEntries = (map: Record<string, any>): QueryEntry[] => {\n const entries: QueryEntry[] = [];\n for (const key in map) {\n entries.push([key, map[key]]);\n }\n return entries;\n};\n\nconst sortByQueryName = (entries: QueryEntry[]): QueryEntry[] => {\n return entries.concat().sort(Sort.head(Sort.asc));\n};\n\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","import crypto from 'crypto';\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\nexport default function rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n crypto.randomFillSync(rnds8Pool);\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import { v4 as uuid } from 'uuid';\n\nexport type UUID = string;\n\nexport interface UUIDMsbLsb {\n msb: string;\n lsb: string;\n}\n\nexport function create(): UUID {\n return uuid();\n}\n\nexport function fromMsbLsb(msb: bigint | string, lsb: bigint | string): UUID {\n function digits(val: bigint, ds: bigint): string {\n const hi = BigInt(1) << (ds * BigInt(4));\n return (hi | (val & (hi - BigInt(1)))).toString(16).substring(1);\n }\n\n const msbB = typeof msb === 'string' ? BigInt(msb) : msb;\n const lsbB = typeof lsb === 'string' ? BigInt(lsb) : lsb;\n\n const sec1 = digits(msbB >> BigInt(32), BigInt(8));\n const sec2 = digits(msbB >> BigInt(16), BigInt(4));\n const sec3 = digits(msbB, BigInt(4));\n const sec4 = digits(lsbB >> BigInt(48), BigInt(4));\n const sec5 = digits(lsbB, BigInt(12));\n\n return `${sec1}-${sec2}-${sec3}-${sec4}-${sec5}`;\n}\n\nexport function toMsbLsb(id: UUID): UUIDMsbLsb {\n const [c1, c2, c3, c4, c5] = id.split('-');\n\n if (c1 == null || c2 == null || c3 == null || c4 == null || c5 == null) {\n throw new Error(`Invalid UUID string ${id}`);\n }\n\n const msb = BigInt.asIntN(64, BigInt(`0x${c1 + c2 + c3}`));\n const lsb = BigInt.asIntN(64, BigInt(`0x${c4 + c5}`));\n\n return { msb: msb.toString(), lsb: lsb.toString() };\n}\n","import { Disposable } from './disposable';\nimport { Predicate } from './predicate';\n\nexport type Listener<T> = (event: T) => void;\n\ninterface OnOptions {\n abort?: AbortSignal;\n}\n\nexport class EventDispatcher<T> {\n private listeners: Listener<T>[] = [];\n\n public on(listener: Listener<T>, opts: OnOptions = {}): Disposable {\n this.listeners.push(listener);\n\n const controller = new AbortController();\n controller.signal.addEventListener('abort', () => this.off(listener));\n opts.abort?.addEventListener('abort', () => controller.abort());\n\n return { dispose: () => controller.abort() };\n }\n\n public once(opts: OnOptions = {}): Promise<T> {\n return new Promise((resolve) => {\n this.on((event) => resolve(event), opts);\n });\n }\n\n public async onceWhen(\n predicate: Predicate<T>,\n opts: OnOptions = {}\n ): Promise<T> {\n const controller = new AbortController();\n opts.abort?.addEventListener('abort', () => controller.abort());\n\n return new Promise((resolve) => {\n this.when(\n predicate,\n (event) => {\n if (predicate(event)) {\n controller.abort();\n resolve(event);\n }\n },\n { ...opts, abort: controller.signal }\n );\n });\n }\n\n public when(\n predicate: Predicate<T>,\n listener: Listener<T>,\n opts: OnOptions = {}\n ): Disposable {\n return this.on((event) => {\n if (predicate(event)) {\n listener(event);\n }\n }, opts);\n }\n\n public off(listener: Listener<T>): void {\n const index = this.listeners.indexOf(listener);\n if (index !== -1) {\n this.listeners.splice(index, 1);\n }\n }\n\n public emit(event: T): void {\n this.listeners.forEach((listener) => listener(event));\n }\n}\n"],"names":["create","isPlainObject","isSimpleObject","isEqual","Sort.head","Sort.asc","uuid"],"mappings":"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"}
|
package/dist/mapper.d.ts
CHANGED
|
@@ -179,6 +179,7 @@ export declare function read<T, R1, R2, R3, R4, R5, R6, R7>(a: Func<T, R1>, b: F
|
|
|
179
179
|
export declare function read<T, R1, R2, R3, R4, R5, R6, R7, R8>(a: Func<T, R1>, b: Func<T, R2>, c: Func<T, R3>, d: Func<T, R4>, e: Func<T, R5>, f: Func<T, R6>, g: Func<T, R7>, h: Func<T, R8>): Func<T, [R1, R2, R3, R4, R5, R6, R7, R8]>;
|
|
180
180
|
export declare function read<T, R1, R2, R3, R4, R5, R6, R7, R8, R9>(a: Func<T, R1>, b: Func<T, R2>, c: Func<T, R3>, d: Func<T, R4>, e: Func<T, R5>, f: Func<T, R6>, g: Func<T, R7>, h: Func<T, R8>, i: Func<T, R9>): Func<T, [R1, R2, R3, R4, R5, R6, R7, R8, R9]>;
|
|
181
181
|
export declare function read<T, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10>(a: Func<T, R1>, b: Func<T, R2>, c: Func<T, R3>, d: Func<T, R4>, e: Func<T, R5>, f: Func<T, R6>, g: Func<T, R7>, h: Func<T, R8>, i: Func<T, R9>, j: Func<T, R10>): Func<T, [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10]>;
|
|
182
|
+
export declare function read<T, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11>(a: Func<T, R1>, b: Func<T, R2>, c: Func<T, R3>, d: Func<T, R4>, e: Func<T, R5>, f: Func<T, R6>, g: Func<T, R7>, h: Func<T, R8>, i: Func<T, R9>, j: Func<T, R10>, k: Func<T, R11>): Func<T, [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11]>;
|
|
182
183
|
/**
|
|
183
184
|
* Defines a mapper that reads the values from an input and invokes a builder to
|
|
184
185
|
* transform data from one schema to another.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vertexvis/utils",
|
|
3
|
-
"version": "0.24.3
|
|
3
|
+
"version": "0.24.3",
|
|
4
4
|
"description": "Utility library for Viewer SDK.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Vertex Developers <support@vertexvis.com> (https://developer.vertexvis.com)",
|
|
@@ -46,10 +46,10 @@
|
|
|
46
46
|
"@types/uuid": "^8.3.4",
|
|
47
47
|
"@vertexvis/eslint-config-vertexvis-typescript": "^0.5.0",
|
|
48
48
|
"@vertexvis/jest-config-vertexvis": "^0.5.4",
|
|
49
|
-
"@vertexwebsdk/build": "0.24.3
|
|
49
|
+
"@vertexwebsdk/build": "0.24.3",
|
|
50
50
|
"eslint": "^8.57.1",
|
|
51
51
|
"jest": "^27.5.1",
|
|
52
|
-
"rollup": "^2.
|
|
52
|
+
"rollup": "^2.80.0",
|
|
53
53
|
"ts-jest": "^27.1.4",
|
|
54
54
|
"tslib": "^2.1.0",
|
|
55
55
|
"typescript": "^4.5.4"
|
|
@@ -57,5 +57,5 @@
|
|
|
57
57
|
"peerDependencies": {
|
|
58
58
|
"tslib": ">=2.1.0"
|
|
59
59
|
},
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "e542667dfb640e3a27a933f88c11e5681a106fea"
|
|
61
61
|
}
|