@thatopen/services 0.3.7 → 0.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/built-in/index.d.ts +203 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +44 -43
- package/docs/builtin/paths.json +8 -0
- package/package.json +95 -95
- package/src/built-in/ClashesManager/example.ts +285 -0
- package/src/built-in/UIManager/src/clashes-panel/example.ts +164 -0
- package/src/built-in/index.ts +881 -678
package/dist/index.es.js
CHANGED
|
@@ -2,8 +2,8 @@ var Fe = Object.defineProperty;
|
|
|
2
2
|
var ge = (n) => {
|
|
3
3
|
throw TypeError(n);
|
|
4
4
|
};
|
|
5
|
-
var
|
|
6
|
-
var _ = (n, e, t) =>
|
|
5
|
+
var Me = (n, e, t) => e in n ? Fe(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t;
|
|
6
|
+
var _ = (n, e, t) => Me(n, typeof e != "symbol" ? e + "" : e, t), J = (n, e, t) => e.has(n) || ge("Cannot " + t);
|
|
7
7
|
var j = (n, e, t) => (J(n, e, "read from private field"), t ? t.call(n) : e.get(n)), Y = (n, e, t) => e.has(n) ? ge("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(n) : e.set(n, t), we = (n, e, t, s) => (J(n, e, "write to private field"), s ? s.call(n, t) : e.set(n, t), t), c = (n, e, t) => (J(n, e, "access private method"), t);
|
|
8
8
|
const k = /* @__PURE__ */ Object.create(null);
|
|
9
9
|
k.open = "0";
|
|
@@ -24,22 +24,22 @@ const ee = { type: "error", data: "parser error" }, Ae = typeof Blob == "functio
|
|
|
24
24
|
e("b" + (s || ""));
|
|
25
25
|
}, t.readAsDataURL(n);
|
|
26
26
|
};
|
|
27
|
-
function
|
|
27
|
+
function be(n) {
|
|
28
28
|
return n instanceof Uint8Array ? n : n instanceof ArrayBuffer ? new Uint8Array(n) : new Uint8Array(n.buffer, n.byteOffset, n.byteLength);
|
|
29
29
|
}
|
|
30
30
|
let K;
|
|
31
|
-
function
|
|
31
|
+
function Ve(n, e) {
|
|
32
32
|
if (Ae && n.data instanceof Blob)
|
|
33
|
-
return n.data.arrayBuffer().then(
|
|
33
|
+
return n.data.arrayBuffer().then(be).then(e);
|
|
34
34
|
if (Oe && (n.data instanceof ArrayBuffer || Se(n.data)))
|
|
35
|
-
return e(
|
|
35
|
+
return e(be(n.data));
|
|
36
36
|
ue(n, !1, (t) => {
|
|
37
37
|
K || (K = new TextEncoder()), e(K.encode(t));
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
|
-
const
|
|
41
|
-
for (let n = 0; n <
|
|
42
|
-
N[
|
|
40
|
+
const Ee = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", N = typeof Uint8Array > "u" ? [] : new Uint8Array(256);
|
|
41
|
+
for (let n = 0; n < Ee.length; n++)
|
|
42
|
+
N[Ee.charCodeAt(n)] = n;
|
|
43
43
|
const He = (n) => {
|
|
44
44
|
let e = n.length * 0.75, t = n.length, s, r = 0, i, o, h, l;
|
|
45
45
|
n[n.length - 1] === "=" && (e--, n[n.length - 2] === "=" && e--);
|
|
@@ -97,7 +97,7 @@ const He = (n) => {
|
|
|
97
97
|
function Ke() {
|
|
98
98
|
return new TransformStream({
|
|
99
99
|
transform(n, e) {
|
|
100
|
-
|
|
100
|
+
Ve(n, (t) => {
|
|
101
101
|
const s = t.length;
|
|
102
102
|
let r;
|
|
103
103
|
if (s < 126)
|
|
@@ -219,13 +219,13 @@ g.prototype.listeners = function(n) {
|
|
|
219
219
|
g.prototype.hasListeners = function(n) {
|
|
220
220
|
return !!this.listeners(n).length;
|
|
221
221
|
};
|
|
222
|
-
const H = typeof Promise == "function" && typeof Promise.resolve == "function" ? (e) => Promise.resolve().then(e) : (e, t) => t(e, 0),
|
|
222
|
+
const H = typeof Promise == "function" && typeof Promise.resolve == "function" ? (e) => Promise.resolve().then(e) : (e, t) => t(e, 0), b = typeof self < "u" ? self : typeof window < "u" ? window : Function("return this")(), Xe = "arraybuffer";
|
|
223
223
|
function Be(n, ...e) {
|
|
224
224
|
return e.reduce((t, s) => (n.hasOwnProperty(s) && (t[s] = n[s]), t), {});
|
|
225
225
|
}
|
|
226
|
-
const Qe =
|
|
226
|
+
const Qe = b.setTimeout, Ze = b.clearTimeout;
|
|
227
227
|
function G(n, e) {
|
|
228
|
-
e.useNativeTimers ? (n.setTimeoutFn = Qe.bind(
|
|
228
|
+
e.useNativeTimers ? (n.setTimeoutFn = Qe.bind(b), n.clearTimeoutFn = Ze.bind(b)) : (n.setTimeoutFn = b.setTimeout.bind(b), n.clearTimeoutFn = b.clearTimeout.bind(b));
|
|
229
229
|
}
|
|
230
230
|
const et = 1.33;
|
|
231
231
|
function tt(n) {
|
|
@@ -602,7 +602,7 @@ if (typeof document < "u") {
|
|
|
602
602
|
if (typeof attachEvent == "function")
|
|
603
603
|
attachEvent("onunload", Te);
|
|
604
604
|
else if (typeof addEventListener == "function") {
|
|
605
|
-
const n = "onpagehide" in
|
|
605
|
+
const n = "onpagehide" in b ? "pagehide" : "unload";
|
|
606
606
|
addEventListener(n, Te, !1);
|
|
607
607
|
}
|
|
608
608
|
}
|
|
@@ -635,7 +635,7 @@ function Pe(n) {
|
|
|
635
635
|
}
|
|
636
636
|
if (!e)
|
|
637
637
|
try {
|
|
638
|
-
return new
|
|
638
|
+
return new b[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP");
|
|
639
639
|
} catch {
|
|
640
640
|
}
|
|
641
641
|
}
|
|
@@ -696,7 +696,7 @@ class ft extends fe {
|
|
|
696
696
|
return this.opts.timestampRequests && (t[this.opts.timestampParam] = xe()), this.supportsBinary || (t.b64 = 1), this.createUri(e, t);
|
|
697
697
|
}
|
|
698
698
|
}
|
|
699
|
-
const z =
|
|
699
|
+
const z = b.WebSocket || b.MozWebSocket;
|
|
700
700
|
class pt extends ft {
|
|
701
701
|
createSocket(e, t, s) {
|
|
702
702
|
return Le ? new z(e, t, s) : t ? new z(e, t) : new z(e);
|
|
@@ -1066,7 +1066,7 @@ class $ extends g {
|
|
|
1066
1066
|
}
|
|
1067
1067
|
}
|
|
1068
1068
|
$.protocol = Re;
|
|
1069
|
-
class
|
|
1069
|
+
class bt extends $ {
|
|
1070
1070
|
constructor() {
|
|
1071
1071
|
super(...arguments), this._upgrades = [];
|
|
1072
1072
|
}
|
|
@@ -1138,7 +1138,7 @@ class Et extends $ {
|
|
|
1138
1138
|
return t;
|
|
1139
1139
|
}
|
|
1140
1140
|
}
|
|
1141
|
-
let
|
|
1141
|
+
let Et = class extends bt {
|
|
1142
1142
|
constructor(e, t = {}) {
|
|
1143
1143
|
const s = typeof e == "object" ? e : t;
|
|
1144
1144
|
(!s.transports || s.transports && typeof s.transports[0] == "string") && (s.transports = (s.transports || ["polling", "websocket", "webtransport"]).map((r) => yt[r]).filter((r) => !!r)), super(e, s);
|
|
@@ -1420,7 +1420,7 @@ const xt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
|
1420
1420
|
return p;
|
|
1421
1421
|
}
|
|
1422
1422
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
1423
|
-
function
|
|
1423
|
+
function E(n, e, t) {
|
|
1424
1424
|
return n.on(e, t), function() {
|
|
1425
1425
|
n.off(e, t);
|
|
1426
1426
|
};
|
|
@@ -1468,10 +1468,10 @@ class qe extends g {
|
|
|
1468
1468
|
return;
|
|
1469
1469
|
const e = this.io;
|
|
1470
1470
|
this.subs = [
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1471
|
+
E(e, "open", this.onopen.bind(this)),
|
|
1472
|
+
E(e, "packet", this.onpacket.bind(this)),
|
|
1473
|
+
E(e, "error", this.onerror.bind(this)),
|
|
1474
|
+
E(e, "close", this.onclose.bind(this))
|
|
1475
1475
|
];
|
|
1476
1476
|
}
|
|
1477
1477
|
/**
|
|
@@ -2100,14 +2100,14 @@ class ie extends g {
|
|
|
2100
2100
|
open(e) {
|
|
2101
2101
|
if (~this._readyState.indexOf("open"))
|
|
2102
2102
|
return this;
|
|
2103
|
-
this.engine = new
|
|
2103
|
+
this.engine = new Et(this.uri, this.opts);
|
|
2104
2104
|
const t = this.engine, s = this;
|
|
2105
2105
|
this._readyState = "opening", this.skipReconnect = !1;
|
|
2106
|
-
const r =
|
|
2106
|
+
const r = E(t, "open", function() {
|
|
2107
2107
|
s.onopen(), e && e();
|
|
2108
2108
|
}), i = (h) => {
|
|
2109
2109
|
this.cleanup(), this._readyState = "closed", this.emitReserved("error", h), e ? e(h) : this.maybeReconnectOnOpen();
|
|
2110
|
-
}, o =
|
|
2110
|
+
}, o = E(t, "error", i);
|
|
2111
2111
|
if (this._timeout !== !1) {
|
|
2112
2112
|
const h = this._timeout, l = this.setTimeoutFn(() => {
|
|
2113
2113
|
r(), i(new Error("timeout")), t.close();
|
|
@@ -2136,12 +2136,12 @@ class ie extends g {
|
|
|
2136
2136
|
this.cleanup(), this._readyState = "open", this.emitReserved("open");
|
|
2137
2137
|
const e = this.engine;
|
|
2138
2138
|
this.subs.push(
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2139
|
+
E(e, "ping", this.onping.bind(this)),
|
|
2140
|
+
E(e, "data", this.ondata.bind(this)),
|
|
2141
|
+
E(e, "error", this.onerror.bind(this)),
|
|
2142
|
+
E(e, "close", this.onclose.bind(this)),
|
|
2143
2143
|
// @ts-ignore
|
|
2144
|
-
|
|
2144
|
+
E(this.decoder, "decoded", this.ondecoded.bind(this))
|
|
2145
2145
|
);
|
|
2146
2146
|
}
|
|
2147
2147
|
/**
|
|
@@ -2327,7 +2327,7 @@ class Lt extends Error {
|
|
|
2327
2327
|
}
|
|
2328
2328
|
}
|
|
2329
2329
|
const T = "item/folder", f = "item", O = "processor", It = "npm-registry", S = "hidden", X = "FILE", Q = "TOOL", Z = "APP";
|
|
2330
|
-
var a, ae, u, C,
|
|
2330
|
+
var a, ae, u, C, M, V, ce, he, Ue;
|
|
2331
2331
|
const ye = class ye {
|
|
2332
2332
|
/**
|
|
2333
2333
|
* Creates a new EngineServicesClient instance.
|
|
@@ -2475,7 +2475,7 @@ const ye = class ye {
|
|
|
2475
2475
|
* @returns The created item and its first version.
|
|
2476
2476
|
*/
|
|
2477
2477
|
async createFile(e) {
|
|
2478
|
-
return await c(this, a,
|
|
2478
|
+
return await c(this, a, V).call(this, e, X);
|
|
2479
2479
|
}
|
|
2480
2480
|
/**
|
|
2481
2481
|
* Updates an existing file. Can rename, move to a different folder,
|
|
@@ -2508,7 +2508,7 @@ const ye = class ye {
|
|
|
2508
2508
|
* @returns A fetch Response containing the file data.
|
|
2509
2509
|
*/
|
|
2510
2510
|
async downloadFile(e, t) {
|
|
2511
|
-
return await c(this, a,
|
|
2511
|
+
return await c(this, a, M).call(this, e, t);
|
|
2512
2512
|
}
|
|
2513
2513
|
/**
|
|
2514
2514
|
* Retrieves the free-JSON metadata for a specific file version.
|
|
@@ -2655,7 +2655,7 @@ const ye = class ye {
|
|
|
2655
2655
|
*/
|
|
2656
2656
|
async createComponent(e) {
|
|
2657
2657
|
const { componentProps: t } = e;
|
|
2658
|
-
return await c(this, a,
|
|
2658
|
+
return await c(this, a, V).call(this, e, Q, t);
|
|
2659
2659
|
}
|
|
2660
2660
|
/**
|
|
2661
2661
|
* Updates an existing component. Can rename, move, and/or upload a new version.
|
|
@@ -2674,7 +2674,7 @@ const ye = class ye {
|
|
|
2674
2674
|
* @returns A fetch Response containing the ZIP data.
|
|
2675
2675
|
*/
|
|
2676
2676
|
async downloadComponent(e, t) {
|
|
2677
|
-
return await c(this, a,
|
|
2677
|
+
return await c(this, a, M).call(this, e, t);
|
|
2678
2678
|
}
|
|
2679
2679
|
/**
|
|
2680
2680
|
* Downloads only the JavaScript bundle from a component's ZIP.
|
|
@@ -2831,7 +2831,7 @@ return main;`)(...h), d = (y == null ? void 0 : y.componentDefinition) ?? y;
|
|
|
2831
2831
|
*/
|
|
2832
2832
|
async createApp(e) {
|
|
2833
2833
|
const { appProps: t } = e;
|
|
2834
|
-
return await c(this, a,
|
|
2834
|
+
return await c(this, a, V).call(this, e, Z, t);
|
|
2835
2835
|
}
|
|
2836
2836
|
/**
|
|
2837
2837
|
* Downloads an app's full ZIP file. Returns the raw fetch Response.
|
|
@@ -2840,7 +2840,7 @@ return main;`)(...h), d = (y == null ? void 0 : y.componentDefinition) ?? y;
|
|
|
2840
2840
|
* @returns A fetch Response containing the ZIP data.
|
|
2841
2841
|
*/
|
|
2842
2842
|
async downloadApp(e, t) {
|
|
2843
|
-
return await c(this, a,
|
|
2843
|
+
return await c(this, a, M).call(this, e, t);
|
|
2844
2844
|
}
|
|
2845
2845
|
/**
|
|
2846
2846
|
* Downloads only the JavaScript bundle from an app's ZIP.
|
|
@@ -3220,7 +3220,7 @@ a = new WeakSet(), ae = function(e) {
|
|
|
3220
3220
|
}
|
|
3221
3221
|
}
|
|
3222
3222
|
);
|
|
3223
|
-
},
|
|
3223
|
+
}, M = async function(e, t) {
|
|
3224
3224
|
const { versionTag: s, withDraft: r } = t || {};
|
|
3225
3225
|
return await c(this, a, C).call(this, `${f}/${e}/download`, {
|
|
3226
3226
|
query: {
|
|
@@ -3228,7 +3228,7 @@ a = new WeakSet(), ae = function(e) {
|
|
|
3228
3228
|
...r && { withDraft: r }
|
|
3229
3229
|
}
|
|
3230
3230
|
});
|
|
3231
|
-
},
|
|
3231
|
+
}, V = async function(e, t, s) {
|
|
3232
3232
|
const { name: r, versionTag: i, parentFolderId: o, projectId: h, file: l, metadata: y } = e, d = new FormData();
|
|
3233
3233
|
return d.append("file", l), d.append("name", r), d.append("versionTag", i), d.append("itemType", t), o && d.append("folderId", o), h && d.append("projectId", h), s && d.append("extraProps", JSON.stringify(s)), y && d.append("metadata", JSON.stringify(y)), await c(this, a, u).call(this, "POST", f, {
|
|
3234
3234
|
body: d
|
|
@@ -3343,14 +3343,15 @@ const Dt = {
|
|
|
3343
3343
|
MAX_FIELDS: 200,
|
|
3344
3344
|
MAX_KEY_LENGTH: 50,
|
|
3345
3345
|
MAX_VALUE_LENGTH: 50
|
|
3346
|
-
}, Ft = { uuid: "a3f82c1d-5b74-4e9a-bc30-d7e12f894a61" }, Vt = { uuid: "b0b5e2a2-0b3a-4a6b-8b1c-0b1c4a6b8b1c" },
|
|
3346
|
+
}, Ft = { uuid: "a3f82c1d-5b74-4e9a-bc30-d7e12f894a61" }, Mt = { uuid: "2c9f4e8d-3a1b-4c5e-9d7f-0a2b6c8e1d3f" }, Vt = { uuid: "b0b5e2a2-0b3a-4a6b-8b1c-0b1c4a6b8b1c" }, Ht = { uuid: "2c4ae432-fc24-43e9-9783-0c960c674e96" }, Gt = { uuid: "234f1416-528d-452a-9cc9-a16c5239b2eb" };
|
|
3347
3347
|
export {
|
|
3348
3348
|
Ft as CDEManager,
|
|
3349
|
+
Mt as ClashesManager,
|
|
3349
3350
|
oe as EngineServicesClient,
|
|
3350
3351
|
Vt as FileList,
|
|
3351
|
-
|
|
3352
|
+
Ht as HelloWorld,
|
|
3352
3353
|
Dt as METADATA_LIMITS,
|
|
3353
3354
|
ke as PlatformClient,
|
|
3354
3355
|
Lt as RequestError,
|
|
3355
|
-
|
|
3356
|
+
Gt as UIManager
|
|
3356
3357
|
};
|
package/docs/builtin/paths.json
CHANGED
|
@@ -35,6 +35,10 @@
|
|
|
35
35
|
"path": "src/built-in/CDEManager/examples/ProjectConfig/example.ts",
|
|
36
36
|
"description": "Project configuration — read, write, and reload persistent data — A CDE application needs to store two kinds of configuration: project-wide settings that all team members share (the metadata schema, custom naming rules) and personal settings that belong to one user (which columns are visible, which metadata views are pinned). Both live inside the project's file storage under a reserved system folder, so they travel with the project and don't rely on a separate configuration service."
|
|
37
37
|
},
|
|
38
|
+
{
|
|
39
|
+
"path": "src/built-in/ClashesManager/example.ts",
|
|
40
|
+
"description": "ClashesManager — Structural engineers and BIM coordinators routinely detect geometric clashes between disciplines — structural steel penetrating ductwork, pipes clashing with slabs — and need to track the status of each issue through resolution without leaving their BIM environment."
|
|
41
|
+
},
|
|
38
42
|
{
|
|
39
43
|
"path": "src/built-in/UIManager/src/app/example.ts",
|
|
40
44
|
"description": "top-app — Front-end developers building BIM web apps need to coordinate several async initialization steps before the UI can be shown — loading the engine, preparing fragment workers, registering loaders — and users need visible feedback on what is happening during that wait, rather than a blank screen."
|
|
@@ -71,6 +75,10 @@
|
|
|
71
75
|
"path": "src/built-in/UIManager/src/app/examples/Sidebar/example.ts",
|
|
72
76
|
"description": "Sidebar navigation — Product teams building BIM apps often need multiple distinct views — a 3D model viewer, a data browser, a settings screen — but wiring a custom nav bar and managing view transitions from scratch adds complexity before any real feature work begins."
|
|
73
77
|
},
|
|
78
|
+
{
|
|
79
|
+
"path": "src/built-in/UIManager/src/clashes-panel/example.ts",
|
|
80
|
+
"description": "clashes-panel — BIM coordinators need a dedicated review environment where they can see all detected clashes, filter by status, navigate to each issue in the 3D viewer, and mark items as resolved — without writing any UI code themselves."
|
|
81
|
+
},
|
|
74
82
|
{
|
|
75
83
|
"path": "src/built-in/UIManager/src/models-list/example.ts",
|
|
76
84
|
"description": "top-models-list — top-models-list is the project files panel: it lists the project's files, uploads new ones, converts IFC to fragments, and loads `.frag` models into the 3D scene. Its loaders are PLUGGABLE — the panel owns the UI and the orchestration (progress, refresh, association), but the HOST decides how each file format is loaded, so you can teach it new formats without forking the built-in."
|
package/package.json
CHANGED
|
@@ -1,95 +1,95 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@thatopen/services",
|
|
3
|
-
"description": "Client library and CLI for building BIM apps and cloud components on the That Open Platform",
|
|
4
|
-
"author": "That Open Company",
|
|
5
|
-
"license": "MIT",
|
|
6
|
-
"homepage": "https://github.com/ThatOpen/engine_services#readme",
|
|
7
|
-
"bugs": {
|
|
8
|
-
"url": "https://github.com/ThatOpen/engine_services/issues"
|
|
9
|
-
},
|
|
10
|
-
"repository": {
|
|
11
|
-
"type": "git",
|
|
12
|
-
"url": "git+https://github.com/ThatOpen/engine_services.git"
|
|
13
|
-
},
|
|
14
|
-
"publishConfig": {
|
|
15
|
-
"access": "public"
|
|
16
|
-
},
|
|
17
|
-
"private": false,
|
|
18
|
-
"version": "0.3.
|
|
19
|
-
"main": "dist/index.cjs.js",
|
|
20
|
-
"module": "dist/index.es.js",
|
|
21
|
-
"types": "dist/index.d.ts",
|
|
22
|
-
"bin": {
|
|
23
|
-
"thatopen": "dist/cli.js"
|
|
24
|
-
},
|
|
25
|
-
"files": [
|
|
26
|
-
"dist",
|
|
27
|
-
"src/cli/templates",
|
|
28
|
-
"src/built-in",
|
|
29
|
-
"docs",
|
|
30
|
-
"resources"
|
|
31
|
-
],
|
|
32
|
-
"scripts": {
|
|
33
|
-
"dev": "vite",
|
|
34
|
-
"lint": "eslint src/",
|
|
35
|
-
"build": "eslint src/ && tsc && vite build && vite build --config vite.config.cli.mts && node scripts/generate-cli-docs-paths.mjs && node scripts/generate-client-examples-paths.mjs",
|
|
36
|
-
"build:lib": "tsc && vite build",
|
|
37
|
-
"test": "vitest run",
|
|
38
|
-
"test:watch": "vitest",
|
|
39
|
-
"build:cli": "vite build --config vite.config.cli.mts",
|
|
40
|
-
"preview": "vite preview",
|
|
41
|
-
"test:ui": "vite --config test/vite.config.mts",
|
|
42
|
-
"template:app": "cd src/cli/templates/app && npm install && cd ../../../.. && node scripts/generate-template-tsconfig.mjs",
|
|
43
|
-
"template:app:dev": "cd src/cli/templates/app && npm run dev",
|
|
44
|
-
"changeset": "changeset",
|
|
45
|
-
"version": "changeset version",
|
|
46
|
-
"prepublishOnly": "npm run build"
|
|
47
|
-
},
|
|
48
|
-
"devDependencies": {
|
|
49
|
-
"@changesets/cli": "^2.27.7",
|
|
50
|
-
"@thatopen/components": "~3.4.0",
|
|
51
|
-
"@thatopen/components-front": "~3.4.0",
|
|
52
|
-
"@thatopen/fragments": "~3.4.0",
|
|
53
|
-
"@thatopen/ui": "~3.4.0",
|
|
54
|
-
"@thatopen/ui-obc": "~3.4.0",
|
|
55
|
-
"@types/node": "^20.12.12",
|
|
56
|
-
"@types/three": "^0.182.0",
|
|
57
|
-
"commander": "^14.0.3",
|
|
58
|
-
"esbuild": "^0.27.3",
|
|
59
|
-
"eslint": "9.x",
|
|
60
|
-
"eslint-config-prettier": "^9.1.0",
|
|
61
|
-
"eslint-plugin-prettier": "^5.1.3",
|
|
62
|
-
"globals": "^15.3.0",
|
|
63
|
-
"jszip": "^3.10.1",
|
|
64
|
-
"prettier": "^3.2.5",
|
|
65
|
-
"three": ">=0.182.0",
|
|
66
|
-
"tsx": "^4.16.2",
|
|
67
|
-
"typescript": "^5.2.2",
|
|
68
|
-
"typescript-eslint": "^7.10.0",
|
|
69
|
-
"vite": "^5.2.0",
|
|
70
|
-
"vite-plugin-dts": "^3.9.1",
|
|
71
|
-
"vite-plugin-eslint": "^1.8.1",
|
|
72
|
-
"vitest": "^4.1.4"
|
|
73
|
-
},
|
|
74
|
-
"dependencies": {
|
|
75
|
-
"dotenv": "^16.4.5",
|
|
76
|
-
"socket.io": "^4.8.0",
|
|
77
|
-
"socket.io-client": "^4.8.0"
|
|
78
|
-
},
|
|
79
|
-
"peerDependencies": {
|
|
80
|
-
"@thatopen/components": "~3.4.0",
|
|
81
|
-
"@thatopen/ui": "~3.4.0",
|
|
82
|
-
"three": ">=0.182.0"
|
|
83
|
-
},
|
|
84
|
-
"peerDependenciesMeta": {
|
|
85
|
-
"@thatopen/components": {
|
|
86
|
-
"optional": true
|
|
87
|
-
},
|
|
88
|
-
"@thatopen/ui": {
|
|
89
|
-
"optional": true
|
|
90
|
-
},
|
|
91
|
-
"three": {
|
|
92
|
-
"optional": true
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@thatopen/services",
|
|
3
|
+
"description": "Client library and CLI for building BIM apps and cloud components on the That Open Platform",
|
|
4
|
+
"author": "That Open Company",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"homepage": "https://github.com/ThatOpen/engine_services#readme",
|
|
7
|
+
"bugs": {
|
|
8
|
+
"url": "https://github.com/ThatOpen/engine_services/issues"
|
|
9
|
+
},
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/ThatOpen/engine_services.git"
|
|
13
|
+
},
|
|
14
|
+
"publishConfig": {
|
|
15
|
+
"access": "public"
|
|
16
|
+
},
|
|
17
|
+
"private": false,
|
|
18
|
+
"version": "0.3.9",
|
|
19
|
+
"main": "dist/index.cjs.js",
|
|
20
|
+
"module": "dist/index.es.js",
|
|
21
|
+
"types": "dist/index.d.ts",
|
|
22
|
+
"bin": {
|
|
23
|
+
"thatopen": "dist/cli.js"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist",
|
|
27
|
+
"src/cli/templates",
|
|
28
|
+
"src/built-in",
|
|
29
|
+
"docs",
|
|
30
|
+
"resources"
|
|
31
|
+
],
|
|
32
|
+
"scripts": {
|
|
33
|
+
"dev": "vite",
|
|
34
|
+
"lint": "eslint src/",
|
|
35
|
+
"build": "eslint src/ && tsc && vite build && vite build --config vite.config.cli.mts && node scripts/generate-cli-docs-paths.mjs && node scripts/generate-client-examples-paths.mjs",
|
|
36
|
+
"build:lib": "tsc && vite build",
|
|
37
|
+
"test": "vitest run",
|
|
38
|
+
"test:watch": "vitest",
|
|
39
|
+
"build:cli": "vite build --config vite.config.cli.mts",
|
|
40
|
+
"preview": "vite preview",
|
|
41
|
+
"test:ui": "vite --config test/vite.config.mts",
|
|
42
|
+
"template:app": "cd src/cli/templates/app && npm install && cd ../../../.. && node scripts/generate-template-tsconfig.mjs",
|
|
43
|
+
"template:app:dev": "cd src/cli/templates/app && npm run dev",
|
|
44
|
+
"changeset": "changeset",
|
|
45
|
+
"version": "changeset version",
|
|
46
|
+
"prepublishOnly": "npm run build"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@changesets/cli": "^2.27.7",
|
|
50
|
+
"@thatopen/components": "~3.4.0",
|
|
51
|
+
"@thatopen/components-front": "~3.4.0",
|
|
52
|
+
"@thatopen/fragments": "~3.4.0",
|
|
53
|
+
"@thatopen/ui": "~3.4.0",
|
|
54
|
+
"@thatopen/ui-obc": "~3.4.0",
|
|
55
|
+
"@types/node": "^20.12.12",
|
|
56
|
+
"@types/three": "^0.182.0",
|
|
57
|
+
"commander": "^14.0.3",
|
|
58
|
+
"esbuild": "^0.27.3",
|
|
59
|
+
"eslint": "9.x",
|
|
60
|
+
"eslint-config-prettier": "^9.1.0",
|
|
61
|
+
"eslint-plugin-prettier": "^5.1.3",
|
|
62
|
+
"globals": "^15.3.0",
|
|
63
|
+
"jszip": "^3.10.1",
|
|
64
|
+
"prettier": "^3.2.5",
|
|
65
|
+
"three": ">=0.182.0",
|
|
66
|
+
"tsx": "^4.16.2",
|
|
67
|
+
"typescript": "^5.2.2",
|
|
68
|
+
"typescript-eslint": "^7.10.0",
|
|
69
|
+
"vite": "^5.2.0",
|
|
70
|
+
"vite-plugin-dts": "^3.9.1",
|
|
71
|
+
"vite-plugin-eslint": "^1.8.1",
|
|
72
|
+
"vitest": "^4.1.4"
|
|
73
|
+
},
|
|
74
|
+
"dependencies": {
|
|
75
|
+
"dotenv": "^16.4.5",
|
|
76
|
+
"socket.io": "^4.8.0",
|
|
77
|
+
"socket.io-client": "^4.8.0"
|
|
78
|
+
},
|
|
79
|
+
"peerDependencies": {
|
|
80
|
+
"@thatopen/components": "~3.4.0",
|
|
81
|
+
"@thatopen/ui": "~3.4.0",
|
|
82
|
+
"three": ">=0.182.0"
|
|
83
|
+
},
|
|
84
|
+
"peerDependenciesMeta": {
|
|
85
|
+
"@thatopen/components": {
|
|
86
|
+
"optional": true
|
|
87
|
+
},
|
|
88
|
+
"@thatopen/ui": {
|
|
89
|
+
"optional": true
|
|
90
|
+
},
|
|
91
|
+
"three": {
|
|
92
|
+
"optional": true
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|