@wener/utils 1.1.27 → 1.1.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/arrays/MaybeArray.js +36 -25
- package/lib/arrays/MaybeArray.js.map +1 -1
- package/lib/arrays/arrayFromAsync.js +5 -7
- package/lib/arrays/arrayFromAsync.js.map +1 -1
- package/lib/asyncs/AsyncInterval.js +11 -12
- package/lib/asyncs/AsyncInterval.js.map +1 -1
- package/lib/asyncs/MaybePromise.js +3 -0
- package/lib/asyncs/MaybePromise.js.map +1 -0
- package/lib/asyncs/createAsyncIterator.js +37 -35
- package/lib/asyncs/createAsyncIterator.js.map +1 -1
- package/lib/asyncs/createLazyPromise.js +59 -60
- package/lib/asyncs/createLazyPromise.js.map +1 -1
- package/lib/asyncs/firstOfAsyncIterator.js +7 -9
- package/lib/asyncs/firstOfAsyncIterator.js.map +1 -1
- package/lib/asyncs/generatorOfStream.js +16 -0
- package/lib/asyncs/generatorOfStream.js.map +1 -0
- package/lib/asyncs/isIterator.js +3 -4
- package/lib/asyncs/isIterator.js.map +1 -1
- package/lib/asyncs/isPromise.js +3 -4
- package/lib/asyncs/isPromise.js.map +1 -1
- package/lib/asyncs/isThenable.js +6 -0
- package/lib/asyncs/isThenable.js.map +1 -0
- package/lib/asyncs/nextOfAsyncIterator.js +20 -14
- package/lib/asyncs/nextOfAsyncIterator.js.map +1 -1
- package/lib/asyncs/promiseOfCallback.js +17 -0
- package/lib/asyncs/promiseOfCallback.js.map +1 -0
- package/lib/asyncs/sleep.js +2 -3
- package/lib/asyncs/sleep.js.map +1 -1
- package/lib/asyncs/timeout.js +22 -26
- package/lib/asyncs/timeout.js.map +1 -1
- package/lib/browsers/copy.js +47 -45
- package/lib/browsers/copy.js.map +1 -1
- package/lib/browsers/download.js +38 -27
- package/lib/browsers/download.js.map +1 -1
- package/lib/browsers/getFileFromDataTransfer.js +41 -28
- package/lib/browsers/getFileFromDataTransfer.js.map +1 -1
- package/lib/browsers/loaders.js +43 -43
- package/lib/browsers/loaders.js.map +1 -1
- package/lib/crypto/base.js +5 -4
- package/lib/crypto/base.js.map +1 -1
- package/lib/crypto/getNodeCrypto.js +14 -13
- package/lib/crypto/getNodeCrypto.js.map +1 -1
- package/lib/crypto/getRandomValues.js +22 -26
- package/lib/crypto/getRandomValues.js.map +1 -1
- package/lib/crypto/hashing.js +42 -50
- package/lib/crypto/hashing.js.map +1 -1
- package/lib/crypto/md5.bench.js +21 -0
- package/lib/crypto/md5.bench.js.map +1 -0
- package/lib/crypto/md5.d.js +3 -0
- package/lib/crypto/md5.d.js.map +1 -0
- package/lib/crypto/md5.js +119 -121
- package/lib/crypto/md5.js.map +1 -1
- package/lib/crypto/pem/pem.js +32 -35
- package/lib/crypto/pem/pem.js.map +1 -1
- package/lib/crypto/randomUUID.js +12 -11
- package/lib/crypto/randomUUID.js.map +1 -1
- package/lib/crypto/ulid.js +123 -112
- package/lib/crypto/ulid.js.map +1 -1
- package/lib/errors/Errors.js +167 -149
- package/lib/errors/Errors.js.map +1 -1
- package/lib/fetch/createFetchWith.js +20 -23
- package/lib/fetch/createFetchWith.js.map +1 -1
- package/lib/fetch/createFetchWithLogging.js +20 -16
- package/lib/fetch/createFetchWithLogging.js.map +1 -1
- package/lib/fetch/createFetchWithRetry.js +61 -65
- package/lib/fetch/createFetchWithRetry.js.map +1 -1
- package/lib/fetch/dumpRequest.js +39 -42
- package/lib/fetch/dumpRequest.js.map +1 -1
- package/lib/fetch/dumpResponse.js +13 -20
- package/lib/fetch/dumpResponse.js.map +1 -1
- package/lib/fetch/index.js +7 -0
- package/lib/fetch/index.js.map +1 -0
- package/lib/fetch/types.js +3 -0
- package/lib/fetch/types.js.map +1 -0
- package/lib/http/HttpStatus.js +89 -80
- package/lib/http/HttpStatus.js.map +1 -1
- package/lib/i18n/createTranslate.js +48 -48
- package/lib/i18n/createTranslate.js.map +1 -1
- package/lib/index.js +28 -14
- package/lib/index.js.map +1 -1
- package/lib/io/AbstractEncoding.js +7 -0
- package/lib/io/AbstractEncoding.js.map +1 -0
- package/lib/io/ArrayBuffer.test-d.js +7 -0
- package/lib/io/ArrayBuffer.test-d.js.map +1 -0
- package/lib/io/ArrayBuffers.js +198 -172
- package/lib/io/ArrayBuffers.js.map +1 -1
- package/lib/io/Buffer.js +21 -20
- package/lib/io/Buffer.js.map +1 -1
- package/lib/io/base64.js +49 -48
- package/lib/io/base64.js.map +1 -1
- package/lib/io/isBuffer.js +7 -5
- package/lib/io/isBuffer.js.map +1 -1
- package/lib/io/isTransferable.js +23 -19
- package/lib/io/isTransferable.js.map +1 -1
- package/lib/isomorphics/getGlobalThis.js +17 -12
- package/lib/isomorphics/getGlobalThis.js.map +1 -1
- package/lib/isomorphics/structuredClone.js +71 -63
- package/lib/isomorphics/structuredClone.js.map +1 -1
- package/lib/langs/MaybeFunction.js +7 -7
- package/lib/langs/MaybeFunction.js.map +1 -1
- package/lib/langs/classOf.js +3 -4
- package/lib/langs/classOf.js.map +1 -1
- package/lib/langs/deepEqual.js +77 -85
- package/lib/langs/deepEqual.js.map +1 -1
- package/lib/langs/deepFreeze.js +17 -13
- package/lib/langs/deepFreeze.js.map +1 -1
- package/lib/langs/hashCode.ignored.js +112 -0
- package/lib/langs/hashCode.ignored.js.map +1 -0
- package/lib/langs/isClass.js +3 -4
- package/lib/langs/isClass.js.map +1 -1
- package/lib/langs/isDefined.js +3 -4
- package/lib/langs/isDefined.js.map +1 -1
- package/lib/langs/isEmptyObject.js +3 -5
- package/lib/langs/isEmptyObject.js.map +1 -1
- package/lib/langs/isFunction.js +5 -0
- package/lib/langs/isFunction.js.map +1 -0
- package/lib/langs/isPlainObject.js +7 -8
- package/lib/langs/isPlainObject.js.map +1 -1
- package/lib/langs/memoize.js +19 -21
- package/lib/langs/memoize.js.map +1 -1
- package/lib/langs/parseBoolean.js +26 -27
- package/lib/langs/parseBoolean.js.map +1 -1
- package/lib/langs/shallowClone.js +12 -12
- package/lib/langs/shallowClone.js.map +1 -1
- package/lib/langs/shallowEqual.js +21 -18
- package/lib/langs/shallowEqual.js.map +1 -1
- package/lib/libs/ms.js +123 -103
- package/lib/libs/ms.js.map +1 -1
- package/lib/logging/Logger.js +5 -0
- package/lib/logging/Logger.js.map +1 -0
- package/lib/logging/createChildLogger.js +12 -14
- package/lib/logging/createChildLogger.js.map +1 -1
- package/lib/logging/createLogger.js +59 -33
- package/lib/logging/createLogger.js.map +1 -1
- package/lib/logging/createNoopLogger.js +11 -12
- package/lib/logging/createNoopLogger.js.map +1 -1
- package/lib/logging/slog.js +143 -0
- package/lib/logging/slog.js.map +1 -0
- package/lib/maths/clamp.js +20 -20
- package/lib/maths/clamp.js.map +1 -1
- package/lib/maths/random.js +14 -15
- package/lib/maths/random.js.map +1 -1
- package/lib/modules/isModule.js +5 -4
- package/lib/modules/isModule.js.map +1 -1
- package/lib/modules/parseModuleId.js +36 -31
- package/lib/modules/parseModuleId.js.map +1 -1
- package/lib/objects/get.js +13 -11
- package/lib/objects/get.js.map +1 -1
- package/lib/objects/get.test-d.js +33 -0
- package/lib/objects/get.test-d.js.map +1 -0
- package/lib/objects/merge/index.js +3 -0
- package/lib/objects/merge/index.js.map +1 -0
- package/lib/objects/merge/isMergeableObject.js +11 -10
- package/lib/objects/merge/isMergeableObject.js.map +1 -1
- package/lib/objects/merge/merge.js +65 -66
- package/lib/objects/merge/merge.js.map +1 -1
- package/lib/objects/parseObjectPath.js +35 -23
- package/lib/objects/parseObjectPath.js.map +1 -1
- package/lib/objects/set.js +33 -34
- package/lib/objects/set.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/common/encoder.js +93 -67
- package/lib/schema/typebox/gen/codegen/common/encoder.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/common/formatter.js +31 -8
- package/lib/schema/typebox/gen/codegen/common/formatter.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/common/index.js +5 -0
- package/lib/schema/typebox/gen/codegen/common/index.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/common/jsdoc.js +109 -60
- package/lib/schema/typebox/gen/codegen/common/jsdoc.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/compiler.js +359 -317
- package/lib/schema/typebox/gen/codegen/expression/compiler.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/errors.js +255 -233
- package/lib/schema/typebox/gen/codegen/expression/errors.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/evaluator.js +249 -236
- package/lib/schema/typebox/gen/codegen/expression/evaluator.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/expression.js +382 -198
- package/lib/schema/typebox/gen/codegen/expression/expression.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/index.js +6 -0
- package/lib/schema/typebox/gen/codegen/expression/index.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/index.js +5 -19
- package/lib/schema/typebox/gen/codegen/index.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/index.js +16 -0
- package/lib/schema/typebox/gen/codegen/model/index.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-arktype.js +236 -260
- package/lib/schema/typebox/gen/codegen/model/model-to-arktype.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-expression.js +348 -352
- package/lib/schema/typebox/gen/codegen/model/model-to-expression.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-grpc.js +214 -242
- package/lib/schema/typebox/gen/codegen/model/model-to-grpc.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-io-ts.js +229 -292
- package/lib/schema/typebox/gen/codegen/model/model-to-io-ts.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-javascript.js +42 -15
- package/lib/schema/typebox/gen/codegen/model/model-to-javascript.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-json-schema.js +168 -168
- package/lib/schema/typebox/gen/codegen/model/model-to-json-schema.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-typebox.js +31 -8
- package/lib/schema/typebox/gen/codegen/model/model-to-typebox.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-typescript.js +156 -190
- package/lib/schema/typebox/gen/codegen/model/model-to-typescript.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-valibot.js +215 -249
- package/lib/schema/typebox/gen/codegen/model/model-to-valibot.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-value.js +37 -13
- package/lib/schema/typebox/gen/codegen/model/model-to-value.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-yrel.js +201 -242
- package/lib/schema/typebox/gen/codegen/model/model-to-yrel.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-yup.js +200 -245
- package/lib/schema/typebox/gen/codegen/model/model-to-yup.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-zod.js +223 -268
- package/lib/schema/typebox/gen/codegen/model/model-to-zod.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model.js +27 -0
- package/lib/schema/typebox/gen/codegen/model/model.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/typescript/index.js +4 -0
- package/lib/schema/typebox/gen/codegen/typescript/index.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-model.js +43 -40
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-model.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-typebox.js +592 -616
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-typebox.js.map +1 -1
- package/lib/schema/typebox/gen/index.js +3 -3
- package/lib/schema/typebox/gen/index.js.map +1 -1
- package/lib/schema/typebox/index.js +3 -3
- package/lib/schema/typebox/index.js.map +1 -1
- package/lib/schema/typebox/typebox.js +18 -29
- package/lib/schema/typebox/typebox.js.map +1 -1
- package/lib/server.js +2 -1
- package/lib/server.js.map +1 -1
- package/lib/servers/crypto/md5.js +3 -5
- package/lib/servers/crypto/md5.js.map +1 -1
- package/lib/servers/fetch/createFetchWithProxy.js +2 -4
- package/lib/servers/fetch/createFetchWithProxy.js.map +1 -1
- package/lib/servers/fetch/createFetchWithProxyByNodeFetch.js +34 -34
- package/lib/servers/fetch/createFetchWithProxyByNodeFetch.js.map +1 -1
- package/lib/servers/fetch/createFetchWithProxyByUndici.js +57 -58
- package/lib/servers/fetch/createFetchWithProxyByUndici.js.map +1 -1
- package/lib/servers/getPackageDir.js +8 -10
- package/lib/servers/getPackageDir.js.map +1 -1
- package/lib/servers/jsdom.js +3 -2
- package/lib/servers/jsdom.js.map +1 -1
- package/lib/servers/node-fetch.js +4 -3
- package/lib/servers/node-fetch.js.map +1 -1
- package/lib/servers/polyfill/polyfillBrowser.js +17 -0
- package/lib/servers/polyfill/polyfillBrowser.js.map +1 -0
- package/lib/servers/polyfill/polyfillCrypto.js +8 -10
- package/lib/servers/polyfill/polyfillCrypto.js.map +1 -1
- package/lib/servers/polyfill/polyfillFetch.js +23 -22
- package/lib/servers/polyfill/polyfillFetch.js.map +1 -1
- package/lib/servers/polyfill/polyfillJsDom.js +59 -52
- package/lib/servers/polyfill/polyfillJsDom.js.map +1 -1
- package/lib/servers/polyfill/polyfillWebSocket.js +13 -13
- package/lib/servers/polyfill/polyfillWebSocket.js.map +1 -1
- package/lib/servers/ws.js +3 -2
- package/lib/servers/ws.js.map +1 -1
- package/lib/strings/camelCase.js +51 -49
- package/lib/strings/camelCase.js.map +1 -1
- package/lib/strings/formatBytes.js +41 -15
- package/lib/strings/formatBytes.js.map +1 -1
- package/lib/strings/renderTemplate.js +27 -20
- package/lib/strings/renderTemplate.js.map +1 -1
- package/lib/typedoc.js +4 -0
- package/lib/typedoc.js.map +1 -0
- package/lib/types/global.d.js +2 -0
- package/lib/types/global.d.js.map +1 -0
- package/lib/types/index.d.js +6 -0
- package/lib/types/index.d.js.map +1 -0
- package/lib/validations/asserts.js +14 -0
- package/lib/validations/asserts.js.map +1 -0
- package/lib/validations/isUUID.js +3 -4
- package/lib/validations/isUUID.js.map +1 -1
- package/lib/validations/parseTimestamp.js +25 -21
- package/lib/validations/parseTimestamp.js.map +1 -1
- package/package.json +3 -3
- package/dist/LICENSE.txt +0 -1
- package/dist/cjs/createFetchWith-qhRObsE4.js +0 -2
- package/dist/cjs/createFetchWith-qhRObsE4.js.map +0 -1
- package/dist/cjs/getGlobalThis-GhffAgiG.js +0 -2
- package/dist/cjs/getGlobalThis-GhffAgiG.js.map +0 -1
- package/dist/cjs/index.cjs +0 -21
- package/dist/cjs/index.cjs.map +0 -1
- package/dist/cjs/schema/typebox/gen/index.cjs +0 -118
- package/dist/cjs/schema/typebox/gen/index.cjs.map +0 -1
- package/dist/cjs/schema/typebox/index.cjs +0 -2
- package/dist/cjs/schema/typebox/index.cjs.map +0 -1
- package/dist/cjs/server.cjs +0 -2
- package/dist/cjs/server.cjs.map +0 -1
- package/dist/cjs/servers/jsdom.cjs +0 -2
- package/dist/cjs/servers/jsdom.cjs.map +0 -1
- package/dist/cjs/servers/node-fetch.cjs +0 -2
- package/dist/cjs/servers/node-fetch.cjs.map +0 -1
- package/dist/cjs/servers/ws.cjs +0 -2
- package/dist/cjs/servers/ws.cjs.map +0 -1
- package/dist/esm/createFetchWith-1q1S-Xro.js +0 -2
- package/dist/esm/createFetchWith-1q1S-Xro.js.map +0 -1
- package/dist/esm/getGlobalThis-A8F-nU7J.js +0 -2
- package/dist/esm/getGlobalThis-A8F-nU7J.js.map +0 -1
- package/dist/esm/index.js +0 -21
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/schema/typebox/gen.js +0 -118
- package/dist/esm/schema/typebox/gen.js.map +0 -1
- package/dist/esm/schema/typebox.js +0 -2
- package/dist/esm/schema/typebox.js.map +0 -1
- package/dist/esm/server.js +0 -2
- package/dist/esm/server.js.map +0 -1
- package/dist/esm/servers/jsdom.js +0 -2
- package/dist/esm/servers/jsdom.js.map +0 -1
- package/dist/esm/servers/node-fetch.js +0 -2
- package/dist/esm/servers/node-fetch.js.map +0 -1
- package/dist/esm/servers/ws.js +0 -2
- package/dist/esm/servers/ws.js.map +0 -1
- package/dist/system/createFetchWith-TjUle-dI.js +0 -2
- package/dist/system/createFetchWith-TjUle-dI.js.map +0 -1
- package/dist/system/getGlobalThis-X5ifUXDI.js +0 -2
- package/dist/system/getGlobalThis-X5ifUXDI.js.map +0 -1
- package/dist/system/index.js +0 -21
- package/dist/system/index.js.map +0 -1
- package/dist/system/schema/typebox/gen.js +0 -118
- package/dist/system/schema/typebox/gen.js.map +0 -1
- package/dist/system/schema/typebox.js +0 -2
- package/dist/system/schema/typebox.js.map +0 -1
- package/dist/system/server.js +0 -2
- package/dist/system/server.js.map +0 -1
- package/dist/system/servers/jsdom.js +0 -2
- package/dist/system/servers/jsdom.js.map +0 -1
- package/dist/system/servers/node-fetch.js +0 -2
- package/dist/system/servers/node-fetch.js.map +0 -1
- package/dist/system/servers/ws.js +0 -2
- package/dist/system/servers/ws.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
function clamp(value,
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
(
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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;
|
|
19
20
|
|
|
20
|
-
|
|
21
|
-
//# sourceMappingURL=clamp.js.map
|
|
21
|
+
//# sourceMappingURL=clamp.js.map
|
package/lib/maths/clamp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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;
|
|
8
10
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return x - Math.floor(x);
|
|
14
|
-
};
|
|
11
|
+
return ()=>{
|
|
12
|
+
const x = Math.sin(seed++) * 10000;
|
|
13
|
+
return x - Math.floor(x);
|
|
14
|
+
};
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
//# sourceMappingURL=random.js.map
|
|
17
|
+
//# sourceMappingURL=random.js.map
|
package/lib/maths/random.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Check is ESM Module
|
|
3
|
+
*/ export function isModule(o) {
|
|
4
|
+
return o && o[Symbol.toStringTag] === 'Module';
|
|
3
5
|
}
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=isModule.js.map
|
|
7
|
+
//# sourceMappingURL=isModule.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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,34 +1,39 @@
|
|
|
1
|
+
// https://regex101.com/r/eMcXQ9/1
|
|
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]*)?$/;
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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;
|
|
31
37
|
}
|
|
32
38
|
|
|
33
|
-
|
|
34
|
-
//# sourceMappingURL=parseModuleId.js.map
|
|
39
|
+
//# sourceMappingURL=parseModuleId.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { parseObjectPath } from './parseObjectPath.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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;
|
|
11
14
|
}
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
//# sourceMappingURL=get.js.map
|
|
16
|
+
//# sourceMappingURL=get.js.map
|
package/lib/objects/get.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
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,18 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
// https://github.com/TehShrike/is-mergeable-object/blob/master/index.js
|
|
2
|
+
export function isMergeableObject(value) {
|
|
3
|
+
return isNonNullObject(value) && !isSpecial(value);
|
|
3
4
|
}
|
|
4
5
|
function isNonNullObject(value) {
|
|
5
|
-
|
|
6
|
+
return !!value && typeof value === 'object';
|
|
6
7
|
}
|
|
7
8
|
function isSpecial(value) {
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
var stringValue = Object.prototype.toString.call(value);
|
|
10
|
+
return stringValue === '[object RegExp]' || stringValue === '[object Date]' || isReactElement(value);
|
|
10
11
|
}
|
|
11
|
-
|
|
12
|
-
var
|
|
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;
|
|
13
15
|
function isReactElement(value) {
|
|
14
|
-
|
|
16
|
+
return value.$$typeof === REACT_ELEMENT_TYPE;
|
|
15
17
|
}
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
//# sourceMappingURL=isMergeableObject.js.map
|
|
19
|
+
//# sourceMappingURL=isMergeableObject.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|