@wener/utils 1.1.48 → 1.1.49

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.
Files changed (145) hide show
  1. package/lib/asyncs/Promises.js +9 -1
  2. package/lib/asyncs/Promises.js.map +1 -1
  3. package/lib/asyncs/createLazyPromise.js +52 -51
  4. package/lib/asyncs/createLazyPromise.js.map +1 -1
  5. package/lib/asyncs/firstOfAsyncIterator.js.map +1 -1
  6. package/lib/asyncs/nextOfAsyncIterator.js.map +1 -1
  7. package/lib/asyncs/timeout.js +4 -4
  8. package/lib/asyncs/timeout.js.map +1 -1
  9. package/lib/cn/types.js +3 -0
  10. package/lib/cn/types.js.map +1 -0
  11. package/lib/crypto/getNodeCrypto.js +1 -0
  12. package/lib/crypto/getNodeCrypto.js.map +1 -1
  13. package/lib/fetch/createFetchWith.js.map +1 -1
  14. package/lib/fetch/createFetchWithRetry.js.map +1 -1
  15. package/lib/index.js +2 -0
  16. package/lib/index.js.map +1 -1
  17. package/lib/io/ArrayBuffers.js.map +1 -1
  18. package/lib/io/ByteBuffer.js +233 -34
  19. package/lib/io/ByteBuffer.js.map +1 -1
  20. package/lib/langs/getGlobalStates.js +17 -0
  21. package/lib/langs/getGlobalStates.js.map +1 -0
  22. package/lib/langs/getObjectId.js +18 -0
  23. package/lib/langs/getObjectId.js.map +1 -0
  24. package/lib/langs/isNullish.js +5 -0
  25. package/lib/langs/isNullish.js.map +1 -0
  26. package/lib/logging/slog.js.map +1 -1
  27. package/lib/maths/clamp.js +7 -6
  28. package/lib/maths/clamp.js.map +1 -1
  29. package/lib/schema/typebox/typebox.js.map +1 -1
  30. package/lib/server/fetch/createFetchWithProxyByUndici.js.map +1 -1
  31. package/package.json +3 -3
  32. package/src/asyncs/Promises.ts +12 -2
  33. package/src/asyncs/createLazyPromise.test.ts +52 -13
  34. package/src/asyncs/createLazyPromise.ts +66 -61
  35. package/src/asyncs/firstOfAsyncIterator.ts +1 -1
  36. package/src/asyncs/nextOfAsyncIterator.ts +1 -1
  37. package/src/asyncs/timeout.ts +4 -4
  38. package/src/cn/types.ts +11 -0
  39. package/src/crypto/getNodeCrypto.ts +1 -0
  40. package/src/fetch/createFetchWith.ts +1 -1
  41. package/src/fetch/createFetchWithRetry.ts +1 -1
  42. package/src/index.ts +2 -0
  43. package/src/io/ArrayBuffers.ts +7 -3
  44. package/src/io/ByteBuffer.test.ts +26 -14
  45. package/src/io/ByteBuffer.ts +270 -38
  46. package/src/langs/getGlobalStates.ts +21 -0
  47. package/src/langs/getObjectId.ts +20 -0
  48. package/src/langs/isNullish.ts +3 -0
  49. package/src/langs/mixin.test.ts +4 -0
  50. package/src/logging/slog.ts +1 -1
  51. package/src/maths/clamp.test.ts +5 -1
  52. package/src/maths/clamp.ts +7 -7
  53. package/src/objects/merge/merge.test.ts +1 -1
  54. package/src/schema/typebox/typebox.ts +1 -1
  55. package/src/server/fetch/createFetchWithProxyByUndici.ts +2 -2
  56. package/tsconfig.json +4 -1
  57. package/lib/schema/typebox/gen/codegen/common/encoder.js +0 -94
  58. package/lib/schema/typebox/gen/codegen/common/encoder.js.map +0 -1
  59. package/lib/schema/typebox/gen/codegen/common/formatter.js +0 -33
  60. package/lib/schema/typebox/gen/codegen/common/formatter.js.map +0 -1
  61. package/lib/schema/typebox/gen/codegen/common/index.js +0 -29
  62. package/lib/schema/typebox/gen/codegen/common/index.js.map +0 -1
  63. package/lib/schema/typebox/gen/codegen/common/jsdoc.js +0 -117
  64. package/lib/schema/typebox/gen/codegen/common/jsdoc.js.map +0 -1
  65. package/lib/schema/typebox/gen/codegen/expression/compiler.js +0 -364
  66. package/lib/schema/typebox/gen/codegen/expression/compiler.js.map +0 -1
  67. package/lib/schema/typebox/gen/codegen/expression/errors.js +0 -259
  68. package/lib/schema/typebox/gen/codegen/expression/errors.js.map +0 -1
  69. package/lib/schema/typebox/gen/codegen/expression/evaluator.js +0 -254
  70. package/lib/schema/typebox/gen/codegen/expression/evaluator.js.map +0 -1
  71. package/lib/schema/typebox/gen/codegen/expression/expression.js +0 -381
  72. package/lib/schema/typebox/gen/codegen/expression/expression.js.map +0 -1
  73. package/lib/schema/typebox/gen/codegen/expression/index.js +0 -32
  74. package/lib/schema/typebox/gen/codegen/expression/index.js.map +0 -1
  75. package/lib/schema/typebox/gen/codegen/index.js +0 -29
  76. package/lib/schema/typebox/gen/codegen/index.js.map +0 -1
  77. package/lib/schema/typebox/gen/codegen/model/index.js +0 -40
  78. package/lib/schema/typebox/gen/codegen/model/index.js.map +0 -1
  79. package/lib/schema/typebox/gen/codegen/model/model-to-arktype.js +0 -260
  80. package/lib/schema/typebox/gen/codegen/model/model-to-arktype.js.map +0 -1
  81. package/lib/schema/typebox/gen/codegen/model/model-to-expression.js +0 -383
  82. package/lib/schema/typebox/gen/codegen/model/model-to-expression.js.map +0 -1
  83. package/lib/schema/typebox/gen/codegen/model/model-to-grpc.js +0 -238
  84. package/lib/schema/typebox/gen/codegen/model/model-to-grpc.js.map +0 -1
  85. package/lib/schema/typebox/gen/codegen/model/model-to-io-ts.js +0 -274
  86. package/lib/schema/typebox/gen/codegen/model/model-to-io-ts.js.map +0 -1
  87. package/lib/schema/typebox/gen/codegen/model/model-to-javascript.js +0 -47
  88. package/lib/schema/typebox/gen/codegen/model/model-to-javascript.js.map +0 -1
  89. package/lib/schema/typebox/gen/codegen/model/model-to-json-schema.js +0 -192
  90. package/lib/schema/typebox/gen/codegen/model/model-to-json-schema.js.map +0 -1
  91. package/lib/schema/typebox/gen/codegen/model/model-to-typebox.js +0 -33
  92. package/lib/schema/typebox/gen/codegen/model/model-to-typebox.js.map +0 -1
  93. package/lib/schema/typebox/gen/codegen/model/model-to-typescript.js +0 -188
  94. package/lib/schema/typebox/gen/codegen/model/model-to-typescript.js.map +0 -1
  95. package/lib/schema/typebox/gen/codegen/model/model-to-valibot.js +0 -239
  96. package/lib/schema/typebox/gen/codegen/model/model-to-valibot.js.map +0 -1
  97. package/lib/schema/typebox/gen/codegen/model/model-to-value.js +0 -43
  98. package/lib/schema/typebox/gen/codegen/model/model-to-value.js.map +0 -1
  99. package/lib/schema/typebox/gen/codegen/model/model-to-yrel.js +0 -227
  100. package/lib/schema/typebox/gen/codegen/model/model-to-yrel.js.map +0 -1
  101. package/lib/schema/typebox/gen/codegen/model/model-to-yup.js +0 -225
  102. package/lib/schema/typebox/gen/codegen/model/model-to-yup.js.map +0 -1
  103. package/lib/schema/typebox/gen/codegen/model/model-to-zod.js +0 -248
  104. package/lib/schema/typebox/gen/codegen/model/model-to-zod.js.map +0 -1
  105. package/lib/schema/typebox/gen/codegen/model/model.js +0 -27
  106. package/lib/schema/typebox/gen/codegen/model/model.js.map +0 -1
  107. package/lib/schema/typebox/gen/codegen/typescript/index.js +0 -28
  108. package/lib/schema/typebox/gen/codegen/typescript/index.js.map +0 -1
  109. package/lib/schema/typebox/gen/codegen/typescript/typescript-to-model.js +0 -72
  110. package/lib/schema/typebox/gen/codegen/typescript/typescript-to-model.js.map +0 -1
  111. package/lib/schema/typebox/gen/codegen/typescript/typescript-to-typebox.js +0 -620
  112. package/lib/schema/typebox/gen/codegen/typescript/typescript-to-typebox.js.map +0 -1
  113. package/lib/schema/typebox/gen/index.js +0 -3
  114. package/lib/schema/typebox/gen/index.js.map +0 -1
  115. package/src/schema/typebox/gen/codegen/common/encoder.ts +0 -99
  116. package/src/schema/typebox/gen/codegen/common/formatter.ts +0 -31
  117. package/src/schema/typebox/gen/codegen/common/index.ts +0 -29
  118. package/src/schema/typebox/gen/codegen/common/jsdoc.ts +0 -93
  119. package/src/schema/typebox/gen/codegen/expression/compiler.ts +0 -377
  120. package/src/schema/typebox/gen/codegen/expression/errors.ts +0 -302
  121. package/src/schema/typebox/gen/codegen/expression/evaluator.ts +0 -268
  122. package/src/schema/typebox/gen/codegen/expression/expression.ts +0 -538
  123. package/src/schema/typebox/gen/codegen/expression/index.ts +0 -32
  124. package/src/schema/typebox/gen/codegen/index.ts +0 -29
  125. package/src/schema/typebox/gen/codegen/model/index.ts +0 -40
  126. package/src/schema/typebox/gen/codegen/model/model-to-arktype.ts +0 -266
  127. package/src/schema/typebox/gen/codegen/model/model-to-expression.ts +0 -378
  128. package/src/schema/typebox/gen/codegen/model/model-to-grpc.ts +0 -244
  129. package/src/schema/typebox/gen/codegen/model/model-to-io-ts.ts +0 -294
  130. package/src/schema/typebox/gen/codegen/model/model-to-javascript.ts +0 -42
  131. package/src/schema/typebox/gen/codegen/model/model-to-json-schema.ts +0 -166
  132. package/src/schema/typebox/gen/codegen/model/model-to-typebox.ts +0 -32
  133. package/src/schema/typebox/gen/codegen/model/model-to-typescript.ts +0 -189
  134. package/src/schema/typebox/gen/codegen/model/model-to-valibot.ts +0 -236
  135. package/src/schema/typebox/gen/codegen/model/model-to-value.ts +0 -42
  136. package/src/schema/typebox/gen/codegen/model/model-to-yrel.ts +0 -232
  137. package/src/schema/typebox/gen/codegen/model/model-to-yup.ts +0 -226
  138. package/src/schema/typebox/gen/codegen/model/model-to-zod.ts +0 -251
  139. package/src/schema/typebox/gen/codegen/model/model.ts +0 -33
  140. package/src/schema/typebox/gen/codegen/typescript/index.ts +0 -28
  141. package/src/schema/typebox/gen/codegen/typescript/typescript-to-model.ts +0 -61
  142. package/src/schema/typebox/gen/codegen/typescript/typescript-to-typebox.ts +0 -647
  143. package/src/schema/typebox/gen/gen.test.ts +0 -12
  144. package/src/schema/typebox/gen/index.ts +0 -1
  145. /package/src/schema/{typebox/gen/README.md → README.md} +0 -0
@@ -39,7 +39,15 @@
39
39
  * Returns `true` if the given value is a Promise.
40
40
  * @param v The value to check.
41
41
  */ static isPromise(v) {
42
- return v && (v instanceof Promise || v.then && v.catch);
42
+ return v && (v instanceof Promise || typeof v.then === 'function');
43
+ }
44
+ /**
45
+ * Returns a Promise that resolves when the given signal is aborted.
46
+ */ static aborted(signal) {
47
+ // https://nodejs.org/api/util.html#utilabortedsignal-resource
48
+ return new Promise((_, reject)=>{
49
+ signal.addEventListener('abort', ()=>reject(new DOMException('Aborted', 'AbortError')));
50
+ });
43
51
  }
44
52
  }
