@snaptrude/plugin-client 0.0.5 → 0.0.7

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.
@@ -1,11 +1,14 @@
1
1
  import { PluginEntityApi } from "@snaptrude/plugin-core";
2
+ import { ClientReferenceLineApi } from "./referenceLine";
2
3
  import { ClientSpaceApi } from "./space";
3
4
  import { ClientStoryApi } from "./story";
4
5
  export declare class ClientEntityApi extends PluginEntityApi {
5
6
  space: ClientSpaceApi;
6
7
  story: ClientStoryApi;
8
+ referenceLine: ClientReferenceLineApi;
7
9
  constructor();
8
10
  }
11
+ export * from "./referenceLine";
9
12
  export * from "./space";
10
13
  export * from "./story";
11
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/entity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAExC,qBAAa,eAAgB,SAAQ,eAAe;IAC3C,KAAK,EAAE,cAAc,CAAA;IACrB,KAAK,EAAE,cAAc,CAAA;;CAO7B;AAED,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/entity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAExC,qBAAa,eAAgB,SAAQ,eAAe;IAC3C,KAAK,EAAE,cAAc,CAAA;IACrB,KAAK,EAAE,cAAc,CAAA;IACrB,aAAa,EAAE,sBAAsB,CAAA;;CAQ7C;AAED,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { PluginReferenceLineApi, PluginReferenceLineCreateMultiArgs, PluginReferenceLineCreateMultiResult, PluginReferenceLineGetArgs, PluginReferenceLineGetResult, PluginReferenceLineGetAllResult, PluginReferenceLineDeleteArgs, PluginReferenceLineDeleteResult } from "@snaptrude/plugin-core";
2
+ export declare class ClientReferenceLineApi extends PluginReferenceLineApi {
3
+ constructor();
4
+ createMulti(args: PluginReferenceLineCreateMultiArgs): Promise<PluginReferenceLineCreateMultiResult>;
5
+ get(args: PluginReferenceLineGetArgs): Promise<PluginReferenceLineGetResult>;
6
+ getAll(): Promise<PluginReferenceLineGetAllResult>;
7
+ delete(args: PluginReferenceLineDeleteArgs): Promise<PluginReferenceLineDeleteResult>;
8
+ }
9
+ //# sourceMappingURL=referenceLine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"referenceLine.d.ts","sourceRoot":"","sources":["../../../src/api/entity/referenceLine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,kCAAkC,EAClC,oCAAoC,EACpC,0BAA0B,EAC1B,4BAA4B,EAC5B,+BAA+B,EAC/B,6BAA6B,EAC7B,+BAA+B,EAChC,MAAM,wBAAwB,CAAA;AAG/B,qBAAa,sBAAuB,SAAQ,sBAAsB;;IAKnD,WAAW,CACtB,IAAI,EAAE,kCAAkC,GACvC,OAAO,CAAC,oCAAoC,CAAC;IAQnC,GAAG,CACd,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,4BAA4B,CAAC;IAQ3B,MAAM,IAAI,OAAO,CAAC,+BAA+B,CAAC;IAOlD,MAAM,CACjB,IAAI,EAAE,6BAA6B,GAClC,OAAO,CAAC,+BAA+B,CAAC;CAO5C"}
@@ -1,10 +1,11 @@
1
- import { PluginSpaceApi, PluginSpaceCreateRectangularArgs, PluginSpaceCreateRectangularResult, PluginSpaceCreateFromProfileArgs, PluginSpaceCreateFromProfileResult, PluginSpaceDeleteByIdArgs, PluginSpaceDeleteByIdResult, PluginSpaceGetArgs, PluginSpaceGetResult, PluginSpaceGetAllResult } from "@snaptrude/plugin-core";
1
+ import { PluginSpaceApi, PluginSpaceCreateRectangularArgs, PluginSpaceCreateRectangularResult, PluginSpaceCreateFromProfileArgs, PluginSpaceCreateFromProfileResult, PluginSpaceDeleteArgs, PluginSpaceDeleteResult, PluginSpaceGetArgs, PluginSpaceGetResult, PluginSpaceGetAllResult, PluginSpaceUpdateArgs, PluginSpaceUpdateResult } from "@snaptrude/plugin-core";
2
2
  export declare class ClientSpaceApi extends PluginSpaceApi {
3
3
  constructor();
4
4
  createRectangular({ position, dimensions, }: PluginSpaceCreateRectangularArgs): Promise<PluginSpaceCreateRectangularResult>;
5
5
  createFromProfile({ profile, extrudeHeight, position, }: PluginSpaceCreateFromProfileArgs): Promise<PluginSpaceCreateFromProfileResult>;
6
6
  get({ spaceId, properties, }: PluginSpaceGetArgs): Promise<PluginSpaceGetResult>;
7
7
  getAll(): Promise<PluginSpaceGetAllResult>;
8
- deleteById({ spaceId, }: PluginSpaceDeleteByIdArgs): Promise<PluginSpaceDeleteByIdResult>;
8
+ delete({ spaceId, }: PluginSpaceDeleteArgs): Promise<PluginSpaceDeleteResult>;
9
+ update({ spaceId, properties, }: PluginSpaceUpdateArgs): Promise<PluginSpaceUpdateResult>;
9
10
  }
10
11
  //# sourceMappingURL=space.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../../../src/api/entity/space.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,gCAAgC,EAChC,kCAAkC,EAClC,gCAAgC,EAChC,kCAAkC,EAClC,yBAAyB,EACzB,2BAA2B,EAC3B,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,wBAAwB,CAAA;AAG/B,qBAAa,cAAe,SAAQ,cAAc;;IAKnC,iBAAiB,CAAC,EAC7B,QAAQ,EACR,UAAU,GACX,EAAE,gCAAgC,GAAG,OAAO,CAAC,kCAAkC,CAAC;IAWpE,iBAAiB,CAAC,EAC7B,OAAO,EACP,aAAa,EACb,QAAQ,GACT,EAAE,gCAAgC,GAAG,OAAO,CAAC,kCAAkC,CAAC;IAYpE,GAAG,CAAC,EACf,OAAO,EACP,UAAU,GACX,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAWxC,MAAM,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAO1C,UAAU,CAAC,EACtB,OAAO,GACR,EAAE,yBAAyB,GAAG,OAAO,CAAC,2BAA2B,CAAC;CASpE"}
