@wener/utils 1.1.31 → 1.1.33
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/dist/LICENSE.txt +1 -0
- package/dist/cjs/index.cjs +21 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/esm/index.js +21 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/system/index.js +21 -0
- package/dist/system/index.js.map +1 -0
- package/package.json +37 -69
- package/src/asyncs/nextOfAsyncIterator.ts +13 -1
- package/src/asyncs/timeout.ts +15 -12
- package/src/cn/index.ts +1 -0
- package/src/cn/parseChineseNumber.test.ts +24 -0
- package/src/cn/parseChineseNumber.ts +97 -0
- package/src/crypto/getRandomValues.ts +5 -3
- package/src/crypto/hashing.test.ts +1 -1
- package/src/errors/Errors.test.ts +22 -0
- package/src/errors/Errors.ts +1 -4
- package/src/index.ts +2 -0
- package/src/io/Bytes.ts +64 -0
- package/src/isomorphics/structuredClone.ts +0 -3
- package/src/langs/AsyncCloser.ts +45 -0
- package/src/langs/Closer.ts +39 -0
- package/src/server/index.ts +6 -0
- package/src/{servers → server}/polyfill/polyfillWebSocket.ts +5 -0
- package/src/{types/index.d.ts → types.d.ts} +12 -0
- package/tsconfig.json +7 -5
- package/index.ts +0 -1
- package/lib/arrays/MaybeArray.js +0 -41
- package/lib/arrays/MaybeArray.js.map +0 -1
- package/lib/arrays/arrayFromAsync.js +0 -7
- package/lib/arrays/arrayFromAsync.js.map +0 -1
- package/lib/asyncs/AsyncInterval.js +0 -14
- package/lib/asyncs/AsyncInterval.js.map +0 -1
- package/lib/asyncs/MaybePromise.js +0 -3
- package/lib/asyncs/MaybePromise.js.map +0 -1
- package/lib/asyncs/createAsyncIterator.js +0 -41
- package/lib/asyncs/createAsyncIterator.js.map +0 -1
- package/lib/asyncs/createLazyPromise.js +0 -65
- package/lib/asyncs/createLazyPromise.js.map +0 -1
- package/lib/asyncs/firstOfAsyncIterator.js +0 -11
- package/lib/asyncs/firstOfAsyncIterator.js.map +0 -1
- package/lib/asyncs/generatorOfStream.js +0 -16
- package/lib/asyncs/generatorOfStream.js.map +0 -1
- package/lib/asyncs/isIterator.js +0 -5
- package/lib/asyncs/isIterator.js.map +0 -1
- package/lib/asyncs/isPromise.js +0 -5
- package/lib/asyncs/isPromise.js.map +0 -1
- package/lib/asyncs/isThenable.js +0 -6
- package/lib/asyncs/isThenable.js.map +0 -1
- package/lib/asyncs/nextOfAsyncIterator.js +0 -25
- package/lib/asyncs/nextOfAsyncIterator.js.map +0 -1
- package/lib/asyncs/promiseOfCallback.js +0 -17
- package/lib/asyncs/promiseOfCallback.js.map +0 -1
- package/lib/asyncs/sleep.js +0 -3
- package/lib/asyncs/sleep.js.map +0 -1
- package/lib/asyncs/timeout.js +0 -25
- package/lib/asyncs/timeout.js.map +0 -1
- package/lib/browsers/copy.js +0 -53
- package/lib/browsers/copy.js.map +0 -1
- package/lib/browsers/download.js +0 -41
- package/lib/browsers/download.js.map +0 -1
- package/lib/browsers/getFileFromDataTransfer.js +0 -45
- package/lib/browsers/getFileFromDataTransfer.js.map +0 -1
- package/lib/browsers/loaders.js +0 -49
- package/lib/browsers/loaders.js.map +0 -1
- package/lib/crypto/base.js +0 -7
- package/lib/crypto/base.js.map +0 -1
- package/lib/crypto/getNodeCrypto.js +0 -18
- package/lib/crypto/getNodeCrypto.js.map +0 -1
- package/lib/crypto/getRandomValues.js +0 -29
- package/lib/crypto/getRandomValues.js.map +0 -1
- package/lib/crypto/hashing.js +0 -57
- package/lib/crypto/hashing.js.map +0 -1
- package/lib/crypto/md5.bench.js +0 -21
- package/lib/crypto/md5.bench.js.map +0 -1
- package/lib/crypto/md5.d.js +0 -3
- package/lib/crypto/md5.d.js.map +0 -1
- package/lib/crypto/md5.js +0 -121
- package/lib/crypto/md5.js.map +0 -1
- package/lib/crypto/pem/pem.js +0 -35
- package/lib/crypto/pem/pem.js.map +0 -1
- package/lib/crypto/randomUUID.js +0 -16
- package/lib/crypto/randomUUID.js.map +0 -1
- package/lib/crypto/ulid.js +0 -153
- package/lib/crypto/ulid.js.map +0 -1
- package/lib/errors/Errors.js +0 -181
- package/lib/errors/Errors.js.map +0 -1
- package/lib/fetch/createFetchWith.js +0 -23
- package/lib/fetch/createFetchWith.js.map +0 -1
- package/lib/fetch/createFetchWithLogging.js +0 -25
- package/lib/fetch/createFetchWithLogging.js.map +0 -1
- package/lib/fetch/createFetchWithRetry.js +0 -66
- package/lib/fetch/createFetchWithRetry.js.map +0 -1
- package/lib/fetch/dumpRequest.js +0 -45
- package/lib/fetch/dumpRequest.js.map +0 -1
- package/lib/fetch/dumpResponse.js +0 -16
- package/lib/fetch/dumpResponse.js.map +0 -1
- package/lib/fetch/index.js +0 -7
- package/lib/fetch/index.js.map +0 -1
- package/lib/fetch/types.js +0 -3
- package/lib/fetch/types.js.map +0 -1
- package/lib/http/HttpStatus.js +0 -94
- package/lib/http/HttpStatus.js.map +0 -1
- package/lib/i18n/createTranslate.js +0 -54
- package/lib/i18n/createTranslate.js.map +0 -1
- package/lib/index.js +0 -80
- package/lib/index.js.map +0 -1
- package/lib/io/AbstractEncoding.js +0 -7
- package/lib/io/AbstractEncoding.js.map +0 -1
- package/lib/io/ArrayBuffer.test-d.js +0 -7
- package/lib/io/ArrayBuffer.test-d.js.map +0 -1
- package/lib/io/ArrayBuffers.js +0 -210
- package/lib/io/ArrayBuffers.js.map +0 -1
- package/lib/io/Buffer.js +0 -25
- package/lib/io/Buffer.js.map +0 -1
- package/lib/io/base64.js +0 -54
- package/lib/io/base64.js.map +0 -1
- package/lib/io/isBuffer.js +0 -9
- package/lib/io/isBuffer.js.map +0 -1
- package/lib/io/isTransferable.js +0 -30
- package/lib/io/isTransferable.js.map +0 -1
- package/lib/isomorphics/getGlobalThis.js +0 -19
- package/lib/isomorphics/getGlobalThis.js.map +0 -1
- package/lib/isomorphics/structuredClone.js +0 -80
- package/lib/isomorphics/structuredClone.js.map +0 -1
- package/lib/langs/MaybeFunction.js +0 -9
- package/lib/langs/MaybeFunction.js.map +0 -1
- package/lib/langs/classOf.js +0 -5
- package/lib/langs/classOf.js.map +0 -1
- package/lib/langs/deepEqual.js +0 -87
- package/lib/langs/deepEqual.js.map +0 -1
- package/lib/langs/deepFreeze.js +0 -20
- package/lib/langs/deepFreeze.js.map +0 -1
- package/lib/langs/hashCode.ignored.js +0 -112
- package/lib/langs/hashCode.ignored.js.map +0 -1
- package/lib/langs/isClass.js +0 -5
- package/lib/langs/isClass.js.map +0 -1
- package/lib/langs/isDefined.js +0 -5
- package/lib/langs/isDefined.js.map +0 -1
- package/lib/langs/isEmptyObject.js +0 -6
- package/lib/langs/isEmptyObject.js.map +0 -1
- package/lib/langs/isFunction.js +0 -5
- package/lib/langs/isFunction.js.map +0 -1
- package/lib/langs/isPlainObject.js +0 -10
- package/lib/langs/isPlainObject.js.map +0 -1
- package/lib/langs/memoize.js +0 -22
- package/lib/langs/memoize.js.map +0 -1
- package/lib/langs/parseBoolean.js +0 -30
- package/lib/langs/parseBoolean.js.map +0 -1
- package/lib/langs/shallowClone.js +0 -15
- package/lib/langs/shallowClone.js.map +0 -1
- package/lib/langs/shallowEqual.js +0 -24
- package/lib/langs/shallowEqual.js.map +0 -1
- package/lib/libs/ms.js +0 -137
- package/lib/libs/ms.js.map +0 -1
- package/lib/logging/Logger.js +0 -5
- package/lib/logging/Logger.js.map +0 -1
- package/lib/logging/createChildLogger.js +0 -16
- package/lib/logging/createChildLogger.js.map +0 -1
- package/lib/logging/createLogger.js +0 -63
- package/lib/logging/createLogger.js.map +0 -1
- package/lib/logging/createNoopLogger.js +0 -13
- package/lib/logging/createNoopLogger.js.map +0 -1
- package/lib/logging/slog.js +0 -143
- package/lib/logging/slog.js.map +0 -1
- package/lib/maths/clamp.js +0 -21
- package/lib/maths/clamp.js.map +0 -1
- package/lib/maths/random.js +0 -17
- package/lib/maths/random.js.map +0 -1
- package/lib/modules/isModule.js +0 -7
- package/lib/modules/isModule.js.map +0 -1
- package/lib/modules/parseModuleId.js +0 -39
- package/lib/modules/parseModuleId.js.map +0 -1
- package/lib/objects/get.js +0 -16
- package/lib/objects/get.js.map +0 -1
- package/lib/objects/get.test-d.js +0 -33
- package/lib/objects/get.test-d.js.map +0 -1
- package/lib/objects/merge/index.js +0 -3
- package/lib/objects/merge/index.js.map +0 -1
- package/lib/objects/merge/isMergeableObject.js +0 -19
- package/lib/objects/merge/isMergeableObject.js.map +0 -1
- package/lib/objects/merge/merge.js +0 -89
- package/lib/objects/merge/merge.js.map +0 -1
- package/lib/objects/parseObjectPath.js +0 -39
- package/lib/objects/parseObjectPath.js.map +0 -1
- package/lib/objects/set.js +0 -38
- package/lib/objects/set.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/common/encoder.js +0 -100
- package/lib/schema/typebox/gen/codegen/common/encoder.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/common/formatter.js +0 -33
- package/lib/schema/typebox/gen/codegen/common/formatter.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/common/index.js +0 -5
- package/lib/schema/typebox/gen/codegen/common/index.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/common/jsdoc.js +0 -117
- package/lib/schema/typebox/gen/codegen/common/jsdoc.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/expression/compiler.js +0 -367
- package/lib/schema/typebox/gen/codegen/expression/compiler.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/expression/errors.js +0 -259
- package/lib/schema/typebox/gen/codegen/expression/errors.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/expression/evaluator.js +0 -254
- package/lib/schema/typebox/gen/codegen/expression/evaluator.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/expression/expression.js +0 -384
- package/lib/schema/typebox/gen/codegen/expression/expression.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/expression/index.js +0 -6
- package/lib/schema/typebox/gen/codegen/expression/index.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/index.js +0 -5
- package/lib/schema/typebox/gen/codegen/index.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/model/index.js +0 -16
- package/lib/schema/typebox/gen/codegen/model/index.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-arktype.js +0 -239
- package/lib/schema/typebox/gen/codegen/model/model-to-arktype.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-expression.js +0 -359
- package/lib/schema/typebox/gen/codegen/model/model-to-expression.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-grpc.js +0 -217
- package/lib/schema/typebox/gen/codegen/model/model-to-grpc.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-io-ts.js +0 -253
- package/lib/schema/typebox/gen/codegen/model/model-to-io-ts.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-javascript.js +0 -47
- package/lib/schema/typebox/gen/codegen/model/model-to-javascript.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-json-schema.js +0 -171
- package/lib/schema/typebox/gen/codegen/model/model-to-json-schema.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-typebox.js +0 -33
- package/lib/schema/typebox/gen/codegen/model/model-to-typebox.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-typescript.js +0 -164
- package/lib/schema/typebox/gen/codegen/model/model-to-typescript.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-valibot.js +0 -218
- package/lib/schema/typebox/gen/codegen/model/model-to-valibot.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-value.js +0 -43
- package/lib/schema/typebox/gen/codegen/model/model-to-value.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-yrel.js +0 -206
- package/lib/schema/typebox/gen/codegen/model/model-to-yrel.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-yup.js +0 -204
- package/lib/schema/typebox/gen/codegen/model/model-to-yup.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-zod.js +0 -227
- package/lib/schema/typebox/gen/codegen/model/model-to-zod.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/model/model.js +0 -27
- package/lib/schema/typebox/gen/codegen/model/model.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/typescript/index.js +0 -4
- package/lib/schema/typebox/gen/codegen/typescript/index.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-model.js +0 -48
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-model.js.map +0 -1
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-typebox.js +0 -596
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-typebox.js.map +0 -1
- package/lib/schema/typebox/gen/index.js +0 -3
- package/lib/schema/typebox/gen/index.js.map +0 -1
- package/lib/schema/typebox/index.js +0 -3
- package/lib/schema/typebox/index.js.map +0 -1
- package/lib/schema/typebox/typebox.js +0 -23
- package/lib/schema/typebox/typebox.js.map +0 -1
- package/lib/server.js +0 -7
- package/lib/server.js.map +0 -1
- package/lib/servers/crypto/md5.js +0 -6
- package/lib/servers/crypto/md5.js.map +0 -1
- package/lib/servers/fetch/createFetchWithProxy.js +0 -4
- package/lib/servers/fetch/createFetchWithProxy.js.map +0 -1
- package/lib/servers/fetch/createFetchWithProxyByNodeFetch.js +0 -38
- package/lib/servers/fetch/createFetchWithProxyByNodeFetch.js.map +0 -1
- package/lib/servers/fetch/createFetchWithProxyByUndici.js +0 -64
- package/lib/servers/fetch/createFetchWithProxyByUndici.js.map +0 -1
- package/lib/servers/getPackageDir.js +0 -16
- package/lib/servers/getPackageDir.js.map +0 -1
- package/lib/servers/jsdom.js +0 -3
- package/lib/servers/jsdom.js.map +0 -1
- package/lib/servers/node-fetch.js +0 -4
- package/lib/servers/node-fetch.js.map +0 -1
- package/lib/servers/polyfill/polyfillBrowser.js +0 -17
- package/lib/servers/polyfill/polyfillBrowser.js.map +0 -1
- package/lib/servers/polyfill/polyfillCrypto.js +0 -11
- package/lib/servers/polyfill/polyfillCrypto.js.map +0 -1
- package/lib/servers/polyfill/polyfillFetch.js +0 -25
- package/lib/servers/polyfill/polyfillFetch.js.map +0 -1
- package/lib/servers/polyfill/polyfillJsDom.js +0 -64
- package/lib/servers/polyfill/polyfillJsDom.js.map +0 -1
- package/lib/servers/polyfill/polyfillWebSocket.js +0 -16
- package/lib/servers/polyfill/polyfillWebSocket.js.map +0 -1
- package/lib/servers/ws.js +0 -3
- package/lib/servers/ws.js.map +0 -1
- package/lib/strings/camelCase.js +0 -58
- package/lib/strings/camelCase.js.map +0 -1
- package/lib/strings/formatBytes.js +0 -43
- package/lib/strings/formatBytes.js.map +0 -1
- package/lib/strings/renderTemplate.js +0 -32
- package/lib/strings/renderTemplate.js.map +0 -1
- package/lib/typedoc.js +0 -4
- package/lib/typedoc.js.map +0 -1
- package/lib/types/global.d.js +0 -2
- package/lib/types/global.d.js.map +0 -1
- package/lib/types/index.d.js +0 -6
- package/lib/types/index.d.js.map +0 -1
- package/lib/validations/asserts.js +0 -14
- package/lib/validations/asserts.js.map +0 -1
- package/lib/validations/isUUID.js +0 -5
- package/lib/validations/isUUID.js.map +0 -1
- package/lib/validations/parseTimestamp.js +0 -29
- package/lib/validations/parseTimestamp.js.map +0 -1
- package/schema/typebox/gen/index.ts +0 -1
- package/schema/typebox/index.ts +0 -1
- package/server/jsdom.ts +0 -1
- package/server/node-fetch.ts +0 -1
- package/server/ws.ts +0 -1
- package/server.ts +0 -1
- package/src/server.ts +0 -6
- package/src/types/global.d.ts +0 -11
- package/types.d.ts +0 -1
- /package/src/{servers → server}/crypto/md5.ts +0 -0
- /package/src/{servers → server}/fetch/createFetchWithProxy.ts +0 -0
- /package/src/{servers → server}/fetch/createFetchWithProxyByNodeFetch.ts +0 -0
- /package/src/{servers → server}/fetch/createFetchWithProxyByUndici.ts +0 -0
- /package/src/{servers → server}/getPackageDir.ts +0 -0
- /package/src/{servers → server}/jsdom.ts +0 -0
- /package/src/{servers → server}/node-fetch.ts +0 -0
- /package/src/{servers → server}/polyfill/polyfillBrowser.test.ts +0 -0
- /package/src/{servers → server}/polyfill/polyfillBrowser.ts +0 -0
- /package/src/{servers → server}/polyfill/polyfillCrypto.ts +0 -0
- /package/src/{servers → server}/polyfill/polyfillFetch.ts +0 -0
- /package/src/{servers → server}/polyfill/polyfillJsDom.ts +0 -0
- /package/src/{servers → server}/ws.ts +0 -0
package/lib/errors/Errors.js
DELETED
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
import { getHttpStatusText } from '../http/HttpStatus.js';
|
|
2
|
-
export class DetailError extends Error {
|
|
3
|
-
detail;
|
|
4
|
-
status;
|
|
5
|
-
description;
|
|
6
|
-
constructor(detail){
|
|
7
|
-
super(detail.message, {
|
|
8
|
-
cause: detail.cause
|
|
9
|
-
});
|
|
10
|
-
this.detail = detail;
|
|
11
|
-
this.status = detail.status;
|
|
12
|
-
this.description = detail.description;
|
|
13
|
-
}
|
|
14
|
-
toJSON() {
|
|
15
|
-
return {
|
|
16
|
-
code: this.detail.code,
|
|
17
|
-
message: this.message,
|
|
18
|
-
status: this.status,
|
|
19
|
-
description: this.description,
|
|
20
|
-
cause: this.cause
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
let DetailHolder = class DetailHolder {
|
|
25
|
-
message;
|
|
26
|
-
status;
|
|
27
|
-
code;
|
|
28
|
-
metadata;
|
|
29
|
-
description;
|
|
30
|
-
cause;
|
|
31
|
-
constructor({ status, message = getHttpStatusText(status), code = status, metadata, description, cause }){
|
|
32
|
-
this.message = message ?? String(status);
|
|
33
|
-
this.status = status;
|
|
34
|
-
this.code = code;
|
|
35
|
-
this.description = description;
|
|
36
|
-
this.metadata = metadata;
|
|
37
|
-
this.cause = cause;
|
|
38
|
-
}
|
|
39
|
-
with(o) {
|
|
40
|
-
if (typeof o === 'string') {
|
|
41
|
-
o = {
|
|
42
|
-
message: o
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
if (o === undefined) {
|
|
46
|
-
return new DetailHolder(this);
|
|
47
|
-
}
|
|
48
|
-
return new DetailHolder({
|
|
49
|
-
status: this.status,
|
|
50
|
-
code: this.code,
|
|
51
|
-
message: this.message,
|
|
52
|
-
metadata: this.metadata,
|
|
53
|
-
cause: this.cause,
|
|
54
|
-
...o
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
asError(o) {
|
|
58
|
-
if (typeof o === 'string') {
|
|
59
|
-
o = {
|
|
60
|
-
message: o
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
return new DetailError(this.with(o));
|
|
64
|
-
}
|
|
65
|
-
require(v, o) {
|
|
66
|
-
if (v === undefined || v === null) {
|
|
67
|
-
throw this.asError(o);
|
|
68
|
-
}
|
|
69
|
-
return v;
|
|
70
|
-
}
|
|
71
|
-
check(cond, o) {
|
|
72
|
-
switch(cond){
|
|
73
|
-
case false:
|
|
74
|
-
case undefined:
|
|
75
|
-
case null:
|
|
76
|
-
{
|
|
77
|
-
throw this.asError(o);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
throw(o) {
|
|
82
|
-
throw this.asError(o);
|
|
83
|
-
}
|
|
84
|
-
toJSON() {
|
|
85
|
-
return {
|
|
86
|
-
code: this.code,
|
|
87
|
-
message: this.message,
|
|
88
|
-
status: this.status,
|
|
89
|
-
description: this.description,
|
|
90
|
-
cause: this.cause,
|
|
91
|
-
metadata: this.metadata
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
asResponse() {
|
|
95
|
-
return new Response(JSON.stringify(this.toJSON()), {
|
|
96
|
-
status: this.status,
|
|
97
|
-
statusText: this.description,
|
|
98
|
-
headers: {
|
|
99
|
-
'Content-Type': 'application/json'
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
export class Errors {
|
|
105
|
-
static BadRequest = this.with({
|
|
106
|
-
status: 400
|
|
107
|
-
});
|
|
108
|
-
static Unauthorized = this.with({
|
|
109
|
-
status: 403
|
|
110
|
-
});
|
|
111
|
-
static Forbidden = this.with({
|
|
112
|
-
status: 403
|
|
113
|
-
});
|
|
114
|
-
static NotFound = this.with({
|
|
115
|
-
status: 404
|
|
116
|
-
});
|
|
117
|
-
static InternalServerError = this.with({
|
|
118
|
-
status: 501
|
|
119
|
-
});
|
|
120
|
-
static NotImplemented = this.with({
|
|
121
|
-
status: 501
|
|
122
|
-
});
|
|
123
|
-
static ServiceUnavailable = this.with({
|
|
124
|
-
status: 503
|
|
125
|
-
});
|
|
126
|
-
static resolvers = [];
|
|
127
|
-
static with(init) {
|
|
128
|
-
return new DetailHolder(init);
|
|
129
|
-
}
|
|
130
|
-
static ok(res, o) {
|
|
131
|
-
if (res.ok) {
|
|
132
|
-
return res;
|
|
133
|
-
}
|
|
134
|
-
throw this.with({
|
|
135
|
-
description: res.statusText,
|
|
136
|
-
status: res.status,
|
|
137
|
-
...o,
|
|
138
|
-
metadata: {
|
|
139
|
-
...o?.metadata,
|
|
140
|
-
response: res
|
|
141
|
-
}
|
|
142
|
-
}).asError();
|
|
143
|
-
}
|
|
144
|
-
static resolve(e) {
|
|
145
|
-
if (e instanceof DetailHolder) {
|
|
146
|
-
return e;
|
|
147
|
-
}
|
|
148
|
-
if (e instanceof DetailError) {
|
|
149
|
-
return e.detail;
|
|
150
|
-
}
|
|
151
|
-
for (const resolver of this.resolvers){
|
|
152
|
-
const r = resolver(e);
|
|
153
|
-
if (r) {
|
|
154
|
-
return r;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
if (e instanceof Error) {
|
|
158
|
-
const { message, code, status } = e;
|
|
159
|
-
// can get status from NestJS HttpException
|
|
160
|
-
return new DetailHolder({
|
|
161
|
-
message,
|
|
162
|
-
status: parseInt(status) || 500,
|
|
163
|
-
code,
|
|
164
|
-
cause: e
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
return new DetailHolder({
|
|
168
|
-
message: e.message,
|
|
169
|
-
status: 500,
|
|
170
|
-
cause: e
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
} // interface ZodError {
|
|
174
|
-
// path: Array<string | number>;
|
|
175
|
-
// message: string;
|
|
176
|
-
// code: string;
|
|
177
|
-
// expected?: any;
|
|
178
|
-
// received?: any;
|
|
179
|
-
// }
|
|
180
|
-
|
|
181
|
-
//# sourceMappingURL=Errors.js.map
|
package/lib/errors/Errors.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/errors/Errors.ts"],"sourcesContent":["import { getHttpStatusText } from '../http/HttpStatus';\n\nexport interface ErrorDetailInit {\n message?: string;\n status: number;\n description?: string;\n code?: number | string;\n metadata?: Record<string, any>;\n cause?: any;\n}\n\nexport class DetailError extends Error {\n readonly status: number;\n readonly description?: string;\n\n constructor(readonly detail: ErrorDetail) {\n super(detail.message, {\n cause: detail.cause,\n });\n this.status = detail.status;\n this.description = detail.description;\n }\n\n toJSON() {\n return {\n code: this.detail.code,\n message: this.message,\n status: this.status,\n description: this.description,\n cause: this.cause,\n };\n }\n}\n\nclass DetailHolder implements ErrorDetail {\n readonly message: string;\n readonly status: number;\n readonly code: number | string;\n readonly metadata?: Record<string, any>;\n readonly description?: string;\n readonly cause?: any;\n\n constructor({\n status,\n message = getHttpStatusText(status),\n code = status,\n metadata,\n description,\n cause,\n }: ErrorDetailInit) {\n this.message = message ?? String(status);\n this.status = status;\n this.code = code;\n this.description = description;\n this.metadata = metadata;\n this.cause = cause;\n }\n\n with(o?: Partial<ErrorDetailInit> | string): DetailHolder {\n if (typeof o === 'string') {\n o = { message: o };\n }\n\n if (o === undefined) {\n return new DetailHolder(this);\n }\n\n return new DetailHolder({\n status: this.status,\n code: this.code,\n message: this.message,\n metadata: this.metadata,\n cause: this.cause,\n ...o,\n });\n }\n\n asError(o?: Partial<ErrorDetailInit> | string): Error {\n if (typeof o === 'string') {\n o = { message: o };\n }\n\n return new DetailError(this.with(o));\n }\n\n require(v: any, o?: Partial<ErrorDetailInit> | string): any {\n if (v === undefined || v === null) {\n throw this.asError(o);\n }\n\n return v;\n }\n\n check(cond: any, o?: Partial<ErrorDetailInit> | string) {\n switch (cond) {\n case false:\n case undefined:\n case null: {\n throw this.asError(o);\n }\n }\n }\n\n throw(o?: string | Partial<ErrorDetailInit>): never {\n throw this.asError(o);\n }\n\n toJSON() {\n return {\n code: this.code,\n message: this.message,\n status: this.status,\n description: this.description,\n cause: this.cause,\n metadata: this.metadata,\n };\n }\n\n asResponse(): Response {\n return new Response(JSON.stringify(this.toJSON()), {\n status: this.status,\n statusText: this.description,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n }\n}\n\nexport interface ErrorDetail {\n readonly message: string;\n readonly status: number;\n readonly code?: number | string;\n readonly metadata?: Record<string, any>;\n readonly description?: string;\n readonly cause?: any;\n\n with(message: string): ErrorDetail;\n\n with(o?: Partial<ErrorDetailInit>): ErrorDetail;\n\n asError(o?: string | Partial<ErrorDetailInit>): Error;\n\n asResponse(): Response;\n\n throw(o?: string | Partial<ErrorDetailInit>): never;\n\n require<T>(v: T | undefined, o?: Partial<ErrorDetailInit> | string): NonNullable<T>;\n\n // 不支持 return value\n // https://stackoverflow.com/a/73252858/1870054\n\n check(condition: boolean, o?: Partial<ErrorDetailInit> | string): asserts condition;\n\n check<T>(v: T | undefined | null, o?: Partial<ErrorDetailInit> | string): asserts v is NonNullable<T>;\n}\n\nexport class Errors {\n static BadRequest: ErrorDetail = this.with({ status: 400 });\n static Unauthorized: ErrorDetail = this.with({ status: 403 });\n static Forbidden: ErrorDetail = this.with({ status: 403 });\n static NotFound: ErrorDetail = this.with({ status: 404 });\n static InternalServerError: ErrorDetail = this.with({ status: 501 });\n static NotImplemented: ErrorDetail = this.with({ status: 501 });\n static ServiceUnavailable: ErrorDetail = this.with({ status: 503 });\n\n static resolvers: ((e: any) => ErrorDetail | void)[] = [];\n\n static with(init: ErrorDetailInit): ErrorDetail {\n return new DetailHolder(init);\n }\n\n static ok(res: Response, o?: Partial<ErrorDetailInit>) {\n if (res.ok) {\n return res;\n }\n throw this.with({\n description: res.statusText,\n status: res.status,\n ...o,\n metadata: {\n ...o?.metadata,\n response: res,\n },\n }).asError();\n }\n\n static resolve(e: any): ErrorDetail {\n if (e instanceof DetailHolder) {\n return e;\n }\n\n if (e instanceof DetailError) {\n return e.detail;\n }\n\n for (const resolver of this.resolvers) {\n const r = resolver(e);\n if (r) {\n return r;\n }\n }\n\n if (e instanceof Error) {\n const { message, code, status } = e as any;\n // can get status from NestJS HttpException\n return new DetailHolder({\n message,\n status: parseInt(status) || 500,\n code,\n cause: e,\n });\n }\n\n return new DetailHolder({\n message: e.message,\n status: 500,\n cause: e,\n });\n }\n}\n\n// interface ZodError {\n// path: Array<string | number>;\n// message: string;\n// code: string;\n// expected?: any;\n// received?: any;\n// }\n"],"names":["getHttpStatusText","DetailError","Error","detail","status","description","constructor","message","cause","toJSON","code","DetailHolder","metadata","String","with","o","undefined","asError","require","v","check","cond","throw","asResponse","Response","JSON","stringify","statusText","headers","Errors","BadRequest","Unauthorized","Forbidden","NotFound","InternalServerError","NotImplemented","ServiceUnavailable","resolvers","init","ok","res","response","resolve","e","resolver","r","parseInt"],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { getGlobalThis } from '../isomorphics/getGlobalThis.js';
|
|
2
|
-
export function createFetchWith({ fetch = getGlobalThis().fetch, onRequest = (ctx)=>ctx.next(ctx.url, ctx.req), onResponse = (ctx)=>ctx.res }) {
|
|
3
|
-
return async (urlOrRequest, init)=>{
|
|
4
|
-
const url = String(urlOrRequest);
|
|
5
|
-
let req = init || {};
|
|
6
|
-
const nextFetch = req.fetch || fetch;
|
|
7
|
-
const res = await onRequest({
|
|
8
|
-
url,
|
|
9
|
-
req,
|
|
10
|
-
next: (url, init)=>{
|
|
11
|
-
req = init;
|
|
12
|
-
return nextFetch(url, init);
|
|
13
|
-
}
|
|
14
|
-
}) ?? await nextFetch(url, init);
|
|
15
|
-
return onResponse({
|
|
16
|
-
url,
|
|
17
|
-
req,
|
|
18
|
-
res
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
//# sourceMappingURL=createFetchWith.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/fetch/createFetchWith.ts"],"sourcesContent":["import { MaybePromise } from '../asyncs/MaybePromise';\nimport { getGlobalThis } from '../isomorphics/getGlobalThis';\nimport { type FetchLike } from './types';\n\nexport function createFetchWith({\n fetch = getGlobalThis().fetch,\n onRequest = (ctx) => ctx.next(ctx.url, ctx.req),\n onResponse = (ctx) => ctx.res,\n}: {\n fetch?: FetchLike;\n onRequest?: (ctx: {\n url: string;\n req: RequestInit;\n next: (url: string, req: RequestInit) => Promise<Response>;\n }) => MaybePromise<Response | void>;\n onResponse?: (ctx: { url: string; req: RequestInit; res: Response }) => MaybePromise<Response>;\n}) {\n return async (urlOrRequest: string | URL | Request, init?: RequestInit & { fetch?: FetchLike }) => {\n const url = String(urlOrRequest);\n let req = init || {};\n const nextFetch = req.fetch || fetch;\n const res =\n (await onRequest({\n url,\n req,\n next: (url, init) => {\n req = init;\n return nextFetch(url, init);\n },\n })) ?? (await nextFetch(url, init));\n return onResponse({ url, req, res });\n };\n}\n"],"names":["getGlobalThis","createFetchWith","fetch","onRequest","ctx","next","url","req","onResponse","res","urlOrRequest","init","String","nextFetch"],"mappings":"AACA,SAASA,aAAa,QAAQ,+BAA+B;AAG7D,OAAO,SAASC,gBAAgB,EAC9BC,QAAQF,gBAAgBE,KAAK,EAC7BC,YAAY,CAACC,MAAQA,IAAIC,IAAI,CAACD,IAAIE,GAAG,EAAEF,IAAIG,GAAG,CAAC,EAC/CC,aAAa,CAACJ,MAAQA,IAAIK,GAAG,EAS9B;IACC,OAAO,OAAOC,cAAsCC;QAClD,MAAML,MAAMM,OAAOF;QACnB,IAAIH,MAAMI,QAAQ,CAAC;QACnB,MAAME,YAAYN,IAAIL,KAAK,IAAIA;QAC/B,MAAMO,MACJ,AAAC,MAAMN,UAAU;YACfG;YACAC;YACAF,MAAM,CAACC,KAAKK;gBACVJ,MAAMI;gBACN,OAAOE,UAAUP,KAAKK;YACxB;QACF,MAAQ,MAAME,UAAUP,KAAKK;QAC/B,OAAOH,WAAW;YAAEF;YAAKC;YAAKE;QAAI;IACpC;AACF"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { createFetchWith } from './createFetchWith.js';
|
|
2
|
-
import { dumpRequest } from './dumpRequest.js';
|
|
3
|
-
import { dumpResponse } from './dumpResponse.js';
|
|
4
|
-
export function createFetchWithLogging({ fetch, log = console.log } = {}) {
|
|
5
|
-
return createFetchWith({
|
|
6
|
-
fetch,
|
|
7
|
-
onRequest: ({ url, req })=>{
|
|
8
|
-
void dumpRequest({
|
|
9
|
-
url,
|
|
10
|
-
req,
|
|
11
|
-
log
|
|
12
|
-
});
|
|
13
|
-
},
|
|
14
|
-
onResponse: ({ url, req, res })=>{
|
|
15
|
-
return dumpResponse({
|
|
16
|
-
url,
|
|
17
|
-
req,
|
|
18
|
-
res,
|
|
19
|
-
log
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
//# sourceMappingURL=createFetchWithLogging.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/fetch/createFetchWithLogging.ts"],"sourcesContent":["import { createFetchWith } from './createFetchWith';\nimport { dumpRequest } from './dumpRequest';\nimport { dumpResponse } from './dumpResponse';\nimport { type FetchLike } from './types';\n\nexport function createFetchWithLogging({\n fetch,\n log = console.log,\n}: {\n fetch?: FetchLike;\n log?: (s: string) => void;\n} = {}): FetchLike {\n return createFetchWith({\n fetch,\n onRequest: ({ url, req }) => {\n void dumpRequest({ url, req, log });\n },\n onResponse: ({ url, req, res }) => {\n return dumpResponse({ url, req, res, log });\n },\n });\n}\n"],"names":["createFetchWith","dumpRequest","dumpResponse","createFetchWithLogging","fetch","log","console","onRequest","url","req","onResponse","res"],"mappings":"AAAA,SAASA,eAAe,QAAQ,oBAAoB;AACpD,SAASC,WAAW,QAAQ,gBAAgB;AAC5C,SAASC,YAAY,QAAQ,iBAAiB;AAG9C,OAAO,SAASC,uBAAuB,EACrCC,KAAK,EACLC,MAAMC,QAAQD,GAAG,EAIlB,GAAG,CAAC,CAAC;IACJ,OAAOL,gBAAgB;QACrBI;QACAG,WAAW,CAAC,EAAEC,GAAG,EAAEC,GAAG,EAAE;YACtB,KAAKR,YAAY;gBAAEO;gBAAKC;gBAAKJ;YAAI;QACnC;QACAK,YAAY,CAAC,EAAEF,GAAG,EAAEC,GAAG,EAAEE,GAAG,EAAE;YAC5B,OAAOT,aAAa;gBAAEM;gBAAKC;gBAAKE;gBAAKN;YAAI;QAC3C;IACF;AACF"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { getGlobalThis } from '../isomorphics/getGlobalThis.js';
|
|
2
|
-
export function createFetchWithRetry({ fetch = getGlobalThis().fetch, retries = 3, retryDelay = 1000, retryOn = [] } = {}) {
|
|
3
|
-
// https://github.com/jonbern/fetch-retry/blob/master/index.js
|
|
4
|
-
return function fetchRetry(input, init) {
|
|
5
|
-
return new Promise(function(resolve, reject) {
|
|
6
|
-
var wrappedFetch = function(attempt) {
|
|
7
|
-
// As of node 18, this is no longer needed since node comes with native support for fetch:
|
|
8
|
-
/* istanbul ignore next */ var _input = typeof Request !== 'undefined' && input instanceof Request ? input.clone() : input;
|
|
9
|
-
fetch(_input, init).then(function(response) {
|
|
10
|
-
if (Array.isArray(retryOn) && retryOn.indexOf(response.status) === -1) {
|
|
11
|
-
resolve(response);
|
|
12
|
-
} else if (typeof retryOn === 'function') {
|
|
13
|
-
try {
|
|
14
|
-
return Promise.resolve(retryOn(attempt, null, response)).then(function(retryOnResponse) {
|
|
15
|
-
if (retryOnResponse) {
|
|
16
|
-
retry(attempt, null, response);
|
|
17
|
-
} else {
|
|
18
|
-
resolve(response);
|
|
19
|
-
}
|
|
20
|
-
}).catch(reject);
|
|
21
|
-
} catch (error) {
|
|
22
|
-
reject(error);
|
|
23
|
-
}
|
|
24
|
-
} else {
|
|
25
|
-
if (attempt < retries) {
|
|
26
|
-
retry(attempt, null, response);
|
|
27
|
-
} else {
|
|
28
|
-
resolve(response);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return;
|
|
32
|
-
}).catch(function(error) {
|
|
33
|
-
if (typeof retryOn === 'function') {
|
|
34
|
-
try {
|
|
35
|
-
// eslint-disable-next-line no-undef
|
|
36
|
-
Promise.resolve(retryOn(attempt, error, null)).then(function(retryOnResponse) {
|
|
37
|
-
if (retryOnResponse) {
|
|
38
|
-
retry(attempt, error, null);
|
|
39
|
-
} else {
|
|
40
|
-
reject(error);
|
|
41
|
-
}
|
|
42
|
-
}).catch(function(error) {
|
|
43
|
-
reject(error);
|
|
44
|
-
});
|
|
45
|
-
} catch (error) {
|
|
46
|
-
reject(error);
|
|
47
|
-
}
|
|
48
|
-
} else if (attempt < retries) {
|
|
49
|
-
retry(attempt, error, null);
|
|
50
|
-
} else {
|
|
51
|
-
reject(error);
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
};
|
|
55
|
-
function retry(attempt, error, response) {
|
|
56
|
-
let delay = typeof retryDelay === 'function' ? retryDelay(attempt, error, response) : retryDelay;
|
|
57
|
-
setTimeout(function() {
|
|
58
|
-
wrappedFetch(++attempt);
|
|
59
|
-
}, delay);
|
|
60
|
-
}
|
|
61
|
-
wrappedFetch(0);
|
|
62
|
-
});
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
//# sourceMappingURL=createFetchWithRetry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/fetch/createFetchWithRetry.ts"],"sourcesContent":["import { getGlobalThis } from '../isomorphics/getGlobalThis';\nimport { FetchLike } from './types';\n\ntype RequestDelayFunction = (attempt: number, error: Error | null, response: Response | null) => number;\ntype RequestRetryOnFunction = (\n attempt: number,\n error: Error | null,\n response: Response | null,\n) => boolean | Promise<boolean>;\n\nexport interface FetchWithRetryOptions {\n fetch?: FetchLike;\n retries?: number;\n retryDelay?: number | RequestDelayFunction;\n retryOn?: number[] | RequestRetryOnFunction;\n}\n\nexport function createFetchWithRetry({\n fetch = getGlobalThis().fetch,\n retries = 3,\n retryDelay = 1000,\n retryOn = [],\n}: FetchWithRetryOptions = {}): FetchLike {\n // https://github.com/jonbern/fetch-retry/blob/master/index.js\n\n return function fetchRetry(input: string | URL | Request, init?: RequestInit) {\n return new Promise(function (resolve, reject) {\n var wrappedFetch = function (attempt: number) {\n // As of node 18, this is no longer needed since node comes with native support for fetch:\n /* istanbul ignore next */\n var _input = typeof Request !== 'undefined' && input instanceof Request ? input.clone() : input;\n fetch(_input, init)\n .then(function (response) {\n if (Array.isArray(retryOn) && retryOn.indexOf(response.status) === -1) {\n resolve(response);\n } else if (typeof retryOn === 'function') {\n try {\n return Promise.resolve(retryOn(attempt, null, response))\n .then(function (retryOnResponse) {\n if (retryOnResponse) {\n retry(attempt, null, response);\n } else {\n resolve(response);\n }\n })\n .catch(reject);\n } catch (error) {\n reject(error);\n }\n } else {\n if (attempt < retries) {\n retry(attempt, null, response);\n } else {\n resolve(response);\n }\n }\n return;\n })\n .catch(function (error) {\n if (typeof retryOn === 'function') {\n try {\n // eslint-disable-next-line no-undef\n Promise.resolve(retryOn(attempt, error, null))\n .then(function (retryOnResponse) {\n if (retryOnResponse) {\n retry(attempt, error, null);\n } else {\n reject(error);\n }\n })\n .catch(function (error) {\n reject(error);\n });\n } catch (error) {\n reject(error);\n }\n } else if (attempt < retries) {\n retry(attempt, error, null);\n } else {\n reject(error);\n }\n });\n };\n\n function retry(attempt: number, error: any, response: Response | null) {\n let delay = typeof retryDelay === 'function' ? retryDelay(attempt, error, response) : retryDelay;\n setTimeout(function () {\n wrappedFetch(++attempt);\n }, delay);\n }\n\n wrappedFetch(0);\n });\n };\n}\n"],"names":["getGlobalThis","createFetchWithRetry","fetch","retries","retryDelay","retryOn","fetchRetry","input","init","Promise","resolve","reject","wrappedFetch","attempt","_input","Request","clone","then","response","Array","isArray","indexOf","status","retryOnResponse","retry","catch","error","delay","setTimeout"],"mappings":"AAAA,SAASA,aAAa,QAAQ,+BAA+B;AAiB7D,OAAO,SAASC,qBAAqB,EACnCC,QAAQF,gBAAgBE,KAAK,EAC7BC,UAAU,CAAC,EACXC,aAAa,IAAI,EACjBC,UAAU,EAAE,EACU,GAAG,CAAC,CAAC;IAC3B,8DAA8D;IAE9D,OAAO,SAASC,WAAWC,KAA6B,EAAEC,IAAkB;QAC1E,OAAO,IAAIC,QAAQ,SAAUC,OAAO,EAAEC,MAAM;YAC1C,IAAIC,eAAe,SAAUC,OAAe;gBAC1C,0FAA0F;gBAC1F,wBAAwB,GACxB,IAAIC,SAAS,OAAOC,YAAY,eAAeR,iBAAiBQ,UAAUR,MAAMS,KAAK,KAAKT;gBAC1FL,MAAMY,QAAQN,MACXS,IAAI,CAAC,SAAUC,QAAQ;oBACtB,IAAIC,MAAMC,OAAO,CAACf,YAAYA,QAAQgB,OAAO,CAACH,SAASI,MAAM,MAAM,CAAC,GAAG;wBACrEZ,QAAQQ;oBACV,OAAO,IAAI,OAAOb,YAAY,YAAY;wBACxC,IAAI;4BACF,OAAOI,QAAQC,OAAO,CAACL,QAAQQ,SAAS,MAAMK,WAC3CD,IAAI,CAAC,SAAUM,eAAe;gCAC7B,IAAIA,iBAAiB;oCACnBC,MAAMX,SAAS,MAAMK;gCACvB,OAAO;oCACLR,QAAQQ;gCACV;4BACF,GACCO,KAAK,CAACd;wBACX,EAAE,OAAOe,OAAO;4BACdf,OAAOe;wBACT;oBACF,OAAO;wBACL,IAAIb,UAAUV,SAAS;4BACrBqB,MAAMX,SAAS,MAAMK;wBACvB,OAAO;4BACLR,QAAQQ;wBACV;oBACF;oBACA;gBACF,GACCO,KAAK,CAAC,SAAUC,KAAK;oBACpB,IAAI,OAAOrB,YAAY,YAAY;wBACjC,IAAI;4BACF,oCAAoC;4BACpCI,QAAQC,OAAO,CAACL,QAAQQ,SAASa,OAAO,OACrCT,IAAI,CAAC,SAAUM,eAAe;gCAC7B,IAAIA,iBAAiB;oCACnBC,MAAMX,SAASa,OAAO;gCACxB,OAAO;oCACLf,OAAOe;gCACT;4BACF,GACCD,KAAK,CAAC,SAAUC,KAAK;gCACpBf,OAAOe;4BACT;wBACJ,EAAE,OAAOA,OAAO;4BACdf,OAAOe;wBACT;oBACF,OAAO,IAAIb,UAAUV,SAAS;wBAC5BqB,MAAMX,SAASa,OAAO;oBACxB,OAAO;wBACLf,OAAOe;oBACT;gBACF;YACJ;YAEA,SAASF,MAAMX,OAAe,EAAEa,KAAU,EAAER,QAAyB;gBACnE,IAAIS,QAAQ,OAAOvB,eAAe,aAAaA,WAAWS,SAASa,OAAOR,YAAYd;gBACtFwB,WAAW;oBACThB,aAAa,EAAEC;gBACjB,GAAGc;YACL;YAEAf,aAAa;QACf;IACF;AACF"}
|
package/lib/fetch/dumpRequest.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
export function dumpRequest({ url, req = {}, log = console.log }) {
|
|
2
|
-
const { method = 'GET' } = req;
|
|
3
|
-
let out = `-> ${method} ${url}
|
|
4
|
-
${Array.from(new Headers(req.headers).entries()).map(([k, v])=>`${k}: ${v}`).join('\n')}
|
|
5
|
-
`;
|
|
6
|
-
let done;
|
|
7
|
-
if (req.body) {
|
|
8
|
-
let hdr = new Headers(req.headers);
|
|
9
|
-
let ct = hdr.get('content-type');
|
|
10
|
-
if (ct === 'application/octet-stream') {
|
|
11
|
-
// skip
|
|
12
|
-
} else if (req.body instanceof ReadableStream) {
|
|
13
|
-
const [a, b] = req.body.tee();
|
|
14
|
-
req.body = a;
|
|
15
|
-
const signal = req.signal;
|
|
16
|
-
done = Promise.resolve().then(async ()=>{
|
|
17
|
-
const reader = b.getReader();
|
|
18
|
-
log(out);
|
|
19
|
-
while(true){
|
|
20
|
-
if (signal?.aborted) {
|
|
21
|
-
break;
|
|
22
|
-
}
|
|
23
|
-
let { done, value } = await reader.read();
|
|
24
|
-
value instanceof Uint8Array && (value = new TextDecoder().decode(value));
|
|
25
|
-
out += value;
|
|
26
|
-
log(value);
|
|
27
|
-
if (!done) {
|
|
28
|
-
break;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
// maybe for archive
|
|
32
|
-
out += `\n`;
|
|
33
|
-
return out;
|
|
34
|
-
});
|
|
35
|
-
} else {
|
|
36
|
-
out += `
|
|
37
|
-
${req.body}
|
|
38
|
-
`;
|
|
39
|
-
}
|
|
40
|
-
log(out);
|
|
41
|
-
}
|
|
42
|
-
return done || Promise.resolve(out);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
//# sourceMappingURL=dumpRequest.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/fetch/dumpRequest.ts"],"sourcesContent":["export function dumpRequest({\n url,\n req = {},\n log = console.log,\n}: {\n url: string;\n req?: RequestInit;\n log?: (s: string) => void;\n}) {\n const { method = 'GET' } = req;\n let out = `-> ${method} ${url}\n${Array.from(new Headers(req.headers).entries())\n .map(([k, v]) => `${k}: ${v}`)\n .join('\\n')}\n`;\n\n let done: Promise<string> | undefined;\n if (req.body) {\n let hdr = new Headers(req.headers);\n let ct = hdr.get('content-type');\n if (ct === 'application/octet-stream') {\n // skip\n } else if (req.body instanceof ReadableStream) {\n const [a, b] = req.body.tee();\n req.body = a;\n const signal = req.signal;\n done = Promise.resolve().then(async () => {\n const reader = b.getReader();\n log(out);\n while (true) {\n if (signal?.aborted) {\n break;\n }\n\n let { done, value } = await reader.read();\n value instanceof Uint8Array && (value = new TextDecoder().decode(value));\n out += value;\n log(value);\n if (!done) {\n break;\n }\n }\n // maybe for archive\n out += `\\n`;\n return out;\n });\n } else {\n out += `\n${req.body}\n`;\n }\n log(out);\n }\n return done || Promise.resolve(out);\n}\n"],"names":["dumpRequest","url","req","log","console","method","out","Array","from","Headers","headers","entries","map","k","v","join","done","body","hdr","ct","get","ReadableStream","a","b","tee","signal","Promise","resolve","then","reader","getReader","aborted","value","read","Uint8Array","TextDecoder","decode"],"mappings":"AAAA,OAAO,SAASA,YAAY,EAC1BC,GAAG,EACHC,MAAM,CAAC,CAAC,EACRC,MAAMC,QAAQD,GAAG,EAKlB;IACC,MAAM,EAAEE,SAAS,KAAK,EAAE,GAAGH;IAC3B,IAAII,MAAM,CAAC,GAAG,EAAED,OAAO,CAAC,EAAEJ,IAAI;AAChC,EAAEM,MAAMC,IAAI,CAAC,IAAIC,QAAQP,IAAIQ,OAAO,EAAEC,OAAO,IAC1CC,GAAG,CAAC,CAAC,CAACC,GAAGC,EAAE,GAAK,CAAC,EAAED,EAAE,EAAE,EAAEC,EAAE,CAAC,EAC5BC,IAAI,CAAC,MAAM;AACd,CAAC;IAEC,IAAIC;IACJ,IAAId,IAAIe,IAAI,EAAE;QACZ,IAAIC,MAAM,IAAIT,QAAQP,IAAIQ,OAAO;QACjC,IAAIS,KAAKD,IAAIE,GAAG,CAAC;QACjB,IAAID,OAAO,4BAA4B;QACrC,OAAO;QACT,OAAO,IAAIjB,IAAIe,IAAI,YAAYI,gBAAgB;YAC7C,MAAM,CAACC,GAAGC,EAAE,GAAGrB,IAAIe,IAAI,CAACO,GAAG;YAC3BtB,IAAIe,IAAI,GAAGK;YACX,MAAMG,SAASvB,IAAIuB,MAAM;YACzBT,OAAOU,QAAQC,OAAO,GAAGC,IAAI,CAAC;gBAC5B,MAAMC,SAASN,EAAEO,SAAS;gBAC1B3B,IAAIG;gBACJ,MAAO,KAAM;oBACX,IAAImB,QAAQM,SAAS;wBACnB;oBACF;oBAEA,IAAI,EAAEf,IAAI,EAAEgB,KAAK,EAAE,GAAG,MAAMH,OAAOI,IAAI;oBACvCD,iBAAiBE,cAAeF,CAAAA,QAAQ,IAAIG,cAAcC,MAAM,CAACJ,MAAK;oBACtE1B,OAAO0B;oBACP7B,IAAI6B;oBACJ,IAAI,CAAChB,MAAM;wBACT;oBACF;gBACF;gBACA,oBAAoB;gBACpBV,OAAO,CAAC,EAAE,CAAC;gBACX,OAAOA;YACT;QACF,OAAO;YACLA,OAAO,CAAC;AACd,EAAEJ,IAAIe,IAAI,CAAC;AACX,CAAC;QACG;QACAd,IAAIG;IACN;IACA,OAAOU,QAAQU,QAAQC,OAAO,CAACrB;AACjC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export async function dumpResponse({ res, url, req, log = console.log }) {
|
|
2
|
-
let out = `<- ${res.status} ${res.statusText} ${req.method} ${url}
|
|
3
|
-
${Array.from(res.headers.entries()).map(([k, v])=>`${k}: ${v}`).join('\n')}
|
|
4
|
-
`;
|
|
5
|
-
let contentType = res.headers.get('content-type');
|
|
6
|
-
// TODO text/event-stream
|
|
7
|
-
if (contentType?.includes('application/json') || contentType?.includes('text/plain')) {
|
|
8
|
-
const body = await res.text();
|
|
9
|
-
out += `\n${body}\n`;
|
|
10
|
-
res = new Response(body, res);
|
|
11
|
-
}
|
|
12
|
-
log(out);
|
|
13
|
-
return res;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=dumpResponse.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/fetch/dumpResponse.ts"],"sourcesContent":["export async function dumpResponse({\n res,\n url,\n req,\n log = console.log,\n}: {\n res: Response;\n url: string;\n req: RequestInit;\n log?: (s: string) => void;\n}) {\n let out = `<- ${res.status} ${res.statusText} ${req.method} ${url}\n${Array.from(res.headers.entries())\n .map(([k, v]) => `${k}: ${v}`)\n .join('\\n')}\n `;\n let contentType = res.headers.get('content-type');\n // TODO text/event-stream\n if (contentType?.includes('application/json') || contentType?.includes('text/plain')) {\n const body = await res.text();\n out += `\\n${body}\\n`;\n res = new Response(body, res);\n }\n\n log(out);\n\n return res;\n}\n"],"names":["dumpResponse","res","url","req","log","console","out","status","statusText","method","Array","from","headers","entries","map","k","v","join","contentType","get","includes","body","text","Response"],"mappings":"AAAA,OAAO,eAAeA,aAAa,EACjCC,GAAG,EACHC,GAAG,EACHC,GAAG,EACHC,MAAMC,QAAQD,GAAG,EAMlB;IACC,IAAIE,MAAM,CAAC,GAAG,EAAEL,IAAIM,MAAM,CAAC,CAAC,EAAEN,IAAIO,UAAU,CAAC,CAAC,EAAEL,IAAIM,MAAM,CAAC,CAAC,EAAEP,IAAI;AACpE,EAAEQ,MAAMC,IAAI,CAACV,IAAIW,OAAO,CAACC,OAAO,IAC7BC,GAAG,CAAC,CAAC,CAACC,GAAGC,EAAE,GAAK,CAAC,EAAED,EAAE,EAAE,EAAEC,EAAE,CAAC,EAC5BC,IAAI,CAAC,MAAM;GACX,CAAC;IACF,IAAIC,cAAcjB,IAAIW,OAAO,CAACO,GAAG,CAAC;IAClC,yBAAyB;IACzB,IAAID,aAAaE,SAAS,uBAAuBF,aAAaE,SAAS,eAAe;QACpF,MAAMC,OAAO,MAAMpB,IAAIqB,IAAI;QAC3BhB,OAAO,CAAC,EAAE,EAAEe,KAAK,EAAE,CAAC;QACpBpB,MAAM,IAAIsB,SAASF,MAAMpB;IAC3B;IAEAG,IAAIE;IAEJ,OAAOL;AACT"}
|
package/lib/fetch/index.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { createFetchWith } from './createFetchWith.js';
|
|
2
|
-
export { createFetchWithLogging } from './createFetchWithLogging.js';
|
|
3
|
-
export { dumpRequest } from './dumpRequest.js';
|
|
4
|
-
export { dumpResponse } from './dumpResponse.js';
|
|
5
|
-
export { createFetchWithRetry } from './createFetchWithRetry.js';
|
|
6
|
-
|
|
7
|
-
//# sourceMappingURL=index.js.map
|
package/lib/fetch/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/fetch/index.ts"],"sourcesContent":["export type * from './types';\nexport { createFetchWith } from './createFetchWith';\nexport { createFetchWithLogging } from './createFetchWithLogging';\nexport { dumpRequest } from './dumpRequest';\nexport { dumpResponse } from './dumpResponse';\nexport { createFetchWithRetry, type FetchWithRetryOptions } from './createFetchWithRetry';\n"],"names":["createFetchWith","createFetchWithLogging","dumpRequest","dumpResponse","createFetchWithRetry"],"mappings":"AACA,SAASA,eAAe,QAAQ,oBAAoB;AACpD,SAASC,sBAAsB,QAAQ,2BAA2B;AAClE,SAASC,WAAW,QAAQ,gBAAgB;AAC5C,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,oBAAoB,QAAoC,yBAAyB"}
|
package/lib/fetch/types.js
DELETED
package/lib/fetch/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/fetch/types.ts"],"sourcesContent":["export type FetchLike<R extends RequestInit = RequestInit> = (\n url: string | URL | Request,\n init?: R,\n) => Promise<Response>;\n"],"names":[],"mappings":"AAAA,WAGuB"}
|
package/lib/http/HttpStatus.js
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
// http://httpstat.us/
|
|
2
|
-
// https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
|
|
3
|
-
const HttpStatus = {
|
|
4
|
-
100: 'Continue',
|
|
5
|
-
101: 'Switching Protocols',
|
|
6
|
-
102: 'Processing',
|
|
7
|
-
103: 'Early Hints',
|
|
8
|
-
200: 'OK',
|
|
9
|
-
201: 'Created',
|
|
10
|
-
202: 'Accepted',
|
|
11
|
-
203: 'Non-Authoritative Information',
|
|
12
|
-
204: 'No Content',
|
|
13
|
-
205: 'Reset Content',
|
|
14
|
-
206: 'Partial Content',
|
|
15
|
-
207: 'Multi-Status',
|
|
16
|
-
208: 'Already Reported',
|
|
17
|
-
226: 'IM Used',
|
|
18
|
-
300: 'Multiple Choices',
|
|
19
|
-
301: 'Moved Permanently',
|
|
20
|
-
302: 'Found',
|
|
21
|
-
303: 'See Other',
|
|
22
|
-
304: 'Not Modified',
|
|
23
|
-
305: 'Use Proxy',
|
|
24
|
-
306: 'Unused',
|
|
25
|
-
307: 'Temporary Redirect',
|
|
26
|
-
308: 'Permanent Redirect',
|
|
27
|
-
400: 'Bad Request',
|
|
28
|
-
401: 'Unauthorized',
|
|
29
|
-
402: 'Payment Required',
|
|
30
|
-
403: 'Forbidden',
|
|
31
|
-
404: 'Not Found',
|
|
32
|
-
405: 'Method Not Allowed',
|
|
33
|
-
406: 'Not Acceptable',
|
|
34
|
-
407: 'Proxy Authentication Required',
|
|
35
|
-
408: 'Request Timeout',
|
|
36
|
-
409: 'Conflict',
|
|
37
|
-
410: 'Gone',
|
|
38
|
-
411: 'Length Required',
|
|
39
|
-
412: 'Precondition Required',
|
|
40
|
-
413: 'Request Entry Too Large',
|
|
41
|
-
414: 'Request-URI Too Long',
|
|
42
|
-
415: 'Unsupported Media Type',
|
|
43
|
-
416: 'Requested Range Not Satisfiable',
|
|
44
|
-
417: 'Expectation Failed',
|
|
45
|
-
418: "I'm a teapot",
|
|
46
|
-
421: 'Misdirected Request',
|
|
47
|
-
422: 'Unprocessable Entity',
|
|
48
|
-
423: 'Locked',
|
|
49
|
-
424: 'Failed Dependency',
|
|
50
|
-
425: 'Too Early',
|
|
51
|
-
426: 'Upgrade Required',
|
|
52
|
-
428: 'Precondition Required',
|
|
53
|
-
429: 'Too Many Requests',
|
|
54
|
-
431: 'Request Header Fields Too Large',
|
|
55
|
-
451: 'Unavailable For Legal Reasons',
|
|
56
|
-
500: 'Internal Server Error',
|
|
57
|
-
501: 'Not Implemented',
|
|
58
|
-
502: 'Bad Gateway',
|
|
59
|
-
503: 'Service Unavailable',
|
|
60
|
-
504: 'Gateway Timeout',
|
|
61
|
-
505: 'HTTP Version Not Supported',
|
|
62
|
-
506: 'Variant Also Negotiates',
|
|
63
|
-
507: 'Insufficient Storage',
|
|
64
|
-
508: 'Loop Detected',
|
|
65
|
-
509: 'Bandwidth Limit Exceeded',
|
|
66
|
-
510: 'Not Extended',
|
|
67
|
-
511: 'Network Authentication Required'
|
|
68
|
-
};
|
|
69
|
-
export function getHttpStatusText(status) {
|
|
70
|
-
return HttpStatus[status];
|
|
71
|
-
}
|
|
72
|
-
export function isRetryableHttpStatus(status) {
|
|
73
|
-
switch(status){
|
|
74
|
-
/*
|
|
75
|
-
408 Request Timeout
|
|
76
|
-
425 Too Early
|
|
77
|
-
429 Too Many Requests
|
|
78
|
-
500 Internal Server Error
|
|
79
|
-
502 Bad Gateway
|
|
80
|
-
503 Service Unavailable
|
|
81
|
-
504 Gateway Timeout
|
|
82
|
-
*/ case 408:
|
|
83
|
-
case 425:
|
|
84
|
-
case 429:
|
|
85
|
-
case 502:
|
|
86
|
-
case 503:
|
|
87
|
-
case 504:
|
|
88
|
-
return true;
|
|
89
|
-
default:
|
|
90
|
-
return false;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
//# sourceMappingURL=HttpStatus.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/http/HttpStatus.ts"],"sourcesContent":["// http://httpstat.us/\n// https://en.wikipedia.org/wiki/List_of_HTTP_status_codes\nconst HttpStatus: Record<string, string> = {\n 100: 'Continue',\n 101: 'Switching Protocols',\n 102: 'Processing',\n 103: 'Early Hints',\n 200: 'OK',\n 201: 'Created',\n 202: 'Accepted',\n 203: 'Non-Authoritative Information',\n 204: 'No Content',\n 205: 'Reset Content',\n 206: 'Partial Content',\n 207: 'Multi-Status',\n 208: 'Already Reported',\n 226: 'IM Used',\n 300: 'Multiple Choices',\n 301: 'Moved Permanently',\n 302: 'Found',\n 303: 'See Other',\n 304: 'Not Modified',\n 305: 'Use Proxy',\n 306: 'Unused',\n 307: 'Temporary Redirect',\n 308: 'Permanent Redirect',\n\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 402: 'Payment Required',\n 403: 'Forbidden',\n 404: 'Not Found',\n 405: 'Method Not Allowed',\n 406: 'Not Acceptable',\n 407: 'Proxy Authentication Required',\n 408: 'Request Timeout',\n 409: 'Conflict',\n 410: 'Gone',\n 411: 'Length Required',\n 412: 'Precondition Required',\n 413: 'Request Entry Too Large',\n 414: 'Request-URI Too Long',\n 415: 'Unsupported Media Type',\n 416: 'Requested Range Not Satisfiable',\n 417: 'Expectation Failed',\n 418: \"I'm a teapot\",\n 421: 'Misdirected Request',\n 422: 'Unprocessable Entity',\n 423: 'Locked',\n 424: 'Failed Dependency',\n 425: 'Too Early',\n 426: 'Upgrade Required',\n 428: 'Precondition Required',\n 429: 'Too Many Requests',\n 431: 'Request Header Fields Too Large',\n 451: 'Unavailable For Legal Reasons',\n 500: 'Internal Server Error',\n 501: 'Not Implemented',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n 504: 'Gateway Timeout',\n 505: 'HTTP Version Not Supported',\n 506: 'Variant Also Negotiates',\n 507: 'Insufficient Storage',\n 508: 'Loop Detected',\n 509: 'Bandwidth Limit Exceeded',\n 510: 'Not Extended',\n 511: 'Network Authentication Required',\n};\n\nexport function getHttpStatusText(status: number | string): string | undefined {\n return HttpStatus[status];\n}\n\nexport function isRetryableHttpStatus(status: number) {\n switch (status) {\n /*\n408 Request Timeout\n425 Too Early\n429 Too Many Requests\n500 Internal Server Error\n502 Bad Gateway\n503 Service Unavailable\n504 Gateway Timeout\n */\n case 408:\n case 425:\n case 429:\n case 502:\n case 503:\n case 504:\n return true;\n default:\n return false;\n }\n}\n"],"names":["HttpStatus","getHttpStatusText","status","isRetryableHttpStatus"],"mappings":"AAAA,sBAAsB;AACtB,0DAA0D;AAC1D,MAAMA,aAAqC;IACzC,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IAEL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;AACP;AAEA,OAAO,SAASC,kBAAkBC,MAAuB;IACvD,OAAOF,UAAU,CAACE,OAAO;AAC3B;AAEA,OAAO,SAASC,sBAAsBD,MAAc;IAClD,OAAQA;QACN;;;;;;;;KAQC,GACD,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO;QACT;YACE,OAAO;IACX;AACF"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { get } from '../objects/get.js';
|
|
2
|
-
import { renderTemplate } from '../strings/renderTemplate.js';
|
|
3
|
-
export function createTranslate(obj) {
|
|
4
|
-
let locale = '';
|
|
5
|
-
const tree = obj || {};
|
|
6
|
-
// en-US -> en-US,en
|
|
7
|
-
const keyOfDict = (s)=>{
|
|
8
|
-
if (Array.isArray(s)) {
|
|
9
|
-
return s;
|
|
10
|
-
}
|
|
11
|
-
const sp = s.split(/[_-]/);
|
|
12
|
-
if (sp.length > 1) {
|
|
13
|
-
return [
|
|
14
|
-
s,
|
|
15
|
-
sp[0]
|
|
16
|
-
];
|
|
17
|
-
}
|
|
18
|
-
return [
|
|
19
|
-
s
|
|
20
|
-
];
|
|
21
|
-
};
|
|
22
|
-
return {
|
|
23
|
-
locale (lang) {
|
|
24
|
-
return locale = lang || locale;
|
|
25
|
-
},
|
|
26
|
-
dict: (lang, dict)=>{
|
|
27
|
-
if (dict) {
|
|
28
|
-
tree[lang] = Object.assign(tree[lang] || {}, dict);
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
return tree[lang];
|
|
32
|
-
},
|
|
33
|
-
t (key, params, lang) {
|
|
34
|
-
let val;
|
|
35
|
-
for (const k of keyOfDict(lang || locale)){
|
|
36
|
-
val = get(tree[k], key, '');
|
|
37
|
-
if (val) {
|
|
38
|
-
break;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (process.env.NODE_ENV === 'development') {
|
|
42
|
-
if (val == null) {
|
|
43
|
-
console.error(`[Translate] Missing the "${[].concat(key).join('.')}" key within the "${lang || locale}" dictionary`);
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
if (typeof val === 'function') return val(params);
|
|
48
|
-
if (typeof val === 'string') return renderTemplate(val, params, 'common');
|
|
49
|
-
return val;
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
//# sourceMappingURL=createTranslate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/i18n/createTranslate.ts"],"sourcesContent":["import { get } from '../objects/get';\nimport type { ObjectPathLike } from '../objects/parseObjectPath';\nimport { renderTemplate } from '../strings/renderTemplate';\n\nexport interface Translate<T extends object> {\n /** Get/Set the language key */\n locale(lang?: string): string;\n\n /** Define the dict of translations for a language */\n dict(lang: string, dict: T): void;\n\n /** Get the dict of translations for a language */\n dict(lang: string): T;\n\n /** Retrieve a translation segment for the current language */\n t<X extends Record<string, any> | any[]>(key: ObjectPathLike, params?: X, lang?: string): string;\n}\n\nexport function createTranslate<T extends object>(obj?: Record<string, T>): Translate<T> {\n let locale = '';\n const tree = obj || {};\n // en-US -> en-US,en\n const keyOfDict = (s: string | string[]) => {\n if (Array.isArray(s)) {\n return s;\n }\n const sp = s.split(/[_-]/);\n if (sp.length > 1) {\n return [s, sp[0]];\n }\n return [s];\n };\n return {\n locale(lang) {\n return (locale = lang || locale);\n },\n\n dict: ((lang, dict?) => {\n if (dict) {\n tree[lang] = Object.assign(tree[lang] || {}, dict);\n return;\n }\n return tree[lang];\n }) as Translate<T>['dict'],\n\n t(key, params, lang) {\n let val: any;\n for (const k of keyOfDict(lang || locale)) {\n val = get(tree[k], key, '');\n if (val) {\n break;\n }\n }\n if (process.env.NODE_ENV === 'development') {\n if (val == null) {\n console.error(\n `[Translate] Missing the \"${[].concat(key as any).join('.')}\" key within the \"${\n lang || locale\n }\" dictionary`,\n );\n return;\n }\n }\n if (typeof val === 'function') return val(params);\n if (typeof val === 'string') return renderTemplate(val, params, 'common');\n return val;\n },\n };\n}\n"],"names":["get","renderTemplate","createTranslate","obj","locale","tree","keyOfDict","s","Array","isArray","sp","split","length","lang","dict","Object","assign","t","key","params","val","k","process","env","NODE_ENV","console","error","concat","join"],"mappings":"AAAA,SAASA,GAAG,QAAQ,iBAAiB;AAErC,SAASC,cAAc,QAAQ,4BAA4B;AAgB3D,OAAO,SAASC,gBAAkCC,GAAuB;IACvE,IAAIC,SAAS;IACb,MAAMC,OAAOF,OAAO,CAAC;IACrB,oBAAoB;IACpB,MAAMG,YAAY,CAACC;QACjB,IAAIC,MAAMC,OAAO,CAACF,IAAI;YACpB,OAAOA;QACT;QACA,MAAMG,KAAKH,EAAEI,KAAK,CAAC;QACnB,IAAID,GAAGE,MAAM,GAAG,GAAG;YACjB,OAAO;gBAACL;gBAAGG,EAAE,CAAC,EAAE;aAAC;QACnB;QACA,OAAO;YAACH;SAAE;IACZ;IACA,OAAO;QACLH,QAAOS,IAAI;YACT,OAAQT,SAASS,QAAQT;QAC3B;QAEAU,MAAO,CAACD,MAAMC;YACZ,IAAIA,MAAM;gBACRT,IAAI,CAACQ,KAAK,GAAGE,OAAOC,MAAM,CAACX,IAAI,CAACQ,KAAK,IAAI,CAAC,GAAGC;gBAC7C;YACF;YACA,OAAOT,IAAI,CAACQ,KAAK;QACnB;QAEAI,GAAEC,GAAG,EAAEC,MAAM,EAAEN,IAAI;YACjB,IAAIO;YACJ,KAAK,MAAMC,KAAKf,UAAUO,QAAQT,QAAS;gBACzCgB,MAAMpB,IAAIK,IAAI,CAACgB,EAAE,EAAEH,KAAK;gBACxB,IAAIE,KAAK;oBACP;gBACF;YACF;YACA,IAAIE,QAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;gBAC1C,IAAIJ,OAAO,MAAM;oBACfK,QAAQC,KAAK,CACX,CAAC,yBAAyB,EAAE,EAAE,CAACC,MAAM,CAACT,KAAYU,IAAI,CAAC,KAAK,kBAAkB,EAC5Ef,QAAQT,OACT,YAAY,CAAC;oBAEhB;gBACF;YACF;YACA,IAAI,OAAOgB,QAAQ,YAAY,OAAOA,IAAID;YAC1C,IAAI,OAAOC,QAAQ,UAAU,OAAOnB,eAAemB,KAAKD,QAAQ;YAChE,OAAOC;QACT;IACF;AACF"}
|