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