1
+ {"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../../../src/api/entity/space.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,gCAAgC,EAChC,kCAAkC,EAClC,gCAAgC,EAChC,kCAAkC,EAClC,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,wBAAwB,CAAA;AAG/B,qBAAa,cAAe,SAAQ,cAAc;;IAKnC,iBAAiB,CAAC,EAC7B,QAAQ,EACR,UAAU,GACX,EAAE,gCAAgC,GAAG,OAAO,CAAC,kCAAkC,CAAC;IAWpE,iBAAiB,CAAC,EAC7B,OAAO,EACP,aAAa,EACb,QAAQ,GACT,EAAE,gCAAgC,GAAG,OAAO,CAAC,kCAAkC,CAAC;IAYpE,GAAG,CAAC,EACf,OAAO,EACP,UAAU,GACX,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAWxC,MAAM,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAO1C,MAAM,CAAC,EAClB,OAAO,GACR,EAAE,qBAAqB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAU9C,MAAM,CAAC,EAClB,OAAO,EACP,UAAU,GACX,EAAE,qBAAqB,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAU5D"}
package/dist/index.cjs CHANGED
@@ -40,6 +40,7 @@ __export(index_exports, {
40
40
  ClientPluginApi: () => ClientPluginApi,
41
41
  ClientProfileApi: () => ClientProfileApi,
42
42
  ClientQuatApi: () => ClientQuatApi,
43
+ ClientReferenceLineApi: () => ClientReferenceLineApi,
43
44
  ClientSelectionApi: () => ClientSelectionApi,
44
45
  ClientSpaceApi: () => ClientSpaceApi,
45
46
  ClientStoryApi: () => ClientStoryApi,
@@ -178,11 +179,46 @@ var ClientCoreApi = class extends import_plugin_core9.PluginCoreApi {
178
179
  };
179
180
 
180
181
  // src/api/entity/index.ts
181
- var import_plugin_core12 = require("@snaptrude/plugin-core");
182
+ var import_plugin_core13 = require("@snaptrude/plugin-core");
182
183
 
183
- // src/api/entity/space.ts
184
+ // src/api/entity/referenceLine.ts
184
185
  var import_plugin_core10 = require("@snaptrude/plugin-core");
185
- var ClientSpaceApi = class extends import_plugin_core10.PluginSpaceApi {
186
+ var ClientReferenceLineApi = class extends import_plugin_core10.PluginReferenceLineApi {
187
+ constructor() {
188
+ super();
189
+ }
190
+ async createMulti(args) {
191
+ const hostApi = getHostApi();
192
+ return hostApi.call({
193
+ method: "entity.referenceLine.createMulti",
194
+ args
195
+ });
196
+ }
197
+ async get(args) {
198
+ const hostApi = getHostApi();
199
+ return hostApi.call({
200
+ method: "entity.referenceLine.get",
201
+ args
202
+ });
203
+ }
204
+ async getAll() {
205
+ const hostApi = getHostApi();
206
+ return hostApi.call({
207
+ method: "entity.referenceLine.getAll"
208
+ });
209
+ }
210
+ async delete(args) {
211
+ const hostApi = getHostApi();
212
+ return hostApi.call({
213
+ method: "entity.referenceLine.delete",
214
+ args
215
+ });
216
+ }
217
+ };
218
+
219
+ // src/api/entity/space.ts
220
+ var import_plugin_core11 = require("@snaptrude/plugin-core");
221
+ var ClientSpaceApi = class extends import_plugin_core11.PluginSpaceApi {
186
222
  constructor() {
187
223
  super();
188
224
  }
@@ -233,22 +269,35 @@ var ClientSpaceApi = class extends import_plugin_core10.PluginSpaceApi {
233
269
  method: "entity.space.getAll"
234
270
  });
235
271
  }
236
- async deleteById({
272
+ async delete({
237
273
  spaceId
238
274
  }) {
239
275
  const hostApi = getHostApi();
240
276
  return hostApi.call({
241
- method: "entity.space.deleteById",
277
+ method: "entity.space.delete",
242
278
  args: {
243
279
  spaceId
244
280
  }
245
281
  });
246
282
  }
283
+ async update({
284
+ spaceId,
285
+ properties
286
+ }) {
287
+ const hostApi = getHostApi();
288
+ return hostApi.call({
289
+ method: "entity.space.update",
290
+ args: {
291
+ spaceId,
292
+ properties
293
+ }
294
+ });
295
+ }
247
296
  };
248
297
 
249
298
  // src/api/entity/story.ts
250
- var import_plugin_core11 = require("@snaptrude/plugin-core");
251
- var ClientStoryApi = class extends import_plugin_core11.PluginStoryApi {
299
+ var import_plugin_core12 = require("@snaptrude/plugin-core");
300
+ var ClientStoryApi = class extends import_plugin_core12.PluginStoryApi {
252
301
  constructor() {
253
302
  super();
254
303
  }
@@ -300,20 +349,21 @@ var ClientStoryApi = class extends import_plugin_core11.PluginStoryApi {
300
349
  };
301
350
 
302
351
  // src/api/entity/index.ts
303
- var ClientEntityApi = class extends import_plugin_core12.PluginEntityApi {
352
+ var ClientEntityApi = class extends import_plugin_core13.PluginEntityApi {
304
353
  constructor() {
305
354
  super();
306
355
  this.space = new ClientSpaceApi();
307
356
  this.story = new ClientStoryApi();
357
+ this.referenceLine = new ClientReferenceLineApi();
308
358
  }
309
359
  };
310
360
 
311
361
  // src/api/tools/index.ts
312
- var import_plugin_core15 = require("@snaptrude/plugin-core");
362
+ var import_plugin_core16 = require("@snaptrude/plugin-core");
313
363
 
314
364
  // src/api/tools/selection.ts
315
- var import_plugin_core13 = require("@snaptrude/plugin-core");
316
- var ClientSelectionApi = class extends import_plugin_core13.PluginSelectionApi {
365
+ var import_plugin_core14 = require("@snaptrude/plugin-core");
366
+ var ClientSelectionApi = class extends import_plugin_core14.PluginSelectionApi {
317
367
  constructor() {
318
368
  super();
319
369
  }
@@ -326,8 +376,8 @@ var ClientSelectionApi = class extends import_plugin_core13.PluginSelectionApi {
326
376
  };
327
377
 
328
378
  // src/api/tools/transform.ts
329
- var import_plugin_core14 = require("@snaptrude/plugin-core");
330
- var ClientTransformApi = class extends import_plugin_core14.PluginTransformApi {
379
+ var import_plugin_core15 = require("@snaptrude/plugin-core");
380
+ var ClientTransformApi = class extends import_plugin_core15.PluginTransformApi {
331
381
  constructor() {
332
382
  super();
333
383
  }
@@ -364,7 +414,7 @@ var ClientTransformApi = class extends import_plugin_core14.PluginTransformApi {
364
414
  };
365
415
 
366
416
  // src/api/tools/index.ts
367
- var ClientToolsApi = class extends import_plugin_core15.PluginToolsApi {
417
+ var ClientToolsApi = class extends import_plugin_core16.PluginToolsApi {
368
418
  constructor() {
369
419
  super();
370
420
  this.selection = new ClientSelectionApi();
@@ -373,8 +423,8 @@ var ClientToolsApi = class extends import_plugin_core15.PluginToolsApi {
373
423
  };
374
424
 
375
425
  // src/api/units/index.ts
376
- var import_plugin_core16 = require("@snaptrude/plugin-core");
377
- var ClientUnitsApi = class extends import_plugin_core16.PluginUnitsApi {
426
+ var import_plugin_core17 = require("@snaptrude/plugin-core");
427
+ var ClientUnitsApi = class extends import_plugin_core17.PluginUnitsApi {
378
428
  constructor() {
379
429
  super();
380
430
  }
@@ -395,8 +445,8 @@ var ClientUnitsApi = class extends import_plugin_core16.PluginUnitsApi {
395
445
  };
396
446
 
397
447
  // src/api/index.ts
398
- var import_plugin_core17 = require("@snaptrude/plugin-core");
399
- var ClientPluginApi = class _ClientPluginApi extends import_plugin_core17.PluginApi {
448
+ var import_plugin_core18 = require("@snaptrude/plugin-core");
449
+ var ClientPluginApi = class _ClientPluginApi extends import_plugin_core18.PluginApi {
400
450
  constructor() {
401
451
  super();
402
452
  this.core = new ClientCoreApi();
@@ -424,6 +474,15 @@ var PluginWorker = class {
424
474
  ;
425
475
  this.hostAPI.ui.sendToUI({ action, payload });
426
476
  }
477
+ /**
478
+ * Signal the host that this plugin has finished its work and should be
479
+ * stopped. Use this in headless (UI-less) plugins that run a task and
480
+ * self-terminate.
481
+ */
482
+ complete() {
483
+ ;
484
+ this.hostAPI.lifecycle.complete();
485
+ }
427
486
  async init() {
428
487
  console.log(this.pluginId, "init() called");
429
488
  console.log(this.pluginId, "Initialization complete");
@@ -475,6 +534,7 @@ var snaptrude = ClientPluginApi.getInstance();
475
534
  ClientPluginApi,
476
535
  ClientProfileApi,
477
536
  ClientQuatApi,
537
+ ClientReferenceLineApi,
478
538
  ClientSelectionApi,
479
539
  ClientSpaceApi,
480
540
  ClientStoryApi,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/api/core/index.ts","../src/api/core/math/index.ts","../src/api/core/math/vec3.ts","../src/api/core/math/quat.ts","../src/api/core/geom/index.ts","../src/api/core/geom/line.ts","../src/api/core/geom/arc.ts","../src/api/core/geom/curve.ts","../src/api/core/geom/profile.ts","../src/host-api.ts","../src/api/entity/index.ts","../src/api/entity/space.ts","../src/api/entity/story.ts","../src/api/tools/index.ts","../src/api/tools/selection.ts","../src/api/tools/transform.ts","../src/api/units/index.ts","../src/api/index.ts","../src/plugin-worker.ts"],"sourcesContent":["import { ClientPluginApi } from \"./api\"\n\nexport * from \"./api\"\nexport * from \"./host-api\"\nexport * from \"./plugin-worker\"\n\n/**\n * The Snaptrude plugin client API.\n *\n * The main entry point for plugins to interact with the Snaptrude platform.\n */\nexport const snaptrude = ClientPluginApi.getInstance()\n","import { PluginCoreApi } from \"@snaptrude/plugin-core\"\nimport { ClientMathApi } from \"./math\"\nimport { ClientGeomApi } from \"./geom\"\n\nexport class ClientCoreApi extends PluginCoreApi {\n public math: ClientMathApi\n public geom: ClientGeomApi\n\n constructor() {\n super()\n this.math = new ClientMathApi()\n this.geom = new ClientGeomApi()\n }\n}\n\nexport * from \"./math\"\nexport * from \"./geom\"\n","import { PluginMathApi } from \"@snaptrude/plugin-core\"\nimport { ClientVec3Api } from \"./vec3\"\nimport { ClientQuatApi } from \"./quat\"\n\nexport class ClientMathApi extends PluginMathApi {\n public vec3: ClientVec3Api\n public quat: ClientQuatApi\n\n constructor() {\n super()\n this.vec3 = new ClientVec3Api()\n this.quat = new ClientQuatApi()\n }\n}\n\nexport * from \"./vec3\"\nexport * from \"./quat\"\n","import { PluginVec3Api } from \"@snaptrude/plugin-core\"\n\nexport class ClientVec3Api extends PluginVec3Api {\n constructor() {\n super()\n }\n}\n","import { PluginQuatApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientQuatApi extends PluginQuatApi {\n constructor() {\n super()\n }\n}\n","import { PluginGeomApi } from \"@snaptrude/plugin-core\"\nimport { ClientLineApi } from \"./line\"\nimport { ClientArcApi } from \"./arc\"\nimport { ClientCurveApi } from \"./curve\"\nimport { ClientProfileApi } from \"./profile\"\n\nexport class ClientGeomApi extends PluginGeomApi {\n public line: ClientLineApi\n public arc: ClientArcApi\n public curve: ClientCurveApi\n public profile: ClientProfileApi\n\n constructor() {\n super()\n this.line = new ClientLineApi()\n this.arc = new ClientArcApi()\n this.curve = new ClientCurveApi()\n this.profile = new ClientProfileApi()\n }\n}\n\nexport * from \"./line\"\nexport * from \"./arc\"\nexport * from \"./curve\"\nexport * from \"./profile\"\n","import { PluginLineApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientLineApi extends PluginLineApi {\n constructor() {\n super()\n }\n}\n","import { PluginArcApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientArcApi extends PluginArcApi {\n constructor() {\n super()\n }\n}\n","import { PluginCurveApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientCurveApi extends PluginCurveApi {\n constructor() {\n super()\n }\n}\n","import { PluginProfileApi } from \"@snaptrude/plugin-core\"\nimport type { PProfile, PluginProfileFromLinePointsArgs } from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../../host-api\"\n\nexport class ClientProfileApi extends PluginProfileApi {\n constructor() {\n super()\n }\n\n public async fromLinePoints(args: PluginProfileFromLinePointsArgs): Promise<PProfile> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"core.geom.profile.fromLinePoints\",\n args,\n })\n }\n}\n","import * as Comlink from \"comlink\"\nimport type {\n PluginApiMethod,\n PluginApiCallPayload,\n PluginApiCallWrappedResult,\n PluginApiCallResult,\n} from \"@snaptrude/plugin-core\"\n\nexport interface HostApi {\n call<M extends PluginApiMethod>(\n payload: PluginApiCallPayload<M>\n ): Promise<PluginApiCallWrappedResult<M>>\n}\n\nexport interface HostApiWrapped {\n call<M extends PluginApiMethod>(\n payload: PluginApiCallPayload<M>\n ): Promise<PluginApiCallResult<M>>\n}\n\nexport function createHostApi(endpoint?: Comlink.Endpoint): HostApi {\n return Comlink.wrap<HostApi>(\n endpoint ?? (globalThis as unknown as Comlink.Endpoint)\n ) as unknown as HostApi\n}\n\nlet _instance: HostApi | null = null\n\nexport function getHostApi(): HostApiWrapped {\n if (!_instance) {\n _instance = createHostApi()\n }\n return {\n call: async <M extends PluginApiMethod>(payload: PluginApiCallPayload<M>): Promise<PluginApiCallResult<M>> => {\n if (!_instance) {\n throw new Error(\"Host API not initialized\")\n }\n return _instance.call(payload).then(result => {\n if (result.success) {\n return result.data\n } else {\n throw new Error(result.error)\n }\n })\n }\n }\n}\n","import { PluginEntityApi } from \"@snaptrude/plugin-core\"\nimport { ClientSpaceApi } from \"./space\"\nimport { ClientStoryApi } from \"./story\"\n\nexport class ClientEntityApi extends PluginEntityApi {\n public space: ClientSpaceApi\n public story: ClientStoryApi\n\n constructor() {\n super()\n this.space = new ClientSpaceApi()\n this.story = new ClientStoryApi()\n }\n}\n\nexport * from \"./space\"\nexport * from \"./story\"\n","import {\n PluginSpaceApi,\n PluginSpaceCreateRectangularArgs,\n PluginSpaceCreateRectangularResult,\n PluginSpaceCreateFromProfileArgs,\n PluginSpaceCreateFromProfileResult,\n PluginSpaceDeleteByIdArgs,\n PluginSpaceDeleteByIdResult,\n PluginSpaceGetArgs,\n PluginSpaceGetResult,\n PluginSpaceGetAllResult,\n} from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientSpaceApi extends PluginSpaceApi {\n constructor() {\n super()\n }\n\n public async createRectangular({\n position,\n dimensions,\n }: PluginSpaceCreateRectangularArgs): Promise<PluginSpaceCreateRectangularResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.createRectangular\",\n args: {\n position,\n dimensions,\n },\n })\n }\n\n public async createFromProfile({\n profile,\n extrudeHeight,\n position,\n }: PluginSpaceCreateFromProfileArgs): Promise<PluginSpaceCreateFromProfileResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.createFromProfile\",\n args: {\n profile,\n extrudeHeight,\n position,\n },\n })\n }\n\n public async get({\n spaceId,\n properties,\n }: PluginSpaceGetArgs): Promise<PluginSpaceGetResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.get\",\n args: {\n spaceId,\n properties,\n },\n })\n }\n\n public async getAll(): Promise<PluginSpaceGetAllResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.getAll\",\n })\n }\n\n public async deleteById({\n spaceId,\n }: PluginSpaceDeleteByIdArgs): Promise<PluginSpaceDeleteByIdResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.deleteById\",\n args: {\n spaceId,\n },\n })\n }\n}\n","import {\n PluginStoryApi,\n PluginStoryGetArgs,\n PluginStoryGetResult,\n PluginStoryGetAllResult,\n PluginStoryCreateArgs,\n PluginStoryCreateResult,\n PluginStoryUpdateArgs,\n PluginStoryUpdateResult,\n} from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientStoryApi extends PluginStoryApi {\n constructor() {\n super()\n }\n\n public async get({\n storyValue,\n properties,\n }: PluginStoryGetArgs): Promise<PluginStoryGetResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.story.get\",\n args: {\n storyValue,\n properties,\n },\n })\n }\n\n public async getAll(): Promise<PluginStoryGetAllResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.story.getAll\",\n })\n }\n\n public async create({\n storyValue,\n height,\n }: PluginStoryCreateArgs): Promise<PluginStoryCreateResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.story.create\",\n args: {\n storyValue,\n height,\n },\n })\n }\n\n public async update({\n storyValue,\n height,\n }: PluginStoryUpdateArgs): Promise<PluginStoryUpdateResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.story.update\",\n args: {\n storyValue,\n height,\n },\n })\n }\n}\n","import { PluginToolsApi } from \"@snaptrude/plugin-core\"\nimport { ClientSelectionApi } from \"./selection\"\nimport { ClientTransformApi } from \"./transform\"\n\nexport class ClientToolsApi extends PluginToolsApi {\n public selection: ClientSelectionApi\n public transform: ClientTransformApi\n\n constructor() {\n super()\n this.selection = new ClientSelectionApi()\n this.transform = new ClientTransformApi()\n }\n}\n\nexport * from \"./selection\"\nexport * from \"./transform\"\n","import { PluginSelectionApi, PluginSelectionGetResult } from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientSelectionApi extends PluginSelectionApi {\n constructor() {\n super()\n }\n\n public async get(): Promise<PluginSelectionGetResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"tools.selection.get\",\n })\n }\n}\n","import {\n PluginTransformApi,\n PluginMoveArgs,\n PluginRotateArgs,\n} from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientTransformApi extends PluginTransformApi {\n constructor() {\n super()\n }\n\n public async move({\n componentIds,\n displacement,\n }: PluginMoveArgs): Promise<void> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"tools.transform.move\",\n args: {\n componentIds,\n displacement,\n },\n })\n }\n\n public async rotate({\n componentIds,\n angle,\n axis,\n pivot,\n }: PluginRotateArgs): Promise<void> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"tools.transform.rotate\",\n args: {\n componentIds,\n angle,\n axis,\n pivot,\n },\n })\n }\n}\n","import {\n PluginUnitsApi,\n PluginUnitsConvertFromArgs,\n PluginUnitsConvertFromResult,\n PluginUnitsConvertToArgs,\n PluginUnitsConvertToResult,\n} from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientUnitsApi extends PluginUnitsApi {\n constructor() {\n super()\n }\n\n public async convertFrom(\n args: PluginUnitsConvertFromArgs,\n ): Promise<PluginUnitsConvertFromResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"units.convertFrom\",\n args,\n })\n }\n\n public async convertTo(\n args: PluginUnitsConvertToArgs,\n ): Promise<PluginUnitsConvertToResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"units.convertTo\",\n args,\n })\n }\n}\n","import { ClientCoreApi } from \"./core\"\nimport { ClientEntityApi } from \"./entity\"\nimport { ClientToolsApi } from \"./tools\"\nimport { ClientUnitsApi } from \"./units\"\nimport { PluginApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientPluginApi extends PluginApi {\n private static instance: ClientPluginApi\n\n public core: ClientCoreApi\n public tools: ClientToolsApi\n public entity: ClientEntityApi\n public units: ClientUnitsApi\n\n private constructor() {\n super()\n this.core = new ClientCoreApi()\n this.tools = new ClientToolsApi()\n this.entity = new ClientEntityApi()\n this.units = new ClientUnitsApi()\n }\n\n static getInstance(): ClientPluginApi {\n if (!ClientPluginApi.instance) {\n ClientPluginApi.instance = new ClientPluginApi()\n }\n return ClientPluginApi.instance\n }\n}\n\nexport * from \"./core\"\nexport * from \"./entity\"\nexport * from \"./tools\"\nexport * from \"./units\"\n","import * as Comlink from \"comlink\"\n\nexport interface UIMessage {\n action: string\n payload: unknown\n}\n\ninterface PluginConfig {\n pluginId: string\n permissions: string[]\n}\n\n/**\n * Base class for Snaptrude plugin workers.\n *\n * Handles Comlink wiring, host communication, and the standard lifecycle\n * methods (`init`, `destroy`, `ping`, `onUIMessage`). Subclass this and\n * override only the methods you need — then call `start()` to expose the\n * worker API.\n *\n * The plugin ID is received automatically from the host during\n * initialization — no need to pass it manually.\n *\n * @example\n * ```ts\n * import { PluginWorker } from \"@snaptrude/plugin-client\";\n *\n * class MyPlugin extends PluginWorker {\n * async onUIMessage(message: UIMessage) {\n * // handle messages from the UI panel\n * }\n * }\n *\n * new MyPlugin().start();\n * ```\n */\nexport abstract class PluginWorker {\n protected pluginId!: string\n private hostAPI: Comlink.Remote<Record<string, unknown>>\n\n constructor() {\n this.hostAPI = Comlink.wrap<Record<string, unknown>>(\n self as unknown as Comlink.Endpoint\n )\n }\n\n protected sendToUI(action: string, payload: unknown): void {\n ;(this.hostAPI as Record<string, any>).ui.sendToUI({ action, payload })\n }\n\n async init(): Promise<void> {\n console.log(this.pluginId, \"init() called\")\n console.log(this.pluginId, \"Initialization complete\")\n }\n\n async destroy(): Promise<void> {\n console.log(this.pluginId, \"destroy() called — cleaning up\")\n }\n\n async ping(): Promise<string> {\n return \"pong\"\n }\n\n async onUIMessage(_message: UIMessage): Promise<void> {\n // Override in subclass to handle UI messages\n }\n\n /**\n * Expose the worker API via Comlink and start listening.\n * Call this once after constructing the plugin instance.\n *\n * The host calls `init(config)` with `{ pluginId, permissions }`,\n * which is captured here to set `this.pluginId` before the\n * subclass's `init()` runs.\n */\n start(): void {\n Comlink.expose(\n {\n init: (config: PluginConfig) => {\n this.pluginId = config.pluginId\n return this.init()\n },\n destroy: () => this.destroy(),\n ping: () => this.ping(),\n onUIMessage: (message: UIMessage) => this.onUIMessage(message),\n },\n self as unknown as Comlink.Endpoint\n )\n console.log(\"Worker loaded, API exposed via Comlink\")\n }\n}\n"],"mappings":"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","names":["import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","Comlink"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/api/core/index.ts","../src/api/core/math/index.ts","../src/api/core/math/vec3.ts","../src/api/core/math/quat.ts","../src/api/core/geom/index.ts","../src/api/core/geom/line.ts","../src/api/core/geom/arc.ts","../src/api/core/geom/curve.ts","../src/api/core/geom/profile.ts","../src/host-api.ts","../src/api/entity/index.ts","../src/api/entity/referenceLine.ts","../src/api/entity/space.ts","../src/api/entity/story.ts","../src/api/tools/index.ts","../src/api/tools/selection.ts","../src/api/tools/transform.ts","../src/api/units/index.ts","../src/api/index.ts","../src/plugin-worker.ts"],"sourcesContent":["import { ClientPluginApi } from \"./api\"\n\nexport * from \"./api\"\nexport * from \"./host-api\"\nexport * from \"./plugin-worker\"\n\n/**\n * The Snaptrude plugin client API.\n *\n * The main entry point for plugins to interact with the Snaptrude platform.\n */\nexport const snaptrude = ClientPluginApi.getInstance()\n","import { PluginCoreApi } from \"@snaptrude/plugin-core\"\nimport { ClientMathApi } from \"./math\"\nimport { ClientGeomApi } from \"./geom\"\n\nexport class ClientCoreApi extends PluginCoreApi {\n public math: ClientMathApi\n public geom: ClientGeomApi\n\n constructor() {\n super()\n this.math = new ClientMathApi()\n this.geom = new ClientGeomApi()\n }\n}\n\nexport * from \"./math\"\nexport * from \"./geom\"\n","import { PluginMathApi } from \"@snaptrude/plugin-core\"\nimport { ClientVec3Api } from \"./vec3\"\nimport { ClientQuatApi } from \"./quat\"\n\nexport class ClientMathApi extends PluginMathApi {\n public vec3: ClientVec3Api\n public quat: ClientQuatApi\n\n constructor() {\n super()\n this.vec3 = new ClientVec3Api()\n this.quat = new ClientQuatApi()\n }\n}\n\nexport * from \"./vec3\"\nexport * from \"./quat\"\n","import { PluginVec3Api } from \"@snaptrude/plugin-core\"\n\nexport class ClientVec3Api extends PluginVec3Api {\n constructor() {\n super()\n }\n}\n","import { PluginQuatApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientQuatApi extends PluginQuatApi {\n constructor() {\n super()\n }\n}\n","import { PluginGeomApi } from \"@snaptrude/plugin-core\"\nimport { ClientLineApi } from \"./line\"\nimport { ClientArcApi } from \"./arc\"\nimport { ClientCurveApi } from \"./curve\"\nimport { ClientProfileApi } from \"./profile\"\n\nexport class ClientGeomApi extends PluginGeomApi {\n public line: ClientLineApi\n public arc: ClientArcApi\n public curve: ClientCurveApi\n public profile: ClientProfileApi\n\n constructor() {\n super()\n this.line = new ClientLineApi()\n this.arc = new ClientArcApi()\n this.curve = new ClientCurveApi()\n this.profile = new ClientProfileApi()\n }\n}\n\nexport * from \"./line\"\nexport * from \"./arc\"\nexport * from \"./curve\"\nexport * from \"./profile\"\n","import { PluginLineApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientLineApi extends PluginLineApi {\n constructor() {\n super()\n }\n}\n","import { PluginArcApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientArcApi extends PluginArcApi {\n constructor() {\n super()\n }\n}\n","import { PluginCurveApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientCurveApi extends PluginCurveApi {\n constructor() {\n super()\n }\n}\n","import { PluginProfileApi } from \"@snaptrude/plugin-core\"\nimport type { PProfile, PluginProfileFromLinePointsArgs } from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../../host-api\"\n\nexport class ClientProfileApi extends PluginProfileApi {\n constructor() {\n super()\n }\n\n public async fromLinePoints(args: PluginProfileFromLinePointsArgs): Promise<PProfile> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"core.geom.profile.fromLinePoints\",\n args,\n })\n }\n}\n","import * as Comlink from \"comlink\"\nimport type {\n PluginApiMethod,\n PluginApiCallPayload,\n PluginApiCallWrappedResult,\n PluginApiCallResult,\n} from \"@snaptrude/plugin-core\"\n\nexport interface HostApi {\n call<M extends PluginApiMethod>(\n payload: PluginApiCallPayload<M>\n ): Promise<PluginApiCallWrappedResult<M>>\n}\n\nexport interface HostApiWrapped {\n call<M extends PluginApiMethod>(\n payload: PluginApiCallPayload<M>\n ): Promise<PluginApiCallResult<M>>\n}\n\nexport function createHostApi(endpoint?: Comlink.Endpoint): HostApi {\n return Comlink.wrap<HostApi>(\n endpoint ?? (globalThis as unknown as Comlink.Endpoint)\n ) as unknown as HostApi\n}\n\nlet _instance: HostApi | null = null\n\nexport function getHostApi(): HostApiWrapped {\n if (!_instance) {\n _instance = createHostApi()\n }\n return {\n call: async <M extends PluginApiMethod>(payload: PluginApiCallPayload<M>): Promise<PluginApiCallResult<M>> => {\n if (!_instance) {\n throw new Error(\"Host API not initialized\")\n }\n return _instance.call(payload).then(result => {\n if (result.success) {\n return result.data\n } else {\n throw new Error(result.error)\n }\n })\n }\n }\n}\n","import { PluginEntityApi } from \"@snaptrude/plugin-core\"\nimport { ClientReferenceLineApi } from \"./referenceLine\"\nimport { ClientSpaceApi } from \"./space\"\nimport { ClientStoryApi } from \"./story\"\n\nexport class ClientEntityApi extends PluginEntityApi {\n public space: ClientSpaceApi\n public story: ClientStoryApi\n public referenceLine: ClientReferenceLineApi\n\n constructor() {\n super()\n this.space = new ClientSpaceApi()\n this.story = new ClientStoryApi()\n this.referenceLine = new ClientReferenceLineApi()\n }\n}\n\nexport * from \"./referenceLine\"\nexport * from \"./space\"\nexport * from \"./story\"\n","import {\n PluginReferenceLineApi,\n PluginReferenceLineCreateMultiArgs,\n PluginReferenceLineCreateMultiResult,\n PluginReferenceLineGetArgs,\n PluginReferenceLineGetResult,\n PluginReferenceLineGetAllResult,\n PluginReferenceLineDeleteArgs,\n PluginReferenceLineDeleteResult,\n} from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientReferenceLineApi extends PluginReferenceLineApi {\n constructor() {\n super()\n }\n\n public async createMulti(\n args: PluginReferenceLineCreateMultiArgs\n ): Promise<PluginReferenceLineCreateMultiResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.referenceLine.createMulti\",\n args,\n })\n }\n\n public async get(\n args: PluginReferenceLineGetArgs\n ): Promise<PluginReferenceLineGetResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.referenceLine.get\",\n args,\n })\n }\n\n public async getAll(): Promise<PluginReferenceLineGetAllResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.referenceLine.getAll\",\n })\n }\n\n public async delete(\n args: PluginReferenceLineDeleteArgs\n ): Promise<PluginReferenceLineDeleteResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.referenceLine.delete\",\n args,\n })\n }\n}\n","import {\n PluginSpaceApi,\n PluginSpaceCreateRectangularArgs,\n PluginSpaceCreateRectangularResult,\n PluginSpaceCreateFromProfileArgs,\n PluginSpaceCreateFromProfileResult,\n PluginSpaceDeleteArgs,\n PluginSpaceDeleteResult,\n PluginSpaceGetArgs,\n PluginSpaceGetResult,\n PluginSpaceGetAllResult,\n PluginSpaceUpdateArgs,\n PluginSpaceUpdateResult,\n} from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientSpaceApi extends PluginSpaceApi {\n constructor() {\n super()\n }\n\n public async createRectangular({\n position,\n dimensions,\n }: PluginSpaceCreateRectangularArgs): Promise<PluginSpaceCreateRectangularResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.createRectangular\",\n args: {\n position,\n dimensions,\n },\n })\n }\n\n public async createFromProfile({\n profile,\n extrudeHeight,\n position,\n }: PluginSpaceCreateFromProfileArgs): Promise<PluginSpaceCreateFromProfileResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.createFromProfile\",\n args: {\n profile,\n extrudeHeight,\n position,\n },\n })\n }\n\n public async get({\n spaceId,\n properties,\n }: PluginSpaceGetArgs): Promise<PluginSpaceGetResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.get\",\n args: {\n spaceId,\n properties,\n },\n })\n }\n\n public async getAll(): Promise<PluginSpaceGetAllResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.getAll\",\n })\n }\n\n public async delete({\n spaceId,\n }: PluginSpaceDeleteArgs): Promise<PluginSpaceDeleteResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.delete\",\n args: {\n spaceId,\n },\n })\n }\n\n public async update({\n spaceId,\n properties,\n }: PluginSpaceUpdateArgs): Promise<PluginSpaceUpdateResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.update\",\n args: {\n spaceId,\n properties,\n },\n })\n }\n}\n","import {\n PluginStoryApi,\n PluginStoryGetArgs,\n PluginStoryGetResult,\n PluginStoryGetAllResult,\n PluginStoryCreateArgs,\n PluginStoryCreateResult,\n PluginStoryUpdateArgs,\n PluginStoryUpdateResult,\n} from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientStoryApi extends PluginStoryApi {\n constructor() {\n super()\n }\n\n public async get({\n storyValue,\n properties,\n }: PluginStoryGetArgs): Promise<PluginStoryGetResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.story.get\",\n args: {\n storyValue,\n properties,\n },\n })\n }\n\n public async getAll(): Promise<PluginStoryGetAllResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.story.getAll\",\n })\n }\n\n public async create({\n storyValue,\n height,\n }: PluginStoryCreateArgs): Promise<PluginStoryCreateResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.story.create\",\n args: {\n storyValue,\n height,\n },\n })\n }\n\n public async update({\n storyValue,\n height,\n }: PluginStoryUpdateArgs): Promise<PluginStoryUpdateResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.story.update\",\n args: {\n storyValue,\n height,\n },\n })\n }\n}\n","import { PluginToolsApi } from \"@snaptrude/plugin-core\"\nimport { ClientSelectionApi } from \"./selection\"\nimport { ClientTransformApi } from \"./transform\"\n\nexport class ClientToolsApi extends PluginToolsApi {\n public selection: ClientSelectionApi\n public transform: ClientTransformApi\n\n constructor() {\n super()\n this.selection = new ClientSelectionApi()\n this.transform = new ClientTransformApi()\n }\n}\n\nexport * from \"./selection\"\nexport * from \"./transform\"\n","import { PluginSelectionApi, PluginSelectionGetResult } from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientSelectionApi extends PluginSelectionApi {\n constructor() {\n super()\n }\n\n public async get(): Promise<PluginSelectionGetResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"tools.selection.get\",\n })\n }\n}\n","import {\n PluginTransformApi,\n PluginMoveArgs,\n PluginRotateArgs,\n} from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientTransformApi extends PluginTransformApi {\n constructor() {\n super()\n }\n\n public async move({\n componentIds,\n displacement,\n }: PluginMoveArgs): Promise<void> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"tools.transform.move\",\n args: {\n componentIds,\n displacement,\n },\n })\n }\n\n public async rotate({\n componentIds,\n angle,\n axis,\n pivot,\n }: PluginRotateArgs): Promise<void> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"tools.transform.rotate\",\n args: {\n componentIds,\n angle,\n axis,\n pivot,\n },\n })\n }\n}\n","import {\n PluginUnitsApi,\n PluginUnitsConvertFromArgs,\n PluginUnitsConvertFromResult,\n PluginUnitsConvertToArgs,\n PluginUnitsConvertToResult,\n} from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientUnitsApi extends PluginUnitsApi {\n constructor() {\n super()\n }\n\n public async convertFrom(\n args: PluginUnitsConvertFromArgs,\n ): Promise<PluginUnitsConvertFromResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"units.convertFrom\",\n args,\n })\n }\n\n public async convertTo(\n args: PluginUnitsConvertToArgs,\n ): Promise<PluginUnitsConvertToResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"units.convertTo\",\n args,\n })\n }\n}\n","import { ClientCoreApi } from \"./core\"\nimport { ClientEntityApi } from \"./entity\"\nimport { ClientToolsApi } from \"./tools\"\nimport { ClientUnitsApi } from \"./units\"\nimport { PluginApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientPluginApi extends PluginApi {\n private static instance: ClientPluginApi\n\n public core: ClientCoreApi\n public tools: ClientToolsApi\n public entity: ClientEntityApi\n public units: ClientUnitsApi\n\n private constructor() {\n super()\n this.core = new ClientCoreApi()\n this.tools = new ClientToolsApi()\n this.entity = new ClientEntityApi()\n this.units = new ClientUnitsApi()\n }\n\n static getInstance(): ClientPluginApi {\n if (!ClientPluginApi.instance) {\n ClientPluginApi.instance = new ClientPluginApi()\n }\n return ClientPluginApi.instance\n }\n}\n\nexport * from \"./core\"\nexport * from \"./entity\"\nexport * from \"./tools\"\nexport * from \"./units\"\n","import * as Comlink from \"comlink\"\n\nexport interface UIMessage {\n action: string\n payload: unknown\n}\n\ninterface PluginConfig {\n pluginId: string\n permissions: string[]\n}\n\n/**\n * Base class for Snaptrude plugin workers.\n *\n * Handles Comlink wiring, host communication, and the standard lifecycle\n * methods (`init`, `destroy`, `ping`, `onUIMessage`). Subclass this and\n * override only the methods you need — then call `start()` to expose the\n * worker API.\n *\n * The plugin ID is received automatically from the host during\n * initialization — no need to pass it manually.\n *\n * @example\n * ```ts\n * import { PluginWorker } from \"@snaptrude/plugin-client\";\n *\n * class MyPlugin extends PluginWorker {\n * async onUIMessage(message: UIMessage) {\n * // handle messages from the UI panel\n * }\n * }\n *\n * new MyPlugin().start();\n * ```\n */\nexport abstract class PluginWorker {\n protected pluginId!: string\n private hostAPI: Comlink.Remote<Record<string, unknown>>\n\n constructor() {\n this.hostAPI = Comlink.wrap<Record<string, unknown>>(\n self as unknown as Comlink.Endpoint\n )\n }\n\n protected sendToUI(action: string, payload: unknown): void {\n ;(this.hostAPI as Record<string, any>).ui.sendToUI({ action, payload })\n }\n\n /**\n * Signal the host that this plugin has finished its work and should be\n * stopped. Use this in headless (UI-less) plugins that run a task and\n * self-terminate.\n */\n protected complete(): void {\n ;(this.hostAPI as Record<string, any>).lifecycle.complete()\n }\n\n async init(): Promise<void> {\n console.log(this.pluginId, \"init() called\")\n console.log(this.pluginId, \"Initialization complete\")\n }\n\n async destroy(): Promise<void> {\n console.log(this.pluginId, \"destroy() called — cleaning up\")\n }\n\n async ping(): Promise<string> {\n return \"pong\"\n }\n\n async onUIMessage(_message: UIMessage): Promise<void> {\n // Override in subclass to handle UI messages\n }\n\n /**\n * Expose the worker API via Comlink and start listening.\n * Call this once after constructing the plugin instance.\n *\n * The host calls `init(config)` with `{ pluginId, permissions }`,\n * which is captured here to set `this.pluginId` before the\n * subclass's `init()` runs.\n */\n start(): void {\n Comlink.expose(\n {\n init: (config: PluginConfig) => {\n this.pluginId = config.pluginId\n return this.init()\n },\n destroy: () => this.destroy(),\n ping: () => this.ping(),\n onUIMessage: (message: UIMessage) => this.onUIMessage(message),\n },\n self as unknown as Comlink.Endpoint\n )\n console.log(\"Worker loaded, API exposed via Comlink\")\n }\n}\n"],"mappings":"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","names":["import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","import_plugin_core","Comlink"]}
package/dist/index.js CHANGED
@@ -124,6 +124,43 @@ var ClientCoreApi = class extends PluginCoreApi {
124
124
  // src/api/entity/index.ts
125
125
  import { PluginEntityApi } from "@snaptrude/plugin-core";
126
126
 
127
+ // src/api/entity/referenceLine.ts
128
+ import {
129
+ PluginReferenceLineApi
130
+ } from "@snaptrude/plugin-core";
131
+ var ClientReferenceLineApi = class extends PluginReferenceLineApi {
132
+ constructor() {
133
+ super();
134
+ }
135
+ async createMulti(args) {
136
+ const hostApi = getHostApi();
137
+ return hostApi.call({
138
+ method: "entity.referenceLine.createMulti",
139
+ args
140
+ });
141
+ }
142
+ async get(args) {
143
+ const hostApi = getHostApi();
144
+ return hostApi.call({
145
+ method: "entity.referenceLine.get",
146
+ args
147
+ });
148
+ }
149
+ async getAll() {
150
+ const hostApi = getHostApi();
151
+ return hostApi.call({
152
+ method: "entity.referenceLine.getAll"
153
+ });
154
+ }
155
+ async delete(args) {
156
+ const hostApi = getHostApi();
157
+ return hostApi.call({
158
+ method: "entity.referenceLine.delete",
159
+ args
160
+ });
161
+ }
162
+ };
163
+
127
164
  // src/api/entity/space.ts
128
165
  import {
129
166
  PluginSpaceApi
@@ -179,17 +216,30 @@ var ClientSpaceApi = class extends PluginSpaceApi {
179
216
  method: "entity.space.getAll"
180
217
  });
181
218
  }
182
- async deleteById({
219
+ async delete({
183
220
  spaceId
184
221
  }) {
185
222
  const hostApi = getHostApi();
186
223
  return hostApi.call({
187
- method: "entity.space.deleteById",
224
+ method: "entity.space.delete",
188
225
  args: {
189
226
  spaceId
190
227
  }
191
228
  });
192
229
  }
230
+ async update({
231
+ spaceId,
232
+ properties
233
+ }) {
234
+ const hostApi = getHostApi();
235
+ return hostApi.call({
236
+ method: "entity.space.update",
237
+ args: {
238
+ spaceId,
239
+ properties
240
+ }
241
+ });
242
+ }
193
243
  };
194
244
 
195
245
  // src/api/entity/story.ts
@@ -253,6 +303,7 @@ var ClientEntityApi = class extends PluginEntityApi {
253
303
  super();
254
304
  this.space = new ClientSpaceApi();
255
305
  this.story = new ClientStoryApi();
306
+ this.referenceLine = new ClientReferenceLineApi();
256
307
  }
257
308
  };
258
309
 
@@ -376,6 +427,15 @@ var PluginWorker = class {
376
427
  ;
377
428
  this.hostAPI.ui.sendToUI({ action, payload });
378
429
  }
430
+ /**
431
+ * Signal the host that this plugin has finished its work and should be
432
+ * stopped. Use this in headless (UI-less) plugins that run a task and
433
+ * self-terminate.
434
+ */
435
+ complete() {
436
+ ;
437
+ this.hostAPI.lifecycle.complete();
438
+ }
379
439
  async init() {
380
440
  console.log(this.pluginId, "init() called");
381
441
  console.log(this.pluginId, "Initialization complete");
@@ -426,6 +486,7 @@ export {
426
486
  ClientPluginApi,
427
487
  ClientProfileApi,
428
488
  ClientQuatApi,
489
+ ClientReferenceLineApi,
429
490
  ClientSelectionApi,
430
491
  ClientSpaceApi,
431
492
  ClientStoryApi,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/api/core/index.ts","../src/api/core/math/index.ts","../src/api/core/math/vec3.ts","../src/api/core/math/quat.ts","../src/api/core/geom/index.ts","../src/api/core/geom/line.ts","../src/api/core/geom/arc.ts","../src/api/core/geom/curve.ts","../src/api/core/geom/profile.ts","../src/host-api.ts","../src/api/entity/index.ts","../src/api/entity/space.ts","../src/api/entity/story.ts","../src/api/tools/index.ts","../src/api/tools/selection.ts","../src/api/tools/transform.ts","../src/api/units/index.ts","../src/api/index.ts","../src/plugin-worker.ts","../src/index.ts"],"sourcesContent":["import { PluginCoreApi } from \"@snaptrude/plugin-core\"\nimport { ClientMathApi } from \"./math\"\nimport { ClientGeomApi } from \"./geom\"\n\nexport class ClientCoreApi extends PluginCoreApi {\n public math: ClientMathApi\n public geom: ClientGeomApi\n\n constructor() {\n super()\n this.math = new ClientMathApi()\n this.geom = new ClientGeomApi()\n }\n}\n\nexport * from \"./math\"\nexport * from \"./geom\"\n","import { PluginMathApi } from \"@snaptrude/plugin-core\"\nimport { ClientVec3Api } from \"./vec3\"\nimport { ClientQuatApi } from \"./quat\"\n\nexport class ClientMathApi extends PluginMathApi {\n public vec3: ClientVec3Api\n public quat: ClientQuatApi\n\n constructor() {\n super()\n this.vec3 = new ClientVec3Api()\n this.quat = new ClientQuatApi()\n }\n}\n\nexport * from \"./vec3\"\nexport * from \"./quat\"\n","import { PluginVec3Api } from \"@snaptrude/plugin-core\"\n\nexport class ClientVec3Api extends PluginVec3Api {\n constructor() {\n super()\n }\n}\n","import { PluginQuatApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientQuatApi extends PluginQuatApi {\n constructor() {\n super()\n }\n}\n","import { PluginGeomApi } from \"@snaptrude/plugin-core\"\nimport { ClientLineApi } from \"./line\"\nimport { ClientArcApi } from \"./arc\"\nimport { ClientCurveApi } from \"./curve\"\nimport { ClientProfileApi } from \"./profile\"\n\nexport class ClientGeomApi extends PluginGeomApi {\n public line: ClientLineApi\n public arc: ClientArcApi\n public curve: ClientCurveApi\n public profile: ClientProfileApi\n\n constructor() {\n super()\n this.line = new ClientLineApi()\n this.arc = new ClientArcApi()\n this.curve = new ClientCurveApi()\n this.profile = new ClientProfileApi()\n }\n}\n\nexport * from \"./line\"\nexport * from \"./arc\"\nexport * from \"./curve\"\nexport * from \"./profile\"\n","import { PluginLineApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientLineApi extends PluginLineApi {\n constructor() {\n super()\n }\n}\n","import { PluginArcApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientArcApi extends PluginArcApi {\n constructor() {\n super()\n }\n}\n","import { PluginCurveApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientCurveApi extends PluginCurveApi {\n constructor() {\n super()\n }\n}\n","import { PluginProfileApi } from \"@snaptrude/plugin-core\"\nimport type { PProfile, PluginProfileFromLinePointsArgs } from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../../host-api\"\n\nexport class ClientProfileApi extends PluginProfileApi {\n constructor() {\n super()\n }\n\n public async fromLinePoints(args: PluginProfileFromLinePointsArgs): Promise<PProfile> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"core.geom.profile.fromLinePoints\",\n args,\n })\n }\n}\n","import * as Comlink from \"comlink\"\nimport type {\n PluginApiMethod,\n PluginApiCallPayload,\n PluginApiCallWrappedResult,\n PluginApiCallResult,\n} from \"@snaptrude/plugin-core\"\n\nexport interface HostApi {\n call<M extends PluginApiMethod>(\n payload: PluginApiCallPayload<M>\n ): Promise<PluginApiCallWrappedResult<M>>\n}\n\nexport interface HostApiWrapped {\n call<M extends PluginApiMethod>(\n payload: PluginApiCallPayload<M>\n ): Promise<PluginApiCallResult<M>>\n}\n\nexport function createHostApi(endpoint?: Comlink.Endpoint): HostApi {\n return Comlink.wrap<HostApi>(\n endpoint ?? (globalThis as unknown as Comlink.Endpoint)\n ) as unknown as HostApi\n}\n\nlet _instance: HostApi | null = null\n\nexport function getHostApi(): HostApiWrapped {\n if (!_instance) {\n _instance = createHostApi()\n }\n return {\n call: async <M extends PluginApiMethod>(payload: PluginApiCallPayload<M>): Promise<PluginApiCallResult<M>> => {\n if (!_instance) {\n throw new Error(\"Host API not initialized\")\n }\n return _instance.call(payload).then(result => {\n if (result.success) {\n return result.data\n } else {\n throw new Error(result.error)\n }\n })\n }\n }\n}\n","import { PluginEntityApi } from \"@snaptrude/plugin-core\"\nimport { ClientSpaceApi } from \"./space\"\nimport { ClientStoryApi } from \"./story\"\n\nexport class ClientEntityApi extends PluginEntityApi {\n public space: ClientSpaceApi\n public story: ClientStoryApi\n\n constructor() {\n super()\n this.space = new ClientSpaceApi()\n this.story = new ClientStoryApi()\n }\n}\n\nexport * from \"./space\"\nexport * from \"./story\"\n","import {\n PluginSpaceApi,\n PluginSpaceCreateRectangularArgs,\n PluginSpaceCreateRectangularResult,\n PluginSpaceCreateFromProfileArgs,\n PluginSpaceCreateFromProfileResult,\n PluginSpaceDeleteByIdArgs,\n PluginSpaceDeleteByIdResult,\n PluginSpaceGetArgs,\n PluginSpaceGetResult,\n PluginSpaceGetAllResult,\n} from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientSpaceApi extends PluginSpaceApi {\n constructor() {\n super()\n }\n\n public async createRectangular({\n position,\n dimensions,\n }: PluginSpaceCreateRectangularArgs): Promise<PluginSpaceCreateRectangularResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.createRectangular\",\n args: {\n position,\n dimensions,\n },\n })\n }\n\n public async createFromProfile({\n profile,\n extrudeHeight,\n position,\n }: PluginSpaceCreateFromProfileArgs): Promise<PluginSpaceCreateFromProfileResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.createFromProfile\",\n args: {\n profile,\n extrudeHeight,\n position,\n },\n })\n }\n\n public async get({\n spaceId,\n properties,\n }: PluginSpaceGetArgs): Promise<PluginSpaceGetResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.get\",\n args: {\n spaceId,\n properties,\n },\n })\n }\n\n public async getAll(): Promise<PluginSpaceGetAllResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.getAll\",\n })\n }\n\n public async deleteById({\n spaceId,\n }: PluginSpaceDeleteByIdArgs): Promise<PluginSpaceDeleteByIdResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.deleteById\",\n args: {\n spaceId,\n },\n })\n }\n}\n","import {\n PluginStoryApi,\n PluginStoryGetArgs,\n PluginStoryGetResult,\n PluginStoryGetAllResult,\n PluginStoryCreateArgs,\n PluginStoryCreateResult,\n PluginStoryUpdateArgs,\n PluginStoryUpdateResult,\n} from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientStoryApi extends PluginStoryApi {\n constructor() {\n super()\n }\n\n public async get({\n storyValue,\n properties,\n }: PluginStoryGetArgs): Promise<PluginStoryGetResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.story.get\",\n args: {\n storyValue,\n properties,\n },\n })\n }\n\n public async getAll(): Promise<PluginStoryGetAllResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.story.getAll\",\n })\n }\n\n public async create({\n storyValue,\n height,\n }: PluginStoryCreateArgs): Promise<PluginStoryCreateResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.story.create\",\n args: {\n storyValue,\n height,\n },\n })\n }\n\n public async update({\n storyValue,\n height,\n }: PluginStoryUpdateArgs): Promise<PluginStoryUpdateResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.story.update\",\n args: {\n storyValue,\n height,\n },\n })\n }\n}\n","import { PluginToolsApi } from \"@snaptrude/plugin-core\"\nimport { ClientSelectionApi } from \"./selection\"\nimport { ClientTransformApi } from \"./transform\"\n\nexport class ClientToolsApi extends PluginToolsApi {\n public selection: ClientSelectionApi\n public transform: ClientTransformApi\n\n constructor() {\n super()\n this.selection = new ClientSelectionApi()\n this.transform = new ClientTransformApi()\n }\n}\n\nexport * from \"./selection\"\nexport * from \"./transform\"\n","import { PluginSelectionApi, PluginSelectionGetResult } from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientSelectionApi extends PluginSelectionApi {\n constructor() {\n super()\n }\n\n public async get(): Promise<PluginSelectionGetResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"tools.selection.get\",\n })\n }\n}\n","import {\n PluginTransformApi,\n PluginMoveArgs,\n PluginRotateArgs,\n} from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientTransformApi extends PluginTransformApi {\n constructor() {\n super()\n }\n\n public async move({\n componentIds,\n displacement,\n }: PluginMoveArgs): Promise<void> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"tools.transform.move\",\n args: {\n componentIds,\n displacement,\n },\n })\n }\n\n public async rotate({\n componentIds,\n angle,\n axis,\n pivot,\n }: PluginRotateArgs): Promise<void> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"tools.transform.rotate\",\n args: {\n componentIds,\n angle,\n axis,\n pivot,\n },\n })\n }\n}\n","import {\n PluginUnitsApi,\n PluginUnitsConvertFromArgs,\n PluginUnitsConvertFromResult,\n PluginUnitsConvertToArgs,\n PluginUnitsConvertToResult,\n} from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientUnitsApi extends PluginUnitsApi {\n constructor() {\n super()\n }\n\n public async convertFrom(\n args: PluginUnitsConvertFromArgs,\n ): Promise<PluginUnitsConvertFromResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"units.convertFrom\",\n args,\n })\n }\n\n public async convertTo(\n args: PluginUnitsConvertToArgs,\n ): Promise<PluginUnitsConvertToResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"units.convertTo\",\n args,\n })\n }\n}\n","import { ClientCoreApi } from \"./core\"\nimport { ClientEntityApi } from \"./entity\"\nimport { ClientToolsApi } from \"./tools\"\nimport { ClientUnitsApi } from \"./units\"\nimport { PluginApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientPluginApi extends PluginApi {\n private static instance: ClientPluginApi\n\n public core: ClientCoreApi\n public tools: ClientToolsApi\n public entity: ClientEntityApi\n public units: ClientUnitsApi\n\n private constructor() {\n super()\n this.core = new ClientCoreApi()\n this.tools = new ClientToolsApi()\n this.entity = new ClientEntityApi()\n this.units = new ClientUnitsApi()\n }\n\n static getInstance(): ClientPluginApi {\n if (!ClientPluginApi.instance) {\n ClientPluginApi.instance = new ClientPluginApi()\n }\n return ClientPluginApi.instance\n }\n}\n\nexport * from \"./core\"\nexport * from \"./entity\"\nexport * from \"./tools\"\nexport * from \"./units\"\n","import * as Comlink from \"comlink\"\n\nexport interface UIMessage {\n action: string\n payload: unknown\n}\n\ninterface PluginConfig {\n pluginId: string\n permissions: string[]\n}\n\n/**\n * Base class for Snaptrude plugin workers.\n *\n * Handles Comlink wiring, host communication, and the standard lifecycle\n * methods (`init`, `destroy`, `ping`, `onUIMessage`). Subclass this and\n * override only the methods you need — then call `start()` to expose the\n * worker API.\n *\n * The plugin ID is received automatically from the host during\n * initialization — no need to pass it manually.\n *\n * @example\n * ```ts\n * import { PluginWorker } from \"@snaptrude/plugin-client\";\n *\n * class MyPlugin extends PluginWorker {\n * async onUIMessage(message: UIMessage) {\n * // handle messages from the UI panel\n * }\n * }\n *\n * new MyPlugin().start();\n * ```\n */\nexport abstract class PluginWorker {\n protected pluginId!: string\n private hostAPI: Comlink.Remote<Record<string, unknown>>\n\n constructor() {\n this.hostAPI = Comlink.wrap<Record<string, unknown>>(\n self as unknown as Comlink.Endpoint\n )\n }\n\n protected sendToUI(action: string, payload: unknown): void {\n ;(this.hostAPI as Record<string, any>).ui.sendToUI({ action, payload })\n }\n\n async init(): Promise<void> {\n console.log(this.pluginId, \"init() called\")\n console.log(this.pluginId, \"Initialization complete\")\n }\n\n async destroy(): Promise<void> {\n console.log(this.pluginId, \"destroy() called — cleaning up\")\n }\n\n async ping(): Promise<string> {\n return \"pong\"\n }\n\n async onUIMessage(_message: UIMessage): Promise<void> {\n // Override in subclass to handle UI messages\n }\n\n /**\n * Expose the worker API via Comlink and start listening.\n * Call this once after constructing the plugin instance.\n *\n * The host calls `init(config)` with `{ pluginId, permissions }`,\n * which is captured here to set `this.pluginId` before the\n * subclass's `init()` runs.\n */\n start(): void {\n Comlink.expose(\n {\n init: (config: PluginConfig) => {\n this.pluginId = config.pluginId\n return this.init()\n },\n destroy: () => this.destroy(),\n ping: () => this.ping(),\n onUIMessage: (message: UIMessage) => this.onUIMessage(message),\n },\n self as unknown as Comlink.Endpoint\n )\n console.log(\"Worker loaded, API exposed via Comlink\")\n }\n}\n","import { ClientPluginApi } from \"./api\"\n\nexport * from \"./api\"\nexport * from \"./host-api\"\nexport * from \"./plugin-worker\"\n\n/**\n * The Snaptrude plugin client API.\n *\n * The main entry point for plugins to interact with the Snaptrude platform.\n */\nexport const snaptrude = ClientPluginApi.getInstance()\n"],"mappings":"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","names":["Comlink"]}
1
+ {"version":3,"sources":["../src/api/core/index.ts","../src/api/core/math/index.ts","../src/api/core/math/vec3.ts","../src/api/core/math/quat.ts","../src/api/core/geom/index.ts","../src/api/core/geom/line.ts","../src/api/core/geom/arc.ts","../src/api/core/geom/curve.ts","../src/api/core/geom/profile.ts","../src/host-api.ts","../src/api/entity/index.ts","../src/api/entity/referenceLine.ts","../src/api/entity/space.ts","../src/api/entity/story.ts","../src/api/tools/index.ts","../src/api/tools/selection.ts","../src/api/tools/transform.ts","../src/api/units/index.ts","../src/api/index.ts","../src/plugin-worker.ts","../src/index.ts"],"sourcesContent":["import { PluginCoreApi } from \"@snaptrude/plugin-core\"\nimport { ClientMathApi } from \"./math\"\nimport { ClientGeomApi } from \"./geom\"\n\nexport class ClientCoreApi extends PluginCoreApi {\n public math: ClientMathApi\n public geom: ClientGeomApi\n\n constructor() {\n super()\n this.math = new ClientMathApi()\n this.geom = new ClientGeomApi()\n }\n}\n\nexport * from \"./math\"\nexport * from \"./geom\"\n","import { PluginMathApi } from \"@snaptrude/plugin-core\"\nimport { ClientVec3Api } from \"./vec3\"\nimport { ClientQuatApi } from \"./quat\"\n\nexport class ClientMathApi extends PluginMathApi {\n public vec3: ClientVec3Api\n public quat: ClientQuatApi\n\n constructor() {\n super()\n this.vec3 = new ClientVec3Api()\n this.quat = new ClientQuatApi()\n }\n}\n\nexport * from \"./vec3\"\nexport * from \"./quat\"\n","import { PluginVec3Api } from \"@snaptrude/plugin-core\"\n\nexport class ClientVec3Api extends PluginVec3Api {\n constructor() {\n super()\n }\n}\n","import { PluginQuatApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientQuatApi extends PluginQuatApi {\n constructor() {\n super()\n }\n}\n","import { PluginGeomApi } from \"@snaptrude/plugin-core\"\nimport { ClientLineApi } from \"./line\"\nimport { ClientArcApi } from \"./arc\"\nimport { ClientCurveApi } from \"./curve\"\nimport { ClientProfileApi } from \"./profile\"\n\nexport class ClientGeomApi extends PluginGeomApi {\n public line: ClientLineApi\n public arc: ClientArcApi\n public curve: ClientCurveApi\n public profile: ClientProfileApi\n\n constructor() {\n super()\n this.line = new ClientLineApi()\n this.arc = new ClientArcApi()\n this.curve = new ClientCurveApi()\n this.profile = new ClientProfileApi()\n }\n}\n\nexport * from \"./line\"\nexport * from \"./arc\"\nexport * from \"./curve\"\nexport * from \"./profile\"\n","import { PluginLineApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientLineApi extends PluginLineApi {\n constructor() {\n super()\n }\n}\n","import { PluginArcApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientArcApi extends PluginArcApi {\n constructor() {\n super()\n }\n}\n","import { PluginCurveApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientCurveApi extends PluginCurveApi {\n constructor() {\n super()\n }\n}\n","import { PluginProfileApi } from \"@snaptrude/plugin-core\"\nimport type { PProfile, PluginProfileFromLinePointsArgs } from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../../host-api\"\n\nexport class ClientProfileApi extends PluginProfileApi {\n constructor() {\n super()\n }\n\n public async fromLinePoints(args: PluginProfileFromLinePointsArgs): Promise<PProfile> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"core.geom.profile.fromLinePoints\",\n args,\n })\n }\n}\n","import * as Comlink from \"comlink\"\nimport type {\n PluginApiMethod,\n PluginApiCallPayload,\n PluginApiCallWrappedResult,\n PluginApiCallResult,\n} from \"@snaptrude/plugin-core\"\n\nexport interface HostApi {\n call<M extends PluginApiMethod>(\n payload: PluginApiCallPayload<M>\n ): Promise<PluginApiCallWrappedResult<M>>\n}\n\nexport interface HostApiWrapped {\n call<M extends PluginApiMethod>(\n payload: PluginApiCallPayload<M>\n ): Promise<PluginApiCallResult<M>>\n}\n\nexport function createHostApi(endpoint?: Comlink.Endpoint): HostApi {\n return Comlink.wrap<HostApi>(\n endpoint ?? (globalThis as unknown as Comlink.Endpoint)\n ) as unknown as HostApi\n}\n\nlet _instance: HostApi | null = null\n\nexport function getHostApi(): HostApiWrapped {\n if (!_instance) {\n _instance = createHostApi()\n }\n return {\n call: async <M extends PluginApiMethod>(payload: PluginApiCallPayload<M>): Promise<PluginApiCallResult<M>> => {\n if (!_instance) {\n throw new Error(\"Host API not initialized\")\n }\n return _instance.call(payload).then(result => {\n if (result.success) {\n return result.data\n } else {\n throw new Error(result.error)\n }\n })\n }\n }\n}\n","import { PluginEntityApi } from \"@snaptrude/plugin-core\"\nimport { ClientReferenceLineApi } from \"./referenceLine\"\nimport { ClientSpaceApi } from \"./space\"\nimport { ClientStoryApi } from \"./story\"\n\nexport class ClientEntityApi extends PluginEntityApi {\n public space: ClientSpaceApi\n public story: ClientStoryApi\n public referenceLine: ClientReferenceLineApi\n\n constructor() {\n super()\n this.space = new ClientSpaceApi()\n this.story = new ClientStoryApi()\n this.referenceLine = new ClientReferenceLineApi()\n }\n}\n\nexport * from \"./referenceLine\"\nexport * from \"./space\"\nexport * from \"./story\"\n","import {\n PluginReferenceLineApi,\n PluginReferenceLineCreateMultiArgs,\n PluginReferenceLineCreateMultiResult,\n PluginReferenceLineGetArgs,\n PluginReferenceLineGetResult,\n PluginReferenceLineGetAllResult,\n PluginReferenceLineDeleteArgs,\n PluginReferenceLineDeleteResult,\n} from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientReferenceLineApi extends PluginReferenceLineApi {\n constructor() {\n super()\n }\n\n public async createMulti(\n args: PluginReferenceLineCreateMultiArgs\n ): Promise<PluginReferenceLineCreateMultiResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.referenceLine.createMulti\",\n args,\n })\n }\n\n public async get(\n args: PluginReferenceLineGetArgs\n ): Promise<PluginReferenceLineGetResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.referenceLine.get\",\n args,\n })\n }\n\n public async getAll(): Promise<PluginReferenceLineGetAllResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.referenceLine.getAll\",\n })\n }\n\n public async delete(\n args: PluginReferenceLineDeleteArgs\n ): Promise<PluginReferenceLineDeleteResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.referenceLine.delete\",\n args,\n })\n }\n}\n","import {\n PluginSpaceApi,\n PluginSpaceCreateRectangularArgs,\n PluginSpaceCreateRectangularResult,\n PluginSpaceCreateFromProfileArgs,\n PluginSpaceCreateFromProfileResult,\n PluginSpaceDeleteArgs,\n PluginSpaceDeleteResult,\n PluginSpaceGetArgs,\n PluginSpaceGetResult,\n PluginSpaceGetAllResult,\n PluginSpaceUpdateArgs,\n PluginSpaceUpdateResult,\n} from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientSpaceApi extends PluginSpaceApi {\n constructor() {\n super()\n }\n\n public async createRectangular({\n position,\n dimensions,\n }: PluginSpaceCreateRectangularArgs): Promise<PluginSpaceCreateRectangularResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.createRectangular\",\n args: {\n position,\n dimensions,\n },\n })\n }\n\n public async createFromProfile({\n profile,\n extrudeHeight,\n position,\n }: PluginSpaceCreateFromProfileArgs): Promise<PluginSpaceCreateFromProfileResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.createFromProfile\",\n args: {\n profile,\n extrudeHeight,\n position,\n },\n })\n }\n\n public async get({\n spaceId,\n properties,\n }: PluginSpaceGetArgs): Promise<PluginSpaceGetResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.get\",\n args: {\n spaceId,\n properties,\n },\n })\n }\n\n public async getAll(): Promise<PluginSpaceGetAllResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.getAll\",\n })\n }\n\n public async delete({\n spaceId,\n }: PluginSpaceDeleteArgs): Promise<PluginSpaceDeleteResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.delete\",\n args: {\n spaceId,\n },\n })\n }\n\n public async update({\n spaceId,\n properties,\n }: PluginSpaceUpdateArgs): Promise<PluginSpaceUpdateResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.space.update\",\n args: {\n spaceId,\n properties,\n },\n })\n }\n}\n","import {\n PluginStoryApi,\n PluginStoryGetArgs,\n PluginStoryGetResult,\n PluginStoryGetAllResult,\n PluginStoryCreateArgs,\n PluginStoryCreateResult,\n PluginStoryUpdateArgs,\n PluginStoryUpdateResult,\n} from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientStoryApi extends PluginStoryApi {\n constructor() {\n super()\n }\n\n public async get({\n storyValue,\n properties,\n }: PluginStoryGetArgs): Promise<PluginStoryGetResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.story.get\",\n args: {\n storyValue,\n properties,\n },\n })\n }\n\n public async getAll(): Promise<PluginStoryGetAllResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.story.getAll\",\n })\n }\n\n public async create({\n storyValue,\n height,\n }: PluginStoryCreateArgs): Promise<PluginStoryCreateResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.story.create\",\n args: {\n storyValue,\n height,\n },\n })\n }\n\n public async update({\n storyValue,\n height,\n }: PluginStoryUpdateArgs): Promise<PluginStoryUpdateResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"entity.story.update\",\n args: {\n storyValue,\n height,\n },\n })\n }\n}\n","import { PluginToolsApi } from \"@snaptrude/plugin-core\"\nimport { ClientSelectionApi } from \"./selection\"\nimport { ClientTransformApi } from \"./transform\"\n\nexport class ClientToolsApi extends PluginToolsApi {\n public selection: ClientSelectionApi\n public transform: ClientTransformApi\n\n constructor() {\n super()\n this.selection = new ClientSelectionApi()\n this.transform = new ClientTransformApi()\n }\n}\n\nexport * from \"./selection\"\nexport * from \"./transform\"\n","import { PluginSelectionApi, PluginSelectionGetResult } from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientSelectionApi extends PluginSelectionApi {\n constructor() {\n super()\n }\n\n public async get(): Promise<PluginSelectionGetResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"tools.selection.get\",\n })\n }\n}\n","import {\n PluginTransformApi,\n PluginMoveArgs,\n PluginRotateArgs,\n} from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientTransformApi extends PluginTransformApi {\n constructor() {\n super()\n }\n\n public async move({\n componentIds,\n displacement,\n }: PluginMoveArgs): Promise<void> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"tools.transform.move\",\n args: {\n componentIds,\n displacement,\n },\n })\n }\n\n public async rotate({\n componentIds,\n angle,\n axis,\n pivot,\n }: PluginRotateArgs): Promise<void> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"tools.transform.rotate\",\n args: {\n componentIds,\n angle,\n axis,\n pivot,\n },\n })\n }\n}\n","import {\n PluginUnitsApi,\n PluginUnitsConvertFromArgs,\n PluginUnitsConvertFromResult,\n PluginUnitsConvertToArgs,\n PluginUnitsConvertToResult,\n} from \"@snaptrude/plugin-core\"\nimport { getHostApi } from \"../../host-api\"\n\nexport class ClientUnitsApi extends PluginUnitsApi {\n constructor() {\n super()\n }\n\n public async convertFrom(\n args: PluginUnitsConvertFromArgs,\n ): Promise<PluginUnitsConvertFromResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"units.convertFrom\",\n args,\n })\n }\n\n public async convertTo(\n args: PluginUnitsConvertToArgs,\n ): Promise<PluginUnitsConvertToResult> {\n const hostApi = getHostApi()\n return hostApi.call({\n method: \"units.convertTo\",\n args,\n })\n }\n}\n","import { ClientCoreApi } from \"./core\"\nimport { ClientEntityApi } from \"./entity\"\nimport { ClientToolsApi } from \"./tools\"\nimport { ClientUnitsApi } from \"./units\"\nimport { PluginApi } from \"@snaptrude/plugin-core\"\n\nexport class ClientPluginApi extends PluginApi {\n private static instance: ClientPluginApi\n\n public core: ClientCoreApi\n public tools: ClientToolsApi\n public entity: ClientEntityApi\n public units: ClientUnitsApi\n\n private constructor() {\n super()\n this.core = new ClientCoreApi()\n this.tools = new ClientToolsApi()\n this.entity = new ClientEntityApi()\n this.units = new ClientUnitsApi()\n }\n\n static getInstance(): ClientPluginApi {\n if (!ClientPluginApi.instance) {\n ClientPluginApi.instance = new ClientPluginApi()\n }\n return ClientPluginApi.instance\n }\n}\n\nexport * from \"./core\"\nexport * from \"./entity\"\nexport * from \"./tools\"\nexport * from \"./units\"\n","import * as Comlink from \"comlink\"\n\nexport interface UIMessage {\n action: string\n payload: unknown\n}\n\ninterface PluginConfig {\n pluginId: string\n permissions: string[]\n}\n\n/**\n * Base class for Snaptrude plugin workers.\n *\n * Handles Comlink wiring, host communication, and the standard lifecycle\n * methods (`init`, `destroy`, `ping`, `onUIMessage`). Subclass this and\n * override only the methods you need — then call `start()` to expose the\n * worker API.\n *\n * The plugin ID is received automatically from the host during\n * initialization — no need to pass it manually.\n *\n * @example\n * ```ts\n * import { PluginWorker } from \"@snaptrude/plugin-client\";\n *\n * class MyPlugin extends PluginWorker {\n * async onUIMessage(message: UIMessage) {\n * // handle messages from the UI panel\n * }\n * }\n *\n * new MyPlugin().start();\n * ```\n */\nexport abstract class PluginWorker {\n protected pluginId!: string\n private hostAPI: Comlink.Remote<Record<string, unknown>>\n\n constructor() {\n this.hostAPI = Comlink.wrap<Record<string, unknown>>(\n self as unknown as Comlink.Endpoint\n )\n }\n\n protected sendToUI(action: string, payload: unknown): void {\n ;(this.hostAPI as Record<string, any>).ui.sendToUI({ action, payload })\n }\n\n /**\n * Signal the host that this plugin has finished its work and should be\n * stopped. Use this in headless (UI-less) plugins that run a task and\n * self-terminate.\n */\n protected complete(): void {\n ;(this.hostAPI as Record<string, any>).lifecycle.complete()\n }\n\n async init(): Promise<void> {\n console.log(this.pluginId, \"init() called\")\n console.log(this.pluginId, \"Initialization complete\")\n }\n\n async destroy(): Promise<void> {\n console.log(this.pluginId, \"destroy() called — cleaning up\")\n }\n\n async ping(): Promise<string> {\n return \"pong\"\n }\n\n async onUIMessage(_message: UIMessage): Promise<void> {\n // Override in subclass to handle UI messages\n }\n\n /**\n * Expose the worker API via Comlink and start listening.\n * Call this once after constructing the plugin instance.\n *\n * The host calls `init(config)` with `{ pluginId, permissions }`,\n * which is captured here to set `this.pluginId` before the\n * subclass's `init()` runs.\n */\n start(): void {\n Comlink.expose(\n {\n init: (config: PluginConfig) => {\n this.pluginId = config.pluginId\n return this.init()\n },\n destroy: () => this.destroy(),\n ping: () => this.ping(),\n onUIMessage: (message: UIMessage) => this.onUIMessage(message),\n },\n self as unknown as Comlink.Endpoint\n )\n console.log(\"Worker loaded, API exposed via Comlink\")\n }\n}\n","import { ClientPluginApi } from \"./api\"\n\nexport * from \"./api\"\nexport * from \"./host-api\"\nexport * from \"./plugin-worker\"\n\n/**\n * The Snaptrude plugin client API.\n *\n * The main entry point for plugins to interact with the Snaptrude platform.\n */\nexport const snaptrude = ClientPluginApi.getInstance()\n"],"mappings":"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","names":["Comlink"]}
@@ -31,6 +31,12 @@ export declare abstract class PluginWorker {
31
31
  private hostAPI;
32
32
  constructor();
33
33
  protected sendToUI(action: string, payload: unknown): void;
34
+ /**
35
+ * Signal the host that this plugin has finished its work and should be
36
+ * stopped. Use this in headless (UI-less) plugins that run a task and
37
+ * self-terminate.
38
+ */
39
+ protected complete(): void;
34
40
  init(): Promise<void>;
35
41
  destroy(): Promise<void>;
36
42
  ping(): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-worker.d.ts","sourceRoot":"","sources":["../src/plugin-worker.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;CACjB;AAOD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,8BAAsB,YAAY;IAChC,SAAS,CAAC,QAAQ,EAAG,MAAM,CAAA;IAC3B,OAAO,CAAC,OAAO,CAAyC;;IAQxD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAIpD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvB,WAAW,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD;;;;;;;OAOG;IACH,KAAK,IAAI,IAAI;CAed"}
1
+ {"version":3,"file":"plugin-worker.d.ts","sourceRoot":"","sources":["../src/plugin-worker.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;CACjB;AAOD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,8BAAsB,YAAY;IAChC,SAAS,CAAC,QAAQ,EAAG,MAAM,CAAA;IAC3B,OAAO,CAAC,OAAO,CAAyC;;IAQxD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAI1D;;;;OAIG;IACH,SAAS,CAAC,QAAQ,IAAI,IAAI;IAIpB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvB,WAAW,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD;;;;;;;OAOG;IACH,KAAK,IAAI,IAAI;CAed"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snaptrude/plugin-client",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -18,7 +18,7 @@
18
18
  },
19
19
  "dependencies": {
20
20
  "comlink": "^4.4.2",
21
- "@snaptrude/plugin-core": "0.0.5"
21
+ "@snaptrude/plugin-core": "0.0.7"
22
22
  },
23
23
  "devDependencies": {
24
24
  "tsup": "^8.5.1",
@@ -26,7 +26,7 @@
26
26
  },
27
27
  "scripts": {
28
28
  "check-types": "tsc --noEmit",
29
- "build": "tsup",
29
+ "build": "tsup --clean",
30
30
  "dev": "tsup --watch",
31
31
  "clean-dist": "rm -rf dist"
32
32
  }
@@ -1,17 +1,21 @@
1
1
  import { PluginEntityApi } from "@snaptrude/plugin-core"
2
+ import { ClientReferenceLineApi } from "./referenceLine"
2
3
  import { ClientSpaceApi } from "./space"
3
4
  import { ClientStoryApi } from "./story"
4
5
 
5
6
  export class ClientEntityApi extends PluginEntityApi {
6
7
  public space: ClientSpaceApi
7
8
  public story: ClientStoryApi
9
+ public referenceLine: ClientReferenceLineApi
8
10
 
9
11
  constructor() {
10
12
  super()
11
13
  this.space = new ClientSpaceApi()
12
14
  this.story = new ClientStoryApi()
15
+ this.referenceLine = new ClientReferenceLineApi()
13
16
  }
14
17
  }
15
18
 
19
+ export * from "./referenceLine"
16
20
  export * from "./space"
17
21
  export * from "./story"
@@ -0,0 +1,54 @@
1
+ import {
2
+ PluginReferenceLineApi,
3
+ PluginReferenceLineCreateMultiArgs,
4
+ PluginReferenceLineCreateMultiResult,
5
+ PluginReferenceLineGetArgs,
6
+ PluginReferenceLineGetResult,
7
+ PluginReferenceLineGetAllResult,
8
+ PluginReferenceLineDeleteArgs,
9
+ PluginReferenceLineDeleteResult,
10
+ } from "@snaptrude/plugin-core"
11
+ import { getHostApi } from "../../host-api"
12
+
13
+ export class ClientReferenceLineApi extends PluginReferenceLineApi {
14
+ constructor() {
15
+ super()
16
+ }
17
+
18
+ public async createMulti(
19
+ args: PluginReferenceLineCreateMultiArgs
20
+ ): Promise<PluginReferenceLineCreateMultiResult> {
21
+ const hostApi = getHostApi()
22
+ return hostApi.call({
23
+ method: "entity.referenceLine.createMulti",
24
+ args,
25
+ })
26
+ }
27
+
28
+ public async get(
29
+ args: PluginReferenceLineGetArgs
30
+ ): Promise<PluginReferenceLineGetResult> {
31
+ const hostApi = getHostApi()
32
+ return hostApi.call({
33
+ method: "entity.referenceLine.get",
34
+ args,
35
+ })
36
+ }
37
+
38
+ public async getAll(): Promise<PluginReferenceLineGetAllResult> {
39
+ const hostApi = getHostApi()
40
+ return hostApi.call({
41
+ method: "entity.referenceLine.getAll",
42
+ })
43
+ }
44
+
45
+ public async delete(
46
+ args: PluginReferenceLineDeleteArgs
47
+ ): Promise<PluginReferenceLineDeleteResult> {
48
+ const hostApi = getHostApi()
49
+ return hostApi.call({
50
+ method: "entity.referenceLine.delete",
51
+ args,
52
+ })
53
+ }
54
+ }
@@ -4,11 +4,13 @@ import {
4
4
  PluginSpaceCreateRectangularResult,
5
5
  PluginSpaceCreateFromProfileArgs,
6
6
  PluginSpaceCreateFromProfileResult,
7
- PluginSpaceDeleteByIdArgs,
8
- PluginSpaceDeleteByIdResult,
7
+ PluginSpaceDeleteArgs,
8
+ PluginSpaceDeleteResult,
9
9
  PluginSpaceGetArgs,
10
10
  PluginSpaceGetResult,
11
11
  PluginSpaceGetAllResult,
12
+ PluginSpaceUpdateArgs,
13
+ PluginSpaceUpdateResult,
12
14
  } from "@snaptrude/plugin-core"
13
15
  import { getHostApi } from "../../host-api"
14
16
 
@@ -68,15 +70,29 @@ export class ClientSpaceApi extends PluginSpaceApi {
68
70
  })
69
71
  }
70
72
 
71
- public async deleteById({
73
+ public async delete({
72
74
  spaceId,
73
- }: PluginSpaceDeleteByIdArgs): Promise<PluginSpaceDeleteByIdResult> {
75
+ }: PluginSpaceDeleteArgs): Promise<PluginSpaceDeleteResult> {
74
76
  const hostApi = getHostApi()
75
77
  return hostApi.call({
76
- method: "entity.space.deleteById",
78
+ method: "entity.space.delete",
77
79
  args: {
78
80
  spaceId,
79
81
  },
80
82
  })
81
83
  }
84
+
85
+ public async update({
86
+ spaceId,
87
+ properties,
88
+ }: PluginSpaceUpdateArgs): Promise<PluginSpaceUpdateResult> {
89
+ const hostApi = getHostApi()
90
+ return hostApi.call({
91
+ method: "entity.space.update",
92
+ args: {
93
+ spaceId,
94
+ properties,
95
+ },
96
+ })
97
+ }
82
98
  }
@@ -48,6 +48,15 @@ export abstract class PluginWorker {
48
48
  ;(this.hostAPI as Record<string, any>).ui.sendToUI({ action, payload })
49
49
  }
50
50
 
51
+ /**
52
+ * Signal the host that this plugin has finished its work and should be
53
+ * stopped. Use this in headless (UI-less) plugins that run a task and
54
+ * self-terminate.
55
+ */
56
+ protected complete(): void {
57
+ ;(this.hostAPI as Record<string, any>).lifecycle.complete()
58
+ }
59
+
51
60
  async init(): Promise<void> {
52
61
  console.log(this.pluginId, "init() called")
53
62
  console.log(this.pluginId, "Initialization complete")
package/tsup.config.ts CHANGED
@@ -6,7 +6,6 @@ export default defineConfig( (options) => {
6
6
  format: ["cjs", "esm"],
7
7
  dts: false,
8
8
  sourcemap: true,
9
- clean: true,
10
9
  onSuccess: "tsc", // Run tsc to generate d.ts and d.ts.map
11
10
  watch: options.watch,
12
11
  }