@signaldb/indexeddb 1.0.0 → 1.1.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/dist/index.d.ts +5 -1
- package/dist/index.mjs +26 -30
- package/dist/index.mjs.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/package.json +4 -2
package/dist/index.d.ts
CHANGED
|
@@ -4,8 +4,12 @@
|
|
|
4
4
|
* @template T - The type of the items in the collection.
|
|
5
5
|
* @template I - The type of the unique identifier for the items.
|
|
6
6
|
* @param name - A unique name for the collection, used as the database name.
|
|
7
|
+
* @param options - Optional configuration for the adapter.
|
|
8
|
+
* @param options.prefix - A prefix to be added to the database name (default: 'signaldb-').
|
|
7
9
|
* @returns A SignalDB persistence adapter for managing data in IndexedDB.
|
|
8
10
|
*/
|
|
9
11
|
export default function createIndexedDBAdapter<T extends {
|
|
10
12
|
id: I;
|
|
11
|
-
} & Record<string, any>, I extends IDBValidKey>(name: string
|
|
13
|
+
} & Record<string, any>, I extends IDBValidKey>(name: string, options?: {
|
|
14
|
+
prefix?: string;
|
|
15
|
+
}): import("@signaldb/core").PersistenceAdapter<T, I>;
|
package/dist/index.mjs
CHANGED
|
@@ -1,50 +1,46 @@
|
|
|
1
|
-
import { createPersistenceAdapter as
|
|
2
|
-
function
|
|
3
|
-
const
|
|
4
|
-
function
|
|
5
|
-
return new Promise((
|
|
1
|
+
import { createPersistenceAdapter as w } from "@signaldb/core";
|
|
2
|
+
function v(u, m) {
|
|
3
|
+
const { prefix: E = "signaldb-" } = m || {}, l = `${E}${u}`, s = "items";
|
|
4
|
+
function i() {
|
|
5
|
+
return new Promise((o, c) => {
|
|
6
6
|
const e = indexedDB.open(l, 1);
|
|
7
|
-
e.
|
|
7
|
+
e.addEventListener("upgradeneeded", () => {
|
|
8
8
|
const r = e.result;
|
|
9
9
|
r.objectStoreNames.contains(s) || r.createObjectStore(s, { keyPath: "id" });
|
|
10
|
-
}, e.
|
|
10
|
+
}), e.addEventListener("success", () => o(e.result)), e.addEventListener("error", () => {
|
|
11
11
|
var r;
|
|
12
|
-
return c(new Error(((r = e.error)
|
|
13
|
-
};
|
|
12
|
+
return c(new Error(((r = e.error) == null ? void 0 : r.message) || "Database error"));
|
|
13
|
+
});
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
|
-
async function
|
|
17
|
-
const
|
|
16
|
+
async function b() {
|
|
17
|
+
const o = await i();
|
|
18
18
|
return new Promise((c, e) => {
|
|
19
|
-
const t =
|
|
20
|
-
t.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
var o;
|
|
25
|
-
return e(new Error(((o = t.error) === null || o === void 0 ? void 0 : o.message) || "Error fetching items"));
|
|
26
|
-
};
|
|
19
|
+
const t = o.transaction(s, "readonly").objectStore(s).getAll();
|
|
20
|
+
t.addEventListener("success", () => c(t.result)), t.addEventListener("error", () => {
|
|
21
|
+
var n;
|
|
22
|
+
return e(new Error(((n = t.error) == null ? void 0 : n.message) || "Error fetching items"));
|
|
23
|
+
});
|
|
27
24
|
});
|
|
28
25
|
}
|
|
29
|
-
return
|
|
26
|
+
return w({
|
|
30
27
|
async load() {
|
|
31
|
-
return { items: await
|
|
28
|
+
return { items: await b() };
|
|
32
29
|
},
|
|
33
|
-
async save(
|
|
34
|
-
const t = (await
|
|
35
|
-
return c.forEach((
|
|
36
|
-
t.
|
|
37
|
-
var
|
|
38
|
-
return
|
|
39
|
-
};
|
|
30
|
+
async save(o, { added: c, modified: e, removed: r }) {
|
|
31
|
+
const t = (await i()).transaction(s, "readwrite"), n = t.objectStore(s);
|
|
32
|
+
return c.forEach((a) => n.add(a)), e.forEach((a) => n.put(a)), r.forEach((a) => n.delete(a.id)), new Promise((a, p) => {
|
|
33
|
+
t.addEventListener("complete", () => a()), t.addEventListener("error", () => {
|
|
34
|
+
var d;
|
|
35
|
+
return p(new Error(((d = t.error) == null ? void 0 : d.message) || "Transaction error"));
|
|
36
|
+
});
|
|
40
37
|
});
|
|
41
38
|
},
|
|
42
39
|
async register() {
|
|
43
|
-
return Promise.resolve();
|
|
44
40
|
}
|
|
45
41
|
});
|
|
46
42
|
}
|
|
47
43
|
export {
|
|
48
|
-
|
|
44
|
+
v as default
|
|
49
45
|
};
|
|
50
46
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { createPersistenceAdapter } from '@signaldb/core';\n/**\n * Creates a persistence adapter for managing a SignalDB collection using IndexedDB.\n * This adapter reads and writes data to an IndexedDB object store, with customizable serialization and deserialization.\n * @template T - The type of the items in the collection.\n * @template I - The type of the unique identifier for the items.\n * @param name - A unique name for the collection, used as the database name.\n * @returns A SignalDB persistence adapter for managing data in IndexedDB.\n */\nexport default function createIndexedDBAdapter(name) {\n const
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { createPersistenceAdapter } from '@signaldb/core';\n/**\n * Creates a persistence adapter for managing a SignalDB collection using IndexedDB.\n * This adapter reads and writes data to an IndexedDB object store, with customizable serialization and deserialization.\n * @template T - The type of the items in the collection.\n * @template I - The type of the unique identifier for the items.\n * @param name - A unique name for the collection, used as the database name.\n * @param options - Optional configuration for the adapter.\n * @param options.prefix - A prefix to be added to the database name (default: 'signaldb-').\n * @returns A SignalDB persistence adapter for managing data in IndexedDB.\n */\nexport default function createIndexedDBAdapter(name, options) {\n const { prefix = 'signaldb-' } = options || {};\n const databaseName = `${prefix}${name}`;\n const storeName = 'items';\n /**\n * Opens the IndexedDB database and creates the object store if it doesn't exist.\n * @returns A promise that resolves with the opened database.\n */\n function openDatabase() {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(databaseName, 1);\n request.addEventListener('upgradeneeded', () => {\n const database = request.result;\n if (!database.objectStoreNames.contains(storeName)) {\n database.createObjectStore(storeName, { keyPath: 'id' });\n }\n });\n request.addEventListener('success', () => resolve(request.result));\n request.addEventListener('error', () => reject(new Error(request.error?.message || 'Database error')));\n });\n }\n /**\n * Retrieves all items from the IndexedDB object store.\n * @returns A promise that resolves with an array of items.\n */\n async function getAllItems() {\n const database = await openDatabase();\n return new Promise((resolve, reject) => {\n const transaction = database.transaction(storeName, 'readonly');\n const store = transaction.objectStore(storeName);\n const request = store.getAll();\n request.addEventListener('success', () => resolve(request.result));\n request.addEventListener('error', () => reject(new Error(request.error?.message || 'Error fetching items')));\n });\n }\n return createPersistenceAdapter({\n async load() {\n const items = await getAllItems();\n return { items };\n },\n async save(items, { added, modified, removed }) {\n const database = await openDatabase();\n const transaction = database.transaction(storeName, 'readwrite');\n const store = transaction.objectStore(storeName);\n added.forEach(item => store.add(item));\n modified.forEach(item => store.put(item));\n removed.forEach(item => store.delete(item.id));\n return new Promise((resolve, reject) => {\n transaction.addEventListener('complete', () => resolve());\n transaction.addEventListener('error', () => reject(new Error(transaction.error?.message || 'Transaction error')));\n });\n },\n async register() {\n return;\n },\n });\n}\n"],"names":["createIndexedDBAdapter","name","options","prefix","databaseName","storeName","openDatabase","resolve","reject","request","database","_a","getAllItems","createPersistenceAdapter","items","added","modified","removed","transaction","store","item"],"mappings":";AAWwB,SAAAA,EAAuBC,GAAMC,GAAS;AAC1D,QAAM,EAAE,QAAAC,IAAS,YAAY,IAAID,KAAW,CAAC,GACvCE,IAAe,GAAGD,CAAM,GAAGF,CAAI,IAC/BI,IAAY;AAKlB,WAASC,IAAe;AACpB,WAAO,IAAI,QAAQ,CAACC,GAASC,MAAW;AACpC,YAAMC,IAAU,UAAU,KAAKL,GAAc,CAAC;AACtC,MAAAK,EAAA,iBAAiB,iBAAiB,MAAM;AAC5C,cAAMC,IAAWD,EAAQ;AACzB,QAAKC,EAAS,iBAAiB,SAASL,CAAS,KAC7CK,EAAS,kBAAkBL,GAAW,EAAE,SAAS,MAAM;AAAA,MAC3D,CACH,GACDI,EAAQ,iBAAiB,WAAW,MAAMF,EAAQE,EAAQ,MAAM,CAAC,GACzDA,EAAA,iBAAiB,SAAS,MAAA;;AAAM,eAAAD,EAAO,IAAI,QAAMG,IAAAF,EAAQ,UAAR,gBAAAE,EAAe,YAAW,gBAAgB,CAAC;AAAA,OAAC;AAAA,IAAA,CACxG;AAAA,EAAA;AAML,iBAAeC,IAAc;AACnB,UAAAF,IAAW,MAAMJ,EAAa;AACpC,WAAO,IAAI,QAAQ,CAACC,GAASC,MAAW;AAG9B,YAAAC,IAFcC,EAAS,YAAYL,GAAW,UAAU,EACpC,YAAYA,CAAS,EACzB,OAAO;AAC7B,MAAAI,EAAQ,iBAAiB,WAAW,MAAMF,EAAQE,EAAQ,MAAM,CAAC,GACzDA,EAAA,iBAAiB,SAAS,MAAA;;AAAM,eAAAD,EAAO,IAAI,QAAMG,IAAAF,EAAQ,UAAR,gBAAAE,EAAe,YAAW,sBAAsB,CAAC;AAAA,OAAC;AAAA,IAAA,CAC9G;AAAA,EAAA;AAEL,SAAOE,EAAyB;AAAA,IAC5B,MAAM,OAAO;AAET,aAAO,EAAE,OADK,MAAMD,EAAY,EACjB;AAAA,IACnB;AAAA,IACA,MAAM,KAAKE,GAAO,EAAE,OAAAC,GAAO,UAAAC,GAAU,SAAAC,KAAW;AAE5C,YAAMC,KADW,MAAMZ,EAAa,GACP,YAAYD,GAAW,WAAW,GACzDc,IAAQD,EAAY,YAAYb,CAAS;AAC/C,aAAAU,EAAM,QAAQ,CAAAK,MAAQD,EAAM,IAAIC,CAAI,CAAC,GACrCJ,EAAS,QAAQ,CAAAI,MAAQD,EAAM,IAAIC,CAAI,CAAC,GACxCH,EAAQ,QAAQ,CAAQG,MAAAD,EAAM,OAAOC,EAAK,EAAE,CAAC,GACtC,IAAI,QAAQ,CAACb,GAASC,MAAW;AACpC,QAAAU,EAAY,iBAAiB,YAAY,MAAMX,EAAA,CAAS,GAC5CW,EAAA,iBAAiB,SAAS,MAAA;;AAAM,iBAAAV,EAAO,IAAI,QAAMG,IAAAO,EAAY,UAAZ,gBAAAP,EAAmB,YAAW,mBAAmB,CAAC;AAAA,SAAC;AAAA,MAAA,CACnH;AAAA,IACL;AAAA,IACA,MAAM,WAAW;AAAA,IACb;AAAA,EACJ,CACH;AACL;"}
|
package/dist/index.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(s,i){typeof exports=="object"&&typeof module<"u"?module.exports=i(require("@signaldb/core")):typeof define=="function"&&define.amd?define(["@signaldb/core"],i):(s=typeof globalThis<"u"?globalThis:s||self,s.SignalDB=i(s.core))})(this,function(s){"use strict";function i(m){const
|
|
1
|
+
(function(s,i){typeof exports=="object"&&typeof module<"u"?module.exports=i(require("@signaldb/core")):typeof define=="function"&&define.amd?define(["@signaldb/core"],i):(s=typeof globalThis<"u"?globalThis:s||self,s.SignalDB=i(s.core))})(this,function(s){"use strict";function i(m,l){const{prefix:b="signaldb-"}=l||{},p=`${b}${m}`,a="items";function u(){return new Promise((c,d)=>{const e=indexedDB.open(p,1);e.addEventListener("upgradeneeded",()=>{const r=e.result;r.objectStoreNames.contains(a)||r.createObjectStore(a,{keyPath:"id"})}),e.addEventListener("success",()=>c(e.result)),e.addEventListener("error",()=>{var r;return d(new Error(((r=e.error)==null?void 0:r.message)||"Database error"))})})}async function E(){const c=await u();return new Promise((d,e)=>{const t=c.transaction(a,"readonly").objectStore(a).getAll();t.addEventListener("success",()=>d(t.result)),t.addEventListener("error",()=>{var o;return e(new Error(((o=t.error)==null?void 0:o.message)||"Error fetching items"))})})}return s.createPersistenceAdapter({async load(){return{items:await E()}},async save(c,{added:d,modified:e,removed:r}){const t=(await u()).transaction(a,"readwrite"),o=t.objectStore(a);return d.forEach(n=>o.add(n)),e.forEach(n=>o.put(n)),r.forEach(n=>o.delete(n.id)),new Promise((n,w)=>{t.addEventListener("complete",()=>n()),t.addEventListener("error",()=>{var f;return w(new Error(((f=t.error)==null?void 0:f.message)||"Transaction error"))})})},async register(){}})}return i});
|
|
2
2
|
//# sourceMappingURL=index.umd.js.map
|
package/dist/index.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/index.ts"],"sourcesContent":["import { createPersistenceAdapter } from '@signaldb/core';\n/**\n * Creates a persistence adapter for managing a SignalDB collection using IndexedDB.\n * This adapter reads and writes data to an IndexedDB object store, with customizable serialization and deserialization.\n * @template T - The type of the items in the collection.\n * @template I - The type of the unique identifier for the items.\n * @param name - A unique name for the collection, used as the database name.\n * @returns A SignalDB persistence adapter for managing data in IndexedDB.\n */\nexport default function createIndexedDBAdapter(name) {\n const
|
|
1
|
+
{"version":3,"file":"index.umd.js","sources":["../src/index.ts"],"sourcesContent":["import { createPersistenceAdapter } from '@signaldb/core';\n/**\n * Creates a persistence adapter for managing a SignalDB collection using IndexedDB.\n * This adapter reads and writes data to an IndexedDB object store, with customizable serialization and deserialization.\n * @template T - The type of the items in the collection.\n * @template I - The type of the unique identifier for the items.\n * @param name - A unique name for the collection, used as the database name.\n * @param options - Optional configuration for the adapter.\n * @param options.prefix - A prefix to be added to the database name (default: 'signaldb-').\n * @returns A SignalDB persistence adapter for managing data in IndexedDB.\n */\nexport default function createIndexedDBAdapter(name, options) {\n const { prefix = 'signaldb-' } = options || {};\n const databaseName = `${prefix}${name}`;\n const storeName = 'items';\n /**\n * Opens the IndexedDB database and creates the object store if it doesn't exist.\n * @returns A promise that resolves with the opened database.\n */\n function openDatabase() {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(databaseName, 1);\n request.addEventListener('upgradeneeded', () => {\n const database = request.result;\n if (!database.objectStoreNames.contains(storeName)) {\n database.createObjectStore(storeName, { keyPath: 'id' });\n }\n });\n request.addEventListener('success', () => resolve(request.result));\n request.addEventListener('error', () => reject(new Error(request.error?.message || 'Database error')));\n });\n }\n /**\n * Retrieves all items from the IndexedDB object store.\n * @returns A promise that resolves with an array of items.\n */\n async function getAllItems() {\n const database = await openDatabase();\n return new Promise((resolve, reject) => {\n const transaction = database.transaction(storeName, 'readonly');\n const store = transaction.objectStore(storeName);\n const request = store.getAll();\n request.addEventListener('success', () => resolve(request.result));\n request.addEventListener('error', () => reject(new Error(request.error?.message || 'Error fetching items')));\n });\n }\n return createPersistenceAdapter({\n async load() {\n const items = await getAllItems();\n return { items };\n },\n async save(items, { added, modified, removed }) {\n const database = await openDatabase();\n const transaction = database.transaction(storeName, 'readwrite');\n const store = transaction.objectStore(storeName);\n added.forEach(item => store.add(item));\n modified.forEach(item => store.put(item));\n removed.forEach(item => store.delete(item.id));\n return new Promise((resolve, reject) => {\n transaction.addEventListener('complete', () => resolve());\n transaction.addEventListener('error', () => reject(new Error(transaction.error?.message || 'Transaction error')));\n });\n },\n async register() {\n return;\n },\n });\n}\n"],"names":["createIndexedDBAdapter","name","options","prefix","databaseName","storeName","openDatabase","resolve","reject","request","database","_a","getAllItems","createPersistenceAdapter","items","added","modified","removed","transaction","store","item"],"mappings":"4QAWwB,SAAAA,EAAuBC,EAAMC,EAAS,CAC1D,KAAM,CAAE,OAAAC,EAAS,WAAY,EAAID,GAAW,CAAC,EACvCE,EAAe,GAAGD,CAAM,GAAGF,CAAI,GAC/BI,EAAY,QAKlB,SAASC,GAAe,CACpB,OAAO,IAAI,QAAQ,CAACC,EAASC,IAAW,CACpC,MAAMC,EAAU,UAAU,KAAKL,EAAc,CAAC,EACtCK,EAAA,iBAAiB,gBAAiB,IAAM,CAC5C,MAAMC,EAAWD,EAAQ,OACpBC,EAAS,iBAAiB,SAASL,CAAS,GAC7CK,EAAS,kBAAkBL,EAAW,CAAE,QAAS,KAAM,CAC3D,CACH,EACDI,EAAQ,iBAAiB,UAAW,IAAMF,EAAQE,EAAQ,MAAM,CAAC,EACzDA,EAAA,iBAAiB,QAAS,IAAA,OAAM,OAAAD,EAAO,IAAI,QAAMG,EAAAF,EAAQ,QAAR,YAAAE,EAAe,UAAW,gBAAgB,CAAC,EAAC,CAAA,CACxG,CAAA,CAML,eAAeC,GAAc,CACnB,MAAAF,EAAW,MAAMJ,EAAa,EACpC,OAAO,IAAI,QAAQ,CAACC,EAASC,IAAW,CAG9B,MAAAC,EAFcC,EAAS,YAAYL,EAAW,UAAU,EACpC,YAAYA,CAAS,EACzB,OAAO,EAC7BI,EAAQ,iBAAiB,UAAW,IAAMF,EAAQE,EAAQ,MAAM,CAAC,EACzDA,EAAA,iBAAiB,QAAS,IAAA,OAAM,OAAAD,EAAO,IAAI,QAAMG,EAAAF,EAAQ,QAAR,YAAAE,EAAe,UAAW,sBAAsB,CAAC,EAAC,CAAA,CAC9G,CAAA,CAEL,OAAOE,2BAAyB,CAC5B,MAAM,MAAO,CAET,MAAO,CAAE,MADK,MAAMD,EAAY,CACjB,CACnB,EACA,MAAM,KAAKE,EAAO,CAAE,MAAAC,EAAO,SAAAC,EAAU,QAAAC,GAAW,CAE5C,MAAMC,GADW,MAAMZ,EAAa,GACP,YAAYD,EAAW,WAAW,EACzDc,EAAQD,EAAY,YAAYb,CAAS,EAC/C,OAAAU,EAAM,QAAQK,GAAQD,EAAM,IAAIC,CAAI,CAAC,EACrCJ,EAAS,QAAQI,GAAQD,EAAM,IAAIC,CAAI,CAAC,EACxCH,EAAQ,QAAgBG,GAAAD,EAAM,OAAOC,EAAK,EAAE,CAAC,EACtC,IAAI,QAAQ,CAACb,EAASC,IAAW,CACpCU,EAAY,iBAAiB,WAAY,IAAMX,EAAA,CAAS,EAC5CW,EAAA,iBAAiB,QAAS,IAAA,OAAM,OAAAV,EAAO,IAAI,QAAMG,EAAAO,EAAY,QAAZ,YAAAP,EAAmB,UAAW,mBAAmB,CAAC,EAAC,CAAA,CACnH,CACL,EACA,MAAM,UAAW,CACb,CACJ,CACH,CACL"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@signaldb/indexeddb",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"scripts": {
|
|
6
|
-
"build": "rimraf dist && vite build"
|
|
6
|
+
"build": "rimraf dist && vite build",
|
|
7
|
+
"analyze-bundle": "bundle-analyzer ./dist --upload-token=$BUNDLE_ANALYZER_UPLOAD_TOKEN --bundle-name=@signaldb/indexeddb",
|
|
8
|
+
"test": "vitest"
|
|
7
9
|
},
|
|
8
10
|
"repository": {
|
|
9
11
|
"type": "git",
|