@anchorlib/svelte 1.0.0-beta.10 → 1.0.0-beta.14

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 (54) hide show
  1. package/dist/anchor.d.ts +77 -0
  2. package/dist/anchor.js +19 -0
  3. package/dist/anchor.js.map +1 -0
  4. package/dist/derive.d.ts +14 -0
  5. package/dist/derive.js +26 -0
  6. package/dist/derive.js.map +1 -0
  7. package/dist/fetch.d.ts +56 -0
  8. package/dist/fetch.js +12 -0
  9. package/dist/fetch.js.map +1 -0
  10. package/dist/history.d.ts +11 -0
  11. package/dist/history.js +9 -0
  12. package/dist/history.js.map +1 -0
  13. package/dist/immutable.d.ts +43 -0
  14. package/dist/immutable.js +12 -0
  15. package/dist/immutable.js.map +1 -0
  16. package/dist/index.d.ts +11 -305
  17. package/dist/index.js +11 -138
  18. package/dist/index.js.map +1 -1
  19. package/dist/model.d.ts +36 -0
  20. package/dist/model.js +12 -0
  21. package/dist/model.js.map +1 -0
  22. package/dist/observable.d.ts +14 -0
  23. package/dist/observable.js +28 -0
  24. package/dist/observable.js.map +1 -0
  25. package/dist/prop.d.ts +22 -0
  26. package/dist/prop.js +9 -0
  27. package/dist/prop.js.map +1 -0
  28. package/dist/reactive.js +2 -3
  29. package/dist/reactive.js.map +1 -1
  30. package/dist/ref.d.ts +47 -0
  31. package/dist/ref.js +35 -0
  32. package/dist/ref.js.map +1 -0
  33. package/dist/storage/index.d.ts +7 -60
  34. package/dist/storage/index.js +5 -66
  35. package/dist/storage/index.js.map +1 -1
  36. package/dist/storage/kv.d.ts +16 -0
  37. package/dist/storage/kv.js +14 -0
  38. package/dist/storage/kv.js.map +1 -0
  39. package/dist/storage/persistent.d.ts +17 -0
  40. package/dist/storage/persistent.js +14 -0
  41. package/dist/storage/persistent.js.map +1 -0
  42. package/dist/storage/session.d.ts +17 -0
  43. package/dist/storage/session.js +14 -0
  44. package/dist/storage/session.js.map +1 -0
  45. package/dist/storage/table.d.ts +7 -0
  46. package/dist/storage/table.js +45 -0
  47. package/dist/storage/table.js.map +1 -0
  48. package/dist/storage/types.d.ts +15 -0
  49. package/dist/storage/types.js +3 -0
  50. package/dist/storage/types.js.map +1 -0
  51. package/dist/types.d.ts +11 -0
  52. package/dist/types.js +3 -0
  53. package/dist/types.js.map +1 -0
  54. package/package.json +17 -21
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/storage/kv.ts","../../src/storage/persistent.ts","../../src/storage/session.ts","../../src/storage/table.ts"],"names":["onDestroy"],"mappings":";;;;;AAcO,SAAS,KAAA,CAA0B,MAAc,IAAA,EAAqB;AAC3E,EAAA,MAAM,KAAA,GAAQ,EAAA,CAAG,IAAA,EAAM,IAAI,CAAA;AAE3B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,EAAA,CAAG,MAAM,KAAK,CAAA;AAAA,EAChB,CAAC,CAAA;AAED,EAAA,OAAO,KAAA;AACT;ACNO,SAAS,aAAA,CACd,IAAA,EACA,IAAA,EACA,OAAA,EACG;AACH,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,IAAA,EAAM,IAAA,EAAM,OAAO,CAAA;AAE5C,EAAAA,UAAU,MAAM;AACd,IAAA,UAAA,CAAW,MAAM,KAAK,CAAA;AAAA,EACxB,CAAC,CAAA;AAED,EAAA,OAAO,KAAA;AACT;ACZO,SAAS,UAAA,CACd,IAAA,EACA,IAAA,EACA,OAAA,EACG;AACH,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,IAAA,EAAM,IAAA,EAAM,OAAO,CAAA;AAEzC,EAAAA,UAAU,MAAM;AACd,IAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AAAA,EACrB,CAAC,CAAA;AAED,EAAA,OAAO,KAAA;AACT;ACTO,SAAS,eACd,SAAA,EACA,OAAA,GAAU,GACV,OAAA,EACA,UAAA,EACA,SAAS,SAAA,EACO;AAChB,EAAA,IAAI,OAAO,cAAc,QAAA,EAAU;AACjC,IAAA,SAAA,GAAY,WAAA,CAAkB,SAAA,EAAW,OAAA,EAAS,OAAA,EAAS,YAAY,MAAM,CAAA;AAAA,EAC/E;AAEA,EAAA,MAAM,QAAA,GAAW,SAAA;AAEjB,EAAA,OAAO;AAAA,IACL,IAAI,EAAA,EAAY;AACd,MAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA;AAE7B,MAAAA,UAAU,MAAM;AACd,QAAA,QAAA,CAAS,MAAM,EAAE,CAAA;AAAA,MACnB,CAAC,CAAA;AAED,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAAA,IACA,IAAI,OAAA,EAAY;AACd,MAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,GAAA,CAAI,OAAO,CAAA;AAElC,MAAAA,UAAU,MAAM;AACd,QAAA,QAAA,CAAS,KAAA,CAAM,KAAA,CAAM,IAAA,CAAK,EAAE,CAAA;AAAA,MAC9B,CAAC,CAAA;AAED,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAAA,IACA,IAAA,CAAK,MAAA,EAAoC,KAAA,EAAgB,SAAA,EAAgC;AACvF,MAAA,OAAO,QAAA,CAAS,IAAA,CAAK,MAAA,EAAQ,KAAA,EAAO,SAAS,CAAA;AAAA,IAC/C,CAAA;AAAA,IACA,WAAA,CAAY,IAAA,EAAe,MAAA,EAAoC,KAAA,EAAgB,SAAA,EAAgC;AAC7G,MAAA,OAAO,QAAA,CAAS,WAAA,CAAY,IAAA,EAAM,MAAA,EAAQ,OAAO,SAAS,CAAA;AAAA,IAC5D,CAAA;AAAA,IACA,OAAO,EAAA,EAAY;AACjB,MAAA,OAAO,QAAA,CAAS,OAAO,EAAE,CAAA;AAAA,IAC3B,CAAA;AAAA,IACA,KAAK,KAAA,EAAY;AACf,MAAA,QAAA,CAAS,KAAK,KAAK,CAAA;AACnB,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,KAAA,GAAQ;AACN,MAAA,OAAO,QAAA;AAAA,IACT;AAAA,GACF;AACF","file":"index.js","sourcesContent":["import { kv, type KVState, type Storable } from '@anchorlib/storage/db';\nimport { onDestroy } from 'svelte';\n\n/**\n * Creates a reactive key-value store state.\n *\n * This function initializes a key-value store with the given name and initial value,\n * and automatically cleans up the store subscription when the component is destroyed.\n *\n * @template T - The type of the stored value, must extend Storable\n * @param name - The unique identifier for the key-value store\n * @param init - The initial value for the store\n * @returns A reactive key-value store state.\n */\nexport function kvRef<T extends Storable>(name: string, init: T): KVState<T> {\n const state = kv(name, init);\n\n onDestroy(() => {\n kv.leave(state);\n });\n\n return state;\n}\n","import type { LinkableSchema, ObjLike, StateOptions } from '@anchorlib/core';\nimport { persistent } from '@anchorlib/storage';\nimport { onDestroy } from 'svelte';\n\n/**\n * Creates a persistent reactive state using the provided name, initial value, and options.\n * The persistentRef is tied to the browser's local storage, meaning its value will persist\n * across page reloads and browser sessions until explicitly cleared.\n *\n * @template T - The type of the initial value, must extend object-like structure.\n * @template S - The schema type for linkable validation, defaults to LinkableSchema.\n * @param name - A unique string identifier for the local storage key.\n * @param init - The initial value to be stored in local storage.\n * @param options - Optional configuration for state behavior and validation schema.\n * @returns A reactive state that provides reactive access and modification capabilities.\n */\nexport function persistentRef<T extends ObjLike, S extends LinkableSchema = LinkableSchema>(\n name: string,\n init: T,\n options?: StateOptions<S>\n): T {\n const state = persistent(name, init, options);\n\n onDestroy(() => {\n persistent.leave(state);\n });\n\n return state;\n}\n","import type { LinkableSchema, ObjLike, StateOptions } from '@anchorlib/core';\nimport { session } from '@anchorlib/storage';\nimport { onDestroy } from 'svelte';\n\n/**\n * Creates a session-scoped reactive state using the provided name, initial value, and options.\n * The sessionRef is tied to the browser's session storage, meaning its value will persist\n * across page reloads but not after the session ends (e.g., tab/window closed).\n *\n * @template T - The type of the initial value, must extend object-like structure.\n * @template S - The schema type for linkable validation, defaults to LinkableSchema.\n * @param name - A unique string identifier for the session storage key.\n * @param init - The initial value to be stored in session storage.\n * @param options - Optional configuration for state behavior and validation schema.\n * @returns A reactive state that provides reactive access and modification capabilities.\n */\nexport function sessionRef<T extends ObjLike, S extends LinkableSchema = LinkableSchema>(\n name: string,\n init: T,\n options?: StateOptions<S>\n): T {\n const state = session(name, init, options);\n\n onDestroy(() => {\n session.leave(state);\n });\n\n return state;\n}\n","import {\n createTable,\n type FilterFn,\n type InferRec,\n type ReactiveTable,\n type Rec,\n type Row,\n} from '@anchorlib/storage/db';\nimport { onDestroy } from 'svelte';\nimport type { TableRef } from './types.js';\n\nexport function createTableRef<T extends ReactiveTable<Rec>>(table: T): TableRef<InferRec<T>>;\nexport function createTableRef<T extends Rec, R extends Row<T> = Row<T>>(\n name: string,\n version?: number,\n indexes?: (keyof R)[],\n remIndexes?: (keyof R)[],\n dbName?: string\n): TableRef<T, R>;\nexport function createTableRef<T extends Rec, R extends Row<T> = Row<T>>(\n tableName: string | ReactiveTable<T>,\n version = 1,\n indexes?: (keyof R)[],\n remIndexes?: (keyof R)[],\n dbName = tableName as string\n): TableRef<T, R> {\n if (typeof tableName === 'string') {\n tableName = createTable<T, R>(tableName, version, indexes, remIndexes, dbName);\n }\n\n const tableRef = tableName as ReactiveTable<T, R>;\n\n return {\n get(id: string) {\n const state = tableRef.get(id);\n\n onDestroy(() => {\n tableRef.leave(id);\n });\n\n return state;\n },\n add(payload: T) {\n const state = tableRef.add(payload);\n\n onDestroy(() => {\n tableRef.leave(state.data.id);\n });\n\n return state;\n },\n list(filter?: IDBKeyRange | FilterFn<R>, limit?: number, direction?: IDBCursorDirection) {\n return tableRef.list(filter, limit, direction);\n },\n listByIndex(name: keyof R, filter?: IDBKeyRange | FilterFn<R>, limit?: number, direction?: IDBCursorDirection) {\n return tableRef.listByIndex(name, filter, limit, direction);\n },\n remove(id: string) {\n return tableRef.remove(id);\n },\n seed(seeds: R[]) {\n tableRef.seed(seeds);\n return this;\n },\n table() {\n return tableRef;\n },\n };\n}\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js","sourcesContent":[]}
@@ -0,0 +1,16 @@
1
+ import { Storable, KVState } from '@anchorlib/storage/db';
2
+
3
+ /**
4
+ * Creates a reactive key-value store state.
5
+ *
6
+ * This function initializes a key-value store with the given name and initial value,
7
+ * and automatically cleans up the store subscription when the component is destroyed.
8
+ *
9
+ * @template T - The type of the stored value, must extend Storable
10
+ * @param name - The unique identifier for the key-value store
11
+ * @param init - The initial value for the store
12
+ * @returns A reactive key-value store state.
13
+ */
14
+ declare function kvRef<T extends Storable>(name: string, init: T): KVState<T>;
15
+
16
+ export { kvRef };
@@ -0,0 +1,14 @@
1
+ import { kv } from '@anchorlib/storage/db';
2
+ import { onDestroy } from 'svelte';
3
+
4
+ function kvRef(name, init) {
5
+ const state = kv(name, init);
6
+ onDestroy(() => {
7
+ kv.leave(state);
8
+ });
9
+ return state;
10
+ }
11
+
12
+ export { kvRef };
13
+ //# sourceMappingURL=kv.js.map
14
+ //# sourceMappingURL=kv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/storage/kv.ts"],"names":[],"mappings":";;;AAcO,SAAS,KAAA,CAA0B,MAAc,IAAA,EAAqB;AAC3E,EAAA,MAAM,KAAA,GAAQ,EAAA,CAAG,IAAA,EAAM,IAAI,CAAA;AAE3B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,EAAA,CAAG,MAAM,KAAK,CAAA;AAAA,EAChB,CAAC,CAAA;AAED,EAAA,OAAO,KAAA;AACT","file":"kv.js","sourcesContent":["import { kv, type KVState, type Storable } from '@anchorlib/storage/db';\nimport { onDestroy } from 'svelte';\n\n/**\n * Creates a reactive key-value store state.\n *\n * This function initializes a key-value store with the given name and initial value,\n * and automatically cleans up the store subscription when the component is destroyed.\n *\n * @template T - The type of the stored value, must extend Storable\n * @param name - The unique identifier for the key-value store\n * @param init - The initial value for the store\n * @returns A reactive key-value store state.\n */\nexport function kvRef<T extends Storable>(name: string, init: T): KVState<T> {\n const state = kv(name, init);\n\n onDestroy(() => {\n kv.leave(state);\n });\n\n return state;\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import { ObjLike, LinkableSchema, StateOptions } from '@anchorlib/core';
2
+
3
+ /**
4
+ * Creates a persistent reactive state using the provided name, initial value, and options.
5
+ * The persistentRef is tied to the browser's local storage, meaning its value will persist
6
+ * across page reloads and browser sessions until explicitly cleared.
7
+ *
8
+ * @template T - The type of the initial value, must extend object-like structure.
9
+ * @template S - The schema type for linkable validation, defaults to LinkableSchema.
10
+ * @param name - A unique string identifier for the local storage key.
11
+ * @param init - The initial value to be stored in local storage.
12
+ * @param options - Optional configuration for state behavior and validation schema.
13
+ * @returns A reactive state that provides reactive access and modification capabilities.
14
+ */
15
+ declare function persistentRef<T extends ObjLike, S extends LinkableSchema = LinkableSchema>(name: string, init: T, options?: StateOptions<S>): T;
16
+
17
+ export { persistentRef };
@@ -0,0 +1,14 @@
1
+ import { persistent } from '@anchorlib/storage';
2
+ import { onDestroy } from 'svelte';
3
+
4
+ function persistentRef(name, init, options) {
5
+ const state = persistent(name, init, options);
6
+ onDestroy(() => {
7
+ persistent.leave(state);
8
+ });
9
+ return state;
10
+ }
11
+
12
+ export { persistentRef };
13
+ //# sourceMappingURL=persistent.js.map
14
+ //# sourceMappingURL=persistent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/storage/persistent.ts"],"names":[],"mappings":";;;AAgBO,SAAS,aAAA,CACd,IAAA,EACA,IAAA,EACA,OAAA,EACG;AACH,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,IAAA,EAAM,IAAA,EAAM,OAAO,CAAA;AAE5C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,UAAA,CAAW,MAAM,KAAK,CAAA;AAAA,EACxB,CAAC,CAAA;AAED,EAAA,OAAO,KAAA;AACT","file":"persistent.js","sourcesContent":["import type { LinkableSchema, ObjLike, StateOptions } from '@anchorlib/core';\nimport { persistent } from '@anchorlib/storage';\nimport { onDestroy } from 'svelte';\n\n/**\n * Creates a persistent reactive state using the provided name, initial value, and options.\n * The persistentRef is tied to the browser's local storage, meaning its value will persist\n * across page reloads and browser sessions until explicitly cleared.\n *\n * @template T - The type of the initial value, must extend object-like structure.\n * @template S - The schema type for linkable validation, defaults to LinkableSchema.\n * @param name - A unique string identifier for the local storage key.\n * @param init - The initial value to be stored in local storage.\n * @param options - Optional configuration for state behavior and validation schema.\n * @returns A reactive state that provides reactive access and modification capabilities.\n */\nexport function persistentRef<T extends ObjLike, S extends LinkableSchema = LinkableSchema>(\n name: string,\n init: T,\n options?: StateOptions<S>\n): T {\n const state = persistent(name, init, options);\n\n onDestroy(() => {\n persistent.leave(state);\n });\n\n return state;\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import { ObjLike, LinkableSchema, StateOptions } from '@anchorlib/core';
2
+
3
+ /**
4
+ * Creates a session-scoped reactive state using the provided name, initial value, and options.
5
+ * The sessionRef is tied to the browser's session storage, meaning its value will persist
6
+ * across page reloads but not after the session ends (e.g., tab/window closed).
7
+ *
8
+ * @template T - The type of the initial value, must extend object-like structure.
9
+ * @template S - The schema type for linkable validation, defaults to LinkableSchema.
10
+ * @param name - A unique string identifier for the session storage key.
11
+ * @param init - The initial value to be stored in session storage.
12
+ * @param options - Optional configuration for state behavior and validation schema.
13
+ * @returns A reactive state that provides reactive access and modification capabilities.
14
+ */
15
+ declare function sessionRef<T extends ObjLike, S extends LinkableSchema = LinkableSchema>(name: string, init: T, options?: StateOptions<S>): T;
16
+
17
+ export { sessionRef };
@@ -0,0 +1,14 @@
1
+ import { session } from '@anchorlib/storage';
2
+ import { onDestroy } from 'svelte';
3
+
4
+ function sessionRef(name, init, options) {
5
+ const state = session(name, init, options);
6
+ onDestroy(() => {
7
+ session.leave(state);
8
+ });
9
+ return state;
10
+ }
11
+
12
+ export { sessionRef };
13
+ //# sourceMappingURL=session.js.map
14
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/storage/session.ts"],"names":[],"mappings":";;;AAgBO,SAAS,UAAA,CACd,IAAA,EACA,IAAA,EACA,OAAA,EACG;AACH,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,IAAA,EAAM,IAAA,EAAM,OAAO,CAAA;AAEzC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AAAA,EACrB,CAAC,CAAA;AAED,EAAA,OAAO,KAAA;AACT","file":"session.js","sourcesContent":["import type { LinkableSchema, ObjLike, StateOptions } from '@anchorlib/core';\nimport { session } from '@anchorlib/storage';\nimport { onDestroy } from 'svelte';\n\n/**\n * Creates a session-scoped reactive state using the provided name, initial value, and options.\n * The sessionRef is tied to the browser's session storage, meaning its value will persist\n * across page reloads but not after the session ends (e.g., tab/window closed).\n *\n * @template T - The type of the initial value, must extend object-like structure.\n * @template S - The schema type for linkable validation, defaults to LinkableSchema.\n * @param name - A unique string identifier for the session storage key.\n * @param init - The initial value to be stored in session storage.\n * @param options - Optional configuration for state behavior and validation schema.\n * @returns A reactive state that provides reactive access and modification capabilities.\n */\nexport function sessionRef<T extends ObjLike, S extends LinkableSchema = LinkableSchema>(\n name: string,\n init: T,\n options?: StateOptions<S>\n): T {\n const state = session(name, init, options);\n\n onDestroy(() => {\n session.leave(state);\n });\n\n return state;\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import { ReactiveTable, Rec, InferRec, Row } from '@anchorlib/storage/db';
2
+ import { TableRef } from './types.js';
3
+
4
+ declare function createTableRef<T extends ReactiveTable<Rec>>(table: T): TableRef<InferRec<T>>;
5
+ declare function createTableRef<T extends Rec, R extends Row<T> = Row<T>>(name: string, version?: number, indexes?: (keyof R)[], remIndexes?: (keyof R)[], dbName?: string): TableRef<T, R>;
6
+
7
+ export { createTableRef };
@@ -0,0 +1,45 @@
1
+ import { createTable } from '@anchorlib/storage/db';
2
+ import { onDestroy } from 'svelte';
3
+
4
+ function createTableRef(tableName, version = 1, indexes, remIndexes, dbName = tableName) {
5
+ if (typeof tableName === "string") {
6
+ tableName = createTable(tableName, version, indexes, remIndexes, dbName);
7
+ }
8
+ const tableRef = tableName;
9
+ return {
10
+ get(id) {
11
+ const state = tableRef.get(id);
12
+ onDestroy(() => {
13
+ tableRef.leave(id);
14
+ });
15
+ return state;
16
+ },
17
+ add(payload) {
18
+ const state = tableRef.add(payload);
19
+ onDestroy(() => {
20
+ tableRef.leave(state.data.id);
21
+ });
22
+ return state;
23
+ },
24
+ list(filter, limit, direction) {
25
+ return tableRef.list(filter, limit, direction);
26
+ },
27
+ listByIndex(name, filter, limit, direction) {
28
+ return tableRef.listByIndex(name, filter, limit, direction);
29
+ },
30
+ remove(id) {
31
+ return tableRef.remove(id);
32
+ },
33
+ seed(seeds) {
34
+ tableRef.seed(seeds);
35
+ return this;
36
+ },
37
+ table() {
38
+ return tableRef;
39
+ }
40
+ };
41
+ }
42
+
43
+ export { createTableRef };
44
+ //# sourceMappingURL=table.js.map
45
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/storage/table.ts"],"names":[],"mappings":";;;AAmBO,SAAS,eACd,SAAA,EACA,OAAA,GAAU,GACV,OAAA,EACA,UAAA,EACA,SAAS,SAAA,EACO;AAChB,EAAA,IAAI,OAAO,cAAc,QAAA,EAAU;AACjC,IAAA,SAAA,GAAY,WAAA,CAAkB,SAAA,EAAW,OAAA,EAAS,OAAA,EAAS,YAAY,MAAM,CAAA;AAAA,EAC/E;AAEA,EAAA,MAAM,QAAA,GAAW,SAAA;AAEjB,EAAA,OAAO;AAAA,IACL,IAAI,EAAA,EAAY;AACd,MAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA;AAE7B,MAAA,SAAA,CAAU,MAAM;AACd,QAAA,QAAA,CAAS,MAAM,EAAE,CAAA;AAAA,MACnB,CAAC,CAAA;AAED,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAAA,IACA,IAAI,OAAA,EAAY;AACd,MAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,GAAA,CAAI,OAAO,CAAA;AAElC,MAAA,SAAA,CAAU,MAAM;AACd,QAAA,QAAA,CAAS,KAAA,CAAM,KAAA,CAAM,IAAA,CAAK,EAAE,CAAA;AAAA,MAC9B,CAAC,CAAA;AAED,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAAA,IACA,IAAA,CAAK,MAAA,EAAoC,KAAA,EAAgB,SAAA,EAAgC;AACvF,MAAA,OAAO,QAAA,CAAS,IAAA,CAAK,MAAA,EAAQ,KAAA,EAAO,SAAS,CAAA;AAAA,IAC/C,CAAA;AAAA,IACA,WAAA,CAAY,IAAA,EAAe,MAAA,EAAoC,KAAA,EAAgB,SAAA,EAAgC;AAC7G,MAAA,OAAO,QAAA,CAAS,WAAA,CAAY,IAAA,EAAM,MAAA,EAAQ,OAAO,SAAS,CAAA;AAAA,IAC5D,CAAA;AAAA,IACA,OAAO,EAAA,EAAY;AACjB,MAAA,OAAO,QAAA,CAAS,OAAO,EAAE,CAAA;AAAA,IAC3B,CAAA;AAAA,IACA,KAAK,KAAA,EAAY;AACf,MAAA,QAAA,CAAS,KAAK,KAAK,CAAA;AACnB,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,KAAA,GAAQ;AACN,MAAA,OAAO,QAAA;AAAA,IACT;AAAA,GACF;AACF","file":"table.js","sourcesContent":["import {\n createTable,\n type FilterFn,\n type InferRec,\n type ReactiveTable,\n type Rec,\n type Row,\n} from '@anchorlib/storage/db';\nimport { onDestroy } from 'svelte';\nimport type { TableRef } from './types.js';\n\nexport function createTableRef<T extends ReactiveTable<Rec>>(table: T): TableRef<InferRec<T>>;\nexport function createTableRef<T extends Rec, R extends Row<T> = Row<T>>(\n name: string,\n version?: number,\n indexes?: (keyof R)[],\n remIndexes?: (keyof R)[],\n dbName?: string\n): TableRef<T, R>;\nexport function createTableRef<T extends Rec, R extends Row<T> = Row<T>>(\n tableName: string | ReactiveTable<T>,\n version = 1,\n indexes?: (keyof R)[],\n remIndexes?: (keyof R)[],\n dbName = tableName as string\n): TableRef<T, R> {\n if (typeof tableName === 'string') {\n tableName = createTable<T, R>(tableName, version, indexes, remIndexes, dbName);\n }\n\n const tableRef = tableName as ReactiveTable<T, R>;\n\n return {\n get(id: string) {\n const state = tableRef.get(id);\n\n onDestroy(() => {\n tableRef.leave(id);\n });\n\n return state;\n },\n add(payload: T) {\n const state = tableRef.add(payload);\n\n onDestroy(() => {\n tableRef.leave(state.data.id);\n });\n\n return state;\n },\n list(filter?: IDBKeyRange | FilterFn<R>, limit?: number, direction?: IDBCursorDirection) {\n return tableRef.list(filter, limit, direction);\n },\n listByIndex(name: keyof R, filter?: IDBKeyRange | FilterFn<R>, limit?: number, direction?: IDBCursorDirection) {\n return tableRef.listByIndex(name, filter, limit, direction);\n },\n remove(id: string) {\n return tableRef.remove(id);\n },\n seed(seeds: R[]) {\n tableRef.seed(seeds);\n return this;\n },\n table() {\n return tableRef;\n },\n };\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import { Rec, Row, RowState, FilterFn, RowListState, ReactiveTable } from '@anchorlib/storage/db';
2
+
3
+ interface TableRef<T extends Rec, R extends Row<T> = Row<T>> {
4
+ get(id: string): RowState<R>;
5
+ add(payload: T): RowState<R>;
6
+ remove(id: string): RowState<R>;
7
+ list(filter?: IDBKeyRange | FilterFn<R>, limit?: number, direction?: IDBCursorDirection): RowListState<R>;
8
+ listByIndex(name: keyof R, filter?: IDBKeyRange | FilterFn<R>, limit?: number, direction?: IDBCursorDirection): RowListState<R>;
9
+ seed<T extends R[]>(seeds: T): this;
10
+ table(): ReactiveTable<T>;
11
+ }
12
+ type InferRef<T> = T extends TableRef<Rec, infer R> ? R : never;
13
+ type InferListRef<T> = T extends TableRef<Rec, infer R> ? R[] : never;
14
+
15
+ export type { InferListRef, InferRef, TableRef };
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=types.js.map
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"types.js"}
@@ -0,0 +1,11 @@
1
+ type StateRef<T> = {
2
+ value: T;
3
+ };
4
+ type ConstantRef<T> = {
5
+ get value(): T;
6
+ };
7
+ type VariableRef<T> = ConstantRef<T> & {
8
+ set value(value: T);
9
+ };
10
+
11
+ export type { ConstantRef, StateRef, VariableRef };
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=types.js.map
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"types.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anchorlib/svelte",
3
- "version": "1.0.0-beta.10",
3
+ "version": "1.0.0-beta.14",
4
4
  "description": "Svelte bindings for Anchor reactive state management",
5
5
  "keywords": [
6
6
  "state",
@@ -50,38 +50,34 @@
50
50
  "access": "public"
51
51
  },
52
52
  "dependencies": {
53
- "@anchorlib/core": "^1.0.0-beta.10",
54
- "@anchorlib/storage": "^1.0.0-beta.10"
53
+ "@anchorlib/core": "^1.0.0-beta.14",
54
+ "@anchorlib/storage": "^1.0.0-beta.14"
55
55
  },
56
56
  "devDependencies": {
57
- "@eslint/css": "^0.5.0",
58
- "@eslint/js": "^9.23.0",
59
- "@eslint/markdown": "^6.3.0",
60
- "@sveltejs/vite-plugin-svelte": "^6.2.1",
61
- "@testing-library/svelte": "^5.2.8",
62
- "@testing-library/user-event": "^14.6.1",
63
- "@types/react": "^19.1.8",
57
+ "@biomejs/biome": "2.3.3",
58
+ "@sveltejs/vite-plugin-svelte": "6.2.1",
59
+ "@testing-library/svelte": "5.2.8",
60
+ "@testing-library/user-event": "14.6.1",
61
+ "@types/react": "^19.1.0",
62
+ "@vitest/coverage-v8": "^3.2.4",
64
63
  "@vitest/ui": "^3.2.4",
65
- "eslint": "^9.23.0",
66
- "eslint-plugin-prettier": "^5.2.3",
67
- "jsdom": "^27.0.0",
68
- "prettier": "^3.5.3",
69
- "publint": "^0.3.9",
70
- "rimraf": "^6.0.1",
71
- "tsup": "^8.4.0",
72
- "typescript-eslint": "^8.27.0",
64
+ "jsdom": "27.0.1",
65
+ "publint": "0.3.15",
66
+ "rimraf": "6.0.1",
67
+ "tsup": "8.5.0",
68
+ "vite": "7.1.12",
73
69
  "vitest": "^3.2.4"
74
70
  },
75
71
  "peerDependencies": {
76
- "svelte": "^5.36.16",
77
- "typescript": "^5.8.2"
72
+ "svelte": "^5.0.0",
73
+ "typescript": "^5.9.3"
78
74
  },
79
75
  "scripts": {
80
76
  "dev": "rimraf dist && tsup --watch",
81
77
  "clean": "rimraf dist",
82
78
  "build": "rimraf dist && tsup && publint",
83
79
  "prepublish": "rimraf dist && tsup && publint",
84
- "format": "prettier --write .",
80
+ "format": "biome format --write",
85
81
  "test": "rimraf coverage && vitest --run",
86
82
  "test:preview": "rimraf coverage && vitest --run && vite preview --outDir coverage"
87
83
  },