anchordb-react 0.2.1 → 1.0.0
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/README.md +66 -17
- package/dist/cjs/index.d.ts +16 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +75 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.d.ts +16 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +42 -1
- package/dist/esm/index.js.map +1 -1
- package/package.json +14 -9
package/README.md
CHANGED
|
@@ -1,25 +1,39 @@
|
|
|
1
1
|
# anchordb-react
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**AnchorDB for React Native and Expo** — [MongoDB and Mongoose](https://www.npmjs.com/package/anchordb)
|
|
4
|
+
for mobile apps, with SQLite storage ready after one install.
|
|
4
5
|
|
|
5
6
|
```bash
|
|
6
7
|
npm install anchordb-react
|
|
7
8
|
```
|
|
8
9
|
|
|
10
|
+
That single command brings the database, the SQLite driver and the crypto polyfill. Nothing else to
|
|
11
|
+
install, and no adapter to wire:
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
// db.ts
|
|
15
|
+
import { createAnchorDB } from "anchordb-react";
|
|
16
|
+
import { Schema } from "anchordb";
|
|
17
|
+
|
|
18
|
+
export const db = createAnchorDB({ name: "contacts" });
|
|
19
|
+
|
|
20
|
+
export const Contact = db.model("Contact", new Schema({
|
|
21
|
+
name: { type: String, required: true },
|
|
22
|
+
email: { type: String, required: true, unique: true, lowercase: true },
|
|
23
|
+
}, { timestamps: true }));
|
|
24
|
+
```
|
|
25
|
+
|
|
9
26
|
```tsx
|
|
10
|
-
|
|
27
|
+
// any component
|
|
28
|
+
import { useFind, useCount } from "anchordb-react";
|
|
29
|
+
import { db, Contact } from "./db";
|
|
11
30
|
|
|
12
|
-
function
|
|
13
|
-
const { data, loading, refresh } = useFind(db,
|
|
14
|
-
const {
|
|
31
|
+
function Contacts() {
|
|
32
|
+
const { data, loading, refresh } = useFind(db, Contact, {}, { sort: "-createdAt" });
|
|
33
|
+
const { data: total } = useCount(db, Contact, {});
|
|
15
34
|
|
|
16
35
|
if (loading) return <Spinner />;
|
|
17
|
-
return
|
|
18
|
-
<>
|
|
19
|
-
<StatusBar status={status} pending={pending} onSync={sync} />
|
|
20
|
-
<FlatList data={data} onRefresh={refresh} />
|
|
21
|
-
</>
|
|
22
|
-
);
|
|
36
|
+
return <FlatList data={data} onRefresh={refresh} ListFooterComponent={<Text>{total}</Text>} />;
|
|
23
37
|
}
|
|
24
38
|
```
|
|
25
39
|
|
|
@@ -33,10 +47,38 @@ function Users({ db, User }) {
|
|
|
33
47
|
| `useAggregate` | live aggregation pipeline |
|
|
34
48
|
| `useSyncStatus` | status, pending count and a `sync()` trigger |
|
|
35
49
|
| `useAnchorEvent` | subscribe to any AnchorDB event |
|
|
50
|
+
| `useAnchorReady` | resolves once the database is open |
|
|
36
51
|
|
|
37
52
|
All are built on the same `observeQuery` primitive as the Angular bindings and the inspector's push
|
|
38
53
|
events, so a change visible to one is visible to all three.
|
|
39
54
|
|
|
55
|
+
## `createAnchorDB`
|
|
56
|
+
|
|
57
|
+
Defaults to Expo SQLite, stored as `<name>.db`. An explicit adapter still wins, so tests are not
|
|
58
|
+
forced onto SQLite:
|
|
59
|
+
|
|
60
|
+
```ts
|
|
61
|
+
import { MemoryAdapter } from "anchordb";
|
|
62
|
+
const db = createAnchorDB({ name: "contacts", adapter: new MemoryAdapter("contacts") });
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
If the native module has not been linked — nearly always an Expo SDK mismatch rather than a missing
|
|
66
|
+
install, since the dependency is declared — it throws naming the fix:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
expo-sqlite did not load. In an Expo app run `npx expo install --fix` so the native module
|
|
70
|
+
matches your SDK, then rebuild the dev client.
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## This package is React Native only
|
|
74
|
+
|
|
75
|
+
Importing it pulls in `react-native-get-random-values`, which imports React Native internals, so a
|
|
76
|
+
**React web build will fail.** That is the deliberate cost of the one-install setup above.
|
|
77
|
+
|
|
78
|
+
Web is not lost, it just does not go through this package: use
|
|
79
|
+
[`anchordb`](https://www.npmjs.com/package/anchordb) directly with `anchordb/storage/indexeddb`,
|
|
80
|
+
which is fully supported and covered by the storage conformance suite.
|
|
81
|
+
|
|
40
82
|
## Two things worth knowing
|
|
41
83
|
|
|
42
84
|
**Filters are keyed on serialised content, not object identity.** Writing
|
|
@@ -48,7 +90,15 @@ indicator can be rendered unconditionally instead of every screen branching on w
|
|
|
48
90
|
|
|
49
91
|
## Status
|
|
50
92
|
|
|
51
|
-
**0.
|
|
93
|
+
**1.0.0.** Requires React 19 (`expo-sqlite` pulls React Native, which pins it). React 18 projects
|
|
94
|
+
stay on the [`release/0.x-react18`](https://github.com/knnadeera/anchordb/tree/release/0.x-react18)
|
|
95
|
+
line at 0.2.1.
|
|
96
|
+
|
|
97
|
+
**The Expo SQLite adapter has never run on a device** — this machine has no simulator. Its query and
|
|
98
|
+
index logic is inherited from a base that *is* covered by the conformance suite; the unverified part
|
|
99
|
+
is driver plumbing. Test a create-read-restart cycle early.
|
|
100
|
+
|
|
101
|
+
MIT.
|
|
52
102
|
|
|
53
103
|
## The AnchorDB family
|
|
54
104
|
|
|
@@ -58,11 +108,10 @@ has to download Express, and an Express server never has to download React.
|
|
|
58
108
|
| Package | What it is | Runs where |
|
|
59
109
|
| --- | --- | --- |
|
|
60
110
|
| [`anchordb`](https://www.npmjs.com/package/anchordb) | The database — schema, models, queries, aggregation, optional sync | phone · browser · Node |
|
|
61
|
-
| **`anchordb-react`** *(this package)* | React
|
|
62
|
-
| [`anchordb-angular`](https://www.npmjs.com/package/anchordb-angular) | Angular / Ionic module, DI
|
|
111
|
+
| **`anchordb-react`** *(this package)* | React Native hooks + SQLite storage | the device |
|
|
112
|
+
| [`anchordb-angular`](https://www.npmjs.com/package/anchordb-angular) | Angular / Ionic module, DI, RxJS + SQLite storage | the device |
|
|
63
113
|
| [`anchordb-sync-server`](https://www.npmjs.com/package/anchordb-sync-server) | Server half of sync — Express, NestJS, Next.js | your backend |
|
|
64
114
|
| [`anchordb-relay`](https://www.npmjs.com/package/anchordb-relay) | Dev relay for the Anchor Lens inspector | your laptop |
|
|
65
115
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
reference: [github.com/knnadeera/anchordb](https://github.com/knnadeera/anchordb).
|
|
116
|
+
Full reasoning and API reference:
|
|
117
|
+
[github.com/knnadeera/anchordb](https://github.com/knnadeera/anchordb).
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import "react-native-get-random-values";
|
|
2
|
+
import { AnchorDB, type AnchorDBConfig, type Filter, type ModelConstructor, type SyncStatus } from "anchordb";
|
|
2
3
|
/**
|
|
3
4
|
* React and React Native bindings.
|
|
4
5
|
*
|
|
@@ -6,6 +7,20 @@ import { type AnchorDB, type Filter, type ModelConstructor, type SyncStatus } fr
|
|
|
6
7
|
* events, so all three see exactly the same changes. A hook that could miss an update the
|
|
7
8
|
* equivalent observable caught would be a source of bugs nobody could reproduce.
|
|
8
9
|
*/
|
|
10
|
+
/**
|
|
11
|
+
* An AnchorDB backed by Expo SQLite, with nothing to wire up.
|
|
12
|
+
*
|
|
13
|
+
* `npm install anchordb-react` brings the database, the SQLite driver and the crypto
|
|
14
|
+
* polyfill, and this is the only call needed to use them:
|
|
15
|
+
*
|
|
16
|
+
* ```ts
|
|
17
|
+
* export const db = createAnchorDB({ name: "contacts" });
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* `config.adapter` is still honoured, so tests can pass a MemoryAdapter and an app can
|
|
21
|
+
* substitute any other store. The SQLite default is a default, not a lock-in.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createAnchorDB(config: AnchorDBConfig): AnchorDB;
|
|
9
24
|
export interface QueryState<T> {
|
|
10
25
|
data: T | undefined;
|
|
11
26
|
loading: boolean;
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,5 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.createAnchorDB = createAnchorDB;
|
|
3
37
|
exports.useFind = useFind;
|
|
4
38
|
exports.useFindOne = useFindOne;
|
|
5
39
|
exports.useCount = useCount;
|
|
@@ -7,8 +41,49 @@ exports.useAggregate = useAggregate;
|
|
|
7
41
|
exports.useSyncStatus = useSyncStatus;
|
|
8
42
|
exports.useAnchorEvent = useAnchorEvent;
|
|
9
43
|
exports.useAnchorReady = useAnchorReady;
|
|
44
|
+
// The crypto polyfill must run before ANY ObjectId is created, so it is the first statement in the
|
|
45
|
+
// package. React Native has no global crypto.getRandomValues, and AnchorDB throws rather than fall
|
|
46
|
+
// back to Math.random() — see core/src/core/random.ts.
|
|
47
|
+
require("react-native-get-random-values");
|
|
48
|
+
const SQLite = __importStar(require("expo-sqlite"));
|
|
10
49
|
const react_1 = require("react");
|
|
11
50
|
const anchordb_1 = require("anchordb");
|
|
51
|
+
const expo_sqlite_1 = require("anchordb/storage/expo-sqlite");
|
|
52
|
+
/**
|
|
53
|
+
* React and React Native bindings.
|
|
54
|
+
*
|
|
55
|
+
* Built on the same `observeQuery` primitive as the Angular bindings and the inspector's push
|
|
56
|
+
* events, so all three see exactly the same changes. A hook that could miss an update the
|
|
57
|
+
* equivalent observable caught would be a source of bugs nobody could reproduce.
|
|
58
|
+
*/
|
|
59
|
+
/**
|
|
60
|
+
* An AnchorDB backed by Expo SQLite, with nothing to wire up.
|
|
61
|
+
*
|
|
62
|
+
* `npm install anchordb-react` brings the database, the SQLite driver and the crypto
|
|
63
|
+
* polyfill, and this is the only call needed to use them:
|
|
64
|
+
*
|
|
65
|
+
* ```ts
|
|
66
|
+
* export const db = createAnchorDB({ name: "contacts" });
|
|
67
|
+
* ```
|
|
68
|
+
*
|
|
69
|
+
* `config.adapter` is still honoured, so tests can pass a MemoryAdapter and an app can
|
|
70
|
+
* substitute any other store. The SQLite default is a default, not a lock-in.
|
|
71
|
+
*/
|
|
72
|
+
function createAnchorDB(config) {
|
|
73
|
+
if (config.adapter)
|
|
74
|
+
return new anchordb_1.AnchorDB(config);
|
|
75
|
+
if (typeof SQLite?.openDatabaseAsync !== "function") {
|
|
76
|
+
// Almost always an Expo SDK mismatch rather than a missing install, since the dependency is
|
|
77
|
+
// declared. Naming the command beats "openDatabaseAsync of undefined".
|
|
78
|
+
throw new Error("expo-sqlite did not load. In an Expo app run `npx expo install --fix` so the native " +
|
|
79
|
+
"module matches your SDK, then rebuild the dev client. To use a different store, pass " +
|
|
80
|
+
"an adapter to createAnchorDB().");
|
|
81
|
+
}
|
|
82
|
+
return new anchordb_1.AnchorDB({
|
|
83
|
+
...config,
|
|
84
|
+
adapter: new expo_sqlite_1.ExpoSqliteAdapter({ sqlite: SQLite, database: `${config.name}.db` }),
|
|
85
|
+
});
|
|
86
|
+
}
|
|
12
87
|
/**
|
|
13
88
|
* Stable key for a filter/options object.
|
|
14
89
|
*
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import "react-native-get-random-values";
|
|
2
|
+
import { AnchorDB, type AnchorDBConfig, type Filter, type ModelConstructor, type SyncStatus } from "anchordb";
|
|
2
3
|
/**
|
|
3
4
|
* React and React Native bindings.
|
|
4
5
|
*
|
|
@@ -6,6 +7,20 @@ import { type AnchorDB, type Filter, type ModelConstructor, type SyncStatus } fr
|
|
|
6
7
|
* events, so all three see exactly the same changes. A hook that could miss an update the
|
|
7
8
|
* equivalent observable caught would be a source of bugs nobody could reproduce.
|
|
8
9
|
*/
|
|
10
|
+
/**
|
|
11
|
+
* An AnchorDB backed by Expo SQLite, with nothing to wire up.
|
|
12
|
+
*
|
|
13
|
+
* `npm install anchordb-react` brings the database, the SQLite driver and the crypto
|
|
14
|
+
* polyfill, and this is the only call needed to use them:
|
|
15
|
+
*
|
|
16
|
+
* ```ts
|
|
17
|
+
* export const db = createAnchorDB({ name: "contacts" });
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* `config.adapter` is still honoured, so tests can pass a MemoryAdapter and an app can
|
|
21
|
+
* substitute any other store. The SQLite default is a default, not a lock-in.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createAnchorDB(config: AnchorDBConfig): AnchorDB;
|
|
9
24
|
export interface QueryState<T> {
|
|
10
25
|
data: T | undefined;
|
|
11
26
|
loading: boolean;
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,5 +1,46 @@
|
|
|
1
|
+
// The crypto polyfill must run before ANY ObjectId is created, so it is the first statement in the
|
|
2
|
+
// package. React Native has no global crypto.getRandomValues, and AnchorDB throws rather than fall
|
|
3
|
+
// back to Math.random() — see core/src/core/random.ts.
|
|
4
|
+
import "react-native-get-random-values";
|
|
5
|
+
import * as SQLite from "expo-sqlite";
|
|
1
6
|
import { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
|
|
2
|
-
import { observeQuery, observeSyncStatus, } from "anchordb";
|
|
7
|
+
import { AnchorDB, observeQuery, observeSyncStatus, } from "anchordb";
|
|
8
|
+
import { ExpoSqliteAdapter } from "anchordb/storage/expo-sqlite";
|
|
9
|
+
/**
|
|
10
|
+
* React and React Native bindings.
|
|
11
|
+
*
|
|
12
|
+
* Built on the same `observeQuery` primitive as the Angular bindings and the inspector's push
|
|
13
|
+
* events, so all three see exactly the same changes. A hook that could miss an update the
|
|
14
|
+
* equivalent observable caught would be a source of bugs nobody could reproduce.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* An AnchorDB backed by Expo SQLite, with nothing to wire up.
|
|
18
|
+
*
|
|
19
|
+
* `npm install anchordb-react` brings the database, the SQLite driver and the crypto
|
|
20
|
+
* polyfill, and this is the only call needed to use them:
|
|
21
|
+
*
|
|
22
|
+
* ```ts
|
|
23
|
+
* export const db = createAnchorDB({ name: "contacts" });
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* `config.adapter` is still honoured, so tests can pass a MemoryAdapter and an app can
|
|
27
|
+
* substitute any other store. The SQLite default is a default, not a lock-in.
|
|
28
|
+
*/
|
|
29
|
+
export function createAnchorDB(config) {
|
|
30
|
+
if (config.adapter)
|
|
31
|
+
return new AnchorDB(config);
|
|
32
|
+
if (typeof SQLite?.openDatabaseAsync !== "function") {
|
|
33
|
+
// Almost always an Expo SDK mismatch rather than a missing install, since the dependency is
|
|
34
|
+
// declared. Naming the command beats "openDatabaseAsync of undefined".
|
|
35
|
+
throw new Error("expo-sqlite did not load. In an Expo app run `npx expo install --fix` so the native " +
|
|
36
|
+
"module matches your SDK, then rebuild the dev client. To use a different store, pass " +
|
|
37
|
+
"an adapter to createAnchorDB().");
|
|
38
|
+
}
|
|
39
|
+
return new AnchorDB({
|
|
40
|
+
...config,
|
|
41
|
+
adapter: new ExpoSqliteAdapter({ sqlite: SQLite, database: `${config.name}.db` }),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
3
44
|
/**
|
|
4
45
|
* Stable key for a filter/options object.
|
|
5
46
|
*
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAChG,OAAO,EACL,YAAY,EACZ,iBAAiB,GAKlB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "anchordb-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"sideEffects":
|
|
6
|
+
"sideEffects": [
|
|
7
|
+
"./dist/esm/index.js",
|
|
8
|
+
"./dist/cjs/index.js"
|
|
9
|
+
],
|
|
7
10
|
"main": "./dist/cjs/index.js",
|
|
8
11
|
"module": "./dist/esm/index.js",
|
|
9
12
|
"types": "./dist/esm/index.d.ts",
|
|
@@ -32,7 +35,9 @@
|
|
|
32
35
|
"prepublishOnly": "npm run typecheck && npm run build"
|
|
33
36
|
},
|
|
34
37
|
"dependencies": {
|
|
35
|
-
"anchordb": "^0.
|
|
38
|
+
"anchordb": "^1.0.0",
|
|
39
|
+
"expo-sqlite": "^57.0.3",
|
|
40
|
+
"react-native-get-random-values": "^2.0.0"
|
|
36
41
|
},
|
|
37
42
|
"devDependencies": {
|
|
38
43
|
"rimraf": "^6.0.1"
|
|
@@ -40,9 +45,9 @@
|
|
|
40
45
|
"publishConfig": {
|
|
41
46
|
"access": "public"
|
|
42
47
|
},
|
|
43
|
-
"description": "
|
|
48
|
+
"description": "AnchorDB for React Native and Expo — hooks plus SQLite storage, ready after one install.",
|
|
44
49
|
"peerDependencies": {
|
|
45
|
-
"react": ">=
|
|
50
|
+
"react": ">=19"
|
|
46
51
|
},
|
|
47
52
|
"repository": {
|
|
48
53
|
"type": "git",
|
|
@@ -59,17 +64,17 @@
|
|
|
59
64
|
"author": "Nisala Nadeera <knnadeera@gmail.com>",
|
|
60
65
|
"keywords": [
|
|
61
66
|
"anchordb",
|
|
62
|
-
"react",
|
|
63
67
|
"react-native",
|
|
64
68
|
"expo",
|
|
69
|
+
"expo-sqlite",
|
|
70
|
+
"sqlite",
|
|
65
71
|
"hooks",
|
|
66
72
|
"offline-first",
|
|
67
73
|
"local-first",
|
|
68
74
|
"mongodb",
|
|
69
75
|
"mongoose",
|
|
70
76
|
"database",
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"nosql"
|
|
77
|
+
"nosql",
|
|
78
|
+
"mobile-database"
|
|
74
79
|
]
|
|
75
80
|
}
|