rhine-var 0.8.7 → 0.8.9

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 (31) hide show
  1. package/dist/core/event/callback.d.ts +3 -3
  2. package/dist/core/event/callback.d.ts.map +1 -1
  3. package/dist/core/proxy/rhine-proxy.d.ts +3 -3
  4. package/dist/core/proxy/rhine-proxy.d.ts.map +1 -1
  5. package/dist/core/utils/get-path-from-root.d.ts +4 -0
  6. package/dist/core/utils/get-path-from-root.d.ts.map +1 -0
  7. package/dist/core/utils/get-path-from-root.js +38 -0
  8. package/dist/core/utils/get-target-by-path-from-root.d.ts +3 -0
  9. package/dist/core/utils/get-target-by-path-from-root.d.ts.map +1 -0
  10. package/dist/core/utils/get-target-by-path-from-root.js +13 -0
  11. package/dist/core/utils/native.utils.d.ts +3 -0
  12. package/dist/core/utils/native.utils.d.ts.map +1 -0
  13. package/dist/core/utils/native.utils.js +15 -0
  14. package/dist/core/var/rhine-var-base.class.d.ts.map +1 -1
  15. package/dist/core/var/rhine-var-base.class.js +25 -2
  16. package/dist/core/var/rhine-var.type.d.ts +0 -1
  17. package/dist/core/var/rhine-var.type.d.ts.map +1 -1
  18. package/dist/index.d.ts +2 -2
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/react/hooks/use-rhine.hook.d.ts +2 -2
  21. package/dist/react/hooks/use-rhine.hook.d.ts.map +1 -1
  22. package/dist/react/hooks/use-rhine.hook.js +20 -5
  23. package/dist/react/hooks/use-synced.hook.d.ts +2 -2
  24. package/dist/react/hooks/use-synced.hook.d.ts.map +1 -1
  25. package/dist/utils/get-path-from-root.d.ts +4 -0
  26. package/dist/utils/get-path-from-root.d.ts.map +1 -0
  27. package/dist/utils/get-path-from-root.js +38 -0
  28. package/dist/utils/get-target-by-path-from-root.d.ts +3 -0
  29. package/dist/utils/get-target-by-path-from-root.d.ts.map +1 -0
  30. package/dist/utils/get-target-by-path-from-root.js +13 -0
  31. package/package.json +1 -1
@@ -1,8 +1,8 @@
1
1
  import { ChangeType } from "./change-type.enum";
2
2
  import { Transaction, YArrayEvent, YMapEvent, YTextEvent } from "yjs";
3
3
  import { YPath } from "../native/native.type";
4
- import { ProxiedRhineVar } from "../var/rhine-var.type";
5
- export type Callback<T> = (key: keyof T, value: T[keyof T] extends object ? T[keyof T] | ProxiedRhineVar<T[keyof T]> : T[keyof T], oldValue: T[keyof T], type: ChangeType, nativeEvent: YMapEvent<any> | YArrayEvent<any> | YTextEvent, nativeTransaction: Transaction) => void;
6
- export type DeepCallback<T> = (path: YPath, value: any | ProxiedRhineVar<any>, oldValue: any, type: ChangeType, nativeEvent: YMapEvent<any> | YArrayEvent<any> | YTextEvent, nativeTransaction: Transaction) => void;
4
+ import { StoredRhineVar } from "../var/rhine-var.type";
5
+ export type Callback<T> = (key: keyof T, value: T[keyof T] extends object ? T[keyof T] | StoredRhineVar<T[keyof T]> : T[keyof T], oldValue: T[keyof T], type: ChangeType, nativeEvent: YMapEvent<any> | YArrayEvent<any> | YTextEvent, nativeTransaction: Transaction) => void;
6
+ export type DeepCallback<T> = (path: YPath, value: any | StoredRhineVar<any>, oldValue: any, type: ChangeType, nativeEvent: YMapEvent<any> | YArrayEvent<any> | YTextEvent, nativeTransaction: Transaction) => void;
7
7
  export type SyncedCallback = (synced: boolean) => void;
