UNPKG

@authup/kit

Version:

A Package containing general (context independent) utilities.

1 lines 21.7 kB
{"version":3,"file":"index.mjs","sources":["../src/constants.ts","../src/array.ts","../src/array-buffer.ts","../src/base64.ts","../src/bcrypt.ts","../src/has-own-property.ts","../src/is-simple-match.ts","../src/nanoid.ts","../src/object.ts","../src/pick.ts","../src/scalar.ts","../src/serialize.ts","../src/template.ts","../src/uuid.ts","../src/url.ts","../src/wait.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum DecisionStrategy {\n /**\n * One or more positive\n */\n AFFIRMATIVE = 'affirmative',\n /**\n * All positive\n */\n UNANIMOUS = 'unanimous',\n /**\n * More positive than negative\n */\n CONSENSUS = 'consensus',\n}\n\nexport enum EnvironmentName {\n PRODUCTION = 'production',\n TEST = 'test',\n DEVELOPMENT = 'development',\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function toArray<T>(input?: T | T[]): T[] {\n if (!input) {\n return [];\n }\n\n return Array.isArray(input) ? input : [input];\n}\n\nexport function toStringArray<T>(input?: T | T[]) : string[] {\n return toArray(input)\n .filter((el) => typeof el === 'string') as string[];\n}\n\nexport function toArrayElement<T>(input?: T | T[]): T | undefined {\n return Array.isArray(input) ? input[0] : input;\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function arrayBufferToBase64(buffer: ArrayBuffer) {\n return btoa(String.fromCharCode(...new Uint8Array(buffer)));\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function base64ToArrayBuffer(base64: string) : ArrayBuffer {\n const bin = atob(base64);\n const len = bin.length;\n const bytes = new Uint8Array(len);\n\n for (let i = 0; i < len; i++) {\n bytes[i] = bin.charCodeAt(i);\n }\n\n return bytes.buffer;\n}\n\n/**\n * @see https://thewoods.blog/base64url/\n *\n * @param input\n */\nexport function base64URLEncode(input: string): string {\n return btoa(input)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '');\n}\n\n/**\n * @see https://thewoods.blog/base64url/\n *\n * @param value\n */\nexport function base64URLDecode(value: string): string {\n const m = value.length % 4;\n\n return atob(\n value.replace(/-/g, '+')\n .replace(/_/g, '/')\n .padEnd(value.length + (m === 0 ? 0 : 4 - m), '='),\n );\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\n/**\n * Check if an input string might be a bcrypt hash.\n *\n * @see https://stackoverflow.com/questions/5393803/can-someone-explain-how-bcrypt-verifies-a-hash\n * @param input\n */\nexport function isBCryptHash(input: string): boolean {\n return [\n '$2a$',\n '$2x$',\n '$2y$',\n '$2b$',\n ].includes(input.substring(0, 4));\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function hasOwnProperty<X extends {}, Y extends PropertyKey>(obj: X, prop: Y): obj is X & Record<Y, unknown> {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function isPropertySet<X extends Record<string, any>, K extends keyof X>(\n obj: X,\n prop: K,\n) : boolean {\n return hasOwnProperty(obj, prop);\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isSimpleMatch(\n value: string,\n pattern: string | string[],\n) {\n if (Array.isArray(pattern)) {\n for (const element of pattern) {\n if (isSimpleMatch(value, element)) {\n return true;\n }\n }\n\n return false;\n }\n if (value === pattern) {\n return true;\n }\n\n const maxLength = Math.max(value.length, pattern.length);\n\n for (let i = 0; i < maxLength; i++) {\n if (value[i] === pattern[i]) {\n continue;\n }\n\n if (pattern[i] === '*') {\n if (pattern[i + 1] === '*') {\n return true;\n }\n\n let sI : number = -1;\n for (let j = i; j < value.length; j++) {\n if (value[j] === '/') {\n sI = j + 1;\n break;\n }\n }\n\n if (sI === -1) {\n return true;\n }\n\n continue;\n }\n\n return !value[i] &&\n pattern[i] === '/' &&\n pattern[i + 1] === '*';\n }\n\n return false;\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { customAlphabet } from 'nanoid';\n\nexport function createNanoID(alphabet?: string) : string;\nexport function createNanoID(len?: number) : string;\nexport function createNanoID(alphabet?: string, len?: number) : string;\nexport function createNanoID(alphabetOrLen?: string | number, len?: number) : string {\n if (typeof alphabetOrLen === 'string') {\n return customAlphabet(alphabetOrLen, len || 21)();\n }\n\n if (typeof alphabetOrLen === 'number') {\n return customAlphabet('0123456789abcdefghijklmnopqrstuvwxyz', alphabetOrLen)();\n }\n\n return customAlphabet('0123456789abcdefghijklmnopqrstuvwxyz', len || 21)();\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ObjectLiteral } from './types';\n\nexport function isObject(input: unknown) : input is Record<string, any> {\n return !!input &&\n typeof input === 'object' &&\n !Array.isArray(input);\n}\n\nexport function extendObject<T extends Record<string, any>>(\n target: T,\n source: Partial<T>,\n) : T {\n const keys = Object.keys(source);\n for (const key of keys) {\n target[key as keyof T] = source[key] as T[keyof T];\n }\n\n return target;\n}\n\nexport function flattenObject(input: Record<string, any>) : Record<string, any> {\n const output : Record<string, any> = {};\n\n const keys = Object.keys(input);\n for (const key of keys) {\n const value = input[key];\n if (isObject(value)) {\n const childAttributes = flattenObject(value);\n const childAttributeKeys = Object.keys(childAttributes);\n for (const childAttributeKey of childAttributeKeys) {\n output[`${key}.${childAttributeKey}`] = childAttributes[childAttributeKey];\n }\n\n continue;\n }\n\n output[key] = input[key];\n }\n\n return output;\n}\n\nexport function removeObjectProperty<T extends ObjectLiteral>(input: Partial<T>, key: keyof T) {\n delete input[key];\n}\n\nexport function omitObjectProperties<\n T extends ObjectLiteral,\n>(input: Record<string, any>, excludeKeys: (keyof T)[]): T {\n const output : T = {} as T;\n const keys = Object.keys(input);\n\n for (const key of keys) {\n if (excludeKeys.includes(key)) {\n continue;\n }\n\n output[key as keyof T] = input[key] as T[keyof T];\n }\n\n return output;\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\ntype PickRecord<T extends Record<string, any>, S extends keyof T> = {\n [K in S]: K extends keyof T ? T[K] : never\n};\n\nexport function pickRecord<\n T extends Record<string, any>,\n K extends keyof T,\n>(data: T, keys: K[]) : PickRecord<T, K> {\n const output : PickRecord<T, K> = {} as PickRecord<T, K>;\n for (const key of keys) {\n output[key] = data[key];\n }\n\n return output;\n}\n\ntype OmitRecord<T extends Record<string, any>, S extends keyof T> = {\n [K in Exclude<keyof T, S>]: T[K]\n};\n\nexport function omitRecord<\n T extends Record<string, any>,\n K extends keyof T,\n>(data: T, keys: K[]) : OmitRecord<T, K> {\n const dataKeys = Object.keys(data) as K[];\n\n let index : number;\n const output = {} as OmitRecord<T, K>;\n for (const dataKey of dataKeys) {\n index = keys.indexOf(dataKey);\n if (index !== -1) {\n continue;\n }\n\n output[dataKey as unknown as keyof OmitRecord<T, K>] = data[dataKey] as unknown as T[Exclude<keyof T, K>];\n }\n\n return output;\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isScalar(\n value: unknown,\n) : value is string | number | boolean | null | undefined {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null ||\n value === undefined\n );\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { destr } from 'destr';\n\nexport function serialize(input: unknown) : string {\n if (typeof input === 'boolean') {\n return input ? 'true' : 'false';\n }\n\n if (typeof input === 'undefined') {\n return 'undefined';\n }\n\n if (input === null) {\n return 'null';\n }\n\n if (typeof input === 'number') {\n return `${input}`;\n }\n\n if (typeof input === 'string') {\n return input;\n }\n\n return JSON.stringify(input, (key, value) => {\n if (value instanceof RegExp) {\n return value.toString();\n }\n\n if (typeof value === 'bigint') {\n return value.toString();\n }\n\n return value;\n });\n}\n\nexport function deserialize<T = any>(input: any) : T {\n return destr(input);\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function template(\n str: string,\n data: Record<string, any>,\n regex = /\\{\\{(.+?)\\}\\}/g,\n) : string {\n return Array.from(str.matchAll(regex))\n .reduce((\n acc,\n match,\n ) => {\n const key = match[1];\n if (\n key &&\n Object.prototype.hasOwnProperty.call(data, key) &&\n typeof data[key] !== 'undefined'\n ) {\n return acc.replace(match[0], data[key]);\n }\n\n return acc;\n }, str);\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nconst regexp = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\nexport function isUUID(input: string) : boolean {\n return regexp.test(input);\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function makeURLPublicAccessible(url: string) {\n return url.replace('0.0.0.0', '127.0.0.1');\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\n/**\n * Wait for x ms.\n *\n * @param ms\n */\nexport async function wait(ms: number): Promise<void> {\n return new Promise<void>((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n"],"names":["DecisionStrategy","EnvironmentName","toArray","input","Array","isArray","toStringArray","filter","el","toArrayElement","arrayBufferToBase64","buffer","btoa","String","fromCharCode","Uint8Array","base64ToArrayBuffer","base64","bin","atob","len","length","bytes","i","charCodeAt","base64URLEncode","replace","base64URLDecode","value","m","padEnd","isBCryptHash","includes","substring","hasOwnProperty","obj","prop","Object","prototype","call","isPropertySet","isSimpleMatch","pattern","element","maxLength","Math","max","sI","j","createNanoID","alphabetOrLen","customAlphabet","isObject","extendObject","target","source","keys","key","flattenObject","output","childAttributes","childAttributeKeys","childAttributeKey","removeObjectProperty","omitObjectProperties","excludeKeys","pickRecord","data","omitRecord","dataKeys","index","dataKey","indexOf","isScalar","undefined","serialize","JSON","stringify","RegExp","toString","deserialize","destr","template","str","regex","from","matchAll","reduce","acc","match","regexp","isUUID","test","makeURLPublicAccessible","url","wait","ms","Promise","resolve","setTimeout"],"mappings":";;;AAAA;;;;;IAOO,IAAKA,gBAAAA,iBAAAA,SAAAA,gBAAAA,EAAAA;AACR;;AAEC,QAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,aAAA;AAED;;AAEC,QAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,WAAA;AAED;;AAEC,QAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,WAAA;AAXOA,IAAAA,OAAAA,gBAAAA;AAaX,CAAA,CAAA,EAAA;AAEM,IAAA,eAAKC,iBAAAA,SAAAA,eAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,eAAAA;AAIX,CAAA,CAAA,EAAA;;AC1BD;;;;;IAOO,SAASC,OAAAA,CAAWC,KAAe,EAAA;AACtC,IAAA,IAAI,CAACA,KAAAA,EAAO;AACR,QAAA,OAAO,EAAE;AACb,IAAA;AAEA,IAAA,OAAOC,KAAAA,CAAMC,OAAO,CAACF,KAAAA,CAAAA,GAASA,KAAAA,GAAQ;AAACA,QAAAA;AAAM,KAAA;AACjD;AAEO,SAASG,cAAiBH,KAAe,EAAA;AAC5C,IAAA,OAAOD,QAAQC,KAAAA,CAAAA,CACVI,MAAM,CAAC,CAACC,EAAAA,GAAO,OAAOA,EAAAA,KAAO,QAAA,CAAA;AACtC;AAEO,SAASC,eAAkBN,KAAe,EAAA;AAC7C,IAAA,OAAOC,MAAMC,OAAO,CAACF,SAASA,KAAK,CAAC,EAAE,GAAGA,KAAAA;AAC7C;;ACtBA;;;;;IAOO,SAASO,mBAAAA,CAAoBC,MAAmB,EAAA;AACnD,IAAA,OAAOC,IAAAA,CAAKC,MAAAA,CAAOC,YAAY,CAAA,GAAI,IAAIC,UAAAA,CAAWJ,MAAAA,CAAAA,CAAAA,CAAAA;AACtD;;ACTA;;;;;IAOO,SAASK,mBAAAA,CAAoBC,MAAc,EAAA;AAC9C,IAAA,MAAMC,MAAMC,IAAAA,CAAKF,MAAAA,CAAAA;IACjB,MAAMG,GAAAA,GAAMF,IAAIG,MAAM;IACtB,MAAMC,KAAAA,GAAQ,IAAIP,UAAAA,CAAWK,GAAAA,CAAAA;AAE7B,IAAA,IAAK,IAAIG,CAAAA,GAAI,CAAA,EAAGA,CAAAA,GAAIH,KAAKG,CAAAA,EAAAA,CAAK;AAC1BD,QAAAA,KAAK,CAACC,CAAAA,CAAE,GAAGL,GAAAA,CAAIM,UAAU,CAACD,CAAAA,CAAAA;AAC9B,IAAA;AAEA,IAAA,OAAOD,MAAMX,MAAM;AACvB;AAEA;;;;IAKO,SAASc,eAAAA,CAAgBtB,KAAa,EAAA;AACzC,IAAA,OAAOS,IAAAA,CAAKT,KAAAA,CAAAA,CACPuB,OAAO,CAAC,KAAA,EAAO,GAAA,CAAA,CACfA,OAAO,CAAC,KAAA,EAAO,GAAA,CAAA,CACfA,OAAO,CAAC,KAAA,EAAO,EAAA,CAAA;AACxB;AAEA;;;;IAKO,SAASC,eAAAA,CAAgBC,KAAa,EAAA;IACzC,MAAMC,CAAAA,GAAID,KAAAA,CAAMP,MAAM,GAAG,CAAA;IAEzB,OAAOF,IAAAA,CACHS,MAAMF,OAAO,CAAC,MAAM,GAAA,CAAA,CACfA,OAAO,CAAC,IAAA,EAAM,GAAA,CAAA,CACdI,MAAM,CAACF,KAAAA,CAAMP,MAAM,IAAIQ,MAAM,CAAA,GAAI,CAAA,GAAI,CAAA,GAAIA,CAAAA,CAAAA,EAAI,GAAA,CAAA,CAAA;AAE1D;;AC5CA;;;;;;;;;;IAaO,SAASE,YAAAA,CAAa5B,KAAa,EAAA;IACtC,OAAO;AACH,QAAA,MAAA;AACA,QAAA,MAAA;AACA,QAAA,MAAA;AACA,QAAA;AACH,KAAA,CAAC6B,QAAQ,CAAC7B,KAAAA,CAAM8B,SAAS,CAAC,CAAA,EAAG,CAAA,CAAA,CAAA;AAClC;;ACpBA;;;;;AAKC,IAEM,SAASC,cAAAA,CAAoDC,GAAM,EAAEC,IAAO,EAAA;AAC/E,IAAA,OAAOC,OAAOC,SAAS,CAACJ,cAAc,CAACK,IAAI,CAACJ,GAAAA,EAAKC,IAAAA,CAAAA;AACrD;AAEO,SAASI,aAAAA,CACZL,GAAM,EACNC,IAAO,EAAA;AAEP,IAAA,OAAOF,eAAeC,GAAAA,EAAKC,IAAAA,CAAAA;AAC/B;;AChBA;;;;;AAKC,IAEM,SAASK,aAAAA,CACZb,KAAa,EACbc,OAA0B,EAAA;IAE1B,IAAItC,KAAAA,CAAMC,OAAO,CAACqC,OAAAA,CAAAA,EAAU;QACxB,KAAK,MAAMC,WAAWD,OAAAA,CAAS;YAC3B,IAAID,aAAAA,CAAcb,OAAOe,OAAAA,CAAAA,EAAU;gBAC/B,OAAO,IAAA;AACX,YAAA;AACJ,QAAA;QAEA,OAAO,KAAA;AACX,IAAA;AACA,IAAA,IAAIf,UAAUc,OAAAA,EAAS;QACnB,OAAO,IAAA;AACX,IAAA;IAEA,MAAME,SAAAA,GAAYC,KAAKC,GAAG,CAAClB,MAAMP,MAAM,EAAEqB,QAAQrB,MAAM,CAAA;AAEvD,IAAA,IAAK,IAAIE,CAAAA,GAAI,CAAA,EAAGA,CAAAA,GAAIqB,WAAWrB,CAAAA,EAAAA,CAAK;AAChC,QAAA,IAAIK,KAAK,CAACL,CAAAA,CAAE,KAAKmB,OAAO,CAACnB,EAAE,EAAE;AACzB,YAAA;AACJ,QAAA;AAEA,QAAA,IAAImB,OAAO,CAACnB,CAAAA,CAAE,KAAK,GAAA,EAAK;AACpB,YAAA,IAAImB,OAAO,CAACnB,CAAAA,GAAI,CAAA,CAAE,KAAK,GAAA,EAAK;gBACxB,OAAO,IAAA;AACX,YAAA;AAEA,YAAA,IAAIwB,KAAc,EAAC;AACnB,YAAA,IAAK,IAAIC,CAAAA,GAAIzB,CAAAA,EAAGyB,IAAIpB,KAAAA,CAAMP,MAAM,EAAE2B,CAAAA,EAAAA,CAAK;AACnC,gBAAA,IAAIpB,KAAK,CAACoB,CAAAA,CAAE,KAAK,GAAA,EAAK;AAClBD,oBAAAA,EAAAA,GAAKC,CAAAA,GAAI,CAAA;AACT,oBAAA;AACJ,gBAAA;AACJ,YAAA;YAEA,IAAID,EAAAA,KAAO,EAAC,EAAG;gBACX,OAAO,IAAA;AACX,YAAA;AAEA,YAAA;AACJ,QAAA;AAEA,QAAA,OAAO,CAACnB,KAAK,CAACL,CAAAA,CAAE,IACZmB,OAAO,CAACnB,CAAAA,CAAE,KAAK,GAAA,IACfmB,OAAO,CAACnB,CAAAA,GAAI,EAAE,KAAK,GAAA;AAC3B,IAAA;IAEA,OAAO,KAAA;AACX;;AC7CO,SAAS0B,YAAAA,CAAaC,aAA+B,EAAE9B,GAAY,EAAA;IACtE,IAAI,OAAO8B,kBAAkB,QAAA,EAAU;QACnC,OAAOC,cAAAA,CAAeD,eAAe9B,GAAAA,IAAO,EAAA,CAAA,EAAA;AAChD,IAAA;IAEA,IAAI,OAAO8B,kBAAkB,QAAA,EAAU;AACnC,QAAA,OAAOC,eAAe,sCAAA,EAAwCD,aAAAA,CAAAA,EAAAA;AAClE,IAAA;IAEA,OAAOC,cAAAA,CAAe,wCAAwC/B,GAAAA,IAAO,EAAA,CAAA,EAAA;AACzE;;ACtBA;;;;;IASO,SAASgC,QAAAA,CAASjD,KAAc,EAAA;IACnC,OAAO,CAAC,CAACA,KAAAA,IACL,OAAOA,UAAU,QAAA,IACjB,CAACC,KAAAA,CAAMC,OAAO,CAACF,KAAAA,CAAAA;AACvB;AAEO,SAASkD,YAAAA,CACZC,MAAS,EACTC,MAAkB,EAAA;IAElB,MAAMC,IAAAA,GAAOnB,MAAAA,CAAOmB,IAAI,CAACD,MAAAA,CAAAA;IACzB,KAAK,MAAME,OAAOD,IAAAA,CAAM;AACpBF,QAAAA,MAAM,CAACG,GAAAA,CAAe,GAAGF,MAAM,CAACE,GAAAA,CAAI;AACxC,IAAA;IAEA,OAAOH,MAAAA;AACX;AAEO,SAASI,cAAcvD,KAA0B,EAAA;AACpD,IAAA,MAAMwD,SAA+B,EAAC;IAEtC,MAAMH,IAAAA,GAAOnB,MAAAA,CAAOmB,IAAI,CAACrD,KAAAA,CAAAA;IACzB,KAAK,MAAMsD,OAAOD,IAAAA,CAAM;QACpB,MAAM5B,KAAAA,GAAQzB,KAAK,CAACsD,GAAAA,CAAI;AACxB,QAAA,IAAIL,SAASxB,KAAAA,CAAAA,EAAQ;AACjB,YAAA,MAAMgC,kBAAkBF,aAAAA,CAAc9B,KAAAA,CAAAA;YACtC,MAAMiC,kBAAAA,GAAqBxB,MAAAA,CAAOmB,IAAI,CAACI,eAAAA,CAAAA;YACvC,KAAK,MAAME,qBAAqBD,kBAAAA,CAAoB;gBAChDF,MAAM,CAAC,CAAA,EAAGF,GAAAA,CAAI,CAAC,EAAEK,mBAAmB,CAAC,GAAGF,eAAe,CAACE,iBAAAA,CAAkB;AAC9E,YAAA;AAEA,YAAA;AACJ,QAAA;AAEAH,QAAAA,MAAM,CAACF,GAAAA,CAAI,GAAGtD,KAAK,CAACsD,GAAAA,CAAI;AAC5B,IAAA;IAEA,OAAOE,MAAAA;AACX;AAEO,SAASI,oBAAAA,CAA8C5D,KAAiB,EAAEsD,GAAY,EAAA;IACzF,OAAOtD,KAAK,CAACsD,GAAAA,CAAI;AACrB;AAEO,SAASO,oBAAAA,CAEd7D,KAA0B,EAAE8D,WAAwB,EAAA;AAClD,IAAA,MAAMN,SAAa,EAAC;IACpB,MAAMH,IAAAA,GAAOnB,MAAAA,CAAOmB,IAAI,CAACrD,KAAAA,CAAAA;IAEzB,KAAK,MAAMsD,OAAOD,IAAAA,CAAM;QACpB,IAAIS,WAAAA,CAAYjC,QAAQ,CAACyB,GAAAA,CAAAA,EAAM;AAC3B,YAAA;AACJ,QAAA;AAEAE,QAAAA,MAAM,CAACF,GAAAA,CAAe,GAAGtD,KAAK,CAACsD,GAAAA,CAAI;AACvC,IAAA;IAEA,OAAOE,MAAAA;AACX;;ACpEA;;;;;AAKC,IAMM,SAASO,UAAAA,CAGdC,IAAO,EAAEX,IAAS,EAAA;AAChB,IAAA,MAAMG,SAA4B,EAAC;IACnC,KAAK,MAAMF,OAAOD,IAAAA,CAAM;AACpBG,QAAAA,MAAM,CAACF,GAAAA,CAAI,GAAGU,IAAI,CAACV,GAAAA,CAAI;AAC3B,IAAA;IAEA,OAAOE,MAAAA;AACX;AAMO,SAASS,UAAAA,CAGdD,IAAO,EAAEX,IAAS,EAAA;IAChB,MAAMa,QAAAA,GAAWhC,MAAAA,CAAOmB,IAAI,CAACW,IAAAA,CAAAA;IAE7B,IAAIG,KAAAA;AACJ,IAAA,MAAMX,SAAS,EAAC;IAChB,KAAK,MAAMY,WAAWF,QAAAA,CAAU;QAC5BC,KAAAA,GAAQd,IAAAA,CAAKgB,OAAO,CAACD,OAAAA,CAAAA;QACrB,IAAID,KAAAA,KAAU,EAAC,EAAG;AACd,YAAA;AACJ,QAAA;AAEAX,QAAAA,MAAM,CAACY,OAAAA,CAA6C,GAAGJ,IAAI,CAACI,OAAAA,CAAQ;AACxE,IAAA;IAEA,OAAOZ,MAAAA;AACX;;AC7CA;;;;;IAOO,SAASc,QAAAA,CACZ7C,KAAc,EAAA;IAEd,OACI,OAAOA,KAAAA,KAAU,QAAA,IACjB,OAAOA,KAAAA,KAAU,QAAA,IACjB,OAAOA,KAAAA,KAAU,SAAA,IACjBA,KAAAA,KAAU,IAAA,IACVA,KAAAA,KAAU8C,SAAAA;AAElB;;ACRO,SAASC,UAAUxE,KAAc,EAAA;IACpC,IAAI,OAAOA,UAAU,SAAA,EAAW;AAC5B,QAAA,OAAOA,QAAQ,MAAA,GAAS,OAAA;AAC5B,IAAA;IAEA,IAAI,OAAOA,UAAU,WAAA,EAAa;QAC9B,OAAO,WAAA;AACX,IAAA;AAEA,IAAA,IAAIA,UAAU,IAAA,EAAM;QAChB,OAAO,MAAA;AACX,IAAA;IAEA,IAAI,OAAOA,UAAU,QAAA,EAAU;AAC3B,QAAA,OAAO,GAAGA,KAAAA,CAAAA,CAAO;AACrB,IAAA;IAEA,IAAI,OAAOA,UAAU,QAAA,EAAU;QAC3B,OAAOA,KAAAA;AACX,IAAA;AAEA,IAAA,OAAOyE,IAAAA,CAAKC,SAAS,CAAC1E,KAAAA,EAAO,CAACsD,GAAAA,EAAK7B,KAAAA,GAAAA;AAC/B,QAAA,IAAIA,iBAAiBkD,MAAAA,EAAQ;AACzB,YAAA,OAAOlD,MAAMmD,QAAQ,EAAA;AACzB,QAAA;QAEA,IAAI,OAAOnD,UAAU,QAAA,EAAU;AAC3B,YAAA,OAAOA,MAAMmD,QAAQ,EAAA;AACzB,QAAA;QAEA,OAAOnD,KAAAA;AACX,IAAA,CAAA,CAAA;AACJ;AAEO,SAASoD,YAAqB7E,KAAU,EAAA;AAC3C,IAAA,OAAO8E,KAAAA,CAAM9E,KAAAA,CAAAA;AACjB;;AC7CA;;;;;IAOO,SAAS+E,QAAAA,CACZC,GAAW,EACXhB,IAAyB,EACzBiB,QAAQ,gBAAgB,EAAA;IAExB,OAAOhF,KAAAA,CAAMiF,IAAI,CAACF,GAAAA,CAAIG,QAAQ,CAACF,KAAAA,CAAAA,CAAAA,CAC1BG,MAAM,CAAC,CACJC,GAAAA,EACAC,KAAAA,GAAAA;QAEA,MAAMhC,GAAAA,GAAMgC,KAAK,CAAC,CAAA,CAAE;AACpB,QAAA,IACIhC,GAAAA,IACApB,MAAAA,CAAOC,SAAS,CAACJ,cAAc,CAACK,IAAI,CAAC4B,IAAAA,EAAMV,QAC3C,OAAOU,IAAI,CAACV,GAAAA,CAAI,KAAK,WAAA,EACvB;YACE,OAAO+B,GAAAA,CAAI9D,OAAO,CAAC+D,KAAK,CAAC,CAAA,CAAE,EAAEtB,IAAI,CAACV,GAAAA,CAAI,CAAA;AAC1C,QAAA;QAEA,OAAO+B,GAAAA;IACX,CAAA,EAAGL,GAAAA,CAAAA;AACX;;AC5BA;;;;;AAKC,IAED,MAAMO,MAAAA,GAAS,6EAAA;AAER,SAASC,OAAOxF,KAAa,EAAA;IAChC,OAAOuF,MAAAA,CAAOE,IAAI,CAACzF,KAAAA,CAAAA;AACvB;;ACXA;;;;;IAOO,SAAS0F,uBAAAA,CAAwBC,GAAW,EAAA;IAC/C,OAAOA,GAAAA,CAAIpE,OAAO,CAAC,SAAA,EAAW,WAAA,CAAA;AAClC;;ACTA;;;;;;;;;IAYO,eAAeqE,IAAAA,CAAKC,EAAU,EAAA;IACjC,OAAO,IAAIC,QAAc,CAACC,OAAAA,GAAAA;AACtBC,QAAAA,UAAAA,CAAWD,OAAAA,EAASF,EAAAA,CAAAA;AACxB,IAAA,CAAA,CAAA;AACJ;;;;"}