@livequery/core 2.0.104 → 2.0.106

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 (96) hide show
  1. package/LIVEQUERY_SPEC.md +451 -0
  2. package/README.md +571 -314
  3. package/build/src/ApiGatewayHandler.d.ts +56 -0
  4. package/build/src/ApiGatewayHandler.js +210 -0
  5. package/build/src/ApiGatewayHandler.js.map +1 -0
  6. package/build/src/ApiGatewayLinker.d.ts +61 -0
  7. package/build/src/ApiGatewayLinker.js +229 -0
  8. package/build/src/ApiGatewayLinker.js.map +1 -0
  9. package/build/src/ApiServiceLinker.d.ts +18 -0
  10. package/build/src/ApiServiceLinker.js +61 -0
  11. package/build/src/ApiServiceLinker.js.map +1 -0
  12. package/build/src/LivequeryContext.d.ts +43 -0
  13. package/build/src/LivequeryContext.js +2 -0
  14. package/build/src/LivequeryContext.js.map +1 -0
  15. package/build/src/LivequeryDatasource.d.ts +8 -0
  16. package/build/src/LivequeryDatasource.js +2 -0
  17. package/build/src/LivequeryDatasource.js.map +1 -0
  18. package/build/src/LivequeryRequestParser.d.ts +13 -0
  19. package/build/src/LivequeryRequestParser.js +34 -0
  20. package/build/src/LivequeryRequestParser.js.map +1 -0
  21. package/build/src/UdpDiscovery.d.ts +26 -0
  22. package/build/src/UdpDiscovery.js +238 -0
  23. package/build/src/UdpDiscovery.js.map +1 -0
  24. package/build/src/WebsocketGateway.d.ts +36 -0
  25. package/build/src/WebsocketGateway.js +353 -0
  26. package/build/src/WebsocketGateway.js.map +1 -0
  27. package/build/src/const.d.ts +8 -0
  28. package/build/src/const.js +10 -0
  29. package/build/src/const.js.map +1 -0
  30. package/build/src/headers.d.ts +9 -0
  31. package/build/src/headers.js +32 -0
  32. package/build/src/headers.js.map +1 -0
  33. package/build/src/helpers/PathHelper.d.ts +11 -0
  34. package/build/src/helpers/PathHelper.js +41 -0
  35. package/build/src/helpers/PathHelper.js.map +1 -0
  36. package/build/src/helpers/hidePrivateFields.d.ts +3 -0
  37. package/build/src/helpers/hidePrivateFields.js +29 -0
  38. package/build/src/helpers/hidePrivateFields.js.map +1 -0
  39. package/build/src/helpers/nodeRequestToWebRequest.d.ts +7 -0
  40. package/build/src/helpers/nodeRequestToWebRequest.js +17 -0
  41. package/build/src/helpers/nodeRequestToWebRequest.js.map +1 -0
  42. package/build/src/helpers/writeWebResponse.d.ts +2 -0
  43. package/build/src/helpers/writeWebResponse.js +9 -0
  44. package/build/src/helpers/writeWebResponse.js.map +1 -0
  45. package/build/src/index.d.ts +9 -0
  46. package/build/src/index.js +10 -0
  47. package/build/src/index.js.map +1 -0
  48. package/build/src/parseLivequeryRequest.d.ts +10 -0
  49. package/build/src/parseLivequeryRequest.js +17 -0
  50. package/build/src/parseLivequeryRequest.js.map +1 -0
  51. package/build/tsconfig.tsbuildinfo +1 -0
  52. package/package.json +40 -103
  53. package/dist/LivequeryCollection.d.ts +0 -92
  54. package/dist/LivequeryCollection.d.ts.map +0 -1
  55. package/dist/LivequeryCollection.js +0 -231
  56. package/dist/LivequeryCollection.js.map +0 -1
  57. package/dist/LivequeryCore.d.ts +0 -67
  58. package/dist/LivequeryCore.d.ts.map +0 -1
  59. package/dist/LivequeryCore.js +0 -343
  60. package/dist/LivequeryCore.js.map +0 -1
  61. package/dist/LivequeryDocument.d.ts +0 -23
  62. package/dist/LivequeryDocument.d.ts.map +0 -1
  63. package/dist/LivequeryDocument.js +0 -22
  64. package/dist/LivequeryDocument.js.map +0 -1
  65. package/dist/LivequeryMemoryStorage.d.ts +0 -14
  66. package/dist/LivequeryMemoryStorage.d.ts.map +0 -1
  67. package/dist/LivequeryMemoryStorage.js +0 -89
  68. package/dist/LivequeryMemoryStorage.js.map +0 -1
  69. package/dist/LivequeryStorge.d.ts +0 -12
  70. package/dist/LivequeryStorge.d.ts.map +0 -1
  71. package/dist/LivequeryStorge.js +0 -2
  72. package/dist/LivequeryStorge.js.map +0 -1
  73. package/dist/LivequeryTransporter.d.ts +0 -22
  74. package/dist/LivequeryTransporter.d.ts.map +0 -1
  75. package/dist/LivequeryTransporter.js +0 -2
  76. package/dist/LivequeryTransporter.js.map +0 -1
  77. package/dist/helpers/filterDocs.d.ts +0 -5
  78. package/dist/helpers/filterDocs.d.ts.map +0 -1
  79. package/dist/helpers/filterDocs.js +0 -80
  80. package/dist/helpers/filterDocs.js.map +0 -1
  81. package/dist/helpers/tryCatch.d.ts +0 -2
  82. package/dist/helpers/tryCatch.d.ts.map +0 -1
  83. package/dist/helpers/tryCatch.js +0 -10
  84. package/dist/helpers/tryCatch.js.map +0 -1
  85. package/dist/helpers/whenCompleted.d.ts +0 -3
  86. package/dist/helpers/whenCompleted.d.ts.map +0 -1
  87. package/dist/helpers/whenCompleted.js +0 -5
  88. package/dist/helpers/whenCompleted.js.map +0 -1
  89. package/dist/index.d.ts +0 -9
  90. package/dist/index.d.ts.map +0 -1
  91. package/dist/index.js +0 -9
  92. package/dist/index.js.map +0 -1
  93. package/dist/types.d.ts +0 -70
  94. package/dist/types.d.ts.map +0 -1
  95. package/dist/types.js +0 -2
  96. package/dist/types.js.map +0 -1
