@wener/utils 1.1.11 → 1.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +5 -5
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/server.cjs.map +1 -1
- package/dist/esm/index.js +4 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/server.js.map +1 -1
- package/dist/system/index.js +5 -5
- package/dist/system/index.js.map +1 -1
- package/dist/system/server.js.map +1 -1
- package/lib/asyncs/AsyncInterval.js +1 -1
- package/lib/asyncs/AsyncInterval.js.map +1 -1
- package/lib/browsers/copy.js +2 -1
- package/lib/browsers/copy.js.map +1 -1
- package/lib/browsers/getFileFromDataTransfer.js +3 -2
- package/lib/browsers/getFileFromDataTransfer.js.map +1 -1
- package/lib/crypto/getRandomValues.js +6 -4
- package/lib/crypto/getRandomValues.js.map +1 -1
- package/lib/crypto/pem/pem.js +3 -2
- package/lib/crypto/pem/pem.js.map +1 -1
- package/lib/crypto/randomUUID.js +2 -1
- package/lib/crypto/randomUUID.js.map +1 -1
- package/lib/crypto/ulid.js +3 -3
- package/lib/crypto/ulid.js.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/io/ArrayBuffers.js +165 -142
- package/lib/io/ArrayBuffers.js.map +1 -1
- package/lib/io/Buffer.js +6 -5
- package/lib/io/Buffer.js.map +1 -1
- package/lib/io/isBuffer.js +2 -1
- package/lib/io/isBuffer.js.map +1 -1
- package/lib/io/isTransferable.js +1 -1
- package/lib/io/isTransferable.js.map +1 -1
- package/lib/langs/parseBoolean.js.map +1 -1
- package/lib/libs/ms.js +117 -0
- package/lib/libs/ms.js.map +1 -0
- package/lib/logging/createLogger.js +2 -1
- package/lib/logging/createLogger.js.map +1 -1
- package/lib/maths/random.js +2 -1
- package/lib/maths/random.js.map +1 -1
- package/lib/modules/parseModuleId.js +2 -1
- package/lib/modules/parseModuleId.js.map +1 -1
- package/lib/servers/createProxyFetch.js +1 -1
- package/lib/servers/createProxyFetch.js.map +1 -1
- package/lib/servers/polyfillFetch.js.map +1 -1
- package/package.json +2 -1
- package/src/index.ts +3 -0
- package/src/langs/parseBoolean.ts +1 -1
- package/src/libs/README.md +1 -0
- package/src/libs/ms.ts +205 -0
- package/src/servers/polyfillFetch.ts +1 -0
- package/src/servers/polyfillWebSocket.ts +14 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sources":["../../src/servers/polyfillCrypto.ts","../../src/servers/polyfillFetch.ts","../../src/servers/polyfillJsDom.ts","../../src/servers/polyfillBrowser.ts","../../src/servers/createProxyFetch.ts"],"sourcesContent":["export async function polyfillCrypto() {\n if ('crypto' in globalThis) {\n return false;\n }\n globalThis.crypto = (await import('node:crypto')).webcrypto as Crypto;\n return true;\n}\n","import type { MaybePromise } from '../asyncs/MaybePromise';\n\nexport function polyfillFetch(nodeFetch: typeof import('node-fetch')): boolean;\nexport function polyfillFetch(nodeFetch?: undefined): Promise<boolean>;\nexport function polyfillFetch(nodeFetch?: typeof import('node-fetch')): MaybePromise<boolean> {\n if ('fetch' in globalThis) {\n return false;\n }\n // sync mode\n if (nodeFetch) {\n const { default: fetch, Response, Headers, Request, AbortError, FetchError, FormData, Blob, File } = nodeFetch;\n Object.assign(globalThis, {\n fetch,\n Response,\n Headers,\n Request,\n AbortError,\n FetchError,\n FormData,\n Blob,\n File,\n });\n return true;\n }\n return import('node-fetch').then((v) => polyfillFetch(v));\n}\n","import type { ConstructorOptions, ResourceLoaderConstructorOptions } from 'jsdom';\n\nexport async function polyfillJsDom() {\n if (typeof window !== 'undefined') {\n return false;\n }\n\n const { ResourceLoader, JSDOM } = await import('jsdom');\n\n // https://github.com/lukechilds/window/blob/master/src/index.js\n // eslint-disable-next-line @typescript-eslint/no-extraneous-class\n class Window {\n constructor(opts: ResourceLoaderConstructorOptions & ConstructorOptions = {}) {\n const { proxy, strictSSL, userAgent, ...jsdomOpts } = opts;\n const resources = new ResourceLoader({\n proxy,\n strictSSL,\n userAgent,\n });\n return new JSDOM(\n '',\n Object.assign(jsdomOpts, {\n resources,\n }),\n ).window;\n }\n }\n\n // https://github.com/lukechilds/browser-env/blob/master/src/index.js\n // Default jsdom config.\n // These settings must override any custom settings to make sure we can iterate\n // over the window object.\n const defaultJsdomConfig = {\n // features: {\n // FetchExternalResources: false,\n // ProcessExternalResources: false,\n // },\n };\n // IIFE executed on import to return an array of global Node.js properties that\n // conflict with global browser properties.\n const protectedProperties = (() =>\n Object.getOwnPropertyNames(new Window(defaultJsdomConfig)).filter(\n (prop) => typeof globalThis[prop as keyof typeof globalThis] !== 'undefined',\n ))();\n\n function installEnv(...args: any[]) {\n // Sets up global browser environment\n // Extract options from args\n const properties = args.filter((arg: any) => Array.isArray(arg))[0];\n const userJsdomConfig = args.filter((arg: any) => !Array.isArray(arg))[0];\n\n // Create window object\n const window = new Window(Object.assign({}, userJsdomConfig, defaultJsdomConfig));\n\n // Get all global browser properties\n Object.getOwnPropertyNames(window)\n\n // Remove protected properties\n .filter((prop) => !protectedProperties.includes(prop))\n\n // If we're only applying specific required properties remove everything else\n .filter((prop) => !(properties && properties.indexOf(prop) === -1))\n .filter((prop) => {\n switch (prop) {\n case 'undefined':\n return false;\n }\n return true;\n })\n\n // Copy what's left to the Node.js global scope\n .forEach((prop) => {\n // console.debug(`define globalThis.${prop}`);\n Object.defineProperty(globalThis, prop, {\n configurable: true,\n get: () => window[prop as keyof Window] as any,\n });\n });\n\n return window;\n }\n\n installEnv({ url: 'http://localhost' });\n return true;\n}\n","import { polyfillCrypto } from './polyfillCrypto';\nimport { polyfillFetch } from './polyfillFetch';\nimport { polyfillJsDom } from './polyfillJsDom';\n\n/**\n * Polyfills the browser environment with the necessary APIs for the server.\n * Currently, this includes:\n * - `window`\n * - `document`\n * - `fetch`\n * - `crypto`\n */\nexport async function polyfillBrowser() {\n await polyfillCrypto();\n await polyfillFetch();\n await polyfillJsDom();\n}\n","import { FetchLike } from '../fetch';\n\nexport function createProxyFetch(proxy?: string, fetch?: FetchLike): FetchLike {\n if (!proxy) {\n return fetch || globalThis.fetch;\n }\n\n let agent: any;\n const Request = globalThis.Request;\n let NodeRequest: any;\n let NodeFetch: any;\n return async (url, init?: RequestInit) => {\n if (!agent) {\n const { default: createHttpsProxyAgent } = await import('https-proxy-agent');\n agent = createHttpsProxyAgent(proxy);\n }\n\n // node-fetch 才可以,node v18 fetch 不支持\n if (!NodeRequest) {\n ({ Request: NodeRequest, default: NodeFetch } = await import('node-fetch'));\n }\n\n fetch ||= NodeFetch;\n\n if (url instanceof Request) {\n return (fetch as any)(new Request(url, { agent } as any));\n }\n if ((url as any) instanceof NodeRequest) {\n return (fetch as any)(new NodeRequest(url, { agent } as any));\n }\n return (fetch as any)(url, {\n ...init,\n agent,\n } as any);\n };\n}\n"],"names":["polyfillCrypto","module","polyfillFetch","nodeFetch","fetch","Response","Headers","Request","AbortError","FetchError","FormData","Blob","File","v","polyfillJsDom","ResourceLoader","JSDOM","Window","opts","proxy","strictSSL","userAgent","jsdomOpts","resources","defaultJsdomConfig","protectedProperties","prop","installEnv","args","properties","arg","userJsdomConfig","window","polyfillBrowser","createProxyFetch","agent","NodeRequest","NodeFetch","url","init","createHttpsProxyAgent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sources":["../../src/servers/polyfillCrypto.ts","../../src/servers/polyfillFetch.ts","../../src/servers/polyfillJsDom.ts","../../src/servers/polyfillBrowser.ts","../../src/servers/createProxyFetch.ts"],"sourcesContent":["export async function polyfillCrypto() {\n if ('crypto' in globalThis) {\n return false;\n }\n globalThis.crypto = (await import('node:crypto')).webcrypto as Crypto;\n return true;\n}\n","import type { MaybePromise } from '../asyncs/MaybePromise';\n\nexport function polyfillFetch(nodeFetch: typeof import('node-fetch')): boolean;\nexport function polyfillFetch(nodeFetch?: undefined): Promise<boolean>;\nexport function polyfillFetch(nodeFetch?: typeof import('node-fetch')): MaybePromise<boolean> {\n if ('fetch' in globalThis) {\n return false;\n }\n // sync mode\n if (nodeFetch) {\n const { default: fetch, Response, Headers, Request, AbortError, FetchError, FormData, Blob, File } = nodeFetch;\n Object.assign(globalThis, {\n fetch,\n Response,\n Headers,\n Request,\n AbortError,\n FetchError,\n FormData,\n Blob,\n File,\n });\n // abort controller\n return true;\n }\n return import('node-fetch').then((v) => polyfillFetch(v));\n}\n","import type { ConstructorOptions, ResourceLoaderConstructorOptions } from 'jsdom';\n\nexport async function polyfillJsDom() {\n if (typeof window !== 'undefined') {\n return false;\n }\n\n const { ResourceLoader, JSDOM } = await import('jsdom');\n\n // https://github.com/lukechilds/window/blob/master/src/index.js\n // eslint-disable-next-line @typescript-eslint/no-extraneous-class\n class Window {\n constructor(opts: ResourceLoaderConstructorOptions & ConstructorOptions = {}) {\n const { proxy, strictSSL, userAgent, ...jsdomOpts } = opts;\n const resources = new ResourceLoader({\n proxy,\n strictSSL,\n userAgent,\n });\n return new JSDOM(\n '',\n Object.assign(jsdomOpts, {\n resources,\n }),\n ).window;\n }\n }\n\n // https://github.com/lukechilds/browser-env/blob/master/src/index.js\n // Default jsdom config.\n // These settings must override any custom settings to make sure we can iterate\n // over the window object.\n const defaultJsdomConfig = {\n // features: {\n // FetchExternalResources: false,\n // ProcessExternalResources: false,\n // },\n };\n // IIFE executed on import to return an array of global Node.js properties that\n // conflict with global browser properties.\n const protectedProperties = (() =>\n Object.getOwnPropertyNames(new Window(defaultJsdomConfig)).filter(\n (prop) => typeof globalThis[prop as keyof typeof globalThis] !== 'undefined',\n ))();\n\n function installEnv(...args: any[]) {\n // Sets up global browser environment\n // Extract options from args\n const properties = args.filter((arg: any) => Array.isArray(arg))[0];\n const userJsdomConfig = args.filter((arg: any) => !Array.isArray(arg))[0];\n\n // Create window object\n const window = new Window(Object.assign({}, userJsdomConfig, defaultJsdomConfig));\n\n // Get all global browser properties\n Object.getOwnPropertyNames(window)\n\n // Remove protected properties\n .filter((prop) => !protectedProperties.includes(prop))\n\n // If we're only applying specific required properties remove everything else\n .filter((prop) => !(properties && properties.indexOf(prop) === -1))\n .filter((prop) => {\n switch (prop) {\n case 'undefined':\n return false;\n }\n return true;\n })\n\n // Copy what's left to the Node.js global scope\n .forEach((prop) => {\n // console.debug(`define globalThis.${prop}`);\n Object.defineProperty(globalThis, prop, {\n configurable: true,\n get: () => window[prop as keyof Window] as any,\n });\n });\n\n return window;\n }\n\n installEnv({ url: 'http://localhost' });\n return true;\n}\n","import { polyfillCrypto } from './polyfillCrypto';\nimport { polyfillFetch } from './polyfillFetch';\nimport { polyfillJsDom } from './polyfillJsDom';\n\n/**\n * Polyfills the browser environment with the necessary APIs for the server.\n * Currently, this includes:\n * - `window`\n * - `document`\n * - `fetch`\n * - `crypto`\n */\nexport async function polyfillBrowser() {\n await polyfillCrypto();\n await polyfillFetch();\n await polyfillJsDom();\n}\n","import { FetchLike } from '../fetch';\n\nexport function createProxyFetch(proxy?: string, fetch?: FetchLike): FetchLike {\n if (!proxy) {\n return fetch || globalThis.fetch;\n }\n\n let agent: any;\n const Request = globalThis.Request;\n let NodeRequest: any;\n let NodeFetch: any;\n return async (url, init?: RequestInit) => {\n if (!agent) {\n const { default: createHttpsProxyAgent } = await import('https-proxy-agent');\n agent = createHttpsProxyAgent(proxy);\n }\n\n // node-fetch 才可以,node v18 fetch 不支持\n if (!NodeRequest) {\n ({ Request: NodeRequest, default: NodeFetch } = await import('node-fetch'));\n }\n\n fetch ||= NodeFetch;\n\n if (url instanceof Request) {\n return (fetch as any)(new Request(url, { agent } as any));\n }\n if ((url as any) instanceof NodeRequest) {\n return (fetch as any)(new NodeRequest(url, { agent } as any));\n }\n return (fetch as any)(url, {\n ...init,\n agent,\n } as any);\n };\n}\n"],"names":["polyfillCrypto","module","polyfillFetch","nodeFetch","fetch","Response","Headers","Request","AbortError","FetchError","FormData","Blob","File","v","polyfillJsDom","ResourceLoader","JSDOM","Window","opts","proxy","strictSSL","userAgent","jsdomOpts","resources","defaultJsdomConfig","protectedProperties","prop","installEnv","args","properties","arg","userJsdomConfig","window","polyfillBrowser","createProxyFetch","agent","NodeRequest","NodeFetch","url","init","createHttpsProxyAgent"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncInterval.js","sources":["../../src/asyncs/AsyncInterval.ts"],"sourcesContent":["export type AsyncIntervalIdentifier = any;\n\nexport function setAsyncInterval(cb: () => void, interval: number, initial = interval): AsyncIntervalIdentifier {\n let id: any;\n const handler = async () => {\n await cb();\n id = setTimeout(handler, interval);\n };\n id = setTimeout(handler, initial);\n return () => id;\n}\n\nexport function clearAsyncInterval(v: AsyncIntervalIdentifier) {\n clearTimeout(v?.());\n}\n"],"names":[],"mappings":"AAEO,SAAS,gBAAiB,CAAA,EAAA,EAAgB,QAAkB,EAAA,OAAA,GAAU,QAAmC,EAAA;AAC9G,EAAI,IAAA,EAAA,CAAA;AACJ,EAAA,MAAM,UAAU,YAAY;AAC1B,IAAA,MAAM,EAAG,EAAA,CAAA;AACT,IAAK,EAAA,GAAA,UAAA,CAAW,SAAS,QAAQ,CAAA,CAAA;AAAA,GACnC,CAAA;AACA,EAAK,EAAA,GAAA,UAAA,CAAW,SAAS,OAAO,CAAA,CAAA;AAChC,EAAA,OAAO,MAAM,EAAA,CAAA;AACf,CAAA;AAEO,SAAS,mBAAmB,CAA4B,EAAA;AAC7D,EAAA,YAAA,CAAa,
|
|
1
|
+
{"version":3,"file":"AsyncInterval.js","sources":["../../src/asyncs/AsyncInterval.ts"],"sourcesContent":["export type AsyncIntervalIdentifier = any;\n\nexport function setAsyncInterval(cb: () => void, interval: number, initial = interval): AsyncIntervalIdentifier {\n let id: any;\n const handler = async () => {\n await cb();\n id = setTimeout(handler, interval);\n };\n id = setTimeout(handler, initial);\n return () => id;\n}\n\nexport function clearAsyncInterval(v: AsyncIntervalIdentifier) {\n clearTimeout(v?.());\n}\n"],"names":[],"mappings":"AAEO,SAAS,gBAAiB,CAAA,EAAA,EAAgB,QAAkB,EAAA,OAAA,GAAU,QAAmC,EAAA;AAC9G,EAAI,IAAA,EAAA,CAAA;AACJ,EAAA,MAAM,UAAU,YAAY;AAC1B,IAAA,MAAM,EAAG,EAAA,CAAA;AACT,IAAK,EAAA,GAAA,UAAA,CAAW,SAAS,QAAQ,CAAA,CAAA;AAAA,GACnC,CAAA;AACA,EAAK,EAAA,GAAA,UAAA,CAAW,SAAS,OAAO,CAAA,CAAA;AAChC,EAAA,OAAO,MAAM,EAAA,CAAA;AACf,CAAA;AAEO,SAAS,mBAAmB,CAA4B,EAAA;AAC7D,EAAA,YAAA,CAAa,CAAK,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAA,EAAA,CAAA,CAAA;AACpB;;;;"}
|
package/lib/browsers/copy.js
CHANGED
|
@@ -37,7 +37,8 @@ function initCopy() {
|
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
39
|
function copy(content) {
|
|
40
|
-
|
|
40
|
+
var _a, _b;
|
|
41
|
+
if ((_b = (_a = window.navigator) == null ? void 0 : _a.clipboard) == null ? void 0 : _b.writeText) {
|
|
41
42
|
return window.navigator.clipboard.writeText(content);
|
|
42
43
|
}
|
|
43
44
|
if (!_copy) {
|
package/lib/browsers/copy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy.js","sources":["../../src/browsers/copy.ts"],"sourcesContent":["import type { MaybePromise } from '../asyncs/MaybePromise';\n\nlet _copy: (s: any) => void;\n\n// https://gist.github.com/rproenca/64781c6a1329b48a455b645d361a9aa3\nfunction initCopy() {\n let textArea: HTMLTextAreaElement;\n\n function isIOS() {\n return navigator.userAgent.match(/ipad|iphone/i);\n }\n\n function createTextArea(text: string) {\n textArea = document.createElement('textArea') as HTMLTextAreaElement;\n textArea.value = text;\n document.body.appendChild(textArea);\n }\n\n function selectText() {\n let range, selection;\n\n if (isIOS()) {\n range = document.createRange();\n range.selectNodeContents(textArea);\n selection = window.getSelection();\n if (selection === null) {\n console.error(`no selection`);\n return;\n }\n selection.removeAllRanges();\n selection.addRange(range);\n textArea.setSelectionRange(0, 999999);\n } else {\n textArea.select();\n }\n }\n\n function copyToClipboard() {\n document.execCommand('copy');\n document.body.removeChild(textArea);\n }\n\n _copy = (text) => {\n createTextArea(text);\n selectText();\n copyToClipboard();\n };\n}\n\n/**\n * Write text to clipboard\n * @param content content\n */\nexport function copy(content: string): MaybePromise<void> {\n if (window.navigator?.clipboard?.writeText) {\n return window.navigator.clipboard.writeText(content);\n }\n if (!_copy) {\n initCopy();\n }\n return _copy(content);\n}\n"],"names":[],"mappings":"AAEA,IAAI,KAAA,CAAA;AAGJ,SAAS,QAAW,GAAA;AAClB,EAAI,IAAA,QAAA,CAAA;AAEJ,EAAA,SAAS,KAAQ,GAAA;AACf,IAAO,OAAA,SAAA,CAAU,SAAU,CAAA,KAAA,CAAM,cAAc,CAAA,CAAA;AAAA,GACjD;AAEA,EAAA,SAAS,eAAe,IAAc,EAAA;AACpC,IAAW,QAAA,GAAA,QAAA,CAAS,cAAc,UAAU,CAAA,CAAA;AAC5C,IAAA,QAAA,CAAS,KAAQ,GAAA,IAAA,CAAA;AACjB,IAAS,QAAA,CAAA,IAAA,CAAK,YAAY,QAAQ,CAAA,CAAA;AAAA,GACpC;AAEA,EAAA,SAAS,UAAa,GAAA;AACpB,IAAA,IAAI,KAAO,EAAA,SAAA,CAAA;AAEX,IAAA,IAAI,OAAS,EAAA;AACX,MAAA,KAAA,GAAQ,SAAS,WAAY,EAAA,CAAA;AAC7B,MAAA,KAAA,CAAM,mBAAmB,QAAQ,CAAA,CAAA;AACjC,MAAA,SAAA,GAAY,OAAO,YAAa,EAAA,CAAA;AAChC,MAAA,IAAI,cAAc,IAAM,EAAA;AACtB,QAAA,OAAA,CAAQ,MAAM,CAAc,YAAA,CAAA,CAAA,CAAA;AAC5B,QAAA,OAAA;AAAA,OACF;AACA,MAAA,SAAA,CAAU,eAAgB,EAAA,CAAA;AAC1B,MAAA,SAAA,CAAU,SAAS,KAAK,CAAA,CAAA;AACxB,MAAS,QAAA,CAAA,iBAAA,CAAkB,GAAG,MAAM,CAAA,CAAA;AAAA,KAC/B,MAAA;AACL,MAAA,QAAA,CAAS,MAAO,EAAA,CAAA;AAAA,KAClB;AAAA,GACF;AAEA,EAAA,SAAS,eAAkB,GAAA;AACzB,IAAA,QAAA,CAAS,YAAY,MAAM,CAAA,CAAA;AAC3B,IAAS,QAAA,CAAA,IAAA,CAAK,YAAY,QAAQ,CAAA,CAAA;AAAA,GACpC;AAEA,EAAA,KAAA,GAAQ,CAAC,IAAS,KAAA;AAChB,IAAA,cAAA,CAAe,IAAI,CAAA,CAAA;AACnB,IAAW,UAAA,EAAA,CAAA;AACX,IAAgB,eAAA,EAAA,CAAA;AAAA,GAClB,CAAA;AACF,CAAA;AAMO,SAAS,KAAK,OAAqC,EAAA;
|
|
1
|
+
{"version":3,"file":"copy.js","sources":["../../src/browsers/copy.ts"],"sourcesContent":["import type { MaybePromise } from '../asyncs/MaybePromise';\n\nlet _copy: (s: any) => void;\n\n// https://gist.github.com/rproenca/64781c6a1329b48a455b645d361a9aa3\nfunction initCopy() {\n let textArea: HTMLTextAreaElement;\n\n function isIOS() {\n return navigator.userAgent.match(/ipad|iphone/i);\n }\n\n function createTextArea(text: string) {\n textArea = document.createElement('textArea') as HTMLTextAreaElement;\n textArea.value = text;\n document.body.appendChild(textArea);\n }\n\n function selectText() {\n let range, selection;\n\n if (isIOS()) {\n range = document.createRange();\n range.selectNodeContents(textArea);\n selection = window.getSelection();\n if (selection === null) {\n console.error(`no selection`);\n return;\n }\n selection.removeAllRanges();\n selection.addRange(range);\n textArea.setSelectionRange(0, 999999);\n } else {\n textArea.select();\n }\n }\n\n function copyToClipboard() {\n document.execCommand('copy');\n document.body.removeChild(textArea);\n }\n\n _copy = (text) => {\n createTextArea(text);\n selectText();\n copyToClipboard();\n };\n}\n\n/**\n * Write text to clipboard\n * @param content content\n */\nexport function copy(content: string): MaybePromise<void> {\n if (window.navigator?.clipboard?.writeText) {\n return window.navigator.clipboard.writeText(content);\n }\n if (!_copy) {\n initCopy();\n }\n return _copy(content);\n}\n"],"names":[],"mappings":"AAEA,IAAI,KAAA,CAAA;AAGJ,SAAS,QAAW,GAAA;AAClB,EAAI,IAAA,QAAA,CAAA;AAEJ,EAAA,SAAS,KAAQ,GAAA;AACf,IAAO,OAAA,SAAA,CAAU,SAAU,CAAA,KAAA,CAAM,cAAc,CAAA,CAAA;AAAA,GACjD;AAEA,EAAA,SAAS,eAAe,IAAc,EAAA;AACpC,IAAW,QAAA,GAAA,QAAA,CAAS,cAAc,UAAU,CAAA,CAAA;AAC5C,IAAA,QAAA,CAAS,KAAQ,GAAA,IAAA,CAAA;AACjB,IAAS,QAAA,CAAA,IAAA,CAAK,YAAY,QAAQ,CAAA,CAAA;AAAA,GACpC;AAEA,EAAA,SAAS,UAAa,GAAA;AACpB,IAAA,IAAI,KAAO,EAAA,SAAA,CAAA;AAEX,IAAA,IAAI,OAAS,EAAA;AACX,MAAA,KAAA,GAAQ,SAAS,WAAY,EAAA,CAAA;AAC7B,MAAA,KAAA,CAAM,mBAAmB,QAAQ,CAAA,CAAA;AACjC,MAAA,SAAA,GAAY,OAAO,YAAa,EAAA,CAAA;AAChC,MAAA,IAAI,cAAc,IAAM,EAAA;AACtB,QAAA,OAAA,CAAQ,MAAM,CAAc,YAAA,CAAA,CAAA,CAAA;AAC5B,QAAA,OAAA;AAAA,OACF;AACA,MAAA,SAAA,CAAU,eAAgB,EAAA,CAAA;AAC1B,MAAA,SAAA,CAAU,SAAS,KAAK,CAAA,CAAA;AACxB,MAAS,QAAA,CAAA,iBAAA,CAAkB,GAAG,MAAM,CAAA,CAAA;AAAA,KAC/B,MAAA;AACL,MAAA,QAAA,CAAS,MAAO,EAAA,CAAA;AAAA,KAClB;AAAA,GACF;AAEA,EAAA,SAAS,eAAkB,GAAA;AACzB,IAAA,QAAA,CAAS,YAAY,MAAM,CAAA,CAAA;AAC3B,IAAS,QAAA,CAAA,IAAA,CAAK,YAAY,QAAQ,CAAA,CAAA;AAAA,GACpC;AAEA,EAAA,KAAA,GAAQ,CAAC,IAAS,KAAA;AAChB,IAAA,cAAA,CAAe,IAAI,CAAA,CAAA;AACnB,IAAW,UAAA,EAAA,CAAA;AACX,IAAgB,eAAA,EAAA,CAAA;AAAA,GAClB,CAAA;AACF,CAAA;AAMO,SAAS,KAAK,OAAqC,EAAA;AArD1D,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAsDE,EAAA,IAAA,CAAI,EAAO,GAAA,CAAA,EAAA,GAAA,MAAA,CAAA,SAAA,KAAP,IAAkB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA,KAAlB,mBAA6B,SAAW,EAAA;AAC1C,IAAA,OAAO,MAAO,CAAA,SAAA,CAAU,SAAU,CAAA,SAAA,CAAU,OAAO,CAAA,CAAA;AAAA,GACrD;AACA,EAAA,IAAI,CAAC,KAAO,EAAA;AACV,IAAS,QAAA,EAAA,CAAA;AAAA,GACX;AACA,EAAA,OAAO,MAAM,OAAO,CAAA,CAAA;AACtB;;;;"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
function getFileFromDataTransfer(dataTransfer) {
|
|
2
|
+
var _a, _b, _c;
|
|
2
3
|
if (!dataTransfer) {
|
|
3
4
|
return {};
|
|
4
5
|
}
|
|
5
|
-
const items = dataTransfer.items
|
|
6
|
+
const items = (_a = dataTransfer.items) != null ? _a : [];
|
|
6
7
|
if (items.length >= 2 && items[0].kind === "string" && items[1].kind === "file") {
|
|
7
8
|
const text = dataTransfer.getData("text");
|
|
8
|
-
const file = items[1].getAsFile()
|
|
9
|
+
const file = (_c = items[1].getAsFile()) != null ? _c : (_b = dataTransfer.files) == null ? void 0 : _b.item(0);
|
|
9
10
|
if (!file) {
|
|
10
11
|
console.error(`no file ${text}`, items[1]);
|
|
11
12
|
return {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFileFromDataTransfer.js","sources":["../../src/browsers/getFileFromDataTransfer.ts"],"sourcesContent":["export function getFileFromDataTransfer(dataTransfer?: DataTransfer | null): { file?: File; name?: string } {\n if (!dataTransfer) {\n return {};\n }\n\n const items: DataTransferItemList = dataTransfer.items ?? [];\n\n if (items.length >= 2 && items[0].kind === 'string' && items[1].kind === 'file') {\n // name, file\n const text = dataTransfer.getData('text');\n const file = items[1].getAsFile() ?? dataTransfer.files?.item(0);\n if (!file) {\n console.error(`no file ${text}`, items[1]);\n return {};\n }\n\n // let type = file.type;\n // // fix type\n // type = type;\n // // NOTE paste file can not parse by libs\n // if (type !== file.type) {\n // const blob = file.slice(0, file.size);\n // file = new File([blob], text, {type});\n // }\n\n return { file, name: text };\n } else if (items[0].kind === 'file') {\n const file = items[0].getAsFile();\n if (!file) {\n console.error(`no file`, items[0]);\n return {};\n }\n return { file, name: file.name };\n } else {\n console.debug(\n `file item not match`,\n Array.from(items).map((v) => ({ type: v.type, kind: v.kind })),\n );\n }\n return {};\n}\n"],"names":[],"mappings":"AAAO,SAAS,wBAAwB,YAAoE,EAAA;
|
|
1
|
+
{"version":3,"file":"getFileFromDataTransfer.js","sources":["../../src/browsers/getFileFromDataTransfer.ts"],"sourcesContent":["export function getFileFromDataTransfer(dataTransfer?: DataTransfer | null): { file?: File; name?: string } {\n if (!dataTransfer) {\n return {};\n }\n\n const items: DataTransferItemList = dataTransfer.items ?? [];\n\n if (items.length >= 2 && items[0].kind === 'string' && items[1].kind === 'file') {\n // name, file\n const text = dataTransfer.getData('text');\n const file = items[1].getAsFile() ?? dataTransfer.files?.item(0);\n if (!file) {\n console.error(`no file ${text}`, items[1]);\n return {};\n }\n\n // let type = file.type;\n // // fix type\n // type = type;\n // // NOTE paste file can not parse by libs\n // if (type !== file.type) {\n // const blob = file.slice(0, file.size);\n // file = new File([blob], text, {type});\n // }\n\n return { file, name: text };\n } else if (items[0].kind === 'file') {\n const file = items[0].getAsFile();\n if (!file) {\n console.error(`no file`, items[0]);\n return {};\n }\n return { file, name: file.name };\n } else {\n console.debug(\n `file item not match`,\n Array.from(items).map((v) => ({ type: v.type, kind: v.kind })),\n );\n }\n return {};\n}\n"],"names":[],"mappings":"AAAO,SAAS,wBAAwB,YAAoE,EAAA;AAA5G,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AACE,EAAA,IAAI,CAAC,YAAc,EAAA;AACjB,IAAA,OAAO,EAAC,CAAA;AAAA,GACV;AAEA,EAAA,MAAM,KAA8B,GAAA,CAAA,EAAA,GAAA,YAAA,CAAa,KAAb,KAAA,IAAA,GAAA,EAAA,GAAsB,EAAC,CAAA;AAE3D,EAAA,IAAI,KAAM,CAAA,MAAA,IAAU,CAAK,IAAA,KAAA,CAAM,CAAC,CAAA,CAAE,IAAS,KAAA,QAAA,IAAY,KAAM,CAAA,CAAC,CAAE,CAAA,IAAA,KAAS,MAAQ,EAAA;AAE/E,IAAM,MAAA,IAAA,GAAO,YAAa,CAAA,OAAA,CAAQ,MAAM,CAAA,CAAA;AACxC,IAAM,MAAA,IAAA,GAAA,CAAO,EAAM,GAAA,KAAA,CAAA,CAAC,CAAE,CAAA,SAAA,OAAT,IAAwB,GAAA,EAAA,GAAA,CAAA,EAAA,GAAA,YAAA,CAAa,KAAb,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAoB,IAAK,CAAA,CAAA,CAAA,CAAA;AAC9D,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAA,OAAA,CAAQ,KAAM,CAAA,CAAA,QAAA,EAAW,IAAQ,CAAA,CAAA,EAAA,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AACzC,MAAA,OAAO,EAAC,CAAA;AAAA,KACV;AAWA,IAAO,OAAA,EAAE,IAAM,EAAA,IAAA,EAAM,IAAK,EAAA,CAAA;AAAA,GACjB,MAAA,IAAA,KAAA,CAAM,CAAC,CAAA,CAAE,SAAS,MAAQ,EAAA;AACnC,IAAA,MAAM,IAAO,GAAA,KAAA,CAAM,CAAC,CAAA,CAAE,SAAU,EAAA,CAAA;AAChC,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAA,OAAA,CAAQ,KAAM,CAAA,CAAA,OAAA,CAAA,EAAW,KAAM,CAAA,CAAC,CAAC,CAAA,CAAA;AACjC,MAAA,OAAO,EAAC,CAAA;AAAA,KACV;AACA,IAAA,OAAO,EAAE,IAAA,EAAM,IAAM,EAAA,IAAA,CAAK,IAAK,EAAA,CAAA;AAAA,GAC1B,MAAA;AACL,IAAQ,OAAA,CAAA,KAAA;AAAA,MACN,CAAA,mBAAA,CAAA;AAAA,MACA,KAAM,CAAA,IAAA,CAAK,KAAK,CAAA,CAAE,IAAI,CAAC,CAAA,MAAO,EAAE,IAAA,EAAM,CAAE,CAAA,IAAA,EAAM,IAAM,EAAA,CAAA,CAAE,MAAO,CAAA,CAAA;AAAA,KAC/D,CAAA;AAAA,GACF;AACA,EAAA,OAAO,EAAC,CAAA;AACV;;;;"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { getNodeCrypto } from './getNodeCrypto.js';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
var _a, _b, _c, _d;
|
|
4
|
+
let getRandomValues = ((_b = (_a = globalThis.crypto) == null ? void 0 : _a.getRandomValues) == null ? void 0 : _b.bind(globalThis.crypto)) || ((_d = (_c = globalThis.msCrypto) == null ? void 0 : _c.getRandomValues) == null ? void 0 : _d.bind(globalThis.msCrypto)) || _getRandomValues;
|
|
4
5
|
function _getRandomValues(buf) {
|
|
6
|
+
var _a2, _b2, _c2;
|
|
5
7
|
const nodeCrypto = getNodeCrypto();
|
|
6
|
-
if (nodeCrypto
|
|
7
|
-
getRandomValues = nodeCrypto
|
|
8
|
+
if ((_a2 = nodeCrypto == null ? void 0 : nodeCrypto.webcrypto) == null ? void 0 : _a2.getRandomValues) {
|
|
9
|
+
getRandomValues = (_c2 = (_b2 = nodeCrypto == null ? void 0 : nodeCrypto.webcrypto) == null ? void 0 : _b2.getRandomValues) == null ? void 0 : _c2.bind(nodeCrypto == null ? void 0 : nodeCrypto.webcrypto);
|
|
8
10
|
return nodeCrypto.webcrypto.getRandomValues(buf);
|
|
9
11
|
}
|
|
10
|
-
if (nodeCrypto
|
|
12
|
+
if (nodeCrypto == null ? void 0 : nodeCrypto.randomBytes) {
|
|
11
13
|
if (!(buf instanceof Uint8Array)) {
|
|
12
14
|
throw new TypeError("expected Uint8Array");
|
|
13
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getRandomValues.js","sources":["../../src/crypto/getRandomValues.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport type { TypedArray } from '../io/ArrayBuffers';\nimport { getNodeCrypto } from './getNodeCrypto';\n\nexport let getRandomValues: <T extends Exclude<TypedArray, Float32Array | Float64Array>>(typedArray: T) => T =\n globalThis.crypto?.getRandomValues?.bind(globalThis.crypto) ||\n (globalThis as any).msCrypto?.getRandomValues?.bind((globalThis as any).msCrypto) ||\n _getRandomValues;\n\nfunction _getRandomValues<T extends Exclude<TypedArray, Float32Array | Float64Array>>(buf: T) {\n const nodeCrypto = getNodeCrypto();\n if (nodeCrypto?.webcrypto?.getRandomValues) {\n getRandomValues = nodeCrypto?.webcrypto?.getRandomValues?.bind(nodeCrypto?.webcrypto);\n return nodeCrypto.webcrypto.getRandomValues(buf);\n }\n if (nodeCrypto?.randomBytes) {\n if (!(buf instanceof Uint8Array)) {\n throw new TypeError('expected Uint8Array');\n }\n if (buf.length > 65536) {\n const e: any = new Error();\n e.code = 22;\n e.message = `Failed to execute 'getRandomValues' on 'Crypto': The ArrayBufferView's byte length (${buf.length}) exceeds the number of bytes of entropy available via this API (65536).`;\n e.name = 'QuotaExceededError';\n throw e;\n }\n const bytes = nodeCrypto.randomBytes(buf.length);\n buf.set(bytes);\n return buf;\n }\n throw new Error('[getRandomValues]: No secure random number generator available.');\n}\n"],"names":[],"mappings":";;AAIO,IAAI,
|
|
1
|
+
{"version":3,"file":"getRandomValues.js","sources":["../../src/crypto/getRandomValues.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport type { TypedArray } from '../io/ArrayBuffers';\nimport { getNodeCrypto } from './getNodeCrypto';\n\nexport let getRandomValues: <T extends Exclude<TypedArray, Float32Array | Float64Array>>(typedArray: T) => T =\n globalThis.crypto?.getRandomValues?.bind(globalThis.crypto) ||\n (globalThis as any).msCrypto?.getRandomValues?.bind((globalThis as any).msCrypto) ||\n _getRandomValues;\n\nfunction _getRandomValues<T extends Exclude<TypedArray, Float32Array | Float64Array>>(buf: T) {\n const nodeCrypto = getNodeCrypto();\n if (nodeCrypto?.webcrypto?.getRandomValues) {\n getRandomValues = nodeCrypto?.webcrypto?.getRandomValues?.bind(nodeCrypto?.webcrypto);\n return nodeCrypto.webcrypto.getRandomValues(buf);\n }\n if (nodeCrypto?.randomBytes) {\n if (!(buf instanceof Uint8Array)) {\n throw new TypeError('expected Uint8Array');\n }\n if (buf.length > 65536) {\n const e: any = new Error();\n e.code = 22;\n e.message = `Failed to execute 'getRandomValues' on 'Crypto': The ArrayBufferView's byte length (${buf.length}) exceeds the number of bytes of entropy available via this API (65536).`;\n e.name = 'QuotaExceededError';\n throw e;\n }\n const bytes = nodeCrypto.randomBytes(buf.length);\n buf.set(bytes);\n return buf;\n }\n throw new Error('[getRandomValues]: No secure random number generator available.');\n}\n"],"names":["_a","_b","_c"],"mappings":";;AAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAIO,IAAI,oBACT,EAAW,GAAA,CAAA,EAAA,GAAA,UAAA,CAAA,MAAA,KAAX,IAAmB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAA,KAAnB,mBAAoC,IAAK,CAAA,UAAA,CAAW,MACnD,CAAA,MAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAA,CAAmB,aAAnB,IAA6B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAA,KAA7B,IAA8C,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAM,WAAmB,QACxE,CAAA,CAAA,IAAA,iBAAA;AAEF,SAAS,iBAA6E,GAAQ,EAAA;AAT9F,EAAA,IAAAA,KAAAC,GAAAC,EAAAA,GAAAA,CAAAA;AAUE,EAAA,MAAM,aAAa,aAAc,EAAA,CAAA;AACjC,EAAA,IAAA,CAAIF,GAAA,GAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,SAAZ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAuB,eAAiB,EAAA;AAC1C,IAAkBE,eAAAA,GAAAA,CAAAA,GAAAA,GAAAA,CAAAD,GAAA,GAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,SAAZ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAuB,eAAvB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAC,GAAwC,CAAA,IAAA,CAAK,UAAY,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAA,SAAA,CAAA,CAAA;AAC3E,IAAO,OAAA,UAAA,CAAW,SAAU,CAAA,eAAA,CAAgB,GAAG,CAAA,CAAA;AAAA,GACjD;AACA,EAAA,IAAI,yCAAY,WAAa,EAAA;AAC3B,IAAI,IAAA,EAAE,eAAe,UAAa,CAAA,EAAA;AAChC,MAAM,MAAA,IAAI,UAAU,qBAAqB,CAAA,CAAA;AAAA,KAC3C;AACA,IAAI,IAAA,GAAA,CAAI,SAAS,KAAO,EAAA;AACtB,MAAM,MAAA,CAAA,GAAS,IAAI,KAAM,EAAA,CAAA;AACzB,MAAA,CAAA,CAAE,IAAO,GAAA,EAAA,CAAA;AACT,MAAE,CAAA,CAAA,OAAA,GAAU,uFAAuF,GAAI,CAAA,MAAA,CAAA,wEAAA,CAAA,CAAA;AACvG,MAAA,CAAA,CAAE,IAAO,GAAA,oBAAA,CAAA;AACT,MAAM,MAAA,CAAA,CAAA;AAAA,KACR;AACA,IAAA,MAAM,KAAQ,GAAA,UAAA,CAAW,WAAY,CAAA,GAAA,CAAI,MAAM,CAAA,CAAA;AAC/C,IAAA,GAAA,CAAI,IAAI,KAAK,CAAA,CAAA;AACb,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AACA,EAAM,MAAA,IAAI,MAAM,iEAAiE,CAAA,CAAA;AACnF;;;;"}
|
package/lib/crypto/pem/pem.js
CHANGED
|
@@ -5,7 +5,7 @@ class PEM {
|
|
|
5
5
|
const match = data.match(
|
|
6
6
|
/^-----BEGIN (?<type>[^\r\n-]+)-----$\r?\n(?<headers>(^[^:\r\n]+:[^\n\r]+\r?\n)+\r?\n)?(?<data>[a-zA-Z0-9/_=\n\r+]+?)^-----END \1-----$\r?\n?/ms
|
|
7
7
|
);
|
|
8
|
-
if (!match
|
|
8
|
+
if (!(match == null ? void 0 : match.groups))
|
|
9
9
|
throw new Error("Invalid PEM data");
|
|
10
10
|
const { type, headers = "", data: b64 } = match.groups;
|
|
11
11
|
const header = headers.split("\n").filter((v) => v.trim()).map((h) => {
|
|
@@ -24,10 +24,11 @@ class PEM {
|
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
26
|
static encode(block) {
|
|
27
|
+
var _a;
|
|
27
28
|
const { type, header, bytes } = block;
|
|
28
29
|
const headers = Object.entries(header || {}).map(([k, v]) => `${k}: ${v}`).join("\n");
|
|
29
30
|
return `-----BEGIN ${type}-----
|
|
30
|
-
${headers}${headers.length ? "\n\n" : ""}${ArrayBuffers.toString(bytes, "base64").match(/.{1,64}/g)
|
|
31
|
+
${headers}${headers.length ? "\n\n" : ""}${((_a = ArrayBuffers.toString(bytes, "base64").match(/.{1,64}/g)) == null ? void 0 : _a.join("\n")) || ""}
|
|
31
32
|
-----END ${type}-----
|
|
32
33
|
`;
|
|
33
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pem.js","sources":["../../../src/crypto/pem/pem.ts"],"sourcesContent":["import { ArrayBuffers } from '../../io/ArrayBuffers';\n\nexport interface Block {\n /**\n * @see https://github.com/openssl/openssl/blob/master/include/openssl/pem.h#L35-L60 openssl/pem.h\n */\n type:\n | string\n | `${'RSA' | 'DSA'} ${'PRIVATE' | 'PUBLIC'} KEY`\n | `${'X509' | 'TRUSTED'} CERTIFICATE`\n | 'CERTIFICATE'\n | 'X509 CRL'\n | 'CERTIFICATE REQUEST'\n | 'NEW CERTIFICATE REQUEST'\n | 'ANY PRIVATE KEY'\n | 'PUBLIC KEY'\n | 'PKCS7'\n | 'PKCS #7 SIGNED DATA'\n | 'ENCRYPTED PRIVATE KEY'\n | 'PRIVATE KEY'\n | 'DH PARAMETERS'\n | 'X9.42 DH PARAMETERS'\n | 'SSL SESSION PARAMETERS'\n | 'DSA PARAMETERS'\n | 'ECDSA PUBLIC KEY'\n | 'EC PARAMETERS'\n | 'EC PRIVATE KEY'\n | 'PARAMETERS'\n | 'CMS'\n | 'SM2 PARAMETERS';\n\n header: Record<string, string>;\n bytes: BufferSource;\n}\n\nexport class PEM {\n static decode(data: string): { block: Block; tail: string; head: string } {\n const match = data.match(\n /^-----BEGIN (?<type>[^\\r\\n-]+)-----$\\r?\\n(?<headers>(^[^:\\r\\n]+:[^\\n\\r]+\\r?\\n)+\\r?\\n)?(?<data>[a-zA-Z0-9/_=\\n\\r+]+?)^-----END \\1-----$\\r?\\n?/ms,\n );\n if (!match?.groups) throw new Error('Invalid PEM data');\n const { type, headers = '', data: b64 } = match.groups;\n const header = headers\n .split('\\n')\n .filter((v) => v.trim())\n .map((h) => {\n const [k, ...v] = h.split(':');\n return [k.trim(), v.join(':').trim()];\n })\n .reduce((a, [k, v]) => ({ ...a, [k]: v }), {});\n return {\n block: {\n type,\n header,\n // avoid replaceAll\n bytes: ArrayBuffers.from(b64.replace(/[\\r\\n]/g, ''), 'base64'),\n },\n head: data.slice(0, match.index || 0),\n tail: data.slice((match.index || 0) + match[0].length),\n };\n }\n\n static encode(block: { type: string; bytes: string | BufferSource; header?: Record<string, string> }): string {\n const { type, header, bytes } = block;\n const headers = Object.entries(header || {})\n .map(([k, v]) => `${k}: ${v}`)\n .join('\\n');\n return `-----BEGIN ${type}-----\\n${headers}${headers.length ? '\\n\\n' : ''}${\n ArrayBuffers.toString(bytes, 'base64')\n .match(/.{1,64}/g)\n ?.join('\\n') || ''\n }\\n-----END ${type}-----\\n`;\n }\n}\n"],"names":[],"mappings":";;AAmCO,MAAM,GAAI,CAAA;AAAA,EACf,OAAO,OAAO,IAA4D,EAAA;AACxE,IAAA,MAAM,QAAQ,IAAK,CAAA,KAAA;AAAA,MACjB,gJAAA;AAAA,KACF,CAAA;AACA,IAAA,IAAI,
|
|
1
|
+
{"version":3,"file":"pem.js","sources":["../../../src/crypto/pem/pem.ts"],"sourcesContent":["import { ArrayBuffers } from '../../io/ArrayBuffers';\n\nexport interface Block {\n /**\n * @see https://github.com/openssl/openssl/blob/master/include/openssl/pem.h#L35-L60 openssl/pem.h\n */\n type:\n | string\n | `${'RSA' | 'DSA'} ${'PRIVATE' | 'PUBLIC'} KEY`\n | `${'X509' | 'TRUSTED'} CERTIFICATE`\n | 'CERTIFICATE'\n | 'X509 CRL'\n | 'CERTIFICATE REQUEST'\n | 'NEW CERTIFICATE REQUEST'\n | 'ANY PRIVATE KEY'\n | 'PUBLIC KEY'\n | 'PKCS7'\n | 'PKCS #7 SIGNED DATA'\n | 'ENCRYPTED PRIVATE KEY'\n | 'PRIVATE KEY'\n | 'DH PARAMETERS'\n | 'X9.42 DH PARAMETERS'\n | 'SSL SESSION PARAMETERS'\n | 'DSA PARAMETERS'\n | 'ECDSA PUBLIC KEY'\n | 'EC PARAMETERS'\n | 'EC PRIVATE KEY'\n | 'PARAMETERS'\n | 'CMS'\n | 'SM2 PARAMETERS';\n\n header: Record<string, string>;\n bytes: BufferSource;\n}\n\nexport class PEM {\n static decode(data: string): { block: Block; tail: string; head: string } {\n const match = data.match(\n /^-----BEGIN (?<type>[^\\r\\n-]+)-----$\\r?\\n(?<headers>(^[^:\\r\\n]+:[^\\n\\r]+\\r?\\n)+\\r?\\n)?(?<data>[a-zA-Z0-9/_=\\n\\r+]+?)^-----END \\1-----$\\r?\\n?/ms,\n );\n if (!match?.groups) throw new Error('Invalid PEM data');\n const { type, headers = '', data: b64 } = match.groups;\n const header = headers\n .split('\\n')\n .filter((v) => v.trim())\n .map((h) => {\n const [k, ...v] = h.split(':');\n return [k.trim(), v.join(':').trim()];\n })\n .reduce((a, [k, v]) => ({ ...a, [k]: v }), {});\n return {\n block: {\n type,\n header,\n // avoid replaceAll\n bytes: ArrayBuffers.from(b64.replace(/[\\r\\n]/g, ''), 'base64'),\n },\n head: data.slice(0, match.index || 0),\n tail: data.slice((match.index || 0) + match[0].length),\n };\n }\n\n static encode(block: { type: string; bytes: string | BufferSource; header?: Record<string, string> }): string {\n const { type, header, bytes } = block;\n const headers = Object.entries(header || {})\n .map(([k, v]) => `${k}: ${v}`)\n .join('\\n');\n return `-----BEGIN ${type}-----\\n${headers}${headers.length ? '\\n\\n' : ''}${\n ArrayBuffers.toString(bytes, 'base64')\n .match(/.{1,64}/g)\n ?.join('\\n') || ''\n }\\n-----END ${type}-----\\n`;\n }\n}\n"],"names":[],"mappings":";;AAmCO,MAAM,GAAI,CAAA;AAAA,EACf,OAAO,OAAO,IAA4D,EAAA;AACxE,IAAA,MAAM,QAAQ,IAAK,CAAA,KAAA;AAAA,MACjB,gJAAA;AAAA,KACF,CAAA;AACA,IAAA,IAAI,EAAC,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,MAAA,CAAA;AAAQ,MAAM,MAAA,IAAI,MAAM,kBAAkB,CAAA,CAAA;AACtD,IAAA,MAAM,EAAE,IAAM,EAAA,OAAA,GAAU,IAAI,IAAM,EAAA,GAAA,KAAQ,KAAM,CAAA,MAAA,CAAA;AAChD,IAAA,MAAM,MAAS,GAAA,OAAA,CACZ,KAAM,CAAA,IAAI,EACV,MAAO,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,IAAK,EAAC,CACtB,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA;AACV,MAAA,MAAM,CAAC,CAAG,EAAA,GAAG,CAAC,CAAI,GAAA,CAAA,CAAE,MAAM,GAAG,CAAA,CAAA;AAC7B,MAAO,OAAA,CAAC,EAAE,IAAK,EAAA,EAAG,EAAE,IAAK,CAAA,GAAG,CAAE,CAAA,IAAA,EAAM,CAAA,CAAA;AAAA,KACrC,CACA,CAAA,MAAA,CAAO,CAAC,CAAG,EAAA,CAAC,GAAG,CAAC,CAAA,MAAO,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAE,EAAA,CAAA,EAAI,EAAE,CAAA,CAAA;AAC/C,IAAO,OAAA;AAAA,MACL,KAAO,EAAA;AAAA,QACL,IAAA;AAAA,QACA,MAAA;AAAA;AAAA,QAEA,KAAA,EAAO,aAAa,IAAK,CAAA,GAAA,CAAI,QAAQ,SAAW,EAAA,EAAE,GAAG,QAAQ,CAAA;AAAA,OAC/D;AAAA,MACA,MAAM,IAAK,CAAA,KAAA,CAAM,CAAG,EAAA,KAAA,CAAM,SAAS,CAAC,CAAA;AAAA,MACpC,IAAA,EAAM,KAAK,KAAO,CAAA,CAAA,KAAA,CAAM,SAAS,CAAK,IAAA,KAAA,CAAM,CAAC,CAAA,CAAE,MAAM,CAAA;AAAA,KACvD,CAAA;AAAA,GACF;AAAA,EAEA,OAAO,OAAO,KAAgG,EAAA;AA9DhH,IAAA,IAAA,EAAA,CAAA;AA+DI,IAAA,MAAM,EAAE,IAAA,EAAM,MAAQ,EAAA,KAAA,EAAU,GAAA,KAAA,CAAA;AAChC,IAAA,MAAM,UAAU,MAAO,CAAA,OAAA,CAAQ,UAAU,EAAE,EACxC,GAAI,CAAA,CAAC,CAAC,CAAA,EAAG,CAAC,CAAM,KAAA,CAAA,EAAG,MAAM,CAAG,CAAA,CAAA,CAAA,CAC5B,KAAK,IAAI,CAAA,CAAA;AACZ,IAAA,OAAO,CAAc,WAAA,EAAA,IAAA,CAAA;AAAA,EAAc,OAAU,CAAA,EAAA,OAAA,CAAQ,MAAS,GAAA,MAAA,GAAS,OACrE,EAAa,GAAA,YAAA,CAAA,QAAA,CAAS,KAAO,EAAA,QAAQ,EAClC,KAAM,CAAA,UAAU,CADnB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAEI,KAAK,IAAS,CAAA,KAAA,EAAA,CAAA;AAAA,SACN,EAAA,IAAA,CAAA;AAAA,CAAA,CAAA;AAAA,GAChB;AACF;;;;"}
|
package/lib/crypto/randomUUID.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
var _a, _b;
|
|
2
|
+
const randomUUID = ((_b = (_a = globalThis.crypto) == null ? void 0 : _a.randomUUID) == null ? void 0 : _b.bind(globalThis.crypto)) || _randomUUID;
|
|
2
3
|
function _randomUUID() {
|
|
3
4
|
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
|
|
4
5
|
const r = Math.random() * 16 | 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"randomUUID.js","sources":["../../src/crypto/randomUUID.ts"],"sourcesContent":["/**\n * generate random UUIDv4\n */\nexport const randomUUID: () => string = globalThis.crypto?.randomUUID?.bind(globalThis.crypto) || _randomUUID;\n\n/**\n * @internal\n */\nexport function _randomUUID() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"randomUUID.js","sources":["../../src/crypto/randomUUID.ts"],"sourcesContent":["/**\n * generate random UUIDv4\n */\nexport const randomUUID: () => string = globalThis.crypto?.randomUUID?.bind(globalThis.crypto) || _randomUUID;\n\n/**\n * @internal\n */\nexport function _randomUUID() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n"],"names":[],"mappings":"AAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAGa,MAAA,UAAA,GAAA,CAAA,CAA2B,sBAAW,MAAX,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAmB,eAAnB,IAA+B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAK,WAAW,MAAW,CAAA,KAAA,YAAA;AAK3F,SAAS,WAAc,GAAA;AAC5B,EAAA,OAAO,sCAAuC,CAAA,OAAA,CAAQ,OAAS,EAAA,CAAC,CAAM,KAAA;AACpE,IAAA,MAAM,CAAK,GAAA,IAAA,CAAK,MAAO,EAAA,GAAI,EAAM,GAAA,CAAA,CAAA;AACjC,IAAA,MAAM,CAAI,GAAA,CAAA,KAAM,GAAM,GAAA,CAAA,GAAK,IAAI,CAAO,GAAA,CAAA,CAAA;AACtC,IAAO,OAAA,CAAA,CAAE,SAAS,EAAE,CAAA,CAAA;AAAA,GACrB,CAAA,CAAA;AACH;;;;"}
|
package/lib/crypto/ulid.js
CHANGED
|
@@ -11,7 +11,7 @@ const TIME_MAX = Math.pow(2, 48) - 1;
|
|
|
11
11
|
const TIME_LEN = 10;
|
|
12
12
|
const RANDOM_LEN = 16;
|
|
13
13
|
function isULID(str) {
|
|
14
|
-
return str
|
|
14
|
+
return (str == null ? void 0 : str.length) === 26 && /^[0-9A-HJKMNP-TV-Z]{26}$/i.test(str);
|
|
15
15
|
}
|
|
16
16
|
function replaceCharAt(str, index, char) {
|
|
17
17
|
if (index > str.length - 1) {
|
|
@@ -108,14 +108,14 @@ function createULID({
|
|
|
108
108
|
} = {}) {
|
|
109
109
|
if (!monotonic) {
|
|
110
110
|
return function ulid2(seedTime) {
|
|
111
|
-
seedTime
|
|
111
|
+
seedTime || (seedTime = now());
|
|
112
112
|
return encodeTime(seedTime, TIME_LEN) + encodeRandom(RANDOM_LEN, random);
|
|
113
113
|
};
|
|
114
114
|
}
|
|
115
115
|
let lastTime = 0;
|
|
116
116
|
let lastRandom;
|
|
117
117
|
return function ulid2(seedTime) {
|
|
118
|
-
seedTime
|
|
118
|
+
seedTime || (seedTime = now());
|
|
119
119
|
if (seedTime <= lastTime && lastRandom) {
|
|
120
120
|
const incrementedRandom = lastRandom = incrementBase32(lastRandom);
|
|
121
121
|
return encodeTime(lastTime, TIME_LEN) + incrementedRandom;
|
package/lib/crypto/ulid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ulid.js","sources":["../../src/crypto/ulid.ts"],"sourcesContent":["import { getRandomValues } from './getRandomValues';\n\ntype PRNG = () => number;\n\n/**\n * Universally Unique Lexicographically Sortable Identifier\n *\n * @see https://github.com/ulid/spec ulid/spec\n */\nexport type ULID = (seedTime?: number) => string;\n\nexport interface ULIDError extends Error {\n source: string;\n}\n\nfunction createError(message: string): ULIDError {\n const err = new Error(message) as ULIDError;\n err.source = 'ulid';\n return err;\n}\n\n// These values should NEVER change. If\n// they do, we're no longer making ulids!\nconst ENCODING = '0123456789ABCDEFGHJKMNPQRSTVWXYZ'; // Crockford's Base32\nconst ENCODING_LEN = ENCODING.length;\nconst TIME_MAX = Math.pow(2, 48) - 1;\nconst TIME_LEN = 10;\nconst RANDOM_LEN = 16;\n\n/**\n * check give {@link str} is a valid ulid\n */\nexport function isULID(str: string): boolean {\n // ttttttttttrrrrrrrrrrrrrrrr\n return str?.length === 26 && /^[0-9A-HJKMNP-TV-Z]{26}$/i.test(str);\n}\n\nfunction replaceCharAt(str: string, index: number, char: string) {\n if (index > str.length - 1) {\n return str;\n }\n return str.substr(0, index) + char + str.substr(index + 1);\n}\n\nfunction incrementBase32(str: string): string {\n let done;\n let index = str.length;\n let char;\n let charIndex;\n const maxCharIndex = ENCODING_LEN - 1;\n while (!done && index-- >= 0) {\n char = str[index];\n charIndex = ENCODING.indexOf(char);\n if (charIndex === -1) {\n throw createError('incorrectly encoded string');\n }\n if (charIndex === maxCharIndex) {\n str = replaceCharAt(str, index, ENCODING[0]);\n continue;\n }\n done = replaceCharAt(str, index, ENCODING[charIndex + 1]);\n }\n if (typeof done === 'string') {\n return done;\n }\n throw createError('cannot increment this string');\n}\n\nfunction randomChar(prng: PRNG): string {\n let rand = Math.floor(prng() * ENCODING_LEN);\n if (rand === ENCODING_LEN) {\n rand = ENCODING_LEN - 1;\n }\n return ENCODING.charAt(rand);\n}\n\nfunction encodeTime(now: number, len: number): string {\n if (isNaN(now)) {\n throw new Error(`${now} must be a number`);\n }\n if (now > TIME_MAX) {\n throw createError(`cannot encode time greater than ${TIME_MAX}`);\n }\n if (now < 0) {\n throw createError('time must be positive');\n }\n if (!Number.isInteger(now)) {\n throw createError('time must be an integer');\n }\n let mod;\n let str = '';\n for (; len > 0; len--) {\n mod = now % ENCODING_LEN;\n str = ENCODING.charAt(mod) + str;\n now = (now - mod) / ENCODING_LEN;\n }\n return str;\n}\n\nfunction encodeRandom(len: number, prng: PRNG): string {\n let str = '';\n for (; len > 0; len--) {\n str = randomChar(prng) + str;\n }\n return str;\n}\n\n/**\n * extract time & random from ulid\n *\n * @throws ULIDError\n */\nexport function parseULID(id: string): { timestamp: number; random: string } {\n if (id.length !== TIME_LEN + RANDOM_LEN) {\n throw createError('malformed ulid');\n }\n const time = id\n .substr(0, TIME_LEN)\n .split('')\n .reverse()\n .reduce((carry, char, index) => {\n const encodingIndex = ENCODING.indexOf(char);\n if (encodingIndex === -1) {\n throw createError('invalid character found: ' + char);\n }\n return (carry += encodingIndex * Math.pow(ENCODING_LEN, index));\n }, 0);\n if (time > TIME_MAX) {\n throw createError('malformed ulid, timestamp too large');\n }\n return { timestamp: time, random: id.substring(TIME_LEN) };\n}\n\nfunction createPrng(): PRNG {\n return () => {\n const buffer = new Uint8Array(1);\n getRandomValues(buffer);\n return buffer[0] / 0xff;\n };\n}\n\n/**\n * create a ulid generator\n */\nexport function createULID({\n monotonic = true,\n random = createPrng(),\n now = Date.now,\n}: { monotonic?: boolean; now?: () => number; random?: () => number } = {}) {\n if (!monotonic) {\n return function ulid(seedTime?: number): string {\n seedTime ||= now();\n return encodeTime(seedTime, TIME_LEN) + encodeRandom(RANDOM_LEN, random);\n };\n }\n\n let lastTime: number = 0;\n let lastRandom: string;\n return function ulid(seedTime?: number): string {\n seedTime ||= now();\n if (seedTime <= lastTime && lastRandom) {\n const incrementedRandom = (lastRandom = incrementBase32(lastRandom));\n return encodeTime(lastTime, TIME_LEN) + incrementedRandom;\n }\n lastTime = seedTime;\n const newRandom = (lastRandom = encodeRandom(RANDOM_LEN, random));\n return encodeTime(seedTime, TIME_LEN) + newRandom;\n };\n}\n\n/**\n * default monotonic ulid generator\n */\nexport let ulid: ULID = (...args) => {\n if (_real) {\n return _real(...args);\n }\n // delay initialize crypto\n _real = createULID();\n ulid = _real;\n return _real(...args);\n};\nlet _real: ULID;\n"],"names":["ulid"],"mappings":";;AAeA,SAAS,YAAY,OAA4B,EAAA;AAC/C,EAAM,MAAA,GAAA,GAAM,IAAI,KAAA,CAAM,OAAO,CAAA,CAAA;AAC7B,EAAA,GAAA,CAAI,MAAS,GAAA,MAAA,CAAA;AACb,EAAO,OAAA,GAAA,CAAA;AACT,CAAA;AAIA,MAAM,QAAW,GAAA,kCAAA,CAAA;AACjB,MAAM,eAAe,QAAS,CAAA,MAAA,CAAA;AAC9B,MAAM,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,CAAA,EAAG,EAAE,CAAI,GAAA,CAAA,CAAA;AACnC,MAAM,QAAW,GAAA,EAAA,CAAA;AACjB,MAAM,UAAa,GAAA,EAAA,CAAA;AAKZ,SAAS,OAAO,GAAsB,EAAA;AAE3C,EAAA,
|
|
1
|
+
{"version":3,"file":"ulid.js","sources":["../../src/crypto/ulid.ts"],"sourcesContent":["import { getRandomValues } from './getRandomValues';\n\ntype PRNG = () => number;\n\n/**\n * Universally Unique Lexicographically Sortable Identifier\n *\n * @see https://github.com/ulid/spec ulid/spec\n */\nexport type ULID = (seedTime?: number) => string;\n\nexport interface ULIDError extends Error {\n source: string;\n}\n\nfunction createError(message: string): ULIDError {\n const err = new Error(message) as ULIDError;\n err.source = 'ulid';\n return err;\n}\n\n// These values should NEVER change. If\n// they do, we're no longer making ulids!\nconst ENCODING = '0123456789ABCDEFGHJKMNPQRSTVWXYZ'; // Crockford's Base32\nconst ENCODING_LEN = ENCODING.length;\nconst TIME_MAX = Math.pow(2, 48) - 1;\nconst TIME_LEN = 10;\nconst RANDOM_LEN = 16;\n\n/**\n * check give {@link str} is a valid ulid\n */\nexport function isULID(str: string): boolean {\n // ttttttttttrrrrrrrrrrrrrrrr\n return str?.length === 26 && /^[0-9A-HJKMNP-TV-Z]{26}$/i.test(str);\n}\n\nfunction replaceCharAt(str: string, index: number, char: string) {\n if (index > str.length - 1) {\n return str;\n }\n return str.substr(0, index) + char + str.substr(index + 1);\n}\n\nfunction incrementBase32(str: string): string {\n let done;\n let index = str.length;\n let char;\n let charIndex;\n const maxCharIndex = ENCODING_LEN - 1;\n while (!done && index-- >= 0) {\n char = str[index];\n charIndex = ENCODING.indexOf(char);\n if (charIndex === -1) {\n throw createError('incorrectly encoded string');\n }\n if (charIndex === maxCharIndex) {\n str = replaceCharAt(str, index, ENCODING[0]);\n continue;\n }\n done = replaceCharAt(str, index, ENCODING[charIndex + 1]);\n }\n if (typeof done === 'string') {\n return done;\n }\n throw createError('cannot increment this string');\n}\n\nfunction randomChar(prng: PRNG): string {\n let rand = Math.floor(prng() * ENCODING_LEN);\n if (rand === ENCODING_LEN) {\n rand = ENCODING_LEN - 1;\n }\n return ENCODING.charAt(rand);\n}\n\nfunction encodeTime(now: number, len: number): string {\n if (isNaN(now)) {\n throw new Error(`${now} must be a number`);\n }\n if (now > TIME_MAX) {\n throw createError(`cannot encode time greater than ${TIME_MAX}`);\n }\n if (now < 0) {\n throw createError('time must be positive');\n }\n if (!Number.isInteger(now)) {\n throw createError('time must be an integer');\n }\n let mod;\n let str = '';\n for (; len > 0; len--) {\n mod = now % ENCODING_LEN;\n str = ENCODING.charAt(mod) + str;\n now = (now - mod) / ENCODING_LEN;\n }\n return str;\n}\n\nfunction encodeRandom(len: number, prng: PRNG): string {\n let str = '';\n for (; len > 0; len--) {\n str = randomChar(prng) + str;\n }\n return str;\n}\n\n/**\n * extract time & random from ulid\n *\n * @throws ULIDError\n */\nexport function parseULID(id: string): { timestamp: number; random: string } {\n if (id.length !== TIME_LEN + RANDOM_LEN) {\n throw createError('malformed ulid');\n }\n const time = id\n .substr(0, TIME_LEN)\n .split('')\n .reverse()\n .reduce((carry, char, index) => {\n const encodingIndex = ENCODING.indexOf(char);\n if (encodingIndex === -1) {\n throw createError('invalid character found: ' + char);\n }\n return (carry += encodingIndex * Math.pow(ENCODING_LEN, index));\n }, 0);\n if (time > TIME_MAX) {\n throw createError('malformed ulid, timestamp too large');\n }\n return { timestamp: time, random: id.substring(TIME_LEN) };\n}\n\nfunction createPrng(): PRNG {\n return () => {\n const buffer = new Uint8Array(1);\n getRandomValues(buffer);\n return buffer[0] / 0xff;\n };\n}\n\n/**\n * create a ulid generator\n */\nexport function createULID({\n monotonic = true,\n random = createPrng(),\n now = Date.now,\n}: { monotonic?: boolean; now?: () => number; random?: () => number } = {}) {\n if (!monotonic) {\n return function ulid(seedTime?: number): string {\n seedTime ||= now();\n return encodeTime(seedTime, TIME_LEN) + encodeRandom(RANDOM_LEN, random);\n };\n }\n\n let lastTime: number = 0;\n let lastRandom: string;\n return function ulid(seedTime?: number): string {\n seedTime ||= now();\n if (seedTime <= lastTime && lastRandom) {\n const incrementedRandom = (lastRandom = incrementBase32(lastRandom));\n return encodeTime(lastTime, TIME_LEN) + incrementedRandom;\n }\n lastTime = seedTime;\n const newRandom = (lastRandom = encodeRandom(RANDOM_LEN, random));\n return encodeTime(seedTime, TIME_LEN) + newRandom;\n };\n}\n\n/**\n * default monotonic ulid generator\n */\nexport let ulid: ULID = (...args) => {\n if (_real) {\n return _real(...args);\n }\n // delay initialize crypto\n _real = createULID();\n ulid = _real;\n return _real(...args);\n};\nlet _real: ULID;\n"],"names":["ulid"],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -47,4 +47,5 @@ export { hex } from './crypto/base.js';
|
|
|
47
47
|
export { createULID, isULID, parseULID, ulid } from './crypto/ulid.js';
|
|
48
48
|
export { PEM } from './crypto/pem/pem.js';
|
|
49
49
|
export { createRandom } from './maths/random.js';
|
|
50
|
+
export { default as ms } from './libs/ms.js';
|
|
50
51
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|