@wener/utils 1.1.32 → 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/logging/Logger.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/logging/Logger.ts"],"sourcesContent":["/**\n * Logger interface satisfies the `console`, `pino` logger interface.\n */\nexport interface Logger {\n trace(...args: any[]): void;\n\n debug(...args: any[]): void;\n\n info(...args: any[]): void;\n\n warn(...args: any[]): void;\n\n error(...args: any[]): void;\n\n /**\n * create child logger with given context\n */\n child?: (o: object) => Logger;\n}\n\nexport interface LoggerWithChild extends Logger {\n child: (o: Record<string, any>) => LoggerWithChild;\n}\n\nexport type LogLevel = 'error' | 'warn' | 'info' | 'debug' | 'trace';\n"],"names":[],"mappings":"AAAA;;CAEC,GACD,WAqBqE"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { createLogger } from './createLogger.js';
|
|
2
|
-
export function createChildLogger(l, ctx) {
|
|
3
|
-
if (l.child) {
|
|
4
|
-
return l.child(ctx);
|
|
5
|
-
}
|
|
6
|
-
return createLogger((o)=>{
|
|
7
|
-
const { level, values, ...c } = o;
|
|
8
|
-
if (Object.keys(c).length) {
|
|
9
|
-
l[level](c, ...values);
|
|
10
|
-
} else {
|
|
11
|
-
l[level](...values);
|
|
12
|
-
}
|
|
13
|
-
}, ctx);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=createChildLogger.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/logging/createChildLogger.ts"],"sourcesContent":["import type { Logger, LoggerWithChild } from './Logger';\nimport { createLogger } from './createLogger';\n\nexport function createChildLogger(l: Logger, ctx: object): LoggerWithChild {\n if (l.child) {\n return l.child(ctx) as LoggerWithChild;\n }\n return createLogger((o) => {\n const { level, values, ...c } = o;\n if (Object.keys(c).length) {\n l[level](c, ...values);\n } else {\n l[level](...values);\n }\n }, ctx);\n}\n"],"names":["createLogger","createChildLogger","l","ctx","child","o","level","values","c","Object","keys","length"],"mappings":"AACA,SAASA,YAAY,QAAQ,iBAAiB;AAE9C,OAAO,SAASC,kBAAkBC,CAAS,EAAEC,GAAW;IACtD,IAAID,EAAEE,KAAK,EAAE;QACX,OAAOF,EAAEE,KAAK,CAACD;IACjB;IACA,OAAOH,aAAa,CAACK;QACnB,MAAM,EAAEC,KAAK,EAAEC,MAAM,EAAE,GAAGC,GAAG,GAAGH;QAChC,IAAII,OAAOC,IAAI,CAACF,GAAGG,MAAM,EAAE;YACzBT,CAAC,CAACI,MAAM,CAACE,MAAMD;QACjB,OAAO;YACLL,CAAC,CAACI,MAAM,IAAIC;QACd;IACF,GAAGJ;AACL"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
export function createLogger(write = ({ level, values, ...ctx })=>{
|
|
2
|
-
({ values, ...ctx } = merge(ctx, values));
|
|
3
|
-
console[level]?.(...values, ctx);
|
|
4
|
-
}, context = {}) {
|
|
5
|
-
return {
|
|
6
|
-
trace: (...values)=>{
|
|
7
|
-
write({
|
|
8
|
-
...context,
|
|
9
|
-
level: 'trace',
|
|
10
|
-
values
|
|
11
|
-
});
|
|
12
|
-
},
|
|
13
|
-
debug: (...values)=>{
|
|
14
|
-
write({
|
|
15
|
-
...context,
|
|
16
|
-
level: 'debug',
|
|
17
|
-
values
|
|
18
|
-
});
|
|
19
|
-
},
|
|
20
|
-
info: (...values)=>{
|
|
21
|
-
write({
|
|
22
|
-
...context,
|
|
23
|
-
level: 'info',
|
|
24
|
-
values
|
|
25
|
-
});
|
|
26
|
-
},
|
|
27
|
-
warn: (...values)=>{
|
|
28
|
-
write({
|
|
29
|
-
...context,
|
|
30
|
-
level: 'warn',
|
|
31
|
-
values
|
|
32
|
-
});
|
|
33
|
-
},
|
|
34
|
-
error: (...values)=>{
|
|
35
|
-
write({
|
|
36
|
-
...context,
|
|
37
|
-
level: 'error',
|
|
38
|
-
values
|
|
39
|
-
});
|
|
40
|
-
},
|
|
41
|
-
child: (ctx)=>createLogger(write, {
|
|
42
|
-
...context,
|
|
43
|
-
...ctx
|
|
44
|
-
})
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
// logger.info({name:'wener'},'message')
|
|
48
|
-
// merge initial context with message object
|
|
49
|
-
function merge(ctx, values) {
|
|
50
|
-
if (values[0] && typeof values[0] === 'object') {
|
|
51
|
-
return {
|
|
52
|
-
...ctx,
|
|
53
|
-
...values[0],
|
|
54
|
-
values: values.slice(1)
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
return {
|
|
58
|
-
...ctx,
|
|
59
|
-
values
|
|
60
|
-
};
|
|
61
|
-
} // https://github.com/nestjs/nest/blob/master/packages/common/services/console-logger.service.ts
|
|
62
|
-
|
|
63
|
-
//# sourceMappingURL=createLogger.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/logging/createLogger.ts"],"sourcesContent":["import type { LoggerWithChild, LogLevel } from './Logger';\n\nexport interface CreateLoggerOptions {\n name?: string;\n handler?: (o: { level: LogLevel; values: any[] } & Record<string | symbol, any>) => void;\n context?: Record<string, any>;\n levels?: LogLevel[];\n}\n\nexport function createLogger(\n write: (o: { level: LogLevel; values: any[] } & Record<string | symbol, any>) => void = ({\n level,\n values,\n ...ctx\n }) => {\n ({ values, ...ctx } = merge(ctx, values));\n console[level]?.(...values, ctx);\n },\n context: object = {},\n): LoggerWithChild {\n return {\n trace: (...values) => {\n write({ ...context, level: 'trace', values });\n },\n debug: (...values) => {\n write({ ...context, level: 'debug', values });\n },\n info: (...values) => {\n write({ ...context, level: 'info', values });\n },\n warn: (...values) => {\n write({ ...context, level: 'warn', values });\n },\n error: (...values) => {\n write({ ...context, level: 'error', values });\n },\n child: (ctx) => createLogger(write, { ...context, ...ctx }),\n };\n}\n\n// logger.info({name:'wener'},'message')\n// merge initial context with message object\nfunction merge(ctx: any, values: any[]) {\n if (values[0] && typeof values[0] === 'object') {\n return { ...ctx, ...values[0], values: values.slice(1) };\n }\n return { ...ctx, values };\n}\n\n// https://github.com/nestjs/nest/blob/master/packages/common/services/console-logger.service.ts\n"],"names":["createLogger","write","level","values","ctx","merge","console","context","trace","debug","info","warn","error","child","slice"],"mappings":"AASA,OAAO,SAASA,aACdC,QAAwF,CAAC,EACvFC,KAAK,EACLC,MAAM,EACN,GAAGC,KACJ;IACE,CAAA,EAAED,MAAM,EAAE,GAAGC,KAAK,GAAGC,MAAMD,KAAKD,OAAM;IACvCG,OAAO,CAACJ,MAAM,MAAMC,QAAQC;AAC9B,CAAC,EACDG,UAAkB,CAAC,CAAC;IAEpB,OAAO;QACLC,OAAO,CAAC,GAAGL;YACTF,MAAM;gBAAE,GAAGM,OAAO;gBAAEL,OAAO;gBAASC;YAAO;QAC7C;QACAM,OAAO,CAAC,GAAGN;YACTF,MAAM;gBAAE,GAAGM,OAAO;gBAAEL,OAAO;gBAASC;YAAO;QAC7C;QACAO,MAAM,CAAC,GAAGP;YACRF,MAAM;gBAAE,GAAGM,OAAO;gBAAEL,OAAO;gBAAQC;YAAO;QAC5C;QACAQ,MAAM,CAAC,GAAGR;YACRF,MAAM;gBAAE,GAAGM,OAAO;gBAAEL,OAAO;gBAAQC;YAAO;QAC5C;QACAS,OAAO,CAAC,GAAGT;YACTF,MAAM;gBAAE,GAAGM,OAAO;gBAAEL,OAAO;gBAASC;YAAO;QAC7C;QACAU,OAAO,CAACT,MAAQJ,aAAaC,OAAO;gBAAE,GAAGM,OAAO;gBAAE,GAAGH,GAAG;YAAC;IAC3D;AACF;AAEA,wCAAwC;AACxC,4CAA4C;AAC5C,SAASC,MAAMD,GAAQ,EAAED,MAAa;IACpC,IAAIA,MAAM,CAAC,EAAE,IAAI,OAAOA,MAAM,CAAC,EAAE,KAAK,UAAU;QAC9C,OAAO;YAAE,GAAGC,GAAG;YAAE,GAAGD,MAAM,CAAC,EAAE;YAAEA,QAAQA,OAAOW,KAAK,CAAC;QAAG;IACzD;IACA,OAAO;QAAE,GAAGV,GAAG;QAAED;IAAO;AAC1B,EAEA,gGAAgG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/logging/createNoopLogger.ts"],"sourcesContent":["import type { LoggerWithChild } from './Logger';\n\nexport function createNoopLogger(): LoggerWithChild {\n const noop = (..._: any[]) => undefined;\n return {\n trace: noop,\n debug: noop,\n info: noop,\n warn: noop,\n error: noop,\n child: () => createNoopLogger(),\n };\n}\n"],"names":["createNoopLogger","noop","_","undefined","trace","debug","info","warn","error","child"],"mappings":"AAEA,OAAO,SAASA;IACd,MAAMC,OAAO,CAAC,GAAGC,IAAaC;IAC9B,OAAO;QACLC,OAAOH;QACPI,OAAOJ;QACPK,MAAML;QACNM,MAAMN;QACNO,OAAOP;QACPQ,OAAO,IAAMT;IACf;AACF"}
|
package/lib/logging/slog.js
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
var Level;
|
|
2
|
-
(function(Level) {
|
|
3
|
-
Level[Level["trace"] = -8] = "trace";
|
|
4
|
-
Level[Level["debug"] = -4] = "debug";
|
|
5
|
-
Level[Level["info"] = 0] = "info";
|
|
6
|
-
Level[Level["warn"] = 4] = "warn";
|
|
7
|
-
Level[Level["error"] = 8] = "error";
|
|
8
|
-
})(Level || (Level = {}));
|
|
9
|
-
function createLogFunc(opts) {
|
|
10
|
-
return (msg, ...args)=>{
|
|
11
|
-
const rec = {
|
|
12
|
-
message: String(msg),
|
|
13
|
-
level: opts.level,
|
|
14
|
-
attrs: Object.assign({}, opts.attrs)
|
|
15
|
-
};
|
|
16
|
-
if (args[0] && typeof args[0] === 'object') {
|
|
17
|
-
rec.attrs = Object.assign(rec.attrs, args[0]);
|
|
18
|
-
} else {
|
|
19
|
-
for(let i = 0; i < args.length; i += 2){
|
|
20
|
-
rec.attrs[String(args[i])] = args[i + 1];
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
opts.onRecord(rec);
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
function stringify(rec, opts = {}) {
|
|
27
|
-
const sb = [];
|
|
28
|
-
if (rec.time) {
|
|
29
|
-
sb.push(rec.time.toJSON());
|
|
30
|
-
}
|
|
31
|
-
rec.level && opts.level !== false && sb.push(rec.level.toUpperCase().padStart(5, ' '));
|
|
32
|
-
sb.push(rec.message);
|
|
33
|
-
if (rec.attrs) {
|
|
34
|
-
for (let [key, value] of Object.entries(rec.attrs)){
|
|
35
|
-
sb.push(`${key}=${JSON.stringify(value)}`);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return sb.join(' ');
|
|
39
|
-
}
|
|
40
|
-
export function createLogger(opts = {}) {
|
|
41
|
-
opts.time ??= typeof window === 'undefined';
|
|
42
|
-
const onRecord = (record)=>{
|
|
43
|
-
// can change options after create
|
|
44
|
-
const { writer = createLogger.writer, level, time } = opts;
|
|
45
|
-
if (level) {
|
|
46
|
-
if (Level[level] < Level[record.level]) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
if (time) {
|
|
51
|
-
record.time = new Date();
|
|
52
|
-
}
|
|
53
|
-
writer(record);
|
|
54
|
-
};
|
|
55
|
-
return {
|
|
56
|
-
trace: createLogFunc({
|
|
57
|
-
onRecord,
|
|
58
|
-
level: 'trace'
|
|
59
|
-
}),
|
|
60
|
-
debug: createLogFunc({
|
|
61
|
-
onRecord,
|
|
62
|
-
level: 'debug'
|
|
63
|
-
}),
|
|
64
|
-
info: createLogFunc({
|
|
65
|
-
onRecord,
|
|
66
|
-
level: 'info'
|
|
67
|
-
}),
|
|
68
|
-
warn: createLogFunc({
|
|
69
|
-
onRecord,
|
|
70
|
-
level: 'warn'
|
|
71
|
-
}),
|
|
72
|
-
error: createLogFunc({
|
|
73
|
-
onRecord,
|
|
74
|
-
level: 'error'
|
|
75
|
-
})
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
createLogger.writer = (record)=>{
|
|
79
|
-
const { level } = record;
|
|
80
|
-
console[level || 'info'](stringify(record));
|
|
81
|
-
};
|
|
82
|
-
let formatter = (open, close, replace = open)=>(input)=>{
|
|
83
|
-
let string = '' + input;
|
|
84
|
-
let index = string.indexOf(close, open.length);
|
|
85
|
-
return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close;
|
|
86
|
-
};
|
|
87
|
-
let replaceClose = (string, close, replace, index)=>{
|
|
88
|
-
let start = string.substring(0, index) + replace;
|
|
89
|
-
let end = string.substring(index + close.length);
|
|
90
|
-
let nextIndex = end.indexOf(close);
|
|
91
|
-
return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end;
|
|
92
|
-
};
|
|
93
|
-
function getEnv() {
|
|
94
|
-
if (typeof process === 'object') {
|
|
95
|
-
return process.env;
|
|
96
|
-
}
|
|
97
|
-
return {};
|
|
98
|
-
}
|
|
99
|
-
function isColorSupported() {
|
|
100
|
-
if (typeof window === 'object') {
|
|
101
|
-
return true;
|
|
102
|
-
}
|
|
103
|
-
const env = getEnv();
|
|
104
|
-
if ('NO_COLOR' in env) {
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
if ('FORCE_COLOR' in env || 'CI' in env) {
|
|
108
|
-
return true;
|
|
109
|
-
}
|
|
110
|
-
return false;
|
|
111
|
-
}
|
|
112
|
-
export function createConsoleColors(enabled = isColorSupported()) {
|
|
113
|
-
return {
|
|
114
|
-
isColorSupported: enabled,
|
|
115
|
-
reset: enabled ? (s)=>`\x1b[0m${s}\x1b[0m` : String,
|
|
116
|
-
bold: enabled ? formatter('\x1b[1m', '\x1b[22m', '\x1b[22m\x1b[1m') : String,
|
|
117
|
-
dim: enabled ? formatter('\x1b[2m', '\x1b[22m', '\x1b[22m\x1b[2m') : String,
|
|
118
|
-
italic: enabled ? formatter('\x1b[3m', '\x1b[23m') : String,
|
|
119
|
-
underline: enabled ? formatter('\x1b[4m', '\x1b[24m') : String,
|
|
120
|
-
inverse: enabled ? formatter('\x1b[7m', '\x1b[27m') : String,
|
|
121
|
-
hidden: enabled ? formatter('\x1b[8m', '\x1b[28m') : String,
|
|
122
|
-
strikethrough: enabled ? formatter('\x1b[9m', '\x1b[29m') : String,
|
|
123
|
-
black: enabled ? formatter('\x1b[30m', '\x1b[39m') : String,
|
|
124
|
-
red: enabled ? formatter('\x1b[31m', '\x1b[39m') : String,
|
|
125
|
-
green: enabled ? formatter('\x1b[32m', '\x1b[39m') : String,
|
|
126
|
-
yellow: enabled ? formatter('\x1b[33m', '\x1b[39m') : String,
|
|
127
|
-
blue: enabled ? formatter('\x1b[34m', '\x1b[39m') : String,
|
|
128
|
-
magenta: enabled ? formatter('\x1b[35m', '\x1b[39m') : String,
|
|
129
|
-
cyan: enabled ? formatter('\x1b[36m', '\x1b[39m') : String,
|
|
130
|
-
white: enabled ? formatter('\x1b[37m', '\x1b[39m') : String,
|
|
131
|
-
gray: enabled ? formatter('\x1b[90m', '\x1b[39m') : String,
|
|
132
|
-
bgBlack: enabled ? formatter('\x1b[40m', '\x1b[49m') : String,
|
|
133
|
-
bgRed: enabled ? formatter('\x1b[41m', '\x1b[49m') : String,
|
|
134
|
-
bgGreen: enabled ? formatter('\x1b[42m', '\x1b[49m') : String,
|
|
135
|
-
bgYellow: enabled ? formatter('\x1b[43m', '\x1b[49m') : String,
|
|
136
|
-
bgBlue: enabled ? formatter('\x1b[44m', '\x1b[49m') : String,
|
|
137
|
-
bgMagenta: enabled ? formatter('\x1b[45m', '\x1b[49m') : String,
|
|
138
|
-
bgCyan: enabled ? formatter('\x1b[46m', '\x1b[49m') : String,
|
|
139
|
-
bgWhite: enabled ? formatter('\x1b[47m', '\x1b[49m') : String
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
//# sourceMappingURL=slog.js.map
|
package/lib/logging/slog.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/logging/slog.ts"],"sourcesContent":["import { Logger, LogLevel } from './Logger';\n\nenum Level {\n trace = -8,\n debug = -4,\n info = 0,\n warn = 4,\n error = 8,\n}\n\ninterface LogRecord {\n time?: Date;\n message: string;\n level?: 'info' | 'debug' | 'warn' | 'error' | 'trace';\n attrs?: Record<string, any>;\n\n source?: {\n func?: string;\n file?: string;\n line?: number;\n };\n\n // https://cs.opensource.google/go/x/exp/+/d63ba01a:slog/record.go\n}\n\ntype LogFunc =\n | ((message: string) => void)\n | ((message: string, attrs: Record<string, any>) => void)\n | ((message: string, key: string, value: any, ...attrs: any[]) => void);\n\nfunction createLogFunc(opts: {\n onRecord: (rec: LogRecord) => void;\n attrs?: Record<string, any>;\n level?: LogLevel;\n}): LogFunc {\n return (msg: string, ...args: any[]) => {\n const rec = {\n message: String(msg),\n level: opts.level,\n attrs: Object.assign({}, opts.attrs),\n };\n\n if (args[0] && typeof args[0] === 'object') {\n rec.attrs = Object.assign(rec.attrs, args[0]);\n } else {\n for (let i = 0; i < args.length; i += 2) {\n rec.attrs[String(args[i])] = args[i + 1];\n }\n }\n\n opts.onRecord(rec);\n };\n}\n\nfunction stringify(rec: LogRecord, opts: { level?: boolean } = {}) {\n const sb = [];\n if (rec.time) {\n sb.push(rec.time.toJSON());\n }\n rec.level && opts.level !== false && sb.push(rec.level.toUpperCase().padStart(5, ' '));\n sb.push(rec.message);\n\n if (rec.attrs) {\n for (let [key, value] of Object.entries(rec.attrs)) {\n sb.push(`${key}=${JSON.stringify(value)}`);\n }\n }\n return sb.join(' ');\n}\n\nexport function createLogger(\n opts: { writer?: (record: LogRecord) => void; level?: LogLevel; time?: boolean } = {},\n): Logger {\n opts.time ??= typeof window === 'undefined';\n const onRecord = (record: LogRecord) => {\n // can change options after create\n const { writer = createLogger.writer, level, time } = opts;\n if (level) {\n if (Level[level] < Level[record.level!]) {\n return;\n }\n }\n if (time) {\n record.time = new Date();\n }\n writer(record);\n };\n return {\n trace: createLogFunc({ onRecord, level: 'trace' }),\n debug: createLogFunc({ onRecord, level: 'debug' }),\n info: createLogFunc({ onRecord, level: 'info' }),\n warn: createLogFunc({ onRecord, level: 'warn' }),\n error: createLogFunc({ onRecord, level: 'error' }),\n };\n}\n\ncreateLogger.writer = (record: LogRecord) => {\n const { level } = record;\n console[level || 'info'](stringify(record));\n};\n\n// https://github.com/alexeyraspopov/picocolors/blob/main/picocolors.js\n/*\nMDN: Styling console output\nhttps://developer.mozilla.org/en-US/docs/Web/API/console#Usage\n\nChrome: Console API Reference\nhttps://developers.google.com/web/tools/chrome-devtools/console/console-write#styling_console_output_with_css\n\nWebKit: Console Object API\nhttps://webkit.org/web-inspector/console-object-api/\n\nhttps://stackoverflow.com/questions/7505623\n\nconsole.log('\\x1b[36m Hello \\x1b[34m Colored \\x1b[35m World!');\nconsole.log('\\x1B[31mHello\\x1B[34m World');\nconsole.log('\\x1b[43mHighlighted');\n\n\nNestJS Formatter\nhttps://github.com/nestjs/nest/blob/d4bda940fc10238eb18f14ebf66d66b7ef8bff41/packages/common/services/console-logger.service.ts#L201-L227\n\n */\n\nexport type Formatter = (input: string | number | null | undefined) => string;\n\nexport interface Colors {\n isColorSupported: boolean;\n reset: Formatter;\n bold: Formatter;\n dim: Formatter;\n italic: Formatter;\n underline: Formatter;\n inverse: Formatter;\n hidden: Formatter;\n strikethrough: Formatter;\n black: Formatter;\n red: Formatter;\n green: Formatter;\n yellow: Formatter;\n blue: Formatter;\n magenta: Formatter;\n cyan: Formatter;\n white: Formatter;\n gray: Formatter;\n bgBlack: Formatter;\n bgRed: Formatter;\n bgGreen: Formatter;\n bgYellow: Formatter;\n bgBlue: Formatter;\n bgMagenta: Formatter;\n bgCyan: Formatter;\n bgWhite: Formatter;\n}\n\nlet formatter =\n (open: string, close: string, replace: string = open) =>\n (input: string) => {\n let string = '' + input;\n let index = string.indexOf(close, open.length);\n return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close;\n };\n\nlet replaceClose = (string: string, close: string, replace: string, index: number): string => {\n let start = string.substring(0, index) + replace;\n let end = string.substring(index + close.length);\n let nextIndex = end.indexOf(close);\n return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end;\n};\n\nfunction getEnv(): Record<string, string | undefined> {\n if (typeof process === 'object') {\n return process.env;\n }\n return {};\n}\n\nfunction isColorSupported() {\n if (typeof window === 'object') {\n return true;\n }\n const env = getEnv();\n if ('NO_COLOR' in env) {\n return false;\n }\n if ('FORCE_COLOR' in env || 'CI' in env) {\n return true;\n }\n return false;\n}\n\nexport function createConsoleColors(enabled = isColorSupported()) {\n return {\n isColorSupported: enabled,\n reset: enabled ? (s: string) => `\\x1b[0m${s}\\x1b[0m` : String,\n bold: enabled ? formatter('\\x1b[1m', '\\x1b[22m', '\\x1b[22m\\x1b[1m') : String,\n dim: enabled ? formatter('\\x1b[2m', '\\x1b[22m', '\\x1b[22m\\x1b[2m') : String,\n italic: enabled ? formatter('\\x1b[3m', '\\x1b[23m') : String,\n underline: enabled ? formatter('\\x1b[4m', '\\x1b[24m') : String,\n inverse: enabled ? formatter('\\x1b[7m', '\\x1b[27m') : String,\n hidden: enabled ? formatter('\\x1b[8m', '\\x1b[28m') : String,\n strikethrough: enabled ? formatter('\\x1b[9m', '\\x1b[29m') : String,\n black: enabled ? formatter('\\x1b[30m', '\\x1b[39m') : String,\n red: enabled ? formatter('\\x1b[31m', '\\x1b[39m') : String,\n green: enabled ? formatter('\\x1b[32m', '\\x1b[39m') : String,\n yellow: enabled ? formatter('\\x1b[33m', '\\x1b[39m') : String,\n blue: enabled ? formatter('\\x1b[34m', '\\x1b[39m') : String,\n magenta: enabled ? formatter('\\x1b[35m', '\\x1b[39m') : String,\n cyan: enabled ? formatter('\\x1b[36m', '\\x1b[39m') : String,\n white: enabled ? formatter('\\x1b[37m', '\\x1b[39m') : String,\n gray: enabled ? formatter('\\x1b[90m', '\\x1b[39m') : String,\n bgBlack: enabled ? formatter('\\x1b[40m', '\\x1b[49m') : String,\n bgRed: enabled ? formatter('\\x1b[41m', '\\x1b[49m') : String,\n bgGreen: enabled ? formatter('\\x1b[42m', '\\x1b[49m') : String,\n bgYellow: enabled ? formatter('\\x1b[43m', '\\x1b[49m') : String,\n bgBlue: enabled ? formatter('\\x1b[44m', '\\x1b[49m') : String,\n bgMagenta: enabled ? formatter('\\x1b[45m', '\\x1b[49m') : String,\n bgCyan: enabled ? formatter('\\x1b[46m', '\\x1b[49m') : String,\n bgWhite: enabled ? formatter('\\x1b[47m', '\\x1b[49m') : String,\n };\n}\n"],"names":["Level","trace","debug","info","warn","error","createLogFunc","opts","msg","args","rec","message","String","level","attrs","Object","assign","i","length","onRecord","stringify","sb","time","push","toJSON","toUpperCase","padStart","key","value","entries","JSON","join","createLogger","window","record","writer","Date","console","formatter","open","close","replace","input","string","index","indexOf","replaceClose","start","substring","end","nextIndex","getEnv","process","env","isColorSupported","createConsoleColors","enabled","reset","s","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite"],"mappings":"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"}
|
package/lib/maths/clamp.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
// export function clamp<T>(value: T | null | undefined, o: { min: T; max: T; default?: T }): T;
|
|
2
|
-
export function clamp(value, ...o) {
|
|
3
|
-
let min, max, def;
|
|
4
|
-
if (o.length === 1) {
|
|
5
|
-
({ min, max, default: def = min } = o[0]);
|
|
6
|
-
} else {
|
|
7
|
-
[min, max, def = min] = o;
|
|
8
|
-
}
|
|
9
|
-
if (value === null || value === undefined) {
|
|
10
|
-
return def;
|
|
11
|
-
}
|
|
12
|
-
if (value < min) {
|
|
13
|
-
return min;
|
|
14
|
-
}
|
|
15
|
-
if (value > max) {
|
|
16
|
-
return max;
|
|
17
|
-
}
|
|
18
|
-
return value;
|
|
19
|
-
} // type Comparable = number | string | Date | BigInt;
|
|
20
|
-
|
|
21
|
-
//# sourceMappingURL=clamp.js.map
|
package/lib/maths/clamp.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/maths/clamp.ts"],"sourcesContent":["// export function clamp<T>(value: T | null | undefined, o: { min: T; max: T; default?: T }): T;\n\nexport function clamp<T>(value: T | null | undefined, min: T, max: T, def?: T): T;\nexport function clamp<T>(value: T | null | undefined, ...o: any[]): T {\n let min: T, max: T, def: T;\n if (o.length === 1) {\n ({ min, max, default: def = min! } = o[0]);\n } else {\n [min, max, def = min!] = o;\n }\n if (value === null || value === undefined) {\n return def;\n }\n if (value < min) {\n return min;\n }\n if (value > max) {\n return max;\n }\n return value;\n}\n\n// type Comparable = number | string | Date | BigInt;\n"],"names":["clamp","value","o","min","max","def","length","default","undefined"],"mappings":"AAAA,gGAAgG;AAGhG,OAAO,SAASA,MAASC,KAA2B,EAAE,GAAGC,CAAQ;IAC/D,IAAIC,KAAQC,KAAQC;IACpB,IAAIH,EAAEI,MAAM,KAAK,GAAG;QACjB,CAAA,EAAEH,GAAG,EAAEC,GAAG,EAAEG,SAASF,MAAMF,GAAI,EAAE,GAAGD,CAAC,CAAC,EAAE,AAAD;IAC1C,OAAO;QACL,CAACC,KAAKC,KAAKC,MAAMF,GAAI,CAAC,GAAGD;IAC3B;IACA,IAAID,UAAU,QAAQA,UAAUO,WAAW;QACzC,OAAOH;IACT;IACA,IAAIJ,QAAQE,KAAK;QACf,OAAOA;IACT;IACA,IAAIF,QAAQG,KAAK;QACf,OAAOA;IACT;IACA,OAAOH;AACT,EAEA,qDAAqD"}
|
package/lib/maths/random.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/// javascript pseudo random
|
|
2
|
-
export function createRandom(o = {}) {
|
|
3
|
-
let seed = typeof o.seed === 'string' ? 0 : o.seed ?? 0;
|
|
4
|
-
if (typeof o.seed === 'string') {
|
|
5
|
-
let sum = 0;
|
|
6
|
-
for(let i = 0; i < o.seed.length; i++){
|
|
7
|
-
sum += o.seed.charCodeAt(i);
|
|
8
|
-
}
|
|
9
|
-
seed = sum;
|
|
10
|
-
}
|
|
11
|
-
return ()=>{
|
|
12
|
-
const x = Math.sin(seed++) * 10000;
|
|
13
|
-
return x - Math.floor(x);
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
//# sourceMappingURL=random.js.map
|
package/lib/maths/random.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/maths/random.ts"],"sourcesContent":["/// javascript pseudo random\nexport function createRandom(o: { seed?: string | number } = {}) {\n let seed = typeof o.seed === 'string' ? 0 : o.seed ?? 0;\n if (typeof o.seed === 'string') {\n let sum = 0;\n for (let i = 0; i < o.seed.length; i++) {\n sum += o.seed.charCodeAt(i);\n }\n seed = sum;\n }\n\n return () => {\n const x = Math.sin(seed++) * 10000;\n return x - Math.floor(x);\n };\n}\n"],"names":["createRandom","o","seed","sum","i","length","charCodeAt","x","Math","sin","floor"],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,SAASA,aAAaC,IAAgC,CAAC,CAAC;IAC7D,IAAIC,OAAO,OAAOD,EAAEC,IAAI,KAAK,WAAW,IAAID,EAAEC,IAAI,IAAI;IACtD,IAAI,OAAOD,EAAEC,IAAI,KAAK,UAAU;QAC9B,IAAIC,MAAM;QACV,IAAK,IAAIC,IAAI,GAAGA,IAAIH,EAAEC,IAAI,CAACG,MAAM,EAAED,IAAK;YACtCD,OAAOF,EAAEC,IAAI,CAACI,UAAU,CAACF;QAC3B;QACAF,OAAOC;IACT;IAEA,OAAO;QACL,MAAMI,IAAIC,KAAKC,GAAG,CAACP,UAAU;QAC7B,OAAOK,IAAIC,KAAKE,KAAK,CAACH;IACxB;AACF"}
|
package/lib/modules/isModule.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/modules/isModule.ts"],"sourcesContent":["/**\n * Check is ESM Module\n */\nexport function isModule(o: any): o is Module {\n return o && o[Symbol.toStringTag] === 'Module';\n}\n\nexport interface Module {\n [Symbol.toStringTag]: 'Module';\n default?: any;\n\n [k: string | symbol]: any;\n}\n"],"names":["isModule","o","Symbol","toStringTag"],"mappings":"AAAA;;CAEC,GACD,OAAO,SAASA,SAASC,CAAM;IAC7B,OAAOA,KAAKA,CAAC,CAACC,OAAOC,WAAW,CAAC,KAAK;AACxC"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
// https://regex101.com/r/eMcXQ9/1
|
|
2
|
-
const regModuleId = /^(?<n>(?:@(?<org>[a-z0-9-~][a-z0-9-._~]*)\/)?(?<pkg>[a-z0-9-~][a-z0-9-._~]*))(?:@(?<v>[-a-z0-9><=_.^~]+))?(?<p>\/[^\r\n]*)?$/;
|
|
3
|
-
/**
|
|
4
|
-
* Parse NPM module id
|
|
5
|
-
*
|
|
6
|
-
* @example
|
|
7
|
-
* parseModuleId('@wener/reaction@latest/index.js')
|
|
8
|
-
* // { id: '@wener/reaction@latest', name: '@wener/reaction', version: 'latest', range: 'latest', pkg: 'reaction', path: '/index.js', scoped: true, org: 'wener' }
|
|
9
|
-
*/ export function parseModuleId(s) {
|
|
10
|
-
const groups = s.match(regModuleId)?.groups;
|
|
11
|
-
if (!groups) {
|
|
12
|
-
return undefined;
|
|
13
|
-
}
|
|
14
|
-
const { n: name, v: version, p: path, org, pkg } = groups;
|
|
15
|
-
const scoped = Boolean(org);
|
|
16
|
-
const v = /^\d+\.\d+\.\d+/.test(version) ? version : undefined;
|
|
17
|
-
const range = version || 'latest';
|
|
18
|
-
const o = {
|
|
19
|
-
id: `${name}@${range}`,
|
|
20
|
-
name,
|
|
21
|
-
range,
|
|
22
|
-
scoped,
|
|
23
|
-
pkg,
|
|
24
|
-
org,
|
|
25
|
-
versioned: Boolean(version)
|
|
26
|
-
};
|
|
27
|
-
if (v) {
|
|
28
|
-
o.version = v;
|
|
29
|
-
}
|
|
30
|
-
if (path) {
|
|
31
|
-
o.path = path;
|
|
32
|
-
}
|
|
33
|
-
if (!o.scoped) {
|
|
34
|
-
delete o.org;
|
|
35
|
-
}
|
|
36
|
-
return o;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
//# sourceMappingURL=parseModuleId.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/modules/parseModuleId.ts"],"sourcesContent":["// https://regex101.com/r/eMcXQ9/1\nconst regModuleId =\n /^(?<n>(?:@(?<org>[a-z0-9-~][a-z0-9-._~]*)\\/)?(?<pkg>[a-z0-9-~][a-z0-9-._~]*))(?:@(?<v>[-a-z0-9><=_.^~]+))?(?<p>\\/[^\\r\\n]*)?$/;\n\nexport type ParsedModuleId = {\n id: string; // name@version\n name: string; // @org/pkg, pkg\n version?: string; // 1.1.1\n range: string; // version, tag, range\n pkg: string;\n path?: string;\n org?: string;\n versioned: boolean; // is module id contain a version specifier\n} & (\n | { scoped: false }\n | {\n scoped: true;\n org: string;\n }\n);\n\n/**\n * Parse NPM module id\n *\n * @example\n * parseModuleId('@wener/reaction@latest/index.js')\n * // { id: '@wener/reaction@latest', name: '@wener/reaction', version: 'latest', range: 'latest', pkg: 'reaction', path: '/index.js', scoped: true, org: 'wener' }\n */\nexport function parseModuleId(s: string): ParsedModuleId | undefined {\n const groups = s.match(regModuleId)?.groups;\n if (!groups) {\n return undefined;\n }\n const { n: name, v: version, p: path, org, pkg } = groups;\n const scoped = Boolean(org);\n const v = /^\\d+\\.\\d+\\.\\d+/.test(version) ? version : undefined;\n const range = version || 'latest';\n const o: ParsedModuleId = {\n id: `${name}@${range}`,\n name,\n range,\n scoped,\n pkg,\n org,\n versioned: Boolean(version),\n };\n if (v) {\n o.version = v;\n }\n if (path) {\n o.path = path;\n }\n if (!o.scoped) {\n delete o.org;\n }\n return o;\n}\n"],"names":["regModuleId","parseModuleId","s","groups","match","undefined","n","name","v","version","p","path","org","pkg","scoped","Boolean","test","range","o","id","versioned"],"mappings":"AAAA,kCAAkC;AAClC,MAAMA,cACJ;AAmBF;;;;;;CAMC,GACD,OAAO,SAASC,cAAcC,CAAS;IACrC,MAAMC,SAASD,EAAEE,KAAK,CAACJ,cAAcG;IACrC,IAAI,CAACA,QAAQ;QACX,OAAOE;IACT;IACA,MAAM,EAAEC,GAAGC,IAAI,EAAEC,GAAGC,OAAO,EAAEC,GAAGC,IAAI,EAAEC,GAAG,EAAEC,GAAG,EAAE,GAAGV;IACnD,MAAMW,SAASC,QAAQH;IACvB,MAAMJ,IAAI,iBAAiBQ,IAAI,CAACP,WAAWA,UAAUJ;IACrD,MAAMY,QAAQR,WAAW;IACzB,MAAMS,IAAoB;QACxBC,IAAI,CAAC,EAAEZ,KAAK,CAAC,EAAEU,MAAM,CAAC;QACtBV;QACAU;QACAH;QACAD;QACAD;QACAQ,WAAWL,QAAQN;IACrB;IACA,IAAID,GAAG;QACLU,EAAET,OAAO,GAAGD;IACd;IACA,IAAIG,MAAM;QACRO,EAAEP,IAAI,GAAGA;IACX;IACA,IAAI,CAACO,EAAEJ,MAAM,EAAE;QACb,OAAOI,EAAEN,GAAG;IACd;IACA,OAAOM;AACT"}
|
package/lib/objects/get.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { parseObjectPath } from './parseObjectPath.js';
|
|
2
|
-
/**
|
|
3
|
-
* get by path
|
|
4
|
-
*
|
|
5
|
-
* {@link https://github.com/developit/dlv dlv}
|
|
6
|
-
*/ export function get(obj, key, def) {
|
|
7
|
-
const undef = undefined;
|
|
8
|
-
const path = parseObjectPath(key);
|
|
9
|
-
let out = obj;
|
|
10
|
-
for (const i of path){
|
|
11
|
-
out = out ? out[i] : undef;
|
|
12
|
-
}
|
|
13
|
-
return out === undef ? def : out;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=get.js.map
|
package/lib/objects/get.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/objects/get.ts"],"sourcesContent":["import type { ObjectKey } from './parseObjectPath';\nimport { parseObjectPath } from './parseObjectPath';\n\n/**\n * get by path\n *\n * {@link https://github.com/developit/dlv dlv}\n */\nexport function get<O extends object, P extends ObjectKey, OrElse extends unknown>(\n obj: O,\n key: P | P[],\n def?: OrElse,\n): ResolveObjectPathType<O, P, OrElse> {\n const undef = undefined;\n const path = parseObjectPath(key);\n let out: any = obj;\n for (const i of path) {\n out = out ? out[i] : undef;\n }\n return out === undef ? def : out;\n}\n\n/**\n * It tries to resolve the path of the given object, otherwise it will return OrElse\n *\n * {@link https://github.com/Pouja/typescript-deep-path-safe typescript-deep-path-safe}\n */\nexport type ResolveObjectPathType<\n ObjectType,\n Path extends string | symbol | number,\n OrElse,\n> = Path extends keyof ObjectType\n ? ObjectType[Path]\n : Path extends `${infer LeftSide}.${infer RightSide}`\n ? LeftSide extends keyof ObjectType\n ? ResolveObjectPathType<ObjectType[LeftSide], RightSide, OrElse>\n : Path extends `${infer LeftSide}[${number}].${infer RightSide}`\n ? LeftSide extends keyof ObjectType\n ? ObjectType[LeftSide] extends Array<infer U>\n ? ResolveObjectPathType<U, RightSide, OrElse>\n : OrElse\n : OrElse\n : OrElse\n : Path extends `${infer LeftSide}[${number}]`\n ? LeftSide extends keyof ObjectType\n ? ObjectType[LeftSide] extends Array<infer U>\n ? U\n : OrElse\n : OrElse\n : OrElse;\n"],"names":["parseObjectPath","get","obj","key","def","undef","undefined","path","out","i"],"mappings":"AACA,SAASA,eAAe,QAAQ,oBAAoB;AAEpD;;;;CAIC,GACD,OAAO,SAASC,IACdC,GAAM,EACNC,GAAY,EACZC,GAAY;IAEZ,MAAMC,QAAQC;IACd,MAAMC,OAAOP,gBAAgBG;IAC7B,IAAIK,MAAWN;IACf,KAAK,MAAMO,KAAKF,KAAM;QACpBC,MAAMA,MAAMA,GAAG,CAACC,EAAE,GAAGJ;IACvB;IACA,OAAOG,QAAQH,QAAQD,MAAMI;AAC/B"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { expectTypeOf, test } from 'vitest';
|
|
2
|
-
import { get } from './get.js';
|
|
3
|
-
test('get typing', ()=>{
|
|
4
|
-
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
5
|
-
const obj = {};
|
|
6
|
-
expectTypeOf(get(obj, 'nested.a', null)).toMatchTypeOf();
|
|
7
|
-
expectTypeOf(get(obj, 'normal', null)).toMatchTypeOf();
|
|
8
|
-
expectTypeOf(get(obj, 'nested.a')).toMatchTypeOf();
|
|
9
|
-
expectTypeOf(get(obj, 'nested.b.c')).toMatchTypeOf();
|
|
10
|
-
expectTypeOf(get(obj, 'arr')).toMatchTypeOf();
|
|
11
|
-
expectTypeOf(get(obj, 'arr[13]')).toMatchTypeOf();
|
|
12
|
-
// @ts-ignore
|
|
13
|
-
expectTypeOf(get(obj, 'arr.13')).toMatchTypeOf();
|
|
14
|
-
expectTypeOf(get(obj, 'nestedArr[3].other')).toMatchTypeOf();
|
|
15
|
-
// @ts-ignore
|
|
16
|
-
expectTypeOf(get(obj, 'deep.deep')).toMatchTypeOf();
|
|
17
|
-
expectTypeOf(get(obj, 'deep.arr[333]')).toMatchTypeOf();
|
|
18
|
-
expectTypeOf(get(obj, 'deep.arr[333].length')).toMatchTypeOf();
|
|
19
|
-
// @ts-ignore
|
|
20
|
-
expectTypeOf(get(obj, 'nested["b"]["c"]')).toMatchTypeOf();
|
|
21
|
-
// @ts-ignore
|
|
22
|
-
expectTypeOf(get(obj, '')).toMatchTypeOf();
|
|
23
|
-
expectTypeOf(get(obj, '', 3)).toMatchTypeOf();
|
|
24
|
-
// @ts-ignore
|
|
25
|
-
expectTypeOf(get(obj, 'nested.asdfasdf')).toMatchTypeOf();
|
|
26
|
-
expectTypeOf(get(obj, 'deeplvl1[1].deeplvl2.deeplvl3[88].deeplvl4.value')).toMatchTypeOf();
|
|
27
|
-
// @ts-ignore
|
|
28
|
-
expectTypeOf(get(obj, 'deeplvl1[1].deeplvl2.deeplvl1[88].deeplvl4.value')).toMatchTypeOf();
|
|
29
|
-
expectTypeOf(get(obj, 'deeplvl1[1].deeplvl2.deeplvl1[88].deeplvl4.value', obj)).toMatchTypeOf();
|
|
30
|
-
expectTypeOf(get(obj, 'nested["dd"]', '')).toMatchTypeOf();
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
//# sourceMappingURL=get.test-d.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/objects/get.test-d.ts"],"sourcesContent":["import { expectTypeOf, test } from 'vitest';\nimport { get } from './get';\n\ninterface TestClass {\n normal: string;\n nested: {\n a: number;\n b: {\n c: boolean;\n };\n };\n arr: number[];\n nestedArr: {\n sum: number;\n other: null;\n }[];\n deep: {\n arr: string[];\n };\n deeplvl1: {\n deeplvl2: {\n deeplvl3: {\n deeplvl4: {\n value: RegExp;\n };\n }[];\n };\n }[];\n}\n\ntest('get typing', () => {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const obj = {} as TestClass;\n expectTypeOf(get(obj, 'nested.a', null)).toMatchTypeOf<number>();\n expectTypeOf(get(obj, 'normal', null)).toMatchTypeOf<string>();\n expectTypeOf(get(obj, 'nested.a')).toMatchTypeOf<number>();\n expectTypeOf(get(obj, 'nested.b.c')).toMatchTypeOf<boolean>();\n expectTypeOf(get(obj, 'arr')).toMatchTypeOf<number[]>();\n expectTypeOf(get(obj, 'arr[13]')).toMatchTypeOf<number>();\n // @ts-ignore\n expectTypeOf(get(obj, 'arr.13')).toMatchTypeOf<number>();\n expectTypeOf(get(obj, 'nestedArr[3].other')).toMatchTypeOf<null>();\n // @ts-ignore\n expectTypeOf(get(obj, 'deep.deep')).toMatchTypeOf<string[]>();\n expectTypeOf(get(obj, 'deep.arr[333]')).toMatchTypeOf<string>();\n expectTypeOf(get(obj, 'deep.arr[333].length')).toMatchTypeOf<number>();\n // @ts-ignore\n expectTypeOf(get(obj, 'nested[\"b\"][\"c\"]')).toMatchTypeOf<boolean>();\n // @ts-ignore\n expectTypeOf(get(obj, '')).toMatchTypeOf<never>();\n expectTypeOf(get(obj, '', 3)).toMatchTypeOf<number>();\n // @ts-ignore\n expectTypeOf(get(obj, 'nested.asdfasdf')).toMatchTypeOf<never>();\n expectTypeOf(get(obj, 'deeplvl1[1].deeplvl2.deeplvl3[88].deeplvl4.value')).toMatchTypeOf<RegExp>();\n // @ts-ignore\n expectTypeOf(get(obj, 'deeplvl1[1].deeplvl2.deeplvl1[88].deeplvl4.value')).toMatchTypeOf<never>();\n expectTypeOf(get(obj, 'deeplvl1[1].deeplvl2.deeplvl1[88].deeplvl4.value', obj)).toMatchTypeOf<TestClass>();\n expectTypeOf(get(obj, 'nested[\"dd\"]', '')).toMatchTypeOf<string>();\n});\n"],"names":["expectTypeOf","test","get","obj","toMatchTypeOf"],"mappings":"AAAA,SAASA,YAAY,EAAEC,IAAI,QAAQ,SAAS;AAC5C,SAASC,GAAG,QAAQ,QAAQ;AA6B5BD,KAAK,cAAc;IACjB,yEAAyE;IACzE,MAAME,MAAM,CAAC;IACbH,aAAaE,IAAIC,KAAK,YAAY,OAAOC,aAAa;IACtDJ,aAAaE,IAAIC,KAAK,UAAU,OAAOC,aAAa;IACpDJ,aAAaE,IAAIC,KAAK,aAAaC,aAAa;IAChDJ,aAAaE,IAAIC,KAAK,eAAeC,aAAa;IAClDJ,aAAaE,IAAIC,KAAK,QAAQC,aAAa;IAC3CJ,aAAaE,IAAIC,KAAK,YAAYC,aAAa;IAC/C,aAAa;IACbJ,aAAaE,IAAIC,KAAK,WAAWC,aAAa;IAC9CJ,aAAaE,IAAIC,KAAK,uBAAuBC,aAAa;IAC1D,aAAa;IACbJ,aAAaE,IAAIC,KAAK,cAAcC,aAAa;IACjDJ,aAAaE,IAAIC,KAAK,kBAAkBC,aAAa;IACrDJ,aAAaE,IAAIC,KAAK,yBAAyBC,aAAa;IAC5D,aAAa;IACbJ,aAAaE,IAAIC,KAAK,qBAAqBC,aAAa;IACxD,aAAa;IACbJ,aAAaE,IAAIC,KAAK,KAAKC,aAAa;IACxCJ,aAAaE,IAAIC,KAAK,IAAI,IAAIC,aAAa;IAC3C,aAAa;IACbJ,aAAaE,IAAIC,KAAK,oBAAoBC,aAAa;IACvDJ,aAAaE,IAAIC,KAAK,qDAAqDC,aAAa;IACxF,aAAa;IACbJ,aAAaE,IAAIC,KAAK,qDAAqDC,aAAa;IACxFJ,aAAaE,IAAIC,KAAK,oDAAoDA,MAAMC,aAAa;IAC7FJ,aAAaE,IAAIC,KAAK,gBAAgB,KAAKC,aAAa;AAC1D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/objects/merge/index.ts"],"sourcesContent":["export { merge, type MergeOptions } from './merge';\n"],"names":["merge"],"mappings":"AAAA,SAASA,KAAK,QAA2B,UAAU"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
// https://github.com/TehShrike/is-mergeable-object/blob/master/index.js
|
|
2
|
-
export function isMergeableObject(value) {
|
|
3
|
-
return isNonNullObject(value) && !isSpecial(value);
|
|
4
|
-
}
|
|
5
|
-
function isNonNullObject(value) {
|
|
6
|
-
return !!value && typeof value === 'object';
|
|
7
|
-
}
|
|
8
|
-
function isSpecial(value) {
|
|
9
|
-
var stringValue = Object.prototype.toString.call(value);
|
|
10
|
-
return stringValue === '[object RegExp]' || stringValue === '[object Date]' || isReactElement(value);
|
|
11
|
-
}
|
|
12
|
-
// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25
|
|
13
|
-
var canUseSymbol = typeof Symbol === 'function' && Symbol.for;
|
|
14
|
-
var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;
|
|
15
|
-
function isReactElement(value) {
|
|
16
|
-
return value.$$typeof === REACT_ELEMENT_TYPE;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
//# sourceMappingURL=isMergeableObject.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/objects/merge/isMergeableObject.ts"],"sourcesContent":["// https://github.com/TehShrike/is-mergeable-object/blob/master/index.js\n\nexport function isMergeableObject(value: any) {\n return isNonNullObject(value) && !isSpecial(value);\n}\n\nfunction isNonNullObject(value: any) {\n return !!value && typeof value === 'object';\n}\n\nfunction isSpecial(value: any) {\n var stringValue = Object.prototype.toString.call(value);\n\n return stringValue === '[object RegExp]' || stringValue === '[object Date]' || isReactElement(value);\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value: any) {\n return value.$$typeof === REACT_ELEMENT_TYPE;\n}\n"],"names":["isMergeableObject","value","isNonNullObject","isSpecial","stringValue","Object","prototype","toString","call","isReactElement","canUseSymbol","Symbol","for","REACT_ELEMENT_TYPE","$$typeof"],"mappings":"AAAA,wEAAwE;AAExE,OAAO,SAASA,kBAAkBC,KAAU;IAC1C,OAAOC,gBAAgBD,UAAU,CAACE,UAAUF;AAC9C;AAEA,SAASC,gBAAgBD,KAAU;IACjC,OAAO,CAAC,CAACA,SAAS,OAAOA,UAAU;AACrC;AAEA,SAASE,UAAUF,KAAU;IAC3B,IAAIG,cAAcC,OAAOC,SAAS,CAACC,QAAQ,CAACC,IAAI,CAACP;IAEjD,OAAOG,gBAAgB,qBAAqBA,gBAAgB,mBAAmBK,eAAeR;AAChG;AAEA,6IAA6I;AAC7I,IAAIS,eAAe,OAAOC,WAAW,cAAcA,OAAOC,GAAG;AAC7D,IAAIC,qBAAqBH,eAAeC,OAAOC,GAAG,CAAC,mBAAmB;AAEtE,SAASH,eAAeR,KAAU;IAChC,OAAOA,MAAMa,QAAQ,KAAKD;AAC5B"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import { isMergeableObject as defaultIsMergeableObject } from './isMergeableObject.js';
|
|
2
|
-
function emptyTarget(val) {
|
|
3
|
-
return Array.isArray(val) ? [] : {};
|
|
4
|
-
}
|
|
5
|
-
function cloneUnlessOtherwiseSpecified(value, options) {
|
|
6
|
-
return options.clone !== false && options.isMergeableObject(value) ? merge(emptyTarget(value), value, options) : value;
|
|
7
|
-
}
|
|
8
|
-
function defaultArrayMerge(target, source, options) {
|
|
9
|
-
return target.concat(source).map(function(element) {
|
|
10
|
-
return cloneUnlessOtherwiseSpecified(element, options);
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
function getMergeFunction(key, options) {
|
|
14
|
-
if (!options.customMerge) {
|
|
15
|
-
return merge;
|
|
16
|
-
}
|
|
17
|
-
var customMerge = options.customMerge(key);
|
|
18
|
-
return typeof customMerge === 'function' ? customMerge : merge;
|
|
19
|
-
}
|
|
20
|
-
function getEnumerableOwnPropertySymbols(target) {
|
|
21
|
-
return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol) {
|
|
22
|
-
return Object.propertyIsEnumerable.call(target, symbol);
|
|
23
|
-
}) : [];
|
|
24
|
-
}
|
|
25
|
-
function getKeys(target) {
|
|
26
|
-
return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));
|
|
27
|
-
}
|
|
28
|
-
function propertyIsOnObject(object, property) {
|
|
29
|
-
try {
|
|
30
|
-
return property in object;
|
|
31
|
-
} catch (_) {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
// Protects from prototype poisoning and unexpected merging up the prototype chain.
|
|
36
|
-
function propertyIsUnsafe(target, key) {
|
|
37
|
-
return propertyIsOnObject(target, key) && // Properties are safe to merge if they don't exist in the target yet,
|
|
38
|
-
!(Object.hasOwnProperty.call(target, key) && // unsafe if they exist up the prototype chain,
|
|
39
|
-
Object.propertyIsEnumerable.call(target, key)); // and also unsafe if they're nonenumerable.
|
|
40
|
-
}
|
|
41
|
-
function mergeObject(target, source, options) {
|
|
42
|
-
const destination = {};
|
|
43
|
-
if (options.isMergeableObject(target)) {
|
|
44
|
-
getKeys(target).forEach((key)=>{
|
|
45
|
-
destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
getKeys(source).forEach((key)=>{
|
|
49
|
-
if (propertyIsUnsafe(target, key)) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {
|
|
53
|
-
destination[key] = getMergeFunction(key, options)(target[key], source[key], options);
|
|
54
|
-
} else {
|
|
55
|
-
destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
return destination;
|
|
59
|
-
}
|
|
60
|
-
export function merge(target, source, opts) {
|
|
61
|
-
const options = {
|
|
62
|
-
arrayMerge: defaultArrayMerge,
|
|
63
|
-
isMergeableObject: defaultIsMergeableObject,
|
|
64
|
-
...opts,
|
|
65
|
-
// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()
|
|
66
|
-
// implementations can use it. The caller may not replace it.
|
|
67
|
-
cloneUnlessOtherwiseSpecified
|
|
68
|
-
};
|
|
69
|
-
let sourceIsArray = Array.isArray(source);
|
|
70
|
-
let targetIsArray = Array.isArray(target);
|
|
71
|
-
let sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;
|
|
72
|
-
if (!sourceAndTargetTypesMatch) {
|
|
73
|
-
return cloneUnlessOtherwiseSpecified(source, options);
|
|
74
|
-
} else if (sourceIsArray) {
|
|
75
|
-
return options.arrayMerge(target, source, options);
|
|
76
|
-
} else {
|
|
77
|
-
return mergeObject(target, source, options);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
merge.all = function deepmergeAll(array, options) {
|
|
81
|
-
if (!Array.isArray(array)) {
|
|
82
|
-
throw new Error('first argument should be an array');
|
|
83
|
-
}
|
|
84
|
-
return array.reduce(function(prev, next) {
|
|
85
|
-
return merge(prev, next, options);
|
|
86
|
-
}, {});
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
//# sourceMappingURL=merge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/objects/merge/merge.ts"],"sourcesContent":["// https://github.com/TehShrike/deepmerge/blob/master/index.js\nimport { isMergeableObject as defaultIsMergeableObject } from './isMergeableObject';\n\nfunction emptyTarget(val: any) {\n return Array.isArray(val) ? [] : {};\n}\n\nfunction cloneUnlessOtherwiseSpecified(value: any, options: Options) {\n return options.clone !== false && options.isMergeableObject(value)\n ? merge(emptyTarget(value), value, options)\n : value;\n}\n\nfunction defaultArrayMerge(target: any, source: any, options: Options) {\n return target.concat(source).map(function (element: any) {\n return cloneUnlessOtherwiseSpecified(element, options);\n });\n}\n\ntype Merger = (x: any, y: any, options: Options) => any;\n\nfunction getMergeFunction(key: any, options: Options): Merger {\n if (!options.customMerge) {\n return merge;\n }\n var customMerge = options.customMerge(key);\n return typeof customMerge === 'function' ? customMerge : merge;\n}\n\nfunction getEnumerableOwnPropertySymbols(target: any): any {\n return Object.getOwnPropertySymbols\n ? Object.getOwnPropertySymbols(target).filter(function (symbol) {\n return Object.propertyIsEnumerable.call(target, symbol);\n })\n : [];\n}\n\nfunction getKeys(target: any) {\n return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));\n}\n\nfunction propertyIsOnObject(object: any, property: any) {\n try {\n return property in object;\n } catch (_) {\n return false;\n }\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target: any, key: string) {\n return (\n propertyIsOnObject(target, key) && // Properties are safe to merge if they don't exist in the target yet,\n !(\n Object.hasOwnProperty.call(target, key) && // unsafe if they exist up the prototype chain,\n Object.propertyIsEnumerable.call(target, key)\n )\n ); // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target: any, source: any, options: Options) {\n const destination: Record<string, any> = {};\n if (options.isMergeableObject(target)) {\n getKeys(target).forEach((key) => {\n destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n });\n }\n getKeys(source).forEach((key) => {\n if (propertyIsUnsafe(target, key)) {\n return;\n }\n\n if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n destination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n } else {\n destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n }\n });\n return destination;\n}\n\nexport function merge<T1, T2>(x: Partial<T1>, y: Partial<T2>, options?: MergeOptions): T1 & T2;\nexport function merge<T>(x: Partial<T>, y: Partial<T>, options?: MergeOptions): T;\n\nexport function merge(target: any, source: any, opts?: any): any {\n const options = {\n arrayMerge: defaultArrayMerge,\n isMergeableObject: defaultIsMergeableObject,\n ...opts,\n // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n // implementations can use it. The caller may not replace it.\n cloneUnlessOtherwiseSpecified,\n } as Options & ArrayMergeOptions;\n\n let sourceIsArray = Array.isArray(source);\n let targetIsArray = Array.isArray(target);\n let sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n if (!sourceAndTargetTypesMatch) {\n return cloneUnlessOtherwiseSpecified(source, options);\n } else if (sourceIsArray) {\n return options.arrayMerge(target, source, options);\n } else {\n return mergeObject(target, source, options);\n }\n}\n\nmerge.all = function deepmergeAll(array: any[], options?: MergeOptions) {\n if (!Array.isArray(array)) {\n throw new Error('first argument should be an array');\n }\n\n return array.reduce(function (prev, next) {\n return merge(prev, next, options);\n }, {});\n};\n\nexport interface MergeOptions {\n arrayMerge?(target: any[], source: any[], options?: ArrayMergeOptions): any[];\n\n clone?: boolean;\n customMerge?: (key: string, options?: MergeOptions) => ((x: any, y: any) => any) | undefined;\n\n isMergeableObject?(value: object): boolean;\n}\n\ninterface Options {\n arrayMerge(target: any[], source: any[], options?: ArrayMergeOptions): any[];\n\n clone: boolean;\n customMerge: (key: string, options?: MergeOptions) => ((x: any, y: any) => any) | undefined;\n\n isMergeableObject(value: object): boolean;\n}\n\nexport interface ArrayMergeOptions {\n isMergeableObject(value: object): boolean;\n\n cloneUnlessOtherwiseSpecified(value: object, options?: MergeOptions): object;\n}\n"],"names":["isMergeableObject","defaultIsMergeableObject","emptyTarget","val","Array","isArray","cloneUnlessOtherwiseSpecified","value","options","clone","merge","defaultArrayMerge","target","source","concat","map","element","getMergeFunction","key","customMerge","getEnumerableOwnPropertySymbols","Object","getOwnPropertySymbols","filter","symbol","propertyIsEnumerable","call","getKeys","keys","propertyIsOnObject","object","property","_","propertyIsUnsafe","hasOwnProperty","mergeObject","destination","forEach","opts","arrayMerge","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","all","deepmergeAll","array","Error","reduce","prev","next"],"mappings":"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"}
|