mindoodb 0.0.2 → 0.0.3

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 (172) hide show
  1. package/README.md +92 -19
  2. package/dist/__mocks__/expo-standard-web-crypto.d.ts +10 -0
  3. package/dist/__mocks__/expo-standard-web-crypto.d.ts.map +1 -0
  4. package/dist/__mocks__/expo-standard-web-crypto.js +22 -0
  5. package/dist/__mocks__/expo-standard-web-crypto.js.map +1 -0
  6. package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.d.ts +8 -0
  7. package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.d.ts.map +1 -0
  8. package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.js +16 -0
  9. package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.js.map +1 -0
  10. package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.d.ts +1 -1
  11. package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.d.ts.map +1 -1
  12. package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.js +2 -2
  13. package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.js.map +1 -1
  14. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts +11 -1
  15. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts.map +1 -1
  16. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js +94 -0
  17. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js.map +1 -1
  18. package/dist/appendonlystores/network/HttpTransport.d.ts +13 -2
  19. package/dist/appendonlystores/network/HttpTransport.d.ts.map +1 -1
  20. package/dist/appendonlystores/network/HttpTransport.js +86 -0
  21. package/dist/appendonlystores/network/HttpTransport.js.map +1 -1
  22. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts +19 -2
  23. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts.map +1 -1
  24. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js +96 -0
  25. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js.map +1 -1
  26. package/dist/appendonlystores/network/index.d.ts +1 -1
  27. package/dist/appendonlystores/network/index.d.ts.map +1 -1
  28. package/dist/appendonlystores/network/index.js.map +1 -1
  29. package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.d.ts +61 -0
  30. package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.d.ts.map +1 -0
  31. package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.js +685 -0
  32. package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.js.map +1 -0
  33. package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.d.ts +25 -0
  34. package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.d.ts.map +1 -0
  35. package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.js +41 -0
  36. package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.js.map +1 -0
  37. package/dist/browser/index.d.ts +5 -0
  38. package/dist/browser/index.d.ts.map +1 -1
  39. package/dist/browser/index.js +13 -1
  40. package/dist/browser/index.js.map +1 -1
  41. package/dist/core/BaseMindooDB.d.ts +12 -0
  42. package/dist/core/BaseMindooDB.d.ts.map +1 -1
  43. package/dist/core/BaseMindooDB.js +210 -108
  44. package/dist/core/BaseMindooDB.js.map +1 -1
  45. package/dist/core/BaseMindooTenant.d.ts +40 -6
  46. package/dist/core/BaseMindooTenant.d.ts.map +1 -1
  47. package/dist/core/BaseMindooTenant.js +179 -21
  48. package/dist/core/BaseMindooTenant.js.map +1 -1
  49. package/dist/core/BaseMindooTenantDirectory.d.ts.map +1 -1
  50. package/dist/core/BaseMindooTenantDirectory.js +10 -0
  51. package/dist/core/BaseMindooTenantDirectory.js.map +1 -1
  52. package/dist/core/BaseMindooTenantFactory.d.ts +22 -28
  53. package/dist/core/BaseMindooTenantFactory.d.ts.map +1 -1
  54. package/dist/core/BaseMindooTenantFactory.js +161 -65
  55. package/dist/core/BaseMindooTenantFactory.js.map +1 -1
  56. package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.d.ts +68 -0
  57. package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.d.ts.map +1 -0
  58. package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.js +659 -0
  59. package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.js.map +1 -0
  60. package/dist/core/appendonlystores/InMemoryContentAddressedStore.d.ts +43 -3
  61. package/dist/core/appendonlystores/InMemoryContentAddressedStore.d.ts.map +1 -1
  62. package/dist/core/appendonlystores/InMemoryContentAddressedStore.js +162 -23
  63. package/dist/core/appendonlystores/InMemoryContentAddressedStore.js.map +1 -1
  64. package/dist/core/appendonlystores/bloom.d.ts +85 -0
  65. package/dist/core/appendonlystores/bloom.d.ts.map +1 -0
  66. package/dist/core/appendonlystores/bloom.js +228 -0
  67. package/dist/core/appendonlystores/bloom.js.map +1 -0
  68. package/dist/core/appendonlystores/network/NetworkTransport.d.ts +22 -2
  69. package/dist/core/appendonlystores/network/NetworkTransport.d.ts.map +1 -1
  70. package/dist/core/appendonlystores/network/types.d.ts +10 -0
  71. package/dist/core/appendonlystores/network/types.d.ts.map +1 -1
  72. package/dist/core/appendonlystores/network/types.js.map +1 -1
  73. package/dist/core/appendonlystores/types.d.ts +123 -0
  74. package/dist/core/appendonlystores/types.d.ts.map +1 -1
  75. package/dist/core/automerge-adapter.d.ts +15 -0
  76. package/dist/core/automerge-adapter.d.ts.map +1 -0
  77. package/dist/core/automerge-adapter.js +73 -0
  78. package/dist/core/automerge-adapter.js.map +1 -0
  79. package/dist/core/crypto/pbkdf2Iterations.d.ts +12 -0
  80. package/dist/core/crypto/pbkdf2Iterations.d.ts.map +1 -0
  81. package/dist/core/crypto/pbkdf2Iterations.js +55 -0
  82. package/dist/core/crypto/pbkdf2Iterations.js.map +1 -0
  83. package/dist/core/index.d.ts +7 -2
  84. package/dist/core/index.d.ts.map +1 -1
  85. package/dist/core/index.js +30 -1
  86. package/dist/core/index.js.map +1 -1
  87. package/dist/core/keys/KeyBag.d.ts +32 -12
  88. package/dist/core/keys/KeyBag.d.ts.map +1 -1
  89. package/dist/core/keys/KeyBag.js +86 -26
  90. package/dist/core/keys/KeyBag.js.map +1 -1
  91. package/dist/core/keys/KeyContext.d.ts +4 -0
  92. package/dist/core/keys/KeyContext.d.ts.map +1 -0
  93. package/dist/core/keys/KeyContext.js +11 -0
  94. package/dist/core/keys/KeyContext.js.map +1 -0
  95. package/dist/core/types.d.ts +218 -50
  96. package/dist/core/types.d.ts.map +1 -1
  97. package/dist/core/types.js +2 -0
  98. package/dist/core/types.js.map +1 -1
  99. package/dist/core/uri/MindooURI.d.ts +58 -0
  100. package/dist/core/uri/MindooURI.d.ts.map +1 -0
  101. package/dist/core/uri/MindooURI.js +169 -0
  102. package/dist/core/uri/MindooURI.js.map +1 -0
  103. package/dist/core/userid/index.d.ts +0 -10
  104. package/dist/core/userid/index.d.ts.map +1 -1
  105. package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.d.ts +541 -0
  106. package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.d.ts.map +1 -0
  107. package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.js +1334 -0
  108. package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.js.map +1 -0
  109. package/dist/node/index.d.ts +1 -0
  110. package/dist/node/index.d.ts.map +1 -1
  111. package/dist/node/index.js +5 -1
  112. package/dist/node/index.js.map +1 -1
  113. package/dist/reactnative/crypto/AESAdapter.d.ts +18 -0
  114. package/dist/reactnative/crypto/AESAdapter.d.ts.map +1 -0
  115. package/dist/reactnative/crypto/AESAdapter.js +112 -0
  116. package/dist/reactnative/crypto/AESAdapter.js.map +1 -0
  117. package/dist/reactnative/crypto/Ed25519Adapter.d.ts +34 -0
  118. package/dist/reactnative/crypto/Ed25519Adapter.d.ts.map +1 -0
  119. package/dist/reactnative/crypto/Ed25519Adapter.js +386 -0
  120. package/dist/reactnative/crypto/Ed25519Adapter.js.map +1 -0
  121. package/dist/reactnative/crypto/ExpoGoCryptoAdapter.d.ts +23 -0
  122. package/dist/reactnative/crypto/ExpoGoCryptoAdapter.d.ts.map +1 -0
  123. package/dist/reactnative/crypto/ExpoGoCryptoAdapter.js +51 -0
  124. package/dist/reactnative/crypto/ExpoGoCryptoAdapter.js.map +1 -0
  125. package/dist/reactnative/crypto/HMACAdapter.d.ts +13 -0
  126. package/dist/reactnative/crypto/HMACAdapter.d.ts.map +1 -0
  127. package/dist/reactnative/crypto/HMACAdapter.js +50 -0
  128. package/dist/reactnative/crypto/HMACAdapter.js.map +1 -0
  129. package/dist/reactnative/crypto/KeyFormatConverter.d.ts +21 -0
  130. package/dist/reactnative/crypto/KeyFormatConverter.d.ts.map +1 -0
  131. package/dist/reactnative/crypto/KeyFormatConverter.js +72 -0
  132. package/dist/reactnative/crypto/KeyFormatConverter.js.map +1 -0
  133. package/dist/reactnative/crypto/PBKDF2Adapter.d.ts +19 -0
  134. package/dist/reactnative/crypto/PBKDF2Adapter.d.ts.map +1 -0
  135. package/dist/reactnative/crypto/PBKDF2Adapter.js +67 -0
  136. package/dist/reactnative/crypto/PBKDF2Adapter.js.map +1 -0
  137. package/dist/reactnative/crypto/QuickCryptoAdapter.d.ts +37 -0
  138. package/dist/reactnative/crypto/QuickCryptoAdapter.d.ts.map +1 -0
  139. package/dist/reactnative/crypto/QuickCryptoAdapter.js +72 -0
  140. package/dist/reactnative/crypto/QuickCryptoAdapter.js.map +1 -0
  141. package/dist/reactnative/crypto/RSAAdapter.d.ts +38 -0
  142. package/dist/reactnative/crypto/RSAAdapter.d.ts.map +1 -0
  143. package/dist/reactnative/crypto/RSAAdapter.js +184 -0
  144. package/dist/reactnative/crypto/RSAAdapter.js.map +1 -0
  145. package/dist/reactnative/crypto/ReactNativeCryptoAdapter.d.ts +33 -0
  146. package/dist/reactnative/crypto/ReactNativeCryptoAdapter.d.ts.map +1 -0
  147. package/dist/reactnative/crypto/ReactNativeCryptoAdapter.js +61 -0
  148. package/dist/reactnative/crypto/ReactNativeCryptoAdapter.js.map +1 -0
  149. package/dist/reactnative/crypto/SHA256Adapter.d.ts +9 -0
  150. package/dist/reactnative/crypto/SHA256Adapter.d.ts.map +1 -0
  151. package/dist/reactnative/crypto/SHA256Adapter.js +29 -0
  152. package/dist/reactnative/crypto/SHA256Adapter.js.map +1 -0
  153. package/dist/reactnative/crypto/SubtleCryptoPolyfill.d.ts +63 -0
  154. package/dist/reactnative/crypto/SubtleCryptoPolyfill.d.ts.map +1 -0
  155. package/dist/reactnative/crypto/SubtleCryptoPolyfill.js +350 -0
  156. package/dist/reactnative/crypto/SubtleCryptoPolyfill.js.map +1 -0
  157. package/dist/reactnative/index.d.ts +8 -0
  158. package/dist/reactnative/index.d.ts.map +1 -0
  159. package/dist/reactnative/index.js +38 -0
  160. package/dist/reactnative/index.js.map +1 -0
  161. package/package.json +51 -6
  162. package/patches/PATCHES.md +111 -0
  163. package/patches/react-native+0.76.9.patch +34 -0
  164. package/patches/react-native-quick-crypto+1.0.7.patch +42 -0
  165. package/scripts/cli.js +21 -0
  166. package/scripts/setup-react-native.js +228 -0
  167. package/templates/reactnative/App.js +252 -0
  168. package/templates/reactnative/app.json +29 -0
  169. package/templates/reactnative/babel.config.js +6 -0
  170. package/templates/reactnative/index.js +26 -0
  171. package/templates/reactnative/metro.config.snippet.js +39 -0
  172. package/templates/reactnative/mindoodb-polyfills.js +116 -0
