rhine-var 0.1.7 → 0.2.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.
Files changed (33) hide show
  1. package/dist/core/event/Callback.d.ts +1 -1
  2. package/dist/core/event/Callback.d.ts.map +1 -1
  3. package/dist/core/event/ChangeType.d.ts +2 -1
  4. package/dist/core/event/ChangeType.d.ts.map +1 -1
  5. package/dist/core/event/ChangeType.js +1 -0
  6. package/dist/core/native/NativeUtils.d.ts +3 -4
  7. package/dist/core/native/NativeUtils.d.ts.map +1 -1
  8. package/dist/core/native/NativeUtils.js +2 -2
  9. package/dist/core/proxy/DirectKey.d.ts +5 -0
  10. package/dist/core/proxy/DirectKey.d.ts.map +1 -0
  11. package/dist/core/proxy/DirectKey.js +30 -0
  12. package/dist/core/proxy/DirectPackage.d.ts +3 -5
  13. package/dist/core/proxy/DirectPackage.d.ts.map +1 -1
  14. package/dist/core/proxy/DirectPackage.js +8 -8
  15. package/dist/core/proxy/KeyWithDirectFlag.d.ts +8 -0
  16. package/dist/core/proxy/KeyWithDirectFlag.d.ts.map +1 -0
  17. package/dist/core/proxy/KeyWithDirectFlag.js +12 -0
  18. package/dist/core/proxy/ProxiedRhineVar.d.ts +2 -2
  19. package/dist/core/proxy/ProxiedRhineVar.d.ts.map +1 -1
  20. package/dist/core/proxy/Proxy.d.ts.map +1 -1
  21. package/dist/core/proxy/Proxy.js +29 -25
  22. package/dist/core/proxy/RhineVar.d.ts +7 -9
  23. package/dist/core/proxy/RhineVar.d.ts.map +1 -1
  24. package/dist/core/utils/ConvertProperty.d.ts +1 -1
  25. package/dist/core/utils/ConvertProperty.d.ts.map +1 -1
  26. package/dist/core/utils/ConvertProperty.js +7 -3
  27. package/dist/core/utils/DataUtils.d.ts +2 -1
  28. package/dist/core/utils/DataUtils.d.ts.map +1 -1
  29. package/dist/core/utils/DataUtils.js +1 -1
  30. package/dist/index.d.ts +1 -1
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +2 -2
  33. package/package.json +2 -3
@@ -1,4 +1,4 @@
1
1
  import { ChangeType } from "./ChangeType";
2
2
  import { Transaction, YArrayEvent, YMapEvent } from "yjs";
3
- export type Callback = (value: any, key: string, oldValue: any, type: ChangeType, nativeEvent: YMapEvent<any> | YArrayEvent<any>, nativeTransaction: Transaction) => void;
3
+ export type Callback<T> = (value: T[keyof T], key: keyof T, oldValue: T[keyof T], type: ChangeType, nativeEvent: YMapEvent<any> | YArrayEvent<any>, nativeTransaction: Transaction) => void;
4
4
  //# 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,qBAAgC;AACnD,OAAO,EAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAC,MAAM,KAAK,CAAC;AAExD,MAAM,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,iBAAiB,EAAE,WAAW,KAAK,IAAI,CAAA"}
1
+ {"version":3,"file":"Callback.d.ts","sourceRoot":"","sources":["../../../src/core/event/Callback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,qBAAgC;AACnD,OAAO,EAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAC,MAAM,KAAK,CAAC;AAExD,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CACxB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EACjB,GAAG,EAAE,MAAM,CAAC,EACZ,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EACpB,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,EAC9C,iBAAiB,EAAE,WAAW,KAC3B,IAAI,CAAA"}
@@ -1,6 +1,7 @@
1
1
  export declare enum ChangeType {
2
2
  Add = "add",
3
3
  Update = "update",
4
- Delete = "delete"
4
+ Delete = "delete",
5
+ Sync = "sync"
5
6
  }
6
7
  //# sourceMappingURL=ChangeType.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChangeType.d.ts","sourceRoot":"","sources":["../../../src/core/event/ChangeType.ts"],"names":[],"mappings":"AACA,oBAAY,UAAU;IACpB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB"}
1
+ {"version":3,"file":"ChangeType.d.ts","sourceRoot":"","sources":["../../../src/core/event/ChangeType.ts"],"names":[],"mappings":"AACA,oBAAY,UAAU;IACpB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,IAAI,SAAS;CACd"}
@@ -6,4 +6,5 @@ var ChangeType;
6
6
  ChangeType["Add"] = "add";
7
7
  ChangeType["Update"] = "update";
8
8
  ChangeType["Delete"] = "delete";
9
+ ChangeType["Sync"] = "sync";
9
10
  })(ChangeType || (exports.ChangeType = ChangeType = {}));
