inferred-types 0.55.23 → 1.0.0-beta.2
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/README.md +3 -2
- package/modules/constants/dist/index.cjs +8641 -3110
- package/modules/constants/dist/index.cjs.map +1 -1
- package/modules/constants/dist/index.d.cts +4620 -0
- package/modules/constants/dist/index.d.cts.map +1 -0
- package/modules/constants/dist/index.d.ts +3502 -2987
- package/modules/constants/dist/index.d.ts.map +1 -0
- package/modules/constants/dist/index.js +8406 -2897
- package/modules/constants/dist/index.js.map +1 -1
- package/modules/inferred-types/dist/index.cjs +18 -9778
- package/modules/inferred-types/dist/index.d.cts +3 -0
- package/modules/inferred-types/dist/index.d.ts +3 -39237
- package/modules/inferred-types/dist/index.js +3 -9063
- package/modules/runtime/dist/index.cjs +16161 -6430
- package/modules/runtime/dist/index.cjs.map +1 -1
- package/modules/runtime/dist/index.d.cts +14592 -0
- package/modules/runtime/dist/index.d.cts.map +1 -0
- package/modules/runtime/dist/index.d.ts +10550 -11940
- package/modules/runtime/dist/index.d.ts.map +1 -0
- package/modules/runtime/dist/index.js +15545 -5915
- package/modules/runtime/dist/index.js.map +1 -1
- package/modules/types/dist/index.d.mts +28483 -0
- package/modules/types/dist/index.d.mts.map +1 -0
- package/modules/types/dist/index.d.ts +23952 -14621
- package/modules/types/dist/index.d.ts.map +1 -0
- package/modules/types/dist/index.js +224 -201
- package/modules/types/dist/index.js.map +1 -1
- package/modules/types/dist/index.mjs +216 -0
- package/modules/types/dist/index.mjs.map +1 -0
- package/package.json +126 -106
- package/modules/inferred-types/dist/index.cjs.map +0 -1
- package/modules/inferred-types/dist/index.js.map +0 -1
- package/modules/types/dist/index.cjs +0 -249
- package/modules/types/dist/index.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/api/defineApi.ts","../src/api/handleDoneFn.ts","../src/api/objectToApi.ts","../src/boolean-logic/ifArray.ts","../src/boolean-logic/ifArrayPartial.ts","../src/boolean-logic/ifBoolean.ts","../../constants/src/Alpha.ts","../../constants/src/Books.ts","../../constants/src/Characters.ts","../../constants/src/colors.ts","../../constants/src/Comma.ts","../../constants/src/CommonObjProps.ts","../../constants/src/Consonants.ts","../../constants/src/createConstant.ts","../../constants/src/DateTime.ts","../../constants/src/FalsyValues.ts","../../constants/src/Functional.ts","../../constants/src/Geo.ts","../../constants/src/HashTable.ts","../../constants/src/HTML.ts","../../constants/src/Http.ts","../../constants/src/Images.ts","../../constants/src/ISO3166.ts","../../constants/src/Marked.ts","../../constants/src/Markers.ts","../../constants/src/Metrics.ts","../../constants/src/NetworkConstants.ts","../../constants/src/Never.ts","../../constants/src/News.ts","../../constants/src/NoDefaultValue.ts","../../constants/src/NotApplicable.ts","../../constants/src/NotDefined.ts","../../constants/src/NumericChar.ts","../../constants/src/NumericDigit.ts","../../constants/src/Phone.ts","../../constants/src/PluralExceptions.ts","../../constants/src/ProxmoxConstants.ts","../../constants/src/RepoConstants.ts","../../constants/src/Retail.ts","../../constants/src/Shape.ts","../../constants/src/SimpleTokens.ts","../../constants/src/SingularNounEnding.ts","../../constants/src/Social.ts","../../constants/src/Tailwind.ts","../../constants/src/Wide.ts","../../constants/src/TypeComparisons.ts","../../constants/src/TypeOf.ts","../../constants/src/Types.ts","../../constants/src/TypeTokens.ts","../../constants/src/TypeTokenVariants.ts","../../constants/src/TypeTransforms.ts","../src/boolean-logic/ifChar.ts","../src/boolean-logic/ifContainer.ts","../src/boolean-logic/ifEqual.ts","../src/boolean-logic/ifFalse.ts","../src/boolean-logic/ifFunction.ts","../src/boolean-logic/ifHasKey.ts","../src/boolean-logic/ifLength.ts","../src/boolean-logic/ifNotNull.ts","../src/boolean-logic/ifNull.ts","../src/boolean-logic/ifNumber.ts","../src/boolean-logic/ifObject.ts","../src/boolean-logic/ifSameType.ts","../src/boolean-logic/ifScalar.ts","../src/boolean-logic/ifString.ts","../src/boolean-logic/ifTrue.ts","../src/boolean-logic/ifUndefined.ts","../src/combinators/and.ts","../src/combinators/or.ts","../src/css/createCssKeyframe.ts","../src/css/cssFromDefinition.ts","../src/datetime/asDate.ts","../src/datetime/asIsoDate.ts","../src/datetime/getDaysBetween.ts","../src/datetime/getToday.ts","../src/datetime/getTomorrow.ts","../src/datetime/getWeekNumber.ts","../src/datetime/getYesterday.ts","../src/datetime/isLeapYear.ts","../src/dictionary/defineObject.ts","../src/dictionary/entries.ts","../src/dictionary/get.ts","../src/dictionary/keysOf.ts","../src/dictionary/narrowObjectTo.ts","../src/dictionary/objectValues.ts","../src/dictionary/omit.ts","../src/dictionary/retain.ts","../src/dictionary/sharedKeys.ts","../src/dictionary/takeProp.ts","../src/dictionary/valuesOf.ts","../src/dictionary/withDefaults.ts","../src/dictionary/withKeys.ts","../src/dictionary/withoutKeys.ts","../src/dictionary/withoutValue.ts","../src/dictionary/withValue.ts","../src/errors/createErrorCondition.ts","../src/functional/result.ts","../src/functions/fnMeta.ts","../src/functions/wrapFn.ts","../src/initializers/addFnToProps.ts","../src/initializers/addPropsToFn.ts","../src/initializers/createCssSelector.ts","../src/initializers/createFnWithProps.ts","../src/initializers/defineObj.ts","../src/initializers/defineTuple.ts","../src/lists/asArray.ts","../src/lists/createConverter.ts","../src/lists/createFixedLengthArray.ts","../src/lists/filter.ts","../src/lists/filterEmpty.ts","../src/type-guards/isFunction.ts","../src/type-guards/isObject.ts","../src/type-guards/api-tg.ts","../src/type-guards/date-time/isDate.ts","../src/type-guards/date-time/isDateTime.ts","../src/type-guards/date-time/isIsoDate.ts","../src/type-guards/date-time/isIsoTime.ts","../src/type-guards/date-time/isIsoYear.ts","../src/type-guards/date-time/isLuxonDateTime.ts","../src/type-guards/date-time/isMoment.ts","../src/type-guards/date-time/isThisMonth.ts","../src/type-guards/date-time/isThisWeek.ts","../src/type-guards/date-time/isThisYear.ts","../src/type-guards/date-time/isToday.ts","../src/type-guards/date-time/isTomorrow.ts","../src/type-guards/date-time/isYesterday.ts","../src/type-guards/finance/CreditCards.ts","../src/type-guards/isString.ts","../src/type-guards/geo/isIso3166Alpha2.ts","../src/type-guards/geo/isUsState.ts","../src/type-guards/isNumericString.ts","../src/type-guards/numeric/isNumber.ts","../src/type-guards/geo/isZipCode.ts","../src/type-guards/isSpecificConstant.ts","../src/type-guards/hasDefaultValue.ts","../src/type-guards/hasIndexOf.ts","../src/type-guards/hasKeys.ts","../src/type-conversion/asChars.ts","../src/type-conversion/asRecord.ts","../src/type-conversion/asString.ts","../src/type-conversion/csv.ts","../src/type-conversion/fromKeyValue.ts","../src/type-conversion/intersect.ts","../src/type-conversion/ip6GroupExpansion.ts","../src/type-conversion/json.ts","../src/type-conversion/lookupCountry.ts","../src/type-conversion/map/createMapper.ts","../src/type-conversion/mergeObjects.ts","../src/type-guards/isUndefined.ts","../src/type-conversion/mergeScalars.ts","../src/type-conversion/mergeTuples.ts","../src/type-conversion/never.ts","../src/type-conversion/optional.ts","../src/type-conversion/stripParenthesis.ts","../src/type-conversion/toKeyValue.ts","../src/type-conversion/toNumber.ts","../src/type-conversion/tw-conversion.ts","../src/type-conversion/union.ts","../src/type-conversion/unionize.ts","../src/type-guards/hasWhitespace.ts","../src/type-guards/higher-order/endsWith.ts","../src/type-guards/higher-order/isEqual.ts","../src/type-guards/higher-order/isLength.ts","../src/type-guards/higher-order/isSameTypeOf.ts","../src/type-guards/higher-order/isTuple.ts","../src/type-guards/higher-order/isTypeOf.ts","../src/type-guards/higher-order/startsWith.ts","../src/type-guards/html/component-tags.ts","../src/type-guards/html/hasHtml.ts","../src/type-guards/html/html-tags.ts","../src/type-guards/html/isHtml.ts","../src/type-guards/html/isHtmlElement.ts","../src/type-guards/html/validHtmlAttributes.ts","../src/type-guards/isAlpha.ts","../src/type-guards/isArray.ts","../src/type-guards/isBoolean.ts","../src/type-guards/isBooleanLike.ts","../src/type-guards/isConstant.ts","../src/type-guards/isContainer.ts","../src/type-guards/isCssAspectRatio.ts","../src/type-guards/isCsv.ts","../src/type-guards/isDefined.ts","../src/type-guards/isDoneFn.ts","../src/type-guards/isEmail.ts","../src/type-guards/isEmpty.ts","../src/type-guards/isErrorCondition.ts","../src/type-guards/isFalse.ts","../src/type-guards/isFalsy.ts","../src/type-guards/isFnWithParams.ts","../src/type-guards/isHexadecimal.ts","../src/type-guards/isIndexable.ts","../src/type-guards/isInlineSvg.ts","../src/type-guards/isMap.ts","../src/type-guards/isNever.ts","../src/type-guards/isNothing.ts","../src/type-guards/isNotNull.ts","../src/type-guards/isNull.ts","../src/type-guards/isSymbol.ts","../src/type-guards/isObjectKey.ts","../src/type-guards/isPhoneNumber.ts","../src/type-guards/isReadonlyArray.ts","../src/type-guards/isRef.ts","../src/type-guards/isRegExp.ts","../src/type-guards/isScalar.ts","../src/type-guards/isSet.ts","../src/type-guards/isSetContainer.ts","../src/type-guards/isStringArray.ts","../src/type-guards/isThenable.ts","../src/type-guards/isTrimmable.ts","../src/type-guards/isTrue.ts","../src/type-guards/isTruthy.ts","../src/type-guards/isTypeSubtype.ts","../src/type-guards/isTypeTuple.ts","../src/type-guards/isUnset.ts","../src/type-guards/isUrl.ts","../src/type-guards/isVariable.ts","../src/type-guards/metrics/isMetric.ts","../src/type-guards/metrics/isUom.ts","../src/type-guards/network-tg.ts","../src/type-guards/numeric/isNumericArray.ts","../src/type-guards/protocol.ts","../src/type-guards/tokens/general.ts","../src/type-guards/tokens/isAtomicToken.ts","../src/type-guards/tokens/isContainerToken.ts","../src/type-guards/tokens/isShapeCallback.ts","../src/type-guards/tokens/isShapeToken.ts","../src/type-guards/tokens/isSimpleToken.ts","../src/type-guards/tokens/isDefineObject.ts","../src/type-guards/tokens/isFunctionToken.ts","../src/type-guards/tokens/set-tokens.ts","../src/type-guards/tokens/singletons.ts","../src/type-guards/tw/tw-color.ts","../src/type-guards/urls/news/australian.ts","../src/type-guards/urls/news/belgium.ts","../src/type-guards/urls/news/canadian.ts","../src/type-guards/urls/news/danish.ts","../src/type-guards/urls/news/dutch.ts","../src/type-guards/urls/news/french.ts","../src/type-guards/urls/news/german.ts","../src/type-guards/urls/news/indian.ts","../src/type-guards/urls/news/italian.ts","../src/type-guards/urls/news/japanese.ts","../src/type-guards/urls/news/mexican.ts","../src/type-guards/urls/news/norwegian.ts","../src/type-guards/urls/news/south-korean.ts","../src/type-guards/urls/news/spanish.ts","../src/type-guards/urls/news/swiss.ts","../src/type-guards/urls/news/turkish.ts","../src/type-guards/urls/news/uk.ts","../src/type-guards/urls/news/us.ts","../src/type-guards/urls/news/chinese.ts","../src/type-guards/urls/news/index.ts","../src/type-guards/urls/repos/bitbucket.ts","../src/type-guards/urls/repos/codeCommit.ts","../src/type-guards/urls/repos/github.ts","../src/type-guards/urls/repos/isSemanticVersion.ts","../src/type-guards/urls/repos/index.ts","../src/type-guards/urls/retail.ts","../src/type-guards/urls/Social.ts","../src/type-guards/urls/youtube.ts","../src/type-guards/vue/isVueRef.ts","../src/lists/filterUndefined.ts","../src/lists/find.ts","../src/lists/getEach.ts","../src/lists/indexOf.ts","../src/lists/intersection.ts","../src/lists/joinWith.ts","../src/lists/last.ts","../src/lists/logicalReturns.ts","../src/lists/mapOver.ts","../src/lists/reverse.ts","../src/lists/shift.ts","../src/lists/slice.ts","../src/lists/unique.ts","../src/literals/box.ts","../src/literals/capitalize.ts","../src/literals/color/cssColor.ts","../src/literals/color/twColor.ts","../src/literals/ensureLeading.ts","../src/literals/ensureSurround.ts","../src/literals/ensureTrailing.ts","../src/literals/getTypeSubtype.ts","../src/literals/identity.ts","../src/literals/ifLowercase.ts","../src/literals/ifUppercase.ts","../src/literals/infer.ts","../src/literals/literal.ts","../src/literals/lowercase.ts","../src/literals/narrow.ts","../src/literals/pathJoin.ts","../src/literals/phone/asPhoneNumber.ts","../src/literals/phone/getPhoneCountryCode.ts","../src/literals/phone/removePhoneCountryCode.ts","../src/literals/pluralize.ts","../src/literals/retainAfter.ts","../src/literals/retainChars.ts","../src/literals/retainUntil.ts","../src/literals/retainWhile.ts","../src/literals/rightWhitespace.ts","../src/literals/split.ts","../src/literals/stripAfter.ts","../src/literals/stripBefore.ts","../src/literals/stripChars.ts","../src/literals/stripLeading.ts","../src/literals/stripSurround.ts","../src/literals/stripTrailing.ts","../src/literals/stripUntil.ts","../src/literals/stripWhile.ts","../src/literals/surround.ts","../src/literals/takeNumericCharacters.ts","../src/literals/toCamelCase.ts","../src/literals/toKebabCase.ts","../src/literals/toNumericArray.ts","../src/literals/toPascalCase.ts","../src/literals/toSnakeCase.ts","../src/literals/toString.ts","../src/literals/toUppercase.ts","../src/literals/trim.ts","../src/literals/truncate.ts","../src/literals/tuple.ts","../src/literals/uncapitalize.ts","../src/literals/unset.ts","../src/literals/uppercase.ts","../src/literals/widen.ts","../src/meta/urlMeta.ts","../src/meta/youtube-meta.ts","../src/queues/fifo.ts","../src/queues/lifo.ts","../src/runtime-types/asToken.ts","../src/runtime-types/shape-helpers/addToken.ts","../src/runtime-types/shape-helpers/atomics.ts","../src/runtime-types/shape-helpers/functions.ts","../src/runtime-types/shape-helpers/literal-containers.ts","../src/runtime-types/shape-helpers/regexToken.ts","../src/runtime-types/shape-helpers/singletons.ts","../src/runtime-types/shape-helpers/union.ts","../src/runtime-types/shape-helpers/wide-containers.ts","../src/runtime-types/shape.ts","../src/runtime-types/asDefineObject.ts","../src/runtime-types/asType.ts","../src/runtime-types/choices.ts","../src/runtime-types/doesExtend.ts","../src/runtime-types/ip6Prefix.ts","../src/runtime-types/list.ts","../src/runtime-types/tokens/createTypeToken.ts","../src/runtime-types/tokens/fromDefineObject.ts","../src/runtime-types/tokens/getTokenKind.ts","../src/runtime-types/tokens/simpleToken.ts","../src/sets/hasOverlappingKeys.ts","../src/sets/uniqueKeys.ts","../src/vuejs/asVueRef.ts"],"sourcesContent":["import type {\n Api,\n AsApi,\n AsEscapeFunction,\n AsOptionalParamFn,\n Dictionary,\n Narrowable,\n OnPass,\n TypedFunction,\n} from \"inferred-types/types\";\nimport {\n createErrorCondition,\n createFnWithProps,\n isApi,\n isApiSurface,\n} from \"inferred-types/runtime\";\n\n/**\n * **asEscapeFunction**`(fn)`\n *\n * Accepts a zero-parameter function as an escape function.\n */\nexport function asEscapeFunction<\n TFn extends () => Narrowable,\n>(fn: TFn) {\n return createFnWithProps(fn, { escape: true }) as unknown as AsEscapeFunction<TFn>;\n}\n\n/**\n * **asOptionalParamFunction**`(fn)`\n *\n * Marks a function as being optionally callable with _no parameters_.\n */\nexport function asOptionalParamFunction<\n TFn extends (() => any) | ((p1?: any, p2?: any, p3?: any, p4?: any) => any),\n>(fn: TFn) {\n return createFnWithProps(fn, { optionalParams: true }) as unknown as AsOptionalParamFn<TFn>;\n}\n\n/**\n * **asApi**`(surface)`\n *\n * Validates an API surface as a stateless API and returns it as `Api<Surface>` if\n * it qualifies, otherwise results in an ErrorCondition.\n */\nexport function asApi<T extends Dictionary | TypedFunction>(api: T): OnPass<AsApi<T>, Api<T>> {\n return (\n isApi(api)\n ? api\n : isApiSurface(api)\n ? { _kind: \"api\", surface: api }\n : createErrorCondition(\"invalid-api\")\n ) as unknown as OnPass<AsApi<T>, Api<T>>;\n}\n","import { isDoneFn, isFunction, isObject } from \"inferred-types/runtime\";\n\n/**\n * **handleDoneFn**(val, [bare_fn])\n *\n * Looks at the value passed in and if it's an object with\n * a property `done` which is a function it will call it;\n * otherwise it will proxy the value through.\n *\n * If you wish to also detect a bare function and have it\n * call that too, you can set the `call_bare_fn` to **true**.\n */\nexport function handleDoneFn<\n TVal,\n TBareFn extends boolean,\n>(val: TVal, call_bare_fn: TBareFn = false as TBareFn) {\n return isObject(val) || isFunction(val)\n ? isDoneFn(val)\n ? val.done()\n : isFunction(val)\n ? call_bare_fn ? val() : val\n : val\n : isFunction(val)\n ? call_bare_fn ? val() : val\n : val;\n}\n","import type {\n AnyObject,\n DefineObject,\n ErrMsg,\n FromDefineObject,\n HandleDoneFn,\n Narrowable,\n ObjectApiCallback,\n ObjectToApi,\n} from \"inferred-types/types\";\nimport { createFnWithProps } from \"inferred-types/runtime\";\nimport { handleDoneFn } from \"./handleDoneFn\";\n\nexport function objectToApi<\n TObj extends Record<string, N>,\n N extends Narrowable,\n TDef = never,\n>(\n obj: TObj,\n def: TDef = null as never as TDef,\n): ObjectToApi<TObj, TDef> {\n const transformed = Object.keys(obj).reduce(\n (acc, key) => {\n const val = obj[key as keyof typeof obj];\n return {\n ...acc,\n [key]: () => val,\n };\n },\n {},\n );\n\n const api = {\n __kind: \"ObjectApi\",\n done: (): TDef => def,\n ...transformed,\n } as unknown as ObjectToApi<TObj, TDef>;\n\n return api;\n}\n\ntype MapperReturns<\n TInput extends AnyObject,\n TOutput extends AnyObject,\n T extends ObjectApiCallback<any, any>,\n> = HandleDoneFn<ReturnType<T>> extends TOutput\n ? HandleDoneFn<ReturnType<T>>\n : ErrMsg<\"invalid-mapper\", { input: TInput; output: TOutput }>;\n\n/** creates a mapping between the input and output types */\nfunction mapper<\n TInput extends AnyObject,\n TOutput extends AnyObject,\n>() {\n type Callback = ObjectApiCallback<TInput>;\n\n return <T extends Callback>(map: T) => {\n // const mapFn = narrowObjectToType<TInput>().cb;\n\n return <I extends Record<string, N>, N extends Narrowable>(\n input: I & TInput,\n ): MapperReturns<I, TOutput, T> => {\n const api = objectToApi(input) as unknown as ObjectToApi<TInput>;\n const rtn = map(api);\n\n return handleDoneFn(rtn) as MapperReturns<I, TOutput, T>;\n };\n };\n}\n\nfunction objectApi<TInput extends AnyObject>() {\n return {\n mapTo: <TToDefn extends DefineObject>(_defn: TToDefn) => ({\n mapper: mapper<TInput, FromDefineObject<TToDefn>>(),\n }),\n mapToWithType: <TOutput extends AnyObject>() => mapper<TInput, TOutput>(),\n };\n}\n\nfunction defineObjectApi__Fn<T extends DefineObject>(_inputDefn: T) {\n return objectApi<FromDefineObject<T>>();\n}\nconst defineObjectApi__Prop = {\n withType: <TInput extends AnyObject>() => {\n return objectApi<TInput>();\n },\n};\n\n/**\n * **defineObjectApi**`(inputDefn) → api`\n *\n * **defineObjectApi.withType**`<TInput>() → api`\n *\n * a\n */\nexport const defineObjectApi = createFnWithProps(\n defineObjectApi__Fn,\n defineObjectApi__Prop,\n);\n\n// const a = defineObjectApi.withType<{ foo: string; bar: number }>()\n// .mapTo({\n// one: \"number\",\n// two: \"string(foo,bar,baz)\",\n// })\n// .mapper(i => ({\n// one: i.bar(),\n// two: [\"foo\", \"bar\", \"baz\"].includes(i.foo()) ? i.foo() as \"foo\" | \"bar\" | \"baz\" : \"foo\",\n// }));\n\n// const b = a({ foo: \"bar\", bar: 42 });\n","import type { IsArray, Narrowable } from \"inferred-types/types\";\n\n/**\n * **ifArray**(T, IF, ELSE)\n *\n * A utility which evaluates a type `T` for whether it is an array and then\n */\nexport function ifArray<\n // value which is possibly an array\n T extends Narrowable,\n // functions which return a known type\n IF extends Narrowable,\n ELSE extends Narrowable,\n>(\n val: T,\n isAnArray: <N extends T & unknown[]>(arr: N) => IF,\n isNotAnArray: <N extends Exclude<T, unknown[] | readonly unknown[]>>(nonArr: N) => ELSE,\n) {\n return (\n Array.isArray(val) ? isAnArray(val) : isNotAnArray(val as Exclude<T, unknown[] | readonly unknown[]>)\n ) as IsArray<T> extends true ? IF : ELSE;\n}\n","import type { Narrowable } from \"inferred-types/types\";\nimport { ifArray } from \"./ifArray\";\n\nexport function ifArrayPartial<T extends Narrowable>() {\n return <IF extends Narrowable, ELSE extends Narrowable>(\n isAnArray: <N extends T & readonly unknown[]>(arr: N) => IF,\n isNotAnArray: <N extends Exclude<T, unknown[] | readonly unknown[]>>(nonArr: N) => ELSE,\n ) => {\n return <V extends T>(val: V) => ifArray(val, isAnArray, isNotAnArray);\n };\n}\n","import type { IsBoolean, Narrowable } from \"inferred-types/types\";\nimport { isBoolean } from \"inferred-types/runtime\";\n\n/**\n * **ifBoolean**\n *\n * Strongly type-aware conditional statement which checks whether a value is\n * a _boolean_ and returns one of two values (strongly typed) based on the evaluation\n * of this criteria.\n *\n * @param val the value being tested\n * @param ifBoolean the value (strongly typed) returned if val is _boolean_\n * @param notBoolean the value (strongly typed) returned if val is NOT a _boolean\n */\nexport function ifBoolean<\n TContent extends Narrowable,\n TIf extends Narrowable,\n TElse extends Narrowable,\n>(\n val: TContent,\n ifBoolean: <V extends boolean>(v: V & TContent) => TIf,\n notBoolean: <V extends Exclude<TContent, boolean>>(v: V) => TElse,\n) {\n return (\n isBoolean(val)\n ? ifBoolean(val as TContent & boolean)\n : notBoolean(val as Exclude<TContent, boolean>)\n ) as unknown as [IsBoolean<TContent>] extends [true] ? TIf : TElse;\n}\n","/**\n * An array of all the lower-cased alphabetic characters\n */\nexport const LOWER_ALPHA_CHARS = [\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\",\n] as const;\n\n/**\n * An array of all the upper-cased alphabetic characters\n */\nexport const UPPER_ALPHA_CHARS = [\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"I\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"O\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n] as const;\n\n/**\n * An array of all alphabetic characters (upper and lower)\n */\nexport const ALPHA_CHARS = [\n ...LOWER_ALPHA_CHARS,\n ...UPPER_ALPHA_CHARS,\n] as const;\n","const string = `{{ string }}`;\n\nexport const AMAZON_BOOKS = [\n `https://www.amazon.com/${string}storeType=ebooks${string}`,\n `https://www.amazon.com/${string}ref=tmm_hrd_swatch${string}`,\n `https://www.amazon.com/${string}ref=tmm_pap_swatch${string}`,\n `https://www.amazon.com/${string}ref=tmm_aud_swatch${string}`,\n `https://www.amazon.com/books-used-books-textbooks/${string}`,\n] as const;\n","export const WHITESPACE_CHARS = [\n \" \",\n \"\\n\",\n \"\\t\",\n \"\\b\",\n] as const;\n","export const CSS_NAMED_COLORS = [\n \"aliceblue\",\n \"antiquewhite\",\n \"aqua\",\n \"aquamarine\",\n \"azure\",\n \"beige\",\n \"bisque\",\n \"black\",\n \"blanchedalmond\",\n \"blue\",\n \"blueviolet\",\n \"brown\",\n \"burlywood\",\n \"cadetblue\",\n \"chartreuse\",\n \"chocolate\",\n \"coral\",\n \"cornflowerblue\",\n \"cornsilk\",\n \"crimson\",\n \"cyan\",\n \"darkblue\",\n \"darkcyan\",\n \"darkgoldenrod\",\n \"darkgray\",\n \"darkgreen\",\n \"darkgrey\",\n \"darkkhaki\",\n \"darkmagenta\",\n \"darkolivegreen\",\n \"darkorange\",\n \"darkorchid\",\n \"darkred\",\n \"darksalmon\",\n \"darkseagreen\",\n \"darkslateblue\",\n \"darkslategray\",\n \"darkslategrey\",\n \"darkturquoise\",\n \"darkviolet\",\n \"deeppink\",\n \"deepskyblue\",\n \"dimgray\",\n \"dimgrey\",\n \"dodgerblue\",\n \"firebrick\",\n \"floralwhite\",\n \"forestgreen\",\n \"fuchsia\",\n \"gainsboro\",\n \"ghostwhite\",\n \"gold\",\n \"goldenrod\",\n \"gray\",\n \"green\",\n \"greenyellow\",\n \"grey\",\n \"honeydew\",\n \"hotpink\",\n \"indianred\",\n \"indigo\",\n \"ivory\",\n \"khaki\",\n \"lavender\",\n \"lavenderblush\",\n \"lawngreen\",\n \"lemonchiffon\",\n \"lightblue\",\n \"lightcoral\",\n \"lightcyan\",\n \"lightgoldenrodyellow\",\n \"lightgray\",\n \"lightgreen\",\n \"lightgrey\",\n \"lightpink\",\n \"lightsalmon\",\n \"lightseagreen\",\n \"lightskyblue\",\n \"lightslategray\",\n \"lightslategrey\",\n \"lightsteelblue\",\n \"lightyellow\",\n \"lime\",\n \"limegreen\",\n \"linen\",\n \"magenta\",\n \"maroon\",\n \"mediumaquamarine\",\n \"mediumblue\",\n \"mediumorchid\",\n \"mediumpurple\",\n \"mediumseagreen\",\n \"mediumslateblue\",\n \"mediumspringgreen\",\n \"mediumturquoise\",\n \"mediumvioletred\",\n \"midnightblue\",\n \"mintcream\",\n \"mistyrose\",\n \"moccasin\",\n \"navajowhite\",\n \"navy\",\n \"oldlace\",\n \"olive\",\n \"olivedrab\",\n \"orange\",\n \"orangered\",\n \"orchid\",\n \"palegoldenrod\",\n \"palegreen\",\n \"paleturquoise\",\n \"palevioletred\",\n \"papayawhip\",\n \"peachpuff\",\n \"peru\",\n \"pink\",\n \"plum\",\n \"powderblue\",\n \"purple\",\n \"rebeccapurple\",\n \"red\",\n \"rosybrown\",\n \"royalblue\",\n \"saddlebrown\",\n \"salmon\",\n \"sandybrown\",\n \"seagreen\",\n \"seashell\",\n \"sienna\",\n \"silver\",\n \"skyblue\",\n \"slateblue\",\n \"slategray\",\n \"slategrey\",\n \"snow\",\n \"springgreen\",\n \"steelblue\",\n \"tan\",\n \"teal\",\n \"thistle\",\n \"tomato\",\n \"turquoise\",\n \"violet\",\n \"wheat\",\n \"white\",\n \"whitesmoke\",\n \"yellow\",\n \"yellowgreen\",\n] as const;\n","import { createConstant } from \"inferred-types/constants\";\n\n/**\n * **COMMA**\n *\n * A constant used for serializing a comma in cases\n * where a comma has special meaning (for instance\n * CSV data where a raw comma is considered a\n * separator)\n */\nexport const COMMA = createConstant(\"comma\");\n\n/**\n * **SerializedComma**\n *\n * A serialized representation of a `,` value.\n */\nexport type SerializedComma = typeof COMMA;\n","export type CommonObjProps = [\n \"id\",\n \"type\",\n \"kind\",\n \"_type\",\n \"_kind\",\n \"key\",\n \"value\",\n \"name\",\n];\n\nexport const COMMON_OBJ_PROPS = [\n \"id\",\n \"type\",\n \"kind\",\n \"_type\",\n \"_kind\",\n \"key\",\n \"value\",\n \"name\",\n] as const;\n","export const CONSONANTS = [\n \"b\",\n \"c\",\n \"d\",\n \"f\",\n \"g\",\n \"h\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"v\",\n \"w\",\n \"x\",\n \"z\",\n \"y\",\n] as const;\n","import type { Constant } from \"./Constant\";\n\n/**\n * **createConstant**(kind)\n *\n * Creates a `Constant<TKind>` type.\n */\nexport function createConstant<TKind extends string>(kind: TKind) {\n return {\n _type: \"Constant\",\n kind,\n } as Constant<TKind>;\n}\n","/**\n * **MONTH_NAME**\n *\n * Full month names.\n */\nexport const MONTH_NAME = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n] as const;\n\n/**\n * **MONTH_ABBR**\n *\n * Abbreviated month names.\n */\nexport const MONTH_ABBR = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n] as const;\n","/**\n * **FALSY_VALUES**\n *\n * A tuple which contains all values which are considered _falsy_ in\n * Javascript.\n */\nexport const FALSY_VALUES = [\n false,\n 0,\n -0,\n \"\",\n null,\n undefined,\n Number.NaN,\n] as const;\n","/**\n * **RESULT**\n *\n * Concrete values for `Ok` and `Err` states.\n */\nexport const RESULT = {\n Ok: \"ok\",\n Err: \"err\",\n} as const;\n\n/**\n * **OPTION**\n *\n * Concrete values for `Some` and `None` states.\n */\nexport const OPTION = {\n Some: 1,\n None: 0,\n} as const;\n","/**\n * The 50 US states: `[name, abbrev, true]`\n */\nexport const US_STATE_LOOKUP_STRICT = [\n { name: \"Alabama\", abbrev: \"AL\" },\n { name: \"Alaska\", abbrev: \"AK\" },\n { name: \"Arizona\", abbrev: \"AZ\" },\n { name: \"Arkansas\", abbrev: \"AR\" },\n { name: \"California\", abbrev: \"CA\" },\n { name: \"Colorado\", abbrev: \"CO\" },\n { name: \"Connecticut\", abbrev: \"CT\" },\n { name: \"Delaware\", abbrev: \"DE\" },\n { name: \"Florida\", abbrev: \"FL\" },\n { name: \"Georgia\", abbrev: \"GA\" },\n { name: \"Hawaii\", abbrev: \"HI\" },\n { name: \"Idaho\", abbrev: \"ID\" },\n { name: \"Illinois\", abbrev: \"IL\" },\n { name: \"Indiana\", abbrev: \"IN\" },\n { name: \"Iowa\", abbrev: \"IA\" },\n { name: \"Kansas\", abbrev: \"KS\" },\n { name: \"Kentucky\", abbrev: \"KY\" },\n { name: \"Louisiana\", abbrev: \"LA\" },\n { name: \"Maine\", abbrev: \"ME\" },\n { name: \"Maryland\", abbrev: \"MD\" },\n { name: \"Massachusetts\", abbrev: \"MA\" },\n { name: \"Michigan\", abbrev: \"MI\" },\n { name: \"Minnesota\", abbrev: \"MN\" },\n { name: \"Mississippi\", abbrev: \"MS\" },\n { name: \"Missouri\", abbrev: \"MO\" },\n { name: \"Montana\", abbrev: \"MT\" },\n { name: \"Nebraska\", abbrev: \"NE\" },\n { name: \"Nevada\", abbrev: \"NV\" },\n { name: \"New Hampshire\", abbrev: \"NH\" },\n { name: \"New Jersey\", abbrev: \"NJ\" },\n { name: \"New Mexico\", abbrev: \"NM\" },\n { name: \"New York\", abbrev: \"NY\" },\n { name: \"North Carolina\", abbrev: \"NC\" },\n { name: \"North Dakota\", abbrev: \"ND\" },\n { name: \"Ohio\", abbrev: \"OH\" },\n { name: \"Oklahoma\", abbrev: \"OK\" },\n { name: \"Oregon\", abbrev: \"OR\" },\n { name: \"Pennsylvania\", abbrev: \"PA\" },\n { name: \"Rhode Island\", abbrev: \"RI\" },\n { name: \"South Carolina\", abbrev: \"SC\" },\n { name: \"South Dakota\", abbrev: \"SD\" },\n { name: \"Tennessee\", abbrev: \"TN\" },\n { name: \"Texas\", abbrev: \"TX\" },\n { name: \"Utah\", abbrev: \"UT\" },\n { name: \"Vermont\", abbrev: \"VT\" },\n { name: \"Virginia\", abbrev: \"VA\" },\n { name: \"Washington\", abbrev: \"WA\" },\n { name: \"West Virginia\", abbrev: \"WV\" },\n { name: \"Wisconsin\", abbrev: \"WI\" },\n { name: \"Wyoming\", abbrev: \"WY\" },\n] as const;\n\n/**\n * The 9 provinces to the US which are granted State codes.\n */\nexport const US_STATE_LOOKUP_PROVINCES = [\n { name: \"Puerto Rico\", abbrev: \"PR\" },\n { name: \"Virgin Islands\", abbrev: \"VI\" },\n { name: \"Palau\", abbrev: \"PW\" },\n { name: \"Federated States of Micronesia\", abbrev: \"FM\" },\n { name: \"Northern Mariana Islands\", abbrev: \"MP\" },\n { name: \"District of Columbia\", abbrev: \"DC\" },\n { name: \"Marshall Islands\", abbrev: \"MH\" },\n { name: \"American Samoa\", abbrev: \"AS\" },\n { name: \"Guam\", abbrev: \"GU\" },\n] as const;\n\n/**\n * All 50 states and 9 provinces which have State abbreviations.\n *\n * Data format is: `[name, abbrev, flag]` where the boolean flag\n * indicates whether the line item is one of the 50 true states.\n */\nexport const US_STATE_LOOKUP = [\n ...US_STATE_LOOKUP_STRICT,\n ...US_STATE_LOOKUP_PROVINCES,\n] as const;\n\n/**\n * A lookup which provides a list of state abbreviations associated\n * with the first digit of the zip code.\n */\nexport const ZIP_TO_STATE = {\n 0: [\"CT\", \"MA\", \"ME\", \"NH\", \"NJ\", \"NY\", \"PR\", \"RI\", \"VT\", \"VI\"],\n 1: [\"DE\", \"NY\", \"PA\"],\n 2: [\"DC\", \"MD\", \"NC\", \"SC\", \"VA\", \"WV\"],\n 3: [\"AL\", \"FL\", \"GA\", \"MS\", \"TN\"],\n 4: [\"IN\", \"KY\", \"MI\", \"OH\"],\n 5: [\"IA\", \"MN\", \"MT\", \"ND\", \"SD\", \"WI\"],\n 6: [\"IL\", \"KS\", \"MO\", \"NE\"],\n 7: [\"AR\", \"LA\", \"OK\", \"TX\"],\n 8: [\"AZ\", \"CO\", \"ID\", \"NM\", \"NV\", \"UT\", \"WY\"],\n 9: [\"AK\", \"AS\", \"CA\", \"GU\", \"HI\", \"MH\", \"FM\", \"MP\", \"OR\", \"PW\", \"WA\"],\n} as const;\n","export const HASH_TABLE_WIDE = {\n string: \"318\",\n number: \"523\",\n boolean: \"21\",\n never: \"!!!\",\n unknown: \"ed\",\n undefined: \"ce\",\n null: \"cc\",\n symbol: \"78\",\n object: \"fe8\",\n array: \"17\",\n record: \"ee\",\n map: \"e65\",\n weakMap: \"e64\",\n set: \"f62\",\n union: \"f61\",\n} as const;\n\nexport const HASH_TABLE_ALPHA_LOWER = {\n a: \"8\",\n b: \"~\",\n c: \"^\",\n d: \".\",\n e: \"82\",\n f: \"89\",\n g: \",\",\n h: \"!\",\n i: \"-7\",\n j: \"-8\",\n k: \"88\",\n l: \"8f\",\n m: \"8e\",\n n: \"6e\",\n o: \"44\",\n p: \"60\",\n q: \"61\",\n r: \"71\",\n s: \":\",\n t: \"-45\",\n u: \"-5\",\n v: \"-9\",\n w: \"-f\",\n x: \"+1\",\n y: \";\",\n z: \"*1\",\n} as const;\n\nexport const HASH_TABLE_SPECIAL = {\n \"!\": \"1\",\n \"@\": \"8\",\n \"#\": \"5\",\n \"$\": \"4\",\n \"%\": \"3\",\n \"^\": \"2\",\n \"&\": \"9\",\n \"*\": \"7\",\n \"(\": \"6\",\n \")\": \"12\",\n \"{\": \"33\",\n \"}\": \"54\",\n \"[\": \"x8\",\n \"]\": \"y4\",\n \":\": \"z2\",\n \";\": \"e88\",\n \"\\\"\": \"c11\",\n \"'\": \"c12\",\n \"<\": \"p3\",\n \",\": \"45\",\n \">\": \"e9\",\n \".\": \"f2\",\n \"?\": \"ee\",\n \"/\": \"u9\",\n \"\\\\\": \"f9\",\n \"|\": \"q1\",\n \"~\": \"fe\",\n \"`\": \"8e\",\n} as const;\n\nexport const HASH_TABLE_DIGIT = {\n 0: \"-2\",\n 1: \"-9\",\n 2: \"ff\",\n 3: \"fe\",\n 4: \"2e\",\n 5: \"cd\",\n 6: \"54\",\n 7: \"27\",\n 8: \"49\",\n 9: \"51\",\n} as const;\n\nexport const HASH_TABLE_ALPHA_UPPER = {\n A: \"b8\",\n B: \"~9\",\n C: \"6^\",\n D: \".8\",\n E: \"5<\",\n F: \">7\",\n G: \"1,\",\n H: \"!7\",\n I: \"8#\",\n J: \"@9\",\n K: \"1*\",\n L: \"4&\",\n M: \"+5\",\n N: \"j|\",\n O: \"-l\",\n P: \"q{\",\n Q: \"]9\",\n R: \"f%\",\n S: \":3\",\n T: \"?+\",\n U: \"}5\",\n V: \"'4\",\n W: \"1@g\",\n X: \"0+1\",\n Y: \"4;\",\n Z: \"a*1\",\n} as const;\n\nexport const HASH_TABLE_CHAR = {\n ...HASH_TABLE_ALPHA_LOWER,\n ...HASH_TABLE_ALPHA_UPPER,\n ...HASH_TABLE_SPECIAL,\n} as const;\n\nexport const HASH_TABLE_OTHER = \"999\" as const;\n","/**\n * An array of all valid HTML tags that have both opening and closing tags.\n */\nexport const HTML_BLOCK_TAGS = [\n \"a\",\n \"abbr\",\n \"address\",\n \"article\",\n \"aside\",\n \"b\",\n \"bdi\",\n \"bdo\",\n \"blockquote\",\n \"body\",\n \"button\",\n \"canvas\",\n \"caption\",\n \"cite\",\n \"code\",\n \"colgroup\",\n \"data\",\n \"datalist\",\n \"dd\",\n \"del\",\n \"details\",\n \"dfn\",\n \"dialog\",\n \"div\",\n \"dl\",\n \"dt\",\n \"em\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"form\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"head\",\n \"header\",\n \"html\",\n \"i\",\n \"iframe\",\n \"ins\",\n \"kbd\",\n \"label\",\n \"legend\",\n \"li\",\n \"main\",\n \"map\",\n \"mark\",\n \"menu\",\n \"meter\",\n \"nav\",\n \"noscript\",\n \"object\",\n \"ol\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"p\",\n \"picture\",\n \"pre\",\n \"progress\",\n \"q\",\n \"rp\",\n \"rt\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"script\",\n \"section\",\n \"select\",\n \"small\",\n \"span\",\n \"strong\",\n \"style\",\n \"sub\",\n \"summary\",\n \"sup\",\n \"svg\",\n \"table\",\n \"tbody\",\n \"td\",\n \"template\",\n \"textarea\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"time\",\n \"title\",\n \"tr\",\n \"u\",\n \"ul\",\n \"var\",\n \"video\",\n] as const;\n\n/**\n * An array of all valid HTML tags that are self-closing (do not have closing tags).\n */\nexport const HTML_ATOMIC_TAGS = [\n \"area\",\n \"base\",\n \"br\",\n \"col\",\n \"embed\",\n \"hr\",\n \"img\",\n \"input\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n] as const;\n","/**\n * A constant array containing a comprehensive list of common MIME (Multipurpose Internet Mail Extensions) types.\n * This array is marked as `const` to enable TypeScript to infer literal types for each element.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types\n */\nexport const MIME_TYPES = [\n // Application MIME Types\n \"application/json\",\n \"application/xml\",\n \"application/javascript\",\n \"application/pdf\",\n \"application/ld+json\",\n \"application/octet-stream\",\n \"application/x-www-form-urlencoded\",\n \"application/vnd.api+json\",\n \"application/msword\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \"application/vnd.ms-excel\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n \"application/vnd.ms-powerpoint\",\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n\n // Text MIME Types\n \"text/plain\",\n \"text/html\",\n \"text/css\",\n \"text/csv\",\n \"text/javascript\",\n \"text/markdown\",\n\n // Image MIME Types\n \"image/jpeg\",\n \"image/png\",\n \"image/gif\",\n \"image/bmp\",\n \"image/webp\",\n \"image/svg+xml\",\n \"image/tiff\",\n\n // Audio MIME Types\n \"audio/mpeg\",\n \"audio/ogg\",\n \"audio/wav\",\n \"audio/webm\",\n \"audio/flac\",\n\n // Video MIME Types\n \"video/mp4\",\n \"video/mpeg\",\n \"video/ogg\",\n \"video/webm\",\n \"video/quicktime\",\n\n // Multipart MIME Types\n \"multipart/form-data\",\n \"multipart/mixed\",\n \"multipart/alternative\",\n \"multipart/related\",\n\n // Font MIME Types\n \"font/woff\",\n \"font/woff2\",\n \"font/ttf\",\n \"font/otf\",\n\n // Other Common MIME Types\n \"application/rss+xml\",\n \"application/atom+xml\",\n \"application/x-pkcs12\",\n \"application/x-shockwave-flash\",\n \"application/x-www-form-urlencoded\",\n \"application/x-font-ttf\",\n \"application/x-font-opentype\",\n \"application/x-font-woff\",\n \"application/x-font-woff2\",\n \"application/vnd.rar\",\n \"application/zip\",\n \"application/x-7z-compressed\",\n] as const;\n","type Url = `http${string}`;\n\ninterface Format {\n ext: string;\n webFormat: boolean;\n name?: string;\n info?: Url;\n other_ext: string[];\n}\n\nexport const IMAGE_FORMAT_LOOKUP = [\n { ext: \"jpg\", webFormat: true, other_ext: [\"jpeg\"] },\n { ext: \"png\", webFormat: true, other_ext: [] },\n { ext: \"gif\", webFormat: true, other_ext: [] },\n { ext: \"heif\", webFormat: true, other_ext: [] },\n { ext: \"svg\", webFormat: true, other_ext: [] },\n { ext: \"raw\", webFormat: false, other_ext: [] },\n { ext: \"dng\", webFormat: false, other_ext: [] },\n { ext: \"avif\", webFormat: true, other_ext: [] },\n { ext: \"webp\", webFormat: true, other_ext: [] },\n { ext: \"tiff\", webFormat: false, other_ext: [\"tif\"] },\n] as const satisfies Format[];\n","/**\n * All country codes (name, alpha-2, country-code)\n */\nexport const ISO3166_1 = [\n { name: \"Afghanistan\", alpha2: \"AF\", countryCode: \"004\", alpha3: \"AFG\" },\n { name: \"Albania\", alpha2: \"AL\", countryCode: \"008\", alpha3: \"ALB\" },\n { name: \"Algeria\", alpha2: \"DZ\", countryCode: \"012\", alpha3: \"DZA\" },\n { name: \"Andorra\", alpha2: \"AD\", countryCode: \"020\", alpha3: \"AND\" },\n { name: \"Angola\", alpha2: \"AO\", countryCode: \"024\", alpha3: \"AGO\" },\n { name: \"Argentina\", alpha2: \"AR\", countryCode: \"032\", alpha3: \"ARG\" },\n { name: \"Australia\", alpha2: \"AU\", countryCode: \"036\", alpha3: \"AUS\" },\n { name: \"Austria\", alpha2: \"AT\", countryCode: \"040\", alpha3: \"AUT\" },\n { name: \"Azerbaijan\", alpha2: \"AZ\", countryCode: \"031\", alpha3: \"AZE\" },\n { name: \"Bahamas\", alpha2: \"BS\", countryCode: \"044\", alpha3: \"BHS\" },\n { name: \"Bangladesh\", alpha2: \"BD\", countryCode: \"050\", alpha3: \"BGD\" },\n { name: \"Belgium\", alpha2: \"BE\", countryCode: \"056\", alpha3: \"BEL\" },\n { name: \"Belize\", alpha2: \"BZ\", countryCode: \"084\", alpha3: \"BLZ\" },\n { name: \"Benin\", alpha2: \"BJ\", countryCode: \"204\", alpha3: \"BEN\" },\n { name: \"Bhutan\", alpha2: \"BT\", countryCode: \"064\", alpha3: \"BTN\" },\n { name: \"Bolivia\", alpha2: \"BO\", countryCode: \"068\", alpha3: \"BOL\" },\n { name: \"Bosnia and Herzegovina\", alpha2: \"BA\", countryCode: \"070\", alpha3: \"BIH\" },\n { name: \"Botswana\", alpha2: \"BW\", countryCode: \"072\", alpha3: \"BWA\" },\n { name: \"Brazil\", alpha2: \"BR\", countryCode: \"076\", alpha3: \"BRA\" },\n { name: \"Brunei Darussalam\", alpha2: \"BN\", countryCode: \"096\", alpha3: \"BRN\" },\n { name: \"Bulgaria\", alpha2: \"BG\", countryCode: \"100\", alpha3: \"BGR\" },\n { name: \"Burkina Faso\", alpha2: \"BF\", countryCode: \"854\", alpha3: \"BFA\" },\n { name: \"Burundi\", alpha2: \"BI\", countryCode: \"108\", alpha3: \"BDI\" },\n { name: \"Cambodia\", alpha2: \"KH\", countryCode: \"116\", alpha3: \"KHM\" },\n { name: \"Cameroon\", alpha2: \"CM\", countryCode: \"120\", alpha3: \"CMR\" },\n { name: \"Canada\", alpha2: \"CA\", countryCode: \"124\", alpha3: \"CAN\" },\n { name: \"Afghanistan\", alpha2: \"AF\", countryCode: \"004\", alpha3: \"AFG\" },\n { name: \"Albania\", alpha2: \"AL\", countryCode: \"008\", alpha3: \"ALB\" },\n { name: \"Algeria\", alpha2: \"DZ\", countryCode: \"012\", alpha3: \"DZA\" },\n { name: \"Andorra\", alpha2: \"AD\", countryCode: \"020\", alpha3: \"AND\" },\n { name: \"Angola\", alpha2: \"AO\", countryCode: \"024\", alpha3: \"AGO\" },\n { name: \"Argentina\", alpha2: \"AR\", countryCode: \"032\", alpha3: \"ARG\" },\n { name: \"Australia\", alpha2: \"AU\", countryCode: \"036\", alpha3: \"AUS\" },\n { name: \"Austria\", alpha2: \"AT\", countryCode: \"040\", alpha3: \"AUT\" },\n { name: \"Azerbaijan\", alpha2: \"AZ\", countryCode: \"031\", alpha3: \"AZE\" },\n { name: \"Bahamas\", alpha2: \"BS\", countryCode: \"044\", alpha3: \"BHS\" },\n { name: \"Bangladesh\", alpha2: \"BD\", countryCode: \"050\", alpha3: \"BGD\" },\n { name: \"Belgium\", alpha2: \"BE\", countryCode: \"056\", alpha3: \"BEL\" },\n { name: \"Belize\", alpha2: \"BZ\", countryCode: \"084\", alpha3: \"BLZ\" },\n { name: \"Benin\", alpha2: \"BJ\", countryCode: \"204\", alpha3: \"BEN\" },\n { name: \"Bhutan\", alpha2: \"BT\", countryCode: \"064\", alpha3: \"BTN\" },\n { name: \"Bolivia\", alpha2: \"BO\", countryCode: \"068\", alpha3: \"BOL\" },\n { name: \"Bosnia and Herzegovina\", alpha2: \"BA\", countryCode: \"070\", alpha3: \"BIH\" },\n { name: \"Botswana\", alpha2: \"BW\", countryCode: \"072\", alpha3: \"BWA\" },\n { name: \"Brazil\", alpha2: \"BR\", countryCode: \"076\", alpha3: \"BRA\" },\n { name: \"Brunei Darussalam\", alpha2: \"BN\", countryCode: \"096\", alpha3: \"BRN\" },\n { name: \"Bulgaria\", alpha2: \"BG\", countryCode: \"100\", alpha3: \"BGR\" },\n { name: \"Burkina Faso\", alpha2: \"BF\", countryCode: \"854\", alpha3: \"BFA\" },\n { name: \"Burundi\", alpha2: \"BI\", countryCode: \"108\", alpha3: \"BDI\" },\n { name: \"Cambodia\", alpha2: \"KH\", countryCode: \"116\", alpha3: \"KHM\" },\n { name: \"Cameroon\", alpha2: \"CM\", countryCode: \"120\", alpha3: \"CMR\" },\n { name: \"Canada\", alpha2: \"CA\", countryCode: \"124\", alpha3: \"CAN\" },\n { name: \"Maldives\", alpha2: \"MV\", countryCode: \"462\", alpha3: \"MDV\" },\n { name: \"Mali\", alpha2: \"ML\", countryCode: \"466\", alpha3: \"MLI\" },\n { name: \"Malta\", alpha2: \"MT\", countryCode: \"470\", alpha3: \"MLT\" },\n { name: \"Marshall Islands\", alpha2: \"MH\", countryCode: \"584\", alpha3: \"MHL\" },\n { name: \"Mauritania\", alpha2: \"MR\", countryCode: \"478\", alpha3: \"MRT\" },\n { name: \"Mauritius\", alpha2: \"MU\", countryCode: \"480\", alpha3: \"MUS\" },\n { name: \"Mexico\", alpha2: \"MX\", countryCode: \"484\", alpha3: \"MEX\" },\n { name: \"Micronesia (Federated States of)\", alpha2: \"FM\", countryCode: \"583\", alpha3: \"FSM\" },\n { name: \"Moldova (Republic of)\", alpha2: \"MD\", countryCode: \"498\", alpha3: \"MDA\" },\n { name: \"Monaco\", alpha2: \"MC\", countryCode: \"492\", alpha3: \"MCO\" },\n { name: \"Mongolia\", alpha2: \"MN\", countryCode: \"496\", alpha3: \"MNG\" },\n { name: \"Montenegro\", alpha2: \"ME\", countryCode: \"499\", alpha3: \"MNE\" },\n { name: \"Morocco\", alpha2: \"MA\", countryCode: \"504\", alpha3: \"MAR\" },\n { name: \"Mozambique\", alpha2: \"MZ\", countryCode: \"508\", alpha3: \"MOZ\" },\n { name: \"Myanmar\", alpha2: \"MM\", countryCode: \"104\", alpha3: \"MMR\" },\n { name: \"Namibia\", alpha2: \"NA\", countryCode: \"516\", alpha3: \"NAM\" },\n { name: \"Nauru\", alpha2: \"NR\", countryCode: \"520\", alpha3: \"NRU\" },\n { name: \"Nepal\", alpha2: \"NP\", countryCode: \"524\", alpha3: \"NPL\" },\n { name: \"Netherlands\", alpha2: \"NL\", countryCode: \"528\", alpha3: \"NLD\" },\n { name: \"New Zealand\", alpha2: \"NZ\", countryCode: \"554\", alpha3: \"NZL\" },\n { name: \"Nicaragua\", alpha2: \"NI\", countryCode: \"558\", alpha3: \"NIC\" },\n { name: \"Niger\", alpha2: \"NE\", countryCode: \"562\", alpha3: \"NER\" },\n { name: \"Nigeria\", alpha2: \"NG\", countryCode: \"566\", alpha3: \"NGA\" },\n { name: \"North Macedonia\", alpha2: \"MK\", countryCode: \"807\", alpha3: \"MKD\" },\n { name: \"Norway\", alpha2: \"NO\", countryCode: \"578\", alpha3: \"NOR\" },\n { name: \"Oman\", alpha2: \"OM\", countryCode: \"512\", alpha3: \"OMN\" },\n { name: \"Pakistan\", alpha2: \"PK\", countryCode: \"586\", alpha3: \"PAK\" },\n { name: \"Palau\", alpha2: \"PW\", countryCode: \"585\", alpha3: \"PLW\" },\n { name: \"Panama\", alpha2: \"PA\", countryCode: \"591\", alpha3: \"PAN\" },\n { name: \"Papua New Guinea\", alpha2: \"PG\", countryCode: \"598\", alpha3: \"PNG\" },\n { name: \"Paraguay\", alpha2: \"PY\", countryCode: \"600\", alpha3: \"PRY\" },\n { name: \"Peru\", alpha2: \"PE\", countryCode: \"604\", alpha3: \"PER\" },\n { name: \"Philippines\", alpha2: \"PH\", countryCode: \"608\", alpha3: \"PHL\" },\n { name: \"Poland\", alpha2: \"PL\", countryCode: \"616\", alpha3: \"POL\" },\n { name: \"Portugal\", alpha2: \"PT\", countryCode: \"620\", alpha3: \"PRT\" },\n { name: \"Qatar\", alpha2: \"QA\", countryCode: \"634\", alpha3: \"QAT\" },\n { name: \"Romania\", alpha2: \"RO\", countryCode: \"642\", alpha3: \"ROU\" },\n { name: \"Russian Federation\", alpha2: \"RU\", countryCode: \"643\", alpha3: \"RUS\" },\n { name: \"Rwanda\", alpha2: \"RW\", countryCode: \"646\", alpha3: \"RWA\" },\n { name: \"Saint Kitts and Nevis\", alpha2: \"KN\", countryCode: \"659\", alpha3: \"KNA\" },\n { name: \"Saint Lucia\", alpha2: \"LC\", countryCode: \"662\", alpha3: \"LCA\" },\n { name: \"Saint Vincent and the Grenadines\", alpha2: \"VC\", countryCode: \"670\", alpha3: \"VCT\" },\n { name: \"Samoa\", alpha2: \"WS\", countryCode: \"882\", alpha3: \"WSM\" },\n { name: \"San Marino\", alpha2: \"SM\", countryCode: \"674\", alpha3: \"SMR\" },\n { name: \"Sao Tome and Principe\", alpha2: \"ST\", countryCode: \"678\", alpha3: \"STP\" },\n { name: \"Saudi Arabia\", alpha2: \"SA\", countryCode: \"682\", alpha3: \"SAU\" },\n { name: \"Senegal\", alpha2: \"SN\", countryCode: \"686\", alpha3: \"SEN\" },\n { name: \"Serbia\", alpha2: \"RS\", countryCode: \"688\", alpha3: \"SRB\" },\n { name: \"Seychelles\", alpha2: \"SC\", countryCode: \"690\", alpha3: \"SYC\" },\n { name: \"Sierra Leone\", alpha2: \"SL\", countryCode: \"694\", alpha3: \"SLE\" },\n { name: \"Singapore\", alpha2: \"SG\", countryCode: \"702\", alpha3: \"SGP\" },\n { name: \"Slovakia\", alpha2: \"SK\", countryCode: \"703\", alpha3: \"SVK\" },\n { name: \"Slovenia\", alpha2: \"SI\", countryCode: \"705\", alpha3: \"SVN\" },\n { name: \"Solomon Islands\", alpha2: \"SB\", countryCode: \"090\", alpha3: \"SLB\" },\n { name: \"Somalia\", alpha2: \"SO\", countryCode: \"706\", alpha3: \"SOM\" },\n { name: \"South Africa\", alpha2: \"ZA\", countryCode: \"710\", alpha3: \"ZAF\" },\n { name: \"South Sudan\", alpha2: \"SS\", countryCode: \"728\", alpha3: \"SSD\" },\n { name: \"Spain\", alpha2: \"ES\", countryCode: \"724\", alpha3: \"ESP\" },\n { name: \"Sri Lanka\", alpha2: \"LK\", countryCode: \"144\", alpha3: \"LKA\" },\n { name: \"Sudan\", alpha2: \"SD\", countryCode: \"729\", alpha3: \"SDN\" },\n { name: \"Suriname\", alpha2: \"SR\", countryCode: \"740\", alpha3: \"SUR\" },\n { name: \"Sweden\", alpha2: \"SE\", countryCode: \"752\", alpha3: \"SWE\" },\n { name: \"Switzerland\", alpha2: \"CH\", countryCode: \"756\", alpha3: \"CHE\" },\n { name: \"Syrian Arab Republic\", alpha2: \"SY\", countryCode: \"760\", alpha3: \"SYR\" },\n { name: \"Taiwan\", alpha2: \"TW\", countryCode: \"158\", alpha3: \"TWN\" },\n { name: \"Tajikistan\", alpha2: \"TJ\", countryCode: \"762\", alpha3: \"TJK\" },\n { name: \"Tanzania\", alpha2: \"TZ\", countryCode: \"834\", alpha3: \"TZA\" },\n { name: \"Thailand\", alpha2: \"TH\", countryCode: \"764\", alpha3: \"THA\" },\n { name: \"Timor-Leste\", alpha2: \"TL\", countryCode: \"626\", alpha3: \"TLS\" },\n { name: \"Togo\", alpha2: \"TG\", countryCode: \"768\", alpha3: \"TGO\" },\n { name: \"Tonga\", alpha2: \"TO\", countryCode: \"776\", alpha3: \"TON\" },\n { name: \"Tonga\", alpha2: \"TO\", countryCode: \"776\", alpha3: \"TON\" },\n { name: \"Trinidad and Tobago\", alpha2: \"TT\", countryCode: \"780\", alpha3: \"TTO\" },\n { name: \"Tunisia\", alpha2: \"TN\", countryCode: \"788\", alpha3: \"TUN\" },\n { name: \"Turkey\", alpha2: \"TR\", countryCode: \"792\", alpha3: \"TUR\" },\n { name: \"Turkmenistan\", alpha2: \"TM\", countryCode: \"795\", alpha3: \"TKM\" },\n { name: \"Tuvalu\", alpha2: \"TV\", countryCode: \"798\", alpha3: \"TUV\" },\n { name: \"Uganda\", alpha2: \"UG\", countryCode: \"800\", alpha3: \"UGA\" },\n { name: \"Ukraine\", alpha2: \"UA\", countryCode: \"804\", alpha3: \"UKR\" },\n { name: \"United Arab Emirates\", alpha2: \"AE\", countryCode: \"784\", alpha3: \"ARE\" },\n { name: \"United Kingdom\", alpha2: \"GB\", countryCode: \"826\", alpha3: \"GBR\" },\n { name: \"United States of America\", alpha2: \"US\", countryCode: \"840\", alpha3: \"USA\" },\n { name: \"Uruguay\", alpha2: \"UY\", countryCode: \"858\", alpha3: \"URY\" },\n { name: \"Uzbekistan\", alpha2: \"UZ\", countryCode: \"860\", alpha3: \"UZB\" },\n { name: \"Vanuatu\", alpha2: \"VU\", countryCode: \"548\", alpha3: \"VUT\" },\n { name: \"Venezuela\", alpha2: \"VE\", countryCode: \"862\", alpha3: \"VEN\" },\n { name: \"Viet Nam\", alpha2: \"VN\", countryCode: \"704\", alpha3: \"VNM\" },\n { name: \"Yemen\", alpha2: \"YE\", countryCode: \"887\", alpha3: \"YEM\" },\n { name: \"Zambia\", alpha2: \"ZM\", countryCode: \"894\", alpha3: \"ZMB\" },\n { name: \"Zimbabwe\", alpha2: \"ZW\", countryCode: \"716\", alpha3: \"ZWE\" },\n] as const;\n","import { createConstant } from \"inferred-types/constants\";\n\nexport const MARKED = createConstant(\"Marked\");\n\n/**\n * **Marked**\n *\n * A constant that indicates that an item has been marked for\n * some ongoing operation.\n */\nexport type Marked = typeof MARKED;\n","export const BLOOD_MARKERS_LOOKUP = [\n { abbrev: \"Hb\", name: \"hemoglobin\", measurements: [\"g/dL\", \"mmol/L\"] },\n { abbrev: \"WBC\", name: \"white blood cell count\", measurements: [\"cells/µL\"] },\n { abbrev: \"RBC\", name: \"red blood cell count\", measurements: [\"million cells/µL\", \"trillion cells/L\"] },\n { abbrev: \"PLT\", name: \"platelet count\", measurements: [\"thousand/µL\", \"million/L\"] },\n { abbrev: \"Hct\", name: \"hematocrit\", measurements: [\"%\"] },\n { abbrev: \"MCV\", name: \"mean corpuscular volume\", measurements: [\"fL\"] },\n { abbrev: \"MCH\", name: \"mean corpuscular hemoglobin\", measurements: [\"pg/cell\"] },\n { abbrev: \"MCHC\", name: \"mean corpuscular hemoglobin concentration\", measurements: [\"g/dL\"] },\n { abbrev: \"RDW\", name: \"red cell distribution width\", measurements: [\"%\"] },\n { abbrev: \"Glucose\", name: \"blood glucose\", measurements: [\"mg/dL\", \"mmol/L\"] },\n { abbrev: \"ALT\", name: \"alanine aminotransferase\", measurements: [\"U/L\"] },\n { abbrev: \"AST\", name: \"aspartate aminotransferase\", measurements: [\"U/L\"] },\n { abbrev: \"LDL\", name: \"low-density lipoprotein\", measurements: [\"mg/dL\", \"mmol/L\"] },\n { abbrev: \"HDL\", name: \"high-density lipoprotein\", measurements: [\"mg/dL\", \"mmol/L\"] },\n { abbrev: \"Triglycerides\", name: \"triglycerides\", measurements: [\"mg/dL\", \"mmol/L\"] },\n { abbrev: \"CRP\", name: \"C-reactive protein\", measurements: [\"mg/L\"] },\n { abbrev: \"TSH\", name: \"thyroid-stimulating hormone\", measurements: [\"mIU/L\"] },\n { abbrev: \"BUN\", name: \"blood urea nitrogen\", measurements: [\"mg/dL\", \"mmol/L\"] },\n { abbrev: \"Creatinine\", name: \"creatinine\", measurements: [\"mg/dL\", \"µmol/L\"] },\n { abbrev: \"Bilirubin\", name: \"bilirubin\", measurements: [\"mg/dL\", \"µmol/L\"] },\n] as const;\n","export const DISTANCE_METRICS_LOOKUP = [\n { abbrev: \"km\", name: \"kilometer\" },\n { abbrev: \"mi\", name: \"mile\" },\n { abbrev: \"mm\", name: \"millimeter\" },\n { abbrev: \"cm\", name: \"centimeter\" },\n { abbrev: \"yd\", name: \"yard\" },\n { abbrev: \"ft\", name: \"foot\" },\n { abbrev: \"in\", name: \"inch\" },\n { abbrev: \"m\", name: \"meter\" },\n { abbrev: \"nm\", name: \"nautical mile\" },\n { abbrev: \"nmi\", name: \"nanometer\" },\n { abbrev: \"µm\", name: \"micrometer\" },\n { abbrev: \"dm\", name: \"decimeter\" },\n { abbrev: \"AU\", name: \"astronomical unit\" },\n { abbrev: \"ly\", name: \"light year\" },\n { abbrev: \"pc\", name: \"parsec\" },\n] as const;\n\nexport const MASS_METRICS_LOOKUP = [\n { abbrev: \"g\", name: \"gram\" },\n { abbrev: \"kg\", name: \"kilogram\" },\n { abbrev: \"mg\", name: \"milligram\" },\n { abbrev: \"µg\", name: \"microgram\" },\n { abbrev: \"t\", name: \"tonne\" },\n { abbrev: \"lb\", name: \"pound\" },\n { abbrev: \"oz\", name: \"ounce\" },\n { abbrev: \"st\", name: \"stone\" },\n { abbrev: \"ct\", name: \"carat\" },\n { abbrev: \"Mt\", name: \"megatonne\" },\n { abbrev: \"gt\", name: \"gigatonne\" },\n { abbrev: \"slug\", name: \"slug\" },\n { abbrev: \"dr\", name: \"dram\" },\n { abbrev: \"gr\", name: \"grain\" },\n { abbrev: \"q\", name: \"quintal\" },\n] as const;\n\nexport const SPEED_METRICS_LOOKUP = [\n { abbrev: \"m/s\", name: \"meters per second\" },\n { abbrev: \"km/h\", name: \"kilometers per hour\" },\n { abbrev: \"mph\", name: \"miles per hour\" },\n { abbrev: \"kn\", name: \"knot\" },\n { abbrev: \"ft/s\", name: \"feet per second\" },\n { abbrev: \"c\", name: \"speed of light\" },\n { abbrev: \"mach\", name: \"mach\" },\n { abbrev: \"cm/s\", name: \"centimeters per second\" },\n { abbrev: \"in/s\", name: \"inches per second\" },\n { abbrev: \"ly/y\", name: \"light years per year\" },\n] as const;\n\nexport const ACCELERATION_METRICS_LOOKUP = [\n { abbrev: \"m/s²\", name: \"meters per second squared\" },\n { abbrev: \"ft/s²\", name: \"feet per second squared\" },\n { abbrev: \"g\", name: \"g-force\" },\n { abbrev: \"Gal\", name: \"galileo\" },\n { abbrev: \"cm/s²\", name: \"centimeters per second squared\" },\n { abbrev: \"km/h²\", name: \"kilometers per hour squared\" },\n { abbrev: \"in/s²\", name: \"inches per second squared\" },\n { abbrev: \"mi/h²\", name: \"miles per hour squared\" },\n { abbrev: \"kn/s²\", name: \"knots per second squared\" },\n] as const;\n\nexport const VOLUME_METRICS_LOOKUP = [\n { abbrev: \"L\", name: \"liter\" },\n { abbrev: \"dL\", name: \"deciliter\" },\n { abbrev: \"mL\", name: \"milliliter\" },\n { abbrev: \"µL\", name: \"microliter\" },\n { abbrev: \"cm³\", name: \"cubic centimeter\" },\n { abbrev: \"m³\", name: \"cubic meter\" },\n { abbrev: \"ft³\", name: \"cubic foot\" },\n { abbrev: \"in³\", name: \"cubic inch\" },\n { abbrev: \"gallon\", name: \"gallon\" },\n { abbrev: \"qt\", name: \"quart\" },\n { abbrev: \"pt\", name: \"pint\" },\n { abbrev: \"fl oz\", name: \"fluid ounce\" },\n { abbrev: \"barrel\", name: \"barrel\" },\n { abbrev: \"tbsp\", name: \"tablespoon\" },\n { abbrev: \"tsp\", name: \"teaspoon\" },\n] as const;\n\nexport const TEMPERATURE_METRICS_LOOKUP = [\n { abbrev: \"°C\", name: \"celsius\" },\n { abbrev: \"°F\", name: \"fahrenheit\" },\n { abbrev: \"K\", name: \"kelvin\" },\n] as const;\n\nexport const PRESSURE_METRICS_LOOKUP = [\n { abbrev: \"Pa\", name: \"pascal\" },\n { abbrev: \"bar\", name: \"bar\" },\n { abbrev: \"atm\", name: \"atmosphere\" },\n { abbrev: \"mmHg\", name: \"millimeters of mercury\" },\n { abbrev: \"psi\", name: \"pounds per square inch\" },\n] as const;\n\nexport const ENERGY_METRICS_LOOKUP = [\n { abbrev: \"J\", name: \"joule\" },\n { abbrev: \"cal\", name: \"calorie\" },\n { abbrev: \"kcal\", name: \"kilocalorie\" },\n { abbrev: \"kWh\", name: \"kilowatt-hour\" },\n { abbrev: \"BTU\", name: \"british thermal unit\" },\n { abbrev: \"eV\", name: \"electronvolt\" },\n] as const;\n\nexport const TIME_METRICS_LOOKUP = [\n { abbrev: \"s\", name: \"second\" },\n { abbrev: \"m\", name: \"minute\" },\n { abbrev: \"h\", name: \"hour\" },\n { abbrev: \"day\", name: \"day\" },\n { abbrev: \"week\", name: \"week\" },\n { abbrev: \"mo\", name: \"month\" },\n { abbrev: \"ms\", name: \"millisecond\" },\n { abbrev: \"µs\", name: \"microsecond\" },\n { abbrev: \"ns\", name: \"nanosecond\" },\n] as const;\n\nexport const POWER_METRICS_LOOKUP = [\n { abbrev: \"W\", name: \"Watt\" },\n { abbrev: \"kW\", name: \"kilowatt\" },\n { abbrev: \"MW\", name: \"megawatt\" },\n { abbrev: \"hp\", name: \"horsepower\" },\n { abbrev: \"GW\", name: \"gigawatt\" },\n] as const;\n\nexport const FREQUENCY_METRICS_LOOKUP = [\n { abbrev: \"Hz\", name: \"hertz\" },\n { abbrev: \"kHz\", name: \"kilohertz\" },\n { abbrev: \"MHz\", name: \"megahertz\" },\n { abbrev: \"GHz\", name: \"gigahertz\" },\n { abbrev: \"THz\", name: \"terahertz\" },\n] as const;\n\nexport const VOLTAGE_METRICS_LOOKUP = [\n { abbrev: \"V\", name: \"volt\" },\n { abbrev: \"kV\", name: \"kilovolt\" },\n { abbrev: \"mV\", name: \"millivolt\" },\n { abbrev: \"µV\", name: \"microvolt\" },\n] as const;\n\nexport const CURRENT_METRICS_LOOKUP = [\n { abbrev: \"A\", name: \"ampere\" },\n { abbrev: \"mA\", name: \"milliampere\" },\n { abbrev: \"µA\", name: \"microampere\" },\n { abbrev: \"kA\", name: \"kiloampere\" },\n] as const;\n\nexport const RESISTANCE_METRICS_LOOKUP = [\n { abbrev: \"Ω\", name: \"ohm\" },\n { abbrev: \"kΩ\", name: \"kiloohm\" },\n { abbrev: \"MΩ\", name: \"megaohm\" },\n] as const;\n\nexport const LUMINOSITY_METRICS_LOOKUP = [\n { abbrev: \"cd\", name: \"candela\" },\n { abbrev: \"lm\", name: \"lumen\" },\n { abbrev: \"lx\", name: \"lux\" },\n] as const;\n\nexport const AREA_METRICS_LOOKUP = [\n { abbrev: \"m²\", name: \"square meter\" },\n { abbrev: \"cm²\", name: \"square centimeter\" },\n { abbrev: \"mm²\", name: \"square millimeter\" },\n { abbrev: \"km²\", name: \"square kilometer\" },\n { abbrev: \"ft²\", name: \"square foot\" },\n { abbrev: \"in²\", name: \"square inch\" },\n { abbrev: \"acre\", name: \"acre\" },\n { abbrev: \"ha\", name: \"hectare\" },\n] as const;\n","export const IPv6 = {\n Loopback: \"::1/128\",\n Multicast: \"ff00::/8\",\n IPv4MappedAddresses: \"::FFFF:0:0/96\",\n Unicast: \"fe80::/10\",\n DocumentationAddresses: \"2001:db8::/32\",\n} as const;\n\nexport const IPv4 = {\n Loopback: \"127.0.0.1\",\n} as const;\n\nexport const NETWORK_PROTOCOL_INSECURE = [\n \"http\",\n \"ftp\",\n \"ws\",\n \"dns\",\n \"telnet\",\n \"imap\",\n \"pop3\",\n \"smtp\",\n] as const;\n\nexport const NETWORK_PROTOCOL_SECURE = [\n \"https\",\n \"sftp\",\n \"wss\",\n \"sdns\",\n \"ssh\",\n\n] as const;\n\nexport const NETWORK_PROTOCOL = [\n ...NETWORK_PROTOCOL_INSECURE,\n ...NETWORK_PROTOCOL_SECURE,\n] as const;\n\n/**\n * Lookup of protocols which provides a tuple of: `[insecure,secure]`\n */\nexport const NETWORK_PROTOCOL_LOOKUP = {\n http: [\"http\", \"https\"],\n ftp: [\"ftp\", \"sftp\"],\n file: [\"\", \"file\"],\n ws: [\"ws\", \"wss\"],\n ssh: [\"\", \"ssh\"],\n scp: [\"\", \"scp\"],\n telnet: [\"telnet\", \"\"],\n dns: [\"dns\", \"sdns\"],\n} as const;\n\nexport const PROTOCOL_DEFAULT_PORTS = {\n http: 80,\n https: 443,\n ws: 80,\n wss: 443,\n ssh: 22,\n telnet: 23,\n dns: 53,\n sdns: 853,\n smtp: 25,\n imap: 142,\n pop3: 110,\n ftp: 21,\n sftp: 22,\n} as const satisfies Record<typeof NETWORK_PROTOCOL[number], number>;\n\n/**\n * **TLD**\n *\n * Top level domains in DNS. This is not a comprehensive list but\n * takes the core ones and adds in some popular choices.\n */\nexport const TOP_LEVEL_DOMAINS = [\n \"com\",\n \"org\",\n \"net\",\n \"int\",\n \"edu\",\n \"gov\",\n \"io\",\n \"mil\",\n \"arpa\",\n \"academy\",\n \"agency\",\n \"analytics\",\n \"app\",\n \"art\",\n \"bet\",\n \"beer\",\n \"book\",\n \"coffee\",\n \"dot\",\n \"doctor\",\n \"dog\",\n \"family\",\n \"game\",\n \"guide\",\n \"guru\",\n \"info\",\n \"inc\",\n \"news\",\n \"new\",\n \"ninja\",\n \"now\",\n \"online\",\n \"page\",\n \"photos\",\n \"place\",\n \"pub\",\n \"room\",\n \"show\",\n \"technology\",\n \"tel\",\n \"tech\",\n \"team\",\n \"talk\",\n \"travel\",\n \"website\",\n \"work\",\n \"works\",\n \"wow\",\n \"uk\",\n \"us\",\n \"fr\",\n \"de\",\n \"eu\",\n \"london\",\n] as const;\n","import { createConstant } from \"inferred-types/constants\";\n\n/**\n * **Never**\n *\n * A runtime constant that is meant to represent the `never` type.\n *\n * **Related:** you can use the `never()` runtime utility to give a\n * runtime value but force it's type to `never`.\n */\nexport const Never = createConstant(\"never\") as never;\n","export const US_NEWS = [\n { company: \"New York Times\", baseUrls: [\"www.nytimes.com\"] },\n { company: \"CNN\", baseUrls: [\"www.cnn.com\"] },\n { company: \"Fox News\", baseUrls: [\"www.foxnews.com\"] },\n { company: \"NBC News\", baseUrls: [\"www.nbcnews.com\", \"www.msnbc.com\"] },\n { company: \"ABC News\", baseUrls: [\"abcnews.go.com\"] },\n { company: \"The Washington Post\", baseUrls: [\"www.washingtonpost.com\"] },\n { company: \"USA Today\", baseUrls: [\"www.usatoday.com\"] },\n { company: \"Bloomberg\", baseUrls: [\"www.bloomberg.com\"] },\n { company: \"NPR\", baseUrls: [\"www.npr.org\"] },\n { company: \"CBS News\", baseUrls: [\"www.cbsnews.com\"] },\n { company: \"The Wall Street Journal\", baseUrls: [\"www.wsj.com\"] },\n { company: \"Associated Press (AP)\", baseUrls: [\"www.apnews.com\", \"www.ap.org\"] },\n { company: \"Reuters\", baseUrls: [\"www.reuters.com\"] },\n { company: \"Newsweek\", baseUrls: [\"www.newsweek.com\"] },\n { company: \"Politico\", baseUrls: [\"www.politico.com\"] },\n { company: \"The Atlantic\", baseUrls: [\"www.theatlantic.com\"] },\n { company: \"Nexstar Media Group\", baseUrls: [\"www.nexstar.tv\"] },\n { company: \"PBS News\", baseUrls: [\"www.pbs.org\"] },\n { company: \"HuffPost\", baseUrls: [\"www.huffpost.com\"] },\n { company: \"The Boston Globe\", baseUrls: [\"www.bostonglobe.com\"] },\n] as const;\n\nexport const UK_NEWS = [\n { company: \"BBC\", baseUrls: [\"www.bbc.co.uk\", \"www.bbc.com\"] },\n { company: \"The Guardian\", baseUrls: [\"www.theguardian.com/uk\"] },\n { company: \"The Daily Mail\", baseUrls: [\"www.dailymail.co.uk\"] },\n { company: \"The Sun\", baseUrls: [\"www.thesun.co.uk\"] },\n { company: \"The Times\", baseUrls: [\"www.thetimes.co.uk\"] },\n { company: \"Sky News\", baseUrls: [\"news.sky.com\"] },\n { company: \"The Telegraph\", baseUrls: [\"www.telegraph.co.uk\"] },\n { company: \"ITV News\", baseUrls: [\"www.itv.com/news\"] },\n { company: \"Financial Times\", baseUrls: [\"www.ft.com\"] },\n { company: \"Metro\", baseUrls: [\"www.metro.co.uk\"] },\n { company: \"The Independent\", baseUrls: [\"www.independent.co.uk\"] },\n { company: \"Evening Standard\", baseUrls: [\"www.standard.co.uk\"] },\n { company: \"Daily Mirror\", baseUrls: [\"www.mirror.co.uk\"] },\n { company: \"Channel 4 News\", baseUrls: [\"www.channel4.com/news\"] },\n { company: \"LBC\", baseUrls: [\"www.lbc.co.uk\"] },\n { company: \"Daily Express\", baseUrls: [\"www.express.co.uk\"] },\n { company: \"Birmingham Mail\", baseUrls: [\"www.birminghammail.co.uk\"] },\n { company: \"Manchester Evening News\", baseUrls: [\"www.manchestereveningnews.co.uk\"] },\n { company: \"The Scotsman\", baseUrls: [\"www.scotsman.com\"] },\n { company: \"Daily Record\", baseUrls: [\"www.dailyrecord.co.uk\"] },\n] as const;\n\nexport const GERMAN_NEWS = [\n { company: \"BILD\", baseUrls: [\"www.bild.de\"] },\n { company: \"Die Zeit\", baseUrls: [\"www.zeit.de\"] },\n { company: \"Frankfurter Allgemeine Zeitung\", baseUrls: [\"www.faz.net\"] },\n { company: \"Süddeutsche Zeitung\", baseUrls: [\"www.sueddeutsche.de\"] },\n { company: \"Der Spiegel\", baseUrls: [\"www.spiegel.de\"] },\n { company: \"Die Welt\", baseUrls: [\"www.welt.de\"] },\n { company: \"Tagesschau\", baseUrls: [\"www.tagesschau.de\"] },\n { company: \"t-online\", baseUrls: [\"www.t-online.de\"] },\n { company: \"n-tv\", baseUrls: [\"www.n-tv.de\"] },\n { company: \"Handelsblatt\", baseUrls: [\"www.handelsblatt.com\"] },\n { company: \"Focus Online\", baseUrls: [\"www.focus.de\"] },\n { company: \"Frankfurter Rundschau\", baseUrls: [\"www.fr.de\", \"www.fr-online.de\"] },\n { company: \"taz - die tageszeitung\", baseUrls: [\"www.taz.de\"] },\n { company: \"Der Tagesspiegel\", baseUrls: [\"www.tagesspiegel.de\"] },\n { company: \"Rheinische Post\", baseUrls: [\"www.rp-online.de\"] },\n { company: \"Express\", baseUrls: [\"www.express.de\"] },\n { company: \"Münchner Merkur\", baseUrls: [\"www.merkur.de\"] },\n { company: \"Stuttgarter Zeitung\", baseUrls: [\"www.stuttgarter-zeitung.de\"] },\n { company: \"Hamburger Abendblatt\", baseUrls: [\"www.abendblatt.de\"] },\n { company: \"Deutsche Welle\", baseUrls: [\"www.dw.com\"] },\n] as const;\n\nexport const FRENCH_NEWS = [\n { company: \"Le Figaro\", baseUrls: [\"www.lefigaro.fr\"] },\n { company: \"Le Monde\", baseUrls: [\"www.lemonde.fr\"] },\n { company: \"France 24\", baseUrls: [\"www.france24.com\"] },\n { company: \"Libération\", baseUrls: [\"www.liberation.fr\"] },\n { company: \"Les Echos\", baseUrls: [\"www.lesechos.fr\"] },\n { company: \"Ouest-France\", baseUrls: [\"www.ouest-france.fr\"] },\n { company: \"Le Parisien\", baseUrls: [\"www.leparisien.fr\"] },\n { company: \"Mediapart\", baseUrls: [\"www.mediapart.fr\"] },\n { company: \"L'Express\", baseUrls: [\"www.lexpress.fr\"] },\n { company: \"La Croix\", baseUrls: [\"www.la-croix.com\"] },\n { company: \"20 Minutes\", baseUrls: [\"www.20minutes.fr\"] },\n { company: \"Courrier International\", baseUrls: [\"www.courrierinternational.com\"] },\n { company: \"Le Point\", baseUrls: [\"www.lepoint.fr\"] },\n { company: \"Marianne\", baseUrls: [\"www.marianne.net\"] },\n { company: \"BFM TV\", baseUrls: [\"www.bfmtv.com\"] },\n { company: \"RTL France\", baseUrls: [\"www.rtl.fr\"] },\n { company: \"Charlie Hebdo\", baseUrls: [\"www.charliehebdo.fr\"] },\n { company: \"Challenges\", baseUrls: [\"www.challenges.fr\"] },\n { company: \"Télérama\", baseUrls: [\"www.telerama.fr\"] },\n { company: \"L'Obs\", baseUrls: [\"www.nouvelobs.com\"] },\n] as const;\n\nexport const CANADIAN_NEWS = [\n { company: \"CBC News\", baseUrls: [\"www.cbc.ca\"] },\n { company: \"CTV News\", baseUrls: [\"www.ctvnews.ca\"] },\n { company: \"The Globe and Mail\", baseUrls: [\"www.theglobeandmail.com\"] },\n { company: \"Global News\", baseUrls: [\"www.globalnews.ca\"] },\n { company: \"Toronto Star\", baseUrls: [\"www.thestar.com\"] },\n { company: \"National Post\", baseUrls: [\"www.nationalpost.com\"] },\n { company: \"La Presse\", baseUrls: [\"www.lapresse.ca\"] },\n { company: \"Radio-Canada\", baseUrls: [\"ici.radio-canada.ca\"] },\n { company: \"The Canadian Press\", baseUrls: [\"www.thecanadianpress.com\"] },\n { company: \"Financial Post\", baseUrls: [\"financialpost.com\"] },\n { company: \"The Weather Network\", baseUrls: [\"www.theweathernetwork.com\"] },\n { company: \"Le Devoir\", baseUrls: [\"www.ledevoir.com\"] },\n { company: \"TVA Nouvelles\", baseUrls: [\"www.tvanouvelles.ca\"] },\n { company: \"Journal de Montréal\", baseUrls: [\"www.journaldemontreal.com\"] },\n { company: \"CityNews\", baseUrls: [\"www.citynews.ca\"] },\n { company: \"BNN Bloomberg\", baseUrls: [\"www.bnnbloomberg.ca\"] },\n { company: \"The Hamilton Spectator\", baseUrls: [\"www.thespec.com\"] },\n { company: \"Ottawa Citizen\", baseUrls: [\"ottawacitizen.com\"] },\n { company: \"Windsor Star\", baseUrls: [\"windsorstar.com\"] },\n { company: \"Edmonton Journal\", baseUrls: [\"edmontonjournal.com\"] },\n] as const;\n\nexport const DUTCH_NEWS = [\n { company: \"Algemeen Dagblad (AD)\", baseUrls: [\"www.ad.nl\"] },\n { company: \"NOS\", baseUrls: [\"www.nos.nl\"] },\n { company: \"De Telegraaf\", baseUrls: [\"www.telegraaf.nl\"] },\n { company: \"NU.nl\", baseUrls: [\"www.nu.nl\"] },\n { company: \"Volkskrant\", baseUrls: [\"www.volkskrant.nl\"] },\n { company: \"NRC Handelsblad\", baseUrls: [\"www.nrc.nl\"] },\n { company: \"Trouw\", baseUrls: [\"www.trouw.nl\"] },\n { company: \"Het Parool\", baseUrls: [\"www.parool.nl\"] },\n { company: \"RTL Nieuws\", baseUrls: [\"www.rtlnieuws.nl\"] },\n { company: \"BNR Nieuwsradio\", baseUrls: [\"www.bnr.nl\"] },\n { company: \"Emerce\", baseUrls: [\"www.emerce.nl\"] },\n { company: \"VPRO\", baseUrls: [\"www.vpro.nl\"] },\n { company: \"De Gelderlander\", baseUrls: [\"www.gelderlander.nl\"] },\n { company: \"Friesch Dagblad\", baseUrls: [\"www.frieschdagblad.nl\"] },\n { company: \"De Stentor\", baseUrls: [\"www.destentor.nl\"] },\n { company: \"Metro Nieuws\", baseUrls: [\"www.metronieuws.nl\"] },\n { company: \"ANP\", baseUrls: [\"www.anp.nl\"] },\n { company: \"Dagblad van het Noorden\", baseUrls: [\"www.dvhn.nl\"] },\n { company: \"Reformatorisch Dagblad\", baseUrls: [\"www.rd.nl\"] },\n { company: \"Financieele Dagblad\", baseUrls: [\"www.fd.nl\"] },\n] as const;\n\nexport const ITALIAN_NEWS = [\n { company: \"ANSA\", baseUrls: [\"www.ansa.it\", \"www.ansamed.info\"] },\n { company: \"Corriere della Sera\", baseUrls: [\"www.corriere.it\"] },\n { company: \"la Repubblica\", baseUrls: [\"www.repubblica.it\"] },\n { company: \"Il Sole 24 Ore\", baseUrls: [\"www.ilsole24ore.com\"] },\n { company: \"La Stampa\", baseUrls: [\"www.lastampa.it\"] },\n { company: \"Il Messaggero\", baseUrls: [\"www.ilmessaggero.it\"] },\n { company: \"Il Giornale\", baseUrls: [\"www.ilgiornale.it\"] },\n { company: \"Avvenire\", baseUrls: [\"www.avvenire.it\"] },\n { company: \"Il Fatto Quotidiano\", baseUrls: [\"www.ilfattoquotidiano.it\"] },\n { company: \"La Nazione\", baseUrls: [\"www.lanazione.it\"] },\n { company: \"TgCom24\", baseUrls: [\"www.tgcom24.mediaset.it\"] },\n { company: \"Sky TG24\", baseUrls: [\"tg24.sky.it\"] },\n { company: \"Rai News\", baseUrls: [\"www.rainews.it\"] },\n { company: \"Gazzetta dello Sport\", baseUrls: [\"www.gazzetta.it\"] },\n { company: \"Il Resto del Carlino\", baseUrls: [\"www.ilrestodelcarlino.it\"] },\n { company: \"Il Mattino\", baseUrls: [\"www.ilmattino.it\"] },\n { company: \"Il Secolo XIX\", baseUrls: [\"www.ilsecoloxix.it\"] },\n { company: \"Italia Oggi\", baseUrls: [\"www.italiaoggi.it\"] },\n { company: \"Libero\", baseUrls: [\"www.liberoquotidiano.it\"] },\n { company: \"Il Tirreno\", baseUrls: [\"www.iltirreno.it\"] },\n] as const;\n\nexport const BELGIUM_NEWS = [\n { company: \"Het Laatste Nieuws (HLN)\", baseUrls: [\"www.hln.be\"] },\n { company: \"Nieuwsblad\", baseUrls: [\"www.nieuwsblad.be\"] },\n { company: \"RTBF\", baseUrls: [\"www.rtbf.be\"] },\n { company: \"Sudinfo\", baseUrls: [\"www.sudinfo.be\"] },\n { company: \"7sur7\", baseUrls: [\"www.7sur7.be\"] },\n { company: \"Le Soir\", baseUrls: [\"www.lesoir.be\"] },\n { company: \"De Standaard\", baseUrls: [\"www.standaard.be\"] },\n { company: \"VRT NWS\", baseUrls: [\"www.vrt.be\"] },\n { company: \"La Libre\", baseUrls: [\"www.lalibre.be\"] },\n { company: \"Gazet van Antwerpen\", baseUrls: [\"www.gva.be\"] },\n { company: \"Het Belang van Limburg\", baseUrls: [\"www.hbvl.be\"] },\n { company: \"De Morgen\", baseUrls: [\"www.demorgen.be\"] },\n { company: \"L'Avenir\", baseUrls: [\"www.lavenir.net\"] },\n { company: \"The Brussels Times\", baseUrls: [\"www.brusselstimes.com\"] },\n { company: \"Metro Belgique\", baseUrls: [\"nl.metrotime.be\"] },\n { company: \"Sudpresse\", baseUrls: [\"www.sudpress.be\"] },\n { company: \"Flamish Radio and TV Broadcasting Organization (VRT)\", baseUrls: [\"www.vrt.be\"] },\n { company: \"Knack\", baseUrls: [\"www.knack.be\"] },\n { company: \"De Tijd\", baseUrls: [\"www.tijd.be\"] },\n { company: \"BX1\", baseUrls: [\"www.bx1.be\"] },\n] as const;\n\nexport const MEXICAN_NEWS = [\n { company: \"Televisa\", baseUrls: [\"www.televisa.news\"] },\n { company: \"El Universal\", baseUrls: [\"www.eluniversal.com.mx\"] },\n { company: \"Milenio\", baseUrls: [\"www.milenio.com\"] },\n { company: \"Excélsior\", baseUrls: [\"www.excelsior.com.mx\"] },\n { company: \"Reforma\", baseUrls: [\"www.reforma.com\"] },\n { company: \"La Jornada\", baseUrls: [\"www.jornada.com.mx\"] },\n { company: \"El Financiero\", baseUrls: [\"www.elfinanciero.com.mx\"] },\n { company: \"Proceso\", baseUrls: [\"www.proceso.com.mx\"] },\n { company: \"SDP Noticias\", baseUrls: [\"www.sdpnoticias.com\"] },\n { company: \"Diario de Yucatán\", baseUrls: [\"www.yucatan.com.mx\"] },\n { company: \"El Economista\", baseUrls: [\"www.eleconomista.com.mx\"] },\n { company: \"El Heraldo de México\", baseUrls: [\"www.heraldodemexico.com.mx\"] },\n { company: \"Noticieros Televisa\", baseUrls: [\"noticieros.televisa.com\"] },\n { company: \"Expansión\", baseUrls: [\"expansion.mx\"] },\n { company: \"La Razón\", baseUrls: [\"www.razon.com.mx\"] },\n { company: \"Noroeste\", baseUrls: [\"www.noroeste.com.mx\"] },\n { company: \"Uniradio Noticias\", baseUrls: [\"www.uniradionoticias.com\"] },\n { company: \"El Imparcial\", baseUrls: [\"www.elimparcial.com\"] },\n { company: \"Publimetro México\", baseUrls: [\"www.publimetro.com.mx\"] },\n { company: \"Notimex\", baseUrls: [\"www.notimex.gob.mx\"] },\n] as const;\n\nexport const SPANISH_NEWS = [\n { company: \"El País\", baseUrls: [\"www.elpais.com\"] },\n { company: \"El Mundo\", baseUrls: [\"www.elmundo.es\"] },\n { company: \"ABC\", baseUrls: [\"www.abc.es\"] },\n { company: \"La Vanguardia\", baseUrls: [\"www.lavanguardia.com\"] },\n { company: \"El Confidencial\", baseUrls: [\"www.elconfidencial.com\"] },\n { company: \"La Razón\", baseUrls: [\"www.larazon.es\"] },\n { company: \"20 Minutos\", baseUrls: [\"www.20minutos.es\"] },\n { company: \"Agencia EFE\", baseUrls: [\"www.efe.com\"] },\n { company: \"Europa Press\", baseUrls: [\"www.europapress.es\"] },\n { company: \"Diario AS\", baseUrls: [\"www.as.com\"] },\n { company: \"Mundo Deportivo\", baseUrls: [\"www.mundodeportivo.com\"] },\n { company: \"El Periódico\", baseUrls: [\"www.elperiodico.com\"] },\n { company: \"Cinco Días\", baseUrls: [\"www.cincodias.com\"] },\n { company: \"Expansión\", baseUrls: [\"www.expansion.com\"] },\n { company: \"La Información\", baseUrls: [\"www.lainformacion.com\"] },\n { company: \"OK Diario\", baseUrls: [\"www.okdiario.com\"] },\n { company: \"Heraldo de Aragón\", baseUrls: [\"www.heraldo.es\"] },\n { company: \"Faro de Vigo\", baseUrls: [\"www.farodevigo.es\"] },\n { company: \"El Correo\", baseUrls: [\"www.elcorreo.com\"] },\n { company: \"Diario Sur\", baseUrls: [\"www.diariosur.es\"] },\n] as const;\n\nexport const INDIAN_NEWS = [\n { company: \"The Times of India\", baseUrls: [\"timesofindia.indiatimes.com\"] },\n { company: \"The Hindu\", baseUrls: [\"www.thehindu.com\"] },\n { company: \"Hindustan Times\", baseUrls: [\"www.hindustantimes.com\"] },\n { company: \"NDTV\", baseUrls: [\"www.ndtv.com\"] },\n { company: \"India Today\", baseUrls: [\"www.indiatoday.in\"] },\n { company: \"Zee News\", baseUrls: [\"zeenews.india.com\"] },\n { company: \"Indian Express\", baseUrls: [\"indianexpress.com\"] },\n { company: \"The Economic Times\", baseUrls: [\"economictimes.indiatimes.com\"] },\n { company: \"Deccan Herald\", baseUrls: [\"www.deccanherald.com\"] },\n { company: \"DNA India\", baseUrls: [\"www.dnaindia.com\"] },\n { company: \"The Print\", baseUrls: [\"theprint.in\"] },\n { company: \"News18\", baseUrls: [\"www.news18.com\"] },\n { company: \"Scroll.in\", baseUrls: [\"scroll.in\"] },\n { company: \"Asian News International (ANI)\", baseUrls: [\"www.aninews.in\"] },\n { company: \"Outlook India\", baseUrls: [\"www.outlookindia.com\"] },\n { company: \"Business Standard\", baseUrls: [\"www.business-standard.com\"] },\n { company: \"Mint\", baseUrls: [\"www.livemint.com\"] },\n { company: \"OneIndia\", baseUrls: [\"www.oneindia.com\"] },\n { company: \"Quint\", baseUrls: [\"www.thequint.com\"] },\n { company: \"Free Press Journal\", baseUrls: [\"www.freepressjournal.in\"] },\n] as const;\n\nexport const CHINESE_NEWS = [\n { company: \"Xinhua News Agency\", baseUrls: [\"www.xinhuanet.com\"] },\n { company: \"China Central Television (CCTV)\", baseUrls: [\"www.cctv.com\"] },\n { company: \"China Daily\", baseUrls: [\"www.chinadaily.com.cn\"] },\n { company: \"CGTN (China Global Television Network)\", baseUrls: [\"www.cgtn.com\"] },\n { company: \"People's Daily\", baseUrls: [\"www.people.cn\"] },\n { company: \"Global Times\", baseUrls: [\"www.globaltimes.cn\"] },\n { company: \"South China Morning Post\", baseUrls: [\"www.scmp.com\"] },\n { company: \"Shanghai Daily\", baseUrls: [\"www.shanghaidaily.com\"] },\n { company: \"China News Service\", baseUrls: [\"www.ecns.cn\"] },\n { company: \"Caixin\", baseUrls: [\"www.caixinglobal.com\"] },\n { company: \"The Paper\", baseUrls: [\"www.thepaper.cn\"] },\n { company: \"Yicai Global\", baseUrls: [\"www.yicaiglobal.com\"] },\n { company: \"Economic Daily\", baseUrls: [\"www.ce.cn\"] },\n { company: \"21st Century Business Herald\", baseUrls: [\"www.21jingji.com\"] },\n { company: \"Beijing Review\", baseUrls: [\"www.bjreview.com\"] },\n { company: \"China Economic Net\", baseUrls: [\"www.ce.cn\"] },\n { company: \"Tencent News\", baseUrls: [\"news.qq.com\"] },\n { company: \"Sina News\", baseUrls: [\"news.sina.com.cn\"] },\n { company: \"NetEase News\", baseUrls: [\"news.163.com\"] },\n { company: \"Phoenix TV\", baseUrls: [\"www.ifeng.com\"] },\n] as const;\n\n/** news sites in Denmark */\nexport const DANISH_NEWS = [\n { company: \"Politiken\", baseUrls: [\"www.politiken.dk\"] },\n { company: \"Berlingske\", baseUrls: [\"www.berlingske.dk\"] },\n { company: \"Jyllands-Posten\", baseUrls: [\"jyllands-posten.dk\"] },\n { company: \"Ekstra Bladet\", baseUrls: [\"ekstrabladet.dk\"] },\n { company: \"Information\", baseUrls: [\"www.information.dk\"] },\n { company: \"BT\", baseUrls: [\"www.bt.dk\"] },\n { company: \"Weekendavisen\", baseUrls: [\"www.weekendavisen.dk\"] },\n { company: \"Fyens Stiftstidende\", baseUrls: [\"fyens.dk\"] },\n { company: \"Kristeligt Dagblad\", baseUrls: [\"www.kristeligt-dagblad.dk\"] },\n { company: \"Copenhagen Post\", baseUrls: [\"cphpost.dk\"] },\n { company: \"Nordjyske Stiftstidende\", baseUrls: [\"nordjyske.dk\"] },\n { company: \"Århus Stiftstidende\", baseUrls: [\"stiften.dk\"] },\n { company: \"Dagbladet Børsen\", baseUrls: [\"borsen.dk\"] },\n { company: \"Lokalavisen\", baseUrls: [\"lokalavisen.dk\"] },\n { company: \"TV2 Nyheder\", baseUrls: [\"tv2.dk\"] },\n { company: \"DR Nyheder\", baseUrls: [\"dr.dk\"] },\n { company: \"Avisen Danmark\", baseUrls: [\"avisen.dk\"] },\n { company: \"Fagbladet 3F\", baseUrls: [\"fagbladet3f.dk\"] },\n { company: \"Herning Folkeblad\", baseUrls: [\"herningfolkeblad.dk\"] },\n { company: \"Midtjyllands Avis\", baseUrls: [\"midtjyllandsavis.dk\"] },\n] as const;\n\nexport const SWISS_NEWS = [\n { company: \"Neue Zürcher Zeitung (NZZ)\", baseUrls: [\"www.nzz.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Swissinfo\", baseUrls: [\"www.swissinfo.ch\"], type: [\"digital-first\"] },\n { company: \"20 Minuten\", baseUrls: [\"www.20min.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Blick\", baseUrls: [\"www.blick.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Le Temps\", baseUrls: [\"www.letemps.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Tages-Anzeiger\", baseUrls: [\"www.tagesanzeiger.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"SRF News\", baseUrls: [\"www.srf.ch\"], type: [\"television\", \"radio\", \"digital\"] },\n { company: \"Luzerner Zeitung\", baseUrls: [\"www.luzernerzeitung.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"La Tribune de Genève\", baseUrls: [\"www.tdg.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Aargauer Zeitung\", baseUrls: [\"www.aargauerzeitung.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"24 Heures\", baseUrls: [\"www.24heures.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Radio Télévision Suisse (RTS)\", baseUrls: [\"www.rts.ch\"], type: [\"television\", \"radio\", \"digital\"] },\n { company: \"Der Bund\", baseUrls: [\"www.derbund.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Schweizer Radio und Fernsehen (SRF)\", baseUrls: [\"www.srf.ch\"], type: [\"television\", \"radio\", \"digital\"] },\n { company: \"Basler Zeitung\", baseUrls: [\"www.bazonline.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Handelszeitung\", baseUrls: [\"www.handelszeitung.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Watson\", baseUrls: [\"www.watson.ch\"], type: [\"digital-first\"] },\n { company: \"Le Matin\", baseUrls: [\"www.lematin.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"La Liberté\", baseUrls: [\"www.laliberte.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"The Swiss Times\", baseUrls: [\"www.theswisstimes.ch\"], type: [\"digital-first\"] },\n] as const;\n\nexport const AUSTRALIAN_NEWS = [\n { company: \"ABC News\", baseUrls: [\"www.abc.net.au\"], type: [\"television\", \"radio\", \"digital\"] },\n { company: \"The Sydney Morning Herald\", baseUrls: [\"www.smh.com.au\"], type: [\"newspaper\", \"digital\"] },\n { company: \"The Australian\", baseUrls: [\"www.theaustralian.com.au\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Herald Sun\", baseUrls: [\"www.heraldsun.com.au\"], type: [\"newspaper\", \"digital\"] },\n { company: \"9News\", baseUrls: [\"www.9news.com.au\"], type: [\"television\", \"digital\"] },\n { company: \"SBS News\", baseUrls: [\"www.sbs.com.au\"], type: [\"television\", \"digital\", \"multicultural\"] },\n { company: \"The Age\", baseUrls: [\"www.theage.com.au\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Sky News Australia\", baseUrls: [\"www.skynews.com.au\"], type: [\"television\", \"digital\"] },\n { company: \"Australian Financial Review\", baseUrls: [\"www.afr.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"news.com.au\", baseUrls: [\"www.news.com.au\"], type: [\"digital-first\"] },\n { company: \"The Courier-Mail\", baseUrls: [\"www.couriermail.com.au\"], type: [\"newspaper\", \"digital\"] },\n { company: \"7NEWS\", baseUrls: [\"7news.com.au\"], type: [\"television\", \"digital\"] },\n { company: \"The West Australian\", baseUrls: [\"www.thewest.com.au\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Daily Telegraph\", baseUrls: [\"www.dailytelegraph.com.au\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Guardian Australia\", baseUrls: [\"www.theguardian.com/au\"], type: [\"digital-first\"] },\n { company: \"Crikey\", baseUrls: [\"www.crikey.com.au\"], type: [\"digital-first\", \"independent\"] },\n { company: \"AAP (Australian Associated Press)\", baseUrls: [\"www.aap.com.au\"], type: [\"news agency\", \"digital\"] },\n { company: \"NT News\", baseUrls: [\"www.ntnews.com.au\"], type: [\"newspaper\", \"digital\"] },\n { company: \"The Canberra Times\", baseUrls: [\"www.canberratimes.com.au\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Brisbane Times\", baseUrls: [\"www.brisbanetimes.com.au\"], type: [\"digital-first\"] },\n] as const;\n\nexport const JAPANESE_NEWS = [\n { company: \"The Asahi Shimbun\", baseUrls: [\"www.asahi.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Yomiuri Shimbun\", baseUrls: [\"www.yomiuri.co.jp\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Nikkei\", baseUrls: [\"www.nikkei.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Mainichi Shimbun\", baseUrls: [\"mainichi.jp\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Kyodo News\", baseUrls: [\"www.kyodonews.jp\"], type: [\"news agency\", \"digital\"] },\n { company: \"Japan Times\", baseUrls: [\"www.japantimes.co.jp\"], type: [\"newspaper\", \"digital\"] },\n { company: \"NHK\", baseUrls: [\"www.nhk.or.jp\"], type: [\"television\", \"radio\", \"digital\"] },\n { company: \"Fuji News Network (FNN)\", baseUrls: [\"www.fnn.jp\"], type: [\"television\", \"digital\"] },\n { company: \"Sankei Shimbun\", baseUrls: [\"www.sankei.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Toyo Keizai\", baseUrls: [\"www.toyokeizai.net\"], type: [\"digital\", \"business magazine\"] },\n { company: \"Hokkaido Shimbun\", baseUrls: [\"www.hokkaido-np.co.jp\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Shizuoka Shimbun\", baseUrls: [\"www.at-s.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Tokyo Shimbun\", baseUrls: [\"www.tokyo-np.co.jp\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Yahoo Japan News\", baseUrls: [\"news.yahoo.co.jp\"], type: [\"digital-first\"] },\n { company: \"TBS News\", baseUrls: [\"news.tbs.co.jp\"], type: [\"television\", \"digital\"] },\n { company: \"Nippon TV News 24 Japan\", baseUrls: [\"www.news24.jp\"], type: [\"television\", \"digital\"] },\n { company: \"Jiji Press\", baseUrls: [\"www.jiji.com\"], type: [\"news agency\", \"digital\"] },\n { company: \"TV Asahi News\", baseUrls: [\"news.tv-asahi.co.jp\"], type: [\"television\", \"digital\"] },\n { company: \"WOWOW Prime News\", baseUrls: [\"www.wowow.co.jp\"], type: [\"television\", \"digital\"] },\n { company: \"Kansai Telecasting Corporation (KTV)\", baseUrls: [\"www.ktv.jp\"], type: [\"television\", \"digital\"] },\n] as const;\n\nexport const SOUTH_KOREAN_NEWS = [\n { company: \"Yonhap News Agency\", baseUrls: [\"www.yonhapnews.co.kr\"], type: [\"news agency\", \"digital\"] },\n { company: \"The Korea Herald\", baseUrls: [\"www.koreaherald.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"The Korea Times\", baseUrls: [\"www.koreatimes.co.kr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Chosun Ilbo\", baseUrls: [\"www.chosun.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"JoongAng Ilbo\", baseUrls: [\"www.joongang.co.kr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Dong-A Ilbo\", baseUrls: [\"www.donga.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"MBC News\", baseUrls: [\"www.imnews.imbc.com\"], type: [\"television\", \"digital\"] },\n { company: \"SBS News\", baseUrls: [\"news.sbs.co.kr\"], type: [\"television\", \"digital\"] },\n { company: \"KBS News\", baseUrls: [\"news.kbs.co.kr\"], type: [\"television\", \"radio\", \"digital\"] },\n { company: \"Hankyoreh\", baseUrls: [\"english.hani.co.kr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Maeil Business Newspaper\", baseUrls: [\"www.mk.co.kr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"MoneyToday\", baseUrls: [\"www.mt.co.kr\"], type: [\"digital-first\", \"business\"] },\n { company: \"Seoul Shinmun\", baseUrls: [\"www.seoul.co.kr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"OhmyNews\", baseUrls: [\"www.ohmynews.com\"], type: [\"digital-first\"] },\n { company: \"News1 Korea\", baseUrls: [\"www.news1.kr\"], type: [\"news agency\", \"digital\"] },\n { company: \"Asia Business Daily\", baseUrls: [\"www.asiae.co.kr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Herald Business\", baseUrls: [\"biz.heraldcorp.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"eDaily\", baseUrls: [\"www.edaily.co.kr\"], type: [\"digital-first\", \"business\"] },\n { company: \"Seoul Economic Daily\", baseUrls: [\"www.sedaily.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"JTBC News\", baseUrls: [\"news.jtbc.co.kr\"], type: [\"television\", \"digital\"] },\n] as const;\n\nexport const TURKISH_NEWS = [\n { company: \"Anadolu Agency (AA)\", baseUrls: [\"www.aa.com.tr\"], type: [\"news agency\", \"digital\"] },\n { company: \"Hürriyet\", baseUrls: [\"www.hurriyet.com.tr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Sabah\", baseUrls: [\"www.sabah.com.tr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Milliyet\", baseUrls: [\"www.milliyet.com.tr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"TRT World\", baseUrls: [\"www.trtworld.com\"], type: [\"television\", \"digital\"] },\n { company: \"CNN Türk\", baseUrls: [\"www.cnnturk.com\"], type: [\"television\", \"digital\"] },\n { company: \"Sozcu\", baseUrls: [\"www.sozcu.com.tr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Daily Sabah\", baseUrls: [\"www.dailysabah.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Yeni Şafak\", baseUrls: [\"www.yenisafak.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Habertürk\", baseUrls: [\"www.haberturk.com\"], type: [\"television\", \"digital\"] },\n { company: \"BirGün\", baseUrls: [\"www.birgun.net\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Türkiye Gazetesi\", baseUrls: [\"www.turkiyegazetesi.com.tr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Cumhuriyet\", baseUrls: [\"www.cumhuriyet.com.tr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Diken\", baseUrls: [\"www.diken.com.tr\"], type: [\"digital-first\"] },\n { company: \"NTV\", baseUrls: [\"www.ntv.com.tr\"], type: [\"television\", \"digital\"] },\n { company: \"Ensonhaber\", baseUrls: [\"www.ensonhaber.com\"], type: [\"digital-first\"] },\n { company: \"T24\", baseUrls: [\"www.t24.com.tr\"], type: [\"digital-first\"] },\n { company: \"Karar\", baseUrls: [\"www.karar.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Gazete Duvar\", baseUrls: [\"www.gazeteduvar.com.tr\"], type: [\"digital-first\"] },\n { company: \"Bloomberg HT\", baseUrls: [\"www.bloomberght.com\"], type: [\"television\", \"digital\"] },\n] as const;\n\nexport const NORWEGIAN_NEWS = [\n { company: \"Aftenposten\", baseUrls: [\"www.aftenposten.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Verdens Gang (VG)\", baseUrls: [\"www.vg.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Dagbladet\", baseUrls: [\"www.dagbladet.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"NRK\", baseUrls: [\"www.nrk.no\"], type: [\"television\", \"radio\", \"digital\"] },\n { company: \"Dagens Næringsliv\", baseUrls: [\"www.dn.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Nettavisen\", baseUrls: [\"www.nettavisen.no\"], type: [\"digital-first\"] },\n { company: \"Klassekampen\", baseUrls: [\"www.klassekampen.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Morgenbladet\", baseUrls: [\"www.morgenbladet.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"E24\", baseUrls: [\"www.e24.no\"], type: [\"digital-first\", \"business\"] },\n { company: \"TV2\", baseUrls: [\"www.tv2.no\"], type: [\"television\", \"digital\"] },\n { company: \"Bergens Tidende\", baseUrls: [\"www.bt.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Adresseavisen\", baseUrls: [\"www.adressa.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Stavanger Aftenblad\", baseUrls: [\"www.aftenbladet.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Fædrelandsvennen\", baseUrls: [\"www.fvn.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"ABC Nyheter\", baseUrls: [\"www.abcnyheter.no\"], type: [\"digital-first\"] },\n { company: \"Romerikes Blad\", baseUrls: [\"www.rb.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Sunnmørsposten\", baseUrls: [\"www.smp.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Finansavisen\", baseUrls: [\"www.finansavisen.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Nordlys\", baseUrls: [\"www.nordlys.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Hamar Arbeiderblad\", baseUrls: [\"www.h-a.no\"], type: [\"newspaper\", \"digital\"] },\n] as const;\n","import { createConstant } from \"./createConstant\";\n\n/**\n * A constant which indicates that a particular\n * type/property was not given a _default value_.\n */\nexport const NO_DEFAULT_VALUE = createConstant(\"no-default-value\");\n\n/**\n * A unique symbol which indicates that a particular\n * type was not given a \"default value\".\n */\nexport type NoDefaultValue = typeof NO_DEFAULT_VALUE;\n","export const NOT_APPLICABLE = Symbol(\"not applicable\");\n/**\n * A unique symbol which indicates that a particular\n * type was \"not applicable\".\n */\n\nexport type NotApplicable<Why extends string> = [\n kind: \"not-applicable\",\n reason: Why,\n uniqueness: typeof NOT_APPLICABLE,\n];\n","import { createConstant } from \"inferred-types/constants\";\n\n/**\n * **NOT_DEFINED**\n *\n * A runtime constant which indicates that some value has not been defined (yet).\n */\nexport const NOT_DEFINED = createConstant(\"not-defined\");\n\nexport type NotDefined = typeof NOT_DEFINED;\n","/**\n * **NUMERIC_CHAR**\n *\n * A tuple containing all numeric characters.\n *\n * **Related:** `NumericChar`\n */\nexport const NUMERIC_CHAR = [\n \"0\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n] as const;\n\nexport const NON_ZERO_NUMERIC_CHAR = [\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n] as const;\n","/**\n * **NUMERIC_DIGIT**\n *\n * A tuple of all numeric digits.\n *\n * **Related:** `Digit`\n */\nexport const NUMERIC_DIGIT = [\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n] as const;\n","export const PHONE_FORMAT = [\n \"Dashed (e.g., 456-555-1212)\",\n \"Dotted (e.g., 456.555.1212)\",\n \"ParaSpaced (e.g., (456) 555 1212)\",\n \"ParaDashed (e.g., (456) 555-1212)\",\n] as const;\n\n/**\n * **PHONE_COUNTRY_CODES**\n *\n * `[code, 3 letter country code, 2 letter country code]`\n */\nexport const PHONE_COUNTRY_CODES = [\n [\"886\", \"TWN\", \"TW\"],\n [\"93\", \"AFG\", \"AF\"],\n [\"355\", \"ALB\", \"AL\"],\n [\"213\", \"DZA\", \"DZ\"],\n [\"1-684\", \"ASM\", \"AS\"],\n [\"376\", \"AND\", \"AD\"],\n [\"244\", \"AGO\", \"AO\"],\n [\"1-264\", \"AIA\", \"AI\"],\n [\"672\", \"ATA\", \"AQ\"],\n [\"1-268\", \"ATG\", \"AG\"],\n [\"54\", \"ARG\", \"AR\"],\n [\"374\", \"ARM\", \"AM\"],\n [\"297\", \"ABW\", \"AW\"],\n [\"61\", \"AUS\", \"AU\"],\n [\"43\", \"AUT\", \"AT\"],\n [\"994\", \"AZE\", \"AZ\"],\n [\"1-242\", \"BHS\", \"BS\"],\n [\"973\", \"BHR\", \"BH\"],\n [\"880\", \"BGD\", \"BD\"],\n [\"1-246\", \"BRB\", \"BB\"],\n [\"375\", \"BLR\", \"BY\"],\n [\"32\", \"BEL\", \"BE\"],\n [\"501\", \"BLZ\", \"BZ\"],\n [\"229\", \"BEN\", \"BJ\"],\n [\"1-441\", \"BMU\", \"BM\"],\n [\"975\", \"BTN\", \"BT\"],\n [\"591\", \"BOL\", \"BO\"],\n [\"599\", \"BES\", \"BQ\"],\n [\"387\", \"BIH\", \"BA\"],\n [\"267\", \"BWA\", \"BW\"],\n [\"47\", \"BVT\", \"BV\"],\n [\"55\", \"BRA\", \"BR\"],\n [\"246\", \"IOT\", \"IO\"],\n [\"1-284\", \"VGB\", \"VG\"],\n [\"673\", \"BRN\", \"BN\"],\n [\"359\", \"BGR\", \"BG\"],\n [\"226\", \"BFA\", \"BF\"],\n [\"257\", \"BDI\", \"BI\"],\n [\"238\", \"CPV\", \"CV\"],\n [\"855\", \"KHM\", \"KH\"],\n [\"237\", \"CMR\", \"CM\"],\n [\"1\", \"CAN\", \"CA\"],\n [\"1-345\", \"CYM\", \"KY\"],\n [\"236\", \"CAF\", \"CF\"],\n [\"235\", \"TCD\", \"TD\"],\n [\"56\", \"CHL\", \"CL\"],\n [\"86\", \"CHN\", \"CN\"],\n [\"852\", \"HKG\", \"HK\"],\n [\"853\", \"MAC\", \"MO\"],\n [\"61\", \"CXR\", \"CX\"],\n [\"61\", \"CCK\", \"CC\"],\n [\"57\", \"COL\", \"CO\"],\n [\"269\", \"COM\", \"KM\"],\n [\"242\", \"COG\", \"CG\"],\n [\"682\", \"COK\", \"CK\"],\n [\"506\", \"CRI\", \"CR\"],\n [\"385\", \"HRV\", \"HR\"],\n [\"53\", \"CUB\", \"CU\"],\n [\"599\", \"CUW\", \"CW\"],\n [\"357\", \"CYP\", \"CY\"],\n [\"420\", \"CZE\", \"CZ\"],\n [\"225\", \"CIV\", \"CI\"],\n [\"850\", \"PRK\", \"KP\"],\n [\"243\", \"COD\", \"CD\"],\n [\"45\", \"DNK\", \"DK\"],\n [\"253\", \"DJI\", \"DJ\"],\n [\"1-767\", \"DMA\", \"DM\"],\n [\"1-809\", \"DOM\", \"DO\"],\n [\"1-829\", \"DOM\", \"DO\"],\n [\"1-849\", \"DOM\", \"DO\"],\n [\"593\", \"ECU\", \"EC\"],\n [\"20\", \"EGY\", \"EG\"],\n [\"503\", \"SLV\", \"SV\"],\n [\"240\", \"GNQ\", \"GQ\"],\n [\"291\", \"ERI\", \"ER\"],\n [\"372\", \"EST\", \"EE\"],\n [\"268\", \"SWZ\", \"SZ\"],\n [\"251\", \"ETH\", \"ET\"],\n [\"500\", \"FLK\", \"FK\"],\n [\"298\", \"FRO\", \"FO\"],\n [\"679\", \"FJI\", \"FJ\"],\n [\"358\", \"FIN\", \"FI\"],\n [\"33\", \"FRA\", \"FR\"],\n [\"594\", \"GUF\", \"GF\"],\n [\"689\", \"PYF\", \"PF\"],\n [\"262\", \"ATF\", \"TF\"],\n [\"241\", \"GAB\", \"GA\"],\n [\"220\", \"GMB\", \"GM\"],\n [\"995\", \"GEO\", \"GE\"],\n [\"49\", \"DEU\", \"DE\"],\n [\"233\", \"GHA\", \"GH\"],\n [\"350\", \"GIB\", \"GI\"],\n [\"30\", \"GRC\", \"GR\"],\n [\"299\", \"GRL\", \"GL\"],\n [\"1-473\", \"GRD\", \"GD\"],\n [\"590\", \"GLP\", \"GP\"],\n [\"1-671\", \"GUM\", \"GU\"],\n [\"502\", \"GTM\", \"GT\"],\n [\"44\", \"GGY\", \"GG\"],\n [\"224\", \"GIN\", \"GN\"],\n [\"245\", \"GNB\", \"GW\"],\n [\"592\", \"GUY\", \"GY\"],\n [\"509\", \"HTI\", \"HT\"],\n [\"672\", \"HMD\", \"HM\"],\n [\"39-06\", \"VAT\", \"VA\"],\n [\"504\", \"HND\", \"HN\"],\n [\"36\", \"HUN\", \"HU\"],\n [\"354\", \"ISL\", \"IS\"],\n [\"91\", \"IND\", \"IN\"],\n [\"62\", \"IDN\", \"ID\"],\n [\"98\", \"IRN\", \"IR\"],\n [\"964\", \"IRQ\", \"IQ\"],\n [\"353\", \"IRL\", \"IE\"],\n [\"44\", \"IMN\", \"IM\"],\n [\"972\", \"ISR\", \"IL\"],\n [\"39\", \"ITA\", \"IT\"],\n [\"1-876\", \"JAM\", \"JM\"],\n [\"81\", \"JPN\", \"JP\"],\n [\"44\", \"JEY\", \"JE\"],\n [\"962\", \"JOR\", \"JO\"],\n [\"7\", \"KAZ\", \"KZ\"],\n [\"254\", \"KEN\", \"KE\"],\n [\"686\", \"KIR\", \"KI\"],\n [\"965\", \"KWT\", \"KW\"],\n [\"996\", \"KGZ\", \"KG\"],\n [\"856\", \"LAO\", \"LA\"],\n [\"371\", \"LVA\", \"LV\"],\n [\"961\", \"LBN\", \"LB\"],\n [\"266\", \"LSO\", \"LS\"],\n [\"231\", \"LBR\", \"LR\"],\n [\"218\", \"LBY\", \"LY\"],\n [\"423\", \"LIE\", \"LI\"],\n [\"370\", \"LTU\", \"LT\"],\n [\"352\", \"LUX\", \"LU\"],\n [\"261\", \"MDG\", \"MG\"],\n [\"265\", \"MWI\", \"MW\"],\n [\"60\", \"MYS\", \"MY\"],\n [\"960\", \"MDV\", \"MV\"],\n [\"223\", \"MLI\", \"ML\"],\n [\"356\", \"MLT\", \"MT\"],\n [\"692\", \"MHL\", \"MH\"],\n [\"596\", \"MTQ\", \"MQ\"],\n [\"222\", \"MRT\", \"MR\"],\n [\"230\", \"MUS\", \"MU\"],\n [\"262\", \"MYT\", \"YT\"],\n [\"52\", \"MEX\", \"MX\"],\n [\"691\", \"FSM\", \"FM\"],\n [\"377\", \"MCO\", \"MC\"],\n [\"976\", \"MNG\", \"MN\"],\n [\"382\", \"MNE\", \"ME\"],\n [\"1-664\", \"MSR\", \"MS\"],\n [\"212\", \"MAR\", \"MA\"],\n [\"258\", \"MOZ\", \"MZ\"],\n [\"95\", \"MMR\", \"MM\"],\n [\"264\", \"NAM\", \"NA\"],\n [\"674\", \"NRU\", \"NR\"],\n [\"977\", \"NPL\", \"NP\"],\n [\"31\", \"NLD\", \"NL\"],\n [\"687\", \"NCL\", \"NC\"],\n [\"64\", \"NZL\", \"NZ\"],\n [\"505\", \"NIC\", \"NI\"],\n [\"227\", \"NER\", \"NE\"],\n [\"234\", \"NGA\", \"NG\"],\n [\"683\", \"NIU\", \"NU\"],\n [\"672\", \"NFK\", \"NF\"],\n [\"1-670\", \"MNP\", \"MP\"],\n [\"47\", \"NOR\", \"NO\"],\n [\"968\", \"OMN\", \"OM\"],\n [\"92\", \"PAK\", \"PK\"],\n [\"680\", \"PLW\", \"PW\"],\n [\"507\", \"PAN\", \"PA\"],\n [\"675\", \"PNG\", \"PG\"],\n [\"595\", \"PRY\", \"PY\"],\n [\"51\", \"PER\", \"PE\"],\n [\"63\", \"PHL\", \"PH\"],\n [\"870\", \"PCN\", \"PN\"],\n [\"48\", \"POL\", \"PL\"],\n [\"351\", \"PRT\", \"PT\"],\n [\"974\", \"QAT\", \"QA\"],\n [\"82\", \"KOR\", \"KR\"],\n [\"373\", \"MDA\", \"MD\"],\n [\"40\", \"ROU\", \"RO\"],\n [\"7\", \"RUS\", \"RU\"],\n [\"250\", \"RWA\", \"RW\"],\n [\"262\", \"REU\", \"RE\"],\n [\"590\", \"BLM\", \"BL\"],\n [\"290\", \"SHN\", \"SH\"],\n [\"1-869\", \"KNA\", \"KN\"],\n [\"1-758\", \"LCA\", \"LC\"],\n [\"590\", \"MAF\", \"MF\"],\n [\"508\", \"SPM\", \"PM\"],\n [\"1-784\", \"VCT\", \"VC\"],\n [\"685\", \"WSM\", \"WS\"],\n [\"378\", \"SMR\", \"SM\"],\n [\"239\", \"STP\", \"ST\"],\n [\"966\", \"SAU\", \"SA\"],\n [\"221\", \"SEN\", \"SN\"],\n [\"381\", \"SRB\", \"RS\"],\n [\"248\", \"SYC\", \"SC\"],\n [\"232\", \"SLE\", \"SL\"],\n [\"65\", \"SGP\", \"SG\"],\n [\"1-721\", \"SXM\", \"SX\"],\n [\"421\", \"SVK\", \"SK\"],\n [\"386\", \"SVN\", \"SI\"],\n [\"677\", \"SLB\", \"SB\"],\n [\"252\", \"SOM\", \"SO\"],\n [\"27\", \"ZAF\", \"ZA\"],\n [\"500\", \"SGS\", \"GS\"],\n [\"211\", \"SSD\", \"SS\"],\n [\"34\", \"ESP\", \"ES\"],\n [\"94\", \"LKA\", \"LK\"],\n [\"970\", \"PSE\", \"PS\"],\n [\"249\", \"SDN\", \"SD\"],\n [\"597\", \"SUR\", \"SR\"],\n [\"47\", \"SJM\", \"SJ\"],\n [\"46\", \"SWE\", \"SE\"],\n [\"41\", \"CHE\", \"CH\"],\n [\"963\", \"SYR\", \"SY\"],\n [\"992\", \"TJK\", \"TJ\"],\n [\"66\", \"THA\", \"TH\"],\n [\"389\", \"MKD\", \"MK\"],\n [\"670\", \"TLS\", \"TL\"],\n [\"228\", \"TGO\", \"TG\"],\n [\"690\", \"TKL\", \"TK\"],\n [\"676\", \"TON\", \"TO\"],\n [\"1-868\", \"TTO\", \"TT\"],\n [\"216\", \"TUN\", \"TN\"],\n [\"90\", \"TUR\", \"TR\"],\n [\"993\", \"TKM\", \"TM\"],\n [\"1-649\", \"TCA\", \"TC\"],\n [\"688\", \"TUV\", \"TV\"],\n [\"256\", \"UGA\", \"UG\"],\n [\"380\", \"UKR\", \"UA\"],\n [\"971\", \"ARE\", \"AE\"],\n [\"44\", \"GBR\", \"GB\"],\n [\"255\", \"TZA\", \"TZ\"],\n [\"1-340\", \"VIR\", \"VI\"],\n [\"1\", \"USA\", \"US\"],\n [\"598\", \"URY\", \"UY\"],\n [\"998\", \"UZB\", \"UZ\"],\n [\"678\", \"VUT\", \"VU\"],\n [\"58\", \"VEN\", \"VE\"],\n [\"84\", \"VNM\", \"VN\"],\n [\"681\", \"WLF\", \"WF\"],\n [\"212\", \"ESH\", \"EH\"],\n [\"967\", \"YEM\", \"YE\"],\n [\"260\", \"ZMB\", \"ZM\"],\n [\"263\", \"ZWE\", \"ZW\"],\n [\"358\", \"ALA\", \"AX\"],\n] as const;\n","/**\n * **PLURAL_EXCEPTIONS**\n *\n * An array of tuples of the form `[singular, plural]`.\n */\nexport const PLURAL_EXCEPTIONS_OLD = [\n [\"photo\", \"photos\"],\n [\"piano\", \"pianos\"],\n [\"halo\", \"halos\"],\n [\"foot\", \"feet\"],\n [\"man\", \"men\"],\n [\"woman\", \"women\"],\n [\"person\", \"people\"],\n [\"mouse\", \"mice\"],\n [\"series\", \"series\"],\n [\"sheep\", \"sheep\"],\n [\"money\", \"monies\"],\n [\"deer\", \"deer\"],\n\n] as const;\n\n/**\n * **PluralExceptions**\n *\n * A dictionary of key/value pairs which map singular words to their\n * plural counterpart. This can be used in conjunction with the the\n * `pluralize()` and `Pluralize<T>` utilities to extend the known\n * irregular conversions.\n */\nexport type PluralExceptions = Record<string, string>;\n\n/**\n * **PLURAL_EXCEPTIONS**\n *\n * A lookup table that maps singular words to their _plural_ counterpart.\n */\nexport const PLURAL_EXCEPTIONS = {\n photo: \"photos\",\n piano: \"pianos\",\n halo: \"halos\",\n foot: \"feet\",\n man: \"men\",\n woman: \"women\",\n person: \"people\",\n mouse: \"mice\",\n series: \"series\",\n sheep: \"sheep\",\n money: \"monies\",\n deer: \"deer\",\n goose: \"geese\",\n child: \"children\",\n tooth: \"teeth\",\n ox: \"oxen\",\n basis: \"bases\",\n radius: \"radii\",\n syllabus: \"syllabi\",\n ice: \"ice\",\n fish: \"fish\",\n means: \"means\",\n phenomenon: \"phenomena\",\n criterion: \"criteria\",\n datum: \"data\",\n memorandum: \"memoranda\",\n bacterium: \"bacteria\",\n stratum: \"strata\",\n curriculum: \"curricula\",\n index: \"indices\",\n appendix: \"appendices\",\n vortex: \"vortices\",\n bison: \"bison\",\n axis: \"axes\",\n antenna: \"antennas\",\n cactus: \"cacti\",\n corpus: \"corpora\",\n beau: \"beaux\",\n die: \"dice\",\n ellipsis: \"ellipses\",\n erratum: \"errata\",\n focus: \"foci\",\n formula: \"formulas\",\n fungus: \"fungi\",\n genus: \"genera\",\n graffito: \"graffiti\",\n grouse: \"grouses\",\n half: \"halves\",\n hoof: \"hooves\",\n hypothesis: \"hypothesis\",\n larva: \"larvae\",\n libretto: \"libretti\",\n loaf: \"loaves\",\n locus: \"loci\",\n medium: \"mediums\",\n minutia: \"minutiae\",\n nucleus: \"nuclei\",\n oasis: \"oases\",\n opus: \"opuses\",\n ovum: \"ova\",\n parenthesis: \"parentheses\",\n phylum: \"phyla\",\n quiz: \"quizzes\",\n referendum: \"referendums\",\n self: \"selves\",\n species: \"species\",\n stimulus: \"stimuli\",\n swine: \"swine\",\n synopsis: \"synopses\",\n thesis: \"theses\",\n thief: \"thieves\",\n vertex: \"vertexes\",\n wife: \"wives\",\n wolf: \"wolves\",\n} as const;\n","export const PROXMOX_CT_STATE = [\n \"started\",\n \"stopped\",\n \"enabled\",\n \"disabled\",\n \"ignored\",\n] as const;\n","/**\n * common sources for source code repositories\n */\nexport const REPO_SOURCES = [\n \"github\",\n \"bitbucket\",\n \"gitlab\",\n \"codecommit\",\n \"local\",\n] as const;\n\n/**\n * page types you'd expect to find in a source code repository.\n */\nexport const REPO_PAGE_TYPES = [\n \"repo\",\n \"commits\",\n \"author\",\n \"org\",\n \"profile\",\n \"issues\",\n \"actions\",\n \"followers\",\n \"following\",\n \"docs\",\n \"unknown\",\n] as const;\n\nexport const REPO_SOURCE_LOOKUP = {\n github: [`https://github.com`, \"https://github.io\"],\n bitbucket: [\"https://bitbucket.org\"],\n gitlab: [\"https://gitlab.com\"],\n codecommit: [\"https://aws.amazon.com/codecommit/\"],\n local: [],\n} as const;\n\nexport const GITHUB_INSIGHT_CATEGORY_LOOKUP = {\n pulse: \"pulse\",\n contributors: \"graphs/contributors\",\n community: \"graphs/community\",\n standards: \"community\",\n traffic: \"graphs/traffic\",\n commits: \"graphs/commit-activity\",\n code_frequency: \"graphs/code-frequency\",\n dependencies: \"network/dependencies\",\n dependents: \"network/dependents\",\n dependabot: \"network/updates\",\n network: \"network\",\n forks: \"forks\",\n people: \"people\",\n} as const;\n","/**\n * Amazon's DNS entries (for retail business)\n */\nexport const AMAZON_DNS = [\n \"www.amazon.com\",\n `www.amazon.co.uk`,\n `www.amazon.fr`,\n `www.amazon.de`,\n `www.amazon.it`,\n `www.amazon.es`,\n] as const;\n\nexport const WALMART_DNS = [\n \"www.walmart.com\",\n \"www.walmart.ca\",\n \"www.walmart.com.mx\",\n] as const;\n\nexport const APPLE_DNS = [\n \"store.apple.com\",\n \"www.apple.com\",\n] as const;\n\nexport const HOME_DEPOT_DNS = [\n \"www.homedepot.com\",\n \"www.homedepot.ca\",\n] as const;\n\nexport const EBAY_DNS = [\n \"www.ebay.com\",\n \"www.ebay.co.uk\",\n \"www.ebay.fr\",\n \"www.ebay.de\",\n \"www.ebay.it\",\n] as const;\n\nexport const TARGET_DNS = [\n \"www.target.com\",\n] as const;\n\nexport const ETSY_DNS = [\n \"www.etsy.com\",\n] as const;\n\nexport const COSTCO_DNS = [\n \"www.costco.com\",\n \"www.costco.co.uk\",\n \"www.costco.ca\",\n] as const;\n\nexport const CHEWY_DNS = [\n \"www.chewy.com\",\n] as const;\n\nexport const BEST_BUY_DNS = [\n \"www.bestbuy.com\",\n \"www.bestbuy.ca\",\n] as const;\n\nexport const WAYFAIR_DNS = [\n \"www.wayfair.com\",\n \"www.wayfair.ca\",\n \"www.wayfair.co.uk\",\n] as const;\n\nexport const NIKE_DNS = [\n \"www.nike.com\",\n] as const;\n\nexport const MACYS_DNS = [\n \"www.macys.com\",\n] as const;\n\nexport const LOWES_DNS = [\n \"www.lowes.com\",\n] as const;\n\nexport const IKEA_DNS = [\n \"www.ikea.com\",\n] as const;\n\nexport const DELL_DNS = [\n \"www.dell.com\",\n] as const;\n\n/** DNS for H&M retailer */\nexport const HM_DNS = [\n \"www2.hm.com\",\n] as const;\n\nexport const ZARA_DNS = [\n \"www.zara.com\",\n] as const;\n\nexport const KROGER_DNS = [\n \"www.kroger.com\",\n] as const;\n\nexport const WALGREENS_DNS = [\n \"www.walgreens.com\",\n] as const;\n\nexport const CVS_DNS = [\n \"www.cvs.com\",\n] as const;\n\nexport const WHOLE_FOODS_DNS = [\n \"www.wholefoodsmarket.com\",\n \"www.wholefoodsmarket.co.uk\",\n] as const;\n","export const SHAPE_PREFIXES = [\n \"string\",\n \"number\",\n \"boolean\",\n \"null\",\n \"undefined\",\n \"unknown\",\n \"opt::\",\n \"union::\",\n \"tuple::\",\n \"array::\",\n \"object\",\n \"record::\",\n] as const;\n\nexport const SHAPE_DELIMITER = \"||,||\" as const;\n","export const SIMPLE_DICT_VALUES = [\n \"string\",\n \"number\",\n \"boolean\",\n \"unknown\",\n \"Opt<string>\",\n \"Opt<number>\",\n \"Opt<boolean>\",\n \"Opt<unknown>\",\n] as const;\n\nexport const SIMPLE_SET_TYPES = [\n \"string\",\n \"number\",\n \"boolean\",\n \"unknown\",\n \"Opt<string>\",\n \"Opt<number>\",\n \"Opt<boolean>\",\n \"Opt<unknown>\",\n] as const;\n\nexport const SIMPLE_SCALAR_TOKENS = [\n \"string\",\n \"number\",\n `string(TOKEN)` as `string(${string})`,\n `number(TOKEN)` as `number(${number}${`,${string}` | \"\"})`,\n \"boolean\",\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"unknown\",\n \"any\",\n \"never\",\n] as const;\n\nexport const SIMPLE_OPT_SCALAR_TOKENS = [\n \"Opt<string>\",\n \"Opt<number>\",\n \"Opt<boolean>\",\n \"Opt<true>\",\n \"Opt<false>\",\n \"Opt<null>\",\n \"Opt<undefined>\",\n \"Opt<unknown>\",\n \"Opt<any>\",\n \"Opt<string(TOKEN)>\" as `Opt<string(${string}${`,${string}` | \"\"})>`,\n \"Opt<number(TOKEN)>\" as `Opt<number(${number}${`,${string}` | \"\"})`,\n \"Opt<undefined>\",\n] as const;\n\nexport const SIMPLE_FN_TOKENS = [\n \"Fn<none> => Unknown\",\n \"Fn<string> => Unknown\",\n \"Fn<number> => Unknown\",\n \"Fn<boolean> => Unknown\",\n] as const;\n\nexport const SIMPLE_UNION_TOKENS = [\n `Union(TOKEN)` as `union(${string}${`,${string}` | \"\"})`,\n] as const;\n\nexport const SIMPLE_MAP_KEYS = [\n \"string\",\n \"number\",\n \"Dict\",\n \"Dict<string, string>\",\n \"Dict<string, number>\",\n \"Dict<string, boolean>\",\n \"Dict<string, unknown>\",\n \"Dict<string, Opt<string>>\",\n \"Dict<string, Opt<number>>\",\n \"Dict<string, Opt<boolean>>\",\n] as const;\n\nexport const SIMPLE_MAP_VALUES = [\n ...SIMPLE_MAP_KEYS,\n \"boolean\",\n \"unknown\",\n \"undefined\",\n \"Dict\",\n \"Array\",\n \"Dict<string, Opt<string>>\",\n \"Dict<string, Opt<number>>\",\n \"Dict<string, Opt<boolean>>\",\n \"Dict<string, Opt<unknown>>\",\n] as const;\n\ntype ReqScalarToken = typeof SIMPLE_SCALAR_TOKENS[number];\ntype OptScalarToken = typeof SIMPLE_OPT_SCALAR_TOKENS[number];\ntype ScalarToken = ReqScalarToken | OptScalarToken;\ntype MapKeys = typeof SIMPLE_MAP_KEYS[number];\ntype MapValues = typeof SIMPLE_MAP_VALUES[number];\ntype SetType = typeof SIMPLE_SET_TYPES[number];\n\nexport const SIMPLE_DICT_TOKENS = [\n \"Dict\",\n \"Dict<string, string>\",\n \"Dict<string, number>\",\n \"Dict<string, boolean>\",\n \"Dict<string, unknown>\",\n \"Dict<string, Opt<string>>\",\n \"Dict<string, Opt<number>>\",\n \"Dict<string, Opt<boolean>>\",\n \"Dict<string, Opt<unknown>>\",\n \"Dict<{TOKEN: TOKEN}>\" as `Dict<{${string}: ${ScalarToken}}>`,\n \"Dict<{TOKEN: TOKEN, TOKEN: TOKEN}>\" as `Dict<{${string}: ${ScalarToken}, ${string}: ${string}}`,\n] as const;\n\nexport const SIMPLE_ARRAY_TOKENS = [\n \"Array\",\n \"Array<string>\",\n \"Array<string(TOKEN)>\" as `Array<string(${string})>`,\n \"Array<number>\",\n \"Array<number(TOKEN)>\" as `Array<number(${number}${`,${string}` | \"\"})>`,\n \"Array<boolean>\",\n \"Array<unknown>\",\n `Array<Dict>`,\n `Array<Set>`,\n `Array<Map>`,\n] as const;\n\nexport const SIMPLE_MAP_TOKENS = [\n \"Map\",\n \"Map<TOKEN, TOKEN>\" as `Map<${MapKeys}, ${MapValues}>`,\n \"WeakMap\",\n] as const;\n\nexport const SIMPLE_SET_TOKENS = [\n \"Set\",\n \"Set<TOKEN>\" as `Set<${SetType}>`,\n] as const;\n\nexport const SIMPLE_CONTAINER_TOKENS = [\n ...SIMPLE_DICT_TOKENS,\n ...SIMPLE_ARRAY_TOKENS,\n ...SIMPLE_MAP_TOKENS,\n ...SIMPLE_SET_TOKENS,\n] as const;\n\n/**\n * **SIMPLE_TOKENS**\n *\n * A list of strings literals which can be used\n * to express the type of a variable or token\n * in relatively course granularity\n */\nexport const SIMPLE_TOKENS = [\n ...SIMPLE_SCALAR_TOKENS,\n ...SIMPLE_OPT_SCALAR_TOKENS,\n ...SIMPLE_CONTAINER_TOKENS,\n ...SIMPLE_UNION_TOKENS,\n] as const;\n","/**\n * Singular nouns typically end in the characters represented by this array.\n *\n * **Related:** `SingularNounEnding`\n */\nexport const SINGULAR_NOUN_ENDINGS = [\n \"s\",\n \"sh\",\n \"ch\",\n \"x\",\n \"z\",\n \"o\",\n] as const;\n","interface SocialMediaCompany {\n name: string;\n description: string;\n baseUrls: string[];\n profileUrl: string;\n approximateUserSize?: number;\n tickerSymbol?: string;\n}\n\nexport const SOCIAL_MEDIA = [\n {\n name: \"Facebook\",\n description: \"Connect with friends, family, and communities worldwide on one of the largest social networks.\",\n baseUrls: [\"https://www.facebook.com\"],\n profileUrl: \"https://www.facebook.com/:user_id\",\n approximateUserSize: 3000000000, // 3 billion\n tickerSymbol: \"META\",\n },\n {\n name: \"YouTube\",\n description: \"A platform for sharing and watching videos, connecting creators with audiences globally.\",\n baseUrls: [\"https://www.youtube.com\"],\n profileUrl: \"https://www.youtube.com/user/:user_id\",\n approximateUserSize: 2500000000, // 2.5 billion\n tickerSymbol: \"GOOGL\",\n },\n {\n name: \"WhatsApp\",\n description: \"A secure messaging app for personal and business communication.\",\n baseUrls: [\"https://www.whatsapp.com\", \"https://wa.me\"],\n profileUrl: \"https://wa.me/:user_id\",\n approximateUserSize: 2000000000, // 2 billion\n tickerSymbol: \"META\",\n },\n {\n name: \"Instagram\",\n description: \"Share photos and videos with friends and followers through posts, stories, and reels.\",\n baseUrls: [\"https://www.instagram.com\"],\n profileUrl: \"https://www.instagram.com/:user_id\",\n approximateUserSize: 2000000000, // 2 billion\n tickerSymbol: \"META\",\n },\n {\n name: \"TikTok\",\n description: \"A short-form video platform known for its highly engaging content and viral trends.\",\n baseUrls: [\"https://www.tiktok.com\"],\n profileUrl: \"https://www.tiktok.com/@:user_id\",\n approximateUserSize: 1600000000, // 1.6 billion\n },\n {\n name: \"WeChat\",\n description: \"China's popular messaging and lifestyle app, integrating social media and mobile payments.\",\n baseUrls: [\"https://www.wechat.com\"],\n profileUrl: \"https://www.wechat.com/:user_id\", // Profile URLs typically restricted in China\n approximateUserSize: 1300000000, // 1.3 billion\n },\n {\n name: \"Facebook Messenger\",\n description: \"A messaging app used for personal and business interactions, seamlessly integrated with Facebook.\",\n baseUrls: [\"https://www.messenger.com\"],\n profileUrl: \"https://www.messenger.com/t/:user_id\",\n approximateUserSize: 1000000000, // 1 billion\n tickerSymbol: \"META\",\n },\n {\n name: \"Telegram\",\n description: \"A messaging platform focused on privacy, with channels and group capabilities.\",\n baseUrls: [\"https://www.telegram.org\", \"https://t.me\"],\n profileUrl: \"https://t.me/:user_id\",\n approximateUserSize: 900000000, // 900 million\n },\n {\n name: \"Snapchat\",\n description: \"A multimedia app popular for its disappearing messages and creative filters.\",\n baseUrls: [\"https://www.snapchat.com\"],\n profileUrl: \"https://www.snapchat.com/add/:user_id\",\n approximateUserSize: 800000000, // 800 million\n tickerSymbol: \"SNAP\",\n },\n {\n name: \"Douyin\",\n description: \"The Chinese version of TikTok, with similar short-form video content tailored for China.\",\n baseUrls: [\"https://www.douyin.com\"],\n profileUrl: \"https://www.douyin.com/user/:user_id\",\n approximateUserSize: 750000000, // 750 million\n },\n {\n name: \"LinkedIn\",\n description: \"The largest professional networking platform, where users connect for career opportunities, insights, and business networking.\",\n baseUrls: [\"https://www.linkedin.com\"],\n profileUrl: \"https://www.linkedin.com/in/:user_id\",\n approximateUserSize: 930000000, // 930 million\n tickerSymbol: \"MSFT\",\n },\n {\n name: \"X (formerly Twitter)\",\n description: \"A platform for real-time updates, news sharing, and public discourse with a focus on brief, impactful posts.\",\n baseUrls: [\"https://www.twitter.com\", \"https://x.com\"],\n profileUrl: \"https://twitter.com/:user_id\",\n approximateUserSize: 540000000, // 540 million\n },\n {\n name: \"Pinterest\",\n description: \"A visually-driven platform for sharing ideas, DIY projects, fashion, and more.\",\n baseUrls: [\"https://www.pinterest.com\"],\n profileUrl: \"https://www.pinterest.com/:user_id\",\n approximateUserSize: 460000000, // 460 million\n tickerSymbol: \"PINS\",\n },\n {\n name: \"Reddit\",\n description: \"A community-driven platform organized into niche forums or 'subreddits' focused on various topics.\",\n baseUrls: [\"https://www.reddit.com\"],\n profileUrl: \"https://www.reddit.com/user/:user_id\",\n approximateUserSize: 430000000, // 430 million\n },\n {\n name: \"Clubhouse\",\n description: \"A voice-based social network where users engage in live audio conversations on various topics.\",\n baseUrls: [\"https://www.clubhouse.com\"],\n profileUrl: \"https://www.clubhouse.com/:user_id\",\n approximateUserSize: 10000000, // 10 million\n },\n {\n name: \"Discord\",\n description: \"Originally aimed at gamers, Discord is now widely used by various communities for group chat, video, and voice calls.\",\n baseUrls: [\"https://www.discord.com\", \"https://discord.com\"],\n profileUrl: \"https://discord.com/users/:user_id\",\n approximateUserSize: 300000000, // 300 million\n },\n] as const satisfies SocialMediaCompany[];\n","// eslint-disable style/quote-props\n\nexport const TW_HUE_NEUTRAL = {\n slate: 262,\n gray: 270,\n zinc: 269,\n neutral: 270,\n stone: 273,\n} as const;\n\nexport const TW_HUE_VIBRANT = {\n red: 24,\n orange: 44,\n amber: 79,\n yellow: 100,\n lime: 132,\n green: 144,\n emerald: 159,\n teal: 182,\n cyan: 192,\n sky: 219,\n blue: 240,\n indigo: 268,\n violet: 283,\n purple: 294,\n fuchsia: 319,\n pink: 334,\n rose: 15,\n} as const;\n\nexport const TW_HUE_STATIC = {\n black: 0,\n white: 106.37411429114086,\n} as const;\n\n/**\n * **TW_COLOR_HUE**\n *\n * The _hue_ values for [TailwindCSS](https://tailwindcss.com/docs/customizing-colors)\n * when moved into the **oklch** color space.\n */\nexport const TW_HUE = {\n ...TW_HUE_NEUTRAL,\n ...TW_HUE_VIBRANT,\n ...TW_HUE_STATIC,\n} as const;\n\nexport const TW_LUMINOSITY = {\n \"50\": 97.78,\n \"100\": 93.56,\n \"200\": 88.11,\n \"300\": 82.67,\n \"400\": 74.22,\n \"500\": 64.78,\n \"600\": 57.33,\n \"700\": 46.89,\n \"800\": 39.44,\n \"900\": 32,\n \"950\": 23.78,\n} as const;\n\nexport const TW_LUMIN_50 = TW_LUMINOSITY[\"50\"];\nexport const TW_LUMIN_100 = TW_LUMINOSITY[\"100\"];\nexport const TW_LUMIN_200 = TW_LUMINOSITY[\"200\"];\nexport const TW_LUMIN_300 = TW_LUMINOSITY[\"300\"];\nexport const TW_LUMIN_400 = TW_LUMINOSITY[\"400\"];\nexport const TW_LUMIN_500 = TW_LUMINOSITY[\"500\"];\nexport const TW_LUMIN_600 = TW_LUMINOSITY[\"600\"];\nexport const TW_LUMIN_700 = TW_LUMINOSITY[\"700\"];\nexport const TW_LUMIN_800 = TW_LUMINOSITY[\"800\"];\nexport const TW_LUMIN_900 = TW_LUMINOSITY[\"900\"];\nexport const TW_LUMIN_950 = TW_LUMINOSITY[\"950\"];\n\n/**\n * **TW_CHROMA**\n *\n * The possible chroma values from Tailwind CSS when using\n * the **okhsl** color model.\n *\n * **Related:** `TW_CHROMA_50`, `TW_CHROMA_100`, ...\n */\nexport const TW_CHROMA = {\n \"50\": 0.0108,\n \"100\": 0.0321,\n \"200\": 0.0609,\n \"300\": 0.0908,\n \"400\": 0.1398,\n \"500\": 0.1472,\n \"600\": 0.1299,\n \"700\": 0.1067,\n \"800\": 0.0898,\n \"900\": 0.0726,\n \"950\": 0.054,\n} as const;\n\nexport const TW_CHROMA_50 = TW_CHROMA[\"50\"];\nexport const TW_CHROMA_100 = TW_CHROMA[\"100\"];\nexport const TW_CHROMA_200 = TW_CHROMA[\"200\"];\nexport const TW_CHROMA_300 = TW_CHROMA[\"300\"];\nexport const TW_CHROMA_400 = TW_CHROMA[\"400\"];\nexport const TW_CHROMA_500 = TW_CHROMA[\"500\"];\nexport const TW_CHROMA_600 = TW_CHROMA[\"600\"];\nexport const TW_CHROMA_700 = TW_CHROMA[\"700\"];\nexport const TW_CHROMA_800 = TW_CHROMA[\"800\"];\nexport const TW_CHROMA_900 = TW_CHROMA[\"900\"];\nexport const TW_CHROMA_950 = TW_CHROMA[\"950\"];\n\n/**\n * The list of \"targets\" where Tailwind color string references\n * can be applied to. These domains are prefixes to the color string\n * when used (e.g., `bg-green-500`)\n */\nexport const TW_COLOR_TARGETS = [\n \"bg\",\n \"text\",\n \"border\",\n \"ring\",\n \"shadow\",\n \"border\",\n] as const;\n\nexport const TW_MODIFIERS_CORE = [\n \"dark\",\n \"focus\",\n \"hover\",\n \"active\",\n \"visited\",\n \"disabled\",\n] as const;\n\nexport const TW_MODIFIERS_ORDER = [\n \"first\",\n \"last\",\n \"odd\",\n \"even\",\n] as const;\n\nexport const TW_MODIFIERS_RELN = [\n \"focus-within\",\n \"focus-visible\",\n \"checked\",\n \"peer-invalid\",\n `peer-checked/{{string}}`,\n] as const;\n\n/**\n * The list of page size prefixes which Tailwind provides for adjusting to\n * device size. These are the defaults and can be customized.\n */\nexport const TW_MODIFIERS_SIZING = [\n \"sm\",\n \"md\",\n \"lg\",\n \"xl\",\n \"2xl\",\n] as const;\n\n/**\n * The list of _modifiers_ which you can target as a prefix to a Tailwind\n * class (e.g., `focus:...`, `hover:...`).\n */\nexport const TW_MODIFIERS = [\n ...TW_MODIFIERS_CORE,\n ...TW_MODIFIERS_ORDER,\n ...TW_MODIFIERS_SIZING,\n ...TW_MODIFIERS_RELN,\n] as const;\n","/* eslint-disable ts/no-empty-object-type */\ntype AnyObject = Record<never, unknown> | Record<string | symbol, unknown>;\n\ntype AnyFunction<\n TArgs extends readonly unknown[] = unknown[],\n TReturn = unknown,\n TProps extends AnyObject = AnyObject,\n> = TProps extends Record<never, unknown>\n ? (...args: TArgs) => TReturn\n : ((...args: TArgs) => TReturn) & TProps;\n\n/**\n * **wide**\n *\n * Provides a dictionary of _wide_ types; in most cases you should\n * prefer the **kind** API.\n */\nexport const WideAssignment = {\n boolean: () => \"<<boolean>>\" as unknown as boolean,\n string: () => \"<<string>>\" as string,\n number: () => \"<<number>>\" as unknown as number,\n symbol: () => \"<<symbol>>\" as unknown as symbol,\n null: () => \"<<null>>\" as unknown as null,\n function: () => \"<<function>>\" as unknown as AnyFunction,\n tuple: () => \"<<tuple>>\" as unknown as readonly unknown[],\n singularTuple: () => [\"<<tuple>>\"] as unknown as [readonly unknown[]],\n object: () => \"<<object>>\" as AnyObject,\n emptyObject: () => \"<<empty-object>>\" as Record<never, unknown>,\n undefined: () => \"<<undefined>>\" as unknown as undefined,\n /**\n * run-time value is a type token for `unknown` and type is of course `unknown`\n */\n unknown: () => \"<<unknown>>\" as unknown,\n nothing: (): null | undefined => \"<<nothing>>\" as unknown as (null | undefined),\n something: () => \"<<something>>\" as unknown as {},\n} as const;\n","import { WideAssignment } from \"./Wide\";\n\ntype Scalar = string | number | boolean | null | symbol;\ntype WideApi = typeof WideAssignment;\nconst wide = WideAssignment as unknown as WideApi;\n\nfunction entry<\n TRefType extends ((kb: WideApi) => unknown),\n TDesc extends string,\n TParams extends readonly (Scalar | ((kb: WideApi) => unknown))[],\n>(refType: TRefType, desc: TDesc, ...params: TParams) {\n return [\n refType(wide as unknown as WideApi) as ReturnType<TRefType>,\n desc as TDesc,\n params.map(i => typeof (i) === \"function\"\n ? i(wide)\n : i,\n ) as unknown as TParams,\n ] as [ReturnType<TRefType>, TDesc, TParams];\n}\n\n/**\n * **TYPE_COMPARISONS**\n *\n * A dictionary of all _comparison_ operations along with their `RefType`, description,\n * and `Params`.\n */\nexport const TYPE_COMPARISONS = {\n Extends: entry(t => t.unknown(), \"extends the type\", t => t.unknown()),\n NotExtends: entry(t => t.unknown(), \"does not extent the type\", t => t.unknown()),\n Equals: entry(t => t.unknown(), \"equals the type\", t => t.unknown()),\n NotEqual: entry(t => t.unknown(), \"does not equal the type\", t => t.unknown()),\n Truthy: entry(t => t.unknown(), \"must be a truthy value\"),\n Falsy: entry(t => t.unknown(), \"must be a falsy value\"),\n IsSomething: entry(t => t.unknown(), \"must be 'something' (aka, not null or undefined)\"),\n IsNothing: entry(t => t.unknown(), \"must be 'nothing' (aka, null or undefined)\"),\n IsString: entry(t => t.string(), \"must extend a string type\"),\n IsNumber: entry(t => t.number(), \"must extend a number type\"),\n IsBoolean: entry(t => t.boolean(), \"must extend a boolean type\"),\n // numeric\n GreaterThan: entry(t => t.number(), \"must be a numeric literal greater than [[0]]\", t => t.number()),\n LessThan: entry(t => t.number(), \"must be a numeric literal less than [[0]]\", t => t.number()),\n // string\n StartsWith: entry(t => t.string(), \"must be a string literal that starts with '[[0]]'\", t => t.string()),\n EndsWith: entry(t => t.string(), \"must be a string literal that ends with '[[0]]'\", t => t.string()),\n Includes: entry(t => t.string(), \"must be a string literal that includes the substring '[[0]]'\", t => t.string()),\n // function\n ReturnsSomething: entry(t => t.function(), \"must be a function which returns 'something' (aka, not null or undefined)\"),\n ReturnsNothing: entry(t => t.function(), \"must be a function which returns 'nothing' (aka, null or undefined)\"),\n ReturnsTrue: entry(t => t.function(), \"must be a function which returns 'true'\"),\n ReturnsFalse: entry(t => t.function(), \"must be a function which returns 'false'\"),\n ReturnsTruthy: entry(t => t.function(), \"must be a function which returns a 'truthy' value\"),\n ReturnsFalsy: entry(t => t.function(), \"must be a function which returns a 'falsy' value\"),\n ReturnsExtends: entry(t => t.unknown(), \"must be a function which returns a value which extends [[0]]\", t => t.unknown()),\n ReturnsEquals: entry(t => t.unknown(), \"must be a function which returns a value which equals [[0]]\", t => t.unknown()),\n Contains: entry(t => t.tuple(), \"must be a tuple and have elements that extends the value [[0]]\", t => t.unknown()),\n // TODO: get the below working`\n ContainsSome: entry(t => t.tuple(), \"must be a tuple and have elements that extends the value [[0]]\", t => t.singularTuple()),\n\n} as const;\n","/**\n * **TYPE_OF**\n *\n * The set of values which are possible results of the `typeof` command in Javascript.\n */\nexport const TYPE_OF = [\"string\", \"number\", \"boolean\", \"undefined\", \"symbol\", \"bigint\", \"function\", \"object\"] as const;\n","export const FALSY_TYPE_KINDS = [\n \"undefined\",\n \"null\",\n] as const;\n\nexport const LITERAL_TYPE_KINDS = [\n \"true\",\n \"false\",\n \"stringLiteral\",\n \"numericLiteral\",\n] as const;\n\nexport const WIDE_TYPE_KINDS = [\n \"string\",\n \"number\",\n \"boolean\",\n] as const;\n\nexport const NARROW_CONTAINER_TYPE_KINDS = [\n \"object\",\n \"explicitFunctions\",\n \"fnType\",\n \"fnWithDict\",\n \"tuple\",\n \"union\",\n \"intersection\",\n \"arrayOf\",\n] as const;\n\nexport const WIDE_CONTAINER_TYPE_KINDS = [\n \"anyArray\",\n \"anyObject\",\n \"unknownObject\",\n \"anyFunction\",\n \"emptyObject\",\n] as const;\n\n/**\n * A full list of the _types_ of types we have within the `Type` namespace.\n */\nexport const TYPE_KINDS = [\n ...FALSY_TYPE_KINDS,\n ...WIDE_TYPE_KINDS,\n ...LITERAL_TYPE_KINDS,\n ...NARROW_CONTAINER_TYPE_KINDS,\n ...WIDE_CONTAINER_TYPE_KINDS,\n] as const;\n","/**\n * **Type Tokens** which have zero configuration elements.\n */\nexport const TT_ATOMICS = [\n \"undefined\",\n \"null\",\n \"boolean\",\n \"true\",\n \"false\",\n] as const;\n\n/**\n * **Type Tokens** which have a literal variant which represents\n * the _single_ configuration of this type which is available.\n */\nexport const TT_SINGLETONS = [\n \"string\",\n \"number\",\n] as const;\n\nexport const TT_SETS = [\n \"string-set\",\n \"numeric-set\",\n \"fn-set\",\n \"union-set\",\n] as const;\n\n/**\n * **Type Tokens** which represent _functions_ (either the typical\n * variety or Generator functions).\n */\nexport const TT_FUNCTIONS = [\n \"fn\",\n \"gen\",\n] as const;\n\n/**\n * **Type Tokens** which _contain_ other **Type Tokens** to make up their\n * identity.\n */\nexport const TT_CONTAINERS = [\n \"rec\",\n \"arr\",\n \"set\",\n \"map\",\n \"union\",\n \"obj\",\n \"tuple\",\n] as const;\n\nexport const TT_KIND_VARIANTS = [\n ...TT_ATOMICS,\n ...TT_CONTAINERS,\n ...TT_FUNCTIONS,\n ...TT_SETS,\n ...TT_SINGLETONS,\n] as const;\n\nexport const TT_START = \"<<\" as const;\nexport const TT_STOP = \">>\" as const;\nexport const TT_DELIMITER = \"::\" as const;\n","/* eslint-disable no-template-curly-in-string */\nexport const TYPE_TOKEN_REC_VARIANTS = [\n \"object-key\",\n \"string-key\",\n] as const;\n\nexport const TYPE_TOKEN_REC_KEY_VARIANTS = [\n \"unknown\",\n \"any\",\n \"string\",\n \"number\",\n \"boolean\",\n \"truthy\",\n \"numberlike\",\n \"scalar\",\n \"object\",\n \"string|undefined\",\n \"number|undefined\",\n \"boolean|undefined\",\n \"object|undefined\",\n \"unknown[]\",\n \"any[]\",\n \"string[]\",\n \"number[]\",\n \"boolean[]\",\n\n] as const;\n\nexport const TYPE_TOKEN_STRING_SET_VARIANTS = [\n \"endsWith::${string}\",\n \"startsWith::${string}\",\n \"contains::${string}\",\n \"civilianTime\",\n \"militaryTime\",\n \"ipv4Address\",\n \"ipv4Address::tight\",\n \"ipv4Address::loose\",\n \"ipv6Address\",\n \"ipv6Address::${string}\",\n \"numericString\",\n \"zipCode5\",\n \"zipCode5+4\",\n \"countryCode2\",\n \"countryCode3\",\n \"countryName\",\n \"capitalized\",\n \"url\",\n \"url::${string}\",\n \"isoDate\",\n \"isoDateTime\",\n \"usStateAbbrev\",\n \"usCitySuggestions\",\n \"metricCategory\",\n \"metric\",\n \"metric::${Metric}\",\n] as const;\n\nexport const TYPE_TOKEN_UNION_SET_VARIANTS = [\n \"numberLike\",\n \"scalar\",\n\n];\n","const t_unknown = \"<<unknown>>\" as unknown;\nconst t_string = \"<<string>>\" as string;\nconst t_number = \"<<number>>\" as unknown as number;\nconst t_union_string_tuple = \"<<union:string,tuple>>\" as string | readonly unknown[];\n// const t_numeric_array = \"<<numeric-array>>\" as unknown as readonly (number | `${number}`)[];\n\n/**\n * **TYPE_TRANSFORMS**\n *\n * A lookup table keyed with the available conversions `ConversionOp` and where\n * each row provides:\n *\n * 1. Reference Type\n * 2. Parameters\n * 3. Description\n */\nexport const TYPE_TRANSFORMS = {\n Identity: [t_unknown, [], \"a transform which returns the same value passed in\"],\n ToNever: [t_unknown, [], \"converts all incoming types to the Never type\"],\n ToString: [t_unknown, [], \"ensures that any incoming type is converted to a string variant of that value\"],\n ToBoolean: [t_unknown, [], \"uses Javascript's \\\"truthiness\\\" to convert inputs to a boolean value; with functions it will use the return type\"],\n Trim: [t_string, [], \"Trims whitespace from start and end of string\"],\n TrimStart: [t_string, [], \"Trims whitespace from start of string\"],\n TrimEnd: [t_string, [], \"Trims whitespace from end of string\"],\n Capitalize: [t_string, [], \"Converts a string input to a capitalized variant\"],\n UnCapitalize: [t_string, [], \"Converts a string input to a un-capitalized variant\"],\n AllCaps: [t_string, [], \"Converts a string input to all uppercase characters\"],\n Lowercase: [t_string, [], \"Converts a string input to all lowercase characters\"],\n ToCamelCase: [t_string, [], \"Converts a string to use the camelCase naming convention\"],\n ToKebabCase: [t_string, [], \"Converts a string to use the kebab-case naming convention\"],\n ToPascalCase: [t_string, [], \"Converts a string to use the PascalCase naming convention\"],\n ToSnakeCase: [t_string, [], \"Converts a string to use the snake_case naming convention\"],\n StripLeading: [t_string, [t_string], \"Strips a string literal from the beginning of a string (if it exists)\"],\n StripTrailing: [t_string, [t_string], \"Strips a string literal from the end of a string (if it exists)\"],\n EnsureLeading: [t_string, [t_string], \"Ensures a string literal is at the beginning of a string (with no change if it already was)\"],\n EnsureTrailing: [t_string, [t_string], \"Ensures a string literal is at the end of a string (with no change if it already was)\"],\n ToPlural: [t_string, [], \"Pluralizes a word\"],\n Surround: [t_string, [t_string, t_string], \"Surrounds a string literal with a pre and post character or set of characters\"],\n Prepend: [t_union_string_tuple, [t_unknown], \"Takes a string or tuple and prepends a value to the start.\"],\n Append: [t_union_string_tuple, [t_unknown], \"Takes a string or tuple and appends a value to the end.\"],\n Increment: [t_number, [], \"Increments a numeric value by one\"],\n Decrement: [t_number, [], \"Decrements a numeric value by one\"],\n} as const; // satisfies Record<TransformOp,\n","import type { If, IsSingleChar, Narrowable } from \"inferred-types/types\";\nimport { Never } from \"inferred-types/constants\";\n\ntype Callback<T extends string, R> = <V extends T>(v: V) => R;\n\nconst def_if = <V extends string>(v: V) => v;\nconst def_else = () => Never;\n\nexport function ifChar<\n T extends string,\n IF extends Narrowable,\n ELSE extends Narrowable,\n>(\n ch: T,\n callback_if_match: Callback<T, IF> = def_if as Callback<T, IF>,\n callback_not_match: Callback<T, ELSE> = def_else as Callback<T, ELSE>,\n) {\n return (\n ch.length === 1\n ? callback_if_match(ch)\n : callback_not_match(ch)\n ) as If<IsSingleChar<T>, IF, ELSE>;\n}\n","import type { Container, If, IsContainer, Narrowable } from \"inferred-types/types\";\nimport { isArray, isObject } from \"inferred-types/runtime\";\n\nexport function ifContainer<\n TVal extends Narrowable,\n TIf extends Narrowable,\n TElse extends Narrowable,\n>(\n value: TVal,\n ifContainer: <V extends TVal & Container>(val: V) => TIf,\n notContainer: <V extends Exclude<TVal, Container>>(val: V) => TElse,\n): If<IsContainer<TVal>, TIf, TElse> {\n return (\n isObject(value) || isArray(value)\n ? ifContainer(value)\n : notContainer(value as Exclude<TVal, Container>)\n ) as unknown as If<IsContainer<TVal>, TIf, TElse>;\n}\n","import type { If, IsEqual, IsWideType, Narrowable, Or } from \"inferred-types/types\";\nimport { log } from \"node:console\";\n\ntype Rtn<\n TComparator,\n TVal,\n TIf extends <T extends TComparator & TVal>(val: T) => unknown,\n TElse extends <T extends Exclude<TVal, TComparator>>(val: T) => unknown,\n> = Or<[IsWideType<TComparator>, IsWideType<TVal>]> extends true\n ? ReturnType<TIf> | ReturnType<TElse>\n : If<IsEqual<TComparator, TVal>, ReturnType<TIf>, ReturnType<TElse>>;\n\ntype IfEqualTest<TComparator> = <\n TVal extends Narrowable,\n TIf extends <T extends TComparator & TVal>(val: T) => unknown,\n TElse extends <T extends Exclude<TVal, TComparator>>(val: T) => unknown,\n>(\n val: TVal,\n ifTrue: TIf,\n ifFalse: TElse\n) => Rtn<TComparator, TVal, TIf, TElse>;\n\nexport function ifEqual<\n TComparator extends Narrowable,\n>(\n comparator: TComparator,\n): IfEqualTest<TComparator> {\n return <\n TVal extends Narrowable,\n TIf extends <T extends TComparator & TVal>(val: T) => unknown,\n TElse extends <T extends Exclude<TVal, TComparator>>(val: T) => unknown,\n >(\n val: TVal,\n ifTrue: TIf,\n ifFalse: TElse = (v => v) as TElse,\n ) => {\n log({ val, comparator });\n\n if (JSON.stringify(comparator) === JSON.stringify(val)) {\n return ifTrue(val as any) as Rtn<TComparator, TVal, TIf, TElse>;\n }\n else {\n return ifFalse(val as any) as Rtn<TComparator, TVal, TIf, TElse>;\n }\n };\n}\n","import type { If, IsFalse, Narrowable } from \"inferred-types/types\";\nimport { isFalse } from \"inferred-types/runtime\";\n\n/**\n * **ifTrue**\n *\n * Strongly type-aware conditional statement which checks whether a value is\n * a _true_ and returns one of two values (strongly typed) based on the evaluation\n * of this criteria.\n *\n * @param val the value being tested\n * @param ifVal the value (strongly typed) returned if val is _true_ value\n * @param elseVal the value (strongly typed) returned if val is NOT a _true_ value\n *\n * Note: at runtime there's no way to distinguish if the value was widely or loosely\n * typed so unlike the type utility there is no \"MAYBE\" state but if a wide type if\n * encountered the _type_ will the union of `IF` and `ELSE`.\n */\nexport function ifFalse<T extends boolean, IF extends Narrowable, ELSE extends Narrowable>(\n val: T,\n ifVal: IF,\n elseVal: ELSE,\n) {\n return (isFalse(val) ? ifVal : elseVal) as If<IsFalse<T>, IF, ELSE>;\n}\n","import type {\n AnyFunction,\n If,\n IsFunction,\n Narrowable,\n} from \"inferred-types/types\";\n\n/**\n * **ifFunction**(value, isFn, notFn)\n *\n * Runtime utility which assesses whether `value` is a function and provides\n * two callback hooks for both outcome.\n *\n * **Related:** `isFunction`\n */\nexport function ifFunction<\n TValue extends Narrowable,\n Fn extends Narrowable,\n NotFn extends Narrowable,\n>(\n value: TValue,\n isFnCallback: (fn: TValue & AnyFunction) => Fn,\n notFnCallback: (payload: Exclude<TValue, AnyFunction>) => NotFn,\n): If<IsFunction<TValue>, Fn, NotFn> {\n return (\n typeof value === \"function\"\n ? isFnCallback(value)\n : notFnCallback(value as any)\n ) as unknown as If<IsFunction<TValue>, Fn, NotFn>;\n}\n","import type {\n Container,\n Contains,\n If,\n Keys,\n Narrowable,\n} from \"inferred-types/types\";\nimport { hasIndexOf } from \"inferred-types/runtime\";\n\nexport function ifHasKey<\n TContainer extends Container,\n TKey extends PropertyKey,\n IF extends Narrowable,\n ELSE extends Narrowable,\n>(container: TContainer, key: TKey, hasKey: <V extends TContainer & Record<TKey, unknown>>(val: V) => IF, doesNotHaveKey: <N extends Exclude<TContainer, TKey>>(nonArr: N) => ELSE) {\n return (\n hasIndexOf(container, key)\n ? hasKey(container as TContainer & Record<TKey, unknown>)\n : doesNotHaveKey(container as Exclude<TContainer, TKey>)\n ) as unknown as If<Contains<Keys<TContainer>, TKey>, IF, ELSE>;\n}\n","import type {\n If,\n IfLength,\n IsArray,\n Narrowable,\n Scalar,\n Tuple,\n} from \"inferred-types/types\";\n\n/**\n * **ifLength**(val,length, ifVal, elseVal)\n *\n * Runtime utility which tests whether the `value` passed in is both an array/tuple\n * and that it's length is equal to `length`. It then provides two callbacks with\n * narrowed types for these two conditions.\n *\n * @param value the value being tested\n * @param ifVal the value (strongly typed) returned if val is of appropriate length\n * @param elseVal the value (strongly typed) returned if val is NOT of given length\n */\nexport function ifLength<\n TList extends readonly unknown[],\n TLen extends number,\n IF extends Narrowable | Tuple,\n ELSE extends Narrowable | Tuple,\n>(\n value: TList,\n length: TLen,\n ifVal: <V extends Exclude<TList, Scalar | undefined> & Tuple>(v: V) => IF,\n elseVal: <V extends If<IsArray<TList>, TList, Exclude<TList, Tuple>>>(v: V) => ELSE,\n) {\n return (\n Array.isArray(value) && (value as unknown[]).length === length\n\n ? ifVal(value as any)\n : elseVal(value as Exclude<TList, Tuple>)\n ) as unknown as IfLength<TList, TLen, IF, ELSE>;\n}\n","import type { If, IsNull, Narrowable, Not } from \"inferred-types/types\";\nimport { isNull } from \"inferred-types/runtime\";\n\n/**\n * **ifNotNull**(val,IF,ELSE)\n *\n * Strongly type-aware conditional statement which checks whether a value is\n * Null and returns one of two values (strongly typed) based on the evaluation\n * of this criteria.\n *\n * @param val the value being tested\n * @param ifVal callback fn which responds when _val_ is **null**\n * @param elseVal callback fn which responds when _val_ is not **null**\n */\nexport function ifNotNull<\n T extends Narrowable,\n IF extends Narrowable,\n ELSE extends Narrowable,\n>(\n val: T,\n ifVal: (v: Exclude<T, null>) => IF,\n elseVal: () => ELSE,\n) {\n return (\n isNull(val)\n ? elseVal()\n : ifVal(val as Exclude<T, null>)\n ) as unknown as If<Not<IsNull<T>>, IF, ELSE>;\n}\n","import type { IsNull, Narrowable } from \"inferred-types/types\";\nimport { isNull } from \"inferred-types/runtime\";\n\n/**\n * **ifNull**(val,IF,ELSE)\n *\n * Strongly type-aware conditional statement which checks whether a value is\n * Null and returns one of two values (strongly typed) based on the evaluation\n * of this criteria.\n *\n * @param val the value being tested\n * @param ifVal callback fn which responds when _val_ is **null**\n * @param elseVal callback fn which responds when _val_ is not **null**\n */\nexport function ifNull<\n T extends Narrowable,\n IF extends Narrowable,\n ELSE extends Narrowable,\n>(\n val: T,\n ifVal: () => IF,\n elseVal: (v: Exclude<T, null>) => ELSE,\n) {\n return (\n isNull(val)\n ? ifVal()\n : elseVal(val as unknown as Exclude<T, null>)\n ) as IsNull<T> extends true ? IF : ELSE;\n}\n","import type { IsNumber, Narrowable } from \"inferred-types/types\";\nimport { isNumber } from \"inferred-types/runtime\";\n\n/**\n * **ifNumber**(val, ifVal, elseVal)\n *\n * Strongly type-aware conditional statement which checks whether a value is\n * a _number_ and returns one of two values (strongly typed) based on the evaluation\n * of this criteria.\n *\n * @param val the value being tested\n * @param ifVal the value (strongly typed) returned if val is number\n * @param elseVal the value (strongly typed) returned if val is NOT a number\n */\nexport function ifNumber<\n TContent extends Narrowable,\n TIf extends Narrowable,\n TElse extends Narrowable,\n>(\n val: TContent,\n ifVal: <V extends TContent & number>(v: V) => TIf,\n elseVal: <V extends Exclude<TContent, number>>(v: V) => TElse,\n) {\n return (\n isNumber(val)\n ? ifVal(val as TContent & number)\n : elseVal(val as Exclude<TContent, number>)\n ) as unknown as IsNumber<TContent> extends true ? TIf : TElse;\n}\n","import type { If, IsObject, Narrowable } from \"inferred-types/types\";\nimport { isObject } from \"inferred-types/runtime\";\n\nexport function ifObject<\n T extends Narrowable,\n IF extends Narrowable,\n ELSE extends Narrowable,\n>(\n val: T,\n ifObj: IF,\n notObj: ELSE,\n): If<IsObject<T>, IF, ELSE> {\n return (isObject(val) ? ifObj : notObj) as If<IsObject<T>, IF, ELSE>;\n}\n","import type { Narrowable } from \"inferred-types/types\";\n\n/**\n * **ifSameType**(value, comparator, same, notSame)\n *\n * Runtime utility function which compares the variable `value` to a comparison type\n * and based on whether they are the same type, it will call one of the two provided\n * callback functions: `same` or `notSame`.\n */\nexport function ifSameType<\n TValue extends Narrowable,\n TType extends string | number | boolean | object,\n IF extends Narrowable,\n ELSE extends Narrowable,\n>(\n value: TValue,\n comparator: TType,\n same: <T extends TType & TValue>(v: T) => IF,\n notSame: <T extends Exclude<TValue, TType>>(v: T) => ELSE,\n) {\n return (\n // runtime values match\n (\n typeof value === typeof comparator\n ? same(value as TType & TValue)\n : notSame(value as Exclude<TValue, TType>)\n ) as TValue extends TType ? IF : ELSE\n );\n}\n","import type {\n Dictionary,\n If,\n IsScalar,\n Narrowable,\n Scalar,\n} from \"inferred-types/types\";\nimport { isScalar } from \"inferred-types/runtime\";\n\n/**\n * **ifScalar**(value, ifCallback, notCallback)\n *\n * A runtime utility which branches based on whether\n * the type is a `T` is a _scalar_ value or not.\n *\n * - each branch is provided an _optional_ callback to further\n * refine the type.\n * ```ts\n * const val: number | string = 42;\n * const narrow = ifScalar(val);\n * ```\n */\nexport function ifScalar<\n T extends Narrowable,\n TIf extends Narrowable,\n TElse extends Narrowable,\n>(\n value: T,\n ifCallback: <\n V extends Exclude<T, undefined | Dictionary | unknown[]>,\n >(v: V\n ) => TIf,\n notCallback: <V extends Exclude<T, Scalar>>(v: V) => TElse,\n) {\n const result = isScalar(value)\n ? ifCallback(\n value as Exclude<T, undefined | Dictionary | unknown[]>,\n )\n : notCallback(value as Exclude<T, Scalar>);\n return result as typeof result & If<IsScalar<T>, TIf, TElse>;\n}\n","import type { If, IsFalse, IsString, IsTrue, Narrowable } from \"inferred-types/types\";\n\n/**\n * **ifString**\n *\n * Strongly type-aware conditional statement which checks whether a value is\n * a _string_ and returns one of two values (strongly typed) based on the evaluation\n * of this criteria.\n *\n * @param val the value being tested for being a string\n * @param ifVal the value (strongly typed) returned if val is _string_\n * @param elseVal the value (strongly typed) returned if val is NOT a _string\n */\nexport function ifString<\n TContent,\n TIf extends Narrowable,\n TElse extends Narrowable,\n>(\n val: TContent,\n ifVal: <V extends TContent & string>(t: V & TContent) => TIf,\n elseVal: <V extends Exclude<TContent, string>>(v: V & TContent) => TElse,\n) {\n return (\n typeof val === \"string\"\n ? ifVal(val as string & TContent)\n : elseVal(val as Exclude<TContent, string>)\n ) as unknown as\n If<\n IsTrue<IsString<TContent>>,\n TIf,\n If<IsFalse<IsString<TContent>>, TElse, TIf | TElse>\n >;\n}\n","import type { IsFalse, IsTrue, Narrowable } from \"inferred-types/types\";\nimport { isTrue } from \"inferred-types/runtime\";\n\n/**\n * **ifTrue**\n *\n * Strongly type-aware conditional statement which checks whether a value is\n * _true_. Valid outcomes are:\n *\n * - **IF** - returned when T is narrowly typed as `true`\n * - **ELSE** - returned when T is narrowly typed as `false`\n * - **IF | ELSE** - returned when T is a `boolean` type\n */\nexport function ifTrue<\n TContent extends Narrowable,\n TIf extends Narrowable,\n TElse extends Narrowable,\n>(\n val: TContent,\n ifVal: <V extends TContent & true>(val: V) => TIf,\n elseVal: <V extends Exclude<TContent, true>>(val: V) => TElse,\n) {\n return (\n //\n isTrue(val)\n ? ifVal(val as TContent & true)\n : elseVal(val as Exclude<TContent, true>)\n ) as unknown as\n [IsTrue<TContent>] extends [true]\n ? TIf\n : [IsFalse<TContent>] extends [true] ? TElse : TIf | TElse;\n}\n","import type { IsUndefined, Narrowable } from \"inferred-types/types\";\nimport { isDefined, isUndefined } from \"inferred-types/runtime\";\n\n/**\n * **ifUndefined**\n *\n * Strongly type-aware conditional statement which checks whether a value is\n * _undefined_ and returns one of two values (strongly typed) based on the evaluation\n * of this criteria.\n *\n * @param val the value being tested\n * @param ifVal the value (strongly typed) returned if val is `undefined`\n * @param elseVal the value (strongly typed) returned if val is NOT `undefined`\n */\nexport function ifUndefined<\n T extends Narrowable,\n IF extends Narrowable = undefined,\n ELSE extends Narrowable = Exclude<T, undefined>,\n>(\n val: T,\n ifUndefined: () => IF,\n ifDefined: <V extends Exclude<T, undefined>>(v: V) => ELSE,\n) {\n return (\n isUndefined(val) ? ifUndefined() : ifDefined(val as Exclude<T, undefined>)\n ) as IsUndefined<T> extends true ? IF : ELSE;\n}\n\nexport function ifDefined<\n T extends Narrowable,\n IF extends Narrowable = Exclude<T, undefined>,\n ELSE extends Narrowable = undefined,\n>(\n val: T,\n ifVal: <V extends Exclude<T, undefined>>(v: V) => IF,\n elseVal: () => ELSE,\n) {\n return isDefined(val) ? ifVal : elseVal;\n}\n","import type { And } from \"inferred-types/types\";\n\n/**\n * Groups a number of \"logic functions\" together by combining their results using\n * the logical **AND** operator\n */\nexport function and<\n TList extends readonly boolean[],\n>(...values: TList): And<TList> {\n return values.every(i => i === true) as And<TList>;\n}\n","import type { Or } from \"inferred-types/types\";\n\n/**\n * **or**(conditions) -> boolean\n *\n * If you have a discrete list of boolean values then you can use this\n * function to perform a logical OR operation on them.\n */\nexport function or<TList extends readonly boolean[]>(...conditions: TList) {\n const values: unknown = conditions.includes(true);\n\n return values as Or<TList>;\n}\n","import type {\n AfterFirst,\n CssDefinition,\n CssKeyframeTimestamp,\n Dictionary,\n EmptyObject,\n ExpandDictionary,\n First,\n HandleDoneFn,\n ObjectToCssString,\n ObjectToKeyframeString,\n} from \"inferred-types/types\";\n\nimport {\n isObject,\n} from \"inferred-types/runtime\";\n\nexport interface KeyframeApi<\n TState extends readonly [CssKeyframeTimestamp, CssDefinition][] | [],\n> {\n state: Readonly<TState>;\n add: <\n TStage extends CssKeyframeTimestamp,\n TDefn extends CssDefinition,\n >(\n stage: TStage,\n defn: TDefn\n ) => KeyframeApi<[...TState, [TStage, TDefn]]>;\n done: () => Readonly<TState>;\n}\n\nfunction api<\n TState extends readonly [CssKeyframeTimestamp, CssDefinition][] | [],\n>(state: TState = [] as TState): KeyframeApi<TState> {\n return {\n state,\n\n add: <\n TStage extends CssKeyframeTimestamp,\n TDefn extends CssDefinition,\n >(stage: TStage,\n defn: TDefn,\n ) => {\n return api(\n [...state, [stage, defn]],\n );\n },\n done() {\n return state;\n },\n };\n}\n\ntype FrameToCSS<\n T extends readonly [CssKeyframeTimestamp, CssDefinition][],\n R extends Dictionary = EmptyObject,\n> = [] extends T\n ? ObjectToKeyframeString<\n ExpandDictionary<R>,\n true\n >\n : FrameToCSS<\n AfterFirst<T>,\n R & Record<\n First<T>[0],\n ObjectToCssString<First<T>[1]>\n >\n >;\n\nexport type CssKeyframeCallback = (cb: KeyframeApi<[]>) => unknown;\n\nfunction hasDone<T>(val: T): val is KeyframeApi<any[]> & T {\n return isObject(val) && \"done\" in val && typeof val.done === \"function\";\n}\n\nfunction frameToCss<T extends readonly [CssKeyframeTimestamp, CssDefinition][]>(\n frames: T,\n) {\n const tuples: [CssKeyframeTimestamp, string][] = frames.map(([ts, defn]) => [\n ts,\n Object.keys(defn).reduce(\n (acc, i) => [\n ...acc,\n `${i}: ${String(defn[i as keyof typeof defn])}`,\n ],\n [] as string[],\n ).join(\"; \"),\n ]);\n\n return tuples.map(([ts, defn]) => ` ${ts} { ${defn} }`).join(\"\\n\");\n}\n\nexport function createCssKeyframe<\n TName extends string,\n TKeyframes extends CssKeyframeCallback,\n>(name: TName, keyframes: TKeyframes) {\n /** api surface */\n const surface = api([]);\n /** return from user callback */\n const rtn = keyframes(surface);\n\n const frames = (\n hasDone(rtn) ? rtn.done() : rtn\n ) as unknown as HandleDoneFn<ReturnType<TKeyframes>>;\n\n type Frames = typeof frames;\n type Returns = FrameToCSS<Frames>;\n\n return {\n name,\n keyframes: frames,\n css: `@keyframes ${name} {\\n${frameToCss(frames)}\\n}` as unknown as `@keyframes ${TName} ${Returns}`,\n };\n}\n","import type { CssDefinition } from \"inferred-types/types\";\nimport { createFnWithProps, ensureTrailing, isDefined, isString, isUndefined } from \"inferred-types/runtime\";\n\nexport interface CssFromDefnOption {\n indent?: string;\n inline?: boolean;\n}\n\n/**\n * **cssFromDefinition**`(defn, [opt])`\n *\n * converts a `CssDefinition` into a CSS string\n */\nexport function cssFromDefinition<\n T extends CssDefinition | undefined,\n O extends CssFromDefnOption,\n>(\n defn: T,\n opt?: O,\n) {\n if (isUndefined(defn)) {\n return \"\";\n }\n\n const inline = isDefined(opt?.inline) ? opt.inline : true;\n const indent = isString(opt?.indent) ? opt.indent : \"\";\n\n const nextDefn = inline ? \" \" : \"\\n\";\n return Object.keys(defn)\n .map(\n (key) => {\n const val = ensureTrailing(\n (defn as any)[key] as string,\n \";\",\n );\n\n return `${indent}${key}: ${val}`;\n },\n )\n .join(nextDefn);\n}\n\nexport function defineCss<T extends CssDefinition>(defn: T) {\n const fn = <S extends string>(selector?: S) => {\n return selector\n ? `${selector} {\\n${cssFromDefinition(defn, { indent: \" \" })}}\\n`\n : cssFromDefinition(defn);\n };\n return createFnWithProps(\n fn,\n { defn },\n ) as { defn: T } & (<S extends string>(selector?: S) => string);\n}\n","import {\n isDate,\n isIsoDateTime,\n isIsoExplicitDate,\n isIsoImplicitDate,\n isIsoYear,\n isLuxonDateTime,\n isMoment,\n isNumber,\n stripAfter,\n} from \"inferred-types/runtime\";\n\n/**\n * **asDate**`(input)`\n *\n * Converts common date representations to a Javascript Date object.\n */\nexport function asDate<\n T extends number | string | Record<string, any> | Date,\n>(input: T): Date | undefined {\n if (isDate(input)) {\n input.setHours(0, 0, 0, 0); // strip time\n return input;\n }\n\n if (isMoment(input)) {\n return input.toDate();\n }\n\n if (isLuxonDateTime(input)) {\n return new Date(input.toMillis());\n }\n\n if (isIsoDateTime(input)) {\n const [year, month, day] = stripAfter(input, \"T\").split(\"-\").map(Number);\n return new Date(year, month - 1, day);\n }\n\n if (isIsoExplicitDate(input)) {\n const [year, month, day] = input.split(\"-\").map(Number);\n return new Date(year, month - 1, day);\n }\n\n if (isIsoImplicitDate(input)) {\n const year = Number(input.slice(0, 4));\n const month = Number(input.slice(4, 6));\n const day = Number(input.slice(6, 8));\n return new Date(year, month - 1, day);\n }\n\n if (isIsoYear(input)) {\n const d = new Date(Number(input), 0, 1);\n d.setHours(0, 0, 0, 0); // strip time\n return d;\n }\n\n if (isNumber(input)) {\n // appears to be year literal\n if (`${input}`.length === 4) {\n return new Date(`${input}-01-01`);\n }\n if (input >= 0) {\n // treat as an epoch timestamp\n return new Date(input * 1000);\n }\n }\n\n return undefined;\n}\n","import type { Iso8601Date, Iso8601DateTime, LuxonJs, MomentJs } from \"inferred-types/types\";\nimport { isDate, isIsoExplicitDate, isLuxonDateTime, isMoment, isString, stripAfter } from \"inferred-types/runtime\";\n\nfunction strip(str: string) {\n return stripAfter(str, \"T\") as unknown as Iso8601Date<\"explicit\">;\n}\n\n/**\n * **asIsoDate**`(input)`\n *\n * Converts common date representations to a ISO 8601 date string (e.g., \"2024-01-15\").\n */\nexport function asIsoDate<\n T extends Iso8601Date | Iso8601DateTime | MomentJs | LuxonJs[\"DateTime\"],\n>(input: T): Iso8601Date<\"explicit\"> {\n return isDate(input)\n ? strip(input.toISOString())\n : isMoment(input)\n ? strip(input.toISOString())\n : isLuxonDateTime(input)\n ? input.toISODate() as unknown as Iso8601Date<\"explicit\">\n : isIsoExplicitDate(input)\n ? input\n : isIsoExplicitDate(input)\n ? `${input.slice(0, 4)}-${input.slice(4, 6)}-${input.slice(6, 8)}` as Iso8601Date<\"explicit\">\n : isString(input)\n ? strip(input)\n : \"0000-00-00\" as unknown as Iso8601Date<\"explicit\">;\n}\n","import { asDate } from \"./asDate\";\n\n/**\n * Provides the number of days between two dates.\n *\n * - if the second date is left out, the current date is used\n */\nexport function getDaysBetween<\n A extends number | string | Date | Record<string, any>,\n B extends number | string | Date | Record<string, any>,\n>(a: A, b: B = new Date() as B): number {\n const aDate = asDate(a);\n const bDate = asDate(b);\n if (!aDate || !bDate) {\n throw new Error(`Invalid date passed into getDaysBetween()`);\n }\n\n const aStr = aDate.toISOString().split(\"T\")[0];\n const bStr = bDate.toISOString().split(\"T\")[0];\n\n const dateA = new Date(`${aStr}T00:00:00Z`);\n const dateB = new Date(`${bStr}T00:00:00Z`);\n\n // Calculate the difference in milliseconds and convert to days\n const msInDay = 24 * 60 * 60 * 1000;\n return Math.round(Math.abs((dateB.getTime() - dateA.getTime()) / msInDay));\n}\n","import type { Iso8601Date } from \"inferred-types/types\";\n\n/**\n * Returns the current date as an\n * [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date string.\n */\nexport function getToday(): Iso8601Date<\"explicit\"> {\n const today = new Date();\n return today.toISOString().split(\"T\")[0] as Iso8601Date<\"explicit\">;\n}\n","import type { Iso8601Date } from \"inferred-types/types\";\n\n/**\n * Returns a\n * [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date string\n * for tomorrow.\n */\nexport function getTomorrow(): Iso8601Date<\"explicit\"> {\n const tomorrow = new Date();\n tomorrow.setDate(tomorrow.getDate() + 1);\n return tomorrow.toISOString().split(\"T\")[0] as Iso8601Date<\"explicit\">;\n}\n","import {\n asDate,\n getDaysBetween,\n} from \"inferred-types/runtime\";\n\n/**\n * Provides the ISO week number of a given date.\n *\n * - if no date is provided, the current date is used\n * - an ISO week always starts on Monday\n * - numerically an ISO week will be between 1 and 53\n * - 52 is max for most years\n * - those years which start on a Thursday or\n * years with a leap day and start on a Wednesday get 53\n */\nexport function getWeekNumber<\n T extends string | Record<string, any> | Date,\n>(date: T = new Date() as T): number {\n const d = asDate(date);\n\n if (!d) {\n throw new Error(`invalid date passed into getWeekNumber${String(date)}`);\n }\n\n const daysIntoYear = getDaysBetween(new Date(d.getFullYear(), 0, 1), d);\n const week = Math.floor(daysIntoYear / 7) + 1;\n\n return week;\n}\n","import type { Iso8601Date } from \"inferred-types/types\";\n\n/**\n * Returns a\n * [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date string\n * for yesterday..\n */\nexport function getYesterday(): Iso8601Date<\"explicit\"> {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n return yesterday.toISOString().split(\"T\")[0] as Iso8601Date<\"explicit\">;\n}\n","import type { NumberLike } from \"inferred-types/types\";\nimport { asDate } from \"./asDate\";\n\n/**\n * Determines in the passed in date/year is a _leap year_.\n *\n * - a leap year is a year divisible by 4 but not by 100 (unless also divisible by 400)\n */\nexport function isLeapYear(val: NumberLike | Record<string, any> | Date | number) {\n const year = asDate(val)?.getUTCFullYear();\n if (!year) {\n throw new Error(`Invalid date passed into isLeapYear(${String(val)})`);\n }\n\n return year % 100 === 0\n ? year % 400 === 0\n : year % 4 === 0;\n}\n","import type { DefineObject, FromDefineObject, MakeKeysOptional } from \"inferred-types/types\";\n\ntype Returns<T extends DefineObject, P extends readonly (keyof T & string)[]> = P[\"length\"] extends 0\n ? FromDefineObject<T>\n : MakeKeysOptional<T, P> extends DefineObject\n ? FromDefineObject<MakeKeysOptional<T, P>>\n : never;\n\n/**\n * Takes an object definition where the values are either\n * `SimpleToken` representations of a type or a `ShapeCallback`.\n *\n * In both cases the runtime type is left unchanged but the\n * type is converted to represent the designed object shape.\n */\nexport function defineObject<\n T extends DefineObject,\n P extends readonly (keyof T & string)[],\n>(\n defn: T,\n ..._optProps: P\n): Returns<T, P> {\n return defn as unknown as Returns<T, P>;\n}\n","import type { Narrowable, ObjectKey } from \"inferred-types/types\";\nimport { keysOf } from \"inferred-types/runtime\";\n\n/**\n * **entries**\n *\n * Provides an _iterable_ over the passed in dictionary object where each iteration\n * provides a tuple of `[ key, value ]` which preserve type literals.\n *\n * For example:\n * ```ts\n * const obj = { foo: 1, bar: \"hi\" };\n * // k type is \"foo\" then \"bar\"; v type is 1 then \"hi\"\n * for (const [k, v] of entries(obj)) { ... }\n * ```\n */\nexport function entries<\n T extends Record<ObjectKey, N>,\n N extends Narrowable,\n>(obj: T) {\n const iterable = {\n *[Symbol.iterator]() {\n for (const k of keysOf(obj)) {\n // const [k, v] = entry as KeyValue<T, First<typeof entry>>;\n type K = typeof k;\n yield ({ key: k, value: obj[k] }) as { key: K; value: K extends keyof T ? T[K] : never };\n }\n },\n };\n\n return iterable;\n}\n","import type {\n NoDefaultValue,\n NotDefined,\n} from \"inferred-types/constants\";\nimport type {\n Dictionary,\n DotPathFor,\n Get,\n Narrowable,\n Suggest,\n Tuple,\n} from \"inferred-types/types\";\nimport {\n NO_DEFAULT_VALUE,\n NOT_DEFINED,\n} from \"inferred-types/constants\";\nimport {\n createErrorCondition,\n hasDefaultValue,\n hasIndexOf,\n indexOf,\n isContainer,\n isRef,\n isSpecificConstant,\n isTruthy,\n} from \"inferred-types/runtime\";\n\n/** updates based on whether segment is a Ref or not */\nfunction updatedDotPath<\n TValue,\n TDotPath extends string,\n TSegment extends string,\n>(value: TValue, dotpath: TDotPath, segment: TSegment) {\n return isRef(value)\n ? dotpath.replace(segment, `Ref(${segment})`)\n : dotpath;\n}\n\n/**\n * **getValue**(value, dotpath, defaultValue, handler, fullDotPath)\n */\nfunction getValue<\n TValue,\n TDotPath extends string,\n TDefVal extends Narrowable,\n TInvalid extends Narrowable,\n TFullDotPath extends string,\n>(\n value: TValue,\n dotPath: TDotPath,\n defaultValue: TDefVal,\n handleInvalid: TInvalid,\n fullDotPath: TFullDotPath,\n) {\n /** the remaining segments that need processing */\n const pathSegments: string[] = isTruthy(dotPath)\n ? dotPath.split(\".\")\n : [];\n\n /** current index property */\n const idx = pathSegments[0];\n\n /**\n * dotpath _will_ need to recurse further to\n * reach destination\n */\n const hasMoreSegments = pathSegments.length > 1;\n\n /** whether or not the value is indexable or not */\n const valueIsIndexable = isContainer(value) && hasIndexOf(value, idx);\n\n /** has handler for invalid dotpath */\n const hasHandler = !isSpecificConstant(\"not-defined\")(handleInvalid);\n\n const invalidDotPath = createErrorCondition(\n \"invalid-dot-path\",\n `The segment \"${idx}\" in the dotpath \"${fullDotPath}\" was not indexable and no default value existed on: ${JSON.stringify(value)}`,\n );\n\n const current = (\n hasMoreSegments\n ? isContainer(value) && idx in value\n ? getValue(\n indexOf(value, idx),\n pathSegments.join(\".\").replace(`${idx}.`, \"\"),\n defaultValue,\n handleInvalid,\n updatedDotPath(value, fullDotPath, idx),\n )\n : hasHandler\n ? handleInvalid\n : invalidDotPath\n : valueIsIndexable\n ? hasDefaultValue(hasDefaultValue)\n ? (indexOf(value, idx) as any || defaultValue) as any\n : indexOf(value, idx)\n : hasHandler ? handleInvalid : invalidDotPath\n ) as unknown as Get<TValue, TDotPath>;\n\n return current;\n}\n\nexport interface GetOptions<\n TDefVal extends Narrowable,\n TInvalid extends Narrowable,\n> {\n /**\n * Typically when getting a valid dotpath and the value evaluates to _undefined_\n * then the value returned is _undefined_ but if you'd prefer to put something else\n * in here you may.\n */\n defaultValue?: TDefVal;\n /**\n * Typically when a dotpath is invalid for a given item then this item\n * is set as a `ErrorCondition<'invalid-dot-path'>` but if you'd like\n * to set it to something else you may.\n *\n * Note: a common replacement would be the `Never` constant from this library\n * as it \"reports\" as being `never` but allows for a more sophisticated\n * handling process to follow.\n */\n handleInvalidDotpath?: TInvalid;\n}\n\n/**\n * **get**(obj, dotPath, [defVal])\n *\n * Gets a value in a deeply nested object while attempting to preserve type information\n * (a default value is allowed as optional param).\n *\n * - if the dot-path is invalid then an `ErrorCondition` will be returned, unless\n * a defaultValue is provided in which case this will be returned instead\n * - this function is also VueJS _aware_ in the sense that it can also traverse\n * VueJS `ref` properties when encountered\n *\n * ```ts\n * const prop = get(obj, \"foo.bar.baz\", \"nothing there chief!\");\n * ```\n */\nexport function get<\n TValue extends Narrowable | readonly unknown[],\n TDotPath extends Suggest<DotPathFor<TValue>>,\n TDefVal extends Narrowable = NoDefaultValue,\n TInvalid extends Narrowable = NotDefined,\n>(\n value: TValue,\n dotPath: TDotPath | null,\n options: GetOptions<TDefVal, TInvalid> = {\n defaultValue: NO_DEFAULT_VALUE,\n handleInvalidDotpath: NOT_DEFINED,\n } as GetOptions<TDefVal, TInvalid>,\n) {\n const outcome: unknown = (\n dotPath === null || dotPath === \"\"\n ? value\n : getValue(\n value as Dictionary | Tuple,\n dotPath,\n options?.defaultValue || NO_DEFAULT_VALUE,\n options?.handleInvalidDotpath || NOT_DEFINED,\n String(dotPath),\n ) as unknown\n );\n\n return outcome as unknown as Get<TValue, TDotPath>;\n}\n","import type {\n Container,\n NumericKeys,\n SKeys,\n Tuple,\n} from \"inferred-types/types\";\nimport { isObject, isVueRef } from \"inferred-types/runtime\";\n\n/**\n * **keysOf**(container)\n *\n * Provides a read-only array of the _keys_ an object (or array) contains.\n *\n * **Note:** this function is aware of Ref<T> types from VueJS and will return\n * `readonly [\"value\"]` as the keys array when detected rather than reporting\n * on props like `__v_isRef`, etc.\n */\nexport function keysOf<\n TContainer extends Container,\n>(\n container: TContainer,\n) {\n const keys: unknown = (\n isVueRef(container)\n ? [\"value\"]\n : Array.isArray(container)\n ? Object.keys(container).map(i => Number(i))\n : isObject(container)\n ? Object.keys(container)\n : []\n );\n return keys as TContainer extends Tuple\n ? NumericKeys<TContainer>\n : TContainer extends object\n ? SKeys<TContainer>\n : never;\n}\n","import type {\n AnyObject,\n ConstrainedObjectCallback,\n ConstrainedObjectIdentity,\n ConstrainObject,\n DefineObject,\n FromDefineObject,\n Narrowable,\n} from \"inferred-types/types\";\nimport { createFnWithPropsExplicit } from \"inferred-types/runtime\";\n\nfunction callback<Constraint extends AnyObject>(): ConstrainedObjectCallback<Constraint> {\n return <TReturn>(\n cb: (input: ConstrainObject<Constraint, Constraint>) => TReturn,\n ): ((input: ConstrainObject<Constraint, Constraint>) => TReturn) => {\n return input => cb(input);\n };\n}\n\nfunction narrowFn<TDefn extends AnyObject>() {\n const fn = <\n T extends Record<string, N>,\n N extends Narrowable,\n Constraint extends TDefn,\n >(\n obj: T & ConstrainObject<T, Constraint>,\n ) => obj;\n\n return fn as ConstrainedObjectIdentity<TDefn>;\n}\n\n/**\n * **narrowObjectTo**`(constraint) => (obj) => obj\n *\n * Ensures that this identity function extracts a narrow type\n * definition from whatever is passed into `obj` while ensuring\n * that `obj` conform to the broader type definition `constraint`.\n *\n * ```ts\n * const fn = narrowObjectTo({foo: \"string\", bar: \"Opt<number>\"});\n * // {foo: \"foo\"; bar: 42}\n * const obj = fn({foo: \"foo\", bar: 42});\n * ```\n *\n * **Related:** `ConstrainedObjectIdentity`, `narrowObjectToType`\n */\nexport function narrowObjectTo<\n TDefn extends DefineObject,\n>(_defn: TDefn): ConstrainedObjectIdentity<FromDefineObject<TDefn>> {\n return createFnWithPropsExplicit(\n narrowFn<FromDefineObject<TDefn>>(),\n {\n asCallback: callback<TDefn>(),\n },\n );\n}\n\n/**\n * **narrowObjectToType**`<Constraint>() => (obj) => obj\n *\n * Ensures that this identity function extracts a narrow type\n * definition from whatever is passed into `obj` while ensuring\n * that `obj` conform to the broader type definition `constraint`.\n *\n * ```ts\n * const fn = narrowObjectToType<{foo: \"string\", bar: \"Opt<number>\"}>();\n * // {foo: \"foo\"; bar: 42}\n * const obj = fn({foo: \"foo\", bar: 42});\n * ```\n *\n * **Related:** `ConstrainedObjectIdentity`, `narrowObjectTo`\n */\nexport function narrowObjectToType<TDefn extends AnyObject>(): ConstrainedObjectIdentity<TDefn> {\n return createFnWithPropsExplicit(\n narrowFn<TDefn>(),\n {\n asCallback: callback<TDefn>(),\n },\n );\n}\n","import type { Narrowable, ObjectKey, Tuple, Values } from \"inferred-types/types\";\n\n/**\n * **objectValues**`(obj) -> [val, val, val]`\n *\n * Converts an object into a strongly typed tuple of the _values_ of\n */\nexport function objectValues<\n T extends Record<ObjectKey, N>,\n N extends Narrowable,\n>(obj: T) {\n const tuple: Tuple = Object.keys(obj).reduce(\n (acc, key) => [\n ...acc,\n obj[key],\n ],\n [] as Tuple,\n );\n\n return tuple as Values<T>;\n}\n","import type { AnyObject, Narrowable, NarrowObject, ObjectKey } from \"inferred-types/types\";\n\n/**\n * **omit**(obj, excluding)\n *\n * Runtime utility which _excludes_ certain **keys** from an object.\n *\n * - this utility is meant to mimic the type utility `Omit<T,U>` provided\n * by Typescript in runtime\n * - attempts will be made to extract the narrowest possible type from\n * the passed in object.\n *\n * ```ts\n * // { baz: 3 }\n * const obj = omit({ foo: 1, bar: 2: baz: 3 }, \"foo\", \"bar\");\n * ```\n *\n * **Related:** `createOmission`, `withoutKeys`\n */\nexport function omit<\n TObj extends NarrowObject<N> | AnyObject,\n N extends Narrowable,\n TKeys extends readonly ObjectKey[] = readonly [],\n>(obj: TObj, ...removeKeys: TKeys) {\n const keys = Object.keys(obj);\n\n return keys.reduce(\n (acc, key) => removeKeys.includes(key as any)\n ? acc\n : {\n ...acc,\n [key]: obj[key as keyof TObj],\n },\n {},\n ) as unknown as Omit<TObj, TKeys[number]>;\n}\n","import type { HasUnionType, Narrowable, NarrowObject, ObjectKey, Throw, WithKeys } from \"inferred-types/types\";\n\n/**\n * **retain**(obj,...keys)\n *\n * Reduces the key/value pairs in an object to those keys\n * explicitly stated.\n *\n * **Related:** `createRetainer`, `omit`\n */\nexport function retain<\n N extends Narrowable,\n TObj extends NarrowObject<N>,\n TKeys extends readonly (ObjectKey & keyof TObj)[],\n>(dict: TObj, ...keys: TKeys) {\n let output: Record<string, unknown> = {};\n for (const k of keys) {\n output = {\n ...output,\n [k]: dict[k],\n };\n }\n\n return output as unknown as HasUnionType<TKeys> extends true\n ? Throw<\n \"invalid-union\",\n \"the retain(obj, keys) function was called with keys which included a value which was a union type; this would make the typing inconsistent with the runtime type and should be avoided. Note that at runtime this will not produce an error but rather produce the valid runtime value.\",\n \"retain()\",\n { keys: TKeys }\n >\n : WithKeys<TObj, TKeys>;\n}\n","import type { AnyObject, AsRecord, ObjectKey, SharedKeys } from \"inferred-types/types\";\n\n/**\n * **sharedKeys**\n *\n * Runtime utility which provides the _shared_ keys between two objects.\n */\nexport function sharedKeys<\n A extends AnyObject | object,\n B extends AnyObject | object,\n>(a: A, b: B): SharedKeys<AsRecord<A>, AsRecord<B>> {\n const ka = Object.keys(a) as ObjectKey[];\n const kb = Object.keys(b) as ObjectKey[];\n\n return ka.filter(k => kb.includes(k)) as unknown as SharedKeys<AsRecord<A>, AsRecord<B>>;\n}\n","import type { Narrowable, Something, TakeProp } from \"inferred-types/types\";\nimport { isArray, isObject } from \"inferred-types/runtime\";\n\n/**\n * **takeProp**(val, prop, otherwise)\n *\n * Takes a property from a value if it is a _container_ and \"prop\"\n * is a valid index of the container. If not then it returns the\n * value provided in \"otherwise\".\n *\n * **Related:** `get`\n */\nexport function takeProp<\n T extends Something,\n P extends PropertyKey,\n E extends Narrowable,\n>(val: T, prop: P, otherwise: E) {\n return (\n (isObject(val) || isArray(val)) && prop in val\n ? val[prop as keyof typeof val]\n : otherwise\n ) as TakeProp<T, P, E>;\n}\n","import type { AsRecord, Narrowable, ObjectKey, Values } from \"inferred-types/types\";\n\n/**\n * **valuesOf**(obj) -> readonly values[]\n *\n * Runtime utility to convert an object into a tuple of\n * values while preserving as much type information as\n * possible.\n */\nexport function valuesOf<\n TObj extends Record<ObjectKey, N>,\n N extends Narrowable,\n>(obj: TObj): Values<AsRecord<TObj>> {\n const values = [];\n for (const k of Object.keys(obj)) {\n values.push(obj[k as keyof typeof obj]);\n }\n\n return values as Values<AsRecord<TObj>>;\n}\n","import type { MergeObjects, Narrowable, ObjectKey } from \"inferred-types/types\";\n\n/**\n * **withDefaults**(defaults) → (obj) → _merged_\n *\n * Merges in default values to an existing object and maintains\n * narrow typing.\n */\nexport function withDefaults<\n TDefaults extends Record<ObjectKey, N>,\n N extends Narrowable,\n>(with_defaults: TDefaults) {\n return <\n TObj extends Record<ObjectKey, W>,\n W extends Narrowable,\n >(obj: TObj) => {\n const merged = {\n ...with_defaults,\n ...obj,\n };\n\n return merged as unknown as MergeObjects<Required<TDefaults>, TObj>;\n };\n}\n","import type { Dictionary, Narrowable, ObjectKey } from \"inferred-types/types\";\nimport { retain } from \"./retain\";\n\n/**\n * **withKeys**(obj,keys)\n *\n * Reduces the key/value pairs in an object to those keys\n * explicitly stated.\n *\n * - note: this function is an alias for `retain()`\n */\nexport function withKeys<\n TObj extends Dictionary<string | symbol, N>,\n N extends Narrowable,\n TKeys extends readonly (ObjectKey & keyof TObj)[],\n>(dict: TObj, ...keys: TKeys) {\n return retain(dict, ...keys);\n}\n","import type { Narrowable, NarrowObject } from \"inferred-types/types\";\nimport { omit } from \"inferred-types/runtime\";\n\n/**\n * **withoutKeys**(obj,...keys)\n *\n * Reduces the key/value pairs in an object with the expressed\n * keys excluded.\n *\n * - this is an alias to the `omit()` utility\n *\n * **Related**: `omit`, `createOmission`\n */\nexport function withoutKeys<\n TObj extends NarrowObject<N>,\n N extends Narrowable,\n TKeys extends readonly (string & keyof TObj)[],\n>(dict: TObj, ...exclude: TKeys) {\n return omit(dict, ...exclude);\n}\n","import type { Dictionary, FromSimpleToken, Narrowable, ObjectKey, SimpleToken, WithoutValue } from \"inferred-types/types\";\nimport { doesExtend } from \"inferred-types/runtime\";\nimport { keysOf } from \"./keysOf\";\n\nexport type DictionaryWithoutValueFilter<Without extends Narrowable> = <\n T extends Record<ObjectKey, N>,\n N extends Narrowable,\n>(obj: T\n) => WithoutValue<T, Without>;\n\n/**\n * **withoutValue**\n *\n * A _higher-order_ runtime utility which allow you to first specify a **type**\n * which you will want to look for in future objects/dictionaries.\n *\n * ```ts\n * const withoutStrings = withoutValue(\"string\");\n * const withoutFooBar = withoutValue(\"string(foo,bar)\");\n * ```\n *\n * The returned utility will now receive dictonary objects and -- in a type strong\n * manner -- removed the key/values where the value extends `string` or `\"foo\" | \"bar\"`\n * repectively.\n */\nexport function withoutValue<TWithout extends SimpleToken>(\n wo: TWithout,\n): DictionaryWithoutValueFilter<FromSimpleToken<TWithout>> {\n return <\n T extends Record<ObjectKey, N>,\n N extends Narrowable,\n >(\n obj: T,\n ): WithoutValue<T, FromSimpleToken<TWithout>> => {\n const output: Dictionary = {};\n\n for (const key of keysOf(obj)) {\n const val = obj[key];\n if (!doesExtend(wo)(val)) {\n output[key] = val;\n }\n }\n return output as unknown as WithoutValue<T, FromSimpleToken<TWithout>>;\n };\n}\n","import type {\n Dictionary,\n FromSimpleToken,\n Narrowable,\n ObjectKey,\n SimpleToken,\n WithValue,\n} from \"inferred-types/types\";\nimport { doesExtend } from \"inferred-types/runtime\";\nimport { keysOf } from \"./keysOf\";\n\nexport type DictionaryWithValueFilter<Without extends Narrowable> = <\n T extends Record<ObjectKey, N>,\n N extends Narrowable,\n>(obj: T\n) => WithValue<T, Without>;\n\n/**\n * **WithValue**\n *\n * A _higher-order_ runtime utility which allow you to first specify a **type**\n * which you will want to look for in future objects/dictionaries.\n *\n * ```ts\n * const withoutStrings = WithValue(\"string\");\n * const withoutFooBar = WithValue(\"string(foo,bar)\");\n * ```\n *\n * The returned utility will now receive dictonary objects and -- in a type strong\n * manner -- removed the key/values where the value extends `string` or `\"foo\" | \"bar\"`\n * repectively.\n */\nexport function withValue<TWithout extends SimpleToken>(\n wo: TWithout,\n): DictionaryWithValueFilter<FromSimpleToken<TWithout>> {\n return <\n T extends Record<ObjectKey, N>,\n N extends Narrowable,\n >(\n obj: T,\n ): WithValue<T, FromSimpleToken<TWithout>> => {\n const output: Dictionary = {};\n\n for (const key of keysOf(obj)) {\n const val = obj[key];\n if (doesExtend(wo)(val)) {\n output[key] = val;\n }\n }\n return output as unknown as WithValue<T, FromSimpleToken<TWithout>>;\n };\n}\n","import type { Throw } from \"inferred-types/types\";\n\n/**\n * **createErrorConditionTemplate**`(kind,[msg],[utility]) => ErrorCondition`\n *\n * A higher order runtime utility for generating reusable `ErrorCondition`'s at\n * runtime.\n */\nexport function createErrorCondition<\n TKind extends string,\n TMsg extends string = never,\n TUtility extends string = never,\n>(kind: TKind, msg: TMsg = \"\" as never, utility: TUtility = \"\" as never) {\n return {\n __kind: \"ErrorCondition\",\n kind,\n msg,\n utility,\n } as unknown as Throw<TKind, TMsg, TUtility>;\n}\n\nexport function errCondition(kind: string, msg?: string) {\n return {\n __kind: \"ErrorCondition\",\n kind,\n msg,\n };\n}\n","// /* eslint-disable ts/no-explicit-any */\n// /* eslint-disable no-use-before-define */\n// import { RESULT } from \"inferred-types/constants\"\n// import {\n// Ok,\n// Result,\n// AsFunction,\n// Narrowable,\n// Err,\n// ResultErr,\n// ObjectKey,\n// ResultTuple,\n// TupleToUnion,\n// ResultApi,\n// IfEqual,\n// IsOk,\n// IsErr,\n// ErrInput,\n// IsFunction,\n// If,\n// } from \"inferred-types/types\"\n// import { Never } from \"inferred-types/constants\";\n// import { isFunction, isObject, isString } from \"../type-guards/index\";\n// import { toKebabCase } from \"../literals/toKebabCase\";\n// import { asUnion } from \"../type-conversion/asUnion\";\n// import { isRuntimeUnion } from \"../type-guards/isRuntimeUnion\";\n// import { takeProp } from \"../dictionary\";\n// import { kindError } from \"../errors\";\n// import { toPascalCase } from \"../literals\";\n\n// const errInputs: ErrInput = \"undefined\" as const;\n\n// export const isResult = (val: unknown): val is Result => {\n// return typeof val === \"object\" &&\n// \"__kind\" in (val as object) &&\n// \"state\" in (val as object) &&\n// [RESULT.Err, RESULT.Ok].includes((val as any).state)\n// }\n\n// function resultTuple<\n// T,\n// E extends ErrInput\n// >(val: T, err: E) {\n// return {\n// __kind: [\"Result\", val, err]\n// } as ResultTuple<T,E>;\n// }\n\n// export const asResult = <\n// T,\n// E extends ErrInput\n// >(val: T, err: E): ResultApi<T,E> => ({\n// kind: \"Result API\",\n// result: null as unknown as Result<T,E>,\n// ok: (v) => {\n// return {\n// ...resultTuple(val,err), state: RESULT.Ok, val: v\n// } as Ok<T>\n// },\n// err: (e) => {\n// return {\n// ...resultTuple(val,err),\n// state: RESULT.Err,\n// err: transformErrInput(e)\n// } as unknown as Err<E>\n// },\n// isErr: (v) => {\n// return isResult(v) && v.state === RESULT.Err;\n// },\n// isOk: (v) => {\n// return isResult(v) && v.state === RESULT.Ok;\n// },\n// okOrElse: (result, otherwise) => {\n// return result.state === RESULT.Ok\n// ? result.val\n// : typeof otherwise === \"function\"\n// ? otherwise(result)\n// : otherwise\n// },\n// okOrThrow: (result) => {\n// if (isErr(result)) {\n// const { msg, kind, context } = result.err;\n// throw kindError(kind)(msg, context);\n// }\n// }\n// }) as ResultApi<T,E>;\n\n// /**\n// * **ok**(val)\n// *\n// * Places a value into the `Ok` state of a `Result` structure.\n// *\n// * Note: if you need/want the value to be narrowly typed then use `okN()` instead.\n// */\n// export function ok<\n// T,\n// E extends ErrInput\n// >(val: T, _err: E = errInputs as E): IfEqual<E, ErrInput, Ok<T>, Ok<T,E>> {\n// const tuple = resultTuple(val, _err) as unknown as ResultTuple<T,E>;\n// return { ...tuple, state: RESULT.Ok, val }\n// }\n\n// /**\n// * **ok**(val)\n// *\n// * Places a value into the `Ok` state of a `Result` structure.\n// *\n// * Note: this can only receive _narrowable_ types in order to provide the\n// * narrowest type possible for `T` but if you don't need this then use the\n// * `ok(val)` function instead.\n// */\n// export function okN<\n// T extends Narrowable,\n// E extends ErrInput\n// >(val: T, _err: E = errInputs as E): Ok<T> {\n// const tuple = resultTuple(val, \"unknown\") as unknown as ResultTuple<T,E>;\n// return { ...tuple, state: RESULT.Ok, val }\n// }\n\n// /**\n// * Used to convert an `ErrInput` into `ResultErr[]`\n// */\n// const transformErrInput = <\n// T extends ErrInput\n// >(input: T): TupleToUnion<Err<T>> => {\n// const members = (\n// isRuntimeUnion(input)\n// ? input.members\n// : typeof input === \"string\"\n// ? [{ msg: input, kind: toKebabCase(input as string), context: {} }]\n// : typeof input === \"object\"\n// ? [{\n// msg: takeProp((input as Record<ObjectKey, unknown>), \"msg\", \"\" as string),\n// kind: toKebabCase(takeProp((input as Record<ObjectKey, unknown>), \"kind\", \"unspecified-kind\") as string),\n// context: takeProp((input as Record<ObjectKey, unknown>), \"context\", {} as NonNullable<unknown>),\n// trace: takeProp((input as Record<ObjectKey, unknown>), \"trace\", false),\n// }]\n// : Array.isArray(input)\n// ? input\n// : Never\n// ) as ResultErr[];\n\n// const union = asUnion(...members);\n\n// return union as unknown as TupleToUnion<Err<T>>;\n// }\n\n// /**\n// * **createErr**(e) → `<ResultErr>`\n// *\n// * Creates a reusable error template which will allow for:\n// *\n// * - a strict `kind` definition\n// * - a _shape_ and default values for the `context` property\n// * - a strict `stack` definition (default is false)\n// *\n// * The `msg` property will be left as `string` allowing each variant of\n// * this type of error to add their own.\n// */\n// export const createErr = <\n// TKind extends string,\n// TContextDefn extends Record<string, unknown> = NonNullable<unknown>\n// >(kind: TKind, contextDefn?: TContextDefn) => {\n// return {\n// msg: \"\" as string,\n// kind,\n// context: (contextDefn || {}) as TContextDefn\n// } as ResultErr<TKind, TContextDefn>\n// }\n\n// /**\n// * **err**(input) -> Err`<E>`\n// *\n// * Creates a `Err` error for use inside a `Result<T,E>` block.\n// */\n// export function err<\n// TErr extends string | ResultErr<any, any>,\n// TVal = unknown\n// >(\n// err: TErr,\n// _val: TVal = null as unknown as ErrInput as TVal\n// ): IfEqual<TVal, unknown, Err<TErr>, Err<TErr,TVal>> {\n// return {\n// ...(resultTuple(_val, err)),\n// state: RESULT.Err,\n// err: transformErrInput(err)\n// } as unknown as IfEqual<TVal, unknown, Err<TErr>, Err<TErr,TVal>>\n// }\n\n// /**\n// * **isOk**(result)\n// *\n// * Type guard which tests whether the `Result<T,E>` is in the **Ok** state.\n// */\n// export const isOk = <\n// T,\n// >(result: Result<T>): result is T & Ok<T> => {\n// return result.state === RESULT.Ok;\n// }\n\n// /**\n// * **okOrThrow**(result)\n// *\n// * Returns the Ok _value_ if it's in the Ok status; otherwise throws\n// * an error.\n// */\n// export function okOrThrow<\n// R extends Result<T,E>,\n// T = undefined,\n// E extends ErrInput = ErrInput\n// >(result: R): IsOk<R> extends true ? T : never {\n// if(result.state === RESULT.Err) {\n// if (typeof result.err === \"string\") {\n// throw new Error(result.err);\n// } else {\n// let e = new Error(result.err.msg);\n// for (const key of Object.keys(result.err)) {\n// if(key !== \"msg\") {\n// e = {...e, [key]: result.err[key as keyof typeof result.err]}\n// }\n// }\n// throw e;\n// }\n// }\n// return result.val as IsOk<R> extends true ? T : never;\n// }\n\n// /**\n// * **okOrElse**(result, els)\n// *\n// * Returns the _value_ of the `Result<T,E>` if in the **Ok** state, otherwise\n// * returns `els`.\n// *\n// * - **Note:** if `els` is a function it will be called while passing the error\n// * object to the function.\n// */\n// export function okOrElse<\n// R extends Result<T,E>,\n// T,\n// E extends ResultErr,\n// Els\n// >(\n// result: R,\n// els: Els\n// ): IsOk<R> extends true ? T : If<IsFunction<Els>, ReturnType<AsFunction<Els>>, Els> {\n// return result.state === RESULT.Err\n// ? isFunction(els)\n// ? els(result.err)\n// : els\n// : result.val;\n// }\n\n// export function isErr<\n// T,\n// E extends ErrInput\n// >(result: Result<T,E>): result is Err<E,T> {\n// return (\n// isString(result)\n// ? {\n// state: RESULT.Err,\n// err:{\n// msg: result,\n// kind: toPascalCase(result),\n// context: {},\n// stack: false\n// }\n// }\n// : isObject(result)\n// ? {\n// state: RESULT.Err,\n// err: {\n// msg: result.err.msg || \"no message\",\n// kind: takeProp(result, \"kind\", \"no-kind\"),\n// context: takeProp(result, \"context\", {}),\n// stack: takeProp(result, \"stack\", false)\n// }\n// }\n// : false\n// )\n// ? true\n// : false\n// }\n\n// /**\n// * **assertErr**(result)\n// *\n// * Asserts that a _result_ is of the `Err` type.\n// */\n// export function assertErr<\n// T\n// >(result: T): IsErr<T> {\n// return (\n// typeof result === \"object\" &&\n// (result as any).state === RESULT.Err && \"err\" in (result as object) && (\n// typeof (result as any).err === \"string\" ||\n// typeof (result as any).err === \"object\"\n// )\n// ? true\n// : false\n// ) as IsErr<typeof result>;\n// }\n\nexport const result = \"NOT READY\";\n","import type { AnyFunction, AsFnMeta } from \"inferred-types/types\";\n\ntype _Props<TFn extends AnyFunction> = AsFnMeta<TFn>[\"props\"];\n\n/**\n * **fnMeta**(func)\n *\n * Runtime utility which provides a `fn` and `props` property which are\n * decomposed from the input function.\n *\n * - the `fn` is a clone of the underlying function\n */\nexport function fnMeta<TFn extends AnyFunction>(func: TFn) {\n const fn = <\n A extends AsFnMeta<TFn>[\"args\"],\n >(...args: A) => func(...args);\n\n const props = Object.keys(fn).reduce(\n (acc, key) => ({ ...acc, [key]: fn[key as keyof typeof fn] }),\n {} as Record<PropertyKey, unknown>,\n ) as _Props<TFn>;\n\n return {\n fn,\n props,\n };\n}\n","// import { FnFrom } from \"inferred-types/types\";\n// import { identity } from \"../literals\";\n\n// export const wrapFn = <\n// TInteriorFn extends TypedFunction,\n// >(fn: TInteriorFn) => {\n// return <\n// TWrap extends <I extends ReturnType<TInteriorFn>>(input: I) => unknown\n// >(wrap: TWrap) => <F extends Parameters<TInteriorFn>>(...input: F) => {\n// const interior = fn(input) as ReturnType<TInteriorFn>;\n// return wrap(interior) as ReturnType<TWrap>\n// }\n// };\n\n// export const wrapFn = <\n// TWrap extends FnFrom<[any]>,\n// >(wrap: TWrap) => {\n// return <TInterior extends (...args: any[]) => Parameters<TWrap>[0]>(fn: TInterior) => {\n// return <TFn extends Parameters<TInterior>>(...args: TFn) => {\n// const interior = identity(fn(...args) as ReturnType<TInterior>) as ()=>ReturnType<TInterior>;\n// const wrapped = wrap(interior()) as ReturnType<TWrap>;\n\n// return wrapped;\n// }\n// }\n// };\n\nexport const wrapFn = \"NOT IMPLEMENTED\" as const;\n","import type { FnWithProps, Narrowable, TypedFunction } from \"inferred-types/types\";\n\n/**\n * **addPropsToFn**(fn, [clone]) => (props) => FnWithProps\n *\n * A higher order function which takes a dictionary object and\n * then a function and combines them into a single type.\n */\nexport function addPropsToFn<\n TFn extends TypedFunction,\n TClone extends boolean | undefined,\n>(fn: TFn, clone_fn?: TClone) {\n const localFn: any = clone_fn\n ? <T extends Parameters<TFn>>(...args: T) => fn(args)\n : fn;\n\n return <\n K extends PropertyKey,\n N extends Narrowable,\n TProps extends Record<K, N>,\n >(obj: TProps) => {\n for (const k in obj) {\n localFn[k] = obj[k];\n }\n\n return localFn as FnWithProps<\n TFn,\n TProps,\n TClone\n >;\n };\n}\n","import type {\n FnWithProps,\n Narrowable,\n TypedFunction,\n} from \"inferred-types/types\";\n\n/**\n * **addFnToProps**(props, [clone]) => (fn) => FnWithProps\n *\n * A higher order function which takes\n *\n * - `props` - key/value pairs to add to the a _future_ function\n * - `clone` - optionally state whether you want to use the future function's\n * type \"as is\" or you want to purify it's props with a clone (default is `true`)\n *\n * This is partially applied to reveal a function which takes a\n * function as input.\n */\nexport function addFnToProps<\n K extends string,\n N extends Narrowable,\n TProps extends Record<K, N>,\n TClone extends boolean | undefined,\n\n>(props: TProps, _clone_fn?: TClone) {\n return <\n TFn extends TypedFunction,\n >(fn: TFn) => {\n const localFn: any = <T extends Readonly<Parameters<TFn>>>(...args: T) => fn(args);\n\n for (const k in props) {\n localFn[k] = props[k];\n }\n\n return localFn as FnWithProps<TFn, TProps, TClone>;\n };\n}\n\n// export const narrowFn = <\n// TFn extends AnyFunction\n// >(fn: TFn) => <TArgs extends AsFnMeta<TFn>[\"args\"]>(...args: TArgs) => <R extends AsFnMeta<TFn>[\"returns\"]>(fn(args): R) => ;\n","import type { CssClassSelector, CssIdSelector, CssPseudoClass, CssSelector, CssTagSelector, If, IsUndefined, Join, TupleToUnion } from \"inferred-types/types\";\n\nexport interface CssSelectorOptions {\n ids?: readonly CssIdSelector[];\n classes?: readonly CssClassSelector[];\n tags?: readonly CssTagSelector[];\n pseudo?: readonly CssPseudoClass[];\n}\n\nexport type AsClassSelector<\n T extends CssSelectorOptions | undefined,\n> = If<\n IsUndefined<T>,\n CssSelector<CssIdSelector, CssClassSelector, CssTagSelector, CssPseudoClass>,\n T extends CssSelectorOptions\n ? CssSelector<\n If<\n IsUndefined<T[\"ids\"]>,\n CssIdSelector,\n TupleToUnion<T[\"ids\"]>\n >,\n If<\n IsUndefined<T[\"classes\"]>,\n CssClassSelector,\n TupleToUnion<T[\"classes\"]>\n >,\n If<\n IsUndefined<T[\"tags\"]>,\n CssTagSelector,\n TupleToUnion<T[\"tags\"]>\n >,\n If<\n IsUndefined<T[\"pseudo\"]>,\n CssPseudoClass,\n TupleToUnion<T[\"pseudo\"]>\n >\n >\n : never\n>;\n\n/**\n * **createCssSelector**`(opt) => (...select) => string`\n *\n * A higher order utility which:\n *\n * - on first call allows you to _narrow_ the types of selectors which are\n * available\n * - afterward it allows 1..M selectors to be chained (including pseudo\n * classes)\n *\n * Ensures correct syntax and aids in auto-completion of CSS props.\n */\nexport function createCssSelector<\n TOpt extends CssSelectorOptions,\n>(_opt?: TOpt) {\n return <\n TSelect extends readonly CssSelector<\n TOpt[\"ids\"] extends readonly CssIdSelector[] ? TupleToUnion<TOpt[\"ids\"]> : CssIdSelector,\n TOpt[\"classes\"] extends readonly CssClassSelector[] ? TupleToUnion<TOpt[\"classes\"]> : CssClassSelector,\n TOpt[\"tags\"] extends readonly CssTagSelector[] ? TupleToUnion<TOpt[\"tags\"]> : CssTagSelector,\n TOpt[\"pseudo\"] extends readonly CssPseudoClass[] ? TupleToUnion<TOpt[\"pseudo\"]> : CssPseudoClass\n >[],\n >(...selectors: TSelect): Join<TSelect, \" \"> => {\n return selectors.join(\" \") as string as Join<TSelect, \" \">;\n };\n}\n","import type {\n AnyObject,\n If,\n IsTrue,\n Narrowable,\n ObjectKey,\n TypedFunction,\n} from \"inferred-types/types\";\nimport { isTrue } from \"inferred-types/runtime\";\n\n/**\n * **createFnWithProps**`(fn, props)`\n *\n * Creates a strongly typed function along with properties.\n *\n * **Note:** since the runtime is trying it's hardest to extract\n * narrow types, it will sometimes reject types it ideally wouldn't.\n * In these cases you may want to consider using `createFnWithPropsExplicit`\n * instead.\n */\nexport function createFnWithProps<\n TArgs extends readonly unknown[],\n TReturn extends Narrowable,\n N extends Narrowable,\n TProps extends Record<ObjectKey, N>,\n TNarrowing extends boolean = false,\n>(fn: (...args: TArgs) => TReturn, props: TProps, narrowing: TNarrowing = false as TNarrowing) {\n const fnWithProps: any = fn;\n for (const prop of Object.keys(props)) {\n fnWithProps[prop] = props[prop];\n }\n\n return (\n isTrue(narrowing)\n ? fnWithProps as (<A extends Readonly<TArgs>>(...args: A) => TReturn) & TProps\n : fnWithProps as ((...args: TArgs) => TReturn) & TProps\n ) as If<\n IsTrue<TNarrowing>,\n (<A extends TArgs>(...args: A) => TReturn) & TProps,\n ((...args: TArgs) => TReturn) & TProps\n >;\n}\n\n/**\n * **createFnWithPropsExplicit**`<F,P>(fn, props)`\n *\n * Creates a strongly typed function along with properties.\n *\n * - unlike the similar `createFnWithProps()`, this utility just\n * expects you to type the function and properties yourself.\n */\nexport function createFnWithPropsExplicit<\n TFn extends TypedFunction,\n TProps extends AnyObject,\n>(fn: TFn, props: TProps) {\n const fnWithProps: any = fn;\n for (const prop of Object.keys(props)) {\n fnWithProps[prop] = props[prop as keyof typeof props];\n }\n\n return fnWithProps as TFn & TProps;\n}\n","import type {\n EmptyObject,\n ExpandDictionary,\n IsNonEmptyObject,\n Narrowable,\n RemoveIndex,\n Widen,\n} from \"inferred-types/types\";\n\n/**\n * **defineObj**(literal) -> (wide) -> object\n *\n * A runtime utility designed to create an object _type_ from runtime objects.\n * The object's keys are all type literals, but the values can be either\n * _wide_ variants of the value passed in or instead maintain as _narrow_\n * a type definition as possible.\n *\n * ### Example\n * ```ts\n * // { foo: 1; bar: number; baz: number }\n * const fooBarBaz = defineObj({foo: 1})({bar: 2, baz: 3});\n * ```\n *\n * **Related:** `defineObject`\n */\nexport function defineObj<\n N extends Narrowable,\n TLiteral extends Record<string, N>,\n>(\n literal: TLiteral = {} as TLiteral,\n) {\n /**\n * Add any key/value pairs which you want to have _wide_ types associated;\n * literal types are defined already and stated above.\n */\n return <\n N2 extends Narrowable,\n TWide extends Record<string, N2>,\n >(wide: TWide = {} as EmptyObject as TWide) => {\n const obj = (\n literal\n ? { ...literal, ...wide }\n : wide\n ) as unknown;\n\n return obj as ExpandDictionary<\n RemoveIndex<TLiteral> & (\n IsNonEmptyObject<TWide> extends true\n ? Widen<TWide>\n : EmptyObject\n )\n >;\n };\n};\n","import type { FromDefn, ShapeCallback, TypeDefinition } from \"inferred-types/types\";\nimport { handleDoneFn, isFunction, ShapeApiImplementation } from \"inferred-types/runtime\";\n\n/**\n * **createTuple**(...values) -> (...values) -> Tuple\n *\n * Runtime utility to define a strongly typed tuple.\n *\n * - if you want to _widen_ certain elements in the Tuple you can use\n * the `widen()` type utility for those elements.\n *\n * ### Example\n * ```ts\n * // [ \"foo\", \"bar\", 42 ]\n * const foobar = defineTuple(\"foo\", \"bar\", 42)\n * // [ string, \"bar\", 42]\n * const foey = defineTuple(s => s.string(), \"bar\", 42)\n * ```\n */\nexport function defineTuple<\n T extends readonly TypeDefinition[],\n>(...values: T) {\n return values.map(\n i => isFunction(i)\n ? handleDoneFn((i as ShapeCallback)(ShapeApiImplementation))\n : i,\n ) as unknown as FromDefn<T>;\n}\n","import type { AsArray, Narrowable } from \"inferred-types/types\";\n\n/**\n * Type utility which converts `undefined[]` to `unknown[]`\n */\nexport type UndefinedArrayIsUnknown<T extends unknown[]> = undefined[] extends T ? unknown[] : T;\n\n/**\n * Ensures that any input passed in is passed back as an array:\n *\n * - if it was already an array than this just serves as an _identity_ function\n * - if it was not then it wraps the element into a one element array of the\n * given type\n *\n * Note: by default the _type_ of values will be intentionally widened so that the value \"abc\"\n * is of type `string` not the literal `abc`. If you want to keep literal types then\n * change the optional _widen_ parameter to _false_.\n */\n\nexport function asArray<T extends Narrowable>(thing: T) {\n return (\n Array.isArray(thing) === true\n ? thing // proxy thing back as it's already an array\n : typeof thing === \"undefined\"\n ? ([] as T[])\n : [thing]\n ) as AsArray<T>;\n}\n","import type {\n AnyObject,\n ConverterDefn,\n Narrowable,\n Nothing,\n Tuple,\n TypedFunction,\n} from \"inferred-types/types\";\n\nimport { Never } from \"inferred-types/constants\";\nimport { isNothing, isObject } from \"inferred-types/runtime\";\n\ntype CallIfDefined<\n Handler,\n> = Handler extends TypedFunction\n ? ReturnType<Handler>\n : never;\n\ntype ConversionResult<\n TConvert extends Partial<\n\n ConverterDefn<any, any, any, any, any, any>\n >,\n TInput extends Narrowable | Tuple,\n> = TInput extends string\n ? CallIfDefined<TConvert[\"string\"]>\n : TInput extends number\n ? CallIfDefined<TConvert[\"number\"]>\n : TInput extends boolean\n ? CallIfDefined<TConvert[\"boolean\"]>\n : TInput extends AnyObject\n ? CallIfDefined<TConvert[\"object\"]>\n : TInput extends Tuple\n ? CallIfDefined<TConvert[\"tuple\"]>\n : TInput extends Nothing\n ? CallIfDefined<TConvert[\"nothing\"]>\n : never;\n\n/**\n * **createConverter**(mapper)\n *\n * A runtime utility which allows for the creation of a function which\n * receives multiple wide types (string, number, boolean, object) and then transform it\n * based on the \"wide type\" but while retaining the potentially narrow values passed in.\n *\n * The number of wide types which the converter will accept is based on how it configured\n * as there are discrete functions which must be passed in for handling: strings, numbers,\n * booleans, and \"objects\" (aka, Record<string,any>).\n *\n * ```ts\n * // handles strings and numbers\n * const convert = createConverter({\n * string: s => `the string was ${s}`,\n * number: n => `the number was ${n}`,\n * });\n * ```\n */\nexport function createConverter<\n TStr extends Narrowable = never,\n TNum extends Narrowable = never,\n TBool extends Narrowable = never,\n TObj extends Narrowable = never,\n TTuple extends Narrowable = never,\n TNothing extends Narrowable = never,\n>(mapper: Partial<ConverterDefn<TStr, TNum, TBool, TObj, TTuple, TNothing>>) {\n return <TInput extends Narrowable | Tuple>(input: TInput) => {\n let result: unknown;\n if (isNothing(input)) {\n result = (mapper.nothing\n ? mapper.nothing(input as TInput & Nothing)\n : Never\n );\n }\n else if (isObject(input)) {\n result = (mapper.object\n ? mapper.object(input as TInput & AnyObject)\n : Never\n );\n }\n else {\n switch (typeof input) {\n case \"string\":\n result = (mapper.string\n ? mapper.string(input)\n : Never);\n break;\n case \"number\":\n case \"bigint\":\n result = (mapper.number\n ? mapper.number(input as any)\n : Never);\n break;\n case \"boolean\":\n result = (mapper.boolean\n ? mapper.boolean(input as any)\n : Never);\n break;\n default:\n throw new Error(`Unhandled type: ${typeof input}`);\n }\n }\n return result as ConversionResult<typeof mapper, TInput>;\n };\n}\n","import type { FixedLengthArray, Narrowable } from \"inferred-types/types\";\n\n/**\n * **createFixedLengthArray**`(content, quantity)`\n *\n * Provides a type strong array of duplicates of what was\n * passed in as `content`\n */\nexport function createFixedLengthArray<\n T extends Narrowable,\n C extends number,\n>(content: T, quantity: C): FixedLengthArray<T, C> {\n return Array.from({ length: quantity }, () => content) as FixedLengthArray<T, C>;\n}\n","// import { Filter, Comparison } from \"inferred-types/types\";\n// import { isSameTypeOf } from \"../type-guards/higher-order/isSameTypeOf\";\n// import { endsWith,startsWith } from \"../type-guards\";\n// import { asArray } from \"./asArray\";\n// import { Never } from \"inferred-types/constants\";\n\n// /**\n// * **createFilter**(op,comparator) → (list) → _filtered results_\n// *\n// * A higher order runtime utility.\n// *\n// * - on it's first call it specifies the comparison that will be\n// * made in the future\n// * ```ts\n// * const filterOutStrings = createFilter(\"extends\", s => s.string())\n// * ```\n// * - all subsequent calls will receive an array of items and _filter out_\n// * the specified criteria\n// * ```ts\n// * // [\"foo\", \"bar\"]\n// * filterOutStrings([1,2,\"foo\",\"bar\"]);\n// * ```\n// */\n// export const createFilter = <\n// TComparison extends Comparison\n// >(\n// comparison: TComparison\n// ) => <\n// TList extends readonly unknown[]\n// >(list: TList) => {\n// let result: unknown;\n\n// switch(op) {\n// case \"equals\":\n// result = list.filter(i => i === comparator);\n// break;\n// case \"extends\":\n// result = list.filter(i => isSameTypeOf(i)(comparator));\n// break;\n// case \"startsWith\":\n// result = list.filter(i => startsWith(String(comparator))(String(i)));\n// break;\n// case \"endsWith\":\n// result = list.filter(i => endsWith(String(comparator))(String(i)));\n// break;\n// case \"contains\":\n// result = list.filter(i => contains(asArray(comparator))(i));\n// break;\n// case \"containsAll\":\n// // result = list.filter(i => contains())\n// break;\n// default:\n// result = Never\n// }\n\n// return result as Filter<TList, TComparator, TOp>;\n// };\n\nexport const filter = \"NOT READY\";\n","import type { AfterFirst, Empty, First, Narrowable, RemoveNever, UnionFilter } from \"inferred-types/types\";\nimport { isNotEmpty } from \"inferred-types/runtime\";\n\ntype NotEmpty<\n T extends readonly unknown[],\n R extends readonly unknown[] = [],\n> = [] extends T\n ? RemoveNever<R>\n : NotEmpty<\n AfterFirst<T>,\n [\n ...R,\n First<T> extends Empty\n ? never\n : UnionFilter<First<T>, Empty>,\n ]\n >;\n\n/**\n * Filters an array/tuple down to elements which are _not empty_ and\n * preserves as much of the type as possible.\n */\nexport function filterEmpty<\n T extends readonly N[],\n N extends Narrowable,\n>(...val: T) {\n return val.filter(i => isNotEmpty(i)) as NotEmpty<T>;\n}\n","import type { TypedFunction } from \"inferred-types/types\";\n\n/**\n * **isFunction**(value)\n *\n * Type guard which checks whether the passed in value is a function.\n *\n * **Related:** `isFnWithParams`, `ifFunction`\n */\nexport function isFunction(value: unknown): value is TypedFunction {\n return typeof value === \"function\";\n}\n","import type { Dictionary, Narrowable, ObjectKey } from \"inferred-types/types\";\n\n/**\n * **isObject**(value)\n *\n * Type guard used to detect whether the passed in value is an Object.\n *\n * Note: an _array_ will **not** pass this test (although the _typeof_ operator\n * would have said it was an object)\n *\n * **Related:** `isNarrowableObject()`\n */\nexport function isObject(value: unknown): value is Dictionary {\n return typeof value === \"object\" && value !== null && Array.isArray(value) === false;\n}\n\n/**\n * **isObject**(value)\n *\n * Type guard used to detect whether the passed in value is an Object and all of it's\n * values fit into the `Narrowable` type.\n *\n * **Related:** `isObject()`\n */\nexport function isNarrowableObject(value: unknown): value is Dictionary<ObjectKey, Narrowable> {\n return isObject(value) && Object.keys(value).every(key => [\"string\", \"number\", \"boolean\", \"symbol\", \"object\", \"undefined\", \"void\", \"null\"].includes(typeof value[key]));\n}\n","import type { Dictionary, Narrowable, OptionalParamFn, TypedFunction } from \"inferred-types/types\";\nimport { isFunction } from \"./isFunction\";\nimport { isObject } from \"./isObject\";\n\nexport function isEscapeFunction<T>(val: T): val is T & (() => unknown) {\n return isFunction(val) && \"escape\" in val && val.escape === true;\n}\n\n/**\n * **isOptionalParamFunction**`(val)`\n *\n * A type guard which ensures that the value passed in is not only a _function_\n * but also has the `optionalParam` value set to **true** indicating that it\n * is safe to be called _without_ parameters.\n *\n * **Note:** this is similar to an \"escape function\" but whereas an API can\n * only have one escape function, an API may have as many ze\n */\nexport function isOptionalParamFunction<T>(val: T): val is T & OptionalParamFn {\n return isFunction(val) && \"optionalParams\" in val && val.optionalParams === true;\n}\n\n/**\n * **isApi**`(val)`\n *\n * Type guard which validates that the value passed in is an `Api` type\n * with \"surface\" and \"_kind\" property.\n *\n * **Related:** `isFluentApi()`\n */\nexport function isApi<T extends Narrowable>(api: T): api is T & { __kind: \"api\"; surface: Dictionary | TypedFunction } {\n return isObject(api) && \"surface\" in api && \"_kind\" in api && api._kind === \"api\";\n}\n\n/**\n * **isApiSurface**`(val)`\n *\n * A type guard which tests whether the value passed in is the SurfaceArea\n * of an API (or could be).\n */\nexport function isApiSurface<T>(val: T): val is T & (Dictionary | TypedFunction) {\n return isObject(val) && Object.keys(val).some(k => isEscapeFunction(val[k]));\n}\n","/**\n * A type guard which validates whether the passed in value is a JavaScript Date object.\n */\nexport function isDate(val: unknown): val is Date {\n return val instanceof Date;\n}\n","import type { Iso8601DateTime } from \"inferred-types/types\";\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * Type guard which validates that `val` is a valid ISO8601 DateTime string.\n *\n * Valid forms include:\n * - `2024-01-01T00:00:00Z` (UTC/Zulu time)\n * - `2024-01-01T00:00:00+00:00` (Explicit timezone offset)\n * - `2024-01-01T00:00:00-00:00` (Explicit timezone offset)\n * - `2024-01-01T00:00:00.000Z` (With milliseconds, UTC)\n * - `2024-01-01T00:00:00.000+00:00` (With milliseconds, offset)\n * - `2024-01-01T00:00` (Minutes precision)\n * - `2024-01-01T00:00:00` (Seconds precision)\n */\nexport function isIsoDateTime(val: unknown): val is Iso8601DateTime {\n if (!isString(val)) {\n return false;\n }\n\n // Regex with time validation and proper timezone format\n const ISO_DATETIME_REGEX = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{1,3}))?)?(Z|[+-]\\d{2}:\\d{2})?$/;\n\n if (!ISO_DATETIME_REGEX.test(val)) {\n return false;\n }\n\n // Extract time components for validation\n const [_, ...matches] = val.match(ISO_DATETIME_REGEX) || [];\n const [year, month, day, hours, minutes, seconds] = matches.map(Number);\n\n // Validate hours (0-23), minutes (0-59), seconds (0-59)\n if (hours >= 24 || minutes >= 60 || (seconds != null && seconds >= 60)) {\n return false;\n }\n\n // Validate month (1-12)\n if (month < 1 || month > 12) {\n return false;\n };\n\n // Validate day based on month and year\n const daysInMonth = new Date(year, month, 0).getDate();\n if (day < 1 || day > daysInMonth) {\n return false;\n };\n\n // Validate timezone offset if present\n const tzMatch = val.match(/([+-])(\\d{2}):(\\d{2})$/);\n if (tzMatch) {\n const [_, _sign, tzHours, tzMinutes] = tzMatch;\n const numHours = Number.parseInt(tzHours, 10);\n const numMinutes = Number.parseInt(tzMinutes, 10);\n\n // Validate timezone offset ranges\n if (numHours > 14 || numMinutes > 59) {\n return false;\n }\n if (numHours === 14 && numMinutes > 0) {\n return false;\n }\n }\n\n return true;\n}\n","import type { Iso8601Date } from \"inferred-types/types\";\nimport { isNumberLike, isString } from \"inferred-types/runtime\";\n\n/**\n * Type guard which validates whether the passed in `val` is an ISO 8601 date\n * representation with an explicit `-` seperator between units (YYYY-MM-DD).\n *\n * **Related:** `isIsoDate`, `isIsoImplictDate`\n */\nexport function isIsoExplicitDate(val: unknown): val is Iso8601Date<\"explicit\"> {\n if (isString(val)) {\n const parts = val.split(\"-\").map(i => Number(i));\n\n return val.includes(\"-\")\n ? val.split(\"-\").every(i => isNumberLike(i))\n ? parts[0] >= 0 && parts[0] <= 9999 && parts[1] >= 1 && parts[1] <= 12 && parts[2] >= 1 && parts[2] <= 31\n : false\n : false;\n }\n else {\n return false;\n }\n}\n\n/**\n * Type guard which validates whether the passed in `val` is an ISO 8601 date\n * representation without an explicit `-` seperator between units (YYYYMMDD).\n *\n * **Related:** `isIsoDate`, `isIsoExplictDate`\n */\nexport function isIsoImplicitDate(val: unknown): val is Iso8601Date<\"implicit\"> {\n if (isString(val) && val.length === 8 && isNumberLike(val)) {\n const year = Number(val.slice(0, 4));\n const month = Number(val.slice(4, 6));\n const date = Number(val.slice(6, 8));\n\n return (\n year >= 0 && year <= 9999 && month >= 1 && month <= 12 && date >= 1 && date <= 31\n );\n }\n else {\n return false;\n }\n}\n\n/**\n * Type guard which validates whether the passed in `val` is an ISO 8601 date\n * representation.\n *\n * **Related:** `isIsoExplictDate`, `isIsoImplictDate`\n */\nexport function isIsoDate(val: unknown): val is Iso8601Date<\"both\"> {\n if (isString(val)) {\n return val.includes(\"-\")\n ? isIsoExplicitDate(val)\n : isIsoImplicitDate(val);\n }\n else {\n return false;\n }\n}\n","import type { Iso8601Time } from \"inferred-types/types\";\nimport { isString, stripAfter, stripLeading } from \"inferred-types/runtime\";\n\nexport function isIsoExplicitTime(val: unknown): val is Iso8601Time<\"explicit\"> {\n if (isString(val)) {\n const parts = stripLeading(stripAfter(val, \"Z\"), \"T\").split(/[:.]/).map(i => Number(i));\n return val.startsWith(\"T\") && val.includes(\":\") && val.split(\":\").length === 3 && parts[0] >= 0 && parts[0] <= 23 && parts[1] >= 0 && parts[1] <= 59;\n }\n else {\n return false;\n }\n}\n\nexport function isIsoImplicitTime(val: unknown): val is Iso8601Time<\"implicit\"> {\n if (isString(val)) {\n const parts = stripAfter(val, \"Z\").split(/[:.]/).map(i => Number(i));\n return val.includes(\":\") && val.split(\":\").length === 3 && parts[0] >= 0 && parts[0] <= 23 && parts[1] >= 0 && parts[1] <= 59;\n }\n else {\n return false;\n }\n}\n\n/**\n * Type guard which validates that the passed in `val` is a valid ISO-8601 time.\n */\nexport function isIsoTime(val: unknown): val is Iso8601Time<\"both\"> {\n return isIsoExplicitTime(val) || isIsoImplicitTime(val);\n}\n","import type { Iso8601Year } from \"inferred-types/types\";\nimport { isNumber, isString } from \"inferred-types/runtime\";\n\n/**\n * A type guard which matches a valid ISO 8601 year (e.g., `YYYY`).\n */\nexport function isIsoYear(val: unknown): val is Iso8601Year {\n return !!(isString(val)\n && val.length === 4\n && isNumber(Number(val))\n && Number(val) >= 0\n && Number(val) <= 9999);\n}\n","import type { LuxonJs } from \"inferred-types/types\";\nimport { isObject } from \"inferred-types/runtime\";\n\n/**\n * Type guard which validates that the passed in `val` is a\n * [LuxonJS](https://moment.github.io/luxon/#/?id=luxon) DateTime object.\n */\nexport function isLuxonDateTime(val: unknown): val is LuxonJs[\"DateTime\"] {\n return isObject(val)\n && typeof val === \"object\"\n && val !== null\n && \"isValid\" in val\n && \"invalidReason\" in val\n && \"invalidExplanation\" in val\n && \"toISO\" in val\n && \"toFormat\" in val\n && \"toMillis\" in val\n && \"year\" in val\n && \"month\" in val\n && \"day\" in val\n && \"hour\" in val\n && \"minute\" in val\n && \"second\" in val\n && \"millisecond\" in val\n && typeof (val as any).isValid === \"boolean\"\n && typeof (val as any).toISO === \"function\";\n}\n","import type { MomentJs } from \"inferred-types/types\";\nimport { isObject } from \"inferred-types/runtime\";\n\n/**\n * Type guard which validates that the passed in `val` is a\n * [MomentJS](https://momentjs.com/docs/) object.\n */\nexport function isMoment(val: unknown): val is MomentJs {\n if (val instanceof Date) {\n return false;\n }\n return isObject(val)\n // Check for essential Moment.js methods\n && typeof val.format === \"function\"\n && typeof val.year === \"function\"\n && typeof val.month === \"function\"\n && typeof val.date === \"function\"\n // Check for Moment-specific properties\n && \"_isAMomentObject\" in val\n && \"_isValid\" in val\n // Check for essential Moment.js manipulation methods\n && typeof val.add === \"function\"\n && typeof val.subtract === \"function\"\n // Additional Moment.js specific methods\n && typeof val.toISOString === \"function\"\n && typeof val.isValid === \"function\";\n}\n","import { isLuxonDateTime } from \"./isLuxonDateTime\";\nimport { isMoment } from \"./isMoment\";\n\n/**\n * Type guard which validates that the passed in `val` is a date or date-time\n * representation and that it's month is the same as the current month year.\n */\nexport function isThisMonth(val: unknown): boolean {\n const now = new Date();\n const currentYear = now.getFullYear();\n const currentMonth = now.getMonth() + 1; // getMonth() returns 0-11, we need 1-12\n\n // Handle Date object\n if (val instanceof Date) {\n return val.getFullYear() === currentYear\n && (val.getMonth() + 1) === currentMonth;\n }\n\n if (isMoment(val)) {\n const monthValue = val.month();\n return val.year() === currentYear\n && (typeof monthValue === \"number\" ? monthValue + 1 : monthValue) === currentMonth;\n }\n\n if (isLuxonDateTime(val)) {\n return val.year === currentYear\n && val.month === currentMonth;\n }\n\n // Handle ISO 8601 strings\n if (typeof val === \"string\") {\n // Match for full ISO 8601 date (YYYY-MM-DD) or datetime (YYYY-MM-DDThh:mm:ssZ) format\n const isoDateRegex = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])(?:T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|[-+][01]\\d:[0-5]\\d))?$/;\n\n if (!isoDateRegex.test(val)) {\n return false;\n }\n\n const dateMatch = val.match(/^(\\d{4})-(\\d{2})/);\n if (dateMatch) {\n const year = Number.parseInt(dateMatch[1], 10);\n const month = Number.parseInt(dateMatch[2], 10);\n return year === currentYear && month === currentMonth;\n }\n }\n\n return false;\n}\n","import { asDate, getWeekNumber } from \"inferred-types/runtime\";\n\n/**\n * Provides a boolean check on the `val` passed in to see if:\n * a) it's a date or date-time representation\n * b) the date is in the same as the current week\n *\n * This function will work with ISO 8601 strings, JS Date objects,\n * Luxon DateTime objects, and Moment.js objects.\n */\nexport function isThisWeek<T extends number | string | Date | Record<string, any>>(date: T): boolean {\n const targetDate = asDate(date);\n\n if (!targetDate) {\n return false;\n }\n\n const currentWeek = getWeekNumber();\n const targetWeek = getWeekNumber(targetDate);\n\n return currentWeek === targetWeek;\n}\n","import { asDate, isNumber, isObject, isString } from \"inferred-types/runtime\";\n\n/**\n * A validation -- not typeguard -- on whether the passed in `val` is a date or date-time\n * representation and that it's year is the same as the current year.\n *\n * Types correctly handled are:\n *\n * - **JS Date** object\n * - **ISO Date** or **ISO Datetime**\n * - a number representing a **epoch** timestamp (in seconds, not miliseconds)\n * - **MomentJS** and **Luxon** datetime objects\n *\n * **Note:** an invalidate date/datetime passed in will always resolve to `false`\n */\nexport function isThisYear(val: unknown): boolean {\n // Get current year\n const currentYear = new Date().getFullYear();\n\n if (isObject(val) || isNumber(val) || isString(val)) {\n const date = asDate(val);\n if (date) {\n return date.getFullYear() === currentYear;\n }\n else {\n return false;\n }\n }\n\n return false;\n}\n","import { getToday, isDate, isIsoExplicitDate, isLuxonDateTime, isMoment, isString, stripAfter } from \"inferred-types/runtime\";\n\n/**\n * **isToday`(val)`**\n *\n * A type guard which validates whether the passed in value _represents_ today's date\n * as either a:\n *\n * - [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date string, or\n * - [Moment.js](https://momentjs.com/docs/#/displaying/) DateTime object, or\n * - [Luxon](https://moment.github.io/luxon/#/?id=luxon) DateTime object\n */\nexport function isToday<T>(test: T): boolean {\n if (isString(test)) {\n const justDate = stripAfter(test, \"T\");\n return isIsoExplicitDate(justDate) && justDate === getToday();\n }\n else if (isMoment(test) || isDate(test)) {\n return (\n stripAfter(test.toISOString(), \"T\") === getToday()\n );\n }\n else if (isLuxonDateTime(test)) {\n return (\n stripAfter(test.toISO(), \"T\") === getToday()\n );\n }\n\n return false;\n}\n","import { getTomorrow, isDate, isIsoExplicitDate, isLuxonDateTime, isMoment, isString, stripAfter } from \"inferred-types/runtime\";\n\n/**\n * **isTomorrow`(val)`**\n * A boolean test which validates whether the passed in value _represents_ tomorrow's date\n * as either a:\n *\n * - [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date string, or\n * - [Moment.js](https://momentjs.com/docs/#/displaying/) DateTime object, or\n * - [Luxon](https://moment.github.io/luxon/#/?id=luxon) DateTime object\n */\nexport function isTomorrow(test: unknown): boolean {\n if (isString(test)) {\n const justDate = stripAfter(test, \"T\");\n return isIsoExplicitDate(justDate) && justDate === getTomorrow();\n }\n else if (isMoment(test) || isDate(test)) {\n return (\n stripAfter(test.toISOString(), \"T\") === getTomorrow()\n );\n }\n else if (isLuxonDateTime(test)) {\n return (\n stripAfter(test.toISO(), \"T\") === getTomorrow()\n );\n }\n\n return false;\n}\n","import { getYesterday, isDate, isIsoExplicitDate, isLuxonDateTime, isMoment, isString, stripAfter } from \"inferred-types/runtime\";\n\n/**\n * **isYesterday`(val)`**\n * A boolean test whether on whether the passed in value _represents_ yesterday's date\n * as either a:\n *\n * - [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date string, or\n * - [Moment.js](https://momentjs.com/docs/#/displaying/) DateTime object, or\n * - [Luxon](https://moment.github.io/luxon/#/?id=luxon) DateTime object\n */\nexport function isYesterday(test: unknown): boolean {\n if (isString(test)) {\n const justDate = stripAfter(test, \"T\");\n return isIsoExplicitDate(justDate) && justDate === getYesterday();\n }\n else if (isMoment(test) || isDate(test)) {\n return (\n stripAfter(test.toISOString(), \"T\") === getYesterday()\n );\n }\n else if (isLuxonDateTime(test)) {\n return (\n stripAfter(test.toISO(), \"T\") === getYesterday()\n );\n }\n\n return false;\n}\n","import type {\n AmericanExpress,\n CreditCard,\n Mastercard,\n Visa,\n VisaMastercard,\n} from \"inferred-types/types\";\nimport { isNumberLike, isString } from \"inferred-types/runtime\";\n\nexport function isVisa(val: unknown): val is Visa {\n if (isString(val) && val.startsWith(\"4\")) {\n const parts = val.split(\" \");\n return (\n parts.length === 4\n && parts.every(i => isNumberLike(i) && i.length === 4)\n );\n }\n return false;\n}\n\nexport function isMastercard(val: unknown): val is Mastercard {\n if (isString(val) && val.startsWith(\"4\")) {\n const parts = val.split(\" \");\n return (\n parts.length === 4\n && parts.every(i => isNumberLike(i) && i.length === 4)\n && [\"51\", \"55\", \"22\", \"23\", \"24\", \"25\", \"26\", \"27\"].some(i => val.startsWith(i))\n );\n }\n return false;\n}\n\nexport function isVisaMastercard(val: unknown): val is VisaMastercard {\n return isVisa(val) || isMastercard(val);\n}\n\nexport function isAmericanExpress(val: unknown): val is AmericanExpress {\n if (isString(val)) {\n const parts = val.split(\" \");\n return parts.length === 3\n && parts.every(i => isNumberLike(i)\n && parts[0].length === 4\n && parts[1].length === 6,\n );\n }\n return false;\n}\n\nexport function isCreditCard(val: unknown): val is CreditCard {\n return isVisaMastercard(val) || isAmericanExpress(val);\n}\n\n/**\n * Given a card's long number, attempt to match this to a card type from:\n *\n * - Visa, Mastercard\n * - American Express\n * - Discover\n * - JCB\n * - Diners Club\n * - China UnionPay\n * - Maestro\n * - Solo\n */\nexport function cardType(cardNumber: string | number) {\n // Step 1: Clean the input by removing non-digit characters\n const cleanedNumber: string = String(cardNumber).replace(/\\D/g, \"\");\n\n // Step 2: Check if the length is valid for any card type\n const length = cleanedNumber.length;\n if (!isValidLength(length)) {\n return \"invalid\";\n }\n\n // Step 3: Check Luhn algorithm\n if (!luhnCheck(cleanedNumber)) {\n return \"invalid\";\n }\n\n // Step 4: Determine the card type based on prefix and length\n const cardTypes = [\n { name: \"Visa\", lengths: [16], prefixes: [/^4/] },\n { name: \"Mastercard\", lengths: [16], prefixes: [/^(51|52|53|54|55|222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[01]\\d|2720)/] },\n { name: \"American Express\", lengths: [15], prefixes: [/^3[47]/] },\n { name: \"Discover\", lengths: [16], prefixes: [/^(6011|622(12[6-9]|1[3-9]\\d|2[0-4]\\d|25\\d|6[4-9]|7[0-4]|8[0-4]|9\\d)|64[4-9]|65)/] },\n { name: \"JCB\", lengths: [16], prefixes: [/^(35|2131|1800)/] },\n { name: \"Diners Club\", lengths: [14, 16], prefixes: [/^(30[0-5]|36|38)/] },\n { name: \"China UnionPay\", lengths: [16, 17, 18, 19], prefixes: [/^(62|88)/] },\n { name: \"Maestro\", lengths: [12, 13, 14, 15, 16, 17, 18, 19], prefixes: [/^(5018|5020|5038|6304)/] },\n { name: \"Solo\", lengths: [16, 18, 19], prefixes: [/^(6334|6767)/] },\n ];\n\n for (const type of cardTypes) {\n if (type.lengths.includes(length)) {\n for (const prefix of type.prefixes) {\n if (prefix.test(cleanedNumber)) {\n return type.name;\n }\n }\n }\n }\n\n return \"invalid\";\n}\n\n// Helper function to check if the length is valid for any card type\nfunction isValidLength(length: number) {\n const validLengths = [13, 14, 15, 16, 17, 18, 19];\n return validLengths.includes(length);\n}\n\n// Implementation of the Luhn algorithm\nfunction luhnCheck(num: string) {\n let sum = 0;\n let double = false;\n for (let i = num.length - 1; i >= 0; i--) {\n let n = Number.parseInt(num.charAt(i), 10);\n if (double) {\n n *= 2;\n if (n > 9) {\n n -= 9;\n }\n }\n sum += n;\n double = !double;\n }\n return sum % 10 === 0;\n}\n","/**\n * **isString**\n *\n * Returns true or false on whether the passed in parameter is a\n * string (either a wide string or a string literal).\n *\n * The boolean return is traceable by the type system as well as the\n * runtime system.\n */\nexport function isString<T>(value: T): value is T & string {\n return (typeof value === \"string\");\n}\n","import type { Iso3166_1_Alpha2, Iso3166_1_Alpha3, Iso3166_1_CountryCode, Iso3166_1_CountryName } from \"inferred-types/types\";\nimport { ISO3166_1 } from \"inferred-types/constants\";\nimport { isString } from \"../isString\";\n\n/**\n * Type guard which checks whether `val` is a 2 character country\n * representation found in the ISO3166-1 standard.\n */\nexport function isIso3166Alpha2(val: unknown): val is Iso3166_1_Alpha2 {\n const codes = ISO3166_1.map(i => i.alpha2) as string[];\n return isString(val) && codes.includes(val);\n}\n\n/**\n * Type guard which checks whether `val` is a 2 character country\n * representation found in the ISO3166-1 standard.\n *\n * **Alias:** `isIso3166Alpha2`\n */\nexport function isCountryCode2(val: unknown): val is Iso3166_1_Alpha2 {\n const codes = ISO3166_1.map(i => i.alpha2) as string[];\n return isString(val) && codes.includes(val);\n}\n\n/**\n * Type guard which checks whether `val` is a 3 character country\n * representation found in the ISO3166-1 standard.\n */\nexport function isIso3166Alpha3(val: unknown): val is Iso3166_1_Alpha3 {\n const codes = ISO3166_1.map(i => i.alpha3) as string[];\n return isString(val) && codes.includes(val);\n}\n\n/**\n * Type guard which checks whether `val` is a 3 character country\n * representation found in the ISO3166-1 standard.\n *\n * **Alias:** `isIso3166Alpha3`\n */\nexport function isCountryCode3(val: unknown): val is Iso3166_1_Alpha3 {\n const codes = ISO3166_1.map(i => i.alpha3) as string[];\n return isString(val) && codes.includes(val);\n}\n\n/**\n * Type guard which checks whether `val` is a 3 character country\n * representation found in the ISO3166-1 standard.\n */\nexport function isIso3166CountryCode(val: unknown): val is Iso3166_1_CountryCode {\n const codes = ISO3166_1.map(i => i.countryCode) as string[];\n return isString(val) && codes.includes(val);\n}\n\n/**\n * Type guard which checks whether `val` is a 2 or 3 character country\n * abbreviation found in the ISO3166-1 standard.\n */\nexport function isCountryAbbrev(val: unknown): val is Iso3166_1_Alpha2 | Iso3166_1_Alpha3 {\n return isCountryCode2(val) || isCountryCode3(val);\n}\n\n/**\n * Type guard which checks whether `val` is a valid ISO3166-1 country name.\n */\nexport function isIso3166CountryName(val: unknown): val is Iso3166_1_CountryName {\n const codes = ISO3166_1.map(i => i.name) as string[];\n return isString(val) && codes.includes(val);\n}\n\n/**\n * Type guard which checks whether `val` is a valid ISO3166-1 country name.\n *\n * **Alias:** `isIso3166CountryName`\n */\nexport function isCountryName(val: unknown): val is Iso3166_1_CountryName {\n const codes = ISO3166_1.map(i => i.name) as string[];\n return isString(val) && codes.includes(val);\n}\n","import type { UsStateAbbrev, UsStateName } from \"inferred-types/types\";\nimport { US_STATE_LOOKUP } from \"inferred-types/constants\";\nimport { isString } from \"../isString\";\n\nconst ABBREV = US_STATE_LOOKUP.map(i => i.abbrev);\nconst NAME = US_STATE_LOOKUP.map(i => i.name);\n\nexport function isUsStateAbbreviation(val: unknown): val is UsStateAbbrev {\n return isString(val) && ABBREV.includes(val as any);\n}\n\nexport function isUsStateName(val: unknown): val is UsStateName {\n return isString(val) && NAME.includes(val as any);\n}\n","import type { NumberLike } from \"inferred-types/types\";\nimport { NUMERIC_CHAR } from \"inferred-types/constants\";\nimport { split } from \"inferred-types/runtime\";\n\n/**\n * **isNumericString**(value)\n *\n * Type guard to validate that a value is string which can be converted to a number.\n *\n * **Related:** `isNumberLike`\n */\nexport function isNumericString<T>(value: T): value is T & `${number}` {\n const numericChars = [...NUMERIC_CHAR];\n\n return typeof value === \"string\" && (\n split(value).every(i => numericChars.includes(i as any))\n );\n}\n\n/**\n * **isNumberLike**(value)\n *\n * Type guard to validate that a value is either:\n *\n * - a numeric string literal which can be converted to a number\n * - an actual number\n *\n * **Related:** `isNumericString`\n */\nexport function isNumberLike<T>(value: T): value is T & NumberLike {\n const numericChars = [...NUMERIC_CHAR];\n\n return typeof value === \"string\" && (\n split(value).every(i => numericChars.includes(i as any))\n )\n ? true\n : typeof value === \"number\";\n}\n","/**\n * **isNumber**(value)\n *\n * Type guard to test whether passed in value is a numeric type.\n */\nexport function isNumber<T>(value: T): value is T & number {\n return (typeof value === \"number\");\n}\n","import type { Zip5, ZipCode, ZipPlus4 } from \"inferred-types/types\";\nimport { NUMERIC_CHAR } from \"inferred-types/constants\";\nimport { retainWhile, stripChars } from \"inferred-types/runtime\";\nimport { isNumberLike } from \"../isNumericString\";\nimport { isString } from \"../isString\";\nimport { isNumber } from \"../numeric/isNumber\";\n\n/**\n * Type guard which validates that passed in value is a US ZipCode\n * in the `Zip5` format.\n *\n * **Related:** `isZipCode()`, `isZipPlus4()`\n */\nexport function isZipCode5(val: unknown): val is Zip5 {\n if (isNumber(val)) {\n return isZipCode5(`${val}`);\n }\n return isString(val) && val.trim().length === 5 && isNumberLike(val.trim());\n}\n\n/**\n * Type guard which validates that passed in value is a US ZipCode\n * in the `ZipPlus4` format.\n *\n * **Related:** `isZipCode()`, `isZipCode5()`\n */\nexport function isZipPlus4(val: unknown): val is ZipPlus4 {\n if (isString(val)) {\n const first = retainWhile(val.trim(), ...NUMERIC_CHAR);\n const next = stripChars(val.trim().replace(first, \"\").trim(), \"-\");\n return first.length === 5 && next.length === 4 && isNumberLike(next);\n }\n\n return false;\n}\n\n/**\n * Type guard which validates that passed in value is a US ZipCode\n * in either the `Zip5` or `ZipPlus4` format.\n *\n * **Related:** `isZipCode5()`, `isZipPlus4()`\n */\nexport function isZipCode(val: unknown): val is ZipCode {\n return isZipCode5(val) || isZipPlus4(val);\n}\n","import type { Constant } from \"inferred-types/constants\";\nimport { isConstant } from \"inferred-types/runtime\";\n\n/**\n * **isSpecificConstant**(kind)\n *\n * A higher order type guard which tests for a specific `Constant` type.\n */\nexport function isSpecificConstant<\n TKind extends string,\n>(kind: TKind) {\n return (value: unknown): value is Constant<TKind> => {\n return !!(isConstant(value) && value.kind === kind);\n };\n}\n","import type { NoDefaultValue } from \"inferred-types/constants\";\nimport type { Narrowable } from \"inferred-types/types\";\nimport { isSpecificConstant } from \"./isSpecificConstant\";\n/**\n * **hasDefaultValue**(value)\n *\n * Type guard which helps to eliminate the use case where a value which _might_ be a\n * `DefaultValue` is _not_ in this initial state and therefore indicating that the value\n * **is** in fact a default value.\n *\n * Probably a better way to phrase this. :)\n */\nexport function hasDefaultValue<T extends Narrowable>(value: T): value is Exclude<T, NoDefaultValue> {\n const noDefault = isSpecificConstant(\"no-default-value\");\n return !noDefault(value);\n}\n","import type { Container, Dictionary, IsValidIndex, Tuple } from \"inferred-types/types\";\nimport { isErrorCondition, isObject } from \"inferred-types/runtime\";\n\n/**\n * **hasIndexOf**(value, idx) => boolean\n *\n * A type guard which determines whether container passed in has\n * an explicit index.\n */\nexport function hasIndexOf<\n TContainer extends Container,\n TIndex extends PropertyKey,\n>(value: TContainer, idx: TIndex): value is TContainer &\n(TContainer extends Tuple\n ? Tuple<TIndex>\n : TContainer extends Dictionary\n ? Record<TIndex, unknown>\n : never\n) {\n const result = isObject(value)\n ? String(idx) in value\n : Array.isArray(value)\n ? Number(idx) in value\n : false;\n return (\n isErrorCondition(result, \"invalid-index\")\n ? false\n : result\n ) as IsValidIndex<TContainer, TIndex>;\n}\n","import type { AsObject, EnsureKeys } from \"inferred-types/types\";\nimport { isFunction } from \"./isFunction\";\nimport { isObject } from \"./isObject\";\n\n/**\n * **hasKeys**(props) => (obj) => `HasKeys<O,P>`\n *\n * Higher order type guard which on first call generates\n * a type guard that can test for the existence of the\n * properties passed into this first call.\n *\n * ```ts\n * const hasFooBar = hasKeys(\"foo\", \"bar\"); // type guard\n * const hasFooBarToo = hasKeys({foo: 1, bar: 1});\n * ```\n */\nexport function hasKeys<\n P extends readonly string[] | [Record<string, unknown>],\n>(...props: P) {\n return <\n T,\n >(val: T): val is T & ([EnsureKeys<AsObject<T>, [\"name\"]>] extends never[]\n ? never\n : EnsureKeys<AsObject<T>, P>) => {\n const keys = Array.isArray(props)\n ? props\n : Object.keys(props).filter(i => typeof i === \"string\") as string[];\n\n return !!((\n isFunction(val) || isObject(val)\n ) && keys.every(k => k in (val as object)));\n };\n}\n","import type { Chars } from \"inferred-types/types\";\n\n/**\n * **asChars**`(str)`\n *\n * Converts a string into an array of characters.\n */\nexport function asChars<T extends string>(str: T): Chars<T> {\n return str.split(\"\") as Chars<T>;\n}\n","import type { AsRecord, ObjectKey } from \"inferred-types/types\";\n\n/**\n * **asRecord**`<T>`(obj: T) → AsRecord`<T>`\n *\n * An \"identity function\" with regards to runtime information but\n * helps convert a `object` to a `Record<ObjectKey,unknown>` which\n * is indexable.\n */\nexport function asRecord<\n T extends Record<ObjectKey, unknown> | object,\n>(obj: T): AsRecord<T> {\n return obj as AsRecord<T>;\n}\n","import type { AsString } from \"inferred-types/types\";\nimport { isArray, isBoolean, isNumber, isString } from \"inferred-types/runtime\";\n\n/**\n * **asString**`(value)\n *\n * Attempts to convert the value passed in into a string\n * using the same methods available to the type utility\n * `AsString<T>`.\n *\n * If unable to convert to a string then it will provide\n * the runtime value of `String(value)` but the type system\n * will be set to `never`.\n *\n * - if an array is passed in then it will be joined\n * together -- no delimiter characters -- into a string\n * - if a tuple of `SimpleToken[]` is discovered it will\n * set the runtime type to a token of `<<string::...>>` while the\n * type of the string will be\n */\nexport function asString<T>(value: T): AsString<T> {\n return (\n isString(value)\n ? value\n : isNumber(value)\n ? `${value}`\n : isBoolean(value)\n ? `${value}`\n : isArray(value)\n ? value.join(\"\")\n : String(value)\n ) as unknown as AsString<T>;\n}\n","import type { CsvToJsonTuple, CsvToTuple, CsvToTupleStr } from \"inferred-types/types\";\nimport { Never } from \"inferred-types/constants\";\nimport { isNumberLike } from \"../type-guards\";\n\nexport type CsvFormat =\n | \"string-tuple\"\n | \"string-numeric-tuple\"\n | \"json-tuple\";\n\n/**\n * **csv**`(csv, [format])`\n *\n * Converts a CSV string literal into a tuple of values\n * (based on format).\n *\n * **Note:** either _no space_ or _a single space_ between values\n * will provide a trimmed value but any additional whitespace\n * after the comma will result in some leading whitespace in\n * some values.\n *\n * @default\n */\nexport function csv<\n T extends string,\n F extends CsvFormat = `string-numeric-tuple`,\n>(csv: T, format: F = `string-numeric-tuple` as F) {\n const tuple: unknown[] = [];\n\n csv.split(/,\\s?/).forEach((v) => {\n tuple.push(\n format === \"string-numeric-tuple\"\n ? isNumberLike(v) ? Number(v) : v\n : format === \"json-tuple\"\n ? isNumberLike(v)\n ? Number(v)\n : v === \"true\"\n ? true\n : v === \"false\"\n ? false\n : `\"${v}\"`\n : format === \"string-tuple\"\n ? `${v}`\n : Never,\n );\n });\n\n return tuple as F extends \"string-numeric-tuple\"\n ? CsvToTuple<T>\n : F extends \"json-tuple\"\n ? CsvToJsonTuple<T>\n : F extends \"string-tuple\"\n ? CsvToTupleStr<T>\n : never;\n}\n","import type {\n Dictionary,\n FromKv,\n KeyValue,\n Narrowable,\n} from \"inferred-types/types\";\n\nexport function fromKeyValue<\n T extends readonly KeyValue<K, N>[],\n K extends string,\n N extends Narrowable,\n>(kvs: T) {\n const obj: Dictionary = {};\n\n for (const kv of kvs) {\n obj[kv.key] = kv.value;\n }\n\n return obj as unknown as FromKv<T>;\n}\n","/**\n * **intersect**(value, intersectedWith)\n *\n * Runtime utility which receives `value` property and returns it with an\n * unchanged _runtime_ value but with the type now intersected with the\n * value provided by `intersectedWith`.\n */\nexport function intersect<T, U>(value: T, _intersectedWith: U): T & U {\n return value as T & U;\n}\n","import type { Ip6GroupExpansion } from \"inferred-types/types\";\nimport { stripTrailing } from \"inferred-types/runtime\";\n\n/**\n * **ip6GroupExpansion**`(ip)`\n *\n * Looks at the IPv6 address and expands all instances of `::` to add\n * a block of `0000` where it was.\n *\n * ```ts\n * // fe89:0000:1256\n * const ip6 = ip6GroupExpansion(\"fe89::1256\");\n * ```\n */\nexport function ip6GroupExpansion<T extends string>(ip: T) {\n return stripTrailing(ip.replaceAll(\"::\", \":0000:\"), \":\") as Ip6GroupExpansion<T>;\n}\n","import type { JsonValue, JsonValues } from \"inferred-types/types\";\nimport { isNumberLike } from \"inferred-types/runtime\";\n\n/**\n * **jsonValue**`(val)`\n *\n * Converts a string value to JSON value\n *\n * **Related:** `jsonValues()`\n */\nexport function jsonValue<T>(val: T): JsonValue<T> {\n return (\n isNumberLike(val)\n ? Number(val)\n : val === \"true\"\n ? true\n : val === \"false\"\n ? false\n : `\"${val}\"`\n ) as unknown as JsonValue<T>;\n}\n\n/**\n * **jsonValues**`(values)`\n *\n * Converts string values to JSON values\n *\n * **Related:** `csv`\n */\nexport function jsonValues<T extends unknown[]>(...val: T): JsonValues<T> {\n return val.map(i => jsonValue(i)) as unknown[] as JsonValues<T>;\n}\n","import type { AsString, Iso3166_1_Alpha2, Iso3166_1_Alpha3, Iso3166_1_CountryCode, Iso3166_1_CountryName, Iso3166Alpha2Lookup, Iso3166Alpha3Lookup, Iso3166CodeLookup, Iso3166CountryLookup, NumberLike, Suggest } from \"inferred-types/types\";\nimport { ISO3166_1 } from \"inferred-types/constants\";\nimport { uppercase } from \"inferred-types/runtime\";\nimport { isIso3166Alpha2, isIso3166Alpha3, isIso3166CountryName, isNumber, isNumberLike } from \"../type-guards\";\n\ntype Props = \"alpha2\" | \"alpha3\" | \"countryCode\" | \"name\";\n\nfunction lookupAlpha2Code<\n T extends Iso3166_1_Alpha2,\n P extends Props,\n>(code: T, prop: P): P extends \"name\"\n ? Iso3166_1_CountryName\n : P extends \"alpha2\"\n ? Iso3166_1_Alpha2\n : P extends \"alpha3\"\n ? Iso3166_1_Alpha3\n : P extends \"countryCode\"\n ? Iso3166_1_CountryCode\n : never {\n const found = ISO3166_1.find(i => i.alpha2 === code);\n\n return (\n found ? found[prop] : undefined\n ) as unknown as P extends \"name\"\n ? Iso3166_1_CountryName\n : P extends \"alpha2\"\n ? Iso3166_1_Alpha2\n : P extends \"alpha3\"\n ? Iso3166_1_Alpha3\n : P extends \"countryCode\"\n ? Iso3166_1_CountryCode\n : never;\n}\n\nfunction lookupAlpha3Code<P extends Props>(code: Iso3166_1_Alpha3, prop: P): P extends \"name\"\n ? Iso3166_1_CountryName\n : P extends \"alpha2\"\n ? Iso3166_1_Alpha2\n : P extends \"alpha3\"\n ? Iso3166_1_Alpha3\n : P extends \"countryCode\"\n ? Iso3166_1_CountryCode\n : never {\n const found = ISO3166_1.find(i => i.alpha3 === code);\n\n return (\n found ? found[prop] : undefined\n ) as unknown as P extends \"name\"\n ? Iso3166_1_CountryName\n : P extends \"alpha2\"\n ? Iso3166_1_Alpha2\n : P extends \"alpha3\"\n ? Iso3166_1_Alpha3\n : P extends \"countryCode\"\n ? Iso3166_1_CountryCode\n : never;\n}\n\nfunction lookupName<\n T extends Iso3166_1_CountryName,\n P extends Props,\n>(name: T, prop: P): P extends \"name\"\n ? Iso3166_1_CountryName\n : P extends \"alpha2\"\n ? Iso3166_1_Alpha2\n : P extends \"alpha3\"\n ? Iso3166_1_Alpha3\n : P extends \"countryCode\"\n ? Iso3166_1_CountryCode\n : never {\n const found = ISO3166_1.find(i => i.name === name);\n\n return (\n found ? found[prop] : undefined\n ) as unknown as P extends \"name\"\n ? Iso3166_1_CountryName\n : P extends \"alpha2\"\n ? Iso3166_1_Alpha2\n : P extends \"alpha3\"\n ? Iso3166_1_Alpha3\n : P extends \"countryCode\"\n ? Iso3166_1_CountryCode\n : never;\n}\n\nfunction lookupNumericCode<\n T extends NumberLike,\n P extends Props,\n>(code: T, prop: P): string | undefined {\n let num: string = isNumber(code) ? `${code}` : code as `${number}`;\n if (num.length === 1) {\n num = `00${num}`;\n }\n else if (num.length === 2) {\n num = `0${num}`;\n }\n\n const found = ISO3166_1.find(i => i.countryCode === num);\n\n return found ? found[prop] : undefined;\n}\n\n/**\n * **lookupCountryName**`(code)`\n *\n * Looks up a country name by either the alpha-2, alpha-3, or country code\n * as defined by the [ISO3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) standard.\n *\n * - the ISO standard uses uppercase characters for Alpha2 and Alpha3 codes but\n * this utility will handle upper or lowercase\n * - it will correctly type the country name if the code passed in is a literal\n * string (and a valid code)\n *\n * **Related:** `lookupCountryAlpha2()`, `lookupCountryAlpha3()`\n */\nexport function lookupCountryName<T extends Suggest<Iso3166_1_Alpha2 | Iso3166_1_Alpha3 | Iso3166_1_CountryCode>>(code: T) {\n const uc = uppercase(code);\n\n return (\n isNumberLike(code)\n ? lookupNumericCode(code, \"name\")\n : isIso3166Alpha2(uc)\n ? lookupAlpha2Code(uc, \"name\")\n : isIso3166Alpha3(uc)\n ? lookupAlpha3Code(uc, \"name\")\n : undefined\n ) as unknown as Iso3166CountryLookup<Uppercase<AsString<T>>>;\n}\n\n/**\n * Looks up the Alpha2 component of a [ISO3166-1](https://en.wikipedia.org/wiki/ISO_3166-1)\n * standard.\n */\nexport function lookupCountryAlpha2<\n T extends Suggest<Iso3166_1_Alpha3 |\n Iso3166_1_CountryCode |\n Iso3166_1_CountryName\n >,\n>(code: T) {\n const uc = uppercase(code);\n\n return (\n isNumberLike(code)\n ? lookupNumericCode(code, \"alpha2\")\n : isIso3166Alpha2(uc)\n ? lookupAlpha2Code(uc, \"alpha2\")\n : isIso3166Alpha3(uc)\n ? lookupAlpha3Code(uc, \"alpha2\")\n : isIso3166CountryName(code)\n ? lookupName(code, \"alpha2\")\n : undefined\n ) as unknown as T extends Iso3166_1_CountryName\n ? Iso3166Alpha2Lookup<T>\n : Iso3166Alpha2Lookup<Uppercase<AsString<T>>>;\n}\n\n/**\n * Looks up the Alpha3 component of a [ISO3166-1](https://en.wikipedia.org/wiki/ISO_3166-1)\n * standard.\n */\nexport function lookupCountryAlpha3<\n T extends Suggest<\n Iso3166_1_Alpha2\n | Iso3166_1_CountryCode\n | Iso3166_1_CountryName\n >,\n>(token: T) {\n const uc = uppercase(token);\n\n return (\n isNumberLike(token)\n ? lookupNumericCode(token, \"alpha3\")\n : isIso3166Alpha2(uc)\n ? lookupAlpha2Code(uc, \"alpha3\")\n : isIso3166Alpha3(uc)\n ? lookupAlpha3Code(uc, \"alpha3\")\n : isIso3166CountryName(token)\n ? lookupName(token as any, \"alpha3\")\n : undefined\n ) as unknown as T extends Iso3166_1_CountryName\n ? Iso3166Alpha3Lookup<T>\n : Iso3166Alpha3Lookup<Uppercase<AsString<T>>>;\n}\n\n/**\n * Looks up the Alpha3 component of a [ISO3166-1](https://en.wikipedia.org/wiki/ISO_3166-1)\n * standard.\n */\nexport function lookupCountryCode<\n T extends Suggest<\n Iso3166_1_Alpha2\n | Iso3166_1_Alpha3\n | Iso3166_1_CountryName\n >,\n>(token: T) {\n const uc = uppercase(token);\n\n return (\n isNumberLike(token)\n ? lookupNumericCode(token, \"countryCode\")\n : isIso3166Alpha2(uc)\n ? lookupAlpha2Code(uc, \"countryCode\")\n : isIso3166Alpha3(uc)\n ? lookupAlpha3Code(uc, \"countryCode\")\n : isIso3166CountryName(token)\n ? lookupName(token as any, \"countryCode\")\n : undefined\n ) as unknown as T extends Iso3166_1_CountryName\n ? Iso3166CodeLookup<T>\n : Iso3166CodeLookup<Uppercase<AsString<T>>>;\n}\n","import type {\n AnyObject,\n ObjectMap,\n ObjectMapConversion,\n} from \"inferred-types/types\";\nimport {\n createFnWithPropsExplicit,\n isFunction,\n} from \"inferred-types/runtime\";\n\nexport type Mapper<\n TFrom extends AnyObject,\n TTo,\n> = (\n <TInput extends TFrom>(from: TInput) => TTo\n) & {\n kind: \"Mapper\";\n map: <TInput extends readonly TFrom[]>(from: TInput) => {\n [K in keyof TInput]: TTo\n };\n};\n\nfunction asMapper<\n TFrom extends AnyObject,\n TTo extends AnyObject,\n TFn extends <TInput extends TFrom>(cb: TInput) => {\n [K in keyof TInput]: TTo\n },\n>(fn: TFn): Mapper<TFrom, TTo> {\n const props = {\n kind: \"Mapper\",\n map: <TInput extends readonly TFrom[]>(from: TInput) => {\n return from.map(fn);\n },\n };\n\n return createFnWithPropsExplicit(fn, props) as unknown as Mapper<\n TFrom,\n TTo\n >;\n}\n\nexport function createObjectMap<\n TFrom extends AnyObject,\n TTo extends AnyObject,\n>() {\n return <TMap extends ObjectMap<TFrom, TTo>>(map: TMap) => {\n const fn: ObjectMapConversion<TFrom, TTo, TMap> = (input) => {\n return (Object.keys(map) as unknown as readonly (keyof TMap)[]).reduce(\n (acc, key) => {\n const val = map[key];\n return {\n ...acc,\n [key]: isFunction(val)\n ? val(input)\n : val,\n };\n },\n {} as ReturnType<ObjectMapConversion<TFrom, TTo, TMap>>,\n );\n };\n\n return fn as ObjectMapConversion<TFrom, TTo, TMap>;\n };\n}\n\nexport function createMapper<\n TFrom extends AnyObject,\n TTo extends AnyObject,\n>() {\n return <TFn extends <TInput extends TFrom>(cb: TInput) => {\n [K in keyof TInput]: TTo\n }>(\n fn: TFn,\n ) => {\n return asMapper<TFrom, TTo, TFn>(fn);\n };\n}\n","import type {\n MergeObjects,\n Narrowable,\n NarrowObject,\n} from \"inferred-types/types\";\n\n/**\n * merge two objects while preserving narrow types\n */\nexport function mergeObjects<\n TDefault extends NarrowObject<D>,\n TOverride extends NarrowObject<O>,\n D extends Narrowable,\n O extends Narrowable,\n>(\n defVal: TDefault,\n override: TOverride,\n) {\n return {\n ...defVal,\n ...override,\n } as unknown as MergeObjects<TDefault, TOverride>;\n}\n","/**\n * **isUndefined**(value)\n *\n * Type guard which determines whether a type is undefined or not.\n */\nexport function isUndefined(value: unknown): value is undefined {\n return (typeof value === \"undefined\");\n}\n","import type { MergeScalars, Scalar } from \"inferred-types/types\";\nimport { isUndefined } from \"../type-guards/isUndefined\";\n\n/**\n * **mergeScalars**(a,b)\n *\n * The value of scalar `b` _overrides_ that of `a` unless `b` is\n * undefined.\n */\nexport function mergeScalars<\n A extends Scalar | undefined,\n B extends Scalar | undefined,\n>(a: A, b: B) {\n return (isUndefined(b) ? a : b) as MergeScalars<A, B>;\n}\n","import type { MergeTuples, Narrowable } from \"inferred-types/types\";\n\n/**\n * **mergeTuples**(a,b)\n *\n * Replaces values in `a` with `b` unless `b` is _undefined_. Also, if\n * `a` has more elements than `b` then these extra elements will be\n * appended to the end.\n */\nexport function mergeTuples<A extends readonly Narrowable[], B extends readonly Narrowable[]>(a: A, b: B): MergeTuples<A, B> {\n return (\n b.length > a.length\n ? b.map((v, idx) => v !== undefined ? v : a[idx])\n : [...b, ...a.slice(b.length)].map((v, idx) => v !== undefined ? v : a[idx])\n ) as unknown as MergeTuples<A, B>;\n}\n","/**\n * **never**(val)\n *\n * You can pass a value into this utility and it's runtime type\n * will be unchanged but it's _type_ will be converted to `never`.\n *\n * **Related:** if you prefer to keep runtime and type system in sync\n * there is also the `Never` constant which can be used.\n */\nexport function never(val: unknown): never {\n return val as never;\n}\n","import type { Narrowable } from \"inferred-types/types\";\n\n/**\n * **optional**(value)\n *\n * A function which takes the value `T` and widens it to include\n * a union with _undefined_.\n */\nexport function optional<\n T extends Narrowable,\n>(value: T) {\n return value as T | undefined;\n}\n\n/**\n * **orNull**`(value)`\n *\n * widens the type for the value passed in to be whatever type it\n * currently is _in union with_ `null`.\n */\nexport function orNull<T extends Narrowable>(value: T) {\n return value as T | null;\n}\n\n/**\n * **optionalOrNull**`(value)`\n *\n * widens the type for the value passed in to be whatever type it\n * currently is _in union with_ `null and `undefined`.\n *\n * **Related:** `optional()`, `orNull()`\n */\nexport function optionalOrNull<T extends Narrowable>(value: T) {\n return value as T | null | undefined;\n}\n","import type { StripSurround, Trim } from \"inferred-types/types\";\nimport { stripLeading, stripTrailing } from \"inferred-types/runtime\";\n\n/**\n * **stripParenthesis**`(val)`\n *\n * A runtime utility which strips leading and trailing whitespace as well\n * as any leading or trailing parenthesis characters.\n */\nexport function stripParenthesis<\n T extends string,\n>(val: T) {\n return stripTrailing(stripLeading(val.trim(), \"(\"), \")\").trim() as unknown as Trim<StripSurround<Trim<T>, \"(\" | \")\">>;\n}\n","import type {\n AnyObject,\n Filter,\n HandleDoneFn,\n Narrowable,\n NarrowObject,\n SKeys,\n ToKv,\n} from \"inferred-types/types\";\nimport { handleDoneFn, keysOf } from \"inferred-types/runtime\";\n\ntype PushTop<\n TNatural extends readonly string[],\n TTop extends readonly string[],\n> = [\n ...TTop,\n ...Filter<TNatural, TTop[number]>,\n];\n\ntype PushBottom<\n TNatural extends readonly string[],\n TBot extends readonly string[],\n> = [\n ...Filter<TNatural, TBot[number]>,\n ...TBot,\n];\n\ntype Always<O> = O extends readonly string[]\n ? readonly (O[number] & string)[]\n : readonly string[];\n\ninterface SortApi<\n O extends readonly string[],\n> {\n order: O;\n toTop: <TTop extends Always<O>>(\n ...keys: TTop\n ) => SortApi<PushTop<O, TTop>>;\n toBottom: <TBot extends Always<O>>(\n ...keys: TBot\n ) => SortApi<PushBottom<O, TBot>>;\n done: () => O;\n}\n\nexport type ToKeyValueSort<O extends readonly string[]> = <\n TCb extends SortApi<O>,\n>(cb: TCb\n) => unknown;\n\ntype Returns<\n T extends AnyObject,\n S extends ToKeyValueSort<SKeys<T>> | undefined,\n> = S extends undefined\n ? ToKv<T>\n : S extends ToKeyValueSort<SKeys<T>>\n ? HandleDoneFn<ReturnType<S>> extends readonly (keyof T & string)[]\n ? ToKv<T, HandleDoneFn<ReturnType<S>>>\n : never\n : never;\n\nfunction sortKeyApi<O extends readonly string[]>(order: O): SortApi<O> {\n return {\n order,\n toTop: <T extends readonly (O[number] & string)[]>(...keys: T) => sortKeyApi(\n [\n ...keys,\n ...order.filter(i => !keys.includes(i)),\n ],\n ) as SortApi<PushTop<O, T>>,\n toBottom: <T extends readonly (O[number] & string)[]>(...keys: T) => sortKeyApi(\n [\n ...order.filter(i => !keys.includes(i)),\n ...keys,\n ],\n ) as SortApi<PushBottom<O, T>>,\n done: () => order,\n };\n}\n\n/**\n * **toKeyValue**`(obj)` -> tuple\n *\n * Converts an object into a tuple of `KeyValue` objects.\n *\n * - a Tuple representation benefits from two main things:\n * - ensured **order**\n * - it is an **iterable** structure\n * - narrow types are preserved whereever possible\n * - you may optionally position certain key's at the \"top\"\n * or \"bottom\" of the stack by using the sort callback.\n *\n * ```ts\n * // [\n * // { key: \"id\", value: 123},\n * // { key: \"foo\", value: 1 },\n * // { key: \"bar\", value: 2 },\n * // ]\n * const rec = toKeyValue({foo: 1, bar: 2, id: 123 }, o => o.toTop(\"id\"));\n * ```\n */\nexport function toKeyValue<\n T extends NarrowObject<N> | AnyObject,\n N extends Narrowable,\n S extends ToKeyValueSort<SKeys<T>> | undefined,\n>(\n obj: T,\n sort?: S,\n): Returns<T, S> {\n let keys = keysOf(obj) as readonly string[];\n const tuple: any[] = [];\n\n if (sort) {\n keys = handleDoneFn(sort(sortKeyApi(keys as any)));\n }\n\n for (const k of keys) {\n tuple.push({ key: k, value: obj[k as keyof typeof obj] });\n }\n\n return tuple as Returns<T, S>;\n}\n","import type { Narrowable, Scalar, ToNumber } from \"inferred-types/types\";\n\nfunction convertScalar<T extends Narrowable>(val: T) {\n switch (typeof val) {\n case \"number\":\n return val;\n case \"string\":\n return Number(val);\n case \"boolean\":\n return val ? 1 : 0;\n default:\n throw new Error(`${typeof val} is an invalid scalar type to convert to a number!`);\n }\n}\nconst convertList = <T extends readonly Scalar[]>(val: T) => val.map(i => convertScalar(i));\n\n/**\n * **toNumber**(value)\n *\n * Runtime utility which converts a value into a _numeric_ variant:\n *\n * - for scalars (and objects) it will try to convert to number but otherwise returns `NaN` to runtime and `never` to type system\n * - for arrays it will iterate over each element and try to convert to a number like above\n */\nexport function toNumber<\n T extends Narrowable,\n>(value: T): ToNumber<T> {\n return (\n Array.isArray(value)\n ? convertList(value)\n : convertScalar(value)\n ) as unknown as ToNumber<T>;\n}\n","import type { TwModifier } from \"inferred-types/types\";\nimport { TW_MODIFIERS } from \"inferred-types/constants\";\nimport { isTailwindModifier } from \"inferred-types/runtime\";\n\nconst MODS = TW_MODIFIERS.map(i => `${i}:`);\n\n/**\n * Extracts all the modifiers found on the passed in string and\n * removes them.\n *\n * **Related:** `getTailwindModifiers`\n */\nexport function removeTailwindModifiers(val: string): string {\n return MODS.some(i => val.startsWith(i))\n ? removeTailwindModifiers(val.replace(MODS.find(i => val.startsWith(i)) as string, \"\"))\n : val;\n}\n\n/**\n * Extracts an array of Tailwind Modifiers found at the start of a Tailwind string.\n */\nexport function getTailwindModifiers(val: string): TwModifier[] {\n return val.split(\":\").filter(i => isTailwindModifier(i));\n}\n","import type { Narrowable } from \"inferred-types/types\";\n\n/**\n * **union**(options) => (value)\n *\n * A higher order function which creates a union type with a runtime value set.\n *\n * **Related:** `unionize`\n */\nexport function union<\n TOptions extends readonly Narrowable[],\n>(..._options: TOptions) {\n return <TValue extends TOptions[number]>(\n value: TValue,\n ): TValue & TOptions[number] => value as TValue & TOptions[number];\n}\n","/**\n * **unionize**(value,inUnionWith)\n *\n * Takes a runtime **value** and modifies it's type to be a union with\n * the type of `inUnionWith` parameter (but does not change the actual\n * runtime value).\n */\nexport function unionize<T, U>(value: T, _inUnionWith: U): T | U {\n return value as T | U;\n}\n","import { WHITESPACE_CHARS } from \"inferred-types/constants\";\nimport { asChars } from \"../type-conversion\";\nimport { isString } from \"./isString\";\n\n/**\n * **hasWhiteSpace**`(val)`\n *\n * Type guard which checks whether a string has a any whitespace characters in it\n */\nexport function hasWhiteSpace<T>(val: T): val is T {\n return isString(val) && asChars(val).some(c => WHITESPACE_CHARS.includes(c as any));\n}\n","import type { Narrowable } from \"inferred-types/types\";\nimport { isNumber, isString } from \"inferred-types/runtime\";\n\nexport type EndingWithTypeGuard<T extends string> = <\n V extends Narrowable,\n>(val: V\n) => val is V & `${string}${T}`;\n\n/**\n * **endsWith**(endingIn) => (val)\n *\n * Creates a TypeGuard which checks whether a value _ends with_ a\n * particular string literal.\n */\nexport function endsWith<\n T extends string,\n>(endingIn: T): EndingWithTypeGuard<T> {\n return <V extends Narrowable>(val: V): val is V & `${string}${T}` => {\n return isString(val)\n ? !!val.endsWith(endingIn)\n : isNumber(val)\n ? !!String(val).endsWith(endingIn)\n : false;\n };\n}\n","import type {\n IsUnion,\n Narrowable,\n} from \"inferred-types/types\";\n\n/**\n * A TypeGuard which was generated from `isEqual()` runtime util.\n */\nexport type EqualTo<\n _A,\n> = <TValue extends Narrowable>(\n value: TValue\n) => boolean;\n\ntype Returns<\n TVal,\n TBase extends readonly Narrowable[],\n> = IsUnion<TVal> extends true\n ? TVal & TBase[number]\n\n : TVal extends TBase[number]\n ? TVal\n : IsUnion<TVal> extends true\n ? TVal\n : never;\n\nfunction compare<\n TBase extends readonly Narrowable[],\n>(base: TBase) {\n return <TVal extends Narrowable>(\n value: TVal,\n ): value is Returns<TVal, TBase> => {\n return base.includes(value);\n };\n}\n\n/**\n * **isEqual**(compareTo)(value)\n *\n * Higher order type guard to detect whether two values are equal\n */\nexport function isEqual<\n TBase extends readonly N[],\n N extends Narrowable,\n>(...base: TBase) {\n return compare(base);\n}\n","import {\n isArray,\n isEqual,\n isObject,\n isString,\n keysOf,\n} from \"inferred-types/runtime\";\n\n/**\n * **ifLength**(len) => (value) => boolean\n *\n * Higher order type guard which provides a type-aware check on the\n * \"length\" of some unit:\n *\n * - **arrays** - the number of elements in the array\n * - **objects** - the number of keys in the object\n * - **string** - the length of the string\n *\n * All other types return `false`\n */\nexport function isLength<\n TValue,\n TLen extends number,\n>(value: TValue, len: TLen) {\n return isArray(value)\n ? !!isEqual((value as unknown[]).length)(len)\n : isString(value)\n ? !!isEqual(value.length)(len)\n : isObject(value)\n ? !!isEqual(keysOf(value))(len)\n : false;\n}\n","import type { ConvertTypeOf, GetTypeOf } from \"inferred-types/types\";\n\n/**\n * **isSameTypeOf**(base, compare)\n *\n * A type guard which validates that `base` and `compare` are the same \"type\"\n * defined by the runtime `typeof` operator.\n *\n * **Note:** if either `TBase` or `TCompare` are\n *\n * **Related:** `IsSameType`\n */\nexport function isSameTypeOf<TBase>(base: TBase) {\n return <TCompare>(compare: TCompare): compare is TCompare & ConvertTypeOf<GetTypeOf<TBase>> => {\n return typeof base === typeof compare;\n };\n}\n","import type {\n HandleDoneFn,\n ShapeCallback,\n} from \"inferred-types/types\";\nimport {\n isArray,\n isDoneFn,\n isSameTypeOf,\n isShape,\n ShapeApiImplementation,\n} from \"inferred-types/runtime\";\n\ntype FromDefn<\n T extends readonly ShapeCallback[],\n> = {\n [K in keyof T]: HandleDoneFn<ReturnType<T[K]>>\n};\n\nexport function isTuple<TDefn extends readonly ShapeCallback[]>(...tuple: TDefn) {\n const results = tuple\n .map(i => i(ShapeApiImplementation))\n .map(i => isDoneFn(i) ? (i as any).done() : i);\n\n return <T>(v: T): v is T & FromDefn<TDefn> => {\n return isArray(v)\n && v.length === results.length\n && results.every(isShape)\n && v.every((item, idx) => isSameTypeOf(results[idx])(item));\n };\n}\n","import type { ConvertTypeOf, TypeOf } from \"inferred-types/types\";\n\nexport type TypeOfTypeGuard<\n TType extends TypeOf,\n> = <TValue>(value: TValue) => value is TValue & ConvertTypeOf<TType>;\n\n/**\n * **isTypeOf**(type)(value)\n *\n * Higher order type guard which matches against the runtime operator's `typeof` command.\n *\n * - You first partially apply by specifying the `typeof`\n * - The type guard is then returned based on the type.\n */\nexport function isTypeOf<\n TType extends TypeOf,\n>(type: TType): TypeOfTypeGuard<TType> {\n return <TValue>(value: TValue): value is TValue & ConvertTypeOf<TType> => {\n return typeof value === type;\n };\n}\n","import type { Narrowable } from \"inferred-types/types\";\nimport { isNumber, isString } from \"inferred-types/runtime\";\n\n/**\n * **StartingWithTypeGuard**`<literal>`\n *\n * A type guard built using the `startsWith` utility.\n */\nexport type StartingWithTypeGuard<TStartsWith extends string> = <\n TValue extends Narrowable,\n>(val: TValue\n) => val is TValue & `${TStartsWith}${string}`;\n\n/**\n * **startsWith**(startingWith) => (val)\n *\n * A higher-level builder pattern which is used to create a TypeGuard\n * which checks whether a string _starts with_ another substring.\n *\n * ```ts\n * // StartingWithTypeGuard<\"foo\">\n * const foo = startsWith(\"foo\");\n * // true\n * const yup = foo(\"foobar\");\n * // false\n * const nope = foo(\"bar\");\n * // boolean\n * const weWillSee = foo(string);\n * ```\n */\nexport function startsWith<\n TStartsWith extends string,\n>(startingWith: TStartsWith): StartingWithTypeGuard<TStartsWith> {\n return <\n TValue extends Narrowable,\n >(val: TValue): val is TValue & `${TStartsWith}${string}` => {\n return (\n isString(val)\n ? !!val.startsWith(startingWith)\n : isNumber(val)\n ? !!String(val).startsWith(startingWith)\n : false\n );\n };\n}\n","import type { AsHtmlComponentTag } from \"inferred-types/types\";\nimport { toKebabCase, toPascalCase, validHtmlAttributes } from \"inferred-types/runtime\";\n\n/**\n * **isHtmlComponentTag**`(...names)`\n *\n * A type guard that validates if a value matches a valid HTML component tag.\n * Supports both `kebab-case` and `PascalCase` component names.\n *\n * Attributes are validated using `areAttributesValid()`.\n */\nexport function isHtmlComponentTag<T extends readonly string[]>(...names: T) {\n return <V>(val: V): val is V & AsHtmlComponentTag<T[number]> => {\n if (typeof val !== \"string\")\n return false;\n\n const trimmedVal = val.trim();\n\n // Match opening, closing, and self-closing tags\n const tagRegex = /^<\\/?([\\w-]+)(.*?)>$/;\n const match = tagRegex.exec(trimmedVal);\n\n if (!match) {\n return false; // Not a valid tag structure\n }\n\n const [, tagName, attributes] = match;\n const isClosingTag = trimmedVal.startsWith(\"</\");\n\n const isKebabCase = /^[a-z][a-z0-9-]*$/.test(tagName);\n const isPascalCase = /^[A-Z][a-zA-Z0-9]*$/.test(tagName);\n\n const normalizedKebabCase = toKebabCase(tagName);\n const normalizedPascalCase = toPascalCase(tagName);\n\n const isValidName = names.some(\n name =>\n (isKebabCase && normalizedKebabCase === toKebabCase(name))\n || (isPascalCase && normalizedPascalCase === toPascalCase(name)),\n );\n\n if (!isValidName) {\n return false;\n }\n\n if (isClosingTag) {\n return attributes.trim() === \"\";\n }\n\n return validHtmlAttributes(attributes);\n };\n}\n","import { HTML_ATOMIC_TAGS, HTML_BLOCK_TAGS } from \"inferred-types/constants\";\n\n/**\n * Tests whether the passed in `val` contains some HTML-like tags in it.\n *\n * **Related:** `hasValidHtml()`, `isHtml()`, `hasValidHtml()`\n */\nexport function hasHtml(val: unknown): val is string {\n if (typeof val !== \"string\")\n return false;\n\n const htmlTagRegex = /.*<(\\w+)>.*/;\n\n return !!htmlTagRegex.test(val);\n}\n\n/**\n * Tests that the passed in string _does_ have HTML tags in it and that\n * those tags are valid HTML tags.\n *\n * **Related:** `hasHtml()`, `isHtml()`, `isValidHtml()`\n */\nexport function hasValidHtml(val: unknown): val is string {\n if (typeof val !== \"string\")\n return false;\n\n const trimmedVal = val.trim();\n\n // Match all HTML tags (opening, closing, and self-closing)\n\n const tagRegex = /<\\/?(\\w+)([^>]*)>/g;\n\n // Stack for tracking opening tags\n const stack: string[] = [];\n let match: RegExpExecArray | null;\n\n match = tagRegex.exec(trimmedVal);\n while (match !== null) {\n const [, tagName] = match;\n const isClosingTag = match[0].startsWith(\"</\");\n const isAtomicTag = HTML_ATOMIC_TAGS.includes(tagName as any);\n\n if (isAtomicTag) {\n // Self-closing atomic tags require no stack handling\n match = tagRegex.exec(trimmedVal);\n continue;\n }\n\n if (isClosingTag) {\n // Validate and pop from stack for closing tags\n const lastTag = stack.pop();\n if (lastTag !== tagName) {\n return false; // Mismatched or unexpected closing tag\n }\n }\n else {\n // Add opening tags to stack if they are valid\n if (!HTML_BLOCK_TAGS.includes(tagName as any)) {\n return false; // Invalid tag name\n }\n stack.push(tagName);\n }\n\n match = tagRegex.exec(trimmedVal);\n }\n\n // If the stack is not empty, there are unmatched opening tags\n return stack.length === 0 && tagRegex.test(trimmedVal);\n}\n","import type {\n AsHtmlTag,\n Html__AtomicTag,\n Html__BlockTag,\n} from \"inferred-types/types\";\nimport {\n HTML_ATOMIC_TAGS,\n HTML_BLOCK_TAGS,\n} from \"inferred-types/constants\";\nimport { isString, validHtmlAttributes } from \"inferred-types/runtime\";\n\n/**\n * tests whether the `val` passed in is the **name** of a valid\n * HTML block tag (e.g., \"div\", \"span\", etc.)\n *\n * **Note:** this will _not_ match with leading or trailing whitespace\n */\nexport function isValidBlockTag(val: unknown): val is string {\n return isString(val) && HTML_BLOCK_TAGS.includes(val.toLowerCase() as any);\n}\n\n/**\n * test whetehr the `val` pass in is a the **name** of a valid HTML\n * atomic tag (e.g., \"br\", \"meta\", etc.)\n *\n * **Note:** this will _not_ match with leading or trailing whitespace\n */\nexport function isValidAtomicTag(val: unknown): val is string {\n return isString(val) && HTML_ATOMIC_TAGS.includes(val.toLowerCase() as any);\n}\n\n/**\n * **isValidHtmlTag**`(...tags)(val)`\n *\n * A higher order type guard which tests that the `val` passed in\n * is a valid HTML tag (block or atomic) or the types specified.\n *\n * - if it's an openning or atomic tag then the tag name is validated\n * but so are the characters between the tag name and the close.\n * - if it's a closing tag then NO characters are allowed beyond\n * that of the tag and the brackets.\n */\nexport function isValidHtmlTag<\n T extends readonly (Html__BlockTag | Html__AtomicTag)[],\n>(...tags: T) {\n return <V>(val: V): val is V & AsHtmlTag<V, T[number]> => {\n if (typeof val !== \"string\")\n return false;\n\n const trimmedVal = val.trim();\n\n // Match opening, closing, and atomic tags\n const tagRegex = /^<\\/?(\\w+)(.*?)>$/;\n const match = tagRegex.exec(trimmedVal);\n\n if (!match) {\n return false; // Not a valid HTML tag structure\n }\n\n const [, tagName, attributes] = match;\n const normalizedTagName = tagName.toLowerCase(); // Normalize to lowercase\n const isClosingTag = trimmedVal.startsWith(\"</\");\n const isAtomicTag = HTML_ATOMIC_TAGS.includes(normalizedTagName as any);\n const isBlockTag = HTML_BLOCK_TAGS.includes(normalizedTagName as any);\n\n if (\n // Validate tag name is within the provided `tags` scope\n !tags.map(t => t.toLowerCase()).includes(normalizedTagName as any)\n ) {\n return false;\n }\n\n if (isClosingTag) {\n return attributes.trim() === \"\" && !isAtomicTag;\n }\n\n if (isAtomicTag) {\n return attributes.trim() === \"\" || validHtmlAttributes(attributes);\n }\n\n if (isBlockTag) {\n return validHtmlAttributes(attributes);\n }\n\n return false;\n };\n}\n","import { HTML_ATOMIC_TAGS, HTML_BLOCK_TAGS } from \"inferred-types/constants\";\n\n/**\n * **isHtml**`(val)`\n *\n * Tests whether the passed in `val` is an HTML string which:\n *\n * - starts and ends with an HTML-like tag\n * - leading and trailing whitespace is ignored\n */\nexport function isHtml(val: unknown): val is string {\n if (typeof val !== \"string\")\n return false;\n\n const trimmedVal = val.trim();\n // eslint-disable-next-line regexp/optimal-quantifier-concatenation\n const fullHtmlRegex = /^<(\\w+).*<\\/\\1>$/;\n\n return fullHtmlRegex.test(trimmedVal);\n}\n\n/**\n * **isValidHtml**`(val)`\n *\n * Tests whether the passed in `val` is an HTML string which:\n *\n * - starts and ends with a valid HTML tag\n * - all block tags are _balanced_ between open and close variants\n * - leading and trailing whitespace is ignored in the match\n */\nexport function isValidHtml(val: unknown): val is string {\n if (typeof val !== \"string\")\n return false;\n\n const trimmedVal = val.trim();\n\n // Match all HTML tags (opening, closing, and self-closing)\n const tagRegex = /<\\/?(\\w+)([^>]*)>/g;\n\n // Stack for tracking opening tags\n const stack: string[] = [];\n\n let match: RegExpExecArray | null = tagRegex.exec(trimmedVal);\n while (match !== null) {\n const [, tagName] = match;\n const isClosingTag = match[0].startsWith(\"</\");\n const isAtomicTag = HTML_ATOMIC_TAGS.includes(tagName as any);\n\n if (isAtomicTag) {\n // Self-closing atomic tags require no stack handling\n match = tagRegex.exec(trimmedVal);\n continue;\n }\n\n if (isClosingTag) {\n // Validate and pop from stack for closing tags\n const lastTag = stack.pop();\n if (lastTag !== tagName) {\n return false; // Mismatched or unexpected closing tag\n }\n }\n else {\n // Add opening tags to stack if they are valid\n if (!HTML_BLOCK_TAGS.includes(tagName as any)) {\n return false; // Invalid tag name\n }\n stack.push(tagName);\n }\n\n // Reassign match at the end of each iteration\n match = tagRegex.exec(trimmedVal);\n }\n\n // If the stack is not empty, there are unmatched opening tags\n const isBalanced = stack.length === 0;\n\n // eslint-disable-next-line regexp/optimal-quantifier-concatenation\n const validStructureRegex = /^<(\\w+)[^>]*>[\\s\\S]*<\\/\\1>$/;\n\n return isBalanced && validStructureRegex.test(trimmedVal);\n}\n","import { isObject } from \"../isObject\";\n\n/**\n * **isHtmlElement**`(val)`\n *\n * Type guard which checks whether `val` is an `HtmlElement`.\n */\nexport function isHtmlElement(val: unknown): val is HTMLElement {\n return isObject(val) && \"attributes\" in val && \"firstElementChild\" in val && \"innerHTML\" in val;\n}\n","/**\n * type guard which validates that `val` is a string which could represent\n * the attributes in an HTML tag.\n */\nexport function validHtmlAttributes(val: unknown): val is string {\n if (typeof val !== \"string\")\n return false;\n\n // Basic checks for attributes: no unbalanced quotes, no `>` within attributes\n const quoteRegex = /[\"']/g;\n const unmatchedQuotes = (val.match(quoteRegex)?.length || 0) % 2 !== 0;\n\n // Check for invalid attribute assignment (e.g., id=)\n const invalidAssignment = /(\\w+=)(?=\\s|>|$)/.test(val);\n\n return !val.includes(\">\") && !unmatchedQuotes && !invalidAssignment;\n}\n","import type { Alpha, AlphaChar, Narrowable } from \"inferred-types/types\";\nimport { ALPHA_CHARS } from \"inferred-types/constants\";\nimport { isString, split } from \"inferred-types/runtime\";\n\n/**\n * **isAlpha**(value)\n *\n * Type guard which ensures that the given value is a string literal with only\n * alphabetic characters.\n */\nexport function isAlpha<T extends Narrowable>(value: T): value is T & Alpha<T> {\n return isString(value) && split(value).every(v => ALPHA_CHARS.includes(v as AlphaChar));\n}\n","/**\n * **isArray**(value)\n *\n * Type guard to detect if the type is an array (readonly or regular)\n */\nexport function isArray(value: unknown): value is unknown[] {\n return Array.isArray(value) === true;\n}\n","/**\n * **isBoolean**(value)\n *\n * Type guard which validates that type is a boolean value.\n *\n * **Related:** `isBooleanLike()`\n */\nexport function isBoolean(value: unknown): value is boolean {\n return typeof value === \"boolean\";\n}\n","import type { BooleanLike } from \"inferred-types/types\";\nimport { isBoolean } from \"./isBoolean\";\nimport { isString } from \"./isString\";\n\n/**\n * **isBooleanLike**`(val)`\n *\n * A type guard which checks whether `val` is \"boolean like; meaning either\n * a boolean value or a string representation of a boolean value.\n */\nexport function isBooleanLike(val: unknown): val is BooleanLike {\n return (\n isBoolean(val) || (\n isString(val) && [\"true\", \"false\", \"boolean\"].includes(val)\n )\n );\n}\n","import type { Constant } from \"inferred-types/constants\";\nimport { isObject } from \"inferred-types/runtime\";\n\n/**\n * **isConstant**`(val)`\n *\n * Type guard which checks to see if it is of type\n * `Constant<T>`.\n */\nexport function isConstant<\n K extends string,\n>(value: unknown): value is Constant<K> {\n return !!(isObject(value)\n && \"_type\" in value\n && \"kind\" in value\n && value._type === \"Constant\");\n}\n","import type { Dictionary, IsObject } from \"inferred-types/types\";\nimport { isObject } from \"inferred-types/runtime\";\n\ntype ContainerType<T> = T extends any[]\n ? any[]\n : IsObject<T> extends true\n ? Dictionary\n : T extends Map<any, any>\n ? Map<any, any>\n : T extends Set<any>\n ? Set<any>\n : T extends WeakMap<any, any>\n ? WeakMap<any, any>\n : object;\n\nexport function isContainer<T>(value: T): value is T & ContainerType<T> {\n return !!(Array.isArray(value) || isObject(value));\n}\n","import type { CssAspectRatio } from \"inferred-types/types\";\nimport { isString } from \"./isString\";\n\nconst tokens = [\n \"1\",\n \"inherit\",\n \"initial\",\n \"revert\",\n \"revert-layer\",\n \"unset\",\n \"auto\",\n];\n\nconst isRatio = (val: string) => /\\d{1,4}\\s*\\/\\s*\\d{1,4}/.test(val);\n\n/**\n * Type guard which tests whether the passed in value is a valid CSS Aspect\n * Ratio value.\n */\nexport function isCssAspectRatio<T>(val: T): val is T & CssAspectRatio {\n return isString(val) && val.split(/\\s+/).every(i => tokens.includes(i) || isRatio(i));\n}\n","import type { Csv } from \"inferred-types/types\";\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * **isCsv**`(val)`\n *\n * type guard which validates that `val` is a CSV based\n * string.\n */\nexport function isCsv(val: unknown): val is Csv {\n return isString(val) && val.includes(\",\") && !val.startsWith(\",\");\n}\n","/**\n * **isDefined**(value)\n *\n * Type guard which determines whether a type is _defined_ or not\n * (aka, whether the value is **not** _undefined_).\n */\nexport function isDefined<T>(value: T): value is Exclude<T, undefined> {\n return value !== undefined;\n}\n","import type { AsDoneFn } from \"inferred-types/types\";\nimport { isObject } from \"inferred-types/runtime\";\n\n/**\n * **isDoneFn**(val)\n *\n * A type guard which checks whether the value passed in has a `done`\n * property which is a function.\n */\nexport function isDoneFn<T>(val: T): val is AsDoneFn<T> {\n return isObject(val) && \"done\" in val && typeof val.done === \"function\";\n}\n","import type { Email } from \"inferred-types/types\";\nimport { LOWER_ALPHA_CHARS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * **isEmail**`(val)`\n *\n * type guard which validates that the value passed in\n * in the correct shape to be an email address. It checks:\n *\n * 1. that leads with alphabetic char\n * 2. has a `@` character\n * 3. has at least one `.` char after the `@`\n * 4. top-level domain has at least 2 characters\n */\nexport function isEmail(val: unknown): val is Email {\n if (!isString(val)) {\n return false;\n }\n const parts: string[] = val?.split(\"@\");\n const domain = parts[1]?.split(\".\");\n const tld = domain ? domain.pop() as string : \"\";\n const firstChar = val[0].toLowerCase();\n\n return isString(val) && (\n LOWER_ALPHA_CHARS.includes(firstChar as any)\n && parts.length === 2\n && domain.length >= 1\n && tld.length >= 2\n );\n}\n","import type { Empty, UnionFilter } from \"inferred-types/types\";\nimport {\n isArray,\n isNull,\n isObject,\n isString,\n isUndefined,\n} from \"inferred-types/runtime\";\n\n/**\n * **isEmpty**(val)\n *\n * type guard which validates that `val` is an `Empty` value:\n *\n * - `null` or `undefined`\n * - empty string\n * - empty array\n * - empty object\n */\nexport function isEmpty<T>(val: T): val is T & Empty {\n return isUndefined(val)\n || isNull(val)\n || (isString(val) && val.length === 0)\n || (isObject(val) && Object.keys(val).length === 0)\n || (isArray(val) && val.length === 0);\n}\n\ntype NotEmpty<T> = UnionFilter<T, Empty> extends T\n ? UnionFilter<T, Empty>\n : T;\n\n/**\n * **isNotEmpty**(val)\n *\n * type guard which validates that `val` is **not** an `Empty` value:\n *\n * - `null` or `undefined`\n * - empty string\n * - empty array\n * - empty object\n */\nexport function isNotEmpty<T>(val: T): val is NotEmpty<T> {\n return !(\n isUndefined(val)\n || isNull(val)\n || (isString(val) && val.length === 0)\n || (isObject(val) && Object.keys(val).length === 0)\n || (isArray(val) && (\n val?.length === 0 || val?.length === undefined\n ))\n );\n}\n","import type { ErrorCondition } from \"inferred-types/types\";\nimport { isObject } from \"inferred-types/runtime\";\n\n/**\n * **isErrorCondition**(value)\n *\n * Type guard which checks whether the given value is a `ErrorCondition` type.\n */\nexport function isErrorCondition<\n TKind extends string | null,\n T extends ErrorCondition<TKind extends null ? string : TKind>,\n>(value: unknown | T, kind: TKind = null as TKind): value is T {\n return isObject(value) && \"__kind\" in value && value.__kind === \"ErrorCondition\" && \"kind\" in value\n ? kind !== null\n ? value.kind === kind\n : true\n : false;\n}\n","export function isFalse(i: unknown): i is false {\n return (typeof i === \"boolean\" && !i);\n}\n","import type { FalsyValue, Narrowable } from \"inferred-types/types\";\nimport { FALSY_VALUES } from \"inferred-types/constants\";\n\n/**\n * **isFalsy**()\n *\n * Creates a TypeGuard which checks whether a value is considered _falsy_ in\n * Javascript.\n */\nexport function isFalsy<V extends Narrowable>(val: V): val is V & FalsyValue {\n return FALSY_VALUES.includes(val as any);\n}\n","import type {\n AsNarrowingFn,\n IsLiteral,\n SimpleToken,\n SimpleType,\n Tuple,\n TypedFunction,\n} from \"inferred-types/types\";\n\n/**\n * **isFnWithParams**(input, [...params | count])\n *\n * Type guard which checks whether a give variable is a function\n * which contains at least one parameter.\n *\n * - the optional second parameter may be used to express the **types** of\n * the expected parameters or just the expected **count** of parameters\n * - if you set the parameter types, it will check that the\n * correct amount of parameters are set but can only _assume_ the types of\n * the parameters are as you have expressed\n */\nexport function isFnWithParams<T, P extends (readonly SimpleToken[]) | [number]>(\n input: T,\n ...params: P\n): input is T & AsNarrowingFn<\n \"length\" extends keyof T\n ? T[\"length\"] extends 0\n ? IsLiteral<P[\"length\"]> extends true\n ? Tuple<any, P[\"length\"]>\n : [any, ...any[]]\n : [any, ...any[]]\n : P extends readonly SimpleToken[]\n ? {\n [K in keyof P]: SimpleType<P[K]>\n }\n : P extends [number]\n ? Tuple<any, P[0]>\n : never,\n T extends TypedFunction ? ReturnType<T> : unknown\n> {\n return params.length === 0\n ? typeof input === \"function\" && input?.length > 0\n : typeof input === \"function\" && input?.length === params.length;\n}\n","import { asChars } from \"../type-conversion/asChars\";\nimport { isNumericString } from \"./isNumericString\";\nimport { isString } from \"./isString\";\n\n/**\n * **isHexadecimal**`(val)`\n *\n * Type guard which checks whether all of the characters in the given string\n * are hexadecimal characters.\n */\nexport function isHexadecimal<T>(val: T): val is T {\n return isString(val)\n && asChars(val).every(i => isNumericString(i) || [\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"].includes(i.toLowerCase()));\n}\n","import type { AnyObject, Indexable } from \"inferred-types/types\";\nimport { keysOf } from \"inferred-types/runtime\";\n\n/**\n * **isIndexable**(value)\n *\n * Type guard which validates that the value passed in can be _indexed_\n */\nexport function isIndexable<T>(value: T): value is T & Indexable {\n return !!(Array.isArray(value) || (typeof value === \"object\" && keysOf(value as AnyObject).length > 0));\n}\n","import type { InlineSvg } from \"inferred-types/types\";\nimport { isString } from \"./isString\";\n\n/**\n * **isInlineSvg**`(val)`\n *\n * Type guard which tests whether the passed in value is both a string\n * and also appears to be an inline SVG image.\n */\nexport function isInlineSvg<T>(v: T): v is T & InlineSvg {\n return isString(v) && v.trim().startsWith(`<svg`) && v.trim().endsWith(`</svg>`);\n}\n","/**\n * type guard which tests `val` to see if it's a valid `Set<any>`\n */\nexport function isMap(val: unknown): val is Map<any, any> {\n return val instanceof Map;\n}\n","import { isConstant } from \"inferred-types/runtime\";\n\n/**\n * **isNever**(val)\n *\n * Type guard which checks for the runtime constant `Never`\n * (which also has a _type_ of **never**).\n */\nexport function isNever(val: unknown): val is never {\n return isConstant(val) && val.kind === \"never\";\n}\n","import type { Nothing } from \"inferred-types/types\";\n\nexport function isNothing<T>(val: T): val is T & Nothing {\n return !!(val === null || val === undefined);\n}\n","import type { NotNull } from \"inferred-types/types\";\n\n/**\n * **isNotNull**(value)\n *\n * Type guard which validates the passed in value is **not** the `null` value.\n */\nexport function isNotNull<T>(value: T): value is T & NotNull {\n return (value === null);\n}\n","/**\n * **isNull**(value)\n *\n * Type guard which checks whether a value is null or not.\n *\n * **Related:** `ifNull`\n */\nexport function isNull<T>(value: T): value is T & null {\n return (value === null);\n}\n","/**\n * **isSymbol**(value)\n *\n * Runtime type guard which narrows the passed in type\n * to being a **symbol** when condition is met.\n */\nexport function isSymbol<T>(value: T): value is T & symbol {\n return (typeof value === \"symbol\") as T extends symbol\n ? true\n : false;\n}\n","import type { ObjectKey } from \"inferred-types/types\";\nimport { isString } from \"./isString\";\nimport { isSymbol } from \"./isSymbol\";\n\n/**\n * Type guard which validates that `val` is a valid `ObjectKey`\n */\nexport function isObjectKey(val: unknown): val is ObjectKey {\n return isString(val) || isSymbol(val);\n}\n","import type { PhoneNumber, PhoneNumberWithCountryCode, UsPhoneNumber } from \"inferred-types/types\";\nimport { NUMERIC_CHAR, PHONE_COUNTRY_CODES, WHITESPACE_CHARS } from \"inferred-types/constants\";\nimport { getPhoneCountryCode, isString, retainChars, stripChars } from \"inferred-types/runtime\";\n\n/**\n * **maybePhoneNumber**`(val)`\n *\n * Type guard which validates that a string is in the shape of a phone\n * number.\n *\n * - Only valid characters (numeric, whitespace, `+`, `-`, `.`, and parenthesis)\n * - at least 7 numeric characters, 8 if `+` character used\n * - leading character (after whitespace) must be numeric, `(` or `+`\n *\n * **Related:** `asPhoneNumber()`, `PhoneNumber`, `isPhoneNumber`\n */\nexport function maybePhoneNumber(val: unknown): val is PhoneNumber {\n const svelte: string = String(val).trim();\n const chars: readonly string[] = svelte.split(\"\");\n const numeric: string = retainChars(svelte, ...NUMERIC_CHAR);\n const valid = [\"+\", \"(\", ...NUMERIC_CHAR];\n const nothing: string = stripChars(svelte, ...[\n ...NUMERIC_CHAR,\n ...WHITESPACE_CHARS,\n \"(\",\n \")\",\n \"+\",\n \".\",\n \"-\",\n ]);\n\n return (\n chars.every(i => valid.includes(i))\n && svelte.startsWith(`+`)\n ? numeric.length >= 8\n : svelte.startsWith(`00`)\n ? numeric.length >= 10\n : numeric.length >= 7\n && nothing === \"\"\n );\n}\n\nconst start = PHONE_COUNTRY_CODES.map(i => `+${i[0]} `);\n/**\n * Type guard which validates that `val` starts with a valid\n * country code (although starting whitespace is also allowed).\n */\nexport function hasCountryCode(val: unknown): val is PhoneNumberWithCountryCode {\n if (isString(val)) {\n return start.some(i => val.trimStart().startsWith(i));\n }\n return false;\n}\n\nexport function isUsPhoneNumber(val: unknown): val is UsPhoneNumber {\n if (isString(val)) {\n return maybePhoneNumber(val) && val.trimStart().startsWith(`+1 `);\n }\n return false;\n}\n\n/**\n * **isPhoneNumber**`(val)`\n *\n * Type guard which validates that a string is in the shape of a phone\n * number. This is a MORE strict check than `maybePhoneNumber()` which\n * you may want to use if you're pretty sure numeric looking values\n * are meant to be phone numbers.\n *\n * **Related:** `asPhoneNumber()`, `PhoneNumber`, `maybePhoneNumber`\n */\nexport function isPhoneNumber(val: unknown): val is PhoneNumber {\n if (\n isString(val)\n && maybePhoneNumber(val)\n && [\" \", \"-\", \".\"].some(i => val.includes(i))\n ) {\n const cc = getPhoneCountryCode(val as string);\n const without = cc === \"\"\n ? retainChars((val as string), ...NUMERIC_CHAR)\n : retainChars((val as string).trimStart().replace(`+${cc} `, \"\"), ...NUMERIC_CHAR);\n\n switch (cc) {\n case \"1\":\n return without.length === 10;\n case \"44\":\n return !![10, 11].includes(without.length);\n case \"\":\n return without.length <= 10;\n default:\n return without.length <= 11;\n }\n }\n return false;\n}\n","import type { Tuple } from \"inferred-types/types\";\n\n/**\n * **isReadonlyArray**(value)\n *\n * Type guard to detect if the type is an array (readonly).\n *\n * Note: at runtime we can't discern between a readonly array\n * and a normal one. If author is aware, however, that an array\n * indicates a readonly array then this type-guard will resolve\n * to a cleaner type.\n */\nexport function isReadonlyArray<\n T,\n>(value: T): value is Readonly<Exclude<T, undefined | string | null | boolean | number>> & Tuple {\n return (Array.isArray(value) === true);\n}\n","import type { VueRef } from \"inferred-types/types\";\nimport { isObject } from \"./isObject\";\n\n/**\n * **isRef**(value)\n *\n * Type guard which check whether the passed in value is a VueJS `Ref<T>` value.\n */\nexport function isRef<T>(value: T): value is T & VueRef<T> {\n return isObject(value)\n && (\"value\" in value)\n && Array.from(Object.keys(value)).includes(\"_value\");\n}\n","import type { LikeRegExp } from \"inferred-types/types\";\nimport { isString } from \"./isString\";\n\n/**\n * Type guard that validates the the value passed in is\n * a regular expression.\n *\n * **Related:** `isLikeRegExp`\n */\nexport function isRegExp(val: unknown): val is RegExp {\n return val instanceof RegExp;\n}\n\n/**\n * Type guard that validates the the value passed in is\n * a regular expression or a string that _can_ be turned\n * into a regular expression.\n *\n * **Related:** `isRegExp`\n */\nexport function isLikeRegExp(val: unknown): val is LikeRegExp {\n if (isRegExp(val)) {\n return true;\n }\n\n if (isString(val)) {\n try {\n const _re = new RegExp(val);\n return true;\n }\n catch {\n return false;\n }\n }\n\n return false;\n}\n","import type { Scalar } from \"inferred-types/types\";\nimport { isNull } from \"./isNull\";\nimport { isString } from \"./isString\";\nimport { isSymbol } from \"./isSymbol\";\nimport { isNumber } from \"./numeric/isNumber\";\n\n/**\n * **isScalar**(value)\n *\n * Type guard to check whether the value passed in is a _scalar_ value.\n */\nexport function isScalar<T>(value: T): value is T & Scalar {\n return isString(value) || isNumber(value) || isSymbol(value) || isNull(value);\n}\n","import type { Unset } from \"inferred-types/types\";\nimport { isObject } from \"./isObject\";\n\n/**\n * **isSet**`(val)`\n *\n * Type guard which validates that the value passed in is **not** `Unset`.\n *\n * **Related:** `isUnset()`\n */\nexport function isSet<T>(val: T): val is Exclude<T, Unset> {\n return isObject(val)\n ? val.kind !== \"Unset\"\n : true;\n}\n","/**\n * type guard which tests `val` to see if it's a valid `Set<any>`\n */\nexport function isSetContainer(val: unknown): val is Set<any> {\n return val instanceof Set;\n}\n","import { isString } from \"inferred-types/runtime\";\n\n/**\n * Type guard which validates that the passed in `val` is a string array.\n */\nexport function isStringArray(val: unknown): val is string[] {\n return Array.isArray(val) && val.every(i => isString(i));\n}\n","import type { Thenable } from \"inferred-types/types\";\nimport { isObject } from \"./isObject\";\n/**\n * type guard which checks whether passed in `val` is a `Thenable` object\n */\nexport function isThenable(val: unknown): val is Thenable {\n return isObject(val) && \"then\" in val && \"catch\" in val && typeof val.then === \"function\";\n}\n","import { isString } from \"./isString\";\n\n/**\n * **isTrimable**`(val)`\n *\n * tests whether a string has whitespace on either left or right edges.\n */\nexport function isTrimable<T>(val: T): val is T {\n return isString(val) && val !== val.trim();\n}\n","/**\n * **isTrue**(value)\n *\n * Type guard which detects whether the given value is `true`.\n */\nexport function isTrue(value: unknown): value is true {\n return value === true;\n}\n","import type { FalsyValue } from \"inferred-types/types\";\nimport { FALSY_VALUES } from \"inferred-types/constants\";\n\n/**\n * **isTruthy**\n *\n * Creates a TypeGuard which checks whether a value is considered _truthy_\n * in Javascript.\n */\nexport function isTruthy<V>(val: V): val is Exclude<V, FalsyValue> {\n return !FALSY_VALUES.includes(val as any);\n}\n","import type { TypeSubtype } from \"inferred-types/types\";\nimport { isString } from \"./isString\";\n\n/**\n * type guard which validates whether the `val` passed in is a valid `TypeSubtype`\n *\n * **Related:** `TypeSubtype`, `getTypeSubtype()`\n */\nexport function isTypeSubtype(val: unknown): val is TypeSubtype {\n return isString(val) && val.split(\"/\").length === 2;\n}\n","import type { Narrowable, TypeTuple } from \"inferred-types/types\";\n\n/**\n * **isTypeTuple**(value)\n *\n * A type-guard which detects if passed in value is a `TypeTuple`.\n */\nexport function isTypeTuple<T extends Narrowable, V extends TypeTuple<T, string>>(value: unknown | V): value is V {\n return Array.isArray(value) && value.length === 3 && typeof value[1] === \"function\";\n}\n","import type { Unset } from \"inferred-types/types\";\nimport { isObject } from \"./isObject\";\n\n/**\n * **isUnset**`(val)`\n *\n * Type guard which validates that the value passed in `Unset`.\n *\n * **Related:** `isSet()`\n */\nexport function isUnset(val: unknown): val is Unset {\n return isObject(val) && val.kind === \"Unset\";\n}\n","import type { Keys, NetworkProtocol, TupleToUnion, Uri } from \"inferred-types/types\";\nimport { NETWORK_PROTOCOL_LOOKUP } from \"inferred-types/constants\";\nimport { isString, valuesOf } from \"inferred-types/runtime\";\n\n/**\n * **isUri**`(val, ...protocols)`\n *\n * Type guard to test with the passed in value is a valid URI.\n *\n * **Note:** by default all protocols in `NetworkProtocol` are\n * considered valid but you can scope this down by setting which\n * protocols you explicitly interested in.\n *\n * **Related:** `isUrl`\n */\nexport function isUri<\n T,\n P extends readonly NetworkProtocol[],\n>(val: T, ...protocols: P): val is T & Uri<\n Keys<P>[\"length\"] extends 0\n ? NetworkProtocol\n : TupleToUnion<P>\n> {\n const p = protocols.length === 0\n ? valuesOf(NETWORK_PROTOCOL_LOOKUP).flat().filter(i => i)\n : protocols;\n\n return isString(val) && p.some(i => val.startsWith(`${i}://`));\n}\n\n/**\n * **isUrl**`(val,[...protocols])`\n *\n * Type guard to test with the passed in value is a http/https URL.\n *\n * **Note:** you _can_ specify precisely which network protocols you\n * are wanting to test for but by default it is \"http\" and \"https\"\n *\n * **Related:** `isUri`\n */\nexport function isUrl<\n T,\n P extends readonly NetworkProtocol[],\n>(val: T, ...protocols: P): val is T & Uri<\n Keys<P>[\"length\"] extends 0\n ? \"http\" | \"https\"\n : P[number]\n> {\n const p = protocols.length === 0\n ? [\"http\", \"https\"]\n : protocols;\n\n return isString(val) && p.some(i => val.startsWith(`${i}://`));\n}\n","import type { Variable } from \"inferred-types/types\";\nimport { ALPHA_CHARS, NUMERIC_CHAR } from \"inferred-types/constants\";\nimport { asChars, isString, startsWith } from \"inferred-types/runtime\";\n\nconst VALID = [\n ...ALPHA_CHARS,\n ...NUMERIC_CHAR,\n \"_\",\n \".\",\n];\n\nconst alpha = null as unknown as typeof ALPHA_CHARS[number];\n\nfunction valid(chars: string[]): boolean {\n return chars.every(i => VALID.includes(i));\n}\n\nexport function isVariable(val: unknown): val is Variable {\n return isString(val) && startsWith(alpha)(val) && valid(asChars(val));\n}\n","import type {\n Acceleration,\n Area,\n Current,\n Distance,\n Energy,\n Frequency,\n Luminosity,\n Mass,\n Metric,\n MetricCategory,\n Power,\n Pressure,\n Resistance,\n Speed,\n Temperature,\n TimeMetric,\n Voltage,\n Volume,\n} from \"inferred-types/types\";\nimport {\n ACCELERATION_METRICS_LOOKUP,\n AREA_METRICS_LOOKUP,\n CURRENT_METRICS_LOOKUP,\n DISTANCE_METRICS_LOOKUP,\n ENERGY_METRICS_LOOKUP,\n FREQUENCY_METRICS_LOOKUP,\n LUMINOSITY_METRICS_LOOKUP,\n MASS_METRICS_LOOKUP,\n NUMERIC_CHAR,\n POWER_METRICS_LOOKUP,\n PRESSURE_METRICS_LOOKUP,\n RESISTANCE_METRICS_LOOKUP,\n SPEED_METRICS_LOOKUP,\n TEMPERATURE_METRICS_LOOKUP,\n TIME_METRICS_LOOKUP,\n VOLTAGE_METRICS_LOOKUP,\n VOLUME_METRICS_LOOKUP,\n} from \"inferred-types/constants\";\nimport { createFnWithProps, isNumberLike, stripWhile } from \"inferred-types/runtime\";\nimport { isString } from \"../isString\";\n\nfunction separate(s: string) {\n return stripWhile(s.toLowerCase(), ...NUMERIC_CHAR).trim();\n}\n\nfunction startsWithNumber(val: unknown) {\n return isString(val) && isNumberLike(val.slice(0, 1));\n}\n\nexport function isAreaMetric(val: unknown): val is Area {\n return isString(val) && startsWithNumber(val) && AREA_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isLuminosityMetric(val: unknown): val is Luminosity {\n return isString(val) && startsWithNumber(val) && LUMINOSITY_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isResistanceMetric(val: unknown): val is Resistance {\n return isString(val) && startsWithNumber(val) && RESISTANCE_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isCurrentMetric(val: unknown): val is Current {\n return isString(val) && startsWithNumber(val) && CURRENT_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isVoltageMetric(val: unknown): val is Voltage {\n return isString(val) && startsWithNumber(val) && VOLTAGE_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isFrequencyMetric(val: unknown): val is Frequency {\n return isString(val) && startsWithNumber(val) && FREQUENCY_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isPowerMetric(val: unknown): val is Power {\n return isString(val) && startsWithNumber(val) && POWER_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isTimeMetric(val: unknown): val is TimeMetric {\n return isString(val) && startsWithNumber(val) && TIME_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isEnergyMetric(val: unknown): val is Energy {\n return isString(val) && startsWithNumber(val) && ENERGY_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isPressureMetric(val: unknown): val is Pressure {\n return isString(val) && startsWithNumber(val) && PRESSURE_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isTemperatureMetric(val: unknown): val is Temperature {\n return isString(val) && startsWithNumber(val) && TEMPERATURE_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isVolumeMetric(val: unknown): val is Volume {\n return isString(val) && startsWithNumber(val) && VOLUME_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isAccelerationMetric(val: unknown): val is Acceleration {\n return isString(val) && startsWithNumber(val) && ACCELERATION_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isSpeedMetric(val: unknown): val is Speed {\n const speed = SPEED_METRICS_LOOKUP.map(i => i.abbrev);\n return isString(val) && startsWithNumber(val) && speed.includes(separate(val) as any);\n}\n\nexport function isMassMetric(val: unknown): val is Mass {\n return isString(val) && startsWithNumber(val) && MASS_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isDistanceMetric(val: unknown): val is Distance {\n return isString(val) && startsWithNumber(val) && DISTANCE_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\n/**\n * Type guard which validates the passed in `val` is a `Metric` (unit\n * of measure).\n */\nexport function isMetric(val: unknown): val is Metric {\n return isDistanceMetric(val)\n || isMassMetric(val)\n || isSpeedMetric(val)\n || isAccelerationMetric(val)\n || isVoltageMetric(val)\n || isTemperatureMetric(val)\n || isPressureMetric(val)\n || isEnergyMetric(val)\n || isTimeMetric(val)\n || isPowerMetric(val)\n || isFrequencyMetric(val)\n || isVoltageMetric(val)\n || isCurrentMetric(val)\n || isLuminosityMetric(val)\n || isAreaMetric(val);\n}\n\nfunction getCategories<T extends readonly MetricCategory[]>(\n c: T,\n) {\n return c.map(\n (i) => {\n switch (i) {\n case \"Acceleration\":\n return isAccelerationMetric;\n case \"Area\":\n return isAreaMetric;\n case \"Current\":\n return isCurrentMetric;\n case \"Distance\":\n return isDistanceMetric;\n case \"Frequency\":\n return isFrequencyMetric;\n case \"Luminosity\":\n return isLuminosityMetric;\n case \"Mass\":\n return isMassMetric;\n case \"Power\":\n return isPowerMetric;\n case \"Pressure\":\n return isPressureMetric;\n case \"Resistance\":\n return isResistanceMetric;\n case \"Speed\":\n return isSpeedMetric;\n case \"Temperature\":\n return isTemperatureMetric;\n case \"Time\":\n return isTimeMetric;\n case \"Voltage\":\n return isVoltageMetric;\n case \"Volume\":\n return isVoltageMetric;\n }\n },\n );\n}\n\nexport type MetricTypeGuard<\n TCat extends readonly MetricCategory[],\n> = ((val: unknown) => boolean) & { categories: TCat; kind: \"MetricTypeGuard\" };\n\n/**\n * **isMetricCategory**`(...categories) => (val) => val is Uom<T>`\n *\n * A higher order type guard which validates that a value is a metric\n * with the specified category(s) UOM's.\n *\n * **Related:** `isMetric()`, `isAreaMetric()`, `isSpeedMetric()`, ...\n */\nexport function isMetricCategory<\n TCat extends readonly [MetricCategory, ...MetricCategory[]],\n>(...categories: TCat): MetricTypeGuard<TCat> {\n const fn = (val: unknown): val is Metric<TCat[number]> => {\n const tests = getCategories(categories);\n\n return tests.some(i => i(val));\n };\n\n const props = { categories, kind: \"MetricTypeGuard\" };\n\n return createFnWithProps(fn, props) as unknown as MetricTypeGuard<TCat>;\n}\n","import type {\n AccelerationUom,\n AreaUom,\n CurrentUom,\n DistanceUom,\n EnergyUom,\n FrequencyUom,\n LuminosityUom,\n MassUom,\n MetricCategory,\n PowerUom,\n PressureUom,\n ResistanceUom,\n SpeedUom,\n TemperatureUom,\n TimeUom,\n Uom,\n VoltageUom,\n VolumeUom,\n} from \"inferred-types/types\";\nimport {\n ACCELERATION_METRICS_LOOKUP,\n AREA_METRICS_LOOKUP,\n CURRENT_METRICS_LOOKUP,\n ENERGY_METRICS_LOOKUP,\n FREQUENCY_METRICS_LOOKUP,\n LUMINOSITY_METRICS_LOOKUP,\n MASS_METRICS_LOOKUP,\n POWER_METRICS_LOOKUP,\n PRESSURE_METRICS_LOOKUP,\n RESISTANCE_METRICS_LOOKUP,\n SPEED_METRICS_LOOKUP,\n TEMPERATURE_METRICS_LOOKUP,\n TIME_METRICS_LOOKUP,\n VOLTAGE_METRICS_LOOKUP,\n VOLUME_METRICS_LOOKUP,\n} from \"inferred-types/constants\";\nimport { createFnWithProps, isString } from \"inferred-types/runtime\";\n\nexport function isAreaUom(val: unknown): val is AreaUom {\n return isString(val) && AREA_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isLuminosityUom(val: unknown): val is LuminosityUom {\n return isString(val) && LUMINOSITY_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isResistanceUom(val: unknown): val is ResistanceUom {\n return isString(val) && RESISTANCE_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isCurrentUom(val: unknown): val is CurrentUom {\n return isString(val) && CURRENT_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isVoltageUom(val: unknown): val is VoltageUom {\n return isString(val) && VOLTAGE_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isFrequencyUom(val: unknown): val is FrequencyUom {\n return isString(val) && FREQUENCY_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isPowerUom(val: unknown): val is PowerUom {\n return isString(val) && POWER_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isTimeUom(val: unknown): val is TimeUom {\n return isString(val) && TIME_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isEnergyUom(val: unknown): val is EnergyUom {\n return isString(val) && ENERGY_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isPressureUom(val: unknown): val is PressureUom {\n return isString(val) && PRESSURE_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isTemperatureUom(val: unknown): val is TemperatureUom {\n return isString(val) && TEMPERATURE_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isVolumeUom(val: unknown): val is VolumeUom {\n return isString(val) && VOLUME_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isAccelerationUom(val: unknown): val is AccelerationUom {\n return isString(val) && ACCELERATION_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isSpeedUom(val: unknown): val is SpeedUom {\n return isString(val) && SPEED_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isMassUom(val: unknown): val is MassUom {\n return isString(val) && MASS_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isDistanceUom(val: unknown): val is DistanceUom {\n return isString(val) && ENERGY_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\n/**\n * Type guard which validates the passed in `val` is a `Uom` (unit\n * of measure).\n *\n * **Related:**\n * - `isUomCategory(c)(v)`\n * - `isSpeedUom(v)`, `isMassUom(v)`, ...\n */\nexport function isUom(val: unknown): val is Uom {\n return isDistanceUom(val)\n || isMassUom(val)\n || isSpeedUom(val)\n || isAccelerationUom(val)\n || isVoltageUom(val)\n || isTemperatureUom(val)\n || isPressureUom(val)\n || isEnergyUom(val)\n || isTimeUom(val)\n || isPowerUom(val)\n || isFrequencyUom(val)\n || isVoltageUom(val)\n || isCurrentUom(val)\n || isLuminosityUom(val)\n || isAreaUom(val);\n}\n\nfunction getCategories<T extends readonly MetricCategory[]>(\n c: T,\n) {\n return c.map(\n (i) => {\n switch (i) {\n case \"Acceleration\":\n return isAccelerationUom;\n case \"Area\":\n return isAreaUom;\n case \"Current\":\n return isCurrentUom;\n case \"Distance\":\n return isDistanceUom;\n case \"Frequency\":\n return isFrequencyUom;\n case \"Luminosity\":\n return isLuminosityUom;\n case \"Mass\":\n return isMassUom;\n case \"Power\":\n return isPowerUom;\n case \"Pressure\":\n return isPressureUom;\n case \"Resistance\":\n return isResistanceUom;\n case \"Speed\":\n return isSpeedUom;\n case \"Temperature\":\n return isTemperatureUom;\n case \"Time\":\n return isTimeUom;\n case \"Voltage\":\n return isVoltageUom;\n case \"Volume\":\n return isVoltageUom;\n }\n },\n );\n}\n\nexport type UomTypeGuard<\n TCat extends readonly MetricCategory[],\n> = ((val: unknown) => boolean) & {\n categories: TCat;\n kind: \"UomTypeGuard\";\n};\n\n/**\n * **isUomCategory**`(...categories) => (val) => val is Uom<T>`\n *\n * A higher order type guard which validates that a value is of\n * the specified metric category or categories.\n *\n * **Related:** `isUom()`, `isAreaUom()`, `isSpeedUom()`, ...\n */\nexport function isUomCategory<\n TCat extends readonly [MetricCategory, ...MetricCategory[]],\n>(\n ...categories: TCat\n): UomTypeGuard<TCat> {\n const fn = (val: unknown): val is Uom<TCat[number]> => {\n const tests = getCategories(categories);\n\n return tests.some(i => i(val));\n };\n const prop = { categories, kind: \"UomTypeGuard\" };\n return createFnWithProps(fn, prop) as unknown as UomTypeGuard<TCat>;\n}\n","import type {\n AsString,\n DomainName,\n GetUrlProtocolPrefix,\n GetUrlSource,\n Ip4Address,\n Ip6AddressLoose,\n UrlPath,\n} from \"inferred-types/types\";\nimport {\n asChars,\n getUrlQueryParams,\n ip6GroupExpansion,\n isAlpha,\n isHexadecimal,\n isNumberLike,\n removeUrlProtocol,\n} from \"inferred-types/runtime\";\nimport { isString } from \"./isString\";\n\n/**\n * **isIp4Address**`(val)`\n *\n * Type guard which checks whether the value is a valid IPv4 address.\n */\nexport function isIp4Address<T>(val: T): val is T & Ip4Address {\n return isString(val)\n && (val.split(\".\").length === 4)\n && (val.split(\".\").every(i => isNumberLike(i)))\n && val.split(\".\").every(i => Number(i) >= 0 && Number(i) <= 255);\n}\n\n/**\n * **isIp6Address**`(val)`\n *\n * Type guard which checks whether the value is a valid IPv6 address.\n */\nexport function isIp6Address<T>(val: T): val is T & Ip6AddressLoose {\n const expanded = isString(val)\n ? ip6GroupExpansion(val)\n : \"\";\n return isString(val) && isString(expanded)\n && (expanded.split(\":\").every(i => asChars(i).length >= 1 && asChars(i).length <= 4))\n && expanded.split(\":\").every(i => isHexadecimal(i));\n}\n\n/**\n * **isIpAddress**`(val)`\n *\n * Type guard which checks whether the value is a valid IP address (v4 or v6).\n */\nexport function isIpAddress<T>(val: T): val is T & (Ip4Address | Ip6AddressLoose) {\n return isIp4Address(val) || isIp6Address(val);\n}\n\n/**\n * **hasUrlPort**`(val)`\n *\n * Type guard which tests whether there is an explicit _port_ reference\n * in the passed in URL (versus implicitly using the default port of the\n * protocol)\n */\nexport function hasUrlPort<T>(val: T): val is T & `${GetUrlProtocolPrefix<T>}${GetUrlSource<AsString<T>>}:${number}${string}` {\n return isString(val) && asChars(removeUrlProtocol(val)).includes(\":\");\n}\n\n/**\n * **isUrlPath**`(val)`\n *\n * Type guard which checks whether the value is a valid `UrlPath`\n */\nexport function isUrlPath<T>(val: T): val is T & UrlPath {\n return isString(val)\n && (val === \"\" || val.startsWith(\"/\"))\n && (\n asChars(val).every(\n c => isAlpha(c)\n || isNumberLike(c)\n || c === \"_\"\n || c === \"@\"\n || c === \".\"\n || c === \"-\",\n )\n );\n}\n\n/**\n * **isDomainName**`(val)`\n *\n * Type guard which checks whether the value is a valid DNS domain name\n */\nexport function isDomainName<T>(val: T): val is T & DomainName<AsString<T>> {\n return isString(val)\n && val.split(\".\").filter(i => i).length > 1\n && isString(val.split(\".\").filter(i => i).pop())\n && asChars(val.split(\".\").filter(i => i).pop() as string).length > 1\n && val.split(\".\").filter(i => i).every(\n i => isAlpha(i) || isNumberLike(i) || i === \"-\" || i === \"_\",\n );\n}\n\n/**\n * **isUrlSource**`(val)`\n *\n * Type guard which checks whether the value is a valid URL source\n * (aka, an IP address or a Domain Name)\n */\nexport function isUrlSource<T>(val: T) {\n return isDomainName(val) || isIpAddress(val);\n}\n\n/**\n * **hasUrlQueryParameter**`(val,prop)`\n *\n * Tests whether the valued in has a query parameter specified by `prop`.\n */\nexport function hasUrlQueryParameter<T extends string, P extends string>(val: T, prop: P) {\n return isString(getUrlQueryParams(val, prop));\n}\n","import { isNumber } from \"inferred-types/runtime\";\n\n/**\n * Type guard which validates that the passed in `val` is a string array.\n */\nexport function isNumericArray(val: unknown): val is number[] {\n return Array.isArray(val) && val.every(i => isNumber(i));\n}\n","import type {\n NetworkProtocol,\n NetworkProtocolPrefix,\n} from \"inferred-types/types\";\nimport { NETWORK_PROTOCOL } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * **hasProtocol**`(val)`\n *\n * Type guard which validates that `val` _starts with_ a known\n * protocol name (e.g., \"https\", \"ftp\", etc.).\n */\nexport function hasProtocol<\n P extends readonly NetworkProtocol[],\n>(\n val: unknown,\n ...protocols: P\n): val is P[\"length\"] extends 0\n ? `${NetworkProtocol}${string}`\n : `${P[number]}${string}` {\n return (\n isString(val)\n && protocols.length === 0\n ? NETWORK_PROTOCOL.some(i => val.startsWith(i))\n : protocols.some(i => (val as string).startsWith(i))\n );\n}\n\n/**\n * **isProtocol**`(val)`\n *\n * Type guard which validates that `val` is a known\n * protocol name (e.g., \"https\", \"ftp\", etc.).\n */\nexport function isProtocol<\n P extends readonly NetworkProtocol[],\n>(\n val: unknown,\n ...protocols: P\n): val is P[\"length\"] extends 0\n ? NetworkProtocol\n : P[number] {\n return (\n isString(val)\n && protocols.length === 0\n ? NETWORK_PROTOCOL.includes(val as any)\n : protocols.includes(val as any)\n );\n}\n\n/**\n * **hasProtocolPrefix**`(val, [...protocols])`\n *\n * Type guard which validates that `val` _starts with_ a known\n * protocol name (e.g., \"https\", \"ftp\", etc.) followed by `://`.\n */\nexport function hasProtocolPrefix<\n P extends readonly NetworkProtocol[],\n>(\n val: unknown,\n ...protocols: P\n): val is P[\"length\"] extends 0\n ? `${NetworkProtocolPrefix}${string}`\n : `${NetworkProtocolPrefix<P[number]>}${string}` {\n return (\n isString(val)\n && protocols.length === 0\n ? NETWORK_PROTOCOL.map(i => `${i}://`).some(i => val.startsWith(i))\n : protocols.map(i => `${i}://`).some(i => (val as string).startsWith(i))\n );\n}\n\n/**\n * **isProtocolPrefix**`(val, [...protocols])`\n *\n * Type guard which validates that `val` is a known\n * protocol name (e.g., \"https\", \"ftp\", etc.) followed by `://`.\n */\nexport function isProtocolPrefix<\n P extends readonly NetworkProtocol[],\n>(\n val: unknown,\n ...protocols: P\n): val is P[\"length\"] extends 0\n ? NetworkProtocolPrefix\n : NetworkProtocolPrefix<P[number]> {\n return (\n isString(val)\n && protocols.length === 0\n ? NETWORK_PROTOCOL.map(i => `${i}://`).includes(val as any)\n : protocols.map(i => `${i}://`).includes(val as any)\n );\n}\n","import type { TypeToken, TypeTokenKind } from \"inferred-types/types\";\nimport { TT_KIND_VARIANTS } from \"inferred-types/constants\";\nimport { isAtomicKind, isSetBasedKind, isString, stripSurround } from \"inferred-types/runtime\";\n\n/**\n * A _multi-granularity_ type guard for validating whether `val` is\n * a `TypeToken`.\n *\n * - when used without the `kind` parameter it will check whether `val`\n * is _any_ kind of `TypeToken`\n * - specifying a kind will narrow the check to that specific kind variant\n */\nexport function isTypeToken<T extends TypeTokenKind = TypeTokenKind>(val: unknown, kind?: T): val is TypeToken<T> {\n if (isString(val) && val.startsWith(\"<<\") && val.endsWith(\">>\")) {\n const stripped = stripSurround(\"<<\", \">>\")(val);\n\n if (TT_KIND_VARIANTS.some(k => stripped.startsWith(k))) {\n if (kind) {\n if (isAtomicKind(kind)) {\n return val === `<<${kind}>>`;\n }\n else if (isSetBasedKind(kind)) {\n return val.startsWith(`<<${kind}::`);\n }\n else {\n return val === `<<${kind}>>`\n || val.startsWith(`<<${kind}::`);\n }\n }\n else {\n // broad check if _any_ token\n return true;\n }\n }\n\n return false;\n }\n\n return false;\n}\n\n/**\n * type guard which validates that `val` is a `TypeTokenKind`\n */\nexport function isTypeTokenKind(val: unknown): val is TypeTokenKind {\n return !!(isString(val) && TT_KIND_VARIANTS.includes(val as any));\n}\n","import type { TT_Atomic, TypeTokenAtomics } from \"inferred-types/types\";\nimport { TT_ATOMICS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * **isAtomicToken**`(val)`\n *\n * Type guard which validates whether the value passed in is a\n * valid `AtomicToken`.\n */\nexport function isAtomicToken(val: unknown): val is TT_Atomic {\n return isString(val)\n && TT_ATOMICS.some(i => val.startsWith(`<<${i}`));\n}\n\nexport function isAtomicKind(val: unknown): val is TypeTokenAtomics {\n return isString(val)\n && TT_ATOMICS.includes(val as any);\n}\n","import type {\n TT_Container,\n TypeToken,\n} from \"inferred-types/types\";\nimport { isTypeToken } from \"inferred-types/runtime\";\n\nexport function isObjectToken(val: unknown): val is TypeToken<\"obj\"> {\n return isTypeToken(val, \"obj\");\n}\n\nexport function isRecordToken(val: unknown): val is TypeToken<\"rec\"> {\n return isTypeToken(val, \"rec\");\n}\n\nexport function isTupleToken(val: unknown): val is TypeToken<\"tuple\"> {\n return isTypeToken(val, \"tuple\");\n}\n\nexport function isArrayToken(val: unknown): val is TypeToken<\"arr\"> {\n return isTypeToken(val, \"arr\");\n}\n\nexport function isMapToken(val: unknown): val is TypeToken<\"map\"> {\n return isTypeToken(val, \"map\");\n}\n\nexport function isSetToken(val: unknown): val is TypeToken<\"set\"> {\n return isTypeToken(val, \"set\");\n}\n\n/**\n * **isContainerToken**`(val)`: **val** is `ContainerToken`\n */\nexport function isContainerToken(val: unknown): val is TT_Container {\n return isObjectToken(val)\n || isRecordToken(val)\n || isTupleToken(val)\n || isArrayToken(val)\n || isMapToken(val)\n || isSetToken(val);\n // || isWeakMapToken(val)\n}\n","import type { ShapeCallback } from \"inferred-types/types\";\nimport { isFunction } from \"../isFunction\";\n\n/**\n * type guard which validates that the `val` passed in is a `ShapeCallback`\n */\nexport function isShapeCallback(val: unknown): val is ShapeCallback {\n return isFunction(val) && (val as any).kind === \"shape\";\n}\n","import type { TypeToken } from \"inferred-types/types\";\nimport {\n TT_ATOMICS,\n TT_CONTAINERS,\n TT_FUNCTIONS,\n TT_SETS,\n TT_SINGLETONS,\n} from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst token_types = [\n ...TT_ATOMICS,\n ...TT_CONTAINERS,\n ...TT_FUNCTIONS,\n ...TT_SETS,\n ...TT_SINGLETONS,\n] as const;\n\n/**\n * **isShapeToken**`(val)`\n *\n * Type guard which validates whether the value passed in is a\n * valid \"shape token\" of some sort.\n */\nexport function isShapeToken(val: unknown): val is TypeToken {\n return isString(val)\n && val.startsWith(\"<<\")\n && val.endsWith(\">>\")\n && token_types.some(t => val.startsWith(`<<${t}`));\n}\n","import type { SimpleContainerToken, SimpleScalarToken, SimpleToken } from \"inferred-types/types\";\n\nimport { SIMPLE_SCALAR_TOKENS, SIMPLE_TOKENS } from \"inferred-types/constants\";\nimport { isArray, isString } from \"inferred-types/runtime\";\n\nconst split_tokens = SIMPLE_TOKENS.map(i => i.split(\"TOKEN\"));\nconst scalar_split_tokens = SIMPLE_SCALAR_TOKENS.map(i => i.split(\"TOKEN\"));\n// const container_split_tokens = SIMPLE_CONTAINER_TOKENS.map(i => i.split(\"TOKEN\"));\n\n/**\n * **isSimpleToken**`(val)`\n *\n * Type guard which validates that what was passed in is a `SimpleToken`\n *\n * **Related:** `isSimpleTokenTuple`\n */\nexport function isSimpleToken(val: unknown): val is SimpleToken {\n return isString(val) && split_tokens.some(\n i => (\n (i.length === 1 && val === i[0])\n || (val.startsWith(i[0]) && val.endsWith(i.slice(-1)[0]) && i.every(p => val.includes(p)))\n ),\n );\n}\n\n/**\n * **isSimpleScalarToken**`(val)`\n *\n * Type guard which validates that what was passed in is a `SimpleScalarToken`\n *\n * **Related:** `isSimpleToken()`, `isSimpleContainerToken()`\n */\nexport function isSimpleScalarToken(val: unknown): val is SimpleScalarToken {\n return isString(val) && scalar_split_tokens.some(\n i => (\n (i.length === 1 && val === i[0])\n || (val.startsWith(i[0]) && val.endsWith(i.slice(-1)[0]) && i.every(p => val.includes(p)))\n ),\n );\n}\n\n/**\n * **isSimpleContainerToken**`(val)`\n *\n * Type guard which validates that what was passed in is a\n * `SimpleContainerToken`.\n *\n * **Related:** `isSimpleToken()`, `isSimpleScalarToken()`\n */\nexport function isSimpleContainerToken(val: unknown): val is SimpleContainerToken {\n return isString(val) && scalar_split_tokens.some(\n i => (\n (i.length === 1 && val === i[0])\n || (val.startsWith(i[0]) && val.endsWith(i.slice(-1)[0]) && i.every(p => val.includes(p)))\n ),\n );\n}\n\n/**\n * **isSimpleTokenTuple**`(val)`\n *\n * Type guard which validates that what was passed in a tuple of `SimpleToken`'s\n *\n * **Related:** `isSimpleToken()`, `isSimpleTokenTuple()`\n */\nexport function isSimpleTokenTuple(val: unknown): val is SimpleToken[] {\n return isArray(val) && val.length !== 0\n && val.every(isSimpleToken);\n}\n\n/**\n * **isSimpleScalarTokenTuple**`(val)`\n *\n * Type guard which validates that what was passed in a tuple of\n * `SimpleScalarToken`'s\n *\n * **Related:** `isSimpleToken()`, `isSimpleTokenTuple()`\n */\nexport function isSimpleScalarTokenTuple(val: unknown): val is SimpleScalarToken[] {\n return isArray(val) && val.length !== 0\n && val.every(isSimpleScalarToken);\n}\n\n/**\n * **isSimpleContainerTokenTuple**`(val)`\n *\n * Type guard which validates that what was passed in a tuple of\n * `SimpleContainerToken`'s\n *\n * **Related:** `isSimpleToken()`, `isSimpleTokenTuple()`\n */\nexport function isSimpleContainerTokenTuple(val: unknown): val is SimpleContainerToken[] {\n return isArray(val) && val.length !== 0\n && val.every(isSimpleContainerToken);\n}\n","import type { DefineObject } from \"inferred-types/types\";\nimport { isObject } from \"../isObject\";\nimport { isShapeCallback } from \"./isShapeCallback\";\nimport { isShapeToken } from \"./isShapeToken\";\nimport { isSimpleToken } from \"./isSimpleToken\";\n\n/**\n * type guard which validates whether the `val` passed in a `DefineObject`\n */\nexport function isDefineObject(val: unknown): val is DefineObject {\n return isObject(val) && Object.keys(val).some(\n key => isSimpleToken(val[key])\n || isShapeToken(val)\n || isShapeCallback(val),\n );\n}\n","import type { TT_Function } from \"inferred-types/types\";\nimport { TT_FUNCTIONS, TT_START, TT_STOP } from \"inferred-types/constants\";\nimport { isString, isTypeTokenKind, stripSurround } from \"inferred-types/runtime\";\n\n/**\n * type guard which validates that `val` is a _function based_ `TypeToken`\n */\nexport function isFnBasedToken(val: unknown) {\n if (isString(val) && val.startsWith(TT_START) && val.endsWith(TT_STOP)) {\n const stripped = stripSurround(TT_START, TT_STOP)(val);\n\n return TT_FUNCTIONS.some(i => stripped.startsWith(i));\n }\n}\n\n/**\n * type guard which validates that `val` is a `TypeTokenKind` which\n * represents a _function based_ token (excluding \"-set\" types)\n */\nexport function isFnBasedKind(val: unknown): val is TT_Function {\n if (isString(val) && isTypeTokenKind(val)) {\n const stripped = stripSurround(TT_START, TT_STOP)(val);\n\n return TT_FUNCTIONS.some(i => stripped.startsWith(i));\n }\n\n return false;\n}\n","import type { TT_Set, TypeTokenSets } from \"inferred-types/types\";\nimport { getTokenKind, isString, isTypeToken } from \"inferred-types/runtime\";\n\n/**\n * **isSetBasedToken**`(val)`\n *\n * Type guard which validates whether the value passed in is a\n * valid `TypeToken` who's name \"kind\" ends in `-set`.\n */\nexport function isSetBasedToken(val: unknown): val is TT_Set {\n if (isTypeToken(val)) {\n const kind = getTokenKind(val);\n return kind.endsWith(`-set`);\n }\n\n return false;\n}\n\nexport function isSetBasedKind(val: unknown): val is TypeTokenSets {\n return isString(val)\n && val.endsWith(`-set`);\n}\n","import type { TT_Singleton, TypeTokenSingletons } from \"inferred-types/types\";\nimport {\n TT_SINGLETONS,\n} from \"inferred-types/constants\";\n\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * **isSingletonKind**`(val)`\n *\n * Type guard which validates whether the value passed in is a\n * valid Singleton token kind of some sort.\n */\nexport function isSingletonKind(val: unknown): val is TypeTokenSingletons {\n return isString(val)\n && TT_SINGLETONS.some(i => val.startsWith(`<<${i}`));\n}\n\nexport function isSingletonToken(val: unknown): val is TT_Singleton {\n return isString(val)\n && TT_SINGLETONS.some(i => val.startsWith(`<<${i}`));\n}\n","import type {\n Opt,\n TwColor,\n TwColorOptionalOpacity,\n TwColorTarget,\n TwColorWithLuminosity,\n TwColorWithLuminosityOpacity,\n TwModifier,\n TwTarget__Color,\n TwTarget__Color__Light,\n} from \"inferred-types/types\";\nimport {\n TW_COLOR_TARGETS,\n TW_HUE,\n TW_LUMINOSITY,\n TW_MODIFIERS,\n} from \"inferred-types/constants\";\nimport {\n getTailwindModifiers,\n isNumberLike,\n isString,\n removeTailwindModifiers,\n retainAfter,\n} from \"inferred-types/runtime\";\n\n/**\n * **isTailwindColor**`(val)`\n *\n * A type guard which validates whether the `val` passed in is a\n * [Tailwind](https://tailwindcss.com/docs/customizing-colors)\n * color (e.g., `blue`, `sky`, `slate`, etc.).\n *\n * **Related:** `isTailwindColor`, `isTailwindColorWithLuminosityAndOpacity`\n */\nexport function isTailwindColorName(val: unknown): val is TwColor {\n return isString(val) && Object.keys(TW_HUE).includes(val);\n}\n\n/**\n * **isTailwindColorWithLuminosity**`(val)`\n *\n * A type guard which validates whether the `val` passed in is a [Tailwind](https://tailwindcss.com/docs/customizing-colors)\n * color with luminosity string (e.g., `blue-300`, `purple-900`).\n *\n * - this also allows the colors `white` and `black` which are mapped to a luminosity level\n * but do not have variant luminosities\n *\n * **Related:** `isTailwindColor`, `isTailwindColorWithLuminosityAndOpacity`\n */\nexport function isTailwindColorWithLuminosity(val: unknown): val is TwColorWithLuminosity {\n return isString(val) && isTailwindColorName(val.split(\"-\")[0]) && (\n ![\"white\", \"black\"].includes(val.split(\"-\")[0]) || val.split(\"-\").length === 1\n ) && (\n !val.includes(\"-\") || Object.keys(TW_LUMINOSITY).includes(retainAfter(val, \"-\"))\n );\n}\n\n/**\n * **isTailwindColorWithLuminosityAndOpacity**`(val)`\n *\n * A type guard which validates whether the `val` passed in is a [Tailwind](https://tailwindcss.com/docs/customizing-colors)\n * color string with both **luminosity** and **opacity** expressed (e.g., `blue-300/40`, `purple-900/75`).\n *\n * - this also allows the colors `white` and `black` which are mapped to a luminosity level\n * but do not have variant luminosities\n *\n * **Related:** `isTailwindColor`, `isTailwindColorWithLuminosity`, `isTailwindColorName`\n */\nexport function isTailwindColorWithLuminosityAndOpacity(val: unknown): val is TwColorWithLuminosityOpacity {\n return isString(val)\n && val.includes(\"/\")\n && isTailwindColorWithLuminosity(val.split(\"/\")[0])\n && isNumberLike(val.split(\"/\")[1])\n && ([1, 2].includes(val.split(\"/\")[1].length) || val.split(\"/\")[1] === \"100\");\n}\n\n/**\n * **isTailwindColor**`(val)`\n *\n * A type guard which validates whether the `val` passed in is a\n * \"fully qualified\" [Tailwind](https://tailwindcss.com/docs/customizing-colors)\n * color string.\n *\n * - All color string must include a luminosity value except `white` and `black`\n * - You may _optionally_ add an opacity value.\n * - Examples:\n * - `blue-500`\n * - `white`\n * - `black/50`\n * - `red-700/25`\n *\n * **Related:** `isTailwindColorWithLuminosityAndOpacity`, `isTailwindColorWithLuminosity`, `isTargetedTailwindColor`\n */\nexport function isTailwindColor(val: unknown): val is TwColorOptionalOpacity {\n return isTailwindColorWithLuminosity(val) || isTailwindColorWithLuminosityAndOpacity(val);\n}\n\n/**\n * Type guard which validates that `val` is a `TwModifier` (e.g., \"dark\", \"focus\", etc.).\n */\nexport function isTailwindModifier(val: unknown): val is TwModifier {\n return isString(val) && TW_MODIFIERS.includes(val as any);\n}\n\n/**\n * A type guard which validates that `val` is a viable \"target\" for a Tailwind\n * color string (e.g., \"bg\", \"text\", \"border\", etc.).\n */\nexport function isTailwindColorTarget(val: unknown): val is TwColorTarget {\n return isString(val) && TW_COLOR_TARGETS.includes(val as any);\n}\n\ntype FullTailwindColorClass<\n TAllow extends readonly TwModifier[] | readonly [true],\n> = TAllow[\"length\"] extends 0\n ? TwTarget__Color\n : TAllow[\"length\"] extends 1\n ? TAllow[0] extends TwModifier\n ? `${Opt<TAllow[0]>}:${TwTarget__Color}`\n : `${Opt<`${string}:`>}${TwTarget__Color__Light}`\n : TAllow[\"length\"] extends 2\n ? TAllow[0] extends TwModifier\n ? TAllow[1] extends TwModifier\n ? `${TAllow[0]}:${TAllow[1]}:${TwTarget__Color__Light}` |\n `${TAllow[1]}:${TAllow[0]}:${TwTarget__Color__Light}` |\n `${TAllow[0]}:${TwTarget__Color__Light}` |\n `${TAllow[1]}:${TwTarget__Color__Light}` | TwTarget__Color__Light\n : never\n : never\n : `${Opt<`${string}:`>}${TwTarget__Color}`;\n\n/**\n * A type guard which validates that `val` is a fully qualified Tailwind class which:\n *\n * - targets a valid source (e.g., \"bg\", \"text\", etc.)\n * - has a valid color and luminosity (and optionally an opacity)\n * - and if any _modifiers_ were at start of string they are part of the\n * those authorized by the the `allowedModifiers` string\n *\n * **Note:** if `allowedModifiers` is set with a single value of `true` then all known modifiers\n * are allowed.\n *\n * **Related:** `isTailwindColor`, `isTailwindColorTarget`, `isTailwindModifier`\n */\nexport function isTailwindColorClass<\n TAllow extends readonly TwModifier[] | readonly [true],\n>(val: unknown, ...allowedModifiers: TAllow): val is FullTailwindColorClass<TAllow> {\n if (isString(val)) {\n const mods = getTailwindModifiers(val);\n const targetted = removeTailwindModifiers(val);\n const target = targetted.split(\"-\")[0];\n const color = targetted.split(\"-\").slice(1).join(\"-\");\n\n return isTailwindColorTarget(target)\n && isTailwindColor(color)\n && (\n allowedModifiers[0] === true\n || mods.every(i => (allowedModifiers as TwModifier[]).includes(i))\n );\n }\n return false;\n}\n","import type { AustralianNewsUrls } from \"inferred-types/types\";\nimport { AUSTRALIAN_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = AUSTRALIAN_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Australian news URL\n */\nexport function isAustralianNewsUrl(val: unknown): val is AustralianNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { BelgianNewsUrls } from \"inferred-types/types\";\nimport { BELGIUM_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = BELGIUM_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Belgium news URL\n */\nexport function isBelgiumNewsUrl(val: unknown): val is BelgianNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { CanadianNewsUrls } from \"inferred-types/types\";\nimport { CANADIAN_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = CANADIAN_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Canadian news URL\n */\nexport function isCanadianNewsUrl(val: unknown): val is CanadianNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { DanishNewsUrls } from \"inferred-types/types\";\nimport { DANISH_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = DANISH_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Danish news URL\n */\nexport function isDanishNewsUrl(val: unknown): val is DanishNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { DutchNewsUrls } from \"inferred-types/types\";\nimport { DUTCH_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = DUTCH_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Dutch news URL\n */\nexport function isDutchNewsUrl(val: unknown): val is DutchNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { FrenchNewsUrls } from \"inferred-types/types\";\nimport { FRENCH_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = FRENCH_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a French news URL\n */\nexport function isFrenchNewsUrl(val: unknown): val is FrenchNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { GermanNewsUrls } from \"inferred-types/types\";\nimport { GERMAN_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = GERMAN_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a German news URL\n */\nexport function isGermanNewsUrl(val: unknown): val is GermanNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { IndianNewsUrls } from \"inferred-types/types\";\nimport { INDIAN_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = INDIAN_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Indian news URL\n */\nexport function isIndianNewsUrl(val: unknown): val is IndianNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { ItalianNewsUrls } from \"inferred-types/types\";\nimport { ITALIAN_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = ITALIAN_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Italian news URL\n */\nexport function isItalianNewsUrl(val: unknown): val is ItalianNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { JapaneseNewsUrls } from \"inferred-types/types\";\nimport { JAPANESE_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = JAPANESE_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Japanese news URL\n */\nexport function isJapaneseNewsUrl(val: unknown): val is JapaneseNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { MexicanNewsUrls } from \"inferred-types/types\";\nimport { MEXICAN_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = MEXICAN_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Mexican news URL\n */\nexport function isMexicanNewsUrl(val: unknown): val is MexicanNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { NorwegianNewsUrls } from \"inferred-types/types\";\nimport { NORWEGIAN_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = NORWEGIAN_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Norwegian news URL\n */\nexport function isNorwegianNewsUrl(val: unknown): val is NorwegianNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { SouthKoreanNewsUrls } from \"inferred-types/types\";\nimport { SOUTH_KOREAN_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = SOUTH_KOREAN_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a South Korean news URL\n */\nexport function isSouthKoreanNewsUrl(val: unknown): val is SouthKoreanNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { SpanishNewsUrls } from \"inferred-types/types\";\nimport { SPANISH_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = SPANISH_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Spanish news URL\n */\nexport function isSpanishNewsUrl(val: unknown): val is SpanishNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { SwissNewsUrls } from \"inferred-types/types\";\nimport { SWISS_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = SWISS_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Swiss news URL\n */\nexport function isSwissNewsUrl(val: unknown): val is SwissNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { TurkishNewsUrls } from \"inferred-types/types\";\nimport { TURKISH_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = TURKISH_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Turkish news URL\n */\nexport function isTurkishNewsUrl(val: unknown): val is TurkishNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { UkNewsUrls } from \"inferred-types/types\";\nimport { UK_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = UK_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a UK news URL\n */\nexport function isUkNewsUrl(val: unknown): val is UkNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { UsNewsUrls } from \"inferred-types/types\";\nimport { US_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = US_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a US news URL\n */\nexport function isUsNewsUrl(val: unknown): val is UsNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { ChineseNewsUrls } from \"inferred-types/types\";\nimport { CHINESE_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = CHINESE_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Chinese news URL\n */\nexport function isChineseNewsUrl(val: unknown): val is ChineseNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { NewsUrls } from \"inferred-types/types\";\nimport { isAustralianNewsUrl } from \"./australian\";\nimport { isBelgiumNewsUrl } from \"./belgium\";\nimport { isCanadianNewsUrl } from \"./canadian\";\nimport { isDanishNewsUrl } from \"./danish\";\nimport { isDutchNewsUrl } from \"./dutch\";\nimport { isFrenchNewsUrl } from \"./french\";\nimport { isGermanNewsUrl } from \"./german\";\nimport { isIndianNewsUrl } from \"./indian\";\nimport { isItalianNewsUrl } from \"./italian\";\nimport { isJapaneseNewsUrl } from \"./japanese\";\nimport { isMexicanNewsUrl } from \"./mexican\";\nimport { isNorwegianNewsUrl } from \"./norwegian\";\nimport { isSouthKoreanNewsUrl } from \"./south-korean\";\nimport { isSpanishNewsUrl } from \"./spanish\";\nimport { isSwissNewsUrl } from \"./swiss\";\nimport { isTurkishNewsUrl } from \"./turkish\";\nimport { isUkNewsUrl } from \"./uk\";\nimport { isUsNewsUrl } from \"./us\";\n\nexport * from \"./australian\";\nexport * from \"./belgium\";\nexport * from \"./canadian\";\nexport * from \"./chinese\";\nexport * from \"./danish\";\nexport * from \"./dutch\";\nexport * from \"./french\";\nexport * from \"./german\";\nexport * from \"./indian\";\nexport * from \"./italian\";\nexport * from \"./japanese\";\nexport * from \"./mexican\";\nexport * from \"./norwegian\";\nexport * from \"./south-korean\";\nexport * from \"./spanish\";\nexport * from \"./swiss\";\nexport * from \"./turkish\";\nexport * from \"./uk\";\nexport * from \"./us\";\n\n/**\n * Type guard which identifies whether the `val` passed in is a URL pointing to a leading\n * worldwide news organization.\n *\n * **Note:** _there is no way to make this all inclusive so we've simply added the most popular\n * new organizations for most countries in western EU, North America, and have added notables such\n * as China, India, Japan, South Korea, and Australia as well._\n */\nexport function isNewsUrl(val: unknown): val is NewsUrls {\n return isAustralianNewsUrl(val) || isBelgiumNewsUrl(val) || isCanadianNewsUrl(val) || isDanishNewsUrl(val) || isDutchNewsUrl(val) || isFrenchNewsUrl(val) || isGermanNewsUrl(val) || isIndianNewsUrl(val) || isItalianNewsUrl(val) || isJapaneseNewsUrl(val) || isMexicanNewsUrl(val) || isNorwegianNewsUrl(val) || isSouthKoreanNewsUrl(val) || isSpanishNewsUrl(val) || isSwissNewsUrl(val) || isTurkishNewsUrl(val) || isUkNewsUrl(val) || isUsNewsUrl(val);\n}\n","import type { UrlsFrom } from \"inferred-types/types\";\nimport { REPO_SOURCE_LOOKUP } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * **isBitbucketUrl**`(val)`\n *\n * Type guard which validates that the value passed in is a valid BitBucket URL\n */\nexport function isBitbucketUrl<T>(val: T): val is T & UrlsFrom<typeof REPO_SOURCE_LOOKUP[\"bitbucket\"]> {\n const valid = REPO_SOURCE_LOOKUP.bitbucket;\n return isString(val) && valid.some(i =>\n val === i\n || val.startsWith(`${i}/`)\n || val.startsWith(`${i}?`),\n );\n}\n","import type { UrlsFrom } from \"inferred-types/types\";\nimport { REPO_SOURCE_LOOKUP } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * **isCodeCommitUrl**`(val)`\n *\n * Type guard which validates that the value passed in is a valid AWS Code Commit URL\n */\nexport function isCodeCommitUrl<T>(val: T): val is T & UrlsFrom<typeof REPO_SOURCE_LOOKUP[\"codecommit\"]> {\n const valid = REPO_SOURCE_LOOKUP.codecommit;\n return isString(val) && valid.some(i =>\n val === i\n || val.startsWith(`${i}/`)\n || val.startsWith(`${i}?`),\n );\n}\n","import type {\n GithubOrgUrl,\n GithubRepoIssuesListUrl,\n GithubRepoIssueUrl,\n GithubRepoProjectsUrl,\n GithubRepoProjectUrl,\n GithubRepoReleasesUrl,\n GithubRepoReleaseTagUrl,\n GithubRepoUrl,\n GithubUrl,\n} from \"inferred-types/types\";\nimport { isString, stripLeading, stripTrailing } from \"inferred-types/runtime\";\n\n/**\n * **isGithubUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * **Github** URL.\n */\nexport function isGithubUrl(val: unknown): val is GithubUrl {\n const valid = [\n \"https://github.com\",\n \"https://www.github.com\",\n \"https://github.io\",\n ];\n return isString(val) && valid.some(i =>\n val === i\n || val.startsWith(`${i}/`)\n || val.startsWith(`${i}?`),\n );\n}\n\n/**\n * **isGithubOrgUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * **Github** _organization_ URL.\n */\nexport function isGithubOrgUrl<T>(val: T): val is GithubOrgUrl & T {\n return isString(val) && (\n val.startsWith(\"https://github.com/\")\n && stripper(val).length === 2\n );\n}\n\nfunction stripper(s: string) {\n return stripTrailing(\n stripLeading(s, \"https://github.com/\"),\n \"/\",\n );\n}\n\n/**\n * **isGithubRepoUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * **Github** _repo_ URL.\n */\nexport function isGithubRepoUrl<T>(val: T): val is GithubRepoUrl & T {\n return !!(isString(val) && (\n val.startsWith(\"https://github.com/\")\n && stripper(val).split(\"/\").length === 2\n ));\n}\n\n/**\n * **isGithubRepoReleasesUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * URL for the _releases_ of a given _repo_.\n *\n * **Related:** `isGithubRepoReleaseTagUrl`\n */\nexport function isGithubRepoReleasesUrl<T>(val: T): val is GithubRepoReleasesUrl & T {\n return isString(val) && (\n val.startsWith(\"https://github.com/\")\n && val.includes(\"/releases\")\n && stripper(val).split(\"/\").length === 3\n );\n}\n\n/**\n * **isGithubRepoReleaseTagUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * URL for the _releases_ of a given _repo_.\n *\n * **Related:** `isGithubRepoReleasesUrl`\n */\nexport function isGithubRepoReleaseTagUrl<T>(val: T): val is GithubRepoReleaseTagUrl & T {\n return isString(val) && (\n val.startsWith(\"https://github.com/\")\n && val.includes(\"/releases/tag/\")\n && stripper(val).length === 4\n );\n}\n\n/**\n * **isGithubIssuesListUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * URL for the _issues_ of a given _repo_.\n *\n * **Related:** `isGithubIssueUrl`\n */\nexport function isGithubIssuesListUrl<T>(val: T): val is GithubRepoIssuesListUrl & T {\n return isString(val)\n && val.startsWith(\"https://github.com/\")\n && val.includes(\"/issues\");\n}\n\n/**\n * **isGithubIssueUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * URL for the _issues_ of a given _repo_.\n *\n * **Related:** `isGithubIssuesListUrl`\n */\nexport function isGithubIssueUrl<T>(val: T): val is GithubRepoIssueUrl & T {\n return isString(val) && (\n val.startsWith(\"https://github.com/\")\n && val.includes(\"/issues/\")\n );\n}\n\n/**\n * **isGithubProjectsListUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * URL for the _projects_ of a given _repo_.\n *\n * **Related:** `isGithubProjectUrl`\n */\nexport function isGithubProjectsListUrl<T>(val: T): val is GithubRepoProjectsUrl & T {\n return isString(val) && (\n val.startsWith(\"https://github.com/\")\n && (val.includes(\"/projects?\") || val.trim().endsWith(\"/projects\"))\n && stripper(val).split(\"/\").length === 3\n );\n}\n\n/**\n * **isGithubProjectUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * URL for a _specific project_ of a given _repo_.\n *\n * **Related:** `isGithubProjectsListUrl`\n */\nexport function isGithubProjectUrl<T>(val: T): val is GithubRepoProjectUrl & T {\n return isString(val) && (\n val.startsWith(\"https://github.com/\")\n && val.includes(\"/projects/\")\n && stripper(val).split(\"/\").length === 4\n );\n}\n\n/**\n * **isGithubReleasesListUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * URL for the _Releases_ of a given _repo_.\n *\n * **Related:** `isGithubReleaseTagUrl`\n */\nexport function isGithubReleasesListUrl<T>(val: T): val is GithubRepoReleasesUrl & T {\n return isString(val) && (\n val.startsWith(\"https://github.com/\")\n && (val.includes(\"/releases?\") || val.trim().endsWith(\"/releases\"))\n && stripper(val).split(\"/\").length === 3\n );\n}\n\n/**\n * **isGithubReleaseTagUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * URL for a _specific release_ of a given _repo_.\n *\n * **Related:** `isGithubReleasesListUrl`\n */\nexport function isGithubReleaseTagUrl<T>(val: T): val is GithubRepoProjectUrl & T {\n return isString(val) && (\n val.startsWith(\"https://github.com/\")\n && val.includes(\"/releases/tag/\")\n && stripper(val).split(\"/\").length === 5\n );\n}\n","import type {\n RepoSource,\n SemanticVersion,\n} from \"inferred-types/types\";\nimport { REPO_SOURCES } from \"inferred-types/constants\";\nimport { isString, stripLeading } from \"inferred-types/runtime\";\n\n/**\n * **isRepoSource**`(val)`\n *\n * Type guard which validates whether the value passed in is a\n * `RepoSource`.\n */\nexport function isRepoSource<T>(v: T): v is T & RepoSource {\n return isString(v) && REPO_SOURCES.includes(v as any);\n}\n\n/**\n * **isSemanticVersion**`(val,[allowPrefix]=false)`\n *\n * Type guard which validates whether the value passed in is a\n * semantic version number.\n *\n * - the optional `allowPrefix` parameter allows for a lowercase \"v\"\n * to be prefixed to the version so that values like `v1.0.12` and\n * `v 1.0.12` are allowed.\n * - by default the `allowPrefix` option is set to false\n */\nexport function isSemanticVersion<T, P extends boolean>(v: T, allowPrefix: P = false as P): v is T & SemanticVersion<P> {\n return (\n isString(v)\n && v.split(\".\").length === 3\n && !Number.isNaN(Number(v.split(\".\")[1]))\n && !Number.isNaN(Number(v.split(\".\")[2]))\n && (\n !Number.isNaN(Number(v.split(\".\")[0]))\n || (\n allowPrefix && !Number.isNaN(Number(stripLeading(v.split(\".\")[0], \"v\").trim()))\n )\n )\n );\n}\n","import type { RepoUrls } from \"inferred-types/types\";\nimport { isBitbucketUrl } from \"./bitbucket\";\nimport { isCodeCommitUrl } from \"./codeCommit\";\nimport { isGithubUrl } from \"./github\";\n\nexport * from \"./bitbucket\";\nexport * from \"./codeCommit\";\nexport * from \"./github\";\nexport * from \"./isSemanticVersion\";\n\n/**\n * **isRepoUrl**`(val)`\n *\n * Type guard which validates that the value passed in is a valid Repo URL\n */\nexport function isRepoUrl(val: unknown): val is RepoUrls {\n return isGithubUrl(val) || isBitbucketUrl(val) || isCodeCommitUrl(val);\n}\n","import type {\n AmazonUrl,\n AppleUrl,\n BestBuyUrl,\n CostCoUrl,\n CvsUrl,\n DellUrl,\n EbayUrl,\n EtsyUrl,\n HandMUrl,\n HomeDepotUrl,\n IkeaUrl,\n KrogerUrl,\n LowesUrl,\n MacysUrl,\n NikeUrl,\n RetailUrl,\n TargetUrl,\n WalgreensUrl,\n WalmartUrl,\n WayFairUrl,\n WholeFoodsUrl,\n ZaraUrl,\n} from \"inferred-types/types\";\nimport {\n AMAZON_DNS,\n APPLE_DNS,\n BEST_BUY_DNS,\n COSTCO_DNS,\n CVS_DNS,\n DELL_DNS,\n EBAY_DNS,\n ETSY_DNS,\n HM_DNS,\n HOME_DEPOT_DNS,\n KROGER_DNS,\n MACYS_DNS,\n NIKE_DNS,\n TARGET_DNS,\n WALGREENS_DNS,\n WALMART_DNS,\n WAYFAIR_DNS,\n WHOLE_FOODS_DNS,\n ZARA_DNS,\n} from \"inferred-types/constants\";\nimport { isString } from \"../isString\";\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Whole Food Markets**.\n */\nexport function isWholeFoodsUrl(val: unknown): val is WholeFoodsUrl {\n return isString(val) && WHOLE_FOODS_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **CVS** pharmacy.\n */\nexport function isCvsUrl(val: unknown): val is CvsUrl {\n return isString(val) && CVS_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Walgreens** pharmacy.\n */\nexport function isWalgreensUrl(val: unknown): val is WalgreensUrl {\n return isString(val) && WALGREENS_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **CVS** pharmacy.\n */\nexport function isKrogersUrl(val: unknown): val is KrogerUrl {\n return isString(val) && KROGER_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **CVS** pharmacy.\n */\nexport function isZaraUrl(val: unknown): val is ZaraUrl {\n return isString(val) && ZARA_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **H&M** retailer.\n */\nexport function isHmUrl(val: unknown): val is HandMUrl {\n return isString(val) && HM_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Dell** retailer.\n */\nexport function isDellUrl(val: unknown): val is DellUrl {\n return isString(val) && DELL_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Ikea** retailer.\n */\nexport function isIkeaUrl(val: unknown): val is IkeaUrl {\n return isString(val) && KROGER_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Lowes** retailer.\n */\nexport function isLowesUrl(val: unknown): val is LowesUrl {\n return isString(val) && KROGER_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Macy's** retailer.\n */\nexport function isNikeUrl(val: unknown): val is NikeUrl {\n return isString(val) && NIKE_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Macy's** retailer.\n */\nexport function isWayfairUrl(val: unknown): val is WayFairUrl {\n return isString(val) && WAYFAIR_DNS.some(i => val.startsWith(`https://${i}`));\n}\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Macy's** retailer.\n */\nexport function isBestBuyUrl(val: unknown): val is BestBuyUrl {\n return isString(val) && BEST_BUY_DNS.some(i => val.startsWith(`https://${i}`));\n}\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Macy's** retailer.\n */\nexport function isCostCoUrl(val: unknown): val is CostCoUrl {\n return isString(val) && COSTCO_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Macy's** retailer.\n */\nexport function isEtsyUrl(val: unknown): val is EtsyUrl {\n return isString(val) && ETSY_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Macy's** retailer.\n */\nexport function isTargetUrl(val: unknown): val is TargetUrl {\n return isString(val) && TARGET_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Macy's** retailer.\n */\nexport function isEbayUrl(val: unknown): val is EbayUrl {\n return isString(val) && EBAY_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for the **Home Depot** retailer.\n */\nexport function isHomeDepotUrl(val: unknown): val is HomeDepotUrl {\n return isString(val) && HOME_DEPOT_DNS.some(i => val.startsWith(`https://${i}`));\n}\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for the **Macy's** retailer.\n */\nexport function isMacysUrl(val: unknown): val is MacysUrl {\n return isString(val) && MACYS_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Apple**.\n */\nexport function isAppleUrl(val: unknown): val is AppleUrl {\n return isString(val) && APPLE_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Walmart**.\n */\nexport function isWalmartUrl(val: unknown): val is WalmartUrl {\n return isString(val) && WALMART_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Walmart**.\n */\nexport function isAmazonUrl(val: unknown): val is AmazonUrl {\n return isString(val) && AMAZON_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which check if the passed in value is a Url for one\n * of the top retailers in the world\n */\nexport function isRetailUrl(val: unknown): val is RetailUrl {\n return isAmazonUrl(val) || isWalgreensUrl(val) || isAppleUrl(val) || isMacysUrl(val) || isEbayUrl(val) || isHomeDepotUrl(val) || isTargetUrl(val) || isEtsyUrl(val) || isCostCoUrl(val) || isBestBuyUrl(val) || isWayfairUrl(val) || isNikeUrl(val) || isLowesUrl(val) || isIkeaUrl(val) || isDellUrl(val) || isHmUrl(val) || isZaraUrl(val) || isKrogersUrl(val) || isWalgreensUrl(val) || isCvsUrl(val) || isWholeFoodsUrl(val);\n}\n","import type { SocialMediaUrl } from \"inferred-types/types\";\nimport { SOCIAL_MEDIA } from \"inferred-types/constants\";\nimport { isString } from \"../isString\";\n\nconst URL = SOCIAL_MEDIA.flatMap(i => i.baseUrls);\nconst PROFILE = SOCIAL_MEDIA.map(i => i.profileUrl);\n\n/**\n * type guard which validates that `val` is a social media URL.\n *\n * **Related:** `isSocialMediaProfileUrl`\n */\nexport function isSocialMediaUrl(val: unknown): val is SocialMediaUrl {\n return isString(val) && URL.some(i => val.startsWith(i));\n}\n\n/**\n * type guard which validates that `val` is a user profile URL on a social\n * media platform.\n *\n * **Related:** `isSocialMediaUrl`\n */\nexport function isSocialMediaProfileUrl(val: unknown): val is SocialMediaUrl {\n return isString(val) && PROFILE.some(i => i.startsWith(`${i}`));\n}\n","import type {\n YouTubeCreatorUrl,\n YouTubeFeedType,\n YouTubeFeedUrl,\n YouTubePlaylistUrl,\n YouTubeShareUrl,\n YouTubeUrl,\n YouTubeVideosInPlaylist,\n} from \"inferred-types/types\";\nimport { hasUrlQueryParameter, isString, isUndefined } from \"inferred-types/runtime\";\n\n/**\n * **isYouTubeUrl**`(val)`\n *\n * Type guard which checks whether the passed in value is a valid\n * YouTube URL.\n */\nexport function isYouTubeUrl<T>(val: T): val is T & YouTubeUrl {\n return isString(val) && (\n val.startsWith(\"https://www.youtube.com\")\n || val.startsWith(\"https://youtube.com\")\n || val.startsWith(\"https://youtu.be\")\n );\n}\n\n/**\n * **isYouTubeShareUrl**`(val)`\n *\n * Type guard which checks whether the passed in value is a URL\n * from YouTube's _URL shortening_ site `https://youtu.be`.\n */\nexport function isYouTubeShareUrl<T>(val: T): val is T & YouTubeShareUrl {\n return isString(val) && val.startsWith(`https://youtu.be`);\n}\n\n/**\n * **isYouTubeVideoUrl**`(val)`\n *\n * Type guard which checks whether the passed in value is a valid\n * YouTube URL _which plays video_.\n */\nexport function isYouTubeVideoUrl<T>(val: T): val is T & YouTubeUrl {\n return isString(val) && (\n val.startsWith(\"https://www.youtube.com\")\n || val.startsWith(\"https://youtube.com\")\n || val.startsWith(\"https://youtu.be\")\n );\n}\n\n/**\n * **isYouTubePlaylistUrl**`(val)`\n *\n * Type guard which checks whether the passed in value is a valid\n * YouTube URL which points to a \"playlist\" on the platform.\n */\nexport function isYouTubePlaylistUrl<T>(val: T): val is T & YouTubePlaylistUrl {\n return isString(val) && (\n val === `https://www.youtube.com/feed/playlists`\n || val === `https://youtube.com/feed/playlists`\n || val === `https://www.youtube.com/channel/playlists`\n || val === `https://youtube.com/channel/playlists`\n || (val.startsWith(`https://www.youtube.com/@`) && val.endsWith(`/playlists`))\n || (val.startsWith(`https://youtube.com/@`) && val.endsWith(`/playlists`))\n );\n}\n\n/**\n * maps the \"feed type\" to a URL path\n */\nfunction feed_map<T extends YouTubeFeedType | undefined>(type: T): string {\n return isUndefined(type)\n ? `/feed`\n : type === \"liked\"\n ? `/playlist?list=LL`\n : [\"history\", \"playlists\", \"trending\", \"subscriptions\"].includes(type)\n ? `/feed/${type}`\n : `/feed/`;\n}\n\n/**\n * **isYouTubeFeedUrl**`(val,[kind])**\n *\n * Type guard which checks whether the passed in value is a valid\n * YouTube URL which responds with \"feed\" content. This is content\n * which is available to a logged in user and helps them see lists\n * of videos related to their settings.\n *\n * By default any \"feed\" URL is matched but you can narrow that down\n * to a specific feed type by specifying the `kind` variable.\n */\nexport function isYouTubeFeedUrl<\n T,\n U extends YouTubeFeedType = YouTubeFeedType,\n>(val: T, type?: U): val is T & YouTubeFeedUrl<U> {\n return isString(val) && (\n val.startsWith(`https://www.youtube.com${feed_map(type)}`)\n || val.startsWith(`https://youtube.com${feed_map(type)}`)\n );\n}\n\n/**\n * **isYouTubeHistoryUrl**`(val,[kind])**\n *\n * Type guard which checks whether the passed in value is a valid\n * YouTube URL which responds with a user's history feed.\n */\nexport function isYouTubeFeedHistoryUrl<T>(val: T): boolean {\n return isString(val) && (\n val.startsWith(`https://www.youtube.com/feed/history`)\n || val.startsWith(`https://youtube.com/feed/history`)\n );\n}\n\n/**\n * **isYouTubePlaylistsUrl**`(val,[kind])**\n *\n * Type guard which checks whether the passed in value is a valid\n * YouTube URL which responds with a user's own playlists page.\n */\nexport function isYouTubePlaylistsUrl<T>(val: T): boolean {\n return isString(val) && (\n val.startsWith(`https://www.youtube.com/feed/playlists`)\n || val.startsWith(`https://youtube.com/feed/playlists`)\n );\n}\n\n/**\n * **isYouTubeTrendingUrl**`(val,[kind])**\n *\n * Type guard which checks whether the passed in value is a valid\n * YouTube URL which responds with a user's own history feed.\n */\nexport function isYouTubeTrendingUrl<T>(val: T): boolean {\n return isString(val) && (\n val.startsWith(`https://www.youtube.com/feed/trending`)\n || val.startsWith(`https://youtube.com/feed/trending`)\n );\n}\n\n/**\n * **isYouTubeSubscriptionsUrl**`(val,[kind])**\n *\n * Type guard which checks whether the passed in value is a valid\n * YouTube URL which responds with a user's own subscriptions feed.\n */\nexport function isYouTubeSubscriptionsUrl<T>(val: T): boolean {\n return isString(val) && (\n val.startsWith(`https://www.youtube.com/feed/subscriptions`)\n || val.startsWith(`https://youtube.com/feed/subscriptions`)\n );\n}\n\nexport function isYouTubeCreatorUrl<T extends string>(url: T): url is T & YouTubeCreatorUrl {\n return isString(url) && (\n url.startsWith(`https://www.youtube.com/@`)\n || url.startsWith(`https://youtube.com/@`)\n || url.startsWith(`https://www.youtube.com/channel/`)\n );\n}\n\nexport function isYouTubeVideosInPlaylist<T>(val: T): val is T & YouTubeVideosInPlaylist {\n return isString(val) && (\n val.startsWith(`https://www.youtube.com/playlist?`)\n || val.startsWith(`https://youtube.com/playlist?`)\n ) && hasUrlQueryParameter(val, \"list\");\n}\n","import type { VueRef } from \"inferred-types/types\";\nimport { isObject } from \"inferred-types/runtime\";\n\nexport function isVueRef(val: unknown): val is VueRef {\n if (isObject(val)) {\n const keys = Object.keys(val);\n\n return !![\"dep\", \"__v_isRef\"].every(i => keys.includes(i));\n }\n\n return false;\n}\n","import type { AfterFirst, First, IsEqual, Narrowable, RemoveNever } from \"inferred-types/types\";\nimport { isDefined } from \"src/type-guards\";\n\ntype NotUndefined<\n T extends readonly unknown[],\n R extends readonly unknown[] = [],\n> = [] extends T\n ? RemoveNever<R>\n : NotUndefined<\n AfterFirst<T>,\n [\n ...R,\n IsEqual<First<T>, undefined> extends true\n ? never\n : Exclude<First<T>, undefined>,\n ]\n >;\n\n/**\n * Filters an array/tuple down to elements which are _not undefined_ and\n * preserves as much of the type as possible.\n */\nexport function filterUndefined<\n T extends readonly N[],\n N extends Narrowable,\n>(...val: T) {\n return val.filter(i => isDefined(i)) as NotUndefined<T>;\n}\n","import type {\n Find,\n FromDefn,\n Narrowable,\n ShapeCallback,\n Tuple,\n} from \"inferred-types/types\";\nimport { isArray, isObject } from \"inferred-types/runtime\";\n\n/**\n * **Finder**\n *\n * A configured utility designed to find elements in a list.\n */\nexport type Finder<\n TList extends Tuple,\n TDeref extends string | number | null,\n> = <TExtends extends Narrowable | ShapeCallback>(value: TExtends) => Find<\n TList,\n \"equals\",\n FromDefn<TExtends>,\n TDeref\n>;\n\n/**\n * **find**(list, [deref]) => (value) => el | undefined\n *\n * A higher order function that allows _finding_ an element in a list\n * while preserving any available type information.\n */\nexport function find<\n TList extends Tuple,\n TDeref extends string | number | null = null,\n>(list: TList, deref: TDeref = null as TDeref): Finder<TList, TDeref> {\n return <\n TExtends extends Narrowable | ShapeCallback,\n >(comparator: TExtends): Find<TList, \"equals\", FromDefn<TExtends>, TDeref> => {\n return list.find((i: any) => {\n const val: any = deref\n ? isObject(i) || isArray(i)\n ? (deref as any) in i\n ? (i as any)[deref]\n : undefined\n : i\n : i;\n return val === comparator;\n }) as unknown as Find<TList, \"equals\", FromDefn<TExtends>, TDeref>;\n };\n}\n","import type { Container, GetEach } from \"inferred-types/types\";\n\nimport { Never } from \"inferred-types/constants\";\nimport { get, isContainer, isErrorCondition, isNull } from \"inferred-types/runtime\";\n\nexport interface GetEachOptions<\n THandleErrors,\n> {\n handleErrors?: THandleErrors;\n}\n\n/**\n * **getEach**(list, dotPath, [options])\n *\n * Returns a specific _property_ (from an object) or _index_ (from an array) from a list\n * of items.\n *\n * - the options allow for a \"default value\" to be substituted for any _undefined_ or _never_ values\n * - errors in looking up dotpath's will -- by default -- be removed as this is typically the desired behavior but you can also choose from:\n * - `to-never`: converts _type_ to `never` but runtime maintains error message\n * - `report`: both _type_ and runtime are in the `ErrorCondition` format\n * - the dotpath is VueJS aware of possible `Ref<T>` objects and will gracefully navigate\n * over them without the need to offset by `.value`\n */\nexport function getEach<\n TList extends readonly unknown[],\n TDotPath extends string | null,\n>(\n list: TList,\n dotPath: TDotPath,\n): GetEach<[...TList], TDotPath> {\n const result: unknown = list\n .map(i => isNull(dotPath)\n ? i\n : isContainer(i)\n ? get(i as Container, dotPath as TDotPath & string)\n : Never,\n )\n .filter(i => !isErrorCondition(i));\n\n return result as GetEach<\n [...TList],\n TDotPath\n >;\n}\n","import type {\n IndexOf,\n Narrowable,\n ObjectKey,\n Tuple,\n} from \"inferred-types/types\";\nimport {\n errCondition,\n isArray,\n isNull,\n isNumber,\n isObject,\n} from \"inferred-types/runtime\";\n\n/**\n * **indexOf**(val, index)\n *\n * A dereferencing utility which receives a **value** and an **index** and then\n * returns `value[idx]`.\n *\n * - If the _index_ is passed in as a `null` value then no dereferencing will be done\n * and it will simply pass back the _value_.\n * - If an array is passed in, you are allowed to use negative values to dereference\n * off the back of the array.\n */\nexport function indexOf<\n TContainer extends Narrowable | Tuple,\n TIdx extends PropertyKey | null,\n>(val: TContainer, index: TIdx) {\n const isNegative = isNumber(index) && index < 0;\n if (isNegative && !Array.isArray(val)) {\n throw new Error(`The indexOf(val,idx) utility received a negative index value [${index}] but the value being de-references is not an array [${typeof val}]!`);\n }\n if (isNegative && Array.isArray(val) && val.length < Math.abs(index)) {\n throw new Error(`The indexOf(val,idx) utility received a negative index of ${index} but the length of the array passed in is only ${val.length}! This is not allowed.`);\n }\n\n /** real index after considering negative indexing */\n const idx = isNegative && Array.isArray(val)\n ? val.length + 1 - Math.abs(index)\n : index;\n\n return (\n index === null\n ? val\n : isNull(idx)\n ? val\n : isArray(val)\n ? Number(idx as PropertyKey) in val\n ? val[Number(idx)]\n : errCondition(\"invalid-index\", `attempt to index a numeric array with an invalid index: ${Number(idx)}`)\n : isObject(val)\n ? String(idx as ObjectKey) in val\n ? val[String(idx) as ObjectKey]\n : errCondition(\"invalid-index\", `attempt to index a dictionary object with an invalid index: ${String(idx)}`)\n : errCondition(\"invalid-container-type\", `Attempt to use indexOf() on an invalid container type: ${typeof val}`)\n ) as unknown as IndexOf<TContainer, TIdx>;\n}\n","import type { Container, Intersection } from \"inferred-types/types\";\nimport { get, getEach, isIndexable } from \"inferred-types/runtime\";\nimport { ifNotNull } from \"../boolean-logic/ifNotNull\";\n\nfunction intersectWithOffset<\n A extends readonly unknown[],\n B extends readonly unknown[],\n TDeref extends string | number,\n>(a: A, b: B, deref: TDeref) {\n const aIndexable = a.every(i => isIndexable(i));\n const bIndexable = b.every(i => isIndexable(i));\n\n if (!aIndexable || !bIndexable) {\n if (!aIndexable) {\n throw new Error(`The \"a\" array passed into intersect(a,b) was not fully composed of indexable properties: ${a.map(i => typeof i).join(\", \")}`);\n }\n else {\n throw new Error(`The \"b\" array passed into intersect(a,b) was not fully composed of indexable properties: ${b.map(i => typeof i).join(\", \")}`);\n }\n }\n\n const aMatches = getEach(a, deref as any) as readonly unknown[];\n const bMatches = getEach(b, deref as any) as readonly unknown[];\n\n const sharedKeys = ifNotNull(\n deref,\n v => [\n a.filter(i => Array.from(bMatches).includes(get(i as Container, v as string | null))),\n b.filter(i => Array.from(aMatches).includes(get(i as Container, v as string | null))),\n ],\n () => a.filter(k => b.includes(k)),\n );\n\n return sharedKeys;\n}\n\nfunction intersectNoOffset<\n A extends readonly unknown[],\n B extends readonly unknown[],\n>(a: A, b: B) {\n return a.length < b.length\n ? a.filter(val => b.includes(val))\n : b.filter(val => a.includes(val));\n}\n\n/**\n * **intersection**(a,b,[deref])\n *\n * A set operation which provides the _intersection_ between\n * between two array's `a` and `b`.\n *\n * - when passing in arrays, you may also pass in a _dereferencing_ property\n * which will be used for arrays of objects (or sub-arrays) so that the comparison\n * is done on the dereferenced value versus the value as a whole.\n */\nexport function intersection<\n A extends readonly unknown[],\n B extends readonly unknown[],\n TDeref extends string | null = null,\n>(a: A, b: B, deref: TDeref = null as TDeref): Intersection<A, B, TDeref> {\n return (\n deref === null\n ? intersectNoOffset(a, b) as unknown\n : intersectWithOffset(a, b, deref) as unknown\n ) as unknown as Intersection<A, B, TDeref>;\n}\n","import type { Join, Tuple } from \"inferred-types/types\";\n\nexport type Joiner<\n TJoin extends string,\n> = <TContent extends Tuple<string>,\n>(...tuple: TContent\n) => Join<TContent, TJoin>;\n\n/**\n * **join**(joinWith)(tuple) -> joined\n *\n * A higher order runtime utility which provides the ability to create\n * type-strong join's with an array of string and a joining string.\n *\n * ```ts\n * // \"hello world\"\n * const helloWorld = join(\"\")(\"hello\", \" \", \"world\");\n * // \"foo, bar, baz\"\n * const list = join(\", \")(\"foo\", \"bar\", \"baz\");\n * ```\n */\nexport function joinWith<TJoin extends string>(\n joinWith: TJoin,\n) {\n /**\n * add elements of the tuple you want to join\n */\n return <TContent extends readonly string[]>(\n ...tuple: TContent\n ): Join<TContent, TJoin> => {\n const tup: readonly string[] = tuple;\n return tup.join(joinWith) as unknown as Join<TContent, TJoin>;\n };\n}\n","import type { Last, Tuple } from \"inferred-types/types\";\n\nexport function last<T extends Tuple>(list: T): Last<T> {\n return [...list].pop() as Last<T>;\n}\n","import type { LogicalReturns, LogicFunction } from \"inferred-types/types\";\nimport { Never } from \"inferred-types/constants\";\nimport { isBoolean, isFunction } from \"inferred-types/runtime\";\n\nexport function logicalReturns<\n TConditions extends readonly (boolean | LogicFunction)[],\n>(conditions: TConditions) {\n return conditions.map(c => isBoolean(c)\n ? c\n : isFunction(c)\n ? c()\n : Never,\n ) as unknown as LogicalReturns<TConditions>;\n}\n","import type {\n AnyObject,\n Narrowable,\n NarrowObject,\n ObjectKey,\n ToKv,\n} from \"inferred-types/types\";\nimport { Never } from \"inferred-types/constants\";\nimport {\n createFnWithProps,\n isArray,\n isObject,\n isTrue,\n toKeyValue,\n} from \"inferred-types/runtime\";\n\nexport type MapOverObject<\n TObj extends AnyObject,\n> = {\n kind: \"MapOverObject\";\n} & (\n <\n TCb extends <K extends ToKv<TObj>[number]>(cb: K) => unknown,\n >(cb: TCb) => {\n [K in keyof TObj]: ReturnType<TCb>\n }\n );\n\nexport type MapOverObjectToArray<\n TContainer extends AnyObject,\n> = {\n kind: \"MapOverObjectToArray\";\n} & (\n <K extends keyof TContainer & PropertyKey>(k: K, v: TContainer[K]) => unknown\n );\n\nexport type MapOverArray<\n TContainer extends readonly unknown[],\n> = {\n kind: \"MapOverArray\";\n} & (\n <K extends keyof TContainer & PropertyKey>(k: K, v: TContainer[K]) => unknown\n );\n\ntype MapOver<\n TContainer extends AnyObject | readonly unknown[],\n TArr extends boolean = false,\n> = TContainer extends readonly unknown[]\n ? MapOverArray<TContainer>\n : TContainer extends AnyObject\n ? [TArr] extends [true]\n ? MapOverObjectToArray<TContainer>\n : MapOverObject<TContainer>\n : never;\n\nexport function mapOver<\n TContainer extends NarrowObject<N> | AnyObject,\n N extends Narrowable,\n TArr extends boolean,\n>(\n input: TContainer,\n toArray: TArr = false as TArr,\n): MapOver<TContainer, TArr> {\n const kind = {\n kind: Array.isArray(input)\n ? \"MapOverArray\"\n : isObject(input) && isTrue(toArray)\n ? \"MapOverObjectToArray\"\n : isObject(input)\n ? \"MapOverObject\"\n : Never,\n };\n\n const fn = <\n TCb extends <KV extends ToKv<TContainer>[number]>(kv: KV) => Narrowable,\n >(\n cb: TCb,\n ) => {\n let output = (\n isTrue(toArray)\n ? [] as any[]\n : isArray(input) ? [] as any[] : {} as Record<ObjectKey, any>\n ) as [TArr] extends [true]\n ? any[]\n : TContainer extends readonly unknown[]\n ? any[]\n : TContainer extends AnyObject\n ? Record<any, any>\n : never;\n\n const kvs = isObject(input)\n ? toKeyValue(input)\n : input;\n\n for (const kv of kvs) {\n if (isObject(output) && isObject(input)) {\n // maintain object as object\n output = {\n ...output,\n [kv.key]: cb(kv),\n };\n }\n else if (isArray(output)) {\n output.push(cb(kv));\n }\n }\n\n return output;\n };\n return createFnWithProps(fn, kind) as unknown as MapOver<TContainer, TArr>;\n}\n","import type { Reverse } from \"inferred-types/types\";\n\n/**\n * **reverse**(list)\n *\n * Allows reversing the order of a readonly array and preserving the types.\n */\nexport function reverse<T extends readonly unknown[]>(list: T): Reverse<T> {\n return [...list].reverse() as unknown as Reverse<T>;\n}\n","import type {\n First,\n IsEqual,\n IsUndefined,\n Narrowable,\n} from \"inferred-types/types\";\nimport { isDefined } from \"inferred-types/runtime\";\n\ntype Rtn<\n T extends readonly K[] | K[] | undefined,\n K extends Narrowable,\n> = IsUndefined<T> extends true\n ? undefined\n : T extends readonly K[] | K[]\n ? IsEqual<T[\"length\"], number> extends true\n ? undefined | string\n : T[\"length\"] extends 0\n ? undefined\n : First<T>\n : never;\n\n/**\n * **shift**(list)\n *\n * Takes a list of elements and:\n *\n * - if the list is empty returns _undefined_\n * - otherwise returns the first element in the list\n *\n * **Note:** unlike using the builtin `ARR.shift()` method:\n *\n * - the source array is _never_ mutated\n * - you can shift off the first element of the readonly array as well a mutable one\n * (because the underlying array is _not_ mutated)\n * - in **many** cases, you should be using a queue of some sort with utils like\n * `createLifoQueue()` or `createFifoQueue()`\n *\n */\nexport function shift<\n T extends readonly K[] | K[] | undefined,\n K extends Narrowable,\n>(list: T): Rtn<T, K> {\n let rtn;\n if (isDefined(list)) {\n rtn = (\n list.length === 0\n ? undefined\n : list[0]\n ) as First<T>;\n\n try {\n // remove item from source array where possible\n // note: not possible when array is frozen by being\n // made readonly\n list = list.slice(1) as any;\n }\n catch {\n // ignore\n }\n }\n else {\n rtn = undefined;\n }\n\n return rtn as Rtn<T, K>;\n}\n","import type { Slice, Tuple } from \"inferred-types/types\";\n\n/**\n * **slice**(list, start, end)\n *\n * Runtime utility to slice an array while maintaining strong\n * types.\n */\nexport function slice<\n TList extends Tuple,\n TStart extends number,\n TEnd extends number,\n>(list: TList, start: TStart, end: TEnd) {\n return list.slice(start, end) as Slice<TList, TStart, TEnd>;\n}\n","import type { First, Narrowable, UnionToTuple, Unique } from \"inferred-types/types\";\n\n/**\n * **unique**\n *\n * Runtime utility which removes intersecting values from two sets and\n * provides a unique values contained in each set.\n */\nexport function unique<\n N extends Narrowable,\n K extends number,\n T extends readonly (Record<K, N> | Narrowable)[],\n>(...values: T) {\n const u: any[] = [];\n for (const i of values.flat()) {\n if (!u.includes(i)) {\n u.push(i);\n }\n }\n\n return u as First<T> extends readonly (Record<K, N> | Narrowable)[]\n ? Unique<UnionToTuple<First<T>>>\n : Unique<T>;\n}\n","import type {\n AnyObject,\n Box,\n Narrowable,\n} from \"inferred-types/types\";\n\nexport type BoxValue<T extends Box<unknown>> = T extends Box<infer V> ? V : never;\n\nexport type BoxedFnParams<T extends Box<unknown>> = T extends Box<infer V>\n ? V extends (...args: infer A) => unknown\n ? A\n : []\n : [];\n\n/**\n * Allows a value with an inner-type to be boxed into a dictionary\n * so that this type inference is preserved with the help of\n * [instantiation expressions](https://devblogs.microsoft.com/typescript/announcing-typescript-4-7-beta/#instantiation-expressions).\n *\n * NOTE: this feature is immature at best right now\n */\nexport function box<T extends Narrowable>(value: T): Box<T> {\n const rtn: Box<T> = {\n __type: \"box\",\n value,\n unbox: (<P extends unknown[], R extends Narrowable>(...p: P): R => {\n return typeof value === \"function\" ? value(...p) : value;\n }) as Box<T>[\"unbox\"],\n };\n\n return rtn;\n}\n\nexport function isBox(thing: Narrowable): thing is Box<unknown> {\n return (\n\n typeof thing === \"object\" && \"__type\" in (thing as object) && (thing as any).__type === \"box\"\n );\n}\n\n/**\n * **boxDictionaryValues**(dict)\n *\n * Runtime utility which boxes each value in a dictionary\n */\nexport function boxDictionaryValues<T extends AnyObject>(dict: T) {\n const keys = Object.keys(dict) as (string & keyof T)[];\n\n return keys.reduce(\n (acc, key) => ({ ...acc, [key]: box(dict[key] as Narrowable) }),\n {} as {\n [K in keyof T]: Box<T[K]>;\n },\n );\n}\n\nexport type Unbox<T> = T extends Box<infer U> ? U : T;\n\n// TODO: it would make sense in the future to use `b.unbox` instead\n// of `b.value` to keep consistent but currently value behaves more\n// consistently and with somewhat stronger typing\n\n/**\n * **unbox**(maybeBox)\n *\n * Unboxes a value if it was a box; otherwise it leaves _as is_.\n */\nexport function unbox<T extends Narrowable>(val: T): Unbox<T> {\n return (isBox(val)\n ? val.value\n : val\n ) as Unbox<T>;\n}\n","/**\n * **capitalize**()\n *\n * Run time utility which _un_-capitalizes a word/string and preserves\n * string literal types.\n */\nexport function capitalize<T extends string>(str: T): Capitalize<T> {\n return `${str?.slice(0, 1).toUpperCase()}${str?.slice(1)}` as Capitalize<T>;\n}\n","import type { ColorFnOptOpacity, ColorFnValue, CssColorFn, CssColorSpace } from \"inferred-types/types\";\n\n/**\n * **cssColor**`(colorspace, v1, v2, v3, [opacity]) -> CssColorFn`\n *\n * Produces a string literal for a CSS v4 `color()` function.\n */\nexport function cssColor<\n TColorSpace extends CssColorSpace,\n TV1 extends ColorFnValue,\n TV2 extends ColorFnValue,\n TV3 extends ColorFnValue,\n TOp extends undefined | ColorFnOptOpacity,\n>(color: TColorSpace, v1: TV1, v2: TV2, v3: TV3, opacity?: TOp) {\n return `color(${color} ${v1} ${v2} ${v3}${opacity ? ` / ${opacity}` : \"\"}` as CssColorFn<\n TColorSpace,\n TV1,\n TV2,\n TV3,\n TOp extends ` / ${number}`\n ? TOp\n : \"\"\n >;\n}\n","import type {\n TwChromaLookup,\n TwColor,\n TwHue,\n TwLuminosity,\n TwLuminosityLookup,\n} from \"inferred-types/types\";\nimport {\n TW_CHROMA,\n TW_HUE,\n TW_LUMINOSITY,\n} from \"inferred-types/constants\";\n\ntype Rtn<\n TColor extends TwColor,\n TLum extends TwLuminosity,\n> =\n TLum extends keyof TwLuminosityLookup\n ? TLum extends keyof TwChromaLookup\n ? TColor extends keyof TwHue\n ? `oklch(${TwLuminosityLookup[TLum]} ${TwChromaLookup[TLum]} ${TwHue[TColor]})`\n : never\n : never\n : never;\n\n/**\n * **twColor**`(color, luminosity)` => `oklch(...)`\n *\n * Provides a Tailwind Color using the `oklch` color\n * specification. The output is intended to put into\n * a CSS property.\n *\n * **Related:** `twColorRgb()`\n */\nexport function twColor<\n TColor extends TwColor,\n TLum extends TwLuminosity,\n>(\n color: TColor,\n luminosity: TLum,\n): Rtn<TColor, TLum> {\n const lum: number = luminosity in TW_LUMINOSITY\n ? TW_LUMINOSITY[luminosity]\n : 0;\n const chroma: number = luminosity in TW_CHROMA\n ? TW_CHROMA[luminosity]\n : 0;\n const hue = TW_HUE[color];\n return `oklch(${lum} ${chroma} ${hue})` as unknown as Rtn<TColor, TLum>;\n}\n","import type { EnsureLeading } from \"inferred-types/types\";\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * **ensureLeading**(content, strip)\n *\n * Runtime utility which ensures that last part of a string -- `content` -- has the\n * substring `ensure` at the end and adds it if not present.\n */\nexport function ensureLeading<\n T extends string | number,\n U extends string | number,\n>(\n content: T,\n ensure: U,\n) {\n const output: string = String(content);\n\n return (\n output.startsWith(String(ensure))\n ? content\n : isString(content)\n ? `${ensure}${content}`\n : Number(`${ensure}${content}`)\n ) as EnsureLeading<T, U>;\n}\n","import type { EnsureSurround } from \"inferred-types/types\";\nimport { ensureLeading, ensureTrailing } from \"inferred-types/runtime\";\n\n/**\n * **ensureSurround**(prefix, postfix) -> (input) -> `${prefix}${input}${postfix}`\n *\n * A higher order runtime utility which receives a prefix and postfix string\n * on it's first call. This returns a secondary function which will _ensure_\n * the given prefix/postfix's surround the input (without duplicating the\n * prefix/postfix characters if they were already there).\n *\n * **Related:** `surround()`\n */\nexport function ensureSurround<\n TPrefix extends string,\n TPostfix extends string,\n>(prefix: TPrefix, postfix: TPostfix) {\n const fn = <TInput extends string>(\n input: TInput,\n ): EnsureSurround<TInput, TPrefix, TPostfix> => {\n let result: string = input;\n\n result = ensureLeading(result, prefix);\n result = ensureTrailing(result, postfix);\n\n return result as EnsureSurround<TInput, TPrefix, TPostfix>;\n };\n\n return fn;\n}\n","import type { EnsureTrailing } from \"inferred-types/types\";\n\n/**\n * **ensureTrailing**(content, strip)\n *\n * Runtime utility which ensures that last part of a string -- `content` -- has the\n * substring `ensure` at the end and adds it if not present.\n */\nexport function ensureTrailing<\n T extends string,\n U extends string,\n>(\n content: T,\n ensure: U,\n): EnsureTrailing<T, U> {\n return (\n //\n (content.endsWith(ensure) ? content : `${content}${ensure}`) as EnsureTrailing<T, U>\n );\n}\n","import type { RetainAfter, RetainUntil, TypeSubtype } from \"inferred-types/types\";\nimport { isTypeSubtype } from \"inferred-types/runtime\";\n\n/**\n * **getTypeSubTyp**`(str)`\n *\n * Returns a two element tuple representing the `Type` and `SubType`\n * independantly.\n *\n * - can take either a \"blessed\" `TypeSubtype` as input or any string\n * literal of `${string}/${string}` but in the latter case if the\n * string does not pass the isTypeSubtype() test then it will throw\n * an error (InvalidTypeSubtype).\n *\n * **Related:** `TypeSubtype`, `isTypeSubtype`\n */\nexport function getTypeSubtype<T extends TypeSubtype | `${string}/${string}`>(str: T) {\n if (isTypeSubtype(str)) {\n const [t, st] = str.split(\"/\");\n\n return [t, st] as [RetainUntil<T, \"/\">, RetainAfter<T, \"/\">];\n }\n else {\n const err = new Error(`An invalid Type/Subtype was passed into getTypeSubtype(${str})`);\n err.name = \"InvalidTypeSubtype\";\n throw err;\n }\n}\n","import type { Narrowable } from \"inferred-types/types\";\n\n/**\n * An identity function for any type, with the goal of preserving literal type information\n * where ever possible.\n */\nexport function identity<\n N extends Narrowable,\n K extends PropertyKey,\n T extends readonly (Record<K, N> | N)[],\n>(...values: T) {\n return (\n values.length === 1\n ? values[0]\n : values.length === 0\n ? undefined\n : values\n ) as T[\"length\"] extends 1\n ? T[0]\n : T[\"length\"] extends 0\n ? undefined\n : T;\n}\n","import type { AfterFirst, Extends, If, LowerAlphaChar } from \"inferred-types/types\";\nimport { LOWER_ALPHA_CHARS } from \"inferred-types/constants\";\n\ntype _Index<\n T extends readonly string[],\n IF,\n ELSE,\n Results extends readonly unknown[] = [],\n> = [] extends T\n ? Results\n : _Index<\n AfterFirst<T>,\n IF,\n ELSE,\n [\n ...Results,\n If<Extends<T, LowerAlphaChar>, IF, ELSE>,\n ]\n >;\n\ntype Returns<\n T extends string | readonly string[],\n IF,\n ELSE,\n> = T extends string\n ? If<Extends<T, LowerAlphaChar>, IF, ELSE>\n : T extends readonly string[]\n ? _Index<T, IF, ELSE>\n : never;\n\n/**\n * **ifLowercaseChar**(ch)\n *\n * Tests whether a passed in character is lowercase and then uses the appropriate callback to\n * mutate the value.\n */\nexport function ifLowercaseChar<\n T extends string,\n IF,\n ELSE,\n>(\n ch: T,\n callbackForMatch: <V extends T>(v: V) => IF,\n callbackForNoMatch: <V extends T>(v: V) => ELSE,\n): Returns<T, IF, ELSE> {\n if (ch.length !== 1) {\n throw new Error(`call to ifUppercaseChar received ${ch.length} characters but is only valid when one character is passed in!`);\n }\n return (\n LOWER_ALPHA_CHARS.includes(ch as any)\n ? callbackForMatch(ch)\n : callbackForNoMatch(ch)\n ) as Returns<T, IF, ELSE>;\n}\n","import type { Extends, If, IsSingleChar, Narrowable, UpperAlphaChar, ValueCallback } from \"inferred-types/types\";\nimport { LOWER_ALPHA_CHARS } from \"inferred-types/constants\";\n\ntype Convert<T, IF, ELSE> = If<Extends<T, UpperAlphaChar>, IF, ELSE>;\n\n/**\n * **ifUppercaseChar**(ch, callbackForMatch, callbackForNoMatch)\n *\n * Tests whether a passed in _character_ is an uppercase character and uses appropriate callback\n * to mutate the value.\n *\n * **Related:** `ifUppercase()`\n */\nexport function ifUppercaseChar<\n T extends string,\n IF extends Narrowable,\n ELSE extends Narrowable,\n>(\n /** the character to be tested */\n ch: T & IsSingleChar<T> extends true ? T : never,\n callbackForMatch: ValueCallback<T, IF>,\n callbackForNoMatch: ValueCallback<T, ELSE>,\n): Convert<T, IF, ELSE> {\n if (ch.length !== 1) {\n throw new Error(`Invalid string length passed to ifUppercaseChar(ch); this function requires a single character but ${ch.length} were received`);\n }\n return (\n LOWER_ALPHA_CHARS.includes(ch as any)\n ? callbackForMatch(ch)\n : callbackForNoMatch(ch)\n ) as Convert<T, IF, ELSE>;\n}\n","/* eslint no-cond-assign: \"off\" */\nimport type {\n ExpandDictionary,\n Join,\n OptSpace,\n} from \"inferred-types/types\";\n\ntype Ext = \"string\" | \"number\" | \"boolean\";\ntype START = \"{{\";\ntype END = \"}}\";\ntype InferredString = `infer ${string} extends string` | `infer ${string}`;\ntype InferredNumber = `infer ${string} extends number`;\ntype InferredBoolean = `infer ${string} extends boolean`;\n\ntype InferenceVars<\n T extends string,\n Vars extends [strings: string[], nums: string[], bools: string[]] = [[], [], []],\n> =\n // Peel off a block\n T extends `${infer _HEAD}${START}${infer Content}${END}${infer REST}`\n ? (\n Content extends `${OptSpace}infer ${infer Var} extends ${infer Type extends Ext}${OptSpace}`\n // 2a) `{{ infer Foo extends string|number|boolean }}`\n ? Type extends \"string\"\n ? InferenceVars<REST, [[...Vars[0], Var], Vars[1], Vars[2]]>\n : Type extends \"number\"\n ? InferenceVars<REST, [Vars[0], [...Vars[1], Var], Vars[2]]>\n : InferenceVars<REST, [Vars[0], Vars[1], [...Vars[2], Var]]>\n\n // 2b) `{{ infer Foo }}` with no “extends”\n : Content extends `${OptSpace}infer ${infer Var2}${OptSpace}`\n ? InferenceVars<REST, [[...Vars[0], Var2], Vars[1], Vars[2]]>\n\n // 2c) If it’s some other weird content inside `{{ ... }}`, just keep going\n : InferenceVars<REST, Vars>\n )\n // Done\n : Vars;\n\ntype TypeLiteral<\n T extends string,\n Sections extends readonly string[] = [],\n> = T extends `${infer HEAD}${START}${infer Content}${END}${infer REST}`\n // peel off a block\n ? Content extends InferredNumber\n ? TypeLiteral<REST, [ ...Sections, `${HEAD}${number}`]>\n : Content extends InferredBoolean\n ? TypeLiteral<REST, [ ...Sections, `${HEAD}${boolean}`]>\n : Content extends InferredString\n ? TypeLiteral<REST, [ ...Sections, `${HEAD}${string}`]>\n\n : Content extends \"string\"\n ? TypeLiteral<REST, [ ...Sections, `${HEAD}${string}`]>\n : Content extends \"number\"\n ? TypeLiteral<REST, [ ...Sections, `${HEAD}${number}`]>\n : Content extends \"boolean\"\n ? TypeLiteral<REST, [ ...Sections, `${HEAD}${boolean}`]>\n : TypeLiteral<REST, [ ...Sections, Content]>\n\n // DONE\n : Join<Sections>;\n\n/**\n * The pattern matching that Typescript employs works less well when\n * we include `${number}` or `${boolean}` string literals in our pattern.\n *\n * For this reason this utility looks for all \"blocks\" but only looks at them\n * as `${string}` blocks. This allows for a the runtime system to match on\n * a more capable pattern match while maintaining consistency in the \"type\":\n *\n * - when `TypeLiteral` matches the pattern then we _know_ we can match\n * - when `WideTypeLiteral` matches the pattern then we defer to runtime\n */\ntype WiderTypeLiteral<\n T extends string,\n Sections extends readonly string[] = [],\n> = T extends `${infer HEAD}${START}${infer Content}${END}${infer REST}`\n// peel off a block\n ? Content extends InferredNumber\n ? WiderTypeLiteral<REST, [ ...Sections, `${HEAD}${string}`]>\n : Content extends InferredBoolean\n ? WiderTypeLiteral<REST, [ ...Sections, `${HEAD}${string}`]>\n : Content extends InferredString\n ? WiderTypeLiteral<REST, [ ...Sections, `${HEAD}${string}`]>\n\n : Content extends \"string\"\n ? WiderTypeLiteral<REST, [ ...Sections, `${HEAD}${string}`]>\n : Content extends \"number\"\n ? WiderTypeLiteral<REST, [ ...Sections, `${HEAD}${string}`]>\n : Content extends \"boolean\"\n ? WiderTypeLiteral<REST, [ ...Sections, `${HEAD}${string}`]>\n : WiderTypeLiteral<REST, [ ...Sections, Content]>\n\n// DONE\n : Join<Sections>;\n\ntype StrVars<T extends string> = InferenceVars<T>[0];\ntype NumVars<T extends string> = InferenceVars<T>[1];\ntype BoolVars<T extends string> = InferenceVars<T>[2];\n\ntype Shape<T extends string> = ExpandDictionary<\n Record<StrVars<T>[number], string> &\n Record<NumVars<T>[number], number> &\n Record<BoolVars<T>[number], boolean>\n>;\n\ntype Lit = \"string\" | \"number\" | \"boolean\";\n\ntype LiteralSections<\n T extends string,\n V extends Lit[] = [],\n> = T extends `${string}{{${OptSpace}${infer Section extends Lit}${OptSpace}}}${infer REST}`\n ? LiteralSections<REST, [...V, Section]>\n : V;\n\n/**\n * Boolean operator which indicates whether the string literal has any dynamic\n * segments or not\n */\ntype IsDynamic<T extends string> = LiteralSections<T>[\"length\"] extends 0\n ? InferenceVars<T>[\"length\"] extends 0\n ? false\n : true\n : true;\n\nexport interface GetInferenceProps<TPattern extends string> {\n vars: {\n string: StrVars<TPattern>;\n numeric: NumVars<TPattern>;\n boolean: BoolVars<TPattern>;\n };\n typeLiteral: TypeLiteral<TPattern>;\n typeWide: WiderTypeLiteral<TPattern>;\n}\n\nexport type GetInference<TPattern extends string> = (\n <T extends string>(test: T) => T extends TypeLiteral<TPattern>\n ? Shape<TPattern>\n : false | Shape<TPattern>\n) & GetInferenceProps<TPattern>;\n\ntype Returns<T extends string> = IsDynamic<T> extends true\n ? GetInference<T>\n : never;\n\n/**\n * Parse a given inference pattern like:\n *\n * `foo{{infer Foo}} and bar{{infer Bar as number}}`\n *\n * Return an array of alternating static segments and inferred segments:\n * E.g.:\n * [\n * { static: \"foo\", dynamic: false },\n * { varName: \"Foo\", type: \"string\", dynamic: true },\n * { static: \" and bar\", dynamic: false },\n * { varName: \"Bar\", type: \"number\", dynamic: true },\n * { static: \"\", dynamic: false }\n * ]\n */\nfunction parseTemplate(template: string) {\n // updated pattern:\n const pattern\n = /\\{\\{\\s*infer\\s+([A-Za-z_]\\w*)\\s*(?:(?:extends|as)\\s+(string|number|boolean)\\s*)?\\}\\}/g;\n\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n const segments: Array<\n { dynamic: false; text: string } |\n { dynamic: true; varName: string; type: \"string\" | \"number\" | \"boolean\" }\n > = [];\n\n while ((match = pattern.exec(template))) {\n const [fullMatch, varName, asType] = match;\n // everything from the previous index to this match is static text\n const staticPart = template.slice(lastIndex, match.index);\n if (staticPart) {\n segments.push({ dynamic: false, text: staticPart });\n }\n segments.push({\n dynamic: true,\n varName,\n type: asType ? (asType as \"string\" | \"number\" | \"boolean\") : \"string\",\n });\n lastIndex = match.index + fullMatch.length;\n }\n\n // push the remainder as static text\n const remainder = template.slice(lastIndex);\n if (remainder) {\n segments.push({ dynamic: false, text: remainder });\n }\n\n return segments;\n}\n\nfunction escapeRegex(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\n/**\n * Convert segments to a regex pattern with named captures.\n */\nfunction buildRegexPattern(segments: ReturnType<typeof parseTemplate>) {\n let regexStr = \"^\";\n for (const seg of segments) {\n if (!seg.dynamic) {\n // Static text\n regexStr += escapeRegex(seg.text);\n }\n else {\n // Dynamic segment\n switch (seg.type) {\n case \"string\":\n regexStr += \"(.*?)\";\n break;\n case \"number\":\n regexStr += \"(\\\\d+)\";\n break;\n case \"boolean\":\n regexStr += \"(true|false)\";\n break;\n }\n }\n }\n regexStr += \"$\";\n // Remove the \"s\" flag; just use new RegExp(regexStr)\n return new RegExp(regexStr);\n}\n\nfunction convertValue(type: Ext, value: string): string | number | boolean {\n switch (type) {\n case \"string\":\n return value;\n case \"number\":\n return Number(value);\n case \"boolean\":\n return value === \"true\";\n }\n}\n\n/**\n * Perform the matching operation given the template and the test string.\n */\nfunction matchTemplate<TTempl extends string>(\n template: TTempl,\n test: string,\n): Shape<TTempl> | false {\n const segments = parseTemplate(template);\n const regex = buildRegexPattern(segments);\n\n // Use exec(...) instead of match(...) so we can access capture groups by index\n const match = regex.exec(test);\n if (!match)\n return false;\n\n let captureIndex = 1; // Start at 1 because [0] is the full match\n const result: Record<string, unknown> = {};\n\n for (const seg of segments) {\n if (seg.dynamic) {\n const rawVal = match[captureIndex++];\n // If the capture group is somehow missing or undefined, fail\n if (rawVal === undefined)\n return false;\n result[seg.varName] = convertValue(seg.type, rawVal);\n }\n }\n return result as Shape<TTempl>;\n}\n\n/**\n * **infer**`(pattern)`\n *\n * Builds a interference function from a Typescript _string literal template_\n * where:\n *\n * - the template string accepts `{{ string }}` instead of `${string}`, etc.\n * for matching blocks of string characters\n * - you can also extract parts of the string with syntax of `{{ infer Foo }}`\n * - you can also look for _numeric_ or _boolean_ string literals:\n * - `{{ boolean }}`\n * - `{{ infer Bar as number }}`\n *\n * ```ts\n * const matcher = infer(\"{{ infer foo }}-bar\");\n * // \"foo\"\n * const {foo} = matcher(\"foo-bar\");\n * ```\n */\nexport function infer<TTempl extends string>(\n inference: TTempl,\n): Returns<TTempl> {\n return ((test: string) => {\n return matchTemplate(inference, test);\n }) as Returns<TTempl>;\n}\n","import type { Narrowable } from \"inferred-types/types\";\n\n/**\n * Takes an object as input --which has an `id` property and returns it as the same\n * run-time content but with the _type_ of the `id` property being forced to a literal type\n */\nexport function idLiteral<T extends { id: I }, I extends PropertyKey>(o: T): T & { id: T[\"id\"] } {\n return { ...o, id: o.id };\n}\n\n/**\n * Takes an object as input --which has an `name` property and returns it as the same\n * run-time content but with the _type_ of the `name` property being forced to a literal type\n */\nexport function nameLiteral<T extends { name: I }, I extends PropertyKey>(\n o: T,\n): T & { name: T[\"name\"] } {\n return o;\n}\n\n/**\n * Takes an object as input --which has an `kind` property and returns it as the same\n * run-time content but with the _type_ of the `kind` property being forced to a literal type\n */\nexport function kindLiteral<T extends { kind: I }, I extends PropertyKey>(\n o: T,\n): T & { kind: T[\"kind\"] } {\n return o;\n}\n\nexport function idTypeGuard<T extends { id: I }, I extends PropertyKey>(\n _o: T,\n): _o is T & { id: I } {\n return true;\n}\n\n/**\n * Takes an object as input and infers the narrow literal types of the property\n * values on the object.\n *\n * > Note: this addresses this [a known TS gap](https://github.com/microsoft/TypeScript/issues/30680).\n * > Hopefully at some point this will be addressed in the language.\n */\nexport function literal<N extends Narrowable, T extends Record<keyof T, N>>(obj: T) {\n return obj;\n}\n","/**\n * **lowercase**()\n *\n * Run time utility which ensures all letters are lowercase while preserving\n * string literal types.\n */\nexport function lowercase<T extends string>(str: T): Lowercase<T> {\n return str.toLowerCase() as Lowercase<T>;\n}\n","import type {\n First,\n IsUnion,\n Length,\n Narrowable,\n UnionToTuple,\n} from \"inferred-types/types\";\n\n/**\n * **narrow**(value)\n *\n * An identity function which provides the input in as narrow a form\n * as possible.\n * ```ts\n * const s = narrow(\"foo\"); // \"foo\"\n * const n = narrow(42); // 42\n * // [\"foo\", \"bar\"]\n * const t1 = narrow([\"foo\", \"bar\"] as const);\n * const t2 = narrow(\"foo\", \"bar\");\n * // string`[]\n * const t3 = narrow([\"foo\", \"bar\"]);\n * ```\n */\nexport function narrow<\n N extends Narrowable,\n K extends PropertyKey,\n T extends readonly (Record<K, N> | N)[],\n>(...values: T) {\n return (\n values.length === 1\n ? values[0]\n : values\n ) as unknown as Length<T> extends 1\n ? T[0] extends readonly unknown[]\n ? T[0] extends infer Arr\n ? [IsUnion<First<Arr & readonly unknown[]>>] extends [true]\n ? Readonly<UnionToTuple<First<T[0]>>>\n : T[0]\n\n : Readonly<T[0]>\n : T[0]\n : Readonly<T>;\n}\n","import type { PathJoin } from \"inferred-types/types\";\nimport { stripLeading, stripTrailing } from \"inferred-types/runtime\";\n\n/**\n * **pathJoin**`<T,U>(begin, ...rest)`\n *\n * Run time utility which joins two strings together with\n * the intent to have them be divided by a Posix `/` character\n * appropriate for Unix file paths and URLs.\n *\n * **note:** to support more than two paths being joined there\n * is now the ability to add a tuple of paths into the _rest_\n * parameter\n */\nexport function pathJoin<T extends readonly string[]>(\n ...segments: T\n): PathJoin<T> {\n const clean_path = segments.map(i => stripTrailing(stripLeading(i, \"/\"), \"/\")).join(\"/\");\n const original_path = segments.join(\"/\");\n const pre = original_path.startsWith(\"/\") ? \"/\" : \"\";\n const post = original_path.endsWith(\"/\") ? \"/\" : \"\";\n\n return `${pre}${clean_path}${post}` as PathJoin<T>;\n}\n","// const convert = (\n// countryCode: string,\n// phone: string,\n// delimiter: string,\n// para: boolean\n// ) => {\n// const chars: string = stripChars(phone, \"(\", \")\") as string;\n// const parts: string[] = chars.trim().split(/[-. ]/);\n// const isRegional = parts.length === 2 ? true : false;\n// const isCountry = parts.length === 3 ? true : false;\n// const isShortCode = parts.length === 1 && phone.split(\"\").length < 7 ? true : false;\n\n// const replacement = isShortCode\n// ? phone\n// : isRegional\n// ? parts.join(delimiter)\n// : isCountry && para\n// ? `(${parts[0]}) ${parts.slice(1).join(delimiter)}`\n// : isCountry\n// ? parts.join(delimiter)\n// : undefined;\n\n// if (!replacement) {\n// throw new Error(`invalid phone number: ${phone}. Unable to parse!`)\n// }\n\n// return countryCode === \"\"\n// ? replacement\n// : `+${countryCode} ${replacement}`;\n// }\n\n// /**\n// * **asPhoneNumber**`(phone, format)`\n// *\n// * Receives a phone number and returns it as a well formatted version.\n// */\n// export const asPhoneNumber = <\n// T extends string,\n// F extends PhoneFormat,\n// >(\n// phone: T & PhoneNumber<T>,\n// format: F = \"Dotted (e.g., 456.555.1212)\" as F\n// ) => {\n// if (!isPhoneNumber(phone)) {\n// throw new Error(`Invalid phone number presented to asPhoneNumber(phone,format)!`);\n// }\n// const countryCode = getPhoneCountryCode(phone) as unknown as string;\n// const remaining = removePhoneCountryCode(phone) as unknown as string;\n// let result: unknown;\n\n// switch (format) {\n// case \"Dashed (e.g., 456-555-1212)\":\n// result = convert(countryCode, remaining, \"-\", false) as unknown;\n// break;\n// case \"Dotted (e.g., 456.555.1212)\":\n// result = convert(countryCode, remaining, \".\", false) as unknown;\n// break;\n// case \"ParaDashed (e.g., (456) 555-1212)\":\n// result = convert(countryCode, remaining, \"-\", true) as unknown;\n// break;\n// case \"ParaSpaced (e.g., (456) 555 1212)\":\n// result = convert(countryCode, remaining, \" \", true) as unknown;\n// break;\n// }\n\n// return result ;\n// }\n\nexport const asPhoneFormat = () => `NOT IMPLEMENTED`;\n","import type { GetPhoneCountryCode } from \"inferred-types/types\";\nimport { NUMERIC_CHAR } from \"inferred-types/constants\";\nimport { retainWhile, stripLeading } from \"inferred-types/runtime\";\n\nexport function getPhoneCountryCode<T extends string>(phone: T) {\n return (\n phone.trim().startsWith(\"+\") || phone.trim().startsWith(\"00\")\n ? retainWhile(\n stripLeading(stripLeading(phone.trim(), \"+\"), \"00\") as string,\n ...NUMERIC_CHAR,\n ) as string\n : \"\" as string\n ) as unknown as GetPhoneCountryCode<T>;\n}\n","import type { RemovePhoneCountryCode } from \"inferred-types/types\";\nimport { getPhoneCountryCode, stripLeading } from \"inferred-types/runtime\";\n\nexport function removePhoneCountryCode<\n T extends string,\n>(phone: T) {\n const countryCode = getPhoneCountryCode(phone) as unknown as string;\n return (\n countryCode !== \"\"\n ? stripLeading(stripLeading(\n phone.trim(),\n \"+\",\n \"00\",\n ) as string, countryCode).trim()\n : phone.trim()\n ) as unknown as RemovePhoneCountryCode<T>;\n}\n","import type { Pluralize } from \"inferred-types/types\";\nimport {\n ALPHA_CHARS,\n PLURAL_EXCEPTIONS,\n SINGULAR_NOUN_ENDINGS,\n} from \"inferred-types/constants\";\nimport { rightWhitespace, split, stripTrailing } from \"inferred-types/runtime\";\n\nconst isException = <T extends string>(word: T) => Object.keys(PLURAL_EXCEPTIONS).includes(word);\n\nconst _END_IN = [\n \"is\",\n \"y\",\n \"f\",\n \"singular-noun\",\n] as const;\n\ntype EndsIn = (typeof _END_IN)[number];\n\n/**\n * pluralize based on how word ends\n */\nfunction endingIn<\n T extends string,\n U extends EndsIn,\n>(word: T, postfix: U) {\n switch (postfix) {\n case \"is\":\n return word.endsWith(postfix) ? `${word}es` : undefined;\n case \"singular-noun\":\n return SINGULAR_NOUN_ENDINGS.some(i => word.endsWith(i))\n ? split(word).every(i => [...ALPHA_CHARS].includes(i as any))\n ? `${word}es`\n : undefined\n : undefined;\n case \"f\":\n return word.endsWith(\"f\")\n ? `${stripTrailing(word, \"f\")}ves`\n : word.endsWith(\"fe\")\n ? `${stripTrailing(word, \"fe\")}ves`\n : undefined;\n case \"y\":\n return word.endsWith(\"y\")\n // ? CONSONANTS.includes(word.slice(-2, 1) as any)\n ? `${stripTrailing(word, \"y\")}ies`\n // : undefined\n : undefined;\n default:\n throw new Error(`endingIn received \"${postfix}\" as a postfix but this ending is not known!`);\n }\n}\n\n/**\n * **pluralize(** word **)**\n *\n * Pluralizes the word using _language rules_ on pluralization for English as well as\n * leveraging many known exceptions to the linguistic rules.\n *\n * **Note:** _if the string passed into this function is a literal string then the **type**\n * will be pluralized along with the runtime value._\n */\nexport function pluralize<T extends string>(word: T): Pluralize<T> {\n const right = rightWhitespace(word);\n const w = word.trimEnd();\n const result: unknown = isException(w)\n ? PLURAL_EXCEPTIONS[w as keyof typeof PLURAL_EXCEPTIONS]\n : endingIn(w, \"is\")\n || endingIn(w, \"singular-noun\")\n || endingIn(w, \"f\")\n || endingIn(w, \"y\")\n || `${w}s`; // add \"s\" if no other patterns match\n\n return `${result}${right}` as unknown as Pluralize<T>;\n}\n","import type { RetainAfter } from \"inferred-types/types\";\n\n/**\n * **retainAfter**`(content, ...find)`\n *\n * Runtime utility which removes all characters in a given string _until_\n * it finds the first instance of a substring defined in **find** variable.\n *\n * ### Example\n * ```ts\n * // \"world\"\n * const world = retainAfter(\"hello world\", \" \");\n * ```\n *\n * **Related:** `retainAfterInclusive()`\n */\nexport function retainAfter<\n TContent extends string,\n TFind extends readonly string[],\n>(content: TContent, ...find: TFind) {\n const idx = Math.min(\n ...find.map(i => content.indexOf(i)).filter(i => i > -1),\n );\n const min = Math.min(...find.map(i => i.length));\n let len = Math.max(...find.map(i => i.length));\n\n if (min !== len) {\n if (!find.includes(content.slice(idx, len))) {\n len = min;\n }\n }\n\n return (\n idx && idx > 0\n ? content.slice(idx + len)\n : \"\"\n ) as RetainAfter<TContent, TFind[number]>;\n}\n\n/**\n * **retainAfterInclusive**`(content, ...find)`\n *\n * Runtime utility which removes all characters in a given string _until_\n * it finds the first instance of a substring defined in **find** variable.\n *\n * ### Example\n * ```ts\n * // \" world\"\n * const world = retainAfter(\"hello world\", \" \");\n * ```\n *\n * **Related:** `retainAfter()`\n */\nexport function retainAfterInclusive<\n TContent extends string,\n TFind extends readonly string[],\n>(\n content: TContent,\n ...find: TFind\n) {\n const minFound = Math.min(\n ...find.map(i => content.indexOf(i)).filter(i => i > -1),\n );\n\n return (\n minFound > 0\n ? content.slice(minFound)\n : \"\"\n ) as RetainAfter<TContent, TFind[number], true>;\n}\n","import type { RetainChars, TupleToUnion } from \"inferred-types/types\";\nimport { asChars } from \"inferred-types/runtime\";\n\n/**\n * **retainChars**`(content, ...retain)`\n *\n * Retains the characters from `retain[]` which are\n * found in `content` while discarding the rest.\n *\n * ```ts\n * // \"42\"\n * const num = retainChars(\"4foobar2\", ...NUMERIC_CHAR);\n * ```\n *\n * **Related:** `stripChars()`, `retainWhile()`, `retainUntil()`\n */\nexport function retainChars<\n TContent extends string,\n TRetain extends readonly string[],\n>(content: TContent, ...retain: TRetain): RetainChars<TContent, TupleToUnion<TRetain>> {\n const chars: readonly string[] = asChars(content);\n\n return chars.filter(c => retain.includes(c)).join(\"\") as unknown as RetainChars<TContent, TupleToUnion<TRetain>>;\n}\n","import type { RetainUntil } from \"inferred-types/types\";\nimport { asChars } from \"inferred-types/runtime\";\n\n/**\n * **retainUntil**`(content, ...find)`\n *\n * Runtime utility which retains all characters in a given string _until_\n * it finds the first instance of a substring defined in **find** variable.\n *\n * ### Example\n * ```ts\n * // \"hello\"\n * const world = retainUntil(\"hello world\", \" \");\n * ```\n *\n * **Related:** `retainUntilInclusive()`\n */\nexport function retainUntil<\n TContent extends string,\n TFind extends readonly string[],\n>(content: TContent, ...find: TFind) {\n const chars = asChars(content) as readonly string[];\n\n let idx = 0;\n while (!find.includes(chars[idx]) && idx <= chars.length) {\n idx = idx + 1;\n }\n\n return (\n idx === 0\n ? \"\"\n : content.slice(0, idx)\n ) as unknown as RetainUntil<TContent, TFind[number]>;\n}\n\n/**\n * **retainUntil**`(content, ...find)`\n *\n * Runtime utility which retains all characters in a given string _until_\n * it finds the first instance of a substring defined in **find** variable.\n *\n * ### Example\n * ```ts\n * // \"hello \"\n * const world = retainUntilInclusive(\"hello world\", \" \");\n * ```\n *\n * **Related:** `retainUntil()`\n */\nexport function retainUntilInclusive<\n TContent extends string,\n TFind extends readonly string[],\n>(content: TContent, ...find: TFind) {\n const chars = asChars(content) as readonly string[];\n\n let idx = 0;\n while (!find.includes(chars[idx]) && idx <= chars.length) {\n idx = idx + 1;\n }\n\n return (\n idx === 0\n ? content.slice(0, 1)\n : content.slice(0, idx + 1)\n ) as unknown as RetainUntil<TContent, TFind[number], true>;\n}\n","import type { RetainWhile, TupleToUnion } from \"inferred-types/types\";\nimport { asChars } from \"inferred-types/runtime\";\n\n/**\n * **retainWhile**`(content, ...retain)`\n *\n * Retains the characters at the start of the string\n * so long as they are part of the character values\n * passed in for `retain[]`\n */\nexport function retainWhile<\n TContent extends string,\n TRetain extends readonly string[],\n>(content: TContent, ...retain: TRetain) {\n const stopIdx = asChars(content)\n .findIndex(c => !retain.includes(c));\n\n return content.slice(0, stopIdx) as unknown as RetainWhile<TContent, TupleToUnion<TRetain>>;\n}\n","import type { RetainAfter, TrimLeft, Whitespace } from \"inferred-types/types\";\nimport { WHITESPACE_CHARS } from \"inferred-types/constants\";\nimport { retainAfterInclusive } from \"./retainAfter\";\n\n/**\n * **rightWhitespace**`(content)`\n *\n * Extracts and returns the whitespace on the _right_ part of the string.\n */\nexport function rightWhitespace<T extends string>(content: T) {\n const trimmed = content.trimStart() as string;\n return retainAfterInclusive(\n trimmed,\n ...WHITESPACE_CHARS,\n ) as unknown as RetainAfter<TrimLeft<T>, Whitespace, true>;\n}\n","import type { Chars, IsEqual } from \"inferred-types/types\";\n\n/**\n * **split**(str, sep)\n *\n * Splits a string on a given separator while preserving string literal typing\n * where available. Behavior with non-string types is:\n *\n * - `number` - converted to string and then split\n *\n * All are other types are disallowed.\n */\nexport function split<\n T extends string,\n S extends string,\n>(str: T, sep: S = \"\" as S) {\n return str.split(sep) as unknown as IsEqual<S, \"\"> extends true ? Chars<T> : readonly string[];\n}\n","import type { StripAfter } from \"inferred-types/types\";\n\n/**\n * **stripAfter**(content, find)\n *\n * Runtime utility which strips out all characters after (and including)\n * the \"find\" string while returning a strong type.\n *\n * ### Example\n * ```ts\n * // \"hello\"\n * const hello = stripAfter(\"hello world\", \" \");\n * ```\n */\nexport function stripAfter<\n TContent extends string,\n TBreak extends string,\n>(content: TContent, find: TBreak) {\n return content.split(find).shift() as unknown as StripAfter<TContent, TBreak>;\n}\n","import type { StripBefore } from \"inferred-types/types\";\n\n/**\n * **stripBefore**(content, find)\n *\n * Runtime utility which strips out all characters Before (and including)\n * the \"find\" string while returning a strong type.\n *\n * ### Example\n * ```ts\n * // \"hello\"\n * const hello = stripBefore(\"hello world\", \" \");\n * ```\n */\nexport function stripBefore<\n TContent extends string,\n TBreak extends string,\n>(content: TContent, find: TBreak) {\n return content\n .split(find)\n .slice(1)\n .join(find) as StripBefore<TContent, TBreak>;\n}\n","import type { StripChars } from \"inferred-types/types\";\nimport { asChars } from \"inferred-types/runtime\";\n\n/**\n * **stripChars**`(content, ...strip)`\n *\n * Strips out characters found in `content`.\n *\n * **Related:** `retainChars()`\n */\nexport function stripChars<\n TContent extends string,\n TRetain extends readonly string[],\n>(content: TContent, ...strip: TRetain): StripChars<TContent, TRetain[number]> {\n const chars: readonly string[] = asChars(content);\n\n return (\n chars.filter(c => !strip.includes(c)).join(\"\")\n ) as unknown as StripChars<TContent, TRetain[number]>;\n}\n","import type { StripLeading, TupleToUnion } from \"inferred-types/types\";\nimport { isNumber, isUndefined } from \"inferred-types/runtime\";\n\ntype Returns<\n T extends string | number | undefined,\n U extends readonly (string | number)[],\n> = T extends undefined\n ? undefined\n : T extends string | number\n ? StripLeading<T, TupleToUnion<U>>\n : never;\n\n/**\n * **stripLeading**(content, ...strip)\n *\n * Runtime utility which strips of a leading substring from the\n * primary content if it exists and leaves content unchanged otherwise.\n */\nexport function stripLeading<\n T extends string | number | undefined,\n U extends readonly (string | number)[],\n>(\n content: T,\n ...strip: U\n) {\n if (isUndefined(content)) {\n return undefined as Returns<T, U>;\n }\n let output: string = String(content);\n\n for (const s of strip) {\n if (output.startsWith(String(s))) {\n output = output.slice(String(s).length);\n }\n }\n\n return (\n isNumber(content) ? Number(output) : output\n ) as unknown as Returns<T, U>;\n}\n","import type {\n StripSurround,\n} from \"inferred-types/types\";\nimport { isNumber } from \"inferred-types/runtime\";\n\nexport type StripSurroundConfigured<\n TStrip extends readonly (string | number)[],\n> = <TInput extends string | number>(input: TInput) => StripSurround<\n TInput,\n TStrip[number]\n>;\n\n/**\n * **stripSurround**`(chars) => (input) => _stripped_`\n *\n * A higher order function which allows you to define a string literal\n * stripping function for both the beginning and end of a string literal.\n *\n * ```ts\n * // utility which will strip all starting and ending brackets\n * const stripBrackets = stripSurround(\"(\", \")\", \"[\", \"]\", \"{\", \"}\");\n * // \" hello, world \"\n * const without = stripBrackets(\"[ hello, world ]\")\n * ```\n *\n * **Related**: `stripSurroundAndTrim`\n */\nexport function stripSurround<\n TChars extends readonly (number | string)[],\n>(...chars: TChars): StripSurroundConfigured<TChars> {\n return <TInput extends string | number>(input: TInput) => {\n let output: string = String(input);\n\n for (const s of chars) {\n if (output.startsWith(String(s))) {\n output = output.slice(String(s).length);\n }\n if (output.endsWith(String(s))) {\n output = output.slice(0, -1 * String(s).length);\n }\n }\n\n return (\n isNumber(input) ? Number(output) : output\n ) as unknown as StripSurround<TInput, TChars[number]>;\n };\n}\n","import type { StripTrailing, TupleToUnion } from \"inferred-types/types\";\nimport { isNumber, isUndefined } from \"inferred-types/runtime\";\n\ntype Returns<\n T extends string | number | undefined,\n U extends readonly (string | number)[],\n> = T extends undefined\n ? undefined\n : T extends string | number\n ? StripTrailing<T, TupleToUnion<U>>\n : never;\n\n/**\n * **stripTrailing**(content, strip)\n *\n * Runtime utility which ensures that last part of a string has substring\n * removed if it exists and that strong typing is preserved.\n */\nexport function stripTrailing<\n T extends string | number | undefined,\n U extends readonly (string | number)[],\n>(\n content: T,\n ...strip: U\n): Returns<T, U> {\n if (isUndefined(content)) {\n return undefined as Returns<T, U>;\n }\n\n let output: string = String(content);\n\n for (const s of strip) {\n if (output.endsWith(String(s))) {\n output = output.slice(0, -1 * String(s).length);\n }\n }\n\n return (\n isNumber(content) ? Number(output) : output\n ) as unknown as Returns<T, U>;\n}\n","import type { StripUntil, TupleToUnion } from \"inferred-types/types\";\nimport { asChars } from \"inferred-types/runtime\";\n\n/**\n * **stripUntil**`(content, ...until)`\n *\n * Strips the characters at the start of the string\n * until a character specified in `until` is found.\n */\nexport function stripUntil<\n TContent extends string,\n TUntil extends readonly string[],\n>(content: TContent, ...until: TUntil) {\n const stopIdx = asChars(content)\n .findIndex(c => until.includes(c));\n\n return content.slice(stopIdx) as unknown as StripUntil<TContent, TupleToUnion<TUntil>>;\n}\n","import type { StripWhile } from \"inferred-types/types\";\nimport { asChars } from \"inferred-types/runtime\";\n\n/**\n * **stripWhile**`(content, ...until)`\n *\n * Strips the characters at the start of the string\n * while they match the characters found in `match`\n * parameter.\n */\nexport function stripWhile<\n TContent extends string,\n TMatch extends readonly string[],\n>(content: TContent, ...match: TMatch) {\n const stopIdx = asChars(content)\n .findIndex(c => !match.includes(c));\n\n return content.slice(stopIdx) as unknown as StripWhile<TContent, TMatch[number]>;\n}\n","export type SurroundWith<\n TPrefix extends string,\n TPostfix extends string,\n> = <TInput extends string>(input: TInput) => `${TPrefix}${TInput}${TPostfix}`;\n\n/**\n * **surround**(prefix, postfix) -> (input) -> `${prefix}${input}${postfix}`\n *\n * A higher order runtime utility which receives a prefix and postfix string\n * on it's first call. This returns a secondary function which will _surround_\n * the given input with the prefix and postfix strings.\n *\n * **Related:** `ensureSurround()`\n */\nexport function surround<\n TPrefix extends string,\n TPostfix extends string,\n>(prefix: TPrefix, postfix: TPostfix): SurroundWith<TPrefix, TPostfix> {\n return input => `${prefix}${input}${postfix}`;\n}\n","import type { NumericChar, RetainWhile } from \"inferred-types/types\";\nimport { NUMERIC_CHAR } from \"inferred-types/constants\";\nimport { asChars } from \"inferred-types/runtime\";\n\n/**\n * **takeNumericCharacters**`(content)`\n *\n * Starts at the passed in content and extracts all numeric characters\n * in the string until a non-numeric value arrives.\n */\nexport function takeNumericCharacters<T extends string>(content: T) {\n const nonNumericIdx = asChars(content).findIndex(i => !NUMERIC_CHAR.includes(i as any));\n\n return content.slice(0, nonNumericIdx) as unknown as RetainWhile<T, NumericChar>;\n}\n","import type { CamelCase } from \"inferred-types/types\";\nimport { toPascalCase } from \"inferred-types/runtime\";\n\n/**\n * **toCamelCase**(str)\n *\n * Converts a string into `camelCase` while preserving literal strings.\n *\n * **Note:** _by default it also removes surrounding white space (if it exists) but it\n * can be preserved if you change the `preserveWhitespace` flag._\n *\n * **Related:** `toKebabCase`, `toPascalCase`, `toSnakeCase`\n */\nexport function toCamelCase<\n TString extends string,\n TPreserve extends boolean = false,\n>(input: TString, preserveWhitespace?: TPreserve): CamelCase<TString, TPreserve> {\n const pascal = preserveWhitespace ? toPascalCase(input, preserveWhitespace) : toPascalCase(input);\n const [_, preWhite, focus, postWhite] = /^(\\s*)(.*?)(\\s*)$/.exec(\n pascal,\n ) as RegExpExecArray;\n\n const camel = (preserveWhitespace ? preWhite : \"\")\n + focus.replace(/^.*?(\\d*[a-z|])/is, (_, p1) => p1.toLowerCase())\n + (preserveWhitespace ? postWhite : \"\") as unknown as CamelCase<TString, TPreserve>;\n\n return camel;\n}\n","import type { KebabCase } from \"inferred-types/types\";\n\n/**\n * **toKebabCase**(str)\n *\n * Converts a string into `kebab-case` while preserving literal strings.\n *\n * **Note:** _by default it also removes surrounding white space (if it exists) but it\n * can be preserved if you change the `preserveWhitespace` flag._\n *\n * **Related:** `toPascalCase`, `toCamelCase`, `toSnakeCase`\n */\nexport function toKebabCase<\n S extends string,\n P extends boolean = false,\n>(input: S, _preserveWhitespace: P = false as P) {\n const [_, preWhite, focus, postWhite] = /^(\\s*)(.*?)(\\s*)$/.exec(input) as RegExpExecArray;\n\n const replaceWhitespace = (i: string) => i.replace(/\\s/g, \"-\");\n const replaceUppercase = (i: string) => i.replace(/[A-Z]/g, c => `-${c[0].toLowerCase()}`);\n const replaceLeadingDash = (i: string) => i.replace(/^-/, \"\");\n const replaceTrailingDash = (i: string) => i.replace(/-$/, \"\");\n const replaceUnderscore = (i: string) => i.replace(/_/g, \"-\");\n const removeDupDashes = (i: string) => i.replace(/-+/g, \"-\");\n\n return removeDupDashes(`${preWhite}${replaceUnderscore(\n replaceTrailingDash(\n replaceLeadingDash(removeDupDashes(replaceWhitespace(replaceUppercase(focus)))),\n ),\n )}${postWhite}`) as unknown as KebabCase<S, P>;\n}\n","import type { ToNumericArray, Tuple } from \"inferred-types/types\";\n\nexport function toNumericArray<T extends Tuple>(arr: T) {\n return arr.map(i => Number(i)) as unknown as ToNumericArray<T>;\n}\n","import type {\n LeftWhitespace,\n PascalCase,\n RightWhitespace,\n} from \"inferred-types/types\";\nimport { capitalize } from \"inferred-types/runtime\";\n\n/**\n * **toPascalCase**(str)\n *\n * Converts a string into `PascalCase` while preserving literal strings.\n *\n * **Note:** _by default it also removes surrounding white space (if it exists) but it\n * can be preserved if you change the `preserveWhitespace` flag._\n *\n * **Related:** `toKebabCase`, `toCamelCase`, `toSnakeCase`\n */\nexport function toPascalCase<\n S extends string,\n P extends boolean | undefined = undefined,\n>(input: S, preserveWhitespace: P = undefined as P) {\n const [_, preWhite, focus, postWhite] = /^(\\s*)(.*?)(\\s*)$/.exec(\n input,\n ) as RegExpExecArray;\n\n const convertInteriorToCap = (i: string) =>\n i.replace(/[ |_\\-]+(\\d*[a-z|])/gi, (_, p1) => p1.toUpperCase());\n const startingToCap = (i: string) =>\n i.replace(/^[_|-]*(\\d*[a-z])/g, (_, p1) => p1.toUpperCase());\n\n const replaceLeadingTrash = (i: string) => i.replace(/^[-_]/, \"\");\n const replaceTrailingTrash = (i: string) => i.replace(/[-_]$/, \"\");\n\n const pascal = `${preserveWhitespace ? preWhite : \"\"}${capitalize(\n replaceTrailingTrash(replaceLeadingTrash(convertInteriorToCap(startingToCap(focus)))),\n )}${preserveWhitespace ? postWhite : \"\"}`;\n\n return pascal as true extends P\n ? `${LeftWhitespace<S>}${PascalCase<S>}${RightWhitespace<S>}`\n : PascalCase<S>;\n}\n","import type { SnakeCase } from \"inferred-types/types\";\n\n/**\n * **toSnakeCase**(str)\n *\n * Converts a string into `snake_case` while preserving literal strings.\n *\n * **Note:** _by default it also removes surrounding white space (if it exists) but it\n * can be preserved if you change the `preserveWhitespace` flag._\n *\n * **Related:** `toKebabCase`, `toCamelCase`, `toPascalCase`\n */\nexport function toSnakeCase<\n S extends string,\n P extends boolean = false,\n>(input: S, preserveWhitespace: P = false as P): SnakeCase<S, P> {\n const [_, preWhite, focus, postWhite] = /^(\\s*)(.*?)(\\s*)$/.exec(input) as RegExpExecArray;\n\n const convertInteriorSpace = (input: string) => input.replace(/\\s+/g, \"_\");\n const convertDashes = (input: string) => input.replace(/-/g, \"_\");\n const injectUnderscoreBeforeCaps = (input: string) => input.replace(/([A-Z])/g, \"_$1\");\n const removeLeadingUnderscore = (input: string) =>\n input.startsWith(\"_\") ? input.slice(1) : input;\n\n return (\n (preserveWhitespace ? preWhite : \"\")\n + removeLeadingUnderscore(\n injectUnderscoreBeforeCaps(convertDashes(convertInteriorSpace(focus))),\n ).toLowerCase()\n + (preserveWhitespace ? postWhite : \"\")\n ).replace(/__/g, \"_\") as unknown as SnakeCase<S, P>;\n}\n","import type { Narrowable, ToString } from \"inferred-types/types\";\n\n/**\n * **toString**()\n *\n * Runtime utility which converts any given type to a string while\n * preserving literal types.\n */\nexport function toString<T extends Narrowable>(val: T): ToString<T> {\n return String(val) as ToString<T>;\n}\n","import { capitalize, ifLowercaseChar } from \"inferred-types/runtime\";\n\n/**\n * Converts a string to the \"all caps\" equivalent.\n *\n * Note: non-alpha characters are left \"as is\"\n */\nexport function toUppercase<T extends string>(str: T): Uppercase<T> {\n return str\n .split(\"\")\n .map(i => ifLowercaseChar(i, v => capitalize(v), v => v))\n .join(\"\") as Uppercase<T>;\n}\n","import type { Trim, TrimLeft, TrimRight } from \"inferred-types/types\";\n\n/**\n * **trim**(input)\n *\n * A runtime utility which trims whitespace on both sides of a string\n * and returns a type-strong string literal where possible.\n */\nexport function trim<T extends string>(input: T): Trim<T> {\n return input.trim() as Trim<T>;\n}\n\n/**\n * **trimLeft**(input)\n *\n * A runtime utility which trims whitespace on the leading/left side of a string\n * and returns a type-strong string literal where possible.\n *\n * @deprecated prefer use of `trimStart` instead\n */\nexport function trimLeft<T extends string>(input: T): TrimLeft<T> {\n return input.trimStart() as TrimLeft<T>;\n}\n\n/**\n * **trimStart**(input)\n *\n * A runtime utility which trims whitespace on the leading/left side of a string\n * and returns a type-strong string literal where possible.\n */\nexport function trimStart<T extends string>(input: T): TrimLeft<T> {\n return input.trimStart() as TrimLeft<T>;\n}\n\n/**\n * **trimRight**(input)\n *\n * A runtime utility which trims whitespace on the tailing/right side of a string\n * and returns a type-strong string literal where possible.\n *\n * @deprecated prefer use of `trimEnd` instead\n */\nexport function trimRight<T extends string>(input: T): TrimRight<T> {\n return input.trimEnd() as TrimRight<T>;\n}\n\n/**\n * **trimEnd**(input)\n *\n * A runtime utility which trims whitespace on the tailing/right side of a string\n * and returns a type-strong string literal where possible.\n */\nexport function trimEnd<T extends string>(input: T): TrimRight<T> {\n return input.trimEnd() as TrimRight<T>;\n}\n","import type { Truncate } from \"inferred-types/types\";\n\nexport function truncate<\n TStr extends string,\n TMax extends number,\n TEllipsis extends boolean | string = false,\n>(content: TStr, maxLength: TMax, ellipsis: TEllipsis = false as TEllipsis) {\n const overLimit = content.length > maxLength;\n\n return (\n overLimit\n ? ellipsis\n ? `${content.slice(0, maxLength)}${typeof ellipsis === \"string\" ? ellipsis : \"...\"}`\n : content.slice(0, maxLength)\n : content\n ) as Truncate<TStr, TMax, TEllipsis>;\n}\n","import type {\n IsUnionArray,\n Length,\n Narrowable,\n UnionArrayToTuple,\n UnionToTuple,\n} from \"inferred-types/types\";\nimport { asArray } from \"inferred-types/runtime\";\n\n/**\n * **tuple**(value)\n *\n * Creates a discrete tuple.\n * ```ts\n * // [1,2,3]\n * const t1 = tuple(1,2,3);\n * const t2 = tuple([1,2,3]);\n * ```\n */\nexport function tuple<\n N extends Narrowable,\n K extends PropertyKey,\n T extends readonly (Record<K, N> | N)[],\n>(...values: T) {\n const arr = (\n values.length === 1\n ? values[0]\n : values\n ) as Length<T> extends 1\n ? T[0] extends readonly unknown[]\n ? T[0] extends infer Arr\n ? IsUnionArray<Arr> extends true\n ? UnionArrayToTuple<Arr>\n : UnionToTuple<Arr>\n : T[0]\n : T[0]\n : T;\n\n return asArray(arr);\n}\n","/**\n * **uncapitalize**()\n *\n * Run time utility which _un_-capitalizes a word/string and preserves\n * string literal types.\n */\nexport function uncapitalize<T extends string>(str: T): Uncapitalize<T> {\n return `${str?.slice(0, 1).toLowerCase()}${str?.slice(1)}` as Uncapitalize<T>;\n}\n","import type { Unset } from \"inferred-types/types\";\n\nexport const unset = \"<<unset>>\" as unknown as Unset;\n","/**\n * **uppercase**()\n *\n * Run time utility which ensures all letters are uppercase while preserving\n * string literal types.\n */\nexport function uppercase<T extends string>(str: T): Uppercase<T> {\n return str.toUpperCase() as Uppercase<T>;\n}\n","import type { Narrowable, Widen } from \"inferred-types/types\";\n\n/**\n * **widen**(value)\n *\n * Runtime utility which takes any _type_ and ensures it's widened to a wide\n * type of passed in value is a literal.\n */\nexport function widen<T extends Narrowable>(value: T): Widen<T> {\n return value as Widen<T>;\n}\n","import type {\n NUMERIC_CHAR,\n} from \"inferred-types/constants\";\nimport type {\n GetUrlDynamics,\n GetUrlPath,\n GetUrlPort,\n GetUrlProtocol,\n GetUrlQueryParams,\n GetUrlSource,\n IsIp4Address,\n IsIp6Address,\n IsIpAddress,\n IsUrl,\n NetworkProtocol,\n} from \"inferred-types/types\";\nimport {\n NETWORK_PROTOCOL_LOOKUP,\n Never,\n PROTOCOL_DEFAULT_PORTS,\n} from \"inferred-types/constants\";\nimport {\n ensureLeading,\n hasOverlappingKeys,\n hasProtocol,\n infer,\n isCsv,\n isDomainName,\n isIp4Address,\n isIp6Address,\n isIpAddress,\n isNumberLike,\n isUrl,\n isVariable,\n stripAfter,\n stripBefore,\n stripLeading,\n stripTrailing,\n} from \"inferred-types/runtime\";\n\nexport interface UrlMeta<T> {\n /** the URL passed in */\n url: T;\n /** boolean flag indicating whether the value passed in is considered a valid URL */\n isUrl: IsUrl<T>;\n /** the `NetworkProtocol` used in the URL */\n protocol: GetUrlProtocol<T>;\n path: T extends string ? GetUrlPath<T> : never;\n queryParams: T extends string ? GetUrlQueryParams<T> : never;\n /** the port number -- when stated explicitly -- or \"default\" */\n port: GetUrlPort<T>;\n\n /** either the domain name or the IP address */\n source: T extends string\n ? GetUrlSource<T>\n : never;\n /**\n * Boolean flag which indicates that the _source_ is an IP address (vs. Domain Name)\n */\n isIpAddress: IsIpAddress<T>;\n /**\n * Boolean flag indicating the _source_ is a IPv4 IP address\n */\n isIpV4Address: IsIp4Address<T>;\n\n /**\n * Boolean flag indicating the _source_ is a IPv6 IP address\n */\n isIpV6Address: IsIp6Address<T>;\n}\n\nconst PROTOCOLS = Object.values(NETWORK_PROTOCOL_LOOKUP).flat().filter(i => i !== \"\") as NetworkProtocol[];\n\nexport function getUrlProtocol<\n T extends string,\n>(url: T) {\n const proto = PROTOCOLS.find(p => url.startsWith(`${p}://`));\n\n return proto as GetUrlProtocol<T>;\n}\n\nexport function removeUrlProtocol<T extends string>(url: T) {\n return stripBefore(url, \"://\");\n}\n\nfunction ensurePath(val: string) {\n const val2 = ensureLeading(val, \"/\");\n\n return val === \"\"\n ? \"\"\n : stripTrailing(val2, \"/\");\n}\n\nexport function getUrlPath<\n T extends string,\n>(url: T) {\n return isUrl(url)\n ? ensurePath(\n stripAfter(stripBefore(removeUrlProtocol(url), \"/\"), \"?\"),\n ) as unknown as GetUrlPath<T>\n : Never;\n}\n\n/**\n * **getUrlQueryParams**`(url, [specific])`\n *\n * Get's the query parameter's part of a URL and optionally allows\n * you to focus in on a specific key in the query parameters.\n *\n * If you do specify a particular query parameter it will decode\n * the value with URIDecode.\n */\nexport function getUrlQueryParams<\n T extends string,\n S extends string | undefined,\n>(url: T, specific: S = undefined as S) {\n const qp = stripBefore(url, \"?\");\n if (specific) {\n return (\n qp.includes(`${specific}=`)\n ? decodeURIComponent(\n stripAfter(\n stripBefore(qp, (`${specific}=`)),\n \"&\",\n ).replace(/\\+/g, \"%20\"),\n )\n : undefined\n );\n }\n\n return (\n qp === \"\"\n ? qp\n : `?${qp}`\n ) as GetUrlQueryParams<T, S>;\n}\n\n/**\n * **getUrlDefaultPort**`(url)`\n *\n * Returns the default port which the given URL string would use\n * based on the protocol detected in this string.\n */\nexport function getUrlDefaultPort<T extends string>(url: T) {\n const proto = getUrlProtocol(url);\n return proto in PROTOCOL_DEFAULT_PORTS\n ? PROTOCOL_DEFAULT_PORTS[proto as keyof typeof PROTOCOL_DEFAULT_PORTS]\n : null as never;\n}\n\nconst _numeric = null as unknown as typeof NUMERIC_CHAR[number];\n\n/**\n * **getUrlPort**`(url, [resolve])`\n *\n * Find the URL port specified in the passed in URL.\n *\n * - return \"default\" if no explicit url was expressed\n * - if you set `resolve` to **true** it will resolve URL's which\n * don't explicitly state their port to\n */\nexport function getUrlPort<\n T extends string,\n R extends boolean,\n>(\n url: T,\n resolve: R = false as R,\n): GetUrlPort<T, R> {\n const re = /.*:(\\d{2,3})/;\n const match = url.match(re);\n\n return (\n re.test(url) && match && isNumberLike(Array.from(match)[1])\n ? Number(Array.from(match)[1])\n : resolve\n ? getUrlDefaultPort(url)\n : hasProtocol(url)\n ? `default`\n : null as never\n ) as unknown as GetUrlPort<T, R>;\n}\n\n/**\n * **getUrlSource**`(url)`\n *\n * Extracts the `source` part of the url.\n *\n * - this is the DNS name if DNS is used\n * - or an IP address\n */\nexport function getUrlSource<\n T extends string,\n>(url: T) {\n const candidate = stripAfter(stripAfter(stripAfter(removeUrlProtocol(url), \"/\"), \"?\"), \":\") as unknown;\n\n return (\n isIpAddress(candidate) || isDomainName(candidate)\n ? candidate\n : Never\n ) as unknown as GetUrlSource<T>;\n}\n\nexport function getUrlBase<\n T extends string,\n>(url: T) {\n const path = getUrlPath(url);\n const remaining = stripAfter(url, path);\n\n return remaining as `${GetUrlProtocol<T>}://${GetUrlSource<T>}`;\n};\n\nexport function getUrlDynamics<T extends string>(\n url: T,\n): GetUrlDynamics<T> {\n const path = getUrlPath(url);\n const qp = getUrlQueryParams(url) as `?${string}`;\n\n const pathParts = path.startsWith(\"<\")\n ? path.split(\"<\").map(i => ensureLeading(i, \"<\"))\n : path.split(\"<\").map(i => ensureLeading(i, \"<\")).slice(1);\n\n const segmentTypes = [\n \"string\",\n \"number\",\n \"boolean\",\n \"Opt<string>\",\n \"Opt<number>\",\n \"Opt<boolean>\",\n ];\n\n const pathVars: Record<string, string> = {};\n const findPathTyped = infer(`<{{infer name}} as {{infer type}}>`);\n const findPathUnion = infer(`<{{infer name}} as string({{infer union}})>`);\n const findPathNamed = infer(`<{{infer name}}>`);\n for (const part of pathParts) {\n const union = findPathUnion(part as string);\n const typed = findPathTyped(part as string);\n const named = findPathNamed(part as string);\n if (union) {\n if (isVariable(union.name) && isCsv(union.union)) {\n pathVars[union.name] = `string(${union.union})`;\n }\n }\n else if (\n typed\n && segmentTypes.includes(typed.type)\n && isVariable(typed.name)\n ) {\n pathVars[typed.name] = typed.type;\n }\n else if (\n named\n && isVariable(named.name)\n ) {\n pathVars[named.name] = \"string\";\n }\n }\n\n const qpVars: Record<string, string> = {};\n const qpParts = stripLeading(qp, \"?\").split(\"&\");\n\n for (const p of qpParts) {\n const union = infer(`{{infer var}}=<string({{infer params}})>`)(p);\n const dynamic = infer(`{{infer var}}=<{{infer val}}>`)(p);\n const fixed = infer(`{{infer var}}={{infer val}}`)(p);\n\n if (\n union\n && isVariable(union.var)\n && isCsv(union.params)\n ) {\n qpVars[union.var] = `string(${union.params})`;\n }\n else if (\n dynamic\n && isVariable(dynamic.var)\n && segmentTypes.includes(dynamic.val)\n ) {\n qpVars[dynamic.var] = dynamic.val;\n }\n else if (\n fixed\n && isVariable(fixed.var)\n ) {\n qpVars[fixed.var] = fixed.val;\n }\n }\n\n return {\n pathVars,\n qpVars,\n allVars: hasOverlappingKeys(pathVars, qpVars)\n ? null\n : {\n ...pathVars,\n ...qpVars,\n },\n } as unknown as GetUrlDynamics<T>;\n}\n\n/**\n * **urlMeta**`(url)`\n *\n * Analyzes the string passed in and provides a small dictionary of\n * metadata properties about the URL.\n */\nexport function urlMeta<\n T extends string,\n>(\n url: T,\n) {\n return {\n url,\n isUrl: isUrl(url) as IsUrl<T>,\n protocol: getUrlProtocol(url) as GetUrlProtocol<T>,\n path: getUrlPath(url) as GetUrlPath<T>,\n queryParameters: getUrlQueryParams(url),\n params: getUrlDynamics<T>,\n port: getUrlPort(url),\n source: getUrlSource(url) as GetUrlSource<T>,\n isIpAddress: isIpAddress(getUrlSource(url) as string) as IsIpAddress<GetUrlSource<T>>,\n isIp4Address: isIp4Address(getUrlSource(url) as string) as IsIp4Address<GetUrlSource<T>>,\n isIp6Address: isIp6Address(getUrlSource(url)) as IsIp6Address<GetUrlSource<T>>,\n };\n}\n","import type {\n As,\n GetYouTubePageType,\n YouTubeEmbedUrl,\n YouTubePageType,\n YouTubeShareUrl,\n YouTubeUrl,\n YouTubeVideoUrl,\n} from \"inferred-types/types\";\nimport { Never } from \"inferred-types/constants\";\nimport {\n getUrlPath,\n getUrlQueryParams,\n hasUrlQueryParameter,\n isYouTubeCreatorUrl,\n isYouTubeFeedUrl,\n isYouTubeShareUrl,\n isYouTubeUrl,\n isYouTubeVideosInPlaylist,\n isYouTubeVideoUrl,\n last,\n} from \"inferred-types/runtime\";\n\n/**\n * **YouTubeMeta**`<T>`\n *\n * Provides metadata about YouTube related URLs.\n */\nexport interface YouTubeMeta<T extends string> {\n /**\n * The URL passed in\n */\n url: T;\n /**\n * boolean flag indicating whether the URL is a valid\n * YouTube URL.\n */\n isYouTubeUrl: T extends YouTubeUrl ? true : false;\n\n /**\n * boolean flag indicating whether URL is part of YouTube's `https://youtu.be`\n * URL shortener used when _sharing_ videos.\n */\n isShareUrl: T extends YouTubeShareUrl ? true : false;\n\n pageType: As<\n GetYouTubePageType<T>,\n YouTubePageType\n >;\n}\n\n/**\n * **getYouTubePageType**`(url)`\n *\n * Returns a `YouTubePageType` description based on the url passed in (assuming\n * that URL is for YouTube). Returns _never_ if not a YouTube URL.\n */\nexport function getYouTubePageType<T extends string>(url: T) {\n return (\n isYouTubeUrl(url)\n ? isYouTubeVideoUrl(url) && (hasUrlQueryParameter(url, \"v\") || isYouTubeShareUrl(url))\n ? hasUrlQueryParameter(url, \"list\")\n ? isYouTubeShareUrl(url)\n ? hasUrlQueryParameter(url, \"t\")\n ? `play::video::in-list::share-link::with-timestamp`\n : `play::video::in-list::share-link`\n : `play::video::in-list`\n : isYouTubeShareUrl(url)\n ? hasUrlQueryParameter(url, \"t\")\n ? `play::video::solo::share-link::with-timestamp`\n : `play::video::solo::share-link`\n : `play::video::solo`\n : isYouTubeCreatorUrl(url)\n ? getUrlPath(url).includes(\"/videos\")\n ? \"creator::videos\"\n : getUrlPath(url).includes(\"/playlists\")\n ? \"creator::playlists\"\n : last(getUrlPath(url).split(\"/\")).startsWith(\"@\")\n || getUrlPath(url).includes(\"/featured\")\n ? \"creator::featured\"\n : \"creator::other\"\n : isYouTubeFeedUrl(url)\n ? isYouTubeFeedUrl(url, \"history\")\n ? \"feed::history\"\n : isYouTubeFeedUrl(url, \"playlists\")\n ? \"feed::playlists\"\n : isYouTubeFeedUrl(url, \"liked\")\n ? \"feed::liked\"\n : isYouTubeFeedUrl(url, \"subscriptions\")\n ? \"feed::subscriptions\"\n : isYouTubeFeedUrl(url, \"trending\")\n ? \"feed::trending\"\n : \"feed::other\"\n : isYouTubeVideosInPlaylist(url)\n ? \"playlist::show\"\n : \"other\"\n : Never\n ) as unknown as GetYouTubePageType<T>;\n}\n\n/**\n * **youtubeEmbed**`(url)`\n *\n * Takes a Video URL from YouTube and converts it to a \"embed\" URL\n * that can be put into an iframe.\n */\nexport function youtubeEmbed(url: YouTubeVideoUrl) {\n if (hasUrlQueryParameter(url, \"v\")) {\n const id = getUrlQueryParams(url, \"v\");\n return `https://www.youtube.com/embed/${id}` as YouTubeEmbedUrl;\n }\n else if (isYouTubeShareUrl(url)) {\n const id = url.split(\"/\").pop() as string;\n if (id) {\n return `https://www.youtube.com/embed/${id}` as YouTubeEmbedUrl;\n }\n else {\n throw new Error(`Unexpected problem parsing share URL -- \"${url}\" -- into a YouTube embed URL`);\n }\n }\n else {\n throw new Error(`Unexpected URL structure; unable to convert \"${url}\" to a YouTube embed URL`);\n }\n}\n\n/**\n * **youtube**`(url)`\n *\n * Takes a YouTube URL and converts it to a meta-data object\n * that helps describe the intent of the URL.\n */\nexport function youtubeMeta<T extends string>(url: T): YouTubeMeta<T> {\n return (\n isYouTubeUrl(url)\n ? {\n url,\n isYouTubeUrl: true,\n isShareUrl: isYouTubeShareUrl(url),\n pageType: getYouTubePageType(url) as unknown as GetYouTubePageType<T>,\n }\n : {\n url,\n isYouTubeUrl: false,\n }\n ) as unknown as YouTubeMeta<T>;\n}\n","import type { FifoQueue, FixedLengthArray, Narrowable } from \"inferred-types/types\";\n\nfunction queue<\n T extends unknown[],\n>(state: T): FifoQueue<T[number]> {\n return {\n queue: state,\n size: state.length,\n isEmpty() {\n return state.length === 0;\n },\n clear() {\n state.slice(0, 0);\n },\n drain() {\n const old_state = [...state];\n state.slice(0, 0);\n return old_state;\n },\n push(...add) {\n state.push(...add);\n },\n drop(quantity) {\n if (quantity && quantity > state.length) {\n throw new Error(\"Cannot drop more elements than present in the queue\");\n }\n state.splice(0, quantity || 1);\n },\n take<Q extends number | undefined>(quantity?: Q) {\n if (quantity && quantity > state.length) {\n throw new Error(\"Cannot take more elements than present in the queue\");\n }\n const result = state.slice(0, quantity || 1);\n state.splice(0, quantity || 1);\n return result as FixedLengthArray<T[number], Q extends undefined ? 1 : Q>;\n },\n *[Symbol.iterator]() {\n for (let i = 0; i < state.length; i++) {\n yield state[i] as T[number];\n }\n },\n };\n}\n\nexport function createFifoQueue<\n T extends readonly K[],\n K extends Narrowable,\n>(...list: T) {\n return queue([...list]);\n}\n","import type { FixedLengthArray, LifoQueue, Narrowable } from \"inferred-types/types\";\n\nfunction queue<\n T extends unknown[],\n>(state: T): LifoQueue<T[number]> {\n return {\n queue: state,\n size: state.length,\n isEmpty() {\n return state.length === 0;\n },\n push(...add) {\n state.push(...add);\n },\n drop(quantity) {\n state.splice(-quantity!);\n },\n clear() {\n state.slice(0, 0);\n },\n drain() {\n const old_state = [...state];\n state.slice(0, 0);\n return old_state;\n },\n take<Q extends number | undefined>(quantity?: Q) {\n const result = state.slice(-quantity!);\n state.splice(-quantity!);\n return result as FixedLengthArray<T[number], Q extends undefined ? 1 : Q>;\n },\n *[Symbol.iterator]() {\n for (let i = state.length - 1; i >= 0; i--) {\n yield state[i] as T[number];\n }\n },\n };\n}\n\nexport function createLifoQueue<\n T extends readonly K[],\n K extends Narrowable,\n>(...list: T) {\n return queue([...list]);\n}\n","import type {\n SimpleContainerToken,\n SimpleScalarToken,\n SimpleType,\n SimpleUnionToken,\n TypeToken,\n} from \"inferred-types/types\";\nimport { Never } from \"inferred-types/constants\";\nimport {\n identity,\n isBooleanLike,\n isNumberLike,\n isSimpleContainerToken,\n isSimpleScalarToken,\n simpleScalarToken,\n stripAfter,\n stripBefore,\n stripLeading,\n stripSurround,\n stripTrailing,\n} from \"inferred-types/runtime\";\n\nconst scalarToToken = identity({\n string: \"<<string>>\",\n number: \"<<number>>\",\n boolean: \"<<boolean>>\",\n true: \"<<true>>\",\n false: \"<<false>>\",\n null: \"<<null>>\",\n undefined: \"<<undefined>>\",\n unknown: \"<<unknown>>\",\n any: \"<<any>>\",\n never: \"<<never>>\",\n});\n\nconst _containerToToken: Record<string, unknown> = {\n \"array(string)\": \"\",\n \"array(boolean)\": \"\",\n \"array(number)\": \"\",\n \"array(unknown)\": \"\",\n};\n\nfunction stringLiteral<T extends string>(str: T) {\n return stripAfter(stripBefore(str, \"string(\"), \")\");\n}\nfunction numericLiteral<T extends string>(str: T) {\n return stripAfter(stripBefore(str, \"number(\"), \")\");\n}\n\nfunction handleOptional<T extends SimpleScalarToken>(token: T) {\n const bare = stripTrailing(stripLeading(token, \"Opt<\"), \">\");\n\n return bare.startsWith(\"string\")\n ? `<<union::[ <<string>>, <<undefined>> ]>>`\n : bare.startsWith(\"number\")\n ? `<<union::[ <<number>>, <<undefined>> ]>>`\n : bare.startsWith(\"boolean\")\n ? `<<union::[ <<boolean>>, <<undefined>> ]>>`\n : bare.startsWith(\"unknown\")\n ? `<<union::[ <<unknown>>, <<undefined>> ]>>`\n : `<<never>>`;\n}\n\n/**\n * **simpleScalarTokenToTypeToken**`(val)`\n *\n * Receives a `SimpleScalarToken` and converts it's runtime value to a\n * more full fledged `TypeToken` while converting the _type_ to be the\n * type that the token represents.\n *\n * **Related:** `simplContainerTokenToTypeToken`, `asTypeToken`\n */\nexport function simpleScalarTokenToTypeToken<T extends SimpleScalarToken>(val: T) {\n return (\n val in scalarToToken\n ? scalarToToken[val as keyof typeof scalarToToken] as unknown\n : val.startsWith(\"string(\")\n ? stringLiteral(val).includes(\",\")\n ? `<<union::[ ${stringLiteral(val).split(/,\\s?/).map(i => `\"${i}\"`).join(\", \")} ]>>`\n : `<<string::${stringLiteral(val)}>>` as unknown\n : val.startsWith(\"number(\")\n ? numericLiteral(val).includes(\",\")\n ? `<<union::[ ${numericLiteral(val).split(/,\\s?/).join(\", \")} ]>>` as unknown\n : `<<number::${numericLiteral(val)}>>` as unknown\n : val.startsWith(\"Opt<\")\n ? handleOptional(val)\n : `<<never>>` as unknown\n ) as SimpleType<T>;\n}\n\n/**\n * converts a node in the union to a proper token or tokens\n */\nfunction unionNode<\n T extends string,\n>(node: T) {\n return isNumberLike(node)\n ? `<<number::${node}>>`\n : isBooleanLike(node)\n ? `<<${node}>>`\n : isSimpleContainerToken(node)\n ? simpleContainerTokenToTypeToken(node) as unknown\n : isSimpleScalarToken(node)\n ? simpleScalarToken(node)\n : `<<string::${node}>>`;\n}\n\nfunction union<T extends string | readonly string[]>(nodes: T) {\n return Array.isArray(nodes)\n ? nodes.map(n => unionNode(n))\n : nodes.includes(\",\")\n ? (nodes as string).split(/,\\s?/).map(n => unionNode(n)).join(\", \")\n : unionNode(nodes as string);\n}\n\nconst stripUnion = stripSurround(\"Union(\", \")\");\n\n/**\n * **simpleUnionTokenToTypeToken**`(val)`\n *\n * Converts a `SimpleUnionToken` to a `TypeToken` and converts the type to\n * the type _represented_ by the token.\n *\n * Note:\n * - when passing in _literals_ such as `opt(42)` it will evaluate the value\n * as being a numeric or a boolean literal and use that type if it is\n */\nexport function simpleUnionTokenToTypeToken<T extends SimpleUnionToken>(val: T) {\n return (\n val.startsWith(`Union(`) && val.endsWith(`)`)\n ? `<<union::[ ${union(stripUnion(val))} ]>>`\n : Never\n ) as SimpleType<T>;\n}\n\n/**\n * **simpleContainerTokenToTypeToken**`(val)`\n *\n * Receives a `SimpleContainerToken` and converts it's runtime value to a\n * more full fledged `TypeToken` while converting the _type_ to be the\n * type that the token represents.\n *\n * **Related:** `simpleScalarTokenToTypeToken`, `asTypeToken`\n */\nexport function simpleContainerTokenToTypeToken<T extends SimpleContainerToken>(_val: T) {\n // TODO\n}\n\n// TODO\nexport function asTypeToken<T extends TypeToken>(_val: T) {\n return \"not ready\";\n}\n","import type { TypeToken, TypeTokenKind } from \"inferred-types/types\";\n\n/**\n * Adds any `TypeToken` by receiving the `TypeTokenKind` and then whatever\n * parameters that type requires.\n */\nexport function addToken<\n T extends TypeTokenKind,\n TData extends readonly string[],\n>(token: T, ...params: TData) {\n return `<<${token}${params.length > 0 ? `::${params.join(\"::\")}` : \"\"}>>` as TypeToken;\n}\n","import type { If, IsFalse, IsTrue } from \"inferred-types/types\";\nimport { isDefined, isFalse, isTrue } from \"inferred-types/runtime\";\nimport { addToken } from \"./addToken\";\n\nexport function boolean<L extends boolean>(literal?: L) {\n return (\n isDefined(literal)\n ? isTrue(literal)\n ? addToken(\"true\")\n : isFalse(literal)\n ? addToken(\"false\")\n : addToken(\"boolean\")\n : addToken(\"boolean\")\n ) as unknown as If<IsTrue<L>, true, If<IsFalse<L>, false, boolean>>;\n}\n\nexport const unknown = () => \"<<unknown>>\" as unknown;\n\nexport const undefinedType = () => \"<<undefined>>\" as unknown as undefined;\n\nexport const nullType = () => \"<<null>>\" as unknown as null;\n\nexport const never = () => \"<<never>>\" as unknown as never;\n","import type {\n AsLiteralFn,\n FnArgsDefn,\n FnPropertiesDefn,\n FnReturnTypeDefn,\n FromDefn,\n FromWideTokens,\n} from \"inferred-types/types\";\n\n/**\n * **fn**\n *\n * provides an API surface for function definition\n */\nexport function fn<TArgs extends readonly FnArgsDefn[]>(..._args: TArgs) {\n return {\n returns: <TReturn extends FnReturnTypeDefn>(_rtn: TReturn) => ({\n addProperties: <TProps extends FnPropertiesDefn>(_kv: TProps) => {\n // TODO\n return null as unknown as AsLiteralFn<\n FromWideTokens<TArgs, FromDefn<TArgs>>,\n FromWideTokens<TReturn, FromDefn<TReturn>>,\n FromDefn<TProps>\n >;\n },\n done: () => {\n return null as unknown as AsLiteralFn<\n FromDefn<TArgs>,\n FromDefn<TReturn>\n >;\n },\n }),\n done: () => {\n const result: unknown = null;\n return result as unknown as AsLiteralFn<FromDefn<TArgs>>;\n },\n };\n}\n","import type { DictionaryTypeDefn, FromDefn, TupleDefn } from \"inferred-types/types\";\n\nexport function dictionary<T extends DictionaryTypeDefn>(_obj: T) {\n // TODO\n\n return null as unknown as FromDefn<T>;\n}\n\n;\nexport function tuple<T extends readonly TupleDefn[]>(..._elements: T) {\n // TODO\n return null as unknown as FromDefn<T>;\n}\n","import type { AsType, SimpleToken } from \"inferred-types/types\";\nimport { isRegExp, isString } from \"inferred-types/runtime\";\n\n/**\n * **regexToken**`(re, ...rep)`\n *\n * Creates a `TypeToken` that is a form of string literal and\n * represented in the type system via the use of the `SimpleToken`\n * elements defined in \"rep\" but then with the RegExp encoded into\n * the token too so that it can be used for validation during\n * runtime.\n */\nexport function regexToken<\n TExp extends RegExp | string,\n TRep extends readonly SimpleToken[],\n>(re: TExp, ...rep: TRep) {\n let exp: string = \"\";\n\n if (isString(re)) {\n // regex's coming in as a string must be validated\n try {\n const test = new RegExp(re);\n if (!isRegExp(test)) {\n const err = new Error(`Invalid RegEx passed into regexToken(${re}, ${JSON.stringify(rep)})!`);\n err.name = \"InvalidRegEx\";\n throw err;\n }\n else {\n exp = re as string;\n }\n }\n catch {\n const err = new Error(`Invalid RegEx passed into regexToken(${re}, ${JSON.stringify(rep)})!`);\n err.name = \"InvalidRegEx\";\n throw err;\n }\n }\n else if (isRegExp(re)) {\n // all representations must be stored as as a string\n exp = re.toString();\n }\n\n // exp has been validated as valid\n const token = `<<string-set::regexp::${encodeURIComponent(exp)}>>`;\n\n return token as AsType<TRep>;\n}\n","import type {\n CivilianTime,\n Dictionary,\n Ip4Address,\n Ip6Address,\n MilitaryTime,\n SimpleToken,\n StringTokenUtilities,\n TimeResolution,\n TokenBaseType,\n TupleToUnion,\n TypeTokenSingletons,\n Zip5,\n ZipCode,\n ZipPlus4,\n} from \"inferred-types/types\";\n\nimport { addToken } from \"./addToken\";\nimport { regexToken } from \"./regexToken\";\n\ntype Token<T extends string> = `<<${T}>>`;\n\n/**\n * Generates a token and then types it appropriates for the given Singleton\n */\nfunction addSingleton<\n T extends TypeTokenSingletons,\n Api extends Dictionary | null = null,\n>(token: T, api?: Api) {\n return <\n L extends readonly TokenBaseType<Token<T>>[],\n >(\n ...literals: L\n ) => {\n return (\n literals.length === 0\n ? api || addToken(token)\n : literals.length === 1\n ? addToken(token, literals[0] as any)\n : addToken(\n \"union\",\n literals\n .map((l: TokenBaseType<any>) => addToken(token, `${l}`))\n .join(\",\"),\n )\n ) as unknown as L[\"length\"] extends 0\n ? Api extends Dictionary\n ? Api\n : TokenBaseType<Token<T>>\n : L[\"length\"] extends 1\n ? L[0]\n : TupleToUnion<L>;\n };\n}\n\nconst stringApi: StringTokenUtilities<string> = ({\n startsWith: <T extends string>(startsWith: T) => addToken(`string-set`, `startsWith::${startsWith}`) as `${T}${string}`,\n endsWith: <T extends string>(endsWith: T) => addToken(`string-set`, `endsWith::${endsWith}`) as `${string}${T}`,\n zip: () => addToken(\"string-set\", \"Zip5\") as Zip5,\n zipPlus4: () => addToken(\"string-set\", \"Zip5_4\") as ZipPlus4,\n zipCode: () => addToken(\"string-set\", \"ZipCode\") as ZipCode,\n militaryTime: <T extends TimeResolution = \"HH:MM\">(resolution?: T) => {\n return addToken(\n \"string-set\",\n \"militaryTime\",\n resolution || \"HH:MM\",\n ) as unknown as MilitaryTime<T>;\n },\n civilianTime: <T extends TimeResolution = \"HH:MM\">(resolution?: T) => {\n return addToken(\n \"string-set\",\n \"militaryTime\",\n resolution || \"HH:MM\",\n ) as unknown as CivilianTime<T>;\n },\n numericString: () => addToken(\"string-set\", \"numeric\") as unknown as `${number}`,\n ipv4Address: () => addToken(\"string-set\", \"ipv4Address\") as unknown as Ip4Address,\n ipv6Address: () => addToken(\"string-set\", \"ipv6Address\") as unknown as Ip6Address,\n\n regex: <\n TExp extends string | RegExp,\n TRepresentation extends readonly SimpleToken[],\n >(\n exp: TExp,\n ...literalRepresentation: TRepresentation\n ) => {\n const token = regexToken(exp, ...literalRepresentation);\n\n return token;\n },\n\n done: () => addToken(\"string\"),\n});\n/**\n * **string**\n *\n * The API surface for adding string tokens\n */\nexport const string = addSingleton(\"string\", stringApi);\n\n/**\n * **number**\n *\n * The API surface for adding number tokens\n */\nexport const number = addSingleton(\"number\");\n","import type { AsUnion, UnionElDefn } from \"inferred-types/types\";\n\n/**\n * **union**\n *\n * provides API implementation for defining a union\n */\nexport function union<U extends readonly [UnionElDefn, ...UnionElDefn[]]>(...elements: U) {\n const result: unknown = elements.map((_el) => {\n // TODO\n });\n\n return result as AsUnion<U>;\n}\n","import type {\n ArrayTypeDefn,\n AsArray,\n FromDefn,\n HandleDoneFn,\n MapKeyDefn,\n MapValueDefn,\n ObjKeyDefn,\n RecordValueTypeDefn,\n ShapeCallback,\n WeakMapKeyDefn,\n WeakMapValueDefn,\n WideTokenNames,\n} from \"inferred-types/types\";\n\nexport function record<\n TKey extends ObjKeyDefn = \"string | symbol\",\n TValue extends RecordValueTypeDefn = \"unknown\",\n>(_key?: TKey, _value?: TValue) {\n // TODO\n return null as unknown as Record<FromDefn<TKey>, FromDefn<TValue>>;\n}\n\nexport function array<T extends ArrayTypeDefn = \"unknown[]\">(_type?: T) {\n // TODO\n return null as unknown as AsArray<FromDefn<T>>;\n}\n\nexport function set<T extends WideTokenNames | ShapeCallback = \"unknown\">(_type?: T) {\n return null as unknown as T extends ShapeCallback\n ? Set<HandleDoneFn<ReturnType<T>>>\n : T extends WideTokenNames\n ? Set<FromDefn<T>>\n : Set<unknown>;\n}\n\nexport function map<\n TKey extends MapKeyDefn = \"unknown\",\n TValue extends MapValueDefn = \"unknown\",\n>(_key?: TKey, _value?: TValue) {\n // TODO\n return null as unknown as Map<FromDefn<TKey>, FromDefn<TValue>>;\n}\n\nexport function weakMap<\n TKey extends WeakMapKeyDefn = \"object\",\n TValue extends WeakMapValueDefn = \"unknown\",\n>(_key?: TKey, _value?: TValue) {\n // TODO\n return null as unknown as WeakMap<\n FromDefn<TKey> extends object\n ? FromDefn<TKey>\n : never,\n FromDefn<TValue>\n >;\n}\n","import type {\n HandleDoneFn,\n Shape,\n ShapeCallback,\n ShapeTupleOrUnion,\n ShapeApi as TShapeApi,\n} from \"inferred-types/types\";\nimport { SHAPE_PREFIXES } from \"inferred-types/constants\";\nimport { handleDoneFn, hasKeys, isObject, isString } from \"inferred-types/runtime\";\nimport { boolean, nullType, undefinedType, unknown } from \"./shape-helpers/atomics\";\nimport { fn } from \"./shape-helpers/functions\";\nimport { dictionary, tuple } from \"./shape-helpers/literal-containers\";\nimport { number, string } from \"./shape-helpers/singletons\";\nimport { union } from \"./shape-helpers/union\";\nimport { array, map, record, set, weakMap } from \"./shape-helpers/wide-containers\";\n\nfunction isAddOrDone<T>(val: T): val is ShapeTupleOrUnion & T {\n return isObject(val) && hasKeys(\"add\", \"done\") && typeof val.done === \"function\" && typeof val.add === \"function\";\n}\n\n/*\n * **Shape Api** _Implementation_\n *\n * This API surface is intended to be used to create a string-based\n * **token** which _represents_ a fully typed _type_.\n *\n * Even though the runtime system can interrogate this this token\n * at runtime -- via the `isShape()` type guard -- the\n * runtime will \"see\" the actual type that the token represents.\n *\n * ```ts\n * // number\n * const token = ShapeApi.number();\n * // <<number>>\n * console.log(token);\n * ```\n */\nexport const ShapeApiImplementation = {\n string,\n number,\n boolean,\n unknown,\n undefined: undefinedType,\n null: nullType,\n union,\n fn,\n record,\n array,\n set,\n map,\n weakMap,\n dictionary,\n tuple,\n} as unknown as TShapeApi;\n\n/**\n * **shape**(s => s.[API])\n *\n * Provides a callback API to allow for defining a type (_which\n * retains a runtime value which will map back to the type_)\n *\n * **Related:** `isShape(val)`\n */\nexport function shape<\n T extends ShapeCallback,\n>(cb: T): HandleDoneFn<ReturnType<T>> {\n const rtn = cb(ShapeApiImplementation);\n return handleDoneFn(\n isAddOrDone(rtn) ? rtn.done() : rtn,\n ) as unknown as HandleDoneFn<ReturnType<T>>;\n}\n\n/**\n * **isShape**(val)\n *\n * Type guard which tests whether a value is a _type_ defined by a `Shape`.\n */\nexport function isShape(v: unknown): v is Shape {\n return !!(isString(v)\n && v.startsWith(\"<<\")\n && v.endsWith(\">>\")\n && SHAPE_PREFIXES.some(i => v.startsWith(`<<${i}`)));\n}\n","import type { DefineObject, FromDefn, ShapeCallback } from \"inferred-types/types\";\nimport { Never } from \"inferred-types/constants\";\nimport { isDoneFn, isFunction, isSimpleToken } from \"inferred-types/runtime\";\nimport { handleDoneFn } from \"../api/handleDoneFn\";\nimport { asType } from \"./asType\";\nimport { ShapeApiImplementation } from \"./shape\";\n\nexport function asDefineObject<T extends DefineObject>(defn: T) {\n const result = Object.keys(defn).reduce(\n (acc, i) => isSimpleToken(defn[i])\n ? { ...acc, [i]: asType(defn[i]) }\n : isDoneFn(defn[i])\n ? { ...acc, [i]: handleDoneFn((defn[i] as ShapeCallback)(ShapeApiImplementation)),\n }\n : isFunction(defn[i])\n ? {\n ...acc,\n [i]: handleDoneFn((defn[i] as ShapeCallback)(ShapeApiImplementation)),\n }\n : Never,\n {},\n ) as unknown;\n\n return result as FromDefn<T>;\n}\n","import type { AsType, DefineObject, FromDefn, ShapeCallback, SimpleScalarToken, SimpleToken, SimpleType } from \"inferred-types/types\";\nimport { isDefineObject, isFunction } from \"inferred-types/runtime\";\nimport { handleDoneFn } from \"../api\";\nimport { asDefineObject } from \"./asDefineObject\";\nimport { ShapeApiImplementation } from \"./shape\";\n\n/**\n * **asType**(token)**\n *\n * Converts a `SimpleToken` into it's corresponding _type_.\n *\n * - also allows a `ShapeCallback` for more advanced types\n * - this includes `DefineObject` key-values\n * - also allows tuple generation\n * - note: that tokens generated with the callback approach\n * is not fully reverse engineerable at this point; this will\n * be added later\n */\nexport function asType<\n T extends [SimpleToken | DefineObject ] | readonly (SimpleToken | DefineObject | ShapeCallback)[],\n>(...token: T) {\n return (\n isFunction(token)\n ? token(ShapeApiImplementation)\n : token.length === 1\n ? isFunction(token[0])\n ? handleDoneFn(token[0](ShapeApiImplementation))\n : isDefineObject(token[0])\n ? asDefineObject(token[0])\n : token[0]\n : token.map(i => isFunction(i) ? handleDoneFn(i(ShapeApiImplementation)) : i)\n ) as unknown as T extends [SimpleToken]\n ? SimpleType<T[0]>\n : T extends [DefineObject]\n ? FromDefn<T[0]>\n : T extends readonly (SimpleToken | DefineObject | ShapeCallback)[]\n ? FromDefn<T>\n : never;\n}\n\nexport function asStringLiteral<\n T extends readonly SimpleScalarToken[],\n>(...values: T) {\n return values.map(i => i as unknown as AsType<typeof i>);\n}\n","// /* eslint-disable ts/no-explicit-any */\n// /* eslint-disable no-use-before-define */\n// import {\n// Choice,\n// ChoiceValue,\n// AsChoice,\n// Scalar,\n// CreateChoice,\n// ChoiceCallback,\n// ChoiceApiOptions,\n// ChoiceApiConfig,\n// ChoiceApi\n// } from \"inferred-types/types\";\n// import { isDoneFn, isFunction, isString, isTuple, isUndefined } from \"../type-guards/index\";\n// import { shape } from \"./shape\";\n// import { Never } from \"inferred-types/constants\";\n\n// export const createChoice: CreateChoice = <\n// TName extends string,\n// TValue extends ChoiceValue\n// >(name: TName, value?: TValue) => {\n// const result: any = isUndefined(value)\n// ? { name, value: name }\n// : isFunction(value)\n// ? { name, value: value(shape) }\n// : { name, value }\n\n// return (\n// isDoneFn(result)\n// ? result.done()\n// : result\n// ) as AsChoice<TName,TValue>;\n// }\n\n// const configureChoiceApi = <\n// TChoices extends readonly Choice[],\n// TOptions extends ChoiceApiOptions\n// >(\n// choices: TChoices,\n// options: TOptions\n// ): ChoiceApiConfig<TChoices,TOptions> => ({\n// done: () => ({} as unknown as ChoiceApi<TChoices,TOptions>),\n// allowChoicesToBeUsedOnlyOnce: () => configureChoiceApi(\n// choices,\n// {...options, unique: true}\n// ),\n// allowChoicesToBeUsedMultipleTimes: () => configureChoiceApi(\n// choices,\n// {...options, unique: false}\n// ),\n// setStyle: (style) => configureChoiceApi(\n// choices,\n// {...options, style}\n// ),\n// maximumChoices: (max) => configureChoiceApi(\n// choices,\n// {...options, max}\n// )\n// });\n\n// const toChoices = <\n// T extends readonly (string | [string, Scalar] | Choice | ChoiceCallback)[]\n// >(values: T) => {\n// return values.map(i => isString(i)\n// ? {name: i, value: i }\n// : isTuple(s => s.string(), s => s.union(\"Scalar\"))(i)\n// ? {name: i[0], value: i[1]}\n// : Never\n// );\n// }\n\n// export const createChoiceApi = <\n// TChoices extends readonly (string | [string, Scalar] | Choice | ChoiceCallback)[]\n// >(...choices: TChoices) => {\n// configureChoiceApi(toChoices(choices), {\n// unique: true,\n// max: null,\n// style: \"fn\"\n// })\n// }\n\nexport const choices = \"NOT READY\";\n","import type {\n FromSimpleToken,\n Narrowable,\n SimpleToken,\n} from \"inferred-types/types\";\nimport {\n infer,\n isArray,\n isBoolean,\n isMap,\n isNarrowableObject,\n isNull,\n isNumber,\n isObject,\n isSetContainer,\n isString,\n isUndefined,\n objectValues,\n startsWith,\n stripAfter,\n stripBefore,\n} from \"inferred-types/runtime\";\n\nexport type DoesExtendTypeguard<\n T extends Narrowable,\n> = <TVal extends Narrowable>(val: TVal) => val is T & TVal;\n\n/**\n * **doesExtend**`(type) => (value) => boolean`\n *\n * A higher order utility where the first call provides a type definition\n * and the subsequent call tests whether the value passed in _extends_\n * the type.\n */\nexport function doesExtend<TType extends SimpleToken>(\n type: TType,\n): DoesExtendTypeguard<FromSimpleToken<TType>> {\n return (val): val is FromSimpleToken<TType> => {\n let response: boolean = false;\n\n if (isString(val)) {\n if (type === \"string\") {\n response = true;\n }\n if (type.startsWith(\"string(\")) {\n const literals = stripAfter(\n stripBefore(type, \"string(\"),\n \")\",\n ).split(/,\\s*/);\n if (literals.includes(val)) {\n response = true;\n }\n }\n }\n\n if (isNumber(val)) {\n if (type === \"number\") {\n response = true;\n }\n if (type.startsWith(\"number(\")) {\n const literals = stripAfter(\n stripBefore(type, \"number(\"),\n \")\",\n ).split(/,\\s*/).map(Number);\n if (literals.includes(val)) {\n response = true;\n }\n }\n }\n\n if (isNull(val) && (type === \"null\" || type === \"Opt<null>\")) {\n response = true;\n }\n\n if (isUndefined(val) && (type === \"undefined\" || type.startsWith(\"Opt<\"))) {\n response = true;\n }\n\n if (isBoolean(val)) {\n if (type === \"boolean\") {\n response = true;\n }\n if (\n (type === \"true\" && val === true)\n || (type === \"false\" && val === false)\n ) {\n response = true;\n }\n }\n\n if (isNarrowableObject(val)) {\n if (type === \"Dict\" || type === \"Dict<string, unknown>\") {\n response = true;\n }\n if (startsWith(\"Dict<\")(type)) {\n const match = infer(\"Dict<{{infer key}}, {{infer value}}>\")(type);\n if (match) {\n const { value } = match;\n const isOpt = value.includes(`Opt<`);\n const values = objectValues(val) as any[];\n if (\n (values.every(i => isOpt ? isString(i) || isUndefined(i) : isString(i)) && type === \"Dict<string, string>\")\n || (values.every(i => isOpt ? isUndefined(i) || isNumber(i) : isNumber(i)) && type === \"Dict<string, number>\")\n || (values.every(i => isOpt ? isUndefined(i) || isBoolean(i) : isBoolean(i)) && type === \"Dict<string, boolean>\")\n ) {\n response = true;\n }\n }\n }\n } // end object\n\n if (isArray(val)) {\n if (type === \"Array\" || type === \"Array<unknown>\") {\n return true;\n }\n if (\n (type === \"Array<Dict>\" && val.every(isObject))\n || (type === \"Array<boolean>\" && val.every(isBoolean))\n || (type === \"Array<string>\" && val.every(isString))\n || (type === \"Array<number>\" && val.every(isNumber))\n || (type === \"Array<Map>\" && val.every(isMap))\n || (type === \"Array<Set>\" && val.every(isSetContainer))\n ) {\n response = true;\n }\n }\n\n if (isMap(val)) {\n if (\n type === \"Map\"\n || (type === \"Map<Dict, Array>\" && Array.from(val.keys()).every(isObject) && Array.from(val.values()).every(isArray))\n || (type === \"Map<Dict, Dict>\" && Array.from(val.keys()).every(isObject) && Array.from(val.values()).every(isObject))\n || (type === \"Map<Dict, boolean>\" && Array.from(val.keys()).every(isObject) && Array.from(val.values()).every(isBoolean))\n || (type === \"Map<Dict, number>\" && Array.from(val.keys()).every(isObject) && Array.from(val.values()).every(isNumber))\n || (type === \"Map<Dict, string>\" && Array.from(val.keys()).every(isObject) && Array.from(val.values()).every(isString))\n || (type === \"Map<Dict, unknown>\" && Array.from(val.keys()).every(isObject))\n || (type === \"Map<string, string>\" && Array.from(val.keys()).every(isString) && Array.from(val.values()).every(isString))\n || (type === \"Map<string, number>\" && Array.from(val.keys()).every(isString) && Array.from(val.values()).every(isNumber))\n || (type === \"Map<string, boolean>\" && Array.from(val.keys()).every(isString) && Array.from(val.values()).every(isBoolean))\n || (type === \"Map<string, unknown>\" && Array.from(val.keys()).every(isString))\n || (type === \"Map<number, string>\" && Array.from(val.keys()).every(isNumber) && Array.from(val.values()).every(isString))\n || (type === \"Map<number, number>\" && Array.from(val.keys()).every(isNumber) && Array.from(val.values()).every(isNumber))\n || (type === \"Map<number, boolean>\" && Array.from(val.keys()).every(isNumber) && Array.from(val.values()).every(isBoolean))\n || (type === \"Map<number, unknown>\" && Array.from(val.keys()).every(isNumber))\n ) {\n // TODO: this is not complete\n response = true;\n }\n }\n\n if (isSetContainer(val)) {\n if (\n type === \"Set\" || type === \"Set<unknown>\"\n || (type === \"Set<boolean>\" && Array.from(val).every(isBoolean))\n || (type === \"Set<string>\" && Array.from(val).every(isString))\n || (type === \"Set<number>\" && Array.from(val).every(isNumber))\n || (type === \"Set<Opt<boolean>>\" && Array.from(val).every(i => isBoolean(i) || isUndefined(i)))\n || (type === \"Set<Opt<string>>\" && Array.from(val).every(i => isString(i) || isUndefined(i)))\n || (type === \"Set<Opt<number>>\" && Array.from(val).every(i => isNumber(i) || isUndefined(i)))\n ) {\n response = true;\n }\n }\n\n return response as unknown as ReturnType<DoesExtendTypeguard<FromSimpleToken<TType>>>;\n };\n}\n","import type { AsIp6Prefix, Ip6Group } from \"inferred-types/types\";\nimport { addToken } from \"./shape-helpers/addToken\";\n\nexport function ip6Prefix<T extends readonly Ip6Group[]>(...groups: T) {\n const empty = addToken(\"string\") as `${string}`;\n const count = 4 - groups.length;\n const fillIn: typeof empty[] = [];\n for (let index = 0; index < count; index++) {\n fillIn.push(empty);\n }\n return [\n \"<<string::\",\n [\n groups.join(\":\"),\n fillIn.join(\":\"),\n ].join(\":\") as string,\n \">>\",\n ].join(\"\") as unknown as AsIp6Prefix<T>;\n}\n","import type {\n AfterFirst,\n AsString,\n Chars,\n First,\n IsEqual,\n IsNever,\n IsNumericLiteral,\n IsStringLiteral,\n IsTuple,\n IsUnion,\n List,\n Narrowable,\n ObjectKey,\n Tuple,\n TupleToUnion,\n UnionToTuple,\n WidenUnion,\n} from \"inferred-types/types\";\n\nimport { isArray } from \"inferred-types/runtime\";\n\ntype ListWideType<\n T extends readonly unknown[],\n> = IsNever<WidenUnion<TupleToUnion<T>>> extends true\n ? unknown\n : WidenUnion<TupleToUnion<T>>;\n\ntype Describe<T> = IsUnion<T> extends true\n ? `9${AsString<UnionToTuple<T>[\"length\"]>}`\n : T extends string\n ? \"1\"\n : T extends number\n ? \"2\"\n : T extends boolean\n ? \"3\"\n : T extends Tuple\n ? IsTuple<T> extends true\n ? \"tuple\"\n : \"array\"\n : T extends Record<ObjectKey, infer V>\n ? `0x${Describe<V>}>`\n : T extends Map<unknown, infer V>\n ? `1x${Describe<V>}>`\n : IsEqual<T, unknown> extends true\n ? `4`\n : IsEqual<T, null> extends true\n ? `5`\n : `6`;\n\ntype Lit<T> = T extends string\n ? IsStringLiteral<T> extends true\n ? First<Chars<T>>\n : \"\"\n : T extends number\n ? IsNumericLiteral<T> extends true\n ? `${T}`\n : \"\"\n : \"\";\n\ntype DescribeLit<\n T extends readonly unknown[],\n TResult extends string = \"\",\n> = [] extends T\n ? TResult\n : DescribeLit<\n AfterFirst<T>,\n `${TResult}${Lit<First<T>>}`\n >;\n\ntype ListHash<\n T extends readonly unknown[],\n> = [IsEqual<T[\"length\"], number>] extends [true]\n ? `0${Describe<ListWideType<T>>}`\n : `${T[\"length\"]}${Describe<ListWideType<T>>}${DescribeLit<T>}`;\n\nexport type AsList<\n T extends readonly unknown[],\n> = List<\n ListWideType<T>,\n ListHash<T>\n>;\n\nfunction createProxy<\n TArr extends readonly unknown[],\n>(...initialize: TArr) {\n const state = initialize as unknown as List<ListWideType<TArr>, ListHash<TArr>>;\n state.id = null as unknown as ListHash<TArr>;\n\n const proxy = new Proxy(state, {}) as List<\n ListWideType<TArr>,\n ListHash<TArr>\n >;\n Object.defineProperty(proxy, \"id\", {\n enumerable: false,\n });\n\n return proxy;\n}\n\n/**\n * **list**([init])\n *\n * Creates a `List` container which aims to behave _exactly_ like a\n * [Javascript Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)\n * but with the exception that when declared as a variable (aka, `let` or `var`,\n * not `const`), the variable can't be replaced with another raw array declaration.\n *\n * ```ts\n * // List<number>\n * let a = list([1,2,3]);\n * // mutate the list\n * a.push(4);\n * // NOT allowed\n * a = [4,5,6];\n * // pass into fn as a reference\n * const fn = (v: List<number>) => { v.push(4); return v; }\n * // List<number> with values [1,2,3,4]\n * fn(list([1,2,3]));\n * ```\n */\nexport function list<\n TList extends readonly N[] | readonly [ readonly N[] ],\n N extends Narrowable,\n>(...init: TList) {\n return (\n init.length === 1 && isArray(init[0])\n ? createProxy(...init[0])\n : createProxy(...init)\n ) as unknown as TList extends readonly [ readonly N[] ]\n ? List<ListWideType<TList[0]>, ListHash<TList[0]>>\n : TList extends readonly N[]\n ? List<ListWideType<TList>, ListHash<TList>>\n : never;\n}\n","import type {\n IsUnset,\n Join,\n ShapeCallback,\n SimpleToken,\n TypeTokenAtomics,\n TypeTokenContainers,\n TypeTokenFunctions,\n TypeTokenKind,\n TypeTokenLookup,\n TypeTokenSets,\n TypeTokenSingletons,\n Unset,\n} from \"inferred-types/types\";\nimport {\n handleDoneFn,\n isAtomicKind,\n isFnBasedKind,\n isSet,\n isSetBasedKind,\n isSingletonKind,\n isUnset,\n unset,\n} from \"inferred-types/runtime\";\n\ntype VariantClosure<\n TVariant extends TypeTokenKind,\n> = TVariant extends TypeTokenAtomics\n ? `<<${TVariant}>>`\n : TVariant extends TypeTokenSingletons\n ? SingletonClosure<TVariant>\n : TVariant extends TypeTokenSets\n ? TokenSetClosure<TVariant>\n : TVariant extends TypeTokenFunctions\n ? TokenFunctionClosure<TVariant, Unset, Unset>\n : TVariant extends TypeTokenContainers\n ? TokenContainerClosure<TVariant>\n : never;\n\nexport type UnionClosure = <T extends readonly unknown[]>(...elements: T) =>\n `union::[${Join<T, \", \">}]`;\n\n/**\n * **SingletonClosure**\n *\n * Closes out the `string` or `number` base types to conclude as\n * a valid Singleton Token.\n */\nexport interface SingletonClosure<T extends \"string\" | \"number\"> {\n wide: () => `<<${T}>>`;\n literal: <TLit extends T extends \"string\" ? string : number>(val: TLit) => `<<${T}::${TLit}>>`;\n}\n\nfunction singletonApi<\n T extends \"string\" | \"number\",\n>(kind: T): SingletonClosure<T> {\n return {\n wide: () => `<<${kind}>>`,\n literal: val => `<<${kind}::${val}>>`,\n };\n}\n\n/**\n * **TokenSetClosure**\n *\n * Closes out the `string` or `number` base types to conclude as\n * a valid Singleton Token.\n */\nexport type TokenSetClosure<T extends TypeTokenSets> = <P extends\nTypeTokenLookup<T>,\n>(_p: P\n) => any;\n\nexport type TokenContainerClosure<_T> = any;\n\nfunction setApi<\n T extends TypeTokenSets,\n>(_variant: T): TokenSetClosure<T> {\n return null as unknown as TokenSetClosure<T>;\n}\n\n/**\n * Closes out the definition of a `TypeToken` for a _function_ based token\n */\nexport interface TokenFunctionClosure<\n T extends TypeTokenFunctions,\n P extends (readonly (SimpleToken | ShapeCallback)[]) | Unset,\n R extends Unset | SimpleToken | ShapeCallback,\n> {\n params: P extends Unset\n ? <TParams extends (readonly (SimpleToken | ShapeCallback)[]) >(\n ...p: TParams\n ) => TokenFunctionClosure<T, TParams, R>\n : never;\n returns: R extends Unset\n ? <TReturns extends SimpleToken | ShapeCallback>(\n r: TReturns\n ) => TokenFunctionClosure<T, P, TReturns>\n : never;\n done: () => IsUnset<P> extends true\n ? IsUnset<R> extends true\n ? `<<${T}>>` // TODO\n : `<<${T}::any::${string}>>`\n : IsUnset<R> extends true\n ? `<<${T}::${string}>>` // TODO\n : `<<${T}::${string}>>`; // TODO\n}\n\nfunction fnReturnsApi<\n T extends TypeTokenFunctions,\n P extends (readonly (SimpleToken | ShapeCallback)[]) | Unset,\n R extends SimpleToken | ShapeCallback | Unset,\n>(variant: T, _params: P, returns: R): TokenFunctionClosure<T, P, R>[\"returns\"] {\n return (\n isSet(returns)\n ? null as never\n : <TRtn extends SimpleToken | ShapeCallback | Unset>(_rtn: TRtn) => {\n return isSet(returns)\n ? `<<${variant}::>>`\n : null;\n }\n ) as unknown as TokenFunctionClosure<T, P, R>[\"returns\"];\n}\n\nfunction fnParamsApi<\n T extends TypeTokenFunctions,\n P extends (readonly (SimpleToken | ShapeCallback)[]) | Unset,\n R extends SimpleToken | ShapeCallback | Unset,\n>(variant: T, params: P, _returns: R): TokenFunctionClosure<T, P, R>[\"params\"] {\n return (\n isSet(params)\n ? null as never\n : <TParams extends (readonly (SimpleToken | ShapeCallback)[]) | Unset>(\n params: TParams,\n ) => {\n return isSet(params)\n ? `<<${variant}::>>`\n : null;\n }\n ) as unknown as TokenFunctionClosure<T, P, R>[\"params\"];\n}\n\nfunction fnDoneApi<\n T extends TypeTokenFunctions,\n P extends (readonly (SimpleToken | ShapeCallback)[]) | Unset,\n R extends SimpleToken | ShapeCallback | Unset,\n>(variant: T, params: P, returns: R): TokenFunctionClosure<T, P, R>[\"done\"] {\n return (\n isUnset(params) && isUnset(returns)\n ? `<<`\n : ``\n\n ) as unknown as TokenFunctionClosure<T, P, R>[\"done\"];\n}\n\nfunction fnTokenClosure<\n T extends TypeTokenFunctions,\n P extends (readonly (SimpleToken | ShapeCallback)[]) | Unset,\n R extends SimpleToken | ShapeCallback | Unset,\n>(\n kind: T,\n params: P,\n returns: R,\n): TokenFunctionClosure<T, P, R> {\n return {\n done: fnDoneApi(kind, params, returns),\n params: fnParamsApi(kind, params, returns),\n returns: fnReturnsApi(kind, params, returns),\n };\n}\n\n/**\n * **createTypeToken**`(base) => (secondary) => ...`\n *\n * A higher order function designed to creating a valid\n * `TypeToken` simple through a compound process.\n */\nexport function createTypeToken<\n TBase extends TypeTokenKind,\n>(\n kind: TBase,\n): VariantClosure<TBase> {\n return (\n isAtomicKind(kind)\n ? `<<${kind}>>`\n : isSingletonKind(kind)\n ? singletonApi(kind)\n : isSetBasedKind(kind)\n ? setApi(kind)\n : isFnBasedKind(kind)\n ? handleDoneFn(fnTokenClosure(kind, unset, unset))\n : \"<<never>>\"\n ) as unknown as VariantClosure<TBase>;\n}\n","import type { DefineObject, FromDefineObject } from \"inferred-types/types\";\n\nexport function fromDefineObject<T extends DefineObject>(defn: T) {\n return defn as unknown as FromDefineObject<T>;\n}\n","import type { TypeToken, TypeTokenKind } from \"inferred-types/types\";\nimport { stripSurround } from \"inferred-types/runtime\";\n\n/**\n * **getTokenKind**`(token)`\n *\n * Given a `TypeToken`, this function will extract the\n * `kind` variant name.\n */\nexport function getTokenKind<T extends TypeToken>(token: T): TypeTokenKind {\n const bare = stripSurround(\"<<\", \">>\")(token);\n const parts = bare.split(\"::\");\n const kind = parts.pop() as TypeTokenKind;\n\n return kind;\n}\n","import type {\n SimpleContainerToken,\n SimpleScalarToken,\n SimpleToken,\n SimpleType,\n} from \"inferred-types/types\";\nimport { Never } from \"inferred-types/constants\";\nimport { isSimpleContainerToken, isSimpleScalarToken } from \"inferred-types/runtime\";\n\n/**\n * **simpleToken**`(token)`\n *\n * Creates a `SimpleToken` which assured to be a valid token type.\n *\n * **Related:** `simpleType()`, `simpleScalarToken()`, `simpleContainerToken()`\n */\nexport const simpleToken = <T extends SimpleToken>(token: T) => token;\n\n/**\n * **simpleScalarToken**`(token)`\n *\n * Creates a `SimpleScalarToken` which is assured to be a valid token type.\n *\n * **Related:** `simpleType()`, `simpleToken()`, `simpleContainerToken()`\n */\nexport const simpleScalarToken = <T extends SimpleScalarToken>(token: T) => token;\n\n/**\n * **simpleContainerToken**`(token)`\n *\n * Creates a `SimpleContainerToken` which assured to be a valid token type.\n *\n * **Related:** `simpleType()`, `simpleToken()`, `simpleScalarToken()`\n */\nexport const simpleContainerToken = <T extends SimpleContainerToken>(token: T) => token;\n\n/**\n * **simpleScalarType**`(token)`\n *\n * Creates a valid runtime token _and_ converts it's type to the type that\n * the token represents.\n *\n * **Related:** `simpleScalarToken`\n */\nexport function simpleScalarType<T extends SimpleScalarToken>(token: T) {\n const value: unknown = simpleScalarToken(token) as unknown;\n\n return value as SimpleType<T>;\n}\n\n/**\n * **simpleContainerType**`(token)`\n *\n * Creates a valid runtime token _and_ converts it's type to the type that\n * the token represents.\n *\n * **Related:** `simpleContainerToken`\n */\nexport function simpleContainerType<T extends SimpleContainerToken>(token: T) {\n const value: unknown = simpleContainerToken(token) as unknown;\n\n return value as SimpleType<T>;\n}\n\n/**\n * **simpleType**`(token)`\n *\n * Creates a valid runtime token of the `SimpleToken` convention and converts\n * the _type_ to the type that the token represents.\n */\nexport function simpleType<T extends SimpleToken>(token: T) {\n const value: unknown = (\n isSimpleScalarToken(token)\n ? simpleScalarType(token)\n : isSimpleContainerToken(token)\n ? simpleContainerToken(token)\n : Never\n );\n return value as SimpleType<T>;\n}\n","import type { AnyObject } from \"inferred-types/types\";\n\n/**\n * checks whether objects `A`, and `B` have overlapping\n * keys.\n */\nexport function hasOverlappingKeys<\n A extends AnyObject,\n B extends AnyObject,\n>(\n a: A,\n b: B,\n): boolean {\n const keys = Object.keys(a);\n\n for (const k of keys) {\n if (k in b) {\n return true;\n }\n }\n\n return false;\n}\n","import type { Container, ObjectKey, UniqueKeys } from \"inferred-types/types\";\nimport { isArray } from \"inferred-types/runtime\";\n\n/**\n * **uniqueKeys**(left, right)\n *\n * Returns a strongly typed `LeftRight` tuple which identifies the\n * unique keys for each participant list passed in.\n */\nexport function uniqueKeys<\n L extends Container,\n R extends Container,\n>(left: L, right: R): UniqueKeys<L, R> {\n const isNumeric = !!(isArray(left) && isArray(right));\n\n if (\n (isArray(left) && !isArray(right))\n || (isArray(right) && !isArray(left))\n ) {\n throw new Error(\"uniqueKeys(l,r) given invalid comparison; both left and right values should be an object or an array but not one of each!\");\n }\n\n const l = (\n isNumeric\n ? Object.keys(left).map(i => Number(i))\n : Object.keys(left)\n ) as ObjectKey[];\n const r = (\n isNumeric\n ? Object.keys(right).map(i => Number(i))\n : Object.keys(right)\n ) as ObjectKey[];\n\n if (isNumeric) {\n throw new Error(\"uniqueKeys does not yet work with tuples\");\n }\n\n const leftKeys = l.filter(i => !r.includes(i));\n const rightKeys = r.filter(i => !l.includes(i));\n\n return [\n \"LeftRight\",\n leftKeys,\n rightKeys,\n ] as unknown as UniqueKeys<L, R>;\n}\n","import type { Narrowable, VueRef } from \"inferred-types/types\";\n\n/**\n * **asVueRef**(value)\n *\n * Receives a _value_ and makes it look like a `VueRef<T>` which will make\n * it pass the `IsRef<T>` type check. It also provides a hidden `_value` property\n * to the runtime which makes it pass the `isRef()` runtime check.\n *\n * Note:\n *\n * - this is a convenience function for building test cases in a library where you're\n * not actually exporting VueJS symbols (like inferred-types).\n */\nexport function asVueRef<T extends Narrowable>(value: T) {\n return ({\n value,\n _value: null,\n }) as unknown as VueRef<T>;\n}\n"],"mappings":";AAsBO,SAAS,iBAEdA,KAAS;AACT,SAAO,kBAAkBA,KAAI,EAAE,QAAQ,KAAK,CAAC;AAC/C;AAOO,SAAS,wBAEdA,KAAS;AACT,SAAO,kBAAkBA,KAAI,EAAE,gBAAgB,KAAK,CAAC;AACvD;AAQO,SAAS,MAA4CC,MAAkC;AAC5F,SACE,MAAMA,IAAG,IACLA,OACA,aAAaA,IAAG,IACd,EAAE,OAAO,OAAO,SAASA,KAAI,IAC7B,qBAAqB,aAAa;AAE5C;;;ACzCO,SAAS,aAGd,KAAW,eAAwB,OAAkB;AACrD,SAAO,SAAS,GAAG,KAAK,WAAW,GAAG,IAClC,SAAS,GAAG,IACV,IAAI,KAAK,IACT,WAAW,GAAG,IACZ,eAAe,IAAI,IAAI,MACvB,MACJ,WAAW,GAAG,IACZ,eAAe,IAAI,IAAI,MACvB;AACR;;;ACZO,SAAS,YAKd,KACA,MAAY,MACa;AACzB,QAAM,cAAc,OAAO,KAAK,GAAG,EAAE;AAAA,IACnC,CAAC,KAAK,QAAQ;AACZ,YAAM,MAAM,IAAI,GAAuB;AACvC,aAAO;AAAA,QACL,GAAG;AAAA,QACH,CAAC,GAAG,GAAG,MAAM;AAAA,MACf;AAAA,IACF;AAAA,IACA,CAAC;AAAA,EACH;AAEA,QAAMC,OAAM;AAAA,IACV,QAAQ;AAAA,IACR,MAAM,MAAY;AAAA,IAClB,GAAG;AAAA,EACL;AAEA,SAAOA;AACT;AAWA,SAAS,SAGL;AAGF,SAAO,CAAqBC,SAAW;AAGrC,WAAO,CACL,UACiC;AACjC,YAAMD,OAAM,YAAY,KAAK;AAC7B,YAAM,MAAMC,KAAID,IAAG;AAEnB,aAAO,aAAa,GAAG;AAAA,IACzB;AAAA,EACF;AACF;AAEA,SAAS,YAAsC;AAC7C,SAAO;AAAA,IACL,OAAO,CAA+B,WAAoB;AAAA,MACxD,QAAQ,OAA0C;AAAA,IACpD;AAAA,IACA,eAAe,MAAiC,OAAwB;AAAA,EAC1E;AACF;AAEA,SAAS,oBAA4C,YAAe;AAClE,SAAO,UAA+B;AACxC;AACA,IAAM,wBAAwB;AAAA,EAC5B,UAAU,MAAgC;AACxC,WAAO,UAAkB;AAAA,EAC3B;AACF;AASO,IAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA;AACF;;;AC3FO,SAAS,QAOd,KACA,WACA,cACA;AACA,SACE,MAAM,QAAQ,GAAG,IAAI,UAAU,GAAG,IAAI,aAAa,GAAiD;AAExG;;;AClBO,SAAS,iBAAuC;AACrD,SAAO,CACL,WACA,iBACG;AACH,WAAO,CAAc,QAAW,QAAQ,KAAK,WAAW,YAAY;AAAA,EACtE;AACF;;;ACIO,SAAS,UAKd,KACAE,YACA,YACA;AACA,SACE,UAAU,GAAG,IACTA,WAAU,GAAyB,IACnC,WAAW,GAAiC;AAEpD;;;ACzBO,IAAM,oBAAoB;EAC/B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAKO,IAAM,oBAAoB;EAC/B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAKO,IAAM,cAAc;EACzB,GAAG;EACH,GAAG;AACL;ACtEA,IAAM,SAAS;AAER,IAAM,eAAe;EAC1B,0BAA0B,MAAM,mBAAmB,MAAM;EACzD,0BAA0B,MAAM,qBAAqB,MAAM;EAC3D,0BAA0B,MAAM,qBAAqB,MAAM;EAC3D,0BAA0B,MAAM,qBAAqB,MAAM;EAC3D,qDAAqD,MAAM;AAC7D;ACRO,IAAM,mBAAmB;EAC9B;EACA;EACA;EACA;AACF;AEKO,IAAM,QAAQ,eAAe,OAAO;AGHpC,SAAS,eAAqC,MAAa;AAChE,SAAO;IACL,OAAO;IACP;EACF;AACF;AENO,IAAM,eAAe;EAC1B;EACA;EACA;EACA;EACA;EACA;EACA,OAAO;AACT;AEXO,IAAM,yBAAyB;EACpC,EAAE,MAAM,WAAW,QAAQ,KAAK;EAChC,EAAE,MAAM,UAAU,QAAQ,KAAK;EAC/B,EAAE,MAAM,WAAW,QAAQ,KAAK;EAChC,EAAE,MAAM,YAAY,QAAQ,KAAK;EACjC,EAAE,MAAM,cAAc,QAAQ,KAAK;EACnC,EAAE,MAAM,YAAY,QAAQ,KAAK;EACjC,EAAE,MAAM,eAAe,QAAQ,KAAK;EACpC,EAAE,MAAM,YAAY,QAAQ,KAAK;EACjC,EAAE,MAAM,WAAW,QAAQ,KAAK;EAChC,EAAE,MAAM,WAAW,QAAQ,KAAK;EAChC,EAAE,MAAM,UAAU,QAAQ,KAAK;EAC/B,EAAE,MAAM,SAAS,QAAQ,KAAK;EAC9B,EAAE,MAAM,YAAY,QAAQ,KAAK;EACjC,EAAE,MAAM,WAAW,QAAQ,KAAK;EAChC,EAAE,MAAM,QAAQ,QAAQ,KAAK;EAC7B,EAAE,MAAM,UAAU,QAAQ,KAAK;EAC/B,EAAE,MAAM,YAAY,QAAQ,KAAK;EACjC,EAAE,MAAM,aAAa,QAAQ,KAAK;EAClC,EAAE,MAAM,SAAS,QAAQ,KAAK;EAC9B,EAAE,MAAM,YAAY,QAAQ,KAAK;EACjC,EAAE,MAAM,iBAAiB,QAAQ,KAAK;EACtC,EAAE,MAAM,YAAY,QAAQ,KAAK;EACjC,EAAE,MAAM,aAAa,QAAQ,KAAK;EAClC,EAAE,MAAM,eAAe,QAAQ,KAAK;EACpC,EAAE,MAAM,YAAY,QAAQ,KAAK;EACjC,EAAE,MAAM,WAAW,QAAQ,KAAK;EAChC,EAAE,MAAM,YAAY,QAAQ,KAAK;EACjC,EAAE,MAAM,UAAU,QAAQ,KAAK;EAC/B,EAAE,MAAM,iBAAiB,QAAQ,KAAK;EACtC,EAAE,MAAM,cAAc,QAAQ,KAAK;EACnC,EAAE,MAAM,cAAc,QAAQ,KAAK;EACnC,EAAE,MAAM,YAAY,QAAQ,KAAK;EACjC,EAAE,MAAM,kBAAkB,QAAQ,KAAK;EACvC,EAAE,MAAM,gBAAgB,QAAQ,KAAK;EACrC,EAAE,MAAM,QAAQ,QAAQ,KAAK;EAC7B,EAAE,MAAM,YAAY,QAAQ,KAAK;EACjC,EAAE,MAAM,UAAU,QAAQ,KAAK;EAC/B,EAAE,MAAM,gBAAgB,QAAQ,KAAK;EACrC,EAAE,MAAM,gBAAgB,QAAQ,KAAK;EACrC,EAAE,MAAM,kBAAkB,QAAQ,KAAK;EACvC,EAAE,MAAM,gBAAgB,QAAQ,KAAK;EACrC,EAAE,MAAM,aAAa,QAAQ,KAAK;EAClC,EAAE,MAAM,SAAS,QAAQ,KAAK;EAC9B,EAAE,MAAM,QAAQ,QAAQ,KAAK;EAC7B,EAAE,MAAM,WAAW,QAAQ,KAAK;EAChC,EAAE,MAAM,YAAY,QAAQ,KAAK;EACjC,EAAE,MAAM,cAAc,QAAQ,KAAK;EACnC,EAAE,MAAM,iBAAiB,QAAQ,KAAK;EACtC,EAAE,MAAM,aAAa,QAAQ,KAAK;EAClC,EAAE,MAAM,WAAW,QAAQ,KAAK;AAClC;AAKO,IAAM,4BAA4B;EACvC,EAAE,MAAM,eAAe,QAAQ,KAAK;EACpC,EAAE,MAAM,kBAAkB,QAAQ,KAAK;EACvC,EAAE,MAAM,SAAS,QAAQ,KAAK;EAC9B,EAAE,MAAM,kCAAkC,QAAQ,KAAK;EACvD,EAAE,MAAM,4BAA4B,QAAQ,KAAK;EACjD,EAAE,MAAM,wBAAwB,QAAQ,KAAK;EAC7C,EAAE,MAAM,oBAAoB,QAAQ,KAAK;EACzC,EAAE,MAAM,kBAAkB,QAAQ,KAAK;EACvC,EAAE,MAAM,QAAQ,QAAQ,KAAK;AAC/B;AAQO,IAAM,kBAAkB;EAC7B,GAAG;EACH,GAAG;AACL;AC9DO,IAAM,yBAAyB;EACpC,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;AACL;AAEO,IAAM,qBAAqB;EAChC,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAM;EACN,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,MAAM;EACN,KAAK;EACL,KAAK;EACL,KAAK;AACP;AAeO,IAAM,yBAAyB;EACpC,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;AACL;AAEO,IAAM,kBAAkB;EAC7B,GAAG;EACH,GAAG;EACH,GAAG;AACL;ACzHO,IAAM,kBAAkB;EAC7B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAKO,IAAM,mBAAmB;EAC9B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AGrHO,IAAM,YAAY;EACvB,EAAE,MAAM,eAAe,QAAQ,MAAM,aAAa,OAAO,QAAQ,MAAM;EACvE,EAAE,MAAM,WAAW,QAAQ,MAAM,aAAa,OAAO,QAAQ,MAAM;EACnE,EAAE,MAAM,WAAW,QAAQ,MAAM,aAAa,OAAO,QAAQ,MAAM;EACnE,EAAE,MAAM,WAAW,QAAQ,MAAM,aAAa,OAAO,QAAQ,MAAM;EACnE,EAAE,MAAM,UAAU,QAAQ,MAAM,aAAa,OAAO,QAAQ,MAAM;EAClE,EAAE,MAAM,aAAa,QAAQ,MAAM,aAAa,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IAAI;EACrB,CAAC,SAAS,OAAO,IAAI;EACrB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,MAAM,OAAO,IAAI;EAClB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,MAAM,OAAO,IAAI;EAClB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,MAAM,OAAO,IAAI;EAClB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,MAAM,OAAO,IAAI;EAClB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,SAAS,OAAO,IAAI;EACrB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,SAAS,OAAO,IAAI;EACrB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,MAAM,OAAO,IAAI;EAClB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,SAAS,OAAO,IAAI;EACrB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,MAAM,OAAO,IAAI;EAClB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,MAAM,OAAO,IAAI;EAClB,CAAC,MAAM,OAAO,IAAI;EAClB,CAAC,MAAM,OAAO,IAAI;EAClB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,MAAM,OAAO,IAAI;EAClB,CAAC,OAAO,OAAO,IAAI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AM,WAAW;EACtB;AACF;AAEO,IAAM,YAAY;EACvB;AACF;AAUO,IAAM,WAAW;EACtB;AACF;AAGO,IAAM,SAAS;EACpB;AACF;AAEO,IAAM,WAAW;EACtB;AACF;AAEO,IAAM,aAAa;EACxB;AACF;AAEO,IAAM,gBAAgB;EAC3B;AACF;AAEO,IAAM,UAAU;EACrB;AACF;AAEO,IAAM,kBAAkB;EAC7B;EACA;AACF;AC7GO,IAAM,iBAAiB;EAC5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;ACSO,IAAM,uBAAuB;EAClC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,IAAM,2BAA2B;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AASO,IAAM,sBAAsB;EACjC;AACF;AAEO,IAAM,kBAAkB;EAC7B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,IAAM,oBAAoB;EAC/B,GAAG;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AASO,IAAM,qBAAqB;EAChC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,IAAM,sBAAsB;EACjC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,IAAM,oBAAoB;EAC/B;EACA;EACA;AACF;AAEO,IAAM,oBAAoB;EAC/B;EACA;AACF;AAEO,IAAM,0BAA0B;EACrC,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;AACL;AASO,IAAM,gBAAgB;EAC3B,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;AACL;ACpJO,IAAM,wBAAwB;EACnC;EACA;EACA;EACA;EACA;EACA;AACF;ACHO,IAAM,eAAe;EAC1B;IACE,MAAM;IACN,aAAa;IACb,UAAU,CAAC,0BAA0B;IACrC,YAAY;IACZ,qBAAqB;;IACrB,cAAc;EAChB;EACA;IACE,MAAM;IACN,aAAa;IACb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","names":["fn","api","api","map","ifBoolean","ifContainer","ifTrue","ifFalse","result","ifUndefined","ifDefined","fn","fn","tuple","fn","fn","fn","fn","literal","wide","mapper","result","api","_","result","csv","tuple","fn","map","tuple","endingIn","compare","tuple","valid","fn","getCategories","fn","URL","URL","URL","URL","URL","URL","URL","URL","URL","URL","URL","URL","URL","URL","URL","URL","URL","URL","valid","valid","valid","URL","list","list","result","sharedKeys","joinWith","tuple","list","fn","list","list","list","start","fn","result","asType","result","result","find","retain","find","retain","find","find","strip","strip","strip","_","_","input","union","result","list","queue","result","list","union","literal","result","tuple","api","startsWith","endsWith","string","union","result","string","union","tuple","result","params"]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["val: TVal","call_bare_fn: TBareFn","val: TVal","val: T","isAnArray: <N extends T & unknown[]>(arr: N) => IF","isNotAnArray: <N extends Exclude<T, unknown[] | readonly unknown[]>>(nonArr: N) => ELSE","isAnArray: <N extends T & readonly unknown[]>(arr: N) => IF","isNotAnArray: <N extends Exclude<T, unknown[] | readonly unknown[]>>(nonArr: N) => ELSE","val: V","val: TContent","ifBoolean: <V extends boolean>(v: V & TContent) => TIf","notBoolean: <V extends Exclude<TContent, boolean>>(v: V) => TElse","createConstant","kind: TKind","createConstant","kind: TKind","createConstant","kind: TKind","createConstant","kind: TKind","createConstant","kind: TKind","refType: TRefType","desc: TDesc","v: V","ch: T","callback_if_match: Callback<T, IF>","callback_not_match: Callback<T, ELSE>","value: TVal","ifContainer: <V extends TVal & Container>(val: V) => TIf","notContainer: <V extends Exclude<TVal, Container>>(val: V) => TElse","val: T","empty: TEmpty","notEmpty: TNotEmpty","comparator: TComparator","val: TVal","ifTrue: TIf","ifFalse: TElse","val: T","wasError: E","wasNotError: NE","val: T","ifVal: IF","elseVal: ELSE","value: TValue","isFnCallback: (fn: TValue & TypedFunction) => Fn","notFnCallback: (payload: Exclude<TValue, TypedFunction>) => NotFn","container: TContainer","key: TKey","hasKey: <V extends TContainer & Record<TKey, unknown>>(val: V) => IF","doesNotHaveKey: <N extends Exclude<TContainer, TKey>>(nonArr: N) => ELSE","value: TList","length: TLen","ifVal: <V extends Exclude<TList, Scalar | undefined> & Tuple>(v: V) => IF","elseVal: <V extends If<IsArray<TList>, TList, Exclude<TList, Tuple>>>(v: V) => ELSE","val: T","ifVal: (v: Exclude<T, null>) => IF","elseVal: () => ELSE","val: T","ifVal: () => IF","elseVal: (v: Exclude<T, null>) => ELSE","val: TContent","ifVal: <V extends TContent & number>(v: V) => TIf","elseVal: <V extends Exclude<TContent, number>>(v: V) => TElse","val: T","ifObj: IF","notObj: ELSE","value: TValue","comparator: TType","same: <T extends TType & TValue>(v: T) => IF","notSame: <T extends Exclude<TValue, TType>>(v: T) => ELSE","value: T","ifCallback: <\n V extends Exclude<T, undefined | Dictionary | unknown[]>,\n >(v: V\n ) => TIf","notCallback: <V extends Exclude<T, Scalar>>(v: V) => TElse","result","val: TContent","ifVal: <V extends TContent & string>(t: V & TContent) => TIf","elseVal: <V extends Exclude<TContent, string>>(v: V & TContent) => TElse","val: TContent","ifVal: <V extends TContent & true>(val: V) => TIf","elseVal: <V extends Exclude<TContent, true>>(val: V) => TElse","val: T","ifUndefined: () => IF","ifDefined: <V extends Exclude<T, undefined>>(v: V) => ELSE","ifVal: <V extends Exclude<T, undefined>>(v: V) => IF","elseVal: () => ELSE","val: T","api: T","api","value: unknown","val: unknown","value: T","val: unknown","val: unknown","op: unknown","op: TOp","params: TParams","val: unknown","val: unknown","val: unknown","val: unknown","daysInMonth","_","val: unknown","num: T","a: A","b: B","val: T","min: TMin","max: TMax","scope: TScope","val: TVal","val: T","val: T","comparator: T","val: TVal","comparator: T","val: TVal","num: T","comparator: T","val: TVal","comparator: T","val: TVal","n: number","err","timestamp: NumberLike","val: unknown","val: unknown","str: T","str: T","input: TString","_","input: S","_preserveWhitespace: P","i: string","str: T","input: S","preserveWhitespace: P","i: string","_","input: S","preserveWhitespace: P","input: string","input","str: T","color: TColorSpace","v1: TV1","v2: TV2","v3: TV3","opacity?: TOp","color: TColor","luminosity: TLum","lum: number","chroma: number","content: T","ensure: U","output: string","prefix: TPrefix","postfix: TPostfix","fn","input: TInput","result: string","result","content: T","ensure: U","str: T","err","ch: T","callbackForMatch: <V extends T>(v: V) => IF","callbackForNoMatch: <V extends T>(v: V) => ELSE","ch: T & IsSingleChar<T> extends true ? T : never","callbackForMatch: ValueCallback<T, IF>","callbackForNoMatch: ValueCallback<T, ELSE>","template: string","match: RegExpExecArray | null","segments: Array<\n { dynamic: false; text: string }\n | { dynamic: true; varName: string; type: \"string\" | \"number\" | \"boolean\" }\n >","asType","str: string","segments: ReturnType<typeof parseTemplate>","type: Ext","value: string","template: TTempl","test: string","result: Record<string, unknown>","result","inference: TTempl","o: T","_o: T","obj: T","str: T","nbsp: NBSP","phone: T","phone: T","word: T","postfix: U","result: unknown","result","content: TContent","find: TFind","replace: TReplace","find","replace","fromTo: TFromTo","output: string","content: T","content: TContent","split: TSplit","nesting: TNesting","policy: TPolicy","stack: readonly string[]","waiting: string","result: string[]","lastWasSplit: boolean","result","split","nesting","chars: TChars","config: Nesting","fn: TFn","clone_fn?: TClone","localFn: any","fn","obj: TProps","props: TProps","_clone_fn?: TClone","fn: TFn","localFn: any","kind: TKind","_opt?: TOpt","func: TFn","fn","fn: T","fn","props: Dictionary","fn: TFn","props: TProps","_narrowing: TNarrowing","fnWithProps: any","fn","literal: TLiteral","wide: TWide","literal","wide","list: T","thing: T","mapper: Partial<ConverterDefn<TStr, TNum, TBool, TObj, TTuple, TNothing>>","input: TInput","result: unknown","result","content: T","quantity: C","op: TOp","comparator: TComparator","value: TContainer","op: TOp","params: TParams","list: TList","result","val: TVal","op: TOp","params: TParams","compare","fn","result: unknown","result","response: any","content: string | number | readonly Narrowable[]","comparator: Narrowable | readonly Narrowable[]","value: unknown","comp: unknown","item: unknown","values: unknown","op: TOp","list: TList","list: TList","dotPath: TDotPath","result: unknown","result","val: TContainer","index: TIdx","a: A","b: B","deref: TDeref","sharedKeys","joinWith: TJoin","fn","tuple","tup: readonly string[]","joinWith","list: T","conditions: TConditions","list: T","before","last","list: T","list: T","list: TList","start: TStart","length: TLen","sliced: readonly unknown[]","start","items: T","key: K","config: C","o: { start: Narrowable[]; end: Narrowable[] }","start","u: any[]","content: string[]","sep: T","policy: Policy","inline","pass: string[]","all: string[]","split","before: string[]","before","str: T","content: TContent","find","content: TContent","chars: readonly string[]","content: TContent","find","chars: TChars","find: TFind","nesting: TNesting","stack: readonly string[]","result: string","idx: number","find","result","nesting","str: TStr","incl: TInclude","content: TContent","content: TContent","find: TBreak","find","content: TContent","find: TBreak","find","content: TContent","find: TBreak","find","content: TContent","chars: readonly string[]","kind: TKind","msg: TMsg","utility: TUtility","kind: string","msg?: string","err: T","err","type: T","message: M","err","type: TType","message?: TMsg","ctx?: TCtx","obj: T","content: T","output: string","input: TInput","output: string","content: T","output: string","content: TContent","content: TContent","input: T","input: T","input: T","prefix: TPrefix","postfix: TPostfix","content: T","arr: T","val: T","content: TStr","maxLength: TMax","ellipsis: TEllipsis","value: T","d: IsoMonthDate","date: unknown","val: unknown","val: unknown","date: unknown","val: unknown","val: unknown","val: unknown","val: unknown","val: unknown","val: unknown","str: unknown","s: unknown","val: T","_branded: B","val: unknown","val: unknown","val: unknown","val: unknown","val: unknown","cardNumber: string | number","cleanedNumber: string","length: number","num: string","val: unknown","val: unknown","val: unknown","value: T","value: TContainer","idx: TIndex","result","val: V","val: unknown","val: T","val: TValue","compare","base: TBase","value: unknown","value: unknown","wide","i","value: TValue","len: TLen","base: TBase","compare: TCompare","compare","val: unknown","tuple","v: T","type: TType","value: TValue","val: unknown","val: TValue","val: V","val: unknown","stack: string[]","match: RegExpExecArray | null","val: unknown","val: V","val: unknown","stack: string[]","match: RegExpExecArray | null","val: unknown","val: unknown","value: T","value: unknown","val: unknown","value: unknown","value: T","val: string","val: T","val: unknown","value: T","value: unknown","val: T","val: unknown","parts: string[]","firstChar","val: T","val: unknown","type?: TType","val: unknown","val: unknown","i: unknown","val: V","input: T","value: unknown","val: T","value: T","v: T","val: unknown","val: unknown","val: unknown","val: unknown","val: T","value: T","val: T","value: T","value: T","value: unknown","val: unknown","val: unknown","val: T","val: unknown","svelte: string","chars: readonly string[]","numeric: string","valid","nothing: string","value: T","val: unknown","value: T","val: unknown","val: unknown","kind: TKind","value: unknown","value: T","value: T","val: unknown","val: T","value: unknown","val: V","_type: T","val: unknown","val: unknown","value: unknown | V","value: unknown","val: unknown","val: T","chars: string[]","val: unknown","val: unknown","s: string","val: unknown","getCategories","c: T","fn","val: unknown","c: T","fn","val: T","octets: string[]","val: string","mask?: T","before","prop: P","val: unknown","value: T","val: unknown","val: unknown","val: unknown","val: unknown","val: unknown","val: unknown","val: unknown","val: unknown","val: unknown","val: unknown","URL","val: unknown","URL","val: unknown","URL","val: unknown","URL","val: unknown","URL","val: unknown","URL","val: unknown","URL","val: unknown","URL","val: unknown","URL","val: unknown","val: unknown","URL","val: unknown","URL","val: unknown","URL","val: unknown","URL","val: unknown","URL","val: unknown","URL","val: unknown","URL","val: unknown","URL","val: unknown","URL","val: unknown","URL","val: unknown","val: T","valid","val: T","valid","val: unknown","valid","val: T","s: string","val: unknown","v: T","allowPrefix: P","val: unknown","val: unknown","val: T","type: T","type?: U","url: T","val: T","val: T","_name: A","year: T","num: T","Millisecond: T","hour: T","Minute: T","Second: T","val: T","obj: T & Dictionary","output: any","state: TState","stage: TStage","defn: TDefn","val: T","frames: T","tuples: [CssKeyframeTimestamp, string][]","name: TName","keyframes: TKeyframes","defn: T","opt?: O","inline","fn","selector?: S","input: T","d: Date","mins: number","abs","input: T","tz: TimezoneOffset<\"branded\"> | null","dt: T","year: T","_branded: B","input: T","dt: T","date: T","d: DateLike & object","date: Date","result","month: TMonth","year: TYear","monthNum: number | Error","a: A","b: B","date: T","date: T","date: T","date: T","hemisphere: H","now: Date","now: Date","date: T","date: T","now: Date","input: unknown","comparator: TComparator","val: TVal","comparator: TComparator","val: TVal","val: T","val: T","comparator: TComparator","val: TVal","comparator: TComparator","val: TVal","comparator: TComparator","val: TVal","comparator: TComparator","val: TVal","input: string | number | Record<string, any> | Date","now: Date","input: DateLike","now: Date","d: Date","val: DateLike","now: Date","test: T","now: Date","input: string | number | Record<string, any> | Date","now: Date","input: DateLike","now: Date","d: T","iso: string","d: T","input: T","val: DateMeta","d: T","parsed: T","defn: T","obj: T","value: TValue","dotpath: TDotPath","segment: TSegment","dotPath: TDotPath","defaultValue: TDefVal","handleInvalid: TInvalid","fullDotPath: TFullDotPath","pathSegments: string[]","dotPath: TDotPath | null","options: GetOptions<TDefVal, TInvalid>","outcome: unknown","container: TObj","keys: unknown","obj: T","tuple: Tuple","tuple","obj: TObj","dict: TObj","output: Record<string, unknown>","lookup: T","result: Dictionary","lookup","result","a: A","b: B","lookup: TLookup","missing: TMissing","key: TKey","lookup","val: TContainer","values: any[]","with_defaults: TDefaults","obj: TObj","dict: TObj","dict: TObj","obj: any","lookup","testExtends","value: T","baseType: U","withValue: TWith","obj: TObj","result: Record<string, unknown>","withValue","result","value: T","baseType: U","withValue: TWith","obj: TObj","result: Record<string, unknown>","withValue","result","config: T","char: TChar","nesting: TNesting","nesting","start","char: TChar","stack: TStack","nesting: TNesting","nesting","lookup","start","val: unknown","char: TChar","nesting: TNesting","nesting","start","val: unknown","nesting: T","str: TStr","find: TFind","incl: TInclude","find","nesting","content: TContent","split: TSplit","policy: TPolicy","split","config: T","nesting: Nesting","val: T","url: T","val: string","specific: S","resolve: R","pathVars: Record<string, string>","qpVars: Record<string, string>","url: T","url: YouTubeVideoUrl","queue","state: T","add","quantity?: Q","result","state: T","add","quantity?: Q","result","str: string","replaceAllFromTo","content: TContent","fromTo: TFromTo","output: string","template: TContent","handling: THandling","api: RegularExpression<Pattern>","test: string","test: T","out: any[]","result: any","result","api","classification: TType","msg: TMsg","err","defaultOptions: Required<AsUnionOptions>","elements: TElements","sep: TSep","options: TOpt","_mapper: TMapper","defn: TDefn","type: TType","val: T","val: T","cb: T","v: unknown","token: T","literal?: L","literal","_rtn: TReturn","_kv: TProps","result: unknown","result","token: T","re: TExp","exp: string","err","_key?: TKey","_value?: TValue","_type?: T","_val: T","tokenSyntax: TSyntax","tokens","name: TToken","token: TToken","kind: TParams","start: TStart","end: TEnd","sep: TSep","start","name: TName","encoding: TEncode","token: T","_defn: T","token: T","defn: T","defn: T","token: T","token: T","value: unknown","a: A","b: B","left: L","right: R","take: T","take","_opt: O","builder: StaticBuilder<O>","result","kind: K","opt: O","_startEnd: TStartEnd","_opts: TOpt","_str: TParse","items: TItems","cb: TCb","chars: string[]","match: string[]","_opts: WhileOptions","match: TMatch","opts: TOpt","str: TParse","val: unknown","list: TList","add: TItem","add","parser: TParse","val: TVal","state: T","matches: M","val: unknown","matches: T","result: T","result","fn","value: U","lookup","str: T","defn: T","fromTo: FromTo[]","obj: T","value: T","template: T","input: T","csv: T","format: F","tuple: unknown[]","tuple","tuple","kvs: T","obj: Dictionary","value: T","_intersectedWith: U","ip: T","str: T","code: T","prop: P","code: Iso3166_1_Alpha3","name: T","num: string","token: T","defVal: TDefault","override: TOverride","a: A","b: B","a: A","b: B","value: T","value: T","encode: SafeStringEncoder<Grp<G>>","results: string","lookup","find","replace","decode: SafeStringDecoder<Grp<G>>","val: T","val: T","_options: O","obj: TObj","sort?: TSort","val: T","value: T","val: T","prop: ObjectKey","obj: T","inner: string[]","opt?: ToLiteralOptions","result: Record<ObjectKey, string>","result","opt: O","tup: T","options: O","val: string","value: T","_inUnionWith: U","value: T"],"sources":["../src/api/handleDoneFn.ts","../src/boolean-logic/equalsSome.ts","../src/boolean-logic/ifArray.ts","../src/boolean-logic/ifArrayPartial.ts","../src/boolean-logic/ifBoolean.ts","../../constants/src/Alpha.ts","../../constants/src/Books.ts","../../constants/src/Brands.ts","../../constants/src/Characters.ts","../../constants/src/Comma.ts","../../constants/src/Comparisons.ts","../../constants/src/DateTime.ts","../../constants/src/DoubleLeap_Typical.ts","../../constants/src/FalsyValues.ts","../../constants/src/Geo.ts","../../constants/src/HashTable.ts","../../constants/src/HTML.ts","../../constants/src/ISO3166.ts","../../constants/src/Marked.ts","../../constants/src/Metrics.ts","../../constants/src/Nesting.ts","../../constants/src/NetworkConstants.ts","../../constants/src/Never.ts","../../constants/src/News.ts","../../constants/src/NoDefaultValue.ts","../../constants/src/NotApplicable.ts","../../constants/src/NotDefined.ts","../../constants/src/NumericChar.ts","../../constants/src/Phone.ts","../../constants/src/PluralExceptions.ts","../../constants/src/RepoConstants.ts","../../constants/src/Retail.ts","../../constants/src/SafeEncoding.ts","../../constants/src/Shape.ts","../../constants/src/SimpleTokens.ts","../../constants/src/SingularNounEnding.ts","../../constants/src/Social.ts","../../constants/src/Tailwind.ts","../../constants/src/Timezones.ts","../../constants/src/TypeComparisons.ts","../../constants/src/Types.ts","../../constants/src/TypeTokens.ts","../src/boolean-logic/ifChar.ts","../src/boolean-logic/ifContainer.ts","../src/boolean-logic/ifEmpty.ts","../src/boolean-logic/ifEqual.ts","../src/boolean-logic/ifError.ts","../src/boolean-logic/ifFalse.ts","../src/boolean-logic/ifFunction.ts","../src/boolean-logic/ifHasKey.ts","../src/boolean-logic/ifLength.ts","../src/boolean-logic/ifNotNull.ts","../src/boolean-logic/ifNull.ts","../src/boolean-logic/ifNumber.ts","../src/boolean-logic/ifObject.ts","../src/boolean-logic/ifSameType.ts","../src/boolean-logic/ifScalar.ts","../src/boolean-logic/ifString.ts","../src/boolean-logic/ifTrue.ts","../src/boolean-logic/ifUndefined.ts","../src/type-guards/api-tg.ts","../src/type-guards/arrays/isArray.ts","../src/type-guards/arrays/isNarrowableArray.ts","../src/type-guards/arrays/isReadonlyArray.ts","../src/type-guards/arrays/isStringArray.ts","../src/type-guards/arrays/isStringOrNumericArray.ts","../src/type-guards/comparison/isComparisonOperation.ts","../src/type-guards/comparison/isValidComparisionParams.ts","../src/type-guards/datetime/isDate.ts","../src/type-guards/datetime/isDateLike.ts","../src/type-guards/datetime/isDateMeta.ts","../src/type-guards/datetime/isDateTime.ts","../src/type-guards/datetime/isDayJs.ts","../src/numeric/abs.ts","../src/numeric/add.ts","../src/numeric/asNumber.ts","../src/numeric/between.ts","../src/numeric/decrement.ts","../src/numeric/increment.ts","../src/numeric/isGreaterThan.ts","../src/numeric/isGreaterThanOrEqual.ts","../src/numeric/isNegativeNumber.ts","../src/numeric/lessThan.ts","../src/numeric/lessThanOrEqual.ts","../src/numeric/toInteger.ts","../src/type-guards/datetime/isEpoch.ts","../src/type-guards/datetime/isIanaTimezone.ts","../src/type-guards/datetime/isIsoDate.ts","../src/string-literals/casing/capitalize.ts","../src/string-literals/casing/toAllCaps.ts","../src/string-literals/casing/toCamelCase.ts","../src/string-literals/casing/toKebabCase.ts","../src/string-literals/casing/toLowercase.ts","../src/string-literals/casing/toPascalCase.ts","../src/string-literals/casing/toSnakeCase.ts","../src/string-literals/casing/uncapitalize.ts","../src/string-literals/color/cssColor.ts","../src/string-literals/color/twColor.ts","../src/string-literals/ensure/ensureLeading.ts","../src/string-literals/ensure/ensureSurround.ts","../src/string-literals/ensure/ensureTrailing.ts","../src/string-literals/getTypeSubtype.ts","../src/string-literals/ifLowercase.ts","../src/string-literals/ifUppercase.ts","../src/string-literals/infer.ts","../src/string-literals/literal.ts","../src/string-literals/lowercase.ts","../src/string-literals/narrow.ts","../src/string-literals/nbsp.ts","../src/string-literals/pathJoin.ts","../src/string-literals/phone/asPhoneNumber.ts","../src/string-literals/phone/getPhoneCountryCode.ts","../src/string-literals/phone/removePhoneCountryCode.ts","../src/string-literals/pluralize.ts","../src/string-literals/replace.ts","../src/string-literals/rightWhitespace.ts","../src/string-literals/split-and-join/nestedSplit.ts","../src/initializers/addFnToProps.ts","../src/initializers/addPropsToFn.ts","../src/initializers/createConstant.ts","../src/initializers/createCssSelector.ts","../src/functions/fnMeta.ts","../src/functions/fnProps.ts","../src/functions/identity.ts","../src/initializers/createFnWithProps.ts","../src/initializers/defineObj.ts","../src/initializers/defineTuple.ts","../src/lists/afterFirst.ts","../src/lists/asArray.ts","../src/lists/createConverter.ts","../src/lists/createFixedLengthArray.ts","../src/lists/every.ts","../src/lists/filter.ts","../src/lists/filterEmpty.ts","../src/lists/filterUndefined.ts","../src/combinators/and.ts","../src/combinators/compare.ts","../src/combinators/contains.ts","../src/combinators/or.ts","../src/lists/find.ts","../src/lists/getEach.ts","../src/lists/indexOf.ts","../src/lists/intersection.ts","../src/lists/joinWith.ts","../src/lists/last.ts","../src/lists/logicalReturns.ts","../src/lists/pop.ts","../src/lists/reverse.ts","../src/lists/shift.ts","../src/lists/slice.ts","../src/lists/sortByKey.ts","../src/lists/unique.ts","../src/string-literals/split-and-join/split.ts","../src/string-literals/sub-string/retain/retainAfter.ts","../src/string-literals/sub-string/retain/retainChars.ts","../src/string-literals/sub-string/retain/retainUntil.ts","../src/string-literals/sub-string/retain/retainUntil__Nested.ts","../src/string-literals/sub-string/retain/retainWhile.ts","../src/string-literals/sub-string/strip/stripAfter.ts","../src/string-literals/sub-string/strip/stripAfterLast.ts","../src/string-literals/sub-string/strip/stripBefore.ts","../src/string-literals/sub-string/strip/stripChars.ts","../src/errors/createErrorCondition.ts","../src/errors/dropFirstStackFrame.ts","../src/errors/err.ts","../src/errors/keysWithError.ts","../src/string-literals/sub-string/strip/stripLeading.ts","../src/string-literals/sub-string/strip/stripSurround.ts","../src/string-literals/sub-string/strip/stripTrailing.ts","../src/string-literals/sub-string/strip/stripUntil.ts","../src/string-literals/sub-string/strip/stripWhile.ts","../src/string-literals/sub-string/trim/trim.ts","../src/string-literals/sub-string/trim/trimEnd.ts","../src/string-literals/sub-string/trim/trimStart.ts","../src/string-literals/surround.ts","../src/string-literals/takeNumericCharacters.ts","../src/string-literals/toNumericArray.ts","../src/string-literals/toString.ts","../src/string-literals/truncate.ts","../src/string-literals/tuple.ts","../src/string-literals/unset.ts","../src/string-literals/widen.ts","../src/type-guards/datetime/isIsoMonthDate.ts","../src/type-guards/datetime/isIsoTime.ts","../src/type-guards/datetime/isIsoYear.ts","../src/type-guards/datetime/isIsoYearMonth.ts","../src/type-guards/datetime/isLuxonDateTime.ts","../src/type-guards/datetime/isMoment.ts","../src/type-guards/datetime/isMonthAbbrev.ts","../src/type-guards/datetime/isMonthName.ts","../src/type-guards/datetime/isParsedDate.ts","../src/type-guards/datetime/isTemporalDate.ts","../src/type-guards/datetime/parsing-typeguards.ts","../src/type-guards/dictionary/hasOnlyStringKeys.ts","../src/type-guards/dictionary/hasOnlyStringValues.ts","../src/type-guards/dictionary/hasOnlySymbolKeys.ts","../src/type-guards/dictionary/hasSymbolKeys.ts","../src/type-guards/finance/CreditCards.ts","../src/type-guards/geo/isIso3166Alpha2.ts","../src/type-guards/geo/isUsState.ts","../src/type-guards/geo/isZipCode.ts","../src/type-guards/hasDefaultValue.ts","../src/type-guards/hasIndexOf.ts","../src/type-guards/hasKeys.ts","../src/type-guards/hasNonStringKeys.ts","../src/type-guards/hasWhitespace.ts","../src/type-guards/higher-order/endsWith.ts","../src/type-guards/higher-order/isEqual.ts","../src/type-guards/higher-order/isInUnion.ts","../src/type-guards/higher-order/isLength.ts","../src/type-guards/higher-order/isSameTypeOf.ts","../src/type-guards/higher-order/isStringLiteral.ts","../src/type-guards/higher-order/isTuple.ts","../src/type-guards/higher-order/isTypeOf.ts","../src/type-guards/higher-order/startsWith.ts","../src/type-guards/html/component-tags.ts","../src/type-guards/html/hasHtml.ts","../src/type-guards/html/html-tags.ts","../src/type-guards/html/isHtml.ts","../src/type-guards/html/isHtmlElement.ts","../src/type-guards/html/validHtmlAttributes.ts","../src/type-guards/isAlpha.ts","../src/type-guards/isBoolean.ts","../src/type-guards/isBooleanLike.ts","../src/type-guards/isConstant.ts","../src/type-guards/isContainer.ts","../src/type-guards/isCssAspectRatio.ts","../src/type-guards/isCsv.ts","../src/type-guards/isDefined.ts","../src/type-guards/isDictionary.ts","../src/type-guards/isDoneFn.ts","../src/type-guards/isEmail.ts","../src/type-guards/isEmpty.ts","../src/type-guards/isErr.ts","../src/type-guards/isError.ts","../src/type-guards/isEven.ts","../src/type-guards/isFalse.ts","../src/type-guards/isFalsy.ts","../src/type-guards/isFnWithParams.ts","../src/type-guards/isFunction.ts","../src/type-guards/isHexadecimal.ts","../src/type-guards/isIndexable.ts","../src/type-guards/isInlineSvg.ts","../src/type-guards/isMap.ts","../src/type-guards/isNarrowable.ts","../src/type-guards/isNever.ts","../src/type-guards/isNotError.ts","../src/type-guards/isNothing.ts","../src/type-guards/isNotNull.ts","../src/type-guards/isNotUnset.ts","../src/type-guards/isNull.ts","../src/type-guards/isNumericString.ts","../src/type-guards/isObject.ts","../src/type-guards/isObjectKey.ts","../src/type-guards/isOdd.ts","../src/type-guards/isOk.ts","../src/type-guards/isPhoneNumber.ts","../src/type-guards/isRef.ts","../src/type-guards/isRegExp.ts","../src/type-guards/isScalar.ts","../src/type-guards/isSet.ts","../src/type-guards/isSetContainer.ts","../src/type-guards/isSpecificConstant.ts","../src/type-guards/isString.ts","../src/type-guards/isSymbol.ts","../src/type-guards/isThenable.ts","../src/type-guards/isTrimmable.ts","../src/type-guards/isTrue.ts","../src/type-guards/isTruthy.ts","../src/type-guards/isTypedError.ts","../src/type-guards/isTypeSubtype.ts","../src/type-guards/isTypeTuple.ts","../src/type-guards/isUndefined.ts","../src/type-guards/isUnset.ts","../src/type-guards/isUrl.ts","../src/type-guards/isVariable.ts","../src/type-guards/isWeakMap.ts","../src/type-guards/metrics/isMetric.ts","../src/type-guards/metrics/isUom.ts","../src/type-guards/network-tg.ts","../src/type-guards/numeric/isInteger.ts","../src/type-guards/numeric/isNumber.ts","../src/type-guards/numeric/isNumericArray.ts","../src/type-guards/protocol.ts","../src/type-guards/tokens/isDefineObject.ts","../src/type-guards/tokens/isDefineTuple.ts","../src/type-guards/tokens/isDeltaReturn.ts","../src/type-guards/tokens/isInputToken.ts","../src/type-guards/tokens/isInputToken__String.ts","../src/type-guards/tokens/isShapeCallback.ts","../src/type-guards/tokens/isSimpleToken.ts","../src/type-guards/tw/tw-color.ts","../src/type-guards/urls/news/australian.ts","../src/type-guards/urls/news/belgium.ts","../src/type-guards/urls/news/canadian.ts","../src/type-guards/urls/news/chinese.ts","../src/type-guards/urls/news/danish.ts","../src/type-guards/urls/news/dutch.ts","../src/type-guards/urls/news/french.ts","../src/type-guards/urls/news/german.ts","../src/type-guards/urls/news/indian.ts","../src/type-guards/urls/news/isNewsUrl.ts","../src/type-guards/urls/news/italian.ts","../src/type-guards/urls/news/japanese.ts","../src/type-guards/urls/news/mexican.ts","../src/type-guards/urls/news/norwegian.ts","../src/type-guards/urls/news/south-korean.ts","../src/type-guards/urls/news/spanish.ts","../src/type-guards/urls/news/swiss.ts","../src/type-guards/urls/news/turkish.ts","../src/type-guards/urls/news/uk.ts","../src/type-guards/urls/news/us.ts","../src/type-guards/urls/repos/bitbucket.ts","../src/type-guards/urls/repos/codeCommit.ts","../src/type-guards/urls/repos/github.ts","../src/type-guards/urls/repos/isRepoUrl.ts","../src/type-guards/urls/repos/isSemanticVersion.ts","../src/type-guards/urls/retail.ts","../src/type-guards/urls/Social.ts","../src/type-guards/urls/youtube.ts","../src/boolean-logic/not.ts","../src/branding/brand.ts","../src/branding/fourDigitYear.ts","../src/branding/integer.ts","../src/branding/threeDigitMillisecond.ts","../src/branding/twoDigitHour.ts","../src/branding/twoDigitMinute.ts","../src/branding/twoDigitSecond.ts","../src/branding/unbrand.ts","../src/constants/NO_MATCH.ts","../src/containers/freeze.ts","../src/css/createCssKeyframe.ts","../src/css/cssFromDefinition.ts","../src/datetime/asDate.ts","../src/datetime/asDateTime.ts","../src/datetime/asEpochTimestamp.ts","../src/datetime/asFourDigitYear.ts","../src/datetime/asIsoDate.ts","../src/datetime/asIsoDateTime.ts","../src/datetime/asTwoDigitMonth.ts","../src/datetime/dateObjectToIso.ts","../src/datetime/daysInMonth.ts","../src/datetime/getDaysBetween.ts","../src/datetime/getMonthAbbrev.ts","../src/datetime/getMonthName.ts","../src/datetime/getMonthNumber.ts","../src/datetime/getSeason.ts","../src/datetime/getToday.ts","../src/datetime/getTomorrow.ts","../src/datetime/getWeekNumber.ts","../src/datetime/getYear.ts","../src/datetime/getYesterday.ts","../src/datetime/isAfter.ts","../src/datetime/isBefore.ts","../src/datetime/isDoubleLeap.ts","../src/datetime/isLeapYear.ts","../src/datetime/isSameDay.ts","../src/datetime/isSameMonth.ts","../src/datetime/isSameMonthYear.ts","../src/datetime/isSameYear.ts","../src/datetime/isThisMonth.ts","../src/datetime/isThisWeek.ts","../src/datetime/isThisYear.ts","../src/datetime/isToday.ts","../src/datetime/isTomorrow.ts","../src/datetime/isYesterday.ts","../src/datetime/parseDate.ts","../src/datetime/parseDateObject.ts","../src/datetime/parseIsoDate.ts","../src/datetime/parseNumericDate.ts","../src/datetime/toIsoDateString.ts","../src/dictionary/defineObject.ts","../src/dictionary/entries.ts","../src/dictionary/get.ts","../src/dictionary/keysOf.ts","../src/dictionary/objectValues.ts","../src/dictionary/omitKeys.ts","../src/dictionary/retainKeys.ts","../src/dictionary/reverseLookup.ts","../src/dictionary/sharedKeys.ts","../src/dictionary/usingLookup.ts","../src/dictionary/valuesOf.ts","../src/dictionary/withDefaults.ts","../src/dictionary/withKeys.ts","../src/dictionary/withoutKeys.ts","../src/dictionary/withoutValue.ts","../src/dictionary/withValue.ts","../src/domain/nesting/createNestingConfig.ts","../src/domain/nesting/isNestingEnd.ts","../src/domain/nesting/isNestingEndMatch.ts","../src/domain/nesting/isNestingKeyValue.ts","../src/domain/nesting/isNestingStart.ts","../src/domain/nesting/isNestingTuple.ts","../src/domain/nesting/nesting.ts","../src/functional/result.ts","../src/interpolation/isTemplateLiteral.ts","../src/meta/urlMeta.ts","../src/meta/youtube-meta.ts","../src/queues/fifo.ts","../src/queues/lifo.ts","../src/regex/createTemplateRegExp.ts","../src/runtime-types/asTypedErr.ts","../src/runtime-types/asUnion.ts","../src/runtime-types/choices.ts","../src/runtime-types/defineObjectWith.ts","../src/runtime-types/doesExtend.ts","../src/runtime-types/shape.ts","../src/runtime-types/shape-helpers/addToken.ts","../src/runtime-types/shape-helpers/atomics.ts","../src/runtime-types/shape-helpers/functions.ts","../src/runtime-types/shape-helpers/getTokenData.ts","../src/runtime-types/shape-helpers/regexToken.ts","../src/runtime-types/shape-helpers/wide-containers.ts","../src/runtime-types/tokens/asOutputToken.ts","../src/runtime-types/tokens/asType.ts","../src/runtime-types/tokens/createGrammar.ts","../src/runtime-types/tokens/createToken.ts","../src/runtime-types/tokens/createTokenSyntax.ts","../src/runtime-types/tokens/getTokenKind.ts","../src/runtime-types/tokens/input-tokens/asInputToken.ts","../src/runtime-types/tokens/input-tokens/asStringInputToken.ts","../src/runtime-types/tokens/input-tokens/fromDefineObject.ts","../src/runtime-types/tokens/input-tokens/fromDefineTuple.ts","../src/runtime-types/tokens/input-tokens/fromInputToken.ts","../src/runtime-types/tokens/simpleToken.ts","../src/sets/hasOverlappingKeys.ts","../src/sets/uniqueKeys.ts","../src/take/asTakeState.ts","../src/take/create/createTakeFunction.ts","../src/take/create/createTakeStartEndFunction.ts","../src/take/create/createTakeStaticBlockFunction.ts","../src/take/create/createTakeWhileFunction.ts","../src/take/isTakeState.ts","../src/take/take.ts","../src/take/takeNumericLiteral.ts","../src/take/takeStart.ts","../src/type-conversion/asChars.ts","../src/type-conversion/asFromTo.ts","../src/type-conversion/asRecord.ts","../src/type-conversion/asString.ts","../src/type-conversion/asTemplate.ts","../src/type-conversion/asTypeSubtype.ts","../src/type-conversion/csv.ts","../src/type-conversion/eachAsString.ts","../src/type-conversion/fromKeyValue.ts","../src/type-conversion/intersect.ts","../src/type-conversion/ip6GroupExpansion.ts","../src/type-conversion/lastChar.ts","../src/type-conversion/lookupCountry.ts","../src/type-conversion/mergeObjects.ts","../src/type-conversion/mergeScalars.ts","../src/type-conversion/mergeTuples.ts","../src/type-conversion/mutable.ts","../src/type-conversion/optional.ts","../src/type-conversion/safe-string-encoding.ts","../src/type-conversion/stripParenthesis.ts","../src/type-conversion/toJSON.ts","../src/type-conversion/toKeyValue.ts","../src/type-conversion/toNumber.ts","../src/type-conversion/toStringLiteral.ts","../src/type-conversion/tw-conversion.ts","../src/type-conversion/unionize.ts","../src/vuejs/asVueRef.ts"],"sourcesContent":["import {\n isDictionary,\n isDoneFn,\n isFunction\n} from \"inferred-types/runtime\";\n\n/**\n * **handleDoneFn**(val, [bare_fn])\n *\n * Looks at the value passed in and if it's an object with\n * a property `done` which is a function it will call it;\n * otherwise it will proxy the value through.\n *\n * If you wish to also detect a bare function and have it\n * call that too, you can set the `call_bare_fn` to **true**.\n */\nexport function handleDoneFn<\n TVal,\n TBareFn extends boolean,\n>(val: TVal, call_bare_fn: TBareFn = false as TBareFn) {\n return isDictionary(val) || isFunction(val)\n ? isDoneFn(val)\n ? val.done()\n : isFunction(val)\n ? call_bare_fn ? val() : val\n : val\n : isFunction(val)\n ? call_bare_fn ? val() : val\n : val;\n}\n","import type { Narrowable } from \"inferred-types/types\";\n\n/**\n * partial application of the equalsSome(...some) utility.\n */\nexport type EqualsSome__Partial<\n TSome extends readonly Narrowable[]\n> = <const TVal extends Narrowable>(val: TVal) => (\n TVal extends TSome[number] ? true : false\n);\n\n/**\n * **equalsSome**`(...some) -> (val) -> boolean`\n *\n * A higher order function which:\n *\n * 1. _takes_ a set of \"possible values/types\" and then\n * 2. _takes_ a value/type and returns a boolean value indicating whether\n * the value is **equal** to _any_ of the possible values this was configured\n * with.\n *\n *\n * ```ts\n * //\n * const test = equalsSome(\"foo\",\"bar\",\"baz\");\n * ```\n */\nexport function equalsSome<\n const TSome extends readonly Narrowable[]\n>(\n ...some: TSome\n): EqualsSome__Partial<TSome> {\n return <const TVal extends Narrowable>(val: TVal) => {\n return some.includes(val) as unknown as (\n TVal extends TSome[number] ? true : false\n );\n };\n}\n","import type { IsArray, Narrowable } from \"inferred-types/types\";\n\n/**\n * **ifArray**(T, IF, ELSE)\n *\n * A utility which evaluates a type `T` for whether it is an array and then\n */\nexport function ifArray<\n // value which is possibly an array\n T extends Narrowable,\n // functions which return a known type\n IF extends Narrowable,\n ELSE extends Narrowable,\n>(\n val: T,\n isAnArray: <N extends T & unknown[]>(arr: N) => IF,\n isNotAnArray: <N extends Exclude<T, unknown[] | readonly unknown[]>>(nonArr: N) => ELSE,\n) {\n return (\n Array.isArray(val) ? isAnArray(val) : isNotAnArray(val as Exclude<T, unknown[] | readonly unknown[]>)\n ) as IsArray<T> extends true ? IF : ELSE;\n}\n","import type { Narrowable } from \"inferred-types/types\";\nimport { ifArray } from \"inferred-types/runtime\";\n\nexport function ifArrayPartial<T extends Narrowable>() {\n return <IF extends Narrowable, ELSE extends Narrowable>(\n isAnArray: <N extends T & readonly unknown[]>(arr: N) => IF,\n isNotAnArray: <N extends Exclude<T, unknown[] | readonly unknown[]>>(nonArr: N) => ELSE,\n ) => {\n return <V extends T>(val: V) => ifArray(val, isAnArray, isNotAnArray);\n };\n}\n","import type { IsBoolean, Narrowable } from \"inferred-types/types\";\nimport { isBoolean } from \"inferred-types/runtime\";\n\n/**\n * **ifBoolean**\n *\n * Strongly type-aware conditional statement which checks whether a value is\n * a _boolean_ and returns one of two values (strongly typed) based on the evaluation\n * of this criteria.\n *\n * @param val the value being tested\n * @param ifBoolean the value (strongly typed) returned if val is _boolean_\n * @param notBoolean the value (strongly typed) returned if val is NOT a _boolean\n */\nexport function ifBoolean<\n TContent extends Narrowable,\n TIf extends Narrowable,\n TElse extends Narrowable,\n>(\n val: TContent,\n ifBoolean: <V extends boolean>(v: V & TContent) => TIf,\n notBoolean: <V extends Exclude<TContent, boolean>>(v: V) => TElse,\n) {\n return (\n isBoolean(val)\n ? ifBoolean(val as TContent & boolean)\n : notBoolean(val as Exclude<TContent, boolean>)\n ) as unknown as [IsBoolean<TContent>] extends [true] ? TIf : TElse;\n}\n","/**\n * An array of all the lower-cased alphabetic characters\n */\nexport const LOWER_ALPHA_CHARS = [\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\",\n] as const;\n\n/**\n * An array of all the upper-cased alphabetic characters\n */\nexport const UPPER_ALPHA_CHARS = [\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"I\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"O\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n] as const;\n\n/**\n * An array of all alphabetic characters (upper and lower)\n */\nexport const ALPHA_CHARS = [\n ...LOWER_ALPHA_CHARS,\n ...UPPER_ALPHA_CHARS,\n] as const;\n","const string = `{{ string }}`;\n\nexport const AMAZON_BOOKS = [\n `https://www.amazon.com/${string}storeType=ebooks${string}`,\n `https://www.amazon.com/${string}ref=tmm_hrd_swatch${string}`,\n `https://www.amazon.com/${string}ref=tmm_pap_swatch${string}`,\n `https://www.amazon.com/${string}ref=tmm_aud_swatch${string}`,\n `https://www.amazon.com/books-used-books-textbooks/${string}`,\n] as const;\n","export const SAFE_STRING = Symbol(\"SafeString\");\nexport const NON_BREAKING_SPACE = Symbol(\"Non-Breaking Space\");\n\nexport const BRANDED = Symbol(\"Branded\");\n","export const WHITESPACE_CHARS = [\n \" \",\n \"\\n\",\n \"\\t\",\n \"\\b\",\n] as const;\n","import type { Constant } from \"inferred-types/constants\";\n\n/**\n * **createConstant**(kind)\n *\n * Creates a `Constant<TKind>` type.\n */\nfunction createConstant<TKind extends string>(kind: TKind) {\n return {\n _type: \"Constant\",\n kind,\n } as Constant<TKind>;\n}\n\n/**\n * **COMMA**\n *\n * A constant used for serializing a comma in cases\n * where a comma has special meaning (for instance\n * CSV data where a raw comma is considered a\n * separator)\n */\nexport const COMMA = createConstant(\"comma\");\n\n/**\n * **SerializedComma**\n *\n * A serialized representation of a `,` value.\n */\nexport type SerializedComma = typeof COMMA;\n","export const COMPARISON_OPERATIONS = [\n \"extends\",\n \"startsWith\",\n \"endsWith\",\n \"endsWithNumber\",\n \"startsWithNumber\",\n \"onlyNumbers\",\n \"alphaNumeric\",\n \"onlyLetters\",\n \"contains\",\n \"containsSome\",\n \"containsAll\",\n \"greaterThan\",\n \"greaterThanOrEqual\",\n \"lessThan\",\n \"lessThanOrEqual\",\n \"objectKeyGreaterThan\",\n \"objectKeyGreaterThanOrEqual\",\n \"objectKeyLessThan\",\n \"objectKeyLessThanOrEqual\",\n \"objectKeyEquals\",\n \"objectKeyExtends\",\n \"betweenInclusively\",\n \"betweenExclusively\",\n \"equals\",\n \"equalsSome\",\n \"errors\",\n \"errorsOfType\",\n \"before\",\n \"after\",\n \"sameDay\",\n \"sameMonth\",\n \"sameMonthYear\",\n \"sameYear\",\n \"truthy\",\n \"falsy\",\n \"true\",\n \"false\",\n \"returnEquals\",\n \"returnExtends\",\n \"isTemplateLiteral\"\n] as const;\n","import type { NUMERIC_CHAR } from \"inferred-types/constants\";\n\n/**\n * **MONTH_NAME**\n *\n * Full month names.\n */\nexport const MONTH_NAME = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n] as const;\n\ntype MonthName = typeof MONTH_NAME[number];\n\n/**\n * **MONTH_ABBR**\n *\n * Abbreviated month names.\n */\nexport const MONTH_ABBR = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n] as const;\n\ntype MonthAbbrev = typeof MONTH_ABBR[number];\n\ntype NumericChar = typeof NUMERIC_CHAR[number];\n\ntype MonthNameLookup = {\n abbrev: MonthAbbrev;\n num: number;\n twoDigitStr: `${NumericChar}${NumericChar}`;\n};\n\ntype MonthAbbrevLookup = {\n name: MonthName;\n num: number;\n twoDigitStr: `${NumericChar}${NumericChar}`;\n};\n\nexport const MONTH_NAME_LOOKUP = {\n \"January\": { abbrev: \"Jan\", num: 1, twoDigitStr: \"01\" },\n \"February\": { abbrev: \"Feb\", num: 2, twoDigitStr: \"02\" },\n \"March\": { abbrev: \"Mar\", num: 3, twoDigitStr: \"03\" },\n \"April\": { abbrev: \"Apr\", num: 4, twoDigitStr: \"04\" },\n \"May\": { abbrev: \"May\", num: 5, twoDigitStr: \"05\" },\n \"June\": { abbrev: \"Jun\", num: 6, twoDigitStr: \"06\" },\n \"July\": { abbrev: \"Jul\", num: 7, twoDigitStr: \"07\" },\n \"August\": { abbrev: \"Aug\", num: 8, twoDigitStr: \"08\" },\n \"September\": { abbrev: \"Sep\", num: 9, twoDigitStr: \"09\" },\n \"October\": { abbrev: \"Oct\", num: 10, twoDigitStr: \"10\" },\n \"November\": { abbrev: \"Nov\", num: 11, twoDigitStr: \"11\" },\n \"December\": { abbrev: \"Dec\", num: 12, twoDigitStr: \"12\" }\n} as const satisfies Record<MonthName, MonthNameLookup>;\n\nexport const MONTH_ABBREV_LOOKUP = {\n \"Jan\": { name: \"January\", num: 1, twoDigitStr: \"01\" },\n \"Feb\": { name: \"February\", num: 2, twoDigitStr: \"02\" },\n \"Mar\": { name: \"March\", num: 3, twoDigitStr: \"03\" },\n \"Apr\": { name: \"April\", num: 4, twoDigitStr: \"04\" },\n \"May\": { name: \"May\", num: 5, twoDigitStr: \"05\" },\n \"Jun\": { name: \"June\", num: 6, twoDigitStr: \"06\" },\n \"Jul\": { name: \"July\", num: 7, twoDigitStr: \"07\" },\n \"Aug\": { name: \"August\", num: 8, twoDigitStr: \"08\" },\n \"Sep\": { name: \"September\", num: 9, twoDigitStr: \"09\" },\n \"Oct\": { name: \"October\", num: 10, twoDigitStr: \"10\" },\n \"Nov\": { name: \"November\", num: 11, twoDigitStr: \"11\" },\n \"Dec\": { name: \"December\", num: 12, twoDigitStr: \"12\" }\n} as const satisfies Record<MonthAbbrev, MonthAbbrevLookup>;\n\n/** the seasons in a year */\nexport const SEASONS = [\n \"Summer\",\n \"Spring\",\n \"Fall\",\n \"Winter\"\n] as const;\n\ntype Season = typeof SEASONS[number];\ntype MonthAbbr = typeof MONTH_ABBR[number];\n\ntype Hemisphere = \"northern\" | \"southern\";\n\n/**\n * Maps each season to the months which represent that season (by\n * hemisphere).\n */\nexport const SEASON_TO_MONTH_LOOKUP = {\n Winter: { northern: [\"Dec\", \"Jan\", \"Feb\"], southern: [\"Jun\", \"Jul\", \"Aug\"] },\n Spring: { northern: [\"Mar\", \"Apr\", \"May\"], southern: [\"Sep\", \"Oct\", \"Nom\"] },\n Summer: { northern: [\"Jun\", \"Jul\", \"Aug\"], southern: [\"Dec\", \"Jan\", \"Feb\"] },\n Fall: { northern: [\"Sep\", \"Oct\", \"Nov\"], southern: [\"Mar\", \"Apr\", \"May\"] },\n} as const as Record<Season, { northern: MonthAbbr[]; southern: MonthAbbr[] }>;\n\nexport const MONTH_TO_SEASON_LOOKUP = {\n northern: {\n \"Jan\": \"Winter\",\n \"Feb\": \"Winter\",\n \"Mar\": \"Spring\",\n \"Apr\": \"Spring\",\n \"May\": \"Spring\",\n \"Jun\": \"Summer\",\n \"Jul\": \"Summer\",\n \"Aug\": \"Summer\",\n \"Sep\": \"Fall\",\n \"Oct\": \"Fall\",\n \"Nov\": \"Fall\",\n \"Dec\": \"Winter\"\n },\n southern: {\n \"Jan\": \"Summer\",\n \"Feb\": \"Summer\",\n \"Mar\": \"Fall\",\n \"Apr\": \"Fall\",\n \"May\": \"Fall\",\n \"Jun\": \"Summer\",\n \"Jul\": \"Summer\",\n \"Aug\": \"Summer\",\n \"Sep\": \"Spring\",\n \"Oct\": \"Spring\",\n \"Nov\": \"Spring\",\n \"Dec\": \"Summer\"\n }\n} as const as Record<Hemisphere, Record<MonthAbbr, Season>>;\n\nexport const WEEK_DAY_ABBREV = [\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\"\n] as const;\n\nexport const WEEK_DAY = [\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\"\n] as const;\n\nexport const WEEKEND_DAY_ABBREV = [\n \"Sat\",\n \"Sun\"\n] as const;\n\nexport const WEEKEND_DAY = [\n \"Saturday\",\n \"Sunday\"\n] as const;\n\nexport const DAYS_OF_WEEK__Sun = [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n] as const;\n\nexport const DAYS_OF_WEEK__Mon = [\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\",\n \"Sun\"\n] as const;\n\nexport const DATE_TYPE = [\n \"datetime\", // date and time info\n \"date\", // just date info (YYYY-MM-DD)\n \"year-independent\", // (--MM-DD)\n \"year-month\", // (-YYYY-MM)\n \"year\" // (YYYY)\n] as const;\n\n/**\n * months with 30 days\n */\nexport const ISO_DATE_30 = [\n \"04\",\n \"06\",\n \"09\",\n \"11\"\n] as const;\n\n/**\n * months with 31 days\n */\nexport const ISO_DATE_31 = [\n \"01\",\n \"03\",\n \"05\",\n \"07\",\n \"08\",\n \"10\",\n \"12\"\n] as const;\n","/**\n * Double Leap Years for 2nd Millennium (1000-1999)\n */\nexport const DOUBLE_LEAP_M2 = [\n 1004,\n 1012,\n 1020,\n 1028,\n 1036,\n 1064,\n 1072,\n 1080,\n 1088,\n 1096,\n 1104,\n 1112,\n 1140,\n 1148,\n 1156,\n 1164,\n 1172,\n 1180,\n 1188,\n 1216,\n 1224,\n 1232,\n 1240,\n 1248,\n 1256,\n 1264,\n 1292,\n 1308,\n 1316,\n 1324,\n 1332,\n 1340,\n 1368,\n 1376,\n 1384,\n 1392,\n 1408,\n 1416,\n 1444,\n 1452,\n 1460,\n 1468,\n 1476,\n 1484,\n 1492,\n 1520,\n 1528,\n 1536,\n 1544,\n 1552,\n 1560,\n 1568,\n 1596,\n 1604,\n 1612,\n 1620,\n 1628,\n 1636,\n 1644,\n 1672,\n 1680,\n 1688,\n 1696,\n 1704,\n 1712,\n 1720,\n 1748,\n 1756,\n 1764,\n 1772,\n 1780,\n 1788,\n 1796,\n 1824,\n 1832,\n 1840,\n 1848,\n 1856,\n 1864,\n 1872,\n 1908,\n 1916,\n 1924,\n 1932,\n 1940,\n 1948,\n 1976,\n 1984,\n 1992,\n 2000\n] as const;\n\n/**\n * Double Leap Years for 3rd Millennium (2000-2999)\n */\nexport const DOUBLE_LEAP_M3 = [\n 2008,\n 2016,\n 2024,\n 2052,\n 2060,\n 2068,\n 2076,\n 2084,\n 2092,\n 2128,\n 2136,\n 2144,\n 2152,\n 2160,\n 2168,\n 2176,\n 2204,\n 2212,\n 2220,\n 2228,\n 2236,\n 2244,\n 2252,\n 2280,\n 2288,\n 2296,\n 2304,\n 2312,\n 2320,\n 2328,\n 2356,\n 2364,\n 2372,\n 2380,\n 2388,\n 2396,\n 2404,\n 2432,\n 2440,\n 2448,\n 2456,\n 2464,\n 2472,\n 2480,\n 2508,\n 2516,\n 2524,\n 2532,\n 2540,\n 2548,\n 2556,\n 2564,\n 2592,\n 2600,\n 2608,\n 2616,\n 2624,\n 2632,\n 2640,\n 2668,\n 2676,\n 2684,\n 2692,\n 2700,\n 2708,\n 2716,\n 2744,\n 2752,\n 2760,\n 2768,\n 2776,\n 2784,\n 2792,\n 2820,\n 2828,\n 2836,\n 2844,\n 2852,\n 2860,\n 2888,\n 2896,\n 2904,\n 2912,\n 2920,\n 2928,\n 2936,\n 2964,\n 2972,\n 2980,\n 2988,\n 2996\n] as const;\n\n/**\n * Double Leap Years for modern times (1400-2300)\n */\nexport const DOUBLE_LEAP_MODERN = [\n 1408,\n 1416,\n 1444,\n 1452,\n 1460,\n 1468,\n 1476,\n 1484,\n 1492,\n 1520,\n 1528,\n 1536,\n 1544,\n 1552,\n 1560,\n 1568,\n 1596,\n 1604,\n 1612,\n 1620,\n 1628,\n 1636,\n 1644,\n 1672,\n 1680,\n 1688,\n 1696,\n 1704,\n 1712,\n 1720,\n 1748,\n 1756,\n 1764,\n 1772,\n 1780,\n 1788,\n 1796,\n 1824,\n 1832,\n 1840,\n 1848,\n 1856,\n 1864,\n 1872,\n 1908,\n 1916,\n 1924,\n 1932,\n 1940,\n 1948,\n 1976,\n 1984,\n 1992,\n 2000,\n 2008,\n 2016,\n 2024,\n 2052,\n 2060,\n 2068,\n 2076,\n 2084,\n 2092,\n 2128,\n 2136,\n 2144,\n 2152,\n 2160,\n 2168,\n 2176,\n 2204,\n 2212,\n 2220,\n 2228,\n 2236,\n 2244,\n 2252,\n 2280,\n 2288,\n 2296\n] as const;\n","/**\n * **FALSY_VALUES**\n *\n * A tuple which contains all values which are considered _falsy_ in\n * Javascript.\n */\nexport const FALSY_VALUES = [\n false,\n 0,\n -0,\n \"\",\n null,\n undefined,\n Number.NaN,\n] as const;\n","export const HEMISPHERE = [\n \"northern\",\n \"southern\"\n] as const;\n\n/**\n * The continents on planet earth\n */\nexport const CONTINENTS = [\n \"Africa\",\n \"Australia\",\n \"Antarctica\",\n \"Asia\",\n \"Europe\",\n \"North America\",\n \"South America\"\n] as const;\n\n/**\n * The 50 US states: `[name, abbrev, true]`\n */\nexport const US_STATE_LOOKUP_STRICT = [\n { name: \"Alabama\", abbrev: \"AL\" },\n { name: \"Alaska\", abbrev: \"AK\" },\n { name: \"Arizona\", abbrev: \"AZ\" },\n { name: \"Arkansas\", abbrev: \"AR\" },\n { name: \"California\", abbrev: \"CA\" },\n { name: \"Colorado\", abbrev: \"CO\" },\n { name: \"Connecticut\", abbrev: \"CT\" },\n { name: \"Delaware\", abbrev: \"DE\" },\n { name: \"Florida\", abbrev: \"FL\" },\n { name: \"Georgia\", abbrev: \"GA\" },\n { name: \"Hawaii\", abbrev: \"HI\" },\n { name: \"Idaho\", abbrev: \"ID\" },\n { name: \"Illinois\", abbrev: \"IL\" },\n { name: \"Indiana\", abbrev: \"IN\" },\n { name: \"Iowa\", abbrev: \"IA\" },\n { name: \"Kansas\", abbrev: \"KS\" },\n { name: \"Kentucky\", abbrev: \"KY\" },\n { name: \"Louisiana\", abbrev: \"LA\" },\n { name: \"Maine\", abbrev: \"ME\" },\n { name: \"Maryland\", abbrev: \"MD\" },\n { name: \"Massachusetts\", abbrev: \"MA\" },\n { name: \"Michigan\", abbrev: \"MI\" },\n { name: \"Minnesota\", abbrev: \"MN\" },\n { name: \"Mississippi\", abbrev: \"MS\" },\n { name: \"Missouri\", abbrev: \"MO\" },\n { name: \"Montana\", abbrev: \"MT\" },\n { name: \"Nebraska\", abbrev: \"NE\" },\n { name: \"Nevada\", abbrev: \"NV\" },\n { name: \"New Hampshire\", abbrev: \"NH\" },\n { name: \"New Jersey\", abbrev: \"NJ\" },\n { name: \"New Mexico\", abbrev: \"NM\" },\n { name: \"New York\", abbrev: \"NY\" },\n { name: \"North Carolina\", abbrev: \"NC\" },\n { name: \"North Dakota\", abbrev: \"ND\" },\n { name: \"Ohio\", abbrev: \"OH\" },\n { name: \"Oklahoma\", abbrev: \"OK\" },\n { name: \"Oregon\", abbrev: \"OR\" },\n { name: \"Pennsylvania\", abbrev: \"PA\" },\n { name: \"Rhode Island\", abbrev: \"RI\" },\n { name: \"South Carolina\", abbrev: \"SC\" },\n { name: \"South Dakota\", abbrev: \"SD\" },\n { name: \"Tennessee\", abbrev: \"TN\" },\n { name: \"Texas\", abbrev: \"TX\" },\n { name: \"Utah\", abbrev: \"UT\" },\n { name: \"Vermont\", abbrev: \"VT\" },\n { name: \"Virginia\", abbrev: \"VA\" },\n { name: \"Washington\", abbrev: \"WA\" },\n { name: \"West Virginia\", abbrev: \"WV\" },\n { name: \"Wisconsin\", abbrev: \"WI\" },\n { name: \"Wyoming\", abbrev: \"WY\" },\n] as const;\n\n/**\n * The 9 provinces to the US which are granted State codes.\n */\nexport const US_STATE_LOOKUP_PROVINCES = [\n { name: \"Puerto Rico\", abbrev: \"PR\" },\n { name: \"Virgin Islands\", abbrev: \"VI\" },\n { name: \"Palau\", abbrev: \"PW\" },\n { name: \"Federated States of Micronesia\", abbrev: \"FM\" },\n { name: \"Northern Mariana Islands\", abbrev: \"MP\" },\n { name: \"District of Columbia\", abbrev: \"DC\" },\n { name: \"Marshall Islands\", abbrev: \"MH\" },\n { name: \"American Samoa\", abbrev: \"AS\" },\n { name: \"Guam\", abbrev: \"GU\" },\n] as const;\n\n/**\n * All 50 states and 9 provinces which have State abbreviations.\n *\n * Data format is: `[name, abbrev, flag]` where the boolean flag\n * indicates whether the line item is one of the 50 true states.\n */\nexport const US_STATE_LOOKUP = [\n ...US_STATE_LOOKUP_STRICT,\n ...US_STATE_LOOKUP_PROVINCES,\n] as const;\n\n/**\n * A lookup which provides a list of state abbreviations associated\n * with the first digit of the zip code.\n */\nexport const ZIP_TO_STATE = {\n 0: [\"CT\", \"MA\", \"ME\", \"NH\", \"NJ\", \"NY\", \"PR\", \"RI\", \"VT\", \"VI\"],\n 1: [\"DE\", \"NY\", \"PA\"],\n 2: [\"DC\", \"MD\", \"NC\", \"SC\", \"VA\", \"WV\"],\n 3: [\"AL\", \"FL\", \"GA\", \"MS\", \"TN\"],\n 4: [\"IN\", \"KY\", \"MI\", \"OH\"],\n 5: [\"IA\", \"MN\", \"MT\", \"ND\", \"SD\", \"WI\"],\n 6: [\"IL\", \"KS\", \"MO\", \"NE\"],\n 7: [\"AR\", \"LA\", \"OK\", \"TX\"],\n 8: [\"AZ\", \"CO\", \"ID\", \"NM\", \"NV\", \"UT\", \"WY\"],\n 9: [\"AK\", \"AS\", \"CA\", \"GU\", \"HI\", \"MH\", \"FM\", \"MP\", \"OR\", \"PW\", \"WA\"],\n} as const;\n","export const HASH_TABLE_WIDE = {\n string: \"318\",\n number: \"523\",\n boolean: \"21\",\n never: \"!!!\",\n unknown: \"ed\",\n undefined: \"ce\",\n null: \"cc\",\n symbol: \"78\",\n object: \"fe8\",\n array: \"17\",\n record: \"ee\",\n map: \"e65\",\n weakMap: \"e64\",\n set: \"f62\",\n union: \"f61\",\n} as const;\n\nexport const HASH_TABLE_ALPHA_LOWER = {\n a: \"8\",\n b: \"~\",\n c: \"^\",\n d: \".\",\n e: \"82\",\n f: \"89\",\n g: \",\",\n h: \"!\",\n i: \"-7\",\n j: \"-8\",\n k: \"88\",\n l: \"8f\",\n m: \"8e\",\n n: \"6e\",\n o: \"44\",\n p: \"60\",\n q: \"61\",\n r: \"71\",\n s: \":\",\n t: \"-45\",\n u: \"-5\",\n v: \"-9\",\n w: \"-f\",\n x: \"+1\",\n y: \";\",\n z: \"*1\",\n} as const;\n\nexport const HASH_TABLE_SPECIAL = {\n \"!\": \"1\",\n \"@\": \"8\",\n \"#\": \"5\",\n \"$\": \"4\",\n \"%\": \"3\",\n \"^\": \"2\",\n \"&\": \"9\",\n \"*\": \"7\",\n \"(\": \"6\",\n \")\": \"12\",\n \"{\": \"33\",\n \"}\": \"54\",\n \"[\": \"x8\",\n \"]\": \"y4\",\n \":\": \"z2\",\n \";\": \"e88\",\n \"\\\"\": \"c11\",\n \"'\": \"c12\",\n \"<\": \"p3\",\n \",\": \"45\",\n \">\": \"e9\",\n \".\": \"f2\",\n \"?\": \"ee\",\n \"/\": \"u9\",\n \"\\\\\": \"f9\",\n \"|\": \"q1\",\n \"~\": \"fe\",\n \"`\": \"8e\",\n} as const;\n\nexport const HASH_TABLE_DIGIT = {\n 0: \"-2\",\n 1: \"-9\",\n 2: \"ff\",\n 3: \"fe\",\n 4: \"2e\",\n 5: \"cd\",\n 6: \"54\",\n 7: \"27\",\n 8: \"49\",\n 9: \"51\",\n} as const;\n\nexport const HASH_TABLE_ALPHA_UPPER = {\n A: \"b8\",\n B: \"~9\",\n C: \"6^\",\n D: \".8\",\n E: \"5<\",\n F: \">7\",\n G: \"1,\",\n H: \"!7\",\n I: \"8#\",\n J: \"@9\",\n K: \"1*\",\n L: \"4&\",\n M: \"+5\",\n N: \"j|\",\n O: \"-l\",\n P: \"q{\",\n Q: \"]9\",\n R: \"f%\",\n S: \":3\",\n T: \"?+\",\n U: \"}5\",\n V: \"'4\",\n W: \"1@g\",\n X: \"0+1\",\n Y: \"4;\",\n Z: \"a*1\",\n} as const;\n\nexport const HASH_TABLE_CHAR = {\n ...HASH_TABLE_ALPHA_LOWER,\n ...HASH_TABLE_ALPHA_UPPER,\n ...HASH_TABLE_SPECIAL,\n} as const;\n\nexport const HASH_TABLE_OTHER = \"999\" as const;\n","/**\n * An array of all valid HTML tags that have both opening and closing tags.\n */\nexport const HTML_BLOCK_TAGS = [\n \"a\",\n \"abbr\",\n \"address\",\n \"article\",\n \"aside\",\n \"b\",\n \"bdi\",\n \"bdo\",\n \"blockquote\",\n \"body\",\n \"button\",\n \"canvas\",\n \"caption\",\n \"cite\",\n \"code\",\n \"colgroup\",\n \"data\",\n \"datalist\",\n \"dd\",\n \"del\",\n \"details\",\n \"dfn\",\n \"dialog\",\n \"div\",\n \"dl\",\n \"dt\",\n \"em\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"form\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"head\",\n \"header\",\n \"html\",\n \"i\",\n \"iframe\",\n \"ins\",\n \"kbd\",\n \"label\",\n \"legend\",\n \"li\",\n \"main\",\n \"map\",\n \"mark\",\n \"menu\",\n \"meter\",\n \"nav\",\n \"noscript\",\n \"object\",\n \"ol\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"p\",\n \"picture\",\n \"pre\",\n \"progress\",\n \"q\",\n \"rp\",\n \"rt\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"script\",\n \"section\",\n \"select\",\n \"small\",\n \"span\",\n \"strong\",\n \"style\",\n \"sub\",\n \"summary\",\n \"sup\",\n \"svg\",\n \"table\",\n \"tbody\",\n \"td\",\n \"template\",\n \"textarea\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"time\",\n \"title\",\n \"tr\",\n \"u\",\n \"ul\",\n \"var\",\n \"video\",\n] as const;\n\n/**\n * An array of all valid HTML tags that are self-closing (do not have closing tags).\n */\nexport const HTML_ATOMIC_TAGS = [\n \"area\",\n \"base\",\n \"br\",\n \"col\",\n \"embed\",\n \"hr\",\n \"img\",\n \"input\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n] as const;\n","/**\n * All country codes (name, alpha-2, country-code)\n */\nexport const ISO3166_1 = [\n { name: \"Afghanistan\", alpha2: \"AF\", countryCode: \"004\", alpha3: \"AFG\" },\n { name: \"Albania\", alpha2: \"AL\", countryCode: \"008\", alpha3: \"ALB\" },\n { name: \"Algeria\", alpha2: \"DZ\", countryCode: \"012\", alpha3: \"DZA\" },\n { name: \"Andorra\", alpha2: \"AD\", countryCode: \"020\", alpha3: \"AND\" },\n { name: \"Angola\", alpha2: \"AO\", countryCode: \"024\", alpha3: \"AGO\" },\n { name: \"Argentina\", alpha2: \"AR\", countryCode: \"032\", alpha3: \"ARG\" },\n { name: \"Australia\", alpha2: \"AU\", countryCode: \"036\", alpha3: \"AUS\" },\n { name: \"Austria\", alpha2: \"AT\", countryCode: \"040\", alpha3: \"AUT\" },\n { name: \"Azerbaijan\", alpha2: \"AZ\", countryCode: \"031\", alpha3: \"AZE\" },\n { name: \"Bahamas\", alpha2: \"BS\", countryCode: \"044\", alpha3: \"BHS\" },\n { name: \"Bangladesh\", alpha2: \"BD\", countryCode: \"050\", alpha3: \"BGD\" },\n { name: \"Belgium\", alpha2: \"BE\", countryCode: \"056\", alpha3: \"BEL\" },\n { name: \"Belize\", alpha2: \"BZ\", countryCode: \"084\", alpha3: \"BLZ\" },\n { name: \"Benin\", alpha2: \"BJ\", countryCode: \"204\", alpha3: \"BEN\" },\n { name: \"Bhutan\", alpha2: \"BT\", countryCode: \"064\", alpha3: \"BTN\" },\n { name: \"Bolivia\", alpha2: \"BO\", countryCode: \"068\", alpha3: \"BOL\" },\n { name: \"Bosnia and Herzegovina\", alpha2: \"BA\", countryCode: \"070\", alpha3: \"BIH\" },\n { name: \"Botswana\", alpha2: \"BW\", countryCode: \"072\", alpha3: \"BWA\" },\n { name: \"Brazil\", alpha2: \"BR\", countryCode: \"076\", alpha3: \"BRA\" },\n { name: \"Brunei Darussalam\", alpha2: \"BN\", countryCode: \"096\", alpha3: \"BRN\" },\n { name: \"Bulgaria\", alpha2: \"BG\", countryCode: \"100\", alpha3: \"BGR\" },\n { name: \"Burkina Faso\", alpha2: \"BF\", countryCode: \"854\", alpha3: \"BFA\" },\n { name: \"Burundi\", alpha2: \"BI\", countryCode: \"108\", alpha3: \"BDI\" },\n { name: \"Cambodia\", alpha2: \"KH\", countryCode: \"116\", alpha3: \"KHM\" },\n { name: \"Cameroon\", alpha2: \"CM\", countryCode: \"120\", alpha3: \"CMR\" },\n { name: \"Canada\", alpha2: \"CA\", countryCode: \"124\", alpha3: \"CAN\" },\n { name: \"Afghanistan\", alpha2: \"AF\", countryCode: \"004\", alpha3: \"AFG\" },\n { name: \"Albania\", alpha2: \"AL\", countryCode: \"008\", alpha3: \"ALB\" },\n { name: \"Algeria\", alpha2: \"DZ\", countryCode: \"012\", alpha3: \"DZA\" },\n { name: \"Andorra\", alpha2: \"AD\", countryCode: \"020\", alpha3: \"AND\" },\n { name: \"Angola\", alpha2: \"AO\", countryCode: \"024\", alpha3: \"AGO\" },\n { name: \"Argentina\", alpha2: \"AR\", countryCode: \"032\", alpha3: \"ARG\" },\n { name: \"Australia\", alpha2: \"AU\", countryCode: \"036\", alpha3: \"AUS\" },\n { name: \"Austria\", alpha2: \"AT\", countryCode: \"040\", alpha3: \"AUT\" },\n { name: \"Azerbaijan\", alpha2: \"AZ\", countryCode: \"031\", alpha3: \"AZE\" },\n { name: \"Bahamas\", alpha2: \"BS\", countryCode: \"044\", alpha3: \"BHS\" },\n { name: \"Bangladesh\", alpha2: \"BD\", countryCode: \"050\", alpha3: \"BGD\" },\n { name: \"Belgium\", alpha2: \"BE\", countryCode: \"056\", alpha3: \"BEL\" },\n { name: \"Belize\", alpha2: \"BZ\", countryCode: \"084\", alpha3: \"BLZ\" },\n { name: \"Benin\", alpha2: \"BJ\", countryCode: \"204\", alpha3: \"BEN\" },\n { name: \"Bhutan\", alpha2: \"BT\", countryCode: \"064\", alpha3: \"BTN\" },\n { name: \"Bolivia\", alpha2: \"BO\", countryCode: \"068\", alpha3: \"BOL\" },\n { name: \"Bosnia and Herzegovina\", alpha2: \"BA\", countryCode: \"070\", alpha3: \"BIH\" },\n { name: \"Botswana\", alpha2: \"BW\", countryCode: \"072\", alpha3: \"BWA\" },\n { name: \"Brazil\", alpha2: \"BR\", countryCode: \"076\", alpha3: \"BRA\" },\n { name: \"Brunei Darussalam\", alpha2: \"BN\", countryCode: \"096\", alpha3: \"BRN\" },\n { name: \"Bulgaria\", alpha2: \"BG\", countryCode: \"100\", alpha3: \"BGR\" },\n { name: \"Burkina Faso\", alpha2: \"BF\", countryCode: \"854\", alpha3: \"BFA\" },\n { name: \"Burundi\", alpha2: \"BI\", countryCode: \"108\", alpha3: \"BDI\" },\n { name: \"Cambodia\", alpha2: \"KH\", countryCode: \"116\", alpha3: \"KHM\" },\n { name: \"Cameroon\", alpha2: \"CM\", countryCode: \"120\", alpha3: \"CMR\" },\n { name: \"Canada\", alpha2: \"CA\", countryCode: \"124\", alpha3: \"CAN\" },\n { name: \"Maldives\", alpha2: \"MV\", countryCode: \"462\", alpha3: \"MDV\" },\n { name: \"Mali\", alpha2: \"ML\", countryCode: \"466\", alpha3: \"MLI\" },\n { name: \"Malta\", alpha2: \"MT\", countryCode: \"470\", alpha3: \"MLT\" },\n { name: \"Marshall Islands\", alpha2: \"MH\", countryCode: \"584\", alpha3: \"MHL\" },\n { name: \"Mauritania\", alpha2: \"MR\", countryCode: \"478\", alpha3: \"MRT\" },\n { name: \"Mauritius\", alpha2: \"MU\", countryCode: \"480\", alpha3: \"MUS\" },\n { name: \"Mexico\", alpha2: \"MX\", countryCode: \"484\", alpha3: \"MEX\" },\n { name: \"Micronesia (Federated States of)\", alpha2: \"FM\", countryCode: \"583\", alpha3: \"FSM\" },\n { name: \"Moldova (Republic of)\", alpha2: \"MD\", countryCode: \"498\", alpha3: \"MDA\" },\n { name: \"Monaco\", alpha2: \"MC\", countryCode: \"492\", alpha3: \"MCO\" },\n { name: \"Mongolia\", alpha2: \"MN\", countryCode: \"496\", alpha3: \"MNG\" },\n { name: \"Montenegro\", alpha2: \"ME\", countryCode: \"499\", alpha3: \"MNE\" },\n { name: \"Morocco\", alpha2: \"MA\", countryCode: \"504\", alpha3: \"MAR\" },\n { name: \"Mozambique\", alpha2: \"MZ\", countryCode: \"508\", alpha3: \"MOZ\" },\n { name: \"Myanmar\", alpha2: \"MM\", countryCode: \"104\", alpha3: \"MMR\" },\n { name: \"Namibia\", alpha2: \"NA\", countryCode: \"516\", alpha3: \"NAM\" },\n { name: \"Nauru\", alpha2: \"NR\", countryCode: \"520\", alpha3: \"NRU\" },\n { name: \"Nepal\", alpha2: \"NP\", countryCode: \"524\", alpha3: \"NPL\" },\n { name: \"Netherlands\", alpha2: \"NL\", countryCode: \"528\", alpha3: \"NLD\" },\n { name: \"New Zealand\", alpha2: \"NZ\", countryCode: \"554\", alpha3: \"NZL\" },\n { name: \"Nicaragua\", alpha2: \"NI\", countryCode: \"558\", alpha3: \"NIC\" },\n { name: \"Niger\", alpha2: \"NE\", countryCode: \"562\", alpha3: \"NER\" },\n { name: \"Nigeria\", alpha2: \"NG\", countryCode: \"566\", alpha3: \"NGA\" },\n { name: \"North Macedonia\", alpha2: \"MK\", countryCode: \"807\", alpha3: \"MKD\" },\n { name: \"Norway\", alpha2: \"NO\", countryCode: \"578\", alpha3: \"NOR\" },\n { name: \"Oman\", alpha2: \"OM\", countryCode: \"512\", alpha3: \"OMN\" },\n { name: \"Pakistan\", alpha2: \"PK\", countryCode: \"586\", alpha3: \"PAK\" },\n { name: \"Palau\", alpha2: \"PW\", countryCode: \"585\", alpha3: \"PLW\" },\n { name: \"Panama\", alpha2: \"PA\", countryCode: \"591\", alpha3: \"PAN\" },\n { name: \"Papua New Guinea\", alpha2: \"PG\", countryCode: \"598\", alpha3: \"PNG\" },\n { name: \"Paraguay\", alpha2: \"PY\", countryCode: \"600\", alpha3: \"PRY\" },\n { name: \"Peru\", alpha2: \"PE\", countryCode: \"604\", alpha3: \"PER\" },\n { name: \"Philippines\", alpha2: \"PH\", countryCode: \"608\", alpha3: \"PHL\" },\n { name: \"Poland\", alpha2: \"PL\", countryCode: \"616\", alpha3: \"POL\" },\n { name: \"Portugal\", alpha2: \"PT\", countryCode: \"620\", alpha3: \"PRT\" },\n { name: \"Qatar\", alpha2: \"QA\", countryCode: \"634\", alpha3: \"QAT\" },\n { name: \"Romania\", alpha2: \"RO\", countryCode: \"642\", alpha3: \"ROU\" },\n { name: \"Russian Federation\", alpha2: \"RU\", countryCode: \"643\", alpha3: \"RUS\" },\n { name: \"Rwanda\", alpha2: \"RW\", countryCode: \"646\", alpha3: \"RWA\" },\n { name: \"Saint Kitts and Nevis\", alpha2: \"KN\", countryCode: \"659\", alpha3: \"KNA\" },\n { name: \"Saint Lucia\", alpha2: \"LC\", countryCode: \"662\", alpha3: \"LCA\" },\n { name: \"Saint Vincent and the Grenadines\", alpha2: \"VC\", countryCode: \"670\", alpha3: \"VCT\" },\n { name: \"Samoa\", alpha2: \"WS\", countryCode: \"882\", alpha3: \"WSM\" },\n { name: \"San Marino\", alpha2: \"SM\", countryCode: \"674\", alpha3: \"SMR\" },\n { name: \"Sao Tome and Principe\", alpha2: \"ST\", countryCode: \"678\", alpha3: \"STP\" },\n { name: \"Saudi Arabia\", alpha2: \"SA\", countryCode: \"682\", alpha3: \"SAU\" },\n { name: \"Senegal\", alpha2: \"SN\", countryCode: \"686\", alpha3: \"SEN\" },\n { name: \"Serbia\", alpha2: \"RS\", countryCode: \"688\", alpha3: \"SRB\" },\n { name: \"Seychelles\", alpha2: \"SC\", countryCode: \"690\", alpha3: \"SYC\" },\n { name: \"Sierra Leone\", alpha2: \"SL\", countryCode: \"694\", alpha3: \"SLE\" },\n { name: \"Singapore\", alpha2: \"SG\", countryCode: \"702\", alpha3: \"SGP\" },\n { name: \"Slovakia\", alpha2: \"SK\", countryCode: \"703\", alpha3: \"SVK\" },\n { name: \"Slovenia\", alpha2: \"SI\", countryCode: \"705\", alpha3: \"SVN\" },\n { name: \"Solomon Islands\", alpha2: \"SB\", countryCode: \"090\", alpha3: \"SLB\" },\n { name: \"Somalia\", alpha2: \"SO\", countryCode: \"706\", alpha3: \"SOM\" },\n { name: \"South Africa\", alpha2: \"ZA\", countryCode: \"710\", alpha3: \"ZAF\" },\n { name: \"South Sudan\", alpha2: \"SS\", countryCode: \"728\", alpha3: \"SSD\" },\n { name: \"Spain\", alpha2: \"ES\", countryCode: \"724\", alpha3: \"ESP\" },\n { name: \"Sri Lanka\", alpha2: \"LK\", countryCode: \"144\", alpha3: \"LKA\" },\n { name: \"Sudan\", alpha2: \"SD\", countryCode: \"729\", alpha3: \"SDN\" },\n { name: \"Suriname\", alpha2: \"SR\", countryCode: \"740\", alpha3: \"SUR\" },\n { name: \"Sweden\", alpha2: \"SE\", countryCode: \"752\", alpha3: \"SWE\" },\n { name: \"Switzerland\", alpha2: \"CH\", countryCode: \"756\", alpha3: \"CHE\" },\n { name: \"Syrian Arab Republic\", alpha2: \"SY\", countryCode: \"760\", alpha3: \"SYR\" },\n { name: \"Taiwan\", alpha2: \"TW\", countryCode: \"158\", alpha3: \"TWN\" },\n { name: \"Tajikistan\", alpha2: \"TJ\", countryCode: \"762\", alpha3: \"TJK\" },\n { name: \"Tanzania\", alpha2: \"TZ\", countryCode: \"834\", alpha3: \"TZA\" },\n { name: \"Thailand\", alpha2: \"TH\", countryCode: \"764\", alpha3: \"THA\" },\n { name: \"Timor-Leste\", alpha2: \"TL\", countryCode: \"626\", alpha3: \"TLS\" },\n { name: \"Togo\", alpha2: \"TG\", countryCode: \"768\", alpha3: \"TGO\" },\n { name: \"Tonga\", alpha2: \"TO\", countryCode: \"776\", alpha3: \"TON\" },\n { name: \"Tonga\", alpha2: \"TO\", countryCode: \"776\", alpha3: \"TON\" },\n { name: \"Trinidad and Tobago\", alpha2: \"TT\", countryCode: \"780\", alpha3: \"TTO\" },\n { name: \"Tunisia\", alpha2: \"TN\", countryCode: \"788\", alpha3: \"TUN\" },\n { name: \"Turkey\", alpha2: \"TR\", countryCode: \"792\", alpha3: \"TUR\" },\n { name: \"Turkmenistan\", alpha2: \"TM\", countryCode: \"795\", alpha3: \"TKM\" },\n { name: \"Tuvalu\", alpha2: \"TV\", countryCode: \"798\", alpha3: \"TUV\" },\n { name: \"Uganda\", alpha2: \"UG\", countryCode: \"800\", alpha3: \"UGA\" },\n { name: \"Ukraine\", alpha2: \"UA\", countryCode: \"804\", alpha3: \"UKR\" },\n { name: \"United Arab Emirates\", alpha2: \"AE\", countryCode: \"784\", alpha3: \"ARE\" },\n { name: \"United Kingdom\", alpha2: \"GB\", countryCode: \"826\", alpha3: \"GBR\" },\n { name: \"United States of America\", alpha2: \"US\", countryCode: \"840\", alpha3: \"USA\" },\n { name: \"Uruguay\", alpha2: \"UY\", countryCode: \"858\", alpha3: \"URY\" },\n { name: \"Uzbekistan\", alpha2: \"UZ\", countryCode: \"860\", alpha3: \"UZB\" },\n { name: \"Vanuatu\", alpha2: \"VU\", countryCode: \"548\", alpha3: \"VUT\" },\n { name: \"Venezuela\", alpha2: \"VE\", countryCode: \"862\", alpha3: \"VEN\" },\n { name: \"Viet Nam\", alpha2: \"VN\", countryCode: \"704\", alpha3: \"VNM\" },\n { name: \"Yemen\", alpha2: \"YE\", countryCode: \"887\", alpha3: \"YEM\" },\n { name: \"Zambia\", alpha2: \"ZM\", countryCode: \"894\", alpha3: \"ZMB\" },\n { name: \"Zimbabwe\", alpha2: \"ZW\", countryCode: \"716\", alpha3: \"ZWE\" },\n] as const;\n","import type { Constant } from \"inferred-types/constants\";\n\n/**\n * **createConstant**(kind)\n *\n * Creates a `Constant<TKind>` type.\n */\nfunction createConstant<TKind extends string>(kind: TKind) {\n return {\n _type: \"Constant\",\n kind,\n } as Constant<TKind>;\n}\n\nexport const MARKED = createConstant(\"Marked\");\n\n/**\n * **Marked**\n *\n * A constant that indicates that an item has been marked for\n * some ongoing operation.\n */\nexport type Marked = typeof MARKED;\n","export const DISTANCE_METRICS_LOOKUP = [\n { abbrev: \"km\", name: \"kilometer\" },\n { abbrev: \"mi\", name: \"mile\" },\n { abbrev: \"mm\", name: \"millimeter\" },\n { abbrev: \"cm\", name: \"centimeter\" },\n { abbrev: \"yd\", name: \"yard\" },\n { abbrev: \"ft\", name: \"foot\" },\n { abbrev: \"in\", name: \"inch\" },\n { abbrev: \"m\", name: \"meter\" },\n { abbrev: \"nm\", name: \"nautical mile\" },\n { abbrev: \"nmi\", name: \"nanometer\" },\n { abbrev: \"µm\", name: \"micrometer\" },\n { abbrev: \"dm\", name: \"decimeter\" },\n { abbrev: \"AU\", name: \"astronomical unit\" },\n { abbrev: \"ly\", name: \"light year\" },\n { abbrev: \"pc\", name: \"parsec\" },\n] as const;\n\nexport const MASS_METRICS_LOOKUP = [\n { abbrev: \"g\", name: \"gram\" },\n { abbrev: \"kg\", name: \"kilogram\" },\n { abbrev: \"mg\", name: \"milligram\" },\n { abbrev: \"µg\", name: \"microgram\" },\n { abbrev: \"t\", name: \"tonne\" },\n { abbrev: \"lb\", name: \"pound\" },\n { abbrev: \"oz\", name: \"ounce\" },\n { abbrev: \"st\", name: \"stone\" },\n { abbrev: \"ct\", name: \"carat\" },\n { abbrev: \"Mt\", name: \"megatonne\" },\n { abbrev: \"gt\", name: \"gigatonne\" },\n { abbrev: \"slug\", name: \"slug\" },\n { abbrev: \"dr\", name: \"dram\" },\n { abbrev: \"gr\", name: \"grain\" },\n { abbrev: \"q\", name: \"quintal\" },\n] as const;\n\nexport const SPEED_METRICS_LOOKUP = [\n { abbrev: \"m/s\", name: \"meters per second\" },\n { abbrev: \"km/h\", name: \"kilometers per hour\" },\n { abbrev: \"mph\", name: \"miles per hour\" },\n { abbrev: \"kn\", name: \"knot\" },\n { abbrev: \"ft/s\", name: \"feet per second\" },\n { abbrev: \"c\", name: \"speed of light\" },\n { abbrev: \"mach\", name: \"mach\" },\n { abbrev: \"cm/s\", name: \"centimeters per second\" },\n { abbrev: \"in/s\", name: \"inches per second\" },\n { abbrev: \"ly/y\", name: \"light years per year\" },\n] as const;\n\nexport const ACCELERATION_METRICS_LOOKUP = [\n { abbrev: \"m/s²\", name: \"meters per second squared\" },\n { abbrev: \"ft/s²\", name: \"feet per second squared\" },\n { abbrev: \"g\", name: \"g-force\" },\n { abbrev: \"Gal\", name: \"galileo\" },\n { abbrev: \"cm/s²\", name: \"centimeters per second squared\" },\n { abbrev: \"km/h²\", name: \"kilometers per hour squared\" },\n { abbrev: \"in/s²\", name: \"inches per second squared\" },\n { abbrev: \"mi/h²\", name: \"miles per hour squared\" },\n { abbrev: \"kn/s²\", name: \"knots per second squared\" },\n] as const;\n\nexport const VOLUME_METRICS_LOOKUP = [\n { abbrev: \"L\", name: \"liter\" },\n { abbrev: \"dL\", name: \"deciliter\" },\n { abbrev: \"mL\", name: \"milliliter\" },\n { abbrev: \"µL\", name: \"microliter\" },\n { abbrev: \"cm³\", name: \"cubic centimeter\" },\n { abbrev: \"m³\", name: \"cubic meter\" },\n { abbrev: \"ft³\", name: \"cubic foot\" },\n { abbrev: \"in³\", name: \"cubic inch\" },\n { abbrev: \"gallon\", name: \"gallon\" },\n { abbrev: \"qt\", name: \"quart\" },\n { abbrev: \"pt\", name: \"pint\" },\n { abbrev: \"fl oz\", name: \"fluid ounce\" },\n { abbrev: \"barrel\", name: \"barrel\" },\n { abbrev: \"tbsp\", name: \"tablespoon\" },\n { abbrev: \"tsp\", name: \"teaspoon\" },\n] as const;\n\nexport const TEMPERATURE_METRICS_LOOKUP = [\n { abbrev: \"°C\", name: \"celsius\" },\n { abbrev: \"°F\", name: \"fahrenheit\" },\n { abbrev: \"K\", name: \"kelvin\" },\n] as const;\n\nexport const PRESSURE_METRICS_LOOKUP = [\n { abbrev: \"Pa\", name: \"pascal\" },\n { abbrev: \"bar\", name: \"bar\" },\n { abbrev: \"atm\", name: \"atmosphere\" },\n { abbrev: \"mmHg\", name: \"millimeters of mercury\" },\n { abbrev: \"psi\", name: \"pounds per square inch\" },\n] as const;\n\nexport const ENERGY_METRICS_LOOKUP = [\n { abbrev: \"J\", name: \"joule\" },\n { abbrev: \"cal\", name: \"calorie\" },\n { abbrev: \"kcal\", name: \"kilocalorie\" },\n { abbrev: \"kWh\", name: \"kilowatt-hour\" },\n { abbrev: \"BTU\", name: \"british thermal unit\" },\n { abbrev: \"eV\", name: \"electronvolt\" },\n] as const;\n\nexport const TIME_METRICS_LOOKUP = [\n { abbrev: \"s\", name: \"second\" },\n { abbrev: \"m\", name: \"minute\" },\n { abbrev: \"h\", name: \"hour\" },\n { abbrev: \"day\", name: \"day\" },\n { abbrev: \"week\", name: \"week\" },\n { abbrev: \"mo\", name: \"month\" },\n { abbrev: \"ms\", name: \"millisecond\" },\n { abbrev: \"µs\", name: \"microsecond\" },\n { abbrev: \"ns\", name: \"nanosecond\" },\n] as const;\n\nexport const POWER_METRICS_LOOKUP = [\n { abbrev: \"W\", name: \"Watt\" },\n { abbrev: \"kW\", name: \"kilowatt\" },\n { abbrev: \"MW\", name: \"megawatt\" },\n { abbrev: \"hp\", name: \"horsepower\" },\n { abbrev: \"GW\", name: \"gigawatt\" },\n] as const;\n\nexport const FREQUENCY_METRICS_LOOKUP = [\n { abbrev: \"Hz\", name: \"hertz\" },\n { abbrev: \"kHz\", name: \"kilohertz\" },\n { abbrev: \"MHz\", name: \"megahertz\" },\n { abbrev: \"GHz\", name: \"gigahertz\" },\n { abbrev: \"THz\", name: \"terahertz\" },\n] as const;\n\nexport const VOLTAGE_METRICS_LOOKUP = [\n { abbrev: \"V\", name: \"volt\" },\n { abbrev: \"kV\", name: \"kilovolt\" },\n { abbrev: \"mV\", name: \"millivolt\" },\n { abbrev: \"µV\", name: \"microvolt\" },\n] as const;\n\nexport const CURRENT_METRICS_LOOKUP = [\n { abbrev: \"A\", name: \"ampere\" },\n { abbrev: \"mA\", name: \"milliampere\" },\n { abbrev: \"µA\", name: \"microampere\" },\n { abbrev: \"kA\", name: \"kiloampere\" },\n] as const;\n\nexport const RESISTANCE_METRICS_LOOKUP = [\n { abbrev: \"Ω\", name: \"ohm\" },\n { abbrev: \"kΩ\", name: \"kiloohm\" },\n { abbrev: \"MΩ\", name: \"megaohm\" },\n] as const;\n\nexport const LUMINOSITY_METRICS_LOOKUP = [\n { abbrev: \"cd\", name: \"candela\" },\n { abbrev: \"lm\", name: \"lumen\" },\n { abbrev: \"lx\", name: \"lux\" },\n] as const;\n\nexport const AREA_METRICS_LOOKUP = [\n { abbrev: \"m²\", name: \"square meter\" },\n { abbrev: \"cm²\", name: \"square centimeter\" },\n { abbrev: \"mm²\", name: \"square millimeter\" },\n { abbrev: \"km²\", name: \"square kilometer\" },\n { abbrev: \"ft²\", name: \"square foot\" },\n { abbrev: \"in²\", name: \"square inch\" },\n { abbrev: \"acre\", name: \"acre\" },\n { abbrev: \"ha\", name: \"hectare\" },\n] as const;\n","/**\n * A paired bracketing strategy which matches on\n * bracket characters:\n *\n * - parenthesis: `(` -> `)`\n * - square brackets: `[` -> `]`\n * - angle brackets: `<` -> `>`\n * - and curlies: `{` -> `}`\n */\nexport const BRACKET_NESTING = {\n \"{\": \"}\",\n \"[\": \"]\",\n \"<\": \">\",\n \"(\": \")\"\n} as const;\n\n/**\n * A paired bracketing strategy which includes the three\n * main quotation symbols:\n *\n * - single quote (**'**),\n * - double quote (**\"**),\n * - and backtick (**`**)\n */\nexport const QUOTE_NESTING = {\n \"\\\"\": \"\\\"\",\n \"'\": \"'\",\n \"`\": \"`\"\n} as const;\n\n/**\n * A paired bracketing strategy which includes:\n *\n * - all bracket characters\n * - all quote characters\n */\nexport const BRACKET_AND_QUOTE_NESTING = {\n \"{\": \"}\",\n \"[\": \"]\",\n \"<\": \">\",\n \"(\": \")\",\n \"\\\"\": \"\\\"\",\n \"'\": \"'\",\n \"`\": \"`\"\n} as const;\n","export const IPv6 = {\n Loopback: \"::1/128\",\n Multicast: \"ff00::/8\",\n IPv4MappedAddresses: \"::FFFF:0:0/96\",\n Unicast: \"fe80::/10\",\n DocumentationAddresses: \"2001:db8::/32\",\n} as const;\n\nexport const IPv4 = {\n Loopback: \"127.0.0.1\",\n} as const;\n\nexport const NETWORK_PROTOCOL_INSECURE = [\n \"http\",\n \"ftp\",\n \"ws\",\n \"dns\",\n \"telnet\",\n \"imap\",\n \"pop3\",\n \"smtp\",\n] as const;\n\nexport const NETWORK_PROTOCOL_SECURE = [\n \"https\",\n \"sftp\",\n \"wss\",\n \"sdns\",\n \"ssh\",\n\n] as const;\n\nexport const NETWORK_PROTOCOL = [\n ...NETWORK_PROTOCOL_INSECURE,\n ...NETWORK_PROTOCOL_SECURE,\n] as const;\n\n/**\n * Lookup of protocols which provides a tuple of: `[insecure,secure]`\n */\nexport const NETWORK_PROTOCOL_LOOKUP = {\n http: [\"http\", \"https\"],\n ftp: [\"ftp\", \"sftp\"],\n file: [\"\", \"file\"],\n ws: [\"ws\", \"wss\"],\n ssh: [\"\", \"ssh\"],\n scp: [\"\", \"scp\"],\n telnet: [\"telnet\", \"\"],\n dns: [\"dns\", \"sdns\"],\n} as const;\n\nexport const PROTOCOL_DEFAULT_PORTS = {\n http: 80,\n https: 443,\n ws: 80,\n wss: 443,\n ssh: 22,\n telnet: 23,\n dns: 53,\n sdns: 853,\n smtp: 25,\n imap: 142,\n pop3: 110,\n ftp: 21,\n sftp: 22,\n} as const satisfies Record<typeof NETWORK_PROTOCOL[number], number>;\n\n/**\n * **TLD**\n *\n * Top level domains in DNS. This is not a comprehensive list but\n * takes the core ones and adds in some popular choices.\n */\nexport const TOP_LEVEL_DOMAINS = [\n \"com\",\n \"org\",\n \"net\",\n \"int\",\n \"edu\",\n \"gov\",\n \"io\",\n \"mil\",\n \"arpa\",\n \"academy\",\n \"agency\",\n \"analytics\",\n \"app\",\n \"art\",\n \"bet\",\n \"beer\",\n \"book\",\n \"coffee\",\n \"dot\",\n \"doctor\",\n \"dog\",\n \"family\",\n \"game\",\n \"guide\",\n \"guru\",\n \"info\",\n \"inc\",\n \"news\",\n \"new\",\n \"ninja\",\n \"now\",\n \"online\",\n \"page\",\n \"photos\",\n \"place\",\n \"pub\",\n \"room\",\n \"show\",\n \"technology\",\n \"tel\",\n \"tech\",\n \"team\",\n \"talk\",\n \"travel\",\n \"website\",\n \"work\",\n \"works\",\n \"wow\",\n \"uk\",\n \"us\",\n \"fr\",\n \"de\",\n \"eu\",\n \"london\",\n] as const;\n","import type { Constant } from \"inferred-types/constants\";\n\n/**\n * **createConstant**(kind)\n *\n * Creates a `Constant<TKind>` type.\n */\nfunction createConstant<TKind extends string>(kind: TKind) {\n return {\n _type: \"Constant\",\n kind,\n } as Constant<TKind>;\n}\n\n/**\n * **Never**\n *\n * A runtime constant that is meant to represent the `never` type.\n *\n * **Related:** you can use the `never()` runtime utility to give a\n * runtime value but force it's type to `never`.\n */\nexport const Never = createConstant(\"never\") as never;\n","export const US_NEWS = [\n { company: \"New York Times\", baseUrls: [\"www.nytimes.com\"] },\n { company: \"CNN\", baseUrls: [\"www.cnn.com\"] },\n { company: \"Fox News\", baseUrls: [\"www.foxnews.com\"] },\n { company: \"NBC News\", baseUrls: [\"www.nbcnews.com\", \"www.msnbc.com\"] },\n { company: \"ABC News\", baseUrls: [\"abcnews.go.com\"] },\n { company: \"The Washington Post\", baseUrls: [\"www.washingtonpost.com\"] },\n { company: \"USA Today\", baseUrls: [\"www.usatoday.com\"] },\n { company: \"Bloomberg\", baseUrls: [\"www.bloomberg.com\"] },\n { company: \"NPR\", baseUrls: [\"www.npr.org\"] },\n { company: \"CBS News\", baseUrls: [\"www.cbsnews.com\"] },\n { company: \"The Wall Street Journal\", baseUrls: [\"www.wsj.com\"] },\n { company: \"Associated Press (AP)\", baseUrls: [\"www.apnews.com\", \"www.ap.org\"] },\n { company: \"Reuters\", baseUrls: [\"www.reuters.com\"] },\n { company: \"Newsweek\", baseUrls: [\"www.newsweek.com\"] },\n { company: \"Politico\", baseUrls: [\"www.politico.com\"] },\n { company: \"The Atlantic\", baseUrls: [\"www.theatlantic.com\"] },\n { company: \"Nexstar Media Group\", baseUrls: [\"www.nexstar.tv\"] },\n { company: \"PBS News\", baseUrls: [\"www.pbs.org\"] },\n { company: \"HuffPost\", baseUrls: [\"www.huffpost.com\"] },\n { company: \"The Boston Globe\", baseUrls: [\"www.bostonglobe.com\"] },\n] as const;\n\nexport const UK_NEWS = [\n { company: \"BBC\", baseUrls: [\"www.bbc.co.uk\", \"www.bbc.com\"] },\n { company: \"The Guardian\", baseUrls: [\"www.theguardian.com/uk\"] },\n { company: \"The Daily Mail\", baseUrls: [\"www.dailymail.co.uk\"] },\n { company: \"The Sun\", baseUrls: [\"www.thesun.co.uk\"] },\n { company: \"The Times\", baseUrls: [\"www.thetimes.co.uk\"] },\n { company: \"Sky News\", baseUrls: [\"news.sky.com\"] },\n { company: \"The Telegraph\", baseUrls: [\"www.telegraph.co.uk\"] },\n { company: \"ITV News\", baseUrls: [\"www.itv.com/news\"] },\n { company: \"Financial Times\", baseUrls: [\"www.ft.com\"] },\n { company: \"Metro\", baseUrls: [\"www.metro.co.uk\"] },\n { company: \"The Independent\", baseUrls: [\"www.independent.co.uk\"] },\n { company: \"Evening Standard\", baseUrls: [\"www.standard.co.uk\"] },\n { company: \"Daily Mirror\", baseUrls: [\"www.mirror.co.uk\"] },\n { company: \"Channel 4 News\", baseUrls: [\"www.channel4.com/news\"] },\n { company: \"LBC\", baseUrls: [\"www.lbc.co.uk\"] },\n { company: \"Daily Express\", baseUrls: [\"www.express.co.uk\"] },\n { company: \"Birmingham Mail\", baseUrls: [\"www.birminghammail.co.uk\"] },\n { company: \"Manchester Evening News\", baseUrls: [\"www.manchestereveningnews.co.uk\"] },\n { company: \"The Scotsman\", baseUrls: [\"www.scotsman.com\"] },\n { company: \"Daily Record\", baseUrls: [\"www.dailyrecord.co.uk\"] },\n] as const;\n\nexport const GERMAN_NEWS = [\n { company: \"BILD\", baseUrls: [\"www.bild.de\"] },\n { company: \"Die Zeit\", baseUrls: [\"www.zeit.de\"] },\n { company: \"Frankfurter Allgemeine Zeitung\", baseUrls: [\"www.faz.net\"] },\n { company: \"Süddeutsche Zeitung\", baseUrls: [\"www.sueddeutsche.de\"] },\n { company: \"Der Spiegel\", baseUrls: [\"www.spiegel.de\"] },\n { company: \"Die Welt\", baseUrls: [\"www.welt.de\"] },\n { company: \"Tagesschau\", baseUrls: [\"www.tagesschau.de\"] },\n { company: \"t-online\", baseUrls: [\"www.t-online.de\"] },\n { company: \"n-tv\", baseUrls: [\"www.n-tv.de\"] },\n { company: \"Handelsblatt\", baseUrls: [\"www.handelsblatt.com\"] },\n { company: \"Focus Online\", baseUrls: [\"www.focus.de\"] },\n { company: \"Frankfurter Rundschau\", baseUrls: [\"www.fr.de\", \"www.fr-online.de\"] },\n { company: \"taz - die tageszeitung\", baseUrls: [\"www.taz.de\"] },\n { company: \"Der Tagesspiegel\", baseUrls: [\"www.tagesspiegel.de\"] },\n { company: \"Rheinische Post\", baseUrls: [\"www.rp-online.de\"] },\n { company: \"Express\", baseUrls: [\"www.express.de\"] },\n { company: \"Münchner Merkur\", baseUrls: [\"www.merkur.de\"] },\n { company: \"Stuttgarter Zeitung\", baseUrls: [\"www.stuttgarter-zeitung.de\"] },\n { company: \"Hamburger Abendblatt\", baseUrls: [\"www.abendblatt.de\"] },\n { company: \"Deutsche Welle\", baseUrls: [\"www.dw.com\"] },\n] as const;\n\nexport const FRENCH_NEWS = [\n { company: \"Le Figaro\", baseUrls: [\"www.lefigaro.fr\"] },\n { company: \"Le Monde\", baseUrls: [\"www.lemonde.fr\"] },\n { company: \"France 24\", baseUrls: [\"www.france24.com\"] },\n { company: \"Libération\", baseUrls: [\"www.liberation.fr\"] },\n { company: \"Les Echos\", baseUrls: [\"www.lesechos.fr\"] },\n { company: \"Ouest-France\", baseUrls: [\"www.ouest-france.fr\"] },\n { company: \"Le Parisien\", baseUrls: [\"www.leparisien.fr\"] },\n { company: \"Mediapart\", baseUrls: [\"www.mediapart.fr\"] },\n { company: \"L'Express\", baseUrls: [\"www.lexpress.fr\"] },\n { company: \"La Croix\", baseUrls: [\"www.la-croix.com\"] },\n { company: \"20 Minutes\", baseUrls: [\"www.20minutes.fr\"] },\n { company: \"Courrier International\", baseUrls: [\"www.courrierinternational.com\"] },\n { company: \"Le Point\", baseUrls: [\"www.lepoint.fr\"] },\n { company: \"Marianne\", baseUrls: [\"www.marianne.net\"] },\n { company: \"BFM TV\", baseUrls: [\"www.bfmtv.com\"] },\n { company: \"RTL France\", baseUrls: [\"www.rtl.fr\"] },\n { company: \"Charlie Hebdo\", baseUrls: [\"www.charliehebdo.fr\"] },\n { company: \"Challenges\", baseUrls: [\"www.challenges.fr\"] },\n { company: \"Télérama\", baseUrls: [\"www.telerama.fr\"] },\n { company: \"L'Obs\", baseUrls: [\"www.nouvelobs.com\"] },\n] as const;\n\nexport const CANADIAN_NEWS = [\n { company: \"CBC News\", baseUrls: [\"www.cbc.ca\"] },\n { company: \"CTV News\", baseUrls: [\"www.ctvnews.ca\"] },\n { company: \"The Globe and Mail\", baseUrls: [\"www.theglobeandmail.com\"] },\n { company: \"Global News\", baseUrls: [\"www.globalnews.ca\"] },\n { company: \"Toronto Star\", baseUrls: [\"www.thestar.com\"] },\n { company: \"National Post\", baseUrls: [\"www.nationalpost.com\"] },\n { company: \"La Presse\", baseUrls: [\"www.lapresse.ca\"] },\n { company: \"Radio-Canada\", baseUrls: [\"ici.radio-canada.ca\"] },\n { company: \"The Canadian Press\", baseUrls: [\"www.thecanadianpress.com\"] },\n { company: \"Financial Post\", baseUrls: [\"financialpost.com\"] },\n { company: \"The Weather Network\", baseUrls: [\"www.theweathernetwork.com\"] },\n { company: \"Le Devoir\", baseUrls: [\"www.ledevoir.com\"] },\n { company: \"TVA Nouvelles\", baseUrls: [\"www.tvanouvelles.ca\"] },\n { company: \"Journal de Montréal\", baseUrls: [\"www.journaldemontreal.com\"] },\n { company: \"CityNews\", baseUrls: [\"www.citynews.ca\"] },\n { company: \"BNN Bloomberg\", baseUrls: [\"www.bnnbloomberg.ca\"] },\n { company: \"The Hamilton Spectator\", baseUrls: [\"www.thespec.com\"] },\n { company: \"Ottawa Citizen\", baseUrls: [\"ottawacitizen.com\"] },\n { company: \"Windsor Star\", baseUrls: [\"windsorstar.com\"] },\n { company: \"Edmonton Journal\", baseUrls: [\"edmontonjournal.com\"] },\n] as const;\n\nexport const DUTCH_NEWS = [\n { company: \"Algemeen Dagblad (AD)\", baseUrls: [\"www.ad.nl\"] },\n { company: \"NOS\", baseUrls: [\"www.nos.nl\"] },\n { company: \"De Telegraaf\", baseUrls: [\"www.telegraaf.nl\"] },\n { company: \"NU.nl\", baseUrls: [\"www.nu.nl\"] },\n { company: \"Volkskrant\", baseUrls: [\"www.volkskrant.nl\"] },\n { company: \"NRC Handelsblad\", baseUrls: [\"www.nrc.nl\"] },\n { company: \"Trouw\", baseUrls: [\"www.trouw.nl\"] },\n { company: \"Het Parool\", baseUrls: [\"www.parool.nl\"] },\n { company: \"RTL Nieuws\", baseUrls: [\"www.rtlnieuws.nl\"] },\n { company: \"BNR Nieuwsradio\", baseUrls: [\"www.bnr.nl\"] },\n { company: \"Emerce\", baseUrls: [\"www.emerce.nl\"] },\n { company: \"VPRO\", baseUrls: [\"www.vpro.nl\"] },\n { company: \"De Gelderlander\", baseUrls: [\"www.gelderlander.nl\"] },\n { company: \"Friesch Dagblad\", baseUrls: [\"www.frieschdagblad.nl\"] },\n { company: \"De Stentor\", baseUrls: [\"www.destentor.nl\"] },\n { company: \"Metro Nieuws\", baseUrls: [\"www.metronieuws.nl\"] },\n { company: \"ANP\", baseUrls: [\"www.anp.nl\"] },\n { company: \"Dagblad van het Noorden\", baseUrls: [\"www.dvhn.nl\"] },\n { company: \"Reformatorisch Dagblad\", baseUrls: [\"www.rd.nl\"] },\n { company: \"Financieele Dagblad\", baseUrls: [\"www.fd.nl\"] },\n] as const;\n\nexport const ITALIAN_NEWS = [\n { company: \"ANSA\", baseUrls: [\"www.ansa.it\", \"www.ansamed.info\"] },\n { company: \"Corriere della Sera\", baseUrls: [\"www.corriere.it\"] },\n { company: \"la Repubblica\", baseUrls: [\"www.repubblica.it\"] },\n { company: \"Il Sole 24 Ore\", baseUrls: [\"www.ilsole24ore.com\"] },\n { company: \"La Stampa\", baseUrls: [\"www.lastampa.it\"] },\n { company: \"Il Messaggero\", baseUrls: [\"www.ilmessaggero.it\"] },\n { company: \"Il Giornale\", baseUrls: [\"www.ilgiornale.it\"] },\n { company: \"Avvenire\", baseUrls: [\"www.avvenire.it\"] },\n { company: \"Il Fatto Quotidiano\", baseUrls: [\"www.ilfattoquotidiano.it\"] },\n { company: \"La Nazione\", baseUrls: [\"www.lanazione.it\"] },\n { company: \"TgCom24\", baseUrls: [\"www.tgcom24.mediaset.it\"] },\n { company: \"Sky TG24\", baseUrls: [\"tg24.sky.it\"] },\n { company: \"Rai News\", baseUrls: [\"www.rainews.it\"] },\n { company: \"Gazzetta dello Sport\", baseUrls: [\"www.gazzetta.it\"] },\n { company: \"Il Resto del Carlino\", baseUrls: [\"www.ilrestodelcarlino.it\"] },\n { company: \"Il Mattino\", baseUrls: [\"www.ilmattino.it\"] },\n { company: \"Il Secolo XIX\", baseUrls: [\"www.ilsecoloxix.it\"] },\n { company: \"Italia Oggi\", baseUrls: [\"www.italiaoggi.it\"] },\n { company: \"Libero\", baseUrls: [\"www.liberoquotidiano.it\"] },\n { company: \"Il Tirreno\", baseUrls: [\"www.iltirreno.it\"] },\n] as const;\n\nexport const BELGIUM_NEWS = [\n { company: \"Het Laatste Nieuws (HLN)\", baseUrls: [\"www.hln.be\"] },\n { company: \"Nieuwsblad\", baseUrls: [\"www.nieuwsblad.be\"] },\n { company: \"RTBF\", baseUrls: [\"www.rtbf.be\"] },\n { company: \"Sudinfo\", baseUrls: [\"www.sudinfo.be\"] },\n { company: \"7sur7\", baseUrls: [\"www.7sur7.be\"] },\n { company: \"Le Soir\", baseUrls: [\"www.lesoir.be\"] },\n { company: \"De Standaard\", baseUrls: [\"www.standaard.be\"] },\n { company: \"VRT NWS\", baseUrls: [\"www.vrt.be\"] },\n { company: \"La Libre\", baseUrls: [\"www.lalibre.be\"] },\n { company: \"Gazet van Antwerpen\", baseUrls: [\"www.gva.be\"] },\n { company: \"Het Belang van Limburg\", baseUrls: [\"www.hbvl.be\"] },\n { company: \"De Morgen\", baseUrls: [\"www.demorgen.be\"] },\n { company: \"L'Avenir\", baseUrls: [\"www.lavenir.net\"] },\n { company: \"The Brussels Times\", baseUrls: [\"www.brusselstimes.com\"] },\n { company: \"Metro Belgique\", baseUrls: [\"nl.metrotime.be\"] },\n { company: \"Sudpresse\", baseUrls: [\"www.sudpress.be\"] },\n { company: \"Flamish Radio and TV Broadcasting Organization (VRT)\", baseUrls: [\"www.vrt.be\"] },\n { company: \"Knack\", baseUrls: [\"www.knack.be\"] },\n { company: \"De Tijd\", baseUrls: [\"www.tijd.be\"] },\n { company: \"BX1\", baseUrls: [\"www.bx1.be\"] },\n] as const;\n\nexport const MEXICAN_NEWS = [\n { company: \"Televisa\", baseUrls: [\"www.televisa.news\"] },\n { company: \"El Universal\", baseUrls: [\"www.eluniversal.com.mx\"] },\n { company: \"Milenio\", baseUrls: [\"www.milenio.com\"] },\n { company: \"Excélsior\", baseUrls: [\"www.excelsior.com.mx\"] },\n { company: \"Reforma\", baseUrls: [\"www.reforma.com\"] },\n { company: \"La Jornada\", baseUrls: [\"www.jornada.com.mx\"] },\n { company: \"El Financiero\", baseUrls: [\"www.elfinanciero.com.mx\"] },\n { company: \"Proceso\", baseUrls: [\"www.proceso.com.mx\"] },\n { company: \"SDP Noticias\", baseUrls: [\"www.sdpnoticias.com\"] },\n { company: \"Diario de Yucatán\", baseUrls: [\"www.yucatan.com.mx\"] },\n { company: \"El Economista\", baseUrls: [\"www.eleconomista.com.mx\"] },\n { company: \"El Heraldo de México\", baseUrls: [\"www.heraldodemexico.com.mx\"] },\n { company: \"Noticieros Televisa\", baseUrls: [\"noticieros.televisa.com\"] },\n { company: \"Expansión\", baseUrls: [\"expansion.mx\"] },\n { company: \"La Razón\", baseUrls: [\"www.razon.com.mx\"] },\n { company: \"Noroeste\", baseUrls: [\"www.noroeste.com.mx\"] },\n { company: \"Uniradio Noticias\", baseUrls: [\"www.uniradionoticias.com\"] },\n { company: \"El Imparcial\", baseUrls: [\"www.elimparcial.com\"] },\n { company: \"Publimetro México\", baseUrls: [\"www.publimetro.com.mx\"] },\n { company: \"Notimex\", baseUrls: [\"www.notimex.gob.mx\"] },\n] as const;\n\nexport const SPANISH_NEWS = [\n { company: \"El País\", baseUrls: [\"www.elpais.com\"] },\n { company: \"El Mundo\", baseUrls: [\"www.elmundo.es\"] },\n { company: \"ABC\", baseUrls: [\"www.abc.es\"] },\n { company: \"La Vanguardia\", baseUrls: [\"www.lavanguardia.com\"] },\n { company: \"El Confidencial\", baseUrls: [\"www.elconfidencial.com\"] },\n { company: \"La Razón\", baseUrls: [\"www.larazon.es\"] },\n { company: \"20 Minutos\", baseUrls: [\"www.20minutos.es\"] },\n { company: \"Agencia EFE\", baseUrls: [\"www.efe.com\"] },\n { company: \"Europa Press\", baseUrls: [\"www.europapress.es\"] },\n { company: \"Diario AS\", baseUrls: [\"www.as.com\"] },\n { company: \"Mundo Deportivo\", baseUrls: [\"www.mundodeportivo.com\"] },\n { company: \"El Periódico\", baseUrls: [\"www.elperiodico.com\"] },\n { company: \"Cinco Días\", baseUrls: [\"www.cincodias.com\"] },\n { company: \"Expansión\", baseUrls: [\"www.expansion.com\"] },\n { company: \"La Información\", baseUrls: [\"www.lainformacion.com\"] },\n { company: \"OK Diario\", baseUrls: [\"www.okdiario.com\"] },\n { company: \"Heraldo de Aragón\", baseUrls: [\"www.heraldo.es\"] },\n { company: \"Faro de Vigo\", baseUrls: [\"www.farodevigo.es\"] },\n { company: \"El Correo\", baseUrls: [\"www.elcorreo.com\"] },\n { company: \"Diario Sur\", baseUrls: [\"www.diariosur.es\"] },\n] as const;\n\nexport const INDIAN_NEWS = [\n { company: \"The Times of India\", baseUrls: [\"timesofindia.indiatimes.com\"] },\n { company: \"The Hindu\", baseUrls: [\"www.thehindu.com\"] },\n { company: \"Hindustan Times\", baseUrls: [\"www.hindustantimes.com\"] },\n { company: \"NDTV\", baseUrls: [\"www.ndtv.com\"] },\n { company: \"India Today\", baseUrls: [\"www.indiatoday.in\"] },\n { company: \"Zee News\", baseUrls: [\"zeenews.india.com\"] },\n { company: \"Indian Express\", baseUrls: [\"indianexpress.com\"] },\n { company: \"The Economic Times\", baseUrls: [\"economictimes.indiatimes.com\"] },\n { company: \"Deccan Herald\", baseUrls: [\"www.deccanherald.com\"] },\n { company: \"DNA India\", baseUrls: [\"www.dnaindia.com\"] },\n { company: \"The Print\", baseUrls: [\"theprint.in\"] },\n { company: \"News18\", baseUrls: [\"www.news18.com\"] },\n { company: \"Scroll.in\", baseUrls: [\"scroll.in\"] },\n { company: \"Asian News International (ANI)\", baseUrls: [\"www.aninews.in\"] },\n { company: \"Outlook India\", baseUrls: [\"www.outlookindia.com\"] },\n { company: \"Business Standard\", baseUrls: [\"www.business-standard.com\"] },\n { company: \"Mint\", baseUrls: [\"www.livemint.com\"] },\n { company: \"OneIndia\", baseUrls: [\"www.oneindia.com\"] },\n { company: \"Quint\", baseUrls: [\"www.thequint.com\"] },\n { company: \"Free Press Journal\", baseUrls: [\"www.freepressjournal.in\"] },\n] as const;\n\nexport const CHINESE_NEWS = [\n { company: \"Xinhua News Agency\", baseUrls: [\"www.xinhuanet.com\"] },\n { company: \"China Central Television (CCTV)\", baseUrls: [\"www.cctv.com\"] },\n { company: \"China Daily\", baseUrls: [\"www.chinadaily.com.cn\"] },\n { company: \"CGTN (China Global Television Network)\", baseUrls: [\"www.cgtn.com\"] },\n { company: \"People's Daily\", baseUrls: [\"www.people.cn\"] },\n { company: \"Global Times\", baseUrls: [\"www.globaltimes.cn\"] },\n { company: \"South China Morning Post\", baseUrls: [\"www.scmp.com\"] },\n { company: \"Shanghai Daily\", baseUrls: [\"www.shanghaidaily.com\"] },\n { company: \"China News Service\", baseUrls: [\"www.ecns.cn\"] },\n { company: \"Caixin\", baseUrls: [\"www.caixinglobal.com\"] },\n { company: \"The Paper\", baseUrls: [\"www.thepaper.cn\"] },\n { company: \"Yicai Global\", baseUrls: [\"www.yicaiglobal.com\"] },\n { company: \"Economic Daily\", baseUrls: [\"www.ce.cn\"] },\n { company: \"21st Century Business Herald\", baseUrls: [\"www.21jingji.com\"] },\n { company: \"Beijing Review\", baseUrls: [\"www.bjreview.com\"] },\n { company: \"China Economic Net\", baseUrls: [\"www.ce.cn\"] },\n { company: \"Tencent News\", baseUrls: [\"news.qq.com\"] },\n { company: \"Sina News\", baseUrls: [\"news.sina.com.cn\"] },\n { company: \"NetEase News\", baseUrls: [\"news.163.com\"] },\n { company: \"Phoenix TV\", baseUrls: [\"www.ifeng.com\"] },\n] as const;\n\n/** news sites in Denmark */\nexport const DANISH_NEWS = [\n { company: \"Politiken\", baseUrls: [\"www.politiken.dk\"] },\n { company: \"Berlingske\", baseUrls: [\"www.berlingske.dk\"] },\n { company: \"Jyllands-Posten\", baseUrls: [\"jyllands-posten.dk\"] },\n { company: \"Ekstra Bladet\", baseUrls: [\"ekstrabladet.dk\"] },\n { company: \"Information\", baseUrls: [\"www.information.dk\"] },\n { company: \"BT\", baseUrls: [\"www.bt.dk\"] },\n { company: \"Weekendavisen\", baseUrls: [\"www.weekendavisen.dk\"] },\n { company: \"Fyens Stiftstidende\", baseUrls: [\"fyens.dk\"] },\n { company: \"Kristeligt Dagblad\", baseUrls: [\"www.kristeligt-dagblad.dk\"] },\n { company: \"Copenhagen Post\", baseUrls: [\"cphpost.dk\"] },\n { company: \"Nordjyske Stiftstidende\", baseUrls: [\"nordjyske.dk\"] },\n { company: \"Århus Stiftstidende\", baseUrls: [\"stiften.dk\"] },\n { company: \"Dagbladet Børsen\", baseUrls: [\"borsen.dk\"] },\n { company: \"Lokalavisen\", baseUrls: [\"lokalavisen.dk\"] },\n { company: \"TV2 Nyheder\", baseUrls: [\"tv2.dk\"] },\n { company: \"DR Nyheder\", baseUrls: [\"dr.dk\"] },\n { company: \"Avisen Danmark\", baseUrls: [\"avisen.dk\"] },\n { company: \"Fagbladet 3F\", baseUrls: [\"fagbladet3f.dk\"] },\n { company: \"Herning Folkeblad\", baseUrls: [\"herningfolkeblad.dk\"] },\n { company: \"Midtjyllands Avis\", baseUrls: [\"midtjyllandsavis.dk\"] },\n] as const;\n\nexport const SWISS_NEWS = [\n { company: \"Neue Zürcher Zeitung (NZZ)\", baseUrls: [\"www.nzz.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Swissinfo\", baseUrls: [\"www.swissinfo.ch\"], type: [\"digital-first\"] },\n { company: \"20 Minuten\", baseUrls: [\"www.20min.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Blick\", baseUrls: [\"www.blick.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Le Temps\", baseUrls: [\"www.letemps.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Tages-Anzeiger\", baseUrls: [\"www.tagesanzeiger.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"SRF News\", baseUrls: [\"www.srf.ch\"], type: [\"television\", \"radio\", \"digital\"] },\n { company: \"Luzerner Zeitung\", baseUrls: [\"www.luzernerzeitung.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"La Tribune de Genève\", baseUrls: [\"www.tdg.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Aargauer Zeitung\", baseUrls: [\"www.aargauerzeitung.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"24 Heures\", baseUrls: [\"www.24heures.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Radio Télévision Suisse (RTS)\", baseUrls: [\"www.rts.ch\"], type: [\"television\", \"radio\", \"digital\"] },\n { company: \"Der Bund\", baseUrls: [\"www.derbund.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Schweizer Radio und Fernsehen (SRF)\", baseUrls: [\"www.srf.ch\"], type: [\"television\", \"radio\", \"digital\"] },\n { company: \"Basler Zeitung\", baseUrls: [\"www.bazonline.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Handelszeitung\", baseUrls: [\"www.handelszeitung.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Watson\", baseUrls: [\"www.watson.ch\"], type: [\"digital-first\"] },\n { company: \"Le Matin\", baseUrls: [\"www.lematin.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"La Liberté\", baseUrls: [\"www.laliberte.ch\"], type: [\"newspaper\", \"digital\"] },\n { company: \"The Swiss Times\", baseUrls: [\"www.theswisstimes.ch\"], type: [\"digital-first\"] },\n] as const;\n\nexport const AUSTRALIAN_NEWS = [\n { company: \"ABC News\", baseUrls: [\"www.abc.net.au\"], type: [\"television\", \"radio\", \"digital\"] },\n { company: \"The Sydney Morning Herald\", baseUrls: [\"www.smh.com.au\"], type: [\"newspaper\", \"digital\"] },\n { company: \"The Australian\", baseUrls: [\"www.theaustralian.com.au\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Herald Sun\", baseUrls: [\"www.heraldsun.com.au\"], type: [\"newspaper\", \"digital\"] },\n { company: \"9News\", baseUrls: [\"www.9news.com.au\"], type: [\"television\", \"digital\"] },\n { company: \"SBS News\", baseUrls: [\"www.sbs.com.au\"], type: [\"television\", \"digital\", \"multicultural\"] },\n { company: \"The Age\", baseUrls: [\"www.theage.com.au\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Sky News Australia\", baseUrls: [\"www.skynews.com.au\"], type: [\"television\", \"digital\"] },\n { company: \"Australian Financial Review\", baseUrls: [\"www.afr.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"news.com.au\", baseUrls: [\"www.news.com.au\"], type: [\"digital-first\"] },\n { company: \"The Courier-Mail\", baseUrls: [\"www.couriermail.com.au\"], type: [\"newspaper\", \"digital\"] },\n { company: \"7NEWS\", baseUrls: [\"7news.com.au\"], type: [\"television\", \"digital\"] },\n { company: \"The West Australian\", baseUrls: [\"www.thewest.com.au\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Daily Telegraph\", baseUrls: [\"www.dailytelegraph.com.au\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Guardian Australia\", baseUrls: [\"www.theguardian.com/au\"], type: [\"digital-first\"] },\n { company: \"Crikey\", baseUrls: [\"www.crikey.com.au\"], type: [\"digital-first\", \"independent\"] },\n { company: \"AAP (Australian Associated Press)\", baseUrls: [\"www.aap.com.au\"], type: [\"news agency\", \"digital\"] },\n { company: \"NT News\", baseUrls: [\"www.ntnews.com.au\"], type: [\"newspaper\", \"digital\"] },\n { company: \"The Canberra Times\", baseUrls: [\"www.canberratimes.com.au\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Brisbane Times\", baseUrls: [\"www.brisbanetimes.com.au\"], type: [\"digital-first\"] },\n] as const;\n\nexport const JAPANESE_NEWS = [\n { company: \"The Asahi Shimbun\", baseUrls: [\"www.asahi.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Yomiuri Shimbun\", baseUrls: [\"www.yomiuri.co.jp\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Nikkei\", baseUrls: [\"www.nikkei.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Mainichi Shimbun\", baseUrls: [\"mainichi.jp\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Kyodo News\", baseUrls: [\"www.kyodonews.jp\"], type: [\"news agency\", \"digital\"] },\n { company: \"Japan Times\", baseUrls: [\"www.japantimes.co.jp\"], type: [\"newspaper\", \"digital\"] },\n { company: \"NHK\", baseUrls: [\"www.nhk.or.jp\"], type: [\"television\", \"radio\", \"digital\"] },\n { company: \"Fuji News Network (FNN)\", baseUrls: [\"www.fnn.jp\"], type: [\"television\", \"digital\"] },\n { company: \"Sankei Shimbun\", baseUrls: [\"www.sankei.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Toyo Keizai\", baseUrls: [\"www.toyokeizai.net\"], type: [\"digital\", \"business magazine\"] },\n { company: \"Hokkaido Shimbun\", baseUrls: [\"www.hokkaido-np.co.jp\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Shizuoka Shimbun\", baseUrls: [\"www.at-s.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Tokyo Shimbun\", baseUrls: [\"www.tokyo-np.co.jp\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Yahoo Japan News\", baseUrls: [\"news.yahoo.co.jp\"], type: [\"digital-first\"] },\n { company: \"TBS News\", baseUrls: [\"news.tbs.co.jp\"], type: [\"television\", \"digital\"] },\n { company: \"Nippon TV News 24 Japan\", baseUrls: [\"www.news24.jp\"], type: [\"television\", \"digital\"] },\n { company: \"Jiji Press\", baseUrls: [\"www.jiji.com\"], type: [\"news agency\", \"digital\"] },\n { company: \"TV Asahi News\", baseUrls: [\"news.tv-asahi.co.jp\"], type: [\"television\", \"digital\"] },\n { company: \"WOWOW Prime News\", baseUrls: [\"www.wowow.co.jp\"], type: [\"television\", \"digital\"] },\n { company: \"Kansai Telecasting Corporation (KTV)\", baseUrls: [\"www.ktv.jp\"], type: [\"television\", \"digital\"] },\n] as const;\n\nexport const SOUTH_KOREAN_NEWS = [\n { company: \"Yonhap News Agency\", baseUrls: [\"www.yonhapnews.co.kr\"], type: [\"news agency\", \"digital\"] },\n { company: \"The Korea Herald\", baseUrls: [\"www.koreaherald.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"The Korea Times\", baseUrls: [\"www.koreatimes.co.kr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Chosun Ilbo\", baseUrls: [\"www.chosun.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"JoongAng Ilbo\", baseUrls: [\"www.joongang.co.kr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Dong-A Ilbo\", baseUrls: [\"www.donga.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"MBC News\", baseUrls: [\"www.imnews.imbc.com\"], type: [\"television\", \"digital\"] },\n { company: \"SBS News\", baseUrls: [\"news.sbs.co.kr\"], type: [\"television\", \"digital\"] },\n { company: \"KBS News\", baseUrls: [\"news.kbs.co.kr\"], type: [\"television\", \"radio\", \"digital\"] },\n { company: \"Hankyoreh\", baseUrls: [\"english.hani.co.kr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Maeil Business Newspaper\", baseUrls: [\"www.mk.co.kr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"MoneyToday\", baseUrls: [\"www.mt.co.kr\"], type: [\"digital-first\", \"business\"] },\n { company: \"Seoul Shinmun\", baseUrls: [\"www.seoul.co.kr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"OhmyNews\", baseUrls: [\"www.ohmynews.com\"], type: [\"digital-first\"] },\n { company: \"News1 Korea\", baseUrls: [\"www.news1.kr\"], type: [\"news agency\", \"digital\"] },\n { company: \"Asia Business Daily\", baseUrls: [\"www.asiae.co.kr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Herald Business\", baseUrls: [\"biz.heraldcorp.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"eDaily\", baseUrls: [\"www.edaily.co.kr\"], type: [\"digital-first\", \"business\"] },\n { company: \"Seoul Economic Daily\", baseUrls: [\"www.sedaily.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"JTBC News\", baseUrls: [\"news.jtbc.co.kr\"], type: [\"television\", \"digital\"] },\n] as const;\n\nexport const TURKISH_NEWS = [\n { company: \"Anadolu Agency (AA)\", baseUrls: [\"www.aa.com.tr\"], type: [\"news agency\", \"digital\"] },\n { company: \"Hürriyet\", baseUrls: [\"www.hurriyet.com.tr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Sabah\", baseUrls: [\"www.sabah.com.tr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Milliyet\", baseUrls: [\"www.milliyet.com.tr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"TRT World\", baseUrls: [\"www.trtworld.com\"], type: [\"television\", \"digital\"] },\n { company: \"CNN Türk\", baseUrls: [\"www.cnnturk.com\"], type: [\"television\", \"digital\"] },\n { company: \"Sozcu\", baseUrls: [\"www.sozcu.com.tr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Daily Sabah\", baseUrls: [\"www.dailysabah.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Yeni Şafak\", baseUrls: [\"www.yenisafak.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Habertürk\", baseUrls: [\"www.haberturk.com\"], type: [\"television\", \"digital\"] },\n { company: \"BirGün\", baseUrls: [\"www.birgun.net\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Türkiye Gazetesi\", baseUrls: [\"www.turkiyegazetesi.com.tr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Cumhuriyet\", baseUrls: [\"www.cumhuriyet.com.tr\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Diken\", baseUrls: [\"www.diken.com.tr\"], type: [\"digital-first\"] },\n { company: \"NTV\", baseUrls: [\"www.ntv.com.tr\"], type: [\"television\", \"digital\"] },\n { company: \"Ensonhaber\", baseUrls: [\"www.ensonhaber.com\"], type: [\"digital-first\"] },\n { company: \"T24\", baseUrls: [\"www.t24.com.tr\"], type: [\"digital-first\"] },\n { company: \"Karar\", baseUrls: [\"www.karar.com\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Gazete Duvar\", baseUrls: [\"www.gazeteduvar.com.tr\"], type: [\"digital-first\"] },\n { company: \"Bloomberg HT\", baseUrls: [\"www.bloomberght.com\"], type: [\"television\", \"digital\"] },\n] as const;\n\nexport const NORWEGIAN_NEWS = [\n { company: \"Aftenposten\", baseUrls: [\"www.aftenposten.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Verdens Gang (VG)\", baseUrls: [\"www.vg.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Dagbladet\", baseUrls: [\"www.dagbladet.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"NRK\", baseUrls: [\"www.nrk.no\"], type: [\"television\", \"radio\", \"digital\"] },\n { company: \"Dagens Næringsliv\", baseUrls: [\"www.dn.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Nettavisen\", baseUrls: [\"www.nettavisen.no\"], type: [\"digital-first\"] },\n { company: \"Klassekampen\", baseUrls: [\"www.klassekampen.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Morgenbladet\", baseUrls: [\"www.morgenbladet.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"E24\", baseUrls: [\"www.e24.no\"], type: [\"digital-first\", \"business\"] },\n { company: \"TV2\", baseUrls: [\"www.tv2.no\"], type: [\"television\", \"digital\"] },\n { company: \"Bergens Tidende\", baseUrls: [\"www.bt.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Adresseavisen\", baseUrls: [\"www.adressa.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Stavanger Aftenblad\", baseUrls: [\"www.aftenbladet.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Fædrelandsvennen\", baseUrls: [\"www.fvn.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"ABC Nyheter\", baseUrls: [\"www.abcnyheter.no\"], type: [\"digital-first\"] },\n { company: \"Romerikes Blad\", baseUrls: [\"www.rb.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Sunnmørsposten\", baseUrls: [\"www.smp.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Finansavisen\", baseUrls: [\"www.finansavisen.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Nordlys\", baseUrls: [\"www.nordlys.no\"], type: [\"newspaper\", \"digital\"] },\n { company: \"Hamar Arbeiderblad\", baseUrls: [\"www.h-a.no\"], type: [\"newspaper\", \"digital\"] },\n] as const;\n","import type { Constant } from \"inferred-types/constants\";\n\nfunction createConstant<TKind extends string>(kind: TKind) {\n return {\n _type: \"Constant\",\n kind,\n } as Constant<TKind>;\n}\n\n/**\n * A constant which indicates that a particular\n * type/property was not given a _default value_.\n */\nexport const NO_DEFAULT_VALUE = createConstant(\"no-default-value\");\n\n/**\n * A unique symbol which indicates that a particular\n * type was not given a \"default value\".\n */\nexport type NoDefaultValue = typeof NO_DEFAULT_VALUE;\n","export const NOT_APPLICABLE = Symbol(\"not applicable\");\n/**\n * A unique symbol which indicates that a particular\n * type was \"not applicable\".\n */\n\nexport type NotApplicable<Why extends string> = [\n kind: \"not-applicable\",\n reason: Why,\n uniqueness: typeof NOT_APPLICABLE,\n];\n","import type { Constant } from \"inferred-types/constants\";\n\n/**\n * **createConstant**(kind)\n *\n * Creates a `Constant<TKind>` type.\n */\nfunction createConstant<TKind extends string>(kind: TKind) {\n return {\n _type: \"Constant\",\n kind,\n } as Constant<TKind>;\n}\n\n/**\n * **NOT_DEFINED**\n *\n * A runtime constant which indicates that some value has not been defined (yet).\n */\nexport const NOT_DEFINED = createConstant(\"not-defined\");\n\nexport type NotDefined = typeof NOT_DEFINED;\n","/**\n * **NUMERIC_CHAR**\n *\n * A tuple containing all numeric characters.\n *\n * **Related:** `NumericChar`\n */\nexport const NUMERIC_CHAR = [\n \"0\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n] as const;\n\nexport const NON_ZERO_NUMERIC_CHAR = [\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n] as const;\n","export const PHONE_FORMAT = [\n \"Dashed (e.g., 456-555-1212)\",\n \"Dotted (e.g., 456.555.1212)\",\n \"ParaSpaced (e.g., (456) 555 1212)\",\n \"ParaDashed (e.g., (456) 555-1212)\",\n] as const;\n\n/**\n * **PHONE_COUNTRY_CODES**\n *\n * `[code, 3 letter country code, 2 letter country code]`\n */\nexport const PHONE_COUNTRY_CODES = [\n [\"886\", \"TWN\", \"TW\"],\n [\"93\", \"AFG\", \"AF\"],\n [\"355\", \"ALB\", \"AL\"],\n [\"213\", \"DZA\", \"DZ\"],\n [\"1-684\", \"ASM\", \"AS\"],\n [\"376\", \"AND\", \"AD\"],\n [\"244\", \"AGO\", \"AO\"],\n [\"1-264\", \"AIA\", \"AI\"],\n [\"672\", \"ATA\", \"AQ\"],\n [\"1-268\", \"ATG\", \"AG\"],\n [\"54\", \"ARG\", \"AR\"],\n [\"374\", \"ARM\", \"AM\"],\n [\"297\", \"ABW\", \"AW\"],\n [\"61\", \"AUS\", \"AU\"],\n [\"43\", \"AUT\", \"AT\"],\n [\"994\", \"AZE\", \"AZ\"],\n [\"1-242\", \"BHS\", \"BS\"],\n [\"973\", \"BHR\", \"BH\"],\n [\"880\", \"BGD\", \"BD\"],\n [\"1-246\", \"BRB\", \"BB\"],\n [\"375\", \"BLR\", \"BY\"],\n [\"32\", \"BEL\", \"BE\"],\n [\"501\", \"BLZ\", \"BZ\"],\n [\"229\", \"BEN\", \"BJ\"],\n [\"1-441\", \"BMU\", \"BM\"],\n [\"975\", \"BTN\", \"BT\"],\n [\"591\", \"BOL\", \"BO\"],\n [\"599\", \"BES\", \"BQ\"],\n [\"387\", \"BIH\", \"BA\"],\n [\"267\", \"BWA\", \"BW\"],\n [\"47\", \"BVT\", \"BV\"],\n [\"55\", \"BRA\", \"BR\"],\n [\"246\", \"IOT\", \"IO\"],\n [\"1-284\", \"VGB\", \"VG\"],\n [\"673\", \"BRN\", \"BN\"],\n [\"359\", \"BGR\", \"BG\"],\n [\"226\", \"BFA\", \"BF\"],\n [\"257\", \"BDI\", \"BI\"],\n [\"238\", \"CPV\", \"CV\"],\n [\"855\", \"KHM\", \"KH\"],\n [\"237\", \"CMR\", \"CM\"],\n [\"1\", \"CAN\", \"CA\"],\n [\"1-345\", \"CYM\", \"KY\"],\n [\"236\", \"CAF\", \"CF\"],\n [\"235\", \"TCD\", \"TD\"],\n [\"56\", \"CHL\", \"CL\"],\n [\"86\", \"CHN\", \"CN\"],\n [\"852\", \"HKG\", \"HK\"],\n [\"853\", \"MAC\", \"MO\"],\n [\"61\", \"CXR\", \"CX\"],\n [\"61\", \"CCK\", \"CC\"],\n [\"57\", \"COL\", \"CO\"],\n [\"269\", \"COM\", \"KM\"],\n [\"242\", \"COG\", \"CG\"],\n [\"682\", \"COK\", \"CK\"],\n [\"506\", \"CRI\", \"CR\"],\n [\"385\", \"HRV\", \"HR\"],\n [\"53\", \"CUB\", \"CU\"],\n [\"599\", \"CUW\", \"CW\"],\n [\"357\", \"CYP\", \"CY\"],\n [\"420\", \"CZE\", \"CZ\"],\n [\"225\", \"CIV\", \"CI\"],\n [\"850\", \"PRK\", \"KP\"],\n [\"243\", \"COD\", \"CD\"],\n [\"45\", \"DNK\", \"DK\"],\n [\"253\", \"DJI\", \"DJ\"],\n [\"1-767\", \"DMA\", \"DM\"],\n [\"1-809\", \"DOM\", \"DO\"],\n [\"1-829\", \"DOM\", \"DO\"],\n [\"1-849\", \"DOM\", \"DO\"],\n [\"593\", \"ECU\", \"EC\"],\n [\"20\", \"EGY\", \"EG\"],\n [\"503\", \"SLV\", \"SV\"],\n [\"240\", \"GNQ\", \"GQ\"],\n [\"291\", \"ERI\", \"ER\"],\n [\"372\", \"EST\", \"EE\"],\n [\"268\", \"SWZ\", \"SZ\"],\n [\"251\", \"ETH\", \"ET\"],\n [\"500\", \"FLK\", \"FK\"],\n [\"298\", \"FRO\", \"FO\"],\n [\"679\", \"FJI\", \"FJ\"],\n [\"358\", \"FIN\", \"FI\"],\n [\"33\", \"FRA\", \"FR\"],\n [\"594\", \"GUF\", \"GF\"],\n [\"689\", \"PYF\", \"PF\"],\n [\"262\", \"ATF\", \"TF\"],\n [\"241\", \"GAB\", \"GA\"],\n [\"220\", \"GMB\", \"GM\"],\n [\"995\", \"GEO\", \"GE\"],\n [\"49\", \"DEU\", \"DE\"],\n [\"233\", \"GHA\", \"GH\"],\n [\"350\", \"GIB\", \"GI\"],\n [\"30\", \"GRC\", \"GR\"],\n [\"299\", \"GRL\", \"GL\"],\n [\"1-473\", \"GRD\", \"GD\"],\n [\"590\", \"GLP\", \"GP\"],\n [\"1-671\", \"GUM\", \"GU\"],\n [\"502\", \"GTM\", \"GT\"],\n [\"44\", \"GGY\", \"GG\"],\n [\"224\", \"GIN\", \"GN\"],\n [\"245\", \"GNB\", \"GW\"],\n [\"592\", \"GUY\", \"GY\"],\n [\"509\", \"HTI\", \"HT\"],\n [\"672\", \"HMD\", \"HM\"],\n [\"39-06\", \"VAT\", \"VA\"],\n [\"504\", \"HND\", \"HN\"],\n [\"36\", \"HUN\", \"HU\"],\n [\"354\", \"ISL\", \"IS\"],\n [\"91\", \"IND\", \"IN\"],\n [\"62\", \"IDN\", \"ID\"],\n [\"98\", \"IRN\", \"IR\"],\n [\"964\", \"IRQ\", \"IQ\"],\n [\"353\", \"IRL\", \"IE\"],\n [\"44\", \"IMN\", \"IM\"],\n [\"972\", \"ISR\", \"IL\"],\n [\"39\", \"ITA\", \"IT\"],\n [\"1-876\", \"JAM\", \"JM\"],\n [\"81\", \"JPN\", \"JP\"],\n [\"44\", \"JEY\", \"JE\"],\n [\"962\", \"JOR\", \"JO\"],\n [\"7\", \"KAZ\", \"KZ\"],\n [\"254\", \"KEN\", \"KE\"],\n [\"686\", \"KIR\", \"KI\"],\n [\"965\", \"KWT\", \"KW\"],\n [\"996\", \"KGZ\", \"KG\"],\n [\"856\", \"LAO\", \"LA\"],\n [\"371\", \"LVA\", \"LV\"],\n [\"961\", \"LBN\", \"LB\"],\n [\"266\", \"LSO\", \"LS\"],\n [\"231\", \"LBR\", \"LR\"],\n [\"218\", \"LBY\", \"LY\"],\n [\"423\", \"LIE\", \"LI\"],\n [\"370\", \"LTU\", \"LT\"],\n [\"352\", \"LUX\", \"LU\"],\n [\"261\", \"MDG\", \"MG\"],\n [\"265\", \"MWI\", \"MW\"],\n [\"60\", \"MYS\", \"MY\"],\n [\"960\", \"MDV\", \"MV\"],\n [\"223\", \"MLI\", \"ML\"],\n [\"356\", \"MLT\", \"MT\"],\n [\"692\", \"MHL\", \"MH\"],\n [\"596\", \"MTQ\", \"MQ\"],\n [\"222\", \"MRT\", \"MR\"],\n [\"230\", \"MUS\", \"MU\"],\n [\"262\", \"MYT\", \"YT\"],\n [\"52\", \"MEX\", \"MX\"],\n [\"691\", \"FSM\", \"FM\"],\n [\"377\", \"MCO\", \"MC\"],\n [\"976\", \"MNG\", \"MN\"],\n [\"382\", \"MNE\", \"ME\"],\n [\"1-664\", \"MSR\", \"MS\"],\n [\"212\", \"MAR\", \"MA\"],\n [\"258\", \"MOZ\", \"MZ\"],\n [\"95\", \"MMR\", \"MM\"],\n [\"264\", \"NAM\", \"NA\"],\n [\"674\", \"NRU\", \"NR\"],\n [\"977\", \"NPL\", \"NP\"],\n [\"31\", \"NLD\", \"NL\"],\n [\"687\", \"NCL\", \"NC\"],\n [\"64\", \"NZL\", \"NZ\"],\n [\"505\", \"NIC\", \"NI\"],\n [\"227\", \"NER\", \"NE\"],\n [\"234\", \"NGA\", \"NG\"],\n [\"683\", \"NIU\", \"NU\"],\n [\"672\", \"NFK\", \"NF\"],\n [\"1-670\", \"MNP\", \"MP\"],\n [\"47\", \"NOR\", \"NO\"],\n [\"968\", \"OMN\", \"OM\"],\n [\"92\", \"PAK\", \"PK\"],\n [\"680\", \"PLW\", \"PW\"],\n [\"507\", \"PAN\", \"PA\"],\n [\"675\", \"PNG\", \"PG\"],\n [\"595\", \"PRY\", \"PY\"],\n [\"51\", \"PER\", \"PE\"],\n [\"63\", \"PHL\", \"PH\"],\n [\"870\", \"PCN\", \"PN\"],\n [\"48\", \"POL\", \"PL\"],\n [\"351\", \"PRT\", \"PT\"],\n [\"974\", \"QAT\", \"QA\"],\n [\"82\", \"KOR\", \"KR\"],\n [\"373\", \"MDA\", \"MD\"],\n [\"40\", \"ROU\", \"RO\"],\n [\"7\", \"RUS\", \"RU\"],\n [\"250\", \"RWA\", \"RW\"],\n [\"262\", \"REU\", \"RE\"],\n [\"590\", \"BLM\", \"BL\"],\n [\"290\", \"SHN\", \"SH\"],\n [\"1-869\", \"KNA\", \"KN\"],\n [\"1-758\", \"LCA\", \"LC\"],\n [\"590\", \"MAF\", \"MF\"],\n [\"508\", \"SPM\", \"PM\"],\n [\"1-784\", \"VCT\", \"VC\"],\n [\"685\", \"WSM\", \"WS\"],\n [\"378\", \"SMR\", \"SM\"],\n [\"239\", \"STP\", \"ST\"],\n [\"966\", \"SAU\", \"SA\"],\n [\"221\", \"SEN\", \"SN\"],\n [\"381\", \"SRB\", \"RS\"],\n [\"248\", \"SYC\", \"SC\"],\n [\"232\", \"SLE\", \"SL\"],\n [\"65\", \"SGP\", \"SG\"],\n [\"1-721\", \"SXM\", \"SX\"],\n [\"421\", \"SVK\", \"SK\"],\n [\"386\", \"SVN\", \"SI\"],\n [\"677\", \"SLB\", \"SB\"],\n [\"252\", \"SOM\", \"SO\"],\n [\"27\", \"ZAF\", \"ZA\"],\n [\"500\", \"SGS\", \"GS\"],\n [\"211\", \"SSD\", \"SS\"],\n [\"34\", \"ESP\", \"ES\"],\n [\"94\", \"LKA\", \"LK\"],\n [\"970\", \"PSE\", \"PS\"],\n [\"249\", \"SDN\", \"SD\"],\n [\"597\", \"SUR\", \"SR\"],\n [\"47\", \"SJM\", \"SJ\"],\n [\"46\", \"SWE\", \"SE\"],\n [\"41\", \"CHE\", \"CH\"],\n [\"963\", \"SYR\", \"SY\"],\n [\"992\", \"TJK\", \"TJ\"],\n [\"66\", \"THA\", \"TH\"],\n [\"389\", \"MKD\", \"MK\"],\n [\"670\", \"TLS\", \"TL\"],\n [\"228\", \"TGO\", \"TG\"],\n [\"690\", \"TKL\", \"TK\"],\n [\"676\", \"TON\", \"TO\"],\n [\"1-868\", \"TTO\", \"TT\"],\n [\"216\", \"TUN\", \"TN\"],\n [\"90\", \"TUR\", \"TR\"],\n [\"993\", \"TKM\", \"TM\"],\n [\"1-649\", \"TCA\", \"TC\"],\n [\"688\", \"TUV\", \"TV\"],\n [\"256\", \"UGA\", \"UG\"],\n [\"380\", \"UKR\", \"UA\"],\n [\"971\", \"ARE\", \"AE\"],\n [\"44\", \"GBR\", \"GB\"],\n [\"255\", \"TZA\", \"TZ\"],\n [\"1-340\", \"VIR\", \"VI\"],\n [\"1\", \"USA\", \"US\"],\n [\"598\", \"URY\", \"UY\"],\n [\"998\", \"UZB\", \"UZ\"],\n [\"678\", \"VUT\", \"VU\"],\n [\"58\", \"VEN\", \"VE\"],\n [\"84\", \"VNM\", \"VN\"],\n [\"681\", \"WLF\", \"WF\"],\n [\"212\", \"ESH\", \"EH\"],\n [\"967\", \"YEM\", \"YE\"],\n [\"260\", \"ZMB\", \"ZM\"],\n [\"263\", \"ZWE\", \"ZW\"],\n [\"358\", \"ALA\", \"AX\"],\n] as const;\n","/**\n * **PLURAL_EXCEPTIONS**\n *\n * An array of tuples of the form `[singular, plural]`.\n */\nexport const PLURAL_EXCEPTIONS_OLD = [\n [\"photo\", \"photos\"],\n [\"piano\", \"pianos\"],\n [\"halo\", \"halos\"],\n [\"foot\", \"feet\"],\n [\"man\", \"men\"],\n [\"woman\", \"women\"],\n [\"person\", \"people\"],\n [\"mouse\", \"mice\"],\n [\"series\", \"series\"],\n [\"sheep\", \"sheep\"],\n [\"money\", \"monies\"],\n [\"deer\", \"deer\"],\n\n] as const;\n\n/**\n * **PluralExceptions**\n *\n * A dictionary of key/value pairs which map singular words to their\n * plural counterpart. This can be used in conjunction with the the\n * `pluralize()` and `Pluralize<T>` utilities to extend the known\n * irregular conversions.\n */\nexport type PluralExceptions = Record<string, string>;\n\n/**\n * **PLURAL_EXCEPTIONS**\n *\n * A lookup table that maps singular words to their _plural_ counterpart.\n */\nexport const PLURAL_EXCEPTIONS = {\n photo: \"photos\",\n piano: \"pianos\",\n halo: \"halos\",\n foot: \"feet\",\n man: \"men\",\n woman: \"women\",\n person: \"people\",\n mouse: \"mice\",\n series: \"series\",\n sheep: \"sheep\",\n money: \"monies\",\n deer: \"deer\",\n goose: \"geese\",\n child: \"children\",\n tooth: \"teeth\",\n ox: \"oxen\",\n basis: \"bases\",\n radius: \"radii\",\n syllabus: \"syllabi\",\n ice: \"ice\",\n fish: \"fish\",\n means: \"means\",\n phenomenon: \"phenomena\",\n criterion: \"criteria\",\n datum: \"data\",\n memorandum: \"memoranda\",\n bacterium: \"bacteria\",\n stratum: \"strata\",\n curriculum: \"curricula\",\n index: \"indices\",\n appendix: \"appendices\",\n vortex: \"vortices\",\n bison: \"bison\",\n axis: \"axes\",\n antenna: \"antennas\",\n cactus: \"cacti\",\n corpus: \"corpora\",\n beau: \"beaux\",\n die: \"dice\",\n ellipsis: \"ellipses\",\n erratum: \"errata\",\n focus: \"foci\",\n formula: \"formulas\",\n fungus: \"fungi\",\n genus: \"genera\",\n graffito: \"graffiti\",\n grouse: \"grouses\",\n half: \"halves\",\n hoof: \"hooves\",\n hypothesis: \"hypothesis\",\n larva: \"larvae\",\n libretto: \"libretti\",\n loaf: \"loaves\",\n locus: \"loci\",\n medium: \"mediums\",\n minutia: \"minutiae\",\n nucleus: \"nuclei\",\n oasis: \"oases\",\n opus: \"opuses\",\n ovum: \"ova\",\n parenthesis: \"parentheses\",\n phylum: \"phyla\",\n quiz: \"quizzes\",\n referendum: \"referendums\",\n self: \"selves\",\n species: \"species\",\n stimulus: \"stimuli\",\n swine: \"swine\",\n synopsis: \"synopses\",\n thesis: \"theses\",\n thief: \"thieves\",\n vertex: \"vertexes\",\n wife: \"wives\",\n wolf: \"wolves\",\n} as const;\n","/**\n * common sources for source code repositories\n */\nexport const REPO_SOURCES = [\n \"github\",\n \"bitbucket\",\n \"gitlab\",\n \"codecommit\",\n \"local\",\n] as const;\n\n/**\n * page types you'd expect to find in a source code repository.\n */\nexport const REPO_PAGE_TYPES = [\n \"repo\",\n \"commits\",\n \"author\",\n \"org\",\n \"profile\",\n \"issues\",\n \"actions\",\n \"followers\",\n \"following\",\n \"docs\",\n \"unknown\",\n] as const;\n\nexport const REPO_SOURCE_LOOKUP = {\n github: [`https://github.com`, \"https://github.io\"],\n bitbucket: [\"https://bitbucket.org\"],\n gitlab: [\"https://gitlab.com\"],\n codecommit: [\"https://aws.amazon.com/codecommit/\"],\n local: [],\n} as const;\n\nexport const GITHUB_INSIGHT_CATEGORY_LOOKUP = {\n pulse: \"pulse\",\n contributors: \"graphs/contributors\",\n community: \"graphs/community\",\n standards: \"community\",\n traffic: \"graphs/traffic\",\n commits: \"graphs/commit-activity\",\n code_frequency: \"graphs/code-frequency\",\n dependencies: \"network/dependencies\",\n dependents: \"network/dependents\",\n dependabot: \"network/updates\",\n network: \"network\",\n forks: \"forks\",\n people: \"people\",\n} as const;\n","/**\n * Amazon's DNS entries (for retail business)\n */\nexport const AMAZON_DNS = [\n \"www.amazon.com\",\n `www.amazon.co.uk`,\n `www.amazon.fr`,\n `www.amazon.de`,\n `www.amazon.it`,\n `www.amazon.es`,\n] as const;\n\nexport const WALMART_DNS = [\n \"www.walmart.com\",\n \"www.walmart.ca\",\n \"www.walmart.com.mx\",\n] as const;\n\nexport const APPLE_DNS = [\n \"store.apple.com\",\n \"www.apple.com\",\n] as const;\n\nexport const HOME_DEPOT_DNS = [\n \"www.homedepot.com\",\n \"www.homedepot.ca\",\n] as const;\n\nexport const EBAY_DNS = [\n \"www.ebay.com\",\n \"www.ebay.co.uk\",\n \"www.ebay.fr\",\n \"www.ebay.de\",\n \"www.ebay.it\",\n] as const;\n\nexport const TARGET_DNS = [\n \"www.target.com\",\n] as const;\n\nexport const ETSY_DNS = [\n \"www.etsy.com\",\n] as const;\n\nexport const COSTCO_DNS = [\n \"www.costco.com\",\n \"www.costco.co.uk\",\n \"www.costco.ca\",\n] as const;\n\nexport const CHEWY_DNS = [\n \"www.chewy.com\",\n] as const;\n\nexport const BEST_BUY_DNS = [\n \"www.bestbuy.com\",\n \"www.bestbuy.ca\",\n] as const;\n\nexport const WAYFAIR_DNS = [\n \"www.wayfair.com\",\n \"www.wayfair.ca\",\n \"www.wayfair.co.uk\",\n] as const;\n\nexport const NIKE_DNS = [\n \"www.nike.com\",\n] as const;\n\nexport const MACYS_DNS = [\n \"www.macys.com\",\n] as const;\n\nexport const LOWES_DNS = [\n \"www.lowes.com\",\n] as const;\n\nexport const IKEA_DNS = [\n \"www.ikea.com\",\n] as const;\n\nexport const DELL_DNS = [\n \"www.dell.com\",\n] as const;\n\n/** DNS for H&M retailer */\nexport const HM_DNS = [\n \"www2.hm.com\",\n] as const;\n\nexport const ZARA_DNS = [\n \"www.zara.com\",\n] as const;\n\nexport const KROGER_DNS = [\n \"www.kroger.com\",\n] as const;\n\nexport const WALGREENS_DNS = [\n \"www.walgreens.com\",\n] as const;\n\nexport const CVS_DNS = [\n \"www.cvs.com\",\n] as const;\n\nexport const WHOLE_FOODS_DNS = [\n \"www.wholefoodsmarket.com\",\n \"www.wholefoodsmarket.co.uk\",\n] as const;\n","export const SAFE_ENCODING__QUOTES = {\n [`\"`]: \"^<dq>\",\n [`'`]: \"^<sq>\",\n [`\\``]: \"^<grave>\",\n} as const;\n\nexport const SAFE_ENCODING__WHITESPACE = {\n \" \": \"^<sp>\",\n \"\\t\": \"^<tab>\",\n \"\\n\": \"^<n>\",\n \"\\r\": \"^<r>\",\n} as const;\n\nexport const SAFE_ENCODING__BRACKETS = {\n \"[\": \"^<osb>\",\n \"]\": \"^<csb>\",\n \"(\": \"^<op>\",\n \")\": \"^<cp>\",\n \"{\": \"^<oc>\",\n \"}\": \"^<cc>\",\n} as const;\n\nexport const SAFE_ENCODING_KEYS = {\n ...SAFE_ENCODING__BRACKETS,\n ...SAFE_ENCODING__QUOTES,\n ...SAFE_ENCODING__WHITESPACE,\n} as const;\n","export const SHAPE_PREFIXES = [\n \"string\",\n \"number\",\n \"boolean\",\n \"null\",\n \"undefined\",\n \"unknown\",\n \"opt::\",\n \"union::\",\n \"tuple::\",\n \"array::\",\n \"object\",\n \"record::\",\n] as const;\n\nexport const SHAPE_DELIMITER = \"||,||\" as const;\n","export const SIMPLE_DICT_VALUES = [\n \"string\",\n \"number\",\n \"boolean\",\n \"unknown\",\n \"Opt<string>\",\n \"Opt<number>\",\n \"Opt<boolean>\",\n \"Opt<unknown>\",\n] as const;\n\nexport const SIMPLE_SET_TYPES = [\n \"string\",\n \"number\",\n \"boolean\",\n \"unknown\",\n \"Opt<string>\",\n \"Opt<number>\",\n \"Opt<boolean>\",\n \"Opt<unknown>\",\n] as const;\n\nexport const SIMPLE_SCALAR_TOKENS = [\n \"string\",\n \"number\",\n `string(TOKEN)` as `string(${string})`,\n `number(TOKEN)` as `number(${number}${`,${string}` | \"\"})`,\n \"boolean\",\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"unknown\",\n \"any\",\n \"never\",\n] as const;\n\nexport const SIMPLE_OPT_SCALAR_TOKENS = [\n \"Opt<string>\",\n \"Opt<number>\",\n \"Opt<boolean>\",\n \"Opt<true>\",\n \"Opt<false>\",\n \"Opt<null>\",\n \"Opt<undefined>\",\n \"Opt<unknown>\",\n \"Opt<any>\",\n \"Opt<string(TOKEN)>\" as `Opt<string(${string}${`,${string}` | \"\"})>`,\n \"Opt<number(TOKEN)>\" as `Opt<number(${number}${`,${string}` | \"\"})`,\n \"Opt<undefined>\",\n] as const;\n\nexport const SIMPLE_FN_TOKENS = [\n \"Fn<none> => Unknown\",\n \"Fn<string> => Unknown\",\n \"Fn<number> => Unknown\",\n \"Fn<boolean> => Unknown\",\n] as const;\n\nexport const SIMPLE_UNION_TOKENS = [\n `Union(TOKEN)` as `union(${string}${`,${string}` | \"\"})`,\n] as const;\n\nexport const SIMPLE_MAP_KEYS = [\n \"string\",\n \"number\",\n \"Dict\",\n \"Dict<string, string>\",\n \"Dict<string, number>\",\n \"Dict<string, boolean>\",\n \"Dict<string, unknown>\",\n \"Dict<string, Opt<string>>\",\n \"Dict<string, Opt<number>>\",\n \"Dict<string, Opt<boolean>>\",\n] as const;\n\nexport const SIMPLE_MAP_VALUES = [\n ...SIMPLE_MAP_KEYS,\n \"boolean\",\n \"unknown\",\n \"undefined\",\n \"Dict\",\n \"Array\",\n \"Dict<string, Opt<string>>\",\n \"Dict<string, Opt<number>>\",\n \"Dict<string, Opt<boolean>>\",\n \"Dict<string, Opt<unknown>>\",\n] as const;\n\ntype ReqScalarToken = typeof SIMPLE_SCALAR_TOKENS[number];\ntype OptScalarToken = typeof SIMPLE_OPT_SCALAR_TOKENS[number];\ntype ScalarToken = ReqScalarToken | OptScalarToken;\ntype MapKeys = typeof SIMPLE_MAP_KEYS[number];\ntype MapValues = typeof SIMPLE_MAP_VALUES[number];\ntype SetType = typeof SIMPLE_SET_TYPES[number];\n\nexport const SIMPLE_DICT_TOKENS = [\n \"Dict\",\n \"Dict<string, string>\",\n \"Dict<string, number>\",\n \"Dict<string, boolean>\",\n \"Dict<string, unknown>\",\n \"Dict<string, Opt<string>>\",\n \"Dict<string, Opt<number>>\",\n \"Dict<string, Opt<boolean>>\",\n \"Dict<string, Opt<unknown>>\",\n \"Dict<{TOKEN: TOKEN}>\" as `Dict<{${string}: ${ScalarToken}}>`,\n \"Dict<{TOKEN: TOKEN, TOKEN: TOKEN}>\" as `Dict<{${string}: ${ScalarToken}, ${string}: ${string}}`,\n] as const;\n\nexport const SIMPLE_ARRAY_TOKENS = [\n \"Array\",\n \"Array<string>\",\n \"Array<string(TOKEN)>\" as `Array<string(${string})>`,\n \"Array<number>\",\n \"Array<number(TOKEN)>\" as `Array<number(${number}${`,${string}` | \"\"})>`,\n \"Array<boolean>\",\n \"Array<unknown>\",\n `Array<Dict>`,\n `Array<Set>`,\n `Array<Map>`,\n] as const;\n\nexport const SIMPLE_MAP_TOKENS = [\n \"Map\",\n \"Map<TOKEN, TOKEN>\" as `Map<${MapKeys}, ${MapValues}>`,\n \"WeakMap\",\n] as const;\n\nexport const SIMPLE_SET_TOKENS = [\n \"Set\",\n \"Set<TOKEN>\" as `Set<${SetType}>`,\n] as const;\n\nexport const SIMPLE_CONTAINER_TOKENS = [\n ...SIMPLE_DICT_TOKENS,\n ...SIMPLE_ARRAY_TOKENS,\n ...SIMPLE_MAP_TOKENS,\n ...SIMPLE_SET_TOKENS,\n] as const;\n\n/**\n * **SIMPLE_TOKENS**\n *\n * A list of strings literals which can be used\n * to express the type of a variable or token\n * in relatively course granularity\n */\nexport const SIMPLE_TOKENS = [\n ...SIMPLE_SCALAR_TOKENS,\n ...SIMPLE_OPT_SCALAR_TOKENS,\n ...SIMPLE_CONTAINER_TOKENS,\n ...SIMPLE_UNION_TOKENS,\n] as const;\n","/**\n * Singular nouns typically end in the characters represented by this array.\n *\n * **Related:** `SingularNounEnding`\n */\nexport const SINGULAR_NOUN_ENDINGS = [\n \"s\",\n \"sh\",\n \"ch\",\n \"x\",\n \"z\",\n \"o\",\n] as const;\n","interface SocialMediaCompany {\n name: string;\n description: string;\n baseUrls: string[];\n profileUrl: string;\n approximateUserSize?: number;\n tickerSymbol?: string;\n}\n\nexport const SOCIAL_MEDIA = [\n {\n name: \"Facebook\",\n description: \"Connect with friends, family, and communities worldwide on one of the largest social networks.\",\n baseUrls: [\"https://www.facebook.com\"],\n profileUrl: \"https://www.facebook.com/:user_id\",\n approximateUserSize: 3000000000, // 3 billion\n tickerSymbol: \"META\",\n },\n {\n name: \"YouTube\",\n description: \"A platform for sharing and watching videos, connecting creators with audiences globally.\",\n baseUrls: [\"https://www.youtube.com\"],\n profileUrl: \"https://www.youtube.com/user/:user_id\",\n approximateUserSize: 2500000000, // 2.5 billion\n tickerSymbol: \"GOOGL\",\n },\n {\n name: \"WhatsApp\",\n description: \"A secure messaging app for personal and business communication.\",\n baseUrls: [\"https://www.whatsapp.com\", \"https://wa.me\"],\n profileUrl: \"https://wa.me/:user_id\",\n approximateUserSize: 2000000000, // 2 billion\n tickerSymbol: \"META\",\n },\n {\n name: \"Instagram\",\n description: \"Share photos and videos with friends and followers through posts, stories, and reels.\",\n baseUrls: [\"https://www.instagram.com\"],\n profileUrl: \"https://www.instagram.com/:user_id\",\n approximateUserSize: 2000000000, // 2 billion\n tickerSymbol: \"META\",\n },\n {\n name: \"TikTok\",\n description: \"A short-form video platform known for its highly engaging content and viral trends.\",\n baseUrls: [\"https://www.tiktok.com\"],\n profileUrl: \"https://www.tiktok.com/@:user_id\",\n approximateUserSize: 1600000000, // 1.6 billion\n },\n {\n name: \"WeChat\",\n description: \"China's popular messaging and lifestyle app, integrating social media and mobile payments.\",\n baseUrls: [\"https://www.wechat.com\"],\n profileUrl: \"https://www.wechat.com/:user_id\", // Profile URLs typically restricted in China\n approximateUserSize: 1300000000, // 1.3 billion\n },\n {\n name: \"Facebook Messenger\",\n description: \"A messaging app used for personal and business interactions, seamlessly integrated with Facebook.\",\n baseUrls: [\"https://www.messenger.com\"],\n profileUrl: \"https://www.messenger.com/t/:user_id\",\n approximateUserSize: 1000000000, // 1 billion\n tickerSymbol: \"META\",\n },\n {\n name: \"Telegram\",\n description: \"A messaging platform focused on privacy, with channels and group capabilities.\",\n baseUrls: [\"https://www.telegram.org\", \"https://t.me\"],\n profileUrl: \"https://t.me/:user_id\",\n approximateUserSize: 900000000, // 900 million\n },\n {\n name: \"Snapchat\",\n description: \"A multimedia app popular for its disappearing messages and creative filters.\",\n baseUrls: [\"https://www.snapchat.com\"],\n profileUrl: \"https://www.snapchat.com/add/:user_id\",\n approximateUserSize: 800000000, // 800 million\n tickerSymbol: \"SNAP\",\n },\n {\n name: \"Douyin\",\n description: \"The Chinese version of TikTok, with similar short-form video content tailored for China.\",\n baseUrls: [\"https://www.douyin.com\"],\n profileUrl: \"https://www.douyin.com/user/:user_id\",\n approximateUserSize: 750000000, // 750 million\n },\n {\n name: \"LinkedIn\",\n description: \"The largest professional networking platform, where users connect for career opportunities, insights, and business networking.\",\n baseUrls: [\"https://www.linkedin.com\"],\n profileUrl: \"https://www.linkedin.com/in/:user_id\",\n approximateUserSize: 930000000, // 930 million\n tickerSymbol: \"MSFT\",\n },\n {\n name: \"X (formerly Twitter)\",\n description: \"A platform for real-time updates, news sharing, and public discourse with a focus on brief, impactful posts.\",\n baseUrls: [\"https://www.twitter.com\", \"https://x.com\"],\n profileUrl: \"https://twitter.com/:user_id\",\n approximateUserSize: 540000000, // 540 million\n },\n {\n name: \"Pinterest\",\n description: \"A visually-driven platform for sharing ideas, DIY projects, fashion, and more.\",\n baseUrls: [\"https://www.pinterest.com\"],\n profileUrl: \"https://www.pinterest.com/:user_id\",\n approximateUserSize: 460000000, // 460 million\n tickerSymbol: \"PINS\",\n },\n {\n name: \"Reddit\",\n description: \"A community-driven platform organized into niche forums or 'subreddits' focused on various topics.\",\n baseUrls: [\"https://www.reddit.com\"],\n profileUrl: \"https://www.reddit.com/user/:user_id\",\n approximateUserSize: 430000000, // 430 million\n },\n {\n name: \"Clubhouse\",\n description: \"A voice-based social network where users engage in live audio conversations on various topics.\",\n baseUrls: [\"https://www.clubhouse.com\"],\n profileUrl: \"https://www.clubhouse.com/:user_id\",\n approximateUserSize: 10000000, // 10 million\n },\n {\n name: \"Discord\",\n description: \"Originally aimed at gamers, Discord is now widely used by various communities for group chat, video, and voice calls.\",\n baseUrls: [\"https://www.discord.com\", \"https://discord.com\"],\n profileUrl: \"https://discord.com/users/:user_id\",\n approximateUserSize: 300000000, // 300 million\n },\n] as const satisfies SocialMediaCompany[];\n","// eslint-disable style/quote-props\n\nexport const TW_HUE_NEUTRAL = {\n slate: 262,\n gray: 270,\n zinc: 269,\n neutral: 270,\n stone: 273,\n} as const;\n\nexport const TW_HUE_VIBRANT = {\n red: 24,\n orange: 44,\n amber: 79,\n yellow: 100,\n lime: 132,\n green: 144,\n emerald: 159,\n teal: 182,\n cyan: 192,\n sky: 219,\n blue: 240,\n indigo: 268,\n violet: 283,\n purple: 294,\n fuchsia: 319,\n pink: 334,\n rose: 15,\n} as const;\n\nexport const TW_HUE_STATIC = {\n black: 0,\n white: 106.37411429114086,\n} as const;\n\n/**\n * **TW_COLOR_HUE**\n *\n * The _hue_ values for [TailwindCSS](https://tailwindcss.com/docs/customizing-colors)\n * when moved into the **oklch** color space.\n */\nexport const TW_HUE = {\n ...TW_HUE_NEUTRAL,\n ...TW_HUE_VIBRANT,\n ...TW_HUE_STATIC,\n} as const;\n\nexport const TW_LUMINOSITY = {\n \"50\": 97.78,\n \"100\": 93.56,\n \"200\": 88.11,\n \"300\": 82.67,\n \"400\": 74.22,\n \"500\": 64.78,\n \"600\": 57.33,\n \"700\": 46.89,\n \"800\": 39.44,\n \"900\": 32,\n \"950\": 23.78,\n} as const;\n\nexport const TW_LUMIN_50 = TW_LUMINOSITY[\"50\"];\nexport const TW_LUMIN_100 = TW_LUMINOSITY[\"100\"];\nexport const TW_LUMIN_200 = TW_LUMINOSITY[\"200\"];\nexport const TW_LUMIN_300 = TW_LUMINOSITY[\"300\"];\nexport const TW_LUMIN_400 = TW_LUMINOSITY[\"400\"];\nexport const TW_LUMIN_500 = TW_LUMINOSITY[\"500\"];\nexport const TW_LUMIN_600 = TW_LUMINOSITY[\"600\"];\nexport const TW_LUMIN_700 = TW_LUMINOSITY[\"700\"];\nexport const TW_LUMIN_800 = TW_LUMINOSITY[\"800\"];\nexport const TW_LUMIN_900 = TW_LUMINOSITY[\"900\"];\nexport const TW_LUMIN_950 = TW_LUMINOSITY[\"950\"];\n\n/**\n * **TW_CHROMA**\n *\n * The possible chroma values from Tailwind CSS when using\n * the **okhsl** color model.\n *\n * **Related:** `TW_CHROMA_50`, `TW_CHROMA_100`, ...\n */\nexport const TW_CHROMA = {\n \"50\": 0.0108,\n \"100\": 0.0321,\n \"200\": 0.0609,\n \"300\": 0.0908,\n \"400\": 0.1398,\n \"500\": 0.1472,\n \"600\": 0.1299,\n \"700\": 0.1067,\n \"800\": 0.0898,\n \"900\": 0.0726,\n \"950\": 0.054,\n} as const;\n\nexport const TW_CHROMA_50 = TW_CHROMA[\"50\"];\nexport const TW_CHROMA_100 = TW_CHROMA[\"100\"];\nexport const TW_CHROMA_200 = TW_CHROMA[\"200\"];\nexport const TW_CHROMA_300 = TW_CHROMA[\"300\"];\nexport const TW_CHROMA_400 = TW_CHROMA[\"400\"];\nexport const TW_CHROMA_500 = TW_CHROMA[\"500\"];\nexport const TW_CHROMA_600 = TW_CHROMA[\"600\"];\nexport const TW_CHROMA_700 = TW_CHROMA[\"700\"];\nexport const TW_CHROMA_800 = TW_CHROMA[\"800\"];\nexport const TW_CHROMA_900 = TW_CHROMA[\"900\"];\nexport const TW_CHROMA_950 = TW_CHROMA[\"950\"];\n\n/**\n * The list of \"targets\" where Tailwind color string references\n * can be applied to. These domains are prefixes to the color string\n * when used (e.g., `bg-green-500`)\n */\nexport const TW_COLOR_TARGETS = [\n \"bg\",\n \"text\",\n \"border\",\n \"ring\",\n \"shadow\",\n \"border\",\n] as const;\n\nexport const TW_MODIFIERS_CORE = [\n \"dark\",\n \"focus\",\n \"hover\",\n \"active\",\n \"visited\",\n \"disabled\",\n] as const;\n\nexport const TW_MODIFIERS_ORDER = [\n \"first\",\n \"last\",\n \"odd\",\n \"even\",\n] as const;\n\nexport const TW_MODIFIERS_RELN = [\n \"focus-within\",\n \"focus-visible\",\n \"checked\",\n \"peer-invalid\",\n `peer-checked/{{string}}`,\n] as const;\n\n/**\n * The list of page size prefixes which Tailwind provides for adjusting to\n * device size. These are the defaults and can be customized.\n */\nexport const TW_MODIFIERS_SIZING = [\n \"sm\",\n \"md\",\n \"lg\",\n \"xl\",\n \"2xl\",\n] as const;\n\n/**\n * The list of _modifiers_ which you can target as a prefix to a Tailwind\n * class (e.g., `focus:...`, `hover:...`).\n */\nexport const TW_MODIFIERS = [\n ...TW_MODIFIERS_CORE,\n ...TW_MODIFIERS_ORDER,\n ...TW_MODIFIERS_SIZING,\n ...TW_MODIFIERS_RELN,\n] as const;\n","export const IANA_TIMEZONES__AFRICA = [\n \"Africa/Abidjan\",\n \"Africa/Accra\",\n \"Africa/Addis_Ababa\",\n \"Africa/Algiers\",\n \"Africa/Asmara\",\n \"Africa/Bamako\",\n \"Africa/Bangui\",\n \"Africa/Banjul\",\n \"Africa/Bissau\",\n \"Africa/Blantyre\",\n \"Africa/Brazzaville\",\n \"Africa/Bujumbura\",\n \"Africa/Cairo\",\n \"Africa/Casablanca\",\n \"Africa/Ceuta\",\n \"Africa/Conakry\",\n \"Africa/Dakar\",\n \"Africa/Dar_es_Salaam\",\n \"Africa/Djibouti\",\n \"Africa/Douala\",\n \"Africa/El_Aaiun\",\n \"Africa/Freetown\",\n \"Africa/Gaborone\",\n \"Africa/Harare\",\n \"Africa/Johannesburg\",\n \"Africa/Juba\",\n \"Africa/Kampala\",\n \"Africa/Khartoum\",\n \"Africa/Kigali\",\n \"Africa/Kinshasa\",\n \"Africa/Lagos\",\n \"Africa/Libreville\",\n \"Africa/Lome\",\n \"Africa/Luanda\",\n \"Africa/Lubumbashi\",\n \"Africa/Lusaka\",\n \"Africa/Malabo\",\n \"Africa/Maputo\",\n \"Africa/Maseru\",\n \"Africa/Mbabane\",\n \"Africa/Mogadishu\",\n \"Africa/Monrovia\",\n \"Africa/Nairobi\",\n \"Africa/Ndjamena\",\n \"Africa/Niamey\",\n \"Africa/Nouakchott\",\n \"Africa/Ouagadougou\",\n \"Africa/Porto-Novo\",\n \"Africa/Sao_Tome\",\n \"Africa/Tripoli\",\n \"Africa/Tunis\",\n \"Africa/Windhoek\",\n] as const;\nexport const IANA_TIMEZONES__AMERICA = [\n \"America/Adak\",\n \"America/Anchorage\",\n \"America/Anguilla\",\n \"America/Antigua\",\n \"America/Araguaina\",\n \"America/Argentina/Buenos_Aires\",\n \"America/Argentina/Catamarca\",\n \"America/Argentina/Cordoba\",\n \"America/Argentina/Jujuy\",\n \"America/Argentina/La_Rioja\",\n \"America/Argentina/Mendoza\",\n \"America/Argentina/Rio_Gallegos\",\n \"America/Argentina/Salta\",\n \"America/Argentina/San_Juan\",\n \"America/Argentina/San_Luis\",\n \"America/Argentina/Tucuman\",\n \"America/Argentina/Ushuaia\",\n \"America/Aruba\",\n \"America/Asuncion\",\n \"America/Atikokan\",\n \"America/Atka\",\n \"America/Bahia\",\n \"America/Bahia_Banderas\",\n \"America/Barbados\",\n \"America/Belem\",\n \"America/Belize\",\n \"America/Blanc-Sablon\",\n \"America/Boa_Vista\",\n \"America/Bogota\",\n \"America/Boise\",\n \"America/Cambridge_Bay\",\n \"America/Campo_Grande\",\n \"America/Cancun\",\n \"America/Caracas\",\n \"America/Cayenne\",\n \"America/Cayman\",\n \"America/Chicago\",\n \"America/Chihuahua\",\n \"America/Creston\",\n \"America/Cuiaba\",\n \"America/Curacao\",\n \"America/Danmarkshavn\",\n \"America/Dawson\",\n \"America/Dawson_Creek\",\n \"America/Denver\",\n \"America/Detroit\",\n \"America/Dominica\",\n \"America/Edmonton\",\n \"America/Eirunepe\",\n \"America/El_Salvador\",\n \"America/Fort_Nelson\",\n \"America/Fortaleza\",\n \"America/Glace_Bay\",\n \"America/Godthab\",\n \"America/Goose_Bay\",\n \"America/Grand_Turk\",\n \"America/Grenada\",\n \"America/Guadeloupe\",\n \"America/Guatemala\",\n \"America/Guayaquil\",\n \"America/Guyana\",\n \"America/Halifax\",\n \"America/Havana\",\n \"America/Hermosillo\",\n \"America/Indiana/Indianapolis\",\n \"America/Indiana/Knox\",\n \"America/Indiana/Marengo\",\n \"America/Indiana/Petersburg\",\n \"America/Indiana/Tell_City\",\n \"America/Indiana/Vevay\",\n \"America/Indiana/Vincennes\",\n \"America/Indiana/Winamac\",\n \"America/Inuvik\",\n \"America/Iqaluit\",\n \"America/Jamaica\",\n \"America/Juneau\",\n \"America/Kentucky/Louisville\",\n \"America/Kentucky/Monticello\",\n \"America/Kralendijk\",\n \"America/La_Paz\",\n \"America/Lima\",\n \"America/Los_Angeles\",\n \"America/Lower_Princes\",\n \"America/Maceio\",\n \"America/Managua\",\n \"America/Manaus\",\n \"America/Marigot\",\n \"America/Martinique\",\n \"America/Matamoros\",\n \"America/Mazatlan\",\n \"America/Menominee\",\n \"America/Merida\",\n \"America/Metlakatla\",\n \"America/Mexico_City\",\n \"America/Miquelon\",\n \"America/Moncton\",\n \"America/Monterrey\",\n \"America/Montevideo\",\n \"America/Montserrat\",\n \"America/Nassau\",\n \"America/New_York\",\n \"America/Nipigon\",\n \"America/Nome\",\n \"America/Noronha\",\n \"America/North_Dakota/Beulah\",\n \"America/North_Dakota/Center\",\n \"America/North_Dakota/New_Salem\",\n \"America/Ojinaga\",\n \"America/Panama\",\n \"America/Pangnirtung\",\n \"America/Paramaribo\",\n \"America/Phoenix\",\n \"America/Port-au-Prince\",\n \"America/Port_of_Spain\",\n \"America/Porto_Velho\",\n \"America/Puerto_Rico\",\n \"America/Punta_Arenas\",\n \"America/Rainy_River\",\n \"America/Rankin_Inlet\",\n \"America/Recife\",\n \"America/Regina\",\n \"America/Resolute\",\n \"America/Rio_Branco\",\n \"America/Santarem\",\n \"America/Santiago\",\n \"America/Santo_Domingo\",\n \"America/Sao_Paulo\",\n \"America/Scoresbysund\",\n \"America/Sitka\",\n \"America/St_Barthelemy\",\n \"America/St_Johns\",\n \"America/St_Kitts\",\n \"America/St_Lucia\",\n \"America/St_Thomas\",\n \"America/St_Vincent\",\n \"America/Swift_Current\",\n \"America/Tegucigalpa\",\n \"America/Thule\",\n \"America/Thunder_Bay\",\n \"America/Tijuana\",\n \"America/Toronto\",\n \"America/Tortola\",\n \"America/Vancouver\",\n \"America/Whitehorse\",\n \"America/Winnipeg\",\n \"America/Yakutat\",\n \"America/Yellowknife\"\n] as const;\nexport const IANA_TIMEZONES__ANTARCTICA = [\n \"Antarctica/Casey\",\n \"Antarctica/Davis\",\n \"Antarctica/DumontDUrville\",\n \"Antarctica/Macquarie\",\n \"Antarctica/Mawson\",\n \"Antarctica/McMurdo\",\n \"Antarctica/Palmer\",\n \"Antarctica/Rothera\",\n \"Antarctica/South_Pole\",\n \"Antarctica/Syowa\",\n \"Antarctica/Troll\",\n \"Antarctica/Vostok\",\n \"Arctic/Longyearbyen\",\n] as const;\nexport const IANA_TIMEZONES__ASIA = [\n \"Asia/Almaty\",\n \"Asia/Amman\",\n \"Asia/Anadyr\",\n \"Asia/Aqtau\",\n \"Asia/Aqtobe\",\n \"Asia/Ashgabat\",\n \"Asia/Atyrau\",\n \"Asia/Baghdad\",\n \"Asia/Baku\",\n \"Asia/Bangkok\",\n \"Asia/Barnaul\",\n \"Asia/Beirut\",\n \"Asia/Bishkek\",\n \"Asia/Brunei\",\n \"Asia/Chita\",\n \"Asia/Choibalsan\",\n \"Asia/Colombo\",\n \"Asia/Damascus\",\n \"Asia/Dhaka\",\n \"Asia/Dili\",\n \"Asia/Dubai\",\n \"Asia/Dushanbe\",\n \"Asia/Famagusta\",\n \"Asia/Gaza\",\n \"Asia/Hebron\",\n \"Asia/Ho_Chi_Minh\",\n \"Asia/Hong_Kong\",\n \"Asia/Hovd\",\n \"Asia/Irkutsk\",\n \"Asia/Jakarta\",\n \"Asia/Jayapura\",\n \"Asia/Jerusalem\",\n \"Asia/Kabul\",\n \"Asia/Kamchatka\",\n \"Asia/Karachi\",\n \"Asia/Kathmandu\",\n \"Asia/Khandyga\",\n \"Asia/Kolkata\",\n \"Asia/Krasnoyarsk\",\n \"Asia/Kuala_Lumpur\",\n \"Asia/Kuching\",\n \"Asia/Kuwait\",\n \"Asia/Macau\",\n \"Asia/Magadan\",\n \"Asia/Makassar\",\n \"Asia/Manila\",\n \"Asia/Muscat\",\n \"Asia/Nicosia\",\n \"Asia/Novokuznetsk\",\n \"Asia/Novosibirsk\",\n \"Asia/Omsk\",\n \"Asia/Oral\",\n \"Asia/Phnom_Penh\",\n \"Asia/Pontianak\",\n \"Asia/Pyongyang\",\n \"Asia/Qatar\",\n \"Asia/Qostanay\",\n \"Asia/Qyzylorda\",\n \"Asia/Riyadh\",\n \"Asia/Sakhalin\",\n \"Asia/Samarkand\",\n \"Asia/Seoul\",\n \"Asia/Shanghai\",\n \"Asia/Singapore\",\n \"Asia/Srednekolymsk\",\n \"Asia/Taipei\",\n \"Asia/Tashkent\",\n \"Asia/Tbilisi\",\n \"Asia/Tehran\",\n \"Asia/Thimphu\",\n \"Asia/Tokyo\",\n \"Asia/Tomsk\",\n \"Asia/Ulaanbaatar\",\n \"Asia/Urumqi\",\n \"Asia/Ust-Nera\",\n \"Asia/Vientiane\",\n \"Asia/Vladivostok\",\n \"Asia/Yakutsk\",\n \"Asia/Yangon\",\n \"Asia/Yekaterinburg\",\n \"Asia/Yerevan\",\n] as const;\nexport const IANA_TIMEZONES__ATLANTIC = [\n \"Atlantic/Azores\",\n \"Atlantic/Bermuda\",\n \"Atlantic/Canary\",\n \"Atlantic/Cape_Verde\",\n \"Atlantic/Faroe\",\n \"Atlantic/Madeira\",\n \"Atlantic/Reykjavik\",\n \"Atlantic/South_Georgia\",\n \"Atlantic/St_Helena\",\n \"Atlantic/Stanley\",\n] as const;\nexport const IANA_TIMEZONES__AUSTRALIA = [\n \"Australia/Adelaide\",\n \"Australia/Brisbane\",\n \"Australia/Broken_Hill\",\n \"Australia/Currie\",\n \"Australia/Darwin\",\n \"Australia/Eucla\",\n \"Australia/Hobart\",\n \"Australia/Lindeman\",\n \"Australia/Lord_Howe\",\n \"Australia/Melbourne\",\n \"Australia/Perth\",\n \"Australia/Sydney\",\n] as const;\n\nexport const IANA_TIMEZONES__EUROPE = [\n \"Europe/Amsterdam\",\n \"Europe/Andorra\",\n \"Europe/Astrakhan\",\n \"Europe/Athens\",\n \"Europe/Belgrade\",\n \"Europe/Berlin\",\n \"Europe/Brussels\",\n \"Europe/Bucharest\",\n \"Europe/Budapest\",\n \"Europe/Chisinau\",\n \"Europe/Copenhagen\",\n \"Europe/Dublin\",\n \"Europe/Gibraltar\",\n \"Europe/Guernsey\",\n \"Europe/Helsinki\",\n \"Europe/Isle_of_Man\",\n \"Europe/Istanbul\",\n \"Europe/Jersey\",\n \"Europe/Kaliningrad\",\n \"Europe/Kiev\",\n \"Europe/Kirov\",\n \"Europe/Lisbon\",\n \"Europe/Ljubljana\",\n \"Europe/London\",\n \"Europe/Luxembourg\",\n \"Europe/Madrid\",\n \"Europe/Malta\",\n \"Europe/Mariehamn\",\n \"Europe/Minsk\",\n \"Europe/Monaco\",\n \"Europe/Moscow\",\n \"Europe/Oslo\",\n \"Europe/Paris\",\n \"Europe/Podgorica\",\n \"Europe/Prague\",\n \"Europe/Riga\",\n \"Europe/Rome\",\n \"Europe/Samara\",\n \"Europe/San_Marino\",\n \"Europe/Sarajevo\",\n \"Europe/Simferopol\",\n \"Europe/Skopje\",\n \"Europe/Sofia\",\n \"Europe/Stockholm\",\n \"Europe/Tallinn\",\n \"Europe/Tirane\",\n \"Europe/Ulyanovsk\",\n \"Europe/Uzhgorod\",\n \"Europe/Vaduz\",\n \"Europe/Vatican\",\n \"Europe/Vienna\",\n \"Europe/Vilnius\",\n \"Europe/Volgograd\",\n \"Europe/Warsaw\",\n \"Europe/Zagreb\",\n \"Europe/Zaporozhye\",\n \"Europe/Zurich\",\n] as const;\nexport const IANA_TIMEZONES__INDIAN = [\n \"Indian/Antananarivo\",\n \"Indian/Chagos\",\n \"Indian/Christmas\",\n \"Indian/Cocos\",\n \"Indian/Comoro\",\n \"Indian/Kerguelen\",\n \"Indian/Mahe\",\n \"Indian/Maldives\",\n \"Indian/Mauritius\",\n \"Indian/Mayotte\",\n \"Indian/Reunion\",\n] as const;\nexport const IANA_TIMEZONES__PACIFIC = [\n \"Pacific/Apia\",\n \"Pacific/Auckland\",\n \"Pacific/Bougainville\",\n \"Pacific/Chatham\",\n \"Pacific/Chuuk\",\n \"Pacific/Easter\",\n \"Pacific/Efate\",\n \"Pacific/Enderbury\",\n \"Pacific/Fakaofo\",\n \"Pacific/Fiji\",\n \"Pacific/Funafuti\",\n \"Pacific/Galapagos\",\n \"Pacific/Gambier\",\n \"Pacific/Guadalcanal\",\n \"Pacific/Guam\",\n \"Pacific/Honolulu\",\n \"Pacific/Kiritimati\",\n \"Pacific/Kosrae\",\n \"Pacific/Kwajalein\",\n \"Pacific/Majuro\",\n \"Pacific/Marquesas\",\n \"Pacific/Midway\",\n \"Pacific/Nauru\",\n \"Pacific/Niue\",\n \"Pacific/Norfolk\",\n \"Pacific/Noumea\",\n \"Pacific/Pago_Pago\",\n \"Pacific/Palau\",\n \"Pacific/Pitcairn\",\n \"Pacific/Pohnpei\",\n \"Pacific/Port_Moresby\",\n \"Pacific/Rarotonga\",\n \"Pacific/Saipan\",\n \"Pacific/Tahiti\",\n \"Pacific/Tarawa\",\n \"Pacific/Tongatapu\",\n \"Pacific/Wake\",\n \"Pacific/Wallis\",\n] as const;\n\nexport const IANA_TIMEZONES__OTHER = [\n \"UTC\",\n \"Zulu\"\n] as const;\n\nexport const IANA_TIMEZONES = [\n ...IANA_TIMEZONES__AFRICA,\n ...IANA_TIMEZONES__AMERICA,\n ...IANA_TIMEZONES__ANTARCTICA,\n ...IANA_TIMEZONES__ASIA,\n ...IANA_TIMEZONES__ATLANTIC,\n ...IANA_TIMEZONES__AUSTRALIA,\n ...IANA_TIMEZONES__EUROPE,\n ...IANA_TIMEZONES__INDIAN,\n ...IANA_TIMEZONES__OTHER,\n ...IANA_TIMEZONES__PACIFIC\n] as const;\n","type AnyObject = Record<never, unknown> | Record<string | symbol, unknown>;\n\ntype AnyFunction<\n TArgs extends readonly unknown[] = unknown[],\n TReturn = unknown,\n TProps extends AnyObject = AnyObject,\n> = TProps extends Record<never, unknown>\n ? (...args: TArgs) => TReturn\n : ((...args: TArgs) => TReturn) & TProps;\n\n/**\n * **wide**\n *\n * Provides a dictionary of _wide_ types; in most cases you should\n * prefer the **kind** API.\n */\nexport const WideAssignment = {\n boolean: () => \"<<boolean>>\" as unknown as boolean,\n string: () => \"<<string>>\" as string,\n number: () => \"<<number>>\" as unknown as number,\n symbol: () => \"<<symbol>>\" as unknown as symbol,\n null: () => \"<<null>>\" as unknown as null,\n function: () => \"<<function>>\" as unknown as AnyFunction,\n tuple: () => \"<<tuple>>\" as unknown as readonly unknown[],\n singularTuple: () => [\"<<tuple>>\"] as unknown as [readonly unknown[]],\n object: () => \"<<object>>\" as AnyObject,\n emptyObject: () => \"<<empty-object>>\" as Record<never, unknown>,\n undefined: () => \"<<undefined>>\" as unknown as undefined,\n /**\n * run-time value is a type token for `unknown` and type is of course `unknown`\n */\n unknown: () => \"<<unknown>>\" as unknown,\n nothing: (): null | undefined => \"<<nothing>>\" as unknown as (null | undefined),\n // eslint-disable-next-line ts/no-empty-object-type\n something: () => \"<<something>>\" as unknown as {},\n} as const;\n\ntype Scalar = string | number | boolean | null | symbol;\ntype WideApi = typeof WideAssignment;\nconst wide = WideAssignment as unknown as WideApi;\n\nfunction entry<\n TRefType extends ((kb: WideApi) => unknown),\n TDesc extends string,\n TParams extends readonly (Scalar | ((kb: WideApi) => unknown))[],\n>(refType: TRefType, desc: TDesc, ...params: TParams) {\n return [\n refType(wide as unknown as WideApi) as ReturnType<TRefType>,\n desc as TDesc,\n params.map(i => typeof (i) === \"function\"\n ? i(wide)\n : i,\n ) as unknown as TParams,\n ] as [ReturnType<TRefType>, TDesc, TParams];\n}\n\n/**\n * **TYPE_COMPARISONS**\n *\n * A dictionary of all _comparison_ operations along with their `RefType`, description,\n * and `Params`.\n */\nexport const TYPE_COMPARISONS = {\n Extends: entry(t => t.unknown(), \"extends the type\", t => t.unknown()),\n NotExtends: entry(t => t.unknown(), \"does not extent the type\", t => t.unknown()),\n Equals: entry(t => t.unknown(), \"equals the type\", t => t.unknown()),\n NotEqual: entry(t => t.unknown(), \"does not equal the type\", t => t.unknown()),\n Truthy: entry(t => t.unknown(), \"must be a truthy value\"),\n Falsy: entry(t => t.unknown(), \"must be a falsy value\"),\n IsSomething: entry(t => t.unknown(), \"must be 'something' (aka, not null or undefined)\"),\n IsNothing: entry(t => t.unknown(), \"must be 'nothing' (aka, null or undefined)\"),\n IsString: entry(t => t.string(), \"must extend a string type\"),\n IsNumber: entry(t => t.number(), \"must extend a number type\"),\n IsBoolean: entry(t => t.boolean(), \"must extend a boolean type\"),\n // numeric\n GreaterThan: entry(t => t.number(), \"must be a numeric literal greater than [[0]]\", t => t.number()),\n LessThan: entry(t => t.number(), \"must be a numeric literal less than [[0]]\", t => t.number()),\n // string\n StartsWith: entry(t => t.string(), \"must be a string literal that starts with '[[0]]'\", t => t.string()),\n EndsWith: entry(t => t.string(), \"must be a string literal that ends with '[[0]]'\", t => t.string()),\n Includes: entry(t => t.string(), \"must be a string literal that includes the substring '[[0]]'\", t => t.string()),\n // function\n ReturnsSomething: entry(t => t.function(), \"must be a function which returns 'something' (aka, not null or undefined)\"),\n ReturnsNothing: entry(t => t.function(), \"must be a function which returns 'nothing' (aka, null or undefined)\"),\n ReturnsTrue: entry(t => t.function(), \"must be a function which returns 'true'\"),\n ReturnsFalse: entry(t => t.function(), \"must be a function which returns 'false'\"),\n ReturnsTruthy: entry(t => t.function(), \"must be a function which returns a 'truthy' value\"),\n ReturnsFalsy: entry(t => t.function(), \"must be a function which returns a 'falsy' value\"),\n ReturnsExtends: entry(t => t.unknown(), \"must be a function which returns a value which extends [[0]]\", t => t.unknown()),\n ReturnsEquals: entry(t => t.unknown(), \"must be a function which returns a value which equals [[0]]\", t => t.unknown()),\n Contains: entry(t => t.tuple(), \"must be a tuple and have elements that extends the value [[0]]\", t => t.unknown()),\n // TODO: get the below working`\n ContainsSome: entry(t => t.tuple(), \"must be a tuple and have elements that extends the value [[0]]\", t => t.singularTuple()),\n\n} as const;\n","export const FALSY_TYPE_KINDS = [\n \"undefined\",\n \"null\",\n] as const;\n\nexport const LITERAL_TYPE_KINDS = [\n \"true\",\n \"false\",\n \"stringLiteral\",\n \"numericLiteral\",\n] as const;\n\nexport const WIDE_TYPE_KINDS = [\n \"string\",\n \"number\",\n \"boolean\",\n] as const;\n\nexport const NARROW_CONTAINER_TYPE_KINDS = [\n \"object\",\n \"explicitFunctions\",\n \"fnType\",\n \"fnWithDict\",\n \"tuple\",\n \"union\",\n \"intersection\",\n \"arrayOf\",\n] as const;\n\nexport const WIDE_CONTAINER_TYPE_KINDS = [\n \"anyArray\",\n \"anyObject\",\n \"unknownObject\",\n \"anyFunction\",\n \"emptyObject\",\n] as const;\n\n/**\n * A full list of the _types_ of types we have within the `Type` namespace.\n */\nexport const TYPE_KINDS = [\n ...FALSY_TYPE_KINDS,\n ...WIDE_TYPE_KINDS,\n ...LITERAL_TYPE_KINDS,\n ...NARROW_CONTAINER_TYPE_KINDS,\n ...WIDE_CONTAINER_TYPE_KINDS,\n] as const;\n","/**\n * **Type Tokens** which have zero configuration elements.\n */\nexport const TT_ATOMICS = [\n \"undefined\",\n \"null\",\n \"boolean\",\n \"true\",\n \"false\",\n] as const;\n\n/**\n * **Type Tokens** which have a literal variant which represents\n * the _single_ configuration of this type which is available.\n */\nexport const TT_SINGLETONS = [\n \"string\",\n \"number\",\n] as const;\n\nexport const TT_SETS = [\n \"string-set\",\n \"numeric-set\",\n \"fn-set\",\n \"union-set\",\n] as const;\n\n/**\n * **Type Tokens** which represent _functions_ (either the typical\n * variety or Generator functions).\n */\nexport const TT_FUNCTIONS = [\n \"fn\",\n \"gen\",\n] as const;\n\n/**\n * **Type Tokens** which _contain_ other **Type Tokens** to make up their\n * identity.\n */\nexport const TT_CONTAINERS = [\n \"rec\",\n \"arr\",\n \"set\",\n \"map\",\n \"union\",\n \"obj\",\n \"tuple\",\n] as const;\n\nexport const TT_KIND_VARIANTS = [\n ...TT_ATOMICS,\n ...TT_CONTAINERS,\n ...TT_FUNCTIONS,\n ...TT_SETS,\n ...TT_SINGLETONS,\n] as const;\n\nexport const TT_START = \"<<\" as const;\nexport const TT_STOP = \">>\" as const;\nexport const TT_DELIMITER = \"::\" as const;\n","import type { If, IsSingleChar, Narrowable } from \"inferred-types/types\";\nimport { Never } from \"inferred-types/constants\";\n\ntype Callback<T extends string, R> = <V extends T>(v: V) => R;\n\nconst def_if = <V extends string>(v: V) => v;\nconst def_else = () => Never;\n\nexport function ifChar<\n T extends string,\n IF extends Narrowable,\n ELSE extends Narrowable,\n>(\n ch: T,\n callback_if_match: Callback<T, IF> = def_if as Callback<T, IF>,\n callback_not_match: Callback<T, ELSE> = def_else as Callback<T, ELSE>,\n) {\n return (\n ch.length === 1\n ? callback_if_match(ch)\n : callback_not_match(ch)\n ) as If<IsSingleChar<T>, IF, ELSE>;\n}\n","import type { Container, If, IsContainer, Narrowable } from \"inferred-types/types\";\nimport { isArray, isDictionary } from \"inferred-types/runtime\";\n\nexport function ifContainer<\n TVal extends Narrowable,\n TIf extends Narrowable,\n TElse extends Narrowable,\n>(\n value: TVal,\n ifContainer: <V extends TVal & Container>(val: V) => TIf,\n notContainer: <V extends Exclude<TVal, Container>>(val: V) => TElse,\n): If<IsContainer<TVal>, TIf, TElse> {\n return (\n isDictionary(value) || isArray(value)\n ? ifContainer(value)\n : notContainer(value as Exclude<TVal, Container>)\n ) as unknown as If<IsContainer<TVal>, TIf, TElse>;\n}\n","import type { IsEmpty, Narrowable } from \"inferred-types/types\";\nimport { isEmpty } from \"inferred-types/runtime\";\n\n/**\n * **ifEmpty(val, empty, notEmpty)**\n *\n * A boolean branching operator\n */\nexport function ifEmpty<\n T,\n TEmpty extends Narrowable,\n TNotEmpty extends Narrowable,\n>(\n val: T,\n empty: TEmpty,\n notEmpty: TNotEmpty,\n) {\n return (\n isEmpty(val) ? empty : notEmpty\n ) as IsEmpty<T> extends true ? TEmpty : TNotEmpty;\n}\n","import type { If, IsEqual, IsWideType, Narrowable, Or } from \"inferred-types/types\";\n\ntype Rtn<\n TComparator,\n TVal,\n TIf extends <T extends TComparator & TVal>(val: T) => unknown,\n TElse extends <T extends Exclude<TVal, TComparator>>(val: T) => unknown,\n> = Or<[IsWideType<TComparator>, IsWideType<TVal>]> extends true\n ? ReturnType<TIf> | ReturnType<TElse>\n : If<IsEqual<TComparator, TVal>, ReturnType<TIf>, ReturnType<TElse>>;\n\ntype IfEqualTest<TComparator> = <\n TVal extends Narrowable,\n TIf extends <T extends TComparator & TVal>(val: T) => unknown,\n TElse extends <T extends Exclude<TVal, TComparator>>(val: T) => unknown,\n>(\n val: TVal,\n ifTrue: TIf,\n ifFalse: TElse\n) => Rtn<TComparator, TVal, TIf, TElse>;\n\nexport function ifEqual<\n TComparator extends Narrowable,\n>(\n comparator: TComparator,\n): IfEqualTest<TComparator> {\n return <\n TVal extends Narrowable,\n TIf extends <T extends TComparator & TVal>(val: T) => unknown,\n TElse extends <T extends Exclude<TVal, TComparator>>(val: T) => unknown,\n >(\n val: TVal,\n ifTrue: TIf,\n ifFalse: TElse = (v => v) as TElse,\n ) => {\n if (JSON.stringify(comparator) === JSON.stringify(val)) {\n return ifTrue(val as any) as Rtn<TComparator, TVal, TIf, TElse>;\n }\n else {\n return ifFalse(val as any) as Rtn<TComparator, TVal, TIf, TElse>;\n }\n };\n}\n","import type { IsError, Narrowable } from \"inferred-types/types\";\nimport { isError } from \"inferred-types/runtime\";\n\n/**\n * **ifError(val, wasError, wasNotError)**\n *\n * A boolean branching operator\n */\nexport function ifError<\n T extends Narrowable,\n E extends Narrowable,\n NE extends Narrowable,\n>(\n val: T,\n wasError: E,\n wasNotError: NE\n) {\n return (\n isError(val)\n ? wasError\n : wasNotError\n ) as IsError<T> extends true ? E : NE;\n}\n","import type { If, IsFalse, Narrowable } from \"inferred-types/types\";\nimport { isFalse } from \"inferred-types/runtime\";\n\n/**\n * **ifTrue**\n *\n * Strongly type-aware conditional statement which checks whether a value is\n * a _true_ and returns one of two values (strongly typed) based on the evaluation\n * of this criteria.\n *\n * @param val the value being tested\n * @param ifVal the value (strongly typed) returned if val is _true_ value\n * @param elseVal the value (strongly typed) returned if val is NOT a _true_ value\n *\n * Note: at runtime there's no way to distinguish if the value was widely or loosely\n * typed so unlike the type utility there is no \"MAYBE\" state but if a wide type if\n * encountered the _type_ will the union of `IF` and `ELSE`.\n */\nexport function ifFalse<T extends boolean, IF extends Narrowable, ELSE extends Narrowable>(\n val: T,\n ifVal: IF,\n elseVal: ELSE,\n) {\n return (isFalse(val) ? ifVal : elseVal) as If<IsFalse<T>, IF, ELSE>;\n}\n","import type {\n IsFunction,\n Narrowable,\n TypedFunction,\n} from \"inferred-types/types\";\nimport { isFunction } from \"inferred-types/runtime\";\n\n/**\n * **ifFunction**(value, isFn, notFn)\n *\n * Runtime utility which assesses whether `value` is a function and provides\n * two callback hooks for both outcome.\n *\n * **Related:** `isFunction`\n */\nexport function ifFunction<\n TValue extends Narrowable | TypedFunction,\n Fn extends Narrowable,\n NotFn extends Narrowable,\n>(\n value: TValue,\n isFnCallback: (fn: TValue & TypedFunction) => Fn,\n notFnCallback: (payload: Exclude<TValue, TypedFunction>) => NotFn,\n) {\n return (\n isFunction(value)\n ? isFnCallback(value)\n : notFnCallback(value as any)\n ) as unknown as IsFunction<TValue> extends true ? Fn : NotFn;\n}\n","import type {\n Container,\n Contains,\n If,\n Keys,\n Narrowable,\n} from \"inferred-types/types\";\nimport { hasIndexOf } from \"inferred-types/runtime\";\n\nexport function ifHasKey<\n TContainer extends Container,\n TKey extends PropertyKey,\n IF extends Narrowable,\n ELSE extends Narrowable,\n>(container: TContainer, key: TKey, hasKey: <V extends TContainer & Record<TKey, unknown>>(val: V) => IF, doesNotHaveKey: <N extends Exclude<TContainer, TKey>>(nonArr: N) => ELSE) {\n return (\n hasIndexOf(container, key)\n ? hasKey(container as TContainer & Record<TKey, unknown>)\n : doesNotHaveKey(container as Exclude<TContainer, TKey>)\n ) as unknown as If<Contains<Keys<TContainer>, TKey>, IF, ELSE>;\n}\n","import type {\n If,\n IfLength,\n IsArray,\n Narrowable,\n Scalar,\n Tuple,\n} from \"inferred-types/types\";\n\n/**\n * **ifLength**(val,length, ifVal, elseVal)\n *\n * Runtime utility which tests whether the `value` passed in is both an array/tuple\n * and that it's length is equal to `length`. It then provides two callbacks with\n * narrowed types for these two conditions.\n *\n * @param value the value being tested\n * @param length\n * @param ifVal the value (strongly typed) returned if val is of appropriate length\n * @param elseVal the value (strongly typed) returned if val is NOT of given length\n */\nexport function ifLength<\n TList extends readonly unknown[],\n TLen extends number,\n IF extends Narrowable | Tuple,\n ELSE extends Narrowable | Tuple,\n>(\n value: TList,\n length: TLen,\n ifVal: <V extends Exclude<TList, Scalar | undefined> & Tuple>(v: V) => IF,\n elseVal: <V extends If<IsArray<TList>, TList, Exclude<TList, Tuple>>>(v: V) => ELSE,\n) {\n return (\n Array.isArray(value) && (value as unknown[]).length === length\n\n ? ifVal(value as any)\n : elseVal(value as Exclude<TList, Tuple>)\n ) as unknown as IfLength<TList, TLen, IF, ELSE>;\n}\n","import type { If, IsNull, Narrowable, Not } from \"inferred-types/types\";\nimport { isNull } from \"inferred-types/runtime\";\n\n/**\n * **ifNotNull**(val,IF,ELSE)\n *\n * Strongly type-aware conditional statement which checks whether a value is\n * Null and returns one of two values (strongly typed) based on the evaluation\n * of this criteria.\n *\n * @param val the value being tested\n * @param ifVal callback fn which responds when _val_ is **null**\n * @param elseVal callback fn which responds when _val_ is not **null**\n */\nexport function ifNotNull<\n T extends Narrowable,\n IF extends Narrowable,\n ELSE extends Narrowable,\n>(\n val: T,\n ifVal: (v: Exclude<T, null>) => IF,\n elseVal: () => ELSE,\n) {\n return (\n isNull(val)\n ? elseVal()\n : ifVal(val as Exclude<T, null>)\n ) as unknown as If<Not<IsNull<T>>, IF, ELSE>;\n}\n","import type { IsNull, Narrowable } from \"inferred-types/types\";\nimport { isNull } from \"inferred-types/runtime\";\n\n/**\n * **ifNull**(val,IF,ELSE)\n *\n * Strongly type-aware conditional statement which checks whether a value is\n * Null and returns one of two values (strongly typed) based on the evaluation\n * of this criteria.\n *\n * @param val the value being tested\n * @param ifVal callback fn which responds when _val_ is **null**\n * @param elseVal callback fn which responds when _val_ is not **null**\n */\nexport function ifNull<\n T extends Narrowable,\n IF extends Narrowable,\n ELSE extends Narrowable,\n>(\n val: T,\n ifVal: () => IF,\n elseVal: (v: Exclude<T, null>) => ELSE,\n) {\n return (\n isNull(val)\n ? ifVal()\n : elseVal(val as unknown as Exclude<T, null>)\n ) as IsNull<T> extends true ? IF : ELSE;\n}\n","import type { IsNumber, Narrowable } from \"inferred-types/types\";\nimport { isNumber } from \"inferred-types/runtime\";\n\n/**\n * **ifNumber**(val, ifVal, elseVal)\n *\n * Strongly type-aware conditional statement which checks whether a value is\n * a _number_ and returns one of two values (strongly typed) based on the evaluation\n * of this criteria.\n *\n * @param val the value being tested\n * @param ifVal the value (strongly typed) returned if val is number\n * @param elseVal the value (strongly typed) returned if val is NOT a number\n */\nexport function ifNumber<\n TContent extends Narrowable,\n TIf extends Narrowable,\n TElse extends Narrowable,\n>(\n val: TContent,\n ifVal: <V extends TContent & number>(v: V) => TIf,\n elseVal: <V extends Exclude<TContent, number>>(v: V) => TElse,\n) {\n return (\n isNumber(val)\n ? ifVal(val as TContent & number)\n : elseVal(val as Exclude<TContent, number>)\n ) as unknown as IsNumber<TContent> extends true ? TIf : TElse;\n}\n","import type { If, IsDictionary, Narrowable } from \"inferred-types/types\";\nimport { isDictionary } from \"inferred-types/runtime\";\n\nexport function ifObject<\n T extends Narrowable,\n IF extends Narrowable,\n ELSE extends Narrowable,\n>(\n val: T,\n ifObj: IF,\n notObj: ELSE,\n): If<IsDictionary<T>, IF, ELSE> {\n return (isDictionary(val) ? ifObj : notObj) as If<IsDictionary<T>, IF, ELSE>;\n}\n","import type { Narrowable } from \"inferred-types/types\";\n\n/**\n * **ifSameType**(value, comparator, same, notSame)\n *\n * Runtime utility function which compares the variable `value` to a comparison type\n * and based on whether they are the same type, it will call one of the two provided\n * callback functions: `same` or `notSame`.\n */\nexport function ifSameType<\n TValue extends Narrowable,\n TType extends string | number | boolean | object,\n IF extends Narrowable,\n ELSE extends Narrowable,\n>(\n value: TValue,\n comparator: TType,\n same: <T extends TType & TValue>(v: T) => IF,\n notSame: <T extends Exclude<TValue, TType>>(v: T) => ELSE,\n) {\n return (\n // runtime values match\n (\n typeof value === typeof comparator\n ? same(value as TType & TValue)\n : notSame(value as Exclude<TValue, TType>)\n ) as TValue extends TType ? IF : ELSE\n );\n}\n","import type {\n Dictionary,\n If,\n IsScalar,\n Narrowable,\n Scalar,\n} from \"inferred-types/types\";\nimport { isScalar } from \"inferred-types/runtime\";\n\n/**\n * **ifScalar**(value, ifCallback, notCallback)\n *\n * A runtime utility which branches based on whether\n * the type is a `T` is a _scalar_ value or not.\n *\n * - each branch is provided an _optional_ callback to further\n * refine the type.\n * ```ts\n * const val: number | string = 42;\n * const narrow = ifScalar(val);\n * ```\n */\nexport function ifScalar<\n T extends Narrowable,\n TIf extends Narrowable,\n TElse extends Narrowable,\n>(\n value: T,\n ifCallback: <\n V extends Exclude<T, undefined | Dictionary | unknown[]>,\n >(v: V\n ) => TIf,\n notCallback: <V extends Exclude<T, Scalar>>(v: V) => TElse,\n) {\n const result = isScalar(value)\n ? ifCallback(\n value as Exclude<T, undefined | Dictionary | unknown[]>,\n )\n : notCallback(value as Exclude<T, Scalar>);\n return result as typeof result & If<IsScalar<T>, TIf, TElse>;\n}\n","import type { If, IsFalse, IsString, IsTrue, Narrowable } from \"inferred-types/types\";\n\n/**\n * **ifString**\n *\n * Strongly type-aware conditional statement which checks whether a value is\n * a _string_ and returns one of two values (strongly typed) based on the evaluation\n * of this criteria.\n *\n * @param val the value being tested for being a string\n * @param ifVal the value (strongly typed) returned if val is _string_\n * @param elseVal the value (strongly typed) returned if val is NOT a _string\n */\nexport function ifString<\n TContent,\n TIf extends Narrowable,\n TElse extends Narrowable,\n>(\n val: TContent,\n ifVal: <V extends TContent & string>(t: V & TContent) => TIf,\n elseVal: <V extends Exclude<TContent, string>>(v: V & TContent) => TElse,\n) {\n return (\n typeof val === \"string\"\n ? ifVal(val as string & TContent)\n : elseVal(val as Exclude<TContent, string>)\n ) as unknown as\n If<\n IsTrue<IsString<TContent>>,\n TIf,\n If<IsFalse<IsString<TContent>>, TElse, TIf | TElse>\n >;\n}\n","import type { IsFalse, IsTrue, Narrowable } from \"inferred-types/types\";\nimport { isTrue } from \"inferred-types/runtime\";\n\n/**\n * **ifTrue**\n *\n * Strongly type-aware conditional statement which checks whether a value is\n * _true_. Valid outcomes are:\n *\n * - **IF** - returned when T is narrowly typed as `true`\n * - **ELSE** - returned when T is narrowly typed as `false`\n * - **IF | ELSE** - returned when T is a `boolean` type\n */\nexport function ifTrue<\n TContent extends Narrowable,\n TIf extends Narrowable,\n TElse extends Narrowable,\n>(\n val: TContent,\n ifVal: <V extends TContent & true>(val: V) => TIf,\n elseVal: <V extends Exclude<TContent, true>>(val: V) => TElse,\n) {\n return (\n //\n isTrue(val)\n ? ifVal(val as TContent & true)\n : elseVal(val as Exclude<TContent, true>)\n ) as unknown as\n [IsTrue<TContent>] extends [true]\n ? TIf\n : [IsFalse<TContent>] extends [true] ? TElse : TIf | TElse;\n}\n","import type { IsUndefined, Narrowable } from \"inferred-types/types\";\nimport { isDefined, isUndefined } from \"inferred-types/runtime\";\n\n/**\n * **ifUndefined**\n *\n * Strongly type-aware conditional statement which checks whether a value is\n * _undefined_ and returns one of two values (strongly typed) based on the evaluation\n * of this criteria.\n *\n * @param val the value being tested\n * @param ifUndefined the value (strongly typed) returned if val is `undefined`\n * @param ifDefined the value (strongly typed) returned if val is NOT `undefined`\n */\nexport function ifUndefined<\n T extends Narrowable,\n IF extends Narrowable = undefined,\n ELSE extends Narrowable = Exclude<T, undefined>,\n>(\n val: T,\n ifUndefined: () => IF,\n ifDefined: <V extends Exclude<T, undefined>>(v: V) => ELSE,\n) {\n return (\n isUndefined(val) ? ifUndefined() : ifDefined(val as Exclude<T, undefined>)\n ) as IsUndefined<T> extends true ? IF : ELSE;\n}\n\nexport function ifDefined<\n T extends Narrowable,\n IF extends Narrowable = Exclude<T, undefined>,\n ELSE extends Narrowable = undefined,\n>(\n val: T,\n ifVal: <V extends Exclude<T, undefined>>(v: V) => IF,\n elseVal: () => ELSE,\n) {\n return isDefined(val) ? ifVal : elseVal;\n}\n","import type {\n Dictionary,\n Narrowable,\n OptionalParamFn,\n TypedFunction,\n} from \"inferred-types/types\";\nimport { isDictionary, isFunction } from \"inferred-types/runtime\";\n\nexport function isEscapeFunction<T>(val: T): val is T & (() => unknown) {\n return isFunction(val) && \"escape\" in val && val.escape === true;\n}\n\n/**\n * **isOptionalParamFunction**`(val)`\n *\n * A type guard which ensures that the value passed in is not only a _function_\n * but also has the `optionalParam` value set to **true** indicating that it\n * is safe to be called _without_ parameters.\n *\n * **Note:** this is similar to an \"escape function\" but whereas an API can\n * only have one escape function, an API may have as many ze\n */\nexport function isOptionalParamFunction<T>(val: T): val is T & OptionalParamFn {\n return isFunction(val) && \"optionalParams\" in val && val.optionalParams === true;\n}\n\n/**\n * **isApi**`(val)`\n *\n * Type guard which validates that the value passed in is an `Api` type\n * with \"surface\" and \"_kind\" property.\n *\n * **Related:** `isFluentApi()`\n */\nexport function isApi<T extends Narrowable>(api: T): api is T & { __kind: \"api\"; surface: Dictionary | TypedFunction } {\n return isDictionary(api) && \"surface\" in api && \"_kind\" in api && api._kind === \"api\";\n}\n\n/**\n * **isApiSurface**`(val)`\n *\n * A type guard which tests whether the value passed in is the SurfaceArea\n * of an API (or could be).\n */\nexport function isApiSurface<T>(val: T): val is T & (Dictionary | TypedFunction) {\n return isDictionary(val) && Object.keys(val).some(k => isEscapeFunction(val[k]));\n}\n","import { isBoolean } from \"inferred-types/runtime\";\n\n/**\n * **isArray**(value)\n *\n * Type guard to detect if the type is an array (readonly or regular)\n */\nexport function isArray(value: unknown): value is unknown[] {\n return Array.isArray(value) === true;\n}\n\n/**\n * **isBooleanArray**(value)\n *\n * Type guard to detect if the type is an array of strings (readonly or regular)\n */\nexport function isBooleanArray(value: unknown): value is boolean[] {\n return isArray(value) && value.every(i => isBoolean(i));\n}\n","import type { Narrowable } from \"inferred-types/types\";\nimport { isArray, isBoolean, isDictionary, isNull, isNumber, isString, isUndefined } from \"inferred-types/runtime\";\n\nexport function isNarrowableArray(val: unknown): val is readonly Narrowable[] {\n return isArray(val) && (\n val.every(\n i => isString(i) || isNumber(i) || isDictionary(i) || isNull(i) || isUndefined(i) || isBoolean(i) || typeof i === \"symbol\"\n )\n );\n}\n","import type { Tuple } from \"inferred-types/types\";\n\n/**\n * **isReadonlyArray**(value)\n *\n * Type guard to detect if the type is an array (readonly).\n *\n * Note: at runtime we can't discern between a readonly array\n * and a normal one. If author is aware, however, that an array\n * indicates a readonly array then this type-guard will resolve\n * to a cleaner type.\n */\nexport function isReadonlyArray<\n T,\n>(value: T): value is Readonly<Exclude<T, undefined | string | null | boolean | number>> & Tuple {\n return (Array.isArray(value) === true);\n}\n","import { isString } from \"inferred-types/runtime\";\n\n/**\n * Type guard which validates that the passed in `val` is a string array.\n */\nexport function isStringArray(val: unknown): val is string[] {\n return Array.isArray(val) && val.every(i => isString(i));\n}\n","import { isNumber, isString } from \"runtime/type-guards\";\n\n/**\n * Type guard which validates that the passed in `val` is an array of\n * string or numeric values.\n */\nexport function isStringOrNumericArray(val: unknown): val is readonly (string | number)[] {\n return Array.isArray(val) && val.every(i => isString(i) || isNumber(i));\n}\n","import type { ComparisonOperation } from \"inferred-types/types\";\nimport { COMPARISON_OPERATIONS } from \"inferred-types/constants\";\nimport { isString } from \"runtime/type-guards\";\n\n/**\n * Type guard which checks whether `op` is a `ComparisonOperation`.\n */\nexport function isComparisonOperation(\n op: unknown\n): op is ComparisonOperation {\n return isString(op)\n && Object.values(COMPARISON_OPERATIONS).includes(op as any);\n}\n","import type { ComparisonOperation, GetComparisonParams } from \"inferred-types/types\";\nimport { isComparisonOperation } from \"runtime/type-guards\";\n\n/**\n * **isValidComparisonParams**`(op, params)`\n *\n * Type guard that validates the parameters passed in are valid for the given\n * operation.\n */\nexport function isValidComparisonParams<\n TOp extends ComparisonOperation,\n TParams extends readonly unknown[]\n>(op: TOp, params: TParams): params is TParams & GetComparisonParams<TOp> {\n return !!isComparisonOperation(op);\n}\n","/**\n * A type guard which validates whether the passed in value is a JavaScript Date object.\n */\nexport function isDate(val: unknown): val is Date {\n return val instanceof Date;\n}\n","import type { DateLike } from \"inferred-types/types\";\nimport { isDate, isInteger, isIsoDate, isIsoDateTime, isLuxonDate, isMoment, isNumber, isString, isTemporalDate } from \"runtime/type-guards\";\n\n/**\n * A type guard which checks if `val` is _date like_:\n *\n * - a number (or `NumberLike`) and therefore assumed to be an Epoch timestamp\n * - a string in the shape of the ISO 8601 specification\n * - an object in the shape of:\n * - Javascript Date object\n * - DateFNS Date object\n * - MomentJS Date object\n * - Luxon Date object\n */\nexport function isDateLike(val: unknown): val is DateLike {\n return (\n (isNumber(val) && isInteger(val) && val > 0) // epoch\n || (isString(val) && (isIsoDate(val) || isIsoDateTime(val))) // ISO\n || (\n isDate(val)\n || isMoment(val)\n || isLuxonDate(val)\n || isTemporalDate(val)\n ) // Object based\n );\n}\n","import type { DateMeta } from \"inferred-types/types\";\nimport { DATE_TYPE } from \"inferred-types/constants\";\nimport { isDictionary } from \"runtime/type-guards\";\n\n/**\n * type guard which validates that `val` is the type `DateMeta`.\n */\nexport function isDateMeta(val: unknown): val is DateMeta {\n return isDictionary(val) && \"dateType\" in val && DATE_TYPE.includes(val as any);\n}\n","import type { IsoDateTime } from \"inferred-types/types\";\nimport { isString } from \"runtime/type-guards\";\n\n/**\n * Type guard which validates that `val` is a valid ISO8601 DateTime string.\n *\n * Valid forms include:\n * - `2024-01-01T00:00:00Z` (UTC/Zulu time)\n * - `2024-01-01T00:00:00+00:00` (Explicit timezone offset)\n * - `2024-01-01T00:00:00-00:00` (Explicit timezone offset)\n * - `2024-01-01T00:00:00.000Z` (With milliseconds, UTC)\n * - `2024-01-01T00:00:00.000+00:00` (With milliseconds, offset)\n * - `2024-01-01T00:00` (Minutes precision)\n * - `2024-01-01T00:00:00` (Seconds precision)\n */\nexport function isIsoDateTime(val: unknown): val is IsoDateTime {\n if (!isString(val)) {\n return false;\n }\n\n // Regex with time validation and proper timezone format\n const ISO_DATETIME_REGEX = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{1,3}))?)?(Z|[+-]\\d{2}:\\d{2})?$/;\n\n if (!ISO_DATETIME_REGEX.test(val)) {\n return false;\n }\n\n // Extract time components for validation\n const [_, ...matches] = val.match(ISO_DATETIME_REGEX) || [];\n const [year, month, day, hours, minutes, seconds] = matches.map(Number);\n\n // Validate hours (0-23), minutes (0-59), seconds (0-59)\n if (hours >= 24 || minutes >= 60 || (seconds != null && seconds >= 60)) {\n return false;\n }\n\n // Validate month (1-12)\n if (month < 1 || month > 12) {\n return false;\n };\n\n // Validate day based on month and year\n const daysInMonth = new Date(year, month, 0).getDate();\n if (day < 1 || day > daysInMonth) {\n return false;\n };\n\n // Validate timezone offset if present\n const tzMatch = val.match(/([+-])(\\d{2}):(\\d{2})$/);\n if (tzMatch) {\n const [_, _sign, tzHours, tzMinutes] = tzMatch;\n const numHours = Number.parseInt(tzHours, 10);\n const numMinutes = Number.parseInt(tzMinutes, 10);\n\n // Validate timezone offset ranges\n if (numHours > 14 || numMinutes > 59) {\n return false;\n }\n if (numHours === 14 && numMinutes > 0) {\n return false;\n }\n }\n\n return true;\n}\n","import type { DayJsLike } from \"inferred-types/types\";\nimport { isDictionary } from \"runtime/type-guards\";\n\n/**\n * Type guard to detect whether the `val` passed in is a `Day.js` date\n * object.\n */\nexport function isDayJs(val: unknown): val is DayJsLike {\n if (\n isDictionary(val)\n && \"toDate\" in val\n && typeof val.toDate === \"function\"\n && \"subtract\" in val\n && \"utc\" in val\n ) {\n try {\n return val.toDate() instanceof Date;\n return true;\n }\n catch {\n return false;\n }\n }\n return false;\n}\n","import type { Abs } from \"inferred-types/types\";\n\n/**\n * **abs**`(num) -> number`\n *\n * Get's the absolute value of `num` providing a literal type if possible.\n */\nexport function abs<T extends number>(num: T): Abs<T> {\n return (\n num < 0 ? num * -1 : num\n ) as Abs<T>;\n}\n","import type { Add, NumberLike } from \"inferred-types/types\";\nimport { asNumber, isString } from \"inferred-types/runtime\";\n\nexport function add<\n A extends NumberLike,\n B extends NumberLike\n>(\n a: A,\n b: B\n) {\n return isString(a) || isString(b)\n ? String(asNumber(a) + asNumber(b)) as Add<A, B>\n : asNumber(a) + asNumber(b) as Add<A, B>;\n}\n","import type { AsNumber, NumberLike } from \"inferred-types/types\";\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * **asNumber**`(val)`\n *\n * Converts `NumberLike` values to a number.\n *\n * - also handles numeric strings which have leading zeros\n */\nexport function asNumber<T extends NumberLike>(val: T): AsNumber<T> {\n return isString(val)\n ? Number(val) as AsNumber<T>\n : val as AsNumber<T>;\n}\n","import type { IsBetweenExclusively, IsBetweenInclusively } from \"inferred-types/types\";\n\nexport type BetweenScope = \"exclusively\" | \"inclusively\";\n\n/**\n * **between**`(from, to, [scope]) -> (val) -> boolean`\n *\n * A higher-order function which builds boolean logic for\n * whether a numeric value passed in is _between_ the two\n * constraints established on the first call.\n */\nexport function between<\n TMin extends number,\n TMax extends number,\n TScope extends BetweenScope = \"exclusively\"\n>(\n min: TMin,\n max: TMax,\n scope: TScope = \"exclusively\" as TScope\n) {\n return <TVal extends number>(val: TVal) => {\n return (\n scope === \"inclusively\"\n ? val >= min && val <= max\n : val > min && val < max\n ) as TScope extends \"inclusively\"\n ? IsBetweenInclusively<TVal, TMin, TMax>\n : TScope extends \"exclusively\"\n ? IsBetweenExclusively<TVal, TMin, TMax>\n : never;\n };\n}\n","import type { Decrement, NumberLike } from \"inferred-types/types\";\nimport { asNumber, isString } from \"inferred-types/runtime\";\n\n/**\n * **decrement**`(val)`\n *\n * Decrements a `NumberLike` value.\n */\nexport function decrement<T extends NumberLike>(val: T) {\n return isString(val)\n ? String(asNumber(val) - 1) as Decrement<T>\n : asNumber(val) - 1 as Decrement<T>;\n}\n","import type { Increment, NumberLike } from \"inferred-types/types\";\nimport { asNumber, isString } from \"inferred-types/runtime\";\n\n/**\n * **increment**`(val)`\n *\n * Increments a `NumberLike` value.\n */\nexport function increment<T extends NumberLike>(val: T) {\n return isString(val)\n ? String(asNumber(val) + 1) as Increment<T>\n : asNumber(val) + 1 as Increment<T>;\n}\n","import type { IsGreaterThan } from \"inferred-types/types\";\n\n/**\n * **isGreaterThan**`(comparator) -> (val) -> boolean`\n *\n * Creates a type strong comparison as to whether the value `TVal` is\n * greater than the _comparator_ value.\n */\nexport function isGreaterThan<T extends number>(comparator: T) {\n return <TVal extends number>(val: TVal) => {\n return val > comparator as IsGreaterThan<TVal, T>;\n };\n}\n","import type { IsGreaterThanOrEqual } from \"inferred-types/types\";\n\n/**\n * **isGreaterThanOrEqual**`(comparator) -> (val) -> boolean`\n *\n * Creates a type strong comparison as to whether the value `TVal` is\n * greater than _or equal_ to the _comparator_ value.\n */\nexport function isGreaterThanOrEqual<T extends number>(comparator: T) {\n return <TVal extends number>(val: TVal) => {\n return val >= comparator as IsGreaterThanOrEqual<TVal, T>;\n };\n}\n","import type { IsNegativeNumber, NumberLike } from \"inferred-types/types\";\n\n/**\n * Boolean operator which indicates whether the number passed\n * in is negative.\n */\nexport function isNegativeNumber<T extends NumberLike>(\n num: T\n): IsNegativeNumber<T> {\n return Number(num) < 0 as IsNegativeNumber<T>;\n}\n","import type { LessThan } from \"inferred-types/types\";\n\n/**\n * **lessThan**`(comparator) -> (val) -> boolean`\n *\n * Creates a type strong comparison as to whether the value `TVal` is\n * less than the _comparator_ value.\n */\nexport function lessThan<T extends number>(comparator: T) {\n return <TVal extends number>(val: TVal) => {\n return val < comparator as LessThan<TVal, T>;\n };\n}\n","import type { LessThanOrEqual } from \"inferred-types/types\";\n\n/**\n * **lessThanOrEqual**`(comparator) -> (val) -> boolean`\n *\n * Creates a type strong comparison as to whether the value `TVal` is\n * less than or equal to the _comparator_ value.\n */\nexport function lessThanOrEqual<T extends number>(comparator: T) {\n return <TVal extends number>(val: TVal) => {\n return val <= comparator as LessThanOrEqual<TVal, T>;\n };\n}\n","import type { Integer } from \"inferred-types/types\";\n\n/**\n * Converts the number `n` to a `Integer` type if\n * `n` _is_ an Integer, otherwise throws a `InvalidNumber` error.\n */\nexport function toInteger(n: number): Integer {\n if (!Number.isInteger(n)) {\n const err = new Error(`Non-floating point number passed to toInteger(${n})`);\n err.name = \"InvalidNumber\";\n throw err;\n }\n return n as Integer;\n}\n","import type {\n EpochInMs,\n EpochInSeconds,\n NumberLike,\n} from \"inferred-types/types\";\nimport {\n isNegativeNumber\n} from \"runtime/numeric\";\n\n/** the epoch timestamp (in seconds) for the date 2500-01-01 */\nconst EPOCH_2500 = 16725225600;\n/** the epoch timestamp (in milliseconds) for July 14th */\nconst EPOCH_1970_07_14 = 16761600000;\n\n/**\n * **isEpochInSeconds**(timestamp)\n *\n * Epoch timestamps represent times after January 1st, 1970 but up to July 14th,\n * 1970 there is no completely valid what of distinguishing an **epoch** based\n * on _seconds_ versus _milliseconds. After July 14th, no additional context/data\n * is necessary as long as we're willing to \"cap\" the **epoch** timestamps in seconds\n * to the year 2500.\n *\n * This type-guard attempts to use the constraints above to test whether the value\n * passed in is an epoch timestamp measured in _seconds_.\n *\n * **Related:** `isEpochInSeconds`\n */\nexport function isEpochInSeconds(timestamp: NumberLike): timestamp is EpochInSeconds {\n return Number(timestamp) >= 0 && Number(timestamp) <= EPOCH_2500;\n}\n\n/**\n * **isEpochInMilliseconds**(timestamp)\n *\n * Type guard which converts a numeric timestamp to the\n * type `EpochInMs` based on the fact that:\n *\n * - the NumberLike passed in is _past_ July 14th, 1970\n * - any dates past this point are clearly distinguishable\n * from _seconds_ based timestamps and _milliseconds_ based timestamps\n * if you're willing to assume all dates are _before_ the date\n * **Jan 1st, 2500**.\n * - this should be a practical constraint in most use cases\n *\n * **Related:** `isEpochInSeconds`\n */\nexport function isEpochInMilliseconds(timestamp: NumberLike): timestamp is EpochInMs {\n return isNegativeNumber(timestamp)\n ? false\n : Number(timestamp) >= EPOCH_1970_07_14;\n}\n","import type { IanaZone } from \"inferred-types/types\";\nimport { IANA_TIMEZONES } from \"inferred-types/constants\";\nimport { isString } from \"runtime/type-guards\";\n\n/**\n * a type-guard which validates that `val` is of the type\n * `IanaZone`.\n */\nexport function isIanaTimezone(val: unknown): val is IanaZone {\n return isString(val) && IANA_TIMEZONES.includes(val as any);\n}\n","import type { IsoDate } from \"inferred-types/types\";\nimport { isIsoYear, isNumberLike, isString } from \"runtime/type-guards\";\n\n/**\n * Type guard which validates whether the passed in `val` is an ISO 8601 date\n * representation with an explicit `-` separator between units (YYYY-MM-DD).\n *\n * **Related:** `isIsoDate`, `isIsoImplicitDate`\n */\nexport function isIsoExplicitDate(val: unknown): val is IsoDate {\n if (isString(val)) {\n const parts = val.split(\"-\").map(i => Number(i));\n\n return val.includes(\"-\")\n ? val.split(\"-\").every(i => isNumberLike(i))\n ? parts[0] >= 0 && parts[0] <= 9999 && parts[1] >= 1 && parts[1] <= 12 && parts[2] >= 1 && parts[2] <= 31\n : false\n : false;\n }\n else {\n return false;\n }\n}\n\n/**\n * Type guard which validates whether the passed in `val` is an ISO 8601 date\n * representation without an explicit `-` separator between units (YYYYMMDD).\n *\n * **Related:** `isIsoDate`, `isIsoExplicitDate`\n */\nexport function isIsoImplicitDate(val: unknown): val is IsoDate {\n if (isString(val) && val.length === 8 && isNumberLike(val)) {\n const year = Number(val.slice(0, 4));\n const month = Number(val.slice(4, 6));\n const date = Number(val.slice(6, 8));\n\n return (\n year >= 0 && year <= 9999 && month >= 1 && month <= 12 && date >= 1 && date <= 31\n );\n }\n else {\n return false;\n }\n}\n\n/**\n * Type guard which validates whether the passed in `val` is an ISO 8601 date\n * representation.\n *\n * - `YYYY-MM-DD` _or_ `YYYYMMDD`\n * - `-YYYY-MM` _or_ `-YYYYMM`\n * - `--MM-DD` _or_ `--MMDD`\n *\n * **Related:**\n * - `isIsoExplicitDate`, `isIsoImplicitDate`\n * - `isIsoYear()`, `isIsoYearMonth()`, `isIsoMonthDate()`\n */\nexport function isIsoDate(val: unknown): val is IsoDate {\n if (isString(val)) {\n return isIsoImplicitDate(val) || isIsoExplicitDate(val) || isIsoYear(val);\n }\n else {\n return false;\n }\n}\n","/**\n * **capitalize**()\n *\n * Run time utility which capitalizes a word/string and preserves\n * string literal types when available.\n */\nexport function capitalize<T extends string>(str: T): Capitalize<T> {\n return `${str?.slice(0, 1).toUpperCase()}${str?.slice(1)}` as Capitalize<T>;\n}\n","import { capitalize, ifLowercaseChar } from \"inferred-types/runtime\";\n\n/**\n * **toAllCaps**`(str)`\n *\n * Converts a string to the \"all caps\" equivalent.\n *\n * **Related:** `toLowercase`, `capitalize`, `uncapitalize`\n */\nexport function toAllCaps<T extends string>(str: T): Uppercase<T> {\n return str\n .split(\"\")\n .map(i => ifLowercaseChar(i, v => capitalize(v), v => v))\n .join(\"\") as Uppercase<T>;\n}\n","import type { CamelCase } from \"inferred-types/types\";\nimport { toPascalCase } from \"inferred-types/runtime\";\n\n/**\n * **toCamelCase**(str)\n *\n * Converts a string into `camelCase` while preserving literal strings.\n *\n * **Note:** _by default it also removes surrounding white space (if it exists) but it\n * can be preserved if you change the `preserveWhitespace` flag._\n *\n * **Related:** `toKebabCase`, `toPascalCase`, `toSnakeCase`\n */\nexport function toCamelCase<\n TString extends string,\n>(input: TString): CamelCase<TString> {\n const pascal = toPascalCase(input);\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n const [_, _preWhite, focus, _postWhite] = /^(\\s*)(.*?)(\\s*)$/.exec(\n pascal,\n ) as RegExpExecArray;\n\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n const camel = focus.replace(/^.*?(\\d*[a-z|])/is, (_, p1) => p1.toLowerCase()) as unknown as CamelCase<TString>;\n\n return camel;\n}\n","import type { KebabCase } from \"inferred-types/types\";\n\n/**\n * **toKebabCase**(str)\n *\n * Converts a string into `kebab-case` while preserving literal strings.\n *\n * **Note:** _by default it also removes surrounding white space (if it exists) but it\n * can be preserved if you change the `preserveWhitespace` flag._\n *\n * **Related:** `toPascalCase`, `toCamelCase`, `toSnakeCase`\n */\nexport function toKebabCase<\n S extends string | undefined,\n P extends boolean = false,\n>(input: S, _preserveWhitespace: P = false as P) {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n const [_, preWhite, focus, postWhite] = /^(\\s*)([\\s\\S]*?)(\\s*)$/.exec(input || \"\") as RegExpExecArray;\n\n const replaceWhitespace = (i: string) => i.replace(/\\s/g, \"-\");\n const replaceUppercase = (i: string) => i.replace(/[A-Z]/g, c => `-${c[0].toLowerCase()}`);\n const replaceLeadingDash = (i: string) => i.replace(/^-/, \"\");\n const replaceTrailingDash = (i: string) => i.replace(/-$/, \"\");\n const replaceUnderscore = (i: string) => i.replace(/_/g, \"-\");\n const removeDupDashes = (i: string) => i.replace(/-+/g, \"-\");\n\n return removeDupDashes(`${preWhite}${replaceUnderscore(\n replaceTrailingDash(\n replaceLeadingDash(removeDupDashes(replaceWhitespace(replaceUppercase(focus)))),\n ),\n )}${postWhite}`) as unknown as S extends string ? KebabCase<S, P> : undefined;\n}\n","import { ifLowercaseChar, lowercase } from \"inferred-types/runtime\";\n\n/**\n * Converts a string to the \"all lowercase\" equivalent.\n *\n * **Related:** `toAllCaps`, `capitalize`, `uncapitalize`\n */\nexport function toLowercase<T extends string>(str: T): Lowercase<T> {\n return str\n .split(\"\")\n .map(i => ifLowercaseChar(i, v => lowercase(v), v => v))\n .join(\"\") as Lowercase<T>;\n}\n","import type {\n LeftWhitespace,\n PascalCase,\n RightWhitespace,\n} from \"inferred-types/types\";\nimport { capitalize } from \"inferred-types/runtime\";\n\n/**\n * **toPascalCase**(str)\n *\n * Converts a string into `PascalCase` while preserving literal strings.\n *\n * **Note:** _by default it also removes surrounding white space (if it exists) but it\n * can be preserved if you change the `preserveWhitespace` flag._\n *\n * **Related:** `toKebabCase`, `toCamelCase`, `toSnakeCase`\n */\nexport function toPascalCase<\n S extends string,\n P extends boolean | undefined = undefined,\n>(input: S, preserveWhitespace: P = undefined as P) {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n const [_, preWhite, focus, postWhite] = /^(\\s*)([\\s\\S]*?)(\\s*)$/.exec(\n input,\n ) as RegExpExecArray;\n\n const convertInteriorToCap = (i: string) =>\n i.replace(/[ |_\\-]+(\\d*[a-z|])/gi, (_, p1) => p1.toUpperCase());\n const startingToCap = (i: string) =>\n i.replace(/^[_|-]*(\\d*[a-z])/g, (_, p1) => p1.toUpperCase());\n\n const replaceLeadingTrash = (i: string) => i.replace(/^[-_]/, \"\");\n const replaceTrailingTrash = (i: string) => i.replace(/[-_]$/, \"\");\n\n const pascal = `${preserveWhitespace ? preWhite : \"\"}${capitalize(\n replaceTrailingTrash(replaceLeadingTrash(convertInteriorToCap(startingToCap(focus)))),\n )}${preserveWhitespace ? postWhite : \"\"}`;\n\n return pascal as true extends P\n ? `${LeftWhitespace<S>}${PascalCase<S>}${RightWhitespace<S>}`\n : PascalCase<S>;\n}\n","import type { SnakeCase } from \"inferred-types/types\";\n\n/**\n * **toSnakeCase**(str)\n *\n * Converts a string into `snake_case` while preserving literal strings.\n *\n * **Note:** _by default it also removes surrounding white space (if it exists) but it\n * can be preserved if you change the `preserveWhitespace` flag._\n *\n * **Related:** `toKebabCase`, `toCamelCase`, `toPascalCase`\n */\nexport function toSnakeCase<\n S extends string,\n P extends boolean = false,\n>(input: S, preserveWhitespace: P = false as P): SnakeCase<S, P> {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n const [_, preWhite, focus, postWhite] = /^(\\s*)([\\s\\S]*?)(\\s*)$/.exec(input) as RegExpExecArray;\n\n const convertInteriorSpace = (input: string) => input.replace(/\\s+/g, \"_\");\n const convertDashes = (input: string) => input.replace(/-/g, \"_\");\n const injectUnderscoreBeforeCaps = (input: string) => input.replace(/([A-Z])/g, \"_$1\");\n const removeLeadingUnderscore = (input: string) =>\n input.startsWith(\"_\") ? input.slice(1) : input;\n\n return (\n (preserveWhitespace ? preWhite : \"\")\n + removeLeadingUnderscore(\n injectUnderscoreBeforeCaps(convertDashes(convertInteriorSpace(focus))),\n ).toLowerCase()\n + (preserveWhitespace ? postWhite : \"\")\n ).replace(/__/g, \"_\") as unknown as SnakeCase<S, P>;\n}\n","/**\n * **uncapitalize**()\n *\n * Run time utility which _un_-capitalizes a word/string and preserves\n * string literal types.\n */\nexport function uncapitalize<T extends string>(str: T): Uncapitalize<T> {\n return `${str?.slice(0, 1).toLowerCase()}${str?.slice(1)}` as Uncapitalize<T>;\n}\n","import type { ColorFnOptOpacity, ColorFnValue, CssColorFn, CssColorSpace } from \"inferred-types/types\";\n\n/**\n * **cssColor**`(colorspace, v1, v2, v3, [opacity]) -> CssColorFn`\n *\n * Produces a string literal for a CSS v4 `color()` function.\n */\nexport function cssColor<\n TColorSpace extends CssColorSpace,\n TV1 extends ColorFnValue,\n TV2 extends ColorFnValue,\n TV3 extends ColorFnValue,\n TOp extends undefined | ColorFnOptOpacity,\n>(color: TColorSpace, v1: TV1, v2: TV2, v3: TV3, opacity?: TOp) {\n return `color(${color} ${v1} ${v2} ${v3}${opacity ? ` / ${opacity}` : \"\"}` as CssColorFn<\n TColorSpace,\n TV1,\n TV2,\n TV3,\n TOp extends ` / ${number}`\n ? TOp\n : \"\"\n >;\n}\n","import type {\n TwChromaLookup,\n TwColor,\n TwHue,\n TwLuminosity,\n TwLuminosityLookup,\n} from \"inferred-types/types\";\nimport {\n TW_CHROMA,\n TW_HUE,\n TW_LUMINOSITY,\n} from \"inferred-types/constants\";\n\ntype Rtn<\n TColor extends TwColor,\n TLum extends TwLuminosity,\n>\n = TLum extends keyof TwLuminosityLookup\n ? TLum extends keyof TwChromaLookup\n ? TColor extends keyof TwHue\n ? `oklch(${TwLuminosityLookup[TLum]} ${TwChromaLookup[TLum]} ${TwHue[TColor]})`\n : never\n : never\n : never;\n\n/**\n * **twColor**`(color, luminosity)` => `oklch(...)`\n *\n * Provides a Tailwind Color using the `oklch` color\n * specification. The output is intended to put into\n * a CSS property.\n *\n * **Related:** `twColorRgb()`\n */\nexport function twColor<\n TColor extends TwColor,\n TLum extends TwLuminosity,\n>(\n color: TColor,\n luminosity: TLum,\n): Rtn<TColor, TLum> {\n const lum: number = luminosity in TW_LUMINOSITY\n ? TW_LUMINOSITY[luminosity]\n : 0;\n const chroma: number = luminosity in TW_CHROMA\n ? TW_CHROMA[luminosity]\n : 0;\n const hue = TW_HUE[color];\n return `oklch(${lum} ${chroma} ${hue})` as unknown as Rtn<TColor, TLum>;\n}\n","import type { EnsureLeading } from \"inferred-types/types\";\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * **ensureLeading**(content, strip)\n *\n * Runtime utility which ensures that last part of a string -- `content` -- has the\n * substring `ensure` at the end and adds it if not present.\n */\nexport function ensureLeading<\n T extends string | number,\n U extends string | number,\n>(\n content: T,\n ensure: U,\n) {\n const output: string = String(content);\n\n return (\n output.startsWith(String(ensure))\n ? content\n : isString(content)\n ? `${ensure}${content}`\n : Number(`${ensure}${content}`)\n ) as EnsureLeading<T, U>;\n}\n","import type { EnsureSurround } from \"inferred-types/types\";\nimport { ensureLeading, ensureTrailing } from \"inferred-types/runtime\";\n\n/**\n * **ensureSurround**(prefix, postfix) -> (input) -> `${prefix}${input}${postfix}`\n *\n * A higher order runtime utility which receives a prefix and postfix string\n * on it's first call. This returns a secondary function which will _ensure_\n * the given prefix/postfix's surround the input (without duplicating the\n * prefix/postfix characters if they were already there).\n *\n * **Related:** `surround()`\n */\nexport function ensureSurround<\n TPrefix extends string,\n TPostfix extends string,\n>(prefix: TPrefix, postfix: TPostfix) {\n const fn = <TInput extends string>(\n input: TInput,\n ): EnsureSurround<TInput, TPrefix, TPostfix> => {\n let result: string = input;\n\n result = ensureLeading(result, prefix);\n result = ensureTrailing(result, postfix);\n\n return result as EnsureSurround<TInput, TPrefix, TPostfix>;\n };\n\n return fn;\n}\n","import type { EnsureTrailing } from \"inferred-types/types\";\n\n/**\n * **ensureTrailing**(content, strip)\n *\n * Runtime utility which ensures that last part of a string -- `content` -- has the\n * substring `ensure` at the end and adds it if not present.\n */\nexport function ensureTrailing<\n T extends string,\n U extends string,\n>(\n content: T,\n ensure: U,\n): EnsureTrailing<T, U> {\n return (\n //\n (content.endsWith(ensure) ? content : `${content}${ensure}`) as EnsureTrailing<T, U>\n );\n}\n","import type { RetainAfter, RetainUntil, TypeSubtype } from \"inferred-types/types\";\nimport { isTypeSubtype } from \"inferred-types/runtime\";\n\n/**\n * **getTypeSubTyp**`(str)`\n *\n * Returns a two element tuple representing the `Type` and `SubType`\n * independantly.\n *\n * - can take either a \"blessed\" `TypeSubtype` as input or any string\n * literal of `${string}/${string}` but in the latter case if the\n * string does not pass the isTypeSubtype() test then it will throw\n * an error (InvalidTypeSubtype).\n *\n * **Related:** `TypeSubtype`, `isTypeSubtype`\n */\nexport function getTypeSubtype<T extends TypeSubtype | `${string}/${string}`>(str: T) {\n if (isTypeSubtype(str)) {\n const [t, st] = str.split(\"/\");\n\n return [t, st] as [RetainUntil<T, \"/\">, RetainAfter<T, \"/\">];\n }\n else {\n const err = new Error(`An invalid Type/Subtype was passed into getTypeSubtype(${str})`);\n err.name = \"InvalidTypeSubtype\";\n throw err;\n }\n}\n","import type { AfterFirst, Extends, If, LowerAlphaChar } from \"inferred-types/types\";\nimport { LOWER_ALPHA_CHARS } from \"inferred-types/constants\";\n\ntype _Index<\n T extends readonly string[],\n IF,\n ELSE,\n Results extends readonly unknown[] = [],\n> = [] extends T\n ? Results\n : _Index<\n AfterFirst<T>,\n IF,\n ELSE,\n [\n ...Results,\n If<Extends<T, LowerAlphaChar>, IF, ELSE>,\n ]\n >;\n\ntype Returns<\n T extends string | readonly string[],\n IF,\n ELSE,\n> = T extends string\n ? If<Extends<T, LowerAlphaChar>, IF, ELSE>\n : T extends readonly string[]\n ? _Index<T, IF, ELSE>\n : never;\n\n/**\n * **ifLowercaseChar**(ch)\n *\n * Tests whether a passed in character is lowercase and then uses the appropriate callback to\n * mutate the value.\n */\nexport function ifLowercaseChar<\n T extends string,\n IF,\n ELSE,\n>(\n ch: T,\n callbackForMatch: <V extends T>(v: V) => IF,\n callbackForNoMatch: <V extends T>(v: V) => ELSE,\n): Returns<T, IF, ELSE> {\n if (ch.length !== 1) {\n throw new Error(`call to ifUppercaseChar received ${ch.length} characters but is only valid when one character is passed in!`);\n }\n return (\n LOWER_ALPHA_CHARS.includes(ch as any)\n ? callbackForMatch(ch)\n : callbackForNoMatch(ch)\n ) as Returns<T, IF, ELSE>;\n}\n","import type { Extends, If, IsSingleChar, Narrowable, UpperAlphaChar, ValueCallback } from \"inferred-types/types\";\nimport { LOWER_ALPHA_CHARS } from \"inferred-types/constants\";\n\ntype Convert<T, IF, ELSE> = If<Extends<T, UpperAlphaChar>, IF, ELSE>;\n\n/**\n * **ifUppercaseChar**(ch, callbackForMatch, callbackForNoMatch)\n *\n * Tests whether a passed in _character_ is an uppercase character and uses appropriate callback\n * to mutate the value.\n *\n * **Related:** `ifUppercase()`\n */\nexport function ifUppercaseChar<\n T extends string,\n IF extends Narrowable,\n ELSE extends Narrowable,\n>(\n /** the character to be tested */\n ch: T & IsSingleChar<T> extends true ? T : never,\n callbackForMatch: ValueCallback<T, IF>,\n callbackForNoMatch: ValueCallback<T, ELSE>,\n): Convert<T, IF, ELSE> {\n if (ch.length !== 1) {\n throw new Error(`Invalid string length passed to ifUppercaseChar(ch); this function requires a single character but ${ch.length} were received`);\n }\n return (\n LOWER_ALPHA_CHARS.includes(ch as any)\n ? callbackForMatch(ch)\n : callbackForNoMatch(ch)\n ) as Convert<T, IF, ELSE>;\n}\n","/* eslint no-cond-assign: \"off\" */\nimport type {\n ExpandDictionary,\n Join,\n OptSpace,\n} from \"inferred-types/types\";\n\ntype Ext = \"string\" | \"number\" | \"boolean\";\ntype START = \"{{\";\ntype END = \"}}\";\ntype InferredString = `infer ${string} extends string` | `infer ${string}`;\ntype InferredNumber = `infer ${string} extends number`;\ntype InferredBoolean = `infer ${string} extends boolean`;\n\ntype InferenceVars<\n T extends string,\n Vars extends [strings: string[], nums: string[], bools: string[]] = [[], [], []],\n>\n// Peel off a block\n = T extends `${infer _HEAD}${START}${infer Content}${END}${infer REST}`\n ? (\n Content extends `${OptSpace}infer ${infer Var} extends ${infer Type extends Ext}${OptSpace}`\n // 2a) `{{ infer Foo extends string|number|boolean }}`\n ? Type extends \"string\"\n ? InferenceVars<REST, [[...Vars[0], Var], Vars[1], Vars[2]]>\n : Type extends \"number\"\n ? InferenceVars<REST, [Vars[0], [...Vars[1], Var], Vars[2]]>\n : InferenceVars<REST, [Vars[0], Vars[1], [...Vars[2], Var]]>\n\n // 2b) `{{ infer Foo }}` with no “extends”\n : Content extends `${OptSpace}infer ${infer Var2}${OptSpace}`\n ? InferenceVars<REST, [[...Vars[0], Var2], Vars[1], Vars[2]]>\n\n // 2c) If it’s some other weird content inside `{{ ... }}`, just keep going\n : InferenceVars<REST, Vars>\n )\n // Done\n : Vars;\n\ntype TypeLiteral<\n T extends string,\n Sections extends readonly string[] = [],\n> = T extends `${infer HEAD}${START}${infer Content}${END}${infer REST}`\n// peel off a block\n ? Content extends InferredNumber\n ? TypeLiteral<REST, [ ...Sections, `${HEAD}${number}`]>\n : Content extends InferredBoolean\n ? TypeLiteral<REST, [ ...Sections, `${HEAD}${boolean}`]>\n : Content extends InferredString\n ? TypeLiteral<REST, [ ...Sections, `${HEAD}${string}`]>\n\n : Content extends \"string\"\n ? TypeLiteral<REST, [ ...Sections, `${HEAD}${string}`]>\n : Content extends \"number\"\n ? TypeLiteral<REST, [ ...Sections, `${HEAD}${number}`]>\n : Content extends \"boolean\"\n ? TypeLiteral<REST, [ ...Sections, `${HEAD}${boolean}`]>\n : TypeLiteral<REST, [ ...Sections, Content]>\n\n// DONE\n : Join<Sections>;\n\n/**\n * The pattern matching that Typescript employs works less well when\n * we include `${number}` or `${boolean}` string literals in our pattern.\n *\n * For this reason this utility looks for all \"blocks\" but only looks at them\n * as `${string}` blocks. This allows for a the runtime system to match on\n * a more capable pattern match while maintaining consistency in the \"type\":\n *\n * - when `TypeLiteral` matches the pattern then we _know_ we can match\n * - when `WideTypeLiteral` matches the pattern then we defer to runtime\n */\ntype WiderTypeLiteral<\n T extends string,\n Sections extends readonly string[] = [],\n> = T extends `${infer HEAD}${START}${infer Content}${END}${infer REST}`\n// peel off a block\n ? Content extends InferredNumber\n ? WiderTypeLiteral<REST, [ ...Sections, `${HEAD}${string}`]>\n : Content extends InferredBoolean\n ? WiderTypeLiteral<REST, [ ...Sections, `${HEAD}${string}`]>\n : Content extends InferredString\n ? WiderTypeLiteral<REST, [ ...Sections, `${HEAD}${string}`]>\n\n : Content extends \"string\"\n ? WiderTypeLiteral<REST, [ ...Sections, `${HEAD}${string}`]>\n : Content extends \"number\"\n ? WiderTypeLiteral<REST, [ ...Sections, `${HEAD}${string}`]>\n : Content extends \"boolean\"\n ? WiderTypeLiteral<REST, [ ...Sections, `${HEAD}${string}`]>\n : WiderTypeLiteral<REST, [ ...Sections, Content]>\n\n// DONE\n : Join<Sections>;\n\ntype StrVars<T extends string> = InferenceVars<T>[0];\ntype NumVars<T extends string> = InferenceVars<T>[1];\ntype BoolVars<T extends string> = InferenceVars<T>[2];\n\ntype Shape<T extends string> = ExpandDictionary<\n Record<StrVars<T>[number], string>\n & Record<NumVars<T>[number], number>\n & Record<BoolVars<T>[number], boolean>\n>;\n\ntype Lit = \"string\" | \"number\" | \"boolean\";\n\ntype LiteralSections<\n T extends string,\n V extends Lit[] = [],\n> = T extends `${string}{{${OptSpace}${infer Section extends Lit}${OptSpace}}}${infer REST}`\n ? LiteralSections<REST, [...V, Section]>\n : V;\n\n/**\n * Boolean operator which indicates whether the string literal has any dynamic\n * segments or not\n */\ntype IsDynamic<T extends string> = LiteralSections<T>[\"length\"] extends 0\n ? InferenceVars<T>[\"length\"] extends 0\n ? false\n : true\n : true;\n\nexport interface GetInferenceProps<TPattern extends string> {\n vars: {\n string: StrVars<TPattern>;\n numeric: NumVars<TPattern>;\n boolean: BoolVars<TPattern>;\n };\n typeLiteral: TypeLiteral<TPattern>;\n typeWide: WiderTypeLiteral<TPattern>;\n}\n\nexport type GetInference<TPattern extends string> = (\n <T extends string>(test: T) => T extends TypeLiteral<TPattern>\n ? Shape<TPattern>\n : false | Shape<TPattern>\n) & GetInferenceProps<TPattern>;\n\ntype Returns<T extends string> = IsDynamic<T> extends true\n ? GetInference<T>\n : never;\n\n/**\n * Parse a given inference pattern like:\n *\n * `foo{{infer Foo}} and bar{{infer Bar as number}}`\n *\n * Return an array of alternating static segments and inferred segments:\n * E.g.:\n * [\n * { static: \"foo\", dynamic: false },\n * { varName: \"Foo\", type: \"string\", dynamic: true },\n * { static: \" and bar\", dynamic: false },\n * { varName: \"Bar\", type: \"number\", dynamic: true },\n * { static: \"\", dynamic: false }\n * ]\n */\nfunction parseTemplate(template: string) {\n // updated pattern:\n const pattern\n = /\\{\\{\\s*infer\\s+([A-Za-z_]\\w*)\\s*(?:(?:extends|as)\\s+(string|number|boolean)\\s*)?\\}\\}/g;\n\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n const segments: Array<\n { dynamic: false; text: string }\n | { dynamic: true; varName: string; type: \"string\" | \"number\" | \"boolean\" }\n > = [];\n\n while ((match = pattern.exec(template))) {\n const [fullMatch, varName, asType] = match;\n // everything from the previous index to this match is static text\n const staticPart = template.slice(lastIndex, match.index);\n if (staticPart) {\n segments.push({ dynamic: false, text: staticPart });\n }\n segments.push({\n dynamic: true,\n varName,\n type: asType ? (asType as \"string\" | \"number\" | \"boolean\") : \"string\",\n });\n lastIndex = match.index + fullMatch.length;\n }\n\n // push the remainder as static text\n const remainder = template.slice(lastIndex);\n if (remainder) {\n segments.push({ dynamic: false, text: remainder });\n }\n\n return segments;\n}\n\nfunction escapeRegex(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\n/**\n * Convert segments to a regex pattern with named captures.\n */\nfunction buildRegexPattern(segments: ReturnType<typeof parseTemplate>) {\n let regexStr = \"^\";\n for (const seg of segments) {\n if (!seg.dynamic) {\n // Static text\n regexStr += escapeRegex(seg.text);\n }\n else {\n // Dynamic segment\n switch (seg.type) {\n case \"string\":\n regexStr += \"(.*?)\";\n break;\n case \"number\":\n regexStr += \"(\\\\d+)\";\n break;\n case \"boolean\":\n regexStr += \"(true|false)\";\n break;\n }\n }\n }\n regexStr += \"$\";\n // Remove the \"s\" flag; just use new RegExp(regexStr)\n return new RegExp(regexStr);\n}\n\nfunction convertValue(type: Ext, value: string): string | number | boolean {\n switch (type) {\n case \"string\":\n return value;\n case \"number\":\n return Number(value);\n case \"boolean\":\n return value === \"true\";\n }\n}\n\n/**\n * Perform the matching operation given the template and the test string.\n */\nfunction matchTemplate<TTempl extends string>(\n template: TTempl,\n test: string,\n): Shape<TTempl> | false {\n const segments = parseTemplate(template);\n const regex = buildRegexPattern(segments);\n\n // Use exec(...) instead of match(...) so we can access capture groups by index\n const match = regex.exec(test);\n if (!match)\n return false;\n\n let captureIndex = 1; // Start at 1 because [0] is the full match\n const result: Record<string, unknown> = {};\n\n for (const seg of segments) {\n if (seg.dynamic) {\n const rawVal = match[captureIndex++];\n // If the capture group is somehow missing or undefined, fail\n if (rawVal === undefined)\n return false;\n result[seg.varName] = convertValue(seg.type, rawVal);\n }\n }\n return result as Shape<TTempl>;\n}\n\n/**\n * **infer**`(pattern)`\n *\n * Builds a interference function from a Typescript _string literal template_\n * where:\n *\n * - the template string accepts `{{ string }}` instead of `${string}`, etc.\n * for matching blocks of string characters\n * - you can also extract parts of the string with syntax of `{{ infer Foo }}`\n * - you can also look for _numeric_ or _boolean_ string literals:\n * - `{{ boolean }}`\n * - `{{ infer Bar as number }}`\n *\n * ```ts\n * const matcher = infer(\"{{ infer foo }}-bar\");\n * // \"foo\"\n * const {foo} = matcher(\"foo-bar\");\n * ```\n */\nexport function infer<TTempl extends string>(\n inference: TTempl,\n): Returns<TTempl> {\n return ((test: string) => {\n return matchTemplate(inference, test);\n }) as Returns<TTempl>;\n}\n","import type { Narrowable } from \"inferred-types/types\";\n\n/**\n * Takes an object as input --which has an `id` property and returns it as the same\n * run-time content but with the _type_ of the `id` property being forced to a literal type\n */\nexport function idLiteral<T extends { id: I }, I extends PropertyKey>(o: T): T & { id: T[\"id\"] } {\n return { ...o, id: o.id };\n}\n\n/**\n * Takes an object as input --which has an `name` property and returns it as the same\n * run-time content but with the _type_ of the `name` property being forced to a literal type\n */\nexport function nameLiteral<T extends { name: I }, I extends PropertyKey>(\n o: T,\n): T & { name: T[\"name\"] } {\n return o;\n}\n\n/**\n * Takes an object as input --which has an `kind` property and returns it as the same\n * run-time content but with the _type_ of the `kind` property being forced to a literal type\n */\nexport function kindLiteral<T extends { kind: I }, I extends PropertyKey>(\n o: T,\n): T & { kind: T[\"kind\"] } {\n return o;\n}\n\nexport function idTypeGuard<T extends { id: I }, I extends PropertyKey>(\n _o: T,\n): _o is T & { id: I } {\n return true;\n}\n\n/**\n * Takes an object as input and infers the narrow literal types of the property\n * values on the object.\n *\n * > Note: this addresses this [a known TS gap](https://github.com/microsoft/TypeScript/issues/30680).\n * > Hopefully at some point this will be addressed in the language.\n */\nexport function literal<N extends Narrowable, T extends Record<keyof T, N>>(obj: T) {\n return obj;\n}\n","/**\n * **lowercase**()\n *\n * Run time utility which ensures all letters are lowercase while preserving\n * string literal types.\n */\nexport function lowercase<T extends string>(str: T): Lowercase<T> {\n return str.toLowerCase() as Lowercase<T>;\n}\n","import type {\n Mutable,\n Narrowable,\n} from \"inferred-types/types\";\n\ntype Returns<\n T extends (readonly N[]) | [Record<K, N>] | [readonly N[]],\n K extends PropertyKey,\n N extends Narrowable\n> = T[\"length\"] extends 1\n ? Mutable<T[0]>\n : Mutable<T>;\n\n/**\n * **narrow**(value)\n *\n * An identity function which provides the input in as narrow a form\n * as possible.\n *\n * - if only a single item is provided we will isolate it and treat\n * as it's own entity.\n * - so a scalar value such as `narrow(42)` results in the numeric literal `42`\n * not `[42]`\n *\n * ```ts\n * const s = narrow(\"foo\"); // \"foo\"\n * const n = narrow(42); // 42\n * // [\"foo\", \"bar\"]\n * const t1 = narrow([\"foo\", \"bar\"] as const);\n * const t2 = narrow([\"foo\",\"bar\"]);\n * const t3 = narrow(\"foo\", \"bar\");\n * // { foo: 1 }\n * const o1 = narrow({foo: 1});\n * // [ { foo: 1 } ]\n * const o2 = narrow([foo:1]);\n * ```\n *\n * **Related:** `defineObj`\n */\nexport function narrow<\n const N extends Narrowable,\n const K extends PropertyKey,\n const T extends (readonly N[]) | [Record<K, N>] | [readonly N[]],\n>(...values: T): Returns<T, K, N> {\n // we evaluate lengths of 1 differently\n if (values.length === 1) {\n return values[0] as Returns<T, K, N>;\n }\n\n return values as Returns<T, K, N>;\n}\n","import type { NBSP } from \"inferred-types/types\";\n\n/** A Unicode non-breaking space */\nexport const nbsp: NBSP = \"\\u00A0\" as NBSP;\n","import type { PathJoin } from \"inferred-types/types\";\nimport { stripLeading, stripTrailing } from \"inferred-types/runtime\";\n\n/**\n * **pathJoin**`<T,U>(begin, ...rest)`\n *\n * Run time utility which joins two strings together with\n * the intent to have them be divided by a Posix `/` character\n * appropriate for Unix file paths and URLs.\n *\n * **note:** to support more than two paths being joined there\n * is now the ability to add a tuple of paths into the _rest_\n * parameter\n */\nexport function pathJoin<T extends readonly string[]>(\n ...segments: T\n): PathJoin<T> {\n const clean_path = segments.map(i => stripTrailing(stripLeading(i, \"/\"), \"/\")).join(\"/\");\n const original_path = segments.join(\"/\");\n const pre = original_path.startsWith(\"/\") ? \"/\" : \"\";\n const post = original_path.endsWith(\"/\") ? \"/\" : \"\";\n\n return `${pre}${clean_path}${post}` as PathJoin<T>;\n}\n","// const convert = (\n// countryCode: string,\n// phone: string,\n// delimiter: string,\n// para: boolean\n// ) => {\n// const chars: string = stripChars(phone, \"(\", \")\") as string;\n// const parts: string[] = chars.trim().split(/[-. ]/);\n// const isRegional = parts.length === 2 ? true : false;\n// const isCountry = parts.length === 3 ? true : false;\n// const isShortCode = parts.length === 1 && phone.split(\"\").length < 7 ? true : false;\n\n// const replacement = isShortCode\n// ? phone\n// : isRegional\n// ? parts.join(delimiter)\n// : isCountry && para\n// ? `(${parts[0]}) ${parts.slice(1).join(delimiter)}`\n// : isCountry\n// ? parts.join(delimiter)\n// : undefined;\n\n// if (!replacement) {\n// throw new Error(`invalid phone number: ${phone}. Unable to parse!`)\n// }\n\n// return countryCode === \"\"\n// ? replacement\n// : `+${countryCode} ${replacement}`;\n// }\n\n// /**\n// * **asPhoneNumber**`(phone, format)`\n// *\n// * Receives a phone number and returns it as a well formatted version.\n// */\n// export const asPhoneNumber = <\n// T extends string,\n// F extends PhoneFormat,\n// >(\n// phone: T & PhoneNumber<T>,\n// format: F = \"Dotted (e.g., 456.555.1212)\" as F\n// ) => {\n// if (!isPhoneNumber(phone)) {\n// throw new Error(`Invalid phone number presented to asPhoneNumber(phone,format)!`);\n// }\n// const countryCode = getPhoneCountryCode(phone) as unknown as string;\n// const remaining = removePhoneCountryCode(phone) as unknown as string;\n// let result: unknown;\n\n// switch (format) {\n// case \"Dashed (e.g., 456-555-1212)\":\n// result = convert(countryCode, remaining, \"-\", false) as unknown;\n// break;\n// case \"Dotted (e.g., 456.555.1212)\":\n// result = convert(countryCode, remaining, \".\", false) as unknown;\n// break;\n// case \"ParaDashed (e.g., (456) 555-1212)\":\n// result = convert(countryCode, remaining, \"-\", true) as unknown;\n// break;\n// case \"ParaSpaced (e.g., (456) 555 1212)\":\n// result = convert(countryCode, remaining, \" \", true) as unknown;\n// break;\n// }\n\n// return result ;\n// }\n\nexport const asPhoneFormat = () => `NOT IMPLEMENTED`;\n","import type { GetPhoneCountryCode } from \"inferred-types/types\";\nimport { NUMERIC_CHAR } from \"inferred-types/constants\";\nimport { retainWhile, stripLeading } from \"inferred-types/runtime\";\n\nexport function getPhoneCountryCode<T extends string>(phone: T) {\n return (\n phone.trim().startsWith(\"+\") || phone.trim().startsWith(\"00\")\n ? retainWhile(\n stripLeading(stripLeading(phone.trim(), \"+\"), \"00\") as string,\n ...NUMERIC_CHAR,\n ) as string\n : \"\" as string\n ) as unknown as GetPhoneCountryCode<T>;\n}\n","import type { RemovePhoneCountryCode } from \"inferred-types/types\";\nimport { getPhoneCountryCode, stripLeading } from \"inferred-types/runtime\";\n\nexport function removePhoneCountryCode<\n T extends string,\n>(phone: T) {\n const countryCode = getPhoneCountryCode(phone) as unknown as string;\n return (\n countryCode !== \"\"\n ? stripLeading(stripLeading(\n phone.trim(),\n \"+\",\n \"00\",\n ) as string, countryCode).trim()\n : phone.trim()\n ) as unknown as RemovePhoneCountryCode<T>;\n}\n","import type { Pluralize } from \"inferred-types/types\";\nimport {\n ALPHA_CHARS,\n PLURAL_EXCEPTIONS,\n SINGULAR_NOUN_ENDINGS,\n} from \"inferred-types/constants\";\nimport { asChars, rightWhitespace, stripTrailing } from \"inferred-types/runtime\";\n\nconst isException = <T extends string>(word: T) => Object.keys(PLURAL_EXCEPTIONS).includes(word);\n\nconst _END_IN = [\n \"is\",\n \"y\",\n \"f\",\n \"singular-noun\",\n] as const;\n\ntype EndsIn = (typeof _END_IN)[number];\n\n/**\n * pluralize based on how word ends\n */\nfunction endingIn<\n T extends string,\n U extends EndsIn,\n>(word: T, postfix: U) {\n switch (postfix) {\n case \"is\":\n return word.endsWith(postfix) ? `${word}es` : undefined;\n case \"singular-noun\":\n return SINGULAR_NOUN_ENDINGS.some(i => word.endsWith(i))\n ? asChars(word).every(i => [...ALPHA_CHARS].includes(i as any))\n ? `${word}es`\n : undefined\n : undefined;\n case \"f\":\n return word.endsWith(\"f\")\n ? `${stripTrailing(word, \"f\")}ves`\n : word.endsWith(\"fe\")\n ? `${stripTrailing(word, \"fe\")}ves`\n : undefined;\n case \"y\":\n return word.endsWith(\"y\")\n // ? CONSONANTS.includes(word.slice(-2, 1) as any)\n ? `${stripTrailing(word, \"y\")}ies`\n : undefined;\n default:\n throw new Error(`endingIn received \"${postfix}\" as a postfix but this ending is not known!`);\n }\n}\n\n/**\n * **pluralize(** word **)**\n *\n * Pluralizes the word using _language rules_ on pluralization for English as well as\n * leveraging many known exceptions to the linguistic rules.\n *\n * **Note:** _if the string passed into this function is a literal string then the **type**\n * will be pluralized along with the runtime value._\n */\nexport function pluralize<T extends string>(word: T): Pluralize<T> {\n const right = rightWhitespace(word);\n const w = word.trimEnd();\n const result: unknown = isException(w)\n ? PLURAL_EXCEPTIONS[w as keyof typeof PLURAL_EXCEPTIONS]\n : endingIn(w, \"is\")\n || endingIn(w, \"singular-noun\")\n || endingIn(w, \"f\")\n || endingIn(w, \"y\")\n || `${w}s`; // add \"s\" if no other patterns match\n\n return `${result}${right}` as unknown as Pluralize<T>;\n}\n","import type { AsFromTo, Dictionary, Replace, ReplaceAll, ReplaceAllFromTo } from \"inferred-types/types\";\n\n/**\n * **replace**`(content, find, replace)`\n *\n * A runtime utility which will replace _the first_ instance of `find` found in `content` with `replace`\n * while preserving string literal content where possible.\n *\n * **Related:** `replaceAll()`, `replaceAllFromTo()`\n */\nexport function replace<\n TContent extends string,\n TFind extends string,\n TReplace extends string\n>(\n content: TContent,\n find: TFind,\n replace: TReplace\n) {\n return content.replace(find, replace) as Replace<TContent, TFind, TReplace>;\n}\n\n/**\n * **replaceAll**`(content, find, replace)`\n *\n * A runtime utility which will replace all instances of `find` found in `content` with `replace`\n * while preserving string literal content where possible.\n *\n * **Related:** `replace()`, `replaceAllFromTo()`\n */\nexport function replaceAll<\n TContent extends string,\n TFind extends string,\n TReplace extends string\n>(\n content: TContent,\n find: TFind,\n replace: TReplace\n) {\n return content.replaceAll(find, replace) as ReplaceAll<TContent, TFind, TReplace>;\n}\n\n/**\n * **replaceAllFromTo**`(content, defn)`\n *\n * Provided some textual content and a key/value transformation definition:\n *\n * - will convert all instances of the _keys_ in the definition to the _values_\n *\n * **Related:** `replace()`, `replaceAll()`\n */\nexport function replaceAllFromTo<\n TContent extends string,\n TFromTo extends Dictionary<K, V>,\n K extends string,\n V extends string\n>(\n content: TContent,\n fromTo: TFromTo\n) {\n let output: string = content;\n\n for (const key of Object.keys(fromTo)) {\n output = replaceAll(output, key, fromTo[key as K]);\n }\n\n return output as unknown as ReplaceAllFromTo<TContent, AsFromTo<TFromTo>>;\n}\n","import type { RetainAfter, TrimStart, Whitespace } from \"inferred-types/types\";\nimport { WHITESPACE_CHARS } from \"inferred-types/constants\";\nimport { retainAfterInclusive } from \"inferred-types/runtime\";\n\n/**\n * **rightWhitespace**`(content)`\n *\n * Extracts and returns the whitespace on the _right_ part of the string.\n */\nexport function rightWhitespace<T extends string>(content: T) {\n const trimmed = content.trimStart() as string;\n return retainAfterInclusive(\n trimmed,\n ...WHITESPACE_CHARS,\n ) as unknown as RetainAfter<TrimStart<T>, Whitespace, true>;\n}\n","import type {\n DefaultNesting,\n FromNamedNestingConfig,\n NestedSplit,\n NestedSplitPolicy,\n Nesting,\n NestingConfig__Named\n} from \"inferred-types/types\";\nimport { BRACKET_NESTING, Never, QUOTE_NESTING } from \"inferred-types/constants\";\nimport {\n afterFirst,\n asArray,\n asChars,\n err,\n isArray,\n isNestingEndMatch,\n isNestingKeyValue,\n isNestingStart,\n isNestingTuple,\n isString,\n mutable,\n toStringLiteral\n} from \"inferred-types/runtime\";\n\nfunction splitProcessorMultiChar<\n TContent extends string,\n TSplit extends string,\n TNesting extends Nesting,\n TPolicy extends NestedSplitPolicy\n>(\n content: TContent,\n split: TSplit,\n nesting: TNesting,\n policy: TPolicy,\n stack: readonly string[] = [],\n waiting: string = \"\",\n result: string[] = [],\n lastWasSplit: boolean = false\n): string[] | Error {\n // Base case: no more characters\n if (content === \"\") {\n if (stack.length > 0) {\n return err(\n `unbalanced/nested-split`,\n `The nesting stack was unbalanced, so the nested split can not be completed!`,\n { stack: toStringLiteral(stack) }\n );\n }\n\n if (lastWasSplit) {\n return waiting === \"\" ? [...result, \"\"] : [...result, waiting, \"\"];\n }\n\n return waiting === \"\" ? result : [...result, waiting];\n }\n\n const currentChar = content[0];\n const remainingContent = content.slice(1);\n\n // Check if we're at base level (no nesting)\n if (stack.length === 0) {\n // Check if content starts with split pattern\n if (content.startsWith(split)) {\n const afterSplit = content.slice(split.length);\n let newWaiting = \"\";\n let newResult = [...result];\n\n switch (policy) {\n case \"omit\":\n newResult.push(waiting);\n break;\n case \"inline\":\n newResult.push(waiting, split);\n break;\n case \"before\":\n newWaiting = split;\n if (waiting === \"\" && result.length === 0) {\n newResult = [];\n }\n else {\n newResult.push(waiting);\n }\n break;\n case \"after\":\n newResult.push(`${waiting}${split}`);\n break;\n }\n\n return splitProcessorMultiChar(\n afterSplit,\n split,\n nesting,\n policy,\n stack,\n newWaiting,\n newResult,\n true\n );\n }\n\n // Check if current character starts nesting\n if (isNestingStart(currentChar, nesting)) {\n return splitProcessorMultiChar(\n remainingContent,\n split,\n nesting,\n policy,\n [...stack, currentChar],\n `${waiting}${currentChar}`,\n result,\n false\n );\n }\n\n // Regular character at base level\n return splitProcessorMultiChar(\n remainingContent,\n split,\n nesting,\n policy,\n stack,\n `${waiting}${currentChar}`,\n result,\n false\n );\n }\n\n // We're inside nesting\n // Check if current character ends nesting\n if (isNestingEndMatch(currentChar, stack, nesting)) {\n const newStack = [...stack].slice(0, -1);\n return splitProcessorMultiChar(\n remainingContent,\n split,\n nesting,\n policy,\n newStack,\n `${waiting}${currentChar}`,\n result,\n false\n );\n }\n\n // Check if current character starts new nesting\n if (isNestingStart(currentChar, nesting)) {\n return splitProcessorMultiChar(\n remainingContent,\n split,\n nesting,\n policy,\n [...stack, currentChar],\n `${waiting}${currentChar}`,\n result,\n false\n );\n }\n\n // Regular character inside nesting\n return splitProcessorMultiChar(\n remainingContent,\n split,\n nesting,\n policy,\n stack,\n `${waiting}${currentChar}`,\n result,\n false\n );\n}\n\nfunction splitProcessorMultiple<\n TChars extends readonly string[],\n TSplit extends readonly string[],\n TNesting extends Nesting,\n TPolicy extends NestedSplitPolicy\n>(\n chars: TChars,\n split: TSplit,\n nesting: TNesting,\n policy: TPolicy,\n stack: readonly string[] = [],\n waiting: string = \"\",\n result: string[] = []\n): string[] | Error {\n // Base case: no more characters\n if (chars.length === 0) {\n if (stack.length > 0) {\n return err(\n `unbalanced/nested-split`,\n `The nesting stack was unbalanced, so the nested split can not be completed!`,\n { stack: toStringLiteral(stack) }\n );\n }\n return [...result, waiting];\n }\n\n const currentChar = chars[0];\n const remainingChars = afterFirst(chars);\n\n // Check if current character is any of the split characters and we're at base level\n if (split.includes(currentChar) && stack.length === 0) {\n let newWaiting = \"\";\n let newResult = [...result];\n\n switch (policy) {\n case \"omit\":\n newResult.push(waiting);\n break;\n case \"inline\":\n newResult.push(waiting, currentChar);\n break;\n case \"before\":\n newWaiting = currentChar;\n if (waiting === \"\" && result.length === 0) {\n newResult = [];\n }\n else {\n newResult.push(waiting);\n }\n break;\n case \"after\":\n newResult.push(`${waiting}${currentChar}`);\n break;\n }\n\n return splitProcessorMultiple(\n remainingChars,\n split,\n nesting,\n policy,\n stack,\n newWaiting,\n newResult\n );\n }\n\n // Check if current character is nesting end match\n if (isNestingEndMatch(currentChar, stack, nesting)) {\n const newStack = [...stack].slice(0, -1);\n return splitProcessorMultiple(\n remainingChars,\n split,\n nesting,\n policy,\n newStack,\n `${waiting}${currentChar}`,\n result\n );\n }\n\n // Check if current character is nesting start\n if (isNestingStart(currentChar, nesting)) {\n const newStack = [...stack, currentChar];\n return splitProcessorMultiple(\n remainingChars,\n split,\n nesting,\n policy,\n newStack,\n `${waiting}${currentChar}`,\n result\n );\n }\n\n // Regular character, continue\n return splitProcessorMultiple(\n remainingChars,\n split,\n nesting,\n policy,\n stack,\n `${waiting}${currentChar}`,\n result\n );\n}\n\nfunction splitProcessor<\n TChars extends readonly string[],\n TSplit extends string,\n TNesting extends Nesting,\n TPolicy extends NestedSplitPolicy\n>(\n chars: TChars,\n split: TSplit,\n nesting: TNesting,\n policy: TPolicy,\n stack: readonly string[] = [],\n waiting: string = \"\",\n result: string[] = []\n): string[] | Error {\n // Base case: no more characters\n if (chars.length === 0) {\n if (stack.length > 0) {\n return err(\n `unbalanced/nested-split`,\n `The nesting stack was unbalanced, so the nested split can not be completed!`,\n { stack: toStringLiteral(stack) }\n );\n }\n return [...result, waiting];\n }\n\n const currentChar = chars[0];\n const remainingChars = afterFirst(chars);\n\n // Check if current character is split character and we're at base level\n if (currentChar === split && stack.length === 0) {\n let newWaiting = \"\";\n let newResult = [...result];\n\n switch (policy) {\n case \"omit\":\n newResult.push(waiting);\n break;\n case \"inline\":\n newResult.push(waiting, currentChar);\n break;\n case \"before\":\n newWaiting = currentChar;\n if (waiting === \"\" && result.length === 0) {\n newResult = [];\n }\n else {\n newResult.push(waiting);\n }\n break;\n case \"after\":\n newResult.push(`${waiting}${currentChar}`);\n break;\n }\n\n return splitProcessor(\n remainingChars,\n split,\n nesting,\n policy,\n stack,\n newWaiting,\n newResult\n );\n }\n\n // Check if current character is nesting end match\n if (isNestingEndMatch(currentChar, stack, nesting)) {\n const newStack = [...stack].slice(0, -1);\n return splitProcessor(\n remainingChars,\n split,\n nesting,\n policy,\n newStack,\n `${waiting}${currentChar}`,\n result\n );\n }\n\n // Check if current character is nesting start\n if (isNestingStart(currentChar, nesting)) {\n const newStack = [...stack, currentChar];\n return splitProcessor(\n remainingChars,\n split,\n nesting,\n policy,\n newStack,\n `${waiting}${currentChar}`,\n result\n );\n }\n\n // Regular character, continue\n return splitProcessor(\n remainingChars,\n split,\n nesting,\n policy,\n stack,\n `${waiting}${currentChar}`,\n result\n );\n}\n\n/**\n * **nestedSplit**`(content, split, [nesting], [policy])`\n *\n * A run-time utility to split string's in a nested-aware manner.\n *\n * **Related:** `NestedSplit<..>`, `split()`, `nested()`\n */\nexport function nestedSplit<\n const TContent extends string,\n const TSplit extends string | readonly string[],\n const TNesting extends Nesting | NestingConfig__Named = DefaultNesting,\n const TPolicy extends NestedSplitPolicy = \"omit\"\n>(\n content: TContent,\n split: TSplit,\n nesting: TNesting = mutable(BRACKET_NESTING) as TNesting,\n policy: TPolicy = \"omit\" as TPolicy\n) {\n const config: Nesting = isString(nesting)\n ? nesting === \"default\" || nesting === \"brackets\"\n ? BRACKET_NESTING\n : nesting === \"quotes\"\n ? QUOTE_NESTING\n : Never\n : nesting as Nesting;\n\n if (isNestingKeyValue(config) !== true && isNestingTuple(config)) {\n return err(`invalid-nesting/nested-split`) as NestedSplit<\n TContent,\n TSplit,\n FromNamedNestingConfig<TNesting>,\n TPolicy\n >;\n }\n\n if (isArray(split)) {\n // Validate all split characters are single characters\n // for (const s of split) {\n // if (typeof s !== 'string' || s.length !== 1) {\n // return err(\n // `invalid-nesting/nested-split`,\n // `A tuple of strings were passed in to form a union type of characters which would provide the 'split', however, at least one of these were longer than a single character!`,\n // { split: toStringLiteral(split), content }\n // );\n // }\n // }\n\n // Create a modified splitProcessor that handles multiple split characters\n const result = splitProcessorMultiple(\n asChars(content),\n asArray(split) as string[],\n config,\n policy\n );\n return result as NestedSplit<\n TContent,\n TSplit,\n FromNamedNestingConfig<TNesting>,\n TPolicy\n >;\n }\n\n // Handle single string split\n if (typeof split !== \"string\") {\n return err(\n `invalid-nesting/nested-split`,\n `The split parameter must be a string when not provided as an array!`,\n { split, content }\n ) as NestedSplit<\n TContent,\n TSplit,\n FromNamedNestingConfig<TNesting>,\n TPolicy\n >;\n }\n\n // Use appropriate processor based on split length\n const result = split.length === 1\n ? splitProcessor(asChars(content), split, config, policy)\n : splitProcessorMultiChar(content, split, config, policy);\n\n return result as NestedSplit<\n TContent,\n TSplit,\n FromNamedNestingConfig<TNesting>,\n TPolicy\n >;\n}\n","import type {\n FnWithProps,\n Narrowable,\n TypedFunction\n} from \"inferred-types/types\";\n\n/**\n * **addPropsToFn**(fn, [clone]) => (props) => FnWithProps\n *\n * A higher order function which takes a dictionary object and\n * then a function and combines them into a single type.\n */\nexport function addPropsToFn<\n TFn extends TypedFunction,\n TClone extends boolean | undefined,\n>(fn: TFn, clone_fn?: TClone) {\n const localFn: any = clone_fn\n ? <T extends Parameters<TFn>>(...args: T) => fn(args)\n : fn;\n\n return <\n K extends PropertyKey,\n N extends Narrowable,\n TProps extends Record<K, N>,\n >(obj: TProps) => {\n for (const k in obj) {\n localFn[k] = obj[k];\n }\n\n return localFn as FnWithProps<\n TFn,\n TProps,\n TClone\n >;\n };\n}\n","import type {\n FnWithProps,\n Narrowable,\n TypedFunction,\n} from \"inferred-types/types\";\n\n/**\n * **addFnToProps**(props, [clone]) => (fn) => FnWithProps\n *\n * A higher order function which takes\n *\n * - `props` - key/value pairs to add to the a _future_ function\n * - `clone` - optionally state whether you want to use the future function's\n * type \"as is\" or you want to purify it's props with a clone (default is `true`)\n *\n * This is partially applied to reveal a function which takes a\n * function as input.\n */\nexport function addFnToProps<\n K extends string,\n N extends Narrowable,\n TProps extends Record<K, N>,\n TClone extends boolean | undefined,\n\n>(props: TProps, _clone_fn?: TClone) {\n return <\n TFn extends TypedFunction,\n >(fn: TFn) => {\n const localFn: any = <T extends Readonly<Parameters<TFn>>>(...args: T) => fn(args);\n\n for (const k in props) {\n localFn[k] = props[k];\n }\n\n return localFn as FnWithProps<TFn, TProps, TClone>;\n };\n}\n","import type { Constant } from \"inferred-types/constants\";\n\n/**\n * **createConstant**(kind)\n *\n * Creates a `Constant<TKind>` type.\n */\nexport function createConstant<TKind extends string>(kind: TKind) {\n return {\n _type: \"Constant\",\n kind,\n } as Constant<TKind>;\n}\n","import type { CssClassSelector, CssIdSelector, CssPseudoClass, CssSelector, CssTagSelector, If, IsUndefined, Join, TupleToUnion } from \"inferred-types/types\";\n\nexport interface CssSelectorOptions {\n ids?: readonly CssIdSelector[];\n classes?: readonly CssClassSelector[];\n tags?: readonly CssTagSelector[];\n pseudo?: readonly CssPseudoClass[];\n}\n\nexport type AsClassSelector<\n T extends CssSelectorOptions | undefined,\n> = If<\n IsUndefined<T>,\n CssSelector<CssIdSelector, CssClassSelector, CssTagSelector, CssPseudoClass>,\n T extends CssSelectorOptions\n ? CssSelector<\n If<\n IsUndefined<T[\"ids\"]>,\n CssIdSelector,\n TupleToUnion<T[\"ids\"]>\n >,\n If<\n IsUndefined<T[\"classes\"]>,\n CssClassSelector,\n TupleToUnion<T[\"classes\"]>\n >,\n If<\n IsUndefined<T[\"tags\"]>,\n CssTagSelector,\n TupleToUnion<T[\"tags\"]>\n >,\n If<\n IsUndefined<T[\"pseudo\"]>,\n CssPseudoClass,\n TupleToUnion<T[\"pseudo\"]>\n >\n >\n : never\n>;\n\n/**\n * **createCssSelector**`(opt) => (...select) => string`\n *\n * A higher order utility which:\n *\n * - on first call allows you to _narrow_ the types of selectors which are\n * available\n * - afterward it allows 1..M selectors to be chained (including pseudo\n * classes)\n *\n * Ensures correct syntax and aids in auto-completion of CSS props.\n */\nexport function createCssSelector<\n TOpt extends CssSelectorOptions,\n>(_opt?: TOpt) {\n return <\n TSelect extends readonly CssSelector<\n TOpt[\"ids\"] extends readonly CssIdSelector[] ? TupleToUnion<TOpt[\"ids\"]> : CssIdSelector,\n TOpt[\"classes\"] extends readonly CssClassSelector[] ? TupleToUnion<TOpt[\"classes\"]> : CssClassSelector,\n TOpt[\"tags\"] extends readonly CssTagSelector[] ? TupleToUnion<TOpt[\"tags\"]> : CssTagSelector,\n TOpt[\"pseudo\"] extends readonly CssPseudoClass[] ? TupleToUnion<TOpt[\"pseudo\"]> : CssPseudoClass\n >[],\n >(...selectors: TSelect): Join<TSelect, \" \"> => {\n return selectors.join(\" \") as string as Join<TSelect, \" \">;\n };\n}\n","import type { AnyFunction, AsFnMeta } from \"inferred-types/types\";\n\ntype _Props<TFn extends AnyFunction> = AsFnMeta<TFn>[\"props\"];\n\n/**\n * **fnMeta**(func)\n *\n * Runtime utility which provides a `fn` and `props` property which are\n * decomposed from the input function.\n *\n * - the `fn` is a clone of the underlying function\n */\nexport function fnMeta<TFn extends AnyFunction>(func: TFn) {\n const fn = <\n A extends AsFnMeta<TFn>[\"params\"],\n >(...args: A) => func(...args);\n\n const props = Object.keys(fn).reduce(\n (acc, key) => ({ ...acc, [key]: fn[key as keyof typeof fn] }),\n {} as Record<PropertyKey, unknown>,\n ) as _Props<TFn>;\n\n return {\n fn,\n props,\n };\n}\n","import type { AnyFunction, Dictionary, FnKeyValue } from \"inferred-types/types\";\n\n/**\n * **fnProps**`(fn)`\n *\n * Extracts any key/value pairs found along with the function.\n */\nexport function fnProps<T extends AnyFunction>(fn: T) {\n const names = Object.getOwnPropertyNames(fn);\n const props: Dictionary = {};\n\n for (const key of names) {\n if (![\"name\", \"length\"].includes(key)) {\n props[key] = fn[key as keyof typeof fn];\n }\n else if (key === \"name\" && fn[key as keyof typeof fn] !== \"\") {\n props[key] = fn[key as keyof typeof fn];\n }\n }\n\n return props as FnKeyValue<T>;\n}\n","import type { Narrowable } from \"inferred-types/types\";\n\n/**\n * An identity function for any type, with the goal of preserving literal type information\n * where ever possible.\n */\nexport function identity(): undefined;\nexport function identity(value: undefined): undefined;\nexport function identity<const T extends Narrowable>(value: T): T;\nexport function identity<const T extends readonly Narrowable[]>(...values: T): [...T];\nexport function identity<T extends Narrowable>(...values: T[]): T[] | T | undefined {\n return values.length === 1 ? values[0] : values.length === 0 ? undefined : values;\n}\n","import type {\n Dictionary,\n ExpandRecursively,\n FnKeyValue,\n FnWithProps,\n IsStaticFn,\n ObjectKey,\n TypedFunction,\n WithoutKeys,\n} from \"inferred-types/types\";\nimport { fnProps } from \"runtime/functions\";\n\n/**\n * **createFnWithProps**`(fn, props)`\n *\n * Creates a strongly typed function along with key/value properties.\n */\n// Overloads to improve literal return inference for function expressions\n// Helper type: build return type using captured params/return and merge props\ntype MergeFnWithProps<\n TOrig extends TypedFunction,\n TProps extends Record<ObjectKey, unknown>,\n TParams extends readonly any[],\n TReturn,\n> = FnKeyValue<TOrig> extends infer P extends Dictionary\n ? [keyof P] extends [never]\n ? ((...args: TParams) => TReturn) & ExpandRecursively<TProps>\n : ((...args: TParams) => TReturn) & Readonly<\n ExpandRecursively<\n WithoutKeys<P, Extract<keyof TProps, ObjectKey>> & TProps\n >\n >\n : ((...args: TParams) => TReturn) & ExpandRecursively<TProps>;\n\n// Unified overload: function expression (with or without existing props)\nexport function createFnWithProps<\n const TParams extends readonly any[],\n const TReturn,\n const TProps extends Record<ObjectKey, unknown>,\n const TOrig extends TypedFunction = (...args: TParams) => TReturn,\n>(\n fn: IsStaticFn<TOrig> extends true\n ? ((...args: TParams) => TReturn) & TOrig\n : never,\n props: TProps,\n _narrowing?: false | boolean\n): ExpandRecursively<MergeFnWithProps<TOrig, TProps, TParams, TReturn>>;\nexport function createFnWithProps<\n const TFn extends TypedFunction,\n const TProps extends Record<ObjectKey, unknown>,\n const TNarrowing extends boolean = false,\n>(\n fn: TFn,\n props: TProps,\n _narrowing?: TNarrowing\n): ExpandRecursively<FnWithProps<TFn, TProps>>;\nexport function createFnWithProps<\n const TFn extends TypedFunction,\n const TProps extends Record<ObjectKey, unknown>,\n const TNarrowing extends boolean = false,\n>(\n fn: TFn,\n props: TProps,\n _narrowing: TNarrowing = false as TNarrowing\n) {\n let fnWithProps: any = fn;\n const p = {\n ...(fnProps(fn)),\n ...props\n };\n for (const prop of Object.keys(p)) {\n if (prop !== \"name\") {\n fnWithProps[prop] = p[prop];\n }\n }\n\n if (\"name\" in props) {\n fnWithProps = Object.defineProperties(fnWithProps, {\n name: {\n value: p.name,\n writable: false\n }\n });\n }\n\n return fnWithProps as unknown as ExpandRecursively<\n FnWithProps<TFn, TProps>\n >;\n}\n","import type {\n EmptyObject,\n ExpandDictionary,\n IsNonEmptyObject,\n Narrowable,\n RemoveIndex,\n Widen,\n} from \"inferred-types/types\";\n\n/**\n * **defineObj**(literal) -> (wide) -> object\n *\n * A runtime utility designed to create an object **value** who's\n * **type** is defined by the values in the object.\n *\n * The first call to this utility defines _narrow_ type literals, the\n * second call defines _wide_ types of the values passed in.\n *\n * ### Example\n * ```ts\n * // { foo: 1; bar: number; baz: number }\n * const fooBarBaz = defineObj({foo: 1})({bar: 2, baz: 3});\n * ```\n *\n * **Related:** `defineObject`\n */\nexport function defineObj<\n N extends Narrowable,\n TLiteral extends Record<string, N>,\n>(\n literal: TLiteral = {} as TLiteral,\n) {\n /**\n * Add any key/value pairs which you want to have _wide_ types associated;\n * literal types are defined already and stated above.\n */\n return <\n N2 extends Narrowable,\n TWide extends Record<string, N2>,\n >(\n wide: TWide = {} as EmptyObject as TWide\n ) => {\n const obj = (\n literal\n ? { ...literal, ...wide }\n : wide\n ) as unknown;\n\n return obj as ExpandDictionary<\n RemoveIndex<TLiteral> & (\n IsNonEmptyObject<TWide> extends true\n ? Widen<TWide>\n : EmptyObject\n\n )\n >;\n };\n};\n","import type { Narrowable } from \"inferred-types/types\";\n\n/**\n * **createTuple**(...values) -> (...values) -> Tuple\n *\n * Runtime utility to define a strongly typed tuple.\n *\n * - if you want to _widen_ certain elements in the Tuple you can use\n * the `widen()` type utility for those elements.\n *\n * ### Example\n * ```ts\n * // [ \"foo\", \"bar\", 42 ]\n * const foobar = defineTuple(\"foo\", \"bar\", 42)\n * // [ string, \"bar\", 42]\n * const foey = defineTuple(s => s.string(), \"bar\", 42)\n * ```\n */\nexport function defineTuple<\n const T extends readonly Narrowable[],\n>(...values: T) {\n return values as unknown as T;\n}\n","import type { AfterFirst } from \"inferred-types/types\";\n\nexport function afterFirst<T extends readonly unknown[]>(list: T): AfterFirst<T> {\n return list.slice(1) as AfterFirst<T>;\n}\n","import type { AsArray, Narrowable } from \"inferred-types/types\";\n\n/**\n * Ensures that any input passed in is passed back as an array:\n *\n * - if it was already an array than this just serves as an _identity_ function\n * - if it was not then it wraps the element into a one element array of the\n * given type\n *\n * Note: by default the _type_ of values will be intentionally widened so that the value \"abc\"\n * is of type `string` not the literal `abc`. If you want to keep literal types then\n * change the optional _widen_ parameter to _false_.\n */\nexport function asArray<\n T extends Narrowable\n>(thing: T) {\n return (\n Array.isArray(thing) === true\n ? thing // proxy thing back as it's already an array\n : typeof thing === \"undefined\"\n ? ([] as T[])\n : [thing]\n ) as AsArray<T>;\n}\n","import type {\n AnyObject,\n ConverterDefn,\n Narrowable,\n Nothing,\n Tuple,\n TypedFunction,\n} from \"inferred-types/types\";\n\nimport { Never } from \"inferred-types/constants\";\nimport { isDictionary, isNothing } from \"inferred-types/runtime\";\n\ntype CallIfDefined<\n Handler,\n> = Handler extends TypedFunction\n ? ReturnType<Handler>\n : never;\n\ntype ConversionResult<\n TConvert extends Partial<\n\n ConverterDefn<any, any, any, any, any, any>\n >,\n TInput extends Narrowable | Tuple,\n> = TInput extends string\n ? CallIfDefined<TConvert[\"string\"]>\n : TInput extends number\n ? CallIfDefined<TConvert[\"number\"]>\n : TInput extends boolean\n ? CallIfDefined<TConvert[\"boolean\"]>\n : TInput extends AnyObject\n ? CallIfDefined<TConvert[\"object\"]>\n : TInput extends Tuple\n ? CallIfDefined<TConvert[\"tuple\"]>\n : TInput extends Nothing\n ? CallIfDefined<TConvert[\"nothing\"]>\n : never;\n\n/**\n * **createConverter**(mapper)\n *\n * A runtime utility which allows for the creation of a function which\n * receives multiple wide types (string, number, boolean, object) and then transform it\n * based on the \"wide type\" but while retaining the potentially narrow values passed in.\n *\n * The number of wide types which the converter will accept is based on how it configured\n * as there are discrete functions which must be passed in for handling: strings, numbers,\n * booleans, and \"objects\" (aka, Record<string,any>).\n *\n * ```ts\n * // handles strings and numbers\n * const convert = createConverter({\n * string: s => `the string was ${s}`,\n * number: n => `the number was ${n}`,\n * });\n * ```\n */\nexport function createConverter<\n TStr extends Narrowable = never,\n TNum extends Narrowable = never,\n TBool extends Narrowable = never,\n TObj extends Narrowable = never,\n TTuple extends Narrowable = never,\n TNothing extends Narrowable = never,\n>(mapper: Partial<ConverterDefn<TStr, TNum, TBool, TObj, TTuple, TNothing>>) {\n return <TInput extends Narrowable | Tuple>(input: TInput) => {\n let result: unknown;\n if (isNothing(input)) {\n result = (mapper.nothing\n ? mapper.nothing(input as TInput & Nothing)\n : Never\n );\n }\n else if (isDictionary(input)) {\n result = (mapper.object\n ? mapper.object(input as TInput & AnyObject)\n : Never\n );\n }\n else {\n switch (typeof input) {\n case \"string\":\n result = (mapper.string\n ? mapper.string(input)\n : Never);\n break;\n case \"number\":\n case \"bigint\":\n result = (mapper.number\n ? mapper.number(input as any)\n : Never);\n break;\n case \"boolean\":\n result = (mapper.boolean\n ? mapper.boolean(input as any)\n : Never);\n break;\n default:\n throw new Error(`Unhandled type: ${typeof input}`);\n }\n }\n return result as ConversionResult<typeof mapper, TInput>;\n };\n}\n","import type { FixedLengthArray, Narrowable } from \"inferred-types/types\";\n\n/**\n * **createFixedLengthArray**`(content, quantity)`\n *\n * Provides a type strong array of duplicates of what was\n * passed in as `content`\n */\nexport function createFixedLengthArray<\n T extends Narrowable,\n C extends number,\n>(content: T, quantity: C): FixedLengthArray<T, C> {\n return Array.from({ length: quantity }, () => content) as FixedLengthArray<T, C>;\n}\n","import type {\n ComparisonOperation,\n Every,\n GetComparisonParams,\n Narrowable,\n ObjectKey,\n Values\n} from \"inferred-types/types\";\nimport { filter, valuesOf } from \"inferred-types/runtime\";\n\nexport function every<\n const TOp extends ComparisonOperation,\n const TComparator extends GetComparisonParams<TOp>\n>(\n op: TOp,\n comparator: TComparator\n) {\n return <\n const TContainer extends Record<ObjectKey, N> | readonly N[],\n const N extends Narrowable,\n >(value: TContainer) => {\n const list = valuesOf(value);\n\n return list.every(i => filter(i, op, comparator)) as Every<Values<TContainer>, TOp, TComparator>;\n };\n}\n","import type {\n Comparator,\n ComparisonAccept,\n ComparisonOperation,\n Filter,\n FilterFn,\n GetComparisonParams,\n} from \"inferred-types/types\";\nimport {\n compare,\n} from \"inferred-types/runtime\";\n\nfunction filterFn<\n const TOp extends ComparisonOperation,\n const TParams extends GetComparisonParams<TOp>\n>(\n op: TOp,\n params: TParams\n): FilterFn<TOp, TParams> {\n return <const TList extends ComparisonAccept<TOp>[]>(list: TList) => {\n return (\n list.filter((item) => {\n const comparator = compare(op, ...params) as Comparator<TOp, TParams>;\n const result = comparator(item) as unknown as boolean;\n\n return result;\n })\n ) as unknown as Filter<TList, TOp, TParams>;\n };\n}\n\n/**\n * **filter**`(op, ...[params])` => (comparator) => boolean\n *\n * A set of filter functions which provide strong (and narrow)\n * typing support.\n *\n * - The first call sets up the filter operation and returns a\n * function which can be used as a filter\n * - the second call (aka, the actual filter function) will accept\n * either a singular element or an array of elements.\n * - when passed a singular value it will return a boolean value\n * which is determined at design time where possible\n * - when passed a tuple then the filtered tuple is passed back\n * and is typed at designed time where possible\n *\n * **Related:** `retain()`\n */\nexport function filter<\n const TOp extends ComparisonOperation,\n const TParams extends GetComparisonParams<TOp>\n>(\n op: TOp,\n ...params: TParams\n) {\n return filterFn(op, params) as FilterFn<TOp, TParams>;\n}\n","import type { AfterFirst, Empty, First, Narrowable, RemoveNever, UnionFilter } from \"inferred-types/types\";\nimport { isNotEmpty } from \"inferred-types/runtime\";\n\ntype NotEmpty<\n T extends readonly unknown[],\n R extends readonly unknown[] = [],\n> = [] extends T\n ? RemoveNever<R>\n : NotEmpty<\n AfterFirst<T>,\n [\n ...R,\n First<T> extends Empty\n ? never\n : UnionFilter<First<T>, Empty>,\n ]\n >;\n\n/**\n * Filters an array/tuple down to elements which are _not empty_ and\n * preserves as much of the type as possible.\n */\nexport function filterEmpty<\n T extends readonly N[],\n N extends Narrowable,\n>(...val: T) {\n return val.filter(i => isNotEmpty(i)) as NotEmpty<T>;\n}\n","import type { AfterFirst, First, IsEqual, Narrowable, RemoveNever } from \"inferred-types/types\";\nimport { isDefined } from \"inferred-types/runtime\";\n\ntype NotUndefined<\n T extends readonly unknown[],\n R extends readonly unknown[] = [],\n> = [] extends T\n ? RemoveNever<R>\n : NotUndefined<\n AfterFirst<T>,\n [\n ...R,\n IsEqual<First<T>, undefined> extends true\n ? never\n : Exclude<First<T>, undefined>,\n ]\n >;\n\n/**\n * Filters an array/tuple down to elements which are _not undefined_ and\n * preserves as much of the type as possible.\n */\nexport function filterUndefined<\n T extends readonly N[],\n N extends Narrowable,\n>(...val: T) {\n return val.filter(i => isDefined(i)) as NotUndefined<T>;\n}\n","import type { And } from \"inferred-types/types\";\n\n/**\n * Groups a number of \"logic functions\" together by combining their results using\n * the logical **AND** operator\n */\nexport function and<\n TList extends readonly boolean[],\n>(...values: TList): And<TList> {\n return values.every(i => i === true) as And<TList>;\n}\n","import type {\n Comparator,\n Compare,\n ComparisonAccept,\n ComparisonOperation,\n Contains,\n DateLike,\n Err,\n First,\n GetComparisonParams,\n IsAfter,\n IsEqual,\n IsError,\n IsWideObject,\n Narrowable,\n ObjectKey,\n Second,\n SomeEqual,\n Unset\n} from \"inferred-types/types\";\nimport { NUMERIC_CHAR } from \"inferred-types/constants\";\n\nimport {\n asChars,\n asDate,\n asDateTime,\n asNumber,\n contains,\n doesExtend,\n equalsSome,\n err,\n firstChar,\n indexOf,\n isAfter,\n isStaticTemplate,\n last,\n parseDate,\n unset\n} from \"inferred-types/runtime\";\n\nimport { not } from \"runtime/boolean-logic\";\n\nimport {\n endsWith,\n hasIndexOf,\n isAlpha,\n isArray,\n isBoolean,\n isComparisonOperation,\n isDateLike,\n isDictionary,\n isError,\n isFalse,\n isFalsy,\n isFunction,\n isInputToken,\n isNarrowable,\n isNarrowableArray,\n isNumber,\n isNumberLike,\n isObjectKey,\n isParsedDate,\n isString,\n isStringOrNumericArray,\n isTrue,\n isValidComparisonParams,\n startsWith,\n} from \"runtime/type-guards\";\n\nfunction handle_string<\n TVal extends Narrowable,\n TOp extends string,\n TParams extends readonly unknown[],\n>(\n val: TVal,\n op: TOp,\n params: TParams\n) {\n switch (op) {\n case \"startsWith\": {\n return (\n (isString(val) || isNumber(val)) && isStringOrNumericArray(params)\n ? startsWith(...params as readonly (string | number)[])(val)\n : false\n );\n }\n\n case \"endsWith\": {\n return (\n (isString(val) || isNumber(val)) && isStringOrNumericArray(params)\n ? endsWith(...params as readonly (string | number)[])(val)\n : false\n );\n }\n\n case \"endsWithNumber\": {\n return (\n isString(val)\n ? val === \"\"\n ? false\n : asChars(val).length > 0\n ? NUMERIC_CHAR.includes(last(asChars(val)) as any)\n : false\n : false\n );\n }\n\n case \"startsWithNumber\": {\n return (\n isString(val)\n ? NUMERIC_CHAR.includes(firstChar(String(val)) as any)\n : false\n );\n }\n\n case \"onlyNumbers\": {\n return isString(val)\n ? val === \"\"\n ? false\n : asChars(val).every(c => isNumberLike(c))\n : false;\n }\n\n case \"onlyLetters\": {\n return isString(val)\n ? isAlpha(val)\n : false;\n }\n\n case \"alphaNumeric\": {\n return isString(val)\n ? asChars(val).every(c => isNumberLike(c) || isAlpha(c))\n : false;\n }\n\n case \"isTemplateLiteral\": {\n return isStaticTemplate(val as any) as IsTemplateLiteral<typeof val>;\n }\n }\n\n return unset;\n}\n\nfunction handle_general<\n const TVal extends Narrowable,\n const TOp extends string,\n const TParams extends readonly unknown[],\n>(\n val: TVal,\n op: TOp,\n params: TParams\n) {\n switch (op) {\n case \"extends\": {\n if (!isInputToken(params[0])) {\n return err(\n `compare/extends`,\n `A filter operation based on the 'extends' operation passed in a parameter which was not an InputToken so we are not able to convert this into a type!`,\n );\n }\n return isNarrowable(val) && doesExtend(params[0])(val);\n }\n\n case \"equals\": {\n return (val === params[0]) as IsEqual<TVal, TParams[0]>;\n }\n\n case \"false\": {\n return isFalse(val);\n }\n\n case \"true\": {\n return isTrue(val);\n }\n\n case \"truthy\": {\n return not(isFalsy(val));\n }\n\n case \"falsy\": {\n return isFalsy(val);\n }\n\n case \"equalsSome\":\n return (\n isNarrowable(val)\n && isArray(params)\n && equalsSome(...(params as Narrowable[]))(val)\n ) as SomeEqual<TParams, TVal>;\n\n case \"contains\":\n return (\n isString(val) || isNumber(val) || isStringOrNumericArray(val)\n ? contains(val as any, params) as any\n : false\n ) as TVal extends string | number | readonly (string | number)[]\n ? Contains<TVal, TParams>\n : false;\n\n case \"containsSome\":\n return (isString(val) || isNumber(val) || isNarrowableArray(val)) && isArray(params)\n ? params.some(\n i => contains(val as any, i as Narrowable) as any\n )\n : false;\n\n case \"containsAll\":\n return (isString(val) || isNumber(val) || isNarrowableArray(val)) && isArray(params)\n ? params.every(\n i => contains(val as any, i as Narrowable) as any\n )\n : false;\n }\n\n return unset;\n}\n\nfunction handle_numeric<\n TVal extends Narrowable,\n TOp extends ComparisonOperation,\n TParams extends readonly unknown[],\n>(\n val: TVal,\n op: TOp,\n params: TParams\n) {\n switch (op) {\n case \"greaterThan\": {\n if (!isNumberLike(params[0])) {\n return err(\n `invalid-params/greaterThan`,\n `The 'greaterThan' operation requires a numeric parameter`,\n { params }\n );\n }\n return Number(val) > Number(params[0]);\n }\n\n case \"greaterThanOrEqual\": {\n if (!isNumberLike(params[0])) {\n return err(\n `invalid-params/greaterThanOrEqual`,\n `The 'greaterThanOrEqual' operation requires a numeric parameter`,\n { params }\n );\n }\n return Number(val) >= Number(params[0]);\n }\n\n case \"lessThan\": {\n if (!isNumberLike(params[0])) {\n return err(\n `invalid-params/lessThan`,\n `The 'lessThan' operation requires a numeric parameter`,\n { params }\n );\n }\n return Number(val) < Number(params[0]);\n }\n\n case \"lessThanOrEqual\": {\n if (!isNumberLike(params[0])) {\n return err(\n `invalid-params/lessThanOrEqual`,\n `The 'lessThanOrEqual' operation requires a numeric parameter`,\n { params }\n );\n }\n return Number(val) <= Number(params[0]);\n }\n\n case \"betweenExclusively\": {\n return (\n isNumberLike(val)\n && isNumberLike(params[0])\n && isNumberLike(params[1])\n )\n ? asNumber(val) > asNumber(params[0])\n && asNumber(val) < asNumber(params[1])\n : false;\n }\n\n case \"betweenInclusively\": {\n if (!isNumberLike(val))\n return false;\n if (!isNumberLike(params[0]) || !isNumberLike(params[1])) {\n return err(\n `invalid-params/betweenInclusively`,\n `The 'betweenInclusively' operation requires two numeric parameters`,\n { params }\n );\n }\n const valNumIncl = Number(val);\n const minIncl = Number(params[0]);\n const maxIncl = Number(params[1]);\n return valNumIncl >= minIncl && valNumIncl <= maxIncl;\n }\n }\n\n return unset;\n}\n\nfunction handle_object<\n const TVal extends Narrowable,\n const TOp extends ComparisonOperation,\n const TParams extends readonly unknown[],\n>(\n val: TVal,\n op: TOp,\n params: TParams\n) {\n switch (op) {\n case \"objectKeyGreaterThan\": {\n const [key, compare] = params;\n if (!isObjectKey(key)) {\n return err(\n \"invalid-key/objectKeyGreaterThan\",\n `The compare() function failed while processing the 'objectKeyGreaterThan' operation. The problem was that the 'key' parameter was not a valid Object key!`,\n { key, compare }\n );\n }\n\n if (!isNumber(compare)) {\n return err(\n \"invalid-param/objectKeyGreaterThan\",\n `The compare(${String(key)},PARAM) function expects a numeric value as the second parameter when using the objectKeyGreaterThan operation but got '${typeof compare}'`,\n { key, compare }\n );\n }\n return (\n isDictionary(val)\n ? hasIndexOf(val, key)\n ? isNumberLike(val[key])\n ? Number(val[key]) > compare\n : false\n : false\n : err(\n `invalid-type/objectKeyGreaterThan`,\n `The comparison using the 'objectKeyGreaterThan' operation was unable to be performed because the value passed in was not an object!`,\n { op, params }\n )\n );\n }\n\n case \"objectKeyGreaterThanOrEqual\": {\n const [key, compare] = params as unknown as [ObjectKey, number];\n return isDictionary(val)\n ? hasIndexOf(val, key)\n ? isNumberLike(val[key])\n ? Number(val[key]) >= compare\n : false\n : false\n : err(\n `invalid-type/objectKeyGreaterThanOrEqual`,\n `The comparison using the 'objectKeyGreaterThanOrEqual' operation was unable to be performed because the value passed in was not an object!`,\n { op, params }\n );\n }\n case \"objectKeyLessThan\": {\n const [key, compare] = params as unknown as [ObjectKey, number];\n return isDictionary(val)\n ? hasIndexOf(val, key)\n ? isNumberLike(val[key])\n ? Number(val[key]) < compare\n : false\n : false\n : err(\n `invalid-type/objectKeyLessThan`,\n `The comparison using the 'objectKeyLessThan' operation was unable to be performed because the value passed in was not an object!`,\n { op, params }\n );\n }\n case \"objectKeyLessThanOrEqual\": {\n const [key, compare] = params as unknown as [ObjectKey, number];\n return isDictionary(val)\n ? hasIndexOf(val, key)\n ? isNumberLike(val[key])\n ? Number(val[key]) <= compare\n : false\n : false\n : err(\n `invalid-type/objectKeyLessThanOrEqual`,\n `The comparison using the 'objectKeyLessThanOrEqual' operation was unable to be performed because the value passed in was not an object!`,\n { op, params }\n );\n }\n case \"objectKeyEquals\": {\n const key = indexOf(params, 0) as ObjectKey & TParams[0];\n const compare = indexOf(params, 1) as TParams[1];\n\n return (\n isDictionary(val)\n ? hasIndexOf(val, key)\n ? val[key] === compare\n : false\n : err(\n `invalid-type/objectKeyEquals`,\n `The comparison using the 'objectKeyEquals' operation was unable to be performed because the value passed in was not an object!`,\n { op, params }\n )\n ) as IsWideObject<TVal> extends true\n ? boolean\n : First<TParams> extends ObjectKey\n ? First<TParams> extends keyof TVal\n ? IsEqual<TVal, Second<TParams>>\n : false\n : false;\n }\n case \"objectKeyExtends\": {\n return err(`not-done`, `the 'objectKeyExtends' operation is not yet implemented in the runtime`);\n }\n }\n\n return unset;\n}\n\nfunction handle_datetime<\n const TVal extends Narrowable,\n const TOp extends ComparisonOperation,\n const TParams extends readonly unknown[],\n>(\n val: TVal,\n op: TOp,\n params: TParams\n): boolean | Error | Unset {\n let outcome = null;\n\n if ([\"sameDay\", \"sameMonth\", \"sameMonthYear\", \"sameYear\", \"after\", \"before\"].includes(op)) {\n if (!isDateLike(params[0])) {\n return err(\"invalid-params/not-date-like\", `The '${op}' operation expects the first parameter to be a DateLike value but it was not!`);\n }\n if (!isDateLike(val)) {\n return err(\"invalid-value/not-date-like\", `The '${op}' operation expects the value to be a DateLike value but it was not!`);\n }\n\n switch (op) {\n case \"sameDay\": {\n const value = parseDate(val as DateLike);\n const comparator = parseDate(params[0] as TParams[0] & DateLike);\n if (isParsedDate(comparator) && isParsedDate(value)) {\n outcome = value.year === comparator.year\n && value.month === comparator.month\n && value.date === comparator.date;\n return outcome;\n }\n else if (isError(value)) {\n return err(\n \"invalid-value/compare\",\n `The sameDay operation got a value which was unable to be parsed into a date!`,\n { op, params, val }\n );\n }\n else if (isError(comparator)) {\n return err(\n \"invalid-params/compare\",\n `The sameDay operation was configured with a parameter which was unable to be parsed into a date!`,\n { op, params, val }\n );\n }\n break;\n }\n\n case \"sameMonth\": {\n const value = asDate(val as DateLike);\n const comparator = asDate(params[0] as TParams[0] & DateLike);\n outcome = value.getMonth() === comparator.getMonth();\n return outcome;\n }\n\n case \"sameMonthYear\": {\n const value = asDate(val as DateLike);\n const comparator = asDate(params[0] as TParams[0] & DateLike);\n outcome = value.getMonth() === comparator.getMonth()\n && value.getFullYear() === comparator.getFullYear();\n return outcome;\n }\n case \"sameYear\": {\n const value = asDate(val as DateLike);\n const comparator = asDate(params[0] as TParams[0] & DateLike);\n outcome = value.getFullYear() === comparator.getFullYear();\n return outcome;\n }\n\n case \"after\": {\n return isDateLike(params[0])\n ? isAfter(params[0])(val) as IsAfter<TVal, First<TParams>>\n : err(\"invalid-params/not-date-like\") as IsAfter<TVal, First<TParams>>;\n }\n\n case \"before\": {\n const value = asDateTime(val as DateLike);\n const comparator = asDateTime(params[0] as TParams[0] & DateLike);\n outcome = value.getTime() < comparator.getTime();\n return outcome;\n }\n }\n }\n return unset;\n}\n\nfunction handle_other<\n const TVal extends Narrowable,\n const TOp extends ComparisonOperation,\n const TParams extends readonly unknown[],\n>(\n val: TVal,\n op: TOp,\n params: TParams\n) {\n switch (op) {\n case \"errors\": {\n return (\n val === null\n ? false\n : val === undefined\n ? false\n : val instanceof Error\n ) as IsError<TVal>;\n }\n\n case \"errorsOfType\":\n if (!(val instanceof Error))\n return false;\n if (!params[0]) {\n return err(\n `invalid-params/errorsOfType`,\n `The 'errorsOfType' operation requires a type parameter`,\n { params }\n );\n }\n return \"type\" in val && val.type === params[0];\n\n case \"returnEquals\":\n if (!isFunction(val))\n return false;\n\n return err(\n `compare/runtime`,\n `The comparison type \"returnEquals\" can not be evaluated in the runtime system!`\n );\n\n case \"returnExtends\":\n if (!isFunction(val))\n return false;\n\n return err(\n `compare/runtime`,\n `The comparison type \"returnExtends\" can not be evaluated in the runtime system!`\n );\n }\n\n return unset;\n}\n\nfunction compareFn<\n const TOp extends string,\n const TParams extends readonly unknown[]\n>(\n op: TOp,\n params: TParams\n): Comparator<TOp, TParams> {\n const fn = <const TVal extends ComparisonAccept<TOp>>(\n val: TVal\n ): Compare<TVal, TOp, TParams> => {\n if (isComparisonOperation(op)) {\n let result: unknown = unset;\n\n result = handle_string(val, op, params);\n if (isBoolean(result) || isError(result)) {\n return result as Compare<TVal, TOp, TParams>;\n }\n\n // Object operations\n result = handle_object(val, op, params);\n if (isBoolean(result) || isError(result)) {\n return result as Compare<TVal, TOp, TParams>;\n }\n\n // Numeric operations\n result = handle_numeric(val, op, params);\n if (isBoolean(result) || isError(result)) {\n return result as Compare<TVal, TOp, TParams>;\n }\n\n // DateTime operations\n result = handle_datetime(val, op, params);\n if (isBoolean(result) || isError(result)) {\n return result as Compare<TVal, TOp, TParams>;\n }\n\n // Other operations (errors, errorsOfType, etc.)\n result = handle_other(val, op, params);\n if (isBoolean(result) || isError(result)) {\n return result as Compare<TVal, TOp, TParams>;\n }\n\n result = handle_general(val, op, params);\n if (isBoolean(result) || isError(result)) {\n return result as Compare<TVal, TOp, TParams>;\n }\n\n return false as Compare<TVal, TOp, TParams>;\n }\n else {\n return err(\n `invalid-operation`,\n `The operation '${String(op)}' is not a valid operation for the compare utility!`,\n { op, params }\n ) as unknown as Compare<TVal, TOp, TParams>;\n }\n };\n\n // Create callable wrapper to maintain compatibility while avoiding intersection complexity\n const comparator = Object.assign(fn, {\n kind: \"comparator\" as const,\n op,\n params,\n fn\n });\n\n return comparator as unknown as Comparator<TOp, TParams>;\n}\n\ntype Returns<TOp extends string, TParams> = TOp extends ComparisonOperation\n ? TParams extends GetComparisonParams<TOp>\n ? Comparator<TOp, TParams>\n : Err<`invalid-params/${TOp}`>\n : Err<\n `invalid-operation/${TOp}`,\n `The operation '${TOp}' is not a recognized or valid comparison operation!`,\n { op: TOp; params: TParams }\n >\n;\n\n/**\n * **compare**`(op, ...params) -> (val) -> boolean`\n *\n * A higher order function which can perform type-strong comparison\n * operations.\n */\nexport function compare<\n const TOp extends ComparisonOperation,\n const TParams extends GetComparisonParams<TOp>\n>(\n op: TOp,\n ...params: TParams\n): Returns<TOp, TParams> {\n let response: any;\n\n if (isComparisonOperation(op)) {\n if (isValidComparisonParams(op, params)) {\n response = compareFn(op, params);\n }\n else {\n response = err(\n \"invalid-params\",\n `The parameters for the operation '${isString(op) ? op : \"undefined\"}' are invalid!`,\n { op, params }\n );\n }\n }\n else {\n response = err(\n \"invalid-operation\",\n `The operation is not a recognized or valid comparison operation!`,\n { op, params }\n );\n }\n\n return response as Returns<TOp, TParams>;\n}\n","import type { Contains, Narrowable } from \"inferred-types/types\";\n\ntype Stringify<T> = T extends string\n ? T\n : T extends number\n ? `${T}`\n : never;\n\n/**\n * **contains**`(content, comparator)`\n *\n * Runtime equivalent of the type-level `Contains` utility.\n *\n * Checks whether `content` contains `comparator`:\n * - When `content` is a string or number, it checks if `comparator` exists as a substring\n * - When `content` is an array, it checks if any element matches `comparator`\n * - When `comparator` is an array (union), it checks if any comparator element matches\n */\nexport function contains<\n const TContent extends string | number,\n const TComparator extends string | number,\n>(\n content: TContent,\n comparator: TComparator\n): `${TContent}` extends `${string}${Stringify<TComparator>}${string}` ? true : false;\n\nexport function contains<\n const TContent extends readonly (string | number)[],\n const TComparator extends string | number,\n>(\n content: TContent,\n comparator: TComparator\n): Extract<TContent[number], TComparator> extends never ? false : true;\n\nexport function contains<\n const TContent extends string | number,\n const TComparator extends Narrowable,\n>(\n content: TContent,\n comparator: TComparator\n): Contains<TContent, TComparator>;\n\nexport function contains<\n const TContent extends string | number,\n const TComparator extends readonly Narrowable[],\n>(\n content: TContent,\n comparator: TComparator\n): Contains<TContent, TComparator>;\n\nexport function contains<\n const TContent extends readonly Narrowable[],\n const TComparator extends Narrowable,\n>(\n content: TContent,\n comparator: TComparator\n): Contains<TContent, TComparator>;\n\nexport function contains<\n const TContent extends readonly Narrowable[],\n const TComparator extends readonly Narrowable[],\n>(\n content: TContent,\n comparator: TComparator\n): Contains<TContent, TComparator>;\n\nexport function contains(\n content: string | number | readonly Narrowable[],\n comparator: Narrowable | readonly Narrowable[]\n): boolean {\n // Helper to check if a value matches a comparator\n const valueMatches = (value: unknown, comp: unknown): boolean => {\n // Direct equality check\n if (value === comp)\n return true;\n\n // Type constructor checks (for things like String, Number, Boolean)\n if (comp === String)\n return typeof value === \"string\";\n if (comp === Number)\n return typeof value === \"number\";\n if (comp === Boolean)\n return typeof value === \"boolean\";\n\n // Special handling for null/undefined\n if (comp === null)\n return value === null;\n if (comp === undefined)\n return value === undefined;\n\n return false;\n };\n\n // If content is string or number, check substring\n if (typeof content === \"string\" || typeof content === \"number\") {\n const contentStr = String(content);\n\n // If comparator is array (union), check if any element is substring\n if (Array.isArray(comparator)) {\n return comparator.some((comp: unknown) => contentStr.includes(String(comp)));\n }\n\n // Otherwise check if comparator is substring\n return contentStr.includes(String(comparator));\n }\n\n // If content is array\n else if (Array.isArray(content)) {\n // If comparator is array (union), check if any element of content matches any comparator\n if (Array.isArray(comparator)) {\n return content.some((item: unknown) =>\n comparator.some((comp: unknown) => valueMatches(item, comp))\n );\n }\n\n // Otherwise check if any element matches comparator\n return content.some((item: unknown) => valueMatches(item, comparator));\n }\n\n // This should never be reached given the type constraints, but TypeScript needs it\n else {\n return false;\n }\n}\n","import type { Or } from \"inferred-types/types\";\n\n/**\n * **or**(conditions) -> boolean\n *\n * If you have a discrete list of boolean values then you can use this\n * function to perform a logical OR operation on them.\n */\nexport function or<TList extends readonly boolean[]>(...conditions: TList) {\n const values: unknown = conditions.includes(true);\n\n return values as Or<TList>;\n}\n","import type {\n As,\n ComparisonAccept,\n ComparisonOperation,\n Find,\n FindFunction,\n GetComparisonParams,\n} from \"inferred-types/types\";\nimport { compare } from \"runtime/combinators\";\n\n/**\n * **find**(op, ...params) => (value) => el | undefined\n *\n * A higher order function that allows _finding_ an element in a list\n * while preserving any available type information.\n */\nexport function find<\n const TOp extends ComparisonOperation,\n const TParams extends GetComparisonParams<TOp>\n>(\n op: TOp,\n ...params: TParams\n): FindFunction<TOp, TParams> {\n return <const TList extends readonly ComparisonAccept<As<TOp, string>>[]>(\n list: TList\n ): Find<TList, TOp, TParams> => {\n return list.find(\n (i) => {\n const comparator = compare(\n op,\n ...params\n );\n\n return comparator(i) as any;\n }\n ) as unknown as Find<TList, As<TOp, string>, TParams>;\n };\n}\n","import type { GetEach, Narrowable } from \"inferred-types/types\";\nimport { get, isError } from \"inferred-types/runtime\";\n\nexport interface GetEachOptions<\n THandleErrors,\n> {\n handleErrors?: THandleErrors;\n}\n\n/**\n * **getEach**(list, dotPath, [options])\n *\n * Returns a specific _property_ (from an object) or _index_ (from an array) from a list\n * of items.\n *\n * - the options allow for a \"default value\" to be substituted for any _undefined_ or _never_ values\n * - errors in looking up dot path's will -- by default -- be removed as this is typically the desired\n * behavior but you can also choose from:\n * - `to-never`: converts _type_ to `never` but runtime maintains error message\n */\nexport function getEach<\n const TList extends readonly unknown[],\n const TDotPath extends string | null\n>(\n list: TList,\n dotPath: TDotPath,\n): GetEach<[...TList], TDotPath> {\n const result: unknown = list\n .map(i => dotPath === null\n ? i\n : typeof i === \"object\"\n ? get(i as Narrowable, dotPath as string)\n : Array.isArray(i)\n ? get(i as readonly unknown[], dotPath as string)\n : null as never,\n )\n .filter(i => !isError(i));\n\n return result as unknown as GetEach<\n [...TList],\n TDotPath\n >;\n}\n","import type {\n Dictionary,\n IndexOf,\n Narrowable,\n Tuple,\n} from \"inferred-types/types\";\nimport {\n err,\n isNumber,\n} from \"inferred-types/runtime\";\n\n/**\n * **indexOf**(val, index)\n *\n * A dereferencing utility which receives a **value** and an **index** and then\n * returns `value[idx]`.\n *\n * - If the _index_ is passed in as a `null` value then no dereferencing will be done\n * and it will simply pass back the _value_.\n * - If an array is passed in, you are allowed to use negative values to dereference\n * off the back of the array.\n */\nexport function indexOf<\n TContainer extends Narrowable | Tuple,\n TIdx extends PropertyKey | null,\n>(val: TContainer, index: TIdx) {\n const isNegative = isNumber(index) && index < 0;\n if (isNegative && !Array.isArray(val)) {\n throw new Error(`The indexOf(val,idx) utility received a negative index value [${index}] but the value being de-references is not an array [${typeof val}]!`);\n }\n if (isNegative && Array.isArray(val) && val.length < Math.abs(index)) {\n throw new Error(`The indexOf(val,idx) utility received a negative index of ${index} but the length of the array passed in is only ${val.length}! This is not allowed.`);\n }\n\n /** real index after considering negative indexing */\n const idx = isNegative && Array.isArray(val)\n ? val.length + 1 - Math.abs(index)\n : index;\n\n return (\n index === null\n ? val\n : idx === null\n ? val\n : Array.isArray(val)\n ? Number(idx as any) in val\n ? val[Number(idx)]\n : err(\"invalid-index\", `attempt to index a numeric array with an invalid index: ${Number(idx)}`)\n : typeof val === \"object\"\n ? String(idx as any) in (val as Dictionary)\n ? (val as Dictionary)[String(idx)]\n : err(\"invalid-index\", `attempt to index a dictionary object with an invalid index: ${String(idx)}`)\n : err(\"invalid-container-type\", `Attempt to use indexOf() on an invalid container type: ${typeof val}`)\n ) as unknown as IndexOf<TContainer, TIdx>;\n}\n","import type { Intersection, Narrowable } from \"inferred-types/types\";\nimport { get, getEach, ifNotNull, isIndexable } from \"inferred-types/runtime\";\n\nfunction intersectWithOffset<\n A extends readonly unknown[],\n B extends readonly unknown[],\n TDeref extends string | number,\n>(a: A, b: B, deref: TDeref) {\n const aIndexable = a.every(i => isIndexable(i));\n const bIndexable = b.every(i => isIndexable(i));\n\n if (!aIndexable || !bIndexable) {\n if (!aIndexable) {\n throw new Error(`The \"a\" array passed into intersect(a,b) was not fully composed of indexable properties: ${a.map(i => typeof i).join(\", \")}`);\n }\n else {\n throw new Error(`The \"b\" array passed into intersect(a,b) was not fully composed of indexable properties: ${b.map(i => typeof i).join(\", \")}`);\n }\n }\n\n const aMatches = getEach(a, deref as any) as readonly unknown[];\n const bMatches = getEach(b, deref as any) as readonly unknown[];\n\n const sharedKeys = ifNotNull(\n deref,\n v => [\n a.filter(i => Array.from(bMatches).includes(get(i as Narrowable, v as string | null))),\n b.filter(i => Array.from(aMatches).includes(get(i as Narrowable, v as string | null))),\n ],\n () => a.filter(k => b.includes(k)),\n );\n\n return sharedKeys;\n}\n\nfunction intersectNoOffset<\n A extends readonly unknown[],\n B extends readonly unknown[],\n>(a: A, b: B) {\n return a.length < b.length\n ? a.filter(val => b.includes(val))\n : b.filter(val => a.includes(val));\n}\n\n/**\n * **intersection**(a,b,[deref])\n *\n * A set operation which provides the _intersection_ between\n * between two array's `a` and `b`.\n *\n * - when passing in arrays, you may also pass in a _dereferencing_ property\n * which will be used for arrays of objects (or sub-arrays) so that the comparison\n * is done on the dereferenced value versus the value as a whole.\n */\nexport function intersection<\n A extends readonly unknown[],\n B extends readonly unknown[],\n TDeref extends string | null = null,\n>(a: A, b: B, deref: TDeref = null as TDeref): Intersection<A, B, TDeref> {\n return (\n deref === null\n ? intersectNoOffset(a, b) as unknown\n : intersectWithOffset(a, b, deref) as unknown\n ) as unknown as Intersection<A, B, TDeref>;\n}\n","import type { Join } from \"inferred-types/types\";\n\n/**\n * **Joiner**`<TJoin>`\n *\n * Represents a partial application of the runtime `joinWith()` utility.\n */\nexport type Joiner<\n TJoin extends string,\n> = <\n const TContent extends readonly string[]\n>(...tuple: TContent\n) => Join<TContent, TJoin>;\n\n/**\n * **join**(joinWith)(tuple) -> joined\n *\n * A higher order runtime utility which provides the ability to create\n * type-strong join's with an array of string and a joining string.\n *\n * ```ts\n * // \"hello world\"\n * const helloWorld = join(\"\")(\"hello\", \" \", \"world\");\n * // \"foo, bar, baz\"\n * const list = join(\", \")(\"foo\", \"bar\", \"baz\");\n * ```\n */\nexport function joinWith<const TJoin extends string>(\n joinWith: TJoin,\n) {\n /**\n * add elements of the tuple you want to join\n */\n const fn = ((...tuple: readonly string[]) => {\n const tup: readonly string[] = tuple;\n return tup.join(joinWith);\n }) as unknown as Joiner<TJoin>;\n\n return fn;\n}\n","import type { Last, Tuple } from \"inferred-types/types\";\n\nexport function last<T extends Tuple>(list: T): Last<T> {\n return [...list].pop() as Last<T>;\n}\n","import type { LogicalReturns, LogicFunction } from \"inferred-types/types\";\nimport { Never } from \"inferred-types/constants\";\nimport { isBoolean, isFunction } from \"inferred-types/runtime\";\n\nexport function logicalReturns<\n TConditions extends readonly (boolean | LogicFunction)[],\n>(conditions: TConditions) {\n return conditions.map(c => isBoolean(c)\n ? c\n : isFunction(c)\n ? c()\n : Never,\n ) as unknown as LogicalReturns<TConditions>;\n}\n","import type { BeforeLast, Last } from \"inferred-types/types\";\n\n/**\n * **pop**`(list) -> [ remaining, popped ]`\n *\n * A utility which takes a list of items and returns a tuple of:\n *\n * - the remaining items after the pop operation\n * - the last item in the list\n *\n * All attempts are made to keep the types literals.\n */\nexport function pop<T extends readonly unknown[]>(list: T): [ BeforeLast<T>, Last<T> ] {\n const before = [...list];\n const last = before.pop();\n\n return [before, last] as [ BeforeLast<T>, Last<T> ];\n}\n","import type { Narrowable, Reverse } from \"inferred-types/types\";\n\n/**\n * **reverse**(list)\n *\n * Allows reversing the order of a readonly array and preserving the types.\n */\nexport function reverse<\n const T extends readonly N[],\n const N extends Narrowable\n>(list: T): Reverse<T> {\n return [...list].reverse() as Reverse<T>;\n}\n","import type {\n First,\n IsEqual,\n IsUndefined,\n Narrowable,\n} from \"inferred-types/types\";\nimport { isDefined } from \"inferred-types/runtime\";\n\ntype Rtn<\n T extends readonly K[] | K[] | undefined,\n K extends Narrowable,\n> = IsUndefined<T> extends true\n ? undefined\n : T extends readonly K[] | K[]\n ? IsEqual<T[\"length\"], number> extends true\n ? undefined | string\n : T[\"length\"] extends 0\n ? undefined\n : First<T>\n : never;\n\n/**\n * **shift**(list)\n *\n * Takes a list of elements and:\n *\n * - if the list is empty returns _undefined_\n * - otherwise returns the first element in the list\n *\n * **Note:** unlike using the builtin `ARR.shift()` method:\n *\n * - the source array is _never_ mutated\n * - you can shift off the first element of the readonly array as well a mutable one\n * (because the underlying array is _not_ mutated)\n * - in **many** cases, you should be using a queue of some sort with utils like\n * `createLifoQueue()` or `createFifoQueue()`\n *\n */\nexport function shift<\n T extends readonly K[] | K[] | undefined,\n K extends Narrowable,\n>(list: T): Rtn<T, K> {\n let rtn;\n if (isDefined(list)) {\n rtn = (\n list.length === 0\n ? undefined\n : list[0]\n ) as First<T>;\n\n try {\n // remove item from source array where possible\n // note: not possible when array is frozen by being\n // made readonly\n list = list.slice(1) as any;\n }\n catch {\n // ignore\n }\n }\n else {\n rtn = undefined;\n }\n\n return rtn as Rtn<T, K>;\n}\n","import type { Narrowable, SliceArray } from \"inferred-types/types\";\nimport { isNumber } from \"inferred-types/runtime\";\n\n/**\n * **slice**`(list, start, [length])`\n *\n * Runtime utility to slice an array while maintaining strong\n * types.\n *\n * - There are mild variations from the Javascript slice syntax:\n * - the second (optional) parameter is \"length\" instead of index position\n * - this makes using it much easier in most cases\n * - you can use a _negative index_ for **start**\n */\nexport function slice<\n const TList extends readonly N[],\n N extends Narrowable,\n TStart extends number,\n TLen extends number | undefined,\n>(\n list: TList,\n start: TStart,\n length: TLen = undefined as TLen,\n) {\n const sliced: readonly unknown[] = isNumber(length)\n ? list.slice(start, start + length)\n : list.slice(start);\n\n return sliced as unknown as TLen extends number ? SliceArray<TList, TStart, TLen> : SliceArray<TList, TStart>;\n}\n","import type {\n As,\n Dictionary,\n IsUnionArray,\n Narrowable,\n ObjectKey,\n SortByKey,\n SortByKeyOptions,\n UnionArrayToTuple\n} from \"inferred-types/types\";\n\nimport { asArray } from \"inferred-types/runtime\";\n\n/**\n * **sortByKey**`(items, key, config)`\n *\n * Sorts a tuple of Dictionary-based objects by the\n * specified key of these items.\n *\n * - you can pin to `start` or `end` of the tuple.\n */\nexport function sortByKey<\n T extends readonly Dictionary<ObjectKey, N>[],\n K extends ObjectKey,\n C extends SortByKeyOptions<CO>,\n CO extends ObjectKey,\n N extends Narrowable,\n>(\n items: T,\n key: K,\n config: C\n) {\n const o: { start: Narrowable[]; end: Narrowable[] } = {\n start: config.start ? asArray(config.start) : [],\n end: config.end ? asArray(config.end) : [],\n };\n\n const start = o.start.map((k) => {\n return items.find(i => i[key] === k);\n }) as any[];\n const end = o.end.map((k) => {\n return items.find(i => i[key] === k);\n }) as any[];\n\n const taken = [\n ...start,\n ...end\n ].map(i => i[key]) as any[];\n\n const remaining = items.filter(\n i => !taken.includes(i[key])\n ) as any[];\n\n return [\n ...start,\n ...remaining,\n ...end\n ] as unknown as SortByKey<\n T,\n K,\n\n As<{\n start: IsUnionArray<C[\"start\"]> extends true\n ? UnionArrayToTuple<C[\"start\"]>\n : C[\"start\"];\n end: IsUnionArray<C[\"end\"]> extends true\n ? UnionArrayToTuple<C[\"end\"]>\n : C[\"end\"];\n }, SortByKeyOptions>\n\n >;\n}\n","import type { First, Narrowable, UnionToTuple, Unique } from \"inferred-types/types\";\n\n/**\n * **unique**\n *\n * Runtime utility which removes intersecting values from two sets and\n * provides a unique values contained in each set.\n */\nexport function unique<\n N extends Narrowable,\n K extends number,\n T extends readonly (Record<K, N> | Narrowable)[],\n>(...values: T) {\n const u: any[] = [];\n for (const i of values.flat()) {\n if (!u.includes(i)) {\n u.push(i);\n }\n }\n\n return u as First<T> extends readonly (Record<K, N> | Narrowable)[]\n ? Unique<UnionToTuple<First<T>>>\n : Unique<T>;\n}\n","import type { Split } from \"inferred-types/types\";\nimport { createFnWithProps } from \"runtime/initializers\";\nimport { last } from \"runtime/lists\";\n\ntype Policy = \"omit\" | \"before\" | \"inline\";\n\nconst SEP = `sep:\\u00A0` as const;\n\nfunction splitUp<\n T extends readonly string[]\n>(\n content: string[],\n sep: T,\n policy: Policy = \"omit\"\n) {\n let inline = content;\n\n for (const s of sep) {\n const pass: string[] = [];\n for (const c of inline) {\n if (c.includes(s) && !c.startsWith(SEP)) {\n const splits = c.split(s);\n const all: string[] = [];\n for (const [idx, split] of splits.entries()) {\n if (idx < splits.length - 1) { // Corrected condition\n all.push(split, `${SEP}${s}`);\n }\n else {\n all.push(split);\n }\n }\n pass.push(...all);\n }\n else {\n pass.push(c);\n }\n }\n inline = pass;\n }\n\n if (policy === \"omit\") {\n inline = inline.filter(i => !i.startsWith(SEP));\n }\n else if (policy === \"before\") {\n let before: string[] = [];\n for (const el of inline) {\n if (el.startsWith(SEP)) {\n const val = el.replace(SEP, \"\");\n const priorVal = last(before);\n\n before = [...before.slice(0, -1), `${priorVal}${val}`];\n }\n else {\n before.push(el);\n }\n }\n inline = before;\n }\n\n else if (policy === \"inline\") {\n inline = inline.map(i => i.startsWith(SEP) ? i.replace(SEP, \"\") : i);\n }\n\n return inline;\n}\n\nfunction omit<\n T extends string,\n S extends readonly string[]\n>(\n str: T,\n ...sep: S\n): Split<T, S, \"omit\"> {\n return splitUp([str], sep, \"omit\") as unknown as Split<T, S, \"omit\">;\n}\n\nfunction before<\n T extends string,\n S extends readonly string[]\n>(\n str: T,\n ...sep: S\n): Split<T, S, \"before\"> {\n return splitUp([str], sep, \"before\") as unknown as Split<T, S, \"before\">;\n}\n\nfunction inline<\n T extends string,\n S extends readonly string[]\n>(\n str: T,\n ...sep: S\n): Split<T, S, \"inline\"> {\n return splitUp([str], sep, \"inline\") as unknown as Split<T, S, \"inline\">;\n}\n\n/**\n * **split**`(str, sep)`\n *\n * Splits a string on a given separator while preserving string literal typing\n * when possible.\n *\n * - The default \"policy\" is to _omit_ the separator from the return tuple\n * - If you want to use the `before`, `after`, or `inline` policy types\n * they are available as properties of this function.\n */\nexport const split = createFnWithProps(omit, {\n omit,\n before,\n inline\n}) as typeof omit & {\n omit: typeof omit;\n before: typeof before;\n inline: typeof inline;\n};\n","import type { RetainAfter } from \"inferred-types/types\";\n\n/**\n * **retainAfter**`(content, ...find)`\n *\n * Runtime utility which removes all characters in a given string _until_\n * it finds the first instance of a substring defined in **find** variable.\n *\n * ### Example\n * ```ts\n * // \"world\"\n * const world = retainAfter(\"hello world\", \" \");\n * ```\n *\n * **Related:** `retainAfterInclusive()`\n */\nexport function retainAfter<\n TContent extends string,\n TFind extends readonly string[],\n>(content: TContent, ...find: TFind) {\n const idx = Math.min(\n ...find.map(i => content.indexOf(i)).filter(i => i > -1),\n );\n const min = Math.min(...find.map(i => i.length));\n let len = Math.max(...find.map(i => i.length));\n\n if (min !== len) {\n if (!find.includes(content.slice(idx, len))) {\n len = min;\n }\n }\n\n return (\n idx && idx > 0\n ? content.slice(idx + len)\n : \"\"\n ) as RetainAfter<TContent, TFind[number]>;\n}\n\n/**\n * **retainAfterInclusive**`(content, ...find)`\n *\n * Runtime utility which removes all characters in a given string _until_\n * it finds the first instance of a substring defined in **find** variable.\n *\n * ### Example\n * ```ts\n * // \" world\"\n * const world = retainAfter(\"hello world\", \" \");\n * ```\n *\n * **Related:** `retainAfter()`\n */\nexport function retainAfterInclusive<\n TContent extends string,\n TFind extends readonly string[],\n>(\n content: TContent,\n ...find: TFind\n) {\n const minFound = Math.min(\n ...find.map(i => content.indexOf(i)).filter(i => i > -1),\n );\n\n return (\n minFound > 0\n ? content.slice(minFound)\n : \"\"\n ) as RetainAfter<TContent, TFind[number], true>;\n}\n","import type { RetainChars, TupleToUnion } from \"inferred-types/types\";\nimport { asChars } from \"inferred-types/runtime\";\n\n/**\n * **retainChars**`(content, ...retain)`\n *\n * Retains the characters from `retain[]` which are\n * found in `content` while discarding the rest.\n *\n * ```ts\n * // \"42\"\n * const num = retainChars(\"4foobar2\", ...NUMERIC_CHAR);\n * ```\n *\n * **Related:** `stripChars()`, `retainWhile()`, `retainUntil()`\n */\nexport function retainChars<\n TContent extends string,\n TRetain extends readonly string[],\n>(content: TContent, ...retain: TRetain): RetainChars<TContent, TupleToUnion<TRetain>> {\n const chars: readonly string[] = asChars(content);\n\n return chars.filter(c => retain.includes(c)).join(\"\") as unknown as RetainChars<TContent, TupleToUnion<TRetain>>;\n}\n","import type { RetainUntil } from \"inferred-types/types\";\nimport { asChars } from \"inferred-types/runtime\";\n\n/**\n * **retainUntil**`(content, ...find)`\n *\n * Runtime utility which retains all characters in a given string _until_\n * it finds the first instance of a substring defined in **find** variable.\n *\n * ### Example\n * ```ts\n * // \"hello\"\n * const world = retainUntil(\"hello world\", \" \");\n * ```\n *\n * **Related:** `retainUntilInclusive()`\n */\nexport function retainUntil<\n TContent extends string,\n TFind extends readonly string[],\n>(content: TContent, ...find: TFind) {\n const chars = asChars(content) as readonly string[];\n\n let idx = 0;\n while (!find.includes(chars[idx]) && idx <= chars.length) {\n idx = idx + 1;\n }\n\n return (\n idx === 0\n ? \"\"\n : content.slice(0, idx)\n ) as unknown as RetainUntil<TContent, TFind[number]>;\n}\n\n/**\n * **retainUntil**`(content, ...find)`\n *\n * Runtime utility which retains all characters in a given string _until_\n * it finds the first instance of a substring defined in **find** variable.\n *\n * ### Example\n * ```ts\n * // \"hello \"\n * const world = retainUntilInclusive(\"hello world\", \" \");\n * ```\n *\n * **Related:** `retainUntil()`\n */\nexport function retainUntilInclusive<\n TContent extends string,\n TFind extends readonly string[],\n>(content: TContent, ...find: TFind) {\n const chars = asChars(content) as readonly string[];\n\n let idx = 0;\n while (!find.includes(chars[idx]) && idx <= chars.length) {\n idx = idx + 1;\n }\n\n return (\n idx === 0\n ? content.slice(0, 1)\n : content.slice(0, idx + 1)\n ) as unknown as RetainUntil<TContent, TFind[number], true>;\n}\n","import type { DefaultNesting, FromNamedNestingConfig, Nesting, NestingConfig__Named, RetainUntil__Nested } from \"inferred-types/types\";\nimport { BRACKET_NESTING, Never, QUOTE_NESTING } from \"inferred-types/constants\";\nimport {\n afterFirst,\n asArray,\n asChars,\n err,\n isNestingEndMatch,\n isNestingStart,\n isNestingTuple,\n isNumber,\n isString,\n mutable,\n toStringLiteral,\n} from \"inferred-types/runtime\";\n\nfunction findIdx<\n TChars extends readonly string[],\n TFind extends string | readonly string[],\n TNesting extends Nesting,\n>(\n chars: TChars,\n find: TFind,\n nesting: TNesting,\n stack: readonly string[] = [],\n result: string = \"\",\n idx: number = 0\n) {\n const f = asArray(find) as string[];\n\n if (chars.length === 0) {\n if (stack.length > 0) {\n return err(\n `unbalanced/retainUntil__Nested`,\n `The characters passed into retainUntil_Nested were unbalanced in the nesting!`,\n { find, stack: toStringLiteral(stack), content: result }\n );\n }\n else {\n return err(\n `not-found/retainUntil__Nested`,\n `The characters passed into retainUntil_Nested had a balanced nesting but the character '${find}' was never found at the root of the nesting stack!`,\n { find, content: result }\n );\n }\n }\n\n if (f.includes(chars[0]) && stack.length === 0) {\n return idx;\n }\n\n if (isNestingEndMatch(chars[0], stack, nesting) === true) {\n const newStack = [...stack].slice(0, -1);\n\n // Special check: if this character ends nesting AND is our target AND stack becomes empty\n if (chars[0] === find && newStack.length === 0) {\n return idx;\n }\n\n return findIdx(\n afterFirst(chars),\n find,\n nesting,\n newStack,\n `${result}${chars[0]}`,\n idx + 1\n );\n }\n else if (isNestingStart(chars[0], nesting) === true) {\n // Special handling for NestingTuple: only allow stack depth of 1\n const shouldLimitStack = isNestingTuple(nesting) && stack.length > 0;\n\n return findIdx(\n afterFirst(chars),\n find,\n nesting,\n shouldLimitStack ? stack : [...stack, chars[0]],\n `${result}${chars[0]}`,\n idx + 1\n );\n }\n else {\n // Regular character, continue\n return findIdx(\n afterFirst(chars),\n find,\n nesting,\n stack,\n `${result}${chars[0]}`,\n idx + 1\n );\n }\n}\n\n/**\n * **retainUntil__Nested**(str, find, [incl], [nesting])\n *\n * Returns a sub-string of `str`, terminating with `find` character\n * which exists at the base of the nesting stack.\n *\n * - if the find character is _not found_ at the base of the nesting\n * stack an error will be returned.\n */\nexport function retainUntil__Nested<\n const TStr extends string,\n const TFind extends string | readonly string[],\n const TInclude extends boolean = true,\n const TNesting extends Nesting | NestingConfig__Named = DefaultNesting\n\n>(\n str: TStr,\n find: TFind,\n incl: TInclude = true as TInclude,\n nesting: TNesting = mutable(BRACKET_NESTING) as TNesting\n) {\n const config = isString(nesting)\n ? nesting === \"default\" || nesting === \"brackets\"\n ? BRACKET_NESTING\n : nesting === \"quotes\"\n ? QUOTE_NESTING\n : Never\n : nesting as Nesting;\n const idx = findIdx(asChars(str), find, config);\n\n if (isNumber(idx)) {\n const endIdx = incl ? idx + 1 : idx;\n return str.slice(0, endIdx) as TFind extends readonly string[]\n ? RetainUntil__Nested<TStr, TFind[number], TInclude, FromNamedNestingConfig<TNesting>>\n : TFind extends string\n ? RetainUntil__Nested<TStr, TFind, TInclude, FromNamedNestingConfig<TNesting>>\n : never;\n }\n else {\n return idx as TFind extends readonly string[]\n ? RetainUntil__Nested<TStr, TFind[number], TInclude, FromNamedNestingConfig<TNesting>>\n : TFind extends string\n ? RetainUntil__Nested<TStr, TFind, TInclude, FromNamedNestingConfig<TNesting>>\n : never;\n }\n}\n","import type { RetainWhile, TupleToUnion } from \"inferred-types/types\";\nimport { asChars } from \"inferred-types/runtime\";\n\n/**\n * **retainWhile**`(content, ...retain)`\n *\n * Retains the characters at the start of the string\n * so long as they are part of the character values\n * passed in for `retain[]`\n */\nexport function retainWhile<\n TContent extends string,\n TRetain extends readonly string[],\n>(content: TContent, ...retain: TRetain) {\n const stopIdx = asChars(content)\n .findIndex(c => !retain.includes(c));\n\n return content.slice(0, stopIdx) as unknown as RetainWhile<TContent, TupleToUnion<TRetain>>;\n}\n","import type { StripAfter } from \"inferred-types/types\";\n\n/**\n * **stripAfter**(content, find)\n *\n * Runtime utility which strips out all characters after (and including)\n * the \"find\" string while returning a strong type.\n *\n * ### Example\n * ```ts\n * // \"hello\"\n * const hello = stripAfter(\"hello world\", \" \");\n * ```\n */\nexport function stripAfter<\n TContent extends string,\n TBreak extends string,\n>(content: TContent, find: TBreak) {\n return content.split(find).shift() as unknown as StripAfter<TContent, TBreak>;\n}\n","import type { StripAfterLast } from \"inferred-types/types\";\nimport { Never } from \"inferred-types/constants\";\nimport { isArray, split } from \"inferred-types/runtime\";\n\n/**\n * **stripAfterLast**(content, find)\n *\n * Runtime utility which strips out all characters after (and including)\n * the _last_ instance of the \"find\" string while returning a strong type.\n *\n * ### Example\n * ```ts\n * // \"hello world\"\n * const hello = stripAfterLast(\"hello world Joey\", \" \");\n * ```\n */\nexport function stripAfterLast<\n TContent extends string,\n TBreak extends string,\n>(content: TContent, find: TBreak) {\n const parts = split.inline(content, find) as any[];\n return (\n isArray(parts)\n ? parts.slice(0, -2).join(\"\")\n : Never\n ) as unknown as StripAfterLast<TContent, TBreak>;\n}\n","import type { StripBefore } from \"inferred-types/types\";\n\n/**\n * **stripBefore**(content, find)\n *\n * Runtime utility which strips out all characters Before (and including)\n * the \"find\" string while returning a strong type.\n *\n * ### Example\n * ```ts\n * // \"hello\"\n * const hello = stripBefore(\"hello world\", \" \");\n * ```\n */\nexport function stripBefore<\n TContent extends string,\n TBreak extends string,\n>(content: TContent, find: TBreak) {\n return content\n .split(find)\n .slice(1)\n .join(find) as StripBefore<TContent, TBreak>;\n}\n","import type { StripChars } from \"inferred-types/types\";\nimport { asChars } from \"inferred-types/runtime\";\n\n/**\n * **stripChars**`(content, ...strip)`\n *\n * Strips out characters found in `content`.\n *\n * **Related:** `retainChars()`\n */\nexport function stripChars<\n TContent extends string,\n TRetain extends readonly string[],\n>(content: TContent, ...strip: TRetain): StripChars<TContent, TRetain[number]> {\n const chars: readonly string[] = asChars(content);\n\n return (\n chars.filter(c => !strip.includes(c)).join(\"\")\n ) as unknown as StripChars<TContent, TRetain[number]>;\n}\n","import type { Err } from \"inferred-types/types\";\n\n/**\n * **createErrorConditionTemplate**`(kind,[msg],[utility]) => ErrorCondition`\n *\n * A higher order runtime utility for generating reusable `ErrorCondition`'s at\n * runtime.\n */\nexport function createErrorCondition<\n TKind extends string,\n TMsg extends string = never,\n TUtility extends string = never,\n>(kind: TKind, msg: TMsg = \"\" as never, utility: TUtility = \"\" as never) {\n return {\n __kind: \"Error\",\n kind,\n msg,\n utility,\n } as unknown as Err<TKind, TMsg>;\n}\n\nexport function errCondition(kind: string, msg?: string) {\n return {\n __kind: \"Error\",\n kind,\n msg,\n };\n}\n","/**\n * Drops the first stack frame line from `err.stack` in-place (if possible).\n * Returns the same error for chaining.\n *\n * Definition of “first frame”: the first line that *starts* with whitespace\n * then 'at ' (V8 / Node / most Chromium) OR matches Firefox style like\n * `functionName@file:line:col`.\n */\nexport function dropFirstStackFrame<T extends Error>(err: T): T {\n if (!err || typeof err.stack !== \"string\") {\n return err;\n }\n\n const lines = err.stack.split(/\\r?\\n/);\n\n if (lines.length <= 1) {\n return err; // nothing to trim\n }\n\n // Usually line[0] = \"Error: message\"\n // Starting from line[1], find the *first* frame and remove exactly one.\n // But be defensive: sometimes extra blank lines appear.\n const frameIdx = lines.findIndex((l, i) => {\n if (i === 0)\n return false;\n // V8 style: \" at func (file:line:col)\" or \" at file:line:col\"\n if (/^\\s*at\\s+/.test(l))\n return true;\n // Firefox style: \"func@file:line:col\" or \"@file:line:col\"\n if (/^[^\\s@]*@.+:\\d+:\\d+$/.test(l))\n return true;\n return false;\n });\n\n if (frameIdx > 0) {\n lines.splice(frameIdx, 1);\n err.stack = lines.join(\"\\n\");\n }\n\n return err;\n}\n","import type {\n EmptyObject,\n Err,\n IsNever,\n TypedError\n} from \"inferred-types/types\";\nimport { toKebabCase } from \"inferred-types/runtime\";\nimport { dropFirstStackFrame } from \"runtime/errors\";\n\n/**\n * **typedError**(type, message, [ctx])\n *\n * @deprecated prefer using the provided `err(type,message,[ctx])`\n * function\n */\nexport function typedError<\n T extends string,\n M extends string,\n>(\n type: T,\n message: M = \"\" as M\n) {\n const err = new Error(message) as TypedError<string, string | undefined>;\n const [t, subType] = type.split(\"/\");\n err.__kind = \"Error\";\n err.type = toKebabCase(t);\n err.subType = toKebabCase(subType);\n if (message) {\n err.message = message;\n }\n\n return err as Err<T, M>;\n}\n\nexport function err<\n TType extends string,\n TMsg extends string = \"\",\n const TCtx extends Record<string, U> = never,\n U = unknown\n>(\n type: TType,\n message?: TMsg,\n ctx?: TCtx\n) {\n const err = new Error(message) as TypedError<string, string | undefined>;\n const [t, subType] = type.split(\"/\");\n err.type = toKebabCase(t);\n err.subType = toKebabCase(subType);\n if (message) {\n err.message = message;\n }\n if (ctx) {\n for (const k of Object.keys(ctx)) {\n err[k] = ctx[k];\n }\n }\n\n return dropFirstStackFrame(err) as Err<TType, TMsg, IsNever<TCtx> extends true ? EmptyObject : TCtx>;\n}\n","import type { Dictionary, KeysWithError } from \"inferred-types/types\";\nimport { indexOf, isError } from \"inferred-types/runtime\";\n\n/**\n * **keysWithError**`(obj)`\n *\n * Returns a list of _keys_ where the passed in object is\n */\nexport function keysWithError<\n const T extends Dictionary<string>,\n>(obj: T) {\n const keys = Object.keys(obj).filter((k) => {\n return isError(indexOf(obj, k));\n });\n\n return keys as KeysWithError<T>;\n}\n","import type { Err, StripLeading, TupleToUnion } from \"inferred-types/types\";\nimport { err } from \"runtime/errors\";\nimport { isNumber, isString } from \"runtime/type-guards\";\n\ntype Returns<\n T extends string | number,\n U extends readonly (string | number)[],\n> = T extends string | number\n ? StripLeading<T, TupleToUnion<U>>\n : Err<\"invalid-type/strip-leading\">;\n\n/**\n * **stripLeading**(content, ...strip)\n *\n * Runtime utility which strips of a leading substring from the\n * primary content if it exists and leaves content unchanged otherwise.\n */\nexport function stripLeading<\n T extends string | number,\n U extends readonly (string | number)[],\n>(\n content: T,\n ...strip: U\n) {\n if (!isString(content) && !isNumber(content)) {\n return err(\"invalid-type/strip-leading\") as Returns<T, U>;\n }\n let output: string = String(content);\n\n for (const s of strip) {\n if (output.startsWith(String(s))) {\n output = output.slice(String(s).length);\n }\n }\n\n return (\n isNumber(content) ? Number(output) : output\n ) as unknown as Returns<T, U>;\n}\n","import type {\n StripSurround,\n} from \"inferred-types/types\";\nimport { isNumber } from \"inferred-types/runtime\";\n\nexport type StripSurroundConfigured<\n TStrip extends readonly (string | number)[],\n> = <TInput extends string | number>(input: TInput) => StripSurround<\n TInput,\n TStrip[number]\n>;\n\n/**\n * **stripSurround**`(chars) => (input) => _stripped_`\n *\n * A higher order function which allows you to define a string literal\n * stripping function for both the beginning and end of a string literal.\n *\n * ```ts\n * // utility which will strip all starting and ending brackets\n * const stripBrackets = stripSurround(\"(\", \")\", \"[\", \"]\", \"{\", \"}\");\n * // \" hello, world \"\n * const without = stripBrackets(\"[ hello, world ]\")\n * ```\n *\n * **Related**: `stripSurroundAndTrim`\n */\nexport function stripSurround<\n TChars extends readonly (number | string)[],\n>(...chars: TChars): StripSurroundConfigured<TChars> {\n return <TInput extends string | number>(input: TInput) => {\n let output: string = String(input);\n\n for (const s of chars) {\n if (output.startsWith(String(s))) {\n output = output.slice(String(s).length);\n }\n if (output.endsWith(String(s))) {\n output = output.slice(0, -1 * String(s).length);\n }\n }\n\n return (\n isNumber(input) ? Number(output) : output\n ) as unknown as StripSurround<TInput, TChars[number]>;\n };\n}\n","import type { StripTrailing, TupleToUnion } from \"inferred-types/types\";\nimport { isNumber, isUndefined } from \"inferred-types/runtime\";\n\ntype Returns<\n T extends string | number | undefined,\n U extends readonly (string | number)[],\n> = T extends undefined\n ? undefined\n : T extends string | number\n ? StripTrailing<T, TupleToUnion<U>>\n : never;\n\n/**\n * **stripTrailing**(content, strip)\n *\n * Runtime utility which ensures that last part of a string has substring\n * removed if it exists and that strong typing is preserved.\n */\nexport function stripTrailing<\n T extends string | number | undefined,\n U extends readonly (string | number)[],\n>(\n content: T,\n ...strip: U\n): Returns<T, U> {\n if (isUndefined(content)) {\n return undefined as Returns<T, U>;\n }\n\n let output: string = String(content);\n\n for (const s of strip) {\n if (output.endsWith(String(s))) {\n output = output.slice(0, -1 * String(s).length);\n }\n }\n\n return (\n isNumber(content) ? Number(output) : output\n ) as unknown as Returns<T, U>;\n}\n","import type { StripUntil, TupleToUnion } from \"inferred-types/types\";\nimport { asChars } from \"inferred-types/runtime\";\n\n/**\n * **stripUntil**`(content, ...until)`\n *\n * Strips the characters at the start of the string\n * until a character specified in `until` is found.\n */\nexport function stripUntil<\n TContent extends string,\n TUntil extends readonly string[],\n>(content: TContent, ...until: TUntil) {\n const stopIdx = asChars(content)\n .findIndex(c => until.includes(c));\n\n return content.slice(stopIdx) as unknown as StripUntil<TContent, TupleToUnion<TUntil>>;\n}\n","import type { StripWhile } from \"inferred-types/types\";\nimport { asChars } from \"inferred-types/runtime\";\n\n/**\n * **stripWhile**`(content, ...until)`\n *\n * Strips the characters at the start of the string\n * while they match the characters found in `match`\n * parameter.\n */\nexport function stripWhile<\n TContent extends string,\n TMatch extends readonly string[],\n>(content: TContent, ...match: TMatch) {\n const stopIdx = asChars(content)\n .findIndex(c => !match.includes(c));\n\n return content.slice(stopIdx) as unknown as StripWhile<TContent, TMatch[number]>;\n}\n","import type { Trim } from \"inferred-types/types\";\n\n/**\n * **trim**(input)\n *\n * A runtime utility which trims whitespace on both sides of a string\n * and returns a type-strong string literal where possible.\n */\nexport function trim<T extends string>(input: T): Trim<T> {\n return input.trim() as Trim<T>;\n}\n","import type { TrimEnd } from \"inferred-types/types\";\n\n/**\n * **trimEnd**(input)\n *\n * A runtime utility which trims whitespace on the tailing/right side of a string\n * and returns a type-strong string literal where possible.\n */\nexport function trimEnd<T extends string>(input: T): TrimEnd<T> {\n return input.trimEnd() as TrimEnd<T>;\n}\n","import type { TrimStart } from \"inferred-types/types\";\n\n/**\n * **trimStart**`(input)`\n *\n * A runtime utility which trims whitespace on the leading/left side\n * of a string and returns a type-strong string literal where possible.\n */\nexport function trimStart<T extends string>(input: T): TrimStart<T> {\n return input.trimStart() as TrimStart<T>;\n}\n","export type SurroundWith<\n TPrefix extends string,\n TPostfix extends string,\n> = <TInput extends string>(input: TInput) => `${TPrefix}${TInput}${TPostfix}`;\n\n/**\n * **surround**(prefix, postfix) -> (input) -> `${prefix}${input}${postfix}`\n *\n * A higher order runtime utility which receives a prefix and postfix string\n * on it's first call. This returns a secondary function which will _surround_\n * the given input with the prefix and postfix strings.\n *\n * **Related:** `ensureSurround()`\n */\nexport function surround<\n TPrefix extends string,\n TPostfix extends string,\n>(prefix: TPrefix, postfix: TPostfix): SurroundWith<TPrefix, TPostfix> {\n return input => `${prefix}${input}${postfix}`;\n}\n","import type { NumericChar, RetainWhile } from \"inferred-types/types\";\nimport { NUMERIC_CHAR } from \"inferred-types/constants\";\nimport { asChars } from \"inferred-types/runtime\";\n\n/**\n * **takeNumericCharacters**`(content)`\n *\n * Starts at the passed in content and extracts all numeric characters\n * in the string until a non-numeric value arrives.\n */\nexport function takeNumericCharacters<T extends string>(content: T) {\n const nonNumericIdx = asChars(content).findIndex(i => !NUMERIC_CHAR.includes(i as any));\n\n return content.slice(0, nonNumericIdx) as unknown as RetainWhile<T, NumericChar>;\n}\n","import type { ToNumericArray, Tuple } from \"inferred-types/types\";\n\nexport function toNumericArray<T extends Tuple>(arr: T) {\n return arr.map(i => Number(i)) as unknown as ToNumericArray<T>;\n}\n","import type { Narrowable, ToString } from \"inferred-types/types\";\n\n/**\n * **toString**()\n *\n * Runtime utility which converts any given type to a string while\n * preserving literal types.\n */\nexport function toString<T extends Narrowable>(val: T): ToString<T> {\n return String(val) as ToString<T>;\n}\n","import type { Truncate } from \"inferred-types/types\";\n\nexport function truncate<\n TStr extends string,\n TMax extends number,\n TEllipsis extends boolean | string = false,\n>(content: TStr, maxLength: TMax, ellipsis: TEllipsis = false as TEllipsis) {\n const overLimit = content.length > maxLength;\n\n return (\n overLimit\n ? ellipsis\n ? `${content.slice(0, maxLength)}${typeof ellipsis === \"string\" ? ellipsis : \"...\"}`\n : content.slice(0, maxLength)\n : content\n ) as unknown as Truncate<TStr, TMax, TEllipsis>;\n}\n","import type {\n IsUnionArray,\n Length,\n Narrowable,\n UnionArrayToTuple,\n UnionToTuple,\n} from \"inferred-types/types\";\nimport { asArray } from \"inferred-types/runtime\";\n\n/**\n * **tuple**(value)\n *\n * Creates a discrete tuple.\n * ```ts\n * // [1,2,3]\n * const t1 = tuple(1,2,3);\n * const t2 = tuple([1,2,3]);\n * ```\n */\nexport function tuple<\n N extends Narrowable,\n K extends PropertyKey,\n T extends readonly (Record<K, N> | N)[],\n>(...values: T) {\n const arr = (\n values.length === 1\n ? values[0]\n : values\n ) as Length<T> extends 1\n ? T[0] extends readonly unknown[]\n ? T[0] extends infer Arr\n ? IsUnionArray<Arr> extends true\n ? UnionArrayToTuple<Arr>\n : UnionToTuple<Arr>\n : T[0]\n : T[0]\n : T;\n\n return asArray(arr);\n}\n","import type { Unset } from \"inferred-types/types\";\n\n/**\n * the runtime token of the type `Unset` which is meant to delineate\n * a value which is in it's default state (aka, has not been set).\n */\nexport const unset = { kind: \"Unset\" } as Unset;\n","import type { Narrowable, Widen } from \"inferred-types/types\";\n\n/**\n * **widen**(value)\n *\n * Runtime utility which takes any _type_ and ensures it's widened to a wide\n * type of passed in value is a literal.\n */\nexport function widen<T extends Narrowable>(value: T): Widen<T> {\n return value as unknown as Widen<T>;\n}\n","import type { IsoMonthDate } from \"inferred-types/types\";\nimport { ISO_DATE_30, ISO_DATE_31 } from \"inferred-types/constants\";\nimport { stripLeading } from \"runtime/string-literals\";\nimport { isString } from \"runtime/type-guards\";\n\nfunction validate(d: IsoMonthDate): boolean {\n const stripped = stripLeading(d, \"--\");\n const [month, date] = [\n stripped.slice(0, 2),\n stripLeading(stripped.slice(3), \":\")\n ];\n if (month === \"02\" || ISO_DATE_30.includes(date as any)) {\n // because we can't be sure that it's not going to be\n // a \"double leap\" then we need to accept it as valid\n return ISO_DATE_30.includes(date as any);\n }\n\n return ISO_DATE_31.includes(date as any);\n}\n\n/**\n * **isIsoMonthDate**`(date) -> boolean`\n *\n * type-guard which validates whether this `date` is a valid ISO\n * Month/Date date (aka, a date that is year independent).\n */\nexport function isIsoMonthDate(date: unknown): date is IsoMonthDate {\n return isString(date)\n && date.startsWith(\"--\")\n && date.replace(/--\\d{2}-?[0-3]\\d/, \"\") === \"\"\n && validate(date as IsoMonthDate);\n}\n","import type { IsoDate } from \"inferred-types/types\";\nimport { stripAfter, stripLeading } from \"runtime/string-literals\";\nimport { isString } from \"runtime/type-guards\";\n\nexport function isIsoExplicitTime(val: unknown): val is IsoDate {\n if (isString(val)) {\n const parts = stripLeading(stripAfter(val, \"Z\"), \"T\").split(/[:.]/).map(i => Number(i));\n return val.startsWith(\"T\") && val.includes(\":\") && val.split(\":\").length === 3 && parts[0] >= 0 && parts[0] <= 23 && parts[1] >= 0 && parts[1] <= 59;\n }\n else {\n return false;\n }\n}\n\nexport function isIsoImplicitTime(val: unknown): val is IsoDate {\n if (isString(val)) {\n const parts = stripAfter(val, \"Z\").split(/[:.]/).map(i => Number(i));\n return val.includes(\":\") && val.split(\":\").length === 3 && parts[0] >= 0 && parts[0] <= 23 && parts[1] >= 0 && parts[1] <= 59;\n }\n else {\n return false;\n }\n}\n\n/**\n * Type guard which validates that the passed in `val` is a valid ISO-8601 time.\n */\nexport function isIsoTime(val: unknown): val is IsoDate {\n return isIsoExplicitTime(val) || isIsoImplicitTime(val);\n}\n","import type { IsoYear } from \"inferred-types/types\";\nimport { isNumber, isString } from \"runtime/type-guards\";\n\n/**\n * A type guard which matches a valid ISO 8601 year (e.g., `YYYY`).\n */\nexport function isIsoYear(val: unknown): val is IsoYear {\n return !!(isString(val)\n && val.length === 4\n && isNumber(Number(val))\n && Number(val) >= 0\n && Number(val) <= 9999);\n}\n","import type { DateLike, IsoYearMonth } from \"inferred-types/types\";\nimport { isString } from \"runtime/type-guards\";\n\n/**\n * type-guard which validates whether this\n */\nexport function isIsoYearMonth(date: unknown): date is IsoYearMonth & DateLike {\n return isString(date)\n && date.startsWith(\"-\")\n && date.replace(/-\\d{4}-?[01]\\d/, \"\") === \"\";\n}\n","import type { LuxonLikeDateTime } from \"inferred-types/types\";\nimport { isDictionary } from \"runtime/type-guards\";\n\n/**\n * Type guard which validates that the passed in `val` is a\n * [LuxonJS](https://moment.github.io/luxon/#/?id=luxon) DateTime object.\n */\nexport function isLuxonDate(val: unknown): val is LuxonLikeDateTime {\n return isDictionary(val)\n && typeof val === \"object\"\n && val !== null\n && \"isValid\" in val\n && \"invalidReason\" in val\n && \"invalidExplanation\" in val\n && \"toISO\" in val\n && \"toFormat\" in val\n && \"toMillis\" in val\n && \"year\" in val\n && \"month\" in val\n && \"day\" in val\n && \"hour\" in val\n && \"minute\" in val\n && \"second\" in val\n && \"millisecond\" in val\n && \"zoneName\" in val\n && typeof (val as any).isValid === \"boolean\"\n && typeof (val as any).toISO === \"function\"\n && typeof (val as any).zoneName === \"string\";\n}\n","import type { MomentLike } from \"inferred-types/types\";\nimport { isDictionary } from \"inferred-types/runtime\";\n\n/**\n * **isMoment**`(val)`\n *\n * Type guard which validates that the passed in `val` is a\n * [MomentJS](https://momentjs.com/docs/) object.\n */\nexport function isMoment(val: unknown): val is MomentLike {\n if (val instanceof Date) {\n return false;\n }\n return isDictionary(val)\n // Check for essential Moment.js methods\n && typeof val.format === \"function\"\n && typeof val.year === \"function\"\n && typeof val.month === \"function\"\n && typeof val.date === \"function\"\n // Check for Moment-specific properties\n && \"_isAMomentObject\" in val\n && \"_isValid\" in val\n // Check for essential Moment.js manipulation methods\n && typeof val.add === \"function\"\n && typeof val.subtract === \"function\"\n // Additional Moment.js specific methods\n && typeof val.toISOString === \"function\"\n && typeof val.isValid === \"function\";\n}\n","import type { MonthAbbrev } from \"inferred-types/types\";\nimport { MONTH_ABBR } from \"inferred-types/constants\";\nimport { isString } from \"runtime/type-guards\";\n\n/**\n * type guard which validates that `val` is the name of\n * a month.\n *\n * **Related:** `isMonthName()`\n */\nexport function isMonthAbbrev(val: unknown): val is MonthAbbrev {\n return isString(val) && MONTH_ABBR.includes(val as any);\n}\n","import type { MonthName } from \"inferred-types/types\";\nimport { MONTH_NAME } from \"inferred-types/constants\";\nimport { isString } from \"runtime/type-guards\";\n\n/**\n * type guard which validates that `val` is the name of\n * a month.\n *\n * **Related:** `isMonthAbbrev()`\n */\nexport function isMonthName(val: unknown): val is MonthName {\n return isString(val) && MONTH_NAME.includes(val as any);\n}\n","import type { DateMeta } from \"inferred-types/types\";\nimport { isDictionary } from \"runtime/type-guards\";\n\nexport function isParsedDate(val: unknown): val is DateMeta {\n return isDictionary(val) && \"dateType\" in val;\n}\n","import type { TemporalLike } from \"inferred-types/types\";\nimport { isDictionary } from \"runtime/type-guards\";\n\nexport function isTemporalDate(val: unknown): val is TemporalLike {\n return typeof isDictionary(val)\n && !!Object.prototype.toString.call(val).startsWith(\"[object Temporal.\");\n}\n","import type {\n As,\n FourDigitYear,\n IsTrue,\n MinimalDigitDate,\n ThreeDigitMillisecond,\n TimezoneOffset,\n TwoDigitDate,\n TwoDigitHour,\n TwoDigitMinute,\n TwoDigitMonth,\n TwoDigitSecond\n} from \"inferred-types/types\";\nimport { isString } from \"runtime/type-guards\";\n\n/**\n * type-guard based on whether `str` is a `FourDigitYear`\n */\nexport function isFourDigitYear(str: unknown): str is FourDigitYear<\"branded\"> {\n const re = /^(-?\\d{4})$/;\n\n return isString(str) && re.test(str);\n}\n\n/**\n * Type-guard for TwoDigitHour\n * Matches \"00\"–\"09\", \"10\"–\"19\", or \"20\"–\"23\"\n */\nexport function isTwoDigitHour(s: unknown): s is TwoDigitHour<\"branded\"> {\n return isString(s) && /^(?:0\\d|1\\d|2[0-3])$/.test(s);\n}\n\n/**\n * Type-guard for TwoDigitMinute\n */\nexport function isTwoDigitMinute(s: unknown): s is TwoDigitMinute<\"branded\"> {\n return isString(s) && /^(?:0\\d|1\\d|2\\d|3\\d|4\\d|5\\d)$/.test(s);\n}\n\n/**\n * Type-guard for isTwoDigitSecond\n */\nexport function isTwoDigitSecond(s: unknown): s is TwoDigitSecond<\"branded\"> {\n return isString(s) && /^(?:0\\d|1\\d|2\\d|3\\d|4\\d|5\\d)$/.test(s);\n}\n\nexport function isThreeDigitMillisecond(s: unknown): s is ThreeDigitMillisecond<\"branded\"> {\n return isString(s) && /^\\d\\d\\d$/.test(s);\n}\n\n/**\n * **isTwoDigitMonth**`(val)`\n *\n * Typeguard that validates that `val` is a valid `TwoDigitMonth`.\n *\n * - the returned type will be a _branded_ variant of the string literal\n * - if you want to just validate but keep the _type_ as a normal string\n * you can pass in `false` to the `branded` variable.\n */\nexport function isTwoDigitMonth<T, B extends boolean = true>(\n val: T,\n _branded: B = true as B\n): val is IsTrue<B> extends true ? TwoDigitMonth<As<T, TwoDigitMonth>> & T : T {\n return isString(val) && /^(?:0[1-9]|1[0-2])$/.test(val);\n}\n\n/**\n * TwoDigitDate = \"01\"–\"09\", \"10\"–\"29\", or \"30\"–\"31\"\n */\nexport function isTwoDigitDate(s: unknown): s is TwoDigitDate<\"branded\"> {\n return isString(s) && /^(?:0[1-9]|[12]\\d|3[01])$/.test(s);\n}\n\n/**\n * MinimalDigitDate = \"1\"–\"9\", or \"10\"–\"29\", or \"30\"–\"31\"\n */\nexport function isMinimalDigitDate(s: unknown): s is MinimalDigitDate {\n return isString(s) && /^(?:[1-9]|[12]\\d|3[01])$/.test(s);\n}\n\n/**\n *\n * Valid formats include:\n * - \"Z\"\n * - (\"+\"|\"-\") + TwoDigitHour\n * - (\"+\"|\"-\") + TwoDigitHour + TwoDigitMinute\n * - (\"+\"|\"-\") + TwoDigitHour + \":\" + TwoDigitMinute\n *\n * Where:\n * - `TwoDigitHour`: 00–23\n * - `TwoDigitMinute`: 00–59\n */\nexport function isTimezoneOffset(s: unknown): s is TimezoneOffset<\"branded\"> {\n return isString(s) && /^(?:Z|[+\\-](?:0?\\d|1\\d|2[0-3])(?::?[0-5]\\d)?)$/.test(s);\n}\n","import { isDictionary } from \"runtime/type-guards\";\n\n/**\n * type-guard which validates that `val` is an object with **only** strings\n * as a key.\n *\n * **Related:** `hasOnlySymbolKeys()`\n */\nexport function hasOnlyStringKeys(val: unknown): val is Record<string, unknown> {\n return isDictionary(val) && Object.getOwnPropertySymbols(val).length === 0;\n}\n","import { isDictionary, isString } from \"inferred-types/runtime\";\n\n/**\n * type-guard which validates that `val` is an object with **only** string\n * values.\n *\n * **Related:** `hasOnlyStringKeys()`\n */\nexport function hasOnlyStringValues(val: unknown): val is Record<string, unknown> {\n return isDictionary(val) && Object.keys(val).every(\n i => isString(i)\n );\n}\n","import { isDictionary } from \"inferred-types/runtime\";\n\n/**\n * type-guard which validates that `val` is an object with **only** symbol\n * as a key.\n *\n * **Related:** `hasOnlySymbolKeys()`, `hasOnlyStringKeys()`\n */\nexport function hasOnlySymbolKeys(val: unknown): val is Record<symbol, unknown> {\n return isDictionary(val)\n && Object.getOwnPropertySymbols(val).length > 0\n && Object.keys(val).length === 0;\n}\n","import type { ObjectKey } from \"inferred-types/types\";\nimport { isDictionary } from \"inferred-types/runtime\";\n\n/**\n * type-guard which validates that `val` is an object with at least one symbol\n * as a key.\n *\n * **Related:** `hasOnlySymbolKeys()`, `hasOnlyStringKeys()`\n */\nexport function hasSymbolKeys(val: unknown): val is Record<ObjectKey, unknown> {\n return isDictionary(val) && Object.getOwnPropertySymbols(val).length > 0;\n}\n","import type {\n AmericanExpress,\n CreditCard,\n Mastercard,\n Visa,\n VisaMastercard,\n} from \"inferred-types/types\";\nimport { isNumberLike, isString } from \"inferred-types/runtime\";\n\nexport function isVisa(val: unknown): val is Visa {\n if (isString(val) && val.startsWith(\"4\")) {\n const parts = val.split(\" \");\n return (\n parts.length === 4\n && parts.every(i => isNumberLike(i) && i.length === 4)\n );\n }\n return false;\n}\n\nexport function isMastercard(val: unknown): val is Mastercard {\n if (isString(val) && val.startsWith(\"4\")) {\n const parts = val.split(\" \");\n return (\n parts.length === 4\n && parts.every(i => isNumberLike(i) && i.length === 4)\n && [\"51\", \"55\", \"22\", \"23\", \"24\", \"25\", \"26\", \"27\"].some(i => val.startsWith(i))\n );\n }\n return false;\n}\n\nexport function isVisaMastercard(val: unknown): val is VisaMastercard {\n return isVisa(val) || isMastercard(val);\n}\n\nexport function isAmericanExpress(val: unknown): val is AmericanExpress {\n if (isString(val)) {\n const parts = val.split(\" \");\n return parts.length === 3\n && parts.every(i => isNumberLike(i)\n && parts[0].length === 4\n && parts[1].length === 6,\n );\n }\n return false;\n}\n\nexport function isCreditCard(val: unknown): val is CreditCard {\n return isVisaMastercard(val) || isAmericanExpress(val);\n}\n\n/**\n * Given a card's long number, attempt to match this to a card type from:\n *\n * - Visa, Mastercard\n * - American Express\n * - Discover\n * - JCB\n * - Diners Club\n * - China UnionPay\n * - Maestro\n * - Solo\n */\nexport function cardType(cardNumber: string | number) {\n // Step 1: Clean the input by removing non-digit characters\n const cleanedNumber: string = String(cardNumber).replace(/\\D/g, \"\");\n\n // Step 2: Check if the length is valid for any card type\n const length = cleanedNumber.length;\n if (!isValidLength(length)) {\n return \"invalid\";\n }\n\n // Step 3: Check Luhn algorithm\n if (!luhnCheck(cleanedNumber)) {\n return \"invalid\";\n }\n\n // Step 4: Determine the card type based on prefix and length\n const cardTypes = [\n { name: \"Visa\", lengths: [16], prefixes: [/^4/] },\n { name: \"Mastercard\", lengths: [16], prefixes: [/^(51|52|53|54|55|222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[01]\\d|2720)/] },\n { name: \"American Express\", lengths: [15], prefixes: [/^3[47]/] },\n { name: \"Discover\", lengths: [16], prefixes: [/^(6011|622(12[6-9]|1[3-9]\\d|2[0-4]\\d|25\\d|6[4-9]|7[0-4]|8[0-4]|9\\d)|64[4-9]|65)/] },\n { name: \"JCB\", lengths: [16], prefixes: [/^(35|2131|1800)/] },\n { name: \"Diners Club\", lengths: [14, 16], prefixes: [/^(30[0-5]|36|38)/] },\n { name: \"China UnionPay\", lengths: [16, 17, 18, 19], prefixes: [/^(62|88)/] },\n { name: \"Maestro\", lengths: [12, 13, 14, 15, 16, 17, 18, 19], prefixes: [/^(5018|5020|5038|6304)/] },\n { name: \"Solo\", lengths: [16, 18, 19], prefixes: [/^(6334|6767)/] },\n ];\n\n for (const type of cardTypes) {\n if (type.lengths.includes(length)) {\n for (const prefix of type.prefixes) {\n if (prefix.test(cleanedNumber)) {\n return type.name;\n }\n }\n }\n }\n\n return \"invalid\";\n}\n\n// Helper function to check if the length is valid for any card type\nfunction isValidLength(length: number) {\n const validLengths = [13, 14, 15, 16, 17, 18, 19];\n return validLengths.includes(length);\n}\n\n// Implementation of the Luhn algorithm\nfunction luhnCheck(num: string) {\n let sum = 0;\n let double = false;\n for (let i = num.length - 1; i >= 0; i--) {\n let n = Number.parseInt(num.charAt(i), 10);\n if (double) {\n n *= 2;\n if (n > 9) {\n n -= 9;\n }\n }\n sum += n;\n double = !double;\n }\n return sum % 10 === 0;\n}\n","import type { Iso3166_1_Alpha2, Iso3166_1_Alpha3, Iso3166_1_CountryCode, Iso3166_1_CountryName } from \"inferred-types/types\";\nimport { ISO3166_1 } from \"inferred-types/constants\";\nimport { isString } from \"runtime/type-guards\";\n\n/**\n * Type guard which checks whether `val` is a 2 character country\n * representation found in the ISO3166-1 standard.\n */\nexport function isIso3166Alpha2(val: unknown): val is Iso3166_1_Alpha2 {\n const codes = ISO3166_1.map(i => i.alpha2) as string[];\n return isString(val) && codes.includes(val);\n}\n\n/**\n * Type guard which checks whether `val` is a 2 character country\n * representation found in the ISO3166-1 standard.\n *\n * **Alias:** `isIso3166Alpha2`\n */\nexport function isCountryCode2(val: unknown): val is Iso3166_1_Alpha2 {\n const codes = ISO3166_1.map(i => i.alpha2) as string[];\n return isString(val) && codes.includes(val);\n}\n\n/**\n * Type guard which checks whether `val` is a 3 character country\n * representation found in the ISO3166-1 standard.\n */\nexport function isIso3166Alpha3(val: unknown): val is Iso3166_1_Alpha3 {\n const codes = ISO3166_1.map(i => i.alpha3) as string[];\n return isString(val) && codes.includes(val);\n}\n\n/**\n * Type guard which checks whether `val` is a 3 character country\n * representation found in the ISO3166-1 standard.\n *\n * **Alias:** `isIso3166Alpha3`\n */\nexport function isCountryCode3(val: unknown): val is Iso3166_1_Alpha3 {\n const codes = ISO3166_1.map(i => i.alpha3) as string[];\n return isString(val) && codes.includes(val);\n}\n\n/**\n * Type guard which checks whether `val` is a 3 character country\n * representation found in the ISO3166-1 standard.\n */\nexport function isIso3166CountryCode(val: unknown): val is Iso3166_1_CountryCode {\n const codes = ISO3166_1.map(i => i.countryCode) as string[];\n return isString(val) && codes.includes(val);\n}\n\n/**\n * Type guard which checks whether `val` is a 2 or 3 character country\n * abbreviation found in the ISO3166-1 standard.\n */\nexport function isCountryAbbrev(val: unknown): val is Iso3166_1_Alpha2 | Iso3166_1_Alpha3 {\n return isCountryCode2(val) || isCountryCode3(val);\n}\n\n/**\n * Type guard which checks whether `val` is a valid ISO3166-1 country name.\n */\nexport function isIso3166CountryName(val: unknown): val is Iso3166_1_CountryName {\n const codes = ISO3166_1.map(i => i.name) as string[];\n return isString(val) && codes.includes(val);\n}\n\n/**\n * Type guard which checks whether `val` is a valid ISO3166-1 country name.\n *\n * **Alias:** `isIso3166CountryName`\n */\nexport function isCountryName(val: unknown): val is Iso3166_1_CountryName {\n const codes = ISO3166_1.map(i => i.name) as string[];\n return isString(val) && codes.includes(val);\n}\n","import type { UsStateAbbrev, UsStateName } from \"inferred-types/types\";\nimport { US_STATE_LOOKUP } from \"inferred-types/constants\";\nimport { isString } from \"runtime/type-guards\";\n\nconst ABBREV = US_STATE_LOOKUP.map(i => i.abbrev);\nconst NAME = US_STATE_LOOKUP.map(i => i.name);\n\nexport function isUsStateAbbreviation(val: unknown): val is UsStateAbbrev {\n return isString(val) && ABBREV.includes(val as any);\n}\n\nexport function isUsStateName(val: unknown): val is UsStateName {\n return isString(val) && NAME.includes(val as any);\n}\n","import type { Zip5, ZipCode, ZipPlus4 } from \"inferred-types/types\";\nimport { NUMERIC_CHAR } from \"inferred-types/constants\";\nimport { retainWhile, stripChars } from \"inferred-types/runtime\";\nimport { isNumber, isNumberLike, isString } from \"runtime/type-guards\";\n\n/**\n * Type guard which validates that passed in value is a US ZipCode\n * in the `Zip5` format.\n *\n * **Related:** `isZipCode()`, `isZipPlus4()`\n */\nexport function isZipCode5(val: unknown): val is Zip5 {\n if (isNumber(val)) {\n return isZipCode5(`${val}`);\n }\n return isString(val) && val.trim().length === 5 && isNumberLike(val.trim());\n}\n\n/**\n * Type guard which validates that passed in value is a US ZipCode\n * in the `ZipPlus4` format.\n *\n * **Related:** `isZipCode()`, `isZipCode5()`\n */\nexport function isZipPlus4(val: unknown): val is ZipPlus4 {\n if (isString(val)) {\n const first = retainWhile(val.trim(), ...NUMERIC_CHAR);\n const next = stripChars(val.trim().replace(first, \"\").trim(), \"-\");\n return first.length === 5 && next.length === 4 && isNumberLike(next);\n }\n\n return false;\n}\n\n/**\n * Type guard which validates that passed in value is a US ZipCode\n * in either the `Zip5` or `ZipPlus4` format.\n *\n * **Related:** `isZipCode5()`, `isZipPlus4()`\n */\nexport function isZipCode(val: unknown): val is ZipCode {\n return isZipCode5(val) || isZipPlus4(val);\n}\n","import type { NoDefaultValue } from \"inferred-types/constants\";\nimport type { Narrowable } from \"inferred-types/types\";\nimport { isSpecificConstant } from \"inferred-types/runtime\";\n/**\n * **hasDefaultValue**(value)\n *\n * Type guard which helps to eliminate the use case where a value which _might_ be a\n * `DefaultValue` is _not_ in this initial state and therefore indicating that the value\n * **is** in fact a default value.\n *\n * Probably a better way to phrase this. :)\n */\nexport function hasDefaultValue<T extends Narrowable>(value: T): value is Exclude<T, NoDefaultValue> {\n const noDefault = isSpecificConstant(\"no-default-value\");\n return !noDefault(value);\n}\n","import type { Container, Dictionary, IsValidIndex, Tuple } from \"inferred-types/types\";\nimport { isDictionary, isError } from \"inferred-types/runtime\";\n\n/**\n * **hasIndexOf**(value, idx) => boolean\n *\n * A type guard which determines whether container passed in has\n * an explicit index.\n */\nexport function hasIndexOf<\n TContainer extends Container,\n TIndex extends PropertyKey,\n>(value: TContainer, idx: TIndex): value is TContainer\n& (TContainer extends Tuple\n ? Tuple<TIndex>\n : TContainer extends Dictionary\n ? Record<TIndex, unknown>\n : never\n) {\n const result = isDictionary(value)\n ? String(idx) in value\n : Array.isArray(value)\n ? Number(idx) in value\n : false;\n return (\n isError(result)\n ? false\n : result\n ) as IsValidIndex<TContainer, TIndex>;\n}\n","import type { Dictionary } from \"inferred-types/types\";\nimport { Never } from \"inferred-types/constants\";\nimport { indexOf, isDictionary, isSameTypeOf, keysOf } from \"inferred-types/runtime\";\n\n/**\n * **hasKeys**(props) => (obj) => `HasKeys<O,P>`\n *\n * Higher order type guard which on first call generates\n * a type guard that can test for the existence of the\n * properties passed into this first call.\n *\n * ```ts\n * const hasFooBar = hasKeys(\"foo\", \"bar\"); // type guard\n * const hasFooBarToo = hasKeys({foo: 1, bar: 1});\n * ```\n */\nexport function hasKeys<D extends Dictionary>(dict: D): <V>(val: V) => val is D & V;\nexport function hasKeys<K extends readonly string[]>(...keys: K): <V>(val: V) => val is V & Record<K[number], unknown>;\nexport function hasKeys(...keys: any[]) {\n if (keys.length === 0) {\n return Never;\n }\n\n return <V>(val: V): val is any => {\n const iterable = isDictionary(keys[0]) && keys.length === 1 ? keysOf(keys[0]) : keys;\n return !!(\n (isDictionary(val)) && iterable.every((k) => {\n if (!indexOf(val, k as PropertyKey)) {\n return false;\n }\n\n if (isDictionary(keys[0]) && keys.length === 1) {\n const v = val[k as any];\n const comparable = keys[0][k as any];\n\n if (isSameTypeOf(v)(comparable)) {\n return true;\n }\n else {\n return false;\n }\n }\n\n return true;\n }));\n };\n}\n","import { isDictionary } from \"inferred-types/runtime\";\n\n/**\n * Type guard which checks if the value passed in is an object which _has_ non-string\n * keys.\n */\nexport function hasNonStringKeys(val: unknown) {\n return isDictionary(val) && Object.getOwnPropertySymbols(val).length > 0;\n}\n","import { WHITESPACE_CHARS } from \"inferred-types/constants\";\nimport { asChars, isString } from \"inferred-types/runtime\";\n\n/**\n * **hasWhiteSpace**`(val)`\n *\n * Type guard which checks whether a string has a any whitespace characters in it\n */\nexport function hasWhiteSpace<T>(val: T): val is T {\n return isString(val) && asChars(val).some(c => WHITESPACE_CHARS.includes(c as any));\n}\n","import type { EndsWith } from \"inferred-types/types\";\nimport { isNumber, isString } from \"runtime/type-guards\";\n\n/**\n * **endsWith**(endingWith) => (val) -> true | false\n *\n * A higher-level builder pattern which is used to create a boolean\n * operator which indicates whether the given function ends with any\n * of the provided `endingWith` string literal values.\n */\nexport function endsWithTypeguard<\n const TEndsWith extends readonly (string | number)[],\n>(...endingWith: TEndsWith) {\n return <\n const TValue extends string | number,\n >(val: TValue): val is TValue extends string\n ? TValue & `${TEndsWith[number]}${string}`\n : TValue => {\n return (\n isString(val) || isNumber(val)\n ? endingWith.some(i => String(i) !== \"\" && String(val).endsWith(String(i)))\n : false\n );\n };\n}\n\nexport function endsWith<\n const TEndsWith extends readonly (string | number)[],\n>(...endingWith: TEndsWith) {\n return <\n const TValue extends string | number,\n >(val: TValue) => {\n return (\n isString(val) || isNumber(val)\n ? endingWith.some(i => String(i) !== \"\" && String(val).endsWith(String(i)))\n : false\n ) as EndsWith<TValue, TEndsWith>;\n };\n}\n","import type {\n Narrowable,\n} from \"inferred-types/types\";\n\nfunction compare<\n TBase extends readonly Narrowable[],\n>(base: TBase) {\n return (\n value: unknown,\n ): value is TBase[number] => {\n return base.includes(value as any);\n };\n}\n\n/**\n * **isEqual**(compareTo)(value)\n *\n * Higher order type guard to detect whether two values are equal\n */\nexport function isEqual<\n TBase extends readonly N[],\n N extends Narrowable,\n>(...base: TBase) {\n return compare(base);\n}\n","import type { Narrowable, SimpleToken } from \"inferred-types/types\";\nimport {\n hasNonStringKeys,\n isBoolean,\n isDictionary,\n isNull,\n isNumber,\n isString,\n isUndefined\n} from \"runtime/type-guards\";\n\nconst TOKENS = [\n \"undefined\",\n \"null\",\n \"string\",\n \"number\",\n \"boolean\",\n \"Array\",\n \"Array<Dict>\",\n \"Array<number>\",\n \"Array<string>\",\n \"Array<boolean>\",\n \"Dict\",\n \"Dict<string, unknown>\",\n] satisfies SimpleToken[];\n\n/**\n * **isInUnion**(literals) => { typeGuard, meta props }\n *\n * A higher order type guard which:\n *\n * - first call establishes the entities in the union,\n * - you can use tokens like `\"string\"` or `\"number\"` to indicate\n * a wide type or any literal value to add a literal to the union.\n *\n * Wide tokens which can be used are:\n *\n * - \"undefined\", \"null\"\n * - \"string\", \"number\", \"boolean\", \"Dict\",\n * - \"Array\", \"Array<string>\", \"Array<number>\"\n * - and more\n *\n * **Related:** `unionize`, `asUnion`\n */\nexport function isInUnion<\n TOptions extends readonly Narrowable[],\n>(...elements: TOptions) {\n return (\n value: unknown,\n ): value is TOptions[number] => {\n const literals = elements.filter(\n i => !isString(i) || (isString(i) && !TOKENS.includes(i as any)),\n );\n const wide = elements.filter(i => TOKENS.includes(i as any)) as Partial<typeof TOKENS>;\n const isWideType = wide.reduce(\n (acc, i) => {\n switch (i) {\n case \"Array\":\n if (Array.isArray(value)) {\n return true;\n }\n case \"Array<Dict>\":\n if (Array.isArray(value) && value.every(i => isDictionary(i))) {\n return true;\n }\n case \"Array<boolean>\":\n if (Array.isArray(value) && value.every(i => isBoolean(i))) {\n return true;\n }\n case \"Array<number>\":\n if (Array.isArray(value) && value.every(i => isNumber(i))) {\n return true;\n }\n case \"Array<string>\":\n if (Array.isArray(value) && value.every(i => isString(i))) {\n return true;\n }\n case \"Dict\":\n if (isDictionary(value)) {\n return true;\n }\n case \"Dict<string, unknown>\":\n if (!hasNonStringKeys(value)) {\n return true;\n }\n case \"boolean\":\n if (isBoolean(value)) {\n return true;\n }\n case \"null\":\n if (isNull(value)) {\n return true;\n }\n case \"number\":\n if (isNumber(value)) {\n return true;\n }\n case \"string\":\n if (isString(value)) {\n return true;\n }\n case \"undefined\":\n if (isUndefined(value)) {\n return true;\n }\n default:\n return acc;\n }\n },\n false,\n );\n\n return literals.includes(value as any) || isWideType;\n };\n}\n","import {\n isArray,\n isDictionary,\n isEqual,\n isString,\n keysOf,\n} from \"inferred-types/runtime\";\n\n/**\n * **ifLength**(len) => (value) => boolean\n *\n * Higher order type guard which provides a type-aware check on the\n * \"length\" of some unit:\n *\n * - **arrays** - the number of elements in the array\n * - **objects** - the number of keys in the object\n * - **string** - the length of the string\n *\n * All other types return `false`\n */\nexport function isLength<\n TValue,\n TLen extends number,\n>(value: TValue, len: TLen) {\n return isArray(value)\n ? !!isEqual((value as unknown[]).length)(len)\n : isString(value)\n ? !!isEqual(value.length)(len)\n : isDictionary(value)\n ? !!isEqual(keysOf(value))(len)\n : false;\n}\n","import type { ConvertTypeOf, GetTypeOf } from \"inferred-types/types\";\n\n/**\n * **isSameTypeOf**(base, compare)\n *\n * A type guard which validates that `base` and `compare` are the same \"type\"\n * defined by the runtime `typeof` operator.\n *\n * **Note:** if either `TBase` or `TCompare` are\n *\n * **Related:** `IsSameType`\n */\nexport function isSameTypeOf<TBase>(base: TBase) {\n return <TCompare>(compare: TCompare): compare is TCompare & ConvertTypeOf<GetTypeOf<TBase>> => {\n return typeof base === typeof compare;\n };\n}\n","import { isString } from \"runtime/type-guards\";\n\n/**\n * Higher order type guard which:\n *\n * - takes a set of string literals on first call\n * - second call is the type which validates that the value passed in\n * is the defined set of values of the first call\n */\nexport function isStringLiteral<TLit extends readonly string[]>(...literals: TLit) {\n return (val: unknown): val is TLit[number] => {\n return isString(val) && literals.includes(val);\n };\n}\n","import type {\n HandleDoneFn,\n ShapeCallback,\n} from \"inferred-types/types\";\nimport {\n isArray,\n isDoneFn,\n isSameTypeOf,\n isShape,\n ShapeApiImplementation,\n} from \"inferred-types/runtime\";\n\ntype FromDefn<\n T extends readonly ShapeCallback[],\n> = {\n [K in keyof T]: HandleDoneFn<ReturnType<T[K]>>\n};\n\nexport function isTuple<TDefn extends readonly ShapeCallback[]>(...tuple: TDefn) {\n const results = tuple\n .map(i => i(ShapeApiImplementation))\n .map(i => isDoneFn(i) ? (i as any).done() : i);\n\n return <T>(v: T): v is T & FromDefn<TDefn> => {\n return isArray(v)\n && v.length === results.length\n && results.every(isShape)\n && v.every((item, idx) => isSameTypeOf(results[idx])(item));\n };\n}\n","import type { ConvertTypeOf, TypeOf } from \"inferred-types/types\";\n\nexport type TypeOfTypeGuard<\n TType extends TypeOf,\n> = <TValue>(value: TValue) => value is TValue & ConvertTypeOf<TType>;\n\n/**\n * **isTypeOf**(type)(value)\n *\n * Higher order type guard which matches against the runtime operator's `typeof` command.\n *\n * - You first partially apply by specifying the `typeof`\n * - The type guard is then returned based on the type.\n */\nexport function isTypeOf<\n TType extends TypeOf,\n>(type: TType): TypeOfTypeGuard<TType> {\n return <TValue>(value: TValue): value is TValue & ConvertTypeOf<TType> => {\n // eslint-disable-next-line valid-typeof\n return typeof value === type;\n };\n}\n","import type { StartsWith, ToStringArray } from \"inferred-types/types\";\nimport { isNumber, isString } from \"runtime/type-guards\";\n\n/**\n * **StartingWithTypeGuard**`<literal>`\n *\n * A type guard built using the `startsWith` utility.\n */\nexport type StartingWithTypeGuard<TStartsWith extends readonly (string | number)[]> = (\n val: unknown\n) => val is `${ToStringArray<TStartsWith>[number]}${string}`;\n\n/**\n * **startsWithTypeguard**(startingWith) => (val)\n *\n * A higher-level builder pattern which is used to create a TypeGuard\n * which checks whether a string _starts with_ another substring.\n *\n * **Related:** `startsWith()`\n */\nexport function startsWithTypeguard<\n const TStartsWith extends readonly (string | number)[],\n>(...startingWith: TStartsWith): StartingWithTypeGuard<TStartsWith> {\n return (val: unknown): val is `${ToStringArray<TStartsWith>[number]}${string}` => {\n return (\n isString(val) || isNumber(val)\n ? startingWith.some(i => String(i) !== \"\" && String(val).startsWith(String(i)))\n : false\n );\n };\n}\n\n/**\n * **startsWith**`(startingWith) -> (val) -> true | false`\n *\n * A higher-level builder pattern which is used to create a boolean\n * operator which indicates whether the given function starts with any\n * of the provided `startingWith` string literal values.\n *\n * **Related:** `startsWithTypeguard()`\n */\nexport function startsWith<\n const TStartsWith extends readonly (string | number)[]\n>(\n ...startingWith: TStartsWith\n) {\n return <\n const TValue extends string | number,\n >(val: TValue) => {\n return (\n isString(val) || isNumber(val)\n ? startingWith.some(i => String(i) !== \"\" && String(val).startsWith(String(i)))\n : false\n ) as StartsWith<TValue, TStartsWith>;\n };\n}\n","import type {\n AsHtmlComponentTag\n} from \"inferred-types/types\";\nimport {\n toKebabCase,\n toPascalCase,\n validHtmlAttributes\n} from \"inferred-types/runtime\";\n\n/**\n * **isHtmlComponentTag**`(...names)`\n *\n * A type guard that validates if a value matches a valid HTML component tag.\n * Supports both `kebab-case` and `PascalCase` component names.\n *\n * Attributes are validated using `areAttributesValid()`.\n */\nexport function isHtmlComponentTag<T extends readonly string[]>(...names: T) {\n return <V>(val: V): val is V & AsHtmlComponentTag<T[number]> => {\n if (typeof val !== \"string\")\n return false;\n\n const trimmedVal = val.trim();\n\n // Match opening, closing, and self-closing tags\n const tagRegex = /^<\\/?([\\w-]+)(.*?)>$/;\n const match = tagRegex.exec(trimmedVal);\n\n if (!match) {\n return false; // Not a valid tag structure\n }\n\n const [, tagName, attributes] = match;\n const isClosingTag = trimmedVal.startsWith(\"</\");\n\n const isKebabCase = /^[a-z][a-z0-9-]*$/.test(tagName);\n const isPascalCase = /^[A-Z][a-zA-Z0-9]*$/.test(tagName);\n\n const normalizedKebabCase = toKebabCase(tagName);\n const normalizedPascalCase = toPascalCase(tagName);\n\n const isValidName = names.some(\n name =>\n (isKebabCase && normalizedKebabCase === toKebabCase(name))\n || (isPascalCase && normalizedPascalCase === toPascalCase(name)),\n );\n\n if (!isValidName) {\n return false;\n }\n\n if (isClosingTag) {\n return attributes.trim() === \"\";\n }\n\n return validHtmlAttributes(attributes);\n };\n}\n","import { HTML_ATOMIC_TAGS, HTML_BLOCK_TAGS } from \"inferred-types/constants\";\n\n/**\n * Tests whether the passed in `val` contains some HTML-like tags in it.\n *\n * **Related:** `hasValidHtml()`, `isHtml()`, `hasValidHtml()`\n */\nexport function hasHtml(val: unknown): val is string {\n if (typeof val !== \"string\")\n return false;\n\n const htmlTagRegex = /.*<(\\w+)>.*/;\n\n return !!htmlTagRegex.test(val);\n}\n\n/**\n * Tests that the passed in string _does_ have HTML tags in it and that\n * those tags are valid HTML tags.\n *\n * **Related:** `hasHtml()`, `isHtml()`, `isValidHtml()`\n */\nexport function hasValidHtml(val: unknown): val is string {\n if (typeof val !== \"string\")\n return false;\n\n const trimmedVal = val.trim();\n\n // Match all HTML tags (opening, closing, and self-closing)\n\n const tagRegex = /<\\/?(\\w+)([^>]*)>/g;\n\n // Stack for tracking opening tags\n const stack: string[] = [];\n let match: RegExpExecArray | null;\n\n match = tagRegex.exec(trimmedVal);\n while (match !== null) {\n const [, tagName] = match;\n const isClosingTag = match[0].startsWith(\"</\");\n const isAtomicTag = HTML_ATOMIC_TAGS.includes(tagName as any);\n\n if (isAtomicTag) {\n // Self-closing atomic tags require no stack handling\n match = tagRegex.exec(trimmedVal);\n continue;\n }\n\n if (isClosingTag) {\n // Validate and pop from stack for closing tags\n const lastTag = stack.pop();\n if (lastTag !== tagName) {\n return false; // Mismatched or unexpected closing tag\n }\n }\n else {\n // Add opening tags to stack if they are valid\n if (!HTML_BLOCK_TAGS.includes(tagName as any)) {\n return false; // Invalid tag name\n }\n stack.push(tagName);\n }\n\n match = tagRegex.exec(trimmedVal);\n }\n\n // If the stack is not empty, there are unmatched opening tags\n return stack.length === 0 && tagRegex.test(trimmedVal);\n}\n","import type {\n AsHtmlTag,\n Html__AtomicTag,\n Html__BlockTag,\n} from \"inferred-types/types\";\nimport {\n HTML_ATOMIC_TAGS,\n HTML_BLOCK_TAGS,\n} from \"inferred-types/constants\";\nimport { isString, validHtmlAttributes } from \"inferred-types/runtime\";\n\n/**\n * tests whether the `val` passed in is the **name** of a valid\n * HTML block tag (e.g., \"div\", \"span\", etc.)\n *\n * **Note:** this will _not_ match with leading or trailing whitespace\n */\nexport function isValidBlockTag(val: unknown): val is string {\n return isString(val) && HTML_BLOCK_TAGS.includes(val.toLowerCase() as any);\n}\n\n/**\n * test whetehr the `val` pass in is a the **name** of a valid HTML\n * atomic tag (e.g., \"br\", \"meta\", etc.)\n *\n * **Note:** this will _not_ match with leading or trailing whitespace\n */\nexport function isValidAtomicTag(val: unknown): val is string {\n return isString(val) && HTML_ATOMIC_TAGS.includes(val.toLowerCase() as any);\n}\n\n/**\n * **isValidHtmlTag**`(...tags)(val)`\n *\n * A higher order type guard which tests that the `val` passed in\n * is a valid HTML tag (block or atomic) or the types specified.\n *\n * - if it's an openning or atomic tag then the tag name is validated\n * but so are the characters between the tag name and the close.\n * - if it's a closing tag then NO characters are allowed beyond\n * that of the tag and the brackets.\n */\nexport function isValidHtmlTag<\n T extends readonly (Html__BlockTag | Html__AtomicTag)[],\n>(...tags: T) {\n return <V>(val: V): val is V & AsHtmlTag<V, T[number]> => {\n if (typeof val !== \"string\")\n return false;\n\n const trimmedVal = val.trim();\n\n // Match opening, closing, and atomic tags\n const tagRegex = /^<\\/?(\\w+)(.*?)>$/;\n const match = tagRegex.exec(trimmedVal);\n\n if (!match) {\n return false; // Not a valid HTML tag structure\n }\n\n const [, tagName, attributes] = match;\n const normalizedTagName = tagName.toLowerCase(); // Normalize to lowercase\n const isClosingTag = trimmedVal.startsWith(\"</\");\n const isAtomicTag = HTML_ATOMIC_TAGS.includes(normalizedTagName as any);\n const isBlockTag = HTML_BLOCK_TAGS.includes(normalizedTagName as any);\n\n if (\n // Validate tag name is within the provided `tags` scope\n !tags.map(t => t.toLowerCase()).includes(normalizedTagName as any)\n ) {\n return false;\n }\n\n if (isClosingTag) {\n return attributes.trim() === \"\" && !isAtomicTag;\n }\n\n if (isAtomicTag) {\n return attributes.trim() === \"\" || validHtmlAttributes(attributes);\n }\n\n if (isBlockTag) {\n return validHtmlAttributes(attributes);\n }\n\n return false;\n };\n}\n","import {\n HTML_ATOMIC_TAGS,\n HTML_BLOCK_TAGS\n} from \"inferred-types/constants\";\n\n/**\n * **isHtml**`(val)`\n *\n * Tests whether the passed in `val` is an HTML string which:\n *\n * - starts and ends with an HTML-like tag\n * - leading and trailing whitespace is ignored\n */\nexport function isHtml(val: unknown): val is string {\n if (typeof val !== \"string\")\n return false;\n\n const trimmedVal = val.trim();\n // eslint-disable-next-line regexp/optimal-quantifier-concatenation\n const fullHtmlRegex = /^<(\\w+).*<\\/\\1>$/;\n\n return fullHtmlRegex.test(trimmedVal);\n}\n\n/**\n * **isValidHtml**`(val)`\n *\n * Tests whether the passed in `val` is an HTML string which:\n *\n * - starts and ends with a valid HTML tag\n * - all block tags are _balanced_ between open and close variants\n * - leading and trailing whitespace is ignored in the match\n */\nexport function isValidHtml(val: unknown): val is string {\n if (typeof val !== \"string\")\n return false;\n\n const trimmedVal = val.trim();\n\n // Match all HTML tags (opening, closing, and self-closing)\n const tagRegex = /<\\/?(\\w+)([^>]*)>/g;\n\n // Stack for tracking opening tags\n const stack: string[] = [];\n\n let match: RegExpExecArray | null = tagRegex.exec(trimmedVal);\n while (match !== null) {\n const [, tagName] = match;\n const isClosingTag = match[0].startsWith(\"</\");\n const isAtomicTag = HTML_ATOMIC_TAGS.includes(tagName as any);\n\n if (isAtomicTag) {\n // Self-closing atomic tags require no stack handling\n match = tagRegex.exec(trimmedVal);\n continue;\n }\n\n if (isClosingTag) {\n // Validate and pop from stack for closing tags\n const lastTag = stack.pop();\n if (lastTag !== tagName) {\n return false; // Mismatched or unexpected closing tag\n }\n }\n else {\n // Add opening tags to stack if they are valid\n if (!HTML_BLOCK_TAGS.includes(tagName as any)) {\n return false; // Invalid tag name\n }\n stack.push(tagName);\n }\n\n // Reassign match at the end of each iteration\n match = tagRegex.exec(trimmedVal);\n }\n\n // If the stack is not empty, there are unmatched opening tags\n const isBalanced = stack.length === 0;\n\n // eslint-disable-next-line regexp/optimal-quantifier-concatenation\n const validStructureRegex = /^<(\\w+)[^>]*>[\\s\\S]*<\\/\\1>$/;\n\n return isBalanced && validStructureRegex.test(trimmedVal);\n}\n","import { isDictionary } from \"inferred-types/runtime\";\n\n/**\n * **isHtmlElement**`(val)`\n *\n * Type guard which checks whether `val` is an `HtmlElement`.\n */\nexport function isHtmlElement(val: unknown): val is HTMLElement {\n return isDictionary(val) && \"attributes\" in val && \"firstElementChild\" in val && \"innerHTML\" in val;\n}\n","/**\n * type guard which validates that `val` is a string which could represent\n * the attributes in an HTML tag.\n */\nexport function validHtmlAttributes(val: unknown): val is string {\n if (typeof val !== \"string\")\n return false;\n\n // Basic checks for attributes: no unbalanced quotes, no `>` within attributes\n const quoteRegex = /[\"']/g;\n const unmatchedQuotes = (val.match(quoteRegex)?.length || 0) % 2 !== 0;\n\n // Check for invalid attribute assignment (e.g., id=)\n const invalidAssignment = /(\\w+=)(?=\\s|>|$)/.test(val);\n\n return !val.includes(\">\") && !unmatchedQuotes && !invalidAssignment;\n}\n","import type { AlphaChar, Narrowable } from \"inferred-types/types\";\nimport { ALPHA_CHARS } from \"inferred-types/constants\";\nimport { asChars, isString } from \"inferred-types/runtime\";\n\n/**\n * **isAlpha**(value)\n *\n * Type guard which ensures that the given value is a string literal with only\n * alphabetic characters.\n */\nexport function isAlpha<T extends Narrowable>(value: T): value is T & AlphaChar {\n return isString(value) && asChars(value).every(v => ALPHA_CHARS.includes(v as AlphaChar));\n}\n","/**\n * **isBoolean**(value)\n *\n * Type guard which validates that type is a boolean value.\n *\n * **Related:** `isBooleanLike()`\n */\nexport function isBoolean(value: unknown): value is boolean {\n return typeof value === \"boolean\";\n}\n","import type { BooleanLike } from \"inferred-types/types\";\nimport { isBoolean, isString } from \"inferred-types/runtime\";\n\n/**\n * **isBooleanLike**`(val)`\n *\n * A type guard which checks whether `val` is \"boolean like; meaning either\n * a boolean value or a string representation of a boolean value.\n */\nexport function isBooleanLike(val: unknown): val is BooleanLike {\n return (\n isBoolean(val) || (\n isString(val) && [\"true\", \"false\", \"boolean\"].includes(val)\n )\n );\n}\n","import type { Constant } from \"inferred-types/constants\";\nimport { isDictionary } from \"inferred-types/runtime\";\n\n/**\n * **isConstant**`(val)`\n *\n * Type guard which checks to see if it is of type\n * `Constant<T>`.\n */\nexport function isConstant<\n K extends string,\n>(value: unknown): value is Constant<K> {\n return !!(isDictionary(value)\n && \"_type\" in value\n && \"kind\" in value\n && value._type === \"Constant\");\n}\n","import type { Dictionary, IsDictionary } from \"inferred-types/types\";\nimport { isDictionary } from \"inferred-types/runtime\";\n\ntype ContainerType<T> = T extends any[]\n ? any[]\n : IsDictionary<T> extends true\n ? Dictionary\n : T extends Map<any, any>\n ? Map<any, any>\n : T extends Set<any>\n ? Set<any>\n : T extends WeakMap<any, any>\n ? WeakMap<any, any>\n : object;\n\nexport function isContainer<T>(value: T): value is T & ContainerType<T> {\n return !!(Array.isArray(value) || isDictionary(value));\n}\n","import type { CssAspectRatio } from \"inferred-types/types\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst tokens = [\n \"1\",\n \"inherit\",\n \"initial\",\n \"revert\",\n \"revert-layer\",\n \"unset\",\n \"auto\",\n];\n\nconst isRatio = (val: string) => /\\d{1,4}\\s*\\/\\s*\\d{1,4}/.test(val);\n\n/**\n * Type guard which tests whether the passed in value is a valid CSS Aspect\n * Ratio value.\n */\nexport function isCssAspectRatio<T>(val: T): val is T & CssAspectRatio {\n return isString(val) && val.split(/\\s+/).every(i => tokens.includes(i) || isRatio(i));\n}\n","import type { Csv } from \"inferred-types/types\";\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * **isCsv**`(val)`\n *\n * type guard which validates that `val` is a CSV based\n * string.\n */\nexport function isCsv(val: unknown): val is Csv {\n return isString(val) && val.includes(\",\") && !val.startsWith(\",\");\n}\n","/**\n * **isDefined**(value)\n *\n * Type guard which determines whether a type is _defined_ or not\n * (aka, whether the value is **not** _undefined_).\n */\nexport function isDefined<T>(value: T): value is Exclude<T, undefined> {\n return value !== undefined;\n}\n","import type { Dictionary, Narrowable, ObjectKey } from \"inferred-types/types\";\nimport { isMap, isSet, isWeakMap } from \"inferred-types/runtime\";\n\n/**\n * **isDictionary**(value)\n *\n * Type guard used to detect whether the passed in value is an Object.\n *\n * Note: an _array_ will **not** pass this test (although the _typeof_ operator\n * would have said it was an object)\n *\n * **Related:**\n * - `isNarrowableDictionary()`,\n * - `isObject()`, `isMap()`, `isSet()`, `isWeakMap()`\n */\nexport function isDictionary(value: unknown): value is Dictionary {\n return typeof value === \"object\" && value !== null && !Array.isArray(value) && !isMap(value) && !isSet(value) && !isWeakMap(value);\n}\n\n/**\n * **isNarrowableDictionary**(value)\n *\n * Type guard used to detect whether the passed in value is an Object and all of it's\n * values fit into the `Narrowable` type.\n *\n * **Related:**\n * - `isDictionary()`\n * - `isObject()`, `isMap()`, `isSet()`, `isWeakMap()`\n */\nexport function isNarrowableDictionary(value: unknown): value is Dictionary<ObjectKey, Narrowable> {\n return isDictionary(value) && Object.keys(value).every(key => [\"string\", \"number\", \"boolean\", \"symbol\", \"object\", \"undefined\", \"void\", \"null\"].includes(typeof value[key]));\n}\n","import type { AsDoneFn } from \"inferred-types/types\";\nimport { isDictionary } from \"inferred-types/runtime\";\n\n/**\n * **isDoneFn**(val)\n *\n * A type guard which checks whether the value passed in has a `done`\n * property which is a function.\n */\nexport function isDoneFn<T>(val: T): val is AsDoneFn<T> {\n return isDictionary(val) && \"done\" in val && typeof val.done === \"function\";\n}\n","import type { Email } from \"inferred-types/types\";\nimport { LOWER_ALPHA_CHARS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * **isEmail**`(val)`\n *\n * type guard which validates that the value passed in\n * in the correct shape to be an email address. It checks:\n *\n * 1. that leads with alphabetic char\n * 2. has a `@` character\n * 3. has at least one `.` char after the `@`\n * 4. top-level domain has at least 2 characters\n */\nexport function isEmail(val: unknown): val is Email {\n if (!isString(val)) {\n return false;\n }\n const parts: string[] = val?.split(\"@\");\n const domain = parts[1]?.split(\".\");\n const tld = domain ? domain.pop() as string : \"\";\n const firstChar = val[0].toLowerCase();\n\n return isString(val) && (\n LOWER_ALPHA_CHARS.includes(firstChar as any)\n && parts.length === 2\n && domain.length >= 1\n && tld.length >= 2\n );\n}\n","import type { Empty } from \"inferred-types/types\";\nimport {\n isArray,\n isDictionary,\n isNull,\n isString,\n isUndefined,\n} from \"inferred-types/runtime\";\n\n/**\n * **isEmpty**(val)\n *\n * type guard which validates that `val` is an `Empty` value:\n *\n * - `null` or `undefined`\n * - empty string\n * - empty array\n * - empty object\n */\nexport function isEmpty<T>(val: T): val is T & Empty {\n return isUndefined(val)\n || isNull(val)\n || (isString(val) && val.length === 0)\n || (isDictionary(val) && Object.keys(val).length === 0)\n || (isArray(val) && val.length === 0);\n}\n\n/**\n * **isNotEmpty**(val)\n *\n * type guard which validates that `val` is **not** an `Empty` value:\n *\n * - `null` or `undefined`\n * - empty string\n * - empty array\n * - empty object\n */\nexport function isNotEmpty<T>(val: T): val is Exclude<T, Empty> {\n return !(\n isUndefined(val)\n || isNull(val)\n || (isString(val) && val.length === 0)\n || (isDictionary(val) && Object.keys(val).length === 0)\n || (isArray(val) && (\n val?.length === 0 || val?.length === undefined\n ))\n );\n}\n","import type { Err } from \"inferred-types/types\";\nimport { retainUntil, stripUntil } from \"runtime/string-literals\";\nimport { isError } from \"runtime/type-guards\";\n\n/**\n * **IsErr**`<T,[U]>`\n *\n * Type guard which validates whether `T` is an Error extended from the `Err<..>` utility.\n *\n * - if the type is specified then the type (and optionally the subType) properties will be explicitly checked too\n * - all Err<...> types _extend_ the Javascript Error class\n *\n * **Related:** `isError()`\n */\nexport function isErr<TType extends string>(val: unknown, type?: TType): val is TType extends string ? Err<TType> : Err {\n return type\n ? isError(val) && \"type\" in val && retainUntil(type, \"/\") === val.type && (\n type.includes(\"/\")\n ? \"subType\" in val && val.subType === stripUntil(type, \"/\")\n : true\n )\n : isError(val);\n}\n","/**\n * **isError**`(val)`\n *\n * Type guard which checks whether the value passed in is an\n * instance of `Error`.\n *\n * **Related:** `isErr()`\n */\nexport function isError(val: unknown): val is Error {\n return val instanceof Error;\n}\n","import type { EvenNumber } from \"inferred-types/types\";\nimport { isInteger, isNumber } from \"inferred-types/runtime\";\n\nexport function isEven(val: unknown): val is EvenNumber {\n return isNumber(val) && isInteger(val) && val % 2 === 0;\n}\n","export function isFalse(i: unknown): i is false {\n return (typeof i === \"boolean\" && !i);\n}\n","import type { FalsyValue } from \"inferred-types/types\";\nimport { FALSY_VALUES } from \"inferred-types/constants\";\nimport { isNumber } from \"runtime/type-guards\";\n\n/**\n * **isFalsy**()\n *\n * a TypeGuard which checks whether a value is considered _falsy_ in\n * Javascript.\n */\nexport function isFalsy<V>(val: V): val is V & FalsyValue {\n return FALSY_VALUES.includes(val as any) || (\n isNumber(val) && Number.isNaN(val)\n );\n}\n","import type {\n AsNarrowingFn,\n FromInputToken__String,\n InputTokenSuggestions,\n IsLiteralLike,\n Tuple,\n TypedFunction,\n} from \"inferred-types/types\";\n\n/**\n * **isFnWithParams**(input, [...params | count])\n *\n * Type guard which checks whether a give variable is a function\n * which contains at least one parameter.\n *\n * - the optional second parameter may be used to express the **types** of\n * the expected parameters or just the expected **count** of parameters\n * - if you set the parameter types, it will check that the\n * correct amount of parameters are set but can only _assume_ the types of\n * the parameters are as you have expressed\n */\nexport function isFnWithParams<T, P extends (readonly InputTokenSuggestions[]) | [number]>(\n input: T,\n ...params: P\n): input is T & AsNarrowingFn<\n \"length\" extends keyof T\n ? T[\"length\"] extends 0\n ? IsLiteralLike<P[\"length\"]> extends true\n ? Tuple<any, P[\"length\"]>\n : [any, ...any[]]\n : [any, ...any[]]\n : P extends readonly InputTokenSuggestions[]\n ? {\n [K in keyof P]: FromInputToken__String<P[K]>\n }\n : P extends [number]\n ? Tuple<any, P[0]>\n : never,\n T extends TypedFunction ? ReturnType<T> : unknown\n> {\n return params.length === 0\n ? typeof input === \"function\" && input?.length > 0\n : typeof input === \"function\" && input?.length === params.length;\n}\n","import type { TypedFunction } from \"inferred-types/types\";\n\n/**\n * **isFunction**(value)\n *\n * Type guard which checks whether the passed in value is a function.\n *\n * **Related:** `isFnWithParams`, `ifFunction`\n */\nexport function isFunction(value: unknown): value is TypedFunction {\n return typeof value === \"function\";\n}\n","import { asChars, isNumericString, isString } from \"inferred-types/runtime\";\n\n/**\n * **isHexadecimal**`(val)`\n *\n * Type guard which checks whether all of the characters in the given string\n * are hexadecimal characters.\n */\nexport function isHexadecimal<T>(val: T): val is T {\n return isString(val)\n && asChars(val).every(i => isNumericString(i) || [\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"].includes(i.toLowerCase()));\n}\n","import type { AnyObject, Indexable } from \"inferred-types/types\";\nimport { keysOf } from \"inferred-types/runtime\";\n\n/**\n * **isIndexable**(value)\n *\n * Type guard which validates that the value passed in can be _indexed_\n */\nexport function isIndexable<T>(value: T): value is T & Indexable {\n return !!(Array.isArray(value) || (typeof value === \"object\" && keysOf(value as AnyObject).length > 0));\n}\n","import type { InlineSvg } from \"inferred-types/types\";\nimport { isString } from \"runtime/type-guards\";\n\n/**\n * **isInlineSvg**`(val)`\n *\n * Type guard which tests whether the passed in value is both a string\n * and also appears to be an inline SVG image.\n */\nexport function isInlineSvg<T>(v: T): v is T & InlineSvg {\n return isString(v) && v.trim().startsWith(`<svg`) && v.trim().endsWith(`</svg>`);\n}\n","/**\n * type guard which tests `val` to see if it's a valid `Set<any>`\n */\nexport function isMap(val: unknown): val is Map<any, any> {\n return val instanceof Map;\n}\n","import type { Narrowable } from \"inferred-types/types\";\nimport { isBoolean, isDictionary, isNull, isNumber, isString, isSymbol, isUndefined } from \"inferred-types/runtime\";\n\n/**\n * type guard which validates that `val` is `Narrowable`\n */\nexport function isNarrowable(val: unknown): val is Narrowable {\n return isString(val) || isNumber(val) || isBoolean(val) || isSymbol(val) || isDictionary(val) || isNull(val) || isUndefined(val);\n}\n","import { isConstant } from \"inferred-types/runtime\";\n\n/**\n * **isNever**(val)\n *\n * Type guard which checks for the runtime constant `Never`\n * (which also has a _type_ of **never**).\n */\nexport function isNever(val: unknown): val is never {\n return isConstant(val) && val.kind === \"never\";\n}\n","import { isError } from \"inferred-types/runtime\";\n\n/**\n * type guard which validates that `val` is _not_ an `Error` type.\n */\nexport function isNotError(val: unknown): val is Exclude<unknown, Error> {\n return !isError(val);\n}\n","import type { Nothing } from \"inferred-types/types\";\n\nexport function isNothing<T>(val: T): val is T & Nothing {\n return !!(val === null || val === undefined);\n}\n","import type { NotNull } from \"inferred-types/types\";\n\n/**\n * **isNotNull**(value)\n *\n * Type guard which validates the passed in value is **not** the `null` value.\n */\nexport function isNotNull<T>(value: T): value is T & NotNull {\n return (value === null);\n}\n","import type { Unset } from \"inferred-types/types\";\nimport { isDictionary } from \"inferred-types/runtime\";\n\n/**\n * **isSet**`(val)`\n *\n * Type guard which validates that the value passed in is **not** `Unset`.\n *\n * **Related:** `isUnset()`\n */\nexport function isNotUnset<T>(val: T): val is Exclude<T, Unset> {\n return isDictionary(val)\n ? val.kind !== \"Unset\"\n : true;\n}\n","/**\n * **isNull**(value)\n *\n * Type guard which checks whether a value is null or not.\n *\n * **Related:** `ifNull`\n */\nexport function isNull<T>(value: T): value is T & null {\n return (value === null);\n}\n","import type { NumberLike } from \"inferred-types/types\";\nimport { NUMERIC_CHAR } from \"inferred-types/constants\";\nimport { asChars } from \"inferred-types/runtime\";\n\n/**\n * **isNumericString**(value)\n *\n * Type guard to validate that a value is string which can be converted to a number.\n *\n * **Related:** `isNumberLike`\n */\nexport function isNumericString<T>(value: T): value is T & `${number}` {\n const numericChars = [...NUMERIC_CHAR];\n\n return typeof value === \"string\" && (\n asChars(value).every(i => numericChars.includes(i as any))\n );\n}\n\n/**\n * **isNumberLike**(value)\n *\n * Type guard to validate that a value is either:\n *\n * - a numeric string literal which can be converted to a number\n * - an actual number\n *\n * **Related:** `isNumericString`\n */\nexport function isNumberLike<T>(value: T): value is T & NumberLike {\n const numericChars = [...NUMERIC_CHAR];\n\n return typeof value === \"string\" && (\n asChars(value).every(i => numericChars.includes(i as any))\n )\n ? true\n : typeof value === \"number\";\n}\n","/**\n * **isObject**(value)\n *\n * Type guard used to detect whether the passed in value is an `object`.\n *\n * - this includes matching on array's, Set's, Map's, and WeakMap's\n *\n * **Related:**\n * - `isNarrowableDictionary()`,\n * - `isObject()`, `isMap()`, `isSet()`, `isWeakMap()`\n */\nexport function isObject(value: unknown): value is object {\n return typeof value === \"object\" && value !== null;\n}\n","import type { ObjectKey } from \"inferred-types/types\";\nimport { isString, isSymbol } from \"inferred-types/runtime\";\n\n/**\n * Type guard which validates that `val` is a valid `ObjectKey`\n */\nexport function isObjectKey(val: unknown): val is ObjectKey {\n return isString(val) || isSymbol(val);\n}\n","import type { OddNumber } from \"inferred-types/types\";\nimport { isInteger, isNumber } from \"inferred-types/runtime\";\n\nexport function isOdd(val: unknown): val is OddNumber {\n return isNumber(val) && isInteger(val) && val % 2 !== 0;\n}\n","export function isOk<T>(val: T): val is Exclude<T, Error> {\n return val instanceof Error === false;\n}\n","import type { PhoneNumber, PhoneNumberWithCountryCode, UsPhoneNumber } from \"inferred-types/types\";\nimport { NUMERIC_CHAR, PHONE_COUNTRY_CODES, WHITESPACE_CHARS } from \"inferred-types/constants\";\nimport { getPhoneCountryCode, isString, retainChars, stripChars } from \"inferred-types/runtime\";\n\n/**\n * **maybePhoneNumber**`(val)`\n *\n * Type guard which validates that a string is in the shape of a phone\n * number.\n *\n * - Only valid characters (numeric, whitespace, `+`, `-`, `.`, and parenthesis)\n * - at least 7 numeric characters, 8 if `+` character used\n * - leading character (after whitespace) must be numeric, `(` or `+`\n *\n * **Related:** `asPhoneNumber()`, `PhoneNumber`, `isPhoneNumber`\n */\nexport function maybePhoneNumber(val: unknown): val is PhoneNumber {\n const svelte: string = String(val).trim();\n const chars: readonly string[] = svelte.split(\"\");\n const numeric: string = retainChars(svelte, ...NUMERIC_CHAR);\n const valid = [\"+\", \"(\", ...NUMERIC_CHAR];\n const nothing: string = stripChars(svelte, ...[\n ...NUMERIC_CHAR,\n ...WHITESPACE_CHARS,\n \"(\",\n \")\",\n \"+\",\n \".\",\n \"-\",\n ]);\n\n return (\n chars.every(i => valid.includes(i))\n && svelte.startsWith(`+`)\n ? numeric.length >= 8\n : svelte.startsWith(`00`)\n ? numeric.length >= 10\n : numeric.length >= 7\n && nothing === \"\"\n );\n}\n\nconst start = PHONE_COUNTRY_CODES.map(i => `+${i[0]} `);\n/**\n * Type guard which validates that `val` starts with a valid\n * country code (although starting whitespace is also allowed).\n */\nexport function hasCountryCode(val: unknown): val is PhoneNumberWithCountryCode {\n if (isString(val)) {\n return start.some(i => val.trimStart().startsWith(i));\n }\n return false;\n}\n\nexport function isUsPhoneNumber(val: unknown): val is UsPhoneNumber {\n if (isString(val)) {\n return maybePhoneNumber(val) && val.trimStart().startsWith(`+1 `);\n }\n return false;\n}\n\n/**\n * **isPhoneNumber**`(val)`\n *\n * Type guard which validates that a string is in the shape of a phone\n * number. This is a MORE strict check than `maybePhoneNumber()` which\n * you may want to use if you're pretty sure numeric looking values\n * are meant to be phone numbers.\n *\n * **Related:** `asPhoneNumber()`, `PhoneNumber`, `maybePhoneNumber`\n */\nexport function isPhoneNumber(val: unknown): val is PhoneNumber {\n if (\n isString(val)\n && maybePhoneNumber(val)\n && [\" \", \"-\", \".\"].some(i => val.includes(i))\n ) {\n const cc = getPhoneCountryCode(val as string);\n const without = cc === \"\"\n ? retainChars((val as string), ...NUMERIC_CHAR)\n : retainChars((val as string).trimStart().replace(`+${cc} `, \"\"), ...NUMERIC_CHAR);\n\n switch (cc) {\n case \"1\":\n return without.length === 10;\n case \"44\":\n return !![10, 11].includes(without.length);\n case \"\":\n return without.length <= 10;\n default:\n return without.length <= 11;\n }\n }\n return false;\n}\n","import type { VueRef } from \"inferred-types/types\";\nimport { isDictionary } from \"inferred-types/runtime\";\n\n/**\n * **isRef**(value)\n *\n * Type guard which check whether the passed in value is a VueJS `Ref<T>` value.\n */\nexport function isRef<T>(value: T): value is T & VueRef<T> {\n return isDictionary(value)\n && (\"value\" in value)\n && Array.from(Object.keys(value)).includes(\"_value\");\n}\n","import type { LikeRegExp } from \"inferred-types/types\";\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * Type guard that validates the the value passed in is\n * a regular expression.\n *\n * **Related:** `isLikeRegExp`\n */\nexport function isRegExp(val: unknown): val is RegExp {\n return val instanceof RegExp;\n}\n\n/**\n * Type guard that validates the the value passed in is\n * a regular expression or a string that _can_ be turned\n * into a regular expression.\n *\n * **Related:** `isRegExp`\n */\nexport function isLikeRegExp(val: unknown): val is LikeRegExp {\n if (isRegExp(val)) {\n return true;\n }\n\n if (isString(val)) {\n try {\n const _re = new RegExp(val);\n return true;\n }\n catch {\n return false;\n }\n }\n\n return false;\n}\n","import type { Scalar } from \"inferred-types/types\";\nimport { isFalse, isNull, isNumber, isString, isSymbol, isTrue } from \"inferred-types/runtime\";\n\n/**\n * **isScalar**(value)\n *\n * Type guard to check whether the value passed in is a _scalar_ value.\n */\nexport function isScalar<T>(value: T): value is T & Scalar {\n return isString(value) || isNumber(value) || isSymbol(value) || isNull(value) || isTrue(value) || isFalse(value);\n}\n","/**\n * type guard which tests `val` to see if it's a valid `Set<any>`\n */\nexport function isSet(val: unknown): val is Set<any> {\n return val instanceof Set;\n}\n","/**\n * type guard which tests `val` to see if it's a valid `Set<any>`\n */\nexport function isSetContainer(val: unknown): val is Set<any> {\n return val instanceof Set;\n}\n","import type { Constant } from \"inferred-types/constants\";\nimport { isConstant } from \"inferred-types/runtime\";\n\n/**\n * **isSpecificConstant**(kind)\n *\n * A higher order type guard which tests for a specific `Constant` type.\n */\nexport function isSpecificConstant<\n TKind extends string,\n>(kind: TKind) {\n return (value: unknown): value is Constant<TKind> => {\n return !!(isConstant(value) && value.kind === kind);\n };\n}\n","/**\n * **isString**\n *\n * Returns true or false on whether the passed in parameter is a\n * string (either a wide string or a string literal).\n *\n * The boolean return is traceable by the type system as well as the\n * runtime system.\n */\nexport function isString<T>(value: T): value is T & string {\n return (typeof value === \"string\");\n}\n","/**\n * **isSymbol**(value)\n *\n * Runtime type guard which narrows the passed in type\n * to being a **symbol** when condition is met.\n */\nexport function isSymbol<T>(value: T): value is T & symbol {\n return (typeof value === \"symbol\") as T extends symbol\n ? true\n : false;\n}\n","import type { Thenable } from \"inferred-types/types\";\nimport { isDictionary } from \"inferred-types/runtime\";\n/**\n * type guard which checks whether passed in `val` is a `Thenable` object\n */\nexport function isThenable(val: unknown): val is Thenable {\n return isDictionary(val) && \"then\" in val && \"catch\" in val && typeof val.then === \"function\";\n}\n","import { isString } from \"runtime/type-guards\";\n\n/**\n * **isTrimable**`(val)`\n *\n * tests whether a string has whitespace on either left or right edges.\n */\nexport function isTrimable<T>(val: T): val is T {\n return isString(val) && val !== val.trim();\n}\n","/**\n * **isTrue**(value)\n *\n * Type guard which detects whether the given value is `true`.\n */\nexport function isTrue(value: unknown): value is true {\n return value === true;\n}\n","import type { FalsyValue } from \"inferred-types/types\";\nimport { FALSY_VALUES } from \"inferred-types/constants\";\n\n/**\n * **isTruthy**\n *\n * Creates a TypeGuard which checks whether a value is considered _truthy_\n * in Javascript.\n */\nexport function isTruthy<V>(val: V): val is Exclude<V, FalsyValue> {\n return !FALSY_VALUES.includes(val as any);\n}\n","import type { AsTypeSubtype, TypedError } from \"inferred-types/types\";\nimport { isError } from \"inferred-types/runtime\";\n\nexport function isTypedError<T extends string>(_type: T) {\n /**\n * Type guard which validates that the `val` passsed in\n * extends the configured variant of `TypedError`\n */\n return (val: unknown): val is TypedError<\n AsTypeSubtype<T>[0],\n AsTypeSubtype<T>[1]\n > => {\n return isError(val) && \"type\" in val && typeof val.type === \"string\";\n };\n}\n","import type { TypeSubtype } from \"inferred-types/types\";\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * type guard which validates whether the `val` passed in is a valid `TypeSubtype`\n *\n * **Related:** `TypeSubtype`, `getTypeSubtype()`\n */\nexport function isTypeSubtype(val: unknown): val is TypeSubtype {\n return isString(val) && val.split(\"/\").length === 2;\n}\n","import type { Narrowable, TypeTuple } from \"inferred-types/types\";\n\n/**\n * **isTypeTuple**(value)\n *\n * A type-guard which detects if passed in value is a `TypeTuple`.\n */\nexport function isTypeTuple<T extends Narrowable, V extends TypeTuple<T, string>>(value: unknown | V): value is V {\n return Array.isArray(value) && value.length === 3 && typeof value[1] === \"function\";\n}\n","/**\n * **isUndefined**(value)\n *\n * Type guard which determines whether a type is undefined or not.\n */\nexport function isUndefined(value: unknown): value is undefined {\n return (typeof value === \"undefined\");\n}\n","import type { Unset } from \"inferred-types/types\";\nimport { isDictionary } from \"inferred-types/runtime\";\n\n/**\n * **isUnset**`(val)`\n *\n * Type guard which validates that the value passed in `Unset`.\n *\n * **Related:** `isSet()`\n */\nexport function isUnset(val: unknown): val is Unset {\n return isDictionary(val) && val.kind === \"Unset\";\n}\n","import type { Keys, NetworkProtocol, TupleToUnion, Uri } from \"inferred-types/types\";\nimport { NETWORK_PROTOCOL } from \"inferred-types/constants\";\nimport { isString, mutable } from \"inferred-types/runtime\";\n\n/**\n * **isUri**`(val, ...protocols)`\n *\n * Type guard to test with the passed in value is a valid URI.\n *\n * **Note:** by default all protocols in `NetworkProtocol` are\n * considered valid but you can scope this down by setting which\n * protocols you explicitly interested in.\n *\n * **Related:** `isUrl`\n */\nexport function isUri<\n T extends string,\n P extends readonly NetworkProtocol[],\n>(val: T, ...protocols: P): val is T & Uri<\n Keys<P>[\"length\"] extends 0\n ? NetworkProtocol\n : TupleToUnion<P>\n> {\n const p = protocols.length === 0\n ? mutable(NETWORK_PROTOCOL)\n : mutable(protocols);\n\n return (\n isString(val) && p.some(i => val.startsWith(`${i}://`))\n );\n}\n\n/**\n * **isUrl**`(val,[...protocols])`\n *\n * Type guard to test whether the passed in value is a http/https URL.\n *\n * **Note:** you _can_ specify precisely which network protocols you\n * are wanting to test for but by default it is \"http\" and \"https\"\n *\n * **Related:** `isUri`\n */\nexport function isUrl<\n T,\n P extends readonly NetworkProtocol[],\n>(val: T, ...protocols: P): val is T & Uri<\n Keys<P>[\"length\"] extends 0\n ? \"http\" | \"https\"\n : P[number]\n> {\n const p = protocols.length === 0\n ? [\"http\", \"https\"]\n : protocols;\n\n return isString(val) && p.some(i => val.startsWith(`${i}://`));\n}\n","import type { Variable } from \"inferred-types/types\";\nimport { ALPHA_CHARS, NUMERIC_CHAR } from \"inferred-types/constants\";\nimport { asChars, isString, startsWithTypeguard } from \"inferred-types/runtime\";\n\nconst VALID = [\n ...ALPHA_CHARS,\n ...NUMERIC_CHAR,\n \"_\",\n \".\",\n];\n\nconst alpha = null as unknown as typeof ALPHA_CHARS[number];\n\nfunction valid(chars: string[]): boolean {\n return chars.every(i => VALID.includes(i));\n}\n\nexport function isVariable(val: unknown): val is Variable {\n return isString(val) && startsWithTypeguard(alpha)(val) && valid(asChars(val));\n}\n","/**\n * type guard which tests `val` to see if it's a valid `WeakMap<any,any>`\n */\nexport function isWeakMap(val: unknown): val is WeakMap<any, any> {\n return val instanceof WeakMap;\n}\n","import type {\n Acceleration,\n Area,\n Current,\n Distance,\n Energy,\n Frequency,\n Luminosity,\n Mass,\n Metric,\n MetricCategory,\n Power,\n Pressure,\n Resistance,\n Speed,\n Temperature,\n TimeMetric,\n Voltage,\n Volume,\n} from \"inferred-types/types\";\nimport {\n ACCELERATION_METRICS_LOOKUP,\n AREA_METRICS_LOOKUP,\n CURRENT_METRICS_LOOKUP,\n DISTANCE_METRICS_LOOKUP,\n ENERGY_METRICS_LOOKUP,\n FREQUENCY_METRICS_LOOKUP,\n LUMINOSITY_METRICS_LOOKUP,\n MASS_METRICS_LOOKUP,\n NUMERIC_CHAR,\n POWER_METRICS_LOOKUP,\n PRESSURE_METRICS_LOOKUP,\n RESISTANCE_METRICS_LOOKUP,\n SPEED_METRICS_LOOKUP,\n TEMPERATURE_METRICS_LOOKUP,\n TIME_METRICS_LOOKUP,\n VOLTAGE_METRICS_LOOKUP,\n VOLUME_METRICS_LOOKUP,\n} from \"inferred-types/constants\";\nimport { createFnWithProps, isNumberLike, stripWhile } from \"inferred-types/runtime\";\nimport { isString } from \"runtime/type-guards\";\n\nfunction separate(s: string) {\n return stripWhile(s.toLowerCase(), ...NUMERIC_CHAR).trim();\n}\n\nfunction startsWithNumber(val: unknown) {\n return isString(val) && isNumberLike(val.slice(0, 1));\n}\n\nexport function isAreaMetric(val: unknown): val is Area {\n return isString(val) && startsWithNumber(val) && AREA_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isLuminosityMetric(val: unknown): val is Luminosity {\n return isString(val) && startsWithNumber(val) && LUMINOSITY_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isResistanceMetric(val: unknown): val is Resistance {\n return isString(val) && startsWithNumber(val) && RESISTANCE_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isCurrentMetric(val: unknown): val is Current {\n return isString(val) && startsWithNumber(val) && CURRENT_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isVoltageMetric(val: unknown): val is Voltage {\n return isString(val) && startsWithNumber(val) && VOLTAGE_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isFrequencyMetric(val: unknown): val is Frequency {\n return isString(val) && startsWithNumber(val) && FREQUENCY_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isPowerMetric(val: unknown): val is Power {\n return isString(val) && startsWithNumber(val) && POWER_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isTimeMetric(val: unknown): val is TimeMetric {\n return isString(val) && startsWithNumber(val) && TIME_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isEnergyMetric(val: unknown): val is Energy {\n return isString(val) && startsWithNumber(val) && ENERGY_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isPressureMetric(val: unknown): val is Pressure {\n return isString(val) && startsWithNumber(val) && PRESSURE_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isTemperatureMetric(val: unknown): val is Temperature {\n return isString(val) && startsWithNumber(val) && TEMPERATURE_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isVolumeMetric(val: unknown): val is Volume {\n return isString(val) && startsWithNumber(val) && VOLUME_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isAccelerationMetric(val: unknown): val is Acceleration {\n return isString(val) && startsWithNumber(val) && ACCELERATION_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isSpeedMetric(val: unknown): val is Speed {\n const speed = SPEED_METRICS_LOOKUP.map(i => i.abbrev);\n return isString(val) && startsWithNumber(val) && speed.includes(separate(val) as any);\n}\n\nexport function isMassMetric(val: unknown): val is Mass {\n return isString(val) && startsWithNumber(val) && MASS_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\nexport function isDistanceMetric(val: unknown): val is Distance {\n return isString(val) && startsWithNumber(val) && DISTANCE_METRICS_LOOKUP.map(i => i.abbrev).includes(separate(val) as any);\n}\n\n/**\n * Type guard which validates the passed in `val` is a `Metric` (unit\n * of measure).\n */\nexport function isMetric(val: unknown): val is Metric {\n return isDistanceMetric(val)\n || isMassMetric(val)\n || isSpeedMetric(val)\n || isAccelerationMetric(val)\n || isVoltageMetric(val)\n || isTemperatureMetric(val)\n || isPressureMetric(val)\n || isEnergyMetric(val)\n || isTimeMetric(val)\n || isPowerMetric(val)\n || isFrequencyMetric(val)\n || isVoltageMetric(val)\n || isCurrentMetric(val)\n || isLuminosityMetric(val)\n || isAreaMetric(val);\n}\n\nfunction getCategories<T extends readonly MetricCategory[]>(\n c: T,\n) {\n return c.map((i) => {\n switch (i) {\n case \"Acceleration\":\n return isAccelerationMetric;\n case \"Area\":\n return isAreaMetric;\n case \"Current\":\n return isCurrentMetric;\n case \"Distance\":\n return isDistanceMetric;\n case \"Frequency\":\n return isFrequencyMetric;\n case \"Luminosity\":\n return isLuminosityMetric;\n case \"Mass\":\n return isMassMetric;\n case \"Power\":\n return isPowerMetric;\n case \"Pressure\":\n return isPressureMetric;\n case \"Resistance\":\n return isResistanceMetric;\n case \"Speed\":\n return isSpeedMetric;\n case \"Temperature\":\n return isTemperatureMetric;\n case \"Time\":\n return isTimeMetric;\n case \"Voltage\":\n return isVoltageMetric;\n case \"Volume\":\n return isVoltageMetric;\n default:\n throw new Error(`Unknown metric category: ${i}`);\n }\n },\n );\n}\n\nexport type MetricTypeGuard<\n TCat extends readonly MetricCategory[],\n> = ((val: unknown) => boolean) & { categories: TCat; kind: \"MetricTypeGuard\" };\n\n/**\n * **isMetricCategory**`(...categories) => (val) => val is Uom<T>`\n *\n * A higher order type guard which validates that a value is a metric\n * with the specified category(s) UOM's.\n *\n * **Related:** `isMetric()`, `isAreaMetric()`, `isSpeedMetric()`, ...\n */\nexport function isMetricCategory<\n TCat extends readonly [MetricCategory, ...MetricCategory[]],\n>(...categories: TCat): MetricTypeGuard<TCat> {\n const fn = (val: unknown): val is Metric<TCat[number]> => {\n const tests = getCategories(categories);\n\n return tests.some(i => i(val));\n };\n\n const props = { categories, kind: \"MetricTypeGuard\" };\n\n return createFnWithProps(fn, props) as unknown as MetricTypeGuard<TCat>;\n}\n","import type {\n AccelerationUom,\n AreaUom,\n CurrentUom,\n DistanceUom,\n EnergyUom,\n FrequencyUom,\n LuminosityUom,\n MassUom,\n MetricCategory,\n PowerUom,\n PressureUom,\n ResistanceUom,\n SpeedUom,\n TemperatureUom,\n TimeUom,\n Uom,\n VoltageUom,\n VolumeUom,\n} from \"inferred-types/types\";\nimport {\n ACCELERATION_METRICS_LOOKUP,\n AREA_METRICS_LOOKUP,\n CURRENT_METRICS_LOOKUP,\n ENERGY_METRICS_LOOKUP,\n FREQUENCY_METRICS_LOOKUP,\n LUMINOSITY_METRICS_LOOKUP,\n MASS_METRICS_LOOKUP,\n POWER_METRICS_LOOKUP,\n PRESSURE_METRICS_LOOKUP,\n RESISTANCE_METRICS_LOOKUP,\n SPEED_METRICS_LOOKUP,\n TEMPERATURE_METRICS_LOOKUP,\n TIME_METRICS_LOOKUP,\n VOLTAGE_METRICS_LOOKUP,\n VOLUME_METRICS_LOOKUP,\n} from \"inferred-types/constants\";\nimport { createFnWithProps, isString } from \"inferred-types/runtime\";\n\nexport function isAreaUom(val: unknown): val is AreaUom {\n return isString(val) && AREA_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isLuminosityUom(val: unknown): val is LuminosityUom {\n return isString(val) && LUMINOSITY_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isResistanceUom(val: unknown): val is ResistanceUom {\n return isString(val) && RESISTANCE_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isCurrentUom(val: unknown): val is CurrentUom {\n return isString(val) && CURRENT_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isVoltageUom(val: unknown): val is VoltageUom {\n return isString(val) && VOLTAGE_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isFrequencyUom(val: unknown): val is FrequencyUom {\n return isString(val) && FREQUENCY_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isPowerUom(val: unknown): val is PowerUom {\n return isString(val) && POWER_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isTimeUom(val: unknown): val is TimeUom {\n return isString(val) && TIME_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isEnergyUom(val: unknown): val is EnergyUom {\n return isString(val) && ENERGY_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isPressureUom(val: unknown): val is PressureUom {\n return isString(val) && PRESSURE_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isTemperatureUom(val: unknown): val is TemperatureUom {\n return isString(val) && TEMPERATURE_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isVolumeUom(val: unknown): val is VolumeUom {\n return isString(val) && VOLUME_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isAccelerationUom(val: unknown): val is AccelerationUom {\n return isString(val) && ACCELERATION_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isSpeedUom(val: unknown): val is SpeedUom {\n return isString(val) && SPEED_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isMassUom(val: unknown): val is MassUom {\n return isString(val) && MASS_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\nexport function isDistanceUom(val: unknown): val is DistanceUom {\n return isString(val) && ENERGY_METRICS_LOOKUP.map(i => i.abbrev).includes(val as any);\n}\n\n/**\n * Type guard which validates the passed in `val` is a `Uom` (unit\n * of measure).\n *\n * **Related:**\n * - `isUomCategory(c)(v)`\n * - `isSpeedUom(v)`, `isMassUom(v)`, ...\n */\nexport function isUom(val: unknown): val is Uom {\n return isDistanceUom(val)\n || isMassUom(val)\n || isSpeedUom(val)\n || isAccelerationUom(val)\n || isVoltageUom(val)\n || isTemperatureUom(val)\n || isPressureUom(val)\n || isEnergyUom(val)\n || isTimeUom(val)\n || isPowerUom(val)\n || isFrequencyUom(val)\n || isVoltageUom(val)\n || isCurrentUom(val)\n || isLuminosityUom(val)\n || isAreaUom(val);\n}\n\nfunction getCategories<T extends readonly MetricCategory[]>(\n c: T,\n) {\n return c.map((i) => {\n switch (i) {\n case \"Acceleration\":\n return isAccelerationUom;\n case \"Area\":\n return isAreaUom;\n case \"Current\":\n return isCurrentUom;\n case \"Distance\":\n return isDistanceUom;\n case \"Frequency\":\n return isFrequencyUom;\n case \"Luminosity\":\n return isLuminosityUom;\n case \"Mass\":\n return isMassUom;\n case \"Power\":\n return isPowerUom;\n case \"Pressure\":\n return isPressureUom;\n case \"Resistance\":\n return isResistanceUom;\n case \"Speed\":\n return isSpeedUom;\n case \"Temperature\":\n return isTemperatureUom;\n case \"Time\":\n return isTimeUom;\n case \"Voltage\":\n return isVoltageUom;\n case \"Volume\":\n return isVoltageUom;\n default:\n throw new Error(\"Unknown UOM Category\");\n }\n },\n );\n}\n\nexport type UomTypeGuard<\n TCat extends readonly MetricCategory[],\n> = ((val: unknown) => boolean) & {\n categories: TCat;\n kind: \"UomTypeGuard\";\n};\n\n/**\n * **isUomCategory**`(...categories) => (val) => val is Uom<T>`\n *\n * A higher order type guard which validates that a value is of\n * the specified metric category or categories.\n *\n * **Related:** `isUom()`, `isAreaUom()`, `isSpeedUom()`, ...\n */\nexport function isUomCategory<\n TCat extends readonly [MetricCategory, ...MetricCategory[]],\n>(\n ...categories: TCat\n): UomTypeGuard<TCat> {\n const fn = (val: unknown): val is Uom<TCat[number]> => {\n const tests = getCategories(categories);\n\n return tests.some(i => i(val));\n };\n const prop = { categories, kind: \"UomTypeGuard\" };\n return createFnWithProps(fn, prop) as unknown as UomTypeGuard<TCat>;\n}\n","import type {\n AsString,\n DomainName,\n GetUrlProtocolPrefix,\n GetUrlSource,\n Ip4Address,\n Ip6Address,\n Ip6Subnet,\n IsWideString,\n UrlPath,\n} from \"inferred-types/types\";\nimport {\n asChars,\n getUrlQueryParams,\n isAlpha,\n isNumberLike,\n isString,\n removeUrlProtocol\n} from \"inferred-types/runtime\";\n\n/**\n * **isIp4Address**`(val)`\n *\n * Type guard which checks whether the value is a valid IPv4 address.\n */\nexport function isIp4Address<T>(val: T): val is T & Ip4Address {\n const octets: string[] = isString(val) ? val.split(\".\") : [];\n return isString(val)\n && (octets.length === 4)\n && (octets.every(i => isNumberLike(i)))\n && octets.every(i => Number(i) >= 0 && Number(i) <= 255)\n && octets.every(i => `${Number(i)}` === i);\n}\n\n/**\n * **isIp6Subnet**`(val,[mask])`\n *\n * Type guard which validates that `val` is a valid IPv6 subnet.\n *\n * - optionally allows for isolating a particular subnet mask\n */\nexport function isIp6Subnet<T extends number>(\n val: string,\n mask?: T,\n): val is Ip6Subnet {\n // Trim and split the input\n const trimmed = val.trim();\n const parts = trimmed.split(\"/\");\n\n // Must have exactly two parts: address and mask\n if (parts.length !== 2)\n return false;\n\n const [address, maskPart] = parts;\n\n // Validate mask is a numeric string\n if (!/^\\d+$/.test(maskPart))\n return false;\n const numericMask = Number.parseInt(maskPart, 10);\n\n // Validate mask range\n if (numericMask < 0 || numericMask > 128)\n return false;\n\n // Validate IPv6 address portion\n if (!isIp6Address(address))\n return false;\n\n // Check optional mask parameter\n return mask === undefined || numericMask === mask;\n}\n\n/**\n * **isIp6Address**`(val)`\n *\n * Comprehensive type guard for IPv6 addresses with:\n * - Full [RFC 4291](https://www.rfc-editor.org/rfc/rfc4291.html) validation\n * - Compression handling\n * - Zone index exclusion\n */\nexport function isIp6Address<T>(val: T): val is T & Ip6Address {\n if (typeof val !== \"string\")\n return false;\n const str = val.trim();\n\n // Basic structural checks\n if (str.length < 2 || str.length > 45)\n return false;\n if (str.includes(\"/\"))\n return false;\n if ((str.match(/::/g) || []).length > 1)\n return false;\n if (/^::.+::/.test(str))\n return false;\n if (/^:[^:]/.test(str) || /[^:]:$/.test(str))\n return false;\n\n // New: Detect 3+ consecutive colons anywhere\n if (/:{3,}/.test(str))\n return false;\n\n // Split and validate parts\n const [before = \"\", after = \"\"] = str.split(\"::\");\n const beforeParts = before.split(\":\").filter(Boolean);\n const afterParts = after.split(\":\").filter(Boolean);\n const totalParts = beforeParts.length + afterParts.length;\n\n // Validate group count\n if (str.includes(\"::\")) {\n if (totalParts > 7)\n return false;\n if (str === \"::\")\n return true;\n }\n else {\n if (beforeParts.length !== 8)\n return false;\n }\n\n // Validate individual parts\n const allParts = [...beforeParts, ...afterParts];\n return allParts.every(part =>\n /^[0-9a-f]{1,4}$/i.test(part),\n );\n}\n\ntype IsIpAddress<T> = IsWideString<T> extends true\n ? Ip6Address | Ip4Address\n : T extends `${string}:${string}`\n ? Ip6Address\n : T extends `${string}.${string}`\n ? Ip4Address\n : never;\n\n/**\n * **isIpAddress**`(val)`\n *\n * Type guard which checks whether the value is a valid IP address (v4 or v6).\n */\nexport function isIpAddress<T>(val: T): val is T & IsIpAddress<T> {\n return isIp4Address(val) || isIp6Address(val);\n}\n\n/**\n * **hasUrlPort**`(val)`\n *\n * Type guard which tests whether there is an explicit _port_ reference\n * in the passed in URL (versus implicitly using the default port of the\n * protocol)\n */\nexport function hasUrlPort<T>(val: T): val is T & `${GetUrlProtocolPrefix<T>}${GetUrlSource<AsString<T>>}:${number}${string}` {\n return isString(val) && removeUrlProtocol(val).includes(\":\");\n}\n\n/**\n * **isUrlPath**`(val)`\n *\n * Type guard which checks whether the value is a valid `UrlPath`\n */\nexport function isUrlPath<T>(val: T): val is T & UrlPath {\n return isString(val)\n && (val === \"\" || val.startsWith(\"/\"))\n && (\n asChars(val).every(\n c => isAlpha(c)\n || isNumberLike(c)\n || c === \"_\"\n || c === \"@\"\n || c === \".\"\n || c === \"-\",\n )\n );\n}\n\n/**\n * **isDomainName**`(val)`\n *\n * Type guard which checks whether the value is a valid DNS domain name\n */\nexport function isDomainName<T>(val: T): val is T & DomainName<AsString<T>> {\n return isString(val)\n && val.split(\".\").filter(i => i).length > 1\n && isString(val.split(\".\").filter(i => i).pop())\n && asChars(val.split(\".\").filter(i => i).pop() as string).length > 1\n && val.split(\".\").filter(i => i).every(\n i => isAlpha(i) || isNumberLike(i) || i === \"-\" || i === \"_\",\n );\n}\n\n/**\n * **isUrlSource**`(val)`\n *\n * Type guard which checks whether the value is a valid URL source\n * (aka, an IP address or a Domain Name)\n */\nexport function isUrlSource<T>(val: T) {\n return isDomainName(val) || isIpAddress(val);\n}\n\n/**\n * **hasUrlQueryParameter**`(val,prop)`\n *\n * Tests whether the valued in has a query parameter specified by `prop`.\n */\nexport function hasUrlQueryParameter<T extends string, P extends string>(val: T, prop: P) {\n return isString(getUrlQueryParams(val, prop));\n}\n","import type { Integer } from \"inferred-types/types\";\nimport { isNumber } from \"inferred-types/runtime\";\n\n/**\n * type guard which validates that `val` is a `number` type which is\n * also a valid Integer number.\n */\nexport function isInteger(val: unknown): val is Integer {\n return isNumber(val) && Number.isInteger(val);\n}\n","/**\n * **isNumber**(value)\n *\n * Type guard to test whether passed in value is a numeric type.\n */\nexport function isNumber<T>(value: T): value is T & number {\n return (typeof value === \"number\");\n}\n","import { isNumber } from \"inferred-types/runtime\";\n\n/**\n * Type guard which validates that the passed in `val` is a string array.\n */\nexport function isNumericArray(val: unknown): val is number[] {\n return Array.isArray(val) && val.every(i => isNumber(i));\n}\n","import type {\n NetworkProtocol,\n NetworkProtocolPrefix,\n} from \"inferred-types/types\";\nimport { NETWORK_PROTOCOL } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * **hasProtocol**`(val)`\n *\n * Type guard which validates that `val` _starts with_ a known\n * protocol name (e.g., \"https\", \"ftp\", etc.).\n */\nexport function hasProtocol<\n P extends readonly NetworkProtocol[],\n>(\n val: unknown,\n ...protocols: P\n): val is P[\"length\"] extends 0\n ? `${NetworkProtocol}${string}`\n : `${P[number]}${string}` {\n return (\n isString(val)\n && protocols.length === 0\n ? NETWORK_PROTOCOL.some(i => val.startsWith(i))\n : protocols.some(i => (val as string).startsWith(i))\n );\n}\n\n/**\n * **isProtocol**`(val)`\n *\n * Type guard which validates that `val` is a known\n * protocol name (e.g., \"https\", \"ftp\", etc.).\n */\nexport function isProtocol<\n P extends readonly NetworkProtocol[],\n>(\n val: unknown,\n ...protocols: P\n): val is P[\"length\"] extends 0\n ? NetworkProtocol\n : P[number] {\n return (\n isString(val)\n && protocols.length === 0\n ? NETWORK_PROTOCOL.includes(val as any)\n : protocols.includes(val as any)\n );\n}\n\n/**\n * **hasProtocolPrefix**`(val, [...protocols])`\n *\n * Type guard which validates that `val` _starts with_ a known\n * protocol name (e.g., \"https\", \"ftp\", etc.) followed by `://`.\n */\nexport function hasProtocolPrefix<\n P extends readonly NetworkProtocol[],\n>(\n val: unknown,\n ...protocols: P\n): val is P[\"length\"] extends 0\n ? `${NetworkProtocolPrefix}${string}`\n : `${NetworkProtocolPrefix<P[number]>}${string}` {\n return (\n isString(val)\n && protocols.length === 0\n ? NETWORK_PROTOCOL.map(i => `${i}://`).some(i => val.startsWith(i))\n : protocols.map(i => `${i}://`).some(i => (val as string).startsWith(i))\n );\n}\n\n/**\n * **isProtocolPrefix**`(val, [...protocols])`\n *\n * Type guard which validates that `val` is a known\n * protocol name (e.g., \"https\", \"ftp\", etc.) followed by `://`.\n */\nexport function isProtocolPrefix<\n P extends readonly NetworkProtocol[],\n>(\n val: unknown,\n ...protocols: P\n): val is P[\"length\"] extends 0\n ? NetworkProtocolPrefix\n : NetworkProtocolPrefix<P[number]> {\n return (\n isString(val)\n && protocols.length === 0\n ? NETWORK_PROTOCOL.map(i => `${i}://`).includes(val as any)\n : protocols.map(i => `${i}://`).includes(val as any)\n );\n}\n","import type {\n DefineObject\n} from \"inferred-types/types\";\nimport {\n isDefineTuple,\n isDictionary,\n isInputToken\n} from \"inferred-types/runtime\";\n\n/**\n * **isDefineObject**`(val)`\n *\n * a type-guard which validates that `val` is a `DefineObject` type. This requires that:\n *\n * - `val` be a dictionary object\n * - all _values_ of `val`'s keys must be an `InputToken` (string or otherwise)\n */\nexport function isDefineObject(val: unknown): val is DefineObject {\n return isDictionary(val)\n ? Object.values(val).every(i => isInputToken(i) || isDefineObject(i) || isDefineTuple(i))\n : false;\n}\n","import type { DefineTuple } from \"inferred-types/types\";\nimport { isArray, isInputToken } from \"inferred-types/runtime\";\n\n/**\n * **isDefineTuple**`(val)`\n *\n * A type guard which validates that `val` is a _tuple_ of `DefineTuple`.\n *\n * - `DefineTuple` is just a tuple of `InputToken` elements\n */\nexport function isDefineTuple(\n val: unknown\n): val is DefineTuple {\n return isArray(val) && val.every(\n i => isInputToken(i)\n );\n}\n","import { isArray, isString } from \"runtime/type-guards\";\n\n/**\n * A Take function being used with a Lexer returns a `DeltaReturn` and this type\n * guard validates whether `val` is one.\n */\nexport function isDeltaReturn(val: unknown): val is [ string, unknown ] {\n return isArray(val) && val.length === 2 && isString(val[0]);\n}\n","import type { InputToken } from \"inferred-types/types\";\nimport {\n isDefineObject,\n isDefineTuple,\n isInputToken__String\n} from \"inferred-types/runtime\";\n\n/**\n * **isInputToken**`(val)`\n *\n * A type guard which validates that `val` is a valid `InputToken`. This token\n * can be:\n *\n * - a string definition of an `InputToken` (e.g., `\"string\"`, `\"string | number\"`, etc.)\n * - a tuple definition (e.g., `DefineTuple`)\n * - an object definition (e.g., `DefineObject`)\n */\nexport function isInputToken(val: unknown): val is InputToken {\n return isInputToken__String(val) || isDefineObject(val) || isDefineTuple(val);\n}\n","import type { InputTokenSuggestions } from \"inferred-types/types\";\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * **isInputToken__String**`(val)`\n *\n * Type guard which validates that `val` is a _string-based_\n * `InputToken`.\n *\n * TODO: this is not ready to be used!\n */\nexport function isInputToken__String(val: unknown): val is InputTokenSuggestions {\n return isString(val);\n}\n","import type { ShapeCallback } from \"inferred-types/types\";\nimport { isFunction } from \"runtime/type-guards\";\n\n/**\n * type guard which validates that the `val` passed in is a `ShapeCallback`\n */\nexport function isShapeCallback(val: unknown): val is ShapeCallback {\n return isFunction(val) && (val as any).kind === \"shape\";\n}\n","import type { SimpleContainerToken, SimpleScalarToken, SimpleToken } from \"inferred-types/types\";\n\nimport { SIMPLE_SCALAR_TOKENS, SIMPLE_TOKENS } from \"inferred-types/constants\";\nimport { isArray, isString } from \"inferred-types/runtime\";\n\nconst split_tokens = SIMPLE_TOKENS.map(i => i.split(\"TOKEN\"));\nconst scalar_split_tokens = SIMPLE_SCALAR_TOKENS.map(i => i.split(\"TOKEN\"));\n// const container_split_tokens = SIMPLE_CONTAINER_TOKENS.map(i => i.split(\"TOKEN\"));\n\n/**\n * **isSimpleToken**`(val)`\n *\n * Type guard which validates that what was passed in is a `SimpleToken`\n *\n * **Related:** `isSimpleTokenTuple`\n */\nexport function isSimpleToken(val: unknown): val is SimpleToken {\n return isString(val) && split_tokens.some(\n i => (\n (i.length === 1 && val === i[0])\n || (val.startsWith(i[0]) && val.endsWith(i.slice(-1)[0]) && i.every(p => val.includes(p)))\n ),\n );\n}\n\n/**\n * **isSimpleScalarToken**`(val)`\n *\n * Type guard which validates that what was passed in is a `SimpleScalarToken`\n *\n * **Related:** `isSimpleToken()`, `isSimpleContainerToken()`\n */\nexport function isSimpleScalarToken(val: unknown): val is SimpleScalarToken {\n return isString(val) && scalar_split_tokens.some(\n i => (\n (i.length === 1 && val === i[0])\n || (val.startsWith(i[0]) && val.endsWith(i.slice(-1)[0]) && i.every(p => val.includes(p)))\n ),\n );\n}\n\n/**\n * **isSimpleContainerToken**`(val)`\n *\n * Type guard which validates that what was passed in is a\n * `SimpleContainerToken`.\n *\n * **Related:** `isSimpleToken()`, `isSimpleScalarToken()`\n */\nexport function isSimpleContainerToken(val: unknown): val is SimpleContainerToken {\n return isString(val) && scalar_split_tokens.some(\n i => (\n (i.length === 1 && val === i[0])\n || (val.startsWith(i[0]) && val.endsWith(i.slice(-1)[0]) && i.every(p => val.includes(p)))\n ),\n );\n}\n\n/**\n * **isSimpleTokenTuple**`(val)`\n *\n * Type guard which validates that what was passed in a tuple of `SimpleToken`'s\n *\n * **Related:** `isSimpleToken()`, `isSimpleTokenTuple()`\n */\nexport function isSimpleTokenTuple(val: unknown): val is SimpleToken[] {\n return isArray(val) && val.length !== 0\n && val.every(isSimpleToken);\n}\n\n/**\n * **isSimpleScalarTokenTuple**`(val)`\n *\n * Type guard which validates that what was passed in a tuple of\n * `SimpleScalarToken`'s\n *\n * **Related:** `isSimpleToken()`, `isSimpleTokenTuple()`\n */\nexport function isSimpleScalarTokenTuple(val: unknown): val is SimpleScalarToken[] {\n return isArray(val) && val.length !== 0\n && val.every(isSimpleScalarToken);\n}\n\n/**\n * **isSimpleContainerTokenTuple**`(val)`\n *\n * Type guard which validates that what was passed in a tuple of\n * `SimpleContainerToken`'s\n *\n * **Related:** `isSimpleToken()`, `isSimpleTokenTuple()`\n */\nexport function isSimpleContainerTokenTuple(val: unknown): val is SimpleContainerToken[] {\n return isArray(val) && val.length !== 0\n && val.every(isSimpleContainerToken);\n}\n","import type {\n Opt,\n TwColor,\n TwColorOptionalOpacity,\n TwColorTarget,\n TwColorWithLuminosity,\n TwColorWithLuminosityOpacity,\n TwModifier,\n TwTarget__Color,\n TwTarget__Color__Light,\n} from \"inferred-types/types\";\nimport {\n TW_COLOR_TARGETS,\n TW_HUE,\n TW_LUMINOSITY,\n TW_MODIFIERS,\n} from \"inferred-types/constants\";\nimport {\n getTailwindModifiers,\n isNumberLike,\n isString,\n removeTailwindModifiers,\n retainAfter,\n} from \"inferred-types/runtime\";\n\n/**\n * **isTailwindColor**`(val)`\n *\n * A type guard which validates whether the `val` passed in is a\n * [Tailwind](https://tailwindcss.com/docs/customizing-colors)\n * color (e.g., `blue`, `sky`, `slate`, etc.).\n *\n * **Related:** `isTailwindColor`, `isTailwindColorWithLuminosityAndOpacity`\n */\nexport function isTailwindColorName(val: unknown): val is TwColor {\n return isString(val) && Object.keys(TW_HUE).includes(val);\n}\n\n/**\n * **isTailwindColorWithLuminosity**`(val)`\n *\n * A type guard which validates whether the `val` passed in is a [Tailwind](https://tailwindcss.com/docs/customizing-colors)\n * color with luminosity string (e.g., `blue-300`, `purple-900`).\n *\n * - this also allows the colors `white` and `black` which are mapped to a luminosity level\n * but do not have variant luminosities\n *\n * **Related:** `isTailwindColor`, `isTailwindColorWithLuminosityAndOpacity`\n */\nexport function isTailwindColorWithLuminosity(val: unknown): val is TwColorWithLuminosity {\n return isString(val) && isTailwindColorName(val.split(\"-\")[0]) && (\n ![\"white\", \"black\"].includes(val.split(\"-\")[0]) || val.split(\"-\").length === 1\n ) && (\n !val.includes(\"-\") || Object.keys(TW_LUMINOSITY).includes(retainAfter(val, \"-\"))\n );\n}\n\n/**\n * **isTailwindColorWithLuminosityAndOpacity**`(val)`\n *\n * A type guard which validates whether the `val` passed in is a [Tailwind](https://tailwindcss.com/docs/customizing-colors)\n * color string with both **luminosity** and **opacity** expressed (e.g., `blue-300/40`, `purple-900/75`).\n *\n * - this also allows the colors `white` and `black` which are mapped to a luminosity level\n * but do not have variant luminosities\n *\n * **Related:** `isTailwindColor`, `isTailwindColorWithLuminosity`, `isTailwindColorName`\n */\nexport function isTailwindColorWithLuminosityAndOpacity(val: unknown): val is TwColorWithLuminosityOpacity {\n return isString(val)\n && val.includes(\"/\")\n && isTailwindColorWithLuminosity(val.split(\"/\")[0])\n && isNumberLike(val.split(\"/\")[1])\n && ([1, 2].includes(val.split(\"/\")[1].length) || val.split(\"/\")[1] === \"100\");\n}\n\n/**\n * **isTailwindColor**`(val)`\n *\n * A type guard which validates whether the `val` passed in is a\n * \"fully qualified\" [Tailwind](https://tailwindcss.com/docs/customizing-colors)\n * color string.\n *\n * - All color string must include a luminosity value except `white` and `black`\n * - You may _optionally_ add an opacity value.\n * - Examples:\n * - `blue-500`\n * - `white`\n * - `black/50`\n * - `red-700/25`\n *\n * **Related:** `isTailwindColorWithLuminosityAndOpacity`, `isTailwindColorWithLuminosity`, `isTargetedTailwindColor`\n */\nexport function isTailwindColor(val: unknown): val is TwColorOptionalOpacity {\n return isTailwindColorWithLuminosity(val) || isTailwindColorWithLuminosityAndOpacity(val);\n}\n\n/**\n * Type guard which validates that `val` is a `TwModifier` (e.g., \"dark\", \"focus\", etc.).\n */\nexport function isTailwindModifier(val: unknown): val is TwModifier {\n return isString(val) && TW_MODIFIERS.includes(val as any);\n}\n\n/**\n * A type guard which validates that `val` is a viable \"target\" for a Tailwind\n * color string (e.g., \"bg\", \"text\", \"border\", etc.).\n */\nexport function isTailwindColorTarget(val: unknown): val is TwColorTarget {\n return isString(val) && TW_COLOR_TARGETS.includes(val as any);\n}\n\ntype FullTailwindColorClass<\n TAllow extends readonly TwModifier[] | readonly [true],\n> = TAllow[\"length\"] extends 0\n ? TwTarget__Color\n : TAllow[\"length\"] extends 1\n ? TAllow[0] extends TwModifier\n ? `${Opt<TAllow[0]>}:${TwTarget__Color}`\n : `${Opt<`${string}:`>}${TwTarget__Color__Light}`\n : TAllow[\"length\"] extends 2\n ? TAllow[0] extends TwModifier\n ? TAllow[1] extends TwModifier\n ? `${TAllow[0]}:${TAllow[1]}:${TwTarget__Color__Light}`\n | `${TAllow[1]}:${TAllow[0]}:${TwTarget__Color__Light}`\n | `${TAllow[0]}:${TwTarget__Color__Light}`\n | `${TAllow[1]}:${TwTarget__Color__Light}` | TwTarget__Color__Light\n : never\n : never\n : `${Opt<`${string}:`>}${TwTarget__Color}`;\n\n/**\n * A type guard which validates that `val` is a fully qualified Tailwind class which:\n *\n * - targets a valid source (e.g., \"bg\", \"text\", etc.)\n * - has a valid color and luminosity (and optionally an opacity)\n * - and if any _modifiers_ were at start of string they are part of the\n * those authorized by the the `allowedModifiers` string\n *\n * **Note:** if `allowedModifiers` is set with a single value of `true` then all known modifiers\n * are allowed.\n *\n * **Related:** `isTailwindColor`, `isTailwindColorTarget`, `isTailwindModifier`\n */\nexport function isTailwindColorClass<\n TAllow extends readonly TwModifier[] | readonly [true],\n>(val: unknown, ...allowedModifiers: TAllow): val is FullTailwindColorClass<TAllow> {\n if (isString(val)) {\n const mods = getTailwindModifiers(val);\n const targetted = removeTailwindModifiers(val);\n const target = targetted.split(\"-\")[0];\n const color = targetted.split(\"-\").slice(1).join(\"-\");\n\n return isTailwindColorTarget(target)\n && isTailwindColor(color)\n && (\n allowedModifiers[0] === true\n || mods.every(i => (allowedModifiers as TwModifier[]).includes(i))\n );\n }\n return false;\n}\n","import type { AustralianNewsUrls } from \"inferred-types/types\";\nimport { AUSTRALIAN_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = AUSTRALIAN_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Australian news URL\n */\nexport function isAustralianNewsUrl(val: unknown): val is AustralianNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { BelgianNewsUrls } from \"inferred-types/types\";\nimport { BELGIUM_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = BELGIUM_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Belgium news URL\n */\nexport function isBelgiumNewsUrl(val: unknown): val is BelgianNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { CanadianNewsUrls } from \"inferred-types/types\";\nimport { CANADIAN_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = CANADIAN_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Canadian news URL\n */\nexport function isCanadianNewsUrl(val: unknown): val is CanadianNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { ChineseNewsUrls } from \"inferred-types/types\";\nimport { CHINESE_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = CHINESE_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Chinese news URL\n */\nexport function isChineseNewsUrl(val: unknown): val is ChineseNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { DanishNewsUrls } from \"inferred-types/types\";\nimport { DANISH_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = DANISH_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Danish news URL\n */\nexport function isDanishNewsUrl(val: unknown): val is DanishNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { DutchNewsUrls } from \"inferred-types/types\";\nimport { DUTCH_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = DUTCH_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Dutch news URL\n */\nexport function isDutchNewsUrl(val: unknown): val is DutchNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { FrenchNewsUrls } from \"inferred-types/types\";\nimport { FRENCH_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = FRENCH_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a French news URL\n */\nexport function isFrenchNewsUrl(val: unknown): val is FrenchNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { GermanNewsUrls } from \"inferred-types/types\";\nimport { GERMAN_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = GERMAN_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a German news URL\n */\nexport function isGermanNewsUrl(val: unknown): val is GermanNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { IndianNewsUrls } from \"inferred-types/types\";\nimport { INDIAN_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = INDIAN_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Indian news URL\n */\nexport function isIndianNewsUrl(val: unknown): val is IndianNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { NewsUrls } from \"inferred-types/types\";\nimport {\n isAustralianNewsUrl,\n isBelgiumNewsUrl,\n isCanadianNewsUrl,\n isDanishNewsUrl,\n isDutchNewsUrl,\n isFrenchNewsUrl,\n isGermanNewsUrl,\n isIndianNewsUrl,\n isItalianNewsUrl,\n isJapaneseNewsUrl,\n isMexicanNewsUrl,\n isNorwegianNewsUrl,\n isSouthKoreanNewsUrl,\n isSpanishNewsUrl,\n isSwissNewsUrl,\n isTurkishNewsUrl,\n isUkNewsUrl,\n isUsNewsUrl,\n} from \"runtime/type-guards\";\n/**\n * Type guard which identifies whether the `val` passed in is a URL pointing to a leading\n * worldwide news organization.\n *\n * **Note:** _there is no way to make this all inclusive so we've simply added the most popular\n * new organizations for most countries in western EU, North America, and have added notables such\n * as China, India, Japan, South Korea, and Australia as well._\n */\nexport function isNewsUrl(val: unknown): val is NewsUrls {\n return isAustralianNewsUrl(val) || isBelgiumNewsUrl(val) || isCanadianNewsUrl(val) || isDanishNewsUrl(val) || isDutchNewsUrl(val) || isFrenchNewsUrl(val) || isGermanNewsUrl(val) || isIndianNewsUrl(val) || isItalianNewsUrl(val) || isJapaneseNewsUrl(val) || isMexicanNewsUrl(val) || isNorwegianNewsUrl(val) || isSouthKoreanNewsUrl(val) || isSpanishNewsUrl(val) || isSwissNewsUrl(val) || isTurkishNewsUrl(val) || isUkNewsUrl(val) || isUsNewsUrl(val);\n}\n","import type { ItalianNewsUrls } from \"inferred-types/types\";\nimport { ITALIAN_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = ITALIAN_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Italian news URL\n */\nexport function isItalianNewsUrl(val: unknown): val is ItalianNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { JapaneseNewsUrls } from \"inferred-types/types\";\nimport { JAPANESE_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = JAPANESE_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Japanese news URL\n */\nexport function isJapaneseNewsUrl(val: unknown): val is JapaneseNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { MexicanNewsUrls } from \"inferred-types/types\";\nimport { MEXICAN_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = MEXICAN_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Mexican news URL\n */\nexport function isMexicanNewsUrl(val: unknown): val is MexicanNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { NorwegianNewsUrls } from \"inferred-types/types\";\nimport { NORWEGIAN_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = NORWEGIAN_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Norwegian news URL\n */\nexport function isNorwegianNewsUrl(val: unknown): val is NorwegianNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { SouthKoreanNewsUrls } from \"inferred-types/types\";\nimport { SOUTH_KOREAN_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = SOUTH_KOREAN_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a South Korean news URL\n */\nexport function isSouthKoreanNewsUrl(val: unknown): val is SouthKoreanNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { SpanishNewsUrls } from \"inferred-types/types\";\nimport { SPANISH_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = SPANISH_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Spanish news URL\n */\nexport function isSpanishNewsUrl(val: unknown): val is SpanishNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { SwissNewsUrls } from \"inferred-types/types\";\nimport { SWISS_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = SWISS_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Swiss news URL\n */\nexport function isSwissNewsUrl(val: unknown): val is SwissNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { TurkishNewsUrls } from \"inferred-types/types\";\nimport { TURKISH_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = TURKISH_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a Turkish news URL\n */\nexport function isTurkishNewsUrl(val: unknown): val is TurkishNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { UkNewsUrls } from \"inferred-types/types\";\nimport { UK_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = UK_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a UK news URL\n */\nexport function isUkNewsUrl(val: unknown): val is UkNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { UsNewsUrls } from \"inferred-types/types\";\nimport { US_NEWS } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = US_NEWS.flatMap(i => i.baseUrls);\n\n/**\n * type guard which validates that the passed in `val` is a US news URL\n */\nexport function isUsNewsUrl(val: unknown): val is UsNewsUrls {\n return isString(val) && val.startsWith(\"https://\") && (\n URL.includes(val as any) || URL.some(i => i.startsWith(`${i}/`))\n );\n}\n","import type { UrlsFrom } from \"inferred-types/types\";\nimport { REPO_SOURCE_LOOKUP } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * **isBitbucketUrl**`(val)`\n *\n * Type guard which validates that the value passed in is a valid BitBucket URL\n */\nexport function isBitbucketUrl<T>(val: T): val is T & UrlsFrom<typeof REPO_SOURCE_LOOKUP[\"bitbucket\"]> {\n const valid = REPO_SOURCE_LOOKUP.bitbucket;\n return isString(val) && valid.some(i =>\n val === i\n || val.startsWith(`${i}/`)\n || val.startsWith(`${i}?`),\n );\n}\n","import type { UrlsFrom } from \"inferred-types/types\";\nimport { REPO_SOURCE_LOOKUP } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * **isCodeCommitUrl**`(val)`\n *\n * Type guard which validates that the value passed in is a valid AWS Code Commit URL\n */\nexport function isCodeCommitUrl<T>(val: T): val is T & UrlsFrom<typeof REPO_SOURCE_LOOKUP[\"codecommit\"]> {\n const valid = REPO_SOURCE_LOOKUP.codecommit;\n return isString(val) && valid.some(i =>\n val === i\n || val.startsWith(`${i}/`)\n || val.startsWith(`${i}?`),\n );\n}\n","import type {\n GithubOrgUrl,\n GithubRepoIssuesListUrl,\n GithubRepoIssueUrl,\n GithubRepoProjectsUrl,\n GithubRepoProjectUrl,\n GithubRepoReleasesUrl,\n GithubRepoReleaseTagUrl,\n GithubRepoUrl,\n GithubUrl,\n} from \"inferred-types/types\";\nimport { isString, stripLeading, stripTrailing } from \"inferred-types/runtime\";\n\n/**\n * **isGithubUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * **Github** URL.\n */\nexport function isGithubUrl(val: unknown): val is GithubUrl {\n const valid = [\n \"https://github.com\",\n \"https://www.github.com\",\n \"https://github.io\",\n ];\n return isString(val) && valid.some(i =>\n val === i\n || val.startsWith(`${i}/`)\n || val.startsWith(`${i}?`),\n );\n}\n\n/**\n * **isGithubOrgUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * **Github** _organization_ URL.\n */\nexport function isGithubOrgUrl<T>(val: T): val is GithubOrgUrl & T {\n return isString(val) && (\n val.startsWith(\"https://github.com/\")\n && stripper(val).length === 2\n );\n}\n\nfunction stripper(s: string) {\n return stripTrailing(\n stripLeading(s, \"https://github.com/\"),\n \"/\",\n );\n}\n\n/**\n * **isGithubRepoUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * **Github** _repo_ URL.\n */\nexport function isGithubRepoUrl<T>(val: T): val is GithubRepoUrl & T {\n return !!(isString(val) && (\n val.startsWith(\"https://github.com/\")\n && stripper(val).split(\"/\").length === 2\n ));\n}\n\n/**\n * **isGithubRepoReleasesUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * URL for the _releases_ of a given _repo_.\n *\n * **Related:** `isGithubRepoReleaseTagUrl`\n */\nexport function isGithubRepoReleasesUrl<T>(val: T): val is GithubRepoReleasesUrl & T {\n return isString(val) && (\n val.startsWith(\"https://github.com/\")\n && val.includes(\"/releases\")\n && stripper(val).split(\"/\").length === 3\n );\n}\n\n/**\n * **isGithubRepoReleaseTagUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * URL for the _releases_ of a given _repo_.\n *\n * **Related:** `isGithubRepoReleasesUrl`\n */\nexport function isGithubRepoReleaseTagUrl<T>(val: T): val is GithubRepoReleaseTagUrl & T {\n return isString(val) && (\n val.startsWith(\"https://github.com/\")\n && val.includes(\"/releases/tag/\")\n && stripper(val).length === 4\n );\n}\n\n/**\n * **isGithubIssuesListUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * URL for the _issues_ of a given _repo_.\n *\n * **Related:** `isGithubIssueUrl`\n */\nexport function isGithubIssuesListUrl<T>(val: T): val is GithubRepoIssuesListUrl & T {\n return isString(val)\n && val.startsWith(\"https://github.com/\")\n && val.includes(\"/issues\");\n}\n\n/**\n * **isGithubIssueUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * URL for the _issues_ of a given _repo_.\n *\n * **Related:** `isGithubIssuesListUrl`\n */\nexport function isGithubIssueUrl<T>(val: T): val is GithubRepoIssueUrl & T {\n return isString(val) && (\n val.startsWith(\"https://github.com/\")\n && val.includes(\"/issues/\")\n );\n}\n\n/**\n * **isGithubProjectsListUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * URL for the _projects_ of a given _repo_.\n *\n * **Related:** `isGithubProjectUrl`\n */\nexport function isGithubProjectsListUrl<T>(val: T): val is GithubRepoProjectsUrl & T {\n return isString(val) && (\n val.startsWith(\"https://github.com/\")\n && (val.includes(\"/projects?\") || val.trim().endsWith(\"/projects\"))\n && stripper(val).split(\"/\").length === 3\n );\n}\n\n/**\n * **isGithubProjectUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * URL for a _specific project_ of a given _repo_.\n *\n * **Related:** `isGithubProjectsListUrl`\n */\nexport function isGithubProjectUrl<T>(val: T): val is GithubRepoProjectUrl & T {\n return isString(val) && (\n val.startsWith(\"https://github.com/\")\n && val.includes(\"/projects/\")\n && stripper(val).split(\"/\").length === 4\n );\n}\n\n/**\n * **isGithubReleasesListUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * URL for the _Releases_ of a given _repo_.\n *\n * **Related:** `isGithubReleaseTagUrl`\n */\nexport function isGithubReleasesListUrl<T>(val: T): val is GithubRepoReleasesUrl & T {\n return isString(val) && (\n val.startsWith(\"https://github.com/\")\n && (val.includes(\"/releases?\") || val.trim().endsWith(\"/releases\"))\n && stripper(val).split(\"/\").length === 3\n );\n}\n\n/**\n * **isGithubReleaseTagUrl**`(val)`\n *\n * Type guard which validates that the passed in value is a valid\n * URL for a _specific release_ of a given _repo_.\n *\n * **Related:** `isGithubReleasesListUrl`\n */\nexport function isGithubReleaseTagUrl<T>(val: T): val is GithubRepoProjectUrl & T {\n return isString(val) && (\n val.startsWith(\"https://github.com/\")\n && val.includes(\"/releases/tag/\")\n && stripper(val).split(\"/\").length === 5\n );\n}\n","import type { RepoUrls } from \"inferred-types/types\";\nimport { isBitbucketUrl, isCodeCommitUrl, isGithubUrl } from \"runtime/type-guards\";\n\n/**\n * **isRepoUrl**`(val)`\n *\n * Type guard which validates that the value passed in is a valid Repo URL\n */\nexport function isRepoUrl(val: unknown): val is RepoUrls {\n return isGithubUrl(val) || isBitbucketUrl(val) || isCodeCommitUrl(val);\n}\n","import type {\n RepoSource,\n SemanticVersion,\n} from \"inferred-types/types\";\nimport { REPO_SOURCES } from \"inferred-types/constants\";\nimport { isString, stripLeading } from \"inferred-types/runtime\";\n\n/**\n * **isRepoSource**`(val)`\n *\n * Type guard which validates whether the value passed in is a\n * `RepoSource`.\n */\nexport function isRepoSource<T>(v: T): v is T & RepoSource {\n return isString(v) && REPO_SOURCES.includes(v as any);\n}\n\n/**\n * **isSemanticVersion**`(val,[allowPrefix]=false)`\n *\n * Type guard which validates whether the value passed in is a\n * semantic version number.\n *\n * - the optional `allowPrefix` parameter allows for a lowercase \"v\"\n * to be prefixed to the version so that values like `v1.0.12` and\n * `v 1.0.12` are allowed.\n * - by default the `allowPrefix` option is set to false\n */\nexport function isSemanticVersion<T, P extends boolean>(v: T, allowPrefix: P = false as P): v is T & SemanticVersion<P> {\n return (\n isString(v)\n && v.split(\".\").length === 3\n && !Number.isNaN(Number(v.split(\".\")[1]))\n && !Number.isNaN(Number(v.split(\".\")[2]))\n && (\n !Number.isNaN(Number(v.split(\".\")[0]))\n || (\n allowPrefix && !Number.isNaN(Number(stripLeading(v.split(\".\")[0], \"v\").trim()))\n )\n )\n );\n}\n","import type {\n AmazonUrl,\n AppleUrl,\n BestBuyUrl,\n CostCoUrl,\n CvsUrl,\n DellUrl,\n EbayUrl,\n EtsyUrl,\n HandMUrl,\n HomeDepotUrl,\n IkeaUrl,\n KrogerUrl,\n LowesUrl,\n MacysUrl,\n NikeUrl,\n RetailUrl,\n TargetUrl,\n WalgreensUrl,\n WalmartUrl,\n WayFairUrl,\n WholeFoodsUrl,\n ZaraUrl,\n} from \"inferred-types/types\";\nimport {\n AMAZON_DNS,\n APPLE_DNS,\n BEST_BUY_DNS,\n COSTCO_DNS,\n CVS_DNS,\n DELL_DNS,\n EBAY_DNS,\n ETSY_DNS,\n HM_DNS,\n HOME_DEPOT_DNS,\n KROGER_DNS,\n MACYS_DNS,\n NIKE_DNS,\n TARGET_DNS,\n WALGREENS_DNS,\n WALMART_DNS,\n WAYFAIR_DNS,\n WHOLE_FOODS_DNS,\n ZARA_DNS,\n} from \"inferred-types/constants\";\nimport { isString } from \"runtime/type-guards\";\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Whole Food Markets**.\n */\nexport function isWholeFoodsUrl(val: unknown): val is WholeFoodsUrl {\n return isString(val) && WHOLE_FOODS_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **CVS** pharmacy.\n */\nexport function isCvsUrl(val: unknown): val is CvsUrl {\n return isString(val) && CVS_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Walgreens** pharmacy.\n */\nexport function isWalgreensUrl(val: unknown): val is WalgreensUrl {\n return isString(val) && WALGREENS_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **CVS** pharmacy.\n */\nexport function isKrogersUrl(val: unknown): val is KrogerUrl {\n return isString(val) && KROGER_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **CVS** pharmacy.\n */\nexport function isZaraUrl(val: unknown): val is ZaraUrl {\n return isString(val) && ZARA_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **H&M** retailer.\n */\nexport function isHmUrl(val: unknown): val is HandMUrl {\n return isString(val) && HM_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Dell** retailer.\n */\nexport function isDellUrl(val: unknown): val is DellUrl {\n return isString(val) && DELL_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Ikea** retailer.\n */\nexport function isIkeaUrl(val: unknown): val is IkeaUrl {\n return isString(val) && KROGER_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Lowes** retailer.\n */\nexport function isLowesUrl(val: unknown): val is LowesUrl {\n return isString(val) && KROGER_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Macy's** retailer.\n */\nexport function isNikeUrl(val: unknown): val is NikeUrl {\n return isString(val) && NIKE_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Macy's** retailer.\n */\nexport function isWayfairUrl(val: unknown): val is WayFairUrl {\n return isString(val) && WAYFAIR_DNS.some(i => val.startsWith(`https://${i}`));\n}\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Macy's** retailer.\n */\nexport function isBestBuyUrl(val: unknown): val is BestBuyUrl {\n return isString(val) && BEST_BUY_DNS.some(i => val.startsWith(`https://${i}`));\n}\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Macy's** retailer.\n */\nexport function isCostCoUrl(val: unknown): val is CostCoUrl {\n return isString(val) && COSTCO_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Macy's** retailer.\n */\nexport function isEtsyUrl(val: unknown): val is EtsyUrl {\n return isString(val) && ETSY_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Macy's** retailer.\n */\nexport function isTargetUrl(val: unknown): val is TargetUrl {\n return isString(val) && TARGET_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Macy's** retailer.\n */\nexport function isEbayUrl(val: unknown): val is EbayUrl {\n return isString(val) && EBAY_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for the **Home Depot** retailer.\n */\nexport function isHomeDepotUrl(val: unknown): val is HomeDepotUrl {\n return isString(val) && HOME_DEPOT_DNS.some(i => val.startsWith(`https://${i}`));\n}\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for the **Macy's** retailer.\n */\nexport function isMacysUrl(val: unknown): val is MacysUrl {\n return isString(val) && MACYS_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Apple**.\n */\nexport function isAppleUrl(val: unknown): val is AppleUrl {\n return isString(val) && APPLE_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Walmart**.\n */\nexport function isWalmartUrl(val: unknown): val is WalmartUrl {\n return isString(val) && WALMART_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which validates that the `val` passed in is a valid URL\n * for **Walmart**.\n */\nexport function isAmazonUrl(val: unknown): val is AmazonUrl {\n return isString(val) && AMAZON_DNS.some(i => val.startsWith(`https://${i}`));\n}\n\n/**\n * type guard which check if the passed in value is a Url for one\n * of the top retailers in the world\n */\nexport function isRetailUrl(val: unknown): val is RetailUrl {\n return isAmazonUrl(val) || isWalgreensUrl(val) || isAppleUrl(val) || isMacysUrl(val) || isEbayUrl(val) || isHomeDepotUrl(val) || isTargetUrl(val) || isEtsyUrl(val) || isCostCoUrl(val) || isBestBuyUrl(val) || isWayfairUrl(val) || isNikeUrl(val) || isLowesUrl(val) || isIkeaUrl(val) || isDellUrl(val) || isHmUrl(val) || isZaraUrl(val) || isKrogersUrl(val) || isWalgreensUrl(val) || isCvsUrl(val) || isWholeFoodsUrl(val);\n}\n","import type { SocialMediaUrl } from \"inferred-types/types\";\nimport { SOCIAL_MEDIA } from \"inferred-types/constants\";\nimport { isString } from \"inferred-types/runtime\";\n\nconst URL = SOCIAL_MEDIA.flatMap(i => i.baseUrls);\nconst PROFILE = SOCIAL_MEDIA.map(i => i.profileUrl);\n\n/**\n * type guard which validates that `val` is a social media URL.\n *\n * **Related:** `isSocialMediaProfileUrl`\n */\nexport function isSocialMediaUrl(val: unknown): val is SocialMediaUrl {\n return isString(val) && URL.some(i => val.startsWith(i));\n}\n\n/**\n * type guard which validates that `val` is a user profile URL on a social\n * media platform.\n *\n * **Related:** `isSocialMediaUrl`\n */\nexport function isSocialMediaProfileUrl(val: unknown): val is SocialMediaUrl {\n return isString(val) && PROFILE.some(i => i.startsWith(`${i}`));\n}\n","import type {\n YouTubeCreatorUrl,\n YouTubeFeedType,\n YouTubeFeedUrl,\n YouTubePlaylistUrl,\n YouTubeShareUrl,\n YouTubeUrl,\n YouTubeVideosInPlaylist,\n} from \"inferred-types/types\";\nimport { hasUrlQueryParameter, isString, isUndefined } from \"inferred-types/runtime\";\n\n/**\n * **isYouTubeUrl**`(val)`\n *\n * Type guard which checks whether the passed in value is a valid\n * YouTube URL.\n */\nexport function isYouTubeUrl<T>(val: T): val is T & YouTubeUrl {\n return isString(val) && (\n val.startsWith(\"https://www.youtube.com\")\n || val.startsWith(\"https://youtube.com\")\n || val.startsWith(\"https://youtu.be\")\n );\n}\n\n/**\n * **isYouTubeShareUrl**`(val)`\n *\n * Type guard which checks whether the passed in value is a URL\n * from YouTube's _URL shortening_ site `https://youtu.be`.\n */\nexport function isYouTubeShareUrl<T>(val: T): val is T & YouTubeShareUrl {\n return isString(val) && val.startsWith(`https://youtu.be`);\n}\n\n/**\n * **isYouTubeVideoUrl**`(val)`\n *\n * Type guard which checks whether the passed in value is a valid\n * YouTube URL _which plays video_.\n */\nexport function isYouTubeVideoUrl<T>(val: T): val is T & YouTubeUrl {\n return isString(val) && (\n val.startsWith(\"https://www.youtube.com\")\n || val.startsWith(\"https://youtube.com\")\n || val.startsWith(\"https://youtu.be\")\n );\n}\n\n/**\n * **isYouTubePlaylistUrl**`(val)`\n *\n * Type guard which checks whether the passed in value is a valid\n * YouTube URL which points to a \"playlist\" on the platform.\n */\nexport function isYouTubePlaylistUrl<T>(val: T): val is T & YouTubePlaylistUrl {\n return isString(val) && (\n val === `https://www.youtube.com/feed/playlists`\n || val === `https://youtube.com/feed/playlists`\n || val === `https://www.youtube.com/channel/playlists`\n || val === `https://youtube.com/channel/playlists`\n || (val.startsWith(`https://www.youtube.com/@`) && val.endsWith(`/playlists`))\n || (val.startsWith(`https://youtube.com/@`) && val.endsWith(`/playlists`))\n );\n}\n\n/**\n * maps the \"feed type\" to a URL path\n */\nfunction feed_map<T extends YouTubeFeedType | undefined>(type: T): string {\n return isUndefined(type)\n ? `/feed`\n : type === \"liked\"\n ? `/playlist?list=LL`\n : [\"history\", \"playlists\", \"trending\", \"subscriptions\"].includes(type)\n ? `/feed/${type}`\n : `/feed/`;\n}\n\n/**\n * **isYouTubeFeedUrl**`(val,[kind])**\n *\n * Type guard which checks whether the passed in value is a valid\n * YouTube URL which responds with \"feed\" content. This is content\n * which is available to a logged in user and helps them see lists\n * of videos related to their settings.\n *\n * By default any \"feed\" URL is matched but you can narrow that down\n * to a specific feed type by specifying the `kind` variable.\n */\nexport function isYouTubeFeedUrl<\n T,\n U extends YouTubeFeedType = YouTubeFeedType,\n>(val: T, type?: U): val is T & YouTubeFeedUrl<U> {\n return isString(val) && (\n val.startsWith(`https://www.youtube.com${feed_map(type)}`)\n || val.startsWith(`https://youtube.com${feed_map(type)}`)\n );\n}\n\n/**\n * **isYouTubeHistoryUrl**`(val,[kind])**\n *\n * Type guard which checks whether the passed in value is a valid\n * YouTube URL which responds with a user's history feed.\n */\nexport function isYouTubeFeedHistoryUrl<T>(val: T): boolean {\n return isString(val) && (\n val.startsWith(`https://www.youtube.com/feed/history`)\n || val.startsWith(`https://youtube.com/feed/history`)\n );\n}\n\n/**\n * **isYouTubePlaylistsUrl**`(val,[kind])**\n *\n * Type guard which checks whether the passed in value is a valid\n * YouTube URL which responds with a user's own playlists page.\n */\nexport function isYouTubePlaylistsUrl<T>(val: T): boolean {\n return isString(val) && (\n val.startsWith(`https://www.youtube.com/feed/playlists`)\n || val.startsWith(`https://youtube.com/feed/playlists`)\n );\n}\n\n/**\n * **isYouTubeTrendingUrl**`(val,[kind])**\n *\n * Type guard which checks whether the passed in value is a valid\n * YouTube URL which responds with a user's own history feed.\n */\nexport function isYouTubeTrendingUrl<T>(val: T): boolean {\n return isString(val) && (\n val.startsWith(`https://www.youtube.com/feed/trending`)\n || val.startsWith(`https://youtube.com/feed/trending`)\n );\n}\n\n/**\n * **isYouTubeSubscriptionsUrl**`(val,[kind])**\n *\n * Type guard which checks whether the passed in value is a valid\n * YouTube URL which responds with a user's own subscriptions feed.\n */\nexport function isYouTubeSubscriptionsUrl<T>(val: T): boolean {\n return isString(val) && (\n val.startsWith(`https://www.youtube.com/feed/subscriptions`)\n || val.startsWith(`https://youtube.com/feed/subscriptions`)\n );\n}\n\nexport function isYouTubeCreatorUrl<T extends string>(url: T): url is T & YouTubeCreatorUrl {\n return isString(url) && (\n url.startsWith(`https://www.youtube.com/@`)\n || url.startsWith(`https://youtube.com/@`)\n || url.startsWith(`https://www.youtube.com/channel/`)\n );\n}\n\nexport function isYouTubeVideosInPlaylist<T>(val: T): val is T & YouTubeVideosInPlaylist {\n return isString(val) && (\n val.startsWith(`https://www.youtube.com/playlist?`)\n || val.startsWith(`https://youtube.com/playlist?`)\n ) && hasUrlQueryParameter(val, \"list\");\n}\n","import type { IsFalsy, Narrowable } from \"inferred-types/types\";\nimport { isFalsy } from \"runtime/type-guards\";\n\n/**\n * **not**`(val)`\n *\n * Returns the inverse of the value's truthy/falsy value.\n */\nexport function not<T extends Narrowable>(\n val: T\n): [IsFalsy<T>] extends [true] ? true : false {\n return (\n !!isFalsy(val)\n ) as [IsFalsy<T>] extends [true] ? true : false;\n}\n","import type { Brand, Scalar } from \"inferred-types/types\";\n\nexport function brand<\n T extends Scalar,\n A extends string\n>(\n val: T,\n _name: A\n): Brand<T, A> {\n return val as Brand<T, A>;\n}\n","import type { FourDigitYear } from \"inferred-types/types\";\n\nexport function fourDigitYear<T extends FourDigitYear<\"strong\">>(year: T): FourDigitYear<T> {\n return year as FourDigitYear<T>;\n}\n","import type { Brand } from \"inferred-types/types\";\n\nexport function integer<T extends number>(num: T): Brand<T, \"Integer\"> {\n return num as Brand<T, \"Integer\">;\n}\n","import type { ThreeDigitMillisecond } from \"inferred-types/types\";\n\nexport function threeDigitMillisecond<T extends ThreeDigitMillisecond<\"strong\">>(Millisecond: T): ThreeDigitMillisecond<T> {\n return Millisecond as ThreeDigitMillisecond<T>;\n}\n","import type { TwoDigitHour } from \"inferred-types/types\";\n\nexport function twoDigitHour<T extends TwoDigitHour<\"strong\">>(hour: T): TwoDigitHour<T> {\n return hour as TwoDigitHour<T>;\n}\n","import type { TwoDigitMinute } from \"inferred-types/types\";\n\nexport function twoDigitMinute<T extends TwoDigitMinute<\"strong\">>(Minute: T): TwoDigitMinute<T> {\n return Minute as TwoDigitMinute<T>;\n}\n","import type { TwoDigitSecond } from \"inferred-types/types\";\n\nexport function twoDigitSecond<T extends TwoDigitSecond<\"strong\">>(Second: T): TwoDigitSecond<T> {\n return Second as TwoDigitSecond<T>;\n}\n","import type { Narrowable, Unbrand } from \"inferred-types/types\";\n\n/**\n * **unbrand**`(val)`\n *\n * This runtime utility _does not_ modify the runtime value at all but it\n * will strip off a \"branded type\" which was added with the `brand()` or\n * `Brand<T,U>` utilities\n */\nexport function unbrand<T extends Narrowable>(val: T): Unbrand<T> {\n return val as Unbrand<T>;\n}\n","import type { NoMatch } from \"inferred-types/types\";\n\n/**\n * Used to indicate that a **take** function was not able to match\n * what it's configured to _take_ at the HEAD of the string being parsed\n * by the Lexer.\n */\nexport const NO_MATCH = \"NO MATCH\" as const satisfies NoMatch;\n","import type {\n Dictionary,\n Immutable,\n Narrowable,\n NarrowObject\n} from \"inferred-types/types\";\nimport { isArray, keysOf } from \"inferred-types/runtime\";\n\n/**\n * **freeze**`(container)`\n *\n * Deeply freezes a container (runtime) while using the `Immutable` utility to\n * deeply disallow mutable operations in the type system.\n */\nexport function freeze<\n T extends NarrowObject<N> | readonly N[],\n N extends Narrowable\n>(obj: T & Dictionary) {\n const output: any = isArray(obj) ? [] : {};\n\n for (const key of keysOf(obj)) {\n const value = obj[key as keyof typeof obj];\n\n output[key] = typeof value === \"object\"\n ? freeze(value as NarrowObject<Narrowable> | readonly Narrowable[])\n : output[key];\n }\n\n Object.freeze(output);\n\n return output as Immutable<T>;\n}\n","import type {\n CssDefinition,\n CssKeyframeTimestamp,\n HandleDoneFn,\n} from \"inferred-types/types\";\n\nimport {\n isDictionary,\n} from \"inferred-types/runtime\";\n\nexport interface KeyframeApi<\n TState extends readonly [CssKeyframeTimestamp, CssDefinition][] | [],\n> {\n state: Readonly<TState>;\n add: <\n TStage extends CssKeyframeTimestamp,\n TDefn extends CssDefinition,\n >(\n stage: TStage,\n defn: TDefn\n ) => KeyframeApi<[...TState, [TStage, TDefn]]>;\n done: () => Readonly<TState>;\n}\n\nfunction api<\n TState extends readonly [CssKeyframeTimestamp, CssDefinition][] | [],\n>(state: TState = [] as TState): KeyframeApi<TState> {\n return {\n state,\n\n add: <\n TStage extends CssKeyframeTimestamp,\n TDefn extends CssDefinition,\n >(stage: TStage,\n defn: TDefn,\n ) => {\n return api(\n [...state, [stage, defn]],\n );\n },\n done() {\n return state;\n },\n };\n}\n\n// Simple local CSS conversion to avoid complex type recursion\ntype SimpleCssProps<T> = T extends { opacity: infer O; transform: infer Tr }\n ? `opacity: ${O extends string ? O : never}; transform: ${Tr extends string ? Tr : never}`\n : T extends Record<string, string>\n ? string\n : never;\n\ntype FrameToCSSString<T extends readonly [CssKeyframeTimestamp, CssDefinition][], TName extends string>\n = T extends readonly [\n [infer Stage1 extends CssKeyframeTimestamp, infer Defn1 extends CssDefinition],\n [infer Stage2 extends CssKeyframeTimestamp, infer Defn2 extends CssDefinition]\n ]\n ? `@keyframes ${TName} {\\n ${Stage1} { ${SimpleCssProps<Defn1>} }\\n ${Stage2} { ${SimpleCssProps<Defn2>} }\\n}`\n : string;\n\nexport type CssKeyframeCallback = (cb: KeyframeApi<[]>) => unknown;\n\nfunction hasDone<T>(val: T): val is KeyframeApi<any[]> & T {\n return isDictionary(val) && \"done\" in val && typeof val.done === \"function\";\n}\n\nfunction frameToCss<T extends readonly [CssKeyframeTimestamp, CssDefinition][]>(\n frames: T,\n) {\n const tuples: [CssKeyframeTimestamp, string][] = frames.map(([ts, defn]) => [\n ts,\n Object.keys(defn).reduce(\n (acc, i) => [\n ...acc,\n `${i}: ${String(defn[i as keyof typeof defn])}`,\n ],\n [] as string[],\n ).join(\"; \"),\n ]);\n\n return tuples.map(([ts, defn]) => ` ${ts} { ${defn} }`).join(\"\\n\");\n}\n\nexport function createCssKeyframe<\n TName extends string,\n TKeyframes extends CssKeyframeCallback,\n>(\n name: TName,\n keyframes: TKeyframes\n) {\n /** api surface */\n const surface = api([]);\n /** return from user callback */\n const rtn = keyframes(surface);\n\n const frames = (\n hasDone(rtn) ? rtn.done() : rtn\n ) as unknown as HandleDoneFn<ReturnType<TKeyframes>>;\n\n return {\n name,\n keyframes: frames,\n css: `@keyframes ${name} {\\n${frameToCss(frames)}\\n}`,\n } as {\n name: TName;\n keyframes: typeof frames;\n css: FrameToCSSString<typeof frames, TName>;\n };\n}\n","import type { CssDefinition } from \"inferred-types/types\";\nimport {\n createFnWithProps,\n ensureTrailing,\n isDefined,\n isString,\n isUndefined\n} from \"inferred-types/runtime\";\n\nexport interface CssFromDefnOption {\n indent?: string;\n inline?: boolean;\n}\n\n/**\n * **cssFromDefinition**`(defn, [opt])`\n *\n * converts a `CssDefinition` into a CSS string\n */\nexport function cssFromDefinition<\n T extends CssDefinition | undefined,\n O extends CssFromDefnOption,\n>(\n defn: T,\n opt?: O,\n) {\n if (isUndefined(defn)) {\n return \"\";\n }\n\n const inline = isDefined(opt?.inline) ? opt.inline : true;\n const indent = isString(opt?.indent) ? opt.indent : \"\";\n\n const nextDefn = inline ? \" \" : \"\\n\";\n return Object.keys(defn)\n .map(\n (key) => {\n const val = ensureTrailing(\n (defn as any)[key] as string,\n \";\",\n );\n\n return `${indent}${key}: ${val}`;\n },\n )\n .join(nextDefn);\n}\n\nexport function defineCss<T extends CssDefinition>(defn: T) {\n const fn = <S extends string>(selector?: S) => {\n return selector\n ? `${selector} {\\n${cssFromDefinition(defn, { indent: \" \" })}}\\n`\n : cssFromDefinition(defn);\n };\n return createFnWithProps(\n fn,\n { defn },\n ) as unknown as { defn: T } & (<S extends string>(selector?: S) => string);\n}\n","import type { DateLike } from \"inferred-types/types\";\nimport {\n asString,\n err,\n isError,\n isNumber\n} from \"inferred-types/runtime\";\n\nimport { parseIsoDate } from \"runtime/datetime\";\nimport {\n isDate,\n isEpochInMilliseconds,\n isEpochInSeconds,\n isFourDigitYear,\n isIsoDate,\n isIsoDateTime,\n isIsoExplicitDate,\n isIsoImplicitDate,\n isIsoYear,\n isLuxonDate,\n isMoment,\n isTemporalDate,\n} from \"runtime/type-guards\";\n\n/**\n * **asDate**`(input)`\n *\n * Converts common date representations to a Javascript Date object.\n *\n * - the goal is to have **Date** information but not **Time** information\n * - use `asDateTime()` if you wish to preserve time info\n * - all time information -- if present when passed in -- should be set to\n * the stroke of midnight and be in UTC timezone\n */\nexport function asDate<\n T extends DateLike\n>(input: T): Date {\n if (input === undefined) {\n throw err(\n \"invalid-date\",\n `The asDate() function was passed an undefined value!`\n );\n }\n\n try {\n // DEBUG: Log input and all type guard results for string inputs\n // Debug code removed\n // Always return a Date at 00:00:00.000 UTC\n // Strips time, preserves local calendar day (no timezone shift)\n const toUtcMidnight = (d: Date) => {\n const utc = new Date(Date.UTC(\n d.getUTCFullYear(),\n d.getUTCMonth(),\n d.getUTCDate(),\n 0,\n 0,\n 0,\n 0\n ));\n return utc;\n };\n\n if (isDate(input)) {\n // Clone to avoid mutating input\n return toUtcMidnight(new Date(input.getTime()));\n }\n\n if (isMoment(input)) {\n return toUtcMidnight(input.toDate());\n }\n\n if (isLuxonDate(input)) {\n return toUtcMidnight(input.toJSDate());\n }\n\n if (isDate(input)) {\n return toUtcMidnight(input);\n }\n\n if (isTemporalDate(input)) {\n // Temporal.PlainDate to ISO string, then parse as UTC\n return toUtcMidnight(new Date(input.toString()));\n }\n\n if (isIsoDateTime(input)) {\n // e.g. 2023-06-16T12:34:56Z or 2023-06-16T12:34:56+02:00\n const parsed = parseIsoDate(input);\n if (isError(parsed)) {\n throw parsed;\n }\n // Use only the date components, ignore time\n const year = Number(parsed.year);\n const month = Number(parsed.month);\n const day = Number(parsed.date);\n return new Date(Date.UTC(year, month - 1, day, 0, 0, 0, 0));\n }\n\n // Check for 4-digit year string (ISO standard)\n if (isFourDigitYear(input)) {\n const year = Number(input);\n return new Date(Date.UTC(year, 0, 1, 0, 0, 0, 0));\n }\n\n // Check if numeric input is a 4-digit year (between 1000 and 9999)\n if (isNumber(input) && input >= 1000 && input <= 9999 && Math.floor(input) === input) {\n // Treat as a year value\n return new Date(Date.UTC(input, 0, 1, 0, 0, 0, 0));\n }\n\n if (isNumber(input) && isEpochInMilliseconds(input)) {\n return toUtcMidnight(new Date(input));\n }\n\n if (isNumber(input) && isEpochInSeconds(input)) {\n return toUtcMidnight(new Date(input * 1000));\n }\n\n if (isIsoYear(input)) {\n // e.g. 2023\n const parsed = parseIsoDate(input);\n if (isError(parsed)) {\n throw parsed;\n }\n const year = Number(parsed.year);\n return new Date(Date.UTC(year, 0, 1, 0, 0, 0, 0));\n }\n\n if (isIsoExplicitDate(input)) {\n // e.g. 2023-06-16\n const parsed = parseIsoDate(input);\n if (isError(parsed)) {\n throw parsed;\n }\n const year = Number(parsed.year);\n const month = Number(parsed.month);\n const day = Number(parsed.date);\n return new Date(Date.UTC(year, month - 1, day, 0, 0, 0, 0));\n }\n\n if (isIsoImplicitDate(input)) {\n // e.g. 20230616\n const parsed = parseIsoDate(input);\n if (isError(parsed)) {\n throw parsed;\n }\n const year = Number(parsed.year);\n const month = Number(parsed.month);\n const day = Number(parsed.date);\n\n return new Date(Date.UTC(year, month - 1, day, 0, 0, 0, 0));\n }\n\n if (isIsoDate(input)) {\n // e.g. This might be for other ISO date formats\n const parsed = parseIsoDate(input);\n if (isError(parsed)) {\n throw parsed;\n }\n const year = Number(parsed.year);\n const month = Number(parsed.month);\n const day = Number(parsed.date);\n return new Date(Date.UTC(year, month - 1, day, 0, 0, 0, 0));\n }\n }\n catch (e) {\n if (isError(e)) {\n throw err(\n `parse-date/as-date`,\n `The input passed to asDate(${asString(input)}) function ran into an error while trying to convert this input into a Javascript date object. Underlying error message was: ${e.message}`\n );\n }\n else {\n throw err(\n `parse-date/as-date`,\n `The input passed to asDate(${asString(input)}) function ran into an error while trying to convert this input into a Javascript date object. Underlying error message was: ${asString(e)}`\n );\n }\n }\n\n throw err(`invalid/date`, `The date-like value you passed to 'asDate(${asString(input)})' function was unable to be converted to a Javascript Date object!`, { date: input });\n}\n","import type {\n DateLike,\n DateMeta,\n DatePlus,\n IanaZone,\n IsDayJs,\n IsJsDate,\n IsLuxonDateTime,\n IsMoment,\n IsoDate,\n IsoDateTime,\n IsoMonthDate,\n IsoYear,\n IsoYearMonth,\n TimezoneOffset\n} from \"inferred-types/types\";\nimport { parseIsoDate } from \"runtime/datetime\";\nimport {\n isDate,\n isDayJs,\n isEpochInMilliseconds,\n isEpochInSeconds,\n isIanaTimezone,\n isIsoDate,\n isIsoDateTime,\n isIsoYear,\n isIsoYearMonth,\n isLuxonDate,\n isMoment,\n isNumber,\n isTemporalDate,\n isTimezoneOffset\n} from \"runtime/type-guards\";\n\n/* eslint-disable node/prefer-global/process */\n\nconst getLocalIanaZone = (() => {\n// compute once, memoise\n const tz = (process.env.TZ && isIanaTimezone(process.env.TZ)\n ? process.env.TZ\n : Intl.DateTimeFormat().resolvedOptions().timeZone) ?? \"UTC\";\n\n return () => tz as IanaZone;\n})();\n\nfunction offsetMinutesToString(mins: number): TimezoneOffset {\n const sign = mins >= 0 ? \"+\" : \"-\";\n const abs = Math.abs(mins);\n const hh = String(Math.floor(abs / 60)).padStart(2, \"0\");\n const mm = String(abs % 60).padStart(2, \"0\");\n return `${sign}${hh}:${mm}` as TimezoneOffset;\n}\n\n/****************************************************************\n * the main function\n ****************************************************************/\n\ntype Returns<T extends DateLike> = T extends IsoYear\n ? DatePlus<\"iso-year\", TimezoneOffset<\"Z\">, `${T}-${number}-${number}T${string}` & IsoDateTime>\n : T extends IsoYearMonth\n ? DateMeta extends Error\n ? DateMeta\n : DatePlus<\n \"iso-year-month\",\n TimezoneOffset <\"Z\">,\n IsoDateTime\n >\n : T extends IsoMonthDate\n ? DatePlus<\"iso-year-independent\", TimezoneOffset <\"Z\">, `${number}`>\n : T extends IsoDateTime\n ? DatePlus<\"iso-datetime\">\n : T extends IsoDate<\"normal\">\n ? DatePlus<\"iso-date\">\n : T extends number\n ? DatePlus<\"epoch\" | \"epoch-milliseconds\">\n : IsDayJs<T> extends true\n ? DatePlus<\"day.js\">\n : IsMoment<T> extends true\n ? DatePlus<\n \"moment\",\n \"offset\" extends keyof T\n ? T[\"offset\"] extends TimezoneOffset\n ? TimezoneOffset<T[\"offset\"]>\n : null\n : null\n >\n : IsLuxonDateTime<T> extends true\n ? DatePlus<\"luxon\">\n : IsJsDate<T> extends true\n ? DatePlus<\"date\", null>\n : DatePlus\n ;\n\n/**\n * **asDateTime**`(input)`\n *\n * Converts common date representations to a Javascript Date object.\n *\n * - the goal is to have both **Date** and **Time** information preserved\n * - use `asDate()` if you wish to only preserve date information\n * - this will return the `DatePlus` interface which is just the `Date`\n * interface with a few extra properties to try and preserve the source\n * timezone where that's feasible\n */\nexport function asDateTime<T extends DateLike>(input: T) {\n // ——— Moment ————————————————————————————————————————————————\n if (isMoment(input)) {\n const d = new Date(input.toISOString()) as DatePlus;\n const tz: TimezoneOffset<\"branded\"> | null = isTimezoneOffset(offsetMinutesToString(input.parseZone().utcOffset()))\n ? offsetMinutesToString(input.parseZone().utcOffset()) as TimezoneOffset<\"branded\">\n : null;\n\n d.offset = tz;\n d.tz = isIanaTimezone((input as any)._z?.name) ? (input as any)._z.name : null;\n\n d.source = \"moment\";\n // Use parseZone().toISOString(true) to preserve the original timezone from input\n // But if it's UTC, use the standard Z format\n const sourceIso = input.parseZone().toISOString(true);\n d.sourceIso = sourceIso.endsWith(\"+00:00\")\n ? sourceIso.replace(\"+00:00\", \"Z\") as IsoDateTime\n : sourceIso as IsoDateTime;\n return d as Returns<T>;\n }\n\n // ——— Luxon ————————————————————————————————————————————————\n if (isLuxonDate(input)) {\n const d = input.toJSDate() as DatePlus;\n\n // Luxon gives offset (minutes) + zone name\n d.offset = input.isOffsetFixed ? offsetMinutesToString((input as any).offset) : null;\n d.tz = isIanaTimezone(input.zoneName) ? input.zoneName : null;\n\n d.source = \"luxon\";\n // For UTC Luxon objects, preserve the Z format\n d.sourceIso = input.zoneName === \"UTC\"\n ? (input as any).toUTC().toISO() as IsoDateTime\n : input.toISO() as IsoDateTime;\n return d as Returns<T>;\n }\n\n // ——— Temporal ————————————————————————————————————————————————\n if (isTemporalDate(input)) {\n // Accept both Temporal.ZonedDateTime and Temporal.Instant\n const zdt = \"epochNanoseconds\" in input\n ? (input as any).toZonedDateTimeISO(getLocalIanaZone())\n : (input as any);\n\n const d = new Date(zdt.epochMilliseconds) as DatePlus<\"temporal\">;\n\n d.offset = isTimezoneOffset(zdt.offset) ? zdt.offset : null;\n d.tz = isIanaTimezone(zdt.timeZone.id) ? zdt.timeZone.id : null;\n d.source = \"temporal\";\n d.sourceIso = zdt.toString() as IsoDateTime; // keeps both offset + tz\n return d as Returns<T>;\n }\n\n // ——— Day.js ————————————————————————————————————————————————\n if (isDayJs(input)) {\n const d = input.toDate() as DatePlus;\n d.offset = null;\n d.tz = null;\n d.source = \"day.js\";\n d.sourceIso = input.toISOString() as IsoDateTime;\n return d as Returns<T>;\n }\n\n // ——— ISO strings ————————————————————————————————————————————\n if (isIsoDateTime(input)) {\n const meta = parseIsoDate(input) as unknown as DateMeta;\n const d = new Date(input) as DatePlus;\n\n d.offset = meta.timezone as TimezoneOffset<\"branded\">;\n d.tz = null; // no zone in bare ISO\n d.source = \"iso-datetime\";\n d.sourceIso = input as IsoDateTime;\n\n return d as Returns<T>;\n }\n\n if (isIsoYearMonth(input)) {\n const meta = parseIsoDate(input) as unknown as DateMeta;\n const d = new Date(`${meta.year}-${meta.month}-01T00:00:00.000Z`) as DatePlus<\"iso-year-month\">;\n\n d.offset = \"Z\" as TimezoneOffset<\"branded\">;\n d.tz = null;\n d.source = \"iso-year-month\";\n d.sourceIso = `${meta.year}-${meta.month}-01T00:00:00.000Z` as IsoDateTime;\n return d as Returns<T>;\n }\n\n if (isIsoYear(input)) {\n const d = new Date(`${input}-01-01T00:00:00.000Z`) as DatePlus<\"iso-year\">;\n\n d.offset = \"Z\" as TimezoneOffset<\"Z\">;\n d.tz = null;\n d.source = \"iso-year\";\n d.sourceIso = `${input}-01-01T00:00:00.000Z` as IsoDateTime;\n return d as Returns<T>;\n }\n\n if (isIsoDate(input)) {\n const meta = parseIsoDate(input) as unknown as DateMeta;\n const d = new Date(`${meta.year}-${meta.month}-${meta.date}T00:00:00.000Z`) as DatePlus;\n\n d.offset = \"Z\" as TimezoneOffset<\"Z\">;\n d.tz = null;\n d.source = `iso-${meta.dateType}`;\n d.sourceIso = `${input}T00:00:00.000Z` as IsoDateTime;\n return d as Returns<T>;\n }\n\n // ——— Epoch numbers ——————————————————————————————————————————\n if (isNumber(input)) {\n if (isEpochInMilliseconds(input)) {\n const d = new Date(input) as DatePlus;\n d.offset = null;\n d.tz = null;\n d.source = \"epoch-milliseconds\";\n d.sourceIso = d.toISOString() as IsoDateTime;\n return d as Returns<T>;\n }\n if (isEpochInSeconds(input)) {\n const d = new Date(input * 1_000) as DatePlus;\n d.offset = null;\n d.tz = null;\n d.source = \"epoch\";\n d.sourceIso = d.toISOString() as IsoDateTime;\n return d as Returns<T>;\n }\n }\n\n // ——— Native Date ————————————————————————————————————————————\n if (isDate(input)) {\n const d = new Date(input.getTime()) as DatePlus<\"date\">;\n d.offset = null;\n d.tz = null;\n d.source = \"date\";\n d.sourceIso = d.toISOString() as IsoDateTime;\n return d as Returns<T>;\n }\n\n return null as never;\n}\n","import type { DateLike } from \"inferred-types/types\";\nimport { asDate } from \"inferred-types/runtime\";\n\nexport function asEpochTimestamp<T extends DateLike>(dt: T): number {\n const d = asDate(dt);\n return Math.floor(d.getTime() / 1000); // seconds\n}\n","import type { AsFourDigitYear, FourDigitYear, Narrowable } from \"inferred-types/types\";\nimport { asNumber, err, isInteger, isNegativeNumber, isNumber, isNumberLike } from \"inferred-types/runtime\";\n\n/**\n * **asFourDigitYear**`(year, [branding])`\n *\n * A type conversion utility which tries to convert `year` into a valid `FourDigitYear` type.\n *\n * - by default the conversion is done but the type returned is _not_ a branded type\n * - to switch this behavior then pass in `true` to the generic `B`\n *\n * If there is no way to convert `year` to a `FourDigitYear` then an Error will be returned.\n */\nexport function asFourDigitYear<const T extends Narrowable, B extends boolean = false>(\n year: T,\n _branded: B = false as B\n): AsFourDigitYear<T> {\n return (\n isNumber(year)\n ? isInteger(year)\n ? year > 9999\n ? err(`year-invalid/too-large`)\n : isNegativeNumber(year)\n ? err(`year-invalid/negative-number`)\n : `${year}`.padStart(4, \"0\")\n : err(`year-invalid/not-integer`)\n : isNumberLike(year)\n ? asFourDigitYear(asNumber(year) as number) as FourDigitYear\n : err(`year-invalid/wrong-type`)\n ) as AsFourDigitYear<T>;\n}\n","import type { DateLike, IsoDate } from \"inferred-types/types\";\nimport { Never } from \"inferred-types/constants\";\nimport {\n err,\n isError,\n isNumber,\n isObject,\n isString,\n parseDateObject,\n parseIsoDate,\n parseNumericDate\n} from \"inferred-types/runtime\";\n\n/**\n * **asIsoDate**`(input)`\n *\n * Converts common date representations to an ISO 8601 Date string (e.g., \"2024-01-15\").\n *\n * - If the underlying date has a timezone offset then that will be ignored and the year-month-date\n * of the date for the _local time_ will be used.\n */\nexport function asIsoDate<\n T extends DateLike,\n>(input: T): IsoDate | Error {\n try {\n const parsed = isString(input)\n ? parseIsoDate(input)\n : isObject(input)\n ? parseDateObject(input)\n : isNumber(input)\n ? parseNumericDate(input)\n : err(\n `parse/as-iso-date`,\n `An invalid type was passed to asIsoDate(input)!`,\n { type: typeof input, input }\n );\n\n if (isError(parsed)) {\n return parsed;\n }\n\n return (\n parsed.dateType === \"date\" || parsed.dateType === \"datetime\"\n ? `${parsed.year}-${parsed.month}-${parsed.date}`\n : parsed.dateType === \"year\"\n ? parsed.year\n : parsed.dateType === \"year-independent\"\n ? `-${parsed.month}-${parsed.date}`\n : parsed.dateType === \"year-month\"\n ? `--${parsed.year}-${parsed.month}`\n : Never\n ) as IsoDate;\n }\n catch (e) {\n return err(\n `parse/as-iso-date`,\n `An unexpected problem was encountered running asIsoDate: ${e instanceof Error ? e.message : String(e)}`,\n { input, underlying: e }\n );\n }\n}\n","import type { DateLike, IsoDateTime } from \"inferred-types/types\";\nimport { asDateTime } from \"inferred-types/runtime\";\n\nexport function asIsoDateTime<T extends DateLike>(dt: T): string {\n const d = asDateTime(dt);\n return d.toISOString() as IsoDateTime;\n}\n","import type { AsTwoDigitMonth, DateLike } from \"inferred-types/types\";\nimport { asDate, isError, isInteger, parseDateObject } from \"inferred-types/runtime\";\n\n/**\n * **asTwoDigitMonth**`(dateLike)`\n *\n * given any DateLike input, this function returns the **month** in a\n * two digit format appropriate for ISO Date/DateTime strings.\n *\n * **Note:**\n * - if an integer number between 1 and 12 is passed in this\n * will be treated as a numeric month rather than as an epoch\n * timestamp\n */\nexport function asTwoDigitMonth<T extends DateLike>(\n date: T\n) {\n return (\n isInteger(date)\n ? date > 0 && date < 13\n ? `${date}`.padStart(2, \"0\")\n : isError(asDate(date))\n ? asDate(date) // Error\n : isError(parseDateObject(date))\n ? parseDateObject(date) // Error\n : parseDateObject(date).month\n : isError(asDate(date))\n ? asDate(date) // Error\n : isError(parseDateObject(date))\n ? parseDateObject(date) // Error\n : parseDateObject(date).month\n ) as AsTwoDigitMonth<T>;\n}\n","import type { DateLike, DateMeta, IsoDate, IsoDateTime } from \"inferred-types/types\";\nimport { asDate, parseIsoDate, toIsoDateString } from \"runtime/datetime\";\nimport { isError } from \"runtime/type-guards\";\n\nexport function dateObjectToIso(d: DateLike & object) {\n const date: Date = d instanceof Date ? d : asDate(d);\n const iso = date.toISOString() as IsoDateTime;\n const parsed = parseIsoDate(iso);\n\n if (isError(parsed)) {\n return parsed;\n }\n\n const result = toIsoDateString(parsed);\n\n return result as [typeof parsed] extends [Error]\n ? typeof parsed\n : [typeof parsed] extends [DateMeta]\n ? [typeof parsed[\"hasTime\"]] extends [true]\n ? typeof result & IsoDateTime\n : [typeof parsed[\"hasTime\"]] extends [false]\n ? typeof result & IsoDate\n : never\n : never;\n}\n","import type {\n DaysInMonth,\n FourDigitYear,\n MonthAbbrev,\n MonthName,\n TwoDigitMonth\n} from \"inferred-types/types\";\nimport { ISO_DATE_30 } from \"inferred-types/constants\";\nimport {\n asTwoDigitMonth,\n err,\n getMonthNumber,\n isDefined,\n isDoubleLeap,\n isError,\n isLeapYear,\n isTwoDigitMonth\n} from \"inferred-types/runtime\";\n\n/**\n * **daysInMonth**`(month, [year])`\n *\n * Provides the number of days in a given month.\n *\n * - the **month** can be passed in as a fully spelled out month (e.g., \"January\"),\n * an abbreviated month name (e.g., \"Jan\") or a two digit month (e.g., \"01\", \"02\", etc.)\n * - Note: these correspond to the `MonthName`, `MonthAbbrev`, and `TwoDigitMonth`\n * types defined in this library\n * - if a **year** is provided then both leap years and _double_ leap\n * years will be built into the calculation for February\n * - if no year information is available, February will report as having\n * 28 days.\n */\nexport function daysInMonth<\n TMonth extends TwoDigitMonth | MonthName | MonthAbbrev,\n TYear extends FourDigitYear | number | undefined = undefined\n>(\n month: TMonth,\n year: TYear = undefined as TYear\n) {\n const monthNum: number | Error = isTwoDigitMonth(month)\n ? Number(month)\n : getMonthNumber(month) as number | Error;\n\n if (isError(monthNum)) {\n return err(\n \"unknown-month/days-in-month\",\n `The daysInMonth() function was unable to determine the month from the value passed in: ${month}. Remember that if you're using month names or abbreviations they must map to the MonthName and MonthAbbrev types which capitalize the names.`,\n { month, year }\n ) as unknown as DaysInMonth<TMonth, TYear>;\n }\n\n const twoDigitMonth = asTwoDigitMonth(monthNum);\n\n return (\n monthNum === 2\n ? isDefined(year)\n ? isLeapYear(year)\n ? isDoubleLeap(year)\n ? 30\n : 29\n : 28\n : 28\n : ISO_DATE_30.includes(twoDigitMonth as any)\n ? 30\n : 31\n ) as DaysInMonth<TMonth, TYear>;\n}\n","import { asDate } from \"runtime/datetime\";\n\n/**\n * Provides the number of days between two dates.\n *\n * - if the second date is left out, the current date is used\n */\nexport function getDaysBetween<\n A extends number | string | Date | Record<string, any>,\n B extends number | string | Date | Record<string, any>,\n>(a: A, b: B = new Date() as B): number {\n const aDate = asDate(a);\n const bDate = asDate(b);\n if (!aDate || !bDate) {\n throw new Error(`Invalid date passed into getDaysBetween()`);\n }\n\n const aStr = aDate.toISOString().split(\"T\")[0];\n const bStr = bDate.toISOString().split(\"T\")[0];\n\n const dateA = new Date(`${aStr}T00:00:00Z`);\n const dateB = new Date(`${bStr}T00:00:00Z`);\n\n // Calculate the difference in milliseconds and convert to days\n const msInDay = 24 * 60 * 60 * 1000;\n return Math.round(Math.abs((dateB.getTime() - dateA.getTime()) / msInDay));\n}\n","import type { DateLike, GetMonthAbbrev } from \"inferred-types/types\";\nimport { MONTH_ABBR } from \"inferred-types/constants\";\nimport { asDate } from \"inferred-types/runtime\";\n\n/**\n * **getMonthAbbrev**`(date)`\n *\n * Converts any date-like value into a month abbreviation.\n *\n * **Related:** `getMonthName()`, `getMonthNumber()`\n */\nexport function getMonthAbbrev<T extends DateLike>(\n date: T\n): GetMonthAbbrev<T> {\n const d = asDate(date);\n\n return MONTH_ABBR[d.getMonth()] as GetMonthAbbrev<T>;\n}\n","import type { DateLike, GetMonthName } from \"inferred-types/types\";\nimport { MONTH_NAME } from \"inferred-types/constants\";\nimport { asDate } from \"inferred-types/runtime\";\n\n/**\n * **getMonthName**`(date)`\n *\n * Converts any date-like value into a month abbreviation.\n *\n * **Related:** `getMonthAbbrev()`\n */\nexport function getMonthName<T extends DateLike>(date: T): GetMonthName<T> {\n const d = asDate(date);\n\n return MONTH_NAME[d.getMonth()] as GetMonthName<T>;\n}\n","import type {\n DateLike,\n GetMonthNumber,\n MonthAbbrev,\n MonthName\n} from \"inferred-types/types\";\nimport { MONTH_ABBREV_LOOKUP, MONTH_NAME_LOOKUP } from \"inferred-types/constants\";\nimport { parseDate } from \"runtime/datetime\";\nimport { err } from \"runtime/errors\";\nimport { asNumber } from \"runtime/numeric\";\nimport {\n isMonthAbbrev,\n isMonthName,\n isParsedDate\n} from \"runtime/type-guards\";\n\n/**\n * **getMonthNumber**`(date | MonthName | MonthAbbrev)`\n *\n * Get's the a date's numeric index for the **month** being represented\n * (aka., January is 1, etc.).\n *\n * - you can pass in a `DateLike` value _or_ a month name\n * or month abbreviation\n */\nexport function getMonthNumber<\n T extends DateLike | MonthName | MonthAbbrev\n>(date: T): GetMonthNumber<T> {\n if (isMonthName(date)) {\n return MONTH_NAME_LOOKUP[date].num as GetMonthNumber<T>;\n }\n else if (isMonthAbbrev(date)) {\n return MONTH_ABBREV_LOOKUP[date].num as GetMonthNumber<T>;\n }\n else {\n const d = parseDate(date);\n\n if (isParsedDate(d)) {\n if (!d.month) {\n return err(\n `month-number/missing`,\n `The type passed into GetMonthNumber<T> was successfully parsed but there is no month information. This typically means that an IsoYear was passed in.`,\n\n ) as GetMonthNumber<T>;\n }\n return asNumber(d.month) as GetMonthNumber<T>;\n }\n\n return err(`invalid-date`, `Unable to parse the date when calling getMonthNumber()`) as unknown as GetMonthNumber<T>;\n }\n}\n","import type { DateLike, GetSeason, Hemisphere } from \"inferred-types/types\";\nimport { MONTH_TO_SEASON_LOOKUP } from \"inferred-types/constants\";\nimport { getMonthAbbrev } from \"inferred-types/runtime\";\n\n/**\n * **getSeason**`(date, [hemisphere])`\n *\n * Gets the season of the passed in `date`.\n */\nexport function getSeason<\n T extends DateLike,\n H extends Hemisphere\n>(\n date: T,\n hemisphere: H = \"northern\" as H\n): GetSeason<T, H> {\n const month = getMonthAbbrev(date);\n\n return MONTH_TO_SEASON_LOOKUP[hemisphere][month] as GetSeason<T, H>;\n}\n","import type { IsoDate } from \"inferred-types/types\";\n\n/**\n * Returns the current date as an\n * [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date string.\n */\nexport function getToday(now: Date = new Date()): IsoDate {\n return now.toISOString().split(\"T\")[0] as IsoDate;\n}\n","import type { IsoDate } from \"inferred-types/types\";\n\n/**\n * **getTomorrow**`(now?)`\n *\n * Returns an ISO 8601 date string for tomorrow.\n * - Optional `now` parameter for testing purposes\n */\nexport function getTomorrow(now: Date = new Date()): IsoDate {\n const tomorrow = new Date(now);\n tomorrow.setDate(tomorrow.getDate() + 1);\n return tomorrow.toISOString().split(\"T\")[0] as IsoDate;\n}\n","import {\n asDate,\n} from \"inferred-types/runtime\";\n\n/**\n * Provides the ISO week number of a given date.\n *\n * - if no date is provided, the current date is used\n * - an ISO week always starts on Monday\n * - numerically an ISO week will be between 1 and 53\n * - 52 is max for most years\n * - those years which start on a Thursday or\n * years with a leap day and start on a Wednesday get 53\n */\nexport function getWeekNumber<\n T extends string | Record<string, any> | Date,\n>(date: T = new Date() as T): number {\n const d = asDate(date);\n\n if (!d) {\n throw new Error(`invalid date passed into getWeekNumber${String(date)}`);\n }\n\n // Copy date so we don't mutate input\n const dateCopy = new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()));\n\n // Set to nearest Thursday: current date + 4 - current day number (Monday=1, Sunday=7)\n // ISO 8601: week starts on Monday, week 1 is the week with the first Thursday\n const dayNum = dateCopy.getUTCDay() || 7; // Sunday is 0 in JS, make it 7\n dateCopy.setUTCDate(dateCopy.getUTCDate() + 4 - dayNum);\n\n // Get year of the adjusted date (the year this Thursday belongs to)\n const yearOfThursday = dateCopy.getUTCFullYear();\n\n // Get first Thursday of that year\n const jan1 = new Date(Date.UTC(yearOfThursday, 0, 1));\n const jan1DayNum = jan1.getUTCDay() || 7;\n const firstThursday = new Date(jan1);\n firstThursday.setUTCDate(jan1.getUTCDate() + ((4 - jan1DayNum + 7) % 7));\n\n // Calculate week number: number of weeks between this Thursday and the first Thursday\n const weekNo = Math.floor((dateCopy.getTime() - firstThursday.getTime()) / (7 * 24 * 60 * 60 * 1000)) + 1;\n\n return weekNo;\n}\n","import type { DateLike, GetYear } from \"inferred-types/types\";\nimport { asDate } from \"inferred-types/runtime\";\n\nexport function getYear<T extends DateLike>(date: T) {\n const d = asDate(date);\n\n return d.getFullYear() as GetYear<T>;\n}\n","import type { IsoDate } from \"inferred-types/types\";\n\n/**\n * **getYesterday**`(now?)`\n *\n * Returns an ISO 8601 date string for yesterday.\n * - Optional `now` parameter for testing purposes\n */\nexport function getYesterday(now: Date = new Date()): IsoDate {\n const yesterday = new Date(now);\n yesterday.setDate(yesterday.getDate() - 1);\n return yesterday.toISOString().split(\"T\")[0] as IsoDate;\n}\n","import type { DateLike, IsAfter } from \"inferred-types/types\";\nimport { asDate } from \"inferred-types/runtime\";\n\n/**\n * Checks if a value is a year-only number (e.g., 2023).\n */\nfunction isYearOnly(input: unknown): input is number {\n return (\n typeof input === \"number\"\n && Number.isInteger(input)\n && input >= 1000\n && input <= 9999\n );\n}\n\n/**\n * **isAfter**`(comparator) -> (date) -> boolean\n *\n * Higher order utility to configure a date checking function which\n * checks whether an incoming `date` is _after_ the configured date.\n *\n * **Related:** `isBefore`, `isLeapYear`, `isSameYear`, `isSameDay`\n */\nexport function isAfter<\n TComparator extends DateLike\n>(comparator: TComparator) {\n return <TVal extends DateLike>(\n val: TVal\n ): IsAfter<TVal, TComparator> => {\n // Handle year-only number comparison\n if (isYearOnly(comparator) && isYearOnly(val)) {\n return (val > comparator) as IsAfter<TVal, TComparator>;\n }\n // Fallback to date comparison\n const comp = asDate(comparator);\n const v = asDate(val);\n return (v.getTime() > comp.getTime()) as IsAfter<TVal, TComparator>;\n };\n}\n","import type { DateLike, IsBefore } from \"inferred-types/types\";\nimport { asDate } from \"inferred-types/runtime\";\n\n/**\n * **isBefore**`(comparator) -> (date) -> boolean\n *\n * Higher order utility to configure a date checking function which\n * checks whether an incoming `date` is _before_ the configured date.\n *\n * **Related:** `isBefore`, `isLeapYear`, `isSameYear`, `isSameDay`\n */\nexport function isBefore<\n TComparator extends DateLike\n>(comparator: TComparator) {\n const comp = asDate(comparator);\n\n return <TVal extends DateLike>(\n val: TVal\n ) => {\n const v = asDate(val);\n return v.getTime() < comp.getTime() as IsBefore<TVal, TComparator>;\n };\n}\n","import type { DateLike, IsDoubleLeap } from \"inferred-types/types\";\nimport { DOUBLE_LEAP_MODERN } from \"inferred-types/constants\";\nimport { asDate } from \"inferred-types/runtime\";\n\n/**\n * **isDoubleLeap**`(val)`\n *\n * Determines if the passed in date/year is a \"Double Leap\" year.\n *\n * - a double leap year is a leap year that also appears in the DOUBLE_LEAP_MODERN constant\n * - attempts to resolve this to `true`/`false` at design time when literal values are passed in\n * - for runtime values, it will check against the DOUBLE_LEAP_MODERN array\n *\n * **Related:** `IsDoubleLeap` type utility\n */\nexport function isDoubleLeap<T extends DateLike>(val: T): IsDoubleLeap<T> {\n const year = asDate(val)?.getUTCFullYear();\n if (!year) {\n throw new Error(`Invalid date passed into isDoubleLeap(${String(val)})`);\n }\n\n // Check if the year is in the DOUBLE_LEAP_MODERN array\n return DOUBLE_LEAP_MODERN.includes(year) as IsDoubleLeap<T>;\n}\n","import type { DateLike, IsLeapYear } from \"inferred-types/types\";\nimport { asDate } from \"inferred-types/runtime\";\n\n/**\n * Determines in the passed in date/year is a _leap year_.\n *\n * - a leap year is a year divisible by 4 but not by 100\n * (unless also divisible by 400)\n */\nexport function isLeapYear<T extends DateLike>(val: T): IsLeapYear<T> {\n const year = asDate(val)?.getUTCFullYear();\n if (!year) {\n throw new Error(`Invalid date passed into isLeapYear(${String(val)})`);\n }\n\n return (\n year % 100 === 0\n ? year % 400 === 0\n : year % 4 === 0\n ) as IsLeapYear<T>;\n}\n","import type { DateLike, IsSameDay } from \"inferred-types/types\";\nimport { asDate } from \"inferred-types/runtime\";\n\n/**\n * **isSameDay**`(comparator) -> (date) -> boolean\n *\n * Higher order utility to configure a date checking function which\n * checks whether an incoming `date` is on the same day as the _comparator_\n * date..\n *\n * **Related:** `isBefore`, , `isAfter`, `isLeapYear`, `isSameYear`\n */\nexport function isSameDay<\n TComparator extends DateLike\n>(comparator: TComparator) {\n const comp = asDate(comparator);\n\n return <TVal extends DateLike>(\n val: TVal\n ) => {\n const v = asDate(val);\n return (\n v.getDate() === comp.getDate()\n && v.getMonth() === comp.getMonth()\n && v.getFullYear() === comp.getFullYear()\n ) as IsSameDay<TVal, TComparator>;\n };\n}\n","import type { DateLike, IsSameMonth } from \"inferred-types/types\";\nimport { asDate } from \"inferred-types/runtime\";\n\n/**\n * **isSameMonth**`(comparator) -> (date) -> boolean\n *\n * Higher order utility to configure a date checking function which\n * checks whether an incoming `date` is in the same **month** _and_\n * **year** as the _comparator_ date.\n *\n * **Related:**\n * - `isBefore`, `isAfter`, `isSameDay`, `isSameMonthYear`, `isSameYear`\n * - `isLeapYear`, `isSummer`, `isWinter`, `isFall`, `isSpring`\n */\nexport function isSameMonth<\n TComparator extends DateLike\n>(comparator: TComparator) {\n const comp = asDate(comparator);\n\n return <TVal extends DateLike>(\n val: TVal\n ) => {\n const v = asDate(val);\n return (\n v.getUTCFullYear() === comp.getUTCFullYear()\n && v.getUTCMonth() === comp.getUTCMonth()\n ) as IsSameMonth<TVal, TComparator>;\n };\n}\n","import type { DateLike, IsSameMonthYear } from \"inferred-types/types\";\nimport { asDate } from \"inferred-types/runtime\";\n\n/**\n * **isSameMonthYear**`(comparator) -> (date) -> boolean\n *\n * Higher order utility to configure a date checking function which\n * checks whether an incoming `date` is in the same **month** _and_\n * **year** as the _comparator_ date.\n *\n * **Related:** `isBefore`, , `isAfter`, `isLeapYear`, `isSameDay`\n */\nexport function isSameMonthYear<\n TComparator extends DateLike\n>(comparator: TComparator) {\n const comp = asDate(comparator);\n\n return <TVal extends DateLike>(\n val: TVal\n ) => {\n const v = asDate(val);\n return (\n v.getUTCFullYear() === comp.getUTCFullYear()\n && v.getUTCMonth() === comp.getUTCMonth()\n ) as IsSameMonthYear<TVal, TComparator>;\n };\n}\n","import type { DateLike } from \"inferred-types/types\";\nimport { asDate } from \"inferred-types/runtime\";\n\n/**\n * **isSameYear**`(comparator) -> (date) -> boolean\n *\n * Higher order utility to configure a date checking function which\n * checks whether an incoming `date` is in the same year as the\n * _comparator_ date.\n *\n * **Related:** `isBefore`, , `isAfter`, `isLeapYear`, `isSameDay`\n */\nexport function isSameYear<\n TComparator extends DateLike\n>(comparator: TComparator) {\n const comp = asDate(comparator);\n\n return <TVal extends DateLike>(\n val: TVal\n ): boolean => {\n const v = asDate(val);\n return v.getUTCFullYear() === comp.getUTCFullYear();\n };\n}\n","import { asDate } from \"runtime/datetime\";\nimport { err } from \"runtime/errors\";\nimport { isDateLike } from \"runtime/type-guards\";\n\n/**\n * **isThisMonth**`(input, now?)`\n *\n * Returns `true` if the given date-like input falls within the current month, `false` otherwise.\n * - Accepts the same input types as other datetime functions.\n * - Compares both year and month for accurate results.\n * - Throws an error for invalid inputs.\n * - Optional `now` parameter for testing purposes\n */\nexport function isThisMonth(\n input: string | number | Record<string, any> | Date,\n now: Date = new Date()\n): boolean {\n if (isDateLike(input)) {\n const date = asDate(input);\n\n // Compare year and month using UTC methods since asDate returns UTC dates\n const inputYear = date.getUTCFullYear();\n const inputMonth = date.getUTCMonth();\n\n // Convert now to UTC for comparison\n const nowUtc = new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate()));\n const nowYear = nowUtc.getUTCFullYear();\n const nowMonth = nowUtc.getUTCMonth();\n\n return inputYear === nowYear && inputMonth === nowMonth;\n }\n else {\n throw err(\"invalid-date\", `The isThisMonth(input) function received a value which could not be converted to a date!`, { input, now });\n }\n}\n","import type { DateLike } from \"inferred-types/types\";\nimport { asDate, getWeekNumber } from \"runtime/datetime\";\n\n/**\n * **isThisWeek**`(input, now?)`\n *\n * Returns `true` if the given date-like input falls within the current ISO week (Monday start), `false` otherwise.\n * - Accepts the same input types as other datetime functions.\n * - Uses ISO 8601 week definition (Monday as the first day of the week).\n * - Throws an error for invalid inputs.\n * - Optional `now` parameter for testing purposes\n */\nexport function isThisWeek(\n input: DateLike,\n now: Date = new Date()\n): boolean {\n const date = asDate(input);\n\n // Compare ISO week number and year\n const inputWeek = getWeekNumber(date);\n const nowWeek = getWeekNumber(now);\n\n // Handle ISO week 1 that may belong to previous/next year\n // Use the Thursday of the week to determine the ISO year\n const getIsoWeekYear = (d: Date) => {\n const thursday = new Date(d);\n thursday.setDate(d.getDate() + 4 - (d.getDay() || 7));\n return thursday.getFullYear();\n };\n\n return (\n inputWeek === nowWeek\n && getIsoWeekYear(date) === getIsoWeekYear(now)\n );\n}\n","import type { DateLike } from \"inferred-types/types\";\nimport { asDate } from \"inferred-types/runtime\";\n\n/**\n * A validation -- not type guard -- on whether the passed in `val` is a\n * date or date-time representation and that it's year is the same as the\n * current year.\n *\n * Types correctly handled are:\n *\n * - **JS Date** object\n * - **ISO Date** or **ISO Datetime**\n * - a number representing a **epoch** timestamp (in seconds, not milliseconds)\n * - **MomentJS** and **Luxon** datetime objects\n *\n * **Note:** an invalidate date/datetime passed in will always resolve to `false`\n */\nexport function isThisYear(val: DateLike, now: Date = new Date()): boolean {\n const currentYear = now.getFullYear();\n\n try {\n const d = asDate(val);\n\n return d.getUTCFullYear() === currentYear;\n }\n catch {\n return false;\n }\n}\n","import { getToday } from \"runtime/datetime\";\nimport { stripAfter } from \"runtime/string-literals\";\nimport {\n isDate,\n isIsoExplicitDate,\n isLuxonDate,\n isMoment,\n isString\n} from \"runtime/type-guards\";\n\n/**\n * **isToday`(val)`**\n *\n * A type guard which validates whether the passed in value _represents_ today's date\n * as either a:\n *\n * - [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date string, or\n * - [Moment.js](https://momentjs.com/docs/#/displaying/) DateTime object, or\n * - [Luxon](https://moment.github.io/luxon/#/?id=luxon) DateTime object\n */\nexport function isToday<T>(test: T, now: Date = new Date()): boolean {\n if (isString(test)) {\n const justDate = stripAfter(test, \"T\");\n return isIsoExplicitDate(justDate) && justDate === getToday(now);\n }\n else if (isMoment(test) || isDate(test)) {\n return (\n stripAfter(test.toISOString(), \"T\") === getToday(now)\n );\n }\n else if (isLuxonDate(test)) {\n return (\n stripAfter(test.toISO(), \"T\") === getToday(now)\n );\n }\n\n return false;\n}\n","import { asDate, getTomorrow } from \"runtime/datetime\";\n\n/**\n * **isTomorrow**`(input, now?)`\n *\n * Returns `true` if the given date-like input represents tomorrow's\n * date, `false` otherwise.\n * - Accepts the same input types as other datetime functions.\n * - Compares only the date part, ignoring time.\n * - Throws an error for invalid inputs.\n * - Optional `now` parameter for testing purposes\n */\nexport function isTomorrow(\n input: string | number | Record<string, any> | Date,\n now: Date = new Date()\n): boolean {\n const date = asDate(input);\n const tomorrowDate = getTomorrow(now);\n\n // Extract ISO date string from the input date and compare\n const inputDateStr = date.toISOString().split(\"T\")[0];\n\n return inputDateStr === tomorrowDate;\n}\n","import type { DateLike } from \"inferred-types/types\";\nimport { asDate, getYesterday } from \"runtime/datetime\";\n\n/**\n * **isYesterday**`(input, now?)`\n *\n * Returns `true` if the given date-like input represents yesterday's date, `false` otherwise.\n * - Accepts the same input types as other datetime functions.\n * - Compares only the date part, ignoring time.\n * - Throws an error for invalid inputs.\n * - Optional `now` parameter for testing purposes\n */\nexport function isYesterday(\n input: DateLike,\n now: Date = new Date()\n): boolean {\n const date = asDate(input);\n const yesterdayDate = getYesterday(now);\n\n // Extract ISO date string from the input date and compare\n const inputDateStr = date.toISOString().split(\"T\")[0];\n\n return inputDateStr === yesterdayDate;\n}\n","import type {\n AsDateMeta,\n DateLike,\n DateMeta,\n Err,\n IsAny,\n IsDayJs,\n IsInteger,\n IsJsDate,\n IsLuxonDateTime,\n IsMoment,\n Or,\n ParseDate,\n ParsedDate\n} from \"inferred-types/types\";\nimport {\n asDateTime,\n parseIsoDate\n} from \"runtime/datetime\";\n\nimport { err } from \"runtime/errors\";\nimport {\n isString\n} from \"runtime/type-guards\";\n\ntype Returns<T extends DateLike> = [IsAny<T>] extends [true]\n ? Date | Error\n : T extends string\n ? ParseDate<T> extends Error\n ? ParseDate<T>\n : ParseDate<T> extends ParsedDate\n ? AsDateMeta<ParseDate<T>>\n : Err<`parse-date/string`, `unable to parse the string '${T}' as a a date!`>\n : T extends object\n ? Or<[\n IsMoment<T>,\n IsLuxonDateTime<T>,\n IsDayJs<T>,\n IsJsDate<T>,\n ]> extends true\n ? DateMeta\n : Err<\n \"parse-date/object\",\n `An object was passed into parseDate() but it was not recognized as a known Date type!`,\n { date: T }\n >\n : T extends number\n ? IsInteger<T> extends true\n ? DateMeta\n : Err<\n `parse-date/number`,\n `When a number is passed into parseDate() it is assumed to be an epoch timestamp but the number passed in was a floating point number which indicates it is NOT an epoch timestamp!`,\n { date: T }\n >\n : Err<\n `parse-date/invalid-type`,\n `The type passed into parseDate() can not be parsed into a date!`,\n { parse: T }\n >;\n\nexport function parseDate<\n T extends DateLike\n>(d: T): Returns<T> {\n let iso: string;\n\n if (isString(d)) {\n return parseIsoDate(d) as unknown as Returns<T>;\n }\n else {\n try {\n iso = asDateTime(d).toISOString();\n }\n catch (error) {\n return error instanceof Error\n ? error as Returns<T>\n : err(`parse/invalid`, `Unable to parse date-like value`) as unknown as Returns<T>;\n }\n return parseIsoDate(iso) as Returns<T>;\n }\n}\n","import type { DateLike } from \"inferred-types/types\";\nimport { asDateTime, isError, parseIsoDate } from \"inferred-types/runtime\";\n\n/**\n * Parses an object-based Date container into a `ParsedDate` tuple.\n * Always uses the original ISO string (with offset/timezone) if available.\n */\nexport function parseDateObject<T extends DateLike | object>(d: T) {\n const date = d instanceof Date ? d : asDateTime(d);\n\n // For the time components, always use UTC (the actual time stored in the Date object)\n const utcIso = date.toISOString();\n const utcParsed = parseIsoDate(utcIso);\n if (isError(utcParsed)) {\n throw utcParsed;\n }\n\n // If sourceIso exists, extract timezone from it to preserve original offset\n const sourceIso = (date as any).sourceIso;\n if (sourceIso) {\n const sourceParsed = parseIsoDate(sourceIso);\n if (!isError(sourceParsed) && sourceParsed.timezone) {\n // Use UTC time components but preserve original timezone\n return {\n ...utcParsed,\n timezone: sourceParsed.timezone\n };\n }\n }\n\n return utcParsed;\n}\n","import type {\n AsDateMeta,\n DateMeta,\n IsAny,\n IsUnion,\n ParseDate,\n ParsedDate,\n} from \"inferred-types/types\";\nimport { threeDigitMillisecond, twoDigitHour, twoDigitMinute, twoDigitSecond } from \"runtime/branding\";\nimport { err } from \"runtime/errors\";\nimport {\n isEmpty,\n isFourDigitYear,\n isString,\n isThreeDigitMillisecond,\n isTimezoneOffset,\n isTwoDigitDate,\n isTwoDigitHour,\n isTwoDigitMinute,\n isTwoDigitMonth,\n isTwoDigitSecond,\n isTypedError\n} from \"runtime/type-guards\";\n\n/**\n * converts the parsed components of a `DateMeta` dictionary\n * to the representative ISO String.\n */\n// function convert<\n// T extends DateMeta & { format: \"auto\" | DateType }\n// >(\n// meta: T\n// ) {\n// let {\n// format,\n// dateType,\n// hasTime,\n// year,\n// month,\n// date,\n// hour,\n// minute,\n// second,\n// ms,\n// timezone\n// } = meta;\n\n// if (format === \"auto\") {\n// format = dateType;\n// }\n\n// switch (format) {\n// case \"date\":\n// return () => `${year}-${month}-${date}`;\n// case \"datetime\": {\n// let base: string;\n// if (hasTime) {\n// base = `${year}-${month}-${date}T${hour}:${minute}`;\n// if (second) {\n// base = `${base}:${second}`;\n// if (ms) {\n// base = `${base}.${ms}`;\n// }\n// }\n// if (timezone) {\n// base = `${base}${timezone}`;\n// }\n// return () => base;\n// }\n// else {\n// return () => `${year}-${month}-${date}`;\n// }\n// }\n// case \"year\":\n// return () => `${year}`;\n// case \"year-independent\":\n// return () => `--${month}-${date}`;\n// case \"year-month\":\n// return () => `-${year}-${month}`;\n// }\n// }\n\n// function toString<\n// T extends DateMeta\n// >(meta: T) {\n// return convert({ format: \"auto\", ...meta });\n// }\n\n// function asYear<\n// T extends DateMeta\n// >(meta: T) {\n// return convert({ format: \"year\", ...meta });\n// }\n\n// function asYearIndependent<\n// T extends DateMeta\n// >(meta: T) {\n// return convert({ format: \"year-independent\", ...meta });\n// }\n\n// function asYearMonth<\n// T extends DateMeta\n// >(meta: T) {\n// return convert({ format: \"year-month\", ...meta });\n// }\n\n// function asDate<\n// T extends DateMeta\n// >(meta: T) {\n// return convert({ format: \"date\", ...meta });\n// }\n\n// function asDateTime<\n// T extends DateMeta\n// >(meta: T) {\n// return convert({ format: \"datetime\", ...meta });\n// }\n\ntype Returns<T extends string> = [IsAny<T>] extends [true]\n ? Date | Error\n\n : [IsUnion<T>] extends [true]\n ? DateMeta | Error\n : ParseDate<T> extends Error\n ? ParseDate<T> & Error\n : ParseDate<T> extends ParsedDate\n ? AsDateMeta<ParseDate<T>>\n : Error;\n\n/**\n * Parses an ISO date or datetime string into its components.\n *\n * Returns an object: { year, month, date, time }\n * - year, month, date: numbers or null\n * - time: { hour, minute, second, ms, offset } or null\n * Throws if the string is not a valid ISO date/datetime.\n */\nexport function parseIsoDate<\n const T extends string\n>(\n input: T\n): Returns<T> {\n if (!isString(input)) {\n return err(\n \"parse-date/wrong-type\",\n `The type passed into parseIsoDate() was a '${typeof input}' but must be a string!`\n ) as unknown as Returns<T>;\n }\n\n // ISO datetime regex (YYYY-MM-DDTHH:mm:ss(.sss)?(Z|±hh:mm)?)\n const isoDateTime = /^(-?\\d{4})-?(\\d{2})-?(\\d{2})T(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(Z|[+-]\\d{2}:?\\d{2})?$/;\n // ISO date (YYYY-MM-DD or YYYYMMDD)\n const isoDate = /^(-?\\d{4})-?(\\d{2})-?(\\d{2})$/;\n // Year only\n const isoYear = /^(-?\\d{4})$/;\n // Year/month only: -YYYY-MM or -YYYYMM\n const isoYearMonth = /^-?(\\d{4})-?(\\d{2})$/;\n // Year-less: --MM-DD or --MMDD\n const isoMonthDay = /^--(\\d{2})-?(\\d{2})$/;\n\n if (isoDateTime.test(input)) {\n const match = input.match(isoDateTime);\n if (match) {\n const [_, yyyy, mm, dd, hh, min, sec, milli, tz] = match;\n\n const year = isFourDigitYear(yyyy)\n ? yyyy\n : isEmpty(yyyy)\n ? null\n : err(\"year\");\n\n const month = isTwoDigitMonth(mm)\n ? mm\n : isEmpty(mm)\n ? null\n : err(\"month\");\n\n const date = isTwoDigitDate(dd)\n ? dd\n : isEmpty(dd)\n ? null\n : err(\"date\");\n\n const hour = isTwoDigitHour(hh)\n ? hh\n : isEmpty(hh)\n ? null\n : err(\"hour\");\n\n const minute = isTwoDigitMinute(min)\n ? min\n : isEmpty(min)\n ? null\n : err(\"minute\");\n\n const second = isTwoDigitSecond(sec)\n ? sec\n : isEmpty(sec)\n ? null\n : err(\"second\");\n\n const ms = isThreeDigitMillisecond(milli)\n ? milli\n : isEmpty(milli)\n ? null\n : err(\"milli\");\n\n const timezone = isTimezoneOffset(tz)\n ? tz\n : isEmpty(tz)\n ? null\n : err(\"timezone\");\n\n const errors = [year, month, date, hour, minute, second, ms, timezone]\n .filter(i => isTypedError(\"\" as string)(i))\n .map(i => i.type);\n if (errors.length > 0) {\n return err(\"parse-date\", `The string passed in resembled a ISO DateTime but the following components failed: ${errors}`) as unknown as Returns<T>;\n }\n\n const val: DateMeta = {\n dateType: \"datetime\",\n hasTime: !(\n isTimezoneOffset(timezone) && timezone === \"Z\"\n && hour === twoDigitHour(\"00\")\n && minute === twoDigitMinute(\"00\")\n && (\n second === twoDigitSecond(\"00\") || second === null\n ) && (\n ms === threeDigitMillisecond(\"000\") || ms === null\n )),\n year,\n month,\n date,\n hour,\n minute,\n second,\n ms,\n timezone,\n } as DateMeta;\n\n return {\n ...val,\n // toString: toString(val),\n // asYear: asYear(val),\n // asYearIndependent: asYearIndependent(val),\n // asDate: asDate(val),\n // asDateTime: asDateTime(val),\n // asYearMonth: asYearMonth(val)\n } as Returns<T>;\n }\n }\n else if (isoYear.test(input)) {\n const match = input.match(isoYear);\n if (match) {\n const [_, year] = match;\n\n if (isFourDigitYear(year)) {\n const val = {\n dateType: \"year\",\n hasTime: false,\n year,\n month: null,\n date: null,\n hour: null,\n minute: null,\n second: null,\n ms: null,\n timezone: null\n } satisfies DateMeta;\n\n return {\n ...val,\n // toString: toString(val),\n // asYear: asYear(val),\n // asYearIndependent: asYearIndependent(val),\n // asDate: asDate(val),\n // asDateTime: asDateTime(val),\n // asYearMonth: asYearMonth(val)\n } as Returns<T>;\n }\n else {\n return err(\n `parse/iso-date`,\n `A string which matched the regex for IsoYear was invalid upon inspection`\n ) as unknown as Returns<T>;\n }\n }\n else {\n return err(\n `parse/iso-date`,\n `A string which matched the regex for IsoYear was invalid upon inspection`\n ) as unknown as Returns<T>;\n }\n }\n else if (isoYearMonth.test(input)) {\n const match = input.match(isoYearMonth);\n if (match) {\n const [_, year, month] = match;\n\n if (isFourDigitYear(year) && isTwoDigitMonth(month)) {\n const val = {\n dateType: \"year-month\",\n hasTime: false,\n year,\n month,\n date: null,\n hour: null,\n minute: null,\n second: null,\n ms: null,\n timezone: null,\n\n } satisfies DateMeta;\n\n return {\n ...val,\n } as Returns<T>;\n }\n else {\n return err(\n `parse/iso-date`,\n `A string which matched the regex for IsoYearMonth was invalid upon inspection`\n ) as unknown as Returns<T>;\n }\n }\n else {\n return err(\n `parse/iso-date`,\n `A string which matched the regex for IsoYearMonth was invalid upon inspection`\n ) as unknown as Returns<T>;\n }\n }\n else if (isoMonthDay.test(input)) {\n const match = input.match(isoMonthDay);\n if (match) {\n const [_, month, date] = match;\n\n if (isTwoDigitMonth(month) && isTwoDigitDate(date)) {\n const val = {\n dateType: \"year-independent\",\n hasTime: false,\n year: null,\n month,\n date,\n hour: null,\n minute: null,\n second: null,\n ms: null,\n timezone: null\n } satisfies DateMeta;\n\n return {\n ...val,\n\n } as Returns<T>;\n }\n else {\n return err(\n `parse/iso-date`,\n `A string which matched the regex for IsoMonthDay (aka, year-independent) was invalid upon inspection`\n ) as unknown as Returns<T>;\n }\n }\n return err(\n `parse/iso-date`,\n `A string which matched the regex for IsoMonthDay (aka, year-independent) was invalid upon inspection`\n ) as unknown as Returns<T>;\n }\n else if (isoDate.test(input)) {\n const match = input.match(isoDate);\n if (match) {\n const [_, year, month, date] = match;\n\n if (isFourDigitYear(year) && isTwoDigitMonth(month) && isTwoDigitDate(date)) {\n const val = {\n dateType: \"year-independent\",\n hasTime: false,\n year,\n month,\n date,\n hour: null,\n minute: null,\n second: null,\n ms: null,\n timezone: null,\n } satisfies DateMeta;\n\n return {\n ...val,\n // toString: toString(val),\n // asYear: asYear(val),\n // asYearIndependent: asYearIndependent(val),\n // asDate: asDate(val),\n // asDateTime: asDateTime(val),\n // asYearMonth: asYearMonth(val)\n } as Returns<T>;\n }\n return err(\n `parse/iso-date`,\n `A string which matched the regex for ISO Date was invalid upon inspection.`\n ) as unknown as Returns<T>;\n }\n return err(\n `parse/iso-date`,\n `A string which matched the regex for ISO Date was unable to then pull the expected match groups. This should not happen.`\n ) as unknown as Returns<T>;\n }\n\n return err(\n \"parse/iso-date\",\n \"The string passed to parseIsoDate() was invalid!\"\n ) as unknown as Returns<T>;\n}\n","import { parseIsoDate } from \"runtime/datetime\";\nimport { err } from \"runtime/errors\";\nimport {\n isEpochInSeconds,\n} from \"runtime/type-guards\";\n\n/**\n * Parses a number as a `epoch` timestamp (detects whether in\n * seconds or milliseconds) into a `IsoMeta` tuple.\n */\nexport function parseNumericDate<T extends number>(d: T) {\n try {\n const date = isEpochInSeconds(d)\n ? new Date(d * 1000)\n : new Date(d);\n\n return parseIsoDate(date.toISOString());\n }\n catch {\n return err(\n `parse-date/numeric`,\n `The numeric value trying to be parsed as a epoch timestamp -- ${d} -- is invalid!`\n );\n }\n}\n","import type {\n DateMeta,\n IsoDate,\n IsoDateTime,\n IsoMonthDate,\n IsoYear,\n IsoYearMonth,\n IsUnion\n} from \"inferred-types/types\";\nimport { err } from \"runtime/errors\";\nimport { isIsoDate } from \"runtime/type-guards\";\n\ntype Return<T extends DateMeta> = [IsUnion<T[\"dateType\"]>] extends [true]\n ? IsoDate | IsoDateTime\n : [T[\"dateType\"]] extends [\"year\"]\n ? IsoYear\n : [T[\"dateType\"]] extends [\"year-independent\"]\n ? IsoMonthDate\n : [T[\"dateType\"]] extends [\"year-month\"]\n ? IsoYearMonth\n : [T[\"dateType\"]] extends [\"date\"]\n ? IsoDate\n : [T[\"dateType\"]] extends [\"datetime\"]\n ? [T[\"hasTime\"]] extends [true]\n ? IsoDateTime\n : IsoDate\n : Error;\n\n/**\n * **toIsoDateString**`(meta) -> IsoDate | IsoDateTime`\n *\n * Converts a parsed date into an ISO Date or DateTime string.\n */\nexport function toIsoDateString<T extends DateMeta>(\n parsed: T\n): Return<T> {\n let resolved;\n\n if (parsed.hasTime === false) {\n switch (parsed.dateType) {\n case \"date\":\n case \"datetime\":\n resolved = `${parsed.year}-${parsed.month}-${parsed.date}`;\n break;\n case \"year\":\n resolved = parsed.year;\n break;\n case \"year-independent\":\n resolved = `--${parsed.month}-${parsed.date}`;\n break;\n case \"year-month\":\n resolved = `-${parsed.year}-${parsed.month}`;\n }\n\n if (isIsoDate(resolved)) {\n return resolved as Return<T>;\n }\n else {\n err(`parse/runtime`) as unknown as Return<T>;\n }\n }\n\n switch (parsed.dateType) {\n case \"date\":\n return err(\"invalid-date\", `The parsed 'type' of the date was 'date' but the 'hasTime' variable was set to true! This should not happen.`) as unknown as Return<T>;\n case \"datetime\":\n return `${parsed.year}-${parsed.month}-${parsed.date}T${parsed.hour}:${parsed.minute}${parsed.second ? `:${parsed.second}${parsed.ms ? `.${parsed.ms}` : \"\"}` : \"\"}` as unknown as Return<T>;\n break;\n }\n\n return err(\"invalid-date\", `the parsed 'dateType' was '${parsed.dateType}' but the 'hasTime' property was set to 'false'!`) as unknown as Return<T>;\n}\n","import type {\n As,\n DefineObject,\n Dictionary,\n Err,\n FromDefineObject,\n KeysWithError,\n MakeKeysOptional,\n Some,\n Values,\n} from \"inferred-types/types\";\nimport { err, fromDefineObject, isError, keysOf } from \"inferred-types/runtime\";\n\ntype Returns<\n T extends DefineObject,\n P extends readonly (keyof T & string)[]\n> = P[\"length\"] extends 0\n ? FromDefineObject<T>\n : MakeKeysOptional<T, P> extends DefineObject\n ? FromDefineObject<MakeKeysOptional<T, P>>\n : never;\n\ntype HandleError<T> = T extends Dictionary\n ? Some<Values<T>, \"extends\", Error> extends true\n ? Err<\n `invalid-token/object`,\n `At least one key in the defined object have errors!`,\n { keys: KeysWithError<T>; obj: T }\n >\n : As<T, Dictionary>\n : never;\n\n/**\n * **defineObject**`(defn, ...[optional]) -> (object type)`\n *\n * Defines an object **type** while preserving a runtime-token\n * which _identifies_ the type.\n *\n * ### Example\n *\n * ```ts\n * const person = defineObject(\n * {\n * firstName: \"string\",\n * lastName: \"string\",\n * address: \"string | object\"\n * },\n * \"lastName\", \"address\"\n * )\n * ```\n *\n * - the _type_ of `person` will be:\n *\n * ```ts\n * type person = {\n * firstName: string,\n * lastName?: string,\n * address?: object | string\n * }\n * ```\n *\n * - but the runtime value will be a string literal token _representing_\n * that type.\n */\nexport function defineObject<\n const T extends DefineObject,\n const P extends readonly (keyof T & string)[],\n>(\n defn: T,\n ..._optProps: P\n): HandleError<Returns<T, P>> {\n const errProps = Object.keys(defn).reduce(\n (acc, i) => isError(defn[i])\n ? { ...acc, [i]: defn[i] }\n : acc,\n {}\n );\n\n return (\n keysOf(errProps).length > 0\n ? err(\n `invalid-token/object`,\n `At least one key in the defined object have errors!`,\n { keys: errProps, obj: defn }\n ) as any\n : fromDefineObject(defn) as any\n ) as unknown as Returns<T, P>;\n}\n","import type { Narrowable, ObjectKey } from \"inferred-types/types\";\nimport { keysOf } from \"inferred-types/runtime\";\n\n/**\n * **entries**\n *\n * Provides an _iterable_ over the passed in dictionary object where each iteration\n * provides a tuple of `[ key, value ]` which preserve type literals.\n *\n * For example:\n * ```ts\n * const obj = { foo: 1, bar: \"hi\" };\n * // k type is \"foo\" then \"bar\"; v type is 1 then \"hi\"\n * for (const [k, v] of entries(obj)) { ... }\n * ```\n */\nexport function entries<\n T extends Record<ObjectKey, N>,\n N extends Narrowable,\n>(obj: T) {\n const iterable = {\n * [Symbol.iterator]() {\n for (const k of keysOf(obj)) {\n // const [k, v] = entry as KeyValue<T, First<typeof entry>>;\n type K = typeof k;\n yield ({ key: k, value: obj[k] }) as { key: K; value: K extends keyof T ? T[K] : never };\n }\n },\n };\n\n return iterable;\n}\n","import type {\n NoDefaultValue,\n NotDefined,\n} from \"inferred-types/constants\";\nimport type {\n Dictionary,\n DotPathFor,\n Get,\n Narrowable,\n Suggest,\n Tuple,\n} from \"inferred-types/types\";\nimport {\n NO_DEFAULT_VALUE,\n NOT_DEFINED,\n} from \"inferred-types/constants\";\nimport {\n err,\n hasDefaultValue,\n hasIndexOf,\n indexOf,\n isContainer,\n isRef,\n isSpecificConstant,\n isTruthy,\n} from \"inferred-types/runtime\";\n\n/** updates based on whether segment is a Ref or not */\nfunction updatedDotPath<\n TValue,\n TDotPath extends string,\n TSegment extends string,\n>(value: TValue, dotpath: TDotPath, segment: TSegment) {\n return isRef(value)\n ? dotpath.replace(segment, `Ref(${segment})`)\n : dotpath;\n}\n\n/**\n * **getValue**(value, dotpath, defaultValue, handler, fullDotPath)\n */\nfunction getValue<\n TValue,\n TDotPath extends string,\n TDefVal extends Narrowable,\n TInvalid extends Narrowable,\n TFullDotPath extends string,\n>(\n value: TValue,\n dotPath: TDotPath,\n defaultValue: TDefVal,\n handleInvalid: TInvalid,\n fullDotPath: TFullDotPath,\n) {\n /** the remaining segments that need processing */\n const pathSegments: string[] = isTruthy(dotPath)\n ? dotPath.split(\".\")\n : [];\n\n /** current index property */\n const idx = pathSegments[0];\n\n /**\n * dotpath _will_ need to recurse further to\n * reach destination\n */\n const hasMoreSegments = pathSegments.length > 1;\n\n /** whether or not the value is indexable or not */\n const valueIsIndexable = isContainer(value) && hasIndexOf(value, idx);\n\n /** has handler for invalid dotpath */\n const hasHandler = !isSpecificConstant(\"not-defined\")(handleInvalid);\n\n const invalidDotPath = err(\n \"invalid-dot-path\",\n `The segment \"${idx}\" in the dotpath \"${fullDotPath}\" was not indexable and no default value existed on: ${JSON.stringify(value)}`,\n );\n\n const current = (\n hasMoreSegments\n ? isContainer(value) && idx in value\n ? getValue(\n indexOf(value, idx),\n pathSegments.join(\".\").replace(`${idx}.`, \"\"),\n defaultValue,\n handleInvalid,\n updatedDotPath(value, fullDotPath, idx),\n )\n : hasHandler\n ? handleInvalid\n : invalidDotPath\n : valueIsIndexable\n ? hasDefaultValue(hasDefaultValue)\n ? (indexOf(value, idx) as any || defaultValue) as any\n : indexOf(value, idx)\n : hasHandler ? handleInvalid : invalidDotPath\n ) as unknown as Get<TValue, TDotPath>;\n\n return current;\n}\n\nexport interface GetOptions<\n TDefVal extends Narrowable,\n TInvalid extends Narrowable,\n> {\n /**\n * Typically when getting a valid dotpath and the value evaluates to _undefined_\n * then the value returned is _undefined_ but if you'd prefer to put something else\n * in here you may.\n */\n defaultValue?: TDefVal;\n /**\n * Typically when a dotpath is invalid for a given item then this item\n * is set as a `ErrorCondition<'invalid-dot-path'>` but if you'd like\n * to set it to something else you may.\n *\n * Note: a common replacement would be the `Never` constant from this library\n * as it \"reports\" as being `never` but allows for a more sophisticated\n * handling process to follow.\n */\n handleInvalidDotpath?: TInvalid;\n}\n\n/**\n * **get**(obj, dotPath, [defVal])\n *\n * Gets a value in a deeply nested object while attempting to preserve type information\n * (a default value is allowed as optional param).\n *\n * - if the dot-path is invalid then an `ErrorCondition` will be returned, unless\n * a defaultValue is provided in which case this will be returned instead\n * - this function is also VueJS _aware_ in the sense that it can also traverse\n * VueJS `ref` properties when encountered\n *\n * ```ts\n * const prop = get(obj, \"foo.bar.baz\", \"nothing there chief!\");\n * ```\n */\nexport function get<\n TValue extends Narrowable | readonly unknown[],\n TDotPath extends Suggest<DotPathFor<TValue>>,\n TDefVal extends Narrowable = NoDefaultValue,\n TInvalid extends Narrowable = NotDefined,\n>(\n value: TValue,\n dotPath: TDotPath | null,\n options: GetOptions<TDefVal, TInvalid> = {\n defaultValue: NO_DEFAULT_VALUE,\n handleInvalidDotpath: NOT_DEFINED,\n } as GetOptions<TDefVal, TInvalid>,\n) {\n const outcome: unknown = (\n dotPath === null || dotPath === \"\"\n ? value\n : getValue(\n value as Dictionary | Tuple,\n dotPath,\n options?.defaultValue || NO_DEFAULT_VALUE,\n options?.handleInvalidDotpath || NOT_DEFINED,\n String(dotPath),\n ) as unknown\n );\n\n return outcome as unknown as Get<TValue, TDotPath>;\n}\n","import type {\n Dictionary,\n ObjectKeys,\n} from \"inferred-types/types\";\nimport { isArray } from \"inferred-types/runtime\";\n\n/**\n * **keysOf**(container)\n *\n * Provides a read-only array of the _keys_ that a Dictionary contains.\n *\n * **Note:** this function is aware of Ref<T> types from VueJS and will return\n * `readonly [\"value\"]` as the keys array when detected rather than reporting\n * on props like `__v_isRef`, etc.\n */\nexport function keysOf<\n const TObj extends Dictionary\n>(\n container: TObj,\n) {\n const keys: unknown = (\n isArray(container)\n ? Object.keys(container).map(i => Number(i))\n : Object.keys(container)\n );\n\n return keys as ObjectKeys<TObj> extends PropertyKey[] & (keyof TObj)[]\n ? ObjectKeys<TObj>\n : never;\n}\n","import type { Narrowable, ObjectKey, Tuple, Values } from \"inferred-types/types\";\n\n/**\n * **objectValues**`(obj) -> [val, val, val]`\n *\n * Converts an object into a strongly typed tuple of the _values_ of\n */\nexport function objectValues<\n T extends Record<ObjectKey, N>,\n N extends Narrowable,\n>(obj: T) {\n const tuple: Tuple = Object.keys(obj).reduce(\n (acc, key) => [\n ...acc,\n obj[key],\n ],\n [] as Tuple,\n );\n\n return tuple as Values<T>;\n}\n","import type { Dictionary, Expand, Mutable, Narrowable, NarrowObject, StringKeys, Suggest } from \"inferred-types/types\";\n\n/**\n * **omitKeys**(obj, excluding)\n *\n * Runtime utility which _excludes_ certain **keys** from an object.\n *\n * - this utility is meant to mimic the type utility `Omit<T,U>` provided\n * by Typescript in runtime\n * - attempts will be made to extract the narrowest possible type from\n * the passed in object.\n *\n * ```ts\n * // { baz: 3 }\n * const obj = omit({ foo: 1, bar: 2: baz: 3 }, \"foo\", \"bar\");\n * ```\n *\n * **Related:** `createOmission`, `withoutKeys`, `retainKeys`\n */\nexport function omitKeys<\n const TObj extends NarrowObject<N> | Dictionary,\n const N extends Narrowable,\n const TKeys extends readonly Suggest<StringKeys<TObj>>[],\n>(\n obj: TObj,\n ...removeKeys: TKeys\n) {\n const keys = Object.keys(obj);\n\n return keys.reduce(\n (acc, key) => removeKeys.includes(key as any)\n ? acc\n : {\n ...acc,\n [key]: obj[key as keyof TObj],\n },\n {},\n ) as Mutable<Expand<Omit<TObj, TKeys[number]>>>;\n}\n","import type { Err, HasUnionType, Narrowable, NarrowObject, ObjectKey, WithKeys } from \"inferred-types/types\";\n\n/**\n * **retainKeys**(obj,...keys)\n *\n * Reduces the key/value pairs in an object to those keys\n * explicitly stated.\n *\n * **Related:** `createRetainer`, `omitKeys`\n */\nexport function retainKeys<\n N extends Narrowable,\n TObj extends NarrowObject<N>,\n TKeys extends readonly (ObjectKey & keyof TObj)[],\n>(dict: TObj, ...keys: TKeys) {\n let output: Record<string, unknown> = {};\n for (const k of keys) {\n output = {\n ...output,\n [k]: dict[k],\n };\n }\n\n return output as unknown as HasUnionType<TKeys> extends true\n ? Err<\n \"invalid-union\",\n \"the retain(obj, keys) function was called with keys which included a value which was a union type; this would make the typing inconsistent with the runtime type and should be avoided. Note that at runtime this will not produce an error but rather produce the valid runtime value.\",\n { keys: TKeys }\n >\n : WithKeys<TObj, TKeys>;\n}\n","import type { Dictionary, ReverseLookup } from \"inferred-types/types\";\n\n/**\n * **reverseLookup**`(lookup)`\n *\n * Takes a lookup table as an input and reverses it while maintaining narrow\n * types.\n */\nexport function reverseLookup<\n T extends Record<string, string>,\n>(lookup: T) {\n const result: Dictionary = {};\n for (const key of Object.keys(lookup).reverse()) {\n result[lookup[key]] = key;\n }\n\n return result as ReverseLookup<T>;\n}\n","import type { AnyObject, AsRecord, ObjectKey, SharedKeys } from \"inferred-types/types\";\n\n/**\n * **sharedKeys**\n *\n * Runtime utility which provides the _shared_ keys between two objects.\n */\nexport function sharedKeys<\n A extends AnyObject | object,\n B extends AnyObject | object,\n>(a: A, b: B): SharedKeys<AsRecord<A>, AsRecord<B>> {\n const ka = Object.keys(a) as ObjectKey[];\n const kb = Object.keys(b) as ObjectKey[];\n\n return ka.filter(k => kb.includes(k)) as unknown as SharedKeys<AsRecord<A>, AsRecord<B>>;\n}\n","import type { Dictionary, Narrowable, StringKeys, Suggest, Unset } from \"inferred-types/types\";\nimport { unset } from \"inferred-types/runtime\";\n\nexport function usingLookup<\n const TLookup extends Dictionary<string>,\n const TMissing extends Narrowable | never = Unset\n>(\n lookup: TLookup,\n missing: TMissing = unset as TMissing\n) {\n return <\n const TKey extends Suggest<StringKeys<TLookup>[number]>,\n >(\n key: TKey\n ) => {\n return (\n key in lookup\n ? lookup[key]\n : missing\n );\n };\n}\n","import type { Dictionary, Mutable, Narrowable, ObjectKey, Values } from \"inferred-types/types\";\nimport { isArray, isDictionary } from \"inferred-types/runtime\";\n\n/**\n * **valuesOf**(container) -> values[]\n *\n * Runtime utility to convert an object or an array into a tuple of\n * values while preserving as much type information as\n * possible.\n *\n * **Note:** an _array_ is simply proxied through \"as is\"\n */\nexport function valuesOf<\n const TContainer extends Record<ObjectKey, N> | readonly N[],\n const N extends Narrowable,\n>(val: TContainer) {\n let values: any[] = [];\n if (isArray(val)) {\n values = val;\n }\n else if (isDictionary(val)) {\n for (const k of Object.keys(val)) {\n values.push(val[k as keyof typeof val]);\n }\n }\n\n return values as TContainer extends readonly unknown[]\n ? Mutable<TContainer>\n : TContainer extends Dictionary\n ? Values<TContainer>\n : never;\n}\n","import type { MergeObjects, Narrowable, ObjectKey } from \"inferred-types/types\";\n\n/**\n * **withDefaults**(defaults) → (obj) → _merged_\n *\n * Merges in default values to an existing object and maintains\n * narrow typing.\n */\nexport function withDefaults<\n TDefaults extends Record<ObjectKey, N>,\n N extends Narrowable,\n>(with_defaults: TDefaults) {\n return <\n TObj extends Record<ObjectKey, W>,\n W extends Narrowable,\n >(obj: TObj) => {\n const merged = {\n ...with_defaults,\n ...obj,\n };\n\n return merged as unknown as MergeObjects<Required<TDefaults>, TObj>;\n };\n}\n","import type { Dictionary, Narrowable, ObjectKey } from \"inferred-types/types\";\nimport { retainKeys } from \"inferred-types/runtime\";\n\n/**\n * **withKeys**(obj,keys)\n *\n * Reduces the key/value pairs in an object to those keys\n * explicitly stated.\n *\n * - note: this function is an alias for `retain()`\n */\nexport function withKeys<\n TObj extends Dictionary<string | symbol, N>,\n N extends Narrowable,\n TKeys extends readonly (ObjectKey & keyof TObj)[],\n>(dict: TObj, ...keys: TKeys) {\n return retainKeys(dict, ...keys);\n}\n","import type {\n Expand,\n Narrowable,\n NarrowObject,\n StringKeys,\n Suggest,\n WithoutKeys,\n} from \"inferred-types/types\";\n\n/**\n * **withoutKeys**(obj,...keys)\n *\n * Reduces the key/value pairs in an object with the expressed\n * keys excluded.\n *\n * - this is an alias to the `omit()` utility\n *\n * **Related**: `omit`, `createOmission`\n */\nexport function withoutKeys<\n const TObj extends NarrowObject<N>,\n N extends Narrowable,\n const TKeys extends readonly Suggest<StringKeys<TObj>[number]>[],\n>(dict: TObj, ...exclude: TKeys) {\n const obj: any = {};\n for (const [_, key] of Object.keys(dict).entries()) {\n if (!(exclude).includes(key as any)) {\n obj[key] = dict[key];\n }\n }\n\n return obj as Expand<WithoutKeys<TObj, TKeys>>;\n}\n","import type {\n As,\n Dictionary,\n ExpandRecursively,\n Mutable,\n Narrowable,\n ObjectKeys,\n StringKeys,\n Suggest,\n WithoutValue\n} from \"inferred-types/types\";\nimport {\n hasIndexOf,\n isArray,\n isBoolean,\n isDictionary,\n isFalse,\n isNarrowableArray,\n isNumber,\n isObject,\n isScalar,\n isString,\n isTrue,\n isUndefined,\n keysOf\n} from \"inferred-types/runtime\";\n\nconst lookup = {\n string: \"string\" as string,\n \"string|undefined\": \"string|undefined\" as unknown as string | undefined,\n number: \"number\" as unknown as number,\n \"number|undefined\": \"number|undefined\" as unknown as number | undefined,\n \"string|number\": \"string|number\" as unknown as string | number,\n boolean: \"boolean\" as unknown as boolean,\n true: \"true\" as unknown as true,\n false: \"false\" as unknown as false,\n object: \"object\" as unknown as object,\n Object: \"object\" as unknown as object,\n \"Record<ObjectKey,unknown>\": \"Record<ObjectKey,unknown>\" as unknown as Dictionary,\n \"Record<ObjectKey,string>\": \"Record<ObjectKey,string>\" as unknown as Record<string, string>,\n \"Record<ObjectKey,string|number>\": \"Record<ObjectKey,string|number>\" as unknown as Record<string, string | number>,\n \"string[]\": \"string[]\" as unknown as string[],\n \"number[]\": \"number[]\" as unknown as number[],\n \"boolean[]\": \"boolean[]\" as unknown as boolean[],\n} as const;\n\ntype Lookup = Mutable<typeof lookup>;\ntype TypeSuggestion = ObjectKeys<typeof lookup>;\n\n/**\n * validates whether the value _extends_ the baseType\n */\nfunction testExtends<T extends Narrowable, U extends AllowableType>(value: T, baseType: U): boolean {\n if (isString(baseType) && keysOf(lookup).includes(baseType as any)) {\n switch (baseType) {\n case \"string\":\n return !isString(value);\n case \"string|undefined\":\n return !isString(value) && !isUndefined(value);\n case \"number\":\n return !isNumber(value);\n case \"number|undefined\":\n return !isNumber(value) && !isUndefined(value);\n case \"string|number\":\n return !isNumber(value) && !isString(value);\n case \"boolean\":\n return !isBoolean(value);\n case \"true\":\n return !isTrue(value);\n case \"false\":\n return !isFalse(value);\n case \"object\":\n case \"Object\":\n return !isObject(value);\n case \"Record<ObjectKey,unknown>\":\n return !isDictionary(value);\n case \"Record<ObjectKey,string>\":\n return !isDictionary(value) || !Object.values(value).every(i => isString(i));\n case \"Record<ObjectKey,string|number>\":\n return !isDictionary(value) || !Object.values(value).every(i => isString(i) || isNumber(i));\n case \"string[]\":\n return !isArray(value) || (isArray(value) && !value.every(i => isString(i)));\n case \"number[]\":\n return !isArray(value) || (isArray(value) && !value.every(i => isNumber(i)));\n case \"boolean[]\":\n return !isArray(value) || (isArray(value) && !value.every(i => isBoolean(i)));\n }\n }\n\n if (isArray(baseType)) {\n if (!isNarrowableArray(value)) {\n return true;\n }\n\n return !value.every((_, i) => testExtends(value[i as number], baseType[i] as AllowableType));\n }\n\n if (isDictionary(baseType)) {\n if (!isDictionary(value)) {\n return false;\n }\n const baseKeys = Object.keys(baseType);\n const valueKeys = Object.keys(value);\n\n // Check if value has all the keys from baseType\n for (const key of baseKeys) {\n if (!isUndefined(baseType[key]) && !hasIndexOf(valueKeys, key)) {\n return false;\n }\n // Recursively test each property\n if (!testExtends((value as any)[key], baseType[key] as AllowableType)) {\n return false;\n }\n }\n return true;\n }\n\n // For scalar values, check direct equality\n if (isScalar(baseType) && isScalar(value)) {\n return value !== baseType;\n }\n\n return false;\n}\n\n/** types allowed as input to withValue() */\ntype AllowableType\n = | number | boolean | Suggest<TypeSuggestion>\n | readonly (number | boolean | Suggest<TypeSuggestion>)[]\n | Record<string, string | number | boolean>;\n\ntype ConvertObjType<\n TObj extends Record<string, unknown>,\n TKeys extends readonly (PropertyKey & keyof TObj)[] = As<StringKeys<TObj>, readonly (PropertyKey & keyof TObj)[]>,\n // eslint-disable-next-line ts/no-empty-object-type\n TResult extends Record<string, unknown> = {}\n> = TKeys extends [\n infer Head extends PropertyKey & keyof TObj,\n ...infer Rest extends readonly (PropertyKey & keyof TObj)[]\n]\n ? TObj[Head] extends AllowableType\n ? ConvertObjType<\n TObj,\n Rest,\n TResult & Record<Head, ConvertType<TObj[Head]>>\n >\n : never\n : ExpandRecursively<TResult>;\n\ntype ConvertType<T extends AllowableType>\n = [T] extends [string]\n ? [T] extends [keyof Lookup]\n ? Lookup[T]\n : T\n : [T] extends [number]\n ? T\n : [T] extends [boolean]\n ? T\n : [T] extends [readonly (number | boolean | Suggest<TypeSuggestion>)[]]\n ? {\n [K in keyof T]: T[K] extends AllowableType\n ? ConvertType<T[K]>\n : never\n }\n : [T] extends [Record<string, string | number | boolean>]\n ? ConvertObjType<T>\n : never;\n\n/**\n * **withoutValue**\n *\n * A _higher-order_ runtime utility which allow you to first specify a **type**\n * which you will want to look for in future objects/dictionaries.\n *\n * ### Example\n *\n * ```ts\n * const withoutStrings = withoutValue(\"string\");\n * const withoutFooBar = withoutValue(\"string(foo,bar)\");\n * ```\n *\n * The returned utility will now receive dictionary objects and -- in a type strong\n * manner -- removed the key/values where the value extends `string` or `\"foo\" | \"bar\"`\n * respectively.\n */\nexport function withoutValue<\n TWith extends AllowableType\n>(\n withValue: TWith,\n) {\n return <const TObj extends Record<string, N>, N extends Narrowable>(obj: TObj) => {\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(obj)) {\n if (testExtends(obj[key], withValue)) {\n result[key] = obj[key];\n }\n }\n\n return result as WithoutValue<TObj, ConvertType<TWith>>;\n };\n}\n","import type {\n As,\n Dictionary,\n ExpandRecursively,\n Mutable,\n Narrowable,\n ObjectKeys,\n StringKeys,\n Suggest,\n WithValue,\n} from \"inferred-types/types\";\nimport {\n hasIndexOf,\n isArray,\n isBoolean,\n isDictionary,\n isFalse,\n isNarrowableArray,\n isNumber,\n isObject,\n isScalar,\n isString,\n isTrue,\n isUndefined,\n keysOf\n} from \"inferred-types/runtime\";\n\nconst lookup = {\n string: \"string\" as string,\n \"string|undefined\": \"string|undefined\" as unknown as string | undefined,\n number: \"number\" as unknown as number,\n \"number|undefined\": \"number|undefined\" as unknown as number | undefined,\n \"string|number\": \"string|number\" as unknown as string | number,\n boolean: \"boolean\" as unknown as boolean,\n true: \"true\" as unknown as true,\n false: \"false\" as unknown as false,\n object: \"object\" as unknown as object,\n Object: \"object\" as unknown as object,\n \"Record<ObjectKey,unknown>\": \"Record<ObjectKey,unknown>\" as unknown as Dictionary,\n \"Record<ObjectKey,string>\": \"Record<ObjectKey,string>\" as unknown as Record<string, string>,\n \"Record<ObjectKey,string|number>\": \"Record<ObjectKey,string|number>\" as unknown as Record<string, string | number>,\n \"string[]\": \"string[]\" as unknown as string[],\n \"number[]\": \"number[]\" as unknown as number[],\n \"boolean[]\": \"boolean[]\" as unknown as boolean[],\n} as const;\n\ntype Lookup = Mutable<typeof lookup>;\n\ntype TypeSuggestion = ObjectKeys<typeof lookup>;\n\n/**\n * validates whether the value _extends_ the baseType\n */\nfunction testExtends<T extends Narrowable, U extends AllowableType>(value: T, baseType: U): boolean {\n if (isString(baseType) && keysOf(lookup).includes(baseType as any)) {\n switch (baseType) {\n case \"string\":\n return isString(value);\n case \"string|undefined\":\n return isString(value) || isUndefined(value);\n case \"number\":\n return isNumber(value);\n case \"number|undefined\":\n return isNumber(value) || isUndefined(value);\n case \"string|number\":\n return isNumber(value) || isString(value);\n case \"boolean\":\n return isBoolean(value);\n case \"true\":\n return isTrue(value);\n case \"false\":\n return isFalse(value);\n case \"object\":\n case \"Object\":\n return isObject(value);\n case \"Record<ObjectKey,unknown>\":\n return isDictionary(value);\n case \"Record<ObjectKey,string>\":\n return isDictionary(value) && Object.values(value).every(i => isString(i));\n case \"Record<ObjectKey,string|number>\":\n return isDictionary(value) && Object.values(value).every(i => isString(i) || isNumber(i));\n case \"string[]\":\n return isArray(value) && value.every(i => isString(i));\n case \"number[]\":\n return isArray(value) && value.every(i => isNumber(i));\n case \"boolean[]\":\n return isArray(value) && value.every(i => isBoolean(i));\n }\n }\n\n if (isArray(baseType) && isNarrowableArray(baseType)) {\n if (!isNarrowableArray(value)) {\n return false;\n }\n if (baseType.length !== value.length) {\n return false;\n }\n return value.every((_, i) => testExtends(value[i as number], baseType[i] as AllowableType));\n }\n\n if (isDictionary(baseType)) {\n if (!isDictionary(value)) {\n return false;\n }\n const baseKeys = Object.keys(baseType);\n const valueKeys = Object.keys(value);\n\n // Check if value has all the keys from baseType\n for (const key of baseKeys) {\n if (!isUndefined(baseType[key]) && !hasIndexOf(valueKeys, key)) {\n return false;\n }\n // Recursively test each property\n if (!testExtends((value as any)[key], baseType[key] as AllowableType)) {\n return false;\n }\n }\n return true;\n }\n\n // For scalar values, check direct equality\n if (isScalar(baseType) && isScalar(value)) {\n return value === baseType;\n }\n\n return false;\n}\n\n/** types allowed as input to withValue() */\ntype AllowableType\n = | number | boolean | Suggest<TypeSuggestion>\n | readonly (number | boolean | Suggest<TypeSuggestion>)[]\n | Record<string, string | number | boolean>;\n\ntype ConvertObjType<\n TObj extends Record<string, unknown>,\n TKeys extends readonly (PropertyKey & keyof TObj)[] = As<StringKeys<TObj>, readonly (PropertyKey & keyof TObj)[]>,\n // eslint-disable-next-line ts/no-empty-object-type\n TResult extends Record<string, unknown> = {}\n> = TKeys extends [\n infer Head extends PropertyKey & keyof TObj,\n ...infer Rest extends readonly (PropertyKey & keyof TObj)[]\n]\n ? TObj[Head] extends AllowableType\n ? ConvertObjType<\n TObj,\n Rest,\n TResult & Record<Head, ConvertType<TObj[Head]>>\n >\n : never\n : ExpandRecursively<TResult>;\n\ntype ConvertType<T extends AllowableType>\n = [T] extends [string]\n ? [T] extends [keyof Lookup]\n ? Lookup[T]\n : T\n : [T] extends [number]\n ? T\n : [T] extends [boolean]\n ? T\n : [T] extends [readonly (number | boolean | Suggest<TypeSuggestion>)[]]\n ? {\n [K in keyof T]: T[K] extends AllowableType\n ? ConvertType<T[K]>\n : never\n }\n : [T] extends [Record<string, string | number | boolean>]\n ? ConvertObjType<T>\n : never;\n\n/**\n * **withValue**`(withValue) -> (obj) -> (filtered obj)\n *\n * A _higher-order_ runtime utility which allow you to:\n *\n * - the first call specifies a **type** which you will use for filtering\n * - the second call receives an object and those key/values whose values\n * _extend_ the type defined are kept, the rest are removed.\n *\n * **Note:** for now you can only specify simple types. Soon a full parser will be made available.\n *\n * ```ts\n * // { bar: \"hi\" }\n * const obj = withValue(\"string\")({ foo: 1, bar: \"hi\", baz: 2 });\n * ```\n */\nexport function withValue<\n TWith extends AllowableType\n>(\n withValue: TWith,\n) {\n return <const TObj extends Record<string, N>, N extends Narrowable>(obj: TObj) => {\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(obj)) {\n if (testExtends(obj[key], withValue)) {\n result[key] = obj[key];\n }\n }\n\n return result as WithValue<TObj, ConvertType<TWith>>;\n };\n}\n","import type { BracketNesting, DefaultNesting, Nesting, QuoteNesting } from \"inferred-types/types\";\nimport { err, isString } from \"inferred-types/runtime\";\n\ntype NamedNestingConfig = \"default\" | \"brackets\" | \"quotes\";\n\ntype Returns<\n T extends Nesting | NamedNestingConfig\n> = T extends string\n ? T extends \"default\"\n ? DefaultNesting\n : T extends \"brackets\"\n ? BracketNesting\n : T extends \"quotes\"\n ? QuoteNesting\n : never\n : T & Nesting;\n\nexport function createNestingConfig<\n const T extends Nesting | NamedNestingConfig\n>(\n config: T\n): Returns<T> {\n if (isString(config)) {\n if (config === \"default\" || config === \"brackets\") {\n return {\n \"{\": \"}\",\n \"[\": \"]\",\n \"<\": \">\",\n \"(\": \")\"\n } as Returns<T>;\n }\n else if (config === \"quotes\") {\n return {\n \"\\\"\": \"\\\"\",\n \"'\": \"'\",\n \"`\": \"`\"\n } as Returns<T>;\n }\n else {\n throw err(\"invalid/named-nesting\", `An unknown named nesting type of \"${config}\" was passed into createNestingConfig()!`);\n }\n }\n else {\n return config as Returns<T>;\n }\n}\n","import type { Nesting } from \"inferred-types/types\";\nimport { err, isNestingKeyValue, isNestingTuple } from \"inferred-types/runtime\";\n\nexport function isNestingEnd<\n TChar extends string,\n TNesting extends Nesting\n>(\n char: TChar,\n nesting: TNesting\n) {\n if (isNestingTuple(nesting)) {\n const [start, end] = nesting;\n if (end) {\n return end.includes(char);\n }\n else {\n // When end is undefined, any non-start character ends the nesting\n return !start.includes(char);\n }\n }\n else if (isNestingKeyValue(nesting)) {\n return Object.values(nesting).includes(char);\n }\n else {\n return err(\n `invalid-type/nesting`,\n `The isNestingStart('${char}', nesting) function received an invalid nesting type. Remember that start and end characters MUST be single length characters`,\n { nesting, char }\n );\n }\n}\n","import type { Nesting } from \"inferred-types/types\";\nimport {\n isNestingEnd,\n isNestingKeyValue,\n isNestingTuple,\n isUndefined,\n last,\n reverseLookup\n} from \"inferred-types/runtime\";\n\nexport function isNestingEndMatch<\n TChar extends string,\n TStack extends readonly string[],\n TNesting extends Nesting\n>(\n char: TChar,\n stack: TStack,\n nesting: TNesting\n) {\n if (isNestingEnd(char, nesting) !== true) {\n return false;\n }\n else if (isNestingKeyValue(nesting)) {\n // const match = valuesOf(nesting) as string[];\n const lookup = reverseLookup(nesting);\n if (last(stack) === lookup[char]) {\n return true;\n }\n else {\n return false;\n }\n }\n else if (isNestingTuple(nesting)) {\n const [start, end] = nesting;\n if (isUndefined(end)) {\n return !start.includes(char);\n }\n else {\n return !!end.includes(char);\n }\n }\n}\n","import type { NestingKeyValue } from \"inferred-types/types\";\nimport { hasOnlyStringKeys, hasOnlyStringValues, isDictionary, isString } from \"inferred-types/runtime\";\n\n/**\n * type-guard which validates that `val` is a `NestingKeyValue`\n */\nexport function isNestingKeyValue(val: unknown): val is NestingKeyValue {\n return isDictionary(val)\n && hasOnlyStringKeys(val)\n && hasOnlyStringValues(val)\n && Object.keys(val).every(i => isString(i) && i.length === 1);\n}\n","import type { Nesting } from \"inferred-types/types\";\nimport { err, isNestingKeyValue, isNestingTuple } from \"inferred-types/runtime\";\n\nexport function isNestingStart<\n TChar extends string,\n TNesting extends Nesting\n>(\n char: TChar,\n nesting: TNesting\n) {\n if (isNestingTuple(nesting)) {\n const [start, _] = nesting;\n return start.includes(char);\n }\n else if (isNestingKeyValue(nesting)) {\n return Object.keys(nesting).includes(char);\n }\n else {\n return err(\n `invalid-type/nesting`,\n `The isNestingStart('${char}', nesting) function received an invalid nesting type. Remember that start and end characters MUST be single length characters`,\n { nesting, char }\n );\n }\n}\n","import type { NestingTuple } from \"inferred-types/types\";\nimport { isArray, isString, isUndefined } from \"inferred-types/runtime\";\n\n/**\n * type-guard which validates that `val` is a `NestingTuple`\n *\n * **Related:** `IsNestingTuple<T>`\n */\nexport function isNestingTuple(val: unknown): val is NestingTuple {\n return isArray(val)\n && val.length === 2\n && isArray(val[0])\n && val[0].every(isString)\n && (\n (isArray(val[1]) && val[1].every(isString))\n || isUndefined(val[1])\n );\n}\n","import type {\n FromNamedNestingConfig,\n IsNestingConfig,\n NestedSplit,\n NestedSplitPolicy,\n Nesting,\n NestingConfig__Named,\n RetainUntil__Nested\n} from \"inferred-types/types\";\nimport {\n err,\n isError,\n isNestingKeyValue,\n isNestingTuple,\n isString,\n nestedSplit,\n retainUntil__Nested\n} from \"inferred-types/runtime\";\n\ntype Returns<T extends Nesting | NestingConfig__Named> = IsNestingConfig<T> extends true\n ? NestingApi<FromNamedNestingConfig<T>>\n : Error;\n\nexport type NestingApi<TNesting extends Nesting> = {\n retainUntil<\n const TStr extends string,\n const TFind extends string | readonly string[],\n const TInclude extends boolean = true\n >(\n str: TStr,\n find: TFind,\n incl?: TInclude\n ): TFind extends string\n ? RetainUntil__Nested<TStr, TFind, TInclude, TNesting>\n : RetainUntil__Nested<TStr, TFind[number], TInclude, TNesting>;\n split<\n const TContent extends string,\n const TSplit extends string,\n const TPolicy extends NestedSplitPolicy = \"omit\"\n >(\n content: TContent,\n split: TSplit,\n policy?: TPolicy\n ): NestedSplit<TContent, TSplit, TNesting, TPolicy>;\n};\n\nfunction apiSurface<T extends Nesting | NestingConfig__Named>(nesting: T) {\n return {\n /**\n * calls the `retainUntil__Nested()` function with your nesting configuration.\n */\n retainUntil<\n const TStr extends string,\n const TFind extends string | readonly string[],\n const TInclude extends boolean = true\n\n >(\n str: TStr,\n find: TFind,\n incl: TInclude = true as TInclude\n ) {\n return retainUntil__Nested(str, find, incl, nesting);\n },\n split<\n const TContent extends string,\n const TSplit extends string,\n const TPolicy extends NestedSplitPolicy = \"omit\"\n >(\n content: TContent,\n split: TSplit,\n policy: TPolicy = \"omit\" as TPolicy\n ) {\n return nestedSplit(content, split, nesting, policy);\n }\n\n };\n}\n\nexport function nesting<\n const T extends Nesting | NestingConfig__Named\n>(\n config: T\n): Returns<T> {\n let nesting: Nesting;\n\n if (isString(config)) {\n if (config === \"default\" || config === \"brackets\") {\n nesting = {\n \"{\": \"}\",\n \"[\": \"]\",\n \"<\": \">\",\n \"(\": \")\"\n };\n }\n else if (config === \"quotes\") {\n nesting = {\n \"\\\"\": \"\\\"\",\n \"'\": \"'\",\n \"`\": \"`\"\n };\n }\n else {\n throw err(\"invalid/named-nesting\", `An unknown named nesting type of \"${config}\" was passed into createNestingConfig()!`);\n }\n }\n else {\n if (isNestingTuple(config) || isNestingKeyValue(config)) {\n nesting = config;\n }\n else if (isError(config)) {\n return config as unknown as Returns<T>;\n }\n else {\n return err(\"invalid-nesting\", `The configuration provided to the 'nesting()' function was not a valid nesting configuration`) as unknown as Returns<T>;\n }\n }\n\n return apiSurface(nesting) as Returns<T>;\n}\n","// /* eslint-disable ts/no-explicit-any */\n// /* eslint-disable no-use-before-define */\n// import { RESULT } from \"inferred-types/constants\"\n// import {\n// Ok,\n// Result,\n// AsFunction,\n// Narrowable,\n// Err,\n// ResultErr,\n// ObjectKey,\n// ResultTuple,\n// TupleToUnion,\n// ResultApi,\n// IfEqual,\n// IsOk,\n// IsErr,\n// ErrInput,\n// IsFunction,\n// If,\n// } from \"inferred-types/types\"\n// import { Never } from \"inferred-types/constants\";\n// import { isFunction, isObject, isString } from \"../type-guards/index\";\n// import { toKebabCase } from \"../literals/toKebabCase\";\n// import { asUnion } from \"../type-conversion/asUnion\";\n// import { isRuntimeUnion } from \"../type-guards/isRuntimeUnion\";\n// import { takeProp } from \"../dictionary\";\n// import { kindError } from \"../errors\";\n// import { toPascalCase } from \"../literals\";\n\n// const errInputs: ErrInput = \"undefined\" as const;\n\n// export const isResult = (val: unknown): val is Result => {\n// return typeof val === \"object\" &&\n// \"__kind\" in (val as object) &&\n// \"state\" in (val as object) &&\n// [RESULT.Err, RESULT.Ok].includes((val as any).state)\n// }\n\n// function resultTuple<\n// T,\n// E extends ErrInput\n// >(val: T, err: E) {\n// return {\n// __kind: [\"Result\", val, err]\n// } as ResultTuple<T,E>;\n// }\n\n// export const asResult = <\n// T,\n// E extends ErrInput\n// >(val: T, err: E): ResultApi<T,E> => ({\n// kind: \"Result API\",\n// result: null as unknown as Result<T,E>,\n// ok: (v) => {\n// return {\n// ...resultTuple(val,err), state: RESULT.Ok, val: v\n// } as Ok<T>\n// },\n// err: (e) => {\n// return {\n// ...resultTuple(val,err),\n// state: RESULT.Err,\n// err: transformErrInput(e)\n// } as unknown as Err<E>\n// },\n// isErr: (v) => {\n// return isResult(v) && v.state === RESULT.Err;\n// },\n// isOk: (v) => {\n// return isResult(v) && v.state === RESULT.Ok;\n// },\n// okOrElse: (result, otherwise) => {\n// return result.state === RESULT.Ok\n// ? result.val\n// : typeof otherwise === \"function\"\n// ? otherwise(result)\n// : otherwise\n// },\n// okOrThrow: (result) => {\n// if (isErr(result)) {\n// const { msg, kind, context } = result.err;\n// throw kindError(kind)(msg, context);\n// }\n// }\n// }) as ResultApi<T,E>;\n\n// /**\n// * **ok**(val)\n// *\n// * Places a value into the `Ok` state of a `Result` structure.\n// *\n// * Note: if you need/want the value to be narrowly typed then use `okN()` instead.\n// */\n// export function ok<\n// T,\n// E extends ErrInput\n// >(val: T, _err: E = errInputs as E): IfEqual<E, ErrInput, Ok<T>, Ok<T,E>> {\n// const tuple = resultTuple(val, _err) as unknown as ResultTuple<T,E>;\n// return { ...tuple, state: RESULT.Ok, val }\n// }\n\n// /**\n// * **ok**(val)\n// *\n// * Places a value into the `Ok` state of a `Result` structure.\n// *\n// * Note: this can only receive _narrowable_ types in order to provide the\n// * narrowest type possible for `T` but if you don't need this then use the\n// * `ok(val)` function instead.\n// */\n// export function okN<\n// T extends Narrowable,\n// E extends ErrInput\n// >(val: T, _err: E = errInputs as E): Ok<T> {\n// const tuple = resultTuple(val, \"unknown\") as unknown as ResultTuple<T,E>;\n// return { ...tuple, state: RESULT.Ok, val }\n// }\n\n// /**\n// * Used to convert an `ErrInput` into `ResultErr[]`\n// */\n// const transformErrInput = <\n// T extends ErrInput\n// >(input: T): TupleToUnion<Err<T>> => {\n// const members = (\n// isRuntimeUnion(input)\n// ? input.members\n// : typeof input === \"string\"\n// ? [{ msg: input, kind: toKebabCase(input as string), context: {} }]\n// : typeof input === \"object\"\n// ? [{\n// msg: takeProp((input as Record<ObjectKey, unknown>), \"msg\", \"\" as string),\n// kind: toKebabCase(takeProp((input as Record<ObjectKey, unknown>), \"kind\", \"unspecified-kind\") as string),\n// context: takeProp((input as Record<ObjectKey, unknown>), \"context\", {} as NonNullable<unknown>),\n// trace: takeProp((input as Record<ObjectKey, unknown>), \"trace\", false),\n// }]\n// : Array.isArray(input)\n// ? input\n// : Never\n// ) as ResultErr[];\n\n// const union = asUnion(...members);\n\n// return union as unknown as TupleToUnion<Err<T>>;\n// }\n\n// /**\n// * **createErr**(e) → `<ResultErr>`\n// *\n// * Creates a reusable error template which will allow for:\n// *\n// * - a strict `kind` definition\n// * - a _shape_ and default values for the `context` property\n// * - a strict `stack` definition (default is false)\n// *\n// * The `msg` property will be left as `string` allowing each variant of\n// * this type of error to add their own.\n// */\n// export const createErr = <\n// TKind extends string,\n// TContextDefn extends Record<string, unknown> = NonNullable<unknown>\n// >(kind: TKind, contextDefn?: TContextDefn) => {\n// return {\n// msg: \"\" as string,\n// kind,\n// context: (contextDefn || {}) as TContextDefn\n// } as ResultErr<TKind, TContextDefn>\n// }\n\n// /**\n// * **err**(input) -> Err`<E>`\n// *\n// * Creates a `Err` error for use inside a `Result<T,E>` block.\n// */\n// export function err<\n// TErr extends string | ResultErr<any, any>,\n// TVal = unknown\n// >(\n// err: TErr,\n// _val: TVal = null as unknown as ErrInput as TVal\n// ): IfEqual<TVal, unknown, Err<TErr>, Err<TErr,TVal>> {\n// return {\n// ...(resultTuple(_val, err)),\n// state: RESULT.Err,\n// err: transformErrInput(err)\n// } as unknown as IfEqual<TVal, unknown, Err<TErr>, Err<TErr,TVal>>\n// }\n\n// /**\n// * **isOk**(result)\n// *\n// * Type guard which tests whether the `Result<T,E>` is in the **Ok** state.\n// */\n// export const isOk = <\n// T,\n// >(result: Result<T>): result is T & Ok<T> => {\n// return result.state === RESULT.Ok;\n// }\n\n// /**\n// * **okOrThrow**(result)\n// *\n// * Returns the Ok _value_ if it's in the Ok status; otherwise throws\n// * an error.\n// */\n// export function okOrThrow<\n// R extends Result<T,E>,\n// T = undefined,\n// E extends ErrInput = ErrInput\n// >(result: R): IsOk<R> extends true ? T : never {\n// if(result.state === RESULT.Err) {\n// if (typeof result.err === \"string\") {\n// throw new Error(result.err);\n// } else {\n// let e = new Error(result.err.msg);\n// for (const key of Object.keys(result.err)) {\n// if(key !== \"msg\") {\n// e = {...e, [key]: result.err[key as keyof typeof result.err]}\n// }\n// }\n// throw e;\n// }\n// }\n// return result.val as IsOk<R> extends true ? T : never;\n// }\n\n// /**\n// * **okOrElse**(result, els)\n// *\n// * Returns the _value_ of the `Result<T,E>` if in the **Ok** state, otherwise\n// * returns `els`.\n// *\n// * - **Note:** if `els` is a function it will be called while passing the error\n// * object to the function.\n// */\n// export function okOrElse<\n// R extends Result<T,E>,\n// T,\n// E extends ResultErr,\n// Els\n// >(\n// result: R,\n// els: Els\n// ): IsOk<R> extends true ? T : If<IsFunction<Els>, ReturnType<AsFunction<Els>>, Els> {\n// return result.state === RESULT.Err\n// ? isFunction(els)\n// ? els(result.err)\n// : els\n// : result.val;\n// }\n\n// export function isErr<\n// T,\n// E extends ErrInput\n// >(result: Result<T,E>): result is Err<E,T> {\n// return (\n// isString(result)\n// ? {\n// state: RESULT.Err,\n// err:{\n// msg: result,\n// kind: toPascalCase(result),\n// context: {},\n// stack: false\n// }\n// }\n// : isObject(result)\n// ? {\n// state: RESULT.Err,\n// err: {\n// msg: result.err.msg || \"no message\",\n// kind: takeProp(result, \"kind\", \"no-kind\"),\n// context: takeProp(result, \"context\", {}),\n// stack: takeProp(result, \"stack\", false)\n// }\n// }\n// : false\n// )\n// ? true\n// : false\n// }\n\n// /**\n// * **assertErr**(result)\n// *\n// * Asserts that a _result_ is of the `Err` type.\n// */\n// export function assertErr<\n// T\n// >(result: T): IsErr<T> {\n// return (\n// typeof result === \"object\" &&\n// (result as any).state === RESULT.Err && \"err\" in (result as object) && (\n// typeof (result as any).err === \"string\" ||\n// typeof (result as any).err === \"object\"\n// )\n// ? true\n// : false\n// ) as IsErr<typeof result>;\n// }\n\nexport const result = \"NOT READY\";\n","import type { IsTemplateLiteral } from \"inferred-types/types\";\nimport { isString } from \"inferred-types/runtime\";\n\n/**\n * **isStaticTemplate(val)** -> boolean\n *\n * Tests whether the passed in `val` has static template tags (e.g., `{{string}}`,\n * `{{number}}`, etc.). If the string passed in is a literal string the resolution\n * to a discrete `true`/`false` value should be able to be done at design time.\n */\nexport function isStaticTemplate<T extends string>(val: T): IsTemplateLiteral<T> {\n return isString(val)\n ? val.includes(\"{{string}}\") || val.includes(\"{{number}}\") || val.includes(\"{{boolean}}\")\n ? true as IsTemplateLiteral<T>\n : \"maybe\" as unknown as IsTemplateLiteral<T>\n : false as IsTemplateLiteral<T>;\n}\n","import type {\n NUMERIC_CHAR,\n} from \"inferred-types/constants\";\nimport type {\n GetUrlDynamics,\n GetUrlPath,\n GetUrlPort,\n GetUrlProtocol,\n GetUrlQueryParams,\n GetUrlSource,\n IsIp4Address,\n IsIp6Address,\n IsIpAddress,\n IsUrl,\n NetworkProtocol,\n} from \"inferred-types/types\";\nimport {\n NETWORK_PROTOCOL_LOOKUP,\n Never,\n PROTOCOL_DEFAULT_PORTS,\n} from \"inferred-types/constants\";\nimport {\n ensureLeading,\n hasOverlappingKeys,\n hasProtocol,\n infer,\n isCsv,\n isDomainName,\n isIp4Address,\n isIp6Address,\n isIpAddress,\n isNumberLike,\n isUrl,\n isVariable,\n stripAfter,\n stripBefore,\n stripLeading,\n stripTrailing,\n} from \"inferred-types/runtime\";\n\nexport interface UrlMeta<T> {\n /** the URL passed in */\n url: T;\n /** boolean flag indicating whether the value passed in is considered a valid URL */\n isUrl: IsUrl<T>;\n /** the `NetworkProtocol` used in the URL */\n protocol: GetUrlProtocol<T>;\n path: T extends string ? GetUrlPath<T> : never;\n queryParams: T extends string ? GetUrlQueryParams<T> : never;\n /** the port number -- when stated explicitly -- or \"default\" */\n port: GetUrlPort<T>;\n\n /** either the domain name or the IP address */\n source: T extends string\n ? GetUrlSource<T>\n : never;\n /**\n * Boolean flag which indicates that the _source_ is an IP address (vs. Domain Name)\n */\n isIpAddress: IsIpAddress<T>;\n /**\n * Boolean flag indicating the _source_ is a IPv4 IP address\n */\n isIpV4Address: IsIp4Address<T>;\n\n /**\n * Boolean flag indicating the _source_ is a IPv6 IP address\n */\n isIpV6Address: IsIp6Address<T>;\n}\n\nconst PROTOCOLS = Object.values(NETWORK_PROTOCOL_LOOKUP).flat().filter(i => i !== \"\") as NetworkProtocol[];\n\nexport function getUrlProtocol<\n T extends string,\n>(url: T) {\n const proto = PROTOCOLS.find(p => url.startsWith(`${p}://`));\n\n return proto as GetUrlProtocol<T>;\n}\n\nexport function removeUrlProtocol<T extends string>(url: T) {\n return stripBefore(url, \"://\");\n}\n\nfunction ensurePath(val: string) {\n const val2 = ensureLeading(val, \"/\");\n\n return val === \"\"\n ? \"\"\n : stripTrailing(val2, \"/\");\n}\n\nexport function getUrlPath<\n T extends string,\n>(url: T) {\n return isUrl(url)\n ? ensurePath(\n stripAfter(stripBefore(removeUrlProtocol(url), \"/\"), \"?\"),\n ) as unknown as GetUrlPath<T>\n : Never;\n}\n\n/**\n * **getUrlQueryParams**`(url, [specific])`\n *\n * Get's the query parameter's part of a URL and optionally allows\n * you to focus in on a specific key in the query parameters.\n *\n * If you do specify a particular query parameter it will decode\n * the value with URIDecode.\n */\nexport function getUrlQueryParams<\n T extends string,\n S extends string | undefined,\n>(url: T, specific: S = undefined as S) {\n const qp = stripBefore(url, \"?\");\n if (specific) {\n return (\n qp.includes(`${specific}=`)\n ? decodeURIComponent(\n stripAfter(\n stripBefore(qp, (`${specific}=`)),\n \"&\",\n ).replace(/\\+/g, \"%20\"),\n )\n : undefined\n );\n }\n\n return (\n qp === \"\"\n ? qp\n : `?${qp}`\n ) as GetUrlQueryParams<T, S>;\n}\n\n/**\n * **getUrlDefaultPort**`(url)`\n *\n * Returns the default port which the given URL string would use\n * based on the protocol detected in this string.\n */\nexport function getUrlDefaultPort<T extends string>(url: T) {\n const proto = getUrlProtocol(url);\n return proto in PROTOCOL_DEFAULT_PORTS\n ? PROTOCOL_DEFAULT_PORTS[proto as keyof typeof PROTOCOL_DEFAULT_PORTS]\n : null as never;\n}\n\nconst _numeric = null as unknown as typeof NUMERIC_CHAR[number];\n\n/**\n * **getUrlPort**`(url, [resolve])`\n *\n * Find the URL port specified in the passed in URL.\n *\n * - return \"default\" if no explicit url was expressed\n * - if you set `resolve` to **true** it will resolve URL's which\n * don't explicitly state their port to\n */\nexport function getUrlPort<\n T extends string,\n R extends boolean,\n>(\n url: T,\n resolve: R = false as R,\n): GetUrlPort<T, R> {\n const re = /.*:(\\d{2,3})/;\n const match = url.match(re);\n\n return (\n re.test(url) && match && isNumberLike(Array.from(match)[1])\n ? Number(Array.from(match)[1])\n : resolve\n ? getUrlDefaultPort(url)\n : hasProtocol(url)\n ? `default`\n : null as never\n ) as unknown as GetUrlPort<T, R>;\n}\n\n/**\n * **getUrlSource**`(url)`\n *\n * Extracts the `source` part of the url.\n *\n * - this is the DNS name if DNS is used\n * - or an IP address\n */\nexport function getUrlSource<\n T extends string,\n>(url: T) {\n const candidate = stripAfter(stripAfter(stripAfter(removeUrlProtocol(url), \"/\"), \"?\"), \":\") as unknown;\n\n return (\n isIpAddress(candidate) || isDomainName(candidate)\n ? candidate\n : Never\n ) as unknown as GetUrlSource<T>;\n}\n\nexport function getUrlBase<\n T extends string,\n>(url: T) {\n const path = getUrlPath(url);\n const remaining = stripAfter(url, path);\n\n return remaining as `${GetUrlProtocol<T>}://${GetUrlSource<T>}`;\n};\n\nexport function getUrlDynamics<T extends string>(\n url: T,\n): GetUrlDynamics<T> {\n const path = getUrlPath(url);\n const qp = getUrlQueryParams(url) as `?${string}`;\n\n const pathParts = path.startsWith(\"<\")\n ? path.split(\"<\").map(i => ensureLeading(i, \"<\"))\n : path.split(\"<\").map(i => ensureLeading(i, \"<\")).slice(1);\n\n const segmentTypes = [\n \"string\",\n \"number\",\n \"boolean\",\n \"Opt<string>\",\n \"Opt<number>\",\n \"Opt<boolean>\",\n ];\n\n const pathVars: Record<string, string> = {};\n const findPathTyped = infer(`<{{infer name}} as {{infer type}}>`);\n const findPathUnion = infer(`<{{infer name}} as string({{infer union}})>`);\n const findPathNamed = infer(`<{{infer name}}>`);\n for (const part of pathParts) {\n const union = findPathUnion(part as string);\n const typed = findPathTyped(part as string);\n const named = findPathNamed(part as string);\n if (union) {\n if (isVariable(union.name) && isCsv(union.union)) {\n pathVars[union.name] = `string(${union.union})`;\n }\n }\n else if (\n typed\n && segmentTypes.includes(typed.type)\n && isVariable(typed.name)\n ) {\n pathVars[typed.name] = typed.type;\n }\n else if (\n named\n && isVariable(named.name)\n ) {\n pathVars[named.name] = \"string\";\n }\n }\n\n const qpVars: Record<string, string> = {};\n const qpParts = stripLeading(qp, \"?\").split(\"&\");\n\n for (const p of qpParts) {\n const union = infer(`{{infer var}}=<string({{infer params}})>`)(p);\n const dynamic = infer(`{{infer var}}=<{{infer val}}>`)(p);\n const fixed = infer(`{{infer var}}={{infer val}}`)(p);\n\n if (\n union\n && isVariable(union.var)\n && isCsv(union.params)\n ) {\n qpVars[union.var] = `string(${union.params})`;\n }\n else if (\n dynamic\n && isVariable(dynamic.var)\n && segmentTypes.includes(dynamic.val)\n ) {\n qpVars[dynamic.var] = dynamic.val;\n }\n else if (\n fixed\n && isVariable(fixed.var)\n ) {\n qpVars[fixed.var] = fixed.val;\n }\n }\n\n return {\n pathVars,\n qpVars,\n allVars: hasOverlappingKeys(pathVars, qpVars)\n ? null\n : {\n ...pathVars,\n ...qpVars,\n },\n } as unknown as GetUrlDynamics<T>;\n}\n\n/**\n * **urlMeta**`(url)`\n *\n * Analyzes the string passed in and provides a small dictionary of\n * metadata properties about the URL.\n */\nexport function urlMeta<\n T extends string,\n>(\n url: T,\n) {\n return {\n url,\n isUrl: isUrl(url) as IsUrl<T>,\n protocol: getUrlProtocol(url) as GetUrlProtocol<T>,\n path: getUrlPath(url) as GetUrlPath<T>,\n queryParameters: getUrlQueryParams(url),\n params: getUrlDynamics<T>,\n port: getUrlPort(url),\n source: getUrlSource(url) as GetUrlSource<T>,\n isIpAddress: isIpAddress(getUrlSource(url) as string) as IsIpAddress<GetUrlSource<T>>,\n isIp4Address: isIp4Address(getUrlSource(url) as string) as IsIp4Address<GetUrlSource<T>>,\n isIp6Address: isIp6Address(getUrlSource(url)) as IsIp6Address<GetUrlSource<T>>,\n };\n}\n","import type {\n As,\n GetYouTubePageType,\n YouTubeEmbedUrl,\n YouTubePageType,\n YouTubeShareUrl,\n YouTubeUrl,\n YouTubeVideoUrl,\n} from \"inferred-types/types\";\nimport { Never } from \"inferred-types/constants\";\nimport {\n getUrlPath,\n getUrlQueryParams,\n hasUrlQueryParameter,\n isYouTubeCreatorUrl,\n isYouTubeFeedUrl,\n isYouTubeShareUrl,\n isYouTubeUrl,\n isYouTubeVideosInPlaylist,\n isYouTubeVideoUrl,\n last,\n} from \"inferred-types/runtime\";\n\n/**\n * **YouTubeMeta**`<T>`\n *\n * Provides metadata about YouTube related URLs.\n */\nexport interface YouTubeMeta<T extends string> {\n /**\n * The URL passed in\n */\n url: T;\n /**\n * boolean flag indicating whether the URL is a valid\n * YouTube URL.\n */\n isYouTubeUrl: T extends YouTubeUrl ? true : false;\n\n /**\n * boolean flag indicating whether URL is part of YouTube's `https://youtu.be`\n * URL shortener used when _sharing_ videos.\n */\n isShareUrl: T extends YouTubeShareUrl ? true : false;\n\n pageType: As<\n GetYouTubePageType<T>,\n YouTubePageType\n >;\n}\n\n/**\n * **getYouTubePageType**`(url)`\n *\n * Returns a `YouTubePageType` description based on the url passed in (assuming\n * that URL is for YouTube). Returns _never_ if not a YouTube URL.\n */\nexport function getYouTubePageType<T extends string>(url: T) {\n return (\n isYouTubeUrl(url)\n ? isYouTubeVideoUrl(url) && (hasUrlQueryParameter(url, \"v\") || isYouTubeShareUrl(url))\n ? hasUrlQueryParameter(url, \"list\")\n ? isYouTubeShareUrl(url)\n ? hasUrlQueryParameter(url, \"t\")\n ? `play::video::in-list::share-link::with-timestamp`\n : `play::video::in-list::share-link`\n : `play::video::in-list`\n : isYouTubeShareUrl(url)\n ? hasUrlQueryParameter(url, \"t\")\n ? `play::video::solo::share-link::with-timestamp`\n : `play::video::solo::share-link`\n : `play::video::solo`\n : isYouTubeCreatorUrl(url)\n ? getUrlPath(url).includes(\"/videos\")\n ? \"creator::videos\"\n : getUrlPath(url).includes(\"/playlists\")\n ? \"creator::playlists\"\n : last(getUrlPath(url).split(\"/\")).startsWith(\"@\")\n || getUrlPath(url).includes(\"/featured\")\n ? \"creator::featured\"\n : \"creator::other\"\n : isYouTubeFeedUrl(url)\n ? isYouTubeFeedUrl(url, \"history\")\n ? \"feed::history\"\n : isYouTubeFeedUrl(url, \"playlists\")\n ? \"feed::playlists\"\n : isYouTubeFeedUrl(url, \"liked\")\n ? \"feed::liked\"\n : isYouTubeFeedUrl(url, \"subscriptions\")\n ? \"feed::subscriptions\"\n : isYouTubeFeedUrl(url, \"trending\")\n ? \"feed::trending\"\n : \"feed::other\"\n : isYouTubeVideosInPlaylist(url)\n ? \"playlist::show\"\n : \"other\"\n : Never\n ) as unknown as GetYouTubePageType<T>;\n}\n\n/**\n * **youtubeEmbed**`(url)`\n *\n * Takes a Video URL from YouTube and converts it to a \"embed\" URL\n * that can be put into an iframe.\n */\nexport function youtubeEmbed(url: YouTubeVideoUrl) {\n if (hasUrlQueryParameter(url, \"v\")) {\n const id = getUrlQueryParams(url, \"v\");\n return `https://www.youtube.com/embed/${id}` as YouTubeEmbedUrl;\n }\n else if (isYouTubeShareUrl(url)) {\n const id = url.split(\"/\").pop() as string;\n if (id) {\n return `https://www.youtube.com/embed/${id}` as YouTubeEmbedUrl;\n }\n else {\n throw new Error(`Unexpected problem parsing share URL -- \"${url}\" -- into a YouTube embed URL`);\n }\n }\n else {\n throw new Error(`Unexpected URL structure; unable to convert \"${url}\" to a YouTube embed URL`);\n }\n}\n\n/**\n * **youtube**`(url)`\n *\n * Takes a YouTube URL and converts it to a meta-data object\n * that helps describe the intent of the URL.\n */\nexport function youtubeMeta<T extends string>(url: T): YouTubeMeta<T> {\n return (\n isYouTubeUrl(url)\n ? {\n url,\n isYouTubeUrl: true,\n isShareUrl: isYouTubeShareUrl(url),\n pageType: getYouTubePageType(url) as unknown as GetYouTubePageType<T>,\n }\n : {\n url,\n isYouTubeUrl: false,\n }\n ) as unknown as YouTubeMeta<T>;\n}\n","import type {\n FifoQueue,\n FixedLengthArray,\n Narrowable\n} from \"inferred-types/types\";\n\nfunction queue<\n T extends unknown[],\n>(state: T): FifoQueue<T[number]> {\n return {\n queue: state,\n size: state.length,\n isEmpty() {\n return state.length === 0;\n },\n clear() {\n state.slice(0, 0);\n },\n drain() {\n const old_state = [...state];\n state.slice(0, 0);\n return old_state;\n },\n push(...add) {\n state.push(...add);\n },\n drop(quantity) {\n if (quantity && quantity > state.length) {\n throw new Error(\"Cannot drop more elements than present in the queue\");\n }\n state.splice(0, quantity || 1);\n },\n take<Q extends number | undefined>(quantity?: Q) {\n if (quantity && quantity > state.length) {\n throw new Error(\"Cannot take more elements than present in the queue\");\n }\n const result = state.slice(0, quantity || 1);\n state.splice(0, quantity || 1);\n return result as FixedLengthArray<T[number], Q extends undefined ? 1 : Q>;\n },\n * [Symbol.iterator]() {\n for (let i = 0; i < state.length; i++) {\n yield state[i] as T[number];\n }\n },\n };\n}\n\nexport function createFifoQueue<\n T extends readonly K[],\n K extends Narrowable,\n>(...list: T) {\n return queue([...list]);\n}\n","import type { FixedLengthArray, LifoQueue, Narrowable } from \"inferred-types/types\";\n\nfunction queue<\n T extends unknown[],\n>(state: T): LifoQueue<T[number]> {\n return {\n queue: state,\n size: state.length,\n isEmpty() {\n return state.length === 0;\n },\n push(...add) {\n state.push(...add);\n },\n drop(quantity) {\n state.splice(-quantity!);\n },\n clear() {\n state.slice(0, 0);\n },\n drain() {\n const old_state = [...state];\n state.slice(0, 0);\n return old_state;\n },\n take<Q extends number | undefined>(quantity?: Q) {\n const result = state.slice(-quantity!);\n state.splice(-quantity!);\n return result as FixedLengthArray<T[number], Q extends undefined ? 1 : Q>;\n },\n * [Symbol.iterator]() {\n for (let i = state.length - 1; i >= 0; i--) {\n yield state[i] as T[number];\n }\n },\n };\n}\n\nexport function createLifoQueue<\n T extends readonly K[],\n K extends Narrowable,\n>(...list: T) {\n return queue([...list]);\n}\n","import type {\n AsFromTo,\n Dictionary,\n RegexHandlingStrategy,\n RegularExpression,\n ReplaceAllFromTo,\n Surround,\n} from \"inferred-types/types\";\nimport { err } from \"inferred-types/runtime\";\n\ntype TemplateToRegex = AsFromTo<{\n \"{{string}}\": \"(.+?)\";\n \"{{number}}\": \"(\\\\d+)\";\n \"{{boolean}}\": \"(true|false)\";\n}>;\n\nfunction escapeRegExp(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nfunction replaceAllFromTo<\n TContent extends string,\n TFromTo extends Dictionary<K, V>,\n K extends string,\n V extends string\n>(\n content: TContent,\n fromTo: TFromTo\n) {\n let output: string = content;\n\n for (const key of Object.keys(fromTo)) {\n output = output.replace(new RegExp(escapeRegExp(key), \"g\"), fromTo[key as K]);\n }\n\n return output as unknown as ReplaceAllFromTo<TContent, AsFromTo<TFromTo>>;\n}\n\ntype RegexPattern<\n TContent extends string,\n THandling extends RegexHandlingStrategy,\n> = THandling extends \"exact\"\n ? Surround<ReplaceAllFromTo<TContent, TemplateToRegex>, \"^\", \"$\">\n : Surround<ReplaceAllFromTo<TContent, TemplateToRegex>, \".*(\", \").*\">;\n\n/**\n * **createTemplateRegExp**`(template, [handling]) -> (api)`\n *\n * A higher order function which:\n *\n * - on the first call you provide a static template which can leverage _dynamic\n * segments_ with the `{{string}}`, `{{number}}`, `{{boolean}}` tags.\n * - you can also specify a \"strategy\":\n * - **exact** _(default strategy)_ - look for an exact match of the template provided\n * - **subset** - look for the template as a _subset_/_sub-string_ of a larger string;\n * this allows text both before and after the template and will also add another grouping\n * level.\n *\n * What's returned from the first call is an API surface which mimics a regular expression API surface.\n *\n * - the `test()` utility returns a boolean value and _tries_ to resolve whether it is\n * true or false at _design time_ where possible.\n *\n * - the `exec()` function tests for matches of not only an overall pattern but sub-patterns\n * which would be defined by parenthesis in regular RegExp but in our case the _dynamic segments_\n * defined by string like `{{string}}`, etc.\n * - if there is a match then an array will be returned:\n * - the 0 index is always the full text which produced the match\n * - if you used the **subset** strategy then index 1 will be the text\n * which matched the whole static template (but excluding any _preamble_ or _prolog_)\n * - all remaining indexes reference the various _dynamic regions_ (e.g., `{{string}}`, etc.)\n * specified in your template.\n * - the \"type\" of the dynamic segment will be used in the search and the\n * type will set appropriately (e.g., a `{{number}}` dynamic segment will\n * result in a numeric type)\n * - if a match is NOT found then an error of the type \"no-match\" will be returned.\n */\nexport function createTemplateRegExp<\n TContent extends string,\n THandling extends RegexHandlingStrategy = \"exact\"\n>(\n template: TContent,\n handling: THandling = \"exact\" as THandling\n) {\n /** safe characters used instead of curlies */\n const safe = replaceAllFromTo(template, {\n \"{{string}}\": \"__STRING__\",\n \"{{number}}\": \"__NUMBER__\",\n \"{{boolean}}\": \"__BOOLEAN__\",\n });\n\n const escaped = escapeRegExp(safe);\n\n const finalPattern = replaceAllFromTo(escaped, {\n \"__STRING__\": \"(.+?)\",\n \"__NUMBER__\": \"(\\\\d+)\",\n \"__BOOLEAN__\": \"(true|false)\",\n });\n\n type Pattern = RegexPattern<TContent, THandling>;\n\n const innerPattern = finalPattern;\n const fullPattern = handling === \"exact\"\n ? `^${innerPattern}$`\n : `.*(${innerPattern}).*`;\n\n const regex = new RegExp(fullPattern);\n\n // capture the dynamic segment types in order of appearance\n const segmentTypes = Array.from(template.matchAll(/\\{\\{(string|number|boolean)\\}\\}/g)).map(i => i[1]);\n\n const api: RegularExpression<Pattern> = {\n kind: \"RegexpArray\",\n pattern: fullPattern as Pattern,\n\n test(test: string) {\n return regex.test(test) as any;\n },\n exec<T extends string>(test: T) {\n const m = regex.exec(test);\n if (!m) {\n return err(\"no-match\") as any;\n }\n\n const offset = handling === \"exact\" ? 1 : 2;\n\n const out: any[] = [];\n // full match\n out.push(m[0]);\n // subset captured whole template match\n if (handling === \"subset\") {\n out.push(m[1]);\n }\n // dynamic segments\n for (let i = 0; i < segmentTypes.length; i++) {\n const segType = segmentTypes[i];\n const raw = m[i + offset];\n const val = segType === \"number\"\n ? Number(raw)\n : segType === \"boolean\"\n ? raw === \"true\"\n : raw;\n out.push(val);\n }\n\n // enrich to be array-like RegExpExecArray\n const result: any = Object.assign([], out);\n for (let i = 0; i < out.length; i++) {\n result[i] = out[i];\n }\n result.index = m.index;\n result.input = m.input;\n result.groups = m.groups;\n result.kind = \"RegexArray\";\n result.template = template;\n result.matchStrategy = handling;\n return result;\n },\n toString() { return regex.toString(); }\n };\n\n return api;\n}\n","import type { Err } from \"inferred-types/types\";\nimport { asTypeSubtype, toKebabCase, toPascalCase } from \"inferred-types/runtime\";\n\nexport function asTypedError<\n TType extends string,\n TMsg extends string\n>(\n classification: TType,\n msg: TMsg\n) {\n const [type, subType] = asTypeSubtype(classification);\n const err = new Error(msg) as Err<TType, TMsg>;\n err.name = toPascalCase(type);\n err.type = toKebabCase(type);\n err.subType = toKebabCase(subType);\n\n return err;\n}\n","import { isFunction } from \"inferred-types/runtime\";\n\nexport interface AsUnionOptions {\n /** prefix text for runtime type if desired */\n prefix?: string;\n /** postfix text for runtime type if desired */\n postfix?: string;\n /**\n * and encoder to change string representation of each\n * of the elements\n */\n encoder?: ((input: string) => string) | null;\n}\n\nconst defaultOptions: Required<AsUnionOptions> = {\n prefix: \"\",\n postfix: \"\",\n encoder: null,\n};\n\n/**\n * Allows you to create a runtime \"token\" while specifying what it's union type is.\n */\nexport function asUnion<\n TElements extends readonly N[],\n N extends (string | number | boolean),\n TSep extends string,\n TOpt extends AsUnionOptions,\n>(\n /**\n * The elements of a union\n */\n elements: TElements,\n /** the separator to use in runtime type */\n sep: TSep = \" | \" as TSep,\n\n options: TOpt = {} as TOpt,\n) {\n const opts = {\n ...defaultOptions,\n ...options,\n };\n\n const encoder = opts.encoder;\n\n return isFunction(encoder)\n ? `${opts.prefix}${elements.map(i => encoder(`${i}`)).join(sep)}${opts.postfix}` as TElements[number]\n : `${opts.prefix}${elements.join(sep)}${opts.postfix}` as TElements[number];\n}\n","// /* eslint-disable ts/no-explicit-any */\n// /* eslint-disable no-use-before-define */\n// import {\n// Choice,\n// ChoiceValue,\n// AsChoice,\n// Scalar,\n// CreateChoice,\n// ChoiceCallback,\n// ChoiceApiOptions,\n// ChoiceApiConfig,\n// ChoiceApi\n// } from \"inferred-types/types\";\n// import { isDoneFn, isFunction, isString, isTuple, isUndefined } from \"../type-guards/index\";\n// import { shape } from \"./shape\";\n// import { Never } from \"inferred-types/constants\";\n\n// export const createChoice: CreateChoice = <\n// TName extends string,\n// TValue extends ChoiceValue\n// >(name: TName, value?: TValue) => {\n// const result: any = isUndefined(value)\n// ? { name, value: name }\n// : isFunction(value)\n// ? { name, value: value(shape) }\n// : { name, value }\n\n// return (\n// isDoneFn(result)\n// ? result.done()\n// : result\n// ) as AsChoice<TName,TValue>;\n// }\n\n// const configureChoiceApi = <\n// TChoices extends readonly Choice[],\n// TOptions extends ChoiceApiOptions\n// >(\n// choices: TChoices,\n// options: TOptions\n// ): ChoiceApiConfig<TChoices,TOptions> => ({\n// done: () => ({} as unknown as ChoiceApi<TChoices,TOptions>),\n// allowChoicesToBeUsedOnlyOnce: () => configureChoiceApi(\n// choices,\n// {...options, unique: true}\n// ),\n// allowChoicesToBeUsedMultipleTimes: () => configureChoiceApi(\n// choices,\n// {...options, unique: false}\n// ),\n// setStyle: (style) => configureChoiceApi(\n// choices,\n// {...options, style}\n// ),\n// maximumChoices: (max) => configureChoiceApi(\n// choices,\n// {...options, max}\n// )\n// });\n\n// const toChoices = <\n// T extends readonly (string | [string, Scalar] | Choice | ChoiceCallback)[]\n// >(values: T) => {\n// return values.map(i => isString(i)\n// ? {name: i, value: i }\n// : isTuple(s => s.string(), s => s.union(\"Scalar\"))(i)\n// ? {name: i[0], value: i[1]}\n// : Never\n// );\n// }\n\n// export const createChoiceApi = <\n// TChoices extends readonly (string | [string, Scalar] | Choice | ChoiceCallback)[]\n// >(...choices: TChoices) => {\n// configureChoiceApi(toChoices(choices), {\n// unique: true,\n// max: null,\n// style: \"fn\"\n// })\n// }\n\nexport const choices = \"NOT READY\";\n","import type { DefineObject, DefineObjectWith, FromInputToken__Object, StringKeys } from \"inferred-types/types\";\n\nexport function defineObjectWith<\n TMapper extends DefineObject\n>(_mapper: TMapper) {\n type Mapper = FromInputToken__Object<TMapper>;\n\n return <TDefn extends Record<string, StringKeys<Mapper>[number]>>(defn: TDefn) => {\n return {\n kind: \"define-object-with\",\n defn,\n type: null as unknown as DefineObjectWith<\n TDefn,\n Mapper\n >[\"type\"]\n } as DefineObjectWith<TDefn, Mapper>;\n };\n}\n","import type {\n InputToken,\n Narrowable,\n} from \"inferred-types/types\";\nimport {\n isArray,\n isBoolean,\n isDefineObject,\n isDefineTuple,\n isDictionary,\n isFalse,\n isInputToken,\n isNarrowable,\n isNull,\n isNumber,\n isString,\n isTrue,\n isUndefined,\n} from \"inferred-types/runtime\";\n\nexport type DoesExtendTypeguard<\n T extends Narrowable,\n> = <TVal extends Narrowable>(val: TVal) => val is T & TVal;\n\n/**\n * **doesExtend**`(type) => (value) => boolean`\n *\n * A higher order utility where the first call provides a type definition\n * and the subsequent call tests whether the value passed in _extends_\n * the type.\n */\nexport function doesExtend<\n TType extends InputToken\n>(\n type: TType,\n) {\n return <T extends Narrowable>(val: T): boolean => {\n if (isInputToken(type)) {\n if (isString(type)) {\n if (type === \"string\") {\n return isString(val);\n }\n else if (type.startsWith(\"string(\") && type.endsWith(\")\")) {\n // Handle string(value1,value2,...) format\n const values = type.slice(7, -1).split(\",\").map(v => v.trim());\n return isString(val) && values.includes(val);\n }\n else if (type === \"number\") {\n return isNumber(val);\n }\n else if (type.startsWith(\"number(\") && type.endsWith(\")\")) {\n // Handle number(value1,value2,...) format\n const values = type.slice(7, -1).split(\",\").map(v => Number(v.trim()));\n return isNumber(val) && values.includes(val);\n }\n else if (type === \"boolean\") {\n return isBoolean(val);\n }\n else if (type === \"true\") {\n return isTrue(val);\n }\n else if (type === \"false\") {\n return isFalse(val);\n }\n else if (type === \"null\") {\n return isNull(val);\n }\n else if (type === \"undefined\") {\n return isUndefined(val);\n }\n else if (type === \"object\") {\n return isDictionary(val);\n }\n }\n else if (isDefineObject(type)) {\n if (isDictionary(val)) {\n return Object.keys(type).every(\n k => isInputToken(type[k]) && isNarrowable(val[k]) && doesExtend(type[k])(val[k])\n );\n }\n else {\n return false;\n }\n }\n\n else if (isDefineTuple(type)) {\n if (isArray(val)) {\n return val.length === type.length\n ? type.every(\n (t, i) => isInputToken(t) && isNarrowable(val[i]) && doesExtend(t)(val[i])\n )\n : false;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n }\n return false;\n };\n}\n","import type {\n HandleDoneFn,\n Shape,\n ShapeCallback,\n ShapeTupleOrUnion,\n ShapeApi as TShapeApi,\n} from \"inferred-types/types\";\nimport { SHAPE_PREFIXES } from \"inferred-types/constants\";\nimport {\n handleDoneFn,\n hasKeys,\n isDictionary,\n isString,\n} from \"inferred-types/runtime\";\nimport {\n array,\n boolean,\n fn,\n map,\n nullType,\n record,\n set,\n undefinedType,\n unknown,\n weakMap\n} from \"runtime/runtime-types\";\n\nfunction isAddOrDone<T>(val: T): val is ShapeTupleOrUnion & T {\n return isDictionary(val) && hasKeys(\"add\", \"done\") && typeof val.done === \"function\" && typeof val.add === \"function\";\n}\n\n/*\n * **Shape Api** _Implementation_\n *\n * This API surface is intended to be used to create a string-based\n * **token** which _represents_ a fully typed _type_.\n *\n * Even though the runtime system can interrogate this this token\n * at runtime -- via the `isShape()` type guard -- the\n * runtime will \"see\" the actual type that the token represents.\n *\n * ```ts\n * // number\n * const token = ShapeApi.number();\n * // <<number>>\n * console.log(token);\n * ```\n */\nexport const ShapeApiImplementation = {\n boolean,\n unknown,\n undefined: undefinedType,\n null: nullType,\n fn,\n record,\n array,\n set,\n map,\n weakMap,\n} as unknown as TShapeApi;\n\n/**\n * **shape**(s => s.[API])\n *\n * Provides a callback API to allow for defining a type (_which\n * retains a runtime value which will map back to the type_)\n *\n * **Related:** `isShape(val)`\n */\nexport function shape<\n T extends ShapeCallback,\n>(cb: T): HandleDoneFn<ReturnType<T>> {\n const rtn = cb(ShapeApiImplementation);\n return handleDoneFn(\n isAddOrDone(rtn) ? rtn.done() : rtn,\n ) as unknown as HandleDoneFn<ReturnType<T>>;\n}\n\n/**\n * **isShape**(val)\n *\n * Type guard which tests whether a value is a _type_ defined by a `Shape`.\n */\nexport function isShape(v: unknown): v is Shape {\n return !!(isString(v)\n && v.startsWith(\"<<\")\n && v.endsWith(\">>\")\n && SHAPE_PREFIXES.some(i => v.startsWith(`<<${i}`)));\n}\n","import type { AsOutputToken, TypeTokenKind } from \"inferred-types/types\";\n\n/**\n * Adds any `TypeToken` by receiving the `TypeTokenKind` and then whatever\n * parameters that type requires.\n */\nexport function addToken<\n T extends TypeTokenKind,\n TData extends readonly string[],\n>(token: T, ...params: TData) {\n return `<<${token}${params.length > 0 ? `::${params.join(\"::\")}` : \"\"}>>` as AsOutputToken;\n}\n","import type { If, IsFalse, IsTrue } from \"inferred-types/types\";\nimport { isDefined, isFalse, isTrue } from \"inferred-types/runtime\";\nimport { addToken } from \"runtime/runtime-types\";\n\nexport function boolean<L extends boolean>(literal?: L) {\n return (\n isDefined(literal)\n ? isTrue(literal)\n ? addToken(\"true\")\n : isFalse(literal)\n ? addToken(\"false\")\n : addToken(\"boolean\")\n : addToken(\"boolean\")\n ) as unknown as If<IsTrue<L>, true, If<IsFalse<L>, false, boolean>>;\n}\n\nexport const unknown = () => \"<<unknown>>\" as unknown;\n\nexport const undefinedType = () => \"<<undefined>>\" as unknown as undefined;\n\nexport const nullType = () => \"<<null>>\" as unknown as null;\n\nexport const never = () => \"<<never>>\" as unknown as never;\n","import type {\n AsStaticFn,\n FnArgsDefn,\n FnPropertiesDefn,\n FnReturnTypeDefn,\n FromDefn,\n FromWideTokens,\n} from \"inferred-types/types\";\n\n/**\n * **fn**\n *\n * provides an API surface for function definition\n */\nexport function fn<TArgs extends readonly FnArgsDefn[]>(..._args: TArgs) {\n return {\n returns: <TReturn extends FnReturnTypeDefn>(_rtn: TReturn) => ({\n addProperties: <TProps extends FnPropertiesDefn>(_kv: TProps) => {\n // TODO\n return null as unknown as AsStaticFn<\n FromWideTokens<TArgs, FromDefn<TArgs>>,\n FromWideTokens<TReturn, FromDefn<TReturn>>,\n FromDefn<TProps>\n >;\n },\n done: () => {\n return null as unknown as AsStaticFn<\n FromDefn<TArgs>,\n FromDefn<TReturn>\n >;\n },\n }),\n done: () => {\n const result: unknown = null;\n return result as unknown as AsStaticFn<FromDefn<TArgs>>;\n },\n };\n}\n","import type { Shape } from \"inferred-types/types\";\nimport { stripTrailing } from \"inferred-types/runtime\";\n\n/**\n * **getTokenData**`(token)`\n *\n * Given a `Shape` token, this function will extract the\n * data parameters from the token.\n */\nexport function getTokenData<T extends Shape>(token: T) {\n const [_name, ...rest] = stripTrailing(token, \">>\").split(\"::\");\n\n return rest;\n}\n","import type { AsSimpleType, SimpleToken } from \"inferred-types/types\";\nimport { isRegExp, isString } from \"inferred-types/runtime\";\n\n/**\n * **regexToken**`(re, ...rep)`\n *\n * Creates a `TypeToken` that is a form of string literal and\n * represented in the type system via the use of the `SimpleToken`\n * elements defined in \"rep\" but then with the RegExp encoded into\n * the token too so that it can be used for validation during\n * runtime.\n */\nexport function regexToken<\n TExp extends RegExp | string,\n TRep extends readonly SimpleToken[],\n>(re: TExp, ...rep: TRep) {\n let exp: string = \"\";\n\n if (isString(re)) {\n // regex's coming in as a string must be validated\n try {\n const test = new RegExp(re);\n if (!isRegExp(test)) {\n const err = new Error(`Invalid RegEx passed into regexToken(${re}, ${JSON.stringify(rep)})!`);\n err.name = \"InvalidRegEx\";\n throw err;\n }\n else {\n exp = re as string;\n }\n }\n catch {\n const err = new Error(`Invalid RegEx passed into regexToken(${re}, ${JSON.stringify(rep)})!`);\n err.name = \"InvalidRegEx\";\n throw err;\n }\n }\n else if (isRegExp(re)) {\n // all representations must be stored as as a string\n exp = re.toString();\n }\n\n // exp has been validated as valid\n const token = `<<string-set::regexp::${encodeURIComponent(exp)}>>`;\n\n return token as AsSimpleType<TRep>;\n}\n","import type {\n ArrayTypeDefn,\n As,\n AsArray,\n DictionaryTypeDefn,\n FromDefn,\n HandleDoneFn,\n MapKeyDefn,\n MapValueDefn,\n RecordValueTypeDefn,\n ShapeCallback,\n WeakMapKeyDefn,\n WeakMapValueDefn,\n WideTokenNames,\n} from \"inferred-types/types\";\n\nexport function record<\n TKey extends DictionaryTypeDefn,\n TValue extends RecordValueTypeDefn = \"unknown\",\n>(_key?: TKey, _value?: TValue) {\n // TODO\n return null as unknown as Record<As<FromDefn<TKey>, string>, FromDefn<TValue>>;\n}\n\nexport function array<T extends ArrayTypeDefn = \"Array<unknown>\">(_type?: T) {\n // TODO\n return null as unknown as AsArray<FromDefn<T>>;\n}\n\nexport function set<T extends WideTokenNames | ShapeCallback = \"unknown\">(_type?: T) {\n return null as unknown as T extends ShapeCallback\n ? Set<HandleDoneFn<ReturnType<T>>>\n : T extends WideTokenNames\n ? Set<FromDefn<T>>\n : Set<unknown>;\n}\n\nexport function map<\n TKey extends MapKeyDefn = \"unknown\",\n TValue extends MapValueDefn = \"unknown\",\n>(_key?: TKey, _value?: TValue) {\n // TODO\n return null as unknown as Map<FromDefn<TKey>, FromDefn<TValue>>;\n}\n\nexport function weakMap<\n TKey extends WeakMapKeyDefn = \"object\",\n TValue extends WeakMapValueDefn = \"unknown\",\n>(_key?: TKey, _value?: TValue) {\n // TODO\n return null as unknown as WeakMap<\n FromDefn<TKey> extends object\n ? FromDefn<TKey>\n : never,\n FromDefn<TValue>\n >;\n}\n","export function asOutputFunction<T extends string>(_val: T) {\n\n}\n","import type {\n As,\n DefineObject,\n Dictionary,\n Err,\n FromInputToken,\n FromInputToken__Object,\n InputToken,\n KeysWithError,\n ToStringLiteral,\n} from \"inferred-types/types\";\nimport { Never } from \"inferred-types/constants\";\nimport {\n defineObject,\n err,\n fromInputToken,\n isArray,\n isDefineObject,\n isError,\n isString,\n keysWithError,\n toStringLiteral__Tuple\n} from \"inferred-types/runtime\";\n\ntype AsType<T extends readonly InputToken[]> = T[\"length\"] extends 0\n ? Err<\n `invalid-token/structure`,\n `you passed in zero parameters to asType()!`\n >\n : T extends [infer Only]\n ? Only extends any[]\n ? Err<\n \"invalid-token/tuple\",\n `You passed in a single token to asType() but it was an array/tuple. If you're trying to define a tuple type then be sure to use a spread notation instead.`,\n { tokens: ToStringLiteral<T> }\n >\n : Only extends DefineObject\n ? KeysWithError<\n As<FromInputToken__Object<Only>, Dictionary>\n > extends []\n ? FromInputToken__Object<Only>\n : Err<`invalid-token/object`, `A 'DefineObject' was malformed and at least one key produced an error!`, {\n keys: KeysWithError<As<FromInputToken__Object<Only>, Dictionary>>;\n tokens: ToStringLiteral<T>;\n }>\n : Only extends InputToken\n ? FromInputToken<Only>\n : never\n : T extends readonly InputToken[]\n ? {\n [K in keyof T]: FromInputToken<T[K]>\n }\n : never;\n\n/**\n * Receives an `InputTokenLike` token and converts it to the\n * _type_ this token represents while ensuring that the runtime type\n * is the string representation of the token.\n *\n * **Related:** `fromInputToken()`\n */\nexport function asType<\n T extends readonly InputToken[]\n>(...token: T) {\n if (token.length === 0) {\n return err(\n `invalid-token/structure`,\n `you passed in zero parameters to asType()!`\n ) as unknown as AsType<T>;\n }\n const first = token[0];\n const defn = defineObject(first) as unknown as DefineObject | Error;\n return (\n token.length === 1\n ? isDefineObject(defn)\n ? isError(defn)\n ? defn\n : keysWithError(defn).length > 0\n ? err(`invalid-token/object`, `Some of the keys in a DefineObject structure were invalid and caused an error`, { keys: keysWithError(defn) })\n : defn\n : isString(first)\n ? first.trim()\n : isArray(first)\n ? err(\n `invalid-token/tuple`,\n `You passed in a single token to asType() but it was an array/tuple. If you're trying to define a tuple type then be sure to use a spread notation instead.`,\n { tokens: toStringLiteral__Tuple(token) }\n )\n : token.length > 1\n ? token.map(i => isString(i) ? i : fromInputToken(i))\n : Never\n : Never\n ) as unknown as AsType<T>;\n}\n","import type {\n\n Token,\n TokenSyntax,\n} from \"inferred-types/types\";\n\nexport function createGrammar<\n TSyntax extends TokenSyntax<N, any, any>,\n N extends string,\n TTokens extends readonly Token[],\n>(\n tokenSyntax: TSyntax,\n ...tokens: TTokens\n) {\n return {\n kind: \"Grammar\",\n syntax: tokenSyntax,\n tokens,\n };\n}\n","import type {\n AlphaChar,\n DefineTokenDetail,\n DynamicTokenApi,\n StaticTokenApi,\n TokenName,\n TokenType,\n} from \"inferred-types/types\";\nimport { simpleType } from \"inferred-types/runtime\";\n\nfunction staticToken<TToken extends TokenName>(\n name: TToken,\n): StaticTokenApi<TToken> {\n return (type, typeGuard) => {\n return {\n kind: \"StaticToken\",\n isStatic: true,\n name,\n type: simpleType(type),\n typeGuard,\n };\n };\n}\n\nfunction dynamicToken<\n TToken extends TokenName,\n>(\n name: TToken,\n): DynamicTokenApi<TToken> {\n return (resolver, tokenizer) => {\n return {\n kind: \"DynamicToken\",\n isStatic: false,\n name,\n resolver,\n tokenizer,\n };\n };\n}\n\n/**\n * **createToken**`(name,baseType,params,parser)`\n *\n * Creates a token to be used in a `Grammar`.\n */\nexport function createToken<\n TToken extends `${AlphaChar}${string}`,\n TParams extends TokenType,\n>(\n /** the token's name */\n token: TToken,\n /** whether the token is a static type or has dynamic variants */\n kind: TParams,\n): DefineTokenDetail<TToken, TParams> {\n return (\n kind === \"static\"\n ? staticToken(token)\n : dynamicToken(token)\n ) as DefineTokenDetail<TToken, TParams>;\n}\n","import type {\n Expand,\n ExpandDictionary,\n NarrowObject,\n} from \"inferred-types/types\";\n// import { createEncoder } from \"inferred-types/runtime\";\n\nexport type GrammarEncoder<\n TReq extends readonly string[],\n> = ExpandDictionary<\n Record<TReq[number], string>\n & { [key: string]: string }\n>;\n\ntype DefaultEncoder<\n TStart extends string,\n TEnd extends string,\n TSep extends string,\n> = Expand<\n Record<TStart, \"^start!\">\n & Record<TEnd, \"^end!\">\n & Record<TSep, \"^sep\">\n & Record<\"\\\"\", \"^dq!\">\n & Record<\"\\'\", \"^sq!\">\n & Record<\"`\", \"^grave!\">\n>;\n\nfunction defaultEncoder<\n TStart extends string,\n TEnd extends string,\n TSep extends string,\n>(start: TStart, end: TEnd, sep: TSep) {\n const config = {\n [start]: \"^start!\",\n [end]: \"^end!\",\n [sep]: \"^sep!\",\n \"\\\"\": \"^dq!\",\n \"'\": \"^sq!\",\n \"`\": \"^grave!\",\n };\n\n return config as unknown as DefaultEncoder<TStart, TEnd, TSep>;\n}\n\nexport function createTokenSyntax<\n TName extends string,\n TStart extends string,\n TEnd extends string,\n TSep extends string,\n TEncode extends NarrowObject<N> = DefaultEncoder<TStart, TEnd, TSep>,\n N extends string = string,\n>(\n name: TName,\n start: TStart,\n end: TEnd,\n sep: TSep,\n encoding: TEncode = defaultEncoder(start, end, sep) as unknown as TEncode,\n) {\n // const { encoder: encode, decoder: decode } = createEncoder(encoding);\n\n const tg = {\n kind: \"TokenSyntax\" as const,\n name,\n start,\n end,\n sep,\n encodingDefinition: encoding,\n encode: \"not-implemented\",\n decode: \"not-implemented\",\n };\n\n return tg;\n}\n","import type { TypeTokenKind } from \"inferred-types/types\";\nimport { stripSurround } from \"inferred-types/runtime\";\n\n/**\n * **getTokenKind**`(token)`\n *\n * Given a `TypeToken`, this function will extract the\n * `kind` variant name.\n */\nexport function getTokenKind<T extends string>(token: T): TypeTokenKind {\n const bare = stripSurround(\"<<\", \">>\")(token);\n const parts = bare.split(\"::\");\n const kind = parts.pop() as TypeTokenKind;\n\n return kind;\n}\n","import type { InputToken } from \"inferred-types/types\";\n\nexport function asInputToken<const T extends InputToken>(_defn: T) {\n // TODO\n}\n","import type { InputToken } from \"inferred-types/types\";\nimport {\n isDefineObject,\n toStringLiteral\n} from \"inferred-types/runtime\";\n\n/**\n * **toStringToken**`(token)`\n *\n * Proxies through any existing string tokens while making sure\n * that `InputToken__Object` and `InputToken__Tuple` are converted\n * to string representations.\n */\nexport function toStringToken<\n T extends InputToken\n>(token: T) {\n if (isDefineObject(token)) {\n return toStringLiteral(token, { tokensAllowed: true });\n }\n}\n","import type { DefineObject, FromDefineObject } from \"inferred-types/types\";\nimport { toStringLiteral } from \"inferred-types/runtime\";\n\n/**\n * Takes an `DefineObject` definition and:\n *\n * - converts it's runtime value to a string-based `InputToken` representation at runtime\n * - converts the _type_ to be the type this token is representing.\n */\nexport function fromDefineObject<\n const T extends DefineObject\n>(defn: T) {\n return toStringLiteral(\n defn,\n { tokensAllowed: true }\n ) as unknown as FromDefineObject<T>;\n}\n","import type { DefineTuple } from \"inferred-types/types\";\nimport { toStringLiteral } from \"inferred-types/runtime\";\n\n/**\n * **fromDefineTuple**`(defn)`\n *\n * Takes in a `DefineTuple` type and converts it to the _type_\n * it represents.\n *\n * **Note:**\n * - the runtime **value** will be converted to a **string**\n * definition of the tuple token (if it wasn't already a string variant)\n * - the _type_ will be whatever type the provided `DefineTuple` _defined_\n */\nexport function fromDefineTuple<T extends DefineTuple>(defn: T) {\n return (\n toStringLiteral(defn)\n ) as unknown as T;\n}\n","import type {\n FromInputToken,\n InputToken,\n} from \"inferred-types/types\";\nimport {\n err,\n isDefineObject,\n isDefineTuple,\n isInputToken__String,\n toStringToken\n} from \"inferred-types/runtime\";\n\n/**\n * **asInputToken**`(token)`\n *\n * takes both string and _non-string_ representations of an input token\n * and ensures that they are converted to their _string-literal_ form\n * while the _type_ is converted to the _type_ which the token\n * represents.\n */\nexport function fromInputToken<\n T extends InputToken\n>(\n token: T\n) {\n return (\n isInputToken__String(token)\n ? token\n : isDefineObject(token)\n ? toStringToken(token) // convert to string based definition of an object\n : isDefineTuple(token)\n ? toStringToken(token)\n : err(\"invalid-token\", `The input token provided was invalid!`, { token })\n ) as unknown as FromInputToken<T>;\n}\n","import type {\n SimpleContainerToken,\n SimpleScalarToken,\n SimpleToken,\n SimpleType,\n} from \"inferred-types/types\";\nimport { Never } from \"inferred-types/constants\";\nimport { isSimpleContainerToken, isSimpleScalarToken } from \"inferred-types/runtime\";\n\n/**\n * **simpleToken**`(token)`\n *\n * Creates a `SimpleToken` which assured to be a valid token type.\n *\n * **Related:** `simpleType()`, `simpleScalarToken()`, `simpleContainerToken()`\n */\nexport const simpleToken = <T extends SimpleToken>(token: T) => token;\n\n/**\n * **simpleScalarToken**`(token)`\n *\n * Creates a `SimpleScalarToken` which is assured to be a valid token type.\n *\n * **Related:** `simpleType()`, `simpleToken()`, `simpleContainerToken()`\n */\nexport const simpleScalarToken = <T extends SimpleScalarToken>(token: T) => token;\n\n/**\n * **simpleContainerToken**`(token)`\n *\n * Creates a `SimpleContainerToken` which assured to be a valid token type.\n *\n * **Related:** `simpleType()`, `simpleToken()`, `simpleScalarToken()`\n */\nexport const simpleContainerToken = <T extends SimpleContainerToken>(token: T) => token;\n\n/**\n * **simpleScalarType**`(token)`\n *\n * Creates a valid runtime token _and_ converts it's type to the type that\n * the token represents.\n *\n * **Related:** `simpleScalarToken`\n */\nexport function simpleScalarType<T extends SimpleScalarToken>(token: T) {\n const value: unknown = simpleScalarToken(token) as unknown;\n\n return value as SimpleType<T>;\n}\n\n/**\n * **simpleContainerType**`(token)`\n *\n * Creates a valid runtime token _and_ converts it's type to the type that\n * the token represents.\n *\n * **Related:** `simpleContainerToken`\n */\nexport function simpleContainerType<T extends SimpleContainerToken>(token: T) {\n const value: unknown = simpleContainerToken(token) as unknown;\n\n return value as SimpleType<T>;\n}\n\n/**\n * **simpleType**`(token)`\n *\n * Creates a valid runtime token of the `SimpleToken` convention and converts\n * the _type_ to the type that the token represents.\n */\nexport function simpleType<T extends SimpleToken>(token: T) {\n const value: unknown = (\n isSimpleScalarToken(token)\n ? simpleScalarType(token)\n : isSimpleContainerToken(token)\n ? simpleContainerToken(token)\n : Never\n );\n return value as SimpleType<T>;\n}\n","import type { AnyObject } from \"inferred-types/types\";\n\n/**\n * checks whether objects `A`, and `B` have overlapping\n * keys.\n */\nexport function hasOverlappingKeys<\n A extends AnyObject,\n B extends AnyObject,\n>(\n a: A,\n b: B,\n): boolean {\n const keys = Object.keys(a);\n\n for (const k of keys) {\n if (k in b) {\n return true;\n }\n }\n\n return false;\n}\n","import type { Container, ObjectKey, UniqueKeys } from \"inferred-types/types\";\nimport { isArray } from \"inferred-types/runtime\";\n\n/**\n * **uniqueKeys**(left, right)\n *\n * Returns a strongly typed `LeftRight` tuple which identifies the\n * unique keys for each participant list passed in.\n */\nexport function uniqueKeys<\n L extends Container,\n R extends Container,\n>(left: L, right: R): UniqueKeys<L, R> {\n const isNumeric = !!(isArray(left) && isArray(right));\n\n if (\n (isArray(left) && !isArray(right))\n || (isArray(right) && !isArray(left))\n ) {\n throw new Error(\"uniqueKeys(l,r) given invalid comparison; both left and right values should be an object or an array but not one of each!\");\n }\n\n const l = (\n isNumeric\n ? Object.keys(left).map(i => Number(i))\n : Object.keys(left)\n ) as ObjectKey[];\n const r = (\n isNumeric\n ? Object.keys(right).map(i => Number(i))\n : Object.keys(right)\n ) as ObjectKey[];\n\n if (isNumeric) {\n throw new Error(\"uniqueKeys does not yet work with tuples\");\n }\n\n const leftKeys = l.filter(i => !r.includes(i));\n const rightKeys = r.filter(i => !l.includes(i));\n\n return [\n \"LeftRight\",\n leftKeys,\n rightKeys,\n ] as unknown as UniqueKeys<L, R>;\n}\n","import type { AsTakeState, TakeState } from \"inferred-types/types\";\nimport { Never } from \"inferred-types/constants\";\nimport { isString, isTakeState } from \"inferred-types/runtime\";\n\n/**\n * **asTakeState**`(take)`\n *\n *\n */\nexport function asTakeState<T extends string | TakeState>(take: T): AsTakeState<T> {\n return isTakeState(take)\n ? take as unknown as AsTakeState<T>\n : isString(take)\n ? {\n kind: \"TakeState\",\n parsed: [],\n parseString: take,\n tokens: []\n } as AsTakeState<T>\n : Never;\n}\n","import type {\n StaticTakeFunction__CallBack,\n StaticTakeFunction__Rtn\n} from \"inferred-types/runtime\";\nimport type { LexerState } from \"inferred-types/types\";\nimport {\n createStaticTakeFunction,\n createTakeWhileFunction,\n err\n} from \"inferred-types/runtime\";\n\ntype TakeFunctionKind = \"static\" | \"start-end\" | \"while\";\n\ntype StaticBuilder<_O extends TakeFunction__Options> = {\n /**\n * enumerate all the static elements which this function\n * will handle.\n */\n enum<TItems extends readonly [string, ...string[]]>(...items: TItems): {\n /** the callback function used to coerce into a `LexerState` */\n callback<\n const TCb extends StaticTakeFunction__CallBack<TItems>\n >(cb: TCb):\n <\n const TLexer extends LexerState<TParse, TTokens>,\n TParse extends string,\n TTokens extends readonly unknown[]\n >(state: TLexer) =>\n StaticTakeFunction__Rtn<\n TLexer,\n TItems,\n ReturnType<TCb>\n >;\n };\n};\n\nexport type TakeFunction__Options = {\n /**\n * A character or tuple of characters which _must follow_\n * immediately after the END token is reached.\n *\n * - if multiple strings are provided they will be treated\n * as a union type.\n * - A common use case is to include whitespace characters.\n */\n mustFollow?: string | readonly string[];\n\n ignoreFollow?: string | readonly string[];\n\n /**\n * Allows you to specify START/END delimiters within\n * the parse string which indicate that nesting has\n * occurred.\n *\n * - the _keys_ of the `nesting` represent the nesting\n * entry\n * - the _values_ are the `nesting` exit\n */\n nesting?: Record<string, string>;\n};\n\ntype Returns<K extends TakeFunctionKind, O extends TakeFunction__Options> = K extends \"start-end\"\n ? unknown\n : K extends \"static\"\n ? StaticBuilder<O>\n : K extends \"while\"\n ? any\n : never;\n\nfunction staticBuilder<O extends TakeFunction__Options>(_opt: O) {\n const builder: StaticBuilder<O> = {\n enum<TItems extends readonly string[]>(...items: TItems) {\n return {\n callback(cb) {\n return (lexer) => {\n const result = createStaticTakeFunction(items, cb)(lexer);\n\n return result;\n };\n }\n };\n }\n };\n\n return builder;\n}\n\n/**\n * **createTakeFunction**`(kind,[ opt ]) -> kind specific api`\n *\n * A higher order builder function which allows you to choose a _kind_\n * of take function from the following:\n *\n * - Static Block\n *\n * - configure a static set of variants to match on\n * - provide a callback to map a match to a Lexer token\n * - wrapper will automatically return `Unset` if no match\n * is found\n * - callback fn for mapping a match to a Lexer token (or return\n * an Error as an outlet)\n *\n * - Start/End Block\n *\n * - provide `start` and `end` characters which will be used\n * for matching\n *\n * - While Block\n */\nexport function createTakeFunction<\n K extends TakeFunctionKind,\n O extends TakeFunction__Options\n>(\n kind: K,\n opt: O = {} as O\n): Returns<K, O> {\n switch (kind) {\n case \"static\":\n return staticBuilder(opt) as Returns<K, O>;\n case \"start-end\":\n return null as unknown as Returns<K, O>;\n case \"while\":\n return createTakeWhileFunction as Returns<K, O>;\n default:\n throw err;\n }\n}\n","/**\n * **createTakeStartEndFunction**`(startEnd, opts) -> take fn`\n *\n * creates a `take` function which is based on a\n * **start** and **end** token(s).\n */\nexport function createTakeStartEndFunction<\n const TStartEnd extends Record<string, string>,\n const TOpt\n>(\n _startEnd: TStartEnd,\n _opts: TOpt\n) {\n return <TParse extends string>(_str: TParse) => {\n\n };\n}\n","import type {\n Find,\n LexerState,\n NoMatch,\n Or,\n StartsWith,\n StripLeading,\n TakeWrapper,\n} from \"inferred-types/types\";\nimport { Never } from \"inferred-types/constants\";\n\nimport {\n find,\n isError\n} from \"inferred-types/runtime\";\n\nimport { NO_MATCH } from \"runtime/constants\";\nimport {\n isDeltaReturn\n} from \"runtime/type-guards\";\n\nexport type StaticTakeFunction__CallBack<\n TItems extends readonly string[],\n TState extends Required<LexerState<TParse, TTokens>>,\n TParse extends string = string,\n TTokens extends readonly unknown[] = readonly unknown[]\n> = <\n T extends TItems[number]\n>(payload: {\n /** the static token found at the HEAD of the parse string */\n found: T;\n /** the parse string and tokens (updated with latest token) */\n state: TState;\n}\n) => Error | NoMatch | LexerState<\n StripLeading<TState[\"parse\"], T>,\n [...TTokens, unknown]\n>;\n\nexport type StaticTakeFunction__Rtn<\n TState extends LexerState,\n TItems extends readonly string[],\n TRtn,\n TRemain extends string = TState[\"parse\"],\n TTokens extends readonly unknown[] = TState[\"tokens\"] extends readonly unknown[]\n ? TState[\"tokens\"]\n : [],\n> = Or<{\n [K in keyof TItems]: StartsWith<TRemain, TItems[K]>\n}> extends true\n ? {\n parse: StripLeading<\n TRemain,\n Find<TItems, \"startsWith\", [ TRemain ]> extends string\n ? Find<TItems, \"startsWith\", [ TRemain ]>\n : never\n >;\n tokens: [...TTokens, TRtn];\n }\n : NoMatch;\n\n/**\n * **createStaticTakeFunction**`(items[], cb) -> take(lex) -> Error | LexerState`\n *\n * a \"builder\" which _takes_:\n *\n * 1. a static set of variants to match on\n * 2. a _callback_ called when a match is found;\n * - the callback is responsible for mapping the matched static token\n * into a Lexer token or an Error\n *\n * ```ts\n * const fooBar = createStaticTakeFunction(\n * [ \"foo\", \"bar\" ],\n * (match, tokens) => {\n * // ...\n * }\n * ) -> (\n * state: LexerState\n * ) -> LexerState | Error\n * ```\n */\nexport function createStaticTakeFunction<\n const TItems extends readonly string[],\n const TCb extends StaticTakeFunction__CallBack<\n TItems,\n Required<LexerState>\n >,\n>(\n items: TItems,\n cb: TCb,\n): TakeWrapper<\n Exclude<ReturnType<TCb>, Error | NoMatch>,\n TItems\n> {\n return (state) => {\n const found = find(\"startsWith\", state.parse)(items);\n\n if (found) {\n const rtn = cb({ found, state });\n return isError(rtn)\n ? rtn\n : isDeltaReturn(rtn)\n ? {\n parse: rtn[0],\n tokens: [...(state.tokens), rtn[1]]\n }\n : Never;\n }\n\n // no match\n return NO_MATCH;\n };\n}\n","import type { Defined, TypedFunction, Unset } from \"inferred-types/types\";\nimport {\n asArray,\n asChars,\n isUnset,\n stripLeading,\n unset\n} from \"inferred-types/runtime\";\n\ntype WhileOptions = {\n /**\n * A character or tuple of characters which _must follow_\n * immediately after the END token is reached.\n *\n * - if multiple strings are provided they will be treated\n * as a union type.\n * - A common use case is to include whitespace characters.\n */\n mustFollow?: string | readonly string[];\n\n /**\n * Allows you to specify START/END delimiters within\n * the parse string which indicate that nesting has\n * occurred.\n *\n * - the _keys_ of the `nesting` represent the nesting\n * entry\n * - the _values_ are the `nesting` exit\n */\n nesting?: Record<string, string>;\n\n /**\n * Allows you to specify characters which when encountered\n * will not break the matching of the parse string.\n *\n * The ignore characters are simply ignored, however, and\n * will not exist in the resultant take block.\n */\n ignore?: string | readonly string[];\n\n callback?: <R extends { head: string; rest: string }>(result: R) => [Unset, string] | [Defined, string];\n};\n\nfunction takeWhile(\n chars: string[],\n match: string[],\n _opts: WhileOptions\n): [Unset, string] | [string, string] {\n let head = \"\";\n\n for (const char of chars) {\n if (match.includes(char)) {\n head = `${head}${char}`;\n }\n }\n\n return head === \"\"\n ? [unset, chars.join()]\n : [head, stripLeading(chars.join(), head).trim()];\n}\n\n/**\n * creates a \"take function\" which resolves the end of it's string\n * by looking at a `while` condition.\n */\nexport function createTakeWhileFunction<\n const TMatch extends string | readonly string[],\n const TOpt extends WhileOptions\n>(\n match: TMatch,\n opts: TOpt\n): TOpt[\"callback\"] extends TypedFunction\n ? [ReturnType<TOpt[\"callback\"]>, string] | Error | Unset\n : Error | Unset | [string, string] {\n return <TParse extends string>(str: TParse) => {\n const [head, rest] = takeWhile(\n asChars(str),\n asArray(match) as string[],\n opts\n );\n\n if (isUnset(head)) {\n // did not find the pattern\n return unset as TOpt[\"callback\"] extends TypedFunction\n ? [ReturnType<TOpt[\"callback\"]>, string] | Error | Unset\n : Error | Unset | [string, string];\n }\n\n return [head, rest] as TOpt[\"callback\"] extends TypedFunction\n ? [ReturnType<TOpt[\"callback\"]>, string] | Error | Unset\n : Error | Unset | [string, string];\n };\n}\n","import type { TakeState } from \"inferred-types/types\";\nimport { isArray, isObject } from \"runtime/type-guards\";\n\n/**\n * **isTakeState**(val)\n *\n * Type guard which determines if the passed in `val` is a `TakeState`\n * object.\n */\nexport function isTakeState(val: unknown): val is TakeState {\n return isObject(val) && \"kind\" in val && val.kind === \"TakeState\" && \"tokens\" in val && isArray(val.tokens);\n}\n","import type { AsTakeState, TakeParser, TakeState, UpdateTake } from \"inferred-types/types\";\nimport { asTakeState, isError, isNull, stripLeading } from \"inferred-types/runtime\";\n\nexport function append<\n TList extends readonly unknown[],\n TItem\n>(list: TList, add: TItem): [...TList, TItem] {\n return [...list, add] as [...TList, TItem];\n}\n\n/**\n * **takeStart**`(...start) -> (parser) -> (val) -> result`\n *\n * A higher order **take** function which starts by defining the string literals\n * which would make a match.\n *\n * - once defined, the second call to this HOF provides the **value** to test test against.\n * It will return:\n * - Err<\"unmatched\"> - if none of the provided string literals were found at the\n * head of the string\n * - `TakeSuccess` - if there was a match\n *\n * If you wish to override the error which is returned you can add a callback as a second\n * parameter. The callback will receive the `Err<\"unmatched\">` and your callback can convert\n * this to whatever type you like (however, some sort of Error is typically a good idea).\n */\nexport function take<TParse extends TakeParser>(parser: TParse) {\n return <TVal extends string | TakeState | Error>(val: TVal): UpdateTake<AsTakeState<TVal>, ReturnType<TParse>> => {\n const state = asTakeState(val);\n if (isError(state)) {\n return state as unknown as UpdateTake<AsTakeState<TVal>, ReturnType<TParse>>;\n }\n\n const [taken, token] = parser(state);\n\n return isNull(taken)\n ? token as unknown as UpdateTake<AsTakeState<TVal>, ReturnType<TParse>>\n : {\n ...state,\n parsed: [...state.parsed, taken],\n parseString: stripLeading(state.parseString, taken),\n tokens: append(state.tokens, token)\n } as UpdateTake<AsTakeState<TVal>, ReturnType<TParse>>;\n };\n}\n","export const takeStringToken = \"not ready\";\n","import type {\n Err,\n Slice,\n StartsWith,\n StringKeys,\n TakeStart,\n TakeStartFn,\n TakeStartMatches,\n TakeState\n} from \"inferred-types/types\";\n\nimport {\n asTakeState,\n createFnWithProps,\n isErr,\n keysOf,\n slice,\n stripLeading\n} from \"inferred-types/runtime\";\nimport {\n isArray,\n isNarrowableDictionary,\n isStringArray\n} from \"runtime/type-guards\";\n\ntype Which<\n T extends TakeState,\n M extends readonly string[]\n> = M extends [\n infer Head extends string,\n ...infer Rest extends readonly string[]\n]\n ? StartsWith<T[\"parseString\"], Head> extends true\n ? Head\n : Which<T, Rest>\n : undefined;\n\nfunction findMatch<\n T extends TakeState,\n M extends readonly string[]\n>(\n state: T,\n matches: M\n) {\n return matches.find(i => state.parseString.startsWith(i)) as Which<T, M>;\n}\n\nfunction isCallback(val: unknown): val is TakeStartMatches<\"callback\"> {\n return isArray(val) && val.length > 2 && typeof val[0] === \"function\" && typeof val[1] === \"string\";\n}\n\nfunction isMapper(val: unknown): val is TakeStartMatches<\"mapper\"> {\n return isArray(val) && val.length === 1\n && isNarrowableDictionary(val[0]) && isStringArray(keysOf(val[0]));\n}\n\ntype GetVariant<T extends TakeStartMatches> = T extends TakeStartMatches<\"callback\">\n ? {\n variant: \"callback\";\n callback: T[0];\n matches: Slice<T, 1>;\n lookup: undefined;\n }\n : T extends TakeStartMatches<\"mapper\">\n ? {\n variant: \"mapper\";\n callback: undefined;\n matches: StringKeys<T>;\n lookup: T[0];\n }\n : T extends TakeStartMatches<\"default\">\n ? {\n variant: \"default\";\n callback: undefined;\n matches: T;\n lookup: undefined;\n }\n : never;\n\nfunction getVariant<const T extends TakeStartMatches>(matches: T): GetVariant<T> {\n if (isCallback(matches)) {\n return {\n variant: \"callback\",\n callback: matches[0],\n matches: slice(matches, 1),\n lookup: undefined\n } as unknown as GetVariant<T>;\n }\n else if (isMapper(matches)) {\n return {\n variant: \"mapper\",\n callback: undefined,\n matches: keysOf(matches[0]),\n lookup: matches[0]\n } as unknown as GetVariant<T>;\n }\n else {\n return {\n variant: \"default\",\n callback: undefined,\n matches,\n lookup: undefined\n } as unknown as GetVariant<T>;\n }\n}\n\nfunction handleCallback<T extends TakeState | Err<\"skip\"> | Err<\"no-token\"> | Err<\"invalid-token\">>(result: T) {\n return result;\n}\n\n/**\n * **takeStart**`(...matches) -> (value) -> TakeState | Err<\"invalid-token\">`\n *\n * A higher order function which:\n *\n * 1. first takes a list of \"matches\" (aka., string literal which it will look to\n * match to the the value passed in)\n * 2. the second call takes a string value (or alternatively a `TakeState` object)\n * and tries to match the parse string with the list of matches provided in the first\n * call.\n *\n * ### Tokenization\n *\n * By default this utility will populate the `tokens` property of the `TakeState`\n * with the matched string it finds. In the default state, the `tokens` it produces are\n * the same as the `parsed` strings it produces.\n *\n * If you wish to produce a _variant_ of the string found you can use either of the two\n * approaches:\n *\n * 1. **Mapper Object:**\n *\n * A _mapper_ object is a dictionary where the _keys_ are the substrings you're trying to\n * match on and the _values_ are the runtime value that you will map to when this substring is found.\n * If this approach is used then the dictionary object _replaces_ the tuple of strings you\n * would typically put into the `matches` variable. If you want to set not only the \"value\" but also\n * the \"type\" you can set the _values_ of the object to a tuple of: `[ value: any, type: InputToken ]`.\n *\n * Here is an example:\n * ```ts\n * const take = takeStart({\n * foo: \"fooy\",\n * bar: [\"bar\", \"string\"]\n * });\n * ```\n *\n * In this example:\n * - when the \"foo\" substring is parsed from the parse string the value _and_ type of the token will be \"fooy\"\n * - when the \"bar\" substring is parsed from the parse string the value will be \"bar\" but the type will be `string`\n *\n *\n * 2. **Callback Function:**\n *\n * You can also provide a callback function to handle mapping to `tokens`. Unlike the mapper object,\n * using a callback function which will be _in addition to_ the tuple of match substrings. This callback\n * will take the form of:\n *\n * ```ts\n *\n * function callback(\n * value: string,\n * state: TakeState\n * ): TakeState | Err<\"invalid-token\"> | Err<\"skip\"> | Err<\"no-token\">\n * ```\n *\n * where:\n * - `TakeState` allows the callback to mutate the state\n * - `Err<\"skip\">` will keep the state exactly as it was\n * - `Err<\"no-token\">` will keep the tokens as they were but remove the substring from\n * the parse string and add it to the `parsed` property.\n * - `Err<\"invalid-token\">` will immediately exit with this error\n *\n * **Note:** all variants of this function work on an enumerated set of \"matches\"\n * and because of this this function is able to handle non-matches by itself. If you want an\n * unconstrained set of start tokens then use the `take()` utility to create this yourself.\n */\nexport function takeStart<T extends TakeStartMatches>(...config: T): TakeStartFn<T> {\n const { variant, matches, callback, lookup } = getVariant(config);\n\n const fn = <const U extends string | TakeState>(value: U): TakeStart<T, U> => {\n const state = asTakeState(value);\n\n const match = findMatch(state, matches);\n\n // no match; return state unchanged\n if (!match) {\n return state as unknown as TakeStart<T, U>;\n }\n\n if (variant === \"default\") {\n const token = match;\n return {\n kind: \"TakeState\",\n parsed: [...state.parsed, match],\n parseString: stripLeading(state.parseString, match),\n tokens: [...state.tokens, token]\n } as unknown as TakeStart<T, U>;\n }\n\n if (variant === \"mapper\") {\n const mapped = lookup[match as keyof typeof lookup];\n const token = Array.isArray(mapped) ? (mapped as unknown[])[0] : mapped;\n\n return {\n kind: \"TakeState\",\n parsed: [...state.parsed, match],\n parseString: stripLeading(state.parseString, match),\n tokens: [...state.tokens, token]\n } as unknown as TakeStart<T, U>;\n }\n\n // callback variant\n const cbResult = handleCallback(callback!(match, state));\n if (isErr(cbResult, \"invalid-token\")) {\n return cbResult as unknown as TakeStart<T, U>;\n }\n if (isErr(cbResult, \"skip\")) {\n return state as unknown as TakeStart<T, U>;\n }\n if (isErr(cbResult, \"no-token\")) {\n return {\n kind: \"TakeState\",\n parsed: [...state.parsed, match],\n parseString: stripLeading(state.parseString, match),\n tokens: [...state.tokens]\n } as unknown as TakeStart<T, U>;\n }\n\n // assume callback returned a valid TakeState\n return cbResult as unknown as TakeStart<T, U>;\n };\n\n const result = createFnWithProps(fn, {\n variant,\n matches\n });\n\n return result;\n}\n","import type { Chars } from \"inferred-types/types\";\n\n/**\n * **asChars**`(str)`\n *\n * Converts a string into an array of characters and preserves literal type\n * where possible.\n *\n *\n * ```ts\n * // [ \"h\", \"e\", \"l\", \"l\", \"o\" ]\n * const chars = asChars(\"hello\");\n * ```\n */\nexport function asChars<T extends string>(str: T): Chars<T> {\n return str.split(\"\") as Chars<T> & string[];\n}\n","import type { AsFromTo, FromTo } from \"inferred-types/types\";\n\nexport function asFromTo<\n const T extends Record<string, string>,\n>(defn: T) {\n const fromTo: FromTo[] = Object.keys(defn).reduce(\n (acc, from) => {\n return [\n ...acc,\n { from, to: defn[from] },\n ];\n },\n [] as FromTo[],\n );\n\n return fromTo as unknown as AsFromTo<T>;\n}\n","import type { AsRecord, ObjectKey } from \"inferred-types/types\";\n\n/**\n * **asRecord**`<T>`(obj: T) → AsRecord`<T>`\n *\n * An \"identity function\" with regards to runtime information but\n * helps convert a `object` to a `Record<ObjectKey,unknown>` which\n * is indexable.\n */\nexport function asRecord<\n T extends Record<ObjectKey, unknown> | object,\n>(obj: T): AsRecord<T> {\n return obj as AsRecord<T>;\n}\n","import type { AsString } from \"inferred-types/types\";\nimport {\n isArray,\n isBoolean,\n isDictionary,\n isNumber,\n isString,\n keysOf,\n} from \"inferred-types/runtime\";\n\n/**\n * **asString**`(value)\n *\n * Attempts to convert the value passed in into a string\n * using the same methods available to the type utility\n * `AsString<T>`.\n *\n * If unable to convert to a string then it will provide\n * the runtime value of `String(value)` but the type system\n * will be set to `never`.\n *\n * - if an array is passed in then it will be joined\n * together -- no delimiter characters -- into a string\n * - if a tuple of `SimpleToken[]` is discovered it will\n * set the runtime type to a token of `<<string::...>>` while the\n * type of the string will be\n */\nexport function asString<T>(value: T): AsString<T> {\n return (\n isString(value)\n ? value\n : isNumber(value)\n ? `${value}`\n : isBoolean(value)\n ? `${value}`\n : isDictionary(value)\n ? `{ ... ${keysOf(value)} ... }`\n : isArray(value)\n ? `any[]`\n : String(value)\n ) as unknown as AsString<T>;\n}\n","import type {\n AfterFirst,\n Csv,\n First,\n Integer,\n Ip4Address,\n IsoDate,\n IsoDateTime,\n IsoTimeLike,\n Keys,\n ReplaceAll,\n} from \"inferred-types/types\";\n\ninterface DefaultLookup {\n \"{{string}}\": string;\n \"{{boolean}}\": `${boolean}`;\n \"{{number}}\": `${number}`;\n \"{{integer}}\": `${Integer}`;\n \"{{date}}\": `${IsoDate}`;\n \"{{csv}}\": `${Csv}`;\n \"{{time}}\": `${IsoTimeLike}`;\n \"{{datetime}}\": `${IsoDateTime}`;\n \"{{ipv4}}\": `${Ip4Address}`;\n}\n\ntype Find = Keys<DefaultLookup>;\n\ntype Interpolate<\n TContent extends string,\n TFind extends readonly string[],\n> = [] extends TFind\n ? TContent\n : First<TFind> extends keyof DefaultLookup\n ? DefaultLookup[First<TFind>] extends string\n ? Interpolate<\n ReplaceAll<TContent, First<TFind>, DefaultLookup[First<TFind>]>,\n AfterFirst<TFind>\n >\n : never\n : never;\n\n/**\n * **asTemplate**`(template)`\n *\n * Converts a string with template tags `{{type}}` into string literals.\n *\n * ```ts\n * // `age: ${Integer}`\n * const template = asTemplate(\"age: {{integer}}\")\n * ```\n *\n * **Related:** `asTemplateProvidingTags`\n */\nexport function asTemplate<T extends string>(template: T) {\n return template as Interpolate<T, Find>;\n}\n","import type { AsTypeSubtype } from \"inferred-types/types\";\n\nexport function asTypeSubtype<T extends string>(input: T) {\n const [type, subtype] = input.split(\"/\");\n\n return [type, subtype] as AsTypeSubtype<T>;\n}\n","import type { CsvToJsonTuple, CsvToTuple, CsvToTupleStr } from \"inferred-types/types\";\nimport { Never } from \"inferred-types/constants\";\nimport { isNumberLike } from \"runtime/type-guards\";\n\nexport type CsvFormat\n = | \"string-tuple\"\n | \"string-numeric-tuple\"\n | \"json-tuple\";\n\n/**\n * **csv**`(csv, [format])`\n *\n * Converts a CSV string literal into a tuple of values\n * (based on format).\n *\n * **Note:** either _no space_ or _a single space_ between values\n * will provide a trimmed value but any additional whitespace\n * after the comma will result in some leading whitespace in\n * some values.\n *\n * @default\n */\nexport function csv<\n T extends string,\n F extends CsvFormat = `string-numeric-tuple`,\n>(csv: T, format: F = `string-numeric-tuple` as F) {\n const tuple: unknown[] = [];\n\n csv.split(/,\\s?/).forEach((v) => {\n tuple.push(\n format === \"string-numeric-tuple\"\n ? isNumberLike(v) ? Number(v) : v\n : format === \"json-tuple\"\n ? isNumberLike(v)\n ? Number(v)\n : v === \"true\"\n ? true\n : v === \"false\"\n ? false\n : `\"${v}\"`\n : format === \"string-tuple\"\n ? `${v}`\n : Never,\n );\n });\n\n return tuple as F extends \"string-numeric-tuple\"\n ? CsvToTuple<T>\n : F extends \"json-tuple\"\n ? CsvToJsonTuple<T>\n : F extends \"string-tuple\"\n ? CsvToTupleStr<T>\n : never;\n}\n","import type { EachAsString, Narrowable } from \"inferred-types/types\";\nimport { asString } from \"inferred-types/runtime\";\n\n/**\n * **eachAsString**`(...tuple) -> readonly string[]`\n *\n * Converts every element of a tuple into a _string_ representation.\n */\nexport function eachAsString<\n T extends readonly N[],\n N extends Narrowable,\n>(...tuple: T) {\n return tuple.map(\n i => asString(i),\n ) as EachAsString<T>;\n}\n","import type {\n Dictionary,\n FromKv,\n KeyValue,\n Narrowable,\n} from \"inferred-types/types\";\n\n/**\n * **fromKeyValue**`(keyValueTuple)`\n *\n * Converts a `KeyValue` tuple into an object.\n *\n * - **Related:** `toKeyValue()`\n */\nexport function fromKeyValue<\n T extends readonly KeyValue<K, N>[],\n K extends string,\n N extends Narrowable,\n>(kvs: T) {\n const obj: Dictionary = {};\n\n for (const kv of kvs) {\n obj[kv.key] = kv.value;\n }\n\n return obj as FromKv<[...T]>;\n}\n","/**\n * **intersect**(value, intersectedWith)\n *\n * Runtime utility which receives `value` property and returns it with an\n * unchanged _runtime_ value but with the type now intersected with the\n * value provided by `intersectedWith`.\n */\nexport function intersect<T, U>(value: T, _intersectedWith: U): T & U {\n return value as T & U;\n}\n","import type { Ip6GroupExpansion } from \"inferred-types/types\";\nimport { stripTrailing } from \"inferred-types/runtime\";\n\n/**\n * **ip6GroupExpansion**`(ip)`\n *\n * Looks at the IPv6 address and expands all instances of `::` to add\n * a block of `0000` where it was.\n *\n * ```ts\n * // fe89:0000:1256\n * const ip6 = ip6GroupExpansion(\"fe89::1256\");\n * ```\n */\nexport function ip6GroupExpansion<T extends string>(ip: T) {\n return stripTrailing(ip.replaceAll(\"::\", \":0000:\"), \":\") as Ip6GroupExpansion<T>;\n}\n","import type { FirstChar, LastChar } from \"inferred-types/types\";\nimport { asChars } from \"inferred-types/runtime\";\n\nexport function lastChar<T extends string>(str: T) {\n const char = asChars(str).at(-1);\n\n return char as LastChar<T>;\n}\n\nexport function firstChar<T extends string>(str: T) {\n const char = asChars(str).at(0);\n\n return char as FirstChar<T>;\n}\n","import type {\n AsString,\n Iso3166_1_Alpha2,\n Iso3166_1_Alpha3,\n Iso3166_1_CountryCode,\n Iso3166_1_CountryName,\n Iso3166Alpha2Lookup,\n Iso3166Alpha3Lookup,\n Iso3166CodeLookup,\n Iso3166CountryLookup,\n NumberLike,\n Suggest\n} from \"inferred-types/types\";\nimport { ISO3166_1 } from \"inferred-types/constants\";\nimport {\n isIso3166Alpha2,\n isIso3166Alpha3,\n isIso3166CountryName,\n isNumber,\n isNumberLike,\n toAllCaps\n} from \"inferred-types/runtime\";\n\ntype Props = \"alpha2\" | \"alpha3\" | \"countryCode\" | \"name\";\n\nfunction lookupAlpha2Code<\n T extends Iso3166_1_Alpha2,\n P extends Props,\n>(code: T, prop: P): P extends \"name\"\n ? Iso3166_1_CountryName\n : P extends \"alpha2\"\n ? Iso3166_1_Alpha2\n : P extends \"alpha3\"\n ? Iso3166_1_Alpha3\n : P extends \"countryCode\"\n ? Iso3166_1_CountryCode\n : never {\n const found = ISO3166_1.find(i => i.alpha2 === code);\n\n return (\n found ? found[prop] : undefined\n ) as unknown as P extends \"name\"\n ? Iso3166_1_CountryName\n : P extends \"alpha2\"\n ? Iso3166_1_Alpha2\n : P extends \"alpha3\"\n ? Iso3166_1_Alpha3\n : P extends \"countryCode\"\n ? Iso3166_1_CountryCode\n : never;\n}\n\nfunction lookupAlpha3Code<P extends Props>(code: Iso3166_1_Alpha3, prop: P): P extends \"name\"\n ? Iso3166_1_CountryName\n : P extends \"alpha2\"\n ? Iso3166_1_Alpha2\n : P extends \"alpha3\"\n ? Iso3166_1_Alpha3\n : P extends \"countryCode\"\n ? Iso3166_1_CountryCode\n : never {\n const found = ISO3166_1.find(i => i.alpha3 === code);\n\n return (\n found ? found[prop] : undefined\n ) as unknown as P extends \"name\"\n ? Iso3166_1_CountryName\n : P extends \"alpha2\"\n ? Iso3166_1_Alpha2\n : P extends \"alpha3\"\n ? Iso3166_1_Alpha3\n : P extends \"countryCode\"\n ? Iso3166_1_CountryCode\n : never;\n}\n\nfunction lookupName<\n T extends Iso3166_1_CountryName,\n P extends Props,\n>(name: T, prop: P): P extends \"name\"\n ? Iso3166_1_CountryName\n : P extends \"alpha2\"\n ? Iso3166_1_Alpha2\n : P extends \"alpha3\"\n ? Iso3166_1_Alpha3\n : P extends \"countryCode\"\n ? Iso3166_1_CountryCode\n : never {\n const found = ISO3166_1.find(i => i.name === name);\n\n return (\n found ? found[prop] : undefined\n ) as unknown as P extends \"name\"\n ? Iso3166_1_CountryName\n : P extends \"alpha2\"\n ? Iso3166_1_Alpha2\n : P extends \"alpha3\"\n ? Iso3166_1_Alpha3\n : P extends \"countryCode\"\n ? Iso3166_1_CountryCode\n : never;\n}\n\nfunction lookupNumericCode<\n T extends NumberLike,\n P extends Props,\n>(code: T, prop: P): string | undefined {\n let num: string = isNumber(code) ? `${code}` : code as `${number}`;\n if (num.length === 1) {\n num = `00${num}`;\n }\n else if (num.length === 2) {\n num = `0${num}`;\n }\n\n const found = ISO3166_1.find(i => i.countryCode === num);\n\n return found ? found[prop] : undefined;\n}\n\n/**\n * **lookupCountryName**`(code)`\n *\n * Looks up a country name by either the alpha-2, alpha-3, or country code\n * as defined by the [ISO3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) standard.\n *\n * - the ISO standard uses uppercase characters for Alpha2 and Alpha3 codes but\n * this utility will handle upper or lowercase\n * - it will correctly type the country name if the code passed in is a literal\n * string (and a valid code)\n *\n * **Related:** `lookupCountryAlpha2()`, `lookupCountryAlpha3()`\n */\nexport function lookupCountryName<T extends Suggest<Iso3166_1_Alpha2 | Iso3166_1_Alpha3 | Iso3166_1_CountryCode>>(code: T) {\n const uc = toAllCaps(code);\n\n return (\n isNumberLike(code)\n ? lookupNumericCode(code, \"name\")\n : isIso3166Alpha2(uc)\n ? lookupAlpha2Code(uc, \"name\")\n : isIso3166Alpha3(uc)\n ? lookupAlpha3Code(uc, \"name\")\n : undefined\n ) as unknown as Iso3166CountryLookup<Uppercase<AsString<T>>>;\n}\n\n/**\n * Looks up the Alpha2 component of a [ISO3166-1](https://en.wikipedia.org/wiki/ISO_3166-1)\n * standard.\n */\nexport function lookupCountryAlpha2<\n T extends Suggest<Iso3166_1_Alpha3\n | Iso3166_1_CountryCode\n | Iso3166_1_CountryName\n >,\n>(code: T) {\n const uc = toAllCaps(code);\n\n return (\n isNumberLike(code)\n ? lookupNumericCode(code, \"alpha2\")\n : isIso3166Alpha2(uc)\n ? lookupAlpha2Code(uc, \"alpha2\")\n : isIso3166Alpha3(uc)\n ? lookupAlpha3Code(uc, \"alpha2\")\n : isIso3166CountryName(code)\n ? lookupName(code, \"alpha2\")\n : undefined\n ) as unknown as T extends Iso3166_1_CountryName\n ? Iso3166Alpha2Lookup<T>\n : Iso3166Alpha2Lookup<Uppercase<AsString<T>>>;\n}\n\n/**\n * Looks up the Alpha3 component of a [ISO3166-1](https://en.wikipedia.org/wiki/ISO_3166-1)\n * standard.\n */\nexport function lookupCountryAlpha3<\n T extends Suggest<\n Iso3166_1_Alpha2\n | Iso3166_1_CountryCode\n | Iso3166_1_CountryName\n >,\n>(token: T) {\n const uc = toAllCaps(token);\n\n return (\n isNumberLike(token)\n ? lookupNumericCode(token, \"alpha3\")\n : isIso3166Alpha2(uc)\n ? lookupAlpha2Code(uc, \"alpha3\")\n : isIso3166Alpha3(uc)\n ? lookupAlpha3Code(uc, \"alpha3\")\n : isIso3166CountryName(token)\n ? lookupName(token as any, \"alpha3\")\n : undefined\n ) as unknown as T extends Iso3166_1_CountryName\n ? Iso3166Alpha3Lookup<T>\n : Iso3166Alpha3Lookup<Uppercase<AsString<T>>>;\n}\n\n/**\n * Looks up the Alpha3 component of a [ISO3166-1](https://en.wikipedia.org/wiki/ISO_3166-1)\n * standard.\n */\nexport function lookupCountryCode<\n T extends Suggest<\n Iso3166_1_Alpha2\n | Iso3166_1_Alpha3\n | Iso3166_1_CountryName\n >,\n>(token: T) {\n const uc = toAllCaps(token);\n\n return (\n isNumberLike(token)\n ? lookupNumericCode(token, \"countryCode\")\n : isIso3166Alpha2(uc)\n ? lookupAlpha2Code(uc, \"countryCode\")\n : isIso3166Alpha3(uc)\n ? lookupAlpha3Code(uc, \"countryCode\")\n : isIso3166CountryName(token)\n ? lookupName(token as any, \"countryCode\")\n : undefined\n ) as unknown as T extends Iso3166_1_CountryName\n ? Iso3166CodeLookup<T>\n : Iso3166CodeLookup<Uppercase<AsString<T>>>;\n}\n","import type {\n MergeObjects,\n Narrowable,\n NarrowObject,\n} from \"inferred-types/types\";\n\n/**\n * merge two objects while preserving narrow types\n */\nexport function mergeObjects<\n TDefault extends NarrowObject<D>,\n TOverride extends NarrowObject<O>,\n D extends Narrowable,\n O extends Narrowable,\n>(\n defVal: TDefault,\n override: TOverride,\n) {\n return {\n ...defVal,\n ...override,\n } as unknown as MergeObjects<TDefault, TOverride>;\n}\n","import type { MergeScalars, Scalar } from \"inferred-types/types\";\nimport { isUndefined } from \"runtime/type-guards\";\n\n/**\n * **mergeScalars**(a,b)\n *\n * The value of scalar `b` _overrides_ that of `a` unless `b` is\n * undefined.\n */\nexport function mergeScalars<\n A extends Scalar | undefined,\n B extends Scalar | undefined,\n>(a: A, b: B) {\n return (isUndefined(b) ? a : b) as MergeScalars<A, B>;\n}\n","import type { MergeTuples, Narrowable } from \"inferred-types/types\";\n\n/**\n * **mergeTuples**(a,b)\n *\n * Replaces values in `a` with `b` unless `b` is _undefined_. Also, if\n * `a` has more elements than `b` then these extra elements will be\n * appended to the end.\n */\nexport function mergeTuples<A extends readonly Narrowable[], B extends readonly Narrowable[]>(a: A, b: B): MergeTuples<A, B> {\n return (\n b.length > a.length\n ? b.map((v, idx) => v !== undefined ? v : a[idx])\n : [...b, ...a.slice(b.length)].map((v, idx) => v !== undefined ? v : a[idx])\n ) as unknown as MergeTuples<A, B>;\n}\n","import type { Mutable, Narrowable } from \"inferred-types/types\";\n\n/**\n * converts a readonly value into a mutable one without giving up narrow types.\n */\nexport function mutable<T extends Narrowable | readonly Narrowable[]>(value: T): Mutable<T> {\n return value as Mutable<T>;\n}\n","import type { Narrowable } from \"inferred-types/types\";\n\n/**\n * **optional**(value)\n *\n * A function which takes the value `T` and widens it to include\n * a union with _undefined_.\n */\nexport function optional<\n T extends Narrowable,\n>(value: T) {\n return value as T | undefined;\n}\n\n/**\n * **orNull**`(value)`\n *\n * widens the type for the value passed in to be whatever type it\n * currently is _in union with_ `null`.\n */\nexport function orNull<T extends Narrowable>(value: T) {\n return value as T | null;\n}\n\n/**\n * **optionalOrNull**`(value)`\n *\n * widens the type for the value passed in to be whatever type it\n * currently is _in union with_ `null and `undefined`.\n *\n * **Related:** `optional()`, `orNull()`\n */\nexport function optionalOrNull<T extends Narrowable>(value: T) {\n return value as T | null | undefined;\n}\n","import type {\n SafeDecode,\n SafeEncode,\n SafeEncodingGroup,\n} from \"inferred-types/types\";\nimport {\n SAFE_ENCODING__BRACKETS,\n SAFE_ENCODING__QUOTES,\n SAFE_ENCODING__WHITESPACE,\n SAFE_ENCODING_KEYS,\n} from \"inferred-types/constants\";\nimport { mutable, reverseLookup } from \"inferred-types/runtime\";\n\nexport type SafeStringEncoder<\n G extends readonly SafeEncodingGroup[] = [\"quotes\", \"brackets\", \"whitespace\"],\n> = <T extends string>(text: T) => SafeEncode<T, G>;\n\nexport type SafeStringDecoder<\n G extends readonly SafeEncodingGroup[],\n> = <T extends string>(text: T) => SafeDecode<T, G>;\n\ntype Grp<T extends readonly SafeEncodingGroup[]> = T extends []\n ? [\"quotes\", \"brackets\", \"whitespace\"]\n : T;\n\n/**\n * **createSafeStringEncoder**`(...groups) -> [encoder, decoder]`\n *\n * specify the groups of characters you want to encode\n * and both an _encoder_ and _decoder_ will be returned.\n */\nexport function setupSafeStringEncoding<\n G extends readonly SafeEncodingGroup[],\n>(\n ...groups: G\n): [encode: SafeStringEncoder<Grp<G>>, decode: SafeStringDecoder<Grp<G>>] {\n const g = (groups.length === 0\n ? [\"quotes\", \"brackets\", \"whitespace\"]\n : groups\n ) as Grp<G>;\n\n /** SafeString encoder */\n const encode: SafeStringEncoder<Grp<G>> = (text) => {\n let results: string = text;\n const lookup = mutable(SAFE_ENCODING_KEYS);\n\n const keys = g.flatMap(\n i => i === \"whitespace\"\n ? Object.keys(mutable(SAFE_ENCODING__WHITESPACE))\n : i === \"brackets\"\n ? Object.keys(mutable(SAFE_ENCODING__BRACKETS))\n : i === \"quotes\"\n ? Object.keys(mutable(SAFE_ENCODING__QUOTES))\n : [],\n );\n\n for (const key of keys) {\n const find = key as string & keyof typeof lookup;\n const replace = lookup[find];\n\n results = results.replaceAll(find, replace);\n }\n\n return results as ReturnType<SafeStringEncoder<Grp<G>>>;\n };\n\n /** SafeString decoder */\n const decode: SafeStringDecoder<Grp<G>> = (encoded) => {\n let results: string = encoded;\n const lookup = reverseLookup(SAFE_ENCODING_KEYS);\n\n const keys = g.flatMap(\n i => i === \"whitespace\"\n ? Object.keys(reverseLookup(SAFE_ENCODING__WHITESPACE))\n : i === \"brackets\"\n ? Object.keys(reverseLookup(SAFE_ENCODING__BRACKETS))\n : i === \"quotes\"\n ? Object.keys(reverseLookup(SAFE_ENCODING__QUOTES))\n : [],\n );\n\n for (const key of keys) {\n const find = key as string & keyof typeof lookup;\n const replace = lookup[find];\n\n results = results.replaceAll(find, replace);\n }\n\n return results;\n };\n\n return [encode, decode];\n}\n","import type { StripSurround, Trim } from \"inferred-types/types\";\nimport { stripLeading, stripTrailing } from \"inferred-types/runtime\";\n\n/**\n * **stripParenthesis**`(val)`\n *\n * A runtime utility which strips leading and trailing whitespace as well\n * as any leading or trailing parenthesis characters.\n */\nexport function stripParenthesis<\n T extends string,\n>(val: T) {\n return stripTrailing(stripLeading(val.trim(), \"(\"), \")\").trim() as unknown as Trim<StripSurround<Trim<T>, \"(\" | \")\">>;\n}\n","import type {\n Narrowable,\n NarrowObject,\n Scalar,\n ToJson,\n ToJsonOptions\n} from \"inferred-types/types\";\n\n/**\n * **toJSON**`(val)`\n *\n * Converts the passed in value to a strongly typed string\n * literal representation of the JSON type for `val`.\n *\n * **Related:** `toStringLiteral()`\n */\nexport function toJSON<\n T extends Exclude<Scalar, symbol> | NarrowObject<N> | readonly N[],\n N extends Narrowable,\n O extends ToJsonOptions = { quote: \"\\\"\"; encode: false }\n>(\n val: T,\n _options: O = { quote: \"\\\"\", encode: false } as O\n): ToJson<T, O> {\n return JSON.stringify(val) as unknown as ToJson<T, O>;\n}\n","import type {\n As,\n Dictionary,\n MergeObjects,\n ObjectKey,\n SortByKey,\n SortByKeyOptions,\n ToKv,\n} from \"inferred-types/types\";\nimport { keysOf, sortByKey } from \"inferred-types/runtime\";\n\n/**\n * **toKeyValue**`(obj)` -> tuple\n *\n * Converts an object into a tuple of `KeyValue` objects.\n *\n * - a Tuple representation benefits from two main things:\n * - ensured **order**\n * - it is an **iterable** structure\n * - narrow types are preserved wherever possible\n * - you may optionally position certain key's at the \"top\"\n * or \"bottom\" of the stack by using the sort callback.\n *\n * ```ts\n * // [\n * // { key: \"id\", value: 123},\n * // { key: \"foo\", value: 1 },\n * // { key: \"bar\", value: 2 },\n * // ]\n * const rec = toKeyValue({foo: 1, bar: 2, id: 123 }, { start: \"id\" });\n * ```\n */\nexport function toKeyValue<\n const TObj extends Dictionary,\n K extends ObjectKey = ToKv<TObj>[number] extends { key: infer KK extends ObjectKey } ? KK : never,\n const TSort extends SortByKeyOptions<K> | undefined = undefined,\n TSorted = SortByKey<\n ToKv<TObj>,\n \"key\",\n TSort extends undefined\n ? { start: []; end: [] }\n : MergeObjects<{ start: []; end: [] }, As<TSort, Dictionary>>\n >\n>(\n obj: TObj,\n sort?: TSort,\n): TSorted {\n /**\n * an unsorted tuple of `KeyValue`'s\n */\n const kv = keysOf(obj).map(\n k => ({ key: k, value: obj[k], required: true })\n );\n\n return sortByKey(kv, \"key\", sort || {}) as unknown as TSorted;\n}\n","import type { Narrowable, Scalar, ToNumber } from \"inferred-types/types\";\n\nfunction convertScalar<T extends Narrowable>(val: T) {\n switch (typeof val) {\n case \"number\":\n return val;\n case \"string\":\n return Number(val);\n case \"boolean\":\n return val ? 1 : 0;\n default:\n throw new Error(`${typeof val} is an invalid scalar type to convert to a number!`);\n }\n}\nconst convertList = <T extends readonly Scalar[]>(val: T) => val.map(i => convertScalar(i));\n\n/**\n * **toNumber**(value)\n *\n * Runtime utility which converts a value into a _numeric_ variant:\n *\n * - for scalars (and objects) it will try to convert to number but otherwise returns `NaN` to runtime and `never` to type system\n * - for arrays it will iterate over each element and try to convert to a number like above\n */\nexport function toNumber<\n T extends Narrowable,\n>(value: T): ToNumber<T> {\n return (\n Array.isArray(value)\n ? convertList(value)\n : convertScalar(value)\n ) as unknown as ToNumber<T>;\n}\n","import type {\n IsObjectKeyRequiringQuotes,\n IsString,\n Narrowable,\n ObjectKey,\n Scalar,\n ToLiteralOptions,\n ToStringLiteral,\n ToStringLiteral__Array,\n Tuple\n} from \"inferred-types/types\";\nimport { ALPHA_CHARS, Never } from \"inferred-types/constants\";\nimport {\n indexOf,\n isArray,\n isDictionary,\n isFalse,\n isInputToken__String,\n isNull,\n isNumber,\n isScalar,\n isString,\n isSymbol,\n isTrue,\n isUndefined,\n keysOf,\n stripChars\n} from \"inferred-types/runtime\";\n\n/**\n * Object keys typically do not need be surrounded by quotations\n * marks at least if they are of the `PascalCase` or `camelCase`\n * variety but if they contain spaces, dashes, or really any character\n * other than alphanumeric characters then they must be quoted.\n */\nexport function isObjectKeyRequiringQuotes<T extends ObjectKey>(\n val: T\n): IsString<T> & IsObjectKeyRequiringQuotes<T & string> extends true ? true : false {\n return (\n isString(val)\n ? stripChars(val, ...ALPHA_CHARS) !== \"\"\n : false\n ) as IsString<T> & IsObjectKeyRequiringQuotes<T & string> extends true\n ? true\n : false;\n}\n\nfunction property(prop: ObjectKey): string {\n if (isString(prop)) {\n if (isObjectKeyRequiringQuotes(prop)) {\n return `\"${prop}\"`;\n }\n\n return prop;\n }\n\n return String(prop);\n}\n\nfunction toStringLiteral__Object<\n T extends Record<ObjectKey, string>\n>(obj: T): string {\n const inner: string[] = [];\n\n for (const k of keysOf(obj)) {\n inner.push(`${property(k)}: ${obj[k]}`);\n }\n\n return `{ ${inner.join(\", \")} }`;\n}\n\nfunction mutateObjectKeys<T extends Record<ObjectKey, unknown>>(\n obj: T,\n opt?: ToLiteralOptions\n) {\n const result: Record<ObjectKey, string> = {};\n for (const k of Object.keys(obj)) {\n result[k] = toStringLiteral(\n indexOf(obj, k) as any,\n opt\n ) as unknown as string;\n }\n\n return result;\n}\n\nfunction scalarValue<\n T extends Scalar,\n O extends ToLiteralOptions\n>(\n val: T,\n opt: O\n) {\n return isString(val)\n ? isTrue(opt.tokensAllowed)\n ? isInputToken__String(val)\n ? val\n : `\"${val}\"`\n : `\"${val}\"`\n : isNumber(val)\n ? `${val}`\n : isUndefined(val)\n ? \"undefined\"\n : isNull(val)\n ? \"null\"\n : isFalse(val)\n ? \"false\"\n : isTrue(val)\n ? \"true\"\n : isSymbol(val)\n ? String(val)\n : Never;\n}\n\nexport function toStringLiteral__Tuple<\n T extends readonly N[],\n N extends Scalar | Record<ObjectKey, V> | Tuple,\n V extends Narrowable\n>(\n tup: T,\n opt?: ToLiteralOptions\n) {\n return `[ ${tup.map(i => toStringLiteral(i as any, opt)).join(\", \")} ]` as ToStringLiteral__Array<T>;\n}\n\n/**\n * **toStringLiteral**`(value, [options]) -> string literal representation`\n *\n * Converts any value into a string literal which _represents_ the\n * value.\n *\n * ```ts\n * // '{ foo: 1; bar: \"bar\" }'\n * const fooBar = toStringLiteral({foo: 1, bar: \"bar\"});\n * ```\n *\n * - you can adjust what type of quote marks to use by adjusting the _optional_\n * **options** hash\n *\n * **Related:** `toJSON()`\n */\nexport function toStringLiteral<\n const T extends Scalar | Record<ObjectKey, V> | readonly (Scalar | Record<ObjectKey, V>)[],\n V extends Narrowable,\n O extends ToLiteralOptions\n>(\n val: T,\n options: O = {} as O\n): ToStringLiteral<T> {\n const o = {\n tokensAllowed: false,\n quote: \"\\\"\",\n ...(options || {})\n } as ToLiteralOptions;\n\n return (\n isArray(val)\n ? toStringLiteral__Tuple(val as any, o)\n : isDictionary(val)\n ? toStringLiteral__Object(mutateObjectKeys(val, o))\n : isTrue(val)\n ? \"true\"\n : isFalse(val)\n ? \"false\"\n : isScalar(val)\n ? scalarValue(val, o)\n : Never\n ) as unknown as ToStringLiteral<T>;\n}\n","import type { TwModifier } from \"inferred-types/types\";\nimport { TW_MODIFIERS } from \"inferred-types/constants\";\nimport { isTailwindModifier } from \"inferred-types/runtime\";\n\nconst MODS = TW_MODIFIERS.map(i => `${i}:`);\n\n/**\n * Extracts all the modifiers found on the passed in string and\n * removes them.\n *\n * **Related:** `getTailwindModifiers`\n */\nexport function removeTailwindModifiers(val: string): string {\n return MODS.some(i => val.startsWith(i))\n ? removeTailwindModifiers(val.replace(MODS.find(i => val.startsWith(i)) as string, \"\"))\n : val;\n}\n\n/**\n * Extracts an array of Tailwind Modifiers found at the start of a Tailwind string.\n */\nexport function getTailwindModifiers(val: string): TwModifier[] {\n return val.split(\":\").filter(i => isTailwindModifier(i));\n}\n","/**\n * **unionize**(value,inUnionWith)\n *\n * Takes a runtime **value** and modifies it's type to be a union with\n * the type of `inUnionWith` parameter (but does not change the actual\n * runtime value).\n */\nexport function unionize<T, U>(value: T, _inUnionWith: U): T | U {\n return value as T | U;\n}\n","import type { Narrowable, VueRef } from \"inferred-types/types\";\n\n/**\n * **asVueRef**(value)\n *\n * Receives a _value_ and makes it look like a `VueRef<T>` which will make\n * it pass the `IsRef<T>` type check. It also provides a hidden `_value` property\n * to the runtime which makes it pass the `isRef()` runtime check.\n *\n * Note:\n *\n * - this is a convenience function for building test cases in a library where you're\n * not actually exporting VueJS symbols (like inferred-types).\n */\nexport function asVueRef<T extends Narrowable>(value: T) {\n return ({\n value,\n _value: null,\n }) as unknown as VueRef<T>;\n}\n"],"mappings":"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ACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;AACN;AAED,MAAa,qBAAqB;CAC9B,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,MAAM;CACN,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,MAAM;CACN,KAAK;CACL,KAAK;CACL,KAAK;AACR;AAeD,MAAa,yBAAyB;CAClC,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;AACN;AAED,MAAa,kBAAkB;CAC3B,GAAG;CACH,GAAG;CACH,GAAG;AACN;;;;;;;ACzHD,MAAa,kBAAkB;CAC3B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CA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;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAM;EAAO;CAAK;CACnB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAM;EAAO;CAAK;CACnB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAS;EAAO;CAAK;CACtB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAM;EAAO;CAAK;CACnB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAM;EAAO;CAAK;CACnB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAM;EAAO;CAAK;CACnB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAS;EAAO;CAAK;CACtB;EAAC;EAAM;EAAO;CAAK;CACnB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAM;EAAO;CAAK;CACnB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAM;EAAO;CAAK;CACnB;EAAC;EAAM;EAAO;CAAK;CACnB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAM;EAAO;CAAK;CACnB;EAAC;EAAO;EAAO;CAAK;CACpB;EAAC;EAAO;EAAO;CAAK;CAC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R;AAED,MAAa,qBAAqB;CAC9B,GAAG;CACH,GAAG;CACH,GAAG;AACN;;;;AC1BD,MAAa,iBAAiB;CAC1B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACH;;;;ACSD,MAAa,uBAAuB;CAChC;CACA;EACC;EACA;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACH;AAED,MAAa,2BAA2B;CACpC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACH;AASD,MAAa,sBAAsB,EAC9B,aACJ;AAED,MAAa,kBAAkB;CAC3B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACH;AAED,MAAa,oBAAoB;CAC7B,GAAG;CACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACH;AASD,MAAa,qBAAqB;CAC9B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACH;AAED,MAAa,sBAAsB;CAC/B;CACA;CACA;CACA;CACA;CACA;CACA;EACC;EACA;EACA;AACJ;AAED,MAAa,oBAAoB;CAC7B;CACA;CACA;AACH;AAED,MAAa,oBAAoB,CAC7B,OACA,YACH;AAED,MAAa,0BAA0B;CACnC,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;AACN;;;;;;;;AASD,MAAa,gBAAgB;CACzB,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;AACN;;;;;;;;;ACpJD,MAAa,wBAAwB;CACjC;CACA;CACA;CACA;CACA;CACA;AACH;;;;ACHD,MAAa,eAAe;CACxB;EACI,MAAM;EACN,aAAa;EACb,UAAU,CAAC,0BAA2B;EACtC,YAAY;EACZ,qBAAqB;EACrB,cAAc;CACjB;CACD;EACI,MAAM;EACN,aAAa;EACb,UAAU,CAAC,yBAA0B;EACrC,YAAY;EACZ,qBAAqB;EACrB,cAAc;CACjB;CACD;EACI,MAAM;EACN,aAAa;EACb,UAAU,CAAC,4BAA4B,eAAgB;EACvD,YAAY;EACZ,qBAAqB;EACrB,cAAc;CACjB;CACD;EA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BAAsB;CAC/B;CACA;CACA;CACA;CACA;AACH;;;;;AAMD,MAAa,eAAe;CACxB,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;AACN;;;;ACtKD,MAAa,yBAAyB;CAClC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACH;AACD,MAAa,0BAA0B;CACnC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACH;AACD,MAAa,6BAA6B;CACtC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACH;AACD,MAAa,uBAAuB;CAChC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACH;AACD,MAAa,2BAA2B;CACpC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACH;AACD,MAAa,4BAA4B;CACrC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACH;AAED,MAAa,yBAAyB;CAClC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACH;AACD,MAAa,yBAAyB;CAClC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACH;AACD,MAAa,0BAA0B;CACnC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CA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"}
|