anchordb 1.0.5 → 1.0.6
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/CHANGELOG.md +16 -0
- package/dist/cjs/core/object-id.d.ts.map +1 -1
- package/dist/cjs/core/object-id.js +9 -4
- package/dist/cjs/core/object-id.js.map +1 -1
- package/dist/cjs/core/random.d.ts.map +1 -1
- package/dist/cjs/core/random.js +2 -1
- package/dist/cjs/core/random.js.map +1 -1
- package/dist/esm/core/object-id.d.ts.map +1 -1
- package/dist/esm/core/object-id.js +9 -4
- package/dist/esm/core/object-id.js.map +1 -1
- package/dist/esm/core/random.d.ts.map +1 -1
- package/dist/esm/core/random.js +2 -1
- package/dist/esm/core/random.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,22 @@ All notable changes to the `anchordb` packages.
|
|
|
5
5
|
This project follows [semantic versioning](https://semver.org/). While the version is `0.x`, minor
|
|
6
6
|
releases may contain breaking changes.
|
|
7
7
|
|
|
8
|
+
## 1.0.6
|
|
9
|
+
|
|
10
|
+
Crash on launch in React Native apps that load `anchordb` before `anchordb-react`.
|
|
11
|
+
|
|
12
|
+
- **Importing `anchordb` needed a crypto source.** `ObjectId` drew its per-process random block and
|
|
13
|
+
its counter seed when the module loaded. On React Native, `globalThis.crypto` comes from the
|
|
14
|
+
`react-native-get-random-values` polyfill that `anchordb-react` loads — so an app that evaluated
|
|
15
|
+
`anchordb` first died with `No cryptographically secure random source is available` before it
|
|
16
|
+
generated a single id. Lens React did exactly that through a re-export and closed the instant it
|
|
17
|
+
launched on a phone; the Contacts app survived only because its first import happened to be
|
|
18
|
+
`createAnchorDB`. Both values are now drawn on the first `ObjectId`, and a failed draw caches
|
|
19
|
+
nothing, so a polyfill that loads later still works.
|
|
20
|
+
- The error message now points React Native users at `anchordb-react`'s `createAnchorDB`.
|
|
21
|
+
- A new test imports the whole package with no crypto source. Without this fix it fails with the
|
|
22
|
+
original error.
|
|
23
|
+
|
|
8
24
|
## 1.0.5
|
|
9
25
|
|
|
10
26
|
Inspector fix, found by building Anchor Lens on a database on the device.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-id.d.ts","sourceRoot":"","sources":["../../../src/core/object-id.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"object-id.d.ts","sourceRoot":"","sources":["../../../src/core/object-id.ts"],"names":[],"mappings":"AAoCA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG;IAAE,WAAW,IAAI,MAAM,CAAA;CAAE,CAAC;AAEtF;;;;;GAKG;AAEH,qBAAa,QAAQ;IACnB,0FAA0F;IAC1F,QAAQ,CAAC,SAAS,cAAc;IAEhC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,SAAS,CAAuB;gBAE5B,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI;IAqCvC,qEAAqE;IACrE,IAAI,EAAE,IAAI,UAAU,CAEnB;IAED,WAAW,IAAI,MAAM;IAKrB,QAAQ,IAAI,MAAM;IAIlB,iFAAiF;IACjF,MAAM,IAAI,MAAM;IAIhB,mFAAmF;IACnF,YAAY,IAAI,IAAI;IAKpB,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO;IAgBvD,OAAO,IAAI,MAAM;IAIjB,iFAAiF;IACjF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU;IAmB1C,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAIjD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAShD;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAWvC,kFAAkF;IAClF,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAGzC"}
|
|
@@ -21,11 +21,16 @@ const random_ts_1 = require("./random.js");
|
|
|
21
21
|
* - The per-process random block is what keeps two devices generating ids offline from colliding,
|
|
22
22
|
* which is why `random.ts` refuses to run without a real CSPRNG.
|
|
23
23
|
*/
|
|
24
|
-
|
|
24
|
+
// Both drawn on first use, never at import. Importing anchordb must not need entropy: on React
|
|
25
|
+
// Native the polyfill arrives with anchordb-react, and an app that loads anchordb first — a single
|
|
26
|
+
// re-export is enough — crashed on launch before any id was ever generated. Found when Lens React
|
|
27
|
+
// closed instantly on a phone. A failed draw caches nothing, so a polyfill loaded later still works.
|
|
28
|
+
let processRandom = null;
|
|
25
29
|
const COUNTER_MAX = 0xffffff;
|
|
26
|
-
let counter =
|
|
30
|
+
let counter = null;
|
|
27
31
|
function nextCounter() {
|
|
28
|
-
|
|
32
|
+
// wraps at 2^24, as the spec requires
|
|
33
|
+
counter = ((counter ?? (0, random_ts_1.randomInt)(COUNTER_MAX + 1)) + 1) % (COUNTER_MAX + 1);
|
|
29
34
|
return counter;
|
|
30
35
|
}
|
|
31
36
|
/**
|
|
@@ -122,7 +127,7 @@ class ObjectId {
|
|
|
122
127
|
out[1] = (seconds >> 16) & 0xff;
|
|
123
128
|
out[2] = (seconds >> 8) & 0xff;
|
|
124
129
|
out[3] = seconds & 0xff;
|
|
125
|
-
out.set(
|
|
130
|
+
out.set((processRandom ??= (0, random_ts_1.randomBytes)(5)), 4);
|
|
126
131
|
const c = nextCounter();
|
|
127
132
|
out[9] = (c >> 16) & 0xff;
|
|
128
133
|
out[10] = (c >> 8) & 0xff;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-id.js","sourceRoot":"","sources":["../../../src/core/object-id.ts"],"names":[],"mappings":";;;AAAA,qCAAkD;AAClD,2CAAqD;AAErD;;;;;;;;;;;;;;;;;GAiBG;AAEH,
|
|
1
|
+
{"version":3,"file":"object-id.js","sourceRoot":"","sources":["../../../src/core/object-id.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../../src/core/random.ts"],"names":[],"mappings":"AAYA,mGAAmG;AACnG,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,CAEpF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../../src/core/random.ts"],"names":[],"mappings":"AAYA,mGAAmG;AACnG,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,CAEpF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAgBpD;AAED,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAItD"}
|
package/dist/cjs/core/random.js
CHANGED
|
@@ -27,7 +27,8 @@ function randomBytes(size) {
|
|
|
27
27
|
return out;
|
|
28
28
|
}
|
|
29
29
|
throw new errors_ts_1.AnchorConfigError("No cryptographically secure random source is available (globalThis.crypto.getRandomValues is missing). " +
|
|
30
|
-
"On React Native,
|
|
30
|
+
"On React Native, use anchordb-react's createAnchorDB, which loads `react-native-get-random-values` for you — " +
|
|
31
|
+
"or import that package at the top of your entry file. " +
|
|
31
32
|
"AnchorDB refuses to fall back to Math.random() because ObjectId uniqueness depends on real entropy.");
|
|
32
33
|
}
|
|
33
34
|
/** Uniform integer in [0, maxExclusive). Used to seed the ObjectId counter. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"random.js","sourceRoot":"","sources":["../../../src/core/random.ts"],"names":[],"mappings":";;AAaA,oDAEC;AAED,
|
|
1
|
+
{"version":3,"file":"random.js","sourceRoot":"","sources":["../../../src/core/random.ts"],"names":[],"mappings":";;AAaA,oDAEC;AAED,kCAgBC;AAGD,8BAIC;AAxCD,2CAAgD;AAEhD;;;;;;;GAOG;AACH,IAAI,QAAQ,GAA0C,IAAI,CAAC;AAE3D,mGAAmG;AACnG,SAAgB,oBAAoB,CAAC,EAAyC;IAC5E,QAAQ,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,SAAgB,WAAW,CAAC,IAAY;IACtC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEpC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,GAAuB,UAAU,CAAC,MAAM,CAAC;IAChD,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;QACjD,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,IAAI,6BAAiB,CACzB,yGAAyG;QACvG,+GAA+G;QAC/G,wDAAwD;QACxD,qGAAqG,CACxG,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,SAAgB,SAAS,CAAC,YAAoB;IAC5C,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC;IAC3F,OAAO,KAAK,GAAG,YAAY,CAAC;AAC9B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-id.d.ts","sourceRoot":"","sources":["../../../src/core/object-id.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"object-id.d.ts","sourceRoot":"","sources":["../../../src/core/object-id.ts"],"names":[],"mappings":"AAoCA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG;IAAE,WAAW,IAAI,MAAM,CAAA;CAAE,CAAC;AAEtF;;;;;GAKG;AAEH,qBAAa,QAAQ;IACnB,0FAA0F;IAC1F,QAAQ,CAAC,SAAS,cAAc;IAEhC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,SAAS,CAAuB;gBAE5B,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI;IAqCvC,qEAAqE;IACrE,IAAI,EAAE,IAAI,UAAU,CAEnB;IAED,WAAW,IAAI,MAAM;IAKrB,QAAQ,IAAI,MAAM;IAIlB,iFAAiF;IACjF,MAAM,IAAI,MAAM;IAIhB,mFAAmF;IACnF,YAAY,IAAI,IAAI;IAKpB,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO;IAgBvD,OAAO,IAAI,MAAM;IAIjB,iFAAiF;IACjF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU;IAmB1C,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAIjD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAShD;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAWvC,kFAAkF;IAClF,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAGzC"}
|
|
@@ -18,11 +18,16 @@ import { randomBytes, randomInt } from "./random.js";
|
|
|
18
18
|
* - The per-process random block is what keeps two devices generating ids offline from colliding,
|
|
19
19
|
* which is why `random.ts` refuses to run without a real CSPRNG.
|
|
20
20
|
*/
|
|
21
|
-
|
|
21
|
+
// Both drawn on first use, never at import. Importing anchordb must not need entropy: on React
|
|
22
|
+
// Native the polyfill arrives with anchordb-react, and an app that loads anchordb first — a single
|
|
23
|
+
// re-export is enough — crashed on launch before any id was ever generated. Found when Lens React
|
|
24
|
+
// closed instantly on a phone. A failed draw caches nothing, so a polyfill loaded later still works.
|
|
25
|
+
let processRandom = null;
|
|
22
26
|
const COUNTER_MAX = 0xffffff;
|
|
23
|
-
let counter =
|
|
27
|
+
let counter = null;
|
|
24
28
|
function nextCounter() {
|
|
25
|
-
|
|
29
|
+
// wraps at 2^24, as the spec requires
|
|
30
|
+
counter = ((counter ?? randomInt(COUNTER_MAX + 1)) + 1) % (COUNTER_MAX + 1);
|
|
26
31
|
return counter;
|
|
27
32
|
}
|
|
28
33
|
/**
|
|
@@ -119,7 +124,7 @@ export class ObjectId {
|
|
|
119
124
|
out[1] = (seconds >> 16) & 0xff;
|
|
120
125
|
out[2] = (seconds >> 8) & 0xff;
|
|
121
126
|
out[3] = seconds & 0xff;
|
|
122
|
-
out.set(
|
|
127
|
+
out.set((processRandom ??= randomBytes(5)), 4);
|
|
123
128
|
const c = nextCounter();
|
|
124
129
|
out[9] = (c >> 16) & 0xff;
|
|
125
130
|
out[10] = (c >> 8) & 0xff;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-id.js","sourceRoot":"","sources":["../../../src/core/object-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAErD;;;;;;;;;;;;;;;;;GAiBG;AAEH,
|
|
1
|
+
{"version":3,"file":"object-id.js","sourceRoot":"","sources":["../../../src/core/object-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAErD;;;;;;;;;;;;;;;;;GAiBG;AAEH,+FAA+F;AAC/F,mGAAmG;AACnG,kGAAkG;AAClG,qGAAqG;AACrG,IAAI,aAAa,GAAsB,IAAI,CAAC;AAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC;AAC7B,IAAI,OAAO,GAAkB,IAAI,CAAC;AAElC,SAAS,WAAW;IAClB,sCAAsC;IACtC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IAC5E,OAAO,OAAO,CAAC;AACjB,CAAC;AAID;;;;;GAKG;AAEH,MAAM,OAAO,QAAQ;IAOnB,YAAY,KAA2B;QANvC,0FAA0F;QACjF,cAAS,GAAG,UAAU,CAAC;QAGxB,cAAS,GAAkB,IAAI,CAAC;QAGtC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QACD,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,SAAS,CACjB,0FAA0F,KAAK,GAAG,CACnG,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;YACpB,OAAO;QACT,CAAC;QACD,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;gBACxB,MAAM,IAAI,SAAS,CAAC,4CAA4C,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAClF,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,IAAI,OAAQ,KAAmC,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;YAC3E,2FAA2F;YAC3F,MAAM,MAAM,GAAG,UAAU,CAAE,KAAmC,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;YAClF,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;gBACpB,OAAO;YACT,CAAC;QACH,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;IAC9E,CAAC;IAED,qEAAqE;IACrE,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,WAAW;QACT,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED,iFAAiF;IACjF,MAAM;QACJ,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED,mFAAmF;IACnF,YAAY;QACV,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;QACzG,OAAO,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,KAAsC;QAC3C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACxD,IAAI,KAAK,YAAY,QAAQ;YAAE,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;QACjF,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;QACjF,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE;gBAAE,OAAO,KAAK,CAAC;YACtC,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7G,OAAO,KAAK,CAAC;IACf,CAAC;IAED,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QACxC,OAAO,iBAAiB,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;IACjD,CAAC;IAED,OAAO;QACL,OAAO,iBAAiB,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;IACjD,CAAC;IAED,iFAAiF;IACjF,MAAM,CAAC,QAAQ,CAAC,IAAa;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QAE/B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAChC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC;QAExB,GAAG,CAAC,GAAG,CAAC,CAAC,aAAa,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE/C,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;QACxB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAC1B,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QAC1B,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAEnB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,GAAW;QACpC,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,OAAe;QACnC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QACjC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAClC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAClC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACjC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC;QAC1B,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,KAAc;QAC3B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACxD,IAAI,KAAK,YAAY,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC;QACrE,IAAI,KAAK,YAAY,UAAU;YAAE,OAAO,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC;QAC5D,IAAI,OAAQ,KAAmC,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;YAC3E,OAAO,UAAU,CAAE,KAAmC,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC;QACrF,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kFAAkF;IAClF,MAAM,CAAC,YAAY,CAAC,KAAa;QAC/B,OAAO,GAAG,KAAK,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../../src/core/random.ts"],"names":[],"mappings":"AAYA,mGAAmG;AACnG,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,CAEpF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../../src/core/random.ts"],"names":[],"mappings":"AAYA,mGAAmG;AACnG,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,CAEpF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAgBpD;AAED,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAItD"}
|
package/dist/esm/core/random.js
CHANGED
|
@@ -22,7 +22,8 @@ export function randomBytes(size) {
|
|
|
22
22
|
return out;
|
|
23
23
|
}
|
|
24
24
|
throw new AnchorConfigError("No cryptographically secure random source is available (globalThis.crypto.getRandomValues is missing). " +
|
|
25
|
-
"On React Native,
|
|
25
|
+
"On React Native, use anchordb-react's createAnchorDB, which loads `react-native-get-random-values` for you — " +
|
|
26
|
+
"or import that package at the top of your entry file. " +
|
|
26
27
|
"AnchorDB refuses to fall back to Math.random() because ObjectId uniqueness depends on real entropy.");
|
|
27
28
|
}
|
|
28
29
|
/** Uniform integer in [0, maxExclusive). Used to seed the ObjectId counter. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"random.js","sourceRoot":"","sources":["../../../src/core/random.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;GAOG;AACH,IAAI,QAAQ,GAA0C,IAAI,CAAC;AAE3D,mGAAmG;AACnG,MAAM,UAAU,oBAAoB,CAAC,EAAyC;IAC5E,QAAQ,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEpC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,GAAuB,UAAU,CAAC,MAAM,CAAC;IAChD,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;QACjD,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,IAAI,iBAAiB,CACzB,yGAAyG;QACvG,
|
|
1
|
+
{"version":3,"file":"random.js","sourceRoot":"","sources":["../../../src/core/random.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;GAOG;AACH,IAAI,QAAQ,GAA0C,IAAI,CAAC;AAE3D,mGAAmG;AACnG,MAAM,UAAU,oBAAoB,CAAC,EAAyC;IAC5E,QAAQ,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEpC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,GAAuB,UAAU,CAAC,MAAM,CAAC;IAChD,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;QACjD,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,IAAI,iBAAiB,CACzB,yGAAyG;QACvG,+GAA+G;QAC/G,wDAAwD;QACxD,qGAAqG,CACxG,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,SAAS,CAAC,YAAoB;IAC5C,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC;IAC3F,OAAO,KAAK,GAAG,YAAY,CAAC;AAC9B,CAAC"}
|