@wener/utils 1.1.33 → 1.1.35
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 +41 -0
- package/lib/arrays/MaybeArray.js.map +1 -0
- package/lib/arrays/arrayFromAsync.js +7 -0
- package/lib/arrays/arrayFromAsync.js.map +1 -0
- package/lib/asyncs/AsyncInterval.js +14 -0
- package/lib/asyncs/AsyncInterval.js.map +1 -0
- package/lib/asyncs/MaybePromise.js +3 -0
- package/lib/asyncs/MaybePromise.js.map +1 -0
- package/lib/asyncs/createAsyncIterator.js +41 -0
- package/lib/asyncs/createAsyncIterator.js.map +1 -0
- package/lib/asyncs/createLazyPromise.js +65 -0
- package/lib/asyncs/createLazyPromise.js.map +1 -0
- package/lib/asyncs/firstOfAsyncIterator.js +11 -0
- package/lib/asyncs/firstOfAsyncIterator.js.map +1 -0
- package/lib/asyncs/generatorOfStream.js +16 -0
- package/lib/asyncs/generatorOfStream.js.map +1 -0
- package/lib/asyncs/isIterator.js +5 -0
- package/lib/asyncs/isIterator.js.map +1 -0
- package/lib/asyncs/isPromise.js +5 -0
- package/lib/asyncs/isPromise.js.map +1 -0
- package/lib/asyncs/isThenable.js +6 -0
- package/lib/asyncs/isThenable.js.map +1 -0
- package/lib/asyncs/nextOfAsyncIterator.js +33 -0
- package/lib/asyncs/nextOfAsyncIterator.js.map +1 -0
- package/lib/asyncs/promiseOfCallback.js +17 -0
- package/lib/asyncs/promiseOfCallback.js.map +1 -0
- package/lib/asyncs/sleep.js +3 -0
- package/lib/asyncs/sleep.js.map +1 -0
- package/lib/asyncs/timeout.js +29 -0
- package/lib/asyncs/timeout.js.map +1 -0
- package/lib/browsers/copy.js +53 -0
- package/lib/browsers/copy.js.map +1 -0
- package/lib/browsers/download.js +41 -0
- package/lib/browsers/download.js.map +1 -0
- package/lib/browsers/getFileFromDataTransfer.js +45 -0
- package/lib/browsers/getFileFromDataTransfer.js.map +1 -0
- package/lib/browsers/loaders.js +49 -0
- package/lib/browsers/loaders.js.map +1 -0
- package/lib/cn/index.js +3 -0
- package/lib/cn/index.js.map +1 -0
- package/lib/cn/parseChineseNumber.js +94 -0
- package/lib/cn/parseChineseNumber.js.map +1 -0
- package/lib/crypto/base.js +7 -0
- package/lib/crypto/base.js.map +1 -0
- package/lib/crypto/getNodeCrypto.js +18 -0
- package/lib/crypto/getNodeCrypto.js.map +1 -0
- package/lib/crypto/getRandomValues.js +32 -0
- package/lib/crypto/getRandomValues.js.map +1 -0
- package/lib/crypto/hashing.js +57 -0
- package/lib/crypto/hashing.js.map +1 -0
- package/lib/crypto/md5.bench.js +21 -0
- package/lib/crypto/md5.bench.js.map +1 -0
- package/lib/crypto/md5.d.js +3 -0
- package/lib/crypto/md5.d.js.map +1 -0
- package/lib/crypto/md5.js +121 -0
- package/lib/crypto/md5.js.map +1 -0
- package/lib/crypto/pem/pem.js +35 -0
- package/lib/crypto/pem/pem.js.map +1 -0
- package/lib/crypto/randomUUID.js +16 -0
- package/lib/crypto/randomUUID.js.map +1 -0
- package/lib/crypto/ulid.js +153 -0
- package/lib/crypto/ulid.js.map +1 -0
- package/lib/errors/Errors.js +181 -0
- package/lib/errors/Errors.js.map +1 -0
- package/lib/fetch/createFetchWith.js +23 -0
- package/lib/fetch/createFetchWith.js.map +1 -0
- package/lib/fetch/createFetchWithLogging.js +25 -0
- package/lib/fetch/createFetchWithLogging.js.map +1 -0
- package/lib/fetch/createFetchWithRetry.js +66 -0
- package/lib/fetch/createFetchWithRetry.js.map +1 -0
- package/lib/fetch/dumpRequest.js +45 -0
- package/lib/fetch/dumpRequest.js.map +1 -0
- package/lib/fetch/dumpResponse.js +16 -0
- package/lib/fetch/dumpResponse.js.map +1 -0
- package/lib/fetch/index.js +7 -0
- package/lib/fetch/index.js.map +1 -0
- package/lib/fetch/types.js +3 -0
- package/lib/fetch/types.js.map +1 -0
- package/lib/http/HttpStatus.js +94 -0
- package/lib/http/HttpStatus.js.map +1 -0
- package/lib/i18n/createTranslate.js +54 -0
- package/lib/i18n/createTranslate.js.map +1 -0
- package/lib/index.js +83 -0
- package/lib/index.js.map +1 -0
- package/lib/io/AbstractEncoding.js +7 -0
- package/lib/io/AbstractEncoding.js.map +1 -0
- package/lib/io/ArrayBuffer.test-d.js +7 -0
- package/lib/io/ArrayBuffer.test-d.js.map +1 -0
- package/lib/io/ArrayBuffers.js +210 -0
- package/lib/io/ArrayBuffers.js.map +1 -0
- package/lib/io/Buffer.js +25 -0
- package/lib/io/Buffer.js.map +1 -0
- package/lib/io/Bytes.js +51 -0
- package/lib/io/Bytes.js.map +1 -0
- package/lib/io/base64.js +54 -0
- package/lib/io/base64.js.map +1 -0
- package/lib/io/isBuffer.js +9 -0
- package/lib/io/isBuffer.js.map +1 -0
- package/lib/io/isTransferable.js +30 -0
- package/lib/io/isTransferable.js.map +1 -0
- package/lib/isomorphics/getGlobalThis.js +19 -0
- package/lib/isomorphics/getGlobalThis.js.map +1 -0
- package/lib/isomorphics/structuredClone.js +78 -0
- package/lib/isomorphics/structuredClone.js.map +1 -0
- package/lib/langs/AsyncCloser.js +40 -0
- package/lib/langs/AsyncCloser.js.map +1 -0
- package/lib/langs/Closer.js +34 -0
- package/lib/langs/Closer.js.map +1 -0
- package/lib/langs/MaybeFunction.js +9 -0
- package/lib/langs/MaybeFunction.js.map +1 -0
- package/lib/langs/classOf.js +5 -0
- package/lib/langs/classOf.js.map +1 -0
- package/lib/langs/deepEqual.js +87 -0
- package/lib/langs/deepEqual.js.map +1 -0
- package/lib/langs/deepFreeze.js +20 -0
- package/lib/langs/deepFreeze.js.map +1 -0
- package/lib/langs/hashCode.ignored.js +112 -0
- package/lib/langs/hashCode.ignored.js.map +1 -0
- package/lib/langs/isClass.js +5 -0
- package/lib/langs/isClass.js.map +1 -0
- package/lib/langs/isDefined.js +5 -0
- package/lib/langs/isDefined.js.map +1 -0
- package/lib/langs/isEmptyObject.js +6 -0
- package/lib/langs/isEmptyObject.js.map +1 -0
- package/lib/langs/isFunction.js +5 -0
- package/lib/langs/isFunction.js.map +1 -0
- package/lib/langs/isPlainObject.js +10 -0
- package/lib/langs/isPlainObject.js.map +1 -0
- package/lib/langs/memoize.js +22 -0
- package/lib/langs/memoize.js.map +1 -0
- package/lib/langs/parseBoolean.js +30 -0
- package/lib/langs/parseBoolean.js.map +1 -0
- package/lib/langs/shallowClone.js +15 -0
- package/lib/langs/shallowClone.js.map +1 -0
- package/lib/langs/shallowEqual.js +24 -0
- package/lib/langs/shallowEqual.js.map +1 -0
- package/lib/libs/ms.js +137 -0
- package/lib/libs/ms.js.map +1 -0
- package/lib/logging/Logger.js +5 -0
- package/lib/logging/Logger.js.map +1 -0
- package/lib/logging/createChildLogger.js +16 -0
- package/lib/logging/createChildLogger.js.map +1 -0
- package/lib/logging/createLogger.js +63 -0
- package/lib/logging/createLogger.js.map +1 -0
- package/lib/logging/createNoopLogger.js +13 -0
- package/lib/logging/createNoopLogger.js.map +1 -0
- package/lib/logging/slog.js +143 -0
- package/lib/logging/slog.js.map +1 -0
- package/lib/maths/clamp.js +21 -0
- package/lib/maths/clamp.js.map +1 -0
- package/lib/maths/random.js +17 -0
- package/lib/maths/random.js.map +1 -0
- package/lib/modules/isModule.js +7 -0
- package/lib/modules/isModule.js.map +1 -0
- package/lib/modules/parseModuleId.js +39 -0
- package/lib/modules/parseModuleId.js.map +1 -0
- package/lib/objects/get.js +16 -0
- package/lib/objects/get.js.map +1 -0
- package/lib/objects/get.test-d.js +33 -0
- package/lib/objects/get.test-d.js.map +1 -0
- package/lib/objects/merge/index.js +3 -0
- package/lib/objects/merge/index.js.map +1 -0
- package/lib/objects/merge/isMergeableObject.js +19 -0
- package/lib/objects/merge/isMergeableObject.js.map +1 -0
- package/lib/objects/merge/merge.js +90 -0
- package/lib/objects/merge/merge.js.map +1 -0
- package/lib/objects/parseObjectPath.js +39 -0
- package/lib/objects/parseObjectPath.js.map +1 -0
- package/lib/objects/set.js +38 -0
- package/lib/objects/set.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/common/encoder.js +94 -0
- package/lib/schema/typebox/gen/codegen/common/encoder.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/common/formatter.js +33 -0
- package/lib/schema/typebox/gen/codegen/common/formatter.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/common/index.js +29 -0
- package/lib/schema/typebox/gen/codegen/common/index.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/common/jsdoc.js +117 -0
- package/lib/schema/typebox/gen/codegen/common/jsdoc.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/expression/compiler.js +364 -0
- package/lib/schema/typebox/gen/codegen/expression/compiler.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/expression/errors.js +259 -0
- package/lib/schema/typebox/gen/codegen/expression/errors.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/expression/evaluator.js +254 -0
- package/lib/schema/typebox/gen/codegen/expression/evaluator.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/expression/expression.js +381 -0
- package/lib/schema/typebox/gen/codegen/expression/expression.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/expression/index.js +32 -0
- package/lib/schema/typebox/gen/codegen/expression/index.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/index.js +29 -0
- package/lib/schema/typebox/gen/codegen/index.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/model/index.js +40 -0
- package/lib/schema/typebox/gen/codegen/model/index.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-arktype.js +260 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-arktype.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-expression.js +383 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-expression.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-grpc.js +238 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-grpc.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-io-ts.js +274 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-io-ts.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-javascript.js +47 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-javascript.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-json-schema.js +192 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-json-schema.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-typebox.js +33 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-typebox.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-typescript.js +188 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-typescript.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-valibot.js +239 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-valibot.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-value.js +43 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-value.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-yrel.js +227 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-yrel.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-yup.js +225 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-yup.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-zod.js +248 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-zod.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/model/model.js +27 -0
- package/lib/schema/typebox/gen/codegen/model/model.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/typescript/index.js +28 -0
- package/lib/schema/typebox/gen/codegen/typescript/index.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-model.js +72 -0
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-model.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-typebox.js +620 -0
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-typebox.js.map +1 -0
- package/lib/schema/typebox/gen/index.js +3 -0
- package/lib/schema/typebox/gen/index.js.map +1 -0
- package/lib/schema/typebox/index.js +3 -0
- package/lib/schema/typebox/index.js.map +1 -0
- package/lib/schema/typebox/typebox.js +23 -0
- package/lib/schema/typebox/typebox.js.map +1 -0
- package/lib/server/crypto/md5.js +6 -0
- package/lib/server/crypto/md5.js.map +1 -0
- package/lib/server/fetch/createFetchWithProxy.js +4 -0
- package/lib/server/fetch/createFetchWithProxy.js.map +1 -0
- package/lib/server/fetch/createFetchWithProxyByNodeFetch.js +38 -0
- package/lib/server/fetch/createFetchWithProxyByNodeFetch.js.map +1 -0
- package/lib/server/fetch/createFetchWithProxyByUndici.js +64 -0
- package/lib/server/fetch/createFetchWithProxyByUndici.js.map +1 -0
- package/lib/server/getPackageDir.js +16 -0
- package/lib/server/getPackageDir.js.map +1 -0
- package/lib/server/index.js +7 -0
- package/lib/server/index.js.map +1 -0
- package/lib/server/jsdom.js +3 -0
- package/lib/server/jsdom.js.map +1 -0
- package/lib/server/node-fetch.js +4 -0
- package/lib/server/node-fetch.js.map +1 -0
- package/lib/server/polyfill/polyfillBrowser.js +17 -0
- package/lib/server/polyfill/polyfillBrowser.js.map +1 -0
- package/lib/server/polyfill/polyfillCrypto.js +11 -0
- package/lib/server/polyfill/polyfillCrypto.js.map +1 -0
- package/lib/server/polyfill/polyfillFetch.js +25 -0
- package/lib/server/polyfill/polyfillFetch.js.map +1 -0
- package/lib/server/polyfill/polyfillJsDom.js +64 -0
- package/lib/server/polyfill/polyfillJsDom.js.map +1 -0
- package/lib/server/polyfill/polyfillWebSocket.js +21 -0
- package/lib/server/polyfill/polyfillWebSocket.js.map +1 -0
- package/lib/server/ws.js +3 -0
- package/lib/server/ws.js.map +1 -0
- package/lib/strings/camelCase.js +58 -0
- package/lib/strings/camelCase.js.map +1 -0
- package/lib/strings/formatBytes.js +43 -0
- package/lib/strings/formatBytes.js.map +1 -0
- package/lib/strings/renderTemplate.js +32 -0
- package/lib/strings/renderTemplate.js.map +1 -0
- package/lib/typedoc.js +4 -0
- package/lib/typedoc.js.map +1 -0
- package/lib/types.d.js +6 -0
- package/lib/types.d.js.map +1 -0
- package/lib/validations/asserts.js +14 -0
- package/lib/validations/asserts.js.map +1 -0
- package/lib/validations/isUUID.js +5 -0
- package/lib/validations/isUUID.js.map +1 -0
- package/lib/validations/parseTimestamp.js +29 -0
- package/lib/validations/parseTimestamp.js.map +1 -0
- package/package.json +1 -3
- package/dist/LICENSE.txt +0 -1
- package/dist/cjs/index.cjs +0 -21
- package/dist/cjs/index.cjs.map +0 -1
- package/dist/esm/index.js +0 -21
- package/dist/esm/index.js.map +0 -1
- package/dist/system/index.js +0 -21
- package/dist/system/index.js.map +0 -1
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Array or element of an array
|
|
3
|
+
*/ /**
|
|
4
|
+
* convert to single value object
|
|
5
|
+
*/ export function objectOfMaybeArray(o, keys = null, picker = firstOfMaybeArray) {
|
|
6
|
+
if (keys === null) {
|
|
7
|
+
return Object.fromEntries(Object.entries(o).map(([k, v])=>[
|
|
8
|
+
k,
|
|
9
|
+
picker(v)
|
|
10
|
+
]));
|
|
11
|
+
}
|
|
12
|
+
return Object.fromEntries(keys.map((v)=>[
|
|
13
|
+
v,
|
|
14
|
+
picker(v)
|
|
15
|
+
]));
|
|
16
|
+
}
|
|
17
|
+
export function firstOfMaybeArray(v) {
|
|
18
|
+
if (Array.isArray(v)) {
|
|
19
|
+
return v[0];
|
|
20
|
+
}
|
|
21
|
+
return v;
|
|
22
|
+
}
|
|
23
|
+
export function lastOfMaybeArray(v) {
|
|
24
|
+
if (Array.isArray(v)) {
|
|
25
|
+
return v[v.length - 1];
|
|
26
|
+
}
|
|
27
|
+
return v;
|
|
28
|
+
}
|
|
29
|
+
export function arrayOfMaybeArray(v) {
|
|
30
|
+
if (Array.isArray(v)) {
|
|
31
|
+
return v;
|
|
32
|
+
}
|
|
33
|
+
if (v === null || v === undefined) {
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
36
|
+
return [
|
|
37
|
+
v
|
|
38
|
+
];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=MaybeArray.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function setAsyncInterval(cb, interval, initial = interval) {
|
|
2
|
+
let id;
|
|
3
|
+
const handler = async ()=>{
|
|
4
|
+
await cb();
|
|
5
|
+
id = setTimeout(handler, interval);
|
|
6
|
+
};
|
|
7
|
+
id = setTimeout(handler, initial);
|
|
8
|
+
return ()=>id;
|
|
9
|
+
}
|
|
10
|
+
export function clearAsyncInterval(v) {
|
|
11
|
+
clearTimeout(v?.());
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=AsyncInterval.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/asyncs/MaybePromise.ts"],"sourcesContent":["export type MaybePromise<T> = Promise<T> | T;\n"],"names":[],"mappings":"AAAA,WAA6C"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createLazyPromise } from './createLazyPromise.js';
|
|
2
|
+
export function createAsyncIterator(fn) {
|
|
3
|
+
const values = [];
|
|
4
|
+
let recv;
|
|
5
|
+
{
|
|
6
|
+
let next;
|
|
7
|
+
values.push(next = createLazyPromise());
|
|
8
|
+
recv = (val, err)=>{
|
|
9
|
+
if (err !== undefined) {
|
|
10
|
+
next.resolve([
|
|
11
|
+
undefined,
|
|
12
|
+
true,
|
|
13
|
+
err
|
|
14
|
+
]);
|
|
15
|
+
} else if (val !== undefined) {
|
|
16
|
+
next.resolve(val);
|
|
17
|
+
} else {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
values.push(next = createLazyPromise());
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
fn(recv);
|
|
24
|
+
return async function*() {
|
|
25
|
+
let value;
|
|
26
|
+
let err;
|
|
27
|
+
for(let i = 0, done = false; !done; i++){
|
|
28
|
+
let result = await values[i];
|
|
29
|
+
delete values[i];
|
|
30
|
+
[value, done, err] = result;
|
|
31
|
+
if (err) {
|
|
32
|
+
throw err;
|
|
33
|
+
}
|
|
34
|
+
if (value !== undefined) {
|
|
35
|
+
yield value;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=createAsyncIterator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/asyncs/createAsyncIterator.ts"],"sourcesContent":["import { type MaybePromise } from './MaybePromise';\nimport { createLazyPromise, type LazyPromise } from './createLazyPromise';\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":"AACA,SAASA,iBAAiB,QAA0B,sBAAsB;AAI1E,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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { isPromise } from './isPromise.js';
|
|
2
|
+
/**
|
|
3
|
+
* createLazyPromise return a promise that can be resolved or rejected manually.
|
|
4
|
+
* if you pass a function to it, it will be executed when the promise try to resolve.
|
|
5
|
+
*/ export function createLazyPromise(executor) {
|
|
6
|
+
const holder = {
|
|
7
|
+
resolve (_) {
|
|
8
|
+
throw new Error('pending resolve');
|
|
9
|
+
},
|
|
10
|
+
reject (_) {
|
|
11
|
+
throw new Error('pending reject');
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
const future = Object.assign(new Promise((resolve, reject)=>{
|
|
15
|
+
holder.reject = reject;
|
|
16
|
+
holder.resolve = resolve;
|
|
17
|
+
}), {
|
|
18
|
+
resolve (v) {
|
|
19
|
+
holder.resolve(v);
|
|
20
|
+
},
|
|
21
|
+
reject (v) {
|
|
22
|
+
holder.resolve(v);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
if (executor) {
|
|
26
|
+
const r = holder.resolve;
|
|
27
|
+
let shouldExec = true;
|
|
28
|
+
holder.resolve = (v)=>{
|
|
29
|
+
shouldExec = false;
|
|
30
|
+
r(v);
|
|
31
|
+
};
|
|
32
|
+
const then = future.then.bind(future);
|
|
33
|
+
future.then = (...args)=>{
|
|
34
|
+
if (shouldExec) {
|
|
35
|
+
shouldExec = false;
|
|
36
|
+
try {
|
|
37
|
+
// kind of bad
|
|
38
|
+
const result = executor(holder.resolve, holder.reject);
|
|
39
|
+
// ensure resolve/reject is called
|
|
40
|
+
if (isPromise(result)) {
|
|
41
|
+
result.then(holder.resolve, holder.reject);
|
|
42
|
+
} else if (result !== undefined) {
|
|
43
|
+
holder.resolve(result);
|
|
44
|
+
}
|
|
45
|
+
} catch (e) {
|
|
46
|
+
holder.reject(e);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return then(...args);
|
|
50
|
+
};
|
|
51
|
+
const like = holder;
|
|
52
|
+
like.then = future.then;
|
|
53
|
+
like.catch = future.catch.bind(future);
|
|
54
|
+
if (future.finally) like.finally = future.finally;
|
|
55
|
+
void Object.defineProperty(like, Symbol.species, {
|
|
56
|
+
get () {
|
|
57
|
+
return Promise;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
return like;
|
|
61
|
+
}
|
|
62
|
+
return future;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
//# sourceMappingURL=createLazyPromise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/asyncs/createLazyPromise.ts"],"sourcesContent":["import type { MaybePromise } from './MaybePromise';\nimport { isPromise } from './isPromise';\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 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","holder","resolve","_","Error","reject","future","Object","assign","Promise","v","r","shouldExec","then","bind","args","result","undefined","e","like","catch","finally","defineProperty","Symbol","species","get"],"mappings":"AACA,SAASA,SAAS,QAAQ,cAAc;AAOxC;;;CAGC,GACD,OAAO,SAASC,kBACdC,QAE+F;IAE/F,MAAMC,SAAS;QACbC,SAAQC,CAAM;YACZ,MAAM,IAAIC,MAAM;QAClB;QACAC,QAAOF,CAAM;YACX,MAAM,IAAIC,MAAM;QAClB;IACF;IACA,MAAME,SAASC,OAAOC,MAAM,CAC1B,IAAIC,QAAW,CAACP,SAASG;QACvBJ,OAAOI,MAAM,GAAGA;QAChBJ,OAAOC,OAAO,GAAGA;IACnB,IACA;QACEA,SAAQQ,CAAM;YACZT,OAAOC,OAAO,CAACQ;QACjB;QACAL,QAAOK,CAAM;YACXT,OAAOC,OAAO,CAACQ;QACjB;IACF;IAEF,IAAIV,UAAU;QACZ,MAAMW,IAAIV,OAAOC,OAAO;QACxB,IAAIU,aAAa;QACjBX,OAAOC,OAAO,GAAG,CAACQ;YAChBE,aAAa;YACbD,EAAED;QACJ;QACA,MAAMG,OAAOP,OAAOO,IAAI,CAACC,IAAI,CAACR;QAC9BA,OAAOO,IAAI,GAAG,CAAC,GAAGE;YAChB,IAAIH,YAAY;gBACdA,aAAa;gBACb,IAAI;oBACF,cAAc;oBACd,MAAMI,SAAShB,SAASC,OAAOC,OAAO,EAAED,OAAOI,MAAM;oBACrD,kCAAkC;oBAClC,IAAIP,UAAUkB,SAAS;wBACrBA,OAAOH,IAAI,CAACZ,OAAOC,OAAO,EAAED,OAAOI,MAAM;oBAC3C,OAAO,IAAIW,WAAWC,WAAW;wBAC/BhB,OAAOC,OAAO,CAACc;oBACjB;gBACF,EAAE,OAAOE,GAAG;oBACVjB,OAAOI,MAAM,CAACa;gBAChB;YACF;YACA,OAAOL,QAAQE;QACjB;QACA,MAAMI,OAAOlB;QACbkB,KAAKN,IAAI,GAAGP,OAAOO,IAAI;QACvBM,KAAKC,KAAK,GAAGd,OAAOc,KAAK,CAACN,IAAI,CAACR;QAC/B,IAAIA,OAAOe,OAAO,EAAEF,KAAKE,OAAO,GAAGf,OAAOe,OAAO;QAEjD,KAAKd,OAAOe,cAAc,CAACH,MAAMI,OAAOC,OAAO,EAAE;YAC/CC;gBACE,OAAOhB;YACT;QACF;QACA,OAAOU;IACT;IACA,OAAOb;AACT"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { isPromise } from './isPromise.js';
|
|
2
|
+
import { nextOfAsyncIterator } from './nextOfAsyncIterator.js';
|
|
3
|
+
export function firstOfAsyncIterator(it) {
|
|
4
|
+
const next = nextOfAsyncIterator(it);
|
|
5
|
+
if (isPromise(next)) {
|
|
6
|
+
return next.then((v)=>v[0]);
|
|
7
|
+
}
|
|
8
|
+
return next[0];
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=firstOfAsyncIterator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/asyncs/firstOfAsyncIterator.ts"],"sourcesContent":["import { MaybePromise } from './MaybePromise';\nimport { isPromise } from './isPromise';\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":"AACA,SAASA,SAAS,QAAQ,cAAc;AACxC,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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function* generatorOfStream(stream) {
|
|
2
|
+
let done = false;
|
|
3
|
+
stream.on('end', ()=>{
|
|
4
|
+
done = true;
|
|
5
|
+
});
|
|
6
|
+
// eslint-disable-next-line no-unmodified-loop-condition
|
|
7
|
+
while(!done){
|
|
8
|
+
yield new Promise((resolve, reject)=>{
|
|
9
|
+
stream.once('data', resolve);
|
|
10
|
+
stream.once('end', resolve);
|
|
11
|
+
stream.once('error', reject);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=generatorOfStream.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { isIterator } from './isIterator.js';
|
|
2
|
+
import { isPromise } from './isPromise.js';
|
|
3
|
+
export function nextOfAsyncIterator(it) {
|
|
4
|
+
if (isPromise(it)) {
|
|
5
|
+
return it.then((v)=>nextOfAsyncIterator(v));
|
|
6
|
+
}
|
|
7
|
+
if (isIterator(it)) {
|
|
8
|
+
let next = it.next();
|
|
9
|
+
if (isPromise(next)) {
|
|
10
|
+
return next.then((v)=>[
|
|
11
|
+
v.value,
|
|
12
|
+
v.done
|
|
13
|
+
]);
|
|
14
|
+
}
|
|
15
|
+
return [
|
|
16
|
+
next.value,
|
|
17
|
+
next.done
|
|
18
|
+
];
|
|
19
|
+
}
|
|
20
|
+
if (it && typeof it === 'object') {
|
|
21
|
+
if (Symbol.iterator in it) {
|
|
22
|
+
return nextOfAsyncIterator(it[Symbol.iterator]());
|
|
23
|
+
}
|
|
24
|
+
if (Symbol.asyncIterator in it) {
|
|
25
|
+
return nextOfAsyncIterator(it[Symbol.asyncIterator]());
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return [
|
|
29
|
+
it
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=nextOfAsyncIterator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/asyncs/nextOfAsyncIterator.ts"],"sourcesContent":["import { MaybePromise } from './MaybePromise';\nimport { isIterator } from './isIterator';\nimport { isPromise } from './isPromise';\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":"AACA,SAASA,UAAU,QAAQ,eAAe;AAC1C,SAASC,SAAS,QAAQ,cAAc;AAKxC,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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export function promiseOfCallback(fun) {
|
|
2
|
+
return new Promise((resolve, reject)=>{
|
|
3
|
+
try {
|
|
4
|
+
fun((e, v)=>{
|
|
5
|
+
if (e) {
|
|
6
|
+
reject(e);
|
|
7
|
+
} else {
|
|
8
|
+
resolve(v);
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
} catch (e) {
|
|
12
|
+
reject(e);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=promiseOfCallback.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export function timeout(v, ms) {
|
|
2
|
+
const error = new TimeoutError();
|
|
3
|
+
let timeout;
|
|
4
|
+
let ac;
|
|
5
|
+
if (typeof v === 'function') {
|
|
6
|
+
ac = new AbortController();
|
|
7
|
+
v = v({
|
|
8
|
+
signal: ac.signal
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
return Promise.race([
|
|
12
|
+
v,
|
|
13
|
+
new Promise((_resolve, reject)=>{
|
|
14
|
+
timeout = setTimeout(()=>{
|
|
15
|
+
ac?.abort(error);
|
|
16
|
+
reject(error);
|
|
17
|
+
}, ms);
|
|
18
|
+
})
|
|
19
|
+
]).finally(()=>{
|
|
20
|
+
clearTimeout(timeout);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export class TimeoutError extends Error {
|
|
24
|
+
constructor(){
|
|
25
|
+
super('TimeoutError');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=timeout.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
let _copy;
|
|
2
|
+
// https://gist.github.com/rproenca/64781c6a1329b48a455b645d361a9aa3
|
|
3
|
+
function initCopy() {
|
|
4
|
+
let textArea;
|
|
5
|
+
function isIOS() {
|
|
6
|
+
return navigator.userAgent.match(/ipad|iphone/i);
|
|
7
|
+
}
|
|
8
|
+
function createTextArea(text) {
|
|
9
|
+
textArea = document.createElement('textArea');
|
|
10
|
+
textArea.value = text;
|
|
11
|
+
document.body.appendChild(textArea);
|
|
12
|
+
}
|
|
13
|
+
function selectText() {
|
|
14
|
+
let range, selection;
|
|
15
|
+
if (isIOS()) {
|
|
16
|
+
range = document.createRange();
|
|
17
|
+
range.selectNodeContents(textArea);
|
|
18
|
+
selection = window.getSelection();
|
|
19
|
+
if (selection === null) {
|
|
20
|
+
console.error(`no selection`);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
selection.removeAllRanges();
|
|
24
|
+
selection.addRange(range);
|
|
25
|
+
textArea.setSelectionRange(0, 999999);
|
|
26
|
+
} else {
|
|
27
|
+
textArea.select();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function copyToClipboard() {
|
|
31
|
+
document.execCommand('copy');
|
|
32
|
+
document.body.removeChild(textArea);
|
|
33
|
+
}
|
|
34
|
+
_copy = (text)=>{
|
|
35
|
+
createTextArea(text);
|
|
36
|
+
selectText();
|
|
37
|
+
copyToClipboard();
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Write text to clipboard
|
|
42
|
+
* @param content content
|
|
43
|
+
*/ export function copy(content) {
|
|
44
|
+
if (window.navigator?.clipboard?.writeText) {
|
|
45
|
+
return window.navigator.clipboard.writeText(content);
|
|
46
|
+
}
|
|
47
|
+
if (!_copy) {
|
|
48
|
+
initCopy();
|
|
49
|
+
}
|
|
50
|
+
return _copy(content);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
//# sourceMappingURL=copy.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trigger browser download
|
|
3
|
+
* @param filename download as filename
|
|
4
|
+
* @param data data or url to download
|
|
5
|
+
* @param type content type
|
|
6
|
+
* @param raw if true, data is treated as raw data, not url
|
|
7
|
+
*/ export function download(filename, data, { type = 'application/octet-stream', raw = false } = {}) {
|
|
8
|
+
const a = document.createElement('a');
|
|
9
|
+
let closer = ()=>null;
|
|
10
|
+
try {
|
|
11
|
+
a.download = filename;
|
|
12
|
+
// console.info(`downloading ${name}`, data);
|
|
13
|
+
// url or data url
|
|
14
|
+
if (typeof data === 'string' && /^(https?:|data:)/.test(data) && !raw) {
|
|
15
|
+
a.href = data;
|
|
16
|
+
} else if (typeof data === 'string') {
|
|
17
|
+
data = new TextEncoder().encode(data);
|
|
18
|
+
}
|
|
19
|
+
if (data instanceof Uint8Array) {
|
|
20
|
+
data = new Blob([
|
|
21
|
+
data
|
|
22
|
+
], {
|
|
23
|
+
type
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
if (data instanceof File || data instanceof Blob || data instanceof MediaSource) {
|
|
27
|
+
a.href = URL.createObjectURL(data);
|
|
28
|
+
closer = ()=>{
|
|
29
|
+
URL.revokeObjectURL(a.href);
|
|
30
|
+
};
|
|
31
|
+
} else {
|
|
32
|
+
console.error(`invalid download data`, data);
|
|
33
|
+
throw new Error(`can not download ${Object.getPrototypeOf(data)}`);
|
|
34
|
+
}
|
|
35
|
+
a.click();
|
|
36
|
+
} finally{
|
|
37
|
+
closer();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=download.js.map
|
|
@@ -0,0 +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 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 // console.info(`downloading ${name}`, data);\n\n // url or data url\n if (typeof data === 'string' && /^(https?:|data:)/.test(data) && !raw) {\n a.href = data;\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 ${Object.getPrototypeOf(data)}`);\n }\n a.click();\n } finally {\n closer();\n }\n}\n"],"names":["download","filename","data","type","raw","a","document","createElement","closer","test","href","TextEncoder","encode","Uint8Array","Blob","File","MediaSource","URL","createObjectURL","revokeObjectURL","console","error","Error","Object","getPrototypeOf","click"],"mappings":"AAAA;;;;;;CAMC,GACD,OAAO,SAASA,SAASC,QAAgB,EAAEC,IAAS,EAAE,EAAEC,OAAO,0BAA0B,EAAEC,MAAM,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3G,MAAMC,IAAIC,SAASC,aAAa,CAAC;IACjC,IAAIC,SAAqB,IAAM;IAC/B,IAAI;QACFH,EAAEL,QAAQ,GAAGC;QAEb,6CAA6C;QAE7C,kBAAkB;QAClB,IAAI,OAAOC,SAAS,YAAY,mBAAmBO,IAAI,CAACP,SAAS,CAACE,KAAK;YACrEC,EAAEK,IAAI,GAAGR;QACX,OAAO,IAAI,OAAOA,SAAS,UAAU;YACnCA,OAAO,IAAIS,cAAcC,MAAM,CAACV;QAClC;QAEA,IAAIA,gBAAgBW,YAAY;YAC9BX,OAAO,IAAIY,KAAK;gBAACZ;aAAK,EAAE;gBAAEC;YAAK;QACjC;QAEA,IAAID,gBAAgBa,QAAQb,gBAAgBY,QAAQZ,gBAAgBc,aAAa;YAC/EX,EAAEK,IAAI,GAAGO,IAAIC,eAAe,CAAChB;YAC7BM,SAAS;gBACPS,IAAIE,eAAe,CAACd,EAAEK,IAAI;YAC5B;QACF,OAAO;YACLU,QAAQC,KAAK,CAAC,CAAC,qBAAqB,CAAC,EAAEnB;YACvC,MAAM,IAAIoB,MAAM,CAAC,iBAAiB,EAAEC,OAAOC,cAAc,CAACtB,MAAM,CAAC;QACnE;QACAG,EAAEoB,KAAK;IACT,SAAU;QACRjB;IACF;AACF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export function getFileFromDataTransfer(dataTransfer) {
|
|
2
|
+
if (!dataTransfer) {
|
|
3
|
+
return {};
|
|
4
|
+
}
|
|
5
|
+
const items = dataTransfer.items ?? [];
|
|
6
|
+
if (items.length >= 2 && items[0].kind === 'string' && items[1].kind === 'file') {
|
|
7
|
+
// name, file
|
|
8
|
+
const text = dataTransfer.getData('text');
|
|
9
|
+
const file = items[1].getAsFile() ?? dataTransfer.files?.item(0);
|
|
10
|
+
if (!file) {
|
|
11
|
+
console.error(`no file ${text}`, items[1]);
|
|
12
|
+
return {};
|
|
13
|
+
}
|
|
14
|
+
// let type = file.type;
|
|
15
|
+
// // fix type
|
|
16
|
+
// type = type;
|
|
17
|
+
// // NOTE paste file can not parse by libs
|
|
18
|
+
// if (type !== file.type) {
|
|
19
|
+
// const blob = file.slice(0, file.size);
|
|
20
|
+
// file = new File([blob], text, {type});
|
|
21
|
+
// }
|
|
22
|
+
return {
|
|
23
|
+
file,
|
|
24
|
+
name: text
|
|
25
|
+
};
|
|
26
|
+
} else if (items[0].kind === 'file') {
|
|
27
|
+
const file = items[0].getAsFile();
|
|
28
|
+
if (!file) {
|
|
29
|
+
console.error(`no file`, items[0]);
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
file,
|
|
34
|
+
name: file.name
|
|
35
|
+
};
|
|
36
|
+
} else {
|
|
37
|
+
console.debug(`file item not match`, Array.from(items).map((v)=>({
|
|
38
|
+
type: v.type,
|
|
39
|
+
kind: v.kind
|
|
40
|
+
})));
|
|
41
|
+
}
|
|
42
|
+
return {};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=getFileFromDataTransfer.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
function load(el, resolve, reject, options) {
|
|
2
|
+
el.onload = ()=>{
|
|
3
|
+
resolve(el);
|
|
4
|
+
};
|
|
5
|
+
el.onerror = (e)=>{
|
|
6
|
+
el.remove();
|
|
7
|
+
reject(e);
|
|
8
|
+
};
|
|
9
|
+
const { attributes = {} } = options || {};
|
|
10
|
+
Object.entries(attributes).forEach(([k, v])=>{
|
|
11
|
+
el.setAttribute(k, v);
|
|
12
|
+
});
|
|
13
|
+
document.head.appendChild(el);
|
|
14
|
+
}
|
|
15
|
+
export function loadScripts(src, options) {
|
|
16
|
+
if (Array.isArray(src)) {
|
|
17
|
+
return Promise.resolve().then(async ()=>{
|
|
18
|
+
const all = [];
|
|
19
|
+
for (const s of src){
|
|
20
|
+
all.push(await loadScripts(s));
|
|
21
|
+
}
|
|
22
|
+
return all;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
// todo quote ?
|
|
26
|
+
const $ele = document.querySelector(`script[src="${src}"]`);
|
|
27
|
+
if ($ele) {
|
|
28
|
+
return Promise.resolve($ele);
|
|
29
|
+
}
|
|
30
|
+
return new Promise((resolve, reject)=>{
|
|
31
|
+
const el = document.createElement('script');
|
|
32
|
+
el.src = src;
|
|
33
|
+
load(el, resolve, reject, options);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
export function loadStyles(href, options) {
|
|
37
|
+
const $ele = document.querySelector(`link[href="${href}"]`);
|
|
38
|
+
if ($ele) {
|
|
39
|
+
return Promise.resolve($ele);
|
|
40
|
+
}
|
|
41
|
+
return new Promise((resolve, reject)=>{
|
|
42
|
+
const el = document.createElement('link');
|
|
43
|
+
el.rel = 'stylesheet';
|
|
44
|
+
el.href = href;
|
|
45
|
+
load(el, resolve, reject, options);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=loaders.js.map
|
|
@@ -0,0 +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"}
|
package/lib/cn/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cn/index.ts"],"sourcesContent":["export { parseChineseNumber } from './parseChineseNumber';\n"],"names":["parseChineseNumber"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,uBAAuB"}
|