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.
- package/dist/core/event/Callback.d.ts +1 -1
- package/dist/core/event/Callback.d.ts.map +1 -1
- package/dist/core/event/ChangeType.d.ts +2 -1
- package/dist/core/event/ChangeType.d.ts.map +1 -1
- package/dist/core/event/ChangeType.js +1 -0
- package/dist/core/native/NativeUtils.d.ts +3 -4
- package/dist/core/native/NativeUtils.d.ts.map +1 -1
- package/dist/core/native/NativeUtils.js +2 -2
- package/dist/core/proxy/DirectKey.d.ts +5 -0
- package/dist/core/proxy/DirectKey.d.ts.map +1 -0
- package/dist/core/proxy/DirectKey.js +30 -0
- package/dist/core/proxy/DirectPackage.d.ts +3 -5
- package/dist/core/proxy/DirectPackage.d.ts.map +1 -1
- package/dist/core/proxy/DirectPackage.js +8 -8
- package/dist/core/proxy/KeyWithDirectFlag.d.ts +8 -0
- package/dist/core/proxy/KeyWithDirectFlag.d.ts.map +1 -0
- package/dist/core/proxy/KeyWithDirectFlag.js +12 -0
- package/dist/core/proxy/ProxiedRhineVar.d.ts +2 -2
- package/dist/core/proxy/ProxiedRhineVar.d.ts.map +1 -1
- package/dist/core/proxy/Proxy.d.ts.map +1 -1
- package/dist/core/proxy/Proxy.js +29 -25
- package/dist/core/proxy/RhineVar.d.ts +7 -9
- package/dist/core/proxy/RhineVar.d.ts.map +1 -1
- package/dist/core/utils/ConvertProperty.d.ts +1 -1
- package/dist/core/utils/ConvertProperty.d.ts.map +1 -1
- package/dist/core/utils/ConvertProperty.js +7 -3
- package/dist/core/utils/DataUtils.d.ts +2 -1
- package/dist/core/utils/DataUtils.d.ts.map +1 -1
- package/dist/core/utils/DataUtils.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- 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:
|
|
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,
|
|
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 +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;
|
|
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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { Map as YMap, Array as YArray } from "yjs";
|
|
2
1
|
import { Native } from "./Native";
|
|
3
|
-
export declare function
|
|
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":"
|
|
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.
|
|
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
|
|
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
|
|
2
|
-
|
|
3
|
-
|
|
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":"
|
|
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.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
10
|
-
|
|
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;
|
|
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;
|
|
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"}
|
package/dist/core/proxy/Proxy.js
CHANGED
|
@@ -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
|
|
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 (
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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.
|
|
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():
|
|
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:
|
|
18
|
-
unsubscribeKey(callback: Callback): void;
|
|
19
|
-
emit(value:
|
|
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;
|
|
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;
|
|
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
|
|
28
|
-
target.
|
|
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 |
|
|
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;
|
|
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.
|
|
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/
|
|
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";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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
|
|
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
|
|
13
|
-
exports.DirectPackage =
|
|
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.
|
|
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
|
|
13
|
-
"publish-npmjs": "npm publish"
|
|
12
|
+
"publish": "npm publish"
|
|
14
13
|
},
|
|
15
14
|
"author": "RhineAI",
|
|
16
15
|
"license": "Apache-2.0",
|