8
8
  //# sourceMappingURL=callback.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../../src/core/event/callback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,2BAAsC;AACzD,OAAO,EAAgB,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,KAAK,CAAC;AACnF,OAAO,EAAC,KAAK,EAAC,8BAAkC;AAChD,OAAO,EAAC,eAAe,EAAC,8BAAkC;AAG1D,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CACxB,GAAG,EAAE,MAAM,CAAC,EACZ,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EACxF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EACpB,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,UAAU,EAC3D,iBAAiB,EAAE,WAAW,KAC3B,IAAI,CAAA;AAET,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAC5B,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,EACjC,QAAQ,EAAE,GAAG,EACb,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,UAAU,EAC3D,iBAAiB,EAAE,WAAW,KAC3B,IAAI,CAAA;AAET,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA"}
1
+ {"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../../src/core/event/callback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,2BAAsC;AACzD,OAAO,EAAgB,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,KAAK,CAAC;AACnF,OAAO,EAAC,KAAK,EAAC,8BAAkC;AAChD,OAAO,EAAC,cAAc,EAAC,8BAAkC;AAGzD,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CACxB,GAAG,EAAE,MAAM,CAAC,EACZ,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EACvF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EACpB,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,UAAU,EAC3D,iBAAiB,EAAE,WAAW,KAC3B,IAAI,CAAA;AAET,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAC5B,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,EAChC,QAAQ,EAAE,GAAG,EACb,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,UAAU,EAC3D,iBAAiB,EAAE,WAAW,KAC3B,IAAI,CAAA;AAET,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA"}
@@ -1,8 +1,8 @@
1
1
  import Connector from "../connector/connector.abstract";
2
2
  import RhineVarBase from "../var/rhine-var-base.class";
3
- import { ProxiedRhineVar } from "../var/rhine-var.type";
3
+ import { StoredRhineVar } from "../var/rhine-var.type";
4
4
  import { Native } from "../native/native.type";
5
5
  import ProxyOptions from "./proxy-options.interface";
6
- export declare function rhineProxy<T extends object>(defaultValue: T | Native, connector?: Connector | string | number, options?: ProxyOptions): ProxiedRhineVar<T>;
7
- export declare function rhineProxyGeneral<T extends object>(data: T | Native, parent?: RhineVarBase | null): ProxiedRhineVar<T>;
6
+ export declare function rhineProxy<T extends object>(defaultValue: T | Native, connector?: Connector | string | number, options?: ProxyOptions): StoredRhineVar<T>;
7
+ export declare function rhineProxyGeneral<T extends object>(data: T | Native, parent?: RhineVarBase | null): StoredRhineVar<T>;
8
8
  //# sourceMappingURL=rhine-proxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rhine-proxy.d.ts","sourceRoot":"","sources":["../../../src/core/proxy/rhine-proxy.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,wCAA4C;AAC5D,OAAO,YAA+C,oCAAwC;AAE9F,OAAO,EAAC,eAAe,EAAC,8BAAkC;AAC1D,OAAO,EAAC,MAAM,EAAC,8BAAkC;AAajD,OAAO,YAAY,kCAA6C;AAGhE,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACzC,YAAY,EAAE,CAAC,GAAG,MAAM,EACxB,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,EACvC,OAAO,GAAE,YAAiB,GACzB,eAAe,CAAC,CAAC,CAAC,CAmCpB;AAGD,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAChD,IAAI,EAAE,CAAC,GAAG,MAAM,EAChB,MAAM,GAAE,YAAY,GAAG,IAAW,GACjC,eAAe,CAAC,CAAC,CAAC,CA6GpB"}
