@inditextech/weave-store-websockets 0.1.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/LICENSE +73 -0
- package/README.md +282 -0
- package/dist/awareness-BgEfnEJw.cjs +1 -0
- package/dist/awareness-BgEfnEJw.cjs.gz +0 -0
- package/dist/awareness-C8fdGy2v.js +453 -0
- package/dist/awareness-C8fdGy2v.js.gz +0 -0
- package/dist/client.cjs +2 -0
- package/dist/client.cjs.gz +0 -0
- package/dist/client.d.ts +56 -0
- package/dist/client.js +377 -0
- package/dist/client.js.gz +0 -0
- package/dist/server.cjs +1 -0
- package/dist/server.cjs.gz +0 -0
- package/dist/server.d.ts +59 -0
- package/dist/server.js +352 -0
- package/dist/server.js.gz +0 -0
- package/package.json +87 -0
package/dist/server.js
ADDED
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
var G = Object.defineProperty;
|
|
2
|
+
var H = (e, n, t) => n in e ? G(e, n, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[n] = t;
|
|
3
|
+
var d = (e, n, t) => (H(e, typeof n != "symbol" ? n + "" : n, t), t);
|
|
4
|
+
import { WebSocketServer as q } from "ws";
|
|
5
|
+
import * as g from "yjs";
|
|
6
|
+
import { D as Y, s as Q, w as A, e as Z, t as T, h as N, j as V, p as E, q as ee, r as te, z as ne, B as se, x as re, l as ae, k as oe, A as ie, g as ce } from "./awareness-C8fdGy2v.js";
|
|
7
|
+
import { W as st, C as rt } from "./awareness-C8fdGy2v.js";
|
|
8
|
+
import le from "http";
|
|
9
|
+
var b = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
|
|
10
|
+
function fe(e) {
|
|
11
|
+
return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
|
|
12
|
+
}
|
|
13
|
+
var pe = "Expected a function", K = NaN, de = "[object Symbol]", ue = /^\s+|\s+$/g, ye = /^[-+]0x[0-9a-f]+$/i, ge = /^0b[01]+$/i, he = /^0o[0-7]+$/i, me = parseInt, we = typeof b == "object" && b && b.Object === Object && b, Se = typeof self == "object" && self && self.Object === Object && self, Ce = we || Se || Function("return this")(), Ae = Object.prototype, Te = Ae.toString, Ee = Math.max, ve = Math.min, B = function() {
|
|
14
|
+
return Ce.Date.now();
|
|
15
|
+
};
|
|
16
|
+
function Le(e, n, t) {
|
|
17
|
+
var r, s, i, a, o, p, l = 0, h = !1, f = !1, u = !0;
|
|
18
|
+
if (typeof e != "function")
|
|
19
|
+
throw new TypeError(pe);
|
|
20
|
+
n = D(n) || 0, R(t) && (h = !!t.leading, f = "maxWait" in t, i = f ? Ee(D(t.maxWait) || 0, n) : i, u = "trailing" in t ? !!t.trailing : u);
|
|
21
|
+
function O(c) {
|
|
22
|
+
var y = r, S = s;
|
|
23
|
+
return r = s = void 0, l = c, a = e.apply(S, y), a;
|
|
24
|
+
}
|
|
25
|
+
function X(c) {
|
|
26
|
+
return l = c, o = setTimeout(L, n), h ? O(c) : a;
|
|
27
|
+
}
|
|
28
|
+
function J(c) {
|
|
29
|
+
var y = c - p, S = c - l, x = n - y;
|
|
30
|
+
return f ? ve(x, i - S) : x;
|
|
31
|
+
}
|
|
32
|
+
function W(c) {
|
|
33
|
+
var y = c - p, S = c - l;
|
|
34
|
+
return p === void 0 || y >= n || y < 0 || f && S >= i;
|
|
35
|
+
}
|
|
36
|
+
function L() {
|
|
37
|
+
var c = B();
|
|
38
|
+
if (W(c))
|
|
39
|
+
return j(c);
|
|
40
|
+
o = setTimeout(L, J(c));
|
|
41
|
+
}
|
|
42
|
+
function j(c) {
|
|
43
|
+
return o = void 0, u && r ? O(c) : (r = s = void 0, a);
|
|
44
|
+
}
|
|
45
|
+
function $() {
|
|
46
|
+
o !== void 0 && clearTimeout(o), l = 0, r = p = s = o = void 0;
|
|
47
|
+
}
|
|
48
|
+
function z() {
|
|
49
|
+
return o === void 0 ? a : j(B());
|
|
50
|
+
}
|
|
51
|
+
function U() {
|
|
52
|
+
var c = B(), y = W(c);
|
|
53
|
+
if (r = arguments, s = this, p = c, y) {
|
|
54
|
+
if (o === void 0)
|
|
55
|
+
return X(p);
|
|
56
|
+
if (f)
|
|
57
|
+
return o = setTimeout(L, n), O(p);
|
|
58
|
+
}
|
|
59
|
+
return o === void 0 && (o = setTimeout(L, n)), a;
|
|
60
|
+
}
|
|
61
|
+
return U.cancel = $, U.flush = z, U;
|
|
62
|
+
}
|
|
63
|
+
function R(e) {
|
|
64
|
+
var n = typeof e;
|
|
65
|
+
return !!e && (n == "object" || n == "function");
|
|
66
|
+
}
|
|
67
|
+
function be(e) {
|
|
68
|
+
return !!e && typeof e == "object";
|
|
69
|
+
}
|
|
70
|
+
function Ie(e) {
|
|
71
|
+
return typeof e == "symbol" || be(e) && Te.call(e) == de;
|
|
72
|
+
}
|
|
73
|
+
function D(e) {
|
|
74
|
+
if (typeof e == "number")
|
|
75
|
+
return e;
|
|
76
|
+
if (Ie(e))
|
|
77
|
+
return K;
|
|
78
|
+
if (R(e)) {
|
|
79
|
+
var n = typeof e.valueOf == "function" ? e.valueOf() : e;
|
|
80
|
+
e = R(n) ? n + "" : n;
|
|
81
|
+
}
|
|
82
|
+
if (typeof e != "string")
|
|
83
|
+
return e === 0 ? e : +e;
|
|
84
|
+
e = e.replace(ue, "");
|
|
85
|
+
var t = ge.test(e);
|
|
86
|
+
return t || he.test(e) ? me(e.slice(2), t ? 2 : 8) : ye.test(e) ? K : +e;
|
|
87
|
+
}
|
|
88
|
+
var _e = Le;
|
|
89
|
+
const Oe = /* @__PURE__ */ fe(_e), M = process.env.CALLBACK_URL ? new URL(process.env.CALLBACK_URL) : null, Ue = Y(
|
|
90
|
+
process.env.CALLBACK_TIMEOUT || "5000"
|
|
91
|
+
), P = process.env.CALLBACK_OBJECTS ? JSON.parse(process.env.CALLBACK_OBJECTS) : {}, Be = !!M, Re = (e, n, t) => {
|
|
92
|
+
const s = {
|
|
93
|
+
room: t.name,
|
|
94
|
+
data: {}
|
|
95
|
+
};
|
|
96
|
+
Object.keys(P).forEach((a) => {
|
|
97
|
+
const o = P[a];
|
|
98
|
+
s.data[a] = {
|
|
99
|
+
type: o,
|
|
100
|
+
content: ke(a, o, t).toJSON()
|
|
101
|
+
};
|
|
102
|
+
}), M && Me(M, Ue, s);
|
|
103
|
+
}, Me = (e, n, t) => {
|
|
104
|
+
t = JSON.stringify(t);
|
|
105
|
+
const r = {
|
|
106
|
+
hostname: e.hostname,
|
|
107
|
+
port: e.port,
|
|
108
|
+
path: e.pathname,
|
|
109
|
+
timeout: n,
|
|
110
|
+
method: "POST",
|
|
111
|
+
headers: {
|
|
112
|
+
"Content-Type": "application/json",
|
|
113
|
+
"Content-Length": Buffer.byteLength(t)
|
|
114
|
+
}
|
|
115
|
+
}, s = le.request(r);
|
|
116
|
+
s.on("timeout", () => {
|
|
117
|
+
console.warn("Callback request timed out."), s.abort();
|
|
118
|
+
}), s.on("error", (i) => {
|
|
119
|
+
console.error("Callback request error.", i), s.abort();
|
|
120
|
+
}), s.write(t), s.end();
|
|
121
|
+
}, ke = (e, n, t) => {
|
|
122
|
+
switch (n) {
|
|
123
|
+
case "Array":
|
|
124
|
+
return t.getArray(e);
|
|
125
|
+
case "Map":
|
|
126
|
+
return t.getMap(e);
|
|
127
|
+
case "Text":
|
|
128
|
+
return t.getText(e);
|
|
129
|
+
case "XmlFragment":
|
|
130
|
+
return t.getXmlFragment(e);
|
|
131
|
+
case "XmlElement":
|
|
132
|
+
return t.getXmlElement(e);
|
|
133
|
+
default:
|
|
134
|
+
return {};
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
let m;
|
|
138
|
+
const We = parseInt(
|
|
139
|
+
process.env.CALLBACK_DEBOUNCE_WAIT || "2000"
|
|
140
|
+
), je = parseInt(
|
|
141
|
+
process.env.CALLBACK_DEBOUNCE_MAXWAIT || "10000"
|
|
142
|
+
), xe = 0, Ke = 1, De = process.env.GC !== "false" && process.env.GC !== "0", F = /* @__PURE__ */ new Map(), I = /* @__PURE__ */ new Map(), _ = 0, k = 1, Pe = (e, n, t) => {
|
|
143
|
+
const r = E();
|
|
144
|
+
A(r, _), ce(r, e);
|
|
145
|
+
const s = T(r);
|
|
146
|
+
t.conns.forEach((i, a) => v(t, a, s));
|
|
147
|
+
};
|
|
148
|
+
let Fe = () => Promise.resolve();
|
|
149
|
+
class Ne extends g.Doc {
|
|
150
|
+
constructor(t) {
|
|
151
|
+
super({ gc: De });
|
|
152
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
153
|
+
d(this, "name");
|
|
154
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
155
|
+
d(this, "conns");
|
|
156
|
+
d(this, "awareness");
|
|
157
|
+
d(this, "whenInitialized");
|
|
158
|
+
this.name = t, this.conns = /* @__PURE__ */ new Map(), this.awareness = new ie(this), this.awareness.setLocalState(null);
|
|
159
|
+
const r = ({
|
|
160
|
+
added: s,
|
|
161
|
+
updated: i,
|
|
162
|
+
removed: a
|
|
163
|
+
}, o) => {
|
|
164
|
+
const p = s.concat(i, a);
|
|
165
|
+
if (o !== null) {
|
|
166
|
+
const f = (
|
|
167
|
+
/** @type {Set<number>} */
|
|
168
|
+
this.conns.get(o)
|
|
169
|
+
);
|
|
170
|
+
f !== void 0 && (s.forEach((u) => {
|
|
171
|
+
f.add(u);
|
|
172
|
+
}), a.forEach((u) => {
|
|
173
|
+
f.delete(u);
|
|
174
|
+
}));
|
|
175
|
+
}
|
|
176
|
+
const l = E();
|
|
177
|
+
A(l, k), N(
|
|
178
|
+
l,
|
|
179
|
+
V(this.awareness, p)
|
|
180
|
+
);
|
|
181
|
+
const h = T(l);
|
|
182
|
+
this.conns.forEach((f, u) => {
|
|
183
|
+
v(this, u, h);
|
|
184
|
+
});
|
|
185
|
+
};
|
|
186
|
+
this.awareness.on("update", r), this.on("update", Pe), Be && this.on(
|
|
187
|
+
"update",
|
|
188
|
+
Oe(Re, We, {
|
|
189
|
+
maxWait: je
|
|
190
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
191
|
+
})
|
|
192
|
+
), this.whenInitialized = Fe();
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
const Ve = (e, n, t = !0) => Q(F, e, async () => {
|
|
196
|
+
let r;
|
|
197
|
+
m && m.fetchRoom && (r = await m.fetchRoom(e));
|
|
198
|
+
const s = new Ne(e);
|
|
199
|
+
return s.gc = t, F.set(e, s), r ? g.applyUpdate(s, r) : n(s), await Ge(e, s), s;
|
|
200
|
+
}), Xe = (e, n, t) => {
|
|
201
|
+
try {
|
|
202
|
+
const r = E(), s = ee(t);
|
|
203
|
+
switch (te(s)) {
|
|
204
|
+
case _:
|
|
205
|
+
A(r, _), re(s, r, n, e), ae(r) > 1 && v(n, e, T(r));
|
|
206
|
+
break;
|
|
207
|
+
case k: {
|
|
208
|
+
ne(
|
|
209
|
+
n.awareness,
|
|
210
|
+
se(s),
|
|
211
|
+
e
|
|
212
|
+
);
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
} catch (r) {
|
|
217
|
+
console.error(r);
|
|
218
|
+
}
|
|
219
|
+
}, w = (e, n) => {
|
|
220
|
+
if (e.conns.has(n)) {
|
|
221
|
+
const t = e.conns.get(n);
|
|
222
|
+
e.conns.delete(n), I.has(e.name) && clearInterval(I.get(e.name)), oe(
|
|
223
|
+
e.awareness,
|
|
224
|
+
Array.from(t),
|
|
225
|
+
null
|
|
226
|
+
);
|
|
227
|
+
}
|
|
228
|
+
n.close();
|
|
229
|
+
}, v = (e, n, t) => {
|
|
230
|
+
n.readyState !== xe && n.readyState !== Ke && w(e, n);
|
|
231
|
+
try {
|
|
232
|
+
n.send(t, {}, (r) => {
|
|
233
|
+
r != null && w(e, n);
|
|
234
|
+
});
|
|
235
|
+
} catch {
|
|
236
|
+
w(e, n);
|
|
237
|
+
}
|
|
238
|
+
}, Je = 3e4, $e = (e) => {
|
|
239
|
+
m = e;
|
|
240
|
+
}, ze = (e, n) => async (t, r, { gc: s = !0 } = {}) => {
|
|
241
|
+
const i = e(r);
|
|
242
|
+
if (!i)
|
|
243
|
+
return;
|
|
244
|
+
t.binaryType = "arraybuffer";
|
|
245
|
+
const a = await Ve(i, n, s);
|
|
246
|
+
a.conns.set(t, /* @__PURE__ */ new Set()), t.on(
|
|
247
|
+
"message",
|
|
248
|
+
(l) => Xe(t, a, new Uint8Array(l))
|
|
249
|
+
);
|
|
250
|
+
let o = !0;
|
|
251
|
+
const p = setInterval(() => {
|
|
252
|
+
if (!o)
|
|
253
|
+
a.conns.has(t) && w(a, t), clearInterval(p);
|
|
254
|
+
else if (a.conns.has(t)) {
|
|
255
|
+
o = !1;
|
|
256
|
+
try {
|
|
257
|
+
t.ping();
|
|
258
|
+
} catch {
|
|
259
|
+
w(a, t), clearInterval(p);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}, Je);
|
|
263
|
+
t.on("close", () => {
|
|
264
|
+
w(a, t), clearInterval(p);
|
|
265
|
+
}), t.on("pong", () => {
|
|
266
|
+
o = !0;
|
|
267
|
+
});
|
|
268
|
+
{
|
|
269
|
+
const l = E();
|
|
270
|
+
A(l, _), Z(l, a), v(a, t, T(l));
|
|
271
|
+
const h = a.awareness.getStates();
|
|
272
|
+
if (h.size > 0) {
|
|
273
|
+
const f = E();
|
|
274
|
+
A(f, k), N(
|
|
275
|
+
f,
|
|
276
|
+
V(
|
|
277
|
+
a.awareness,
|
|
278
|
+
Array.from(h.keys())
|
|
279
|
+
)
|
|
280
|
+
), v(a, t, T(f));
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
};
|
|
284
|
+
async function Ge(e, n) {
|
|
285
|
+
if (!I.has(e)) {
|
|
286
|
+
const t = async () => {
|
|
287
|
+
const s = g.encodeStateAsUpdate(n);
|
|
288
|
+
if (m && m.persistRoom)
|
|
289
|
+
try {
|
|
290
|
+
await m.persistRoom(e, s);
|
|
291
|
+
} catch (i) {
|
|
292
|
+
console.error(i);
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
t();
|
|
296
|
+
const r = setInterval(
|
|
297
|
+
t,
|
|
298
|
+
parseInt(process.env.WEAVE_WEBSOCKETS_STATE_SYNC_FREQUENCY_SEG ?? "10") * 1e3
|
|
299
|
+
);
|
|
300
|
+
I.set(e, r);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
const C = function(e) {
|
|
304
|
+
const n = new g.Map();
|
|
305
|
+
n.set("key", e), n.set("type", "layer");
|
|
306
|
+
const t = new g.Map();
|
|
307
|
+
return t.set("id", e), t.set("nodeType", "layer"), t.set("children", new g.Array()), n.set("props", t), n;
|
|
308
|
+
};
|
|
309
|
+
function He(e) {
|
|
310
|
+
const n = new g.Array();
|
|
311
|
+
n.insert(0, [
|
|
312
|
+
C("gridLayer"),
|
|
313
|
+
C("mainLayer"),
|
|
314
|
+
C("selectionLayer"),
|
|
315
|
+
C("usersPointersLayer"),
|
|
316
|
+
C("utilityLayer")
|
|
317
|
+
]);
|
|
318
|
+
const t = new g.Map();
|
|
319
|
+
t.set("id", "stage"), t.set("children", n), e.getMap("weave").set("key", "stage"), e.getMap("weave").set("type", "stage"), e.getMap("weave").set("props", t);
|
|
320
|
+
}
|
|
321
|
+
class et {
|
|
322
|
+
constructor({
|
|
323
|
+
initialState: n = He,
|
|
324
|
+
performUpgrade: t,
|
|
325
|
+
extractRoomId: r,
|
|
326
|
+
persistRoom: s,
|
|
327
|
+
fetchRoom: i
|
|
328
|
+
}) {
|
|
329
|
+
d(this, "initialState");
|
|
330
|
+
d(this, "performUpgrade");
|
|
331
|
+
d(this, "extractRoomId");
|
|
332
|
+
d(this, "wss");
|
|
333
|
+
d(this, "persistRoom");
|
|
334
|
+
d(this, "fetchRoom");
|
|
335
|
+
this.initialState = n, this.performUpgrade = t, this.extractRoomId = r, this.persistRoom = s, this.fetchRoom = i, this.wss = new q({ noServer: !0 }), $e(this), this.wss.on(
|
|
336
|
+
"connection",
|
|
337
|
+
ze(this.extractRoomId, this.initialState)
|
|
338
|
+
);
|
|
339
|
+
}
|
|
340
|
+
handleUpgrade(n) {
|
|
341
|
+
n.on("upgrade", async (t, r, s) => {
|
|
342
|
+
await this.performUpgrade(t) && this.wss.handleUpgrade(t, r, s, (a) => {
|
|
343
|
+
this.wss.emit("connection", a, t);
|
|
344
|
+
});
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
export {
|
|
349
|
+
st as WEAVE_STORE_WEBSOCKETS,
|
|
350
|
+
rt as WEAVE_STORE_WEBSOCKETS_CONNECTION_STATUS,
|
|
351
|
+
et as WeaveWebsocketsServer
|
|
352
|
+
};
|
|
Binary file
|
package/package.json
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@inditextech/weave-store-websockets",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"author": "Jesus Manuel Piñeiro Cid <jesusmpc@inditex.com>",
|
|
7
|
+
"homepage": "https://inditextech.github.io/weavejs",
|
|
8
|
+
"repository": "github:InditexTech/weavejs",
|
|
9
|
+
"maintainers": [
|
|
10
|
+
{
|
|
11
|
+
"name": "Jesus Manuel Piñeiro Cid",
|
|
12
|
+
"email": "jesusmpc@inditex.com"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"exports": {
|
|
16
|
+
"./client": {
|
|
17
|
+
"import": "./dist/client.js",
|
|
18
|
+
"require": "./dist/client.cjs"
|
|
19
|
+
},
|
|
20
|
+
"./server": {
|
|
21
|
+
"import": "./dist/server.js",
|
|
22
|
+
"require": "./dist/server.cjs"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"types": "dist/store-websockets.d.ts",
|
|
26
|
+
"files": [
|
|
27
|
+
"dist"
|
|
28
|
+
],
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build:snapshot": "vite build --mode=development --sourcemap --emptyOutDir",
|
|
31
|
+
"build": "vite build --mode=production --minify --emptyOutDir",
|
|
32
|
+
"bump:snapshot": "npm version $npm_package_version.$(date \"+%s\")",
|
|
33
|
+
"bundle:analyze": "vite-bundle-visualizer",
|
|
34
|
+
"check": "echo \"Monorepo test script\" && exit 0",
|
|
35
|
+
"dev": "vite build --watch",
|
|
36
|
+
"dev:server": "tsx --env-file=.env ./dev-server/server.ts",
|
|
37
|
+
"dist:tag": "npm dist-tag add \"$(jq -r .name package.json)@$(jq -r .version package.json)\" \"$PR_TAG\" --registry=\"$NPM_PUBLISHING_REGISTRY\" --verbose",
|
|
38
|
+
"format": "npm run lint -- --quiet --fix --fix-type layout",
|
|
39
|
+
"link": "npm link",
|
|
40
|
+
"lint:fix": "npm run lint -- --fix",
|
|
41
|
+
"lint": "eslint ./src",
|
|
42
|
+
"publish:snapshot": "npm publish",
|
|
43
|
+
"release:perform": "npm publish --access public",
|
|
44
|
+
"release:prepare": "npm run verify",
|
|
45
|
+
"test": "vitest --passWithNoTests",
|
|
46
|
+
"types:check": "tsc --noEmit",
|
|
47
|
+
"verify": "npm run lint && npm run test && npm run build",
|
|
48
|
+
"version:development": "npm version $(npm version minor)-SNAPSHOT",
|
|
49
|
+
"version:release": "npm version $RELEASE_VERSION -m \"[npm-scripts] prepare release $RELEASE_VERSION\" --tag-version-prefix \"\""
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@inditextech/weave-sdk": "0.1.0",
|
|
53
|
+
"@inditextech/weave-types": "0.1.0",
|
|
54
|
+
"@types/express": "^5.0.1",
|
|
55
|
+
"@types/lodash.debounce": "^4.0.9",
|
|
56
|
+
"@types/ws": "^8.18.1",
|
|
57
|
+
"@typescript-eslint/eslint-plugin": "8.26.0",
|
|
58
|
+
"@typescript-eslint/parser": "8.26.0",
|
|
59
|
+
"@vitest/coverage-v8": "1.6.0",
|
|
60
|
+
"@vitest/ui": "1.6.0",
|
|
61
|
+
"eslint": "8.57.1",
|
|
62
|
+
"express": "^5.1.0",
|
|
63
|
+
"globals": "15.14.0",
|
|
64
|
+
"typescript-eslint": "8.22.0",
|
|
65
|
+
"vite": "5.2.9",
|
|
66
|
+
"vite-bundle-visualizer": "1.1.0",
|
|
67
|
+
"vite-plugin-compression2": "1.0.0",
|
|
68
|
+
"vite-plugin-dts": "4.0.3",
|
|
69
|
+
"vitest": "1.6.0",
|
|
70
|
+
"vitest-sonar-reporter": "2.0.0",
|
|
71
|
+
"ws": "^8.18.1"
|
|
72
|
+
},
|
|
73
|
+
"peerDependencies": {
|
|
74
|
+
"y-websocket": ">= 2.1.0",
|
|
75
|
+
"yjs": ">= 13.6.23"
|
|
76
|
+
},
|
|
77
|
+
"engines": {
|
|
78
|
+
"node": "^18.12 || ^20.11 || ^22.11",
|
|
79
|
+
"npm": ">= 8.19.x"
|
|
80
|
+
},
|
|
81
|
+
"nx": {
|
|
82
|
+
"implicitDependencies": [
|
|
83
|
+
"@inditextech/weave-sdk",
|
|
84
|
+
"@inditextech/weave-types"
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
}
|