@objectstack/metadata 7.0.0 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/node.cjs CHANGED
@@ -203,8 +203,7 @@ __export(node_exports, {
203
203
  YAMLSerializer: () => YAMLSerializer,
204
204
  calculateChecksum: () => calculateChecksum,
205
205
  generateDiffSummary: () => generateDiffSummary,
206
- generateSimpleDiff: () => generateSimpleDiff,
207
- registerMetadataHistoryRoutes: () => registerMetadataHistoryRoutes
206
+ generateSimpleDiff: () => generateSimpleDiff
208
207
  });
209
208
  module.exports = __toCommonJS(node_exports);
210
209
 
@@ -2132,7 +2131,18 @@ var _MetadataManager = class _MetadataManager {
2132
2131
  // ==========================================
2133
2132
  /**
2134
2133
  * Validate a metadata item against its type schema.
2135
- * Returns validation result with errors and warnings.
2134
+ *
2135
+ * NOTE: This is a lightweight structural check (presence of `name`,
2136
+ * basic shape). The authoritative spec validation lives in
2137
+ * `protocol.saveMetaItem` (write path) and is surfaced on read
2138
+ * paths via the `_diagnostics` envelope attached by
2139
+ * `protocol.getMetaItems` / `getMetaItem`. Both delegate to
2140
+ * `getMetadataTypeSchema()` — the single source of truth. We
2141
+ * deliberately do NOT run the full Zod schema here because
2142
+ * `MetadataManager`'s registry stores *publish envelopes*
2143
+ * (`{name, packageId, state, metadata: {...spec}}`), not raw spec
2144
+ * documents — running spec validation against the envelope would
2145
+ * yield false negatives.
2136
2146
  */
2137
2147
  async validate(_type, data) {
2138
2148
  if (data === null || data === void 0) {
@@ -3169,6 +3179,7 @@ var ARTIFACT_FIELD_TO_TYPE = {
3169
3179
  mappings: "mapping",
3170
3180
  analyticsCubes: "analytics_cube",
3171
3181
  connectors: "connector",
3182
+ emailTemplates: "email_template",
3172
3183
  data: "dataset"
3173
3184
  };
3174
3185
  var MetadataPlugin = class {
@@ -3642,126 +3653,6 @@ var RemoteLoader = class {
3642
3653
  // src/index.ts
3643
3654
  var import_metadata3 = require("@objectstack/platform-objects/metadata");
3644
3655
 
3645
- // src/routes/history-routes.ts
3646
- function registerMetadataHistoryRoutes(app, metadataService) {
3647
- app.get("/api/v1/metadata/:type/:name/history", async (c) => {
3648
- if (!metadataService.getHistory) {
3649
- return c.json({ error: "History tracking not enabled" }, 501);
3650
- }
3651
- const { type, name } = c.req.param();
3652
- const query = c.req.query();
3653
- try {
3654
- const options = {};
3655
- if (query.limit !== void 0) {
3656
- const limit = parseInt(query.limit, 10);
3657
- if (!Number.isFinite(limit) || limit < 1) {
3658
- return c.json({ success: false, error: "limit must be a positive integer" }, 400);
3659
- }
3660
- options.limit = limit;
3661
- }
3662
- if (query.offset !== void 0) {
3663
- const offset = parseInt(query.offset, 10);
3664
- if (!Number.isFinite(offset) || offset < 0) {
3665
- return c.json({ success: false, error: "offset must be a non-negative integer" }, 400);
3666
- }
3667
- options.offset = offset;
3668
- }
3669
- if (query.since) options.since = query.since;
3670
- if (query.until) options.until = query.until;
3671
- if (query.operationType) options.operationType = query.operationType;
3672
- if (query.includeMetadata !== void 0) {
3673
- options.includeMetadata = query.includeMetadata === "true";
3674
- }
3675
- const result = await metadataService.getHistory(type, name, options);
3676
- return c.json({
3677
- success: true,
3678
- data: result
3679
- });
3680
- } catch (error) {
3681
- return c.json(
3682
- {
3683
- success: false,
3684
- error: error instanceof Error ? error.message : "Failed to retrieve history"
3685
- },
3686
- 500
3687
- );
3688
- }
3689
- });
3690
- app.post("/api/v1/metadata/:type/:name/rollback", async (c) => {
3691
- if (!metadataService.rollback) {
3692
- return c.json({ error: "Rollback not supported" }, 501);
3693
- }
3694
- const { type, name } = c.req.param();
3695
- try {
3696
- const body = await c.req.json();
3697
- const { version, changeNote, recordedBy } = body;
3698
- if (typeof version !== "number") {
3699
- return c.json(
3700
- {
3701
- success: false,
3702
- error: "Version number is required"
3703
- },
3704
- 400
3705
- );
3706
- }
3707
- const restoredMetadata = await metadataService.rollback(type, name, version, {
3708
- changeNote,
3709
- recordedBy
3710
- });
3711
- return c.json({
3712
- success: true,
3713
- data: {
3714
- type,
3715
- name,
3716
- version,
3717
- metadata: restoredMetadata
3718
- }
3719
- });
3720
- } catch (error) {
3721
- return c.json(
3722
- {
3723
- success: false,
3724
- error: error instanceof Error ? error.message : "Rollback failed"
3725
- },
3726
- 500
3727
- );
3728
- }
3729
- });
3730
- app.get("/api/v1/metadata/:type/:name/diff", async (c) => {
3731
- if (!metadataService.diff) {
3732
- return c.json({ error: "Diff not supported" }, 501);
3733
- }
3734
- const { type, name } = c.req.param();
3735
- const query = c.req.query();
3736
- try {
3737
- const version1 = parseInt(query.version1, 10);
3738
- const version2 = parseInt(query.version2, 10);
3739
- if (isNaN(version1) || isNaN(version2)) {
3740
- return c.json(
3741
- {
3742
- success: false,
3743
- error: "Both version1 and version2 query parameters are required"
3744
- },
3745
- 400
3746
- );
3747
- }
3748
- const diffResult = await metadataService.diff(type, name, version1, version2);
3749
- return c.json({
3750
- success: true,
3751
- data: diffResult
3752
- });
3753
- } catch (error) {
3754
- return c.json(
3755
- {
3756
- success: false,
3757
- error: error instanceof Error ? error.message : "Diff failed"
3758
- },
3759
- 500
3760
- );
3761
- }
3762
- });
3763
- }
3764
-
3765
3656
  // src/utils/history-cleanup.ts
3766
3657
  var import_kernel2 = require("@objectstack/spec/kernel");
3767
3658
  function executionPinnedTypes() {
@@ -4055,7 +3946,6 @@ var MigrationExecutor = class {
4055
3946
  YAMLSerializer,
4056
3947
  calculateChecksum,
4057
3948
  generateDiffSummary,
4058
- generateSimpleDiff,
4059
- registerMetadataHistoryRoutes
3949
+ generateSimpleDiff
4060
3950
  });
4061
3951
  //# sourceMappingURL=node.cjs.map