1
+ {"version":3,"file":"rhine-proxy.d.ts","sourceRoot":"","sources":["../../../src/core/proxy/rhine-proxy.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,wCAA4C;AAC5D,OAAO,YAA+C,oCAAwC;AAE9F,OAAO,EAAC,cAAc,EAAc,8BAAkC;AACtE,OAAO,EAAC,MAAM,EAAC,8BAAkC;AAajD,OAAO,YAAY,kCAA6C;AAGhE,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACzC,YAAY,EAAE,CAAC,GAAG,MAAM,EACxB,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,EACvC,OAAO,GAAE,YAAiB,GACzB,cAAc,CAAC,CAAC,CAAC,CAmCnB;AAGD,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAChD,IAAI,EAAE,CAAC,GAAG,MAAM,EAChB,MAAM,GAAE,YAAY,GAAG,IAAW,GACjC,cAAc,CAAC,CAAC,CAAC,CA6GnB"}
@@ -0,0 +1,4 @@
1
+ import { StoredRhineVar } from "../var/rhine-var.type";
2
+ import { YPath } from "../native/native.type";
3
+ export declare function getPathFromRoot(target: StoredRhineVar): YPath;
4
+ //# sourceMappingURL=get-path-from-root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-path-from-root.d.ts","sourceRoot":"","sources":["../../../src/core/utils/get-path-from-root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAC,8BAAkC;AACtE,OAAO,EAAC,KAAK,EAAC,8BAAkC;AAIhD,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,KAAK,CA8B7D"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPathFromRoot = getPathFromRoot;
4
+ const index_1 = require("../../index");
5
+ const logger_1 = require("../../utils/logger");
6
+ function getPathFromRoot(target) {
7
+ var _a, _b;
8
+ const path = [];
9
+ let current = target;
10
+ let native = current.native;
11
+ let parent = (_a = current.parent) === null || _a === void 0 ? void 0 : _a.native;
12
+ while (parent) {
13
+ let flag = false;
14
+ if (parent instanceof index_1.YMap) {
15
+ parent.forEach((value, key) => {
16
+ if (value === native) {
17
+ path.unshift(key);
18
+ flag = true;
19
+ }
20
+ });
21
+ }
22
+ else if (parent instanceof index_1.YArray) {
23
+ parent.forEach((value, key) => {
24
+ if (value === native) {
25
+ path.unshift(key);
26
+ flag = true;
27
+ }
28
+ });
29
+ }
30
+ if (!flag) {
31
+ (0, logger_1.error)('Failed to get path from root');
32
+ }
33
+ current = current.parent;
34
+ native = current.native;
35
+ parent = (_b = current.parent) === null || _b === void 0 ? void 0 : _b.native;
36
+ }
37
+ return path;
38
+ }
@@ -0,0 +1,3 @@
1
+ import { YPath } from "../native/native.type";
2
+ export declare function getTargetByPathFromRoot(root: any, path: YPath): any;
3
+ //# sourceMappingURL=get-target-by-path-from-root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-target-by-path-from-root.d.ts","sourceRoot":"","sources":["../../../src/core/utils/get-target-by-path-from-root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,8BAAkC;AAEhD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,GAAG,EACT,IAAI,EAAE,KAAK,OAUZ"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTargetByPathFromRoot = getTargetByPathFromRoot;
4
+ function getTargetByPathFromRoot(root, path) {
5
+ let target = root;
6
+ for (const key of path) {
7
+ target = target[key];
8
+ if (target === undefined) {
9
+ return undefined;
10
+ }
11
+ }
12
+ return target;
13
+ }
@@ -0,0 +1,3 @@
1
+ import { Native, YKey } from "../native/native.type";
2
+ export declare function hasKey(native: Native, key: YKey): boolean;
3
+ //# sourceMappingURL=native.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.utils.d.ts","sourceRoot":"","sources":["../../../src/core/utils/native.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,8BAAkC;AAGvD,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAQzD"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasKey = hasKey;
4
+ const index_1 = require("../../index");
5
+ function hasKey(native, key) {
6
+ if (native instanceof index_1.YMap) {
7
+ return native.has(key + '');
8
+ }
9
+ else if (native instanceof index_1.YArray) {
10
+ return native.length > Number(key);
11
+ }
12
+ else {
13
+ return false;
14
+ }
15
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"rhine-var-base.class.d.ts","sourceRoot":"","sources":["../../../src/core/var/rhine-var-base.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,KAAK,CAAC;AACjF,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAKhD,OAAO,EAAC,MAAM,EAAE,KAAK,EAAC,8BAAkC;AACxD,OAAO,EAAC,UAAU,EAAC,kCAAsC;AACzD,OAAO,EAAC,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAC,0BAA8B;AAC7E,OAAO,SAAS,wCAA4C;AAE5D,OAAO,YAAY,yCAA6C;AAGhE,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,GAAG;IAGtD,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,YAAY,GAAG,IAAI;IAC3B,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;gBAFvB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,YAAY,GAAG,IAAW,EAClC,MAAM,GAAE,YAAY,CAAC,CAAC,CAAe;IAK9C,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAa;IAE7B,MAAM,IAAI,OAAO;IAIjB,IAAI,IAAI,YAAY;IAQpB,UAAU,IAAI,YAAY;IAI1B,YAAY,IAAI,SAAS,GAAG,IAAI;IAIhC,cAAc,IAAI,WAAW,GAAG,IAAI;IAQpC,YAAY,IAAI,SAAS,GAAG,IAAI;IAQhC,WAAW,IAAI,MAAM;IAQrB,UAAU,CAAC,MAAM,EAAE,MAAM;IA2CzB,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI;IAO1B,UAAU;IAOhB,IAAI,IAAI,CAAC;IAIT,UAAU,IAAI,CAAC;IAwCf,UAAU,CAAC,MAAM,SAAI,GAAG,MAAM;IAI9B,OAAO,CAAC,iBAAiB,CAAuB;IAChD,eAAe,CAAC,QAAQ,EAAE,cAAc;IAIxC,iBAAiB,CAAC,QAAQ,EAAE,cAAc;IAG1C,oBAAoB;IAIpB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,WAAW,CAAoB;IACvC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAI5C,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAGjC,cAAc;IAId,OAAO,CAAC,cAAc,CAAyC;IAC/D,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAO7D,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAKpC,iBAAiB;IAIjB,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,eAAe,CAAwB;IAC/C,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAIpD,eAAe,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IAGzC,kBAAkB;IAIlB,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,iBAAiB,EAAE,WAAW;IAc9J,OAAO,CAAC,QAAQ,CAA0F;IAC1G,OAAO,CAAC,cAAc,CAA0C;IAEhE,OAAO;IA0IP,SAAS;CAQV;AAGD,eAAO,MAAM,+BAA+B,sBAqD1C,CAAA"}
1
+ {"version":3,"file":"rhine-var-base.class.d.ts","sourceRoot":"","sources":["../../../src/core/var/rhine-var-base.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,KAAK,CAAC;AACjF,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAKhD,OAAO,EAAC,MAAM,EAAQ,KAAK,EAAC,8BAAkC;AAC9D,OAAO,EAAC,UAAU,EAAC,kCAAsC;AACzD,OAAO,EAAC,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAC,0BAA8B;AAC7E,OAAO,SAAS,wCAA4C;AAE5D,OAAO,YAAY,yCAA6C;AAKhE,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,GAAG;IAGtD,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,YAAY,GAAG,IAAI;IAC3B,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;gBAFvB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,YAAY,GAAG,IAAW,EAClC,MAAM,GAAE,YAAY,CAAC,CAAC,CAAe;IAK9C,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAa;IAE7B,MAAM,IAAI,OAAO;IAIjB,IAAI,IAAI,YAAY;IAQpB,UAAU,IAAI,YAAY;IAI1B,YAAY,IAAI,SAAS,GAAG,IAAI;IAIhC,cAAc,IAAI,WAAW,GAAG,IAAI;IAQpC,YAAY,IAAI,SAAS,GAAG,IAAI;IAQhC,WAAW,IAAI,MAAM;IAQrB,UAAU,CAAC,MAAM,EAAE,MAAM;IA6DzB,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI;IAO1B,UAAU;IAOhB,IAAI,IAAI,CAAC;IAIT,UAAU,IAAI,CAAC;IAwCf,UAAU,CAAC,MAAM,SAAI,GAAG,MAAM;IAI9B,OAAO,CAAC,iBAAiB,CAAuB;IAChD,eAAe,CAAC,QAAQ,EAAE,cAAc;IAIxC,iBAAiB,CAAC,QAAQ,EAAE,cAAc;IAG1C,oBAAoB;IAIpB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,WAAW,CAAoB;IACvC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAI5C,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAGjC,cAAc;IAId,OAAO,CAAC,cAAc,CAAyC;IAC/D,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAO7D,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAKpC,iBAAiB;IAIjB,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,eAAe,CAAwB;IAC/C,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAIpD,eAAe,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IAGzC,kBAAkB;IAIlB,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,iBAAiB,EAAE,WAAW;IAc9J,OAAO,CAAC,QAAQ,CAA0F;IAC1G,OAAO,CAAC,cAAc,CAA0C;IAEhE,OAAO;IA0IP,SAAS;CAQV;AAGD,eAAO,MAAM,+BAA+B,sBAqD1C,CAAA"}
@@ -1,4 +1,7 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.RHINE_VAR_PREDEFINED_PROPERTIES = void 0;
4
7
  const yjs_1 = require("yjs");
@@ -9,6 +12,8 @@ const logger_1 = require("../../utils/logger");
9
12
  const data_utils_1 = require("../utils/data.utils");
10
13
  const change_type_enum_1 = require("../event/change-type.enum");
11
14
  const native_utils_1 = require("../native/native.utils");
15
+ const native_utils_2 = require("../utils/native.utils");
16
+ const config_1 = __importDefault(require("../../config/config"));
12
17
  class RhineVarBase {
13
18
  constructor(native, parent = null, origin = this) {
14
19
  this.native = native;
@@ -68,10 +73,18 @@ class RhineVarBase {
68
73
  initialize(native) {
69
74
  var _a;
70
75
  // initialize function will call after every synced
71
- (0, logger_1.log)('Synced initialize:', this.json(), native.toJSON());
76
+ if (config_1.default.ENABLE_ERROR) {
77
+ (0, logger_1.log)('Synced initialize:', this.json(), native.toJSON());
78
+ }
79
+ const recursiveKeys = [];
72
80
  if (this.native instanceof index_1.YMap || this.native instanceof index_1.YArray) {
73
81
  this.native.forEach((value, key) => {
74
- Reflect.deleteProperty(this.origin, key);
82
+ if ((0, native_utils_2.hasKey)(native, key)) {
83
+ recursiveKeys.push(key);
84
+ }
85
+ else {
86
+ Reflect.deleteProperty(this.origin, key);
87
+ }
75
88
  });
76
89
  }
77
90
  this.unobserve();
@@ -99,6 +112,16 @@ class RhineVarBase {
99
112
  this.observe();
100
113
  if (this.native instanceof index_1.YMap || this.native instanceof index_1.YArray) {
101
114
  this.native.forEach((value, key) => {
115
+ if (recursiveKeys.includes(key)) {
116
+ const child = Reflect.get(this, key);
117
+ if (child instanceof RhineVarBase) {
118
+ child.initialize(value);
119
+ }
120
+ else {
121
+ Reflect.set(this.origin, key, value);
122
+ }
123
+ return;
124
+ }
102
125
  if ((0, native_utils_1.isNative)(value)) {
103
126
  Reflect.set(this.origin, key, (0, rhine_proxy_1.rhineProxyGeneral)(value, this));
104
127
  }
@@ -17,7 +17,6 @@ export type RecursiveArray<T> = RhineVarArray<T extends object ? RecursiveCrossR
17
17
  export type RecursiveMap<T> = RhineVarMap<T extends object ? RecursiveCrossRhineVar<T> : T, T>;
18
18
  export type RecursiveCrossRhineVar<T extends object> = T extends YXmlText | YText | YXmlFragment ? RhineVar<T> : T extends (infer U)[] | YArray<infer U> | RhineVarArray<infer U> ? RecursiveArray<U> : T extends YObject<any> | RhineVarObject<any> ? RecursiveObject<T> : T extends YMap<infer U> | RhineVarMap<infer U> ? RecursiveMap<U> : RecursiveObject<T>;
19
19
  export type StoredRhineVar<T extends object = any> = RecursiveCrossRhineVar<T>;
20
- export type ProxiedRhineVar<T extends object = any> = StoredRhineVar<T>;
21
20
  export type InputItem<T> = T extends object ? T | Native | StoredRhineVar<T> : T;
22
21
  export type OutputItem<T> = T extends object ? StoredRhineVar<T> : T;
23
22
  //# sourceMappingURL=rhine-var.type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rhine-var.type.d.ts","sourceRoot":"","sources":["../../../src/core/var/rhine-var.type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rhine-var.type.d.ts","sourceRoot":"","sources":["../../../src/core/var/rhine-var.type.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { rhineProxy, rhineProxyGeneral } from "./core/proxy/rhine-proxy";
2
- import { RhineVar, RecursiveCrossRhineVar, StoredRhineVar, ProxiedRhineVar, RhineVarAny } from "./core/var/rhine-var.type";
2
+ import { RhineVar, RecursiveCrossRhineVar, StoredRhineVar, RhineVarAny } from "./core/var/rhine-var.type";
3
3
  import Connector from "./core/connector/connector.abstract";
4
4
  import useRhine from "./react/hooks/use-rhine.hook";
5
5
  import useSynced from "./react/hooks/use-synced.hook";
@@ -17,5 +17,5 @@ import text from "./core/proxy/items/text";
17
17
  import map from "./core/proxy/items/map";
18
18
  import item from "./core/proxy/items/item";
19
19
  import { Doc as YDoc, Array as YArray, Map as YMap, Text as YText, XmlFragment as YXmlFragment, XmlElement as YXmlElement, XmlText as YXmlText } from "yjs";
20
- export { Connector, rhineProxy, rhineProxyGeneral, item, text, map, RhineVarBase, RhineVarAny, RhineVar, RhineVarMap, RhineVarArray, RhineVarText, RhineVarXmlText, RhineVarXmlElement, RhineVarXmlFragment, SupportManager, RecursiveCrossRhineVar, StoredRhineVar, ProxiedRhineVar, YPath, Native, enableRhineVarLog, enableRhineVarSyncHandshakeCheck, getRhineVarConfig, useRhine, useSynced, YDoc, YMap, YArray, YText, YXmlFragment, YXmlElement, YXmlText, };
20
+ export { Connector, rhineProxy, rhineProxyGeneral, item, text, map, RhineVarBase, RhineVarAny, RhineVar, RhineVarMap, RhineVarArray, RhineVarText, RhineVarXmlText, RhineVarXmlElement, RhineVarXmlFragment, SupportManager, RecursiveCrossRhineVar, StoredRhineVar, YPath, Native, enableRhineVarLog, enableRhineVarSyncHandshakeCheck, getRhineVarConfig, useRhine, useSynced, YDoc, YMap, YArray, YText, YXmlFragment, YXmlElement, YXmlText, };
21
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,iBAAiB,EAAC,iCAAiC;AACvE,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,kCAAkC;AAC3H,OAAO,SAAS,4CAA4C;AAC5D,OAAO,QAAQ,qCAAoC;AACnD,OAAO,SAAS,sCAAqC;AACrD,OAAO,EAAC,MAAM,EAAE,KAAK,EAAC,kCAAkC;AACxD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gCAAgC,EAAE,wBAAwB;AACzG,OAAO,YAAY,wCAAwC;AAC3D,OAAO,WAAW,6CAA6C;AAC/D,OAAO,aAAa,+CAA+C;AACnE,OAAO,YAAY,8CAA8C;AACjE,OAAO,eAAe,kDAAkD;AACxE,OAAO,kBAAkB,qDAAqD;AAC9E,OAAO,mBAAmB,sDAAsD;AAChF,OAAO,cAAc,2CAA2C;AAChE,OAAO,IAAI,gCAAgC;AAC3C,OAAO,GAAG,MAAM,wBAAwB,CAAC;AACzC,OAAO,IAAI,MAAM,yBAAyB,CAAC;AAC3C,OAAO,EACL,GAAG,IAAI,IAAI,EACX,KAAK,IAAI,MAAM,EACf,GAAG,IAAI,IAAI,EACX,IAAI,IAAI,KAAK,EACb,WAAW,IAAI,YAAY,EAC3B,UAAU,IAAI,WAAW,EACzB,OAAO,IAAI,QAAQ,EACpB,MAAM,KAAK,CAAC;AAEb,OAAO,EACL,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,WAAW,EACX,aAAa,EACb,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,KAAK,EACL,MAAM,EACN,iBAAiB,EACjB,gCAAgC,EAChC,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,KAAK,EACL,YAAY,EACZ,WAAW,EACX,QAAQ,GACT,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,iBAAiB,EAAC,iCAAiC;AACvE,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,cAAc,EAAE,WAAW,EAAE,kCAAkC;AAC1G,OAAO,SAAS,4CAA4C;AAC5D,OAAO,QAAQ,qCAAoC;AACnD,OAAO,SAAS,sCAAqC;AACrD,OAAO,EAAC,MAAM,EAAE,KAAK,EAAC,kCAAkC;AACxD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gCAAgC,EAAE,wBAAwB;AACzG,OAAO,YAAY,wCAAwC;AAC3D,OAAO,WAAW,6CAA6C;AAC/D,OAAO,aAAa,+CAA+C;AACnE,OAAO,YAAY,8CAA8C;AACjE,OAAO,eAAe,kDAAkD;AACxE,OAAO,kBAAkB,qDAAqD;AAC9E,OAAO,mBAAmB,sDAAsD;AAChF,OAAO,cAAc,2CAA2C;AAChE,OAAO,IAAI,gCAAgC;AAC3C,OAAO,GAAG,MAAM,wBAAwB,CAAC;AACzC,OAAO,IAAI,MAAM,yBAAyB,CAAC;AAC3C,OAAO,EACL,GAAG,IAAI,IAAI,EACX,KAAK,IAAI,MAAM,EACf,GAAG,IAAI,IAAI,EACX,IAAI,IAAI,KAAK,EACb,WAAW,IAAI,YAAY,EAC3B,UAAU,IAAI,WAAW,EACzB,OAAO,IAAI,QAAQ,EACpB,MAAM,KAAK,CAAC;AAEb,OAAO,EACL,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,WAAW,EACX,aAAa,EACb,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACtB,cAAc,EACd,KAAK,EACL,MAAM,EACN,iBAAiB,EACjB,gCAAgC,EAChC,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,KAAK,EACL,YAAY,EACZ,WAAW,EACX,QAAQ,GACT,CAAA"}
@@ -1,3 +1,3 @@
1
- import { ProxiedRhineVar } from "../../core/var/rhine-var.type";
2
- export default function useRhine<T extends object>(proxy: ProxiedRhineVar<T>): Readonly<T>;
1
+ import { StoredRhineVar } from "../../core/var/rhine-var.type";
2
+ export default function useRhine<T extends object>(proxy: StoredRhineVar<T>): Readonly<T>;
3
3
  //# sourceMappingURL=use-rhine.hook.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-rhine.hook.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/use-rhine.hook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAC,sCAAkC;AAE1D,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAgBzF"}
1
+ {"version":3,"file":"use-rhine.hook.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/use-rhine.hook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,cAAc,EAAC,sCAAkC;AAItE,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAgCxF"}
@@ -3,13 +3,28 @@
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.default = useRhine;
5
5
  const react_1 = require("react");
6
+ const get_path_from_root_1 = require("../../core/utils/get-path-from-root");
7
+ const get_target_by_path_from_root_1 = require("../../core/utils/get-target-by-path-from-root");
6
8
  function useRhine(proxy) {
7
- const createSnapshot = () => proxy.json();
8
- const [state, setState] = (0, react_1.useState)(createSnapshot);
9
+ const [state, setState] = (0, react_1.useState)(() => proxy.json());
9
10
  (0, react_1.useEffect)(() => {
10
- const updateState = () => setState(createSnapshot);
11
- const unsubscribeSynced = proxy.subscribeSynced(updateState);
12
- const unsubscribeDeep = proxy.subscribeDeep(updateState);
11
+ const root = proxy.root();
12
+ const path = (0, get_path_from_root_1.getPathFromRoot)(proxy);
13
+ let updateState = () => setState(() => proxy.json());
14
+ let unsubscribeDeep = proxy.subscribeDeep(updateState);
15
+ let unsubscribeSynced = root.subscribeSynced(() => {
16
+ updateState();
17
+ setTimeout(() => {
18
+ let newProxy = (0, get_target_by_path_from_root_1.getTargetByPathFromRoot)(root, path);
19
+ if (newProxy && newProxy !== proxy) {
20
+ console.log('useRhine: proxy changed');
21
+ unsubscribeDeep();
22
+ updateState = () => setState(() => newProxy.json());
23
+ unsubscribeDeep = proxy.subscribeDeep(updateState);
24
+ }
25
+ updateState();
26
+ }, 1);
27
+ });
13
28
  return () => {
14
29
  unsubscribeSynced();
15
30
  unsubscribeDeep();
@@ -1,4 +1,4 @@
1
1
  import Connector from "../../core/connector/connector.abstract";
2
- import { ProxiedRhineVar } from "../../core/var/rhine-var.type";
3
- export default function useSynced(target?: Connector | ProxiedRhineVar): boolean;
2
+ import { StoredRhineVar } from "../../core/var/rhine-var.type";
3
+ export default function useSynced(target?: Connector | StoredRhineVar): boolean;
4
4
  //# sourceMappingURL=use-synced.hook.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-synced.hook.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/use-synced.hook.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,gDAA4C;AAE5D,OAAO,EAAC,eAAe,EAAC,sCAAkC;AAG1D,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,eAAe,WAyBrE"}
1
+ {"version":3,"file":"use-synced.hook.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/use-synced.hook.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,gDAA4C;AAE5D,OAAO,EAAC,cAAc,EAAC,sCAAkC;AAGzD,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,cAAc,WAyBpE"}
@@ -0,0 +1,4 @@
1
+ import { StoredRhineVar } from "../core/var/rhine-var.type";
2
+ import { YPath } from "../core/native/native.type";
3
+ export declare function getPathFromRoot(target: StoredRhineVar): YPath;
4
+ //# sourceMappingURL=get-path-from-root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-path-from-root.d.ts","sourceRoot":"","sources":["../../src/utils/get-path-from-root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAC,mCAAkC;AACtE,OAAO,EAAC,KAAK,EAAC,mCAAkC;AAIhD,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,KAAK,CA8B7D"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPathFromRoot = getPathFromRoot;
4
+ const index_1 = require("../index");
5
+ const logger_1 = require("./logger");
6
+ function getPathFromRoot(target) {
7
+ var _a, _b;
8
+ const path = [];
9
+ let current = target;
10
+ let native = current.native;
11
+ let parent = (_a = current.parent) === null || _a === void 0 ? void 0 : _a.native;
12
+ while (parent) {
13
+ let flag = false;
14
+ if (parent instanceof index_1.YMap) {
15
+ parent.forEach((value, key) => {
16
+ if (value === native) {
17
+ path.unshift(key);
18
+ flag = true;
19
+ }
20
+ });
21
+ }
22
+ else if (parent instanceof index_1.YArray) {
23
+ parent.forEach((value, key) => {
24
+ if (value === native) {
25
+ path.unshift(key);
26
+ flag = true;
27
+ }
28
+ });
29
+ }
30
+ if (!flag) {
31
+ (0, logger_1.error)('Failed to get path from root');
32
+ }
33
+ current = current.parent;
34
+ native = current.native;
35
+ parent = (_b = current.parent) === null || _b === void 0 ? void 0 : _b.native;
36
+ }
37
+ return path;
38
+ }
@@ -0,0 +1,3 @@
1
+ import { YPath } from "../core/native/native.type";
2
+ export declare function getTargetByPathFromRoot(root: any, path: YPath): any;
3
+ //# sourceMappingURL=get-target-by-path-from-root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-target-by-path-from-root.d.ts","sourceRoot":"","sources":["../../src/utils/get-target-by-path-from-root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,mCAAkC;AAEhD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,GAAG,EACT,IAAI,EAAE,KAAK,OAUZ"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTargetByPathFromRoot = getTargetByPathFromRoot;
4
+ function getTargetByPathFromRoot(root, path) {
5
+ let target = root;
6
+ for (const key of path) {
7
+ target = target[key];
8
+ if (target === undefined) {
9
+ return undefined;
10
+ }
11
+ }
12
+ return target;
13
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rhine-var",
3
- "version": "0.8.7",
3
+ "version": "0.8.9",
4
4
  "description": "Variables that support multi-user collaboration and persistence, making collaboration and variable operations as simple as possible, with strict and well-defined type hints.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",