@objectstack/runtime 3.0.11 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
 
2
- > @objectstack/runtime@3.0.11 build /home/runner/work/spec/spec/packages/runtime
2
+ > @objectstack/runtime@3.1.0 build /home/runner/work/spec/spec/packages/runtime
3
3
  > tsup --config ../../tsup.config.ts
4
4
 
5
5
  CLI Building entry: src/index.ts
@@ -10,13 +10,13 @@
10
10
  CLI Cleaning output folder
11
11
  ESM Build start
12
12
  CJS Build start
13
- ESM dist/index.js 52.37 KB
14
- ESM dist/index.js.map 117.43 KB
15
- ESM ⚡️ Build success in 118ms
16
- CJS dist/index.cjs 54.25 KB
17
- CJS dist/index.cjs.map 117.49 KB
18
- CJS ⚡️ Build success in 127ms
13
+ ESM dist/index.js 55.51 KB
14
+ ESM dist/index.js.map 123.66 KB
15
+ ESM ⚡️ Build success in 166ms
16
+ CJS dist/index.cjs 57.43 KB
17
+ CJS dist/index.cjs.map 123.73 KB
18
+ CJS ⚡️ Build success in 166ms
19
19
  DTS Build start
20
- DTS ⚡️ Build success in 6917ms
21
- DTS dist/index.d.ts 20.49 KB
22
- DTS dist/index.d.cts 20.49 KB
20
+ DTS ⚡️ Build success in 6928ms
21
+ DTS dist/index.d.ts 20.64 KB
22
+ DTS dist/index.d.cts 20.64 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @objectstack/runtime
2
2
 
3
+ ## 3.1.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [0088830]
8
+ - @objectstack/spec@3.1.0
9
+ - @objectstack/core@3.1.0
10
+ - @objectstack/rest@3.1.0
11
+ - @objectstack/types@3.1.0
12
+
3
13
  ## 3.0.11
4
14
 
5
15
  ### Patch Changes
package/dist/index.cjs CHANGED
@@ -376,6 +376,21 @@ var HttpDispatcher = class {
376
376
  return { handled: true, response: this.success({ types: ["object", "app", "plugin"] }) };
377
377
  }
378
378
  }
379
+ if (parts.length === 3 && parts[2] === "published" && (!method || method === "GET")) {
380
+ const [type, name] = parts;
381
+ const metadataService = await this.getService(import_system.CoreServiceName.enum.metadata);
382
+ if (metadataService && typeof metadataService.getPublished === "function") {
383
+ const data = await metadataService.getPublished(type, name);
384
+ if (data === void 0) return { handled: true, response: this.error("Not found", 404) };
385
+ return { handled: true, response: this.success(data) };
386
+ }
387
+ try {
388
+ const data = await broker.call("metadata.getPublished", { type, name }, { request: context.request });
389
+ return { handled: true, response: this.success(data) };
390
+ } catch (e) {
391
+ return { handled: true, response: this.error(e.message, 404) };
392
+ }
393
+ }
379
394
  if (parts.length === 2) {
380
395
  const [type, name] = parts;
381
396
  if (method === "PUT" && body) {
@@ -550,6 +565,8 @@ var HttpDispatcher = class {
550
565
  * - DELETE /packages/:id → uninstall a package
551
566
  * - PATCH /packages/:id/enable → enable a package
552
567
  * - PATCH /packages/:id/disable → disable a package
568
+ * - POST /packages/:id/publish → publish a package (metadata snapshot)
569
+ * - POST /packages/:id/revert → revert a package to last published state
553
570
  *
554
571
  * Uses ObjectQL SchemaRegistry directly (via the 'objectql' service)
555
572
  * with broker fallback for backward compatibility.
@@ -594,6 +611,32 @@ var HttpDispatcher = class {
594
611
  if (!pkg) return { handled: true, response: this.error(`Package '${id}' not found`, 404) };
595
612
  return { handled: true, response: this.success(pkg) };
596
613
  }
614
+ if (parts.length === 2 && parts[1] === "publish" && m === "POST") {
615
+ const id = decodeURIComponent(parts[0]);
616
+ const metadataService = await this.getService(import_system.CoreServiceName.enum.metadata);
617
+ if (metadataService && typeof metadataService.publishPackage === "function") {
618
+ const result = await metadataService.publishPackage(id, body || {});
619
+ return { handled: true, response: this.success(result) };
620
+ }
621
+ if (this.kernel.broker) {
622
+ const result = await this.kernel.broker.call("metadata.publishPackage", { packageId: id, ...body }, { request: context.request });
623
+ return { handled: true, response: this.success(result) };
624
+ }
625
+ return { handled: true, response: this.error("Metadata service not available", 503) };
626
+ }
627
+ if (parts.length === 2 && parts[1] === "revert" && m === "POST") {
628
+ const id = decodeURIComponent(parts[0]);
629
+ const metadataService = await this.getService(import_system.CoreServiceName.enum.metadata);
630
+ if (metadataService && typeof metadataService.revertPackage === "function") {
631
+ await metadataService.revertPackage(id);
632
+ return { handled: true, response: this.success({ success: true }) };
633
+ }
634
+ if (this.kernel.broker) {
635
+ await this.kernel.broker.call("metadata.revertPackage", { packageId: id }, { request: context.request });
636
+ return { handled: true, response: this.success({ success: true }) };
637
+ }
638
+ return { handled: true, response: this.error("Metadata service not available", 503) };
639
+ }
597
640
  if (parts.length === 1 && m === "GET") {
598
641
  const id = decodeURIComponent(parts[0]);
599
642
  const pkg = registry.getPackage(id);
@@ -1093,6 +1136,22 @@ function createDispatcherPlugin(config = {}) {
1093
1136
  errorResponse(err, res);
1094
1137
  }
1095
1138
  });
1139
+ server.post(`${prefix}/packages/:id/publish`, async (req, res) => {
1140
+ try {
1141
+ const result = await dispatcher.handlePackages(`/${req.params.id}/publish`, "POST", req.body, {}, { request: req });
1142
+ sendResult(result, res);
1143
+ } catch (err) {
1144
+ errorResponse(err, res);
1145
+ }
1146
+ });
1147
+ server.post(`${prefix}/packages/:id/revert`, async (req, res) => {
1148
+ try {
1149
+ const result = await dispatcher.handlePackages(`/${req.params.id}/revert`, "POST", req.body, {}, { request: req });
1150
+ sendResult(result, res);
1151
+ } catch (err) {
1152
+ errorResponse(err, res);
1153
+ }
1154
+ });
1096
1155
  server.post(`${prefix}/storage/upload`, async (req, res) => {
1097
1156
  try {
1098
1157
  const result = await dispatcher.handleStorage("upload", "POST", req.body, { request: req });