@@ -0,0 +1,17 @@
1
+ import { PathHelper } from './helpers/PathHelper.js';
2
+ export function parseLivequeryHttpRequest(ctx) {
3
+ const { ref, is_collection, collection_ref, doc_id } = PathHelper.parseHttpRequestPath(ctx.pathname);
4
+ const { collection_ref: schema_collection_ref } = PathHelper.parseHttpRequestPath(ctx.routePath);
5
+ return {
6
+ ref,
7
+ is_collection,
8
+ collection_ref,
9
+ schema_collection_ref,
10
+ doc_id: doc_id ?? undefined,
11
+ keys: ctx.params,
12
+ options: ctx.query,
13
+ body: ctx.body,
14
+ method: ctx.method.toLowerCase()
15
+ };
16
+ }
17
+ //# sourceMappingURL=parseLivequeryRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseLivequeryRequest.js","sourceRoot":"","sources":["../../src/parseLivequeryRequest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAWpD,MAAM,UAAU,yBAAyB,CAAC,GAAuB;IAC7D,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACpG,MAAM,EAAE,cAAc,EAAE,qBAAqB,EAAE,GAAG,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAEhG,OAAO;QACH,GAAG;QACH,aAAa;QACb,cAAc;QACd,qBAAqB;QACrB,MAAM,EAAE,MAAM,IAAI,SAAS;QAC3B,IAAI,EAAE,GAAG,CAAC,MAAM;QAChB,OAAO,EAAE,GAAG,CAAC,KAAK;QAClB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE;KACnC,CAAA;AACL,CAAC"}
@@ -0,0 +1 @@
1
+ {"root":["../src/apigatewayhandler.ts","../src/apiservicelinker.ts","../src/livequerycontext.ts","../src/livequerydatasource.ts","../src/livequeryrequestparser.ts","../src/udpdiscovery.ts","../src/websocketgateway.ts","../src/const.ts","../src/index.ts","../src/helpers/hideprivatefields.ts","../src/helpers/noderequesttowebrequest.ts","../src/helpers/writewebresponse.ts"],"version":"5.9.3"}
package/package.json CHANGED
@@ -1,106 +1,43 @@
1
1
  {
2
- "name": "@livequery/core",
3
- "version": "2.0.104",
4
- "type": "module",
5
- "main": "./dist/index.js",
6
- "module": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "types": "./dist/index.d.ts",
11
- "import": "./dist/index.js",
12
- "default": "./dist/index.js"
13
- },
14
- "./LivequeryCollection": {
15
- "types": "./dist/LivequeryCollection.d.ts",
16
- "import": "./dist/LivequeryCollection.js",
17
- "default": "./dist/LivequeryCollection.js"
18
- },
19
- "./LivequeryCore": {
20
- "types": "./dist/LivequeryCore.d.ts",
21
- "import": "./dist/LivequeryCore.js",
22
- "default": "./dist/LivequeryCore.js"
23
- },
24
- "./LivequeryDocument": {
25
- "types": "./dist/LivequeryDocument.d.ts",
26
- "import": "./dist/LivequeryDocument.js",
27
- "default": "./dist/LivequeryDocument.js"
28
- },
29
- "./LivequeryMemoryStorage": {
30
- "types": "./dist/LivequeryMemoryStorage.d.ts",
31
- "import": "./dist/LivequeryMemoryStorage.js",
32
- "default": "./dist/LivequeryMemoryStorage.js"
33
- },
34
- "./LivequeryStorge": {
35
- "types": "./dist/LivequeryStorge.d.ts",
36
- "import": "./dist/LivequeryStorge.js",
37
- "default": "./dist/LivequeryStorge.js"
38
- },
39
- "./LivequeryTransporter": {
40
- "types": "./dist/LivequeryTransporter.d.ts",
41
- "import": "./dist/LivequeryTransporter.js",
42
- "default": "./dist/LivequeryTransporter.js"
43
- },
44
- "./types": {
45
- "types": "./dist/types.d.ts",
46
- "import": "./dist/types.js",
47
- "default": "./dist/types.js"
48
- },
49
- "./helpers/filterDocs": {
50
- "types": "./dist/helpers/filterDocs.d.ts",
51
- "import": "./dist/helpers/filterDocs.js",
52
- "default": "./dist/helpers/filterDocs.js"
53
- },
54
- "./package.json": "./package.json"
55
- },
56
- "typesVersions": {
57
- "*": {
58
- "LivequeryCollection": [
59
- "./dist/LivequeryCollection.d.ts"
60
- ],
61
- "LivequeryCore": [
62
- "./dist/LivequeryCore.d.ts"
63
- ],
64
- "LivequeryDocument": [
65
- "./dist/LivequeryDocument.d.ts"
66
- ],
67
- "LivequeryMemoryStorage": [
68
- "./dist/LivequeryMemoryStorage.d.ts"
69
- ],
70
- "LivequeryStorge": [
71
- "./dist/LivequeryStorge.d.ts"
72
- ],
73
- "LivequeryTransporter": [
74
- "./dist/LivequeryTransporter.d.ts"
75
- ],
76
- "types": [
77
- "./dist/types.d.ts"
78
- ],
79
- "helpers/filterDocs": [
80
- "./dist/helpers/filterDocs.d.ts"
81
- ]
2
+ "name": "@livequery/core",
3
+ "author": "Duong Van Ba",
4
+ "license": "MIT",
5
+ "repository": {
6
+ "url": "git@github.com:livequery/core.git"
7
+ },
8
+ "version": "2.0.106",
9
+ "description": "Framework-agnostic core utilities for @livequery ecosystem",
10
+ "main": "./build/src/index.js",
11
+ "types": "./build/src/index.d.ts",
12
+ "files": [
13
+ "build/**/*",
14
+ "LIVEQUERY_SPEC.md"
15
+ ],
16
+ "scripts": {
17
+ "test": "bun test tests/",
18
+ "build": "tsc -b .",
19
+ "deploy": "yarn build; git add .; git commit -m \"Update\"; git push origin master; npm publish --access public"
20
+ },
21
+ "exports": {
22
+ ".": {
23
+ "import": {
24
+ "types": "./build/src/index.d.ts",
25
+ "default": "./build/src/index.js"
26
+ }
27
+ }
28
+ },
29
+ "type": "module",
30
+ "devDependencies": {
31
+ "@livequery/types": "2.0.7",
32
+ "@types/bun": "latest",
33
+ "@types/node": "x",
34
+ "@types/ws": "^8",
35
+ "hono": "^4.12.21",
36
+ "typescript": "^5.1.6"
37
+ },
38
+ "dependencies": {
39
+ "rxjs": "x",
40
+ "msgpackr": "^1.11.9",
41
+ "ws": "^8.18.0"
82
42
  }
83
- },
84
- "files": [
85
- "dist"
86
- ],
87
- "sideEffects": false,
88
- "scripts": {
89
- "clean": "rm -rf dist",
90
- "build:js": "bunx tsc -p tsconfig.build.json --emitDeclarationOnly false --declaration false --declarationMap false",
91
- "build:types": "bunx tsc -p tsconfig.build.json --emitDeclarationOnly",
92
- "build": "bun run clean && bun run build:js && bun run build:types",
93
- "build:watch": "bunx tsc -p tsconfig.build.json --watch --preserveWatchOutput",
94
- "prepublishOnly": "bun run build"
95
- },
96
- "devDependencies": {
97
- "@types/bun": "latest",
98
- "@types/chrome": "^0.1.38",
99
- "typescript": "^5"
100
- },
101
- "dependencies": {
102
- "rxjs": "^7.8.2",
103
- "uuidv7": "^1.2.1"
104
- },
105
- "private": false
106
43
  }