@@ -0,0 +1,63 @@
1
+ /**
2
+ * SubtleCrypto Polyfill
3
+ * Implements the Web Crypto API SubtleCrypto interface using JavaScript-only libraries
4
+ * Only implements methods actually used by MindooDB
5
+ */
6
+ /**
7
+ * SubtleCrypto polyfill implementation
8
+ * Note: We use 'as any' for type compatibility since we only implement a subset of methods
9
+ */
10
+ export declare class SubtleCryptoPolyfill {
11
+ /**
12
+ * Generate a cryptographic key
13
+ */
14
+ generateKey(algorithm: RsaHashedKeyGenParams | EcKeyGenParams | AesKeyGenParams | {
15
+ name: "Ed25519";
16
+ } | "Ed25519", extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair | CryptoKey>;
17
+ /**
18
+ * Import a key
19
+ */
20
+ importKey(format: KeyFormat, keyData: BufferSource | JsonWebKey, algorithm: RsaHashedImportParams | EcKeyImportParams | AesKeyAlgorithm | HmacImportParams | {
21
+ name: "Ed25519";
22
+ }, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
23
+ /**
24
+ * Export a key
25
+ */
26
+ exportKey(format: KeyFormat, key: CryptoKey): Promise<ArrayBuffer | JsonWebKey>;
27
+ /**
28
+ * Sign data
29
+ */
30
+ sign(algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams | {
31
+ name: "Ed25519";
32
+ } | {
33
+ name: "HMAC";
34
+ }, key: CryptoKey, data: BufferSource): Promise<ArrayBuffer>;
35
+ /**
36
+ * Verify a signature
37
+ */
38
+ verify(algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams | {
39
+ name: "Ed25519";
40
+ } | {
41
+ name: "HMAC";
42
+ }, key: CryptoKey, signature: BufferSource, data: BufferSource): Promise<boolean>;
43
+ /**
44
+ * Encrypt data
45
+ */
46
+ encrypt(algorithm: RsaOaepParams | AesGcmParams, key: CryptoKey, data: BufferSource): Promise<ArrayBuffer>;
47
+ /**
48
+ * Decrypt data
49
+ */
50
+ decrypt(algorithm: RsaOaepParams | AesGcmParams, key: CryptoKey, data: BufferSource): Promise<ArrayBuffer>;
51
+ /**
52
+ * Derive a key using PBKDF2
53
+ */
54
+ deriveKey(algorithm: Pbkdf2Params, baseKey: CryptoKey, derivedKeyType: AesDerivedKeyParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
55
+ /**
56
+ * Compute digest
57
+ */
58
+ digest(algorithm: AlgorithmIdentifier, data: BufferSource): Promise<ArrayBuffer>;
59
+ deriveBits(algorithm: AlgorithmIdentifier, baseKey: CryptoKey, length: number): Promise<ArrayBuffer>;
60
+ wrapKey(format: KeyFormat, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: AlgorithmIdentifier): Promise<ArrayBuffer>;
61
+ unwrapKey(format: KeyFormat, wrappedKey: BufferSource, unwrappingKey: CryptoKey, unwrapAlgorithm: AlgorithmIdentifier, unwrappedKeyAlgorithm: AlgorithmIdentifier, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
62
+ }
63
+ //# sourceMappingURL=SubtleCryptoPolyfill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubtleCryptoPolyfill.d.ts","sourceRoot":"","sources":["../../../src/reactnative/crypto/SubtleCryptoPolyfill.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B;;OAEG;IACG,WAAW,CACf,SAAS,EAAE,qBAAqB,GAAG,cAAc,GAAG,eAAe,GAAG;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,GAAG,SAAS,EACrG,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,QAAQ,EAAE,GACpB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IA2CrC;;OAEG;IACG,SAAS,CACb,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,YAAY,GAAG,UAAU,EAClC,SAAS,EACL,qBAAqB,GACrB,iBAAiB,GACjB,eAAe,GACf,gBAAgB,GAChB;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,EACvB,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,QAAQ,EAAE,GACpB,OAAO,CAAC,SAAS,CAAC;IA6FrB;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,UAAU,CAAC;IAwBrF;;OAEG;IACG,IAAI,CACR,SAAS,EAAE,mBAAmB,GAAG,YAAY,GAAG,WAAW,GAAG;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EACpG,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,YAAY,GACnB,OAAO,CAAC,WAAW,CAAC;IAiBrB;;OAEG;IACG,MAAM,CACV,SAAS,EAAE,mBAAmB,GAAG,YAAY,GAAG,WAAW,GAAG;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EACpG,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,YAAY,EACvB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,OAAO,CAAC;IAkBnB;;OAEG;IACG,OAAO,CACX,SAAS,EAAE,aAAa,GAAG,YAAY,EACvC,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,CAAC;IAqBvB;;OAEG;IACG,OAAO,CACX,SAAS,EAAE,aAAa,GAAG,YAAY,EACvC,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,CAAC;IAqBvB;;OAEG;IACG,SAAS,CACb,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,SAAS,EAClB,cAAc,EAAE,mBAAmB,EACnC,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,QAAQ,EAAE,GACpB,OAAO,CAAC,SAAS,CAAC;IAyBrB;;OAEG;IACG,MAAM,CAAC,SAAS,EAAE,mBAAmB,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAYhF,UAAU,CACd,SAAS,EAAE,mBAAmB,EAC9B,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC;IAIjB,OAAO,CACX,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,SAAS,EACd,WAAW,EAAE,SAAS,EACtB,aAAa,EAAE,mBAAmB,GACjC,OAAO,CAAC,WAAW,CAAC;IAIjB,SAAS,CACb,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,YAAY,EACxB,aAAa,EAAE,SAAS,EACxB,eAAe,EAAE,mBAAmB,EACpC,qBAAqB,EAAE,mBAAmB,EAC1C,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,QAAQ,EAAE,GACpB,OAAO,CAAC,SAAS,CAAC;CAGtB"}
@@ -0,0 +1,350 @@
1
+ "use strict";
2
+ /**
3
+ * SubtleCrypto Polyfill
4
+ * Implements the Web Crypto API SubtleCrypto interface using JavaScript-only libraries
5
+ * Only implements methods actually used by MindooDB
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.SubtleCryptoPolyfill = void 0;
42
+ const ed25519 = __importStar(require("./Ed25519Adapter"));
43
+ const rsa = __importStar(require("./RSAAdapter"));
44
+ const aes = __importStar(require("./AESAdapter"));
45
+ const pbkdf2 = __importStar(require("./PBKDF2Adapter"));
46
+ const hmac = __importStar(require("./HMACAdapter"));
47
+ const sha256 = __importStar(require("./SHA256Adapter"));
48
+ /**
49
+ * NotSupportedError for unimplemented methods
50
+ */
51
+ class NotSupportedError extends Error {
52
+ constructor(message) {
53
+ super(message);
54
+ this.name = "NotSupportedError";
55
+ }
56
+ }
57
+ /**
58
+ * SubtleCrypto polyfill implementation
59
+ * Note: We use 'as any' for type compatibility since we only implement a subset of methods
60
+ */
61
+ class SubtleCryptoPolyfill {
62
+ /**
63
+ * Generate a cryptographic key
64
+ */
65
+ async generateKey(algorithm, extractable, keyUsages) {
66
+ const alg = typeof algorithm === "string" ? { name: algorithm } : algorithm;
67
+ if (alg.name === "Ed25519") {
68
+ return ed25519.ed25519GenerateKey();
69
+ }
70
+ else if (alg.name === "RSA-OAEP") {
71
+ const params = alg;
72
+ return rsa.rsaGenerateKey({
73
+ name: "RSA-OAEP",
74
+ modulusLength: params.modulusLength,
75
+ publicExponent: new Uint8Array(params.publicExponent),
76
+ hash: params.hash,
77
+ }, extractable, keyUsages);
78
+ }
79
+ else if (alg.name === "AES-GCM") {
80
+ const params = alg;
81
+ // Generate random key material
82
+ const keyLength = params.length / 8; // Convert bits to bytes
83
+ const keyMaterial = new Uint8Array(keyLength);
84
+ // Use crypto.getRandomValues if available, otherwise throw
85
+ if (typeof crypto !== "undefined" && crypto.getRandomValues) {
86
+ crypto.getRandomValues(keyMaterial);
87
+ }
88
+ else {
89
+ throw new Error("getRandomValues not available");
90
+ }
91
+ return {
92
+ type: "secret",
93
+ extractable,
94
+ algorithm: {
95
+ name: "AES-GCM",
96
+ length: params.length,
97
+ },
98
+ usages: keyUsages,
99
+ _rawKey: keyMaterial.buffer,
100
+ };
101
+ }
102
+ else {
103
+ throw new NotSupportedError(`Algorithm ${alg.name} is not supported`);
104
+ }
105
+ }
106
+ /**
107
+ * Import a key
108
+ */
109
+ async importKey(format, keyData, algorithm, extractable, keyUsages) {
110
+ if (format === "jwk") {
111
+ throw new NotSupportedError("JWK format is not supported");
112
+ }
113
+ let keyBuffer;
114
+ if (keyData instanceof ArrayBuffer) {
115
+ keyBuffer = keyData;
116
+ }
117
+ else if (typeof SharedArrayBuffer !== 'undefined' && keyData instanceof SharedArrayBuffer) {
118
+ // Convert SharedArrayBuffer to ArrayBuffer by copying
119
+ // Note: SharedArrayBuffer may not exist in React Native/Expo Go environments
120
+ const view = new Uint8Array(keyData);
121
+ const copy = new Uint8Array(view.length);
122
+ copy.set(view);
123
+ keyBuffer = copy.buffer;
124
+ }
125
+ else {
126
+ // ArrayBufferView - copy to ensure we have an ArrayBuffer
127
+ const view = keyData;
128
+ const bytes = new Uint8Array(view.buffer, view.byteOffset, view.byteLength);
129
+ const copy = new Uint8Array(bytes.length);
130
+ copy.set(bytes);
131
+ keyBuffer = copy.buffer;
132
+ }
133
+ const alg = typeof algorithm === "string" ? { name: algorithm } : algorithm;
134
+ if (alg.name === "Ed25519") {
135
+ return ed25519.ed25519ImportKey(format, keyBuffer, alg, extractable, keyUsages);
136
+ }
137
+ else if (alg.name === "RSA-OAEP") {
138
+ const params = alg;
139
+ return rsa.rsaImportKey(format, keyBuffer, {
140
+ name: "RSA-OAEP",
141
+ hash: params.hash,
142
+ }, extractable, keyUsages);
143
+ }
144
+ else if (alg.name === "AES-GCM") {
145
+ if (format !== "raw") {
146
+ throw new Error("AES-GCM keys can only be imported in 'raw' format");
147
+ }
148
+ const params = alg;
149
+ const keyBytes = new Uint8Array(keyBuffer);
150
+ return {
151
+ type: "secret",
152
+ extractable,
153
+ algorithm: {
154
+ name: "AES-GCM",
155
+ length: params.length || keyBytes.length * 8,
156
+ },
157
+ usages: keyUsages,
158
+ _rawKey: keyBuffer,
159
+ };
160
+ }
161
+ else if (alg.name === "HMAC") {
162
+ if (format !== "raw") {
163
+ throw new Error("HMAC keys can only be imported in 'raw' format");
164
+ }
165
+ const params = alg;
166
+ return {
167
+ type: "secret",
168
+ extractable,
169
+ algorithm: {
170
+ name: "HMAC",
171
+ hash: params.hash,
172
+ length: new Uint8Array(keyBuffer).length * 8,
173
+ },
174
+ usages: keyUsages,
175
+ _rawKey: keyBuffer,
176
+ };
177
+ }
178
+ else if (alg.name === "PBKDF2") {
179
+ // PBKDF2 key import - treat the keyData as raw password material
180
+ // This is used for PBKDF2 key derivation
181
+ return {
182
+ type: "secret",
183
+ extractable,
184
+ algorithm: alg,
185
+ usages: keyUsages,
186
+ _rawKey: keyBuffer,
187
+ };
188
+ }
189
+ else {
190
+ throw new NotSupportedError(`Algorithm ${alg.name} is not supported`);
191
+ }
192
+ }
193
+ /**
194
+ * Export a key
195
+ */
196
+ async exportKey(format, key) {
197
+ if (format === "jwk") {
198
+ throw new NotSupportedError("JWK format is not supported");
199
+ }
200
+ if (format === "raw") {
201
+ // For raw keys (AES, HMAC), export the raw key material
202
+ const rawKey = key._rawKey;
203
+ if (!rawKey) {
204
+ throw new Error("Key does not contain raw key material");
205
+ }
206
+ return rawKey instanceof ArrayBuffer ? rawKey : rawKey.buffer;
207
+ }
208
+ else if (format === "spki" || format === "pkcs8") {
209
+ if (key.algorithm.name === "Ed25519") {
210
+ return ed25519.ed25519ExportKey(format, key);
211
+ }
212
+ else if (key.algorithm.name === "RSA-OAEP") {
213
+ return rsa.rsaExportKey(format, key);
214
+ }
215
+ else {
216
+ throw new Error(`Cannot export ${key.algorithm.name} key in ${format} format`);
217
+ }
218
+ }
219
+ else {
220
+ throw new NotSupportedError(`Export format ${format} is not supported`);
221
+ }
222
+ }
223
+ /**
224
+ * Sign data
225
+ */
226
+ async sign(algorithm, key, data) {
227
+ const dataBuffer = data instanceof ArrayBuffer ? data : data.buffer;
228
+ const alg = typeof algorithm === "string" ? { name: algorithm } : algorithm;
229
+ if (alg.name === "Ed25519") {
230
+ return ed25519.ed25519Sign(alg, key, dataBuffer);
231
+ }
232
+ else if (algorithm === "HMAC" || alg.name === "HMAC") {
233
+ const rawKey = key._rawKey;
234
+ if (!rawKey) {
235
+ throw new Error("Key does not contain raw key material");
236
+ }
237
+ return hmac.hmacSign(rawKey, dataBuffer);
238
+ }
239
+ else {
240
+ throw new NotSupportedError(`Signing algorithm ${alg.name || algorithm} is not supported`);
241
+ }
242
+ }
243
+ /**
244
+ * Verify a signature
245
+ */
246
+ async verify(algorithm, key, signature, data) {
247
+ const sigBuffer = signature instanceof ArrayBuffer ? signature : signature.buffer;
248
+ const dataBuffer = data instanceof ArrayBuffer ? data : data.buffer;
249
+ const alg = typeof algorithm === "string" ? { name: algorithm } : algorithm;
250
+ if (alg.name === "Ed25519") {
251
+ return ed25519.ed25519Verify(alg, key, sigBuffer, dataBuffer);
252
+ }
253
+ else if (algorithm === "HMAC" || alg.name === "HMAC") {
254
+ const rawKey = key._rawKey;
255
+ if (!rawKey) {
256
+ throw new Error("Key does not contain raw key material");
257
+ }
258
+ return hmac.hmacVerify(rawKey, sigBuffer, dataBuffer);
259
+ }
260
+ else {
261
+ throw new NotSupportedError(`Verification algorithm ${alg.name || algorithm} is not supported`);
262
+ }
263
+ }
264
+ /**
265
+ * Encrypt data
266
+ */
267
+ async encrypt(algorithm, key, data) {
268
+ const dataBuffer = data instanceof ArrayBuffer ? data : data.buffer;
269
+ if (algorithm.name === "RSA-OAEP") {
270
+ return rsa.rsaEncrypt(algorithm, key, dataBuffer);
271
+ }
272
+ else if (algorithm.name === "AES-GCM") {
273
+ const params = algorithm;
274
+ return aes.aesGcmEncrypt({
275
+ name: "AES-GCM",
276
+ iv: params.iv,
277
+ tagLength: params.tagLength,
278
+ }, key, dataBuffer);
279
+ }
280
+ else {
281
+ throw new NotSupportedError(`Encryption algorithm ${algorithm.name} is not supported`);
282
+ }
283
+ }
284
+ /**
285
+ * Decrypt data
286
+ */
287
+ async decrypt(algorithm, key, data) {
288
+ const dataBuffer = data instanceof ArrayBuffer ? data : data.buffer;
289
+ if (algorithm.name === "RSA-OAEP") {
290
+ return rsa.rsaDecrypt(algorithm, key, dataBuffer);
291
+ }
292
+ else if (algorithm.name === "AES-GCM") {
293
+ const params = algorithm;
294
+ return aes.aesGcmDecrypt({
295
+ name: "AES-GCM",
296
+ iv: params.iv,
297
+ tagLength: params.tagLength,
298
+ }, key, dataBuffer);
299
+ }
300
+ else {
301
+ throw new NotSupportedError(`Decryption algorithm ${algorithm.name} is not supported`);
302
+ }
303
+ }
304
+ /**
305
+ * Derive a key using PBKDF2
306
+ */
307
+ async deriveKey(algorithm, baseKey, derivedKeyType, extractable, keyUsages) {
308
+ if (algorithm.name !== "PBKDF2") {
309
+ throw new NotSupportedError(`Key derivation algorithm ${algorithm.name} is not supported`);
310
+ }
311
+ const rawKey = baseKey._rawKey;
312
+ if (!rawKey) {
313
+ throw new Error("Base key does not contain raw key material");
314
+ }
315
+ return pbkdf2.pbkdf2DeriveKey({
316
+ name: "PBKDF2",
317
+ salt: algorithm.salt,
318
+ iterations: algorithm.iterations,
319
+ hash: algorithm.hash,
320
+ }, rawKey, {
321
+ name: "AES-GCM",
322
+ length: derivedKeyType.length,
323
+ });
324
+ }
325
+ /**
326
+ * Compute digest
327
+ */
328
+ async digest(algorithm, data) {
329
+ const dataBuffer = data instanceof ArrayBuffer ? data : data.buffer;
330
+ const alg = typeof algorithm === "string" ? algorithm : algorithm.name;
331
+ if (alg === "SHA-256") {
332
+ return sha256.sha256Digest(dataBuffer);
333
+ }
334
+ else {
335
+ throw new NotSupportedError(`Digest algorithm ${alg} is not supported`);
336
+ }
337
+ }
338
+ // Unimplemented methods - throw NotSupportedError
339
+ async deriveBits(algorithm, baseKey, length) {
340
+ throw new NotSupportedError("deriveBits is not implemented");
341
+ }
342
+ async wrapKey(format, key, wrappingKey, wrapAlgorithm) {
343
+ throw new NotSupportedError("wrapKey is not implemented");
344
+ }
345
+ async unwrapKey(format, wrappedKey, unwrappingKey, unwrapAlgorithm, unwrappedKeyAlgorithm, extractable, keyUsages) {
346
+ throw new NotSupportedError("unwrapKey is not implemented");
347
+ }
348
+ }
349
+ exports.SubtleCryptoPolyfill = SubtleCryptoPolyfill;
350
+ //# sourceMappingURL=SubtleCryptoPolyfill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubtleCryptoPolyfill.js","sourceRoot":"","sources":["../../../src/reactnative/crypto/SubtleCryptoPolyfill.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export * from "../core/index";
2
+ export { BaseMindooDB } from "../core/BaseMindooDB";
3
+ export { BaseMindooTenant } from "../core/BaseMindooTenant";
4
+ export { BaseMindooTenantFactory } from "../core/BaseMindooTenantFactory";
5
+ export { ReactNativeCryptoAdapter, createCryptoAdapter } from "./crypto/ReactNativeCryptoAdapter";
6
+ export { ExpoGoCryptoAdapter } from "./crypto/ExpoGoCryptoAdapter";
7
+ export { QuickCryptoAdapter, isQuickCryptoAvailable } from "./crypto/QuickCryptoAdapter";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reactnative/index.ts"],"names":[],"mappings":"AAIA,cAAc,eAAe,CAAC;AAG9B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAG1E,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAClG,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ // React Native-specific exports
3
+ // Re-exports everything from core plus React Native-specific implementations
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.isQuickCryptoAvailable = exports.QuickCryptoAdapter = exports.ExpoGoCryptoAdapter = exports.createCryptoAdapter = exports.ReactNativeCryptoAdapter = exports.BaseMindooTenantFactory = exports.BaseMindooTenant = exports.BaseMindooDB = void 0;
20
+ // Re-export all core exports
21
+ __exportStar(require("../core/index"), exports);
22
+ // Re-export Base* classes that aren't in core/index
23
+ var BaseMindooDB_1 = require("../core/BaseMindooDB");
24
+ Object.defineProperty(exports, "BaseMindooDB", { enumerable: true, get: function () { return BaseMindooDB_1.BaseMindooDB; } });
25
+ var BaseMindooTenant_1 = require("../core/BaseMindooTenant");
26
+ Object.defineProperty(exports, "BaseMindooTenant", { enumerable: true, get: function () { return BaseMindooTenant_1.BaseMindooTenant; } });
27
+ var BaseMindooTenantFactory_1 = require("../core/BaseMindooTenantFactory");
28
+ Object.defineProperty(exports, "BaseMindooTenantFactory", { enumerable: true, get: function () { return BaseMindooTenantFactory_1.BaseMindooTenantFactory; } });
29
+ // React Native-specific crypto adapters
30
+ var ReactNativeCryptoAdapter_1 = require("./crypto/ReactNativeCryptoAdapter");
31
+ Object.defineProperty(exports, "ReactNativeCryptoAdapter", { enumerable: true, get: function () { return ReactNativeCryptoAdapter_1.ReactNativeCryptoAdapter; } });
32
+ Object.defineProperty(exports, "createCryptoAdapter", { enumerable: true, get: function () { return ReactNativeCryptoAdapter_1.createCryptoAdapter; } });
33
+ var ExpoGoCryptoAdapter_1 = require("./crypto/ExpoGoCryptoAdapter");
34
+ Object.defineProperty(exports, "ExpoGoCryptoAdapter", { enumerable: true, get: function () { return ExpoGoCryptoAdapter_1.ExpoGoCryptoAdapter; } });
35
+ var QuickCryptoAdapter_1 = require("./crypto/QuickCryptoAdapter");
36
+ Object.defineProperty(exports, "QuickCryptoAdapter", { enumerable: true, get: function () { return QuickCryptoAdapter_1.QuickCryptoAdapter; } });
37
+ Object.defineProperty(exports, "isQuickCryptoAvailable", { enumerable: true, get: function () { return QuickCryptoAdapter_1.isQuickCryptoAvailable; } });
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reactnative/index.ts"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,6EAA6E;;;;;;;;;;;;;;;;;AAE7E,6BAA6B;AAC7B,gDAA8B;AAE9B,oDAAoD;AACpD,qDAAoD;AAA3C,4GAAA,YAAY,OAAA;AACrB,6DAA4D;AAAnD,oHAAA,gBAAgB,OAAA;AACzB,2EAA0E;AAAjE,kIAAA,uBAAuB,OAAA;AAEhC,wCAAwC;AACxC,8EAAkG;AAAzF,oIAAA,wBAAwB,OAAA;AAAE,+HAAA,mBAAmB,OAAA;AACtD,oEAAmE;AAA1D,0HAAA,mBAAmB,OAAA;AAC5B,kEAAyF;AAAhF,wHAAA,kBAAkB,OAAA;AAAE,4HAAA,sBAAsB,OAAA"}
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "mindoodb",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "description": "End-to-End Encrypted, Offline-first Sync Database",
5
5
  "main": "./dist/node/index.js",
6
6
  "browser": "./dist/browser/index.js",
7
+ "react-native": "./dist/reactnative/index.js",
7
8
  "types": "./dist/core/index.d.ts",
8
9
  "repository": {
9
10
  "type": "git",
@@ -15,26 +16,42 @@
15
16
  "offline-first",
16
17
  "sync",
17
18
  "crdt",
18
- "automerge"
19
+ "automerge",
20
+ "react-native",
21
+ "expo"
19
22
  ],
20
23
  "exports": {
21
24
  ".": {
25
+ "react-native": "./dist/reactnative/index.js",
22
26
  "browser": "./dist/browser/index.js",
23
27
  "node": "./dist/node/index.js",
24
28
  "default": "./dist/node/index.js"
25
29
  },
26
30
  "./core": "./dist/core/index.js",
27
31
  "./browser": "./dist/browser/index.js",
28
- "./node": "./dist/node/index.js"
32
+ "./node": "./dist/node/index.js",
33
+ "./reactnative": "./dist/reactnative/index.js"
29
34
  },
30
35
  "files": [
31
36
  "dist",
32
- "README.md"
37
+ "README.md",
38
+ "patches",
39
+ "scripts",
40
+ "templates"
33
41
  ],
42
+ "bin": {
43
+ "mindoodb": "./scripts/cli.js"
44
+ },
34
45
  "scripts": {
35
46
  "build": "tsc",
36
47
  "test": "jest",
37
- "test:watch": "jest --watch"
48
+ "test:watch": "jest --watch",
49
+ "test:stress": "MINDOODB_STRESS_TESTS=1 jest --runInBand BasicOnDiskContentAddressedStore.stress",
50
+ "test:soak": "MINDOODB_STRESS_TESTS=1 MINDOODB_SOAK_TESTS=1 jest --runInBand BasicOnDiskContentAddressedStore.stress",
51
+ "test:browser:install": "playwright install chromium",
52
+ "test:browser": "npm run build && playwright test",
53
+ "test:browser:watch": "npm run build && playwright test --ui",
54
+ "test:all": "npm test && npm run test:browser"
38
55
  },
39
56
  "author": "Mindoo GmbH",
40
57
  "license": "ISC",
@@ -44,15 +61,43 @@
44
61
  "uuid": "^10.0.0"
45
62
  },
46
63
  "devDependencies": {
64
+ "@playwright/test": "^1.58.2",
47
65
  "@types/express": "^4.17.21",
48
66
  "@types/jest": "^29.5.12",
49
67
  "@types/node": "^20.11.0",
68
+ "@types/node-forge": "^1.3.14",
50
69
  "@types/uuid": "^10.0.0",
70
+ "esbuild": "^0.27.3",
51
71
  "express": "^4.18.2",
52
72
  "jest": "^29.7.0",
73
+ "node-forge": "^1.3.1",
53
74
  "ts-jest": "^29.1.2",
54
75
  "ts-node-dev": "^2.0.0",
76
+ "tweetnacl": "^1.0.3",
55
77
  "typescript": "^5.6.0"
56
78
  },
57
- "peerDependenciesMeta": {}
79
+ "peerDependencies": {
80
+ "expo-standard-web-crypto": "^3.0.0",
81
+ "node-forge": "^1.3.1",
82
+ "react-native-automerge-generated": "^0.1.0",
83
+ "react-native-quick-crypto": "^1.0.0",
84
+ "tweetnacl": "^1.0.3"
85
+ },
86
+ "peerDependenciesMeta": {
87
+ "react-native-automerge-generated": {
88
+ "optional": true
89
+ },
90
+ "react-native-quick-crypto": {
91
+ "optional": true
92
+ },
93
+ "expo-standard-web-crypto": {
94
+ "optional": true
95
+ },
96
+ "node-forge": {
97
+ "optional": true
98
+ },
99
+ "tweetnacl": {
100
+ "optional": true
101
+ }
102
+ }
58
103
  }