@@ -1,8 +1,7 @@
1
- import { Map as YMap, Array as YArray } from "yjs";
2
1
  import { Native } from "./Native";
3
- export declare function isYMapOrYArray(value: any): value is YMap<any> | YArray<any>;
2
+ export declare function isNative(value: any): boolean;
4
3
  export declare function nativeSet(target: Native, key: string | symbol, value: any): boolean;
5
4
  export declare function nativeDelete(target: Native, key: string | symbol): boolean;
6
- export declare function nativeGet(target: Native, key: string | symbol): any;
7
- export declare function jsonToNative(data: any): any;
5
+ export declare function nativeGet(target: Native, key: string | symbol): any | undefined;
6
+ export declare function jsonToNative(data: any): Native | any;
8
7
  //# sourceMappingURL=NativeUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NativeUtils.d.ts","sourceRoot":"","sources":["../../../src/core/native/NativeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,IAAI,IAAI,EAAE,KAAK,IAAI,MAAM,EAAC,MAAM,KAAK,CAAA;AAChD,OAAO,EAAC,MAAM,EAAC,iBAA6B;AAI5C,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,oCAExC;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,WAuBzE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,WAwBhE;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,OAgB7D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,OAgBrC"}
1
+ {"version":3,"file":"NativeUtils.d.ts","sourceRoot":"","sources":["../../../src/core/native/NativeUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,iBAA6B;AAI5C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAE5C;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAuBnF;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAwB1E;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,SAAS,CAgB/E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,GAAG,CAgBpD"}
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isYMapOrYArray = isYMapOrYArray;
3
+ exports.isNative = isNative;
4
4
  exports.nativeSet = nativeSet;
5
5
  exports.nativeDelete = nativeDelete;
6
6
  exports.nativeGet = nativeGet;
7
7
  exports.jsonToNative = jsonToNative;
8
8
  const yjs_1 = require("yjs");
9
9
  const DataUtils_1 = require("../utils/DataUtils");
10
- function isYMapOrYArray(value) {
10
+ function isNative(value) {
11
11
  return (value instanceof yjs_1.Map) || (value instanceof yjs_1.Array);
12
12
  }
13
13
  function nativeSet(target, key, value) {
@@ -0,0 +1,5 @@
1
+ export declare const DIRECT_KEY_PREVIOUS = "RHINE_VAR_DIRECT_PACKAGE_PREFIX_";
2
+ export declare function directKey(key: string | number): string;
3
+ export declare function isDirectKey(key: string | any): boolean;
4
+ export declare function originKey(key: string | symbol | number): string | symbol | number;
5
+ //# sourceMappingURL=DirectKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectKey.d.ts","sourceRoot":"","sources":["../../../src/core/proxy/DirectKey.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,qCAAqC,CAAA;AAErE,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,UAE7C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,WAE5C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAajF"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DIRECT_KEY_PREVIOUS = void 0;
4
+ exports.directKey = directKey;
5
+ exports.isDirectKey = isDirectKey;
6
+ exports.originKey = originKey;
7
+ exports.DIRECT_KEY_PREVIOUS = 'RHINE_VAR_DIRECT_PACKAGE_PREFIX_';
8
+ function directKey(key) {
9
+ return exports.DIRECT_KEY_PREVIOUS + key;
10
+ }
11
+ function isDirectKey(key) {
12
+ return typeof key === 'string' && key.startsWith(exports.DIRECT_KEY_PREVIOUS);
13
+ }
14
+ function originKey(key) {
15
+ if (typeof key === 'number')
16
+ key = String(key);
17
+ if (typeof key !== 'string')
18
+ return key;
19
+ if (key.startsWith(exports.DIRECT_KEY_PREVIOUS)) {
20
+ key = key.split(exports.DIRECT_KEY_PREVIOUS)[1];
21
+ let kn = parseInt(key);
22
+ if (isNaN(kn)) {
23
+ return key;
24
+ }
25
+ else {
26
+ return kn;
27
+ }
28
+ }
29
+ return key;
30
+ }
@@ -1,6 +1,4 @@
1
- export default class DirectPackage {
2
- data: any;
3
- constructor(data: any);
4
- }
5
- export declare function directPackage(data: any): DirectPackage;
1
+ export declare const DIRECT_KEY_PREVIOUS = "RHINE_VAR_DIRECT_PACKAGE_PREFIX - ";
2
+ export declare function directKey(key: string): string;
3
+ export declare function isDirectKey(key: string): boolean;
6
4
  //# sourceMappingURL=DirectPackage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DirectPackage.d.ts","sourceRoot":"","sources":["../../../src/core/proxy/DirectPackage.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,OAAO,OAAO,aAAa;IAEvB,IAAI,EAAE,GAAG;gBAAT,IAAI,EAAE,GAAG;CAEnB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,iBAEtC"}
1
+ {"version":3,"file":"DirectPackage.d.ts","sourceRoot":"","sources":["../../../src/core/proxy/DirectPackage.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,uCAAuC,CAAA;AAEvE,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,UAEpC;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,WAEtC"}
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.directPackage = directPackage;
4
- class DirectPackage {
5
- constructor(data) {
6
- this.data = data;
7
- }
3
+ exports.DIRECT_KEY_PREVIOUS = void 0;
4
+ exports.directKey = directKey;
5
+ exports.isDirectKey = isDirectKey;
6
+ exports.DIRECT_KEY_PREVIOUS = 'RHINE_VAR_DIRECT_PACKAGE_PREFIX - ';
7
+ function directKey(key) {
8
+ return exports.DIRECT_KEY_PREVIOUS + key;
8
9
  }
9
- exports.default = DirectPackage;
10
- function directPackage(data) {
11
- return new DirectPackage(data);
10
+ function isDirectKey(key) {
11
+ return key.startsWith(exports.DIRECT_KEY_PREVIOUS);
12
12
  }
@@ -0,0 +1,8 @@
1
+ type keyType = string | symbol | number;
2
+ export default class KeyWithDirectFlag {
3
+ value: keyType;
4
+ constructor(value: keyType);
5
+ }
6
+ export declare function directKey(value: keyType): KeyWithDirectFlag;
7
+ export {};
8
+ //# sourceMappingURL=KeyWithDirectFlag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyWithDirectFlag.d.ts","sourceRoot":"","sources":["../../../src/core/proxy/KeyWithDirectFlag.ts"],"names":[],"mappings":"AACA,KAAK,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;AAEvC,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAE3B,KAAK,EAAE,OAAO;gBAAd,KAAK,EAAE,OAAO;CAExB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,qBAEvC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.directKey = directKey;
4
+ class KeyWithDirectFlag {
5
+ constructor(value) {
6
+ this.value = value;
7
+ }
8
+ }
9
+ exports.default = KeyWithDirectFlag;
10
+ function directKey(value) {
11
+ return new KeyWithDirectFlag(value);
12
+ }
@@ -1,6 +1,6 @@
1
1
  import RhineVar from "./RhineVar";
2
2
  export type RecursiveCrossRhineVar<T> = {
3
- [K in keyof T]: T[K] extends object ? RecursiveCrossRhineVar<T[K]> & RhineVar : T[K];
3
+ [K in keyof T]: T[K] extends object ? RecursiveCrossRhineVar<T[K]> & RhineVar<T[K]> : T[K];
4
4
  };
5
- export type ProxiedRhineVar<T> = T & RecursiveCrossRhineVar<T> & RhineVar;
5
+ export type ProxiedRhineVar<T> = T & RecursiveCrossRhineVar<T> & RhineVar<T>;
6
6
  //# sourceMappingURL=ProxiedRhineVar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProxiedRhineVar.d.ts","sourceRoot":"","sources":["../../../src/core/proxy/ProxiedRhineVar.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,mBAA8B;AAE7C,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI;KACrC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;CACrF,CAAA;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAA"}
1
+ {"version":3,"file":"ProxiedRhineVar.d.ts","sourceRoot":"","sources":["../../../src/core/proxy/ProxiedRhineVar.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,mBAA8B;AAE7C,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI;KACrC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC3F,CAAA;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Proxy.d.ts","sourceRoot":"","sources":["../../../src/core/proxy/Proxy.ts"],"names":[],"mappings":"AACA,OAAO,uBAAgD,6CAAiD;AAKxG,OAAO,EAAC,eAAe,EAAC,0BAAqC;AAC7D,OAAO,EAAC,MAAM,EAAC,yBAA6B;AAK5C,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACzC,IAAI,EAAE,CAAC,EACP,SAAS,GAAE,uBAAuB,GAAG,MAAM,GAAG,IAAW,EACzD,SAAS,GAAE,OAAe,GACzB,eAAe,CAAC,CAAC,CAAC,CA2CpB;AAGD,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CA4DrF"}
1
+ {"version":3,"file":"Proxy.d.ts","sourceRoot":"","sources":["../../../src/core/proxy/Proxy.ts"],"names":[],"mappings":"AACA,OAAO,uBAAgD,6CAAiD;AAKxG,OAAO,EAAC,eAAe,EAAC,0BAAqC;AAC7D,OAAO,EAAC,MAAM,EAAC,yBAA6B;AAM5C,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACzC,IAAI,EAAE,CAAC,EACP,SAAS,GAAE,uBAAuB,GAAG,MAAM,GAAG,IAAW,EACzD,SAAS,GAAE,OAAe,GACzB,eAAe,CAAC,CAAC,CAAC,CA6CpB;AAGD,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CA8DrF"}
@@ -32,7 +32,7 @@ const DataUtils_1 = require("../utils/DataUtils");
32
32
  const Logger_1 = require("../utils/Logger");
33
33
  const ConvertProperty_1 = require("../utils/ConvertProperty");
34
34
  const NativeUtils_1 = require("../native/NativeUtils");
35
- const DirectPackage_1 = __importStar(require("./DirectPackage"));
35
+ const DirectKey_1 = require("./DirectKey");
36
36
  function rhineProxy(data, connector = null, overwrite = false) {
37
37
  let target = (0, NativeUtils_1.jsonToNative)(data);
38
38
  if (connector) {
@@ -49,26 +49,26 @@ function rhineProxy(data, connector = null, overwrite = false) {
49
49
  object.connector = connector;
50
50
  if (connector && !connector.synced) {
51
51
  connector.addSyncedListener((synced) => {
52
- if (!synced)
53
- return;
54
- let syncedValue = target.clone();
55
- if (!overwrite && connector.yBaseMap.has(WebsocketRhineConnector_1.default.STATE_KEY)) {
56
- syncedValue = connector.yBaseMap.get(WebsocketRhineConnector_1.default.STATE_KEY);
57
- object.native.forEach((value, key) => {
58
- Reflect.deleteProperty(object, key);
59
- });
60
- object.unobserve();
61
- object.native = syncedValue;
62
- object.observe();
63
- (0, Logger_1.log)('Proxy.synced: Update synced native');
64
- syncedValue.forEach((value, key) => {
65
- if ((0, NativeUtils_1.isYMapOrYArray)(value)) {
66
- Reflect.set(object, key, (0, DirectPackage_1.directPackage)(rhineProxyNative(value)));
67
- }
68
- });
69
- }
70
- else {
71
- connector.yBaseMap.set(WebsocketRhineConnector_1.default.STATE_KEY, syncedValue);
52
+ if (synced) {
53
+ let syncedValue = target.clone();
54
+ if (!overwrite && connector.yBaseMap.has(WebsocketRhineConnector_1.default.STATE_KEY)) {
55
+ syncedValue = connector.yBaseMap.get(WebsocketRhineConnector_1.default.STATE_KEY);
56
+ object.native.forEach((value, key) => {
57
+ Reflect.deleteProperty(object, (0, DirectKey_1.directKey)(key));
58
+ });
59
+ object.unobserve();
60
+ object.native = syncedValue;
61
+ object.observe();
62
+ (0, Logger_1.log)('Proxy.synced: Update synced native');
63
+ syncedValue.forEach((value, key) => {
64
+ if ((0, NativeUtils_1.isNative)(value)) {
65
+ Reflect.set(object, (0, DirectKey_1.directKey)(key), rhineProxyNative(value));
66
+ }
67
+ });
68
+ }
69
+ else {
70
+ connector.yBaseMap.set(WebsocketRhineConnector_1.default.STATE_KEY, syncedValue);
71
+ }
72
72
  }
73
73
  });
74
74
  }
@@ -79,19 +79,21 @@ function rhineProxyNative(target) {
79
79
  const object = new RhineVar_1.default(target);
80
80
  object.native.forEach((value, keyString) => {
81
81
  let key = keyString;
82
- if ((0, NativeUtils_1.isYMapOrYArray)(value)) {
82
+ if ((0, NativeUtils_1.isNative)(value)) {
83
83
  Reflect.set(object, key, rhineProxyNative(value));
84
84
  }
85
85
  });
86
86
  const handler = {
87
87
  get(proxy, p, receiver) {
88
+ if ((0, DirectKey_1.isDirectKey)(p))
89
+ return Reflect.get(object, (0, DirectKey_1.originKey)(p), receiver);
88
90
  if (RhineVar_1.RHINE_VAR_KEYS.has(p))
89
91
  return Reflect.get(object, p, receiver);
90
92
  (0, Logger_1.log)('Proxy.handler.get:', p, '\n', object, receiver);
91
93
  if (p in object)
92
94
  return Reflect.get(object, p, receiver);
93
95
  let result = (0, NativeUtils_1.nativeGet)(object.native, p);
94
- if (result)
96
+ if (result !== undefined)
95
97
  return result;
96
98
  if (object.native instanceof yjs_1.Array) {
97
99
  if (typeof p === 'string') {
@@ -103,10 +105,10 @@ function rhineProxyNative(target) {
103
105
  return undefined;
104
106
  },
105
107
  set(proxy, p, value, receiver) {
108
+ if ((0, DirectKey_1.isDirectKey)(p))
109
+ return Reflect.set(object, (0, DirectKey_1.originKey)(p), value.data, receiver);
106
110
  if (RhineVar_1.RHINE_VAR_KEYS.has(p))
107
111
  return Reflect.set(object, p, value, receiver);
108
- if (value instanceof DirectPackage_1.default)
109
- return Reflect.set(object, p, value.data, receiver);
110
112
  (0, Logger_1.log)('Proxy.handler.set:', p, 'to', value, '\n', object, receiver);
111
113
  value = (0, DataUtils_1.ensureRhineVar)(value);
112
114
  let result = false;
@@ -121,6 +123,8 @@ function rhineProxyNative(target) {
121
123
  return result;
122
124
  },
123
125
  deleteProperty(proxy, p) {
126
+ if ((0, DirectKey_1.isDirectKey)(p))
127
+ return Reflect.deleteProperty(object, (0, DirectKey_1.originKey)(p));
124
128
  if (RhineVar_1.RHINE_VAR_KEYS.has(p))
125
129
  return false;
126
130
  (0, Logger_1.log)('Proxy.handler.deleteProperty:', p);
@@ -3,20 +3,18 @@ import WebsocketRhineConnector from "../connector/WebsocketRhineConnector";
3
3
  import { Native } from "../native/Native";
4
4
  import { ChangeType } from "../event/ChangeType";
5
5
  import { Callback } from "../event/Callback";
6
- export default class RhineVar {
6
+ export default class RhineVar<T> {
7
7
  native: Native;
8
8
  constructor(native: Native);
9
9
  connector: WebsocketRhineConnector | null;
10
- json(): any[] | {
11
- [x: string]: any;
12
- };
10
+ json(): T;
13
11
  private listeners;
14
- subscribe(callback: Callback): () => void;
15
- unsubscribe(callback: Callback): void;
12
+ subscribe(callback: Callback<T>): () => void;
13
+ unsubscribe(callback: Callback<T>): void;
16
14
  private keyListeners;
17
- subscribeKey(key: string, callback: Callback): () => void;
18
- unsubscribeKey(callback: Callback): void;
19
- emit(value: any, key: string, oldValue: any, type: ChangeType, nativeEvent: YMapEvent<any> | YArrayEvent<any>, nativeTransaction: Transaction): void;
15
+ subscribeKey(key: keyof T, callback: Callback<T>): () => void;
16
+ unsubscribeKey(callback: Callback<T>): void;
17
+ emit(value: T[keyof T], key: keyof T, oldValue: T[keyof T], type: ChangeType, nativeEvent: YMapEvent<any> | YArrayEvent<any>, nativeTransaction: Transaction): void;
20
18
  observer: (event: YMapEvent<any> | YArrayEvent<any>, transaction: Transaction) => void;
21
19
  observe(): void;
22
20
  unobserve(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"RhineVar.d.ts","sourceRoot":"","sources":["../../../src/core/proxy/RhineVar.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,WAAW,EAAE,WAAW,EAAE,SAAS,EAAC,MAAM,KAAK,CAAC;AAEtF,OAAO,uBAAuB,6CAAiD;AAG/E,OAAO,EAAC,MAAM,EAAC,yBAA6B;AAC5C,OAAO,EAAC,UAAU,EAAC,4BAAgC;AACnD,OAAO,EAAC,QAAQ,EAAC,0BAA8B;AAG/C,MAAM,CAAC,OAAO,OAAO,QAAQ;IAGlB,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;IAGvB,SAAS,EAAE,uBAAuB,GAAG,IAAI,CAAO;IAEzC,IAAI;;;IAIX,OAAO,CAAC,SAAS,CAAiB;IAClC,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,IAAI;IAIzC,WAAW,CAAC,QAAQ,EAAE,QAAQ;IAI9B,OAAO,CAAC,YAAY,CAAqC;IACzD,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,IAAI;IAOzD,cAAc,CAAC,QAAQ,EAAE,QAAQ;IAMjC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,iBAAiB,EAAE,WAAW;IAO7I,QAAQ,UAAW,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,eAAe,WAAW,UAAO;IAGrF,OAAO;IA+BP,SAAS;CAMV;AAED,eAAO,MAAM,cAAc,sBAczB,CAAA"}
1
+ {"version":3,"file":"RhineVar.d.ts","sourceRoot":"","sources":["../../../src/core/proxy/RhineVar.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,WAAW,EAAE,WAAW,EAAE,SAAS,EAAC,MAAM,KAAK,CAAC;AAEtF,OAAO,uBAAuB,6CAAiD;AAG/E,OAAO,EAAC,MAAM,EAAC,yBAA6B;AAC5C,OAAO,EAAC,UAAU,EAAC,4BAAgC;AACnD,OAAO,EAAC,QAAQ,EAAC,0BAA8B;AAG/C,MAAM,CAAC,OAAO,OAAO,QAAQ,CAAC,CAAC;IAGpB,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;IAGvB,SAAS,EAAE,uBAAuB,GAAG,IAAI,CAAO;IAEzC,IAAI,IAAI,CAAC;IAIhB,OAAO,CAAC,SAAS,CAAoB;IACrC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAI5C,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAIjC,OAAO,CAAC,YAAY,CAAyC;IAC7D,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;IAMpC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,iBAAiB,EAAE,WAAW;IAO5J,QAAQ,UAAW,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,eAAe,WAAW,UAAO;IAGrF,OAAO;IA+BP,SAAS;CAMV;AAED,eAAO,MAAM,cAAc,sBAczB,CAAA"}
@@ -1,4 +1,4 @@
1
1
  import { Array as YArray } from "yjs";
2
2
  import RhineVar from "../proxy/RhineVar";
3
- export declare function convertArrayProperty<T>(target: YArray<T>, name: string, object: RhineVar): number | ((item: T | RhineVar) => void) | ((...items: T[]) => number) | ((start: number, deleteCount: number, ...items: T[]) => T[]) | ((callback: (value: T, index: number, arr: YArray<any>) => void) => void) | ((item: T) => boolean) | undefined;
3
+ export declare function convertArrayProperty<T>(target: YArray<T>, name: string, object: RhineVar<T>): number | ((item: T | RhineVar<T>) => void) | ((...items: T[]) => number) | ((start: number, deleteCount: number, ...items: T[]) => T[]) | ((callback: (value: T, index: number, arr: YArray<any>) => void) => void) | ((item: T) => boolean) | undefined;
4
4
  //# sourceMappingURL=ConvertProperty.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConvertProperty.d.ts","sourceRoot":"","sources":["../../../src/core/utils/ConvertProperty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,IAAI,MAAM,EAAC,MAAM,KAAK,CAAC;AACpC,OAAO,QAAQ,0BAA8B;AAG7C,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,oBAIvE,CAAC,GAAG,QAAQ,yBAsBR,CAAC,EAAE,wBASN,MAAM,eAAe,MAAM,YAAY,CAAC,EAAE,wBASvC,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,qBAevD,CAAC,0BAOlB"}
1
+ {"version":3,"file":"ConvertProperty.d.ts","sourceRoot":"","sources":["../../../src/core/utils/ConvertProperty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,IAAI,MAAM,EAAC,MAAM,KAAK,CAAC;AACpC,OAAO,QAAQ,0BAA8B;AAK7C,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,oBAI1E,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAG,IAAI,gBAyBlB,CAAC,EAAE,wBASN,MAAM,eAAe,MAAM,YAAY,CAAC,EAAE,wBASvC,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,qBAevD,CAAC,0BAOlB"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.convertArrayProperty = convertArrayProperty;
7
7
  const RhineVar_1 = __importDefault(require("../proxy/RhineVar"));
8
8
  const DataUtils_1 = require("./DataUtils");
9
+ const NativeUtils_1 = require("../native/NativeUtils");
9
10
  function convertArrayProperty(target, name, object) {
10
11
  if (name === 'length') {
11
12
  return target.length;
@@ -15,7 +16,6 @@ function convertArrayProperty(target, name, object) {
15
16
  item = (0, DataUtils_1.ensureRhineVar)(item);
16
17
  if (item instanceof RhineVar_1.default) {
17
18
  target.push([item.native]);
18
- Reflect.set(object, target.length - 1, item);
19
19
  }
20
20
  else {
21
21
  target.push([item]);
@@ -24,8 +24,12 @@ function convertArrayProperty(target, name, object) {
24
24
  }
25
25
  else if (name === 'pop') {
26
26
  return () => {
27
- let item = target.get(target.length - 1);
28
- target.delete(target.length - 1);
27
+ let key = target.length - 1;
28
+ let item = target.get(key);
29
+ target.delete(key);
30
+ if ((0, NativeUtils_1.isNative)(item)) {
31
+ return item.toJSON();
32
+ }
29
33
  return item;
30
34
  };
31
35
  }
@@ -1,6 +1,7 @@
1
1
  import { ProxiedRhineVar } from "../proxy/ProxiedRhineVar";
2
+ import { Native } from "../native/Native";
2
3
  export declare function isObject(value: any): boolean;
3
4
  export declare function isArray(value: any): value is any[];
4
5
  export declare function isObjectOrArray(value: any): boolean;
5
- export declare function ensureRhineVar<T>(value: T | ProxiedRhineVar<T>): ProxiedRhineVar<T> | any;
6
+ export declare function ensureRhineVar<T>(value: T | Native): ProxiedRhineVar<T> | any;
6
7
  //# sourceMappingURL=DataUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataUtils.d.ts","sourceRoot":"","sources":["../../../src/core/utils/DataUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,iCAAqC;AAK7D,wBAAgB,QAAQ,CAAC,KAAK,EAAE,GAAG,WAElC;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,GAAG,kBAEjC;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,WAEzC;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,GAAG,CAUzF"}
1
+ {"version":3,"file":"DataUtils.d.ts","sourceRoot":"","sources":["../../../src/core/utils/DataUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,iCAAqC;AAI7D,OAAO,EAAC,MAAM,EAAC,yBAA6B;AAE5C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,GAAG,WAElC;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,GAAG,kBAEjC;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,WAEzC;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,GAAG,CAU7E"}
@@ -20,7 +20,7 @@ function isObjectOrArray(value) {
20
20
  return value !== null && typeof value === 'object';
21
21
  }
22
22
  function ensureRhineVar(value) {
23
- if ((0, NativeUtils_1.isYMapOrYArray)(value)) {
23
+ if ((0, NativeUtils_1.isNative)(value)) {
24
24
  return (0, Proxy_1.rhineProxyNative)(value);
25
25
  }
26
26
  if (isObjectOrArray(value)) {
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { rhineProxy, rhineProxyNative } from "./core/proxy/Proxy";
2
2
  import RhineVar from "./core/proxy/RhineVar";
3
3
  import { ProxiedRhineVar, RecursiveCrossRhineVar } from "./core/proxy/ProxiedRhineVar";
4
- import DirectPackage from "./core/proxy/DirectPackage";
4
+ import DirectPackage from "./core/proxy/DirectKey";
5
5
  import WebsocketRhineConnector from "./core/connector/WebsocketRhineConnector";
6
6
  import useRhine from "./react/hooks/useRhine";
7
7
  import useSynced from "./react/hooks/useSynced";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,gBAAgB,EAAC,2BAA2B;AAChE,OAAO,QAAQ,8BAA8B;AAC7C,OAAO,EAAC,eAAe,EAAE,sBAAsB,EAAC,qCAAqC;AACrF,OAAO,aAAa,mCAAmC;AACvD,OAAO,uBAAuB,iDAAiD;AAC/E,OAAO,QAAQ,+BAA8B;AAC7C,OAAO,SAAS,gCAA+B;AAE/C,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,QAAQ,EACR,SAAS,GACV,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,gBAAgB,EAAC,2BAA2B;AAChE,OAAO,QAAQ,8BAA8B;AAC7C,OAAO,EAAC,eAAe,EAAE,sBAAsB,EAAC,qCAAqC;AACrF,OAAO,aAAa,+BAA+B;AACnD,OAAO,uBAAuB,iDAAiD;AAC/E,OAAO,QAAQ,+BAA8B;AAC7C,OAAO,SAAS,gCAA+B;AAE/C,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,QAAQ,EACR,SAAS,GACV,CAAA"}
package/dist/index.js CHANGED
@@ -9,8 +9,8 @@ Object.defineProperty(exports, "rhineProxy", { enumerable: true, get: function (
9
9
  Object.defineProperty(exports, "rhineProxyNative", { enumerable: true, get: function () { return Proxy_1.rhineProxyNative; } });
10
10
  const RhineVar_1 = __importDefault(require("./core/proxy/RhineVar"));
11
11
  exports.RhineVar = RhineVar_1.default;
12
- const DirectPackage_1 = __importDefault(require("./core/proxy/DirectPackage"));
13
- exports.DirectPackage = DirectPackage_1.default;
12
+ const DirectKey_1 = __importDefault(require("./core/proxy/DirectKey"));
13
+ exports.DirectPackage = DirectKey_1.default;
14
14
  const WebsocketRhineConnector_1 = __importDefault(require("./core/connector/WebsocketRhineConnector"));
15
15
  exports.WebsocketRhineConnector = WebsocketRhineConnector_1.default;
16
16
  const useRhine_1 = __importDefault(require("./react/hooks/useRhine"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rhine-var",
3
- "version": "0.1.7",
3
+ "version": "0.2.0",
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",
@@ -9,8 +9,7 @@
9
9
  "build": "tsc",
10
10
  "watch": "tsc --watch",
11
11
  "test": "echo \"Error: no test specified\" && exit 1",
12
- "publish-github": "npm publish --scope=@RhineAI-Lab --registry=https://npm.pkg.github.com",
13
- "publish-npmjs": "npm publish"
12
+ "publish": "npm publish"
14
13
  },
15
14
  "author": "RhineAI",
16
15
  "license": "Apache-2.0",