@rpgjs/client 5.0.0-alpha.10 → 5.0.0-alpha.2
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/Game/EffectManager.d.ts +5 -0
- package/dist/RpgClient.d.ts +68 -99
- package/dist/RpgClientEngine.d.ts +4 -86
- package/dist/components/effects/index.d.ts +4 -0
- package/dist/components/index.d.ts +1 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/index10.js +1 -1
- package/dist/index11.js +4 -4
- package/dist/index11.js.map +1 -1
- package/dist/index12.js +2 -6
- package/dist/index12.js.map +1 -1
- package/dist/index13.js +2 -2
- package/dist/index13.js.map +1 -1
- package/dist/index14.js +35 -95
- package/dist/index14.js.map +1 -1
- package/dist/index15.js +186 -45
- package/dist/index15.js.map +1 -1
- package/dist/index16.js +5 -187
- package/dist/index16.js.map +1 -1
- package/dist/index17.js +383 -5
- package/dist/index17.js.map +1 -1
- package/dist/index18.js +28 -384
- package/dist/index18.js.map +1 -1
- package/dist/index19.js +17 -24
- package/dist/index19.js.map +1 -1
- package/dist/index2.js +25 -147
- package/dist/index2.js.map +1 -1
- package/dist/index20.js +2413 -16
- package/dist/index20.js.map +1 -1
- package/dist/index21.js +88 -2395
- package/dist/index21.js.map +1 -1
- package/dist/index22.js +103 -108
- package/dist/index22.js.map +1 -1
- package/dist/index23.js +57 -95
- package/dist/index23.js.map +1 -1
- package/dist/index24.js +12 -62
- package/dist/index24.js.map +1 -1
- package/dist/index25.js +37 -18
- package/dist/index25.js.map +1 -1
- package/dist/index26.js +3 -25
- package/dist/index26.js.map +1 -1
- package/dist/index27.js +314 -87
- package/dist/index27.js.map +1 -1
- package/dist/index28.js +21 -37
- package/dist/index28.js.map +1 -1
- package/dist/index29.js +9 -3
- package/dist/index29.js.map +1 -1
- package/dist/index3.js +2 -2
- package/dist/index30.js +6 -317
- package/dist/index30.js.map +1 -1
- package/dist/index31.js +171 -24
- package/dist/index31.js.map +1 -1
- package/dist/index32.js +497 -7
- package/dist/index32.js.map +1 -1
- package/dist/index33.js +9 -8
- package/dist/index33.js.map +1 -1
- package/dist/index34.js +4400 -9
- package/dist/index34.js.map +1 -1
- package/dist/index35.js +307 -4394
- package/dist/index35.js.map +1 -1
- package/dist/index36.js +85 -310
- package/dist/index36.js.map +1 -1
- package/dist/index37.js +56 -169
- package/dist/index37.js.map +1 -1
- package/dist/index38.js +16 -497
- package/dist/index38.js.map +1 -1
- package/dist/index39.js +10 -51
- package/dist/index39.js.map +1 -1
- package/dist/index4.js +5 -18
- package/dist/index4.js.map +1 -1
- package/dist/index5.js +1 -2
- package/dist/index5.js.map +1 -1
- package/dist/index6.js +1 -1
- package/dist/index7.js +2 -10
- package/dist/index7.js.map +1 -1
- package/dist/index8.js +6 -24
- package/dist/index8.js.map +1 -1
- package/dist/index9.js +2 -2
- package/dist/presets/index.d.ts +0 -102
- package/dist/services/loadMap.d.ts +2 -123
- package/dist/services/mmorpg.d.ts +3 -7
- package/package.json +12 -14
- package/src/Game/{AnimationManager.ts → EffectManager.ts} +2 -2
- package/src/Game/Object.ts +0 -69
- package/src/RpgClient.ts +67 -101
- package/src/RpgClientEngine.ts +24 -159
- package/src/components/character.ce +33 -74
- package/src/components/{animations → effects}/animation.ce +5 -3
- package/src/components/{animations → effects}/index.ts +1 -1
- package/src/components/index.ts +1 -2
- package/src/components/scenes/draw-map.ce +23 -6
- package/src/components/scenes/element-map.ce +23 -0
- package/src/components/scenes/event-layer.ce +3 -3
- package/src/core/setup.ts +0 -2
- package/src/index.ts +1 -1
- package/src/module.ts +5 -23
- package/src/presets/index.ts +1 -5
- package/src/services/loadMap.ts +2 -131
- package/src/services/mmorpg.ts +4 -20
- package/tsconfig.json +1 -1
- package/vite.config.ts +1 -1
- package/dist/Game/AnimationManager.d.ts +0 -8
- package/dist/components/animations/index.d.ts +0 -4
- package/dist/index40.js +0 -20
- package/dist/index40.js.map +0 -1
- package/dist/index41.js +0 -82
- package/dist/index41.js.map +0 -1
- package/dist/presets/animation.d.ts +0 -31
- package/dist/presets/lpc.d.ts +0 -89
- package/src/presets/animation.ts +0 -46
- package/src/presets/lpc.ts +0 -108
- /package/src/components/{animations → effects}/hit.ce +0 -0
package/dist/index17.js
CHANGED
|
@@ -1,9 +1,387 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { __name } from './index26.js';
|
|
2
|
+
import { isSignal, isComputed, isObjectSubject, isArraySubject } from './index27.js';
|
|
3
|
+
|
|
4
|
+
// src/utils.ts
|
|
5
|
+
function isFunction(val) {
|
|
6
|
+
return {}.toString.call(val) === "[object Function]";
|
|
7
|
+
}
|
|
8
|
+
__name(isFunction, "isFunction");
|
|
9
|
+
function isClass(obj) {
|
|
10
|
+
return typeof obj === "function" && obj.prototype && obj.prototype.constructor === obj;
|
|
11
|
+
}
|
|
12
|
+
__name(isClass, "isClass");
|
|
13
|
+
var isObject = /* @__PURE__ */ __name((item) => item && typeof item === "object" && !Array.isArray(item) && item !== null, "isObject");
|
|
14
|
+
function isInstanceOfClass(value) {
|
|
15
|
+
if (value === null || typeof value !== "object" || value === void 0 || Array.isArray(value)) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
return Object.getPrototypeOf(value) !== Object.prototype;
|
|
19
|
+
}
|
|
20
|
+
__name(isInstanceOfClass, "isInstanceOfClass");
|
|
21
|
+
function generateShortUUID() {
|
|
22
|
+
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
23
|
+
let uuid = "";
|
|
24
|
+
for (let i = 0; i < 8; i++) {
|
|
25
|
+
const randomIndex = Math.floor(Math.random() * chars.length);
|
|
26
|
+
uuid += chars[randomIndex];
|
|
27
|
+
}
|
|
28
|
+
return uuid;
|
|
29
|
+
}
|
|
30
|
+
__name(generateShortUUID, "generateShortUUID");
|
|
31
|
+
|
|
32
|
+
// src/core.ts
|
|
33
|
+
var DELETE_TOKEN = "$delete";
|
|
34
|
+
var syncClass = /* @__PURE__ */ __name((instance, options = {}) => {
|
|
35
|
+
const cacheSync = /* @__PURE__ */ new Map();
|
|
36
|
+
const cachePersist = /* @__PURE__ */ new Map();
|
|
37
|
+
instance.$valuesChanges = {
|
|
38
|
+
set: /* @__PURE__ */ __name((path, value) => {
|
|
39
|
+
cacheSync.set(path, value);
|
|
40
|
+
options.onSync?.(cacheSync);
|
|
41
|
+
}, "set"),
|
|
42
|
+
setPersist: /* @__PURE__ */ __name((path, value) => {
|
|
43
|
+
if (path == "") path = ".";
|
|
44
|
+
cachePersist.set(path, value);
|
|
45
|
+
options.onPersist?.(cachePersist);
|
|
46
|
+
}, "setPersist"),
|
|
47
|
+
has: /* @__PURE__ */ __name((path) => {
|
|
48
|
+
return cacheSync.has(path);
|
|
49
|
+
}, "has"),
|
|
50
|
+
get: /* @__PURE__ */ __name((path) => {
|
|
51
|
+
return cacheSync.get(path);
|
|
52
|
+
}, "get")
|
|
53
|
+
};
|
|
54
|
+
createSyncClass(instance);
|
|
55
|
+
}, "syncClass");
|
|
56
|
+
function createStatesSnapshot(instance) {
|
|
57
|
+
let persistObject = {};
|
|
58
|
+
if (instance?.$snapshot) {
|
|
59
|
+
for (const key of instance.$snapshot.keys()) {
|
|
60
|
+
const signal = instance.$snapshot.get(key);
|
|
61
|
+
const persist2 = signal.options.persist ?? true;
|
|
62
|
+
let value = signal();
|
|
63
|
+
if (isObject(value) || Array.isArray(value)) {
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (persist2) {
|
|
67
|
+
persistObject[key] = value;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return persistObject;
|
|
72
|
+
}
|
|
73
|
+
__name(createStatesSnapshot, "createStatesSnapshot");
|
|
74
|
+
function setMetadata(target, key, value) {
|
|
75
|
+
const meta = target.constructor._propertyMetadata;
|
|
76
|
+
const propId = meta?.get(key);
|
|
77
|
+
if (propId) {
|
|
78
|
+
if (isSignal(target[propId])) {
|
|
79
|
+
target[propId].set(value);
|
|
80
|
+
} else {
|
|
81
|
+
target[propId] = value;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
__name(setMetadata, "setMetadata");
|
|
86
|
+
var createSyncClass = /* @__PURE__ */ __name((currentClass, parentKey = null, parentClass = null, path = "") => {
|
|
87
|
+
currentClass.$path = path;
|
|
88
|
+
if (parentClass) {
|
|
89
|
+
currentClass.$valuesChanges = parentClass.$valuesChanges;
|
|
90
|
+
}
|
|
91
|
+
if (parentKey) {
|
|
92
|
+
setMetadata(currentClass, "id", parentKey);
|
|
93
|
+
}
|
|
94
|
+
if (currentClass.$snapshot) {
|
|
95
|
+
for (const key of currentClass.$snapshot.keys()) {
|
|
96
|
+
const signal = currentClass.$snapshot.get(key);
|
|
97
|
+
const syncToClient = signal.options?.syncToClient ?? true;
|
|
98
|
+
const persist2 = signal.options?.persist ?? true;
|
|
99
|
+
let signalValue = signal();
|
|
100
|
+
if (isObject(signalValue) || Array.isArray(signalValue)) {
|
|
101
|
+
signalValue = {
|
|
102
|
+
...signalValue
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
const newPath = (path ? path + "." : "") + key;
|
|
106
|
+
if (syncToClient) {
|
|
107
|
+
currentClass.$valuesChanges.set(newPath, signalValue);
|
|
108
|
+
}
|
|
109
|
+
if (persist2) {
|
|
110
|
+
if (parentClass) currentClass.$valuesChanges.setPersist(path, signalValue);
|
|
111
|
+
}
|
|
112
|
+
if (isComputed(signal)) {
|
|
113
|
+
signal.observable.subscribe((newValue) => {
|
|
114
|
+
if (syncToClient) {
|
|
115
|
+
currentClass.$valuesChanges.set(newPath, newValue);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}, "createSyncClass");
|
|
122
|
+
var type = /* @__PURE__ */ __name((_signal, path, options = {}, currentInstance) => {
|
|
123
|
+
const { syncToClient = true, persist: persist2 = true } = options;
|
|
124
|
+
let init = true;
|
|
125
|
+
const handleObjectSubject = /* @__PURE__ */ __name((value, propPath) => {
|
|
126
|
+
const newPath = `${propPath}${value.key ? `.${value.key}` : ""}`;
|
|
127
|
+
if ([
|
|
128
|
+
"add",
|
|
129
|
+
"reset",
|
|
130
|
+
"update"
|
|
131
|
+
].includes(value.type)) {
|
|
132
|
+
if (isInstanceOfClass(value.value)) {
|
|
133
|
+
createSyncClass(value.value, value.key, currentInstance, newPath);
|
|
134
|
+
} else if (value.type === "update" && (isObject(value.value) || Array.isArray(value.value))) {
|
|
135
|
+
createSyncClass(value.value, value.key, currentInstance, newPath);
|
|
136
|
+
} else {
|
|
137
|
+
savePath(newPath, value.value);
|
|
138
|
+
}
|
|
139
|
+
} else if (value.type === "remove") {
|
|
140
|
+
savePath(newPath, DELETE_TOKEN);
|
|
141
|
+
}
|
|
142
|
+
}, "handleObjectSubject");
|
|
143
|
+
const handleArraySubject = /* @__PURE__ */ __name((value, propPath) => {
|
|
144
|
+
if (value.type === "reset" && Array.isArray(value.items)) {
|
|
145
|
+
value.items.forEach((item, index) => {
|
|
146
|
+
const newPath2 = `${propPath}.${index}`;
|
|
147
|
+
if (isInstanceOfClass(item)) {
|
|
148
|
+
createSyncClass(item, value.key, currentInstance, newPath2);
|
|
149
|
+
} else {
|
|
150
|
+
savePath(newPath2, item);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
const newPath = `${propPath}.${value.index}`;
|
|
156
|
+
const firstItem = value.items?.[0];
|
|
157
|
+
if ([
|
|
158
|
+
"add",
|
|
159
|
+
"update"
|
|
160
|
+
].includes(value.type) && firstItem !== void 0) {
|
|
161
|
+
if (isInstanceOfClass(firstItem)) {
|
|
162
|
+
createSyncClass(firstItem, value.key, currentInstance, newPath);
|
|
163
|
+
} else if (value.type === "update" && (isObject(firstItem) || Array.isArray(firstItem))) {
|
|
164
|
+
createSyncClass(firstItem, value.key, currentInstance, newPath);
|
|
165
|
+
} else {
|
|
166
|
+
savePath(newPath, firstItem);
|
|
167
|
+
}
|
|
168
|
+
} else if (value.type === "remove") {
|
|
169
|
+
savePath(newPath, DELETE_TOKEN);
|
|
170
|
+
}
|
|
171
|
+
}, "handleArraySubject");
|
|
172
|
+
const savePath = /* @__PURE__ */ __name((propPath, value) => {
|
|
173
|
+
if (syncToClient) {
|
|
174
|
+
currentInstance.$valuesChanges.set(propPath, value);
|
|
175
|
+
}
|
|
176
|
+
if (persist2 && currentInstance.$path !== void 0) {
|
|
177
|
+
currentInstance.$valuesChanges.setPersist(value == DELETE_TOKEN ? propPath : currentInstance.$path, value);
|
|
178
|
+
}
|
|
179
|
+
}, "savePath");
|
|
180
|
+
const setupSubscription = /* @__PURE__ */ __name((signal, signalPath) => {
|
|
181
|
+
if (!isSignal(signal)) return;
|
|
182
|
+
if (syncToClient && currentInstance.$valuesChanges) {
|
|
183
|
+
const initialValue = signal();
|
|
184
|
+
currentInstance.$valuesChanges.set(signalPath, initialValue);
|
|
185
|
+
}
|
|
186
|
+
signal.options = options;
|
|
187
|
+
signal.observable.subscribe((value) => {
|
|
188
|
+
if (init) return;
|
|
189
|
+
if (currentInstance.$path !== void 0) {
|
|
190
|
+
const fullPath = `${currentInstance.$path ? currentInstance.$path + "." : ""}${signalPath}`;
|
|
191
|
+
if (isComputed(signal)) {
|
|
192
|
+
savePath(fullPath, value);
|
|
193
|
+
} else if (isObjectSubject(signal._subject)) {
|
|
194
|
+
handleObjectSubject(value, fullPath);
|
|
195
|
+
} else if (isArraySubject(signal._subject)) {
|
|
196
|
+
handleArraySubject(value, fullPath);
|
|
197
|
+
} else {
|
|
198
|
+
savePath(fullPath, value);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
if (!currentInstance.$snapshot) {
|
|
203
|
+
currentInstance.$snapshot = /* @__PURE__ */ new Map();
|
|
204
|
+
}
|
|
205
|
+
currentInstance.$snapshot.set(path, signal);
|
|
206
|
+
}, "setupSubscription");
|
|
207
|
+
if (!isSignal(_signal)) {
|
|
208
|
+
if (_signal && typeof _signal === "object" && !Array.isArray(_signal)) {
|
|
209
|
+
for (const key in _signal) {
|
|
210
|
+
if (Object.prototype.hasOwnProperty.call(_signal, key)) {
|
|
211
|
+
const value = _signal[key];
|
|
212
|
+
const propertyPath = `${path}.${key}`;
|
|
213
|
+
if (isSignal(value)) {
|
|
214
|
+
setupSubscription(value, propertyPath);
|
|
215
|
+
} else if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
216
|
+
type(value, propertyPath, options, currentInstance);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
init = false;
|
|
221
|
+
}
|
|
222
|
+
return _signal;
|
|
223
|
+
}
|
|
224
|
+
setupSubscription(_signal, path);
|
|
225
|
+
init = false;
|
|
226
|
+
return _signal;
|
|
227
|
+
}, "type");
|
|
228
|
+
|
|
229
|
+
// src/decorators.ts
|
|
230
|
+
function sync(options) {
|
|
231
|
+
let classType;
|
|
232
|
+
let persist2 = true;
|
|
233
|
+
let syncToClient = true;
|
|
234
|
+
if (typeof options === "function") {
|
|
235
|
+
classType = options;
|
|
236
|
+
} else if (typeof options === "object") {
|
|
237
|
+
classType = options.classType;
|
|
238
|
+
if (options.hasOwnProperty("persist")) {
|
|
239
|
+
persist2 = options.persist;
|
|
240
|
+
}
|
|
241
|
+
if (options.hasOwnProperty("syncToClient")) {
|
|
242
|
+
syncToClient = options.syncToClient;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return function(target, propertyKey) {
|
|
246
|
+
const privatePropertyKey = `__${propertyKey}`;
|
|
247
|
+
const getter = /* @__PURE__ */ __name(function() {
|
|
248
|
+
return this[privatePropertyKey];
|
|
249
|
+
}, "getter");
|
|
250
|
+
const setter = /* @__PURE__ */ __name(function(newVal) {
|
|
251
|
+
this[privatePropertyKey] = type(newVal, propertyKey, {
|
|
252
|
+
classType,
|
|
253
|
+
persist: persist2,
|
|
254
|
+
syncToClient
|
|
255
|
+
}, this);
|
|
256
|
+
}, "setter");
|
|
257
|
+
Object.defineProperty(target, propertyKey, {
|
|
258
|
+
get: getter,
|
|
259
|
+
set: setter,
|
|
260
|
+
enumerable: true,
|
|
261
|
+
configurable: true
|
|
262
|
+
});
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
__name(sync, "sync");
|
|
266
|
+
function id() {
|
|
267
|
+
return function(target, propertyKey) {
|
|
268
|
+
if (!target.constructor._propertyMetadata) {
|
|
269
|
+
target.constructor._propertyMetadata = /* @__PURE__ */ new Map();
|
|
270
|
+
}
|
|
271
|
+
target.constructor._propertyMetadata.set("id", propertyKey);
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
__name(id, "id");
|
|
275
|
+
function users(options) {
|
|
276
|
+
return function(target, propertyKey) {
|
|
277
|
+
if (!target.constructor._propertyMetadata) {
|
|
278
|
+
target.constructor._propertyMetadata = /* @__PURE__ */ new Map();
|
|
279
|
+
}
|
|
280
|
+
target.constructor._propertyMetadata.set("users", propertyKey);
|
|
281
|
+
sync(options)(target, propertyKey);
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
__name(users, "users");
|
|
285
|
+
function persist() {
|
|
286
|
+
return sync({
|
|
287
|
+
persist: true,
|
|
288
|
+
syncToClient: false
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
__name(persist, "persist");
|
|
292
|
+
function connected() {
|
|
293
|
+
return function(target, propertyKey) {
|
|
294
|
+
if (!target.constructor._propertyMetadata) {
|
|
295
|
+
target.constructor._propertyMetadata = /* @__PURE__ */ new Map();
|
|
296
|
+
}
|
|
297
|
+
target.constructor._propertyMetadata.set("connected", propertyKey);
|
|
298
|
+
sync({
|
|
299
|
+
persist: false
|
|
300
|
+
})(target, propertyKey);
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
__name(connected, "connected");
|
|
304
|
+
function load(rootInstance, values, valueIsObject) {
|
|
305
|
+
if (valueIsObject) {
|
|
306
|
+
loadFromObject(rootInstance, values);
|
|
307
|
+
} else {
|
|
308
|
+
loadFromPaths(rootInstance, values);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
__name(load, "load");
|
|
312
|
+
function loadFromPaths(rootInstance, values) {
|
|
313
|
+
for (const [path, value] of Object.entries(values)) {
|
|
314
|
+
const parts = path.split(".");
|
|
315
|
+
loadValue(rootInstance, parts, value);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
__name(loadFromPaths, "loadFromPaths");
|
|
319
|
+
function loadFromObject(rootInstance, values, currentPath = "") {
|
|
320
|
+
for (let key in values) {
|
|
321
|
+
const value = values[key];
|
|
322
|
+
const newPath = currentPath ? `${currentPath}.${key}` : key;
|
|
323
|
+
if (typeof value === "object" && !Array.isArray(value) && value !== null) {
|
|
324
|
+
loadFromObject(rootInstance, value, newPath);
|
|
325
|
+
} else {
|
|
326
|
+
const parts = newPath.split(".");
|
|
327
|
+
loadValue(rootInstance, parts, value);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
__name(loadFromObject, "loadFromObject");
|
|
332
|
+
function loadValue(rootInstance, parts, value) {
|
|
333
|
+
let current = rootInstance;
|
|
334
|
+
for (let i = 0; i < parts.length; i++) {
|
|
335
|
+
const part = parts[i];
|
|
336
|
+
if (i === parts.length - 1) {
|
|
337
|
+
if (value == DELETE_TOKEN) {
|
|
338
|
+
if (isSignal(current)) {
|
|
339
|
+
current = current();
|
|
340
|
+
}
|
|
341
|
+
Reflect.deleteProperty(current, part);
|
|
342
|
+
} else if (current[part]?._subject) {
|
|
343
|
+
current[part].set(value);
|
|
344
|
+
} else if (isSignal(current) && Array.isArray(current()) && !isNaN(Number(part))) {
|
|
345
|
+
current()[Number(part)] = value;
|
|
346
|
+
} else {
|
|
347
|
+
current[part] = value;
|
|
348
|
+
}
|
|
349
|
+
} else {
|
|
350
|
+
if (isSignal(current)) {
|
|
351
|
+
current = current();
|
|
352
|
+
}
|
|
353
|
+
const currentValue = current[part];
|
|
354
|
+
if (currentValue === void 0) {
|
|
355
|
+
const parentInstance = getByPath(rootInstance, parts.slice(0, i).join("."));
|
|
356
|
+
const classType = parentInstance?.options?.classType;
|
|
357
|
+
if (classType) {
|
|
358
|
+
current[part] = !isClass(classType) ? classType(part) : new classType();
|
|
359
|
+
setMetadata(current[part], "id", part);
|
|
360
|
+
} else {
|
|
361
|
+
current[part] = {};
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
current = current[part];
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
__name(loadValue, "loadValue");
|
|
369
|
+
function getByPath(root, path) {
|
|
370
|
+
const parts = path.split(".");
|
|
371
|
+
let current = root;
|
|
372
|
+
for (const part of parts) {
|
|
373
|
+
if (isSignal(current)) {
|
|
374
|
+
current = current();
|
|
375
|
+
}
|
|
376
|
+
if (current[part]) {
|
|
377
|
+
current = current[part];
|
|
378
|
+
} else {
|
|
379
|
+
return void 0;
|
|
380
|
+
}
|
|
5
381
|
}
|
|
382
|
+
return current;
|
|
6
383
|
}
|
|
384
|
+
__name(getByPath, "getByPath");
|
|
7
385
|
|
|
8
|
-
export {
|
|
386
|
+
export { DELETE_TOKEN, connected, createStatesSnapshot, createSyncClass, generateShortUUID, getByPath, id, isClass, isFunction, isInstanceOfClass, isObject, load, persist, setMetadata, sync, syncClass, type, users };
|
|
9
387
|
//# sourceMappingURL=index17.js.map
|
package/dist/index17.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index17.js","sources":["../src/services/AbstractSocket.ts"],"sourcesContent":["import { Context } from \"@signe/di\";\n\nexport const WebSocketToken = \"websocket\";\n\nexport abstract class AbstractWebsocket {\n constructor(protected context: Context) {}\n\n abstract connection(listeners?: (data: any) => void): Promise<void>;\n abstract emit(event: string, data: any): void;\n abstract on(event: string, callback: (data: any) => void): void;\n abstract off(event: string, callback: (data: any) => void): void;\n abstract updateProperties(params: { room: string, host?: string }): void;\n abstract reconnect(listeners?: (data: any) => void): void;\n}\n"],"names":[],"mappings":"AAEO,MAAM,cAAiB,GAAA;AAEvB,MAAe,iBAAkB,CAAA;AAAA,EACtC,YAAsB,OAAkB,EAAA;AAAlB,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAAA;AAQxB;;;;"}
|
|
1
|
+
{"version":3,"file":"index17.js","sources":["../../../node_modules/.pnpm/@signe+sync@2.3.3/node_modules/@signe/sync/dist/index.js"],"sourcesContent":["import {\n __name\n} from \"./chunk-7QVYU63E.js\";\n\n// src/core.ts\nimport { isArraySubject, isObjectSubject, isSignal, isComputed } from \"@signe/reactive\";\n\n// src/utils.ts\nfunction isFunction(val) {\n return {}.toString.call(val) === \"[object Function]\";\n}\n__name(isFunction, \"isFunction\");\nfunction isClass(obj) {\n return typeof obj === \"function\" && obj.prototype && obj.prototype.constructor === obj;\n}\n__name(isClass, \"isClass\");\nvar isObject = /* @__PURE__ */ __name((item) => item && typeof item === \"object\" && !Array.isArray(item) && item !== null, \"isObject\");\nfunction isInstanceOfClass(value) {\n if (value === null || typeof value !== \"object\" || value === void 0 || Array.isArray(value)) {\n return false;\n }\n return Object.getPrototypeOf(value) !== Object.prototype;\n}\n__name(isInstanceOfClass, \"isInstanceOfClass\");\nfunction generateShortUUID() {\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let uuid = \"\";\n for (let i = 0; i < 8; i++) {\n const randomIndex = Math.floor(Math.random() * chars.length);\n uuid += chars[randomIndex];\n }\n return uuid;\n}\n__name(generateShortUUID, \"generateShortUUID\");\n\n// src/core.ts\nvar DELETE_TOKEN = \"$delete\";\nvar syncClass = /* @__PURE__ */ __name((instance, options = {}) => {\n const cacheSync = /* @__PURE__ */ new Map();\n const cachePersist = /* @__PURE__ */ new Map();\n instance.$valuesChanges = {\n set: /* @__PURE__ */ __name((path, value) => {\n cacheSync.set(path, value);\n options.onSync?.(cacheSync);\n }, \"set\"),\n setPersist: /* @__PURE__ */ __name((path, value) => {\n if (path == \"\") path = \".\";\n cachePersist.set(path, value);\n options.onPersist?.(cachePersist);\n }, \"setPersist\"),\n has: /* @__PURE__ */ __name((path) => {\n return cacheSync.has(path);\n }, \"has\"),\n get: /* @__PURE__ */ __name((path) => {\n return cacheSync.get(path);\n }, \"get\")\n };\n createSyncClass(instance);\n}, \"syncClass\");\nfunction createStatesSnapshot(instance) {\n let persistObject = {};\n if (instance?.$snapshot) {\n for (const key of instance.$snapshot.keys()) {\n const signal = instance.$snapshot.get(key);\n const persist2 = signal.options.persist ?? true;\n let value = signal();\n if (isObject(value) || Array.isArray(value)) {\n continue;\n }\n if (persist2) {\n persistObject[key] = value;\n }\n }\n }\n return persistObject;\n}\n__name(createStatesSnapshot, \"createStatesSnapshot\");\nfunction setMetadata(target, key, value) {\n const meta = target.constructor._propertyMetadata;\n const propId = meta?.get(key);\n if (propId) {\n if (isSignal(target[propId])) {\n target[propId].set(value);\n } else {\n target[propId] = value;\n }\n }\n}\n__name(setMetadata, \"setMetadata\");\nvar createSyncClass = /* @__PURE__ */ __name((currentClass, parentKey = null, parentClass = null, path = \"\") => {\n currentClass.$path = path;\n if (parentClass) {\n currentClass.$valuesChanges = parentClass.$valuesChanges;\n }\n if (parentKey) {\n setMetadata(currentClass, \"id\", parentKey);\n }\n if (currentClass.$snapshot) {\n for (const key of currentClass.$snapshot.keys()) {\n const signal = currentClass.$snapshot.get(key);\n const syncToClient = signal.options?.syncToClient ?? true;\n const persist2 = signal.options?.persist ?? true;\n let signalValue = signal();\n if (isObject(signalValue) || Array.isArray(signalValue)) {\n signalValue = {\n ...signalValue\n };\n }\n const newPath = (path ? path + \".\" : \"\") + key;\n if (syncToClient) {\n currentClass.$valuesChanges.set(newPath, signalValue);\n }\n if (persist2) {\n if (parentClass) currentClass.$valuesChanges.setPersist(path, signalValue);\n }\n if (isComputed(signal)) {\n signal.observable.subscribe((newValue) => {\n if (syncToClient) {\n currentClass.$valuesChanges.set(newPath, newValue);\n }\n });\n }\n }\n }\n}, \"createSyncClass\");\nvar type = /* @__PURE__ */ __name((_signal, path, options = {}, currentInstance) => {\n const { syncToClient = true, persist: persist2 = true } = options;\n let init = true;\n const handleObjectSubject = /* @__PURE__ */ __name((value, propPath) => {\n const newPath = `${propPath}${value.key ? `.${value.key}` : \"\"}`;\n if ([\n \"add\",\n \"reset\",\n \"update\"\n ].includes(value.type)) {\n if (isInstanceOfClass(value.value)) {\n createSyncClass(value.value, value.key, currentInstance, newPath);\n } else if (value.type === \"update\" && (isObject(value.value) || Array.isArray(value.value))) {\n createSyncClass(value.value, value.key, currentInstance, newPath);\n } else {\n savePath(newPath, value.value);\n }\n } else if (value.type === \"remove\") {\n savePath(newPath, DELETE_TOKEN);\n }\n }, \"handleObjectSubject\");\n const handleArraySubject = /* @__PURE__ */ __name((value, propPath) => {\n if (value.type === \"reset\" && Array.isArray(value.items)) {\n value.items.forEach((item, index) => {\n const newPath2 = `${propPath}.${index}`;\n if (isInstanceOfClass(item)) {\n createSyncClass(item, value.key, currentInstance, newPath2);\n } else {\n savePath(newPath2, item);\n }\n });\n return;\n }\n const newPath = `${propPath}.${value.index}`;\n const firstItem = value.items?.[0];\n if ([\n \"add\",\n \"update\"\n ].includes(value.type) && firstItem !== void 0) {\n if (isInstanceOfClass(firstItem)) {\n createSyncClass(firstItem, value.key, currentInstance, newPath);\n } else if (value.type === \"update\" && (isObject(firstItem) || Array.isArray(firstItem))) {\n createSyncClass(firstItem, value.key, currentInstance, newPath);\n } else {\n savePath(newPath, firstItem);\n }\n } else if (value.type === \"remove\") {\n savePath(newPath, DELETE_TOKEN);\n }\n }, \"handleArraySubject\");\n const savePath = /* @__PURE__ */ __name((propPath, value) => {\n if (syncToClient) {\n currentInstance.$valuesChanges.set(propPath, value);\n }\n if (persist2 && currentInstance.$path !== void 0) {\n currentInstance.$valuesChanges.setPersist(value == DELETE_TOKEN ? propPath : currentInstance.$path, value);\n }\n }, \"savePath\");\n const setupSubscription = /* @__PURE__ */ __name((signal, signalPath) => {\n if (!isSignal(signal)) return;\n if (syncToClient && currentInstance.$valuesChanges) {\n const initialValue = signal();\n currentInstance.$valuesChanges.set(signalPath, initialValue);\n }\n signal.options = options;\n signal.observable.subscribe((value) => {\n if (init) return;\n if (currentInstance.$path !== void 0) {\n const fullPath = `${currentInstance.$path ? currentInstance.$path + \".\" : \"\"}${signalPath}`;\n if (isComputed(signal)) {\n savePath(fullPath, value);\n } else if (isObjectSubject(signal._subject)) {\n handleObjectSubject(value, fullPath);\n } else if (isArraySubject(signal._subject)) {\n handleArraySubject(value, fullPath);\n } else {\n savePath(fullPath, value);\n }\n }\n });\n if (!currentInstance.$snapshot) {\n currentInstance.$snapshot = /* @__PURE__ */ new Map();\n }\n currentInstance.$snapshot.set(path, signal);\n }, \"setupSubscription\");\n if (!isSignal(_signal)) {\n if (_signal && typeof _signal === \"object\" && !Array.isArray(_signal)) {\n for (const key in _signal) {\n if (Object.prototype.hasOwnProperty.call(_signal, key)) {\n const value = _signal[key];\n const propertyPath = `${path}.${key}`;\n if (isSignal(value)) {\n setupSubscription(value, propertyPath);\n } else if (value && typeof value === \"object\" && !Array.isArray(value)) {\n type(value, propertyPath, options, currentInstance);\n }\n }\n }\n init = false;\n }\n return _signal;\n }\n setupSubscription(_signal, path);\n init = false;\n return _signal;\n}, \"type\");\n\n// src/decorators.ts\nfunction sync(options) {\n let classType;\n let persist2 = true;\n let syncToClient = true;\n if (typeof options === \"function\") {\n classType = options;\n } else if (typeof options === \"object\") {\n classType = options.classType;\n if (options.hasOwnProperty(\"persist\")) {\n persist2 = options.persist;\n }\n if (options.hasOwnProperty(\"syncToClient\")) {\n syncToClient = options.syncToClient;\n }\n }\n return function(target, propertyKey) {\n const privatePropertyKey = `__${propertyKey}`;\n const getter = /* @__PURE__ */ __name(function() {\n return this[privatePropertyKey];\n }, \"getter\");\n const setter = /* @__PURE__ */ __name(function(newVal) {\n this[privatePropertyKey] = type(newVal, propertyKey, {\n classType,\n persist: persist2,\n syncToClient\n }, this);\n }, \"setter\");\n Object.defineProperty(target, propertyKey, {\n get: getter,\n set: setter,\n enumerable: true,\n configurable: true\n });\n };\n}\n__name(sync, \"sync\");\nfunction id() {\n return function(target, propertyKey) {\n if (!target.constructor._propertyMetadata) {\n target.constructor._propertyMetadata = /* @__PURE__ */ new Map();\n }\n target.constructor._propertyMetadata.set(\"id\", propertyKey);\n };\n}\n__name(id, \"id\");\nfunction users(options) {\n return function(target, propertyKey) {\n if (!target.constructor._propertyMetadata) {\n target.constructor._propertyMetadata = /* @__PURE__ */ new Map();\n }\n target.constructor._propertyMetadata.set(\"users\", propertyKey);\n sync(options)(target, propertyKey);\n };\n}\n__name(users, \"users\");\nfunction persist() {\n return sync({\n persist: true,\n syncToClient: false\n });\n}\n__name(persist, \"persist\");\nfunction connected() {\n return function(target, propertyKey) {\n if (!target.constructor._propertyMetadata) {\n target.constructor._propertyMetadata = /* @__PURE__ */ new Map();\n }\n target.constructor._propertyMetadata.set(\"connected\", propertyKey);\n sync({\n persist: false\n })(target, propertyKey);\n };\n}\n__name(connected, \"connected\");\n\n// src/load.ts\nimport { isSignal as isSignal2 } from \"@signe/reactive\";\nfunction load(rootInstance, values, valueIsObject) {\n if (valueIsObject) {\n loadFromObject(rootInstance, values);\n } else {\n loadFromPaths(rootInstance, values);\n }\n}\n__name(load, \"load\");\nfunction loadFromPaths(rootInstance, values) {\n for (const [path, value] of Object.entries(values)) {\n const parts = path.split(\".\");\n loadValue(rootInstance, parts, value);\n }\n}\n__name(loadFromPaths, \"loadFromPaths\");\nfunction loadFromObject(rootInstance, values, currentPath = \"\") {\n for (let key in values) {\n const value = values[key];\n const newPath = currentPath ? `${currentPath}.${key}` : key;\n if (typeof value === \"object\" && !Array.isArray(value) && value !== null) {\n loadFromObject(rootInstance, value, newPath);\n } else {\n const parts = newPath.split(\".\");\n loadValue(rootInstance, parts, value);\n }\n }\n}\n__name(loadFromObject, \"loadFromObject\");\nfunction loadValue(rootInstance, parts, value) {\n let current = rootInstance;\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (i === parts.length - 1) {\n if (value == DELETE_TOKEN) {\n if (isSignal2(current)) {\n current = current();\n }\n Reflect.deleteProperty(current, part);\n } else if (current[part]?._subject) {\n current[part].set(value);\n } else if (isSignal2(current) && Array.isArray(current()) && !isNaN(Number(part))) {\n current()[Number(part)] = value;\n } else {\n current[part] = value;\n }\n } else {\n if (isSignal2(current)) {\n current = current();\n }\n const currentValue = current[part];\n if (currentValue === void 0) {\n const parentInstance = getByPath(rootInstance, parts.slice(0, i).join(\".\"));\n const classType = parentInstance?.options?.classType;\n if (classType) {\n current[part] = !isClass(classType) ? classType(part) : new classType();\n setMetadata(current[part], \"id\", part);\n } else {\n current[part] = {};\n }\n }\n current = current[part];\n }\n }\n}\n__name(loadValue, \"loadValue\");\nfunction getByPath(root, path) {\n const parts = path.split(\".\");\n let current = root;\n for (const part of parts) {\n if (isSignal2(current)) {\n current = current();\n }\n if (current[part]) {\n current = current[part];\n } else {\n return void 0;\n }\n }\n return current;\n}\n__name(getByPath, \"getByPath\");\nexport {\n DELETE_TOKEN,\n connected,\n createStatesSnapshot,\n createSyncClass,\n generateShortUUID,\n getByPath,\n id,\n isClass,\n isFunction,\n isInstanceOfClass,\n isObject,\n load,\n persist,\n setMetadata,\n sync,\n syncClass,\n type,\n users\n};\n//# sourceMappingURL=index.js.map"],"names":["isSignal2"],"mappings":"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","x_google_ignoreList":[0]}
|