inferred-types 0.55.19 → 0.55.21
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/modules/constants/dist/index.cjs +22 -22
- package/modules/constants/dist/index.cjs.map +1 -1
- package/modules/constants/dist/index.d.ts +22 -22
- package/modules/constants/dist/index.js +22 -22
- package/modules/constants/dist/index.js.map +1 -1
- package/modules/inferred-types/dist/index.cjs +44 -44
- package/modules/inferred-types/dist/index.cjs.map +1 -1
- package/modules/inferred-types/dist/index.d.ts +439 -424
- package/modules/inferred-types/dist/index.js +44 -44
- package/modules/inferred-types/dist/index.js.map +1 -1
- package/modules/runtime/dist/index.cjs +22 -22
- package/modules/runtime/dist/index.cjs.map +1 -1
- package/modules/runtime/dist/index.d.ts +166 -162
- package/modules/runtime/dist/index.js +22 -22
- package/modules/runtime/dist/index.js.map +1 -1
- package/modules/types/dist/index.cjs.map +1 -1
- package/modules/types/dist/index.d.ts +251 -240
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.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","../../runtime/src/api/defineApi.ts","../../runtime/src/api/handleDoneFn.ts","../../runtime/src/api/objectToApi.ts","../../runtime/src/boolean-logic/ifArray.ts","../../runtime/src/boolean-logic/ifArrayPartial.ts","../../runtime/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","../../runtime/src/boolean-logic/ifChar.ts","../../runtime/src/boolean-logic/ifContainer.ts","../../runtime/src/boolean-logic/ifFalse.ts","../../runtime/src/boolean-logic/ifFunction.ts","../../runtime/src/boolean-logic/ifHasKey.ts","../../runtime/src/boolean-logic/ifLength.ts","../../runtime/src/boolean-logic/ifNotNull.ts","../../runtime/src/boolean-logic/ifNull.ts","../../runtime/src/boolean-logic/ifNumber.ts","../../runtime/src/boolean-logic/ifObject.ts","../../runtime/src/boolean-logic/ifSameType.ts","../../runtime/src/boolean-logic/ifScalar.ts","../../runtime/src/boolean-logic/ifString.ts","../../runtime/src/boolean-logic/ifTrue.ts","../../runtime/src/boolean-logic/ifUndefined.ts","../../runtime/src/combinators/and.ts","../../runtime/src/combinators/or.ts","../../runtime/src/css/createCssKeyframe.ts","../../runtime/src/css/cssFromDefinition.ts","../../runtime/src/datetime/asDate.ts","../../runtime/src/datetime/asIsoDate.ts","../../runtime/src/datetime/getDaysBetween.ts","../../runtime/src/datetime/getToday.ts","../../runtime/src/datetime/getTomorrow.ts","../../runtime/src/datetime/getWeekNumber.ts","../../runtime/src/datetime/getYesterday.ts","../../runtime/src/datetime/isLeapYear.ts","../../runtime/src/dictionary/defineObject.ts","../../runtime/src/dictionary/entries.ts","../../runtime/src/dictionary/get.ts","../../runtime/src/dictionary/keysOf.ts","../../runtime/src/dictionary/narrowObjectTo.ts","../../runtime/src/dictionary/objectValues.ts","../../runtime/src/dictionary/omit.ts","../../runtime/src/dictionary/retain.ts","../../runtime/src/dictionary/sharedKeys.ts","../../runtime/src/dictionary/takeProp.ts","../../runtime/src/dictionary/valuesOf.ts","../../runtime/src/dictionary/withDefaults.ts","../../runtime/src/dictionary/withKeys.ts","../../runtime/src/dictionary/withoutKeys.ts","../../runtime/src/dictionary/withoutValue.ts","../../runtime/src/dictionary/withValue.ts","../../runtime/src/errors/createErrorCondition.ts","../../runtime/src/functional/result.ts","../../runtime/src/functions/fnMeta.ts","../../runtime/src/functions/wrapFn.ts","../../runtime/src/initializers/addFnToProps.ts","../../runtime/src/initializers/addPropsToFn.ts","../../runtime/src/initializers/createCssSelector.ts","../../runtime/src/initializers/createFnWithProps.ts","../../runtime/src/initializers/defineObj.ts","../../runtime/src/initializers/defineTuple.ts","../../runtime/src/lists/asArray.ts","../../runtime/src/lists/createConverter.ts","../../runtime/src/lists/createFixedLengthArray.ts","../../runtime/src/lists/filter.ts","../../runtime/src/lists/filterEmpty.ts","../../runtime/src/type-guards/isFunction.ts","../../runtime/src/type-guards/isObject.ts","../../runtime/src/type-guards/api-tg.ts","../../runtime/src/type-guards/date-time/isDate.ts","../../runtime/src/type-guards/date-time/isDateTime.ts","../../runtime/src/type-guards/date-time/isIsoDate.ts","../../runtime/src/type-guards/date-time/isIsoTime.ts","../../runtime/src/type-guards/date-time/isIsoYear.ts","../../runtime/src/type-guards/date-time/isLuxonDateTime.ts","../../runtime/src/type-guards/date-time/isMoment.ts","../../runtime/src/type-guards/date-time/isThisMonth.ts","../../runtime/src/type-guards/date-time/isThisWeek.ts","../../runtime/src/type-guards/date-time/isThisYear.ts","../../runtime/src/type-guards/date-time/isToday.ts","../../runtime/src/type-guards/date-time/isTomorrow.ts","../../runtime/src/type-guards/date-time/isYesterday.ts","../../runtime/src/type-guards/finance/CreditCards.ts","../../runtime/src/type-guards/isString.ts","../../runtime/src/type-guards/geo/isIso3166Alpha2.ts","../../runtime/src/type-guards/geo/isUsState.ts","../../runtime/src/type-guards/isNumericString.ts","../../runtime/src/type-guards/numeric/isNumber.ts","../../runtime/src/type-guards/geo/isZipCode.ts","../../runtime/src/type-guards/isSpecificConstant.ts","../../runtime/src/type-guards/hasDefaultValue.ts","../../runtime/src/type-guards/hasIndexOf.ts","../../runtime/src/type-guards/hasKeys.ts","../../runtime/src/type-conversion/asChars.ts","../../runtime/src/type-conversion/asRecord.ts","../../runtime/src/type-conversion/asString.ts","../../runtime/src/type-conversion/csv.ts","../../runtime/src/type-conversion/fromKeyValue.ts","../../runtime/src/type-conversion/intersect.ts","../../runtime/src/type-conversion/ip6GroupExpansion.ts","../../runtime/src/type-conversion/json.ts","../../runtime/src/type-conversion/lookupCountry.ts","../../runtime/src/type-conversion/map/createMapper.ts","../../runtime/src/type-conversion/mergeObjects.ts","../../runtime/src/type-guards/isUndefined.ts","../../runtime/src/type-conversion/mergeScalars.ts","../../runtime/src/type-conversion/mergeTuples.ts","../../runtime/src/type-conversion/never.ts","../../runtime/src/type-conversion/optional.ts","../../runtime/src/type-conversion/stripParenthesis.ts","../../runtime/src/type-conversion/toKeyValue.ts","../../runtime/src/type-conversion/toNumber.ts","../../runtime/src/type-conversion/tw-conversion.ts","../../runtime/src/type-conversion/union.ts","../../runtime/src/type-conversion/unionize.ts","../../runtime/src/type-guards/hasWhitespace.ts","../../runtime/src/type-guards/higher-order/endsWith.ts","../../runtime/src/type-guards/higher-order/isEqual.ts","../../runtime/src/type-guards/higher-order/isLength.ts","../../runtime/src/type-guards/higher-order/isSameTypeOf.ts","../../runtime/src/type-guards/higher-order/isTuple.ts","../../runtime/src/type-guards/higher-order/isTypeOf.ts","../../runtime/src/type-guards/higher-order/startsWith.ts","../../runtime/src/type-guards/html/component-tags.ts","../../runtime/src/type-guards/html/hasHtml.ts","../../runtime/src/type-guards/html/html-tags.ts","../../runtime/src/type-guards/html/isHtml.ts","../../runtime/src/type-guards/html/isHtmlElement.ts","../../runtime/src/type-guards/html/validHtmlAttributes.ts","../../runtime/src/type-guards/isAlpha.ts","../../runtime/src/type-guards/isArray.ts","../../runtime/src/type-guards/isBoolean.ts","../../runtime/src/type-guards/isBooleanLike.ts","../../runtime/src/type-guards/isConstant.ts","../../runtime/src/type-guards/isContainer.ts","../../runtime/src/type-guards/isCssAspectRatio.ts","../../runtime/src/type-guards/isCsv.ts","../../runtime/src/type-guards/isDefined.ts","../../runtime/src/type-guards/isDoneFn.ts","../../runtime/src/type-guards/isEmail.ts","../../runtime/src/type-guards/isEmpty.ts","../../runtime/src/type-guards/isErrorCondition.ts","../../runtime/src/type-guards/isFalse.ts","../../runtime/src/type-guards/isFalsy.ts","../../runtime/src/type-guards/isFnWithParams.ts","../../runtime/src/type-guards/isHexadecimal.ts","../../runtime/src/type-guards/isIndexable.ts","../../runtime/src/type-guards/isInlineSvg.ts","../../runtime/src/type-guards/isMap.ts","../../runtime/src/type-guards/isNever.ts","../../runtime/src/type-guards/isNothing.ts","../../runtime/src/type-guards/isNotNull.ts","../../runtime/src/type-guards/isNull.ts","../../runtime/src/type-guards/isPhoneNumber.ts","../../runtime/src/type-guards/isReadonlyArray.ts","../../runtime/src/type-guards/isRef.ts","../../runtime/src/type-guards/isRegExp.ts","../../runtime/src/type-guards/isSymbol.ts","../../runtime/src/type-guards/isScalar.ts","../../runtime/src/type-guards/isSet.ts","../../runtime/src/type-guards/isSetContainer.ts","../../runtime/src/type-guards/isStringArray.ts","../../runtime/src/type-guards/isThenable.ts","../../runtime/src/type-guards/isTrimmable.ts","../../runtime/src/type-guards/isTrue.ts","../../runtime/src/type-guards/isTruthy.ts","../../runtime/src/type-guards/isTypeSubtype.ts","../../runtime/src/type-guards/isTypeTuple.ts","../../runtime/src/type-guards/isUnset.ts","../../runtime/src/type-guards/isUrl.ts","../../runtime/src/type-guards/isVariable.ts","../../runtime/src/type-guards/metrics/isMetric.ts","../../runtime/src/type-guards/metrics/isUom.ts","../../runtime/src/type-guards/network-tg.ts","../../runtime/src/type-guards/numeric/isNumericArray.ts","../../runtime/src/type-guards/protocol.ts","../../runtime/src/type-guards/tokens/general.ts","../../runtime/src/type-guards/tokens/isAtomicToken.ts","../../runtime/src/type-guards/tokens/isContainerToken.ts","../../runtime/src/type-guards/tokens/isShapeCallback.ts","../../runtime/src/type-guards/tokens/isShapeToken.ts","../../runtime/src/type-guards/tokens/isSimpleToken.ts","../../runtime/src/type-guards/tokens/isDefineObject.ts","../../runtime/src/type-guards/tokens/isFunctionToken.ts","../../runtime/src/type-guards/tokens/set-tokens.ts","../../runtime/src/type-guards/tokens/singletons.ts","../../runtime/src/type-guards/tw/tw-color.ts","../../runtime/src/type-guards/urls/news/australian.ts","../../runtime/src/type-guards/urls/news/belgium.ts","../../runtime/src/type-guards/urls/news/canadian.ts","../../runtime/src/type-guards/urls/news/danish.ts","../../runtime/src/type-guards/urls/news/dutch.ts","../../runtime/src/type-guards/urls/news/french.ts","../../runtime/src/type-guards/urls/news/german.ts","../../runtime/src/type-guards/urls/news/indian.ts","../../runtime/src/type-guards/urls/news/italian.ts","../../runtime/src/type-guards/urls/news/japanese.ts","../../runtime/src/type-guards/urls/news/mexican.ts","../../runtime/src/type-guards/urls/news/norwegian.ts","../../runtime/src/type-guards/urls/news/south-korean.ts","../../runtime/src/type-guards/urls/news/spanish.ts","../../runtime/src/type-guards/urls/news/swiss.ts","../../runtime/src/type-guards/urls/news/turkish.ts","../../runtime/src/type-guards/urls/news/uk.ts","../../runtime/src/type-guards/urls/news/us.ts","../../runtime/src/type-guards/urls/news/chinese.ts","../../runtime/src/type-guards/urls/news/index.ts","../../runtime/src/type-guards/urls/repos/bitbucket.ts","../../runtime/src/type-guards/urls/repos/codeCommit.ts","../../runtime/src/type-guards/urls/repos/github.ts","../../runtime/src/type-guards/urls/repos/isSemanticVersion.ts","../../runtime/src/type-guards/urls/repos/index.ts","../../runtime/src/type-guards/urls/retail.ts","../../runtime/src/type-guards/urls/Social.ts","../../runtime/src/type-guards/urls/youtube.ts","../../runtime/src/type-guards/vue/isVueRef.ts","../../runtime/src/lists/filterUndefined.ts","../../runtime/src/lists/find.ts","../../runtime/src/lists/getEach.ts","../../runtime/src/lists/indexOf.ts","../../runtime/src/lists/intersection.ts","../../runtime/src/lists/joinWith.ts","../../runtime/src/lists/last.ts","../../runtime/src/lists/logicalReturns.ts","../../runtime/src/lists/reverse.ts","../../runtime/src/lists/shift.ts","../../runtime/src/lists/slice.ts","../../runtime/src/lists/unique.ts","../../runtime/src/literals/box.ts","../../runtime/src/literals/capitalize.ts","../../runtime/src/literals/color/cssColor.ts","../../runtime/src/literals/color/twColor.ts","../../runtime/src/literals/ensureLeading.ts","../../runtime/src/literals/ensureSurround.ts","../../runtime/src/literals/ensureTrailing.ts","../../runtime/src/literals/getTypeSubtype.ts","../../runtime/src/literals/identity.ts","../../runtime/src/literals/ifLowercase.ts","../../runtime/src/literals/ifUppercase.ts","../../runtime/src/literals/infer.ts","../../runtime/src/literals/literal.ts","../../runtime/src/literals/lowercase.ts","../../runtime/src/literals/narrow.ts","../../runtime/src/literals/pathJoin.ts","../../runtime/src/literals/phone/asPhoneNumber.ts","../../runtime/src/literals/phone/getPhoneCountryCode.ts","../../runtime/src/literals/phone/removePhoneCountryCode.ts","../../runtime/src/literals/pluralize.ts","../../runtime/src/literals/retainAfter.ts","../../runtime/src/literals/retainChars.ts","../../runtime/src/literals/retainUntil.ts","../../runtime/src/literals/retainWhile.ts","../../runtime/src/literals/rightWhitespace.ts","../../runtime/src/literals/split.ts","../../runtime/src/literals/stripAfter.ts","../../runtime/src/literals/stripBefore.ts","../../runtime/src/literals/stripChars.ts","../../runtime/src/literals/stripLeading.ts","../../runtime/src/literals/stripSurround.ts","../../runtime/src/literals/stripTrailing.ts","../../runtime/src/literals/stripUntil.ts","../../runtime/src/literals/stripWhile.ts","../../runtime/src/literals/surround.ts","../../runtime/src/literals/takeNumericCharacters.ts","../../runtime/src/literals/toCamelCase.ts","../../runtime/src/literals/toKebabCase.ts","../../runtime/src/literals/toNumericArray.ts","../../runtime/src/literals/toPascalCase.ts","../../runtime/src/literals/toSnakeCase.ts","../../runtime/src/literals/toString.ts","../../runtime/src/literals/toUppercase.ts","../../runtime/src/literals/trim.ts","../../runtime/src/literals/truncate.ts","../../runtime/src/literals/tuple.ts","../../runtime/src/literals/uncapitalize.ts","../../runtime/src/literals/unset.ts","../../runtime/src/literals/uppercase.ts","../../runtime/src/literals/widen.ts","../../runtime/src/meta/urlMeta.ts","../../runtime/src/meta/youtube-meta.ts","../../runtime/src/queues/fifo.ts","../../runtime/src/queues/lifo.ts","../../runtime/src/runtime-types/asToken.ts","../../runtime/src/runtime-types/shape-helpers/addToken.ts","../../runtime/src/runtime-types/shape-helpers/atomics.ts","../../runtime/src/runtime-types/shape-helpers/functions.ts","../../runtime/src/runtime-types/shape-helpers/literal-containers.ts","../../runtime/src/runtime-types/shape-helpers/regexToken.ts","../../runtime/src/runtime-types/shape-helpers/singletons.ts","../../runtime/src/runtime-types/shape-helpers/union.ts","../../runtime/src/runtime-types/shape-helpers/wide-containers.ts","../../runtime/src/runtime-types/shape.ts","../../runtime/src/runtime-types/asDefineObject.ts","../../runtime/src/runtime-types/asType.ts","../../runtime/src/runtime-types/choices.ts","../../runtime/src/runtime-types/doesExtend.ts","../../runtime/src/runtime-types/ip6Prefix.ts","../../runtime/src/runtime-types/list.ts","../../runtime/src/runtime-types/tokens/createTypeToken.ts","../../runtime/src/runtime-types/tokens/fromDefineObject.ts","../../runtime/src/runtime-types/tokens/getTokenKind.ts","../../runtime/src/runtime-types/tokens/simpleToken.ts","../../runtime/src/sets/hasOverlappingKeys.ts","../../runtime/src/sets/uniqueKeys.ts","../../runtime/src/vuejs/asVueRef.ts","../../types/src/dictionary/MapTo.ts","../../types/src/string-literals/character-sets/images/Exif.ts"],"sourcesContent":["export * from \"inferred-types/constants\";\nexport * from \"inferred-types/runtime\";\nexport * from \"inferred-types/types\";\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","export 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 {\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","export 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, 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 { Narrowable, ObjectKey, WithoutKeys } 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 Record<ObjectKey, N>,\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 WithoutKeys<TObj, TKeys>;\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 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 { [key: string]: N },\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] });\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 { hasKeys } 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 hasKeys(\"done\")(val) && typeof (val as any).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","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","/**\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 { 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 { 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 { TW_CHROMA, TW_HUE, TW_LUMINOSITY } from \"inferred-types/constants\";\n\ntype Rtn<\n TColor extends TwColor,\n TLum extends TwLuminosity,\n> =\nTLum 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 * Provides a Tailwind Color using the `oklch` color\n * specification. The output is intended to put into\n * a CSS property.\n */\nexport function twColor<\n TColor extends TwColor,\n TLum extends TwLuminosity,\n>(color: TColor, luminosity: 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","import type {\n Dictionary,\n MergeObjects,\n OptRequired,\n} from \"inferred-types/types\";\n\n/**\n * utility function to take a fully-qualified _user_ config\n * and make it into a FinalizedMapConfig\n */\nfunction toFinalizedConfig<\n IR extends OptRequired,\n D extends MapCardinalityIllustrated,\n OR extends OptRequired,\n>(config: MapConfig<IR, D, OR>): FinalizedMapConfig<IR, D, OR> {\n return { ...config, finalized: true } as FinalizedMapConfig<IR, D, OR>;\n}\n\nexport const DEFAULT_ONE_TO_MANY_MAPPING = toFinalizedConfig({\n input: \"req\",\n output: \"opt\",\n cardinality: \"I -> O[]\",\n});\n\nexport const DEFAULT_ONE_TO_ONE_MAPPING = toFinalizedConfig({\n input: \"req\",\n output: \"req\",\n cardinality: \"I -> O\",\n});\n\nexport const DEFAULT_MANY_TO_ONE_MAPPING = toFinalizedConfig({\n input: \"req\",\n output: \"req\",\n cardinality: \"I[] -> O\",\n});\n\n/**\n * The _default_ One-to-Many mapping that the mapTo() utility provides\n */\nexport type DefaultOneToManyMapping = typeof DEFAULT_ONE_TO_MANY_MAPPING;\n\n/**\n * The _default_ One-to-One mapping that the mapTo() utility provides\n */\nexport type DefaultOneToOneMapping = typeof DEFAULT_ONE_TO_ONE_MAPPING;\n\n/**\n * The _default_ Many-to-One mapping that the mapTo() utility provides\n */\nexport type DefaultManyToOneMapping = typeof DEFAULT_MANY_TO_ONE_MAPPING;\n\n/**\n * Expresses relationship between inputs/outputs:\n */\nexport enum MapCardinality {\n /** every input results in 0:M outputs */\n OneToMany = \"I -> O[]\",\n /** every input results in 0:1 outputs */\n OneToOne = \"I -> O\",\n /** every input is an array of type I and reduced to a single O */\n ManyToOne = \"I[] -> O\",\n}\n\nexport type MapCardinalityIllustrated = `${string | number}`;\n\n/**\n * The _user_ configuration of a **mapTo** mapper function\n * which will be finalized by merging it with the appropriate\n * default mapping type.\n */\nexport interface MapConfig<\n IR extends OptRequired | undefined = undefined,\n D extends MapCardinalityIllustrated | undefined = undefined,\n OR extends OptRequired | undefined = undefined,\n> {\n input?: IR;\n output?: OR;\n cardinality?: D;\n /**\n * Whether calls to the final `MapFn` will be logged to stderr\n * for debugging purposes. Defaults to false; if you specify\n * a _string_ for a value that will be sent to stderr along\n * with other debugging info.\n */\n debug?: boolean | string;\n}\n\n/**\n * A finalized configuration of a **mapTo** mapper functions cardinality\n * relationships between _inputs_ and _outputs_.\n *\n * Note: _this configuration does _not_ yet include the actual mapping\n * configuration between the input and output._\n */\nexport type FinalizedMapConfig<\n IR extends OptRequired = MapIR<DefaultOneToManyMapping & string>,\n D extends MapCardinalityIllustrated = MapCard<DefaultOneToManyMapping>,\n OR extends OptRequired = MapOR<DefaultOneToManyMapping>,\n> = Required<Omit<MapConfig<IR, D, OR>, \"debug\">> & { finalized: true; debug: boolean | string };\n\n/**\n * User configuration exposed by a config function which specifies the\n * cardinality already (e.g., `oneToMany()`, `manyToOne()`)\n */\ninterface MapCardinalityConfig<\n IR extends OptRequired | undefined,\n OR extends OptRequired | undefined,\n> {\n /** whether we the input can _optionally_ be an `undefined` value or not */\n input?: IR;\n /** whether we the output can _optionally_ be an `undefined` value or not */\n output?: OR;\n /**\n * Whether calls to the final `MapFn` will be logged to stderr\n * for debugging purposes. Defaults to false; if you set to a string\n * value than this will be echoed out with stderr.\n */\n debug?: boolean | string;\n}\n\n/**\n * **ConfiguredMap**\n *\n * A partial application of the mapTo() utility which has expressed the\n * configuration of the _inputs_ and _outputs_ and provides a `.map()`\n * method which allows the user configure the specifics of the mapping.\n */\nexport interface ConfiguredMap<\n C extends FinalizedMapConfig<OptRequired, MapCardinalityIllustrated, OptRequired>,\n> {\n map: <I, O>(map: MapTo<I, O, C>) => MapperOld<I, O, C>;\n input: MapIR<C>;\n cardinality: MapCard<C>;\n output: MapOR<C>;\n debug: boolean | string;\n}\n\n/**\n * Extracts the IR, Cardinality, and OR generics from a FinalizedMapConfig\n */\nexport type DecomposeMapConfig<\n M extends FinalizedMapConfig<OptRequired, MapCardinalityIllustrated, OptRequired>,\n> = M extends MapConfig<infer IR, infer D, infer OR>\n ? IR extends OptRequired | undefined\n ? D extends MapCardinalityIllustrated | undefined\n ? OR extends OptRequired | undefined\n ? [IR, D, OR]\n : never\n : never\n : never\n : M extends FinalizedMapConfig<infer IR, infer D, infer OR>\n ? IR extends OptRequired\n ? D extends MapCardinalityIllustrated\n ? OR extends OptRequired\n ? [IR, D, OR]\n : never\n : never\n : never\n : never;\n\n/** extracts IR from a `FinalizedMapConfig` */\nexport type MapIR<\n T extends FinalizedMapConfig<OptRequired, MapCardinalityIllustrated, OptRequired>,\n> = DecomposeMapConfig<T>[0];\n\n/**\n * extracts the MapCardinality from a `FinalizedMapConfig`\n */\nexport type MapCard<\n T extends FinalizedMapConfig<OptRequired, MapCardinalityIllustrated, OptRequired>,\n> = DecomposeMapConfig<T>[1];\n\n/** extracts OR from a `FinalizedMapConfig` */\nexport type MapOR<\n T extends FinalizedMapConfig<OptRequired, MapCardinalityIllustrated, OptRequired>,\n> = DecomposeMapConfig<T>[2];\n\n/**\n * Merges the types of a userland configuration with a default configuration\n */\nexport type AsFinalizedConfig<\n U extends MapConfig<\n OptRequired | undefined,\n MapCardinalityIllustrated | undefined,\n OptRequired | undefined\n >,\n D extends FinalizedMapConfig<OptRequired, MapCardinalityIllustrated, OptRequired>,\n> = MergeObjects<U & Dictionary, D> extends FinalizedMapConfig<infer IR, infer C, infer OR>\n ? FinalizedMapConfig<IR, C, OR>\n : never;\n\nexport interface MapperApi {\n /**\n * Provides opportunity to configure _input_, _output_, and _cardinality_\n * prior to providing a mapping function.\n *\n * Note: _the defaults for configuration are defined by the_ `DEFAULT_ONE_TO_MANY_MAPPING`\n * _constant made available as a symbol from this library._\n */\n config: <\n C extends MapConfig<\n OptRequired, //\n MapCardinalityIllustrated,\n OptRequired\n >,\n >(\n config: C\n ) => ConfiguredMap<\n AsFinalizedConfig<\n C, //\n DefaultOneToManyMapping\n >\n >;\n\n /**\n * Provides a nice 1:1 ratio between the input and output.\n *\n * By default the input and output are considered to be _required_\n * properties but this can be changed with the options hash provided.\n * ```ts\n * const mapper = mapTo.oneToOne().map(...);\n * // add in ability to filter out some inputs\n * const mapAndFilter = mapTo.oneToOne({ output: \"opt\" })\n * ```\n */\n oneToOne: <C extends MapCardinalityConfig<OptRequired, OptRequired>>(\n config?: C\n ) => ConfiguredMap<\n AsFinalizedConfig<\n C, //\n DefaultOneToOneMapping\n >\n >;\n\n /**\n * **manyToOne** _mapping_\n *\n * Provides a configuration where multiple inputs `I[]` will be mapped to a\n * single output `O`.\n *\n * Choosing this configuration will, by default, set both input and output\n * to be \"required\" but you can change this default if you so choose.\n */\n manyToOne: <\n C extends MapCardinalityConfig<\n OptRequired | undefined, //\n OptRequired | undefined\n >,\n >(\n config?: C\n ) => ConfiguredMap<\n AsFinalizedConfig<\n C, //\n DefaultManyToOneMapping\n >\n >;\n\n oneToMany: <\n C extends MapCardinalityConfig<\n OptRequired | undefined, //\n OptRequired | undefined\n >,\n >(\n config?: C\n ) => ConfiguredMap<\n AsFinalizedConfig<\n C, //\n DefaultOneToManyMapping\n >\n >;\n}\n\nexport type MapInput<\n I,\n IR extends OptRequired,\n C extends MapCardinalityIllustrated,\n> = C extends MapCardinality.OneToMany | \"I -> O[]\"\n ? IR extends \"opt\"\n ? I | undefined\n : I\n : C extends MapCardinality.OneToOne | \"I -> O\"\n ? IR extends \"opt\"\n ? I | undefined\n : I\n : C extends MapCardinality.ManyToOne | \"I[] -> O\"\n ? IR extends \"opt\"\n ? I[] | undefined\n : I[]\n : never;\n\nexport type MapOutput<\n O,\n OR extends OptRequired,\n C extends MapCardinalityIllustrated,\n> = C extends MapCardinality.OneToMany | \"I -> O[]\"\n ? OR extends \"opt\"\n ? O[]\n : [O, ...O[]]\n : C extends MapCardinality.OneToOne | \"I -> O\"\n ? OR extends \"opt\"\n ? O | null\n : O\n : C extends MapCardinality.ManyToOne | \"I[] -> O\"\n ? OR extends \"opt\"\n ? O | null\n : O\n : never;\n\n/**\n * **MapTo<I, O>**\n *\n * A mapping function between an input type `I` and output type `O`. Defaults to using\n * the _default_ OneToMany mapping config.\n *\n * **Note:** this type is designed to guide the userland mapping; refer\n * to `MapFn` if you want the type output by the `mapFn()` utility.\n */\nexport type MapTo<\n I,\n O,\n C extends FinalizedMapConfig<\n OptRequired,\n MapCardinalityIllustrated,\n OptRequired\n > = DefaultOneToManyMapping,\n> = MapIR<C> extends \"opt\"\n ? (source?: MapInput<I, MapIR<C>, MapCard<C>>) => MapOutput<O, MapOR<C>, MapCard<C>>\n : (source: MapInput<I, MapIR<C>, MapCard<C>>) => MapOutput<O, MapOR<C>, MapCard<C>>;\n\nexport type MapFnOutput<\n I,\n O,\n S,\n OR extends OptRequired,\n C extends MapCardinalityIllustrated,\n> = C extends \"I -> O[]\" | MapCardinality.OneToMany\n ? S extends I[]\n ? OR extends \"opt\"\n ? O[]\n : [O, ...O[]]\n : OR extends \"opt\"\n ? O[] | null\n : O[]\n : C extends MapCardinality.OneToOne | \"I -> O\"\n ? S extends I[]\n ? OR extends \"opt\"\n ? O[]\n : [O, ...O[]]\n : OR extends \"opt\"\n ? O | null\n : O\n : C extends MapCardinality.ManyToOne | \"I[] -> O\"\n ? S extends I[][]\n ? OR extends \"opt\"\n ? O[]\n : [O, ...O[]]\n : OR extends \"opt\"\n ? O | null\n : O\n : never;\n\nexport type MapFnInput<I, IR extends OptRequired, D extends MapCardinalityIllustrated> = D extends\n | \"I -> O[]\"\n | MapCardinality.OneToMany\n ? IR extends \"opt\"\n ? I | I[] | undefined\n : I | I[]\n : D extends MapCardinality.OneToOne | \"I -> O\"\n ? IR extends \"opt\"\n ? I | I[] | undefined\n : I | I[]\n : D extends MapCardinality.ManyToOne | \"I[] -> O\"\n ? IR extends \"opt\"\n ? I[] | I[][] | undefined\n : I[] | I[][]\n : never;\n\n/**\n * The mapping function provided by the `mapFn()` utility. This _fn_\n * is intended to be used in two ways:\n *\n * 1. Iterative:\n * ```ts\n * const m = mapTo<I,O>(i => [ ... ]);\n * // maps inputs to outputs\n * const out = inputs.map(m);\n * ```\n * 2. Block:\n * ```ts\n * // maps inputs to outputs (filtering or splitting where appr.)\n * const out2 = m(inputs);\n * ```\n */\nexport type MapFn<\n I,\n O,\n C extends FinalizedMapConfig<OptRequired, MapCardinalityIllustrated, OptRequired>,\n> = MapIR<C> extends \"opt\"\n ? <S extends MapFnInput<I, MapIR<C>, MapCard<C>>>(\n source?: S\n ) => MapFnOutput<I, O, S, MapOR<C>, MapCard<C>>\n : <S extends MapFnInput<I, MapIR<C>, MapCard<C>>>(\n source: S\n ) => MapFnOutput<I, O, S, MapOR<C>, MapCard<C>>;\n\n/**\n * **Mapper**\n *\n * A fully configured _mapper_ stemming from the **mapTo()** utility. It is both a mapping\n * function and a dictionary which describes the mapper's properties.\n * ```ts\n * const m = mapTo.oneToOne().map( ... );\n * const mapped = m(inputs);\n * const mappedOver = inputs.map(m);\n * ```\n *\n * Note: the root of a `Mapper` is the mapper function but\n * this is combined with a dictionary of settings and types\n * which you can use. For instance, look at the `fnSignature`\n * property to get the _type_ signature of the map function.\n */\nexport type MapperOld<\n I = unknown,\n O = unknown,\n C extends FinalizedMapConfig<\n OptRequired,\n MapCardinalityIllustrated,\n OptRequired\n > = FinalizedMapConfig<OptRequired, MapCardinalityIllustrated, OptRequired>,\n> = {\n input: MapIR<C>;\n output: MapOR<C>;\n cardinality: MapCard<C>;\n debug: boolean | string;\n inputType: I;\n outputType: O;\n /**\n * Provides the _type_ information for mapper function.\n *\n * Note: _this is just a **type**_ not the actual function which positioned\n * at the root of the Mapper type\n */\n fnSignature: MapFn<I, O, C>;\n} & MapFn<I, O, C>;\n\n/**\n * **MapInputFrom**\n *\n * Type utility which extracts the `I` type from a fully configured `Mapper`\n */\nexport type MapInputFrom<T extends MapperOld> = T extends MapperOld<infer I> ? I : never;\n\n/**\n * **MapOutputFrom**\n *\n * Type utility which extracts the output [`O`] type from a fully configured `Mapper`\n */\n\nexport type MapOutputFrom<T extends MapperOld> = T extends MapperOld<any, infer O> ? O : never;\n\n/**\n * **MapCardinalityFrom**\n *\n * Type utility which extracts _cardinality_ of a `Mapper`'s inputs to outputs\n */\n\nexport type MapCardinalityFrom<T extends MapperOld> = T extends MapperOld<any, any, infer C>\n ? C extends FinalizedMapConfig<OptRequired, infer Cardinality, OptRequired>\n ? Cardinality\n : never\n : never;\n","import type { EmptyObject } from \"inferred-types/types\";\n\nexport enum ExifCompression {\n Uncompressed = 1,\n CCITT = 2,\n T4Group3Fax = 3,\n T6Group3Fax = 4,\n LZW = 5,\n JpgOldStyle = 6,\n Jpg = 7,\n AdobeDeflate = 8,\n JBigBw = 9,\n JBigColor = 10,\n JpegAlt = 99,\n Kodak262 = 262,\n Next = 32766,\n SonyRawCompressed = 32767,\n PackedRaw = 32769,\n SamsungSrwCompressed = 32770,\n CCIRLEW = 32771,\n SamsungSrwCompressed2 = 32772,\n Packbits = 32773,\n Thunderscan = 32809,\n KodakKdcCompressed = 32867,\n IT8CTPAD = 32895,\n IT8LW = 32896,\n IT8MP = 32897,\n IT8BL = 32898,\n PixarFilm = 32908,\n PixarLog = 32909,\n Deflate = 32946,\n DCS = 32947,\n AperioJpeg2000YCbCr = 33003,\n AperioJpeg2000RGB = 33005,\n JBig = 34661,\n SGILog = 34676,\n SGILog24 = 34677,\n Jpeg2000 = 34712,\n NikonNEFCompressed = 34713,\n JBig2TiffFx = 34715,\n MicrosoftBinaryLevelCodec = 34718,\n MicrosoftProgressiveTransformCodec = 34719,\n MicrosoftVector = 34720,\n ESRCLerc = 34887,\n LossyJpeg = 34892,\n LZMA2 = 34925,\n Zstd = 34926,\n WepP = 34927,\n PNG = 34933,\n JpegXR = 34934,\n KodakDCRCompressed = 65000,\n PentaxPEFCompressed = 65535,\n}\n\nexport enum ExifLightSource {\n Unknown = 0,\n Daylight,\n Fluorescent,\n Tungsten,\n Flash,\n FineWeather,\n Cloudy,\n Shade,\n DaylightFluorescent,\n DayWhiteFluorescent,\n CoolWhiteFluorescent,\n WhiteFluorescent,\n WarmWhiteFluorescent,\n StandardLightA,\n StandardLightB,\n StandardLightC,\n D55,\n D65,\n D75,\n D50,\n ISOStudioTungsten,\n Other = 255,\n}\n\nexport enum ExifFlashValues {\n NoFlash = 0x0,\n Fired = 0x1,\n FiredReturnNotDetected = 0x5,\n FiredReturnDetected = 0x7,\n OnDidNotFire = 0x8,\n OnFired = 0x9,\n OnReturnNotDetected = 0xD,\n OnReturnDetected = 0xF,\n OffDidNotFire = 0x10,\n OffDidNotFireReturnNotDetected = 0x14,\n AutoDidNotFire = 0x18,\n AutoFired = 0x19,\n AutoFiredReturnNotDetected = 0x1D,\n AutoFiredReturnDetected = 0x1F,\n NoFlashFunction = 0x20,\n OffNoFlashFunction = 0x30,\n FiredRedEyeReduction = 0x41,\n FiredRedEyeReductionReturnNotDetected = 0x45,\n FiredRedEyeReductionReturnDetected = 0x47,\n OnRedEyeReduction = 0x49,\n OnRedEyeReductionReturnNotDetected = 0x4D,\n OnRedEyeReductionReturnDetected = 0x4F,\n OffRedEyeReduction = 0x50,\n AutoDidNotFireRedEyeReduction = 0x58,\n AutoFiredRedEyeReduction = 0x59,\n AutoFiredRedEyeReductionNotDetected = 0x60,\n AutoFiredRedEyeReductionDetected = 0x5D,\n}\n\nexport enum ExifPreviewColorSpace {\n Unknown = 0,\n GrayGamma22,\n sRGB,\n AdobeRGB,\n ProPhotoRGB,\n}\n\nexport enum ExifEmbedPolicy {\n AllowCopying = 0,\n EmbedIfUsed,\n NeverEmbed,\n NoRestrictions,\n}\n\nexport enum ExifSubjectDistance {\n Unknown = 0,\n Macro,\n Close,\n Distant,\n}\n\nexport enum ExifSharpness {\n Normal = 0,\n Soft,\n Hard,\n}\n\nexport enum ExifSceneCaptureType {\n Standard = 0,\n Landscape,\n Portrait,\n Night,\n Other,\n}\n\nexport enum ExifGainControl {\n None = 0,\n LowGainUp,\n HighGainUp,\n LowGainDown,\n HighGainDown,\n}\n\nexport enum ExifContrast {\n Normal = 0,\n Low,\n High,\n}\n\nexport enum ExifSaturation {\n Normal = 0,\n Low,\n High,\n}\n\n/**\n * Extraneous info in an EXIF metadata payload. Detailed info\n * can be found on all fields here: [EXIF Tags](https://exiftool.org/TagNames/EXIF.html)\n */\nexport type ExifExtraneous<T extends object = EmptyObject> = {\n /** [ `0x0001` ] */\n InteropIndex: string;\n // InteropVersion:\n\n /**\n * called NewSubfileType by TIFF specification.\n * [More](https://exiftool.org/TagNames/EXIF.html).\n */\n SubfileType: number;\n} & T;\n\n/**\n * Date and Time info found in EXIF payload. Detailed info\n * can be found on all fields here: [EXIF Tags](https://exiftool.org/TagNames/EXIF.html)\n */\nexport type ExifDateTimeInfo<T extends object = EmptyObject> = {\n ModifyDate: string;\n OffsetTime: string;\n /** The date created; formal EXIF property is `DateTimeDigitized` */\n CreateDate: string;\n /** Formal EXIF property for created date */\n DateTimeDigitized: string;\n /**\n * 1 or 2 values:\n *\n * 1. The time zone offset of DateTimeOriginal from GMT in hours,\n * 2. If present, the time zone offset of ModifyDate\n */\n TimeZoneOffset: number | [number, number];\n OffsetTimeDigitized: string;\n /** fractional seconds for ModifyDate */\n SubSecTime: string;\n /** fractional seconds for DateTimeOriginal */\n SubSecTimeOriginal: string;\n /** fractional seconds for CreateDate */\n SubSecTimeDigitized: string;\n} & T;\n\n/**\n * Information regarding attribution found in EXIF payload. Detailed info\n * can be found on all fields here: [EXIF Tags](https://exiftool.org/TagNames/EXIF.html)\n */\nexport type ExifAttributionInfo<T extends object = EmptyObject> = {\n Copyright: string;\n /** becomes a list-type tag when the MWG module is loaded */\n Artist: string;\n /** called `CameraOwnerName` by the EXIF spec */\n OwnerName: string;\n CameraOwnerName: string;\n /** called `BodySerialNumber` by the EXIF spec */\n SerialNumber: string;\n BodySerialNumber: string;\n LensSerialNumber: string;\n HostComputer: string;\n} & T;\n\nexport type ExifCameraInfo<T extends object = EmptyObject> = {\n Make: string;\n Model: string;\n UniqueCameraModel: string;\n LocalizedCameraModel: string;\n LensMake: string;\n LensModel: string;\n /**\n * 4 rational values giving focal and aperture ranges,\n * called `LensSpecification` by the EXIF spec.\n */\n LensInfo: [number, number, number, number];\n LensSpecification: [number, number, number, number];\n\n /** used by some obscure software */\n OriginalFileName: string;\n OriginalRawFileName: string;\n ReelName: string;\n\n Orientation: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\n ImageWidth: number;\n ExifImageWidth: number;\n ImageHeight: number;\n ExifImageHeight: number;\n BitsPerSample: number;\n\n /**\n * Details on compression values can be found here:\n * [Compression Values](https://exiftool.org/TagNames/EXIF.html#Compression).\n *\n * You may reference as a number or leverage the exposed `ExifCompression`\n * enumeration for more contextual info.\n */\n Compression: number;\n\n /**\n * - `1` - No dithering or half-toning\n * - `2` - Ordered dither or halftone\n * - `3` - Randomized dither\n */\n Thresholding: 1 | 2 | 3;\n\n /**\n * - `1` - Normal\n * - `2` - Reversed\n */\n FillOrder: 1 | 2;\n\n /**\n * - `0` - WhiteIsZero\n * - `1` - BlackIsZero\n * - `2` - RGB\n * - `3` - RGB Palette\n * - `4` - Transparency Mask\n *\n * For full list reference [docs](https://exiftool.org/TagNames/EXIF.html)\n */\n PhotometricInterpretation: number;\n\n SceneCaptureType: ExifSceneCaptureType;\n GainControl: ExifGainControl;\n Contrast: ExifContrast | string;\n Saturation: ExifSaturation;\n Sharpness: ExifSharpness | string;\n\n /**\n * Applies to **EXIF:ISO** tag:\n *\n * - `0` - Unknown\n * - `1` - Standard Output Sensitivity\n * - `2` - Recommended Exposure Index\n * - `3` - ISO Speed\n * - `4` - Standard Output Sensitivity and Recommended Exposure Index\n * - `5` - Standard Output Sensitivity and ISO Speed\n * - `6` - Recommended Exposure Index and ISO Speed\n * - `7` - Standard Output Sensitivity, Recommended Exposure Index and ISO Speed\n */\n SensitivityType: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7;\n StandardOutputSensitivity: number;\n RecommendedExposureIndex: number;\n /**\n * called `ISOSpeedRatings` by EXIF 2.2, then `PhotographicSensitivity` by the EXIF 2.3 spec.\n */\n ISO: number;\n ISOSpeed: number;\n Exposure: string;\n ExposureIndex: number;\n Shadows: string;\n Brightness: string;\n Smoothness: string;\n MoireFilter: string;\n\n /**\n * - `0` - Unknown\n * - `1` - Average\n * - `2` - Center-weighted average\n * - `3` - Spot\n * - `4` - Multi-spot\n * - `5` - Multi-segment\n * - `6` - Partial\n * - `255` - Other\n */\n MeteringMode: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 255;\n\n /**\n * - `0` - Auto\n * - `1` - Manual\n * - `2` - Auto bracket\n */\n ExposureMode: 0 | 1 | 2;\n\n /**\n * Only values `0` and `1` are to the EXIF spec but Apple IOS devices use all\n *\n * - `0` - Normal\n * - `1` - Custom\n * - `2` - HDR (no original saved)\n * - `3` - HDR (original saved)\n * - `4` - Original (for HDR)\n * - `6` - Panorama\n * - `7` - Portrait HDR\n * - `8` - Portrait\n */\n CustomRendered: 0 | 1 | 2 | 3 | 4 | 6 | 7 | 8;\n\n LightSource: ExifLightSource;\n Flash: ExifFlashValues;\n FlashEnergy: number;\n\n SubjectDistance: number;\n SubjectDistanceRange: ExifSubjectDistance;\n SubjectLocation: [number, number];\n DepthNear: number;\n DepthFar: number;\n DepthMeasureType: 0 | 1 | 2;\n\n DigitalZoomRatio: number;\n FocalLengthIn35mmFormat: number;\n FocalLength: number;\n\n /**\n * - `0x1` - sRGB\n * - `0x2` - Adobe RGB\n * - `0xfffd` - Wide Gamut RGB\n * - `0xfffe` - ICC Profile\n * - `0xffff` - Uncalibrated\n *\n * Note: the value of `0x2` is not standard EXIF. Instead, an Adobe RGB image\n * is indicated by \"Uncalibrated\" with an InteropIndex of \"R03\". The values\n * 0xfffd and 0xfffe are also non-standard, and are used by some Sony cameras.\n */\n Colorspace: 0x1 | 0x2 | 0xFFFD | 0xFFFE | 0xFFFF;\n Gamma: number;\n /**\n * The actual `PixelFormat` values are 16-byte GUID's but the leading 15 bytes,\n * '6fddc324-4e03-4bfe-b1853-d77768dc9', have been removed below to avoid\n * unnecessary clutter:\n *\n * - `0x5` = Black & White\n * - `0x8` = 8-bit Gray\n * - `0x9` = 16-bit BGR555\n * - `0xa` = 16-bit BGR565\n * - `0xb` = 16-bit Gray\n * - `0xc` = 24-bit BGR\n * - `0xd` = 24-bit RGB\n * - `0xe` = 32-bit BGR\n * - `0xf` = 32-bit BGRA\n * - `0x10` = 32-bit PBGRA\n * - `0x11` = 32-bit Gray Float\n * - `0x12` = 48-bit RGB Fixed Point\n * - `0x13` = 32-bit BGR101010\n * - `0x15` = 48-bit RGB\n * - `0x16` = 64-bit RGBA\n * - `0x17` = 64-bit PRGBA\n * - `0x18` = 96-bit RGB Fixed Point\n * - `0x19` = 128-bit RGBA Float\n * - `0x1a` = 128-bit PRGBA Float\n * - `0x1b` = 128-bit RGB Float\n * - `0x1c` = 32-bit CMYK\n * - `0x1d` = 64-bit RGBA Fixed Point\n * - `0x1e` = 128-bit RGBA Fixed Point\n * - `0x1f` = 64-bit CMYK\n * - `0x20` = 24-bit 3 Channels\n * - `0x21` = 32-bit 4 Channels\n * - `0x22` = 40-bit 5 Channels\n * - `0x23` = 48-bit 6 Channels\n * - `0x24` = 56-bit 7 Channels\n * - `0x25` = 64-bit 8 Channels\n * - `0x26` = 48-bit 3 Channels\n * - `0x27` = 64-bit 4 Channels\n * - `0x28` = 80-bit 5 Channels\n * - `0x29` = 96-bit 6 Channels\n * - `0x2a` = 112-bit 7 Channels\n * - `0x2b` = 128-bit 8 Channels\n * - `0x2c` = 40-bit CMYK Alpha\n * - `0x2d` = 80-bit CMYK Alpha\n * - `0x2e` = 32-bit 3 Channels Alpha\n * - `0x2f` = 40-bit 4 Channels Alpha\n * - `0x30` = 48-bit 5 Channels Alpha\n * - `0x31` = 56-bit 6 Channels Alpha\n * - `0x32` = 64-bit 7 Channels Alpha\n * - `0x33` = 72-bit 8 Channels Alpha\n * - `0x34` = 64-bit 3 Channels Alpha\n * - `0x35` = 80-bit 4 Channels Alpha\n * - `0x36` = 96-bit 5 Channels Alpha\n * - `0x37` = 112-bit 6 Channels Alpha\n * - `0x38` = 128-bit 7 Channels Alpha\n * - `0x39` = 144-bit 8 Channels Alpha\n * - `0x3a` = 64-bit RGBA Half\n * - `0x3b` = 48-bit RGB Half\n * - `0x3d` = 32-bit RGBE\n * - `0x3e` = 16-bit Gray Half\n * - `0x3f` = 32-bit Gray Fixed Point\n *\n * > NOTE: tags 0xbc** are used in Windows HD Photo (HDP and WDP) images\n `\n */\n PixelFormat: number;\n\n /**\n * - `0` - Horizontal (normal)\n * - `1` - Mirror vertical\n * - `2` - Mirror horizontal\n * - `3` - Rotate 180\n * - `4` - Rotate 90 CW\n * - `5` - Mirror horizontal and rotate 90 CW\n * - `6` - Mirror horizontal and rotate 270 CW\n * - `7` - Rotate 270 CW\n */\n Transformation: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7;\n\n Whitebalance: number;\n\n BrightnessValue: number;\n /** Used but EXIF standard is `ExposureBiasValue` */\n ExposureCompensation: number;\n /** EXIF standard for Exposure bias */\n ExposureBiasValue: number;\n\n /** displayed in seconds, but stored as an APEX value */\n ShutterSpeedValue: number;\n /** displayed as an F number, but stored as an APEX value */\n ApertureValue: number;\n /** displayed as an F number, but stored as an APEX value */\n MaxApertureValue: number;\n\n EnhanceParams: string;\n\n /**\n *\n */\n FileSource: 1 | 2 | 3 | \"\\x03\\x00\\x00\\x00\";\n\n /**\n * Ambient temperature in degrees C, called `Temperature` by the EXIF spec\n */\n AmbientTemperature: number;\n /** Ambient temperature in degrees C */\n Temperature: number;\n Humidity: number;\n Pressure: number;\n WaterDepth: number;\n Acceleration: number;\n CameraElevationAngle: number;\n} & T;\n\nexport type ExifPhotoContext<T extends object = EmptyObject> = {\n ImageDescription: string;\n DocumentName: string;\n UserComment: string;\n\n Annotations: string;\n XPSubject: number;\n XPKeywords: number;\n XPAuthor: number;\n XPComments: number;\n\n Rating: number;\n RatingPercent: number;\n} & T;\n\n/**\n * Typing for GPS properties that are part of EXIF spec.\n * Details can be found: [here](https://exiftool.org/TagNames/GPS.html).\n */\nexport interface ExifGps {\n GPSVersionID: number;\n GPSLatitudeRef: \"N\" | \"S\";\n GPSLatitude: number;\n GPSLongitudeRef: \"E\" | \"W\";\n GPSLongitude: number;\n /**\n * - `0` is above sea level\n * - `1` is below sea level\n */\n GPSAltitudeRef: 0 | 1;\n GPSAltitude: number;\n /**\n * UTC time of GPS fix. When writing, date is stripped off if present,\n * and time is adjusted to UTC if it includes a timezone\n */\n GPSTimeStamp: string;\n GPSSatellites: string;\n GPSStatus: \"A\" | \"V\";\n GPSMeasureMode: \"2\" | \"3\";\n /**\n * - `K` - km/h\n * - `M` - mph\n * - `N` = knots\n */\n GPSSpeedRef: \"K\" | \"M\" | \"N\";\n GPSSpeed: number;\n GPSTrack: number;\n GPSImgDirectionRef: \"M\" | \"T\";\n GPSImgDirection: number;\n GPSMapDatum: string;\n GPSDestLatitudeRef: \"N\" | \"S\";\n GPSDestLatitude: number;\n GPSDestLongitudeRef: \"N\" | \"S\";\n GPSDestLongitude: number;\n GPSDestBearingRef: \"M\" | \"T\";\n GPSDestBearing: number;\n /**\n * - `K` - Kilometers\n * - `M` - Miles\n * - `N` = Nautical Miles\n */\n GPSDestDistanceRef: \"K\" | \"M\" | \"N\";\n GPSDestDistance: number;\n GPSProcessingMethod: \"GPS\" | \"CELLID\" | \"WLAN\" | \"MANUAL\";\n GPSAreaInformation: string;\n /**\n * When writing, time is stripped off if present, after adjusting\n * date/time to UTC if time includes a timezone. Format is `YYYY:mm:dd`.\n */\n GPSDateStamp: `${number}:${number}:${number}`;\n /**\n * `0` - no correction\n * `1` - differential corrected\n */\n GPSDifferential: 0 | 1;\n GPSHPositioningError: number;\n}\n/**\n * EXIF metadata payload fields.\n * Detailed info can be found here:\n * [EXIF Tags](https://exiftool.org/TagNames/EXIF.html).\n */\nexport type Exif<T extends object = EmptyObject> = Partial<\n ExifAttributionInfo &\n ExifCameraInfo &\n ExifDateTimeInfo &\n ExifGps &\n ExifExtraneous &\n ExifPhotoContext\n> &\nT;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGO,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;ACLO,IAAM,mBAAmB;EAC9B;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;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;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ACL,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,mBAAmB;EAC9B,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;AACL;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;AAEO,IAAM,mBAAmB;AC3HzB,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;EA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AM,OAAO,IAAI;EAClB,CAAC,MAAM,OAAO,IAAI;EAClB,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,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,SAAS,OAAO,IAAI;EACrB,CAAC,SAAS,OAAO,IAAI;EACrB,CAAC,SAAS,OAAO,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,O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;EACrB,CAAC,SAAS,OAAO,IAAI;EACrB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,SAAS,OAAO,IAAI;EACrB,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,SAAS,OAAO,IAAI;EACrB,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,MAAM,OAAO,IAAI;EAClB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,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;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,SAAS,OAAO,IAAI;EACrB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EAC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;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;AAEO,IAAM,kBAAkB;ACfxB,IAAM,qBAAqB;EAChC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,IAAM,mBAAmB;EAC9B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,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;AAEO,IAAM,mBAAmB;EAC9B;EACA;EACA;EACA;AACF;AAEO,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,e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AAQ,CAAC;;EAElH,cAAc,MAAM,CAAA,MAAK,EAAE,MAAM,GAAG,kEAAkE,CAAA,MAAK,EAAE,cAAc,CAAC;AAE9H;ACtDO,IAAM,UAAU,CAAC,UAAU,UAAU,WAAW,aAAa,UAAU,UAAU,YAAY,QAAQ;ACLrG,IAAM,mBAAmB;EAC9B;EACA;AACF;AAEO,IAAM,qBAAqB;EAChC;EACA;EACA;EACA;AACF;AAEO,IAAM,kBAAkB;EAC7B;EACA;EACA;AACF;AAEO,IAAM,8BAA8B;EACzC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,IAAM,4BAA4B;EACvC;EACA;EACA;EACA;EACA;AACF;AAKO,IAAM,aAAa;EACxB,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;AACL;AC3CO,IAAM,aAAa;EACxB;EACA;EACA;EACA;EACA;AACF;AAMO,IAAM,gBAAgB;EAC3B;EACA;AACF;AAEO,IAAM,UAAU;EACrB;EACA;EACA;EACA;AACF;AAMO,IAAM,eAAe;EAC1B;EACA;AACF;AAMO,IAAM,gBAAgB;EAC3B;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,IAAM,mBAAmB;EAC9B,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;AACL;AAEO,IAAM,WAAW;AACjB,IAAM,UAAU;AAChB,IAAM,eAAe;AC3DrB,IAAM,0BAA0B;EACrC;EACA;AACF;AAEO,IAAM,8BAA8B;EACzC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEF;AAEO,IAAM,iCAAiC;EAC5C;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;AAEO,IAAM,gCAAgC;EAC3C;EACA;AAEF;AC7DA,IAAM,YAAY;AAClB,IAAM,WAAW;AACjB,IAAM,WAAW;AACjB,IAAM,uBAAuB;AAatB,IAAM,kBAAkB;EAC7B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,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,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,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,SAAS,OAAO,IAAI;EACrB,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,MAAM,OAAO,IAAI;EAClB,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,MAAM,OAAO,IAAI;EAClB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,MAAM,OAAO,IAAI;EAClB,CAAC,OAA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B;AACF;AAEO,IAAMC,mBAAkB;EAC7B;EACA;AACF;AC7GO,IAAMC,kBAAiB;EAC5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;ACSO,IAAMC,wBAAuB;EAClC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,IAAMC,4BAA2B;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AASO,IAAMC,uBAAsB;EACjC;AACF;AAEO,IAAMC,mBAAkB;EAC7B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,IAAMC,qBAAoB;EAC/B,GAAGD;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AASO,IAAME,sBAAqB;EAChC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,IAAMC,uBAAsB;EACjC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,IAAMC,qBAAoB;EAC/B;EACA;EACA;AACF;AAEO,IAAMC,qBAAoB;EAC/B;EACA;AACF;AAEO,IAAMC,2BAA0B;EACrC,GAAGJ;EACH,GAAGC;EACH,GAAGC;EACH,GAAGC;AACL;AASO,IAAME,iBAAgB;EAC3B,GAAGV;EACH,GAAGC;EACH,GAAGQ;EACH,GAAGP;AACL;ACpJO,IAAMS,yBAAwB;EACnC;EACA;EACA;EACA;EACA;EACA;AACF;ACHO,IAAMC,gBAAe;EAC1B;IACE,MAAM;IACN,aAAa;IACb,UAAU,CAAC,0BAA0B;IACrC,YAAY;IACZ,qBAAqB;;IACrB,cAAc;EAChB;EACA;IACE,MAAM;IACN,aAAa;IACb,UAAU,CAAC,yBAAyB;IACpC,YAAY;IACZ,qBAAqB;;IACrB,cAAc;EAChB;EACA;IACE,MAAM;IACN,aAAa;IACb,UAAU,CAAC,4BAA4B,eAAe;IACtD,YAAY;IACZ,qBAAqB;;IACrB,cAAc;EAChB;EACA;IACE,MAAM;IACN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","names":["fn","api","map","ifBoolean","LOWER_ALPHA_CHARS","UPPER_ALPHA_CHARS","ALPHA_CHARS","string","AMAZON_BOOKS","WHITESPACE_CHARS","COMMA","createConstant","FALSY_VALUES","US_STATE_LOOKUP_STRICT","US_STATE_LOOKUP_PROVINCES","US_STATE_LOOKUP","HASH_TABLE_ALPHA_LOWER","HASH_TABLE_SPECIAL","HASH_TABLE_ALPHA_UPPER","HASH_TABLE_CHAR","HTML_BLOCK_TAGS","HTML_ATOMIC_TAGS","ISO3166_1","MARKED","DISTANCE_METRICS_LOOKUP","MASS_METRICS_LOOKUP","SPEED_METRICS_LOOKUP","ACCELERATION_METRICS_LOOKUP","VOLUME_METRICS_LOOKUP","TEMPERATURE_METRICS_LOOKUP","PRESSURE_METRICS_LOOKUP","ENERGY_METRICS_LOOKUP","TIME_METRICS_LOOKUP","POWER_METRICS_LOOKUP","FREQUENCY_METRICS_LOOKUP","VOLTAGE_METRICS_LOOKUP","CURRENT_METRICS_LOOKUP","RESISTANCE_METRICS_LOOKUP","LUMINOSITY_METRICS_LOOKUP","AREA_METRICS_LOOKUP","NETWORK_PROTOCOL_INSECURE","NETWORK_PROTOCOL_SECURE","NETWORK_PROTOCOL","NETWORK_PROTOCOL_LOOKUP","PROTOCOL_DEFAULT_PORTS","Never","US_NEWS","UK_NEWS","GERMAN_NEWS","FRENCH_NEWS","CANADIAN_NEWS","DUTCH_NEWS","ITALIAN_NEWS","BELGIUM_NEWS","MEXICAN_NEWS","SPANISH_NEWS","INDIAN_NEWS","CHINESE_NEWS","DANISH_NEWS","SWISS_NEWS","AUSTRALIAN_NEWS","JAPANESE_NEWS","SOUTH_KOREAN_NEWS","TURKISH_NEWS","NORWEGIAN_NEWS","NO_DEFAULT_VALUE","NOT_APPLICABLE","NOT_DEFINED","NUMERIC_CHAR","PHONE_COUNTRY_CODES","PLURAL_EXCEPTIONS","REPO_SOURCES","REPO_SOURCE_LOOKUP","AMAZON_DNS","WALMART_DNS","APPLE_DNS","HOME_DEPOT_DNS","EBAY_DNS","TARGET_DNS","ETSY_DNS","COSTCO_DNS","BEST_BUY_DNS","WAYFAIR_DNS","NIKE_DNS","MACYS_DNS","DELL_DNS","HM_DNS","ZARA_DNS","KROGER_DNS","WALGREENS_DNS","CVS_DNS","WHOLE_FOODS_DNS","SHAPE_PREFIXES","SIMPLE_SCALAR_TOKENS","SIMPLE_OPT_SCALAR_TOKENS","SIMPLE_UNION_TOKENS","SIMPLE_MAP_KEYS","SIMPLE_MAP_VALUES","SIMPLE_DICT_TOKENS","SIMPLE_ARRAY_TOKENS","SIMPLE_MAP_TOKENS","SIMPLE_SET_TOKENS","SIMPLE_CONTAINER_TOKENS","SIMPLE_TOKENS","SINGULAR_NOUN_ENDINGS","SOCIAL_MEDIA","TW_HUE_NEUTRAL","TW_HUE_VIBRANT","TW_HUE_STATIC","TW_HUE","TW_LUMINOSITY","TW_LUMIN_50","TW_LUMIN_100","TW_LUMIN_200","TW_LUMIN_300","TW_LUMIN_400","TW_LUMIN_500","TW_LUMIN_600","TW_LUMIN_700","TW_LUMIN_800","TW_LUMIN_900","TW_LUMIN_950","TW_CHROMA","TW_CHROMA_50","TW_CHROMA_100","TW_CHROMA_200","TW_CHROMA_300","TW_CHROMA_400","TW_CHROMA_500","TW_CHROMA_600","TW_CHROMA_700","TW_CHROMA_800","TW_CHROMA_900","TW_CHROMA_950","TW_COLOR_TARGETS","TW_MODIFIERS_CORE","TW_MODIFIERS_ORDER","TW_MODIFIERS_RELN","TW_MODIFIERS_SIZING","TW_MODIFIERS","WideAssignment","wide","entry","TYPE_COMPARISONS","FALSY_TYPE_KINDS","LITERAL_TYPE_KINDS","WIDE_TYPE_KINDS","NARROW_CONTAINER_TYPE_KINDS","WIDE_CONTAINER_TYPE_KINDS","TYPE_KINDS","TT_ATOMICS","TT_SINGLETONS","TT_SETS","TT_FUNCTIONS","TT_CONTAINERS","TT_KIND_VARIANTS","TT_START","TT_STOP","ifContainer","result","ifUndefined","ifDefined","tuple","literal","mapper","_","csv","endingIn","compare","valid","getCategories","URL","list","sharedKeys","joinWith","start","asType","find","retain","strip","input","union","queue","startsWith","endsWith","params","MapCardinality","ExifCompression","ExifLightSource","ExifFlashValues","ExifPreviewColorSpace","ExifEmbedPolicy","ExifSubjectDistance","ExifSharpness","ExifSceneCaptureType","ExifGainControl","ExifContrast","ExifSaturation"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.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","../../runtime/src/api/defineApi.ts","../../runtime/src/api/handleDoneFn.ts","../../runtime/src/api/objectToApi.ts","../../runtime/src/boolean-logic/ifArray.ts","../../runtime/src/boolean-logic/ifArrayPartial.ts","../../runtime/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","../../runtime/src/boolean-logic/ifChar.ts","../../runtime/src/boolean-logic/ifContainer.ts","../../runtime/src/boolean-logic/ifFalse.ts","../../runtime/src/boolean-logic/ifFunction.ts","../../runtime/src/boolean-logic/ifHasKey.ts","../../runtime/src/boolean-logic/ifLength.ts","../../runtime/src/boolean-logic/ifNotNull.ts","../../runtime/src/boolean-logic/ifNull.ts","../../runtime/src/boolean-logic/ifNumber.ts","../../runtime/src/boolean-logic/ifObject.ts","../../runtime/src/boolean-logic/ifSameType.ts","../../runtime/src/boolean-logic/ifScalar.ts","../../runtime/src/boolean-logic/ifString.ts","../../runtime/src/boolean-logic/ifTrue.ts","../../runtime/src/boolean-logic/ifUndefined.ts","../../runtime/src/combinators/and.ts","../../runtime/src/combinators/or.ts","../../runtime/src/css/createCssKeyframe.ts","../../runtime/src/css/cssFromDefinition.ts","../../runtime/src/datetime/asDate.ts","../../runtime/src/datetime/asIsoDate.ts","../../runtime/src/datetime/getDaysBetween.ts","../../runtime/src/datetime/getToday.ts","../../runtime/src/datetime/getTomorrow.ts","../../runtime/src/datetime/getWeekNumber.ts","../../runtime/src/datetime/getYesterday.ts","../../runtime/src/datetime/isLeapYear.ts","../../runtime/src/dictionary/defineObject.ts","../../runtime/src/dictionary/entries.ts","../../runtime/src/dictionary/get.ts","../../runtime/src/dictionary/keysOf.ts","../../runtime/src/dictionary/narrowObjectTo.ts","../../runtime/src/dictionary/objectValues.ts","../../runtime/src/dictionary/omit.ts","../../runtime/src/dictionary/retain.ts","../../runtime/src/dictionary/sharedKeys.ts","../../runtime/src/dictionary/takeProp.ts","../../runtime/src/dictionary/valuesOf.ts","../../runtime/src/dictionary/withDefaults.ts","../../runtime/src/dictionary/withKeys.ts","../../runtime/src/dictionary/withoutKeys.ts","../../runtime/src/dictionary/withoutValue.ts","../../runtime/src/dictionary/withValue.ts","../../runtime/src/errors/createErrorCondition.ts","../../runtime/src/functional/result.ts","../../runtime/src/functions/fnMeta.ts","../../runtime/src/functions/wrapFn.ts","../../runtime/src/initializers/addFnToProps.ts","../../runtime/src/initializers/addPropsToFn.ts","../../runtime/src/initializers/createCssSelector.ts","../../runtime/src/initializers/createFnWithProps.ts","../../runtime/src/initializers/defineObj.ts","../../runtime/src/initializers/defineTuple.ts","../../runtime/src/lists/asArray.ts","../../runtime/src/lists/createConverter.ts","../../runtime/src/lists/createFixedLengthArray.ts","../../runtime/src/lists/filter.ts","../../runtime/src/lists/filterEmpty.ts","../../runtime/src/type-guards/isFunction.ts","../../runtime/src/type-guards/isObject.ts","../../runtime/src/type-guards/api-tg.ts","../../runtime/src/type-guards/date-time/isDate.ts","../../runtime/src/type-guards/date-time/isDateTime.ts","../../runtime/src/type-guards/date-time/isIsoDate.ts","../../runtime/src/type-guards/date-time/isIsoTime.ts","../../runtime/src/type-guards/date-time/isIsoYear.ts","../../runtime/src/type-guards/date-time/isLuxonDateTime.ts","../../runtime/src/type-guards/date-time/isMoment.ts","../../runtime/src/type-guards/date-time/isThisMonth.ts","../../runtime/src/type-guards/date-time/isThisWeek.ts","../../runtime/src/type-guards/date-time/isThisYear.ts","../../runtime/src/type-guards/date-time/isToday.ts","../../runtime/src/type-guards/date-time/isTomorrow.ts","../../runtime/src/type-guards/date-time/isYesterday.ts","../../runtime/src/type-guards/finance/CreditCards.ts","../../runtime/src/type-guards/isString.ts","../../runtime/src/type-guards/geo/isIso3166Alpha2.ts","../../runtime/src/type-guards/geo/isUsState.ts","../../runtime/src/type-guards/isNumericString.ts","../../runtime/src/type-guards/numeric/isNumber.ts","../../runtime/src/type-guards/geo/isZipCode.ts","../../runtime/src/type-guards/isSpecificConstant.ts","../../runtime/src/type-guards/hasDefaultValue.ts","../../runtime/src/type-guards/hasIndexOf.ts","../../runtime/src/type-guards/hasKeys.ts","../../runtime/src/type-conversion/asChars.ts","../../runtime/src/type-conversion/asRecord.ts","../../runtime/src/type-conversion/asString.ts","../../runtime/src/type-conversion/csv.ts","../../runtime/src/type-conversion/fromKeyValue.ts","../../runtime/src/type-conversion/intersect.ts","../../runtime/src/type-conversion/ip6GroupExpansion.ts","../../runtime/src/type-conversion/json.ts","../../runtime/src/type-conversion/lookupCountry.ts","../../runtime/src/type-conversion/map/createMapper.ts","../../runtime/src/type-conversion/mergeObjects.ts","../../runtime/src/type-guards/isUndefined.ts","../../runtime/src/type-conversion/mergeScalars.ts","../../runtime/src/type-conversion/mergeTuples.ts","../../runtime/src/type-conversion/never.ts","../../runtime/src/type-conversion/optional.ts","../../runtime/src/type-conversion/stripParenthesis.ts","../../runtime/src/type-conversion/toKeyValue.ts","../../runtime/src/type-conversion/toNumber.ts","../../runtime/src/type-conversion/tw-conversion.ts","../../runtime/src/type-conversion/union.ts","../../runtime/src/type-conversion/unionize.ts","../../runtime/src/type-guards/hasWhitespace.ts","../../runtime/src/type-guards/higher-order/endsWith.ts","../../runtime/src/type-guards/higher-order/isEqual.ts","../../runtime/src/type-guards/higher-order/isLength.ts","../../runtime/src/type-guards/higher-order/isSameTypeOf.ts","../../runtime/src/type-guards/higher-order/isTuple.ts","../../runtime/src/type-guards/higher-order/isTypeOf.ts","../../runtime/src/type-guards/higher-order/startsWith.ts","../../runtime/src/type-guards/html/component-tags.ts","../../runtime/src/type-guards/html/hasHtml.ts","../../runtime/src/type-guards/html/html-tags.ts","../../runtime/src/type-guards/html/isHtml.ts","../../runtime/src/type-guards/html/isHtmlElement.ts","../../runtime/src/type-guards/html/validHtmlAttributes.ts","../../runtime/src/type-guards/isAlpha.ts","../../runtime/src/type-guards/isArray.ts","../../runtime/src/type-guards/isBoolean.ts","../../runtime/src/type-guards/isBooleanLike.ts","../../runtime/src/type-guards/isConstant.ts","../../runtime/src/type-guards/isContainer.ts","../../runtime/src/type-guards/isCssAspectRatio.ts","../../runtime/src/type-guards/isCsv.ts","../../runtime/src/type-guards/isDefined.ts","../../runtime/src/type-guards/isDoneFn.ts","../../runtime/src/type-guards/isEmail.ts","../../runtime/src/type-guards/isEmpty.ts","../../runtime/src/type-guards/isErrorCondition.ts","../../runtime/src/type-guards/isFalse.ts","../../runtime/src/type-guards/isFalsy.ts","../../runtime/src/type-guards/isFnWithParams.ts","../../runtime/src/type-guards/isHexadecimal.ts","../../runtime/src/type-guards/isIndexable.ts","../../runtime/src/type-guards/isInlineSvg.ts","../../runtime/src/type-guards/isMap.ts","../../runtime/src/type-guards/isNever.ts","../../runtime/src/type-guards/isNothing.ts","../../runtime/src/type-guards/isNotNull.ts","../../runtime/src/type-guards/isNull.ts","../../runtime/src/type-guards/isPhoneNumber.ts","../../runtime/src/type-guards/isReadonlyArray.ts","../../runtime/src/type-guards/isRef.ts","../../runtime/src/type-guards/isRegExp.ts","../../runtime/src/type-guards/isSymbol.ts","../../runtime/src/type-guards/isScalar.ts","../../runtime/src/type-guards/isSet.ts","../../runtime/src/type-guards/isSetContainer.ts","../../runtime/src/type-guards/isStringArray.ts","../../runtime/src/type-guards/isThenable.ts","../../runtime/src/type-guards/isTrimmable.ts","../../runtime/src/type-guards/isTrue.ts","../../runtime/src/type-guards/isTruthy.ts","../../runtime/src/type-guards/isTypeSubtype.ts","../../runtime/src/type-guards/isTypeTuple.ts","../../runtime/src/type-guards/isUnset.ts","../../runtime/src/type-guards/isUrl.ts","../../runtime/src/type-guards/isVariable.ts","../../runtime/src/type-guards/metrics/isMetric.ts","../../runtime/src/type-guards/metrics/isUom.ts","../../runtime/src/type-guards/network-tg.ts","../../runtime/src/type-guards/numeric/isNumericArray.ts","../../runtime/src/type-guards/protocol.ts","../../runtime/src/type-guards/tokens/general.ts","../../runtime/src/type-guards/tokens/isAtomicToken.ts","../../runtime/src/type-guards/tokens/isContainerToken.ts","../../runtime/src/type-guards/tokens/isShapeCallback.ts","../../runtime/src/type-guards/tokens/isShapeToken.ts","../../runtime/src/type-guards/tokens/isSimpleToken.ts","../../runtime/src/type-guards/tokens/isDefineObject.ts","../../runtime/src/type-guards/tokens/isFunctionToken.ts","../../runtime/src/type-guards/tokens/set-tokens.ts","../../runtime/src/type-guards/tokens/singletons.ts","../../runtime/src/type-guards/tw/tw-color.ts","../../runtime/src/type-guards/urls/news/australian.ts","../../runtime/src/type-guards/urls/news/belgium.ts","../../runtime/src/type-guards/urls/news/canadian.ts","../../runtime/src/type-guards/urls/news/danish.ts","../../runtime/src/type-guards/urls/news/dutch.ts","../../runtime/src/type-guards/urls/news/french.ts","../../runtime/src/type-guards/urls/news/german.ts","../../runtime/src/type-guards/urls/news/indian.ts","../../runtime/src/type-guards/urls/news/italian.ts","../../runtime/src/type-guards/urls/news/japanese.ts","../../runtime/src/type-guards/urls/news/mexican.ts","../../runtime/src/type-guards/urls/news/norwegian.ts","../../runtime/src/type-guards/urls/news/south-korean.ts","../../runtime/src/type-guards/urls/news/spanish.ts","../../runtime/src/type-guards/urls/news/swiss.ts","../../runtime/src/type-guards/urls/news/turkish.ts","../../runtime/src/type-guards/urls/news/uk.ts","../../runtime/src/type-guards/urls/news/us.ts","../../runtime/src/type-guards/urls/news/chinese.ts","../../runtime/src/type-guards/urls/news/index.ts","../../runtime/src/type-guards/urls/repos/bitbucket.ts","../../runtime/src/type-guards/urls/repos/codeCommit.ts","../../runtime/src/type-guards/urls/repos/github.ts","../../runtime/src/type-guards/urls/repos/isSemanticVersion.ts","../../runtime/src/type-guards/urls/repos/index.ts","../../runtime/src/type-guards/urls/retail.ts","../../runtime/src/type-guards/urls/Social.ts","../../runtime/src/type-guards/urls/youtube.ts","../../runtime/src/type-guards/vue/isVueRef.ts","../../runtime/src/lists/filterUndefined.ts","../../runtime/src/lists/find.ts","../../runtime/src/lists/getEach.ts","../../runtime/src/lists/indexOf.ts","../../runtime/src/lists/intersection.ts","../../runtime/src/lists/joinWith.ts","../../runtime/src/lists/last.ts","../../runtime/src/lists/logicalReturns.ts","../../runtime/src/lists/reverse.ts","../../runtime/src/lists/shift.ts","../../runtime/src/lists/slice.ts","../../runtime/src/lists/unique.ts","../../runtime/src/literals/box.ts","../../runtime/src/literals/capitalize.ts","../../runtime/src/literals/color/cssColor.ts","../../runtime/src/literals/color/twColor.ts","../../runtime/src/literals/ensureLeading.ts","../../runtime/src/literals/ensureSurround.ts","../../runtime/src/literals/ensureTrailing.ts","../../runtime/src/literals/getTypeSubtype.ts","../../runtime/src/literals/identity.ts","../../runtime/src/literals/ifLowercase.ts","../../runtime/src/literals/ifUppercase.ts","../../runtime/src/literals/infer.ts","../../runtime/src/literals/literal.ts","../../runtime/src/literals/lowercase.ts","../../runtime/src/literals/narrow.ts","../../runtime/src/literals/pathJoin.ts","../../runtime/src/literals/phone/asPhoneNumber.ts","../../runtime/src/literals/phone/getPhoneCountryCode.ts","../../runtime/src/literals/phone/removePhoneCountryCode.ts","../../runtime/src/literals/pluralize.ts","../../runtime/src/literals/retainAfter.ts","../../runtime/src/literals/retainChars.ts","../../runtime/src/literals/retainUntil.ts","../../runtime/src/literals/retainWhile.ts","../../runtime/src/literals/rightWhitespace.ts","../../runtime/src/literals/split.ts","../../runtime/src/literals/stripAfter.ts","../../runtime/src/literals/stripBefore.ts","../../runtime/src/literals/stripChars.ts","../../runtime/src/literals/stripLeading.ts","../../runtime/src/literals/stripSurround.ts","../../runtime/src/literals/stripTrailing.ts","../../runtime/src/literals/stripUntil.ts","../../runtime/src/literals/stripWhile.ts","../../runtime/src/literals/surround.ts","../../runtime/src/literals/takeNumericCharacters.ts","../../runtime/src/literals/toCamelCase.ts","../../runtime/src/literals/toKebabCase.ts","../../runtime/src/literals/toNumericArray.ts","../../runtime/src/literals/toPascalCase.ts","../../runtime/src/literals/toSnakeCase.ts","../../runtime/src/literals/toString.ts","../../runtime/src/literals/toUppercase.ts","../../runtime/src/literals/trim.ts","../../runtime/src/literals/truncate.ts","../../runtime/src/literals/tuple.ts","../../runtime/src/literals/uncapitalize.ts","../../runtime/src/literals/unset.ts","../../runtime/src/literals/uppercase.ts","../../runtime/src/literals/widen.ts","../../runtime/src/meta/urlMeta.ts","../../runtime/src/meta/youtube-meta.ts","../../runtime/src/queues/fifo.ts","../../runtime/src/queues/lifo.ts","../../runtime/src/runtime-types/asToken.ts","../../runtime/src/runtime-types/shape-helpers/addToken.ts","../../runtime/src/runtime-types/shape-helpers/atomics.ts","../../runtime/src/runtime-types/shape-helpers/functions.ts","../../runtime/src/runtime-types/shape-helpers/literal-containers.ts","../../runtime/src/runtime-types/shape-helpers/regexToken.ts","../../runtime/src/runtime-types/shape-helpers/singletons.ts","../../runtime/src/runtime-types/shape-helpers/union.ts","../../runtime/src/runtime-types/shape-helpers/wide-containers.ts","../../runtime/src/runtime-types/shape.ts","../../runtime/src/runtime-types/asDefineObject.ts","../../runtime/src/runtime-types/asType.ts","../../runtime/src/runtime-types/choices.ts","../../runtime/src/runtime-types/doesExtend.ts","../../runtime/src/runtime-types/ip6Prefix.ts","../../runtime/src/runtime-types/list.ts","../../runtime/src/runtime-types/tokens/createTypeToken.ts","../../runtime/src/runtime-types/tokens/fromDefineObject.ts","../../runtime/src/runtime-types/tokens/getTokenKind.ts","../../runtime/src/runtime-types/tokens/simpleToken.ts","../../runtime/src/sets/hasOverlappingKeys.ts","../../runtime/src/sets/uniqueKeys.ts","../../runtime/src/vuejs/asVueRef.ts","../../types/src/dictionary/MapTo.ts","../../types/src/string-literals/character-sets/images/Exif.ts"],"sourcesContent":["export * from \"inferred-types/constants\";\nexport * from \"inferred-types/runtime\";\nexport * from \"inferred-types/types\";\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 {\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, 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 { Narrowable, ObjectKey, WithoutKeys } 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 Record<ObjectKey, N>,\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 WithoutKeys<TObj, TKeys>;\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 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 { [key: string]: N },\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] });\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 { hasKeys } 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 hasKeys(\"done\")(val) && typeof (val as any).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","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","/**\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 { 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 { 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","import type {\n Dictionary,\n MergeObjects,\n OptRequired,\n} from \"inferred-types/types\";\n\n/**\n * utility function to take a fully-qualified _user_ config\n * and make it into a FinalizedMapConfig\n */\nfunction toFinalizedConfig<\n IR extends OptRequired,\n D extends MapCardinalityIllustrated,\n OR extends OptRequired,\n>(config: MapConfig<IR, D, OR>): FinalizedMapConfig<IR, D, OR> {\n return { ...config, finalized: true } as FinalizedMapConfig<IR, D, OR>;\n}\n\nexport const DEFAULT_ONE_TO_MANY_MAPPING = toFinalizedConfig({\n input: \"req\",\n output: \"opt\",\n cardinality: \"I -> O[]\",\n});\n\nexport const DEFAULT_ONE_TO_ONE_MAPPING = toFinalizedConfig({\n input: \"req\",\n output: \"req\",\n cardinality: \"I -> O\",\n});\n\nexport const DEFAULT_MANY_TO_ONE_MAPPING = toFinalizedConfig({\n input: \"req\",\n output: \"req\",\n cardinality: \"I[] -> O\",\n});\n\n/**\n * The _default_ One-to-Many mapping that the mapTo() utility provides\n */\nexport type DefaultOneToManyMapping = typeof DEFAULT_ONE_TO_MANY_MAPPING;\n\n/**\n * The _default_ One-to-One mapping that the mapTo() utility provides\n */\nexport type DefaultOneToOneMapping = typeof DEFAULT_ONE_TO_ONE_MAPPING;\n\n/**\n * The _default_ Many-to-One mapping that the mapTo() utility provides\n */\nexport type DefaultManyToOneMapping = typeof DEFAULT_MANY_TO_ONE_MAPPING;\n\n/**\n * Expresses relationship between inputs/outputs:\n */\nexport enum MapCardinality {\n /** every input results in 0:M outputs */\n OneToMany = \"I -> O[]\",\n /** every input results in 0:1 outputs */\n OneToOne = \"I -> O\",\n /** every input is an array of type I and reduced to a single O */\n ManyToOne = \"I[] -> O\",\n}\n\nexport type MapCardinalityIllustrated = `${string | number}`;\n\n/**\n * The _user_ configuration of a **mapTo** mapper function\n * which will be finalized by merging it with the appropriate\n * default mapping type.\n */\nexport interface MapConfig<\n IR extends OptRequired | undefined = undefined,\n D extends MapCardinalityIllustrated | undefined = undefined,\n OR extends OptRequired | undefined = undefined,\n> {\n input?: IR;\n output?: OR;\n cardinality?: D;\n /**\n * Whether calls to the final `MapFn` will be logged to stderr\n * for debugging purposes. Defaults to false; if you specify\n * a _string_ for a value that will be sent to stderr along\n * with other debugging info.\n */\n debug?: boolean | string;\n}\n\n/**\n * A finalized configuration of a **mapTo** mapper functions cardinality\n * relationships between _inputs_ and _outputs_.\n *\n * Note: _this configuration does _not_ yet include the actual mapping\n * configuration between the input and output._\n */\nexport type FinalizedMapConfig<\n IR extends OptRequired = MapIR<DefaultOneToManyMapping & string>,\n D extends MapCardinalityIllustrated = MapCard<DefaultOneToManyMapping>,\n OR extends OptRequired = MapOR<DefaultOneToManyMapping>,\n> = Required<Omit<MapConfig<IR, D, OR>, \"debug\">> & { finalized: true; debug: boolean | string };\n\n/**\n * User configuration exposed by a config function which specifies the\n * cardinality already (e.g., `oneToMany()`, `manyToOne()`)\n */\ninterface MapCardinalityConfig<\n IR extends OptRequired | undefined,\n OR extends OptRequired | undefined,\n> {\n /** whether we the input can _optionally_ be an `undefined` value or not */\n input?: IR;\n /** whether we the output can _optionally_ be an `undefined` value or not */\n output?: OR;\n /**\n * Whether calls to the final `MapFn` will be logged to stderr\n * for debugging purposes. Defaults to false; if you set to a string\n * value than this will be echoed out with stderr.\n */\n debug?: boolean | string;\n}\n\n/**\n * **ConfiguredMap**\n *\n * A partial application of the mapTo() utility which has expressed the\n * configuration of the _inputs_ and _outputs_ and provides a `.map()`\n * method which allows the user configure the specifics of the mapping.\n */\nexport interface ConfiguredMap<\n C extends FinalizedMapConfig<OptRequired, MapCardinalityIllustrated, OptRequired>,\n> {\n map: <I, O>(map: MapTo<I, O, C>) => MapperOld<I, O, C>;\n input: MapIR<C>;\n cardinality: MapCard<C>;\n output: MapOR<C>;\n debug: boolean | string;\n}\n\n/**\n * Extracts the IR, Cardinality, and OR generics from a FinalizedMapConfig\n */\nexport type DecomposeMapConfig<\n M extends FinalizedMapConfig<OptRequired, MapCardinalityIllustrated, OptRequired>,\n> = M extends MapConfig<infer IR, infer D, infer OR>\n ? IR extends OptRequired | undefined\n ? D extends MapCardinalityIllustrated | undefined\n ? OR extends OptRequired | undefined\n ? [IR, D, OR]\n : never\n : never\n : never\n : M extends FinalizedMapConfig<infer IR, infer D, infer OR>\n ? IR extends OptRequired\n ? D extends MapCardinalityIllustrated\n ? OR extends OptRequired\n ? [IR, D, OR]\n : never\n : never\n : never\n : never;\n\n/** extracts IR from a `FinalizedMapConfig` */\nexport type MapIR<\n T extends FinalizedMapConfig<OptRequired, MapCardinalityIllustrated, OptRequired>,\n> = DecomposeMapConfig<T>[0];\n\n/**\n * extracts the MapCardinality from a `FinalizedMapConfig`\n */\nexport type MapCard<\n T extends FinalizedMapConfig<OptRequired, MapCardinalityIllustrated, OptRequired>,\n> = DecomposeMapConfig<T>[1];\n\n/** extracts OR from a `FinalizedMapConfig` */\nexport type MapOR<\n T extends FinalizedMapConfig<OptRequired, MapCardinalityIllustrated, OptRequired>,\n> = DecomposeMapConfig<T>[2];\n\n/**\n * Merges the types of a userland configuration with a default configuration\n */\nexport type AsFinalizedConfig<\n U extends MapConfig<\n OptRequired | undefined,\n MapCardinalityIllustrated | undefined,\n OptRequired | undefined\n >,\n D extends FinalizedMapConfig<OptRequired, MapCardinalityIllustrated, OptRequired>,\n> = MergeObjects<U & Dictionary, D> extends FinalizedMapConfig<infer IR, infer C, infer OR>\n ? FinalizedMapConfig<IR, C, OR>\n : never;\n\nexport interface MapperApi {\n /**\n * Provides opportunity to configure _input_, _output_, and _cardinality_\n * prior to providing a mapping function.\n *\n * Note: _the defaults for configuration are defined by the_ `DEFAULT_ONE_TO_MANY_MAPPING`\n * _constant made available as a symbol from this library._\n */\n config: <\n C extends MapConfig<\n OptRequired, //\n MapCardinalityIllustrated,\n OptRequired\n >,\n >(\n config: C\n ) => ConfiguredMap<\n AsFinalizedConfig<\n C, //\n DefaultOneToManyMapping\n >\n >;\n\n /**\n * Provides a nice 1:1 ratio between the input and output.\n *\n * By default the input and output are considered to be _required_\n * properties but this can be changed with the options hash provided.\n * ```ts\n * const mapper = mapTo.oneToOne().map(...);\n * // add in ability to filter out some inputs\n * const mapAndFilter = mapTo.oneToOne({ output: \"opt\" })\n * ```\n */\n oneToOne: <C extends MapCardinalityConfig<OptRequired, OptRequired>>(\n config?: C\n ) => ConfiguredMap<\n AsFinalizedConfig<\n C, //\n DefaultOneToOneMapping\n >\n >;\n\n /**\n * **manyToOne** _mapping_\n *\n * Provides a configuration where multiple inputs `I[]` will be mapped to a\n * single output `O`.\n *\n * Choosing this configuration will, by default, set both input and output\n * to be \"required\" but you can change this default if you so choose.\n */\n manyToOne: <\n C extends MapCardinalityConfig<\n OptRequired | undefined, //\n OptRequired | undefined\n >,\n >(\n config?: C\n ) => ConfiguredMap<\n AsFinalizedConfig<\n C, //\n DefaultManyToOneMapping\n >\n >;\n\n oneToMany: <\n C extends MapCardinalityConfig<\n OptRequired | undefined, //\n OptRequired | undefined\n >,\n >(\n config?: C\n ) => ConfiguredMap<\n AsFinalizedConfig<\n C, //\n DefaultOneToManyMapping\n >\n >;\n}\n\nexport type MapInput<\n I,\n IR extends OptRequired,\n C extends MapCardinalityIllustrated,\n> = C extends MapCardinality.OneToMany | \"I -> O[]\"\n ? IR extends \"opt\"\n ? I | undefined\n : I\n : C extends MapCardinality.OneToOne | \"I -> O\"\n ? IR extends \"opt\"\n ? I | undefined\n : I\n : C extends MapCardinality.ManyToOne | \"I[] -> O\"\n ? IR extends \"opt\"\n ? I[] | undefined\n : I[]\n : never;\n\nexport type MapOutput<\n O,\n OR extends OptRequired,\n C extends MapCardinalityIllustrated,\n> = C extends MapCardinality.OneToMany | \"I -> O[]\"\n ? OR extends \"opt\"\n ? O[]\n : [O, ...O[]]\n : C extends MapCardinality.OneToOne | \"I -> O\"\n ? OR extends \"opt\"\n ? O | null\n : O\n : C extends MapCardinality.ManyToOne | \"I[] -> O\"\n ? OR extends \"opt\"\n ? O | null\n : O\n : never;\n\n/**\n * **MapTo<I, O>**\n *\n * A mapping function between an input type `I` and output type `O`. Defaults to using\n * the _default_ OneToMany mapping config.\n *\n * **Note:** this type is designed to guide the userland mapping; refer\n * to `MapFn` if you want the type output by the `mapFn()` utility.\n */\nexport type MapTo<\n I,\n O,\n C extends FinalizedMapConfig<\n OptRequired,\n MapCardinalityIllustrated,\n OptRequired\n > = DefaultOneToManyMapping,\n> = MapIR<C> extends \"opt\"\n ? (source?: MapInput<I, MapIR<C>, MapCard<C>>) => MapOutput<O, MapOR<C>, MapCard<C>>\n : (source: MapInput<I, MapIR<C>, MapCard<C>>) => MapOutput<O, MapOR<C>, MapCard<C>>;\n\nexport type MapFnOutput<\n I,\n O,\n S,\n OR extends OptRequired,\n C extends MapCardinalityIllustrated,\n> = C extends \"I -> O[]\" | MapCardinality.OneToMany\n ? S extends I[]\n ? OR extends \"opt\"\n ? O[]\n : [O, ...O[]]\n : OR extends \"opt\"\n ? O[] | null\n : O[]\n : C extends MapCardinality.OneToOne | \"I -> O\"\n ? S extends I[]\n ? OR extends \"opt\"\n ? O[]\n : [O, ...O[]]\n : OR extends \"opt\"\n ? O | null\n : O\n : C extends MapCardinality.ManyToOne | \"I[] -> O\"\n ? S extends I[][]\n ? OR extends \"opt\"\n ? O[]\n : [O, ...O[]]\n : OR extends \"opt\"\n ? O | null\n : O\n : never;\n\nexport type MapFnInput<I, IR extends OptRequired, D extends MapCardinalityIllustrated> = D extends\n | \"I -> O[]\"\n | MapCardinality.OneToMany\n ? IR extends \"opt\"\n ? I | I[] | undefined\n : I | I[]\n : D extends MapCardinality.OneToOne | \"I -> O\"\n ? IR extends \"opt\"\n ? I | I[] | undefined\n : I | I[]\n : D extends MapCardinality.ManyToOne | \"I[] -> O\"\n ? IR extends \"opt\"\n ? I[] | I[][] | undefined\n : I[] | I[][]\n : never;\n\n/**\n * The mapping function provided by the `mapFn()` utility. This _fn_\n * is intended to be used in two ways:\n *\n * 1. Iterative:\n * ```ts\n * const m = mapTo<I,O>(i => [ ... ]);\n * // maps inputs to outputs\n * const out = inputs.map(m);\n * ```\n * 2. Block:\n * ```ts\n * // maps inputs to outputs (filtering or splitting where appr.)\n * const out2 = m(inputs);\n * ```\n */\nexport type MapFn<\n I,\n O,\n C extends FinalizedMapConfig<OptRequired, MapCardinalityIllustrated, OptRequired>,\n> = MapIR<C> extends \"opt\"\n ? <S extends MapFnInput<I, MapIR<C>, MapCard<C>>>(\n source?: S\n ) => MapFnOutput<I, O, S, MapOR<C>, MapCard<C>>\n : <S extends MapFnInput<I, MapIR<C>, MapCard<C>>>(\n source: S\n ) => MapFnOutput<I, O, S, MapOR<C>, MapCard<C>>;\n\n/**\n * **Mapper**\n *\n * A fully configured _mapper_ stemming from the **mapTo()** utility. It is both a mapping\n * function and a dictionary which describes the mapper's properties.\n * ```ts\n * const m = mapTo.oneToOne().map( ... );\n * const mapped = m(inputs);\n * const mappedOver = inputs.map(m);\n * ```\n *\n * Note: the root of a `Mapper` is the mapper function but\n * this is combined with a dictionary of settings and types\n * which you can use. For instance, look at the `fnSignature`\n * property to get the _type_ signature of the map function.\n */\nexport type MapperOld<\n I = unknown,\n O = unknown,\n C extends FinalizedMapConfig<\n OptRequired,\n MapCardinalityIllustrated,\n OptRequired\n > = FinalizedMapConfig<OptRequired, MapCardinalityIllustrated, OptRequired>,\n> = {\n input: MapIR<C>;\n output: MapOR<C>;\n cardinality: MapCard<C>;\n debug: boolean | string;\n inputType: I;\n outputType: O;\n /**\n * Provides the _type_ information for mapper function.\n *\n * Note: _this is just a **type**_ not the actual function which positioned\n * at the root of the Mapper type\n */\n fnSignature: MapFn<I, O, C>;\n} & MapFn<I, O, C>;\n\n/**\n * **MapInputFrom**\n *\n * Type utility which extracts the `I` type from a fully configured `Mapper`\n */\nexport type MapInputFrom<T extends MapperOld> = T extends MapperOld<infer I> ? I : never;\n\n/**\n * **MapOutputFrom**\n *\n * Type utility which extracts the output [`O`] type from a fully configured `Mapper`\n */\n\nexport type MapOutputFrom<T extends MapperOld> = T extends MapperOld<any, infer O> ? O : never;\n\n/**\n * **MapCardinalityFrom**\n *\n * Type utility which extracts _cardinality_ of a `Mapper`'s inputs to outputs\n */\n\nexport type MapCardinalityFrom<T extends MapperOld> = T extends MapperOld<any, any, infer C>\n ? C extends FinalizedMapConfig<OptRequired, infer Cardinality, OptRequired>\n ? Cardinality\n : never\n : never;\n","import type { EmptyObject } from \"inferred-types/types\";\n\nexport enum ExifCompression {\n Uncompressed = 1,\n CCITT = 2,\n T4Group3Fax = 3,\n T6Group3Fax = 4,\n LZW = 5,\n JpgOldStyle = 6,\n Jpg = 7,\n AdobeDeflate = 8,\n JBigBw = 9,\n JBigColor = 10,\n JpegAlt = 99,\n Kodak262 = 262,\n Next = 32766,\n SonyRawCompressed = 32767,\n PackedRaw = 32769,\n SamsungSrwCompressed = 32770,\n CCIRLEW = 32771,\n SamsungSrwCompressed2 = 32772,\n Packbits = 32773,\n Thunderscan = 32809,\n KodakKdcCompressed = 32867,\n IT8CTPAD = 32895,\n IT8LW = 32896,\n IT8MP = 32897,\n IT8BL = 32898,\n PixarFilm = 32908,\n PixarLog = 32909,\n Deflate = 32946,\n DCS = 32947,\n AperioJpeg2000YCbCr = 33003,\n AperioJpeg2000RGB = 33005,\n JBig = 34661,\n SGILog = 34676,\n SGILog24 = 34677,\n Jpeg2000 = 34712,\n NikonNEFCompressed = 34713,\n JBig2TiffFx = 34715,\n MicrosoftBinaryLevelCodec = 34718,\n MicrosoftProgressiveTransformCodec = 34719,\n MicrosoftVector = 34720,\n ESRCLerc = 34887,\n LossyJpeg = 34892,\n LZMA2 = 34925,\n Zstd = 34926,\n WepP = 34927,\n PNG = 34933,\n JpegXR = 34934,\n KodakDCRCompressed = 65000,\n PentaxPEFCompressed = 65535,\n}\n\nexport enum ExifLightSource {\n Unknown = 0,\n Daylight,\n Fluorescent,\n Tungsten,\n Flash,\n FineWeather,\n Cloudy,\n Shade,\n DaylightFluorescent,\n DayWhiteFluorescent,\n CoolWhiteFluorescent,\n WhiteFluorescent,\n WarmWhiteFluorescent,\n StandardLightA,\n StandardLightB,\n StandardLightC,\n D55,\n D65,\n D75,\n D50,\n ISOStudioTungsten,\n Other = 255,\n}\n\nexport enum ExifFlashValues {\n NoFlash = 0x0,\n Fired = 0x1,\n FiredReturnNotDetected = 0x5,\n FiredReturnDetected = 0x7,\n OnDidNotFire = 0x8,\n OnFired = 0x9,\n OnReturnNotDetected = 0xD,\n OnReturnDetected = 0xF,\n OffDidNotFire = 0x10,\n OffDidNotFireReturnNotDetected = 0x14,\n AutoDidNotFire = 0x18,\n AutoFired = 0x19,\n AutoFiredReturnNotDetected = 0x1D,\n AutoFiredReturnDetected = 0x1F,\n NoFlashFunction = 0x20,\n OffNoFlashFunction = 0x30,\n FiredRedEyeReduction = 0x41,\n FiredRedEyeReductionReturnNotDetected = 0x45,\n FiredRedEyeReductionReturnDetected = 0x47,\n OnRedEyeReduction = 0x49,\n OnRedEyeReductionReturnNotDetected = 0x4D,\n OnRedEyeReductionReturnDetected = 0x4F,\n OffRedEyeReduction = 0x50,\n AutoDidNotFireRedEyeReduction = 0x58,\n AutoFiredRedEyeReduction = 0x59,\n AutoFiredRedEyeReductionNotDetected = 0x60,\n AutoFiredRedEyeReductionDetected = 0x5D,\n}\n\nexport enum ExifPreviewColorSpace {\n Unknown = 0,\n GrayGamma22,\n sRGB,\n AdobeRGB,\n ProPhotoRGB,\n}\n\nexport enum ExifEmbedPolicy {\n AllowCopying = 0,\n EmbedIfUsed,\n NeverEmbed,\n NoRestrictions,\n}\n\nexport enum ExifSubjectDistance {\n Unknown = 0,\n Macro,\n Close,\n Distant,\n}\n\nexport enum ExifSharpness {\n Normal = 0,\n Soft,\n Hard,\n}\n\nexport enum ExifSceneCaptureType {\n Standard = 0,\n Landscape,\n Portrait,\n Night,\n Other,\n}\n\nexport enum ExifGainControl {\n None = 0,\n LowGainUp,\n HighGainUp,\n LowGainDown,\n HighGainDown,\n}\n\nexport enum ExifContrast {\n Normal = 0,\n Low,\n High,\n}\n\nexport enum ExifSaturation {\n Normal = 0,\n Low,\n High,\n}\n\n/**\n * Extraneous info in an EXIF metadata payload. Detailed info\n * can be found on all fields here: [EXIF Tags](https://exiftool.org/TagNames/EXIF.html)\n */\nexport type ExifExtraneous<T extends object = EmptyObject> = {\n /** [ `0x0001` ] */\n InteropIndex: string;\n // InteropVersion:\n\n /**\n * called NewSubfileType by TIFF specification.\n * [More](https://exiftool.org/TagNames/EXIF.html).\n */\n SubfileType: number;\n} & T;\n\n/**\n * Date and Time info found in EXIF payload. Detailed info\n * can be found on all fields here: [EXIF Tags](https://exiftool.org/TagNames/EXIF.html)\n */\nexport type ExifDateTimeInfo<T extends object = EmptyObject> = {\n ModifyDate: string;\n OffsetTime: string;\n /** The date created; formal EXIF property is `DateTimeDigitized` */\n CreateDate: string;\n /** Formal EXIF property for created date */\n DateTimeDigitized: string;\n /**\n * 1 or 2 values:\n *\n * 1. The time zone offset of DateTimeOriginal from GMT in hours,\n * 2. If present, the time zone offset of ModifyDate\n */\n TimeZoneOffset: number | [number, number];\n OffsetTimeDigitized: string;\n /** fractional seconds for ModifyDate */\n SubSecTime: string;\n /** fractional seconds for DateTimeOriginal */\n SubSecTimeOriginal: string;\n /** fractional seconds for CreateDate */\n SubSecTimeDigitized: string;\n} & T;\n\n/**\n * Information regarding attribution found in EXIF payload. Detailed info\n * can be found on all fields here: [EXIF Tags](https://exiftool.org/TagNames/EXIF.html)\n */\nexport type ExifAttributionInfo<T extends object = EmptyObject> = {\n Copyright: string;\n /** becomes a list-type tag when the MWG module is loaded */\n Artist: string;\n /** called `CameraOwnerName` by the EXIF spec */\n OwnerName: string;\n CameraOwnerName: string;\n /** called `BodySerialNumber` by the EXIF spec */\n SerialNumber: string;\n BodySerialNumber: string;\n LensSerialNumber: string;\n HostComputer: string;\n} & T;\n\nexport type ExifCameraInfo<T extends object = EmptyObject> = {\n Make: string;\n Model: string;\n UniqueCameraModel: string;\n LocalizedCameraModel: string;\n LensMake: string;\n LensModel: string;\n /**\n * 4 rational values giving focal and aperture ranges,\n * called `LensSpecification` by the EXIF spec.\n */\n LensInfo: [number, number, number, number];\n LensSpecification: [number, number, number, number];\n\n /** used by some obscure software */\n OriginalFileName: string;\n OriginalRawFileName: string;\n ReelName: string;\n\n Orientation: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\n ImageWidth: number;\n ExifImageWidth: number;\n ImageHeight: number;\n ExifImageHeight: number;\n BitsPerSample: number;\n\n /**\n * Details on compression values can be found here:\n * [Compression Values](https://exiftool.org/TagNames/EXIF.html#Compression).\n *\n * You may reference as a number or leverage the exposed `ExifCompression`\n * enumeration for more contextual info.\n */\n Compression: number;\n\n /**\n * - `1` - No dithering or half-toning\n * - `2` - Ordered dither or halftone\n * - `3` - Randomized dither\n */\n Thresholding: 1 | 2 | 3;\n\n /**\n * - `1` - Normal\n * - `2` - Reversed\n */\n FillOrder: 1 | 2;\n\n /**\n * - `0` - WhiteIsZero\n * - `1` - BlackIsZero\n * - `2` - RGB\n * - `3` - RGB Palette\n * - `4` - Transparency Mask\n *\n * For full list reference [docs](https://exiftool.org/TagNames/EXIF.html)\n */\n PhotometricInterpretation: number;\n\n SceneCaptureType: ExifSceneCaptureType;\n GainControl: ExifGainControl;\n Contrast: ExifContrast | string;\n Saturation: ExifSaturation;\n Sharpness: ExifSharpness | string;\n\n /**\n * Applies to **EXIF:ISO** tag:\n *\n * - `0` - Unknown\n * - `1` - Standard Output Sensitivity\n * - `2` - Recommended Exposure Index\n * - `3` - ISO Speed\n * - `4` - Standard Output Sensitivity and Recommended Exposure Index\n * - `5` - Standard Output Sensitivity and ISO Speed\n * - `6` - Recommended Exposure Index and ISO Speed\n * - `7` - Standard Output Sensitivity, Recommended Exposure Index and ISO Speed\n */\n SensitivityType: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7;\n StandardOutputSensitivity: number;\n RecommendedExposureIndex: number;\n /**\n * called `ISOSpeedRatings` by EXIF 2.2, then `PhotographicSensitivity` by the EXIF 2.3 spec.\n */\n ISO: number;\n ISOSpeed: number;\n Exposure: string;\n ExposureIndex: number;\n Shadows: string;\n Brightness: string;\n Smoothness: string;\n MoireFilter: string;\n\n /**\n * - `0` - Unknown\n * - `1` - Average\n * - `2` - Center-weighted average\n * - `3` - Spot\n * - `4` - Multi-spot\n * - `5` - Multi-segment\n * - `6` - Partial\n * - `255` - Other\n */\n MeteringMode: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 255;\n\n /**\n * - `0` - Auto\n * - `1` - Manual\n * - `2` - Auto bracket\n */\n ExposureMode: 0 | 1 | 2;\n\n /**\n * Only values `0` and `1` are to the EXIF spec but Apple IOS devices use all\n *\n * - `0` - Normal\n * - `1` - Custom\n * - `2` - HDR (no original saved)\n * - `3` - HDR (original saved)\n * - `4` - Original (for HDR)\n * - `6` - Panorama\n * - `7` - Portrait HDR\n * - `8` - Portrait\n */\n CustomRendered: 0 | 1 | 2 | 3 | 4 | 6 | 7 | 8;\n\n LightSource: ExifLightSource;\n Flash: ExifFlashValues;\n FlashEnergy: number;\n\n SubjectDistance: number;\n SubjectDistanceRange: ExifSubjectDistance;\n SubjectLocation: [number, number];\n DepthNear: number;\n DepthFar: number;\n DepthMeasureType: 0 | 1 | 2;\n\n DigitalZoomRatio: number;\n FocalLengthIn35mmFormat: number;\n FocalLength: number;\n\n /**\n * - `0x1` - sRGB\n * - `0x2` - Adobe RGB\n * - `0xfffd` - Wide Gamut RGB\n * - `0xfffe` - ICC Profile\n * - `0xffff` - Uncalibrated\n *\n * Note: the value of `0x2` is not standard EXIF. Instead, an Adobe RGB image\n * is indicated by \"Uncalibrated\" with an InteropIndex of \"R03\". The values\n * 0xfffd and 0xfffe are also non-standard, and are used by some Sony cameras.\n */\n Colorspace: 0x1 | 0x2 | 0xFFFD | 0xFFFE | 0xFFFF;\n Gamma: number;\n /**\n * The actual `PixelFormat` values are 16-byte GUID's but the leading 15 bytes,\n * '6fddc324-4e03-4bfe-b1853-d77768dc9', have been removed below to avoid\n * unnecessary clutter:\n *\n * - `0x5` = Black & White\n * - `0x8` = 8-bit Gray\n * - `0x9` = 16-bit BGR555\n * - `0xa` = 16-bit BGR565\n * - `0xb` = 16-bit Gray\n * - `0xc` = 24-bit BGR\n * - `0xd` = 24-bit RGB\n * - `0xe` = 32-bit BGR\n * - `0xf` = 32-bit BGRA\n * - `0x10` = 32-bit PBGRA\n * - `0x11` = 32-bit Gray Float\n * - `0x12` = 48-bit RGB Fixed Point\n * - `0x13` = 32-bit BGR101010\n * - `0x15` = 48-bit RGB\n * - `0x16` = 64-bit RGBA\n * - `0x17` = 64-bit PRGBA\n * - `0x18` = 96-bit RGB Fixed Point\n * - `0x19` = 128-bit RGBA Float\n * - `0x1a` = 128-bit PRGBA Float\n * - `0x1b` = 128-bit RGB Float\n * - `0x1c` = 32-bit CMYK\n * - `0x1d` = 64-bit RGBA Fixed Point\n * - `0x1e` = 128-bit RGBA Fixed Point\n * - `0x1f` = 64-bit CMYK\n * - `0x20` = 24-bit 3 Channels\n * - `0x21` = 32-bit 4 Channels\n * - `0x22` = 40-bit 5 Channels\n * - `0x23` = 48-bit 6 Channels\n * - `0x24` = 56-bit 7 Channels\n * - `0x25` = 64-bit 8 Channels\n * - `0x26` = 48-bit 3 Channels\n * - `0x27` = 64-bit 4 Channels\n * - `0x28` = 80-bit 5 Channels\n * - `0x29` = 96-bit 6 Channels\n * - `0x2a` = 112-bit 7 Channels\n * - `0x2b` = 128-bit 8 Channels\n * - `0x2c` = 40-bit CMYK Alpha\n * - `0x2d` = 80-bit CMYK Alpha\n * - `0x2e` = 32-bit 3 Channels Alpha\n * - `0x2f` = 40-bit 4 Channels Alpha\n * - `0x30` = 48-bit 5 Channels Alpha\n * - `0x31` = 56-bit 6 Channels Alpha\n * - `0x32` = 64-bit 7 Channels Alpha\n * - `0x33` = 72-bit 8 Channels Alpha\n * - `0x34` = 64-bit 3 Channels Alpha\n * - `0x35` = 80-bit 4 Channels Alpha\n * - `0x36` = 96-bit 5 Channels Alpha\n * - `0x37` = 112-bit 6 Channels Alpha\n * - `0x38` = 128-bit 7 Channels Alpha\n * - `0x39` = 144-bit 8 Channels Alpha\n * - `0x3a` = 64-bit RGBA Half\n * - `0x3b` = 48-bit RGB Half\n * - `0x3d` = 32-bit RGBE\n * - `0x3e` = 16-bit Gray Half\n * - `0x3f` = 32-bit Gray Fixed Point\n *\n * > NOTE: tags 0xbc** are used in Windows HD Photo (HDP and WDP) images\n `\n */\n PixelFormat: number;\n\n /**\n * - `0` - Horizontal (normal)\n * - `1` - Mirror vertical\n * - `2` - Mirror horizontal\n * - `3` - Rotate 180\n * - `4` - Rotate 90 CW\n * - `5` - Mirror horizontal and rotate 90 CW\n * - `6` - Mirror horizontal and rotate 270 CW\n * - `7` - Rotate 270 CW\n */\n Transformation: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7;\n\n Whitebalance: number;\n\n BrightnessValue: number;\n /** Used but EXIF standard is `ExposureBiasValue` */\n ExposureCompensation: number;\n /** EXIF standard for Exposure bias */\n ExposureBiasValue: number;\n\n /** displayed in seconds, but stored as an APEX value */\n ShutterSpeedValue: number;\n /** displayed as an F number, but stored as an APEX value */\n ApertureValue: number;\n /** displayed as an F number, but stored as an APEX value */\n MaxApertureValue: number;\n\n EnhanceParams: string;\n\n /**\n *\n */\n FileSource: 1 | 2 | 3 | \"\\x03\\x00\\x00\\x00\";\n\n /**\n * Ambient temperature in degrees C, called `Temperature` by the EXIF spec\n */\n AmbientTemperature: number;\n /** Ambient temperature in degrees C */\n Temperature: number;\n Humidity: number;\n Pressure: number;\n WaterDepth: number;\n Acceleration: number;\n CameraElevationAngle: number;\n} & T;\n\nexport type ExifPhotoContext<T extends object = EmptyObject> = {\n ImageDescription: string;\n DocumentName: string;\n UserComment: string;\n\n Annotations: string;\n XPSubject: number;\n XPKeywords: number;\n XPAuthor: number;\n XPComments: number;\n\n Rating: number;\n RatingPercent: number;\n} & T;\n\n/**\n * Typing for GPS properties that are part of EXIF spec.\n * Details can be found: [here](https://exiftool.org/TagNames/GPS.html).\n */\nexport interface ExifGps {\n GPSVersionID: number;\n GPSLatitudeRef: \"N\" | \"S\";\n GPSLatitude: number;\n GPSLongitudeRef: \"E\" | \"W\";\n GPSLongitude: number;\n /**\n * - `0` is above sea level\n * - `1` is below sea level\n */\n GPSAltitudeRef: 0 | 1;\n GPSAltitude: number;\n /**\n * UTC time of GPS fix. When writing, date is stripped off if present,\n * and time is adjusted to UTC if it includes a timezone\n */\n GPSTimeStamp: string;\n GPSSatellites: string;\n GPSStatus: \"A\" | \"V\";\n GPSMeasureMode: \"2\" | \"3\";\n /**\n * - `K` - km/h\n * - `M` - mph\n * - `N` = knots\n */\n GPSSpeedRef: \"K\" | \"M\" | \"N\";\n GPSSpeed: number;\n GPSTrack: number;\n GPSImgDirectionRef: \"M\" | \"T\";\n GPSImgDirection: number;\n GPSMapDatum: string;\n GPSDestLatitudeRef: \"N\" | \"S\";\n GPSDestLatitude: number;\n GPSDestLongitudeRef: \"N\" | \"S\";\n GPSDestLongitude: number;\n GPSDestBearingRef: \"M\" | \"T\";\n GPSDestBearing: number;\n /**\n * - `K` - Kilometers\n * - `M` - Miles\n * - `N` = Nautical Miles\n */\n GPSDestDistanceRef: \"K\" | \"M\" | \"N\";\n GPSDestDistance: number;\n GPSProcessingMethod: \"GPS\" | \"CELLID\" | \"WLAN\" | \"MANUAL\";\n GPSAreaInformation: string;\n /**\n * When writing, time is stripped off if present, after adjusting\n * date/time to UTC if time includes a timezone. Format is `YYYY:mm:dd`.\n */\n GPSDateStamp: `${number}:${number}:${number}`;\n /**\n * `0` - no correction\n * `1` - differential corrected\n */\n GPSDifferential: 0 | 1;\n GPSHPositioningError: number;\n}\n/**\n * EXIF metadata payload fields.\n * Detailed info can be found here:\n * [EXIF Tags](https://exiftool.org/TagNames/EXIF.html).\n */\nexport type Exif<T extends object = EmptyObject> = Partial<\n ExifAttributionInfo &\n ExifCameraInfo &\n ExifDateTimeInfo &\n ExifGps &\n ExifExtraneous &\n ExifPhotoContext\n> &\nT;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGO,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;ACLO,IAAM,mBAAmB;EAC9B;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;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;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ACL,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,mBAAmB;EAC9B,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;AACL;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;AAEO,IAAM,mBAAmB;AC3HzB,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;EA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AM,OAAO,IAAI;EAClB,CAAC,MAAM,OAAO,IAAI;EAClB,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,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,SAAS,OAAO,IAAI;EACrB,CAAC,SAAS,OAAO,IAAI;EACrB,CAAC,SAAS,OAAO,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,O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;EACrB,CAAC,SAAS,OAAO,IAAI;EACrB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,SAAS,OAAO,IAAI;EACrB,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,SAAS,OAAO,IAAI;EACrB,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,MAAM,OAAO,IAAI;EAClB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,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;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,SAAS,OAAO,IAAI;EACrB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,OAAO,OAAO,IAAI;EAC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;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;AAEO,IAAM,kBAAkB;ACfxB,IAAM,qBAAqB;EAChC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,IAAM,mBAAmB;EAC9B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,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;AAEO,IAAM,mBAAmB;EAC9B;EACA;EACA;EACA;AACF;AAEO,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,e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AAQ,CAAC;;EAElH,cAAc,MAAM,CAAA,MAAK,EAAE,MAAM,GAAG,kEAAkE,CAAA,MAAK,EAAE,cAAc,CAAC;AAE9H;ACtDO,IAAM,UAAU,CAAC,UAAU,UAAU,WAAW,aAAa,UAAU,UAAU,YAAY,QAAQ;ACLrG,IAAM,mBAAmB;EAC9B;EACA;AACF;AAEO,IAAM,qBAAqB;EAChC;EACA;EACA;EACA;AACF;AAEO,IAAM,kBAAkB;EAC7B;EACA;EACA;AACF;AAEO,IAAM,8BAA8B;EACzC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,IAAM,4BAA4B;EACvC;EACA;EACA;EACA;EACA;AACF;AAKO,IAAM,aAAa;EACxB,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;AACL;AC3CO,IAAM,aAAa;EACxB;EACA;EACA;EACA;EACA;AACF;AAMO,IAAM,gBAAgB;EAC3B;EACA;AACF;AAEO,IAAM,UAAU;EACrB;EACA;EACA;EACA;AACF;AAMO,IAAM,eAAe;EAC1B;EACA;AACF;AAMO,IAAM,gBAAgB;EAC3B;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,IAAM,mBAAmB;EAC9B,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;AACL;AAEO,IAAM,WAAW;AACjB,IAAM,UAAU;AAChB,IAAM,eAAe;AC3DrB,IAAM,0BAA0B;EACrC;EACA;AACF;AAEO,IAAM,8BAA8B;EACzC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEF;AAEO,IAAM,iCAAiC;EAC5C;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;AAEO,IAAM,gCAAgC;EAC3C;EACA;AAEF;AC7DA,IAAM,YAAY;AAClB,IAAM,WAAW;AACjB,IAAM,WAAW;AACjB,IAAM,uBAAuB;AAatB,IAAM,kBAAkB;EAC7B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,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,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,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,SAAS,OAAO,IAAI;EACrB,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,MAAM,OAAO,IAAI;EAClB,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,MAAM,OAAO,IAAI;EAClB,CAAC,OAAO,OAAO,IAAI;EACnB,CAAC,MAAM,OAAO,IAAI;EAClB,CAAC,OAA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B;AACF;AAEO,IAAMC,mBAAkB;EAC7B;EACA;AACF;AC7GO,IAAMC,kBAAiB;EAC5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;ACSO,IAAMC,wBAAuB;EAClC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,IAAMC,4BAA2B;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AASO,IAAMC,uBAAsB;EACjC;AACF;AAEO,IAAMC,mBAAkB;EAC7B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,IAAMC,qBAAoB;EAC/B,GAAGD;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AASO,IAAME,sBAAqB;EAChC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,IAAMC,uBAAsB;EACjC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,IAAMC,qBAAoB;EAC/B;EACA;EACA;AACF;AAEO,IAAMC,qBAAoB;EAC/B;EACA;AACF;AAEO,IAAMC,2BAA0B;EACrC,GAAGJ;EACH,GAAGC;EACH,GAAGC;EACH,GAAGC;AACL;AASO,IAAME,iBAAgB;EAC3B,GAAGV;EACH,GAAGC;EACH,GAAGQ;EACH,GAAGP;AACL;ACpJO,IAAMS,yBAAwB;EACnC;EACA;EACA;EACA;EACA;EACA;AACF;ACHO,IAAMC,gBAAe;EAC1B;IACE,MAAM;IACN,aAAa;IACb,UAAU,CAAC,0BAA0B;IACrC,YAAY;IACZ,qBAAqB;;IACrB,cAAc;EAChB;EACA;IACE,MAAM;IACN,aAAa;IACb,UAAU,CAAC,yBAAyB;IACpC,YAAY;IACZ,qBAAqB;;IACrB,cAAc;EAChB;EACA;IACE,MAAM;IACN,aAAa;IACb,UAAU,CAAC,4BAA4B,eAAe;IACtD,YAAY;IACZ,qBAAqB;;IACrB,cAAc;EAChB;EACA;IACE,MAAM;IACN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","names":["fn","api","map","ifBoolean","LOWER_ALPHA_CHARS","UPPER_ALPHA_CHARS","ALPHA_CHARS","string","AMAZON_BOOKS","WHITESPACE_CHARS","COMMA","createConstant","FALSY_VALUES","US_STATE_LOOKUP_STRICT","US_STATE_LOOKUP_PROVINCES","US_STATE_LOOKUP","HASH_TABLE_ALPHA_LOWER","HASH_TABLE_SPECIAL","HASH_TABLE_ALPHA_UPPER","HASH_TABLE_CHAR","HTML_BLOCK_TAGS","HTML_ATOMIC_TAGS","ISO3166_1","MARKED","DISTANCE_METRICS_LOOKUP","MASS_METRICS_LOOKUP","SPEED_METRICS_LOOKUP","ACCELERATION_METRICS_LOOKUP","VOLUME_METRICS_LOOKUP","TEMPERATURE_METRICS_LOOKUP","PRESSURE_METRICS_LOOKUP","ENERGY_METRICS_LOOKUP","TIME_METRICS_LOOKUP","POWER_METRICS_LOOKUP","FREQUENCY_METRICS_LOOKUP","VOLTAGE_METRICS_LOOKUP","CURRENT_METRICS_LOOKUP","RESISTANCE_METRICS_LOOKUP","LUMINOSITY_METRICS_LOOKUP","AREA_METRICS_LOOKUP","NETWORK_PROTOCOL_INSECURE","NETWORK_PROTOCOL_SECURE","NETWORK_PROTOCOL","NETWORK_PROTOCOL_LOOKUP","PROTOCOL_DEFAULT_PORTS","Never","US_NEWS","UK_NEWS","GERMAN_NEWS","FRENCH_NEWS","CANADIAN_NEWS","DUTCH_NEWS","ITALIAN_NEWS","BELGIUM_NEWS","MEXICAN_NEWS","SPANISH_NEWS","INDIAN_NEWS","CHINESE_NEWS","DANISH_NEWS","SWISS_NEWS","AUSTRALIAN_NEWS","JAPANESE_NEWS","SOUTH_KOREAN_NEWS","TURKISH_NEWS","NORWEGIAN_NEWS","NO_DEFAULT_VALUE","NOT_APPLICABLE","NOT_DEFINED","NUMERIC_CHAR","PHONE_COUNTRY_CODES","PLURAL_EXCEPTIONS","REPO_SOURCES","REPO_SOURCE_LOOKUP","AMAZON_DNS","WALMART_DNS","APPLE_DNS","HOME_DEPOT_DNS","EBAY_DNS","TARGET_DNS","ETSY_DNS","COSTCO_DNS","BEST_BUY_DNS","WAYFAIR_DNS","NIKE_DNS","MACYS_DNS","DELL_DNS","HM_DNS","ZARA_DNS","KROGER_DNS","WALGREENS_DNS","CVS_DNS","WHOLE_FOODS_DNS","SHAPE_PREFIXES","SIMPLE_SCALAR_TOKENS","SIMPLE_OPT_SCALAR_TOKENS","SIMPLE_UNION_TOKENS","SIMPLE_MAP_KEYS","SIMPLE_MAP_VALUES","SIMPLE_DICT_TOKENS","SIMPLE_ARRAY_TOKENS","SIMPLE_MAP_TOKENS","SIMPLE_SET_TOKENS","SIMPLE_CONTAINER_TOKENS","SIMPLE_TOKENS","SINGULAR_NOUN_ENDINGS","SOCIAL_MEDIA","TW_HUE_NEUTRAL","TW_HUE_VIBRANT","TW_HUE_STATIC","TW_HUE","TW_LUMINOSITY","TW_LUMIN_50","TW_LUMIN_100","TW_LUMIN_200","TW_LUMIN_300","TW_LUMIN_400","TW_LUMIN_500","TW_LUMIN_600","TW_LUMIN_700","TW_LUMIN_800","TW_LUMIN_900","TW_LUMIN_950","TW_CHROMA","TW_CHROMA_50","TW_CHROMA_100","TW_CHROMA_200","TW_CHROMA_300","TW_CHROMA_400","TW_CHROMA_500","TW_CHROMA_600","TW_CHROMA_700","TW_CHROMA_800","TW_CHROMA_900","TW_CHROMA_950","TW_COLOR_TARGETS","TW_MODIFIERS_CORE","TW_MODIFIERS_ORDER","TW_MODIFIERS_RELN","TW_MODIFIERS_SIZING","TW_MODIFIERS","WideAssignment","wide","entry","TYPE_COMPARISONS","FALSY_TYPE_KINDS","LITERAL_TYPE_KINDS","WIDE_TYPE_KINDS","NARROW_CONTAINER_TYPE_KINDS","WIDE_CONTAINER_TYPE_KINDS","TYPE_KINDS","TT_ATOMICS","TT_SINGLETONS","TT_SETS","TT_FUNCTIONS","TT_CONTAINERS","TT_KIND_VARIANTS","TT_START","TT_STOP","ifContainer","result","ifUndefined","ifDefined","tuple","literal","mapper","_","csv","endingIn","compare","valid","getCategories","URL","list","sharedKeys","joinWith","start","asType","find","retain","strip","input","union","queue","startsWith","endsWith","params","MapCardinality","ExifCompression","ExifLightSource","ExifFlashValues","ExifPreviewColorSpace","ExifEmbedPolicy","ExifSubjectDistance","ExifSharpness","ExifSceneCaptureType","ExifGainControl","ExifContrast","ExifSaturation"]}
|