@@ -1,92 +0,0 @@
1
- import { BehaviorSubject, Observable, Subscription } from "rxjs";
2
- import { LivequeryCore, type CollectionMetadata, type LivequeryLoadingState } from "./LivequeryCore.js";
3
- import type { Doc, DocState, LivequeryFilters, LivequeryPaging } from "./types.js";
4
- import { LivequeryDocument } from "./LivequeryDocument.js";
5
- export type LivequeryCollectionOptions<T extends Doc> = {
6
- core: LivequeryCore;
7
- filters: Partial<LivequeryFilters<T>>;
8
- lazy: boolean;
9
- debounce: number;
10
- mode: CollectionMetadata['mode'];
11
- };
12
- export declare class LivequeryCollection<T extends Doc> {
13
- #private;
14
- private core;
15
- private options;
16
- readonly id: string;
17
- ref: string | undefined;
18
- collection_ref: string | undefined;
19
- readonly items: BehaviorSubject<LivequeryDocument<DocState<T>>[]>;
20
- readonly summary: BehaviorSubject<Record<string, any>>;
21
- readonly metadata: BehaviorSubject<Record<string, any>>;
22
- readonly loading: BehaviorSubject<LivequeryLoadingState | null>;
23
- readonly filters: BehaviorSubject<Partial<LivequeryFilters<T>>>;
24
- readonly paging: BehaviorSubject<LivequeryPaging>;
25
- readonly error: BehaviorSubject<{
26
- code: string;
27
- message: string;
28
- } | null>;
29
- constructor(core: LivequeryCore, options?: Partial<LivequeryCollectionOptions<T>>);
30
- initialize(ref: string): Subscription | undefined;
31
- query(filters: Partial<LivequeryFilters<T>>): Promise<void>;
32
- debounceQuery(filters: Partial<LivequeryFilters<T>>): Promise<void>;
33
- loadMore(): Promise<void>;
34
- loadPrev(): Promise<void>;
35
- loadAround(cursor: string): Promise<void>;
36
- add(payload: Partial<T>): Promise<{
37
- [key: string]: T;
38
- }>;
39
- update(id: string, payload: Partial<T>): Promise<{
40
- [key: string]: {
41
- id: string;
42
- } & Partial<T>;
43
- } | undefined>;
44
- delete(id: string): Promise<{
45
- [key: string]: {
46
- id: string;
47
- };
48
- } | undefined>;
49
- trigger<T>(action: string, payload?: Record<string, any>): Observable<{
50
- data: T;
51
- error?: Error;
52
- }>;
53
- resetError(): void;
54
- watch(check: (a: T, b: T) => boolean): Observable<[T & {
55
- _deleting?: boolean;
56
- _deleting_error?: import("./types.js").DocError;
57
- _updating?: boolean;
58
- _updating_error?: import("./types.js").DocError;
59
- _adding?: boolean;
60
- _adding_error?: import("./types.js").DocError;
61
- _remotes?: Record<string, string | number>;
62
- _prev?: Partial<T> | undefined;
63
- } & {
64
- _deleting?: boolean;
65
- _deleting_error?: import("./types.js").DocError;
66
- _updating?: boolean;
67
- _updating_error?: import("./types.js").DocError;
68
- _adding?: boolean;
69
- _adding_error?: import("./types.js").DocError;
70
- _remotes?: Record<string, string | number>;
71
- _prev?: Partial<DocState<T>> | undefined;
72
- }, T & {
73
- _deleting?: boolean;
74
- _deleting_error?: import("./types.js").DocError;
75
- _updating?: boolean;
76
- _updating_error?: import("./types.js").DocError;
77
- _adding?: boolean;
78
- _adding_error?: import("./types.js").DocError;
79
- _remotes?: Record<string, string | number>;
80
- _prev?: Partial<T> | undefined;
81
- } & {
82
- _deleting?: boolean;
83
- _deleting_error?: import("./types.js").DocError;
84
- _updating?: boolean;
85
- _updating_error?: import("./types.js").DocError;
86
- _adding?: boolean;
87
- _adding_error?: import("./types.js").DocError;
88
- _remotes?: Record<string, string | number>;
89
- _prev?: Partial<DocState<T>> | undefined;
90
- }]>;
91
- }
92
- //# sourceMappingURL=LivequeryCollection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LivequeryCollection.d.ts","sourceRoot":"","sources":["../src/LivequeryCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAgD,UAAU,EAAqB,YAAY,EAAkB,MAAM,MAAM,CAAA;AACjJ,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AACvG,OAAO,KAAK,EAAmB,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAI1D,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,GAAG,IAAI;IACpD,IAAI,EAAE,aAAa,CAAA;IACnB,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;IACrC,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAA;CACnC,CAAA;AAED,qBAAa,mBAAmB,CAAC,CAAC,SAAS,GAAG;;IAkB9B,OAAO,CAAC,IAAI;IAAiB,OAAO,CAAC,OAAO;IAhBxD,SAAgB,EAAE,SAAsC;IAKjD,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;IACvB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;IAEzC,SAAgB,KAAK,EAAE,eAAe,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACxE,SAAgB,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;IAC7D,SAAgB,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;IAC9D,SAAgB,OAAO,EAAE,eAAe,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAA;IACtE,SAAgB,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACtE,SAAgB,MAAM,EAAE,eAAe,CAAC,eAAe,CAAC,CAAA;IACxD,SAAgB,KAAK,EAAE,eAAe,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;gBAE5D,IAAI,EAAE,aAAa,EAAU,OAAO,GAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAM;IA0BrG,UAAU,CAAC,GAAG,EAAE,MAAM;IA0IhB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAI3C,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAInD,QAAQ;IAWR,QAAQ;IAUR,UAAU,CAAC,MAAM,EAAE,MAAM;IASzB,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;;;IAM7B,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;;;;;IAMtC,MAAM,CAAC,EAAE,EAAE,MAAM;;;;;IAKjB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAM9C,UAAU,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC;IAGhD,UAAU;IAIV,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYvC"}
@@ -1,231 +0,0 @@
1
- import { BehaviorSubject, debounceTime, EMPTY, filter, finalize, merge, Observable, pairwise, Subject, Subscription, switchMap, tap } from "rxjs";
2
- import { LivequeryCore } from "./LivequeryCore.js";
3
- import { LivequeryDocument } from "./LivequeryDocument.js";
4
- export class LivequeryCollection {
5
- core;
6
- options;
7
- id = (Math.random() * 1e18).toString(36);
8
- #keys = new Map();
9
- #indexes;
10
- #filters = new Subject();
11
- ref;
12
- collection_ref;
13
- items;
14
- summary;
15
- metadata;
16
- loading;
17
- filters;
18
- paging;
19
- error;
20
- constructor(core, options = {}) {
21
- this.core = core;
22
- this.options = options;
23
- this.#indexes = new Map();
24
- this.items = new BehaviorSubject([]);
25
- this.summary = new BehaviorSubject({});
26
- this.loading = new BehaviorSubject(null);
27
- this.filters = new BehaviorSubject(options?.filters || {});
28
- this.paging = new BehaviorSubject({
29
- total: 0,
30
- current: 0
31
- });
32
- this.error = new BehaviorSubject(null);
33
- if (options) {
34
- this.options = options;
35
- }
36
- }
37
- #commit(items) {
38
- this.items.next(items);
39
- this.#indexes = items.reduce((p, c, index) => {
40
- p.set(c.value.id, index);
41
- return p;
42
- }, new Map());
43
- }
44
- #subscription = null;
45
- initialize(ref) {
46
- if (!ref)
47
- return;
48
- if (typeof window == 'undefined')
49
- return;
50
- this.ref = ref;
51
- const refs = ref.split('/');
52
- this.collection_ref = refs.length % 2 == 0 ? refs.slice(0, -1).join('/') : ref;
53
- const timer = this.options.lazy !== true && setTimeout(() => !ref.includes('undefined') && this.query(this.filters.value || {}));
54
- this.#subscription?.unsubscribe();
55
- this.#subscription = merge(this.options.debounce ? merge(this.#filters.pipe(debounceTime(this.options.debounce), switchMap(filters => this.query(filters)))) : EMPTY, this.core.watch(this.ref, this.id, this.options.mode || 'server-first').pipe(finalize(() => {
56
- timer && clearTimeout(timer);
57
- }), tap(event => {
58
- event.loading !== undefined && event.loading !== this.loading.value && this.loading.next(event.loading);
59
- event.summary && this.summary.next(event.summary);
60
- event.metadata && this.metadata.next(event.metadata);
61
- event.paging && this.paging.next(event.paging);
62
- event.error && this.error.next(event.error);
63
- if (!event.changes || event.changes.length == 0)
64
- return;
65
- const chaos = event.changes && event.changes.some(change => {
66
- if (change.type == 'added' || change.type == 'removed')
67
- return true;
68
- if (change.data && change.data.id != change.id)
69
- return true;
70
- return Object.keys(change.data || {}).some(k => this.#keys.has(k));
71
- });
72
- const sorter = (a, b) => {
73
- for (const [key, order] of this.#keys) {
74
- const va = a.value[key];
75
- const vb = b.value[key];
76
- if (typeof va === 'number' && typeof vb === 'number') {
77
- if (va < vb)
78
- return -order;
79
- if (va > vb)
80
- return order;
81
- }
82
- if (typeof va === 'string' && typeof vb === 'string') {
83
- if (va < vb)
84
- return -order;
85
- if (va > vb)
86
- return order;
87
- }
88
- }
89
- return 0;
90
- };
91
- const events = event.changes.reduce((p, c) => {
92
- return {
93
- ...p,
94
- [c.type]: [
95
- ...(p[c.type] || []),
96
- c
97
- ]
98
- };
99
- }, {
100
- added: [],
101
- modified: [],
102
- removed: []
103
- });
104
- const updated_items = events.modified.reduce((p, { data, id }) => {
105
- const index = this.#indexes.get(id);
106
- const target = index != undefined && index >= 0 ? p[index] : null;
107
- target && target.next({ ...target.value, ...data });
108
- return p;
109
- }, this.items.value);
110
- const new_items = (events.added
111
- .filter(a => a.data)
112
- .reduce((p, c) => {
113
- if (!p.indexes.has(c.id)) {
114
- const doc = new LivequeryDocument(this, { id: c.id, ...c.data });
115
- p.list.push(doc);
116
- p.indexes.add(c.id);
117
- }
118
- return p;
119
- }, {
120
- list: [],
121
- indexes: new Set(this.#indexes.keys())
122
- }));
123
- const remove_indexes = (events.removed
124
- .map(r => this.#indexes.get(r.id))
125
- .filter(i => i != undefined)
126
- .sort((a, b) => b - a));
127
- const unsort_items = remove_indexes.reduce((p, index) => {
128
- return [
129
- ...p.slice(0, index),
130
- ...p.slice(index + 1)
131
- ];
132
- }, [
133
- ...updated_items,
134
- ...new_items.list
135
- ]);
136
- const items = chaos ? unsort_items.sort(sorter) : unsort_items;
137
- chaos && this.#commit(items);
138
- event.paging && this.paging.next(event.paging);
139
- }))).subscribe();
140
- return this.#subscription;
141
- }
142
- async #query(filters, flush) {
143
- if (!this.ref)
144
- return;
145
- this.error.next(null);
146
- flush && this.#commit([]);
147
- this.#keys = Object.entries(filters).reduce((p, [k, v]) => {
148
- if (k.endsWith(':sort')) {
149
- const field = k.split(':')[0];
150
- p.set(field, v === 'asc' ? 1 : -1);
151
- }
152
- return p;
153
- }, new Map());
154
- this.filters.next(filters);
155
- const cache = await this.core.query({
156
- ref: this.ref,
157
- filters,
158
- collection_id: this.id
159
- });
160
- if (cache && cache.documents && flush) {
161
- this.#commit(cache.documents.map(i => new LivequeryDocument(this, i)));
162
- }
163
- }
164
- async query(filters) {
165
- await this.#query(filters, true);
166
- }
167
- async debounceQuery(filters) {
168
- this.#filters.next(filters);
169
- }
170
- async loadMore() {
171
- const next = this.paging.value.next;
172
- if (!next)
173
- return;
174
- const filters = {
175
- ...this.filters.value,
176
- ':after': next.cursor
177
- };
178
- await this.#query(filters || {}, false);
179
- }
180
- async loadPrev() {
181
- const prev = this.paging.value.prev;
182
- if (!prev)
183
- return;
184
- const filters = {
185
- ...this.filters.value,
186
- ':before': prev.cursor
187
- };
188
- await this.#query(filters || {}, false);
189
- }
190
- async loadAround(cursor) {
191
- const filters = {
192
- ...this.filters.value,
193
- ':after': cursor,
194
- ':before': cursor
195
- };
196
- await this.#query(filters || {}, false);
197
- }
198
- async add(payload) {
199
- if (!this.collection_ref)
200
- throw new Error('LivequeryCollection is not initialized with a ref');
201
- return await this.core.add(this.collection_ref, payload);
202
- }
203
- update(id, payload) {
204
- if (!this.collection_ref)
205
- throw new Error('LivequeryCollection is not initialized with a ref');
206
- return this.core.update(this.collection_ref, id, payload);
207
- }
208
- delete(id) {
209
- if (!this.collection_ref)
210
- throw new Error('LivequeryCollection is not initialized with a ref');
211
- return this.core.delete(this.collection_ref, id);
212
- }
213
- trigger(action, payload) {
214
- if (!this.ref)
215
- throw new Error('LivequeryCollection is not initialized with a ref');
216
- return this.core.trigger({
217
- action,
218
- payload,
219
- ref: this.ref
220
- });
221
- }
222
- resetError() {
223
- this.error.next(null);
224
- }
225
- watch(check) {
226
- return this.items.pipe(switchMap(items => merge(...items.map(item => item.pipe(pairwise(), filter(([p, n]) => {
227
- return check(p, n);
228
- }))))));
229
- }
230
- }
231
- //# sourceMappingURL=LivequeryCollection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LivequeryCollection.js","sourceRoot":"","sources":["../src/LivequeryCollection.ts"],"names":[],"mappings":"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"}
@@ -1,67 +0,0 @@
1
- import { Observable, Subject } from "rxjs";
2
- import type { LivequeryStorge } from "./LivequeryStorge.js";
3
- import type { LivequeryQueryResult, LivequeryTransporter } from "./LivequeryTransporter.js";
4
- import type { DataChangeEvent, LivequeryAction, Doc, LivequeryQueryParams, LivequeryFilters, RealtimeChangeSource } from "./types.js";
5
- export type LivequeryCoreOptions = {
6
- transporters: Record<string, LivequeryTransporter>;
7
- storage: LivequeryStorge;
8
- };
9
- export type LivequeryLoadingState = null | 'next' | 'prev' | 'all';
10
- export type SyncRequest = DataChangeEvent & {
11
- ref: string;
12
- collection_ref: string;
13
- source: RealtimeChangeSource;
14
- };
15
- export type ConflictResolverFunction = <T extends Doc>(e: {
16
- from: Record<string, string | number | boolean>;
17
- old_document: T;
18
- change: DataChangeEvent;
19
- }) => {
20
- approved: boolean;
21
- document: T;
22
- };
23
- export type LivequeryCoreConfig = {
24
- storage: LivequeryStorge;
25
- transporters: Record<string, LivequeryTransporter>;
26
- };
27
- export type CollectionMetadata = {
28
- collection_id: string;
29
- document_id?: string;
30
- data$: Subject<Partial<LivequeryQueryResult> & {
31
- from: RealtimeChangeSource;
32
- }>;
33
- collection_ref: string;
34
- mode: 'server-first' | 'local-first' | 'cache-first';
35
- filters: Partial<LivequeryFilters<any>>;
36
- };
37
- export declare class LivequeryCore {
38
- #private;
39
- private readonly config;
40
- constructor(config: LivequeryCoreConfig);
41
- watch(ref: string, collection_id: string, mode: CollectionMetadata['mode']): Observable<Partial<LivequeryQueryResult> & {
42
- from: RealtimeChangeSource;
43
- }>;
44
- query<T extends Doc>(req: LivequeryQueryParams<T> & {
45
- collection_id: string;
46
- }): Promise<{
47
- documents: T[];
48
- paging: import("./types.js").LivequeryPaging;
49
- } | {
50
- documents: T[];
51
- } | undefined>;
52
- add<T extends Doc>(collection_ref: string, doc: Record<string, any>): Promise<{
53
- [key: string]: T;
54
- }>;
55
- update<T extends Doc>(collection_ref: string, id: string, data: Record<string, any>): Promise<{
56
- [key: string]: {
57
- id: string;
58
- } & Partial<T>;
59
- } | undefined>;
60
- delete<T extends Doc>(collection_ref: string, id: string): Promise<{
61
- [key: string]: {
62
- id: string;
63
- };
64
- } | undefined>;
65
- trigger<Response>(action: LivequeryAction): Observable<Response>;
66
- }
67
- //# sourceMappingURL=LivequeryCore.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LivequeryCore.d.ts","sourceRoot":"","sources":["../src/LivequeryCore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmH,UAAU,EAAiC,OAAO,EAAiD,MAAM,MAAM,CAAA;AACzO,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,EAAE,oBAAoB,EAAY,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAM/I,MAAM,MAAM,oBAAoB,GAAG;IAC/B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;IAClD,OAAO,EAAE,eAAe,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;AAKlE,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,oBAAoB,CAAA;CAC/B,CAAA;AAID,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE;IACtD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;IAC/C,YAAY,EAAE,CAAC,CAAA;IACf,MAAM,EAAE,eAAe,CAAA;CAC1B,KAAK;IACF,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,CAAC,CAAA;CACd,CAAA;AAGD,MAAM,MAAM,mBAAmB,GAAG;IAC9B,OAAO,EAAE,eAAe,CAAA;IACxB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;CACrD,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC7B,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG;QAC3C,IAAI,EAAE,oBAAoB,CAAA;KAC7B,CAAC,CAAA;IACF,cAAc,EAAE,MAAM,CAAA;IACtB,IAAI,EAAE,cAAc,GAAG,aAAa,GAAG,aAAa,CAAA;IACpD,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAA;CAC1C,CAAA;AAMD,qBAAa,aAAa;;IAOV,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,mBAAmB;IA+HxD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC;cAjJhE,oBAAoB;;IA4KxB,KAAK,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE;;;;;;IAoL7E,GAAG,CAAC,CAAC,SAAS,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;IAkBnE,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;gBAyB5C,MAAM;;;IAG7C,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;;gBAsBjB,MAAM;;;IAGnD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe;CAK5C"}