45
53
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/asyncs/Promises.ts"],"sourcesContent":["/**\n * A collection of utility functions for working with Promises.\n */\nexport class Promises {\n /**\n * Creates a new Promise and returns it in an object, along with its resolve and reject functions.\n * @returns An object with the properties `promise`, `resolve`, and `reject`.\n *\n * ```ts\n * const { promise, resolve, reject } = Promise.withResolvers<T>();\n * ```\n *\n * - Chrome 119, Safari 17.4\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers\n */\n static withResolvers<T>(): PromiseWithResolvers<T> {\n if ('withResolvers' in Promise) {\n return Promise['withResolvers']() as any;\n }\n let resolve: (value: T | PromiseLike<T>) => void;\n let reject: (reason?: any) => void;\n // @ts-ignore\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve: resolve!, reject: reject! };\n }\n\n /**\n * Creates a new Promise and returns it in an object, along with its resolve and reject functions.\n * @param ms The number of milliseconds to wait before rejecting the promise.\n */\n static sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n /**\n * Returns `true` if the given value is a Promise.\n * @param v The value to check.\n */\n static isPromise<T>(v: any): v is Promise<T> {\n return v && (v instanceof Promise || (v.then && v.catch));\n }\n}\n\ninterface PromiseWithResolvers<T> {\n promise: Promise<T>;\n resolve: (value: T | PromiseLike<T>) => void;\n reject: (reason?: any) => void;\n}\n"],"names":["Promises","withResolvers","Promise","resolve","reject","promise","res","rej","sleep","ms","setTimeout","isPromise","v","then","catch"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;CAEC,GACD,OAAO,MAAMA;IACX;;;;;;;;;;;GAWC,GACD,OAAOC,gBAA4C;QACjD,IAAI,mBAAmBC,SAAS;YAC9B,OAAOA,OAAO,CAAC,gBAAgB;QACjC;QACA,IAAIC;QACJ,IAAIC;QACJ,aAAa;QACb,MAAMC,UAAU,IAAIH,QAAW,CAACI,KAAKC;YACnCJ,UAAUG;YACVF,SAASG;QACX;QACA,OAAO;YAAEF;YAASF,SAASA;YAAUC,QAAQA;QAAQ;IACvD;IAEA;;;GAGC,GACD,OAAOI,MAAMC,EAAU,EAAiB;QACtC,OAAO,IAAIP,QAAQ,CAACC,UAAYO,WAAWP,SAASM;IACtD;IAEA;;;GAGC,GACD,OAAOE,UAAaC,CAAM,EAAmB;QAC3C,OAAOA,KAAMA,CAAAA,aAAaV,WAAYU,EAAEC,IAAI,IAAID,EAAEE,KAAK;IACzD;AACF"}
1
+ {"version":3,"sources":["../../src/asyncs/Promises.ts"],"sourcesContent":["/**\n * A collection of utility functions for working with Promises.\n */\nexport class Promises {\n /**\n * Creates a new Promise and returns it in an object, along with its resolve and reject functions.\n * @returns An object with the properties `promise`, `resolve`, and `reject`.\n *\n * ```ts\n * const { promise, resolve, reject } = Promise.withResolvers<T>();\n * ```\n *\n * - Chrome 119, Safari 17.4\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers\n */\n static withResolvers<T>(): PromiseWithResolvers<T> {\n if ('withResolvers' in Promise) {\n return Promise['withResolvers']() as any;\n }\n let resolve: (value: T | PromiseLike<T>) => void;\n let reject: (reason?: any) => void;\n // @ts-ignore\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve: resolve!, reject: reject! };\n }\n\n /**\n * Creates a new Promise and returns it in an object, along with its resolve and reject functions.\n * @param ms The number of milliseconds to wait before rejecting the promise.\n */\n static sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n /**\n * Returns `true` if the given value is a Promise.\n * @param v The value to check.\n */\n static isPromise<T>(v: any): v is PromiseLike<T> {\n return v && (v instanceof Promise || typeof v.then === 'function');\n }\n\n /**\n * Returns a Promise that resolves when the given signal is aborted.\n */\n static aborted(signal: AbortSignal): Promise<void> {\n // https://nodejs.org/api/util.html#utilabortedsignal-resource\n return new Promise((_, reject) => {\n signal.addEventListener('abort', () => reject(new DOMException('Aborted', 'AbortError')));\n });\n }\n}\n\ninterface PromiseWithResolvers<T> {\n promise: Promise<T>;\n resolve: (value: T | PromiseLike<T>) => void;\n reject: (reason?: any) => void;\n}\n"],"names":["Promises","withResolvers","Promise","resolve","reject","promise","res","rej","sleep","ms","setTimeout","isPromise","v","then","aborted","signal","_","addEventListener","DOMException"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;CAEC,GACD,OAAO,MAAMA;IACX;;;;;;;;;;;GAWC,GACD,OAAOC,gBAA4C;QACjD,IAAI,mBAAmBC,SAAS;YAC9B,OAAOA,OAAO,CAAC,gBAAgB;QACjC;QACA,IAAIC;QACJ,IAAIC;QACJ,aAAa;QACb,MAAMC,UAAU,IAAIH,QAAW,CAACI,KAAKC;YACnCJ,UAAUG;YACVF,SAASG;QACX;QACA,OAAO;YAAEF;YAASF,SAASA;YAAUC,QAAQA;QAAQ;IACvD;IAEA;;;GAGC,GACD,OAAOI,MAAMC,EAAU,EAAiB;QACtC,OAAO,IAAIP,QAAQ,CAACC,UAAYO,WAAWP,SAASM;IACtD;IAEA;;;GAGC,GACD,OAAOE,UAAaC,CAAM,EAAuB;QAC/C,OAAOA,KAAMA,CAAAA,aAAaV,WAAW,OAAOU,EAAEC,IAAI,KAAK,UAAS;IAClE;IAEA;;GAEC,GACD,OAAOC,QAAQC,MAAmB,EAAiB;QACjD,8DAA8D;QAC9D,OAAO,IAAIb,QAAQ,CAACc,GAAGZ;YACrBW,OAAOE,gBAAgB,CAAC,SAAS,IAAMb,OAAO,IAAIc,aAAa,WAAW;QAC5E;IACF;AACF"}
@@ -1,72 +1,73 @@
1
1
  import { isPromise } from './isPromise.js';
2
+ import { Promises } from './Promises.js';
2
3
  /**
3
4
  * createLazyPromise return a promise that can be resolved or rejected manually.
4
5
  * if you pass a function to it, it will be executed when the promise try to resolve.
5
6
  */ export function createLazyPromise(executor) {
6
- if (!executor && 'withResolvers' in Promise) {
7
- const { promise, resolve, reject } = Promise.withResolvers();
8
- return Object.assign(promise, {
9
- resolve,
10
- reject
11
- });
12
- }
13
- const holder = {
14
- resolve (_) {
15
- throw new Error('pending resolve');
16
- },
17
- reject (_) {
18
- throw new Error('pending reject');
19
- }
7
+ const { promise, resolve, reject } = Promises.withResolvers();
8
+ const lazy = Object.assign(promise, {
9
+ resolve,
10
+ reject
11
+ });
12
+ let executed = false;
13
+ let pending = true;
14
+ let status = 'pending';
15
+ let value;
16
+ let error;
17
+ const _resolve = (v)=>{
18
+ resolve(v);
19
+ if (!pending) return;
20
+ pending = false;
21
+ // do not delay this for sync status peek
22
+ status = 'resolved';
23
+ value = v;
24
+ };
25
+ const _reject = (v)=>{
26
+ reject(v);
27
+ if (!pending) return;
28
+ pending = false;
29
+ status = 'rejected';
30
+ error = v;
20
31
  };
21
- const future = Object.assign(new Promise((resolve, reject)=>{
22
- holder.reject = reject;
23
- holder.resolve = resolve;
24
- }), {
25
- resolve (v) {
26
- holder.resolve(v);
32
+ const like = Object.assign({
33
+ get status () {
34
+ return status;
27
35
  },
28
- reject (v) {
29
- holder.resolve(v);
36
+ get value () {
37
+ return value;
38
+ },
39
+ get error () {
40
+ return error;
30
41
  }
31
- });
32
- if (executor) {
33
- const r = holder.resolve;
34
- let shouldExec = true;
35
- holder.resolve = (v)=>{
36
- shouldExec = false;
37
- r(v);
38
- };
39
- const then = future.then.bind(future);
40
- future.then = (...args)=>{
41
- if (shouldExec) {
42
- shouldExec = false;
42
+ }, {
43
+ cache: lazy.catch.bind(lazy),
44
+ finally: lazy.finally?.bind(lazy),
45
+ resolve: _resolve,
46
+ reject: _reject,
47
+ then: (...args)=>{
48
+ if (executor && !executed) {
49
+ executed = true;
43
50
  try {
44
- // kind of bad
45
- const result = executor(holder.resolve, holder.reject);
51
+ const result = executor(_resolve, _reject);
46
52
  // ensure resolve/reject is called
47
53
  if (isPromise(result)) {
48
- result.then(holder.resolve, holder.reject);
54
+ result.then(_resolve, _reject);
49
55
  } else if (result !== undefined) {
50
- holder.resolve(result);
56
+ _resolve(result);
51
57
  }
52
58
  } catch (e) {
53
- holder.reject(e);
59
+ _reject(e);
54
60
  }
55
61
  }
56
- return then(...args);
57
- };
58
- const like = holder;
59
- like.then = future.then;
60
- like.catch = future.catch.bind(future);
61
- if (future.finally) like.finally = future.finally;
62
- void Object.defineProperty(like, Symbol.species, {
63
- get () {
64
- return Promise;
65
- }
62
+ return lazy.then(...args);
63
+ }
64
+ });
65
+ if ('toStringTag' in Symbol) {
66
+ Object.defineProperty(like, Symbol.toStringTag, {
67
+ value: 'LazyPromise'
66
68
  });
67
- return like;
68
69
  }
69
- return future;
70
+ return like;
70
71
  }
71
72
 
72
73
  //# sourceMappingURL=createLazyPromise.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/asyncs/createLazyPromise.ts"],"sourcesContent":["import { isPromise } from './isPromise';\nimport type { MaybePromise } from './MaybePromise';\n\nexport type LazyPromise<T> = Promise<T> & {\n reject(reason?: any): void;\n resolve(v?: MaybePromise<T>): void;\n};\n\n/**\n * createLazyPromise return a promise that can be resolved or rejected manually.\n * if you pass a function to it, it will be executed when the promise try to resolve.\n */\nexport function createLazyPromise<T = any>(\n executor?:\n | ((resolve: LazyPromise<T>['resolve'], reject: LazyPromise<T>['reject']) => void)\n | ((resolve: LazyPromise<T>['resolve'], reject: LazyPromise<T>['reject']) => MaybePromise<T>),\n): LazyPromise<T> {\n if (!executor && 'withResolvers' in Promise) {\n const { promise, resolve, reject } = (Promise as any).withResolvers();\n return Object.assign(promise, {\n resolve,\n reject,\n }) as LazyPromise<T>;\n }\n\n const holder = {\n resolve(_: any): void {\n throw new Error('pending resolve');\n },\n reject(_: any): void {\n throw new Error('pending reject');\n },\n };\n const future = Object.assign(\n new Promise<T>((resolve, reject) => {\n holder.reject = reject;\n holder.resolve = resolve;\n }),\n {\n resolve(v: any) {\n holder.resolve(v);\n },\n reject(v: any) {\n holder.resolve(v);\n },\n },\n );\n if (executor) {\n const r = holder.resolve;\n let shouldExec = true;\n holder.resolve = (v: any) => {\n shouldExec = false;\n r(v);\n };\n const then = future.then.bind(future);\n future.then = (...args) => {\n if (shouldExec) {\n shouldExec = false;\n try {\n // kind of bad\n const result = executor(holder.resolve, holder.reject);\n // ensure resolve/reject is called\n if (isPromise(result)) {\n result.then(holder.resolve, holder.reject);\n } else if (result !== undefined) {\n holder.resolve(result);\n }\n } catch (e) {\n holder.reject(e);\n }\n }\n return then(...args);\n };\n const like = holder as LazyPromise<T>;\n like.then = future.then;\n like.catch = future.catch.bind(future);\n if (future.finally) like.finally = future.finally;\n\n void Object.defineProperty(like, Symbol.species, {\n get() {\n return Promise;\n },\n });\n return like;\n }\n return future;\n}\n"],"names":["isPromise","createLazyPromise","executor","Promise","promise","resolve","reject","withResolvers","Object","assign","holder","_","Error","future","v","r","shouldExec","then","bind","args","result","undefined","e","like","catch","finally","defineProperty","Symbol","species","get"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,SAAS,QAAQ,cAAc;AAQxC;;;CAGC,GACD,OAAO,SAASC,kBACdC,QAE+F;IAE/F,IAAI,CAACA,YAAY,mBAAmBC,SAAS;QAC3C,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAEC,MAAM,EAAE,GAAG,AAACH,QAAgBI,aAAa;QACnE,OAAOC,OAAOC,MAAM,CAACL,SAAS;YAC5BC;YACAC;QACF;IACF;IAEA,MAAMI,SAAS;QACbL,SAAQM,CAAM;YACZ,MAAM,IAAIC,MAAM;QAClB;QACAN,QAAOK,CAAM;YACX,MAAM,IAAIC,MAAM;QAClB;IACF;IACA,MAAMC,SAASL,OAAOC,MAAM,CAC1B,IAAIN,QAAW,CAACE,SAASC;QACvBI,OAAOJ,MAAM,GAAGA;QAChBI,OAAOL,OAAO,GAAGA;IACnB,IACA;QACEA,SAAQS,CAAM;YACZJ,OAAOL,OAAO,CAACS;QACjB;QACAR,QAAOQ,CAAM;YACXJ,OAAOL,OAAO,CAACS;QACjB;IACF;IAEF,IAAIZ,UAAU;QACZ,MAAMa,IAAIL,OAAOL,OAAO;QACxB,IAAIW,aAAa;QACjBN,OAAOL,OAAO,GAAG,CAACS;YAChBE,aAAa;YACbD,EAAED;QACJ;QACA,MAAMG,OAAOJ,OAAOI,IAAI,CAACC,IAAI,CAACL;QAC9BA,OAAOI,IAAI,GAAG,CAAC,GAAGE;YAChB,IAAIH,YAAY;gBACdA,aAAa;gBACb,IAAI;oBACF,cAAc;oBACd,MAAMI,SAASlB,SAASQ,OAAOL,OAAO,EAAEK,OAAOJ,MAAM;oBACrD,kCAAkC;oBAClC,IAAIN,UAAUoB,SAAS;wBACrBA,OAAOH,IAAI,CAACP,OAAOL,OAAO,EAAEK,OAAOJ,MAAM;oBAC3C,OAAO,IAAIc,WAAWC,WAAW;wBAC/BX,OAAOL,OAAO,CAACe;oBACjB;gBACF,EAAE,OAAOE,GAAG;oBACVZ,OAAOJ,MAAM,CAACgB;gBAChB;YACF;YACA,OAAOL,QAAQE;QACjB;QACA,MAAMI,OAAOb;QACba,KAAKN,IAAI,GAAGJ,OAAOI,IAAI;QACvBM,KAAKC,KAAK,GAAGX,OAAOW,KAAK,CAACN,IAAI,CAACL;QAC/B,IAAIA,OAAOY,OAAO,EAAEF,KAAKE,OAAO,GAAGZ,OAAOY,OAAO;QAEjD,KAAKjB,OAAOkB,cAAc,CAACH,MAAMI,OAAOC,OAAO,EAAE;YAC/CC;gBACE,OAAO1B;YACT;QACF;QACA,OAAOoB;IACT;IACA,OAAOV;AACT"}
1
+ {"version":3,"sources":["../../src/asyncs/createLazyPromise.ts"],"sourcesContent":["import { isPromise } from './isPromise';\nimport type { MaybePromise } from './MaybePromise';\nimport { Promises } from './Promises';\n\nexport type LazyPromise<T> = Promise<T> & {\n reject(reason?: any): void;\n resolve(v?: MaybePromise<T>): void;\n readonly status: 'pending' | 'resolved' | 'rejected';\n readonly value: T | undefined;\n readonly error: any;\n};\n\n/**\n * createLazyPromise return a promise that can be resolved or rejected manually.\n * if you pass a function to it, it will be executed when the promise try to resolve.\n */\nexport function createLazyPromise<T = any>(\n executor?: (resolve: LazyPromise<T>['resolve'], reject: LazyPromise<T>['reject']) => MaybePromise<T> | void,\n): LazyPromise<T> {\n const { promise, resolve, reject } = Promises.withResolvers();\n const lazy = Object.assign(promise, {\n resolve,\n reject,\n }) as LazyPromise<T>;\n\n let executed = false;\n let pending = true;\n let status: 'pending' | 'resolved' | 'rejected' = 'pending';\n let value: T | undefined;\n let error: any;\n\n const _resolve = (v: T) => {\n resolve(v);\n if (!pending) return;\n pending = false;\n // do not delay this for sync status peek\n status = 'resolved';\n value = v;\n };\n const _reject = (v: any) => {\n reject(v);\n if (!pending) return;\n pending = false;\n status = 'rejected';\n error = v;\n };\n\n const like = Object.assign(\n {\n get status() {\n return status;\n },\n get value() {\n return value;\n },\n get error() {\n return error;\n },\n },\n {\n cache: lazy.catch.bind(lazy),\n finally: lazy.finally?.bind(lazy),\n resolve: _resolve,\n reject: _reject,\n then: (...args: any[]) => {\n if (executor && !executed) {\n executed = true;\n try {\n const result = executor(_resolve, _reject);\n // ensure resolve/reject is called\n if (isPromise(result)) {\n result.then(_resolve, _reject);\n } else if (result !== undefined) {\n _resolve(result);\n }\n } catch (e) {\n _reject(e);\n }\n }\n return lazy.then(...args);\n },\n },\n ) as any as LazyPromise<T>;\n\n if ('toStringTag' in Symbol) {\n Object.defineProperty(like, Symbol.toStringTag, {\n value: 'LazyPromise',\n });\n }\n\n return like;\n}\n"],"names":["isPromise","Promises","createLazyPromise","executor","promise","resolve","reject","withResolvers","lazy","Object","assign","executed","pending","status","value","error","_resolve","v","_reject","like","cache","catch","bind","finally","then","args","result","undefined","e","Symbol","defineProperty","toStringTag"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,SAAS,QAAQ,cAAc;AAExC,SAASC,QAAQ,QAAQ,aAAa;AAUtC;;;CAGC,GACD,OAAO,SAASC,kBACdC,QAA2G;IAE3G,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAEC,MAAM,EAAE,GAAGL,SAASM,aAAa;IAC3D,MAAMC,OAAOC,OAAOC,MAAM,CAACN,SAAS;QAClCC;QACAC;IACF;IAEA,IAAIK,WAAW;IACf,IAAIC,UAAU;IACd,IAAIC,SAA8C;IAClD,IAAIC;IACJ,IAAIC;IAEJ,MAAMC,WAAW,CAACC;QAChBZ,QAAQY;QACR,IAAI,CAACL,SAAS;QACdA,UAAU;QACV,yCAAyC;QACzCC,SAAS;QACTC,QAAQG;IACV;IACA,MAAMC,UAAU,CAACD;QACfX,OAAOW;QACP,IAAI,CAACL,SAAS;QACdA,UAAU;QACVC,SAAS;QACTE,QAAQE;IACV;IAEA,MAAME,OAAOV,OAAOC,MAAM,CACxB;QACE,IAAIG,UAAS;YACX,OAAOA;QACT;QACA,IAAIC,SAAQ;YACV,OAAOA;QACT;QACA,IAAIC,SAAQ;YACV,OAAOA;QACT;IACF,GACA;QACEK,OAAOZ,KAAKa,KAAK,CAACC,IAAI,CAACd;QACvBe,SAASf,KAAKe,OAAO,EAAED,KAAKd;QAC5BH,SAASW;QACTV,QAAQY;QACRM,MAAM,CAAC,GAAGC;YACR,IAAItB,YAAY,CAACQ,UAAU;gBACzBA,WAAW;gBACX,IAAI;oBACF,MAAMe,SAASvB,SAASa,UAAUE;oBAClC,kCAAkC;oBAClC,IAAIlB,UAAU0B,SAAS;wBACrBA,OAAOF,IAAI,CAACR,UAAUE;oBACxB,OAAO,IAAIQ,WAAWC,WAAW;wBAC/BX,SAASU;oBACX;gBACF,EAAE,OAAOE,GAAG;oBACVV,QAAQU;gBACV;YACF;YACA,OAAOpB,KAAKgB,IAAI,IAAIC;QACtB;IACF;IAGF,IAAI,iBAAiBI,QAAQ;QAC3BpB,OAAOqB,cAAc,CAACX,MAAMU,OAAOE,WAAW,EAAE;YAC9CjB,OAAO;QACT;IACF;IAEA,OAAOK;AACT"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/asyncs/firstOfAsyncIterator.ts"],"sourcesContent":["import { isPromise } from './isPromise';\nimport { MaybePromise } from './MaybePromise';\nimport { nextOfAsyncIterator } from './nextOfAsyncIterator';\n\nexport function firstOfAsyncIterator<T>(it: MaybePromise<AsyncIterator<T> | Iterator<T> | T>): MaybePromise<T> {\n const next = nextOfAsyncIterator(it);\n if (isPromise(next)) {\n return next.then((v) => v[0]);\n }\n return next[0];\n}\n"],"names":["isPromise","nextOfAsyncIterator","firstOfAsyncIterator","it","next","then","v"],"rangeMappings":";;;;;;;;","mappings":"AAAA,SAASA,SAAS,QAAQ,cAAc;AAExC,SAASC,mBAAmB,QAAQ,wBAAwB;AAE5D,OAAO,SAASC,qBAAwBC,EAAoD;IAC1F,MAAMC,OAAOH,oBAAoBE;IACjC,IAAIH,UAAUI,OAAO;QACnB,OAAOA,KAAKC,IAAI,CAAC,CAACC,IAAMA,CAAC,CAAC,EAAE;IAC9B;IACA,OAAOF,IAAI,CAAC,EAAE;AAChB"}
1
+ {"version":3,"sources":["../../src/asyncs/firstOfAsyncIterator.ts"],"sourcesContent":["import { isPromise } from './isPromise';\nimport type { MaybePromise } from './MaybePromise';\nimport { nextOfAsyncIterator } from './nextOfAsyncIterator';\n\nexport function firstOfAsyncIterator<T>(it: MaybePromise<AsyncIterator<T> | Iterator<T> | T>): MaybePromise<T> {\n const next = nextOfAsyncIterator(it);\n if (isPromise(next)) {\n return next.then((v) => v[0]);\n }\n return next[0];\n}\n"],"names":["isPromise","nextOfAsyncIterator","firstOfAsyncIterator","it","next","then","v"],"rangeMappings":";;;;;;;;","mappings":"AAAA,SAASA,SAAS,QAAQ,cAAc;AAExC,SAASC,mBAAmB,QAAQ,wBAAwB;AAE5D,OAAO,SAASC,qBAAwBC,EAAoD;IAC1F,MAAMC,OAAOH,oBAAoBE;IACjC,IAAIH,UAAUI,OAAO;QACnB,OAAOA,KAAKC,IAAI,CAAC,CAACC,IAAMA,CAAC,CAAC,EAAE;IAC9B;IACA,OAAOF,IAAI,CAAC,EAAE;AAChB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/asyncs/nextOfAsyncIterator.ts"],"sourcesContent":["import { isIterator } from './isIterator';\nimport { isPromise } from './isPromise';\nimport { MaybePromise } from './MaybePromise';\n\ntype IteratorLike<T> = Iterable<T> | Iterator<T>;\ntype AsyncIteratorLike<T> = AsyncIterable<T> | AsyncIterator<T> | AsyncIterableIterator<T> | IteratorLike<T>;\n\nexport function nextOfAsyncIterator<T>(\n it: MaybePromise<AsyncIterable<T> | Iterable<T> | AsyncIterator<T> | Iterator<T> | T>,\n): MaybePromise<[value: T, done?: boolean]> {\n if (isPromise(it)) {\n return it.then((v) => nextOfAsyncIterator(v));\n }\n\n if (isIterator(it)) {\n let next = it.next();\n if (isPromise(next)) {\n return next.then((v) => [v.value, v.done]);\n }\n return [next.value, next.done];\n }\n if (it && typeof it === 'object') {\n if (Symbol.iterator in it) {\n return nextOfAsyncIterator(it[Symbol.iterator]());\n }\n if (Symbol.asyncIterator in it) {\n return nextOfAsyncIterator(it[Symbol.asyncIterator]());\n }\n }\n return [it];\n}\n"],"names":["isIterator","isPromise","nextOfAsyncIterator","it","then","v","next","value","done","Symbol","iterator","asyncIterator"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,UAAU,QAAQ,eAAe;AAC1C,SAASC,SAAS,QAAQ,cAAc;AAMxC,OAAO,SAASC,oBACdC,EAAqF;IAErF,IAAIF,UAAUE,KAAK;QACjB,OAAOA,GAAGC,IAAI,CAAC,CAACC,IAAMH,oBAAoBG;IAC5C;IAEA,IAAIL,WAAWG,KAAK;QAClB,IAAIG,OAAOH,GAAGG,IAAI;QAClB,IAAIL,UAAUK,OAAO;YACnB,OAAOA,KAAKF,IAAI,CAAC,CAACC,IAAM;oBAACA,EAAEE,KAAK;oBAAEF,EAAEG,IAAI;iBAAC;QAC3C;QACA,OAAO;YAACF,KAAKC,KAAK;YAAED,KAAKE,IAAI;SAAC;IAChC;IACA,IAAIL,MAAM,OAAOA,OAAO,UAAU;QAChC,IAAIM,OAAOC,QAAQ,IAAIP,IAAI;YACzB,OAAOD,oBAAoBC,EAAE,CAACM,OAAOC,QAAQ,CAAC;QAChD;QACA,IAAID,OAAOE,aAAa,IAAIR,IAAI;YAC9B,OAAOD,oBAAoBC,EAAE,CAACM,OAAOE,aAAa,CAAC;QACrD;IACF;IACA,OAAO;QAACR;KAAG;AACb"}
1
+ {"version":3,"sources":["../../src/asyncs/nextOfAsyncIterator.ts"],"sourcesContent":["import { isIterator } from './isIterator';\nimport { isPromise } from './isPromise';\nimport type { MaybePromise } from './MaybePromise';\n\ntype IteratorLike<T> = Iterable<T> | Iterator<T>;\ntype AsyncIteratorLike<T> = AsyncIterable<T> | AsyncIterator<T> | AsyncIterableIterator<T> | IteratorLike<T>;\n\nexport function nextOfAsyncIterator<T>(\n it: MaybePromise<AsyncIterable<T> | Iterable<T> | AsyncIterator<T> | Iterator<T> | T>,\n): MaybePromise<[value: T, done?: boolean]> {\n if (isPromise(it)) {\n return it.then((v) => nextOfAsyncIterator(v));\n }\n\n if (isIterator(it)) {\n let next = it.next();\n if (isPromise(next)) {\n return next.then((v) => [v.value, v.done]);\n }\n return [next.value, next.done];\n }\n if (it && typeof it === 'object') {\n if (Symbol.iterator in it) {\n return nextOfAsyncIterator(it[Symbol.iterator]());\n }\n if (Symbol.asyncIterator in it) {\n return nextOfAsyncIterator(it[Symbol.asyncIterator]());\n }\n }\n return [it];\n}\n"],"names":["isIterator","isPromise","nextOfAsyncIterator","it","then","v","next","value","done","Symbol","iterator","asyncIterator"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,UAAU,QAAQ,eAAe;AAC1C,SAASC,SAAS,QAAQ,cAAc;AAMxC,OAAO,SAASC,oBACdC,EAAqF;IAErF,IAAIF,UAAUE,KAAK;QACjB,OAAOA,GAAGC,IAAI,CAAC,CAACC,IAAMH,oBAAoBG;IAC5C;IAEA,IAAIL,WAAWG,KAAK;QAClB,IAAIG,OAAOH,GAAGG,IAAI;QAClB,IAAIL,UAAUK,OAAO;YACnB,OAAOA,KAAKF,IAAI,CAAC,CAACC,IAAM;oBAACA,EAAEE,KAAK;oBAAEF,EAAEG,IAAI;iBAAC;QAC3C;QACA,OAAO;YAACF,KAAKC,KAAK;YAAED,KAAKE,IAAI;SAAC;IAChC;IACA,IAAIL,MAAM,OAAOA,OAAO,UAAU;QAChC,IAAIM,OAAOC,QAAQ,IAAIP,IAAI;YACzB,OAAOD,oBAAoBC,EAAE,CAACM,OAAOC,QAAQ,CAAC;QAChD;QACA,IAAID,OAAOE,aAAa,IAAIR,IAAI;YAC9B,OAAOD,oBAAoBC,EAAE,CAACM,OAAOE,aAAa,CAAC;QACrD;IACF;IACA,OAAO;QAACR;KAAG;AACb"}
@@ -1,15 +1,15 @@
1
- export function timeout(v, ms) {
1
+ export function timeout(pending, ms) {
2
2
  const error = new TimeoutError();
3
3
  let timeout;
4
4
  let ac;
5
- if (typeof v === 'function') {
5
+ if (typeof pending === 'function') {
6
6
  ac = new AbortController();
7
- v = v({
7
+ pending = pending({
8
8
  signal: ac.signal
9
9
  });
10
10
  }
11
11
  return Promise.race([
12
- v,
12
+ pending,
13
13
  new Promise((_resolve, reject)=>{
14
14
  timeout = setTimeout(()=>{
15
15
  ac?.abort(error);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/asyncs/timeout.ts"],"sourcesContent":["export function timeout<T = any>(\n v: Promise<T> | ((args: { signal: AbortSignal }) => Promise<T>),\n ms: number,\n): Promise<T> {\n const error = new TimeoutError();\n let timeout: any;\n let ac: AbortController | undefined;\n if (typeof v === 'function') {\n ac = new AbortController();\n v = v({ signal: ac.signal });\n }\n\n return Promise.race<T>([\n v,\n new Promise((_resolve, reject) => {\n timeout = setTimeout(() => {\n ac?.abort(error);\n reject(error);\n }, ms);\n }),\n ]).finally(() => {\n clearTimeout(timeout);\n });\n}\n\nexport class TimeoutError extends Error {\n constructor() {\n super('TimeoutError');\n }\n}\n"],"names":["timeout","v","ms","error","TimeoutError","ac","AbortController","signal","Promise","race","_resolve","reject","setTimeout","abort","finally","clearTimeout","Error","constructor"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAO,SAASA,QACdC,CAA+D,EAC/DC,EAAU;IAEV,MAAMC,QAAQ,IAAIC;IAClB,IAAIJ;IACJ,IAAIK;IACJ,IAAI,OAAOJ,MAAM,YAAY;QAC3BI,KAAK,IAAIC;QACTL,IAAIA,EAAE;YAAEM,QAAQF,GAAGE,MAAM;QAAC;IAC5B;IAEA,OAAOC,QAAQC,IAAI,CAAI;QACrBR;QACA,IAAIO,QAAQ,CAACE,UAAUC;YACrBX,UAAUY,WAAW;gBACnBP,IAAIQ,MAAMV;gBACVQ,OAAOR;YACT,GAAGD;QACL;KACD,EAAEY,OAAO,CAAC;QACTC,aAAaf;IACf;AACF;AAEA,OAAO,MAAMI,qBAAqBY;IAChCC,aAAc;QACZ,KAAK,CAAC;IACR;AACF"}
1
+ {"version":3,"sources":["../../src/asyncs/timeout.ts"],"sourcesContent":["export function timeout<T = any>(\n pending: Promise<T> | ((args: { signal: AbortSignal }) => Promise<T>),\n ms: number,\n): Promise<T> {\n const error = new TimeoutError();\n let timeout: any;\n let ac: AbortController | undefined;\n if (typeof pending === 'function') {\n ac = new AbortController();\n pending = pending({ signal: ac.signal });\n }\n\n return Promise.race<T>([\n pending,\n new Promise((_resolve, reject) => {\n timeout = setTimeout(() => {\n ac?.abort(error);\n reject(error);\n }, ms);\n }),\n ]).finally(() => {\n clearTimeout(timeout);\n });\n}\n\nexport class TimeoutError extends Error {\n constructor() {\n super('TimeoutError');\n }\n}\n"],"names":["timeout","pending","ms","error","TimeoutError","ac","AbortController","signal","Promise","race","_resolve","reject","setTimeout","abort","finally","clearTimeout","Error","constructor"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAO,SAASA,QACdC,OAAqE,EACrEC,EAAU;IAEV,MAAMC,QAAQ,IAAIC;IAClB,IAAIJ;IACJ,IAAIK;IACJ,IAAI,OAAOJ,YAAY,YAAY;QACjCI,KAAK,IAAIC;QACTL,UAAUA,QAAQ;YAAEM,QAAQF,GAAGE,MAAM;QAAC;IACxC;IAEA,OAAOC,QAAQC,IAAI,CAAI;QACrBR;QACA,IAAIO,QAAQ,CAACE,UAAUC;YACrBX,UAAUY,WAAW;gBACnBP,IAAIQ,MAAMV;gBACVQ,OAAOR;YACT,GAAGD;QACL;KACD,EAAEY,OAAO,CAAC;QACTC,aAAaf;IACf;AACF;AAEA,OAAO,MAAMI,qBAAqBY;IAChCC,aAAc;QACZ,KAAK,CAAC;IACR;AACF"}
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cn/types.ts"],"sourcesContent":["export interface StringFormat<GenerateOptions, ParsedObject> {\n regex?: RegExp;\n validate: (s: string) => boolean;\n generate: (opts?: GenerateOptions) => ParsedObject;\n parse: (s: string) => ParsedObject | undefined;\n}\n\nexport interface StringChecksum {\n validate: (s: string) => boolean;\n generate: (s: string) => string;\n}\n"],"names":[],"rangeMappings":"","mappings":"AAOA,WAGC"}
@@ -1,3 +1,4 @@
1
+ // import type * as NodeCrypto from 'node:crypto';
1
2
  import { getGlobalThis } from '../runtime/getGlobalThis.js';
2
3
  let nodeCrypto;
3
4
  // globalThis.process?.release?.name
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/crypto/getNodeCrypto.ts"],"sourcesContent":["import { getGlobalThis } from '../runtime/getGlobalThis';\n\nlet nodeCrypto;\n// globalThis.process?.release?.name\n\n// avoid import node\n// avoid process.browser\n// if (typeof window === 'undefined') {\n// try {\n// // avoid `node:` UnhandledSchemeError https://github.com/vercel/next.js/issues/28774\n// if (typeof require === 'undefined') {\n// void import('crypto').then((v) => (nodeCrypto = v.default));\n// } else {\n// nodeCrypto = require('crypto');\n// }\n// } catch (e) {}\n// }\nexport function getNodeCrypto() {\n nodeCrypto ||= getGlobalThis().crypto;\n return nodeCrypto;\n}\n"],"names":["getGlobalThis","nodeCrypto","getNodeCrypto","crypto"],"rangeMappings":";;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,aAAa,QAAQ,2BAA2B;AAEzD,IAAIC;AACJ,oCAAoC;AAEpC,oBAAoB;AACpB,wBAAwB;AACxB,uCAAuC;AACvC,UAAU;AACV,2FAA2F;AAC3F,4CAA4C;AAC5C,qEAAqE;AACrE,eAAe;AACf,wCAAwC;AACxC,QAAQ;AACR,mBAAmB;AACnB,IAAI;AACJ,OAAO,SAASC;IACdD,eAAeD,gBAAgBG,MAAM;IACrC,OAAOF;AACT"}
1
+ {"version":3,"sources":["../../src/crypto/getNodeCrypto.ts"],"sourcesContent":["// import type * as NodeCrypto from 'node:crypto';\nimport { getGlobalThis } from '../runtime/getGlobalThis';\n\nlet nodeCrypto;\n// globalThis.process?.release?.name\n\n// avoid import node\n// avoid process.browser\n// if (typeof window === 'undefined') {\n// try {\n// // avoid `node:` UnhandledSchemeError https://github.com/vercel/next.js/issues/28774\n// if (typeof require === 'undefined') {\n// void import('crypto').then((v) => (nodeCrypto = v.default));\n// } else {\n// nodeCrypto = require('crypto');\n// }\n// } catch (e) {}\n// }\nexport function getNodeCrypto() {\n nodeCrypto ||= getGlobalThis().crypto;\n return nodeCrypto;\n}\n"],"names":["getGlobalThis","nodeCrypto","getNodeCrypto","crypto"],"rangeMappings":";;;;;;;;;;;;;;;;;;;","mappings":"AAAA,kDAAkD;AAClD,SAASA,aAAa,QAAQ,2BAA2B;AAEzD,IAAIC;AACJ,oCAAoC;AAEpC,oBAAoB;AACpB,wBAAwB;AACxB,uCAAuC;AACvC,UAAU;AACV,2FAA2F;AAC3F,4CAA4C;AAC5C,qEAAqE;AACrE,eAAe;AACf,wCAAwC;AACxC,QAAQ;AACR,mBAAmB;AACnB,IAAI;AACJ,OAAO,SAASC;IACdD,eAAeD,gBAAgBG,MAAM;IACrC,OAAOF;AACT"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/fetch/createFetchWith.ts"],"sourcesContent":["import { MaybePromise } from '../asyncs/MaybePromise';\nimport { getGlobalThis } from '../runtime/getGlobalThis';\nimport { type FetchLike } from './types';\n\nexport function createFetchWith({\n fetch = getGlobalThis().fetch,\n onRequest = (ctx) => ctx.next(ctx.url, ctx.req),\n onResponse = (ctx) => ctx.res,\n}: {\n fetch?: FetchLike;\n onRequest?: (ctx: {\n url: string;\n req: RequestInit;\n next: (url: string, req: RequestInit) => Promise<Response>;\n }) => MaybePromise<Response | void>;\n onResponse?: (ctx: { url: string; req: RequestInit; res: Response }) => MaybePromise<Response>;\n}) {\n return async (urlOrRequest: string | URL | Request, init?: RequestInit & { fetch?: FetchLike }) => {\n const url = String(urlOrRequest);\n let req = init || {};\n const nextFetch = req.fetch || fetch;\n const res =\n (await onRequest({\n url,\n req,\n next: (url, init) => {\n req = init;\n return nextFetch(url, init);\n },\n })) ?? (await nextFetch(url, init));\n return onResponse({ url, req, res });\n };\n}\n"],"names":["getGlobalThis","createFetchWith","fetch","onRequest","ctx","next","url","req","onResponse","res","urlOrRequest","init","String","nextFetch"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;","mappings":"AACA,SAASA,aAAa,QAAQ,2BAA2B;AAGzD,OAAO,SAASC,gBAAgB,EAC9BC,QAAQF,gBAAgBE,KAAK,EAC7BC,YAAY,CAACC,MAAQA,IAAIC,IAAI,CAACD,IAAIE,GAAG,EAAEF,IAAIG,GAAG,CAAC,EAC/CC,aAAa,CAACJ,MAAQA,IAAIK,GAAG,EAS9B;IACC,OAAO,OAAOC,cAAsCC;QAClD,MAAML,MAAMM,OAAOF;QACnB,IAAIH,MAAMI,QAAQ,CAAC;QACnB,MAAME,YAAYN,IAAIL,KAAK,IAAIA;QAC/B,MAAMO,MACJ,AAAC,MAAMN,UAAU;YACfG;YACAC;YACAF,MAAM,CAACC,KAAKK;gBACVJ,MAAMI;gBACN,OAAOE,UAAUP,KAAKK;YACxB;QACF,MAAQ,MAAME,UAAUP,KAAKK;QAC/B,OAAOH,WAAW;YAAEF;YAAKC;YAAKE;QAAI;IACpC;AACF"}
1
+ {"version":3,"sources":["../../src/fetch/createFetchWith.ts"],"sourcesContent":["import type { MaybePromise } from '../asyncs/MaybePromise';\nimport { getGlobalThis } from '../runtime/getGlobalThis';\nimport { type FetchLike } from './types';\n\nexport function createFetchWith({\n fetch = getGlobalThis().fetch,\n onRequest = (ctx) => ctx.next(ctx.url, ctx.req),\n onResponse = (ctx) => ctx.res,\n}: {\n fetch?: FetchLike;\n onRequest?: (ctx: {\n url: string;\n req: RequestInit;\n next: (url: string, req: RequestInit) => Promise<Response>;\n }) => MaybePromise<Response | void>;\n onResponse?: (ctx: { url: string; req: RequestInit; res: Response }) => MaybePromise<Response>;\n}) {\n return async (urlOrRequest: string | URL | Request, init?: RequestInit & { fetch?: FetchLike }) => {\n const url = String(urlOrRequest);\n let req = init || {};\n const nextFetch = req.fetch || fetch;\n const res =\n (await onRequest({\n url,\n req,\n next: (url, init) => {\n req = init;\n return nextFetch(url, init);\n },\n })) ?? (await nextFetch(url, init));\n return onResponse({ url, req, res });\n };\n}\n"],"names":["getGlobalThis","createFetchWith","fetch","onRequest","ctx","next","url","req","onResponse","res","urlOrRequest","init","String","nextFetch"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;","mappings":"AACA,SAASA,aAAa,QAAQ,2BAA2B;AAGzD,OAAO,SAASC,gBAAgB,EAC9BC,QAAQF,gBAAgBE,KAAK,EAC7BC,YAAY,CAACC,MAAQA,IAAIC,IAAI,CAACD,IAAIE,GAAG,EAAEF,IAAIG,GAAG,CAAC,EAC/CC,aAAa,CAACJ,MAAQA,IAAIK,GAAG,EAS9B;IACC,OAAO,OAAOC,cAAsCC;QAClD,MAAML,MAAMM,OAAOF;QACnB,IAAIH,MAAMI,QAAQ,CAAC;QACnB,MAAME,YAAYN,IAAIL,KAAK,IAAIA;QAC/B,MAAMO,MACJ,AAAC,MAAMN,UAAU;YACfG;YACAC;YACAF,MAAM,CAACC,KAAKK;gBACVJ,MAAMI;gBACN,OAAOE,UAAUP,KAAKK;YACxB;QACF,MAAQ,MAAME,UAAUP,KAAKK;QAC/B,OAAOH,WAAW;YAAEF;YAAKC;YAAKE;QAAI;IACpC;AACF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/fetch/createFetchWithRetry.ts"],"sourcesContent":["import { getGlobalThis } from '../runtime/getGlobalThis';\nimport { FetchLike } from './types';\n\ntype RequestDelayFunction = (attempt: number, error: Error | null, response: Response | null) => number;\ntype RequestRetryOnFunction = (\n attempt: number,\n error: Error | null,\n response: Response | null,\n) => boolean | Promise<boolean>;\n\nexport interface FetchWithRetryOptions {\n fetch?: FetchLike;\n retries?: number;\n retryDelay?: number | RequestDelayFunction;\n retryOn?: number[] | RequestRetryOnFunction;\n}\n\nexport function createFetchWithRetry({\n fetch = getGlobalThis().fetch,\n retries = 3,\n retryDelay = 1000,\n retryOn = [],\n}: FetchWithRetryOptions = {}): FetchLike {\n // https://github.com/jonbern/fetch-retry/blob/master/index.js\n\n return function fetchRetry(input: string | URL | Request, init?: RequestInit) {\n return new Promise(function (resolve, reject) {\n var wrappedFetch = function (attempt: number) {\n // As of node 18, this is no longer needed since node comes with native support for fetch:\n /* istanbul ignore next */\n var _input = typeof Request !== 'undefined' && input instanceof Request ? input.clone() : input;\n fetch(_input, init)\n .then(function (response) {\n if (Array.isArray(retryOn) && retryOn.indexOf(response.status) === -1) {\n resolve(response);\n } else if (typeof retryOn === 'function') {\n try {\n return Promise.resolve(retryOn(attempt, null, response))\n .then(function (retryOnResponse) {\n if (retryOnResponse) {\n retry(attempt, null, response);\n } else {\n resolve(response);\n }\n })\n .catch(reject);\n } catch (error) {\n reject(error);\n }\n } else {\n if (attempt < retries) {\n retry(attempt, null, response);\n } else {\n resolve(response);\n }\n }\n return;\n })\n .catch(function (error) {\n if (typeof retryOn === 'function') {\n try {\n // eslint-disable-next-line no-undef\n Promise.resolve(retryOn(attempt, error, null))\n .then(function (retryOnResponse) {\n if (retryOnResponse) {\n retry(attempt, error, null);\n } else {\n reject(error);\n }\n })\n .catch(function (error) {\n reject(error);\n });\n } catch (error) {\n reject(error);\n }\n } else if (attempt < retries) {\n retry(attempt, error, null);\n } else {\n reject(error);\n }\n });\n };\n\n function retry(attempt: number, error: any, response: Response | null) {\n let delay = typeof retryDelay === 'function' ? retryDelay(attempt, error, response) : retryDelay;\n setTimeout(function () {\n wrappedFetch(++attempt);\n }, delay);\n }\n\n wrappedFetch(0);\n });\n };\n}\n"],"names":["getGlobalThis","createFetchWithRetry","fetch","retries","retryDelay","retryOn","fetchRetry","input","init","Promise","resolve","reject","wrappedFetch","attempt","_input","Request","clone","then","response","Array","isArray","indexOf","status","retryOnResponse","retry","catch","error","delay","setTimeout"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,aAAa,QAAQ,2BAA2B;AAiBzD,OAAO,SAASC,qBAAqB,EACnCC,QAAQF,gBAAgBE,KAAK,EAC7BC,UAAU,CAAC,EACXC,aAAa,IAAI,EACjBC,UAAU,EAAE,EACU,GAAG,CAAC,CAAC;IAC3B,8DAA8D;IAE9D,OAAO,SAASC,WAAWC,KAA6B,EAAEC,IAAkB;QAC1E,OAAO,IAAIC,QAAQ,SAAUC,OAAO,EAAEC,MAAM;YAC1C,IAAIC,eAAe,SAAUC,OAAe;gBAC1C,0FAA0F;gBAC1F,wBAAwB,GACxB,IAAIC,SAAS,OAAOC,YAAY,eAAeR,iBAAiBQ,UAAUR,MAAMS,KAAK,KAAKT;gBAC1FL,MAAMY,QAAQN,MACXS,IAAI,CAAC,SAAUC,QAAQ;oBACtB,IAAIC,MAAMC,OAAO,CAACf,YAAYA,QAAQgB,OAAO,CAACH,SAASI,MAAM,MAAM,CAAC,GAAG;wBACrEZ,QAAQQ;oBACV,OAAO,IAAI,OAAOb,YAAY,YAAY;wBACxC,IAAI;4BACF,OAAOI,QAAQC,OAAO,CAACL,QAAQQ,SAAS,MAAMK,WAC3CD,IAAI,CAAC,SAAUM,eAAe;gCAC7B,IAAIA,iBAAiB;oCACnBC,MAAMX,SAAS,MAAMK;gCACvB,OAAO;oCACLR,QAAQQ;gCACV;4BACF,GACCO,KAAK,CAACd;wBACX,EAAE,OAAOe,OAAO;4BACdf,OAAOe;wBACT;oBACF,OAAO;wBACL,IAAIb,UAAUV,SAAS;4BACrBqB,MAAMX,SAAS,MAAMK;wBACvB,OAAO;4BACLR,QAAQQ;wBACV;oBACF;oBACA;gBACF,GACCO,KAAK,CAAC,SAAUC,KAAK;oBACpB,IAAI,OAAOrB,YAAY,YAAY;wBACjC,IAAI;4BACF,oCAAoC;4BACpCI,QAAQC,OAAO,CAACL,QAAQQ,SAASa,OAAO,OACrCT,IAAI,CAAC,SAAUM,eAAe;gCAC7B,IAAIA,iBAAiB;oCACnBC,MAAMX,SAASa,OAAO;gCACxB,OAAO;oCACLf,OAAOe;gCACT;4BACF,GACCD,KAAK,CAAC,SAAUC,KAAK;gCACpBf,OAAOe;4BACT;wBACJ,EAAE,OAAOA,OAAO;4BACdf,OAAOe;wBACT;oBACF,OAAO,IAAIb,UAAUV,SAAS;wBAC5BqB,MAAMX,SAASa,OAAO;oBACxB,OAAO;wBACLf,OAAOe;oBACT;gBACF;YACJ;YAEA,SAASF,MAAMX,OAAe,EAAEa,KAAU,EAAER,QAAyB;gBACnE,IAAIS,QAAQ,OAAOvB,eAAe,aAAaA,WAAWS,SAASa,OAAOR,YAAYd;gBACtFwB,WAAW;oBACThB,aAAa,EAAEC;gBACjB,GAAGc;YACL;YAEAf,aAAa;QACf;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/fetch/createFetchWithRetry.ts"],"sourcesContent":["import { getGlobalThis } from '../runtime/getGlobalThis';\nimport type { FetchLike } from './types';\n\ntype RequestDelayFunction = (attempt: number, error: Error | null, response: Response | null) => number;\ntype RequestRetryOnFunction = (\n attempt: number,\n error: Error | null,\n response: Response | null,\n) => boolean | Promise<boolean>;\n\nexport interface FetchWithRetryOptions {\n fetch?: FetchLike;\n retries?: number;\n retryDelay?: number | RequestDelayFunction;\n retryOn?: number[] | RequestRetryOnFunction;\n}\n\nexport function createFetchWithRetry({\n fetch = getGlobalThis().fetch,\n retries = 3,\n retryDelay = 1000,\n retryOn = [],\n}: FetchWithRetryOptions = {}): FetchLike {\n // https://github.com/jonbern/fetch-retry/blob/master/index.js\n\n return function fetchRetry(input: string | URL | Request, init?: RequestInit) {\n return new Promise(function (resolve, reject) {\n var wrappedFetch = function (attempt: number) {\n // As of node 18, this is no longer needed since node comes with native support for fetch:\n /* istanbul ignore next */\n var _input = typeof Request !== 'undefined' && input instanceof Request ? input.clone() : input;\n fetch(_input, init)\n .then(function (response) {\n if (Array.isArray(retryOn) && retryOn.indexOf(response.status) === -1) {\n resolve(response);\n } else if (typeof retryOn === 'function') {\n try {\n return Promise.resolve(retryOn(attempt, null, response))\n .then(function (retryOnResponse) {\n if (retryOnResponse) {\n retry(attempt, null, response);\n } else {\n resolve(response);\n }\n })\n .catch(reject);\n } catch (error) {\n reject(error);\n }\n } else {\n if (attempt < retries) {\n retry(attempt, null, response);\n } else {\n resolve(response);\n }\n }\n return;\n })\n .catch(function (error) {\n if (typeof retryOn === 'function') {\n try {\n // eslint-disable-next-line no-undef\n Promise.resolve(retryOn(attempt, error, null))\n .then(function (retryOnResponse) {\n if (retryOnResponse) {\n retry(attempt, error, null);\n } else {\n reject(error);\n }\n })\n .catch(function (error) {\n reject(error);\n });\n } catch (error) {\n reject(error);\n }\n } else if (attempt < retries) {\n retry(attempt, error, null);\n } else {\n reject(error);\n }\n });\n };\n\n function retry(attempt: number, error: any, response: Response | null) {\n let delay = typeof retryDelay === 'function' ? retryDelay(attempt, error, response) : retryDelay;\n setTimeout(function () {\n wrappedFetch(++attempt);\n }, delay);\n }\n\n wrappedFetch(0);\n });\n };\n}\n"],"names":["getGlobalThis","createFetchWithRetry","fetch","retries","retryDelay","retryOn","fetchRetry","input","init","Promise","resolve","reject","wrappedFetch","attempt","_input","Request","clone","then","response","Array","isArray","indexOf","status","retryOnResponse","retry","catch","error","delay","setTimeout"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,aAAa,QAAQ,2BAA2B;AAiBzD,OAAO,SAASC,qBAAqB,EACnCC,QAAQF,gBAAgBE,KAAK,EAC7BC,UAAU,CAAC,EACXC,aAAa,IAAI,EACjBC,UAAU,EAAE,EACU,GAAG,CAAC,CAAC;IAC3B,8DAA8D;IAE9D,OAAO,SAASC,WAAWC,KAA6B,EAAEC,IAAkB;QAC1E,OAAO,IAAIC,QAAQ,SAAUC,OAAO,EAAEC,MAAM;YAC1C,IAAIC,eAAe,SAAUC,OAAe;gBAC1C,0FAA0F;gBAC1F,wBAAwB,GACxB,IAAIC,SAAS,OAAOC,YAAY,eAAeR,iBAAiBQ,UAAUR,MAAMS,KAAK,KAAKT;gBAC1FL,MAAMY,QAAQN,MACXS,IAAI,CAAC,SAAUC,QAAQ;oBACtB,IAAIC,MAAMC,OAAO,CAACf,YAAYA,QAAQgB,OAAO,CAACH,SAASI,MAAM,MAAM,CAAC,GAAG;wBACrEZ,QAAQQ;oBACV,OAAO,IAAI,OAAOb,YAAY,YAAY;wBACxC,IAAI;4BACF,OAAOI,QAAQC,OAAO,CAACL,QAAQQ,SAAS,MAAMK,WAC3CD,IAAI,CAAC,SAAUM,eAAe;gCAC7B,IAAIA,iBAAiB;oCACnBC,MAAMX,SAAS,MAAMK;gCACvB,OAAO;oCACLR,QAAQQ;gCACV;4BACF,GACCO,KAAK,CAACd;wBACX,EAAE,OAAOe,OAAO;4BACdf,OAAOe;wBACT;oBACF,OAAO;wBACL,IAAIb,UAAUV,SAAS;4BACrBqB,MAAMX,SAAS,MAAMK;wBACvB,OAAO;4BACLR,QAAQQ;wBACV;oBACF;oBACA;gBACF,GACCO,KAAK,CAAC,SAAUC,KAAK;oBACpB,IAAI,OAAOrB,YAAY,YAAY;wBACjC,IAAI;4BACF,oCAAoC;4BACpCI,QAAQC,OAAO,CAACL,QAAQQ,SAASa,OAAO,OACrCT,IAAI,CAAC,SAAUM,eAAe;gCAC7B,IAAIA,iBAAiB;oCACnBC,MAAMX,SAASa,OAAO;gCACxB,OAAO;oCACLf,OAAOe;gCACT;4BACF,GACCD,KAAK,CAAC,SAAUC,KAAK;gCACpBf,OAAOe;4BACT;wBACJ,EAAE,OAAOA,OAAO;4BACdf,OAAOe;wBACT;oBACF,OAAO,IAAIb,UAAUV,SAAS;wBAC5BqB,MAAMX,SAASa,OAAO;oBACxB,OAAO;wBACLf,OAAOe;oBACT;gBACF;YACJ;YAEA,SAASF,MAAMX,OAAe,EAAEa,KAAU,EAAER,QAAyB;gBACnE,IAAIS,QAAQ,OAAOvB,eAAe,aAAaA,WAAWS,SAASa,OAAOR,YAAYd;gBACtFwB,WAAW;oBACThB,aAAa,EAAEC;gBACjB,GAAGc;YACL;YAEAf,aAAa;QACf;IACF;AACF"}
package/lib/index.js CHANGED
@@ -34,6 +34,8 @@ export { parseBoolean } from './langs/parseBoolean.js';
34
34
  export { maybeFunction } from './langs/MaybeFunction.js';
35
35
  export { memoize } from './langs/memoize.js';
36
36
  export { mixin } from './langs/mixin.js';
37
+ export { getObjectId } from './langs/getObjectId.js';
38
+ export { getGlobalStates, setGlobalStates } from './langs/getGlobalStates.js';
37
39
  export { AsyncCloser } from './runtime/AsyncCloser.js';
38
40
  export { Closer } from './runtime/Closer.js';
39
41
  export { isUUID } from './validations/isUUID.js';
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { Promises } from './asyncs/Promises';\n\n// arrays\nexport {\n firstOfMaybeArray,\n lastOfMaybeArray,\n arrayOfMaybeArray,\n objectOfMaybeArray,\n type MaybeArray,\n} from './arrays/MaybeArray';\nexport { arrayFromAsync } from './arrays/arrayFromAsync';\n\n// object\nexport { get } from './objects/get';\nexport { set } from './objects/set';\nexport { parseObjectPath } from './objects/parseObjectPath';\nexport { computeIfAbsent } from './objects/computeIfAbsent';\nexport { merge, type MergeOptions } from './objects/merge';\n\n// async\nexport { createLazyPromise, type LazyPromise } from './asyncs/createLazyPromise';\nexport { setAsyncInterval, clearAsyncInterval } from './asyncs/AsyncInterval';\nexport { type MaybePromise } from './asyncs/MaybePromise';\n// async - iterator\nexport { createAsyncIterator } from './asyncs/createAsyncIterator';\nexport { firstOfAsyncIterator } from './asyncs/firstOfAsyncIterator';\nexport { nextOfAsyncIterator } from './asyncs/nextOfAsyncIterator';\nexport { isIterator } from './asyncs/isIterator';\n\nexport { Promises } from './asyncs/Promises';\nexport const sleep = Promises.sleep;\nexport const isPromise = Promises.isPromise;\nexport { timeout, TimeoutError } from './asyncs/timeout';\n\n// langs\nexport { shallowEqual } from './langs/shallowEqual';\nexport { deepEqual } from './langs/deepEqual';\nexport { deepFreeze } from './langs/deepFreeze';\nexport { classOf } from './langs/classOf';\nexport { shallowClone } from './langs/shallowClone';\nexport { isClass } from './langs/isClass';\nexport { isDefined } from './langs/isDefined';\nexport { isEmptyObject } from './langs/isEmptyObject';\nexport { isPlainObject } from './langs/isPlainObject';\nexport { parseBoolean } from './langs/parseBoolean';\nexport { maybeFunction, type MaybeFunction } from './langs/MaybeFunction';\nexport { memoize } from './langs/memoize';\nexport { mixin } from './langs/mixin';\nexport type { MixinFunction, MixinInstance, MixinReturnValue } from './langs/mixin';\n\nexport { AsyncCloser } from './runtime/AsyncCloser';\nexport { Closer } from './runtime/Closer';\n\nexport { isUUID } from './validations/isUUID';\nexport { parseTimestamp } from './validations/parseTimestamp';\n\n// modules\nexport { parseModuleId, type ParsedModuleId } from './modules/parseModuleId';\nexport { isModule, type Module } from './modules/isModule';\n\n// logging\nexport { type Logger, type LogLevel } from './logging/Logger';\nexport { createLogger } from './logging/createLogger';\nexport { createNoopLogger } from './logging/createNoopLogger';\nexport { createChildLogger } from './logging/createChildLogger';\n\n// strings\nexport { pascalCase, camelCase } from './strings/camelCase';\nexport { renderTemplate } from './strings/renderTemplate';\nexport { formatBytes } from './strings/formatBytes';\n\n// i18n\nexport { createTranslate } from './i18n/createTranslate';\n\n// io\nexport { isBuffer } from './io/isBuffer';\nexport { isTransferable } from './io/isTransferable';\nexport { ArrayBuffers } from './io/ArrayBuffers';\nexport { ByteBuffer } from './io/ByteBuffer';\nexport { fromHexDump, toHexDump } from './io/dump';\nexport { Buffer } from './io/Buffer';\nexport { parseDataUri, type ParsedDataUri } from './io/parseDataUri';\nexport type { AbstractEncoding } from './io/AbstractEncoding';\n\n// browser\nexport { copy } from './browsers/copy';\nexport { download } from './browsers/download';\nexport { loadScripts, loadStyles } from './browsers/loaders';\nexport { getFileFromDataTransfer } from './browsers/getFileFromDataTransfer';\n\n// polyfills\nexport { getGlobalThis } from './runtime/getGlobalThis';\nexport { structuredClone } from './runtime/structuredClone';\n\n// crypto\nexport { randomUUID } from './crypto/randomUUID';\nexport { getRandomValues } from './crypto/getRandomValues';\nexport { sha1, sha256, sha384, sha512, hmac, type DigestOptions } from './crypto/hashing';\nexport { md5 } from './crypto/md5';\nexport { hex } from './crypto/base';\nexport { isULID, createULID, ulid, parseULID } from './crypto/ulid';\nexport { PEM } from './crypto/pem/pem';\n\n// math\nexport { createRandom } from './maths/random';\nexport { clamp } from './maths/clamp';\n\n// network\nexport {\n type FetchLike,\n createFetchWith,\n createFetchWithLogging,\n dumpResponse,\n dumpRequest,\n createFetchWithRetry,\n type FetchWithRetryOptions,\n} from './fetch';\n\n// bundled\nexport { default as ms } from './libs/ms';\n\n// error\nexport { Errors, DetailError, type ErrorDetail, type ErrorDetailInit } from './errors/Errors';\n// http\nexport { getHttpStatusText, isRetryableHttpStatus } from './fetch/HttpStatus';\n\nexport type * from './types';\n"],"names":["Promises","firstOfMaybeArray","lastOfMaybeArray","arrayOfMaybeArray","objectOfMaybeArray","arrayFromAsync","get","set","parseObjectPath","computeIfAbsent","merge","createLazyPromise","setAsyncInterval","clearAsyncInterval","createAsyncIterator","firstOfAsyncIterator","nextOfAsyncIterator","isIterator","sleep","isPromise","timeout","TimeoutError","shallowEqual","deepEqual","deepFreeze","classOf","shallowClone","isClass","isDefined","isEmptyObject","isPlainObject","parseBoolean","maybeFunction","memoize","mixin","AsyncCloser","Closer","isUUID","parseTimestamp","parseModuleId","isModule","createLogger","createNoopLogger","createChildLogger","pascalCase","camelCase","renderTemplate","formatBytes","createTranslate","isBuffer","isTransferable","ArrayBuffers","ByteBuffer","fromHexDump","toHexDump","Buffer","parseDataUri","copy","download","loadScripts","loadStyles","getFileFromDataTransfer","getGlobalThis","structuredClone","randomUUID","getRandomValues","sha1","sha256","sha384","sha512","hmac","md5","hex","isULID","createULID","ulid","parseULID","PEM","createRandom","clamp","createFetchWith","createFetchWithLogging","dumpResponse","dumpRequest","createFetchWithRetry","default","ms","Errors","DetailError","getHttpStatusText","isRetryableHttpStatus"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,QAAQ,QAAQ,oBAAoB;AAE7C,SAAS;AACT,SACEC,iBAAiB,EACjBC,gBAAgB,EAChBC,iBAAiB,EACjBC,kBAAkB,QAEb,sBAAsB;AAC7B,SAASC,cAAc,QAAQ,0BAA0B;AAEzD,SAAS;AACT,SAASC,GAAG,QAAQ,gBAAgB;AACpC,SAASC,GAAG,QAAQ,gBAAgB;AACpC,SAASC,eAAe,QAAQ,4BAA4B;AAC5D,SAASC,eAAe,QAAQ,4BAA4B;AAC5D,SAASC,KAAK,QAA2B,kBAAkB;AAE3D,QAAQ;AACR,SAASC,iBAAiB,QAA0B,6BAA6B;AACjF,SAASC,gBAAgB,EAAEC,kBAAkB,QAAQ,yBAAyB;AAE9E,mBAAmB;AACnB,SAASC,mBAAmB,QAAQ,+BAA+B;AACnE,SAASC,oBAAoB,QAAQ,gCAAgC;AACrE,SAASC,mBAAmB,QAAQ,+BAA+B;AACnE,SAASC,UAAU,QAAQ,sBAAsB;AAEjD,SAASjB,QAAQ,QAAQ,oBAAoB;AAC7C,OAAO,MAAMkB,QAAQlB,SAASkB,KAAK,CAAC;AACpC,OAAO,MAAMC,YAAYnB,SAASmB,SAAS,CAAC;AAC5C,SAASC,OAAO,EAAEC,YAAY,QAAQ,mBAAmB;AAEzD,QAAQ;AACR,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,SAAS,QAAQ,oBAAoB;AAC9C,SAASC,UAAU,QAAQ,qBAAqB;AAChD,SAASC,OAAO,QAAQ,kBAAkB;AAC1C,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,OAAO,QAAQ,kBAAkB;AAC1C,SAASC,SAAS,QAAQ,oBAAoB;AAC9C,SAASC,aAAa,QAAQ,wBAAwB;AACtD,SAASC,aAAa,QAAQ,wBAAwB;AACtD,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,aAAa,QAA4B,wBAAwB;AAC1E,SAASC,OAAO,QAAQ,kBAAkB;AAC1C,SAASC,KAAK,QAAQ,gBAAgB;AAGtC,SAASC,WAAW,QAAQ,wBAAwB;AACpD,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,cAAc,QAAQ,+BAA+B;AAE9D,UAAU;AACV,SAASC,aAAa,QAA6B,0BAA0B;AAC7E,SAASC,QAAQ,QAAqB,qBAAqB;AAI3D,SAASC,YAAY,QAAQ,yBAAyB;AACtD,SAASC,gBAAgB,QAAQ,6BAA6B;AAC9D,SAASC,iBAAiB,QAAQ,8BAA8B;AAEhE,UAAU;AACV,SAASC,UAAU,EAAEC,SAAS,QAAQ,sBAAsB;AAC5D,SAASC,cAAc,QAAQ,2BAA2B;AAC1D,SAASC,WAAW,QAAQ,wBAAwB;AAEpD,OAAO;AACP,SAASC,eAAe,QAAQ,yBAAyB;AAEzD,KAAK;AACL,SAASC,QAAQ,QAAQ,gBAAgB;AACzC,SAASC,cAAc,QAAQ,sBAAsB;AACrD,SAASC,YAAY,QAAQ,oBAAoB;AACjD,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,WAAW,EAAEC,SAAS,QAAQ,YAAY;AACnD,SAASC,MAAM,QAAQ,cAAc;AACrC,SAASC,YAAY,QAA4B,oBAAoB;AAGrE,UAAU;AACV,SAASC,IAAI,QAAQ,kBAAkB;AACvC,SAASC,QAAQ,QAAQ,sBAAsB;AAC/C,SAASC,WAAW,EAAEC,UAAU,QAAQ,qBAAqB;AAC7D,SAASC,uBAAuB,QAAQ,qCAAqC;AAE7E,YAAY;AACZ,SAASC,aAAa,QAAQ,0BAA0B;AACxD,SAASC,eAAe,QAAQ,4BAA4B;AAE5D,SAAS;AACT,SAASC,UAAU,QAAQ,sBAAsB;AACjD,SAASC,eAAe,QAAQ,2BAA2B;AAC3D,SAASC,IAAI,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,IAAI,QAA4B,mBAAmB;AAC1F,SAASC,GAAG,QAAQ,eAAe;AACnC,SAASC,GAAG,QAAQ,gBAAgB;AACpC,SAASC,MAAM,EAAEC,UAAU,EAAEC,IAAI,EAAEC,SAAS,QAAQ,gBAAgB;AACpE,SAASC,GAAG,QAAQ,mBAAmB;AAEvC,OAAO;AACP,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,KAAK,QAAQ,gBAAgB;AAEtC,UAAU;AACV,SAEEC,eAAe,EACfC,sBAAsB,EACtBC,YAAY,EACZC,WAAW,EACXC,oBAAoB,QAEf,UAAU;AAEjB,UAAU;AACV,SAASC,WAAWC,EAAE,QAAQ,YAAY;AAE1C,QAAQ;AACR,SAASC,MAAM,EAAEC,WAAW,QAAgD,kBAAkB;AAC9F,OAAO;AACP,SAASC,iBAAiB,EAAEC,qBAAqB,QAAQ,qBAAqB"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { Promises } from './asyncs/Promises';\n\n// arrays\nexport {\n firstOfMaybeArray,\n lastOfMaybeArray,\n arrayOfMaybeArray,\n objectOfMaybeArray,\n type MaybeArray,\n} from './arrays/MaybeArray';\nexport { arrayFromAsync } from './arrays/arrayFromAsync';\n\n// object\nexport { get } from './objects/get';\nexport { set } from './objects/set';\nexport { parseObjectPath } from './objects/parseObjectPath';\nexport { computeIfAbsent } from './objects/computeIfAbsent';\nexport { merge, type MergeOptions } from './objects/merge';\n\n// async\nexport { createLazyPromise, type LazyPromise } from './asyncs/createLazyPromise';\nexport { setAsyncInterval, clearAsyncInterval } from './asyncs/AsyncInterval';\nexport { type MaybePromise } from './asyncs/MaybePromise';\n// async - iterator\nexport { createAsyncIterator } from './asyncs/createAsyncIterator';\nexport { firstOfAsyncIterator } from './asyncs/firstOfAsyncIterator';\nexport { nextOfAsyncIterator } from './asyncs/nextOfAsyncIterator';\nexport { isIterator } from './asyncs/isIterator';\n\nexport { Promises } from './asyncs/Promises';\nexport const sleep = Promises.sleep;\nexport const isPromise = Promises.isPromise;\nexport { timeout, TimeoutError } from './asyncs/timeout';\n\n// langs\nexport { shallowEqual } from './langs/shallowEqual';\nexport { deepEqual } from './langs/deepEqual';\nexport { deepFreeze } from './langs/deepFreeze';\nexport { classOf } from './langs/classOf';\nexport { shallowClone } from './langs/shallowClone';\nexport { isClass } from './langs/isClass';\nexport { isDefined } from './langs/isDefined';\nexport { isEmptyObject } from './langs/isEmptyObject';\nexport { isPlainObject } from './langs/isPlainObject';\nexport { parseBoolean } from './langs/parseBoolean';\nexport { maybeFunction, type MaybeFunction } from './langs/MaybeFunction';\nexport { memoize } from './langs/memoize';\nexport { mixin } from './langs/mixin';\nexport type { MixinFunction, MixinInstance, MixinReturnValue } from './langs/mixin';\nexport { getObjectId } from './langs/getObjectId';\nexport { getGlobalStates, setGlobalStates } from './langs/getGlobalStates';\n\nexport { AsyncCloser } from './runtime/AsyncCloser';\nexport { Closer } from './runtime/Closer';\n\nexport { isUUID } from './validations/isUUID';\nexport { parseTimestamp } from './validations/parseTimestamp';\n\n// modules\nexport { parseModuleId, type ParsedModuleId } from './modules/parseModuleId';\nexport { isModule, type Module } from './modules/isModule';\n\n// logging\nexport { type Logger, type LogLevel } from './logging/Logger';\nexport { createLogger } from './logging/createLogger';\nexport { createNoopLogger } from './logging/createNoopLogger';\nexport { createChildLogger } from './logging/createChildLogger';\n\n// strings\nexport { pascalCase, camelCase } from './strings/camelCase';\nexport { renderTemplate } from './strings/renderTemplate';\nexport { formatBytes } from './strings/formatBytes';\n\n// i18n\nexport { createTranslate } from './i18n/createTranslate';\n\n// io\nexport { isBuffer } from './io/isBuffer';\nexport { isTransferable } from './io/isTransferable';\nexport { ArrayBuffers } from './io/ArrayBuffers';\nexport { ByteBuffer } from './io/ByteBuffer';\nexport { fromHexDump, toHexDump } from './io/dump';\nexport { Buffer } from './io/Buffer';\nexport { parseDataUri, type ParsedDataUri } from './io/parseDataUri';\nexport type { AbstractEncoding } from './io/AbstractEncoding';\n\n// browser\nexport { copy } from './browsers/copy';\nexport { download } from './browsers/download';\nexport { loadScripts, loadStyles } from './browsers/loaders';\nexport { getFileFromDataTransfer } from './browsers/getFileFromDataTransfer';\n\n// polyfills\nexport { getGlobalThis } from './runtime/getGlobalThis';\nexport { structuredClone } from './runtime/structuredClone';\n\n// crypto\nexport { randomUUID } from './crypto/randomUUID';\nexport { getRandomValues } from './crypto/getRandomValues';\nexport { sha1, sha256, sha384, sha512, hmac, type DigestOptions } from './crypto/hashing';\nexport { md5 } from './crypto/md5';\nexport { hex } from './crypto/base';\nexport { isULID, createULID, ulid, parseULID } from './crypto/ulid';\nexport { PEM } from './crypto/pem/pem';\n\n// math\nexport { createRandom } from './maths/random';\nexport { clamp } from './maths/clamp';\n\n// network\nexport {\n type FetchLike,\n createFetchWith,\n createFetchWithLogging,\n dumpResponse,\n dumpRequest,\n createFetchWithRetry,\n type FetchWithRetryOptions,\n} from './fetch';\n\n// bundled\nexport { default as ms } from './libs/ms';\n\n// error\nexport { Errors, DetailError, type ErrorDetail, type ErrorDetailInit } from './errors/Errors';\n// http\nexport { getHttpStatusText, isRetryableHttpStatus } from './fetch/HttpStatus';\n\nexport type * from './types';\n"],"names":["Promises","firstOfMaybeArray","lastOfMaybeArray","arrayOfMaybeArray","objectOfMaybeArray","arrayFromAsync","get","set","parseObjectPath","computeIfAbsent","merge","createLazyPromise","setAsyncInterval","clearAsyncInterval","createAsyncIterator","firstOfAsyncIterator","nextOfAsyncIterator","isIterator","sleep","isPromise","timeout","TimeoutError","shallowEqual","deepEqual","deepFreeze","classOf","shallowClone","isClass","isDefined","isEmptyObject","isPlainObject","parseBoolean","maybeFunction","memoize","mixin","getObjectId","getGlobalStates","setGlobalStates","AsyncCloser","Closer","isUUID","parseTimestamp","parseModuleId","isModule","createLogger","createNoopLogger","createChildLogger","pascalCase","camelCase","renderTemplate","formatBytes","createTranslate","isBuffer","isTransferable","ArrayBuffers","ByteBuffer","fromHexDump","toHexDump","Buffer","parseDataUri","copy","download","loadScripts","loadStyles","getFileFromDataTransfer","getGlobalThis","structuredClone","randomUUID","getRandomValues","sha1","sha256","sha384","sha512","hmac","md5","hex","isULID","createULID","ulid","parseULID","PEM","createRandom","clamp","createFetchWith","createFetchWithLogging","dumpResponse","dumpRequest","createFetchWithRetry","default","ms","Errors","DetailError","getHttpStatusText","isRetryableHttpStatus"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/io/ArrayBuffers.ts"],"sourcesContent":["import { classOf } from '../langs/classOf';\nimport { getGlobalThis } from '../runtime/getGlobalThis';\nimport { decodeBase64ToArrayBuffer, encodeArrayBufferToBase64 } from './base64';\nimport { isBuffer } from './isBuffer';\n\n/**\n * Various utils to work with {@link ArrayBuffer}\n *\n * @see https://github.com/tc39/proposal-arraybuffer-base64\n * @see https://github.com/tc39/proposal-resizablearraybuffer\n */\nexport interface ArrayBuffers {\n /**\n * isArrayBuffer check if the given value is an {@link ArrayBuffer}\n */\n isArrayBuffer(v: any): v is ArrayBuffer;\n\n /**\n * slice the given view with the given offset and length, will handle the {@link Buffer} as well\n *\n * @see {@link https://nodejs.org/api/buffer.html#bufslicestart-end Buffer.slice}\n */\n slice<T extends ArrayBufferView>(o: T, start?: number, end?: number): T;\n\n /**\n * asView convert the given value to given {@link TypedArray} view\n *\n * TypedArray can be {@link Buffer}, will avoid copy\n */\n asView<C extends ArrayBufferViewConstructor<unknown>>(\n TypedArray: C,\n v: BufferSource,\n byteOffset?: number,\n byteLength?: number,\n ): InstanceType<C>;\n\n /**\n * toString convert the given {@link BufferSource} to string\n */\n toString(v: BufferSource | string, encoding?: ToStringEncoding): string;\n\n /**\n * Returns true if encoding is the name of a supported character encoding, or false otherwise.\n */\n isEncoding(v?: string): v is ToStringEncoding;\n\n toJSON<T = any>(v: BufferSource | string, reviver?: (this: any, key: string, value: any) => any): T;\n\n /**\n * from convert the given value to {@link ArrayBuffer}\n */\n from(v: string | BufferSource, encoding?: ToStringEncoding): ArrayBuffer;\n\n from<C extends ArrayBufferViewConstructor<unknown>>(\n v: string | BufferSource,\n encoding: ToStringEncoding,\n TypedArray: C,\n ): C;\n\n /**\n * concat the given {@link BufferSource} to a new {@link ArrayBuffer}\n */\n concat(buffers: Array<BufferSource>, result?: ArrayBuffer, offset?: number): ArrayBuffer;\n\n fromBase64(v: string): Uint8Array;\n\n fromHex(v: string): Uint8Array;\n\n toBase64(v: BufferSource): string;\n\n toHex(v: BufferSource): string;\n\n resize(v: ArrayBuffer, newByteLength: number): ArrayBuffer;\n\n // truncate(v: ArrayBufferLike, len?: number): ArrayBufferLike;\n}\n\ntype ToStringEncoding =\n | 'ascii'\n | 'utf16le'\n // | 'utf-16le'\n | 'ucs2'\n | 'ucs-2'\n | 'base64'\n | 'base64url'\n | 'latin1'\n | 'binary'\n | 'utf8'\n | 'utf-8'\n | 'hex';\n\nexport class ArrayBuffers {\n static #nativeBufferAllowed: boolean = true;\n static #isBufferAvailable: undefined | boolean;\n\n static isNativeBufferAvailable() {\n // eslint-disable-next-line no-return-assign\n return (this.#isBufferAvailable ??= !(getGlobalThis().Buffer as any)?.isPollyfill?.());\n }\n\n static isNativeBufferAllowed() {\n return this.#nativeBufferAllowed && this.#isBufferAvailable;\n }\n\n static setNativeBufferAllowed(v: boolean) {\n this.#nativeBufferAllowed = v;\n }\n\n static isArrayBuffer = (v: any): v is ArrayBuffer => {\n return v instanceof ArrayBuffer;\n };\n\n static toArrayBuffer(v: BufferSource): ArrayBuffer {\n return v instanceof ArrayBuffer ? v : (v.buffer as ArrayBuffer);\n }\n\n static toUint8Array(v: BufferSource) {\n return ArrayBuffers.asView(Uint8Array, v);\n }\n\n static toBase64 = (v: BufferSource) => {\n if ('toBase64' in Uint8Array.prototype) {\n return this.toUint8Array(v).toBase64();\n }\n\n if (ArrayBuffers.isNativeBufferAllowed()) {\n return Buffer.from(ArrayBuffers.asView(Uint8Array, v)).toString('base64');\n }\n\n return encodeArrayBufferToBase64(this.toArrayBuffer(v));\n };\n\n static toHex = (v: BufferSource) => {\n if ('toHex' in Uint8Array.prototype) {\n return this.toUint8Array(v).toHex();\n }\n if (ArrayBuffers.isNativeBufferAllowed()) {\n return Buffer.from(ArrayBuffers.asView(Uint8Array, v)).toString('hex');\n }\n return ArrayBuffers.toString(v, 'hex');\n };\n\n static fromBase64 = (v: string) => {\n if ('fromBase64' in Uint8Array) {\n return Uint8Array.fromBase64(v);\n }\n if (ArrayBuffers.isNativeBufferAllowed()) {\n return Buffer.from(v, 'base64');\n }\n return this.toUint8Array(decodeBase64ToArrayBuffer(v));\n };\n\n static fromHex = (v: string) => {\n if ('fromHex' in Uint8Array) {\n return Uint8Array.fromHex(v);\n }\n return this.toUint8Array(ArrayBuffers.from(v, 'hex'));\n };\n\n static resize = (v: ArrayBufferLike, newByteLength?: number, maxByteLength?: number): ArrayBuffer => {\n if (newByteLength === undefined || newByteLength === null) {\n return v;\n }\n\n // Chrome 111, Nodejs 20\n if ('resize' in v && typeof v.resize === 'function') {\n if ('resizable' in v && v.resizable) {\n if ('maxByteLength' in v && typeof v.maxByteLength === 'number' && v.maxByteLength >= newByteLength) {\n v.resize(newByteLength);\n return v;\n }\n }\n }\n\n const old = v;\n const newBuf = new ArrayBuffer(newByteLength, { maxByteLength: maxByteLength });\n const oldView = new Uint8Array(old);\n const newView = new Uint8Array(newBuf);\n newView.set(oldView);\n return newBuf;\n };\n\n static slice = (o: TypedArray, start?: number, end?: number) => {\n // NodeJS Buffer slice is not the same as UInt8Array slice\n // https://nodejs.org/api/buffer.html#bufslicestart-end\n if (isBuffer(o)) {\n return Uint8Array.prototype.slice.call(o, start, end);\n }\n return o.slice(start, end);\n };\n\n static asView = <C extends ArrayBufferViewConstructor<unknown>, I extends InstanceType<C>>(\n TypedArray: C,\n v: BufferSource,\n byteOffset?: number,\n byteLength?: number,\n ): I => {\n if (v instanceof TypedArray && (byteOffset ?? 0) === 0 && byteLength === undefined) {\n return v as I;\n }\n if (ArrayBuffer.isView(v) || isBuffer(v)) {\n if (ArrayBuffers.isNativeBufferAllowed() && (TypedArray as any) === Buffer) {\n // new Buffer() is deprecated\n return Buffer.from(v.buffer, byteOffset, byteLength) as I;\n }\n return new TypedArray(v.buffer, v.byteOffset + (byteOffset ?? 0), byteLength ?? v.byteLength) as I;\n }\n return new TypedArray(v, byteOffset, byteLength) as I;\n };\n\n static toString = (buf: BufferSource | string, encoding: ToStringEncoding = 'utf8') => {\n // 'ascii' 'utf16le' | 'ucs2' | 'ucs-2' | 'base64' | 'base64url' | 'latin1' | 'binary' | 'hex'\n if (typeof buf === 'string') {\n switch (encoding) {\n case 'base64':\n return btoa(buf);\n case 'utf-8':\n case 'utf8':\n return buf;\n default:\n throw new Error(`[ArrayBuffers.toString] Unsupported encoding for string: ${encoding}`);\n }\n }\n if (ArrayBuffers.isNativeBufferAllowed()) {\n return Buffer.from(ArrayBuffers.asView(Uint8Array, buf)).toString(encoding);\n }\n // reference\n // https://github.com/feross/buffer/blob/master/index.js\n switch (encoding) {\n case 'hex': {\n const view: Uint8Array = ArrayBuffers.asView(Uint8Array, buf);\n return [...view].map((b) => hexLookupTable[b]).join('');\n }\n case 'base64': {\n return encodeArrayBufferToBase64(ArrayBuffers.asView(Uint8Array, buf));\n }\n case 'utf8':\n // falls through\n case 'utf-8':\n return new TextDecoder().decode(buf as any);\n case 'ascii': {\n const view: Uint8Array = ArrayBuffers.asView(Uint8Array, buf);\n return String.fromCharCode(...view.map((v) => v & 0x7f));\n }\n case 'latin1':\n // falls through\n case 'binary': {\n const view: Uint8Array = ArrayBuffers.asView(Uint8Array, buf);\n return String.fromCharCode(...view);\n }\n case 'ucs2':\n // falls through\n case 'ucs-2':\n // case 'utf-16le':\n // falls through\n case 'utf16le': {\n const view: Uint8Array = ArrayBuffers.asView(Uint8Array, buf);\n let res = '';\n // If length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < view.length - 1; i += 2) {\n res += String.fromCharCode(view[i] + view[i + 1] * 256);\n }\n return res;\n }\n default:\n throw new Error(`[ArrayBuffers.toString] Unknown encoding: ${encoding}`);\n }\n };\n\n static toJSON = (v: BufferSource | string, reviver?: (this: any, key: string, value: any) => any) => {\n return JSON.parse(ArrayBuffers.toString(v), reviver);\n };\n\n static alloc = (size: number, fill?: string | number, encoding?: ToStringEncoding) => {\n if (fill !== undefined) {\n if (typeof fill === 'number') {\n return new Uint8Array(size).fill(fill);\n }\n // as cast\n // https://stackoverflow.com/questions/73994091\n return ArrayBuffers.asView(Uint8Array, ArrayBuffers.from(fill, encoding)).slice(0, size);\n }\n return new ArrayBuffer(size);\n };\n\n static from = (\n v: string | BufferSource | ArrayLike<number> | Iterable<number>,\n encoding: ToStringEncoding = 'utf8',\n view?: any,\n ): any => {\n if (view) {\n return this.asView(view, this.from(v, encoding));\n }\n if (!v) {\n return new ArrayBuffer(0);\n }\n if (typeof v === 'string') {\n if (ArrayBuffers.isNativeBufferAllowed()) {\n return Buffer.from(v, encoding);\n }\n\n switch (encoding) {\n case 'utf-8':\n // falls through\n case 'utf8':\n return new TextEncoder().encode(v).buffer;\n case 'base64':\n // replaceAll need higher version of nodejs\n return decodeBase64ToArrayBuffer(v.replace(/[^0-9a-zA-Z=+/_]/g, ''));\n case 'hex':\n return new Uint8Array(v.match(/.{1,2}/g)!.map((byte) => parseInt(byte, 16))).buffer;\n default:\n throw new Error(`[ArrayBuffers.from] Unknown encoding: ${encoding}`);\n }\n }\n if (v instanceof ArrayBuffer) {\n return v;\n }\n // lost length\n if (ArrayBuffer.isView(v) || isBuffer(v)) {\n if (v.byteOffset !== 0) {\n // return v.buffer.slice(v.byteOffset, v.byteOffset + v.byteLength)\n throw new Error('ArrayBuffers.from do not support view with offset');\n }\n return v.buffer;\n }\n if (Array.isArray(v)) {\n return new Uint8Array(v);\n }\n const type = classOf(v);\n throw new TypeError(`ArrayBuffers.from unsupported type ${type}`);\n };\n\n static isEncoding = (encoding?: string) => {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n // case 'utf-16le':\n return true;\n default:\n return false;\n }\n };\n\n // static truncate = (a: ArrayBufferLike, len?: number) => {\n // if (len === 0) {\n // return new ArrayBuffer(0);\n // }\n // if (!len) {\n // return a;\n // }\n // if (a.byteLength > len) {\n // return a.slice(0, len);\n // } else if (a.byteLength < len) {\n // let b = new Uint8Array(len);\n // b.set(new Uint8Array(a));\n // return b;\n // }\n // return a;\n // };\n\n static concat = (buffers: Array<BufferSource>, result?: ArrayBuffer, offset = 0) => {\n // https://stackoverflow.com/questions/10786128/appending-arraybuffers\n\n const length = buffers.reduce((a, b) => a + b.byteLength, 0);\n const r = result ? new Uint8Array(result) : new Uint8Array(length);\n for (const buffer of buffers) {\n if (!buffer?.byteLength) continue;\n let n: Uint8Array;\n if (buffer instanceof ArrayBuffer) {\n n = new Uint8Array(buffer);\n } else if (ArrayBuffer.isView(buffer)) {\n n = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n } else {\n throw new Error(`ArrayBuffers.concat unsupported type ${classOf(buffer)}`);\n }\n r.set(n, offset);\n offset += buffer.byteLength;\n }\n return r.buffer;\n };\n}\n\nexport type TypedArray =\n | Uint8Array\n | Uint8ClampedArray\n | Uint16Array\n | Uint32Array\n | Int8Array\n | Int16Array\n | Int32Array\n | BigUint64Array\n | BigInt64Array\n | Float32Array\n | Float64Array;\n\ntype ArrayBufferViewConstructor<T> = new (buffer: ArrayBufferLike, byteOffset?: number, byteLength?: number) => T;\n\nconst hexLookupTable = (function () {\n const alphabet = '0123456789abcdef';\n const table = new Array(256);\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16;\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j];\n }\n }\n return table;\n})();\n\ndeclare global {\n interface ArrayBuffer {\n resize?: (newByteLength: number) => void;\n resizable?: boolean;\n }\n\n interface SharedArrayBuffer {\n resize?: (newByteLength: number) => void;\n resizable?: boolean;\n }\n\n interface Uint8Array {\n toBase64(): string;\n\n toHex(): string;\n }\n\n interface Uint8ArrayConstructor {\n fromBase64(v: string): Uint8Array;\n\n fromHex(v: string): Uint8Array;\n }\n}\n"],"names":["classOf","getGlobalThis","decodeBase64ToArrayBuffer","encodeArrayBufferToBase64","isBuffer","ArrayBuffers","nativeBufferAllowed","isBufferAvailable","isNativeBufferAvailable","Buffer","isPollyfill","isNativeBufferAllowed","setNativeBufferAllowed","v","isArrayBuffer","ArrayBuffer","toArrayBuffer","buffer","toUint8Array","asView","Uint8Array","toBase64","prototype","from","toString","toHex","fromBase64","fromHex","resize","newByteLength","maxByteLength","undefined","resizable","old","newBuf","oldView","newView","set","slice","o","start","end","call","TypedArray","byteOffset","byteLength","isView","buf","encoding","btoa","Error","view","map","b","hexLookupTable","join","TextDecoder","decode","String","fromCharCode","res","i","length","toJSON","reviver","JSON","parse","alloc","size","fill","TextEncoder","encode","replace","match","byte","parseInt","Array","isArray","type","TypeError","isEncoding","toLowerCase","concat","buffers","result","offset","reduce","a","r","n","alphabet","table","i16","j"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../src/io/ArrayBuffers.ts"],"sourcesContent":["import { classOf } from '../langs/classOf';\nimport { getGlobalThis } from '../runtime/getGlobalThis';\nimport { decodeBase64ToArrayBuffer, encodeArrayBufferToBase64 } from './base64';\nimport { isBuffer } from './isBuffer';\n\n/**\n * Various utils to work with {@link ArrayBuffer}\n *\n * @see https://github.com/tc39/proposal-arraybuffer-base64\n * @see https://github.com/tc39/proposal-resizablearraybuffer\n */\nexport interface ArrayBuffers {\n /**\n * isArrayBuffer check if the given value is an {@link ArrayBuffer}\n */\n isArrayBuffer(v: any): v is ArrayBuffer;\n\n /**\n * slice the given view with the given offset and length, will handle the {@link Buffer} as well\n *\n * @see {@link https://nodejs.org/api/buffer.html#bufslicestart-end Buffer.slice}\n */\n slice<T extends ArrayBufferView>(o: T, start?: number, end?: number): T;\n\n /**\n * asView convert the given value to given {@link TypedArray} view\n *\n * TypedArray can be {@link Buffer}, will avoid copy\n */\n asView<C extends ArrayBufferViewConstructor<unknown>>(\n TypedArray: C,\n v: BufferSource,\n byteOffset?: number,\n byteLength?: number,\n ): InstanceType<C>;\n\n /**\n * toString convert the given {@link BufferSource} to string\n */\n toString(v: BufferSource | string, encoding?: ToStringEncoding): string;\n\n /**\n * Returns true if encoding is the name of a supported character encoding, or false otherwise.\n */\n isEncoding(v?: string): v is ToStringEncoding;\n\n toJSON<T = any>(v: BufferSource | string, reviver?: (this: any, key: string, value: any) => any): T;\n\n /**\n * from convert the given value to {@link ArrayBuffer}\n */\n from(v: string | BufferSource, encoding?: ToStringEncoding): ArrayBuffer;\n\n from<C extends ArrayBufferViewConstructor<unknown>>(\n v: string | BufferSource,\n encoding: ToStringEncoding,\n TypedArray: C,\n ): C;\n\n /**\n * concat the given {@link BufferSource} to a new {@link ArrayBuffer}\n */\n concat(buffers: Array<BufferSource>, result?: ArrayBuffer, offset?: number): ArrayBuffer;\n\n fromBase64(v: string): Uint8Array;\n\n fromHex(v: string): Uint8Array;\n\n toBase64(v: BufferSource): string;\n\n toHex(v: BufferSource): string;\n\n resize(v: ArrayBuffer, newByteLength: number): ArrayBuffer;\n\n // truncate(v: ArrayBufferLike, len?: number): ArrayBufferLike;\n}\n\ntype ToStringEncoding =\n | 'ascii'\n | 'utf16le'\n // | 'utf-16le'\n | 'ucs2'\n | 'ucs-2'\n | 'base64'\n | 'base64url'\n | 'latin1'\n | 'binary'\n | 'utf8'\n | 'utf-8'\n | 'hex';\n\nexport class ArrayBuffers {\n static #nativeBufferAllowed: boolean = true;\n static #isBufferAvailable: undefined | boolean;\n\n static isNativeBufferAvailable() {\n // eslint-disable-next-line no-return-assign\n return (this.#isBufferAvailable ??= !(getGlobalThis().Buffer as any)?.isPollyfill?.());\n }\n\n static isNativeBufferAllowed() {\n return this.#nativeBufferAllowed && this.#isBufferAvailable;\n }\n\n static setNativeBufferAllowed(v: boolean) {\n this.#nativeBufferAllowed = v;\n }\n\n static isArrayBuffer = (v: any): v is ArrayBuffer => {\n return v instanceof ArrayBuffer;\n };\n\n static toArrayBuffer(v: BufferSource): ArrayBuffer {\n return v instanceof ArrayBuffer ? v : (v.buffer as ArrayBuffer);\n }\n\n static toUint8Array(v: BufferSource) {\n return ArrayBuffers.asView(Uint8Array, v);\n }\n\n static toBase64 = (v: BufferSource) => {\n if ('toBase64' in Uint8Array.prototype) {\n return this.toUint8Array(v).toBase64();\n }\n\n if (ArrayBuffers.isNativeBufferAllowed()) {\n return Buffer.from(ArrayBuffers.asView(Uint8Array, v)).toString('base64');\n }\n\n return encodeArrayBufferToBase64(this.toArrayBuffer(v));\n };\n\n static toHex = (v: BufferSource) => {\n if ('toHex' in Uint8Array.prototype) {\n return this.toUint8Array(v).toHex();\n }\n if (ArrayBuffers.isNativeBufferAllowed()) {\n return Buffer.from(ArrayBuffers.asView(Uint8Array, v)).toString('hex');\n }\n return ArrayBuffers.toString(v, 'hex');\n };\n\n static fromBase64 = (v: string) => {\n if ('fromBase64' in Uint8Array) {\n return Uint8Array.fromBase64(v);\n }\n if (ArrayBuffers.isNativeBufferAllowed()) {\n return Buffer.from(v, 'base64');\n }\n return this.toUint8Array(decodeBase64ToArrayBuffer(v));\n };\n\n static fromHex = (v: string) => {\n if ('fromHex' in Uint8Array) {\n return Uint8Array.fromHex(v);\n }\n return this.toUint8Array(ArrayBuffers.from(v, 'hex'));\n };\n\n static resize = (v: ArrayBuffer, newByteLength?: number, maxByteLength?: number): ArrayBuffer => {\n if (newByteLength === undefined || newByteLength === null) {\n return v;\n }\n\n // Chrome 111, Nodejs 20\n if ('resize' in v && typeof v.resize === 'function') {\n if ('resizable' in v && v.resizable) {\n if ('maxByteLength' in v && typeof v.maxByteLength === 'number' && v.maxByteLength >= newByteLength) {\n v.resize(newByteLength);\n return v as ArrayBuffer;\n }\n }\n }\n\n const old = v;\n const newBuf = new ArrayBuffer(newByteLength, { maxByteLength: maxByteLength });\n const oldView = new Uint8Array(old);\n const newView = new Uint8Array(newBuf);\n newView.set(oldView);\n return newBuf;\n };\n\n static slice = (o: TypedArray, start?: number, end?: number) => {\n // NodeJS Buffer slice is not the same as UInt8Array slice\n // https://nodejs.org/api/buffer.html#bufslicestart-end\n if (isBuffer(o)) {\n return Uint8Array.prototype.slice.call(o, start, end);\n }\n return o.slice(start, end);\n };\n\n static asView = <C extends ArrayBufferViewConstructor<unknown>, I extends InstanceType<C>>(\n TypedArray: C,\n v: BufferSource,\n byteOffset?: number,\n byteLength?: number,\n ): I => {\n if (v instanceof TypedArray && (byteOffset ?? 0) === 0 && byteLength === undefined) {\n return v as I;\n }\n if (ArrayBuffer.isView(v) || isBuffer(v)) {\n if (ArrayBuffers.isNativeBufferAllowed() && (TypedArray as any) === Buffer) {\n // new Buffer() is deprecated\n return Buffer.from(v.buffer, byteOffset, byteLength) as I;\n }\n return new TypedArray(v.buffer, v.byteOffset + (byteOffset ?? 0), byteLength ?? v.byteLength) as I;\n }\n return new TypedArray(v, byteOffset, byteLength) as I;\n };\n\n static toString = (buf: BufferSource | string, encoding: ToStringEncoding = 'utf8') => {\n // 'ascii' 'utf16le' | 'ucs2' | 'ucs-2' | 'base64' | 'base64url' | 'latin1' | 'binary' | 'hex'\n if (typeof buf === 'string') {\n switch (encoding) {\n case 'base64':\n return btoa(buf);\n case 'utf-8':\n case 'utf8':\n return buf;\n default:\n throw new Error(`[ArrayBuffers.toString] Unsupported encoding for string: ${encoding}`);\n }\n }\n if (ArrayBuffers.isNativeBufferAllowed()) {\n return Buffer.from(ArrayBuffers.asView(Uint8Array, buf)).toString(encoding);\n }\n // reference\n // https://github.com/feross/buffer/blob/master/index.js\n switch (encoding) {\n case 'hex': {\n const view: Uint8Array = ArrayBuffers.asView(Uint8Array, buf);\n return [...view].map((b) => hexLookupTable[b]).join('');\n }\n case 'base64': {\n return encodeArrayBufferToBase64(ArrayBuffers.asView(Uint8Array, buf));\n }\n case 'utf8':\n // falls through\n case 'utf-8':\n return new TextDecoder().decode(buf as any);\n case 'ascii': {\n const view: Uint8Array = ArrayBuffers.asView(Uint8Array, buf);\n return String.fromCharCode(...view.map((v) => v & 0x7f));\n }\n case 'latin1':\n // falls through\n case 'binary': {\n const view: Uint8Array = ArrayBuffers.asView(Uint8Array, buf);\n return String.fromCharCode(...view);\n }\n case 'ucs2':\n // falls through\n case 'ucs-2':\n // case 'utf-16le':\n // falls through\n case 'utf16le': {\n const view: Uint8Array = ArrayBuffers.asView(Uint8Array, buf);\n let res = '';\n // If length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < view.length - 1; i += 2) {\n res += String.fromCharCode(view[i] + view[i + 1] * 256);\n }\n return res;\n }\n default:\n throw new Error(`[ArrayBuffers.toString] Unknown encoding: ${encoding}`);\n }\n };\n\n static toJSON = (v: BufferSource | string, reviver?: (this: any, key: string, value: any) => any) => {\n return JSON.parse(ArrayBuffers.toString(v), reviver);\n };\n\n static alloc = (size: number, fill?: string | number, encoding?: ToStringEncoding) => {\n if (fill !== undefined) {\n if (typeof fill === 'number') {\n return new Uint8Array(size).fill(fill);\n }\n // as cast\n // https://stackoverflow.com/questions/73994091\n return ArrayBuffers.asView(Uint8Array, ArrayBuffers.from(fill, encoding)).slice(0, size);\n }\n return new ArrayBuffer(size);\n };\n\n static from = (\n v: string | BufferSource | ArrayLike<number> | Iterable<number>,\n encoding: ToStringEncoding = 'utf8',\n view?: any,\n ): any => {\n if (view) {\n return this.asView(view, this.from(v, encoding));\n }\n if (!v) {\n return new ArrayBuffer(0);\n }\n if (typeof v === 'string') {\n if (ArrayBuffers.isNativeBufferAllowed()) {\n return Buffer.from(v, encoding);\n }\n\n switch (encoding) {\n case 'utf-8':\n // falls through\n case 'utf8':\n return new TextEncoder().encode(v).buffer;\n case 'base64':\n // replaceAll need higher version of nodejs\n return decodeBase64ToArrayBuffer(v.replace(/[^0-9a-zA-Z=+/_]/g, ''));\n case 'hex':\n return new Uint8Array(v.match(/.{1,2}/g)!.map((byte) => parseInt(byte, 16))).buffer;\n default:\n throw new Error(`[ArrayBuffers.from] Unknown encoding: ${encoding}`);\n }\n }\n if (v instanceof ArrayBuffer) {\n return v;\n }\n // lost length\n if (ArrayBuffer.isView(v) || isBuffer(v)) {\n if (v.byteOffset !== 0) {\n // return v.buffer.slice(v.byteOffset, v.byteOffset + v.byteLength)\n throw new Error('ArrayBuffers.from do not support view with offset');\n }\n return v.buffer;\n }\n if (Array.isArray(v)) {\n return new Uint8Array(v);\n }\n const type = classOf(v);\n throw new TypeError(`ArrayBuffers.from unsupported type ${type}`);\n };\n\n static isEncoding = (encoding?: string) => {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n // case 'utf-16le':\n return true;\n default:\n return false;\n }\n };\n\n // static truncate = (a: ArrayBufferLike, len?: number) => {\n // if (len === 0) {\n // return new ArrayBuffer(0);\n // }\n // if (!len) {\n // return a;\n // }\n // if (a.byteLength > len) {\n // return a.slice(0, len);\n // } else if (a.byteLength < len) {\n // let b = new Uint8Array(len);\n // b.set(new Uint8Array(a));\n // return b;\n // }\n // return a;\n // };\n\n static concat = (buffers: Array<BufferSource>, result?: ArrayBuffer, offset = 0): ArrayBuffer => {\n // https://stackoverflow.com/questions/10786128/appending-arraybuffers\n\n const length = buffers.reduce((a, b) => a + b.byteLength, 0);\n const r = result ? new Uint8Array(result) : new Uint8Array(length);\n for (const buffer of buffers) {\n if (!buffer?.byteLength) continue;\n let n: Uint8Array;\n if (buffer instanceof ArrayBuffer) {\n n = new Uint8Array(buffer);\n } else if (ArrayBuffer.isView(buffer)) {\n n = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n } else {\n throw new Error(`ArrayBuffers.concat unsupported type ${classOf(buffer)}`);\n }\n r.set(n, offset);\n offset += buffer.byteLength;\n }\n return r.buffer;\n };\n}\n\nexport type TypedArray =\n | Uint8Array\n | Uint8ClampedArray\n | Uint16Array\n | Uint32Array\n | Int8Array\n | Int16Array\n | Int32Array\n | BigUint64Array\n | BigInt64Array\n | Float32Array\n | Float64Array;\n\ntype ArrayBufferViewConstructor<T> = new (buffer: ArrayBufferLike, byteOffset?: number, byteLength?: number) => T;\n\nconst hexLookupTable = (function () {\n const alphabet = '0123456789abcdef';\n const table = new Array(256);\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16;\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j];\n }\n }\n return table;\n})();\n\ndeclare global {\n interface ArrayBuffer {\n resize?: (newByteLength: number) => void;\n resizable?: boolean;\n }\n\n interface ArrayBufferConstructor {\n new (byteLength: number, opts?: { maxByteLength?: number }): ArrayBuffer;\n }\n\n interface SharedArrayBuffer {\n resize?: (newByteLength: number) => void;\n resizable?: boolean;\n }\n\n interface Uint8Array {\n toBase64(): string;\n\n toHex(): string;\n }\n\n interface Uint8ArrayConstructor {\n fromBase64(v: string): Uint8Array;\n\n fromHex(v: string): Uint8Array;\n }\n}\n"],"names":["classOf","getGlobalThis","decodeBase64ToArrayBuffer","encodeArrayBufferToBase64","isBuffer","ArrayBuffers","nativeBufferAllowed","isBufferAvailable","isNativeBufferAvailable","Buffer","isPollyfill","isNativeBufferAllowed","setNativeBufferAllowed","v","isArrayBuffer","ArrayBuffer","toArrayBuffer","buffer","toUint8Array","asView","Uint8Array","toBase64","prototype","from","toString","toHex","fromBase64","fromHex","resize","newByteLength","maxByteLength","undefined","resizable","old","newBuf","oldView","newView","set","slice","o","start","end","call","TypedArray","byteOffset","byteLength","isView","buf","encoding","btoa","Error","view","map","b","hexLookupTable","join","TextDecoder","decode","String","fromCharCode","res","i","length","toJSON","reviver","JSON","parse","alloc","size","fill","TextEncoder","encode","replace","match","byte","parseInt","Array","isArray","type","TypeError","isEncoding","toLowerCase","concat","buffers","result","offset","reduce","a","r","n","alphabet","table","i16","j"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}