@objectstack/runtime 3.0.11 → 3.1.1

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/index.d.cts CHANGED
@@ -491,6 +491,8 @@ declare class HttpDispatcher {
491
491
  * - DELETE /packages/:id → uninstall a package
492
492
  * - PATCH /packages/:id/enable → enable a package
493
493
  * - PATCH /packages/:id/disable → disable a package
494
+ * - POST /packages/:id/publish → publish a package (metadata snapshot)
495
+ * - POST /packages/:id/revert → revert a package to last published state
494
496
  *
495
497
  * Uses ObjectQL SchemaRegistry directly (via the 'objectql' service)
496
498
  * with broker fallback for backward compatibility.
package/dist/index.d.ts CHANGED
@@ -491,6 +491,8 @@ declare class HttpDispatcher {
491
491
  * - DELETE /packages/:id → uninstall a package
492
492
  * - PATCH /packages/:id/enable → enable a package
493
493
  * - PATCH /packages/:id/disable → disable a package
494
+ * - POST /packages/:id/publish → publish a package (metadata snapshot)
495
+ * - POST /packages/:id/revert → revert a package to last published state
494
496
  *
495
497
  * Uses ObjectQL SchemaRegistry directly (via the 'objectql' service)
496
498
  * with broker fallback for backward compatibility.
package/dist/index.js CHANGED
@@ -340,6 +340,21 @@ var HttpDispatcher = class {
340
340
  return { handled: true, response: this.success({ types: ["object", "app", "plugin"] }) };
341
341
  }
342
342
  }
343
+ if (parts.length === 3 && parts[2] === "published" && (!method || method === "GET")) {
344
+ const [type, name] = parts;
345
+ const metadataService = await this.getService(CoreServiceName.enum.metadata);
346
+ if (metadataService && typeof metadataService.getPublished === "function") {
347
+ const data = await metadataService.getPublished(type, name);
348
+ if (data === void 0) return { handled: true, response: this.error("Not found", 404) };
349
+ return { handled: true, response: this.success(data) };
350
+ }
351
+ try {
352
+ const data = await broker.call("metadata.getPublished", { type, name }, { request: context.request });
353
+ return { handled: true, response: this.success(data) };
354
+ } catch (e) {
355
+ return { handled: true, response: this.error(e.message, 404) };
356
+ }
357
+ }
343
358
  if (parts.length === 2) {
344
359
  const [type, name] = parts;
345
360
  if (method === "PUT" && body) {
@@ -514,6 +529,8 @@ var HttpDispatcher = class {
514
529
  * - DELETE /packages/:id → uninstall a package
515
530
  * - PATCH /packages/:id/enable → enable a package
516
531
  * - PATCH /packages/:id/disable → disable a package
532
+ * - POST /packages/:id/publish → publish a package (metadata snapshot)
533
+ * - POST /packages/:id/revert → revert a package to last published state
517
534
  *
518
535
  * Uses ObjectQL SchemaRegistry directly (via the 'objectql' service)
519
536
  * with broker fallback for backward compatibility.
@@ -558,6 +575,32 @@ var HttpDispatcher = class {
558
575
  if (!pkg) return { handled: true, response: this.error(`Package '${id}' not found`, 404) };
559
576
  return { handled: true, response: this.success(pkg) };
560
577
  }
578
+ if (parts.length === 2 && parts[1] === "publish" && m === "POST") {
579
+ const id = decodeURIComponent(parts[0]);
580
+ const metadataService = await this.getService(CoreServiceName.enum.metadata);
581
+ if (metadataService && typeof metadataService.publishPackage === "function") {
582
+ const result = await metadataService.publishPackage(id, body || {});
583
+ return { handled: true, response: this.success(result) };
584
+ }
585
+ if (this.kernel.broker) {
586
+ const result = await this.kernel.broker.call("metadata.publishPackage", { packageId: id, ...body }, { request: context.request });
587
+ return { handled: true, response: this.success(result) };
588
+ }
589
+ return { handled: true, response: this.error("Metadata service not available", 503) };
590
+ }
591
+ if (parts.length === 2 && parts[1] === "revert" && m === "POST") {
592
+ const id = decodeURIComponent(parts[0]);
593
+ const metadataService = await this.getService(CoreServiceName.enum.metadata);
594
+ if (metadataService && typeof metadataService.revertPackage === "function") {
595
+ await metadataService.revertPackage(id);
596
+ return { handled: true, response: this.success({ success: true }) };
597
+ }
598
+ if (this.kernel.broker) {
599
+ await this.kernel.broker.call("metadata.revertPackage", { packageId: id }, { request: context.request });
600
+ return { handled: true, response: this.success({ success: true }) };
601
+ }
602
+ return { handled: true, response: this.error("Metadata service not available", 503) };
603
+ }
561
604
  if (parts.length === 1 && m === "GET") {
562
605
  const id = decodeURIComponent(parts[0]);
563
606
  const pkg = registry.getPackage(id);
@@ -1057,6 +1100,22 @@ function createDispatcherPlugin(config = {}) {
1057
1100
  errorResponse(err, res);
1058
1101
  }
1059
1102
  });
1103
+ server.post(`${prefix}/packages/:id/publish`, async (req, res) => {
1104
+ try {
1105
+ const result = await dispatcher.handlePackages(`/${req.params.id}/publish`, "POST", req.body, {}, { request: req });
1106
+ sendResult(result, res);
1107
+ } catch (err) {
1108
+ errorResponse(err, res);
1109
+ }
1110
+ });
1111
+ server.post(`${prefix}/packages/:id/revert`, async (req, res) => {
1112
+ try {
1113
+ const result = await dispatcher.handlePackages(`/${req.params.id}/revert`, "POST", req.body, {}, { request: req });
1114
+ sendResult(result, res);
1115
+ } catch (err) {
1116
+ errorResponse(err, res);
1117
+ }
1118
+ });
1060
1119
  server.post(`${prefix}/storage/upload`, async (req, res) => {
1061
1120
  try {
1062
1121
  const result = await dispatcher.handleStorage("upload", "POST", req.body, { request: req });