@wener/utils 1.1.42 → 1.1.44
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/lib/arrays/MaybeArray.js.map +1 -1
- package/lib/arrays/arrayFromAsync.js.map +1 -1
- package/lib/asyncs/AsyncInterval.js.map +1 -1
- package/lib/asyncs/MaybePromise.js.map +1 -1
- package/lib/asyncs/createAsyncIterator.js.map +1 -1
- package/lib/asyncs/createLazyPromise.js.map +1 -1
- package/lib/asyncs/firstOfAsyncIterator.js.map +1 -1
- package/lib/asyncs/generatorOfStream.js.map +1 -1
- package/lib/asyncs/isIterator.js.map +1 -1
- package/lib/asyncs/isPromise.js.map +1 -1
- package/lib/asyncs/isThenable.js.map +1 -1
- package/lib/asyncs/nextOfAsyncIterator.js.map +1 -1
- package/lib/asyncs/promiseOfCallback.js.map +1 -1
- package/lib/asyncs/sleep.js.map +1 -1
- package/lib/asyncs/timeout.js.map +1 -1
- package/lib/browsers/copy.js.map +1 -1
- package/lib/browsers/download.js.map +1 -1
- package/lib/browsers/getFileFromDataTransfer.js.map +1 -1
- package/lib/browsers/loaders.js.map +1 -1
- package/lib/cn/division/DivisionCode.js.map +1 -1
- package/lib/cn/division/binarySearch.js.map +1 -1
- package/lib/cn/id/Mod11Checksum.js.map +1 -1
- package/lib/cn/id/ResidentIdNumber.js.map +1 -1
- package/lib/cn/id/types.js.map +1 -1
- package/lib/cn/index.js.map +1 -1
- package/lib/cn/parseChineseNumber.js.map +1 -1
- package/lib/cn/pinyin/cartesianProduct.js.map +1 -1
- package/lib/cn/pinyin/loader.js.map +1 -1
- package/lib/cn/pinyin/preload.js.map +1 -1
- package/lib/cn/pinyin/toPinyinPure.js.map +1 -1
- package/lib/cn/pinyin/transform.js.map +1 -1
- package/lib/cn/uscc/Mod31Checksum.js.map +1 -1
- package/lib/cn/uscc/USCC.js.map +1 -1
- package/lib/cn/uscc/isUSCC.js.map +1 -1
- package/lib/crypto/base.js.map +1 -1
- package/lib/crypto/getNodeCrypto.js.map +1 -1
- package/lib/crypto/getRandomValues.js.map +1 -1
- package/lib/crypto/hashing.js.map +1 -1
- package/lib/crypto/md5.bench.js.map +1 -1
- package/lib/crypto/md5.d.js.map +1 -1
- package/lib/crypto/md5.js.map +1 -1
- package/lib/crypto/pem/pem.js.map +1 -1
- package/lib/crypto/randomUUID.js.map +1 -1
- package/lib/crypto/randomUUIDv7.js.map +1 -1
- package/lib/crypto/ulid.js.map +1 -1
- package/lib/errors/Errors.js.map +1 -1
- package/lib/fetch/HttpStatus.js.map +1 -1
- package/lib/fetch/createFetchWith.js.map +1 -1
- package/lib/fetch/createFetchWithLogging.js.map +1 -1
- package/lib/fetch/createFetchWithRetry.js.map +1 -1
- package/lib/fetch/dumpRequest.js.map +1 -1
- package/lib/fetch/dumpResponse.js.map +1 -1
- package/lib/fetch/index.js.map +1 -1
- package/lib/fetch/types.js.map +1 -1
- package/lib/i18n/createTranslate.js.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/io/AbstractEncoding.js.map +1 -1
- package/lib/io/ArrayBuffer.test-d.js.map +1 -1
- package/lib/io/ArrayBuffers.js +20 -1
- package/lib/io/ArrayBuffers.js.map +1 -1
- package/lib/io/Buffer.js.map +1 -1
- package/lib/io/ByteArray.js +327 -0
- package/lib/io/ByteArray.js.map +1 -0
- package/lib/io/base64.js.map +1 -1
- package/lib/io/isBuffer.js.map +1 -1
- package/lib/io/isTransferable.js.map +1 -1
- package/lib/io/parseDataUri.js.map +1 -1
- package/lib/langs/MaybeFunction.js.map +1 -1
- package/lib/langs/classOf.js.map +1 -1
- package/lib/langs/deepEqual.js.map +1 -1
- package/lib/langs/deepFreeze.js.map +1 -1
- package/lib/langs/isClass.js.map +1 -1
- package/lib/langs/isDefined.js.map +1 -1
- package/lib/langs/isEmptyObject.js.map +1 -1
- package/lib/langs/isFunction.js.map +1 -1
- package/lib/langs/isPlainObject.js.map +1 -1
- package/lib/langs/memoize.js.map +1 -1
- package/lib/langs/mixin.js.map +1 -1
- package/lib/langs/parseBoolean.js.map +1 -1
- package/lib/langs/shallowClone.js.map +1 -1
- package/lib/langs/shallowEqual.js.map +1 -1
- package/lib/libs/ms.js.map +1 -1
- package/lib/logging/Logger.js.map +1 -1
- package/lib/logging/createChildLogger.js.map +1 -1
- package/lib/logging/createLogger.js.map +1 -1
- package/lib/logging/createNoopLogger.js.map +1 -1
- package/lib/logging/slog.js.map +1 -1
- package/lib/maths/clamp.js.map +1 -1
- package/lib/maths/random.js.map +1 -1
- package/lib/modules/isModule.js.map +1 -1
- package/lib/modules/parseModuleId.js.map +1 -1
- package/lib/objects/computeIfAbsent.js.map +1 -1
- package/lib/objects/get.js.map +1 -1
- package/lib/objects/get.test-d.js.map +1 -1
- package/lib/objects/merge/index.js.map +1 -1
- package/lib/objects/merge/isMergeableObject.js.map +1 -1
- package/lib/objects/merge/merge.js.map +1 -1
- package/lib/objects/parseObjectPath.js.map +1 -1
- package/lib/objects/set.js.map +1 -1
- package/lib/runtime/AsyncCloser.js.map +1 -1
- package/lib/runtime/Closer.js.map +1 -1
- package/lib/runtime/getGlobalThis.js.map +1 -1
- package/lib/runtime/structuredClone.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/common/encoder.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/common/formatter.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/common/index.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/common/jsdoc.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/compiler.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/errors.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/evaluator.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/expression.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/index.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/index.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/index.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-arktype.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-expression.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-grpc.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-io-ts.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-javascript.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-json-schema.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-typebox.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-typescript.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-valibot.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-value.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-yrel.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-yup.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-zod.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/typescript/index.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-model.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-typebox.js.map +1 -1
- package/lib/schema/typebox/gen/index.js.map +1 -1
- package/lib/schema/typebox/index.js.map +1 -1
- package/lib/schema/typebox/typebox.js.map +1 -1
- package/lib/scripts/getGenerateContext.js.map +1 -1
- package/lib/server/crypto/md5.js.map +1 -1
- package/lib/server/fetch/createFetchWithProxy.js.map +1 -1
- package/lib/server/fetch/createFetchWithProxyByNodeFetch.js.map +1 -1
- package/lib/server/fetch/createFetchWithProxyByUndici.js.map +1 -1
- package/lib/server/getPackageDir.js.map +1 -1
- package/lib/server/index.js.map +1 -1
- package/lib/server/jsdom.js.map +1 -1
- package/lib/server/node-fetch.js.map +1 -1
- package/lib/server/polyfill/polyfillBrowser.js.map +1 -1
- package/lib/server/polyfill/polyfillCrypto.js.map +1 -1
- package/lib/server/polyfill/polyfillFetch.js.map +1 -1
- package/lib/server/polyfill/polyfillJsDom.js.map +1 -1
- package/lib/server/polyfill/polyfillWebSocket.js.map +1 -1
- package/lib/server/ws.js.map +1 -1
- package/lib/strings/camelCase.js.map +1 -1
- package/lib/strings/formatBytes.js.map +1 -1
- package/lib/strings/renderTemplate.js.map +1 -1
- package/lib/typedoc.js.map +1 -1
- package/lib/types.d.js.map +1 -1
- package/lib/validations/asserts.js.map +1 -1
- package/lib/validations/isUUID.js.map +1 -1
- package/lib/validations/parseTimestamp.js.map +1 -1
- package/package.json +5 -5
- package/src/index.ts +1 -0
- package/src/io/ArrayBuffers.ts +32 -3
- package/src/io/ByteArray.ts +403 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/arrays/MaybeArray.ts"],"sourcesContent":["/**\n * Array or element of an array\n */\nexport type MaybeArray<T> = T | T[];\n\n/**\n * convert to single value object\n */\nexport function objectOfMaybeArray<T = any>(\n o: Record<string, MaybeArray<T>>,\n keys: string[] | null = null,\n picker = firstOfMaybeArray,\n): Record<string, T> {\n if (keys === null) {\n return Object.fromEntries(Object.entries(o).map(([k, v]) => [k, picker(v)]));\n }\n return Object.fromEntries(keys.map((v) => [v, picker(v)])) as any;\n}\n\nexport function firstOfMaybeArray<T>(v: MaybeArray<T>): T {\n if (Array.isArray(v)) {\n return v[0];\n }\n return v;\n}\n\nexport function lastOfMaybeArray<T>(v: MaybeArray<T>): T {\n if (Array.isArray(v)) {\n return v[v.length - 1];\n }\n return v;\n}\n\nexport function arrayOfMaybeArray<T>(v: MaybeArray<T> | null | undefined): T[] {\n if (Array.isArray(v)) {\n return v;\n }\n if (v === null || v === undefined) {\n return [];\n }\n return [v];\n}\n"],"names":["objectOfMaybeArray","o","keys","picker","firstOfMaybeArray","Object","fromEntries","entries","map","k","v","Array","isArray","lastOfMaybeArray","length","arrayOfMaybeArray","undefined"],"mappings":"AAAA;;CAEC,GAGD;;CAEC,GACD,OAAO,SAASA,mBACdC,CAAgC,EAChCC,OAAwB,IAAI,EAC5BC,SAASC,iBAAiB;IAE1B,IAAIF,SAAS,MAAM;QACjB,OAAOG,OAAOC,WAAW,CAACD,OAAOE,OAAO,CAACN,GAAGO,GAAG,CAAC,CAAC,CAACC,GAAGC,EAAE,GAAK;gBAACD;gBAAGN,OAAOO;aAAG;IAC5E;IACA,OAAOL,OAAOC,WAAW,CAACJ,KAAKM,GAAG,CAAC,CAACE,IAAM;YAACA;YAAGP,OAAOO;SAAG;AAC1D;AAEA,OAAO,SAASN,kBAAqBM,CAAgB;IACnD,IAAIC,MAAMC,OAAO,CAACF,IAAI;QACpB,OAAOA,CAAC,CAAC,EAAE;IACb;IACA,OAAOA;AACT;AAEA,OAAO,SAASG,iBAAoBH,CAAgB;IAClD,IAAIC,MAAMC,OAAO,CAACF,IAAI;QACpB,OAAOA,CAAC,CAACA,EAAEI,MAAM,GAAG,EAAE;IACxB;IACA,OAAOJ;AACT;AAEA,OAAO,SAASK,kBAAqBL,CAAmC;IACtE,IAAIC,MAAMC,OAAO,CAACF,IAAI;QACpB,OAAOA;IACT;IACA,IAAIA,MAAM,QAAQA,MAAMM,WAAW;QACjC,OAAO,EAAE;IACX;IACA,OAAO;QAACN;KAAE;AACZ"}
|
|
1
|
+
{"version":3,"sources":["../../src/arrays/MaybeArray.ts"],"sourcesContent":["/**\n * Array or element of an array\n */\nexport type MaybeArray<T> = T | T[];\n\n/**\n * convert to single value object\n */\nexport function objectOfMaybeArray<T = any>(\n o: Record<string, MaybeArray<T>>,\n keys: string[] | null = null,\n picker = firstOfMaybeArray,\n): Record<string, T> {\n if (keys === null) {\n return Object.fromEntries(Object.entries(o).map(([k, v]) => [k, picker(v)]));\n }\n return Object.fromEntries(keys.map((v) => [v, picker(v)])) as any;\n}\n\nexport function firstOfMaybeArray<T>(v: MaybeArray<T>): T {\n if (Array.isArray(v)) {\n return v[0];\n }\n return v;\n}\n\nexport function lastOfMaybeArray<T>(v: MaybeArray<T>): T {\n if (Array.isArray(v)) {\n return v[v.length - 1];\n }\n return v;\n}\n\nexport function arrayOfMaybeArray<T>(v: MaybeArray<T> | null | undefined): T[] {\n if (Array.isArray(v)) {\n return v;\n }\n if (v === null || v === undefined) {\n return [];\n }\n return [v];\n}\n"],"names":["objectOfMaybeArray","o","keys","picker","firstOfMaybeArray","Object","fromEntries","entries","map","k","v","Array","isArray","lastOfMaybeArray","length","arrayOfMaybeArray","undefined"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;CAEC,GAGD;;CAEC,GACD,OAAO,SAASA,mBACdC,CAAgC,EAChCC,OAAwB,IAAI,EAC5BC,SAASC,iBAAiB;IAE1B,IAAIF,SAAS,MAAM;QACjB,OAAOG,OAAOC,WAAW,CAACD,OAAOE,OAAO,CAACN,GAAGO,GAAG,CAAC,CAAC,CAACC,GAAGC,EAAE,GAAK;gBAACD;gBAAGN,OAAOO;aAAG;IAC5E;IACA,OAAOL,OAAOC,WAAW,CAACJ,KAAKM,GAAG,CAAC,CAACE,IAAM;YAACA;YAAGP,OAAOO;SAAG;AAC1D;AAEA,OAAO,SAASN,kBAAqBM,CAAgB;IACnD,IAAIC,MAAMC,OAAO,CAACF,IAAI;QACpB,OAAOA,CAAC,CAAC,EAAE;IACb;IACA,OAAOA;AACT;AAEA,OAAO,SAASG,iBAAoBH,CAAgB;IAClD,IAAIC,MAAMC,OAAO,CAACF,IAAI;QACpB,OAAOA,CAAC,CAACA,EAAEI,MAAM,GAAG,EAAE;IACxB;IACA,OAAOJ;AACT;AAEA,OAAO,SAASK,kBAAqBL,CAAmC;IACtE,IAAIC,MAAMC,OAAO,CAACF,IAAI;QACpB,OAAOA;IACT;IACA,IAAIA,MAAM,QAAQA,MAAMM,WAAW;QACjC,OAAO,EAAE;IACX;IACA,OAAO;QAACN;KAAE;AACZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/arrays/arrayFromAsync.ts"],"sourcesContent":["export async function arrayFromAsync<T>(asyncIterable: AsyncIterable<T>): Promise<T[]> {\n const array = [];\n for await (const i of asyncIterable) array.push(i);\n return array;\n}\n"],"names":["arrayFromAsync","asyncIterable","array","i","push"],"mappings":"AAAA,OAAO,eAAeA,eAAkBC,aAA+B;IACrE,MAAMC,QAAQ,EAAE;IAChB,WAAW,MAAMC,KAAKF,cAAeC,MAAME,IAAI,CAACD;IAChD,OAAOD;AACT"}
|
|
1
|
+
{"version":3,"sources":["../../src/arrays/arrayFromAsync.ts"],"sourcesContent":["export async function arrayFromAsync<T>(asyncIterable: AsyncIterable<T>): Promise<T[]> {\n const array = [];\n for await (const i of asyncIterable) array.push(i);\n return array;\n}\n"],"names":["arrayFromAsync","asyncIterable","array","i","push"],"rangeMappings":";;;;","mappings":"AAAA,OAAO,eAAeA,eAAkBC,aAA+B;IACrE,MAAMC,QAAQ,EAAE;IAChB,WAAW,MAAMC,KAAKF,cAAeC,MAAME,IAAI,CAACD;IAChD,OAAOD;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/asyncs/AsyncInterval.ts"],"sourcesContent":["export type AsyncIntervalIdentifier = any;\n\nexport function setAsyncInterval(cb: () => void, interval: number, initial = interval): AsyncIntervalIdentifier {\n let id: any;\n const handler = async () => {\n await cb();\n id = setTimeout(handler, interval);\n };\n id = setTimeout(handler, initial);\n return () => id;\n}\n\nexport function clearAsyncInterval(v: AsyncIntervalIdentifier) {\n clearTimeout(v?.());\n}\n"],"names":["setAsyncInterval","cb","interval","initial","id","handler","setTimeout","clearAsyncInterval","v","clearTimeout"],"mappings":"AAEA,OAAO,SAASA,iBAAiBC,EAAc,EAAEC,QAAgB,EAAEC,UAAUD,QAAQ;IACnF,IAAIE;IACJ,MAAMC,UAAU;QACd,MAAMJ;QACNG,KAAKE,WAAWD,SAASH;IAC3B;IACAE,KAAKE,WAAWD,SAASF;IACzB,OAAO,IAAMC;AACf;AAEA,OAAO,SAASG,mBAAmBC,CAA0B;IAC3DC,aAAaD;AACf"}
|
|
1
|
+
{"version":3,"sources":["../../src/asyncs/AsyncInterval.ts"],"sourcesContent":["export type AsyncIntervalIdentifier = any;\n\nexport function setAsyncInterval(cb: () => void, interval: number, initial = interval): AsyncIntervalIdentifier {\n let id: any;\n const handler = async () => {\n await cb();\n id = setTimeout(handler, interval);\n };\n id = setTimeout(handler, initial);\n return () => id;\n}\n\nexport function clearAsyncInterval(v: AsyncIntervalIdentifier) {\n clearTimeout(v?.());\n}\n"],"names":["setAsyncInterval","cb","interval","initial","id","handler","setTimeout","clearAsyncInterval","v","clearTimeout"],"rangeMappings":";;;;;;;;;;;","mappings":"AAEA,OAAO,SAASA,iBAAiBC,EAAc,EAAEC,QAAgB,EAAEC,UAAUD,QAAQ;IACnF,IAAIE;IACJ,MAAMC,UAAU;QACd,MAAMJ;QACNG,KAAKE,WAAWD,SAASH;IAC3B;IACAE,KAAKE,WAAWD,SAASF;IACzB,OAAO,IAAMC;AACf;AAEA,OAAO,SAASG,mBAAmBC,CAA0B;IAC3DC,aAAaD;AACf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/asyncs/MaybePromise.ts"],"sourcesContent":["export type MaybePromise<T> = Promise<T> | T;\n"],"names":[],"mappings":"AAAA,WAA6C"}
|
|
1
|
+
{"version":3,"sources":["../../src/asyncs/MaybePromise.ts"],"sourcesContent":["export type MaybePromise<T> = Promise<T> | T;\n"],"names":[],"rangeMappings":"","mappings":"AAAA,WAA6C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/asyncs/createAsyncIterator.ts"],"sourcesContent":["import { createLazyPromise, type LazyPromise } from './createLazyPromise';\nimport { type MaybePromise } from './MaybePromise';\n\ntype Val<T> = [val: MaybePromise<T> | undefined, done: boolean, err?: any];\n\nexport function createAsyncIterator<T>(\n fn: (next: (val: [MaybePromise<T> | undefined, boolean] | undefined, err?: any) => void) => void,\n): AsyncGenerator<T, void, unknown> {\n const values: Array<Promise<Val<T>>> = [];\n let recv: (val: [MaybePromise<T> | undefined, boolean] | undefined, err?: any) => void;\n {\n let next: LazyPromise<Val<T>>;\n values.push((next = createLazyPromise()));\n recv = (val, err) => {\n if (err !== undefined) {\n next.resolve([undefined, true, err]);\n } else if (val !== undefined) {\n next.resolve(val);\n } else {\n return;\n }\n values.push((next = createLazyPromise()));\n };\n }\n\n fn(recv);\n\n return (async function* () {\n let value: Val<T>[0];\n let err: any;\n for (let i = 0, done = false; !done; i++) {\n let result = await values[i];\n delete values[i];\n [value, done, err] = result;\n if (err) {\n throw err;\n }\n if (value !== undefined) {\n yield value;\n }\n }\n })();\n}\n"],"names":["createLazyPromise","createAsyncIterator","fn","values","recv","next","push","val","err","undefined","resolve","value","i","done","result"],"mappings":"AAAA,SAASA,iBAAiB,QAA0B,sBAAsB;AAK1E,OAAO,SAASC,oBACdC,EAAgG;IAEhG,MAAMC,SAAiC,EAAE;IACzC,IAAIC;IACJ;QACE,IAAIC;QACJF,OAAOG,IAAI,CAAED,OAAOL;QACpBI,OAAO,CAACG,KAAKC;YACX,IAAIA,QAAQC,WAAW;gBACrBJ,KAAKK,OAAO,CAAC;oBAACD;oBAAW;oBAAMD;iBAAI;YACrC,OAAO,IAAID,QAAQE,WAAW;gBAC5BJ,KAAKK,OAAO,CAACH;YACf,OAAO;gBACL;YACF;YACAJ,OAAOG,IAAI,CAAED,OAAOL;QACtB;IACF;IAEAE,GAAGE;IAEH,OAAO,AAAC;QACN,IAAIO;QACJ,IAAIH;QACJ,IAAK,IAAII,IAAI,GAAGC,OAAO,OAAO,CAACA,MAAMD,IAAK;YACxC,IAAIE,SAAS,MAAMX,MAAM,CAACS,EAAE;YAC5B,OAAOT,MAAM,CAACS,EAAE;YAChB,CAACD,OAAOE,MAAML,IAAI,GAAGM;YACrB,IAAIN,KAAK;gBACP,MAAMA;YACR;YACA,IAAIG,UAAUF,WAAW;gBACvB,MAAME;YACR;QACF;IACF;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../src/asyncs/createAsyncIterator.ts"],"sourcesContent":["import { createLazyPromise, type LazyPromise } from './createLazyPromise';\nimport { type MaybePromise } from './MaybePromise';\n\ntype Val<T> = [val: MaybePromise<T> | undefined, done: boolean, err?: any];\n\nexport function createAsyncIterator<T>(\n fn: (next: (val: [MaybePromise<T> | undefined, boolean] | undefined, err?: any) => void) => void,\n): AsyncGenerator<T, void, unknown> {\n const values: Array<Promise<Val<T>>> = [];\n let recv: (val: [MaybePromise<T> | undefined, boolean] | undefined, err?: any) => void;\n {\n let next: LazyPromise<Val<T>>;\n values.push((next = createLazyPromise()));\n recv = (val, err) => {\n if (err !== undefined) {\n next.resolve([undefined, true, err]);\n } else if (val !== undefined) {\n next.resolve(val);\n } else {\n return;\n }\n values.push((next = createLazyPromise()));\n };\n }\n\n fn(recv);\n\n return (async function* () {\n let value: Val<T>[0];\n let err: any;\n for (let i = 0, done = false; !done; i++) {\n let result = await values[i];\n delete values[i];\n [value, done, err] = result;\n if (err) {\n throw err;\n }\n if (value !== undefined) {\n yield value;\n }\n }\n })();\n}\n"],"names":["createLazyPromise","createAsyncIterator","fn","values","recv","next","push","val","err","undefined","resolve","value","i","done","result"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,iBAAiB,QAA0B,sBAAsB;AAK1E,OAAO,SAASC,oBACdC,EAAgG;IAEhG,MAAMC,SAAiC,EAAE;IACzC,IAAIC;IACJ;QACE,IAAIC;QACJF,OAAOG,IAAI,CAAED,OAAOL;QACpBI,OAAO,CAACG,KAAKC;YACX,IAAIA,QAAQC,WAAW;gBACrBJ,KAAKK,OAAO,CAAC;oBAACD;oBAAW;oBAAMD;iBAAI;YACrC,OAAO,IAAID,QAAQE,WAAW;gBAC5BJ,KAAKK,OAAO,CAACH;YACf,OAAO;gBACL;YACF;YACAJ,OAAOG,IAAI,CAAED,OAAOL;QACtB;IACF;IAEAE,GAAGE;IAEH,OAAO,AAAC;QACN,IAAIO;QACJ,IAAIH;QACJ,IAAK,IAAII,IAAI,GAAGC,OAAO,OAAO,CAACA,MAAMD,IAAK;YACxC,IAAIE,SAAS,MAAMX,MAAM,CAACS,EAAE;YAC5B,OAAOT,MAAM,CAACS,EAAE;YAChB,CAACD,OAAOE,MAAML,IAAI,GAAGM;YACrB,IAAIN,KAAK;gBACP,MAAMA;YACR;YACA,IAAIG,UAAUF,WAAW;gBACvB,MAAME;YACR;QACF;IACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/asyncs/createLazyPromise.ts"],"sourcesContent":["import { isPromise } from './isPromise';\nimport type { MaybePromise } from './MaybePromise';\n\nexport type LazyPromise<T> = Promise<T> & {\n reject(reason?: any): void;\n resolve(v?: MaybePromise<T>): void;\n};\n\n/**\n * createLazyPromise return a promise that can be resolved or rejected manually.\n * if you pass a function to it, it will be executed when the promise try to resolve.\n */\nexport function createLazyPromise<T = any>(\n executor?:\n | ((resolve: LazyPromise<T>['resolve'], reject: LazyPromise<T>['reject']) => void)\n | ((resolve: LazyPromise<T>['resolve'], reject: LazyPromise<T>['reject']) => MaybePromise<T>),\n): LazyPromise<T> {\n if (!executor && 'withResolvers' in Promise) {\n const { promise, resolve, reject } = (Promise as any).withResolvers();\n return Object.assign(promise, {\n resolve,\n reject,\n }) as LazyPromise<T>;\n }\n\n const holder = {\n resolve(_: any): void {\n throw new Error('pending resolve');\n },\n reject(_: any): void {\n throw new Error('pending reject');\n },\n };\n const future = Object.assign(\n new Promise<T>((resolve, reject) => {\n holder.reject = reject;\n holder.resolve = resolve;\n }),\n {\n resolve(v: any) {\n holder.resolve(v);\n },\n reject(v: any) {\n holder.resolve(v);\n },\n },\n );\n if (executor) {\n const r = holder.resolve;\n let shouldExec = true;\n holder.resolve = (v: any) => {\n shouldExec = false;\n r(v);\n };\n const then = future.then.bind(future);\n future.then = (...args) => {\n if (shouldExec) {\n shouldExec = false;\n try {\n // kind of bad\n const result = executor(holder.resolve, holder.reject);\n // ensure resolve/reject is called\n if (isPromise(result)) {\n result.then(holder.resolve, holder.reject);\n } else if (result !== undefined) {\n holder.resolve(result);\n }\n } catch (e) {\n holder.reject(e);\n }\n }\n return then(...args);\n };\n const like = holder as LazyPromise<T>;\n like.then = future.then;\n like.catch = future.catch.bind(future);\n if (future.finally) like.finally = future.finally;\n\n void Object.defineProperty(like, Symbol.species, {\n get() {\n return Promise;\n },\n });\n return like;\n }\n return future;\n}\n"],"names":["isPromise","createLazyPromise","executor","Promise","promise","resolve","reject","withResolvers","Object","assign","holder","_","Error","future","v","r","shouldExec","then","bind","args","result","undefined","e","like","catch","finally","defineProperty","Symbol","species","get"],"mappings":"AAAA,SAASA,SAAS,QAAQ,cAAc;AAQxC;;;CAGC,GACD,OAAO,SAASC,kBACdC,QAE+F;IAE/F,IAAI,CAACA,YAAY,mBAAmBC,SAAS;QAC3C,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAEC,MAAM,EAAE,GAAG,AAACH,QAAgBI,aAAa;QACnE,OAAOC,OAAOC,MAAM,CAACL,SAAS;YAC5BC;YACAC;QACF;IACF;IAEA,MAAMI,SAAS;QACbL,SAAQM,CAAM;YACZ,MAAM,IAAIC,MAAM;QAClB;QACAN,QAAOK,CAAM;YACX,MAAM,IAAIC,MAAM;QAClB;IACF;IACA,MAAMC,SAASL,OAAOC,MAAM,CAC1B,IAAIN,QAAW,CAACE,SAASC;QACvBI,OAAOJ,MAAM,GAAGA;QAChBI,OAAOL,OAAO,GAAGA;IACnB,IACA;QACEA,SAAQS,CAAM;YACZJ,OAAOL,OAAO,CAACS;QACjB;QACAR,QAAOQ,CAAM;YACXJ,OAAOL,OAAO,CAACS;QACjB;IACF;IAEF,IAAIZ,UAAU;QACZ,MAAMa,IAAIL,OAAOL,OAAO;QACxB,IAAIW,aAAa;QACjBN,OAAOL,OAAO,GAAG,CAACS;YAChBE,aAAa;YACbD,EAAED;QACJ;QACA,MAAMG,OAAOJ,OAAOI,IAAI,CAACC,IAAI,CAACL;QAC9BA,OAAOI,IAAI,GAAG,CAAC,GAAGE;YAChB,IAAIH,YAAY;gBACdA,aAAa;gBACb,IAAI;oBACF,cAAc;oBACd,MAAMI,SAASlB,SAASQ,OAAOL,OAAO,EAAEK,OAAOJ,MAAM;oBACrD,kCAAkC;oBAClC,IAAIN,UAAUoB,SAAS;wBACrBA,OAAOH,IAAI,CAACP,OAAOL,OAAO,EAAEK,OAAOJ,MAAM;oBAC3C,OAAO,IAAIc,WAAWC,WAAW;wBAC/BX,OAAOL,OAAO,CAACe;oBACjB;gBACF,EAAE,OAAOE,GAAG;oBACVZ,OAAOJ,MAAM,CAACgB;gBAChB;YACF;YACA,OAAOL,QAAQE;QACjB;QACA,MAAMI,OAAOb;QACba,KAAKN,IAAI,GAAGJ,OAAOI,IAAI;QACvBM,KAAKC,KAAK,GAAGX,OAAOW,KAAK,CAACN,IAAI,CAACL;QAC/B,IAAIA,OAAOY,OAAO,EAAEF,KAAKE,OAAO,GAAGZ,OAAOY,OAAO;QAEjD,KAAKjB,OAAOkB,cAAc,CAACH,MAAMI,OAAOC,OAAO,EAAE;YAC/CC;gBACE,OAAO1B;YACT;QACF;QACA,OAAOoB;IACT;IACA,OAAOV;AACT"}
|
|
1
|
+
{"version":3,"sources":["../../src/asyncs/createLazyPromise.ts"],"sourcesContent":["import { isPromise } from './isPromise';\nimport type { MaybePromise } from './MaybePromise';\n\nexport type LazyPromise<T> = Promise<T> & {\n reject(reason?: any): void;\n resolve(v?: MaybePromise<T>): void;\n};\n\n/**\n * createLazyPromise return a promise that can be resolved or rejected manually.\n * if you pass a function to it, it will be executed when the promise try to resolve.\n */\nexport function createLazyPromise<T = any>(\n executor?:\n | ((resolve: LazyPromise<T>['resolve'], reject: LazyPromise<T>['reject']) => void)\n | ((resolve: LazyPromise<T>['resolve'], reject: LazyPromise<T>['reject']) => MaybePromise<T>),\n): LazyPromise<T> {\n if (!executor && 'withResolvers' in Promise) {\n const { promise, resolve, reject } = (Promise as any).withResolvers();\n return Object.assign(promise, {\n resolve,\n reject,\n }) as LazyPromise<T>;\n }\n\n const holder = {\n resolve(_: any): void {\n throw new Error('pending resolve');\n },\n reject(_: any): void {\n throw new Error('pending reject');\n },\n };\n const future = Object.assign(\n new Promise<T>((resolve, reject) => {\n holder.reject = reject;\n holder.resolve = resolve;\n }),\n {\n resolve(v: any) {\n holder.resolve(v);\n },\n reject(v: any) {\n holder.resolve(v);\n },\n },\n );\n if (executor) {\n const r = holder.resolve;\n let shouldExec = true;\n holder.resolve = (v: any) => {\n shouldExec = false;\n r(v);\n };\n const then = future.then.bind(future);\n future.then = (...args) => {\n if (shouldExec) {\n shouldExec = false;\n try {\n // kind of bad\n const result = executor(holder.resolve, holder.reject);\n // ensure resolve/reject is called\n if (isPromise(result)) {\n result.then(holder.resolve, holder.reject);\n } else if (result !== undefined) {\n holder.resolve(result);\n }\n } catch (e) {\n holder.reject(e);\n }\n }\n return then(...args);\n };\n const like = holder as LazyPromise<T>;\n like.then = future.then;\n like.catch = future.catch.bind(future);\n if (future.finally) like.finally = future.finally;\n\n void Object.defineProperty(like, Symbol.species, {\n get() {\n return Promise;\n },\n });\n return like;\n }\n return future;\n}\n"],"names":["isPromise","createLazyPromise","executor","Promise","promise","resolve","reject","withResolvers","Object","assign","holder","_","Error","future","v","r","shouldExec","then","bind","args","result","undefined","e","like","catch","finally","defineProperty","Symbol","species","get"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,SAAS,QAAQ,cAAc;AAQxC;;;CAGC,GACD,OAAO,SAASC,kBACdC,QAE+F;IAE/F,IAAI,CAACA,YAAY,mBAAmBC,SAAS;QAC3C,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAEC,MAAM,EAAE,GAAG,AAACH,QAAgBI,aAAa;QACnE,OAAOC,OAAOC,MAAM,CAACL,SAAS;YAC5BC;YACAC;QACF;IACF;IAEA,MAAMI,SAAS;QACbL,SAAQM,CAAM;YACZ,MAAM,IAAIC,MAAM;QAClB;QACAN,QAAOK,CAAM;YACX,MAAM,IAAIC,MAAM;QAClB;IACF;IACA,MAAMC,SAASL,OAAOC,MAAM,CAC1B,IAAIN,QAAW,CAACE,SAASC;QACvBI,OAAOJ,MAAM,GAAGA;QAChBI,OAAOL,OAAO,GAAGA;IACnB,IACA;QACEA,SAAQS,CAAM;YACZJ,OAAOL,OAAO,CAACS;QACjB;QACAR,QAAOQ,CAAM;YACXJ,OAAOL,OAAO,CAACS;QACjB;IACF;IAEF,IAAIZ,UAAU;QACZ,MAAMa,IAAIL,OAAOL,OAAO;QACxB,IAAIW,aAAa;QACjBN,OAAOL,OAAO,GAAG,CAACS;YAChBE,aAAa;YACbD,EAAED;QACJ;QACA,MAAMG,OAAOJ,OAAOI,IAAI,CAACC,IAAI,CAACL;QAC9BA,OAAOI,IAAI,GAAG,CAAC,GAAGE;YAChB,IAAIH,YAAY;gBACdA,aAAa;gBACb,IAAI;oBACF,cAAc;oBACd,MAAMI,SAASlB,SAASQ,OAAOL,OAAO,EAAEK,OAAOJ,MAAM;oBACrD,kCAAkC;oBAClC,IAAIN,UAAUoB,SAAS;wBACrBA,OAAOH,IAAI,CAACP,OAAOL,OAAO,EAAEK,OAAOJ,MAAM;oBAC3C,OAAO,IAAIc,WAAWC,WAAW;wBAC/BX,OAAOL,OAAO,CAACe;oBACjB;gBACF,EAAE,OAAOE,GAAG;oBACVZ,OAAOJ,MAAM,CAACgB;gBAChB;YACF;YACA,OAAOL,QAAQE;QACjB;QACA,MAAMI,OAAOb;QACba,KAAKN,IAAI,GAAGJ,OAAOI,IAAI;QACvBM,KAAKC,KAAK,GAAGX,OAAOW,KAAK,CAACN,IAAI,CAACL;QAC/B,IAAIA,OAAOY,OAAO,EAAEF,KAAKE,OAAO,GAAGZ,OAAOY,OAAO;QAEjD,KAAKjB,OAAOkB,cAAc,CAACH,MAAMI,OAAOC,OAAO,EAAE;YAC/CC;gBACE,OAAO1B;YACT;QACF;QACA,OAAOoB;IACT;IACA,OAAOV;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/asyncs/firstOfAsyncIterator.ts"],"sourcesContent":["import { isPromise } from './isPromise';\nimport { MaybePromise } from './MaybePromise';\nimport { nextOfAsyncIterator } from './nextOfAsyncIterator';\n\nexport function firstOfAsyncIterator<T>(it: MaybePromise<AsyncIterator<T> | Iterator<T> | T>): MaybePromise<T> {\n const next = nextOfAsyncIterator(it);\n if (isPromise(next)) {\n return next.then((v) => v[0]);\n }\n return next[0];\n}\n"],"names":["isPromise","nextOfAsyncIterator","firstOfAsyncIterator","it","next","then","v"],"mappings":"AAAA,SAASA,SAAS,QAAQ,cAAc;AAExC,SAASC,mBAAmB,QAAQ,wBAAwB;AAE5D,OAAO,SAASC,qBAAwBC,EAAoD;IAC1F,MAAMC,OAAOH,oBAAoBE;IACjC,IAAIH,UAAUI,OAAO;QACnB,OAAOA,KAAKC,IAAI,CAAC,CAACC,IAAMA,CAAC,CAAC,EAAE;IAC9B;IACA,OAAOF,IAAI,CAAC,EAAE;AAChB"}
|
|
1
|
+
{"version":3,"sources":["../../src/asyncs/firstOfAsyncIterator.ts"],"sourcesContent":["import { isPromise } from './isPromise';\nimport { MaybePromise } from './MaybePromise';\nimport { nextOfAsyncIterator } from './nextOfAsyncIterator';\n\nexport function firstOfAsyncIterator<T>(it: MaybePromise<AsyncIterator<T> | Iterator<T> | T>): MaybePromise<T> {\n const next = nextOfAsyncIterator(it);\n if (isPromise(next)) {\n return next.then((v) => v[0]);\n }\n return next[0];\n}\n"],"names":["isPromise","nextOfAsyncIterator","firstOfAsyncIterator","it","next","then","v"],"rangeMappings":";;;;;;;;","mappings":"AAAA,SAASA,SAAS,QAAQ,cAAc;AAExC,SAASC,mBAAmB,QAAQ,wBAAwB;AAE5D,OAAO,SAASC,qBAAwBC,EAAoD;IAC1F,MAAMC,OAAOH,oBAAoBE;IACjC,IAAIH,UAAUI,OAAO;QACnB,OAAOA,KAAKC,IAAI,CAAC,CAACC,IAAMA,CAAC,CAAC,EAAE;IAC9B;IACA,OAAOF,IAAI,CAAC,EAAE;AAChB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/asyncs/generatorOfStream.ts"],"sourcesContent":["export function* generatorOfStream<T = any>(stream: any): IterableIterator<Promise<T>> {\n let done = false;\n stream.on('end', () => {\n done = true;\n });\n // eslint-disable-next-line no-unmodified-loop-condition\n while (!done) {\n yield new Promise((resolve, reject) => {\n stream.once('data', resolve);\n stream.once('end', resolve);\n stream.once('error', reject);\n });\n }\n}\n"],"names":["generatorOfStream","stream","done","on","Promise","resolve","reject","once"],"mappings":"AAAA,OAAO,UAAUA,kBAA2BC,MAAW;IACrD,IAAIC,OAAO;IACXD,OAAOE,EAAE,CAAC,OAAO;QACfD,OAAO;IACT;IACA,wDAAwD;IACxD,MAAO,CAACA,KAAM;QACZ,MAAM,IAAIE,QAAQ,CAACC,SAASC;YAC1BL,OAAOM,IAAI,CAAC,QAAQF;YACpBJ,OAAOM,IAAI,CAAC,OAAOF;YACnBJ,OAAOM,IAAI,CAAC,SAASD;QACvB;IACF;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../src/asyncs/generatorOfStream.ts"],"sourcesContent":["export function* generatorOfStream<T = any>(stream: any): IterableIterator<Promise<T>> {\n let done = false;\n stream.on('end', () => {\n done = true;\n });\n // eslint-disable-next-line no-unmodified-loop-condition\n while (!done) {\n yield new Promise((resolve, reject) => {\n stream.once('data', resolve);\n stream.once('end', resolve);\n stream.once('error', reject);\n });\n }\n}\n"],"names":["generatorOfStream","stream","done","on","Promise","resolve","reject","once"],"rangeMappings":";;;;;;;;;;;;;","mappings":"AAAA,OAAO,UAAUA,kBAA2BC,MAAW;IACrD,IAAIC,OAAO;IACXD,OAAOE,EAAE,CAAC,OAAO;QACfD,OAAO;IACT;IACA,wDAAwD;IACxD,MAAO,CAACA,KAAM;QACZ,MAAM,IAAIE,QAAQ,CAACC,SAASC;YAC1BL,OAAOM,IAAI,CAAC,QAAQF;YACpBJ,OAAOM,IAAI,CAAC,OAAOF;YACnBJ,OAAOM,IAAI,CAAC,SAASD;QACvB;IACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/asyncs/isIterator.ts"],"sourcesContent":["export function isIterator<T>(it: any): it is Iterator<T> | AsyncIterator<T> {\n return typeof it?.next === 'function';\n}\n"],"names":["isIterator","it","next"],"mappings":"AAAA,OAAO,SAASA,WAAcC,EAAO;IACnC,OAAO,OAAOA,IAAIC,SAAS;AAC7B"}
|
|
1
|
+
{"version":3,"sources":["../../src/asyncs/isIterator.ts"],"sourcesContent":["export function isIterator<T>(it: any): it is Iterator<T> | AsyncIterator<T> {\n return typeof it?.next === 'function';\n}\n"],"names":["isIterator","it","next"],"rangeMappings":";;","mappings":"AAAA,OAAO,SAASA,WAAcC,EAAO;IACnC,OAAO,OAAOA,IAAIC,SAAS;AAC7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/asyncs/isPromise.ts"],"sourcesContent":["export function isPromise<T>(v: any): v is Promise<T> {\n return v && (v instanceof Promise || (v.then && v.catch));\n}\n"],"names":["isPromise","v","Promise","then","catch"],"mappings":"AAAA,OAAO,SAASA,UAAaC,CAAM;IACjC,OAAOA,KAAMA,CAAAA,aAAaC,WAAYD,EAAEE,IAAI,IAAIF,EAAEG,KAAK;AACzD"}
|
|
1
|
+
{"version":3,"sources":["../../src/asyncs/isPromise.ts"],"sourcesContent":["export function isPromise<T>(v: any): v is Promise<T> {\n return v && (v instanceof Promise || (v.then && v.catch));\n}\n"],"names":["isPromise","v","Promise","then","catch"],"rangeMappings":";;","mappings":"AAAA,OAAO,SAASA,UAAaC,CAAM;IACjC,OAAOA,KAAMA,CAAAA,aAAaC,WAAYD,EAAEE,IAAI,IAAIF,EAAEG,KAAK;AACzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/asyncs/isThenable.ts"],"sourcesContent":["export function isThenable(v: any): v is PromiseLike<any> {\n // we are at Promise era now, so we can use Promise instead of PromiseLike\n return v && typeof v.then === 'function';\n}\n"],"names":["isThenable","v","then"],"mappings":"AAAA,OAAO,SAASA,WAAWC,CAAM;IAC/B,0EAA0E;IAC1E,OAAOA,KAAK,OAAOA,EAAEC,IAAI,KAAK;AAChC"}
|
|
1
|
+
{"version":3,"sources":["../../src/asyncs/isThenable.ts"],"sourcesContent":["export function isThenable(v: any): v is PromiseLike<any> {\n // we are at Promise era now, so we can use Promise instead of PromiseLike\n return v && typeof v.then === 'function';\n}\n"],"names":["isThenable","v","then"],"rangeMappings":";;;","mappings":"AAAA,OAAO,SAASA,WAAWC,CAAM;IAC/B,0EAA0E;IAC1E,OAAOA,KAAK,OAAOA,EAAEC,IAAI,KAAK;AAChC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/asyncs/nextOfAsyncIterator.ts"],"sourcesContent":["import { isIterator } from './isIterator';\nimport { isPromise } from './isPromise';\nimport { MaybePromise } from './MaybePromise';\n\ntype IteratorLike<T> = Iterable<T> | Iterator<T>;\ntype AsyncIteratorLike<T> = AsyncIterable<T> | AsyncIterator<T> | AsyncIterableIterator<T> | IteratorLike<T>;\n\nexport function nextOfAsyncIterator<T>(\n it: MaybePromise<AsyncIterable<T> | Iterable<T> | AsyncIterator<T> | Iterator<T> | T>,\n): MaybePromise<[value: T, done?: boolean]> {\n if (isPromise(it)) {\n return it.then((v) => nextOfAsyncIterator(v));\n }\n\n if (isIterator(it)) {\n let next = it.next();\n if (isPromise(next)) {\n return next.then((v) => [v.value, v.done]);\n }\n return [next.value, next.done];\n }\n if (it && typeof it === 'object') {\n if (Symbol.iterator in it) {\n return nextOfAsyncIterator(it[Symbol.iterator]());\n }\n if (Symbol.asyncIterator in it) {\n return nextOfAsyncIterator(it[Symbol.asyncIterator]());\n }\n }\n return [it];\n}\n"],"names":["isIterator","isPromise","nextOfAsyncIterator","it","then","v","next","value","done","Symbol","iterator","asyncIterator"],"mappings":"AAAA,SAASA,UAAU,QAAQ,eAAe;AAC1C,SAASC,SAAS,QAAQ,cAAc;AAMxC,OAAO,SAASC,oBACdC,EAAqF;IAErF,IAAIF,UAAUE,KAAK;QACjB,OAAOA,GAAGC,IAAI,CAAC,CAACC,IAAMH,oBAAoBG;IAC5C;IAEA,IAAIL,WAAWG,KAAK;QAClB,IAAIG,OAAOH,GAAGG,IAAI;QAClB,IAAIL,UAAUK,OAAO;YACnB,OAAOA,KAAKF,IAAI,CAAC,CAACC,IAAM;oBAACA,EAAEE,KAAK;oBAAEF,EAAEG,IAAI;iBAAC;QAC3C;QACA,OAAO;YAACF,KAAKC,KAAK;YAAED,KAAKE,IAAI;SAAC;IAChC;IACA,IAAIL,MAAM,OAAOA,OAAO,UAAU;QAChC,IAAIM,OAAOC,QAAQ,IAAIP,IAAI;YACzB,OAAOD,oBAAoBC,EAAE,CAACM,OAAOC,QAAQ,CAAC;QAChD;QACA,IAAID,OAAOE,aAAa,IAAIR,IAAI;YAC9B,OAAOD,oBAAoBC,EAAE,CAACM,OAAOE,aAAa,CAAC;QACrD;IACF;IACA,OAAO;QAACR;KAAG;AACb"}
|
|
1
|
+
{"version":3,"sources":["../../src/asyncs/nextOfAsyncIterator.ts"],"sourcesContent":["import { isIterator } from './isIterator';\nimport { isPromise } from './isPromise';\nimport { MaybePromise } from './MaybePromise';\n\ntype IteratorLike<T> = Iterable<T> | Iterator<T>;\ntype AsyncIteratorLike<T> = AsyncIterable<T> | AsyncIterator<T> | AsyncIterableIterator<T> | IteratorLike<T>;\n\nexport function nextOfAsyncIterator<T>(\n it: MaybePromise<AsyncIterable<T> | Iterable<T> | AsyncIterator<T> | Iterator<T> | T>,\n): MaybePromise<[value: T, done?: boolean]> {\n if (isPromise(it)) {\n return it.then((v) => nextOfAsyncIterator(v));\n }\n\n if (isIterator(it)) {\n let next = it.next();\n if (isPromise(next)) {\n return next.then((v) => [v.value, v.done]);\n }\n return [next.value, next.done];\n }\n if (it && typeof it === 'object') {\n if (Symbol.iterator in it) {\n return nextOfAsyncIterator(it[Symbol.iterator]());\n }\n if (Symbol.asyncIterator in it) {\n return nextOfAsyncIterator(it[Symbol.asyncIterator]());\n }\n }\n return [it];\n}\n"],"names":["isIterator","isPromise","nextOfAsyncIterator","it","then","v","next","value","done","Symbol","iterator","asyncIterator"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,UAAU,QAAQ,eAAe;AAC1C,SAASC,SAAS,QAAQ,cAAc;AAMxC,OAAO,SAASC,oBACdC,EAAqF;IAErF,IAAIF,UAAUE,KAAK;QACjB,OAAOA,GAAGC,IAAI,CAAC,CAACC,IAAMH,oBAAoBG;IAC5C;IAEA,IAAIL,WAAWG,KAAK;QAClB,IAAIG,OAAOH,GAAGG,IAAI;QAClB,IAAIL,UAAUK,OAAO;YACnB,OAAOA,KAAKF,IAAI,CAAC,CAACC,IAAM;oBAACA,EAAEE,KAAK;oBAAEF,EAAEG,IAAI;iBAAC;QAC3C;QACA,OAAO;YAACF,KAAKC,KAAK;YAAED,KAAKE,IAAI;SAAC;IAChC;IACA,IAAIL,MAAM,OAAOA,OAAO,UAAU;QAChC,IAAIM,OAAOC,QAAQ,IAAIP,IAAI;YACzB,OAAOD,oBAAoBC,EAAE,CAACM,OAAOC,QAAQ,CAAC;QAChD;QACA,IAAID,OAAOE,aAAa,IAAIR,IAAI;YAC9B,OAAOD,oBAAoBC,EAAE,CAACM,OAAOE,aAAa,CAAC;QACrD;IACF;IACA,OAAO;QAACR;KAAG;AACb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/asyncs/promiseOfCallback.ts"],"sourcesContent":["export function promiseOfCallback<T>(fun: (cb: (err: any, val?: T) => void) => void) {\n return new Promise<T>((resolve, reject) => {\n try {\n fun((e: any, v: any) => {\n if (e) {\n reject(e);\n } else {\n resolve(v);\n }\n });\n } catch (e) {\n reject(e);\n }\n });\n}\n"],"names":["promiseOfCallback","fun","Promise","resolve","reject","e","v"],"mappings":"AAAA,OAAO,SAASA,kBAAqBC,GAA8C;IACjF,OAAO,IAAIC,QAAW,CAACC,SAASC;QAC9B,IAAI;YACFH,IAAI,CAACI,GAAQC;gBACX,IAAID,GAAG;oBACLD,OAAOC;gBACT,OAAO;oBACLF,QAAQG;gBACV;YACF;QACF,EAAE,OAAOD,GAAG;YACVD,OAAOC;QACT;IACF;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../src/asyncs/promiseOfCallback.ts"],"sourcesContent":["export function promiseOfCallback<T>(fun: (cb: (err: any, val?: T) => void) => void) {\n return new Promise<T>((resolve, reject) => {\n try {\n fun((e: any, v: any) => {\n if (e) {\n reject(e);\n } else {\n resolve(v);\n }\n });\n } catch (e) {\n reject(e);\n }\n });\n}\n"],"names":["promiseOfCallback","fun","Promise","resolve","reject","e","v"],"rangeMappings":";;;;;;;;;;;;;;","mappings":"AAAA,OAAO,SAASA,kBAAqBC,GAA8C;IACjF,OAAO,IAAIC,QAAW,CAACC,SAASC;QAC9B,IAAI;YACFH,IAAI,CAACI,GAAQC;gBACX,IAAID,GAAG;oBACLD,OAAOC;gBACT,OAAO;oBACLF,QAAQG;gBACV;YACF;QACF,EAAE,OAAOD,GAAG;YACVD,OAAOC;QACT;IACF;AACF"}
|
package/lib/asyncs/sleep.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/asyncs/sleep.ts"],"sourcesContent":["export const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n"],"names":["sleep","ms","Promise","resolve","setTimeout"],"mappings":"AAAA,OAAO,MAAMA,QAAQ,CAACC,KAAe,IAAIC,QAAQ,CAACC,UAAYC,WAAWD,SAASF,KAAK"}
|
|
1
|
+
{"version":3,"sources":["../../src/asyncs/sleep.ts"],"sourcesContent":["export const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n"],"names":["sleep","ms","Promise","resolve","setTimeout"],"rangeMappings":"","mappings":"AAAA,OAAO,MAAMA,QAAQ,CAACC,KAAe,IAAIC,QAAQ,CAACC,UAAYC,WAAWD,SAASF,KAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/asyncs/timeout.ts"],"sourcesContent":["export function timeout<T = any>(\n v: Promise<T> | ((args: { signal: AbortSignal }) => Promise<T>),\n ms: number,\n): Promise<T> {\n const error = new TimeoutError();\n let timeout: any;\n let ac: AbortController | undefined;\n if (typeof v === 'function') {\n ac = new AbortController();\n v = v({ signal: ac.signal });\n }\n\n return Promise.race<T>([\n v,\n new Promise((_resolve, reject) => {\n timeout = setTimeout(() => {\n ac?.abort(error);\n reject(error);\n }, ms);\n }),\n ]).finally(() => {\n clearTimeout(timeout);\n });\n}\n\nexport class TimeoutError extends Error {\n constructor() {\n super('TimeoutError');\n }\n}\n"],"names":["timeout","v","ms","error","TimeoutError","ac","AbortController","signal","Promise","race","_resolve","reject","setTimeout","abort","finally","clearTimeout","Error","constructor"],"mappings":"AAAA,OAAO,SAASA,QACdC,CAA+D,EAC/DC,EAAU;IAEV,MAAMC,QAAQ,IAAIC;IAClB,IAAIJ;IACJ,IAAIK;IACJ,IAAI,OAAOJ,MAAM,YAAY;QAC3BI,KAAK,IAAIC;QACTL,IAAIA,EAAE;YAAEM,QAAQF,GAAGE,MAAM;QAAC;IAC5B;IAEA,OAAOC,QAAQC,IAAI,CAAI;QACrBR;QACA,IAAIO,QAAQ,CAACE,UAAUC;YACrBX,UAAUY,WAAW;gBACnBP,IAAIQ,MAAMV;gBACVQ,OAAOR;YACT,GAAGD;QACL;KACD,EAAEY,OAAO,CAAC;QACTC,aAAaf;IACf;AACF;AAEA,OAAO,MAAMI,qBAAqBY;IAChCC,aAAc;QACZ,KAAK,CAAC;IACR;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../src/asyncs/timeout.ts"],"sourcesContent":["export function timeout<T = any>(\n v: Promise<T> | ((args: { signal: AbortSignal }) => Promise<T>),\n ms: number,\n): Promise<T> {\n const error = new TimeoutError();\n let timeout: any;\n let ac: AbortController | undefined;\n if (typeof v === 'function') {\n ac = new AbortController();\n v = v({ signal: ac.signal });\n }\n\n return Promise.race<T>([\n v,\n new Promise((_resolve, reject) => {\n timeout = setTimeout(() => {\n ac?.abort(error);\n reject(error);\n }, ms);\n }),\n ]).finally(() => {\n clearTimeout(timeout);\n });\n}\n\nexport class TimeoutError extends Error {\n constructor() {\n super('TimeoutError');\n }\n}\n"],"names":["timeout","v","ms","error","TimeoutError","ac","AbortController","signal","Promise","race","_resolve","reject","setTimeout","abort","finally","clearTimeout","Error","constructor"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAO,SAASA,QACdC,CAA+D,EAC/DC,EAAU;IAEV,MAAMC,QAAQ,IAAIC;IAClB,IAAIJ;IACJ,IAAIK;IACJ,IAAI,OAAOJ,MAAM,YAAY;QAC3BI,KAAK,IAAIC;QACTL,IAAIA,EAAE;YAAEM,QAAQF,GAAGE,MAAM;QAAC;IAC5B;IAEA,OAAOC,QAAQC,IAAI,CAAI;QACrBR;QACA,IAAIO,QAAQ,CAACE,UAAUC;YACrBX,UAAUY,WAAW;gBACnBP,IAAIQ,MAAMV;gBACVQ,OAAOR;YACT,GAAGD;QACL;KACD,EAAEY,OAAO,CAAC;QACTC,aAAaf;IACf;AACF;AAEA,OAAO,MAAMI,qBAAqBY;IAChCC,aAAc;QACZ,KAAK,CAAC;IACR;AACF"}
|
package/lib/browsers/copy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/browsers/copy.ts"],"sourcesContent":["import type { MaybePromise } from '../asyncs/MaybePromise';\n\nlet _copy: (s: any) => MaybePromise<void>;\n\n// https://gist.github.com/rproenca/64781c6a1329b48a455b645d361a9aa3\nfunction initCopy() {\n let textArea: HTMLTextAreaElement;\n\n function isIOS() {\n return navigator.userAgent.match(/ipad|iphone/i);\n }\n\n function createTextArea(text: string) {\n textArea = document.createElement('textArea') as HTMLTextAreaElement;\n textArea.value = text;\n document.body.appendChild(textArea);\n }\n\n function selectText() {\n let range, selection;\n\n if (isIOS()) {\n range = document.createRange();\n range.selectNodeContents(textArea);\n selection = window.getSelection();\n if (selection === null) {\n console.error(`no selection`);\n return;\n }\n selection.removeAllRanges();\n selection.addRange(range);\n textArea.setSelectionRange(0, 999999);\n } else {\n textArea.select();\n }\n }\n\n function copyToClipboard() {\n document.execCommand('copy');\n document.body.removeChild(textArea);\n }\n\n _copy = (text) => {\n createTextArea(text);\n selectText();\n copyToClipboard();\n };\n}\n\n/**\n * Write text to clipboard\n * @param content content\n */\nexport function copy(content: string): MaybePromise<void> {\n if (window.navigator?.clipboard?.writeText) {\n return window.navigator.clipboard.writeText(content);\n }\n if (!_copy) {\n initCopy();\n }\n return _copy(content);\n}\n"],"names":["_copy","initCopy","textArea","isIOS","navigator","userAgent","match","createTextArea","text","document","createElement","value","body","appendChild","selectText","range","selection","createRange","selectNodeContents","window","getSelection","console","error","removeAllRanges","addRange","setSelectionRange","select","copyToClipboard","execCommand","removeChild","copy","content","clipboard","writeText"],"mappings":"AAEA,IAAIA;AAEJ,oEAAoE;AACpE,SAASC;IACP,IAAIC;IAEJ,SAASC;QACP,OAAOC,UAAUC,SAAS,CAACC,KAAK,CAAC;IACnC;IAEA,SAASC,eAAeC,IAAY;QAClCN,WAAWO,SAASC,aAAa,CAAC;QAClCR,SAASS,KAAK,GAAGH;QACjBC,SAASG,IAAI,CAACC,WAAW,CAACX;IAC5B;IAEA,SAASY;QACP,IAAIC,OAAOC;QAEX,IAAIb,SAAS;YACXY,QAAQN,SAASQ,WAAW;YAC5BF,MAAMG,kBAAkB,CAAChB;YACzBc,YAAYG,OAAOC,YAAY;YAC/B,IAAIJ,cAAc,MAAM;gBACtBK,QAAQC,KAAK,CAAC,CAAC,YAAY,CAAC;gBAC5B;YACF;YACAN,UAAUO,eAAe;YACzBP,UAAUQ,QAAQ,CAACT;YACnBb,SAASuB,iBAAiB,CAAC,GAAG;QAChC,OAAO;YACLvB,SAASwB,MAAM;QACjB;IACF;IAEA,SAASC;QACPlB,SAASmB,WAAW,CAAC;QACrBnB,SAASG,IAAI,CAACiB,WAAW,CAAC3B;IAC5B;IAEAF,QAAQ,CAACQ;QACPD,eAAeC;QACfM;QACAa;IACF;AACF;AAEA;;;CAGC,GACD,OAAO,SAASG,KAAKC,OAAe;IAClC,IAAIZ,OAAOf,SAAS,EAAE4B,WAAWC,WAAW;QAC1C,OAAOd,OAAOf,SAAS,CAAC4B,SAAS,CAACC,SAAS,CAACF;IAC9C;IACA,IAAI,CAAC/B,OAAO;QACVC;IACF;IACA,OAAOD,MAAM+B;AACf"}
|
|
1
|
+
{"version":3,"sources":["../../src/browsers/copy.ts"],"sourcesContent":["import type { MaybePromise } from '../asyncs/MaybePromise';\n\nlet _copy: (s: any) => MaybePromise<void>;\n\n// https://gist.github.com/rproenca/64781c6a1329b48a455b645d361a9aa3\nfunction initCopy() {\n let textArea: HTMLTextAreaElement;\n\n function isIOS() {\n return navigator.userAgent.match(/ipad|iphone/i);\n }\n\n function createTextArea(text: string) {\n textArea = document.createElement('textArea') as HTMLTextAreaElement;\n textArea.value = text;\n document.body.appendChild(textArea);\n }\n\n function selectText() {\n let range, selection;\n\n if (isIOS()) {\n range = document.createRange();\n range.selectNodeContents(textArea);\n selection = window.getSelection();\n if (selection === null) {\n console.error(`no selection`);\n return;\n }\n selection.removeAllRanges();\n selection.addRange(range);\n textArea.setSelectionRange(0, 999999);\n } else {\n textArea.select();\n }\n }\n\n function copyToClipboard() {\n document.execCommand('copy');\n document.body.removeChild(textArea);\n }\n\n _copy = (text) => {\n createTextArea(text);\n selectText();\n copyToClipboard();\n };\n}\n\n/**\n * Write text to clipboard\n * @param content content\n */\nexport function copy(content: string): MaybePromise<void> {\n if (window.navigator?.clipboard?.writeText) {\n return window.navigator.clipboard.writeText(content);\n }\n if (!_copy) {\n initCopy();\n }\n return _copy(content);\n}\n"],"names":["_copy","initCopy","textArea","isIOS","navigator","userAgent","match","createTextArea","text","document","createElement","value","body","appendChild","selectText","range","selection","createRange","selectNodeContents","window","getSelection","console","error","removeAllRanges","addRange","setSelectionRange","select","copyToClipboard","execCommand","removeChild","copy","content","clipboard","writeText"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,IAAIA;AAEJ,oEAAoE;AACpE,SAASC;IACP,IAAIC;IAEJ,SAASC;QACP,OAAOC,UAAUC,SAAS,CAACC,KAAK,CAAC;IACnC;IAEA,SAASC,eAAeC,IAAY;QAClCN,WAAWO,SAASC,aAAa,CAAC;QAClCR,SAASS,KAAK,GAAGH;QACjBC,SAASG,IAAI,CAACC,WAAW,CAACX;IAC5B;IAEA,SAASY;QACP,IAAIC,OAAOC;QAEX,IAAIb,SAAS;YACXY,QAAQN,SAASQ,WAAW;YAC5BF,MAAMG,kBAAkB,CAAChB;YACzBc,YAAYG,OAAOC,YAAY;YAC/B,IAAIJ,cAAc,MAAM;gBACtBK,QAAQC,KAAK,CAAC,CAAC,YAAY,CAAC;gBAC5B;YACF;YACAN,UAAUO,eAAe;YACzBP,UAAUQ,QAAQ,CAACT;YACnBb,SAASuB,iBAAiB,CAAC,GAAG;QAChC,OAAO;YACLvB,SAASwB,MAAM;QACjB;IACF;IAEA,SAASC;QACPlB,SAASmB,WAAW,CAAC;QACrBnB,SAASG,IAAI,CAACiB,WAAW,CAAC3B;IAC5B;IAEAF,QAAQ,CAACQ;QACPD,eAAeC;QACfM;QACAa;IACF;AACF;AAEA;;;CAGC,GACD,OAAO,SAASG,KAAKC,OAAe;IAClC,IAAIZ,OAAOf,SAAS,EAAE4B,WAAWC,WAAW;QAC1C,OAAOd,OAAOf,SAAS,CAAC4B,SAAS,CAACC,SAAS,CAACF;IAC9C;IACA,IAAI,CAAC/B,OAAO;QACVC;IACF;IACA,OAAOD,MAAM+B;AACf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/browsers/download.ts"],"sourcesContent":["/**\n * Trigger browser download\n * @param filename download as filename\n * @param data data or url to download\n * @param type content type\n * @param raw if true, data is treated as raw data, not url\n */\nexport async function download(filename: string, data: any, { type = 'application/octet-stream', raw = false } = {}) {\n const a = document.createElement('a');\n let closer: () => void = () => null;\n try {\n a.download = filename;\n\n // url or data url\n if (typeof data === 'string' && /^(https?:|data:)/.test(data) && !raw) {\n a.href = data;\n // 只有 same-origin 才能 download\n if (/^https?:/.test(data)) {\n if (new URL(data).origin !== location.origin) {\n // 非同源\n a.href = '';\n data = await fetch(data).then((res) => res.blob());\n }\n }\n } else if (typeof data === 'string') {\n data = new TextEncoder().encode(data);\n }\n\n if (data instanceof Uint8Array) {\n data = new Blob([data], { type });\n }\n {\n if (data instanceof File || data instanceof Blob || data instanceof MediaSource) {\n a.href = URL.createObjectURL(data);\n closer = () => {\n URL.revokeObjectURL(a.href);\n };\n } else {\n console.error(`invalid download data`, data);\n throw new Error(`can not download ${data && Object.getPrototypeOf(data)}`);\n }\n a.click();\n }\n } finally {\n closer();\n }\n}\n"],"names":["download","filename","data","type","raw","a","document","createElement","closer","test","href","URL","origin","location","fetch","then","res","blob","TextEncoder","encode","Uint8Array","Blob","File","MediaSource","createObjectURL","revokeObjectURL","console","error","Error","Object","getPrototypeOf","click"],"mappings":"AAAA;;;;;;CAMC,GACD,OAAO,eAAeA,SAASC,QAAgB,EAAEC,IAAS,EAAE,EAAEC,OAAO,0BAA0B,EAAEC,MAAM,KAAK,EAAE,GAAG,CAAC,CAAC;IACjH,MAAMC,IAAIC,SAASC,aAAa,CAAC;IACjC,IAAIC,SAAqB,IAAM;IAC/B,IAAI;QACFH,EAAEL,QAAQ,GAAGC;QAEb,kBAAkB;QAClB,IAAI,OAAOC,SAAS,YAAY,mBAAmBO,IAAI,CAACP,SAAS,CAACE,KAAK;YACrEC,EAAEK,IAAI,GAAGR;YACT,6BAA6B;YAC7B,IAAI,WAAWO,IAAI,CAACP,OAAO;gBACzB,IAAI,IAAIS,IAAIT,MAAMU,MAAM,KAAKC,SAASD,MAAM,EAAE;oBAC5C,MAAM;oBACNP,EAAEK,IAAI,GAAG;oBACTR,OAAO,MAAMY,MAAMZ,MAAMa,IAAI,CAAC,CAACC,MAAQA,IAAIC,IAAI;gBACjD;YACF;QACF,OAAO,IAAI,OAAOf,SAAS,UAAU;YACnCA,OAAO,IAAIgB,cAAcC,MAAM,CAACjB;QAClC;QAEA,IAAIA,gBAAgBkB,YAAY;YAC9BlB,OAAO,IAAImB,KAAK;gBAACnB;aAAK,EAAE;gBAAEC;YAAK;QACjC;QACA;YACE,IAAID,gBAAgBoB,QAAQpB,gBAAgBmB,QAAQnB,gBAAgBqB,aAAa;gBAC/ElB,EAAEK,IAAI,GAAGC,IAAIa,eAAe,CAACtB;gBAC7BM,SAAS;oBACPG,IAAIc,eAAe,CAACpB,EAAEK,IAAI;gBAC5B;YACF,OAAO;gBACLgB,QAAQC,KAAK,CAAC,CAAC,qBAAqB,CAAC,EAAEzB;gBACvC,MAAM,IAAI0B,MAAM,CAAC,iBAAiB,EAAE1B,QAAQ2B,OAAOC,cAAc,CAAC5B,MAAM,CAAC;YAC3E;YACAG,EAAE0B,KAAK;QACT;IACF,SAAU;QACRvB;IACF;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../src/browsers/download.ts"],"sourcesContent":["/**\n * Trigger browser download\n * @param filename download as filename\n * @param data data or url to download\n * @param type content type\n * @param raw if true, data is treated as raw data, not url\n */\nexport async function download(filename: string, data: any, { type = 'application/octet-stream', raw = false } = {}) {\n const a = document.createElement('a');\n let closer: () => void = () => null;\n try {\n a.download = filename;\n\n // url or data url\n if (typeof data === 'string' && /^(https?:|data:)/.test(data) && !raw) {\n a.href = data;\n // 只有 same-origin 才能 download\n if (/^https?:/.test(data)) {\n if (new URL(data).origin !== location.origin) {\n // 非同源\n a.href = '';\n data = await fetch(data).then((res) => res.blob());\n }\n }\n } else if (typeof data === 'string') {\n data = new TextEncoder().encode(data);\n }\n\n if (data instanceof Uint8Array) {\n data = new Blob([data], { type });\n }\n {\n if (data instanceof File || data instanceof Blob || data instanceof MediaSource) {\n a.href = URL.createObjectURL(data);\n closer = () => {\n URL.revokeObjectURL(a.href);\n };\n } else {\n console.error(`invalid download data`, data);\n throw new Error(`can not download ${data && Object.getPrototypeOf(data)}`);\n }\n a.click();\n }\n } finally {\n closer();\n }\n}\n"],"names":["download","filename","data","type","raw","a","document","createElement","closer","test","href","URL","origin","location","fetch","then","res","blob","TextEncoder","encode","Uint8Array","Blob","File","MediaSource","createObjectURL","revokeObjectURL","console","error","Error","Object","getPrototypeOf","click"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;;;;;CAMC,GACD,OAAO,eAAeA,SAASC,QAAgB,EAAEC,IAAS,EAAE,EAAEC,OAAO,0BAA0B,EAAEC,MAAM,KAAK,EAAE,GAAG,CAAC,CAAC;IACjH,MAAMC,IAAIC,SAASC,aAAa,CAAC;IACjC,IAAIC,SAAqB,IAAM;IAC/B,IAAI;QACFH,EAAEL,QAAQ,GAAGC;QAEb,kBAAkB;QAClB,IAAI,OAAOC,SAAS,YAAY,mBAAmBO,IAAI,CAACP,SAAS,CAACE,KAAK;YACrEC,EAAEK,IAAI,GAAGR;YACT,6BAA6B;YAC7B,IAAI,WAAWO,IAAI,CAACP,OAAO;gBACzB,IAAI,IAAIS,IAAIT,MAAMU,MAAM,KAAKC,SAASD,MAAM,EAAE;oBAC5C,MAAM;oBACNP,EAAEK,IAAI,GAAG;oBACTR,OAAO,MAAMY,MAAMZ,MAAMa,IAAI,CAAC,CAACC,MAAQA,IAAIC,IAAI;gBACjD;YACF;QACF,OAAO,IAAI,OAAOf,SAAS,UAAU;YACnCA,OAAO,IAAIgB,cAAcC,MAAM,CAACjB;QAClC;QAEA,IAAIA,gBAAgBkB,YAAY;YAC9BlB,OAAO,IAAImB,KAAK;gBAACnB;aAAK,EAAE;gBAAEC;YAAK;QACjC;QACA;YACE,IAAID,gBAAgBoB,QAAQpB,gBAAgBmB,QAAQnB,gBAAgBqB,aAAa;gBAC/ElB,EAAEK,IAAI,GAAGC,IAAIa,eAAe,CAACtB;gBAC7BM,SAAS;oBACPG,IAAIc,eAAe,CAACpB,EAAEK,IAAI;gBAC5B;YACF,OAAO;gBACLgB,QAAQC,KAAK,CAAC,CAAC,qBAAqB,CAAC,EAAEzB;gBACvC,MAAM,IAAI0B,MAAM,CAAC,iBAAiB,EAAE1B,QAAQ2B,OAAOC,cAAc,CAAC5B,MAAM,CAAC;YAC3E;YACAG,EAAE0B,KAAK;QACT;IACF,SAAU;QACRvB;IACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/browsers/getFileFromDataTransfer.ts"],"sourcesContent":["export function getFileFromDataTransfer(dataTransfer?: DataTransfer | null): { file?: File; name?: string } {\n if (!dataTransfer) {\n return {};\n }\n\n const items: DataTransferItemList = dataTransfer.items ?? [];\n\n if (items.length >= 2 && items[0].kind === 'string' && items[1].kind === 'file') {\n // name, file\n const text = dataTransfer.getData('text');\n const file = items[1].getAsFile() ?? dataTransfer.files?.item(0);\n if (!file) {\n console.error(`no file ${text}`, items[1]);\n return {};\n }\n\n // let type = file.type;\n // // fix type\n // type = type;\n // // NOTE paste file can not parse by libs\n // if (type !== file.type) {\n // const blob = file.slice(0, file.size);\n // file = new File([blob], text, {type});\n // }\n\n return { file, name: text };\n } else if (items[0].kind === 'file') {\n const file = items[0].getAsFile();\n if (!file) {\n console.error(`no file`, items[0]);\n return {};\n }\n return { file, name: file.name };\n } else {\n console.debug(\n `file item not match`,\n Array.from(items).map((v) => ({ type: v.type, kind: v.kind })),\n );\n }\n return {};\n}\n"],"names":["getFileFromDataTransfer","dataTransfer","items","length","kind","text","getData","file","getAsFile","files","item","console","error","name","debug","Array","from","map","v","type"],"mappings":"AAAA,OAAO,SAASA,wBAAwBC,YAAkC;IACxE,IAAI,CAACA,cAAc;QACjB,OAAO,CAAC;IACV;IAEA,MAAMC,QAA8BD,aAAaC,KAAK,IAAI,EAAE;IAE5D,IAAIA,MAAMC,MAAM,IAAI,KAAKD,KAAK,CAAC,EAAE,CAACE,IAAI,KAAK,YAAYF,KAAK,CAAC,EAAE,CAACE,IAAI,KAAK,QAAQ;QAC/E,aAAa;QACb,MAAMC,OAAOJ,aAAaK,OAAO,CAAC;QAClC,MAAMC,OAAOL,KAAK,CAAC,EAAE,CAACM,SAAS,MAAMP,aAAaQ,KAAK,EAAEC,KAAK;QAC9D,IAAI,CAACH,MAAM;YACTI,QAAQC,KAAK,CAAC,CAAC,QAAQ,EAAEP,KAAK,CAAC,EAAEH,KAAK,CAAC,EAAE;YACzC,OAAO,CAAC;QACV;QAEA,wBAAwB;QACxB,cAAc;QACd,eAAe;QACf,2CAA2C;QAC3C,4BAA4B;QAC5B,2CAA2C;QAC3C,2CAA2C;QAC3C,IAAI;QAEJ,OAAO;YAAEK;YAAMM,MAAMR;QAAK;IAC5B,OAAO,IAAIH,KAAK,CAAC,EAAE,CAACE,IAAI,KAAK,QAAQ;QACnC,MAAMG,OAAOL,KAAK,CAAC,EAAE,CAACM,SAAS;QAC/B,IAAI,CAACD,MAAM;YACTI,QAAQC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAEV,KAAK,CAAC,EAAE;YACjC,OAAO,CAAC;QACV;QACA,OAAO;YAAEK;YAAMM,MAAMN,KAAKM,IAAI;QAAC;IACjC,OAAO;QACLF,QAAQG,KAAK,CACX,CAAC,mBAAmB,CAAC,EACrBC,MAAMC,IAAI,CAACd,OAAOe,GAAG,CAAC,CAACC,IAAO,CAAA;gBAAEC,MAAMD,EAAEC,IAAI;gBAAEf,MAAMc,EAAEd,IAAI;YAAC,CAAA;IAE/D;IACA,OAAO,CAAC;AACV"}
|
|
1
|
+
{"version":3,"sources":["../../src/browsers/getFileFromDataTransfer.ts"],"sourcesContent":["export function getFileFromDataTransfer(dataTransfer?: DataTransfer | null): { file?: File; name?: string } {\n if (!dataTransfer) {\n return {};\n }\n\n const items: DataTransferItemList = dataTransfer.items ?? [];\n\n if (items.length >= 2 && items[0].kind === 'string' && items[1].kind === 'file') {\n // name, file\n const text = dataTransfer.getData('text');\n const file = items[1].getAsFile() ?? dataTransfer.files?.item(0);\n if (!file) {\n console.error(`no file ${text}`, items[1]);\n return {};\n }\n\n // let type = file.type;\n // // fix type\n // type = type;\n // // NOTE paste file can not parse by libs\n // if (type !== file.type) {\n // const blob = file.slice(0, file.size);\n // file = new File([blob], text, {type});\n // }\n\n return { file, name: text };\n } else if (items[0].kind === 'file') {\n const file = items[0].getAsFile();\n if (!file) {\n console.error(`no file`, items[0]);\n return {};\n }\n return { file, name: file.name };\n } else {\n console.debug(\n `file item not match`,\n Array.from(items).map((v) => ({ type: v.type, kind: v.kind })),\n );\n }\n return {};\n}\n"],"names":["getFileFromDataTransfer","dataTransfer","items","length","kind","text","getData","file","getAsFile","files","item","console","error","name","debug","Array","from","map","v","type"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAO,SAASA,wBAAwBC,YAAkC;IACxE,IAAI,CAACA,cAAc;QACjB,OAAO,CAAC;IACV;IAEA,MAAMC,QAA8BD,aAAaC,KAAK,IAAI,EAAE;IAE5D,IAAIA,MAAMC,MAAM,IAAI,KAAKD,KAAK,CAAC,EAAE,CAACE,IAAI,KAAK,YAAYF,KAAK,CAAC,EAAE,CAACE,IAAI,KAAK,QAAQ;QAC/E,aAAa;QACb,MAAMC,OAAOJ,aAAaK,OAAO,CAAC;QAClC,MAAMC,OAAOL,KAAK,CAAC,EAAE,CAACM,SAAS,MAAMP,aAAaQ,KAAK,EAAEC,KAAK;QAC9D,IAAI,CAACH,MAAM;YACTI,QAAQC,KAAK,CAAC,CAAC,QAAQ,EAAEP,KAAK,CAAC,EAAEH,KAAK,CAAC,EAAE;YACzC,OAAO,CAAC;QACV;QAEA,wBAAwB;QACxB,cAAc;QACd,eAAe;QACf,2CAA2C;QAC3C,4BAA4B;QAC5B,2CAA2C;QAC3C,2CAA2C;QAC3C,IAAI;QAEJ,OAAO;YAAEK;YAAMM,MAAMR;QAAK;IAC5B,OAAO,IAAIH,KAAK,CAAC,EAAE,CAACE,IAAI,KAAK,QAAQ;QACnC,MAAMG,OAAOL,KAAK,CAAC,EAAE,CAACM,SAAS;QAC/B,IAAI,CAACD,MAAM;YACTI,QAAQC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAEV,KAAK,CAAC,EAAE;YACjC,OAAO,CAAC;QACV;QACA,OAAO;YAAEK;YAAMM,MAAMN,KAAKM,IAAI;QAAC;IACjC,OAAO;QACLF,QAAQG,KAAK,CACX,CAAC,mBAAmB,CAAC,EACrBC,MAAMC,IAAI,CAACd,OAAOe,GAAG,CAAC,CAACC,IAAO,CAAA;gBAAEC,MAAMD,EAAEC,IAAI;gBAAEf,MAAMc,EAAEd,IAAI;YAAC,CAAA;IAE/D;IACA,OAAO,CAAC;AACV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/browsers/loaders.ts"],"sourcesContent":["function load(\n el: HTMLScriptElement | HTMLLinkElement,\n resolve: (v: any) => void,\n reject: (v: any) => void,\n options: { attributes: Record<string, string> } | undefined,\n) {\n el.onload = () => {\n resolve(el);\n };\n el.onerror = (e) => {\n el.remove();\n reject(e);\n };\n const { attributes = {} } = options || {};\n Object.entries(attributes).forEach(([k, v]) => {\n el.setAttribute(k, v);\n });\n\n document.head.appendChild(el);\n}\n\nexport function loadScripts(\n src: string[],\n options?: { attributes: Record<string, string> },\n): Promise<HTMLScriptElement[]>;\nexport function loadScripts(src: string, options?: { attributes: Record<string, string> }): Promise<HTMLScriptElement>;\n\nexport function loadScripts(\n src: string | string[],\n options?: { attributes: Record<string, string> },\n): Promise<HTMLScriptElement | HTMLScriptElement[]> {\n if (Array.isArray(src)) {\n return Promise.resolve().then(async () => {\n const all = [];\n for (const s of src) {\n all.push(await loadScripts(s));\n }\n return all;\n });\n }\n // todo quote ?\n const $ele = document.querySelector(`script[src=\"${src}\"]`) as HTMLScriptElement;\n if ($ele) {\n return Promise.resolve($ele);\n }\n return new Promise((resolve, reject) => {\n const el = document.createElement('script');\n el.src = src;\n load(el, resolve, reject, options);\n });\n}\n\nexport function loadStyles(href: string, options?: { attributes: Record<string, string> }): Promise<HTMLLinkElement> {\n const $ele = document.querySelector(`link[href=\"${href}\"]`) as HTMLLinkElement;\n if ($ele) {\n return Promise.resolve($ele);\n }\n\n return new Promise((resolve, reject) => {\n const el = document.createElement('link');\n el.rel = 'stylesheet';\n el.href = href;\n load(el, resolve, reject, options);\n });\n}\n"],"names":["load","el","resolve","reject","options","onload","onerror","e","remove","attributes","Object","entries","forEach","k","v","setAttribute","document","head","appendChild","loadScripts","src","Array","isArray","Promise","then","all","s","push","$ele","querySelector","createElement","loadStyles","href","rel"],"mappings":"AAAA,SAASA,KACPC,EAAuC,EACvCC,OAAyB,EACzBC,MAAwB,EACxBC,OAA2D;IAE3DH,GAAGI,MAAM,GAAG;QACVH,QAAQD;IACV;IACAA,GAAGK,OAAO,GAAG,CAACC;QACZN,GAAGO,MAAM;QACTL,OAAOI;IACT;IACA,MAAM,EAAEE,aAAa,CAAC,CAAC,EAAE,GAAGL,WAAW,CAAC;IACxCM,OAAOC,OAAO,CAACF,YAAYG,OAAO,CAAC,CAAC,CAACC,GAAGC,EAAE;QACxCb,GAAGc,YAAY,CAACF,GAAGC;IACrB;IAEAE,SAASC,IAAI,CAACC,WAAW,CAACjB;AAC5B;AAQA,OAAO,SAASkB,YACdC,GAAsB,EACtBhB,OAAgD;IAEhD,IAAIiB,MAAMC,OAAO,CAACF,MAAM;QACtB,OAAOG,QAAQrB,OAAO,GAAGsB,IAAI,CAAC;YAC5B,MAAMC,MAAM,EAAE;YACd,KAAK,MAAMC,KAAKN,IAAK;gBACnBK,IAAIE,IAAI,CAAC,MAAMR,YAAYO;YAC7B;YACA,OAAOD;QACT;IACF;IACA,eAAe;IACf,MAAMG,OAAOZ,SAASa,aAAa,CAAC,CAAC,YAAY,EAAET,IAAI,EAAE,CAAC;IAC1D,IAAIQ,MAAM;QACR,OAAOL,QAAQrB,OAAO,CAAC0B;IACzB;IACA,OAAO,IAAIL,QAAQ,CAACrB,SAASC;QAC3B,MAAMF,KAAKe,SAASc,aAAa,CAAC;QAClC7B,GAAGmB,GAAG,GAAGA;QACTpB,KAAKC,IAAIC,SAASC,QAAQC;IAC5B;AACF;AAEA,OAAO,SAAS2B,WAAWC,IAAY,EAAE5B,OAAgD;IACvF,MAAMwB,OAAOZ,SAASa,aAAa,CAAC,CAAC,WAAW,EAAEG,KAAK,EAAE,CAAC;IAC1D,IAAIJ,MAAM;QACR,OAAOL,QAAQrB,OAAO,CAAC0B;IACzB;IAEA,OAAO,IAAIL,QAAQ,CAACrB,SAASC;QAC3B,MAAMF,KAAKe,SAASc,aAAa,CAAC;QAClC7B,GAAGgC,GAAG,GAAG;QACThC,GAAG+B,IAAI,GAAGA;QACVhC,KAAKC,IAAIC,SAASC,QAAQC;IAC5B;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../src/browsers/loaders.ts"],"sourcesContent":["function load(\n el: HTMLScriptElement | HTMLLinkElement,\n resolve: (v: any) => void,\n reject: (v: any) => void,\n options: { attributes: Record<string, string> } | undefined,\n) {\n el.onload = () => {\n resolve(el);\n };\n el.onerror = (e) => {\n el.remove();\n reject(e);\n };\n const { attributes = {} } = options || {};\n Object.entries(attributes).forEach(([k, v]) => {\n el.setAttribute(k, v);\n });\n\n document.head.appendChild(el);\n}\n\nexport function loadScripts(\n src: string[],\n options?: { attributes: Record<string, string> },\n): Promise<HTMLScriptElement[]>;\nexport function loadScripts(src: string, options?: { attributes: Record<string, string> }): Promise<HTMLScriptElement>;\n\nexport function loadScripts(\n src: string | string[],\n options?: { attributes: Record<string, string> },\n): Promise<HTMLScriptElement | HTMLScriptElement[]> {\n if (Array.isArray(src)) {\n return Promise.resolve().then(async () => {\n const all = [];\n for (const s of src) {\n all.push(await loadScripts(s));\n }\n return all;\n });\n }\n // todo quote ?\n const $ele = document.querySelector(`script[src=\"${src}\"]`) as HTMLScriptElement;\n if ($ele) {\n return Promise.resolve($ele);\n }\n return new Promise((resolve, reject) => {\n const el = document.createElement('script');\n el.src = src;\n load(el, resolve, reject, options);\n });\n}\n\nexport function loadStyles(href: string, options?: { attributes: Record<string, string> }): Promise<HTMLLinkElement> {\n const $ele = document.querySelector(`link[href=\"${href}\"]`) as HTMLLinkElement;\n if ($ele) {\n return Promise.resolve($ele);\n }\n\n return new Promise((resolve, reject) => {\n const el = document.createElement('link');\n el.rel = 'stylesheet';\n el.href = href;\n load(el, resolve, reject, options);\n });\n}\n"],"names":["load","el","resolve","reject","options","onload","onerror","e","remove","attributes","Object","entries","forEach","k","v","setAttribute","document","head","appendChild","loadScripts","src","Array","isArray","Promise","then","all","s","push","$ele","querySelector","createElement","loadStyles","href","rel"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,KACPC,EAAuC,EACvCC,OAAyB,EACzBC,MAAwB,EACxBC,OAA2D;IAE3DH,GAAGI,MAAM,GAAG;QACVH,QAAQD;IACV;IACAA,GAAGK,OAAO,GAAG,CAACC;QACZN,GAAGO,MAAM;QACTL,OAAOI;IACT;IACA,MAAM,EAAEE,aAAa,CAAC,CAAC,EAAE,GAAGL,WAAW,CAAC;IACxCM,OAAOC,OAAO,CAACF,YAAYG,OAAO,CAAC,CAAC,CAACC,GAAGC,EAAE;QACxCb,GAAGc,YAAY,CAACF,GAAGC;IACrB;IAEAE,SAASC,IAAI,CAACC,WAAW,CAACjB;AAC5B;AAQA,OAAO,SAASkB,YACdC,GAAsB,EACtBhB,OAAgD;IAEhD,IAAIiB,MAAMC,OAAO,CAACF,MAAM;QACtB,OAAOG,QAAQrB,OAAO,GAAGsB,IAAI,CAAC;YAC5B,MAAMC,MAAM,EAAE;YACd,KAAK,MAAMC,KAAKN,IAAK;gBACnBK,IAAIE,IAAI,CAAC,MAAMR,YAAYO;YAC7B;YACA,OAAOD;QACT;IACF;IACA,eAAe;IACf,MAAMG,OAAOZ,SAASa,aAAa,CAAC,CAAC,YAAY,EAAET,IAAI,EAAE,CAAC;IAC1D,IAAIQ,MAAM;QACR,OAAOL,QAAQrB,OAAO,CAAC0B;IACzB;IACA,OAAO,IAAIL,QAAQ,CAACrB,SAASC;QAC3B,MAAMF,KAAKe,SAASc,aAAa,CAAC;QAClC7B,GAAGmB,GAAG,GAAGA;QACTpB,KAAKC,IAAIC,SAASC,QAAQC;IAC5B;AACF;AAEA,OAAO,SAAS2B,WAAWC,IAAY,EAAE5B,OAAgD;IACvF,MAAMwB,OAAOZ,SAASa,aAAa,CAAC,CAAC,WAAW,EAAEG,KAAK,EAAE,CAAC;IAC1D,IAAIJ,MAAM;QACR,OAAOL,QAAQrB,OAAO,CAAC0B;IACzB;IAEA,OAAO,IAAIL,QAAQ,CAACrB,SAASC;QAC3B,MAAMF,KAAKe,SAASc,aAAa,CAAC;QAClC7B,GAAGgC,GAAG,GAAG;QACThC,GAAG+B,IAAI,GAAGA;QACVhC,KAAKC,IAAIC,SAASC,QAAQC;IAC5B;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cn/division/DivisionCode.ts"],"sourcesContent":["const DivisionCodeLevels = [\n {\n level: 1,\n code: 'Province',\n length: 2,\n label: '省',\n },\n {\n level: 2,\n code: 'City',\n length: 4,\n label: '市',\n },\n {\n level: 3,\n code: 'County',\n length: 6,\n label: '区县',\n },\n {\n level: 4,\n code: 'Town',\n length: 9,\n label: '乡镇',\n },\n {\n level: 5,\n code: 'Village',\n length: 12,\n label: '村',\n },\n] as const;\n\n// String(Number.MAX_SAFE_INTEGER).length=16\n// 12 is safe int\n\n/**\n * Codes for the administrative divisions of the People's Republic of China\n *\n * @see https://zh.wikipedia.org/wiki/GB/T_2260 中华人民共和国行政区划代码\n */\nexport class DivisionCode {\n static Levels = DivisionCodeLevels;\n\n private static instance: DivisionCode;\n\n static get() {\n return this.instance || (this.instance = new DivisionCode());\n }\n\n regex = /^(?<province>\\d{2})(?<city>\\d{2})?(?<county>\\d{2})?(?<town>\\d{3})?(?<village>\\d{3})?$/;\n\n provinces: Array<[number, string]> = [\n [11, '北京市'],\n [12, '天津市'],\n [13, '河北省'],\n [14, '山西省'],\n [15, '内蒙古自治区'],\n [21, '辽宁省'],\n [22, '吉林省'],\n [23, '黑龙江省'],\n [31, '上海市'],\n [32, '江苏省'],\n [33, '浙江省'],\n [34, '安徽省'],\n [35, '福建省'],\n [36, '江西省'],\n [37, '山东省'],\n [41, '河南省'],\n [42, '湖北省'],\n [43, '湖南省'],\n [44, '广东省'],\n [45, '广西壮族自治区'],\n [46, '海南省'],\n [50, '重庆市'],\n [51, '四川省'],\n [52, '贵州省'],\n [53, '云南省'],\n [54, '西藏自治区'],\n [61, '陕西省'],\n [62, '甘肃省'],\n [63, '青海省'],\n [64, '宁夏回族自治区'],\n [65, '新疆维吾尔自治区'],\n [71, '台湾省'],\n [81, '香港特别行政区'],\n [82, '澳门特别行政区'],\n // 9 国外\n ];\n}\n\n// export function getSimpleProvinceLabel(value: string) {\n// if (!value) {\n// return;\n// }\n// let label = value;\n// if (/[0-9]/.test(label)) {\n// label = label.slice(0, 2);\n// label = options.find((v) => v.value === label)?.label || label;\n// }\n// return label.replace(/省|市|(回族|维吾尔|壮族)?自治区|特别行政区$/, '');\n// }\n"],"names":["DivisionCodeLevels","level","code","length","label","DivisionCode","Levels","instance","get","regex","provinces"],"mappings":"AAAA,MAAMA,qBAAqB;IACzB;QACEC,OAAO;QACPC,MAAM;QACNC,QAAQ;QACRC,OAAO;IACT;IACA;QACEH,OAAO;QACPC,MAAM;QACNC,QAAQ;QACRC,OAAO;IACT;IACA;QACEH,OAAO;QACPC,MAAM;QACNC,QAAQ;QACRC,OAAO;IACT;IACA;QACEH,OAAO;QACPC,MAAM;QACNC,QAAQ;QACRC,OAAO;IACT;IACA;QACEH,OAAO;QACPC,MAAM;QACNC,QAAQ;QACRC,OAAO;IACT;CACD;AAED,4CAA4C;AAC5C,iBAAiB;AAEjB;;;;CAIC,GACD,OAAO,MAAMC;IACX,OAAOC,SAASN,mBAAmB;IAEnC,OAAeO,SAAuB;IAEtC,OAAOC,MAAM;QACX,OAAO,IAAI,CAACD,QAAQ,IAAK,CAAA,IAAI,CAACA,QAAQ,GAAG,IAAIF,cAAa;IAC5D;IAEAI,QAAQ,wFAAwF;IAEhGC,YAAqC;QACnC;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAS;QACd;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAO;QACZ;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAU;QACf;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAQ;QACb;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAU;QACf;YAAC;YAAI;SAAW;QAChB;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAU;QACf;YAAC;YAAI;SAAU;KAEhB,CAAC;AACJ,EAEA,0DAA0D;CAC1D,kBAAkB;CAClB,cAAc;CACd,MAAM;CACN,uBAAuB;CACvB,+BAA+B;CAC/B,iCAAiC;CACjC,sEAAsE;CACtE,MAAM;CACN,4DAA4D;CAC5D,IAAI"}
|
|
1
|
+
{"version":3,"sources":["../../../src/cn/division/DivisionCode.ts"],"sourcesContent":["const DivisionCodeLevels = [\n {\n level: 1,\n code: 'Province',\n length: 2,\n label: '省',\n },\n {\n level: 2,\n code: 'City',\n length: 4,\n label: '市',\n },\n {\n level: 3,\n code: 'County',\n length: 6,\n label: '区县',\n },\n {\n level: 4,\n code: 'Town',\n length: 9,\n label: '乡镇',\n },\n {\n level: 5,\n code: 'Village',\n length: 12,\n label: '村',\n },\n] as const;\n\n// String(Number.MAX_SAFE_INTEGER).length=16\n// 12 is safe int\n\n/**\n * Codes for the administrative divisions of the People's Republic of China\n *\n * @see https://zh.wikipedia.org/wiki/GB/T_2260 中华人民共和国行政区划代码\n */\nexport class DivisionCode {\n static Levels = DivisionCodeLevels;\n\n private static instance: DivisionCode;\n\n static get() {\n return this.instance || (this.instance = new DivisionCode());\n }\n\n regex = /^(?<province>\\d{2})(?<city>\\d{2})?(?<county>\\d{2})?(?<town>\\d{3})?(?<village>\\d{3})?$/;\n\n provinces: Array<[number, string]> = [\n [11, '北京市'],\n [12, '天津市'],\n [13, '河北省'],\n [14, '山西省'],\n [15, '内蒙古自治区'],\n [21, '辽宁省'],\n [22, '吉林省'],\n [23, '黑龙江省'],\n [31, '上海市'],\n [32, '江苏省'],\n [33, '浙江省'],\n [34, '安徽省'],\n [35, '福建省'],\n [36, '江西省'],\n [37, '山东省'],\n [41, '河南省'],\n [42, '湖北省'],\n [43, '湖南省'],\n [44, '广东省'],\n [45, '广西壮族自治区'],\n [46, '海南省'],\n [50, '重庆市'],\n [51, '四川省'],\n [52, '贵州省'],\n [53, '云南省'],\n [54, '西藏自治区'],\n [61, '陕西省'],\n [62, '甘肃省'],\n [63, '青海省'],\n [64, '宁夏回族自治区'],\n [65, '新疆维吾尔自治区'],\n [71, '台湾省'],\n [81, '香港特别行政区'],\n [82, '澳门特别行政区'],\n // 9 国外\n ];\n}\n\n// export function getSimpleProvinceLabel(value: string) {\n// if (!value) {\n// return;\n// }\n// let label = value;\n// if (/[0-9]/.test(label)) {\n// label = label.slice(0, 2);\n// label = options.find((v) => v.value === label)?.label || label;\n// }\n// return label.replace(/省|市|(回族|维吾尔|壮族)?自治区|特别行政区$/, '');\n// }\n"],"names":["DivisionCodeLevels","level","code","length","label","DivisionCode","Levels","instance","get","regex","provinces"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,MAAMA,qBAAqB;IACzB;QACEC,OAAO;QACPC,MAAM;QACNC,QAAQ;QACRC,OAAO;IACT;IACA;QACEH,OAAO;QACPC,MAAM;QACNC,QAAQ;QACRC,OAAO;IACT;IACA;QACEH,OAAO;QACPC,MAAM;QACNC,QAAQ;QACRC,OAAO;IACT;IACA;QACEH,OAAO;QACPC,MAAM;QACNC,QAAQ;QACRC,OAAO;IACT;IACA;QACEH,OAAO;QACPC,MAAM;QACNC,QAAQ;QACRC,OAAO;IACT;CACD;AAED,4CAA4C;AAC5C,iBAAiB;AAEjB;;;;CAIC,GACD,OAAO,MAAMC;IACX,OAAOC,SAASN,mBAAmB;IAEnC,OAAeO,SAAuB;IAEtC,OAAOC,MAAM;QACX,OAAO,IAAI,CAACD,QAAQ,IAAK,CAAA,IAAI,CAACA,QAAQ,GAAG,IAAIF,cAAa;IAC5D;IAEAI,QAAQ,wFAAwF;IAEhGC,YAAqC;QACnC;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAS;QACd;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAO;QACZ;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAU;QACf;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAQ;QACb;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAU;QACf;YAAC;YAAI;SAAW;QAChB;YAAC;YAAI;SAAM;QACX;YAAC;YAAI;SAAU;QACf;YAAC;YAAI;SAAU;KAEhB,CAAC;AACJ,EAEA,0DAA0D;CAC1D,kBAAkB;CAClB,cAAc;CACd,MAAM;CACN,uBAAuB;CACvB,+BAA+B;CAC/B,iCAAiC;CACjC,sEAAsE;CACtE,MAAM;CACN,4DAA4D;CAC5D,IAAI"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cn/division/binarySearch.ts"],"sourcesContent":["export function binarySearch<T, S = number>(\n arr: T[],\n value: S,\n compare: (a: T, b: S) => number,\n): {\n match: boolean;\n index: number;\n value: T | null;\n} {\n let low = 0;\n let high = arr.length - 1;\n while (low <= high) {\n const mid = (low + high) >> 1;\n const cmp = compare(arr[mid], value);\n if (cmp < 0) {\n low = mid + 1;\n } else if (cmp > 0) {\n high = mid - 1;\n } else {\n return { match: true, index: mid, value: arr[mid] };\n }\n }\n // When no match is found, `low` will be the correct insertIndex.\n return { match: false, index: low, value: null };\n}\n"],"names":["binarySearch","arr","value","compare","low","high","length","mid","cmp","match","index"],"mappings":"AAAA,OAAO,SAASA,aACdC,GAAQ,EACRC,KAAQ,EACRC,OAA+B;IAM/B,IAAIC,MAAM;IACV,IAAIC,OAAOJ,IAAIK,MAAM,GAAG;IACxB,MAAOF,OAAOC,KAAM;QAClB,MAAME,MAAM,AAACH,MAAMC,QAAS;QAC5B,MAAMG,MAAML,QAAQF,GAAG,CAACM,IAAI,EAAEL;QAC9B,IAAIM,MAAM,GAAG;YACXJ,MAAMG,MAAM;QACd,OAAO,IAAIC,MAAM,GAAG;YAClBH,OAAOE,MAAM;QACf,OAAO;YACL,OAAO;gBAAEE,OAAO;gBAAMC,OAAOH;gBAAKL,OAAOD,GAAG,CAACM,IAAI;YAAC;QACpD;IACF;IACA,iEAAiE;IACjE,OAAO;QAAEE,OAAO;QAAOC,OAAON;QAAKF,OAAO;IAAK;AACjD"}
|
|
1
|
+
{"version":3,"sources":["../../../src/cn/division/binarySearch.ts"],"sourcesContent":["export function binarySearch<T, S = number>(\n arr: T[],\n value: S,\n compare: (a: T, b: S) => number,\n): {\n match: boolean;\n index: number;\n value: T | null;\n} {\n let low = 0;\n let high = arr.length - 1;\n while (low <= high) {\n const mid = (low + high) >> 1;\n const cmp = compare(arr[mid], value);\n if (cmp < 0) {\n low = mid + 1;\n } else if (cmp > 0) {\n high = mid - 1;\n } else {\n return { match: true, index: mid, value: arr[mid] };\n }\n }\n // When no match is found, `low` will be the correct insertIndex.\n return { match: false, index: low, value: null };\n}\n"],"names":["binarySearch","arr","value","compare","low","high","length","mid","cmp","match","index"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAO,SAASA,aACdC,GAAQ,EACRC,KAAQ,EACRC,OAA+B;IAM/B,IAAIC,MAAM;IACV,IAAIC,OAAOJ,IAAIK,MAAM,GAAG;IACxB,MAAOF,OAAOC,KAAM;QAClB,MAAME,MAAM,AAACH,MAAMC,QAAS;QAC5B,MAAMG,MAAML,QAAQF,GAAG,CAACM,IAAI,EAAEL;QAC9B,IAAIM,MAAM,GAAG;YACXJ,MAAMG,MAAM;QACd,OAAO,IAAIC,MAAM,GAAG;YAClBH,OAAOE,MAAM;QACf,OAAO;YACL,OAAO;gBAAEE,OAAO;gBAAMC,OAAOH;gBAAKL,OAAOD,GAAG,CAACM,IAAI;YAAC;QACpD;IACF;IACA,iEAAiE;IACjE,OAAO;QAAEE,OAAO;QAAOC,OAAON;QAAKF,OAAO;IAAK;AACjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cn/id/Mod11Checksum.ts"],"sourcesContent":["/**\n * ISO 7064:1983, MOD 11-2.\n */\nexport class Mod11Checksum {\n weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1];\n private static instance: Mod11Checksum;\n\n static get() {\n return this.instance || (this.instance = new Mod11Checksum());\n }\n\n verify(s: string) {\n return s.at(-1) === this.generate(s.slice(0, s.length - 1));\n }\n\n generate(s: string) {\n const { weights } = this;\n let sum = 0;\n for (let i = 0; i < s.length; i++) {\n sum += parseInt(s[i]) * weights[i];\n }\n const num = (12 - (sum % 11)) % 11;\n if (num < 10) {\n return num.toString();\n } else {\n return 'X';\n }\n }\n}\n"],"names":["Mod11Checksum","weights","instance","get","verify","s","at","generate","slice","length","sum","i","parseInt","num","toString"],"mappings":"AAAA;;CAEC,GACD,OAAO,MAAMA;IACXC,UAAU;QAAC;QAAG;QAAG;QAAI;QAAG;QAAG;QAAG;QAAG;QAAG;QAAG;QAAG;QAAG;QAAG;QAAI;QAAG;QAAG;QAAG;QAAG;KAAE,CAAC;IACnE,OAAeC,SAAwB;IAEvC,OAAOC,MAAM;QACX,OAAO,IAAI,CAACD,QAAQ,IAAK,CAAA,IAAI,CAACA,QAAQ,GAAG,IAAIF,eAAc;IAC7D;IAEAI,OAAOC,CAAS,EAAE;QAChB,OAAOA,EAAEC,EAAE,CAAC,CAAC,OAAO,IAAI,CAACC,QAAQ,CAACF,EAAEG,KAAK,CAAC,GAAGH,EAAEI,MAAM,GAAG;IAC1D;IAEAF,SAASF,CAAS,EAAE;QAClB,MAAM,EAAEJ,OAAO,EAAE,GAAG,IAAI;QACxB,IAAIS,MAAM;QACV,IAAK,IAAIC,IAAI,GAAGA,IAAIN,EAAEI,MAAM,EAAEE,IAAK;YACjCD,OAAOE,SAASP,CAAC,CAACM,EAAE,IAAIV,OAAO,CAACU,EAAE;QACpC;QACA,MAAME,MAAM,AAAC,CAAA,KAAMH,MAAM,EAAE,IAAK;QAChC,IAAIG,MAAM,IAAI;YACZ,OAAOA,IAAIC,QAAQ;QACrB,OAAO;YACL,OAAO;QACT;IACF;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../../src/cn/id/Mod11Checksum.ts"],"sourcesContent":["/**\n * ISO 7064:1983, MOD 11-2.\n */\nexport class Mod11Checksum {\n weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1];\n private static instance: Mod11Checksum;\n\n static get() {\n return this.instance || (this.instance = new Mod11Checksum());\n }\n\n verify(s: string) {\n return s.at(-1) === this.generate(s.slice(0, s.length - 1));\n }\n\n generate(s: string) {\n const { weights } = this;\n let sum = 0;\n for (let i = 0; i < s.length; i++) {\n sum += parseInt(s[i]) * weights[i];\n }\n const num = (12 - (sum % 11)) % 11;\n if (num < 10) {\n return num.toString();\n } else {\n return 'X';\n }\n }\n}\n"],"names":["Mod11Checksum","weights","instance","get","verify","s","at","generate","slice","length","sum","i","parseInt","num","toString"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;CAEC,GACD,OAAO,MAAMA;IACXC,UAAU;QAAC;QAAG;QAAG;QAAI;QAAG;QAAG;QAAG;QAAG;QAAG;QAAG;QAAG;QAAG;QAAG;QAAI;QAAG;QAAG;QAAG;QAAG;KAAE,CAAC;IACnE,OAAeC,SAAwB;IAEvC,OAAOC,MAAM;QACX,OAAO,IAAI,CAACD,QAAQ,IAAK,CAAA,IAAI,CAACA,QAAQ,GAAG,IAAIF,eAAc;IAC7D;IAEAI,OAAOC,CAAS,EAAE;QAChB,OAAOA,EAAEC,EAAE,CAAC,CAAC,OAAO,IAAI,CAACC,QAAQ,CAACF,EAAEG,KAAK,CAAC,GAAGH,EAAEI,MAAM,GAAG;IAC1D;IAEAF,SAASF,CAAS,EAAE;QAClB,MAAM,EAAEJ,OAAO,EAAE,GAAG,IAAI;QACxB,IAAIS,MAAM;QACV,IAAK,IAAIC,IAAI,GAAGA,IAAIN,EAAEI,MAAM,EAAEE,IAAK;YACjCD,OAAOE,SAASP,CAAC,CAACM,EAAE,IAAIV,OAAO,CAACU,EAAE;QACpC;QACA,MAAME,MAAM,AAAC,CAAA,KAAMH,MAAM,EAAE,IAAK;QAChC,IAAIG,MAAM,IAAI;YACZ,OAAOA,IAAIC,QAAQ;QACrB,OAAO;YACL,OAAO;QACT;IACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cn/id/ResidentIdNumber.ts"],"sourcesContent":["import { Mod11Checksum } from './Mod11Checksum';\n\nexport class ResidentIdNumber {\n checksum = Mod11Checksum.get();\n\n // 9 https://zh.wikipedia.org/wiki/中华人民共和国外国人永久居留身份证\n // 9 标识码\n // 申领地代码 - 2 位行政区划\n // 国籍国代码 - 3 位数字 https://zh.wikipedia.org/wiki/ISO_3166-1数字代码\n\n regex =\n /^(?<division>[1-9]\\d{5})(?<year>18|19|20)\\d{2}(?<month>0[1-9]|1[0-2])(?<day>0[1-9]|[12]\\d|3[01])(?<sequence>\\d{3})(?<checksum>[0-9Xx])$/;\n\n private static instance: ResidentIdNumber;\n\n static get() {\n return (this.instance ||= new ResidentIdNumber());\n }\n\n verify(s: string) {\n if (!s) return false;\n return this.regex.test(s) && this.checksum.verify(s.toUpperCase());\n }\n\n parse(s: string): IdNumber | undefined {\n if (!this.verify(s)) {\n return;\n }\n\n let date = s.slice(6, 14);\n let y = parseInt(date.slice(0, 4));\n let m = parseInt(date.slice(4, 6));\n let d = parseInt(date.slice(6));\n return new IdNumber(\n s.slice(0, 6),\n // new Date(`${y}-${m}-${d}`), // YYYYMMDD\n new Date(Date.UTC(y, m - 1, d)), // 避免时区问题\n parseInt(s.slice(14, 17)),\n s.slice(17, 18).toUpperCase(),\n );\n }\n}\n\ninterface ParseResidentIdNumberResult {\n division: string;\n birthDate: Date;\n sequence: number;\n checksum: string;\n\n valid: boolean;\n male: boolean;\n female: boolean;\n sex: 'Male' | 'Female';\n age: number;\n}\n\nclass IdNumber {\n constructor(\n public division: string,\n public birthDate: Date,\n public sequence: number,\n public checksum: string,\n ) {}\n\n toString() {\n return this.base + this.checksum;\n }\n\n toJSON() {\n return this.toString();\n }\n\n toObject(): ParseResidentIdNumberResult {\n const { division, birthDate, sequence, checksum, age, valid, male, female, sex } = this;\n return {\n division,\n birthDate,\n sequence,\n checksum,\n age,\n valid,\n male,\n female,\n sex,\n };\n }\n\n get valid() {\n return ResidentIdNumber.get().verify(this.toString());\n }\n\n get male() {\n return this.sequence % 2 === 1;\n }\n\n get female() {\n return this.sequence % 2 === 0;\n }\n\n get age() {\n return new Date().getFullYear() - this.birthDate.getFullYear();\n }\n\n get sex(): 'Male' | 'Female' {\n return this.sequence % 2 === 1 ? 'Male' : 'Female';\n }\n\n /**\n * base for checksum\n * @private\n */\n private get base() {\n return [this.division, formatDate(this.birthDate, 'YYYYMMDD'), this.sequence.toString().padStart(3, '0')].join('');\n }\n}\n\nfunction formatDate(date: Date, format = 'YYYYMMDD') {\n switch (format) {\n case 'YYYYMMDD': {\n const year = date.getFullYear();\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const day = date.getDate().toString().padStart(2, '0');\n return `${year}${month}${day}`;\n }\n default:\n throw new Error(`Invalid format`);\n }\n}\n"],"names":["Mod11Checksum","ResidentIdNumber","checksum","get","regex","instance","verify","s","test","toUpperCase","parse","date","slice","y","parseInt","m","d","IdNumber","Date","UTC","constructor","division","birthDate","sequence","toString","base","toJSON","toObject","age","valid","male","female","sex","getFullYear","formatDate","padStart","join","format","year","month","getMonth","day","getDate","Error"],"mappings":"AAAA,SAASA,aAAa,QAAQ,kBAAkB;AAEhD,OAAO,MAAMC;IACXC,WAAWF,cAAcG,GAAG,GAAG;IAE/B,oDAAoD;IACpD,QAAQ;IACR,kBAAkB;IAClB,6DAA6D;IAE7DC,QACE,0IAA0I;IAE5I,OAAeC,SAA2B;IAE1C,OAAOF,MAAM;QACX,OAAQ,IAAI,CAACE,QAAQ,KAAK,IAAIJ;IAChC;IAEAK,OAAOC,CAAS,EAAE;QAChB,IAAI,CAACA,GAAG,OAAO;QACf,OAAO,IAAI,CAACH,KAAK,CAACI,IAAI,CAACD,MAAM,IAAI,CAACL,QAAQ,CAACI,MAAM,CAACC,EAAEE,WAAW;IACjE;IAEAC,MAAMH,CAAS,EAAwB;QACrC,IAAI,CAAC,IAAI,CAACD,MAAM,CAACC,IAAI;YACnB;QACF;QAEA,IAAII,OAAOJ,EAAEK,KAAK,CAAC,GAAG;QACtB,IAAIC,IAAIC,SAASH,KAAKC,KAAK,CAAC,GAAG;QAC/B,IAAIG,IAAID,SAASH,KAAKC,KAAK,CAAC,GAAG;QAC/B,IAAII,IAAIF,SAASH,KAAKC,KAAK,CAAC;QAC5B,OAAO,IAAIK,SACTV,EAAEK,KAAK,CAAC,GAAG,IACX,0CAA0C;QAC1C,IAAIM,KAAKA,KAAKC,GAAG,CAACN,GAAGE,IAAI,GAAGC,KAC5BF,SAASP,EAAEK,KAAK,CAAC,IAAI,MACrBL,EAAEK,KAAK,CAAC,IAAI,IAAIH,WAAW;IAE/B;AACF;AAeA,IAAA,AAAMQ,WAAN,MAAMA;;;;;IACJG,YACE,AAAOC,QAAgB,EACvB,AAAOC,SAAe,EACtB,AAAOC,QAAgB,EACvB,AAAOrB,QAAgB,CACvB;aAJOmB,WAAAA;aACAC,YAAAA;aACAC,WAAAA;aACArB,WAAAA;IACN;IAEHsB,WAAW;QACT,OAAO,IAAI,CAACC,IAAI,GAAG,IAAI,CAACvB,QAAQ;IAClC;IAEAwB,SAAS;QACP,OAAO,IAAI,CAACF,QAAQ;IACtB;IAEAG,WAAwC;QACtC,MAAM,EAAEN,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAErB,QAAQ,EAAE0B,GAAG,EAAEC,KAAK,EAAEC,IAAI,EAAEC,MAAM,EAAEC,GAAG,EAAE,GAAG,IAAI;QACvF,OAAO;YACLX;YACAC;YACAC;YACArB;YACA0B;YACAC;YACAC;YACAC;YACAC;QACF;IACF;IAEA,IAAIH,QAAQ;QACV,OAAO5B,iBAAiBE,GAAG,GAAGG,MAAM,CAAC,IAAI,CAACkB,QAAQ;IACpD;IAEA,IAAIM,OAAO;QACT,OAAO,IAAI,CAACP,QAAQ,GAAG,MAAM;IAC/B;IAEA,IAAIQ,SAAS;QACX,OAAO,IAAI,CAACR,QAAQ,GAAG,MAAM;IAC/B;IAEA,IAAIK,MAAM;QACR,OAAO,IAAIV,OAAOe,WAAW,KAAK,IAAI,CAACX,SAAS,CAACW,WAAW;IAC9D;IAEA,IAAID,MAAyB;QAC3B,OAAO,IAAI,CAACT,QAAQ,GAAG,MAAM,IAAI,SAAS;IAC5C;IAEA;;;GAGC,GACD,IAAYE,OAAO;QACjB,OAAO;YAAC,IAAI,CAACJ,QAAQ;YAAEa,WAAW,IAAI,CAACZ,SAAS,EAAE;YAAa,IAAI,CAACC,QAAQ,CAACC,QAAQ,GAAGW,QAAQ,CAAC,GAAG;SAAK,CAACC,IAAI,CAAC;IACjH;AACF;AAEA,SAASF,WAAWvB,IAAU,EAAE0B,SAAS,UAAU;IACjD,OAAQA;QACN,KAAK;YAAY;gBACf,MAAMC,OAAO3B,KAAKsB,WAAW;gBAC7B,MAAMM,QAAQ,AAAC5B,CAAAA,KAAK6B,QAAQ,KAAK,CAAA,EAAGhB,QAAQ,GAAGW,QAAQ,CAAC,GAAG;gBAC3D,MAAMM,MAAM9B,KAAK+B,OAAO,GAAGlB,QAAQ,GAAGW,QAAQ,CAAC,GAAG;gBAClD,OAAO,CAAC,EAAEG,KAAK,EAAEC,MAAM,EAAEE,IAAI,CAAC;YAChC;QACA;YACE,MAAM,IAAIE,MAAM,CAAC,cAAc,CAAC;IACpC;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../../src/cn/id/ResidentIdNumber.ts"],"sourcesContent":["import { Mod11Checksum } from './Mod11Checksum';\n\nexport class ResidentIdNumber {\n checksum = Mod11Checksum.get();\n\n // 9 https://zh.wikipedia.org/wiki/中华人民共和国外国人永久居留身份证\n // 9 标识码\n // 申领地代码 - 2 位行政区划\n // 国籍国代码 - 3 位数字 https://zh.wikipedia.org/wiki/ISO_3166-1数字代码\n\n regex =\n /^(?<division>[1-9]\\d{5})(?<year>18|19|20)\\d{2}(?<month>0[1-9]|1[0-2])(?<day>0[1-9]|[12]\\d|3[01])(?<sequence>\\d{3})(?<checksum>[0-9Xx])$/;\n\n private static instance: ResidentIdNumber;\n\n static get() {\n return (this.instance ||= new ResidentIdNumber());\n }\n\n verify(s: string) {\n if (!s) return false;\n return this.regex.test(s) && this.checksum.verify(s.toUpperCase());\n }\n\n parse(s: string): IdNumber | undefined {\n if (!this.verify(s)) {\n return;\n }\n\n let date = s.slice(6, 14);\n let y = parseInt(date.slice(0, 4));\n let m = parseInt(date.slice(4, 6));\n let d = parseInt(date.slice(6));\n return new IdNumber(\n s.slice(0, 6),\n // new Date(`${y}-${m}-${d}`), // YYYYMMDD\n new Date(Date.UTC(y, m - 1, d)), // 避免时区问题\n parseInt(s.slice(14, 17)),\n s.slice(17, 18).toUpperCase(),\n );\n }\n}\n\ninterface ParseResidentIdNumberResult {\n division: string;\n birthDate: Date;\n sequence: number;\n checksum: string;\n\n valid: boolean;\n male: boolean;\n female: boolean;\n sex: 'Male' | 'Female';\n age: number;\n}\n\nclass IdNumber {\n constructor(\n public division: string,\n public birthDate: Date,\n public sequence: number,\n public checksum: string,\n ) {}\n\n toString() {\n return this.base + this.checksum;\n }\n\n toJSON() {\n return this.toString();\n }\n\n toObject(): ParseResidentIdNumberResult {\n const { division, birthDate, sequence, checksum, age, valid, male, female, sex } = this;\n return {\n division,\n birthDate,\n sequence,\n checksum,\n age,\n valid,\n male,\n female,\n sex,\n };\n }\n\n get valid() {\n return ResidentIdNumber.get().verify(this.toString());\n }\n\n get male() {\n return this.sequence % 2 === 1;\n }\n\n get female() {\n return this.sequence % 2 === 0;\n }\n\n get age() {\n return new Date().getFullYear() - this.birthDate.getFullYear();\n }\n\n get sex(): 'Male' | 'Female' {\n return this.sequence % 2 === 1 ? 'Male' : 'Female';\n }\n\n /**\n * base for checksum\n * @private\n */\n private get base() {\n return [this.division, formatDate(this.birthDate, 'YYYYMMDD'), this.sequence.toString().padStart(3, '0')].join('');\n }\n}\n\nfunction formatDate(date: Date, format = 'YYYYMMDD') {\n switch (format) {\n case 'YYYYMMDD': {\n const year = date.getFullYear();\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const day = date.getDate().toString().padStart(2, '0');\n return `${year}${month}${day}`;\n }\n default:\n throw new Error(`Invalid format`);\n }\n}\n"],"names":["Mod11Checksum","ResidentIdNumber","checksum","get","regex","instance","verify","s","test","toUpperCase","parse","date","slice","y","parseInt","m","d","IdNumber","Date","UTC","constructor","division","birthDate","sequence","toString","base","toJSON","toObject","age","valid","male","female","sex","getFullYear","formatDate","padStart","join","format","year","month","getMonth","day","getDate","Error"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,aAAa,QAAQ,kBAAkB;AAEhD,OAAO,MAAMC;IACXC,WAAWF,cAAcG,GAAG,GAAG;IAE/B,oDAAoD;IACpD,QAAQ;IACR,kBAAkB;IAClB,6DAA6D;IAE7DC,QACE,0IAA0I;IAE5I,OAAeC,SAA2B;IAE1C,OAAOF,MAAM;QACX,OAAQ,IAAI,CAACE,QAAQ,KAAK,IAAIJ;IAChC;IAEAK,OAAOC,CAAS,EAAE;QAChB,IAAI,CAACA,GAAG,OAAO;QACf,OAAO,IAAI,CAACH,KAAK,CAACI,IAAI,CAACD,MAAM,IAAI,CAACL,QAAQ,CAACI,MAAM,CAACC,EAAEE,WAAW;IACjE;IAEAC,MAAMH,CAAS,EAAwB;QACrC,IAAI,CAAC,IAAI,CAACD,MAAM,CAACC,IAAI;YACnB;QACF;QAEA,IAAII,OAAOJ,EAAEK,KAAK,CAAC,GAAG;QACtB,IAAIC,IAAIC,SAASH,KAAKC,KAAK,CAAC,GAAG;QAC/B,IAAIG,IAAID,SAASH,KAAKC,KAAK,CAAC,GAAG;QAC/B,IAAII,IAAIF,SAASH,KAAKC,KAAK,CAAC;QAC5B,OAAO,IAAIK,SACTV,EAAEK,KAAK,CAAC,GAAG,IACX,0CAA0C;QAC1C,IAAIM,KAAKA,KAAKC,GAAG,CAACN,GAAGE,IAAI,GAAGC,KAC5BF,SAASP,EAAEK,KAAK,CAAC,IAAI,MACrBL,EAAEK,KAAK,CAAC,IAAI,IAAIH,WAAW;IAE/B;AACF;AAeA,IAAA,AAAMQ,WAAN,MAAMA;;;;;IACJG,YACE,AAAOC,QAAgB,EACvB,AAAOC,SAAe,EACtB,AAAOC,QAAgB,EACvB,AAAOrB,QAAgB,CACvB;aAJOmB,WAAAA;aACAC,YAAAA;aACAC,WAAAA;aACArB,WAAAA;IACN;IAEHsB,WAAW;QACT,OAAO,IAAI,CAACC,IAAI,GAAG,IAAI,CAACvB,QAAQ;IAClC;IAEAwB,SAAS;QACP,OAAO,IAAI,CAACF,QAAQ;IACtB;IAEAG,WAAwC;QACtC,MAAM,EAAEN,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAErB,QAAQ,EAAE0B,GAAG,EAAEC,KAAK,EAAEC,IAAI,EAAEC,MAAM,EAAEC,GAAG,EAAE,GAAG,IAAI;QACvF,OAAO;YACLX;YACAC;YACAC;YACArB;YACA0B;YACAC;YACAC;YACAC;YACAC;QACF;IACF;IAEA,IAAIH,QAAQ;QACV,OAAO5B,iBAAiBE,GAAG,GAAGG,MAAM,CAAC,IAAI,CAACkB,QAAQ;IACpD;IAEA,IAAIM,OAAO;QACT,OAAO,IAAI,CAACP,QAAQ,GAAG,MAAM;IAC/B;IAEA,IAAIQ,SAAS;QACX,OAAO,IAAI,CAACR,QAAQ,GAAG,MAAM;IAC/B;IAEA,IAAIK,MAAM;QACR,OAAO,IAAIV,OAAOe,WAAW,KAAK,IAAI,CAACX,SAAS,CAACW,WAAW;IAC9D;IAEA,IAAID,MAAyB;QAC3B,OAAO,IAAI,CAACT,QAAQ,GAAG,MAAM,IAAI,SAAS;IAC5C;IAEA;;;GAGC,GACD,IAAYE,OAAO;QACjB,OAAO;YAAC,IAAI,CAACJ,QAAQ;YAAEa,WAAW,IAAI,CAACZ,SAAS,EAAE;YAAa,IAAI,CAACC,QAAQ,CAACC,QAAQ,GAAGW,QAAQ,CAAC,GAAG;SAAK,CAACC,IAAI,CAAC;IACjH;AACF;AAEA,SAASF,WAAWvB,IAAU,EAAE0B,SAAS,UAAU;IACjD,OAAQA;QACN,KAAK;YAAY;gBACf,MAAMC,OAAO3B,KAAKsB,WAAW;gBAC7B,MAAMM,QAAQ,AAAC5B,CAAAA,KAAK6B,QAAQ,KAAK,CAAA,EAAGhB,QAAQ,GAAGW,QAAQ,CAAC,GAAG;gBAC3D,MAAMM,MAAM9B,KAAK+B,OAAO,GAAGlB,QAAQ,GAAGW,QAAQ,CAAC,GAAG;gBAClD,OAAO,CAAC,EAAEG,KAAK,EAAEC,MAAM,EAAEE,IAAI,CAAC;YAChC;QACA;YACE,MAAM,IAAIE,MAAM,CAAC,cAAc,CAAC;IACpC;AACF"}
|
package/lib/cn/id/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cn/id/types.ts"],"sourcesContent":["/**\n * 居民身份证\n *\n * @see https://en.wikipedia.org/wiki/Resident_Identity_Card\n * @see https://en.wikipedia.org/wiki/Foreign_Permanent_Resident_ID_Card\n */\nexport interface ResidentIdentityCard {\n // 姓名\n name: string;\n // 性别\n gender: string;\n // 民族\n ethnicity: string;\n // 出生日期\n birthDate: Date;\n // 地址\n domicile: string;\n // 身份证号\n idNumber: string;\n // 签发机关\n issuingAuthority: string;\n // 有效期开始日期\n validStartDate: Date;\n // 有效期结束日期\n validEndDate?: Date;\n}\n"],"names":[],"mappings":"AAAA;;;;;CAKC,GACD,WAmBC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/cn/id/types.ts"],"sourcesContent":["/**\n * 居民身份证\n *\n * @see https://en.wikipedia.org/wiki/Resident_Identity_Card\n * @see https://en.wikipedia.org/wiki/Foreign_Permanent_Resident_ID_Card\n */\nexport interface ResidentIdentityCard {\n // 姓名\n name: string;\n // 性别\n gender: string;\n // 民族\n ethnicity: string;\n // 出生日期\n birthDate: Date;\n // 地址\n domicile: string;\n // 身份证号\n idNumber: string;\n // 签发机关\n issuingAuthority: string;\n // 有效期开始日期\n validStartDate: Date;\n // 有效期结束日期\n validEndDate?: Date;\n}\n"],"names":[],"rangeMappings":";;;;;","mappings":"AAAA;;;;;CAKC,GACD,WAmBC"}
|
package/lib/cn/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cn/index.ts"],"sourcesContent":["/**\n * China related utilities.\n *\n * @packageDocumentation\n */\n\nexport { parseChineseNumber } from './parseChineseNumber';\n\nexport { isUSCC } from './uscc/isUSCC';\nexport { USCC } from './uscc/USCC';\n\nexport { ResidentIdNumber } from './id/ResidentIdNumber';\n\nexport { DivisionCode } from './division/DivisionCode';\n\nexport { toPinyinPure, toPinyinPureFirst, getCharToPinyinTable } from './pinyin/toPinyinPure';\nexport { loadCharToPinyinTable } from './pinyin/loader';\n"],"names":["parseChineseNumber","isUSCC","USCC","ResidentIdNumber","DivisionCode","toPinyinPure","toPinyinPureFirst","getCharToPinyinTable","loadCharToPinyinTable"],"mappings":"AAAA;;;;CAIC,GAED,SAASA,kBAAkB,QAAQ,uBAAuB;AAE1D,SAASC,MAAM,QAAQ,gBAAgB;AACvC,SAASC,IAAI,QAAQ,cAAc;AAEnC,SAASC,gBAAgB,QAAQ,wBAAwB;AAEzD,SAASC,YAAY,QAAQ,0BAA0B;AAEvD,SAASC,YAAY,EAAEC,iBAAiB,EAAEC,oBAAoB,QAAQ,wBAAwB;AAC9F,SAASC,qBAAqB,QAAQ,kBAAkB"}
|
|
1
|
+
{"version":3,"sources":["../../src/cn/index.ts"],"sourcesContent":["/**\n * China related utilities.\n *\n * @packageDocumentation\n */\n\nexport { parseChineseNumber } from './parseChineseNumber';\n\nexport { isUSCC } from './uscc/isUSCC';\nexport { USCC } from './uscc/USCC';\n\nexport { ResidentIdNumber } from './id/ResidentIdNumber';\n\nexport { DivisionCode } from './division/DivisionCode';\n\nexport { toPinyinPure, toPinyinPureFirst, getCharToPinyinTable } from './pinyin/toPinyinPure';\nexport { loadCharToPinyinTable } from './pinyin/loader';\n"],"names":["parseChineseNumber","isUSCC","USCC","ResidentIdNumber","DivisionCode","toPinyinPure","toPinyinPureFirst","getCharToPinyinTable","loadCharToPinyinTable"],"rangeMappings":";;;;;;;;;;","mappings":"AAAA;;;;CAIC,GAED,SAASA,kBAAkB,QAAQ,uBAAuB;AAE1D,SAASC,MAAM,QAAQ,gBAAgB;AACvC,SAASC,IAAI,QAAQ,cAAc;AAEnC,SAASC,gBAAgB,QAAQ,wBAAwB;AAEzD,SAASC,YAAY,QAAQ,0BAA0B;AAEvD,SAASC,YAAY,EAAEC,iBAAiB,EAAEC,oBAAoB,QAAQ,wBAAwB;AAC9F,SAASC,qBAAqB,QAAQ,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cn/parseChineseNumber.ts"],"sourcesContent":["const ToNumber: Record<string, number> = {\n 〇: 0,\n 一: 1,\n 二: 2,\n 三: 3,\n 四: 4,\n 五: 5,\n 六: 6,\n 七: 7,\n 八: 8,\n 九: 9,\n 十: 10,\n 百: 100,\n 千: 1000,\n 万: 10_000,\n 零: 0,\n 壹: 1,\n 贰: 2,\n 叁: 3,\n 肆: 4,\n 伍: 5,\n 陆: 6,\n 柒: 7,\n 捌: 8,\n 玖: 9,\n 拾: 10,\n 佰: 100,\n 仟: 1000,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n};\n\n// 一万一 -> 10001\n// 一万一百一 -> 10101\n// 一万 -> 10000\n// 10000 -> 10000\nexport function parseChineseNumber(s: string | number) {\n if (typeof s === 'number') {\n return s;\n }\n\n let n = 0;\n let c = 0;\n let base = 0;\n let shouldAddLast = false;\n for (const char of s.split('').reverse()) {\n c = ToNumber[char];\n if (c === undefined) {\n throw new Error(`无法解析的数字: ${char}`);\n }\n\n switch (c) {\n case 10: {\n base = 1;\n break;\n }\n\n case 100: {\n base = 2;\n break;\n }\n\n case 1000: {\n base = 3;\n break;\n }\n\n case 10_000: {\n base = 4;\n break;\n }\n }\n\n //\n if (c < 10) {\n n += c * 10 ** base;\n base++;\n shouldAddLast = false;\n } else {\n shouldAddLast = true;\n }\n }\n\n if (shouldAddLast) {\n n += c;\n }\n\n return n;\n}\n"],"names":["ToNumber","〇","一","二","三","四","五","六","七","八","九","十","百","千","万","零","壹","贰","叁","肆","伍","陆","柒","捌","玖","拾","佰","仟","parseChineseNumber","s","n","c","base","shouldAddLast","char","split","reverse","undefined","Error"],"mappings":"AAAA,MAAMA,WAAmC;IACvCC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;AACL;AAEA,eAAe;AACf,iBAAiB;AACjB,cAAc;AACd,iBAAiB;AACjB,OAAO,SAASC,mBAAmBC,CAAkB;IACnD,IAAI,OAAOA,MAAM,UAAU;QACzB,OAAOA;IACT;IAEA,IAAIC,IAAI;IACR,IAAIC,IAAI;IACR,IAAIC,OAAO;IACX,IAAIC,gBAAgB;IACpB,KAAK,MAAMC,QAAQL,EAAEM,KAAK,CAAC,IAAIC,OAAO,GAAI;QACxCL,IAAI/B,QAAQ,CAACkC,KAAK;QAClB,IAAIH,MAAMM,WAAW;YACnB,MAAM,IAAIC,MAAM,CAAC,SAAS,EAAEJ,KAAK,CAAC;QACpC;QAEA,OAAQH;YACN,KAAK;gBAAI;oBACPC,OAAO;oBACP;gBACF;YAEA,KAAK;gBAAK;oBACRA,OAAO;oBACP;gBACF;YAEA,KAAK;gBAAM;oBACTA,OAAO;oBACP;gBACF;YAEA,KAAK;gBAAQ;oBACXA,OAAO;oBACP;gBACF;QACF;QAEA,EAAE;QACF,IAAID,IAAI,IAAI;YACVD,KAAKC,IAAI,MAAMC;YACfA;YACAC,gBAAgB;QAClB,OAAO;YACLA,gBAAgB;QAClB;IACF;IAEA,IAAIA,eAAe;QACjBH,KAAKC;IACP;IAEA,OAAOD;AACT"}
|
|
1
|
+
{"version":3,"sources":["../../src/cn/parseChineseNumber.ts"],"sourcesContent":["const ToNumber: Record<string, number> = {\n 〇: 0,\n 一: 1,\n 二: 2,\n 三: 3,\n 四: 4,\n 五: 5,\n 六: 6,\n 七: 7,\n 八: 8,\n 九: 9,\n 十: 10,\n 百: 100,\n 千: 1000,\n 万: 10_000,\n 零: 0,\n 壹: 1,\n 贰: 2,\n 叁: 3,\n 肆: 4,\n 伍: 5,\n 陆: 6,\n 柒: 7,\n 捌: 8,\n 玖: 9,\n 拾: 10,\n 佰: 100,\n 仟: 1000,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n};\n\n// 一万一 -> 10001\n// 一万一百一 -> 10101\n// 一万 -> 10000\n// 10000 -> 10000\nexport function parseChineseNumber(s: string | number) {\n if (typeof s === 'number') {\n return s;\n }\n\n let n = 0;\n let c = 0;\n let base = 0;\n let shouldAddLast = false;\n for (const char of s.split('').reverse()) {\n c = ToNumber[char];\n if (c === undefined) {\n throw new Error(`无法解析的数字: ${char}`);\n }\n\n switch (c) {\n case 10: {\n base = 1;\n break;\n }\n\n case 100: {\n base = 2;\n break;\n }\n\n case 1000: {\n base = 3;\n break;\n }\n\n case 10_000: {\n base = 4;\n break;\n }\n }\n\n //\n if (c < 10) {\n n += c * 10 ** base;\n base++;\n shouldAddLast = false;\n } else {\n shouldAddLast = true;\n }\n }\n\n if (shouldAddLast) {\n n += c;\n }\n\n return n;\n}\n"],"names":["ToNumber","〇","一","二","三","四","五","六","七","八","九","十","百","千","万","零","壹","贰","叁","肆","伍","陆","柒","捌","玖","拾","佰","仟","parseChineseNumber","s","n","c","base","shouldAddLast","char","split","reverse","undefined","Error"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,MAAMA,WAAmC;IACvCC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;AACL;AAEA,eAAe;AACf,iBAAiB;AACjB,cAAc;AACd,iBAAiB;AACjB,OAAO,SAASC,mBAAmBC,CAAkB;IACnD,IAAI,OAAOA,MAAM,UAAU;QACzB,OAAOA;IACT;IAEA,IAAIC,IAAI;IACR,IAAIC,IAAI;IACR,IAAIC,OAAO;IACX,IAAIC,gBAAgB;IACpB,KAAK,MAAMC,QAAQL,EAAEM,KAAK,CAAC,IAAIC,OAAO,GAAI;QACxCL,IAAI/B,QAAQ,CAACkC,KAAK;QAClB,IAAIH,MAAMM,WAAW;YACnB,MAAM,IAAIC,MAAM,CAAC,SAAS,EAAEJ,KAAK,CAAC;QACpC;QAEA,OAAQH;YACN,KAAK;gBAAI;oBACPC,OAAO;oBACP;gBACF;YAEA,KAAK;gBAAK;oBACRA,OAAO;oBACP;gBACF;YAEA,KAAK;gBAAM;oBACTA,OAAO;oBACP;gBACF;YAEA,KAAK;gBAAQ;oBACXA,OAAO;oBACP;gBACF;QACF;QAEA,EAAE;QACF,IAAID,IAAI,IAAI;YACVD,KAAKC,IAAI,MAAMC;YACfA;YACAC,gBAAgB;QAClB,OAAO;YACLA,gBAAgB;QAClB;IACF;IAEA,IAAIA,eAAe;QACjBH,KAAKC;IACP;IAEA,OAAOD;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cn/pinyin/cartesianProduct.ts"],"sourcesContent":["export function cartesianProduct<T>(args: T[][]): T[][] {\n if (args.length === 0) return [];\n\n const product: T[][] = [];\n const counts = args.map((arr) => arr.length);\n const counter = new Array(args.length).fill(0);\n const total = counts.reduce((acc, val) => acc * val, 1);\n\n for (let i = 0; i < total; i++) {\n product.push(counter.map((count, index) => args[index][count]));\n\n // Update the counter for the next row in the Cartesian product.\n for (let j = args.length - 1; j >= 0; j--) {\n if (counter[j] + 1 < counts[j]) {\n counter[j]++;\n break; // Stop as we've found a digit that can be incremented.\n } else {\n counter[j] = 0; // Reset this digit and increment the next digit in the next iteration.\n }\n }\n }\n\n return product;\n}\n"],"names":["cartesianProduct","args","length","product","counts","map","arr","counter","Array","fill","total","reduce","acc","val","i","push","count","index","j"],"mappings":"AAAA,OAAO,SAASA,iBAAoBC,IAAW;IAC7C,IAAIA,KAAKC,MAAM,KAAK,GAAG,OAAO,EAAE;IAEhC,MAAMC,UAAiB,EAAE;IACzB,MAAMC,SAASH,KAAKI,GAAG,CAAC,CAACC,MAAQA,IAAIJ,MAAM;IAC3C,MAAMK,UAAU,IAAIC,MAAMP,KAAKC,MAAM,EAAEO,IAAI,CAAC;IAC5C,MAAMC,QAAQN,OAAOO,MAAM,CAAC,CAACC,KAAKC,MAAQD,MAAMC,KAAK;IAErD,IAAK,IAAIC,IAAI,GAAGA,IAAIJ,OAAOI,IAAK;QAC9BX,QAAQY,IAAI,CAACR,QAAQF,GAAG,CAAC,CAACW,OAAOC,QAAUhB,IAAI,CAACgB,MAAM,CAACD,MAAM;QAE7D,gEAAgE;QAChE,IAAK,IAAIE,IAAIjB,KAAKC,MAAM,GAAG,GAAGgB,KAAK,GAAGA,IAAK;YACzC,IAAIX,OAAO,CAACW,EAAE,GAAG,IAAId,MAAM,CAACc,EAAE,EAAE;gBAC9BX,OAAO,CAACW,EAAE;gBACV,OAAO,uDAAuD;YAChE,OAAO;gBACLX,OAAO,CAACW,EAAE,GAAG,GAAG,uEAAuE;YACzF;QACF;IACF;IAEA,OAAOf;AACT"}
|
|
1
|
+
{"version":3,"sources":["../../../src/cn/pinyin/cartesianProduct.ts"],"sourcesContent":["export function cartesianProduct<T>(args: T[][]): T[][] {\n if (args.length === 0) return [];\n\n const product: T[][] = [];\n const counts = args.map((arr) => arr.length);\n const counter = new Array(args.length).fill(0);\n const total = counts.reduce((acc, val) => acc * val, 1);\n\n for (let i = 0; i < total; i++) {\n product.push(counter.map((count, index) => args[index][count]));\n\n // Update the counter for the next row in the Cartesian product.\n for (let j = args.length - 1; j >= 0; j--) {\n if (counter[j] + 1 < counts[j]) {\n counter[j]++;\n break; // Stop as we've found a digit that can be incremented.\n } else {\n counter[j] = 0; // Reset this digit and increment the next digit in the next iteration.\n }\n }\n }\n\n return product;\n}\n"],"names":["cartesianProduct","args","length","product","counts","map","arr","counter","Array","fill","total","reduce","acc","val","i","push","count","index","j"],"rangeMappings":";;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAO,SAASA,iBAAoBC,IAAW;IAC7C,IAAIA,KAAKC,MAAM,KAAK,GAAG,OAAO,EAAE;IAEhC,MAAMC,UAAiB,EAAE;IACzB,MAAMC,SAASH,KAAKI,GAAG,CAAC,CAACC,MAAQA,IAAIJ,MAAM;IAC3C,MAAMK,UAAU,IAAIC,MAAMP,KAAKC,MAAM,EAAEO,IAAI,CAAC;IAC5C,MAAMC,QAAQN,OAAOO,MAAM,CAAC,CAACC,KAAKC,MAAQD,MAAMC,KAAK;IAErD,IAAK,IAAIC,IAAI,GAAGA,IAAIJ,OAAOI,IAAK;QAC9BX,QAAQY,IAAI,CAACR,QAAQF,GAAG,CAAC,CAACW,OAAOC,QAAUhB,IAAI,CAACgB,MAAM,CAACD,MAAM;QAE7D,gEAAgE;QAChE,IAAK,IAAIE,IAAIjB,KAAKC,MAAM,GAAG,GAAGgB,KAAK,GAAGA,IAAK;YACzC,IAAIX,OAAO,CAACW,EAAE,GAAG,IAAId,MAAM,CAACc,EAAE,EAAE;gBAC9BX,OAAO,CAACW,EAAE;gBACV,OAAO,uDAAuD;YAChE,OAAO;gBACLX,OAAO,CAACW,EAAE,GAAG,GAAG,uEAAuE;YACzF;QACF;IACF;IAEA,OAAOf;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cn/pinyin/loader.ts"],"sourcesContent":["import { setCharToPinyinTable } from './toPinyinPure';\nimport { transformData } from './transform';\n\nexport function loadCharToPinyinTable(): Promise<Record<string, string[]>> {\n return import('./data.json' as unknown as string, { with: { type: 'json' } })\n .then((v) => v.default as Record<string, string[]>)\n .then((data) => {\n let out = transformData(data);\n setCharToPinyinTable(out);\n return out;\n });\n}\n"],"names":["setCharToPinyinTable","transformData","loadCharToPinyinTable","with","type","then","v","default","data","out"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,iBAAiB;AACtD,SAASC,aAAa,QAAQ,cAAc;AAE5C,OAAO,SAASC;IACd,OAAO,MAAM,CAAC,eAAoC;QAAEC,MAAM;YAAEC,MAAM;QAAO;IAAE,GACxEC,IAAI,CAAC,CAACC,IAAMA,EAAEC,OAAO,EACrBF,IAAI,CAAC,CAACG;QACL,IAAIC,MAAMR,cAAcO;QACxBR,qBAAqBS;QACrB,OAAOA;IACT;AACJ"}
|
|
1
|
+
{"version":3,"sources":["../../../src/cn/pinyin/loader.ts"],"sourcesContent":["import { setCharToPinyinTable } from './toPinyinPure';\nimport { transformData } from './transform';\n\nexport function loadCharToPinyinTable(): Promise<Record<string, string[]>> {\n return import('./data.json' as unknown as string, { with: { type: 'json' } })\n .then((v) => v.default as Record<string, string[]>)\n .then((data) => {\n let out = transformData(data);\n setCharToPinyinTable(out);\n return out;\n });\n}\n"],"names":["setCharToPinyinTable","transformData","loadCharToPinyinTable","with","type","then","v","default","data","out"],"rangeMappings":";;;;;;;;;;;;","mappings":"AAAA,SAASA,oBAAoB,QAAQ,iBAAiB;AACtD,SAASC,aAAa,QAAQ,cAAc;AAE5C,OAAO,SAASC;IACd,OAAO,MAAM,CAAC,eAAoC;QAAEC,MAAM;YAAEC,MAAM;QAAO;IAAE,GACxEC,IAAI,CAAC,CAACC,IAAMA,EAAEC,OAAO,EACrBF,IAAI,CAAC,CAACG;QACL,IAAIC,MAAMR,cAAcO;QACxBR,qBAAqBS;QACrB,OAAOA;IACT;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cn/pinyin/preload.ts"],"sourcesContent":["import { loadCharToPinyinTable } from './loader';\n\nawait loadCharToPinyinTable();\n"],"names":["loadCharToPinyinTable"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,WAAW;AAEjD,MAAMA"}
|
|
1
|
+
{"version":3,"sources":["../../../src/cn/pinyin/preload.ts"],"sourcesContent":["import { loadCharToPinyinTable } from './loader';\n\nawait loadCharToPinyinTable();\n"],"names":["loadCharToPinyinTable"],"rangeMappings":";","mappings":"AAAA,SAASA,qBAAqB,QAAQ,WAAW;AAEjD,MAAMA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cn/pinyin/toPinyinPure.ts"],"sourcesContent":["import { cartesianProduct } from './cartesianProduct';\n\nlet CharToPinyinTable: Record<string, string[]> | undefined;\n\nexport function setCharToPinyinTable(table: Record<string, string[]>) {\n CharToPinyinTable = table;\n}\n\nexport function getCharToPinyinTable() {\n if (!CharToPinyinTable) {\n return {};\n }\n return CharToPinyinTable;\n}\n\nexport function toPinyinPureFirst(s: string, sep = ','): string {\n let tab = getCharToPinyinTable();\n return s\n .split('')\n .map((c) => tab[c]?.[0])\n .filter(Boolean)\n .join(sep);\n}\n\nexport function toPinyinPure(s: string, sep = ','): string[] {\n let tab = getCharToPinyinTable();\n // ensure order\n return cartesianProduct(s.split('').map((c) => tab[c] || ''))\n .sort((a, b) => {\n for (let i = 0; i < a.length; i++) {\n let x = a[i];\n let y = b[i];\n if (x < y) return -1;\n if (x > y) return 1;\n }\n return 0;\n })\n .map((v) => v.filter(Boolean).join(sep));\n}\n\n// export function lookupPinyinPure(s: string): Array<Array<string>> {\n// return cartesianProductOfArray(s.split('').map(c => Lookup[c]));\n// }\n"],"names":["cartesianProduct","CharToPinyinTable","setCharToPinyinTable","table","getCharToPinyinTable","toPinyinPureFirst","s","sep","tab","split","map","c","filter","Boolean","join","toPinyinPure","sort","a","b","i","length","x","y","v"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,qBAAqB;AAEtD,IAAIC;AAEJ,OAAO,SAASC,qBAAqBC,KAA+B;IAClEF,oBAAoBE;AACtB;AAEA,OAAO,SAASC;IACd,IAAI,CAACH,mBAAmB;QACtB,OAAO,CAAC;IACV;IACA,OAAOA;AACT;AAEA,OAAO,SAASI,kBAAkBC,CAAS,EAAEC,MAAM,GAAG;IACpD,IAAIC,MAAMJ;IACV,OAAOE,EACJG,KAAK,CAAC,IACNC,GAAG,CAAC,CAACC,IAAMH,GAAG,CAACG,EAAE,EAAE,CAAC,EAAE,EACtBC,MAAM,CAACC,SACPC,IAAI,CAACP;AACV;AAEA,OAAO,SAASQ,aAAaT,CAAS,EAAEC,MAAM,GAAG;IAC/C,IAAIC,MAAMJ;IACV,eAAe;IACf,OAAOJ,iBAAiBM,EAAEG,KAAK,CAAC,IAAIC,GAAG,CAAC,CAACC,IAAMH,GAAG,CAACG,EAAE,IAAI,KACtDK,IAAI,CAAC,CAACC,GAAGC;QACR,IAAK,IAAIC,IAAI,GAAGA,IAAIF,EAAEG,MAAM,EAAED,IAAK;YACjC,IAAIE,IAAIJ,CAAC,CAACE,EAAE;YACZ,IAAIG,IAAIJ,CAAC,CAACC,EAAE;YACZ,IAAIE,IAAIC,GAAG,OAAO,CAAC;YACnB,IAAID,IAAIC,GAAG,OAAO;QACpB;QACA,OAAO;IACT,GACCZ,GAAG,CAAC,CAACa,IAAMA,EAAEX,MAAM,CAACC,SAASC,IAAI,CAACP;AACvC,EAEA,sEAAsE;CACtE,qEAAqE;CACrE,IAAI"}
|
|
1
|
+
{"version":3,"sources":["../../../src/cn/pinyin/toPinyinPure.ts"],"sourcesContent":["import { cartesianProduct } from './cartesianProduct';\n\nlet CharToPinyinTable: Record<string, string[]> | undefined;\n\nexport function setCharToPinyinTable(table: Record<string, string[]>) {\n CharToPinyinTable = table;\n}\n\nexport function getCharToPinyinTable() {\n if (!CharToPinyinTable) {\n return {};\n }\n return CharToPinyinTable;\n}\n\nexport function toPinyinPureFirst(s: string, sep = ','): string {\n let tab = getCharToPinyinTable();\n return s\n .split('')\n .map((c) => tab[c]?.[0])\n .filter(Boolean)\n .join(sep);\n}\n\nexport function toPinyinPure(s: string, sep = ','): string[] {\n let tab = getCharToPinyinTable();\n // ensure order\n return cartesianProduct(s.split('').map((c) => tab[c] || ''))\n .sort((a, b) => {\n for (let i = 0; i < a.length; i++) {\n let x = a[i];\n let y = b[i];\n if (x < y) return -1;\n if (x > y) return 1;\n }\n return 0;\n })\n .map((v) => v.filter(Boolean).join(sep));\n}\n\n// export function lookupPinyinPure(s: string): Array<Array<string>> {\n// return cartesianProductOfArray(s.split('').map(c => Lookup[c]));\n// }\n"],"names":["cartesianProduct","CharToPinyinTable","setCharToPinyinTable","table","getCharToPinyinTable","toPinyinPureFirst","s","sep","tab","split","map","c","filter","Boolean","join","toPinyinPure","sort","a","b","i","length","x","y","v"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,gBAAgB,QAAQ,qBAAqB;AAEtD,IAAIC;AAEJ,OAAO,SAASC,qBAAqBC,KAA+B;IAClEF,oBAAoBE;AACtB;AAEA,OAAO,SAASC;IACd,IAAI,CAACH,mBAAmB;QACtB,OAAO,CAAC;IACV;IACA,OAAOA;AACT;AAEA,OAAO,SAASI,kBAAkBC,CAAS,EAAEC,MAAM,GAAG;IACpD,IAAIC,MAAMJ;IACV,OAAOE,EACJG,KAAK,CAAC,IACNC,GAAG,CAAC,CAACC,IAAMH,GAAG,CAACG,EAAE,EAAE,CAAC,EAAE,EACtBC,MAAM,CAACC,SACPC,IAAI,CAACP;AACV;AAEA,OAAO,SAASQ,aAAaT,CAAS,EAAEC,MAAM,GAAG;IAC/C,IAAIC,MAAMJ;IACV,eAAe;IACf,OAAOJ,iBAAiBM,EAAEG,KAAK,CAAC,IAAIC,GAAG,CAAC,CAACC,IAAMH,GAAG,CAACG,EAAE,IAAI,KACtDK,IAAI,CAAC,CAACC,GAAGC;QACR,IAAK,IAAIC,IAAI,GAAGA,IAAIF,EAAEG,MAAM,EAAED,IAAK;YACjC,IAAIE,IAAIJ,CAAC,CAACE,EAAE;YACZ,IAAIG,IAAIJ,CAAC,CAACC,EAAE;YACZ,IAAIE,IAAIC,GAAG,OAAO,CAAC;YACnB,IAAID,IAAIC,GAAG,OAAO;QACpB;QACA,OAAO;IACT,GACCZ,GAAG,CAAC,CAACa,IAAMA,EAAEX,MAAM,CAACC,SAASC,IAAI,CAACP;AACvC,EAEA,sEAAsE;CACtE,qEAAqE;CACrE,IAAI"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cn/pinyin/transform.ts"],"sourcesContent":["export function transformData(input: Record<string, string[]>) {\n let out = {} as Record<string, string[]>;\n for (let [py, chars] of Object.entries(input)) {\n for (let c of chars) {\n if (!out[c]) {\n out[c] = [];\n }\n out[c].push(py);\n }\n }\n return out;\n}\n"],"names":["transformData","input","out","py","chars","Object","entries","c","push"],"mappings":"AAAA,OAAO,SAASA,cAAcC,KAA+B;IAC3D,IAAIC,MAAM,CAAC;IACX,KAAK,IAAI,CAACC,IAAIC,MAAM,IAAIC,OAAOC,OAAO,CAACL,OAAQ;QAC7C,KAAK,IAAIM,KAAKH,MAAO;YACnB,IAAI,CAACF,GAAG,CAACK,EAAE,EAAE;gBACXL,GAAG,CAACK,EAAE,GAAG,EAAE;YACb;YACAL,GAAG,CAACK,EAAE,CAACC,IAAI,CAACL;QACd;IACF;IACA,OAAOD;AACT"}
|
|
1
|
+
{"version":3,"sources":["../../../src/cn/pinyin/transform.ts"],"sourcesContent":["export function transformData(input: Record<string, string[]>) {\n let out = {} as Record<string, string[]>;\n for (let [py, chars] of Object.entries(input)) {\n for (let c of chars) {\n if (!out[c]) {\n out[c] = [];\n }\n out[c].push(py);\n }\n }\n return out;\n}\n"],"names":["transformData","input","out","py","chars","Object","entries","c","push"],"rangeMappings":";;;;;;;;;;;","mappings":"AAAA,OAAO,SAASA,cAAcC,KAA+B;IAC3D,IAAIC,MAAM,CAAC;IACX,KAAK,IAAI,CAACC,IAAIC,MAAM,IAAIC,OAAOC,OAAO,CAACL,OAAQ;QAC7C,KAAK,IAAIM,KAAKH,MAAO;YACnB,IAAI,CAACF,GAAG,CAACK,EAAE,EAAE;gBACXL,GAAG,CAACK,EAAE,GAAG,EAAE;YACb;YACAL,GAAG,CAACK,EAAE,CAACC,IAAI,CAACL;QACd;IACF;IACA,OAAOD;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cn/uscc/Mod31Checksum.ts"],"sourcesContent":["/**\n * GB/T 17710(采ISO 7064)的模31校验码\n *\n * Mod31-3\n */\nexport class Mod31Checksum {\n weights = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];\n chars = '0123456789ABCDEFGHJKLMNPQRTUWXY';\n numbers: Record<string, number> = this.chars.split('').reduce(\n (acc, cur, i) => {\n acc[cur] = i;\n return acc;\n },\n {} as Record<string, number>,\n );\n\n private static instance: Mod31Checksum;\n\n static get() {\n return this.instance || (this.instance = new Mod31Checksum());\n }\n\n toChar(n: number) {\n return this.chars[n];\n }\n\n toNumber(c: string) {\n return this.numbers[c];\n }\n\n verify(s: string) {\n return s.at(-1) === this.generate(s.slice(0, s.length - 1));\n }\n\n generate(s: string) {\n let sum = 0;\n for (let i = 0; i < s.length; i++) {\n sum += this.numbers[s[i]] * this.weights[i];\n }\n return this.toChar(31 - (sum % 31));\n }\n}\n"],"names":["Mod31Checksum","weights","chars","numbers","split","reduce","acc","cur","i","instance","get","toChar","n","toNumber","c","verify","s","at","generate","slice","length","sum"],"mappings":"AAAA;;;;CAIC,GACD,OAAO,MAAMA;IACXC,UAAU;QAAC;QAAG;QAAG;QAAG;QAAI;QAAI;QAAI;QAAI;QAAI;QAAI;QAAI;QAAI;QAAI;QAAG;QAAI;QAAI;QAAI;KAAG,CAAC;IAC3EC,QAAQ,kCAAkC;IAC1CC,UAAkC,IAAI,CAACD,KAAK,CAACE,KAAK,CAAC,IAAIC,MAAM,CAC3D,CAACC,KAAKC,KAAKC;QACTF,GAAG,CAACC,IAAI,GAAGC;QACX,OAAOF;IACT,GACA,CAAC,GACD;IAEF,OAAeG,SAAwB;IAEvC,OAAOC,MAAM;QACX,OAAO,IAAI,CAACD,QAAQ,IAAK,CAAA,IAAI,CAACA,QAAQ,GAAG,IAAIT,eAAc;IAC7D;IAEAW,OAAOC,CAAS,EAAE;QAChB,OAAO,IAAI,CAACV,KAAK,CAACU,EAAE;IACtB;IAEAC,SAASC,CAAS,EAAE;QAClB,OAAO,IAAI,CAACX,OAAO,CAACW,EAAE;IACxB;IAEAC,OAAOC,CAAS,EAAE;QAChB,OAAOA,EAAEC,EAAE,CAAC,CAAC,OAAO,IAAI,CAACC,QAAQ,CAACF,EAAEG,KAAK,CAAC,GAAGH,EAAEI,MAAM,GAAG;IAC1D;IAEAF,SAASF,CAAS,EAAE;QAClB,IAAIK,MAAM;QACV,IAAK,IAAIb,IAAI,GAAGA,IAAIQ,EAAEI,MAAM,EAAEZ,IAAK;YACjCa,OAAO,IAAI,CAAClB,OAAO,CAACa,CAAC,CAACR,EAAE,CAAC,GAAG,IAAI,CAACP,OAAO,CAACO,EAAE;QAC7C;QACA,OAAO,IAAI,CAACG,MAAM,CAAC,KAAMU,MAAM;IACjC;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../../src/cn/uscc/Mod31Checksum.ts"],"sourcesContent":["/**\n * GB/T 17710(采ISO 7064)的模31校验码\n *\n * Mod31-3\n */\nexport class Mod31Checksum {\n weights = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];\n chars = '0123456789ABCDEFGHJKLMNPQRTUWXY';\n numbers: Record<string, number> = this.chars.split('').reduce(\n (acc, cur, i) => {\n acc[cur] = i;\n return acc;\n },\n {} as Record<string, number>,\n );\n\n private static instance: Mod31Checksum;\n\n static get() {\n return this.instance || (this.instance = new Mod31Checksum());\n }\n\n toChar(n: number) {\n return this.chars[n];\n }\n\n toNumber(c: string) {\n return this.numbers[c];\n }\n\n verify(s: string) {\n return s.at(-1) === this.generate(s.slice(0, s.length - 1));\n }\n\n generate(s: string) {\n let sum = 0;\n for (let i = 0; i < s.length; i++) {\n sum += this.numbers[s[i]] * this.weights[i];\n }\n return this.toChar(31 - (sum % 31));\n }\n}\n"],"names":["Mod31Checksum","weights","chars","numbers","split","reduce","acc","cur","i","instance","get","toChar","n","toNumber","c","verify","s","at","generate","slice","length","sum"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;;;CAIC,GACD,OAAO,MAAMA;IACXC,UAAU;QAAC;QAAG;QAAG;QAAG;QAAI;QAAI;QAAI;QAAI;QAAI;QAAI;QAAI;QAAI;QAAI;QAAG;QAAI;QAAI;QAAI;KAAG,CAAC;IAC3EC,QAAQ,kCAAkC;IAC1CC,UAAkC,IAAI,CAACD,KAAK,CAACE,KAAK,CAAC,IAAIC,MAAM,CAC3D,CAACC,KAAKC,KAAKC;QACTF,GAAG,CAACC,IAAI,GAAGC;QACX,OAAOF;IACT,GACA,CAAC,GACD;IAEF,OAAeG,SAAwB;IAEvC,OAAOC,MAAM;QACX,OAAO,IAAI,CAACD,QAAQ,IAAK,CAAA,IAAI,CAACA,QAAQ,GAAG,IAAIT,eAAc;IAC7D;IAEAW,OAAOC,CAAS,EAAE;QAChB,OAAO,IAAI,CAACV,KAAK,CAACU,EAAE;IACtB;IAEAC,SAASC,CAAS,EAAE;QAClB,OAAO,IAAI,CAACX,OAAO,CAACW,EAAE;IACxB;IAEAC,OAAOC,CAAS,EAAE;QAChB,OAAOA,EAAEC,EAAE,CAAC,CAAC,OAAO,IAAI,CAACC,QAAQ,CAACF,EAAEG,KAAK,CAAC,GAAGH,EAAEI,MAAM,GAAG;IAC1D;IAEAF,SAASF,CAAS,EAAE;QAClB,IAAIK,MAAM;QACV,IAAK,IAAIb,IAAI,GAAGA,IAAIQ,EAAEI,MAAM,EAAEZ,IAAK;YACjCa,OAAO,IAAI,CAAClB,OAAO,CAACa,CAAC,CAACR,EAAE,CAAC,GAAG,IAAI,CAACP,OAAO,CAACO,EAAE;QAC7C;QACA,OAAO,IAAI,CAACG,MAAM,CAAC,KAAMU,MAAM;IACjC;AACF"}
|
package/lib/cn/uscc/USCC.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cn/uscc/USCC.ts"],"sourcesContent":["import { Mod31Checksum } from './Mod31Checksum';\n\n/**\n * - GB 32100-2015 法人和其他组织统一社会信用代码编码规则\n * - USCI -> UnifiedSocialCreditIdentifier\n * - USCC -> Unified Social Credit Code - 官方叫法\n * - Business License\n *\n * @see https://en.wikipedia.org/wiki/Unified_Social_Credit_Identifier\n */\nexport class USCC {\n registryCodeLabels: Record<string, Code> = {\n 1: {\n label: '机构编制',\n children: {\n 1: { label: '机关' },\n 2: { label: '事业单位' },\n 3: { label: '中央编办直接管理机构编制的群众团体' },\n 9: { label: '其他' },\n },\n },\n 5: {\n label: '民政',\n children: {\n 1: { label: '社会团体' },\n 2: { label: '民办非企业单位' },\n 3: { label: '基金会' },\n 9: { label: '其他' },\n },\n },\n 9: {\n label: '工商',\n children: {\n 1: { label: '企业' },\n 2: { label: '个体工商户' },\n 3: { label: '农民专业合作社' },\n 9: { label: '其他' },\n },\n },\n Y: {\n label: '其他',\n children: {\n 1: { label: '其他' },\n },\n },\n };\n\n /* 16 位 */\n regex = /^([159][1239]|Y1)[0-9]{6}[0-9A-HJ-NP-RTUWXY]{10}$/; // 无 I O Z S V\n checksum = Mod31Checksum.get();\n\n static instance: USCC;\n\n static get() {\n return (this.instance ||= new USCC());\n }\n\n parse(s: string): ParsedUSCC {\n let registryCode = s[0];\n let l1 = this.registryCodeLabels[registryCode];\n let organizationTypeCode = s[1];\n return {\n registryAuthorityCode: registryCode,\n registryAuthorityCodeLabel: l1?.label,\n organizationTypeCode,\n organizationTypeLabel: l1?.children?.[organizationTypeCode]?.label,\n registryDivisionCode: s.slice(3, 6),\n // GB 11714-1997 全国组织机构代码编制规则\n subject: s.slice(6, 15),\n checksum: s.slice(17, 18),\n };\n }\n\n verify(s: string) {\n return this.regex.test(s) && this.checksum.verify(s);\n }\n}\n\ninterface Code {\n label: string;\n children?: Record<string, Code>;\n}\n\ninterface ParsedUSCC {\n // 登记管理部门码\n registryAuthorityCode: string;\n registryAuthorityCodeLabel?: string;\n // 机构类别代码\n organizationTypeCode: string;\n organizationTypeLabel?: string;\n // 登记管理机关行政区划代码\n registryDivisionCode: string;\n registryDivisionLabel?: string;\n // 主体标识码\n subject: string;\n // 校验码\n checksum: string;\n}\n"],"names":["Mod31Checksum","USCC","registryCodeLabels","label","children","Y","regex","checksum","get","instance","parse","s","registryCode","l1","organizationTypeCode","registryAuthorityCode","registryAuthorityCodeLabel","organizationTypeLabel","registryDivisionCode","slice","subject","verify","test"],"mappings":"AAAA,SAASA,aAAa,QAAQ,kBAAkB;AAEhD;;;;;;;CAOC,GACD,OAAO,MAAMC;IACXC,qBAA2C;QACzC,GAAG;YACDC,OAAO;YACPC,UAAU;gBACR,GAAG;oBAAED,OAAO;gBAAK;gBACjB,GAAG;oBAAEA,OAAO;gBAAO;gBACnB,GAAG;oBAAEA,OAAO;gBAAoB;gBAChC,GAAG;oBAAEA,OAAO;gBAAK;YACnB;QACF;QACA,GAAG;YACDA,OAAO;YACPC,UAAU;gBACR,GAAG;oBAAED,OAAO;gBAAO;gBACnB,GAAG;oBAAEA,OAAO;gBAAU;gBACtB,GAAG;oBAAEA,OAAO;gBAAM;gBAClB,GAAG;oBAAEA,OAAO;gBAAK;YACnB;QACF;QACA,GAAG;YACDA,OAAO;YACPC,UAAU;gBACR,GAAG;oBAAED,OAAO;gBAAK;gBACjB,GAAG;oBAAEA,OAAO;gBAAQ;gBACpB,GAAG;oBAAEA,OAAO;gBAAU;gBACtB,GAAG;oBAAEA,OAAO;gBAAK;YACnB;QACF;QACAE,GAAG;YACDF,OAAO;YACPC,UAAU;gBACR,GAAG;oBAAED,OAAO;gBAAK;YACnB;QACF;IACF,EAAE;IAEF,QAAQ,GACRG,QAAQ,oDAAoD;IAC5DC,WAAWP,cAAcQ,GAAG,GAAG;IAE/B,OAAOC,SAAe;IAEtB,OAAOD,MAAM;QACX,OAAQ,IAAI,CAACC,QAAQ,KAAK,IAAIR;IAChC;IAEAS,MAAMC,CAAS,EAAc;QAC3B,IAAIC,eAAeD,CAAC,CAAC,EAAE;QACvB,IAAIE,KAAK,IAAI,CAACX,kBAAkB,CAACU,aAAa;QAC9C,IAAIE,uBAAuBH,CAAC,CAAC,EAAE;QAC/B,OAAO;YACLI,uBAAuBH;YACvBI,4BAA4BH,IAAIV;YAChCW;YACAG,uBAAuBJ,IAAIT,UAAU,CAACU,qBAAqB,EAAEX;YAC7De,sBAAsBP,EAAEQ,KAAK,CAAC,GAAG;YACjC,6BAA6B;YAC7BC,SAAST,EAAEQ,KAAK,CAAC,GAAG;YACpBZ,UAAUI,EAAEQ,KAAK,CAAC,IAAI;QACxB;IACF;IAEAE,OAAOV,CAAS,EAAE;QAChB,OAAO,IAAI,CAACL,KAAK,CAACgB,IAAI,CAACX,MAAM,IAAI,CAACJ,QAAQ,CAACc,MAAM,CAACV;IACpD;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../../src/cn/uscc/USCC.ts"],"sourcesContent":["import { Mod31Checksum } from './Mod31Checksum';\n\n/**\n * - GB 32100-2015 法人和其他组织统一社会信用代码编码规则\n * - USCI -> UnifiedSocialCreditIdentifier\n * - USCC -> Unified Social Credit Code - 官方叫法\n * - Business License\n *\n * @see https://en.wikipedia.org/wiki/Unified_Social_Credit_Identifier\n */\nexport class USCC {\n registryCodeLabels: Record<string, Code> = {\n 1: {\n label: '机构编制',\n children: {\n 1: { label: '机关' },\n 2: { label: '事业单位' },\n 3: { label: '中央编办直接管理机构编制的群众团体' },\n 9: { label: '其他' },\n },\n },\n 5: {\n label: '民政',\n children: {\n 1: { label: '社会团体' },\n 2: { label: '民办非企业单位' },\n 3: { label: '基金会' },\n 9: { label: '其他' },\n },\n },\n 9: {\n label: '工商',\n children: {\n 1: { label: '企业' },\n 2: { label: '个体工商户' },\n 3: { label: '农民专业合作社' },\n 9: { label: '其他' },\n },\n },\n Y: {\n label: '其他',\n children: {\n 1: { label: '其他' },\n },\n },\n };\n\n /* 16 位 */\n regex = /^([159][1239]|Y1)[0-9]{6}[0-9A-HJ-NP-RTUWXY]{10}$/; // 无 I O Z S V\n checksum = Mod31Checksum.get();\n\n static instance: USCC;\n\n static get() {\n return (this.instance ||= new USCC());\n }\n\n parse(s: string): ParsedUSCC {\n let registryCode = s[0];\n let l1 = this.registryCodeLabels[registryCode];\n let organizationTypeCode = s[1];\n return {\n registryAuthorityCode: registryCode,\n registryAuthorityCodeLabel: l1?.label,\n organizationTypeCode,\n organizationTypeLabel: l1?.children?.[organizationTypeCode]?.label,\n registryDivisionCode: s.slice(3, 6),\n // GB 11714-1997 全国组织机构代码编制规则\n subject: s.slice(6, 15),\n checksum: s.slice(17, 18),\n };\n }\n\n verify(s: string) {\n return this.regex.test(s) && this.checksum.verify(s);\n }\n}\n\ninterface Code {\n label: string;\n children?: Record<string, Code>;\n}\n\ninterface ParsedUSCC {\n // 登记管理部门码\n registryAuthorityCode: string;\n registryAuthorityCodeLabel?: string;\n // 机构类别代码\n organizationTypeCode: string;\n organizationTypeLabel?: string;\n // 登记管理机关行政区划代码\n registryDivisionCode: string;\n registryDivisionLabel?: string;\n // 主体标识码\n subject: string;\n // 校验码\n checksum: string;\n}\n"],"names":["Mod31Checksum","USCC","registryCodeLabels","label","children","Y","regex","checksum","get","instance","parse","s","registryCode","l1","organizationTypeCode","registryAuthorityCode","registryAuthorityCodeLabel","organizationTypeLabel","registryDivisionCode","slice","subject","verify","test"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,aAAa,QAAQ,kBAAkB;AAEhD;;;;;;;CAOC,GACD,OAAO,MAAMC;IACXC,qBAA2C;QACzC,GAAG;YACDC,OAAO;YACPC,UAAU;gBACR,GAAG;oBAAED,OAAO;gBAAK;gBACjB,GAAG;oBAAEA,OAAO;gBAAO;gBACnB,GAAG;oBAAEA,OAAO;gBAAoB;gBAChC,GAAG;oBAAEA,OAAO;gBAAK;YACnB;QACF;QACA,GAAG;YACDA,OAAO;YACPC,UAAU;gBACR,GAAG;oBAAED,OAAO;gBAAO;gBACnB,GAAG;oBAAEA,OAAO;gBAAU;gBACtB,GAAG;oBAAEA,OAAO;gBAAM;gBAClB,GAAG;oBAAEA,OAAO;gBAAK;YACnB;QACF;QACA,GAAG;YACDA,OAAO;YACPC,UAAU;gBACR,GAAG;oBAAED,OAAO;gBAAK;gBACjB,GAAG;oBAAEA,OAAO;gBAAQ;gBACpB,GAAG;oBAAEA,OAAO;gBAAU;gBACtB,GAAG;oBAAEA,OAAO;gBAAK;YACnB;QACF;QACAE,GAAG;YACDF,OAAO;YACPC,UAAU;gBACR,GAAG;oBAAED,OAAO;gBAAK;YACnB;QACF;IACF,EAAE;IAEF,QAAQ,GACRG,QAAQ,oDAAoD;IAC5DC,WAAWP,cAAcQ,GAAG,GAAG;IAE/B,OAAOC,SAAe;IAEtB,OAAOD,MAAM;QACX,OAAQ,IAAI,CAACC,QAAQ,KAAK,IAAIR;IAChC;IAEAS,MAAMC,CAAS,EAAc;QAC3B,IAAIC,eAAeD,CAAC,CAAC,EAAE;QACvB,IAAIE,KAAK,IAAI,CAACX,kBAAkB,CAACU,aAAa;QAC9C,IAAIE,uBAAuBH,CAAC,CAAC,EAAE;QAC/B,OAAO;YACLI,uBAAuBH;YACvBI,4BAA4BH,IAAIV;YAChCW;YACAG,uBAAuBJ,IAAIT,UAAU,CAACU,qBAAqB,EAAEX;YAC7De,sBAAsBP,EAAEQ,KAAK,CAAC,GAAG;YACjC,6BAA6B;YAC7BC,SAAST,EAAEQ,KAAK,CAAC,GAAG;YACpBZ,UAAUI,EAAEQ,KAAK,CAAC,IAAI;QACxB;IACF;IAEAE,OAAOV,CAAS,EAAE;QAChB,OAAO,IAAI,CAACL,KAAK,CAACgB,IAAI,CAACX,MAAM,IAAI,CAACJ,QAAQ,CAACc,MAAM,CAACV;IACpD;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cn/uscc/isUSCC.ts"],"sourcesContent":["import { USCC } from './USCC';\n\n/**\n * USCC - 统一社会信用代码\n */\nexport function isUSCC(s: string) {\n return USCC.get().verify(s);\n}\n"],"names":["USCC","isUSCC","s","get","verify"],"mappings":"AAAA,SAASA,IAAI,QAAQ,SAAS;AAE9B;;CAEC,GACD,OAAO,SAASC,OAAOC,CAAS;IAC9B,OAAOF,KAAKG,GAAG,GAAGC,MAAM,CAACF;AAC3B"}
|
|
1
|
+
{"version":3,"sources":["../../../src/cn/uscc/isUSCC.ts"],"sourcesContent":["import { USCC } from './USCC';\n\n/**\n * USCC - 统一社会信用代码\n */\nexport function isUSCC(s: string) {\n return USCC.get().verify(s);\n}\n"],"names":["USCC","isUSCC","s","get","verify"],"rangeMappings":";;;;;","mappings":"AAAA,SAASA,IAAI,QAAQ,SAAS;AAE9B;;CAEC,GACD,OAAO,SAASC,OAAOC,CAAS;IAC9B,OAAOF,KAAKG,GAAG,GAAGC,MAAM,CAACF;AAC3B"}
|
package/lib/crypto/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/crypto/base.ts"],"sourcesContent":["/**\n * hex string\n */\nexport function hex(s: Uint8Array | ArrayBuffer) {\n return Array.from(new Uint8Array(s))\n .map((v) => v.toString(16).padStart(2, '0'))\n .join('');\n}\n"],"names":["hex","s","Array","from","Uint8Array","map","v","toString","padStart","join"],"mappings":"AAAA;;CAEC,GACD,OAAO,SAASA,IAAIC,CAA2B;IAC7C,OAAOC,MAAMC,IAAI,CAAC,IAAIC,WAAWH,IAC9BI,GAAG,CAAC,CAACC,IAAMA,EAAEC,QAAQ,CAAC,IAAIC,QAAQ,CAAC,GAAG,MACtCC,IAAI,CAAC;AACV"}
|
|
1
|
+
{"version":3,"sources":["../../src/crypto/base.ts"],"sourcesContent":["/**\n * hex string\n */\nexport function hex(s: Uint8Array | ArrayBuffer) {\n return Array.from(new Uint8Array(s))\n .map((v) => v.toString(16).padStart(2, '0'))\n .join('');\n}\n"],"names":["hex","s","Array","from","Uint8Array","map","v","toString","padStart","join"],"rangeMappings":";;;;","mappings":"AAAA;;CAEC,GACD,OAAO,SAASA,IAAIC,CAA2B;IAC7C,OAAOC,MAAMC,IAAI,CAAC,IAAIC,WAAWH,IAC9BI,GAAG,CAAC,CAACC,IAAMA,EAAEC,QAAQ,CAAC,IAAIC,QAAQ,CAAC,GAAG,MACtCC,IAAI,CAAC;AACV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/crypto/getNodeCrypto.ts"],"sourcesContent":["let nodeCrypto: Awaited<typeof import('node:crypto')>;\n// globalThis.process?.release?.name\n\n// avoid process.browser\nif (typeof window === 'undefined') {\n try {\n // avoid `node:` UnhandledSchemeError https://github.com/vercel/next.js/issues/28774\n if (typeof require === 'undefined') {\n void import('crypto').then((v) => (nodeCrypto = v.default));\n } else {\n nodeCrypto = require('crypto');\n }\n } catch (e) {}\n}\nexport function getNodeCrypto() {\n return nodeCrypto;\n}\n"],"names":["nodeCrypto","window","require","then","v","default","e","getNodeCrypto"],"mappings":"AAAA,IAAIA;AACJ,oCAAoC;AAEpC,wBAAwB;AACxB,IAAI,OAAOC,WAAW,aAAa;IACjC,IAAI;QACF,oFAAoF;QACpF,IAAI,OAAOC,YAAY,aAAa;YAClC,KAAK,MAAM,CAAC,UAAUC,IAAI,CAAC,CAACC,IAAOJ,aAAaI,EAAEC,OAAO;QAC3D,OAAO;YACLL,aAAaE,QAAQ;QACvB;IACF,EAAE,OAAOI,GAAG,CAAC;AACf;AACA,OAAO,SAASC;IACd,OAAOP;AACT"}
|
|
1
|
+
{"version":3,"sources":["../../src/crypto/getNodeCrypto.ts"],"sourcesContent":["let nodeCrypto: Awaited<typeof import('node:crypto')>;\n// globalThis.process?.release?.name\n\n// avoid process.browser\nif (typeof window === 'undefined') {\n try {\n // avoid `node:` UnhandledSchemeError https://github.com/vercel/next.js/issues/28774\n if (typeof require === 'undefined') {\n void import('crypto').then((v) => (nodeCrypto = v.default));\n } else {\n nodeCrypto = require('crypto');\n }\n } catch (e) {}\n}\nexport function getNodeCrypto() {\n return nodeCrypto;\n}\n"],"names":["nodeCrypto","window","require","then","v","default","e","getNodeCrypto"],"rangeMappings":";;;;;;;;;;;;;;;","mappings":"AAAA,IAAIA;AACJ,oCAAoC;AAEpC,wBAAwB;AACxB,IAAI,OAAOC,WAAW,aAAa;IACjC,IAAI;QACF,oFAAoF;QACpF,IAAI,OAAOC,YAAY,aAAa;YAClC,KAAK,MAAM,CAAC,UAAUC,IAAI,CAAC,CAACC,IAAOJ,aAAaI,EAAEC,OAAO;QAC3D,OAAO;YACLL,aAAaE,QAAQ;QACvB;IACF,EAAE,OAAOI,GAAG,CAAC;AACf;AACA,OAAO,SAASC;IACd,OAAOP;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/crypto/getRandomValues.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport type { TypedArray } from '../io/ArrayBuffers';\nimport { getGlobalThis } from '../runtime/getGlobalThis';\nimport { getNodeCrypto } from './getNodeCrypto';\n\nconst globalThis = getGlobalThis();\nexport let getRandomValues: <T extends Exclude<TypedArray, Float32Array | Float64Array>>(typedArray: T) => T =\n globalThis.crypto?.getRandomValues?.bind(globalThis.crypto) ||\n (globalThis as any).msCrypto?.getRandomValues?.bind((globalThis as any).msCrypto) ||\n _getRandomValues;\n\nfunction _getRandomValues<T extends Exclude<TypedArray, Float32Array | Float64Array>>(buf: T) {\n const nodeCrypto = getNodeCrypto();\n // avoid type error\n let wc = nodeCrypto?.webcrypto as any;\n if (wc?.getRandomValues) {\n getRandomValues = wc.getRandomValues?.bind(nodeCrypto?.webcrypto);\n return wc.getRandomValues(buf);\n }\n if (nodeCrypto?.randomBytes) {\n if (!(buf instanceof Uint8Array)) {\n throw new TypeError('expected Uint8Array');\n }\n if (buf.length > 65536) {\n const e: any = new Error();\n e.code = 22;\n e.message = `Failed to execute 'getRandomValues' on 'Crypto': The ArrayBufferView's byte length (${buf.length}) exceeds the number of bytes of entropy available via this API (65536).`;\n e.name = 'QuotaExceededError';\n throw e;\n }\n const bytes = nodeCrypto.randomBytes(buf.length);\n buf.set(bytes);\n return buf;\n }\n throw new Error('[getRandomValues]: No secure random number generator available.');\n}\n"],"names":["getGlobalThis","getNodeCrypto","globalThis","getRandomValues","crypto","bind","msCrypto","_getRandomValues","buf","nodeCrypto","wc","webcrypto","randomBytes","Uint8Array","TypeError","length","e","Error","code","message","name","bytes","set"],"mappings":"AAAA,sEAAsE;AAEtE,SAASA,aAAa,QAAQ,2BAA2B;AACzD,SAASC,aAAa,QAAQ,kBAAkB;AAEhD,MAAMC,aAAaF;AACnB,OAAO,IAAIG,kBACTD,WAAWE,MAAM,EAAED,iBAAiBE,KAAKH,WAAWE,MAAM,KAC1D,AAACF,WAAmBI,QAAQ,EAAEH,iBAAiBE,KAAK,AAACH,WAAmBI,QAAQ,KAChFC,iBAAiB;AAEnB,SAASA,iBAA6EC,GAAM;IAC1F,MAAMC,aAAaR;IACnB,mBAAmB;IACnB,IAAIS,KAAKD,YAAYE;IACrB,IAAID,IAAIP,iBAAiB;QACvBA,kBAAkBO,GAAGP,eAAe,EAAEE,KAAKI,YAAYE;QACvD,OAAOD,GAAGP,eAAe,CAACK;IAC5B;IACA,IAAIC,YAAYG,aAAa;QAC3B,IAAI,CAAEJ,CAAAA,eAAeK,UAAS,GAAI;YAChC,MAAM,IAAIC,UAAU;QACtB;QACA,IAAIN,IAAIO,MAAM,GAAG,OAAO;YACtB,MAAMC,IAAS,IAAIC;YACnBD,EAAEE,IAAI,GAAG;YACTF,EAAEG,OAAO,GAAG,CAAC,oFAAoF,EAAEX,IAAIO,MAAM,CAAC,wEAAwE,CAAC;YACvLC,EAAEI,IAAI,GAAG;YACT,MAAMJ;QACR;QACA,MAAMK,QAAQZ,WAAWG,WAAW,CAACJ,IAAIO,MAAM;QAC/CP,IAAIc,GAAG,CAACD;QACR,OAAOb;IACT;IACA,MAAM,IAAIS,MAAM;AAClB"}
|
|
1
|
+
{"version":3,"sources":["../../src/crypto/getRandomValues.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport type { TypedArray } from '../io/ArrayBuffers';\nimport { getGlobalThis } from '../runtime/getGlobalThis';\nimport { getNodeCrypto } from './getNodeCrypto';\n\nconst globalThis = getGlobalThis();\nexport let getRandomValues: <T extends Exclude<TypedArray, Float32Array | Float64Array>>(typedArray: T) => T =\n globalThis.crypto?.getRandomValues?.bind(globalThis.crypto) ||\n (globalThis as any).msCrypto?.getRandomValues?.bind((globalThis as any).msCrypto) ||\n _getRandomValues;\n\nfunction _getRandomValues<T extends Exclude<TypedArray, Float32Array | Float64Array>>(buf: T) {\n const nodeCrypto = getNodeCrypto();\n // avoid type error\n let wc = nodeCrypto?.webcrypto as any;\n if (wc?.getRandomValues) {\n getRandomValues = wc.getRandomValues?.bind(nodeCrypto?.webcrypto);\n return wc.getRandomValues(buf);\n }\n if (nodeCrypto?.randomBytes) {\n if (!(buf instanceof Uint8Array)) {\n throw new TypeError('expected Uint8Array');\n }\n if (buf.length > 65536) {\n const e: any = new Error();\n e.code = 22;\n e.message = `Failed to execute 'getRandomValues' on 'Crypto': The ArrayBufferView's byte length (${buf.length}) exceeds the number of bytes of entropy available via this API (65536).`;\n e.name = 'QuotaExceededError';\n throw e;\n }\n const bytes = nodeCrypto.randomBytes(buf.length);\n buf.set(bytes);\n return buf;\n }\n throw new Error('[getRandomValues]: No secure random number generator available.');\n}\n"],"names":["getGlobalThis","getNodeCrypto","globalThis","getRandomValues","crypto","bind","msCrypto","_getRandomValues","buf","nodeCrypto","wc","webcrypto","randomBytes","Uint8Array","TypeError","length","e","Error","code","message","name","bytes","set"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,sEAAsE;AAEtE,SAASA,aAAa,QAAQ,2BAA2B;AACzD,SAASC,aAAa,QAAQ,kBAAkB;AAEhD,MAAMC,aAAaF;AACnB,OAAO,IAAIG,kBACTD,WAAWE,MAAM,EAAED,iBAAiBE,KAAKH,WAAWE,MAAM,KAC1D,AAACF,WAAmBI,QAAQ,EAAEH,iBAAiBE,KAAK,AAACH,WAAmBI,QAAQ,KAChFC,iBAAiB;AAEnB,SAASA,iBAA6EC,GAAM;IAC1F,MAAMC,aAAaR;IACnB,mBAAmB;IACnB,IAAIS,KAAKD,YAAYE;IACrB,IAAID,IAAIP,iBAAiB;QACvBA,kBAAkBO,GAAGP,eAAe,EAAEE,KAAKI,YAAYE;QACvD,OAAOD,GAAGP,eAAe,CAACK;IAC5B;IACA,IAAIC,YAAYG,aAAa;QAC3B,IAAI,CAAEJ,CAAAA,eAAeK,UAAS,GAAI;YAChC,MAAM,IAAIC,UAAU;QACtB;QACA,IAAIN,IAAIO,MAAM,GAAG,OAAO;YACtB,MAAMC,IAAS,IAAIC;YACnBD,EAAEE,IAAI,GAAG;YACTF,EAAEG,OAAO,GAAG,CAAC,oFAAoF,EAAEX,IAAIO,MAAM,CAAC,wEAAwE,CAAC;YACvLC,EAAEI,IAAI,GAAG;YACT,MAAMJ;QACR;QACA,MAAMK,QAAQZ,WAAWG,WAAW,CAACJ,IAAIO,MAAM;QAC/CP,IAAIc,GAAG,CAACD;QACR,OAAOb;IACT;IACA,MAAM,IAAIS,MAAM;AAClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/crypto/hashing.ts"],"sourcesContent":["import { ArrayBuffers } from '../io/ArrayBuffers';\n\nexport function sha1(s: BinaryLike, o?: undefined): Promise<Buffer>;\nexport function sha1(s: BinaryLike, o: 'hex' | 'base64'): Promise<string>;\n\nexport function sha1(s: BinaryLike, o?: DigestOptions) {\n return digestOf('SHA-1', s, o);\n}\n\nexport function sha256(s: BinaryLike, o?: undefined): Promise<Buffer>;\nexport function sha256(s: BinaryLike, o: 'hex' | 'base64'): Promise<string>;\n\nexport function sha256(s: BinaryLike, o?: DigestOptions) {\n return digestOf('SHA-256', s, o);\n}\n\nexport function sha384(s: BinaryLike, o?: undefined): Promise<Buffer>;\nexport function sha384(s: BinaryLike, o: 'hex' | 'base64'): Promise<string>;\n\nexport function sha384(s: BinaryLike, o?: DigestOptions) {\n return digestOf('SHA-384', s, o);\n}\n\nexport function sha512(s: BinaryLike, o?: undefined): Promise<Buffer>;\nexport function sha512(s: BinaryLike, o: 'hex' | 'base64'): Promise<string>;\n\nexport function sha512(s: BinaryLike, o?: DigestOptions) {\n return digestOf('SHA-512', s, o);\n}\n\nfunction digestOf(a: string, s: BinaryLike, o?: DigestOptions) {\n let buffer = crypto.subtle.digest(a, binaryOf(s));\n return o ? buffer.then((v) => encode(v, o)) : buffer;\n}\n\nexport type DigestOptions =\n | 'hex'\n | 'base64'\n | {\n encoding: 'hex' | 'base64';\n };\n\ntype BinaryLike = string | BufferSource;\n\nfunction binaryOf(s: BinaryLike) {\n // ArrayBuffer, TypedArray, DataView\n if (typeof s === 'string') {\n return new TextEncoder().encode(s);\n }\n // ArrayBuffer, Buffer, TypedArray, DataView\n return s;\n}\n\nfunction encode(buf: BufferSource, o?: DigestOptions) {\n if (o) {\n switch (o) {\n case 'hex':\n case 'base64':\n return ArrayBuffers.toString(buf, o);\n }\n }\n return buf;\n}\n\ntype StringEncoding = 'hex' | 'base64';\ntype IsStringCoding<T> = T extends StringEncoding ? true : T extends { encoding: StringEncoding } ? true : false;\n\nexport function hmac<O extends DigestOptions>(\n hash: 'SHA-1' | 'SHA-256' | 'SHA-384' | 'SHA-512' | 'sha1' | 'sha256' | 'sha384' | 'sha512',\n key: BinaryLike | CryptoKey,\n data: BinaryLike,\n o?: O,\n): Promise<IsStringCoding<O> extends true ? string : Buffer>;\n\nexport async function hmac(\n hash: 'SHA-1' | 'SHA-256' | 'SHA-384' | 'SHA-512' | 'sha1' | 'sha256' | 'sha384' | 'sha512',\n key: BinaryLike | CryptoKey,\n data: BinaryLike,\n o?: DigestOptions,\n) {\n let ck =\n key instanceof CryptoKey\n ? key\n : await crypto.subtle.importKey(\n 'raw',\n binaryOf(key),\n {\n name: 'HMAC',\n hash: {\n name: normalizeHash(hash),\n },\n },\n false,\n ['sign'],\n );\n let buffer = await crypto.subtle.sign(\n {\n name: 'HMAC',\n hash: {\n name: hash,\n },\n },\n ck,\n binaryOf(data),\n );\n\n return encode(buffer, o);\n}\n\nfunction normalizeHash(hash: string) {\n return hash.replace(/^sha/i, 'SHA-');\n}\n"],"names":["ArrayBuffers","sha1","s","o","digestOf","sha256","sha384","sha512","a","buffer","crypto","subtle","digest","binaryOf","then","v","encode","TextEncoder","buf","toString","hmac","hash","key","data","ck","CryptoKey","importKey","name","normalizeHash","sign","replace"],"mappings":"AAAA,SAASA,YAAY,QAAQ,qBAAqB;AAKlD,OAAO,SAASC,KAAKC,CAAa,EAAEC,CAAiB;IACnD,OAAOC,SAAS,SAASF,GAAGC;AAC9B;AAKA,OAAO,SAASE,OAAOH,CAAa,EAAEC,CAAiB;IACrD,OAAOC,SAAS,WAAWF,GAAGC;AAChC;AAKA,OAAO,SAASG,OAAOJ,CAAa,EAAEC,CAAiB;IACrD,OAAOC,SAAS,WAAWF,GAAGC;AAChC;AAKA,OAAO,SAASI,OAAOL,CAAa,EAAEC,CAAiB;IACrD,OAAOC,SAAS,WAAWF,GAAGC;AAChC;AAEA,SAASC,SAASI,CAAS,EAAEN,CAAa,EAAEC,CAAiB;IAC3D,IAAIM,SAASC,OAAOC,MAAM,CAACC,MAAM,CAACJ,GAAGK,SAASX;IAC9C,OAAOC,IAAIM,OAAOK,IAAI,CAAC,CAACC,IAAMC,OAAOD,GAAGZ,MAAMM;AAChD;AAWA,SAASI,SAASX,CAAa;IAC7B,oCAAoC;IACpC,IAAI,OAAOA,MAAM,UAAU;QACzB,OAAO,IAAIe,cAAcD,MAAM,CAACd;IAClC;IACA,6CAA6C;IAC7C,OAAOA;AACT;AAEA,SAASc,OAAOE,GAAiB,EAAEf,CAAiB;IAClD,IAAIA,GAAG;QACL,OAAQA;YACN,KAAK;YACL,KAAK;gBACH,OAAOH,aAAamB,QAAQ,CAACD,KAAKf;QACtC;IACF;IACA,OAAOe;AACT;AAYA,OAAO,eAAeE,KACpBC,IAA2F,EAC3FC,GAA2B,EAC3BC,IAAgB,EAChBpB,CAAiB;IAEjB,IAAIqB,KACFF,eAAeG,YACXH,MACA,MAAMZ,OAAOC,MAAM,CAACe,SAAS,CAC3B,OACAb,SAASS,MACT;QACEK,MAAM;QACNN,MAAM;YACJM,MAAMC,cAAcP;QACtB;IACF,GACA,OACA;QAAC;KAAO;IAEhB,IAAIZ,SAAS,MAAMC,OAAOC,MAAM,CAACkB,IAAI,CACnC;QACEF,MAAM;QACNN,MAAM;YACJM,MAAMN;QACR;IACF,GACAG,IACAX,SAASU;IAGX,OAAOP,OAAOP,QAAQN;AACxB;AAEA,SAASyB,cAAcP,IAAY;IACjC,OAAOA,KAAKS,OAAO,CAAC,SAAS;AAC/B"}
|
|
1
|
+
{"version":3,"sources":["../../src/crypto/hashing.ts"],"sourcesContent":["import { ArrayBuffers } from '../io/ArrayBuffers';\n\nexport function sha1(s: BinaryLike, o?: undefined): Promise<Buffer>;\nexport function sha1(s: BinaryLike, o: 'hex' | 'base64'): Promise<string>;\n\nexport function sha1(s: BinaryLike, o?: DigestOptions) {\n return digestOf('SHA-1', s, o);\n}\n\nexport function sha256(s: BinaryLike, o?: undefined): Promise<Buffer>;\nexport function sha256(s: BinaryLike, o: 'hex' | 'base64'): Promise<string>;\n\nexport function sha256(s: BinaryLike, o?: DigestOptions) {\n return digestOf('SHA-256', s, o);\n}\n\nexport function sha384(s: BinaryLike, o?: undefined): Promise<Buffer>;\nexport function sha384(s: BinaryLike, o: 'hex' | 'base64'): Promise<string>;\n\nexport function sha384(s: BinaryLike, o?: DigestOptions) {\n return digestOf('SHA-384', s, o);\n}\n\nexport function sha512(s: BinaryLike, o?: undefined): Promise<Buffer>;\nexport function sha512(s: BinaryLike, o: 'hex' | 'base64'): Promise<string>;\n\nexport function sha512(s: BinaryLike, o?: DigestOptions) {\n return digestOf('SHA-512', s, o);\n}\n\nfunction digestOf(a: string, s: BinaryLike, o?: DigestOptions) {\n let buffer = crypto.subtle.digest(a, binaryOf(s));\n return o ? buffer.then((v) => encode(v, o)) : buffer;\n}\n\nexport type DigestOptions =\n | 'hex'\n | 'base64'\n | {\n encoding: 'hex' | 'base64';\n };\n\ntype BinaryLike = string | BufferSource;\n\nfunction binaryOf(s: BinaryLike) {\n // ArrayBuffer, TypedArray, DataView\n if (typeof s === 'string') {\n return new TextEncoder().encode(s);\n }\n // ArrayBuffer, Buffer, TypedArray, DataView\n return s;\n}\n\nfunction encode(buf: BufferSource, o?: DigestOptions) {\n if (o) {\n switch (o) {\n case 'hex':\n case 'base64':\n return ArrayBuffers.toString(buf, o);\n }\n }\n return buf;\n}\n\ntype StringEncoding = 'hex' | 'base64';\ntype IsStringCoding<T> = T extends StringEncoding ? true : T extends { encoding: StringEncoding } ? true : false;\n\nexport function hmac<O extends DigestOptions>(\n hash: 'SHA-1' | 'SHA-256' | 'SHA-384' | 'SHA-512' | 'sha1' | 'sha256' | 'sha384' | 'sha512',\n key: BinaryLike | CryptoKey,\n data: BinaryLike,\n o?: O,\n): Promise<IsStringCoding<O> extends true ? string : Buffer>;\n\nexport async function hmac(\n hash: 'SHA-1' | 'SHA-256' | 'SHA-384' | 'SHA-512' | 'sha1' | 'sha256' | 'sha384' | 'sha512',\n key: BinaryLike | CryptoKey,\n data: BinaryLike,\n o?: DigestOptions,\n) {\n let ck =\n key instanceof CryptoKey\n ? key\n : await crypto.subtle.importKey(\n 'raw',\n binaryOf(key),\n {\n name: 'HMAC',\n hash: {\n name: normalizeHash(hash),\n },\n },\n false,\n ['sign'],\n );\n let buffer = await crypto.subtle.sign(\n {\n name: 'HMAC',\n hash: {\n name: hash,\n },\n },\n ck,\n binaryOf(data),\n );\n\n return encode(buffer, o);\n}\n\nfunction normalizeHash(hash: string) {\n return hash.replace(/^sha/i, 'SHA-');\n}\n"],"names":["ArrayBuffers","sha1","s","o","digestOf","sha256","sha384","sha512","a","buffer","crypto","subtle","digest","binaryOf","then","v","encode","TextEncoder","buf","toString","hmac","hash","key","data","ck","CryptoKey","importKey","name","normalizeHash","sign","replace"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,YAAY,QAAQ,qBAAqB;AAKlD,OAAO,SAASC,KAAKC,CAAa,EAAEC,CAAiB;IACnD,OAAOC,SAAS,SAASF,GAAGC;AAC9B;AAKA,OAAO,SAASE,OAAOH,CAAa,EAAEC,CAAiB;IACrD,OAAOC,SAAS,WAAWF,GAAGC;AAChC;AAKA,OAAO,SAASG,OAAOJ,CAAa,EAAEC,CAAiB;IACrD,OAAOC,SAAS,WAAWF,GAAGC;AAChC;AAKA,OAAO,SAASI,OAAOL,CAAa,EAAEC,CAAiB;IACrD,OAAOC,SAAS,WAAWF,GAAGC;AAChC;AAEA,SAASC,SAASI,CAAS,EAAEN,CAAa,EAAEC,CAAiB;IAC3D,IAAIM,SAASC,OAAOC,MAAM,CAACC,MAAM,CAACJ,GAAGK,SAASX;IAC9C,OAAOC,IAAIM,OAAOK,IAAI,CAAC,CAACC,IAAMC,OAAOD,GAAGZ,MAAMM;AAChD;AAWA,SAASI,SAASX,CAAa;IAC7B,oCAAoC;IACpC,IAAI,OAAOA,MAAM,UAAU;QACzB,OAAO,IAAIe,cAAcD,MAAM,CAACd;IAClC;IACA,6CAA6C;IAC7C,OAAOA;AACT;AAEA,SAASc,OAAOE,GAAiB,EAAEf,CAAiB;IAClD,IAAIA,GAAG;QACL,OAAQA;YACN,KAAK;YACL,KAAK;gBACH,OAAOH,aAAamB,QAAQ,CAACD,KAAKf;QACtC;IACF;IACA,OAAOe;AACT;AAYA,OAAO,eAAeE,KACpBC,IAA2F,EAC3FC,GAA2B,EAC3BC,IAAgB,EAChBpB,CAAiB;IAEjB,IAAIqB,KACFF,eAAeG,YACXH,MACA,MAAMZ,OAAOC,MAAM,CAACe,SAAS,CAC3B,OACAb,SAASS,MACT;QACEK,MAAM;QACNN,MAAM;YACJM,MAAMC,cAAcP;QACtB;IACF,GACA,OACA;QAAC;KAAO;IAEhB,IAAIZ,SAAS,MAAMC,OAAOC,MAAM,CAACkB,IAAI,CACnC;QACEF,MAAM;QACNN,MAAM;YACJM,MAAMN;QACR;IACF,GACAG,IACAX,SAASU;IAGX,OAAOP,OAAOP,QAAQN;AACxB;AAEA,SAASyB,cAAcP,IAAY;IACjC,OAAOA,KAAKS,OAAO,CAAC,SAAS;AAC/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/crypto/md5.bench.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\nimport { bench, describe } from 'vitest';\nimport { md5 } from './md5';\n\ndescribe('md5', () => {\n const dataset = new Array(10000).fill(0).map((_, i) => String(Math.random() * i));\n let iterations = 0;\n bench(\n 'js',\n function () {\n iterations++;\n md5(dataset[iterations % dataset.length]);\n },\n {\n iterations: 10000,\n },\n );\n\n bench(\n 'native',\n function () {\n iterations++;\n createHash('md5')\n .update(dataset[iterations % dataset.length])\n .digest('hex');\n },\n {\n iterations: 10000,\n },\n );\n});\n"],"names":["createHash","bench","describe","md5","dataset","Array","fill","map","_","i","String","Math","random","iterations","length","update","digest"],"mappings":"AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,KAAK,EAAEC,QAAQ,QAAQ,SAAS;AACzC,SAASC,GAAG,QAAQ,QAAQ;AAE5BD,SAAS,OAAO;IACd,MAAME,UAAU,IAAIC,MAAM,OAAOC,IAAI,CAAC,GAAGC,GAAG,CAAC,CAACC,GAAGC,IAAMC,OAAOC,KAAKC,MAAM,KAAKH;IAC9E,IAAII,aAAa;IACjBZ,MACE,MACA;QACEY;QACAV,IAAIC,OAAO,CAACS,aAAaT,QAAQU,MAAM,CAAC;IAC1C,GACA;QACED,YAAY;IACd;IAGFZ,MACE,UACA;QACEY;QACAb,WAAW,OACRe,MAAM,CAACX,OAAO,CAACS,aAAaT,QAAQU,MAAM,CAAC,EAC3CE,MAAM,CAAC;IACZ,GACA;QACEH,YAAY;IACd;AAEJ"}
|
|
1
|
+
{"version":3,"sources":["../../src/crypto/md5.bench.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\nimport { bench, describe } from 'vitest';\nimport { md5 } from './md5';\n\ndescribe('md5', () => {\n const dataset = new Array(10000).fill(0).map((_, i) => String(Math.random() * i));\n let iterations = 0;\n bench(\n 'js',\n function () {\n iterations++;\n md5(dataset[iterations % dataset.length]);\n },\n {\n iterations: 10000,\n },\n );\n\n bench(\n 'native',\n function () {\n iterations++;\n createHash('md5')\n .update(dataset[iterations % dataset.length])\n .digest('hex');\n },\n {\n iterations: 10000,\n },\n );\n});\n"],"names":["createHash","bench","describe","md5","dataset","Array","fill","map","_","i","String","Math","random","iterations","length","update","digest"],"rangeMappings":";;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,KAAK,EAAEC,QAAQ,QAAQ,SAAS;AACzC,SAASC,GAAG,QAAQ,QAAQ;AAE5BD,SAAS,OAAO;IACd,MAAME,UAAU,IAAIC,MAAM,OAAOC,IAAI,CAAC,GAAGC,GAAG,CAAC,CAACC,GAAGC,IAAMC,OAAOC,KAAKC,MAAM,KAAKH;IAC9E,IAAII,aAAa;IACjBZ,MACE,MACA;QACEY;QACAV,IAAIC,OAAO,CAACS,aAAaT,QAAQU,MAAM,CAAC;IAC1C,GACA;QACED,YAAY;IACd;IAGFZ,MACE,UACA;QACEY;QACAb,WAAW,OACRe,MAAM,CAACX,OAAO,CAACS,aAAaT,QAAQU,MAAM,CAAC,EAC3CE,MAAM,CAAC;IACZ,GACA;QACEH,YAAY;IACd;AAEJ"}
|
package/lib/crypto/md5.d.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/crypto/md5.d.ts"],"sourcesContent":["export function md5(s: string): string;\n"],"names":[],"mappings":"AAAA,WAAuC"}
|
|
1
|
+
{"version":3,"sources":["../../src/crypto/md5.d.ts"],"sourcesContent":["export function md5(s: string): string;\n"],"names":[],"rangeMappings":"","mappings":"AAAA,WAAuC"}
|