@hashgraphonline/standards-sdk 0.0.182 → 0.0.184
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/hcs-12/assembly/assembly-engine.d.ts +2 -2
- package/dist/cjs/hcs-12/assembly/assembly-engine.d.ts.map +1 -1
- package/dist/cjs/hcs-12/base-client.d.ts +3 -3
- package/dist/cjs/hcs-12/base-client.d.ts.map +1 -1
- package/dist/cjs/hcs-12/browser.d.ts.map +1 -1
- package/dist/cjs/hcs-12/builders/action-builder.d.ts +5 -0
- package/dist/cjs/hcs-12/builders/action-builder.d.ts.map +1 -1
- package/dist/cjs/hcs-12/registries/action-registry.d.ts +7 -2
- package/dist/cjs/hcs-12/registries/action-registry.d.ts.map +1 -1
- package/dist/cjs/hcs-12/registries/assembly-registry.d.ts +2 -2
- package/dist/cjs/hcs-12/registries/assembly-registry.d.ts.map +1 -1
- package/dist/cjs/hcs-12/registries/base-registry.d.ts +3 -3
- package/dist/cjs/hcs-12/registries/base-registry.d.ts.map +1 -1
- package/dist/cjs/hcs-12/registries/block-loader.d.ts +2 -2
- package/dist/cjs/hcs-12/registries/block-loader.d.ts.map +1 -1
- package/dist/cjs/hcs-12/registries/hashlinks-registry.d.ts +2 -2
- package/dist/cjs/hcs-12/registries/hashlinks-registry.d.ts.map +1 -1
- package/dist/cjs/hcs-12/rendering/resource-manager.d.ts.map +1 -1
- package/dist/cjs/hcs-12/sdk.d.ts.map +1 -1
- package/dist/cjs/hcs-12/security/hash-verifier.d.ts +13 -0
- package/dist/cjs/hcs-12/security/hash-verifier.d.ts.map +1 -1
- package/dist/cjs/hcs-12/security/permission-system.d.ts +5 -5
- package/dist/cjs/hcs-12/security/permission-system.d.ts.map +1 -1
- package/dist/cjs/hcs-12/security/signature-verifier.d.ts +5 -0
- package/dist/cjs/hcs-12/security/signature-verifier.d.ts.map +1 -1
- package/dist/cjs/hcs-12/validation/wasm-validator.d.ts +9 -4
- package/dist/cjs/hcs-12/validation/wasm-validator.d.ts.map +1 -1
- package/dist/cjs/{index-5G8lx2OC.cjs → index-DH8JqKpL.cjs} +21 -21
- package/dist/cjs/{index-5G8lx2OC.cjs.map → index-DH8JqKpL.cjs.map} +1 -1
- package/dist/cjs/{index-DNOBUKZd-ByWVn3_3.cjs → index-DNOBUKZd-DP8GdiGA.cjs} +2 -2
- package/dist/cjs/{index-DNOBUKZd-ByWVn3_3.cjs.map → index-DNOBUKZd-DP8GdiGA.cjs.map} +1 -1
- package/dist/cjs/inscribe/inscriber.d.ts.map +1 -1
- package/dist/cjs/standards-sdk.cjs +1 -1
- package/dist/cjs/{standards-sdk.es47-LpJXpYet-BcMEbzeg.cjs → standards-sdk.es47-LpJXpYet-BEh9hyjN.cjs} +2 -2
- package/dist/cjs/{standards-sdk.es47-LpJXpYet-BcMEbzeg.cjs.map → standards-sdk.es47-LpJXpYet-BEh9hyjN.cjs.map} +1 -1
- package/dist/cjs/{standards-sdk.es48-PT6ZHlCU-DeVBWhj9.cjs → standards-sdk.es48-PT6ZHlCU-AWU0EkFj.cjs} +2 -2
- package/dist/cjs/{standards-sdk.es48-PT6ZHlCU-DeVBWhj9.cjs.map → standards-sdk.es48-PT6ZHlCU-AWU0EkFj.cjs.map} +1 -1
- package/dist/cjs/{standards-sdk.es49-BoFc-ELK-C2EmnXa-.cjs → standards-sdk.es49-BoFc-ELK-Bz7Gd2qu.cjs} +2 -2
- package/dist/cjs/{standards-sdk.es49-BoFc-ELK-C2EmnXa-.cjs.map → standards-sdk.es49-BoFc-ELK-Bz7Gd2qu.cjs.map} +1 -1
- package/dist/cjs/{standards-sdk.es50-miBtNmtl-2L3nQXPh.cjs → standards-sdk.es50-miBtNmtl-DcjyhGyg.cjs} +2 -2
- package/dist/cjs/{standards-sdk.es50-miBtNmtl-2L3nQXPh.cjs.map → standards-sdk.es50-miBtNmtl-DcjyhGyg.cjs.map} +1 -1
- package/dist/cjs/{standards-sdk.es51-rS2UvvV5-D0SR8-Nc.cjs → standards-sdk.es51-rS2UvvV5-Bmyu85K4.cjs} +2 -2
- package/dist/cjs/{standards-sdk.es51-rS2UvvV5-D0SR8-Nc.cjs.map → standards-sdk.es51-rS2UvvV5-Bmyu85K4.cjs.map} +1 -1
- package/dist/cjs/{standards-sdk.es52-D-lvSMBY-DgGZRneG.cjs → standards-sdk.es52-D-lvSMBY-t0dhVZEE.cjs} +2 -2
- package/dist/cjs/{standards-sdk.es52-D-lvSMBY-DgGZRneG.cjs.map → standards-sdk.es52-D-lvSMBY-t0dhVZEE.cjs.map} +1 -1
- package/dist/cjs/utils/crypto-abstraction.d.ts +89 -0
- package/dist/cjs/utils/crypto-abstraction.d.ts.map +1 -0
- package/dist/cjs/utils/crypto-env.d.ts +25 -0
- package/dist/cjs/utils/crypto-env.d.ts.map +1 -0
- package/dist/cjs/utils/hash-adapter.d.ts +46 -0
- package/dist/cjs/utils/hash-adapter.d.ts.map +1 -0
- package/dist/es/hcs-12/assembly/assembly-engine.d.ts +2 -2
- package/dist/es/hcs-12/assembly/assembly-engine.d.ts.map +1 -1
- package/dist/es/hcs-12/base-client.d.ts +3 -3
- package/dist/es/hcs-12/base-client.d.ts.map +1 -1
- package/dist/es/hcs-12/browser.d.ts.map +1 -1
- package/dist/es/hcs-12/builders/action-builder.d.ts +5 -0
- package/dist/es/hcs-12/builders/action-builder.d.ts.map +1 -1
- package/dist/es/hcs-12/registries/action-registry.d.ts +7 -2
- package/dist/es/hcs-12/registries/action-registry.d.ts.map +1 -1
- package/dist/es/hcs-12/registries/assembly-registry.d.ts +2 -2
- package/dist/es/hcs-12/registries/assembly-registry.d.ts.map +1 -1
- package/dist/es/hcs-12/registries/base-registry.d.ts +3 -3
- package/dist/es/hcs-12/registries/base-registry.d.ts.map +1 -1
- package/dist/es/hcs-12/registries/block-loader.d.ts +2 -2
- package/dist/es/hcs-12/registries/block-loader.d.ts.map +1 -1
- package/dist/es/hcs-12/registries/hashlinks-registry.d.ts +2 -2
- package/dist/es/hcs-12/registries/hashlinks-registry.d.ts.map +1 -1
- package/dist/es/hcs-12/rendering/resource-manager.d.ts.map +1 -1
- package/dist/es/hcs-12/sdk.d.ts.map +1 -1
- package/dist/es/hcs-12/security/hash-verifier.d.ts +13 -0
- package/dist/es/hcs-12/security/hash-verifier.d.ts.map +1 -1
- package/dist/es/hcs-12/security/permission-system.d.ts +5 -5
- package/dist/es/hcs-12/security/permission-system.d.ts.map +1 -1
- package/dist/es/hcs-12/security/signature-verifier.d.ts +5 -0
- package/dist/es/hcs-12/security/signature-verifier.d.ts.map +1 -1
- package/dist/es/hcs-12/validation/wasm-validator.d.ts +9 -4
- package/dist/es/hcs-12/validation/wasm-validator.d.ts.map +1 -1
- package/dist/es/inscribe/inscriber.d.ts.map +1 -1
- package/dist/es/standards-sdk.es11.js +1 -1
- package/dist/es/standards-sdk.es12.js +1 -1
- package/dist/es/standards-sdk.es13.js +1 -1
- package/dist/es/standards-sdk.es18.js +1 -1
- package/dist/es/standards-sdk.es21.js.map +1 -1
- package/dist/es/standards-sdk.es22.js +49 -6
- package/dist/es/standards-sdk.es22.js.map +1 -1
- package/dist/es/standards-sdk.es23.js.map +1 -1
- package/dist/es/standards-sdk.es24.js.map +1 -1
- package/dist/es/standards-sdk.es25.js +0 -1
- package/dist/es/standards-sdk.es25.js.map +1 -1
- package/dist/es/standards-sdk.es26.js +1 -4
- package/dist/es/standards-sdk.es26.js.map +1 -1
- package/dist/es/standards-sdk.es27.js +1 -1
- package/dist/es/standards-sdk.es27.js.map +1 -1
- package/dist/es/standards-sdk.es28.js +1 -3
- package/dist/es/standards-sdk.es28.js.map +1 -1
- package/dist/es/standards-sdk.es29.js +36 -10
- package/dist/es/standards-sdk.es29.js.map +1 -1
- package/dist/es/standards-sdk.es32.js +20 -4
- package/dist/es/standards-sdk.es32.js.map +1 -1
- package/dist/es/standards-sdk.es34.js.map +1 -1
- package/dist/es/standards-sdk.es37.js +9 -0
- package/dist/es/standards-sdk.es37.js.map +1 -1
- package/dist/es/standards-sdk.es46.js +1 -1
- package/dist/es/standards-sdk.es52.js +1 -1
- package/dist/es/standards-sdk.es59.js +7 -7
- package/dist/es/standards-sdk.es64.js +1 -1
- package/dist/es/standards-sdk.es65.js +1 -1
- package/dist/es/standards-sdk.es66.js +35 -7
- package/dist/es/standards-sdk.es66.js.map +1 -1
- package/dist/es/standards-sdk.es72.js +2 -410
- package/dist/es/standards-sdk.es72.js.map +1 -1
- package/dist/es/standards-sdk.es74.js +409 -203
- package/dist/es/standards-sdk.es74.js.map +1 -1
- package/dist/es/standards-sdk.es75.js +2 -172
- package/dist/es/standards-sdk.es75.js.map +1 -1
- package/dist/es/standards-sdk.es76.js +181 -299
- package/dist/es/standards-sdk.es76.js.map +1 -1
- package/dist/es/standards-sdk.es77.js +120 -294
- package/dist/es/standards-sdk.es77.js.map +1 -1
- package/dist/es/standards-sdk.es78.js +191 -322
- package/dist/es/standards-sdk.es78.js.map +1 -1
- package/dist/es/standards-sdk.es79.js +294 -279
- package/dist/es/standards-sdk.es79.js.map +1 -1
- package/dist/es/standards-sdk.es80.js +450 -303
- package/dist/es/standards-sdk.es80.js.map +1 -1
- package/dist/es/standards-sdk.es81.js +319 -64
- package/dist/es/standards-sdk.es81.js.map +1 -1
- package/dist/es/standards-sdk.es82.js +306 -2
- package/dist/es/standards-sdk.es82.js.map +1 -1
- package/dist/es/standards-sdk.es83.js +76 -2
- package/dist/es/standards-sdk.es83.js.map +1 -1
- package/dist/es/standards-sdk.es91.js +202 -0
- package/dist/es/standards-sdk.es91.js.map +1 -0
- package/dist/es/standards-sdk.es92.js +37 -0
- package/dist/es/standards-sdk.es92.js.map +1 -0
- package/dist/es/standards-sdk.es93.js +81 -0
- package/dist/es/standards-sdk.es93.js.map +1 -0
- package/dist/es/utils/crypto-abstraction.d.ts +89 -0
- package/dist/es/utils/crypto-abstraction.d.ts.map +1 -0
- package/dist/es/utils/crypto-env.d.ts +25 -0
- package/dist/es/utils/crypto-env.d.ts.map +1 -0
- package/dist/es/utils/hash-adapter.d.ts +46 -0
- package/dist/es/utils/hash-adapter.d.ts.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standards-sdk.es91.js","sources":["../../src/utils/crypto-abstraction.ts"],"sourcesContent":["/**\n * Crypto Abstraction Layer\n * \n * Provides a unified interface for cryptographic operations that works\n * across Node.js, browser, and SSR environments.\n */\n\nimport { detectCryptoEnvironment } from './crypto-env';\nimport { HashAdapter, NodeHashAdapter, WebHashAdapter, FallbackHashAdapter } from './hash-adapter';\n\n/**\n * HMAC Adapter interface\n */\nexport interface HmacAdapter {\n update(data: Buffer): HmacAdapter;\n digest(encoding?: string): string | Buffer | Promise<string | Buffer>;\n}\n\n/**\n * Node.js HMAC adapter\n */\nexport class NodeHmacAdapter implements HmacAdapter {\n constructor(private nodeHmac: any) {}\n \n update(data: Buffer): HmacAdapter {\n this.nodeHmac.update(data);\n return this;\n }\n \n digest(encoding?: string): string | Buffer {\n return this.nodeHmac.digest(encoding);\n }\n}\n\n/**\n * WebCrypto HMAC adapter\n */\nexport class WebHmacAdapter implements HmacAdapter {\n private data: Buffer[] = [];\n \n constructor(private key: Buffer, private algorithm: string = 'sha256') {}\n \n update(data: Buffer): HmacAdapter {\n this.data.push(data);\n return this;\n }\n \n async digest(encoding?: string): Promise<string | Buffer> {\n const combined = Buffer.concat(this.data);\n const keyBuffer = await crypto.subtle.importKey(\n 'raw',\n this.key,\n { name: 'HMAC', hash: this.mapAlgorithm(this.algorithm) },\n false,\n ['sign']\n );\n \n const signature = await crypto.subtle.sign('HMAC', keyBuffer, combined);\n \n if (encoding === 'hex') {\n return Array.from(new Uint8Array(signature))\n .map(b => b.toString(16).padStart(2, '0'))\n .join('');\n }\n \n return Buffer.from(signature);\n }\n\n private mapAlgorithm(algorithm: string): string {\n const algorithmMap: Record<string, string> = {\n 'sha256': 'SHA-256',\n 'sha1': 'SHA-1',\n 'sha512': 'SHA-512'\n };\n \n return algorithmMap[algorithm.toLowerCase()] || 'SHA-256';\n }\n}\n\n/**\n * Fallback HMAC adapter\n */\nexport class FallbackHmacAdapter implements HmacAdapter {\n private data: Buffer[] = [];\n \n constructor(private key: Buffer, private algorithm: string = 'sha256') {}\n \n update(data: Buffer): HmacAdapter {\n this.data.push(data);\n return this;\n }\n \n digest(encoding?: string): string {\n const combined = Buffer.concat(this.data);\n const hash = this.simpleHmac(combined, this.key);\n \n if (encoding === 'hex') {\n return hash.toString(16).padStart(8, '0');\n }\n \n return hash.toString();\n }\n\n private simpleHmac(data: Buffer, key: Buffer): number {\n let hash = 0;\n for (let i = 0; i < data.length; i++) {\n const keyByte = key[i % key.length];\n hash = ((hash << 5) - hash + data[i] + keyByte) & 0xffffffff;\n }\n return Math.abs(hash);\n }\n}\n\n/**\n * Main crypto adapter interface\n */\nexport interface CryptoAdapter {\n createHash(algorithm: string): HashAdapter;\n createHmac(algorithm: string, key: Buffer): HmacAdapter;\n pbkdf2(password: string, salt: Buffer, iterations: number, keylen: number, digest: string): Promise<Buffer>;\n timingSafeEqual(a: Buffer, b: Buffer): boolean;\n}\n\n/**\n * Node.js crypto adapter\n */\nexport class NodeCryptoAdapter implements CryptoAdapter {\n private crypto: any;\n \n constructor() {\n try {\n this.crypto = require('crypto');\n } catch (error) {\n throw new Error('Node.js crypto module not available');\n }\n }\n \n createHash(algorithm: string): HashAdapter {\n return new NodeHashAdapter(this.crypto.createHash(algorithm));\n }\n \n createHmac(algorithm: string, key: Buffer): HmacAdapter {\n return new NodeHmacAdapter(this.crypto.createHmac(algorithm, key));\n }\n \n async pbkdf2(password: string, salt: Buffer, iterations: number, keylen: number, digest: string): Promise<Buffer> {\n return new Promise((resolve, reject) => {\n this.crypto.pbkdf2(password, salt, iterations, keylen, digest, (err: any, derivedKey: Buffer) => {\n if (err) reject(err);\n else resolve(derivedKey);\n });\n });\n }\n \n timingSafeEqual(a: Buffer, b: Buffer): boolean {\n return this.crypto.timingSafeEqual(a, b);\n }\n}\n\n/**\n * WebCrypto adapter\n */\nexport class WebCryptoAdapter implements CryptoAdapter {\n createHash(algorithm: string): HashAdapter {\n return new WebHashAdapter(algorithm);\n }\n \n createHmac(algorithm: string, key: Buffer): HmacAdapter {\n return new WebHmacAdapter(key, algorithm);\n }\n \n async pbkdf2(password: string, salt: Buffer, iterations: number, keylen: number, digest: string): Promise<Buffer> {\n const encoder = new TextEncoder();\n const keyMaterial = await crypto.subtle.importKey(\n 'raw',\n encoder.encode(password),\n { name: 'PBKDF2' },\n false,\n ['deriveBits']\n );\n \n const derivedBits = await crypto.subtle.deriveBits(\n {\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: this.mapDigest(digest)\n },\n keyMaterial,\n keylen * 8\n );\n \n return Buffer.from(derivedBits);\n }\n \n timingSafeEqual(a: Buffer, b: Buffer): boolean {\n if (a.length !== b.length) return false;\n \n let result = 0;\n for (let i = 0; i < a.length; i++) {\n result |= a[i] ^ b[i];\n }\n return result === 0;\n }\n\n private mapDigest(digest: string): string {\n const digestMap: Record<string, string> = {\n 'sha256': 'SHA-256',\n 'sha1': 'SHA-1',\n 'sha512': 'SHA-512'\n };\n \n return digestMap[digest.toLowerCase()] || 'SHA-256';\n }\n}\n\n/**\n * Fallback crypto adapter for SSR\n */\nexport class FallbackCryptoAdapter implements CryptoAdapter {\n createHash(algorithm: string): HashAdapter {\n return new FallbackHashAdapter(algorithm);\n }\n \n createHmac(algorithm: string, key: Buffer): HmacAdapter {\n return new FallbackHmacAdapter(key, algorithm);\n }\n \n async pbkdf2(password: string, salt: Buffer, iterations: number, keylen: number, digest: string): Promise<Buffer> {\n const encoder = new TextEncoder();\n const passwordBuffer = Buffer.from(encoder.encode(password));\n let result = Buffer.alloc(keylen);\n \n for (let i = 0; i < iterations; i++) {\n const combined = Buffer.concat([passwordBuffer, salt, Buffer.from([i])]);\n let hash = 0;\n for (let j = 0; j < combined.length; j++) {\n hash = ((hash << 5) - hash + combined[j]) & 0xffffffff;\n }\n result[i % keylen] ^= hash & 0xff;\n }\n \n return result;\n }\n \n timingSafeEqual(a: Buffer, b: Buffer): boolean {\n if (a.length !== b.length) return false;\n \n let result = 0;\n for (let i = 0; i < a.length; i++) {\n result |= a[i] ^ b[i];\n }\n return result === 0;\n }\n}\n\n/**\n * Get appropriate crypto adapter for current environment\n */\nexport function getCryptoAdapter(): CryptoAdapter {\n const env = detectCryptoEnvironment();\n \n switch (env.preferredAPI) {\n case 'node':\n try {\n return new NodeCryptoAdapter();\n } catch {\n return new FallbackCryptoAdapter();\n }\n case 'web':\n return new WebCryptoAdapter();\n case 'none':\n default:\n return new FallbackCryptoAdapter();\n }\n}\n\n/**\n * Convenience function for simple hash operations\n */\nexport async function hash(content: Buffer | string, algorithm: string = 'sha256'): Promise<string> {\n const adapter = getCryptoAdapter();\n const hasher = adapter.createHash(algorithm);\n const buffer = typeof content === 'string' ? Buffer.from(content) : content;\n const result = hasher.update(buffer).digest('hex');\n \n if (result instanceof Promise) {\n return await result as string;\n }\n \n return result as string;\n}"],"names":["hash"],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
function detectCryptoEnvironment() {
|
|
2
|
+
const isSSR = typeof window === "undefined";
|
|
3
|
+
let hasNodeCrypto = false;
|
|
4
|
+
let hasWebCrypto = false;
|
|
5
|
+
try {
|
|
6
|
+
hasNodeCrypto = typeof require !== "undefined" && typeof process !== "undefined" && !!process.versions?.node;
|
|
7
|
+
} catch {
|
|
8
|
+
hasNodeCrypto = false;
|
|
9
|
+
}
|
|
10
|
+
try {
|
|
11
|
+
hasWebCrypto = typeof crypto !== "undefined" && typeof crypto.subtle !== "undefined" && !isSSR;
|
|
12
|
+
} catch {
|
|
13
|
+
hasWebCrypto = false;
|
|
14
|
+
}
|
|
15
|
+
let preferredAPI;
|
|
16
|
+
if (hasNodeCrypto && isSSR) {
|
|
17
|
+
preferredAPI = "node";
|
|
18
|
+
} else if (hasWebCrypto && !isSSR) {
|
|
19
|
+
preferredAPI = "web";
|
|
20
|
+
} else {
|
|
21
|
+
preferredAPI = "none";
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
hasNodeCrypto,
|
|
25
|
+
hasWebCrypto,
|
|
26
|
+
isSSR,
|
|
27
|
+
preferredAPI
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function isSSREnvironment() {
|
|
31
|
+
return typeof window === "undefined";
|
|
32
|
+
}
|
|
33
|
+
export {
|
|
34
|
+
detectCryptoEnvironment,
|
|
35
|
+
isSSREnvironment
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=standards-sdk.es92.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standards-sdk.es92.js","sources":["../../src/utils/crypto-env.ts"],"sourcesContent":["/**\n * Crypto Environment Detection Utility\n *\n * Detects available cryptographic APIs and determines the best\n * crypto implementation for the current environment (Node.js, browser, or SSR).\n */\n\nexport interface CryptoEnvironment {\n hasNodeCrypto: boolean;\n hasWebCrypto: boolean;\n isSSR: boolean;\n preferredAPI: 'node' | 'web' | 'none';\n}\n\n/**\n * Detect current cryptographic environment\n */\nexport function detectCryptoEnvironment(): CryptoEnvironment {\n const isSSR = typeof window === 'undefined';\n\n let hasNodeCrypto = false;\n let hasWebCrypto = false;\n\n try {\n hasNodeCrypto = typeof require !== 'undefined' &&\n typeof process !== 'undefined' &&\n !!process.versions?.node;\n } catch {\n hasNodeCrypto = false;\n }\n\n try {\n hasWebCrypto = typeof crypto !== 'undefined' &&\n typeof crypto.subtle !== 'undefined' &&\n !isSSR;\n } catch {\n hasWebCrypto = false;\n }\n\n let preferredAPI: 'node' | 'web' | 'none';\n\n if (hasNodeCrypto && isSSR) {\n preferredAPI = 'node';\n } else if (hasWebCrypto && !isSSR) {\n preferredAPI = 'web';\n } else {\n preferredAPI = 'none';\n }\n\n return {\n hasNodeCrypto,\n hasWebCrypto,\n isSSR,\n preferredAPI\n };\n}\n\n/**\n * Check if crypto operations are available\n */\nexport function isCryptoAvailable(): boolean {\n const env = detectCryptoEnvironment();\n return env.preferredAPI !== 'none';\n}\n\n/**\n * Check if running in server-side rendering context\n */\nexport function isSSREnvironment(): boolean {\n return typeof window === 'undefined';\n}"],"names":[],"mappings":"AAiBO,SAAS,0BAA6C;AAC3D,QAAM,QAAQ,OAAO,WAAW;AAEhC,MAAI,gBAAgB;AACpB,MAAI,eAAe;AAEnB,MAAI;AACF,oBAAgB,OAAO,YAAY,eACnB,OAAO,YAAY,eACnB,CAAC,CAAC,QAAQ,UAAU;AAAA,EACtC,QAAQ;AACN,oBAAgB;AAAA,EAClB;AAEA,MAAI;AACF,mBAAe,OAAO,WAAW,eAClB,OAAO,OAAO,WAAW,eACzB,CAAC;AAAA,EAClB,QAAQ;AACN,mBAAe;AAAA,EACjB;AAEA,MAAI;AAEJ,MAAI,iBAAiB,OAAO;AAC1B,mBAAe;AAAA,EACjB,WAAW,gBAAgB,CAAC,OAAO;AACjC,mBAAe;AAAA,EACjB,OAAO;AACL,mBAAe;AAAA,EACjB;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAaO,SAAS,mBAA4B;AAC1C,SAAO,OAAO,WAAW;AAC3B;"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
class NodeHashAdapter {
|
|
2
|
+
constructor(nodeHash) {
|
|
3
|
+
this.nodeHash = nodeHash;
|
|
4
|
+
}
|
|
5
|
+
update(data) {
|
|
6
|
+
this.nodeHash.update(data);
|
|
7
|
+
return this;
|
|
8
|
+
}
|
|
9
|
+
digest(encoding) {
|
|
10
|
+
return this.nodeHash.digest(encoding);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
class WebHashAdapter {
|
|
14
|
+
constructor(algorithm) {
|
|
15
|
+
this.algorithm = algorithm;
|
|
16
|
+
this.data = [];
|
|
17
|
+
}
|
|
18
|
+
update(data) {
|
|
19
|
+
const bytes = typeof data === "string" ? new TextEncoder().encode(data) : new Uint8Array(data);
|
|
20
|
+
this.data.push(bytes);
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
async digest(encoding) {
|
|
24
|
+
const combined = this.concatenateArrays(this.data);
|
|
25
|
+
const hashBuffer = await crypto.subtle.digest(this.mapAlgorithm(this.algorithm), combined);
|
|
26
|
+
if (encoding === "hex") {
|
|
27
|
+
return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
28
|
+
}
|
|
29
|
+
return Buffer.from(hashBuffer);
|
|
30
|
+
}
|
|
31
|
+
concatenateArrays(arrays) {
|
|
32
|
+
const totalLength = arrays.reduce((sum, arr) => sum + arr.length, 0);
|
|
33
|
+
const result = new Uint8Array(totalLength);
|
|
34
|
+
let offset = 0;
|
|
35
|
+
for (const arr of arrays) {
|
|
36
|
+
result.set(arr, offset);
|
|
37
|
+
offset += arr.length;
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
mapAlgorithm(algorithm) {
|
|
42
|
+
const algorithmMap = {
|
|
43
|
+
"sha256": "SHA-256",
|
|
44
|
+
"sha1": "SHA-1",
|
|
45
|
+
"sha512": "SHA-512"
|
|
46
|
+
};
|
|
47
|
+
return algorithmMap[algorithm.toLowerCase()] || "SHA-256";
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
class FallbackHashAdapter {
|
|
51
|
+
constructor(algorithm) {
|
|
52
|
+
this.algorithm = algorithm;
|
|
53
|
+
this.data = [];
|
|
54
|
+
}
|
|
55
|
+
update(data) {
|
|
56
|
+
const buffer = typeof data === "string" ? Buffer.from(data) : data;
|
|
57
|
+
this.data.push(buffer);
|
|
58
|
+
return this;
|
|
59
|
+
}
|
|
60
|
+
digest(encoding) {
|
|
61
|
+
const combined = Buffer.concat(this.data);
|
|
62
|
+
const hash = this.simpleHash(combined);
|
|
63
|
+
if (encoding === "hex") {
|
|
64
|
+
return hash.toString(16).padStart(8, "0");
|
|
65
|
+
}
|
|
66
|
+
return hash.toString();
|
|
67
|
+
}
|
|
68
|
+
simpleHash(buffer) {
|
|
69
|
+
let hash = 0;
|
|
70
|
+
for (let i = 0; i < buffer.length; i++) {
|
|
71
|
+
hash = (hash << 5) - hash + buffer[i] & 4294967295;
|
|
72
|
+
}
|
|
73
|
+
return Math.abs(hash);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
export {
|
|
77
|
+
FallbackHashAdapter,
|
|
78
|
+
NodeHashAdapter,
|
|
79
|
+
WebHashAdapter
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=standards-sdk.es93.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standards-sdk.es93.js","sources":["../../src/utils/hash-adapter.ts"],"sourcesContent":["/**\n * Hash Adapter Interface\n * \n * Provides a unified interface for hash operations across different\n * crypto implementations (Node.js crypto, WebCrypto, fallback).\n */\n\n/**\n * Common interface for hash operations\n */\nexport interface HashAdapter {\n update(data: Buffer | string): HashAdapter;\n digest(encoding?: string): string | Buffer | Promise<string | Buffer>;\n}\n\n/**\n * Node.js crypto hash adapter\n */\nexport class NodeHashAdapter implements HashAdapter {\n constructor(private nodeHash: any) {}\n \n update(data: Buffer | string): HashAdapter {\n this.nodeHash.update(data);\n return this;\n }\n \n digest(encoding?: string): string | Buffer {\n return this.nodeHash.digest(encoding);\n }\n}\n\n/**\n * WebCrypto hash adapter\n */\nexport class WebHashAdapter implements HashAdapter {\n private data: Uint8Array[] = [];\n \n constructor(private algorithm: string) {}\n \n update(data: Buffer | string): HashAdapter {\n const bytes = typeof data === 'string' ? \n new TextEncoder().encode(data) : \n new Uint8Array(data);\n this.data.push(bytes);\n return this;\n }\n \n async digest(encoding?: string): Promise<string | Buffer> {\n const combined = this.concatenateArrays(this.data);\n const hashBuffer = await crypto.subtle.digest(this.mapAlgorithm(this.algorithm), combined);\n \n if (encoding === 'hex') {\n return Array.from(new Uint8Array(hashBuffer))\n .map(b => b.toString(16).padStart(2, '0'))\n .join('');\n }\n \n return Buffer.from(hashBuffer);\n }\n\n private concatenateArrays(arrays: Uint8Array[]): Uint8Array {\n const totalLength = arrays.reduce((sum, arr) => sum + arr.length, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n \n for (const arr of arrays) {\n result.set(arr, offset);\n offset += arr.length;\n }\n \n return result;\n }\n\n private mapAlgorithm(algorithm: string): string {\n const algorithmMap: Record<string, string> = {\n 'sha256': 'SHA-256',\n 'sha1': 'SHA-1',\n 'sha512': 'SHA-512'\n };\n \n return algorithmMap[algorithm.toLowerCase()] || 'SHA-256';\n }\n}\n\n/**\n * Fallback hash adapter for SSR environments\n */\nexport class FallbackHashAdapter implements HashAdapter {\n private data: Buffer[] = [];\n \n constructor(private algorithm: string) {}\n \n update(data: Buffer | string): HashAdapter {\n const buffer = typeof data === 'string' ? Buffer.from(data) : data;\n this.data.push(buffer);\n return this;\n }\n \n digest(encoding?: string): string {\n const combined = Buffer.concat(this.data);\n const hash = this.simpleHash(combined);\n \n if (encoding === 'hex') {\n return hash.toString(16).padStart(8, '0');\n }\n \n return hash.toString();\n }\n\n private simpleHash(buffer: Buffer): number {\n let hash = 0;\n for (let i = 0; i < buffer.length; i++) {\n hash = ((hash << 5) - hash + buffer[i]) & 0xffffffff;\n }\n return Math.abs(hash);\n }\n}"],"names":[],"mappings":"AAkBO,MAAM,gBAAuC;AAAA,EAClD,YAAoB,UAAe;AAAf,SAAA,WAAA;AAAA,EAAgB;AAAA,EAEpC,OAAO,MAAoC;AACzC,SAAK,SAAS,OAAO,IAAI;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,UAAoC;AACzC,WAAO,KAAK,SAAS,OAAO,QAAQ;AAAA,EACtC;AACF;AAKO,MAAM,eAAsC;AAAA,EAGjD,YAAoB,WAAmB;AAAnB,SAAA,YAAA;AAFpB,SAAQ,OAAqB,CAAA;AAAA,EAEW;AAAA,EAExC,OAAO,MAAoC;AACzC,UAAM,QAAQ,OAAO,SAAS,WACjB,IAAI,cAAc,OAAO,IAAI,IAC7B,IAAI,WAAW,IAAI;AAChC,SAAK,KAAK,KAAK,KAAK;AACpB,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,UAA6C;AACxD,UAAM,WAAW,KAAK,kBAAkB,KAAK,IAAI;AACjD,UAAM,aAAa,MAAM,OAAO,OAAO,OAAO,KAAK,aAAa,KAAK,SAAS,GAAG,QAAQ;AAEzF,QAAI,aAAa,OAAO;AACtB,aAAO,MAAM,KAAK,IAAI,WAAW,UAAU,CAAC,EACzC,IAAI,CAAA,MAAK,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EACxC,KAAK,EAAE;AAAA,IACZ;AAEA,WAAO,OAAO,KAAK,UAAU;AAAA,EAC/B;AAAA,EAEQ,kBAAkB,QAAkC;AAC1D,UAAM,cAAc,OAAO,OAAO,CAAC,KAAK,QAAQ,MAAM,IAAI,QAAQ,CAAC;AACnE,UAAM,SAAS,IAAI,WAAW,WAAW;AACzC,QAAI,SAAS;AAEb,eAAW,OAAO,QAAQ;AACxB,aAAO,IAAI,KAAK,MAAM;AACtB,gBAAU,IAAI;AAAA,IAChB;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,aAAa,WAA2B;AAC9C,UAAM,eAAuC;AAAA,MAC3C,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,IAAA;AAGZ,WAAO,aAAa,UAAU,YAAA,CAAa,KAAK;AAAA,EAClD;AACF;AAKO,MAAM,oBAA2C;AAAA,EAGtD,YAAoB,WAAmB;AAAnB,SAAA,YAAA;AAFpB,SAAQ,OAAiB,CAAA;AAAA,EAEe;AAAA,EAExC,OAAO,MAAoC;AACzC,UAAM,SAAS,OAAO,SAAS,WAAW,OAAO,KAAK,IAAI,IAAI;AAC9D,SAAK,KAAK,KAAK,MAAM;AACrB,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,UAA2B;AAChC,UAAM,WAAW,OAAO,OAAO,KAAK,IAAI;AACxC,UAAM,OAAO,KAAK,WAAW,QAAQ;AAErC,QAAI,aAAa,OAAO;AACtB,aAAO,KAAK,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAAA,IAC1C;AAEA,WAAO,KAAK,SAAA;AAAA,EACd;AAAA,EAEQ,WAAW,QAAwB;AACzC,QAAI,OAAO;AACX,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,cAAS,QAAQ,KAAK,OAAO,OAAO,CAAC,IAAK;AAAA,IAC5C;AACA,WAAO,KAAK,IAAI,IAAI;AAAA,EACtB;AACF;"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { HashAdapter } from './hash-adapter';
|
|
2
|
+
/**
|
|
3
|
+
* HMAC Adapter interface
|
|
4
|
+
*/
|
|
5
|
+
export interface HmacAdapter {
|
|
6
|
+
update(data: Buffer): HmacAdapter;
|
|
7
|
+
digest(encoding?: string): string | Buffer | Promise<string | Buffer>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Node.js HMAC adapter
|
|
11
|
+
*/
|
|
12
|
+
export declare class NodeHmacAdapter implements HmacAdapter {
|
|
13
|
+
private nodeHmac;
|
|
14
|
+
constructor(nodeHmac: any);
|
|
15
|
+
update(data: Buffer): HmacAdapter;
|
|
16
|
+
digest(encoding?: string): string | Buffer;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* WebCrypto HMAC adapter
|
|
20
|
+
*/
|
|
21
|
+
export declare class WebHmacAdapter implements HmacAdapter {
|
|
22
|
+
private key;
|
|
23
|
+
private algorithm;
|
|
24
|
+
private data;
|
|
25
|
+
constructor(key: Buffer, algorithm?: string);
|
|
26
|
+
update(data: Buffer): HmacAdapter;
|
|
27
|
+
digest(encoding?: string): Promise<string | Buffer>;
|
|
28
|
+
private mapAlgorithm;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Fallback HMAC adapter
|
|
32
|
+
*/
|
|
33
|
+
export declare class FallbackHmacAdapter implements HmacAdapter {
|
|
34
|
+
private key;
|
|
35
|
+
private algorithm;
|
|
36
|
+
private data;
|
|
37
|
+
constructor(key: Buffer, algorithm?: string);
|
|
38
|
+
update(data: Buffer): HmacAdapter;
|
|
39
|
+
digest(encoding?: string): string;
|
|
40
|
+
private simpleHmac;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Main crypto adapter interface
|
|
44
|
+
*/
|
|
45
|
+
export interface CryptoAdapter {
|
|
46
|
+
createHash(algorithm: string): HashAdapter;
|
|
47
|
+
createHmac(algorithm: string, key: Buffer): HmacAdapter;
|
|
48
|
+
pbkdf2(password: string, salt: Buffer, iterations: number, keylen: number, digest: string): Promise<Buffer>;
|
|
49
|
+
timingSafeEqual(a: Buffer, b: Buffer): boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Node.js crypto adapter
|
|
53
|
+
*/
|
|
54
|
+
export declare class NodeCryptoAdapter implements CryptoAdapter {
|
|
55
|
+
private crypto;
|
|
56
|
+
constructor();
|
|
57
|
+
createHash(algorithm: string): HashAdapter;
|
|
58
|
+
createHmac(algorithm: string, key: Buffer): HmacAdapter;
|
|
59
|
+
pbkdf2(password: string, salt: Buffer, iterations: number, keylen: number, digest: string): Promise<Buffer>;
|
|
60
|
+
timingSafeEqual(a: Buffer, b: Buffer): boolean;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* WebCrypto adapter
|
|
64
|
+
*/
|
|
65
|
+
export declare class WebCryptoAdapter implements CryptoAdapter {
|
|
66
|
+
createHash(algorithm: string): HashAdapter;
|
|
67
|
+
createHmac(algorithm: string, key: Buffer): HmacAdapter;
|
|
68
|
+
pbkdf2(password: string, salt: Buffer, iterations: number, keylen: number, digest: string): Promise<Buffer>;
|
|
69
|
+
timingSafeEqual(a: Buffer, b: Buffer): boolean;
|
|
70
|
+
private mapDigest;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Fallback crypto adapter for SSR
|
|
74
|
+
*/
|
|
75
|
+
export declare class FallbackCryptoAdapter implements CryptoAdapter {
|
|
76
|
+
createHash(algorithm: string): HashAdapter;
|
|
77
|
+
createHmac(algorithm: string, key: Buffer): HmacAdapter;
|
|
78
|
+
pbkdf2(password: string, salt: Buffer, iterations: number, keylen: number, digest: string): Promise<Buffer>;
|
|
79
|
+
timingSafeEqual(a: Buffer, b: Buffer): boolean;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get appropriate crypto adapter for current environment
|
|
83
|
+
*/
|
|
84
|
+
export declare function getCryptoAdapter(): CryptoAdapter;
|
|
85
|
+
/**
|
|
86
|
+
* Convenience function for simple hash operations
|
|
87
|
+
*/
|
|
88
|
+
export declare function hash(content: Buffer | string, algorithm?: string): Promise<string>;
|
|
89
|
+
//# sourceMappingURL=crypto-abstraction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto-abstraction.d.ts","sourceRoot":"","sources":["../../../src/utils/crypto-abstraction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crypto Environment Detection Utility
|
|
3
|
+
*
|
|
4
|
+
* Detects available cryptographic APIs and determines the best
|
|
5
|
+
* crypto implementation for the current environment (Node.js, browser, or SSR).
|
|
6
|
+
*/
|
|
7
|
+
export interface CryptoEnvironment {
|
|
8
|
+
hasNodeCrypto: boolean;
|
|
9
|
+
hasWebCrypto: boolean;
|
|
10
|
+
isSSR: boolean;
|
|
11
|
+
preferredAPI: 'node' | 'web' | 'none';
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Detect current cryptographic environment
|
|
15
|
+
*/
|
|
16
|
+
export declare function detectCryptoEnvironment(): CryptoEnvironment;
|
|
17
|
+
/**
|
|
18
|
+
* Check if crypto operations are available
|
|
19
|
+
*/
|
|
20
|
+
export declare function isCryptoAvailable(): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Check if running in server-side rendering context
|
|
23
|
+
*/
|
|
24
|
+
export declare function isSSREnvironment(): boolean;
|
|
25
|
+
//# sourceMappingURL=crypto-env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto-env.d.ts","sourceRoot":"","sources":["../../../src/utils/crypto-env.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;CACvC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,iBAAiB,CAsC3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAG3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hash Adapter Interface
|
|
3
|
+
*
|
|
4
|
+
* Provides a unified interface for hash operations across different
|
|
5
|
+
* crypto implementations (Node.js crypto, WebCrypto, fallback).
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Common interface for hash operations
|
|
9
|
+
*/
|
|
10
|
+
export interface HashAdapter {
|
|
11
|
+
update(data: Buffer | string): HashAdapter;
|
|
12
|
+
digest(encoding?: string): string | Buffer | Promise<string | Buffer>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Node.js crypto hash adapter
|
|
16
|
+
*/
|
|
17
|
+
export declare class NodeHashAdapter implements HashAdapter {
|
|
18
|
+
private nodeHash;
|
|
19
|
+
constructor(nodeHash: any);
|
|
20
|
+
update(data: Buffer | string): HashAdapter;
|
|
21
|
+
digest(encoding?: string): string | Buffer;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* WebCrypto hash adapter
|
|
25
|
+
*/
|
|
26
|
+
export declare class WebHashAdapter implements HashAdapter {
|
|
27
|
+
private algorithm;
|
|
28
|
+
private data;
|
|
29
|
+
constructor(algorithm: string);
|
|
30
|
+
update(data: Buffer | string): HashAdapter;
|
|
31
|
+
digest(encoding?: string): Promise<string | Buffer>;
|
|
32
|
+
private concatenateArrays;
|
|
33
|
+
private mapAlgorithm;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Fallback hash adapter for SSR environments
|
|
37
|
+
*/
|
|
38
|
+
export declare class FallbackHashAdapter implements HashAdapter {
|
|
39
|
+
private algorithm;
|
|
40
|
+
private data;
|
|
41
|
+
constructor(algorithm: string);
|
|
42
|
+
update(data: Buffer | string): HashAdapter;
|
|
43
|
+
digest(encoding?: string): string;
|
|
44
|
+
private simpleHash;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=hash-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash-adapter.d.ts","sourceRoot":"","sources":["../../../src/utils/hash-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC;IAC3C,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CACvE;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,WAAW;IACrC,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,GAAG;IAEjC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW;IAK1C,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;CAG3C;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,WAAW;IAGpC,OAAO,CAAC,SAAS;IAF7B,OAAO,CAAC,IAAI,CAAoB;gBAEZ,SAAS,EAAE,MAAM;IAErC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW;IAQpC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAazD,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,YAAY;CASrB;AAED;;GAEG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IAGzC,OAAO,CAAC,SAAS;IAF7B,OAAO,CAAC,IAAI,CAAgB;gBAER,SAAS,EAAE,MAAM;IAErC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW;IAM1C,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAWjC,OAAO,CAAC,UAAU;CAOnB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hashgraphonline/standards-sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.184",
|
|
4
4
|
"description": "The Hashgraph Online Standards SDK provides a complete implementation of the Hashgraph Consensus Standards (HCS), giving developers all the tools needed to build applications on Hedera.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
".": {
|
|
34
34
|
"types": "./dist/es/index.d.ts",
|
|
35
35
|
"import": "./dist/es/standards-sdk.es.js",
|
|
36
|
+
"browser": "./dist/es/standards-sdk.es.js",
|
|
36
37
|
"require": "./dist/cjs/standards-sdk.cjs",
|
|
37
38
|
"default": "./dist/es/standards-sdk.es.js"
|
|
38
39
|
}
|