@objectstack/metadata-core 7.6.0 → 7.8.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
@@ -620,6 +620,607 @@ function multiplexWatch(layers, filter, since) {
620
620
  };
621
621
  }
622
622
 
623
+ // src/objects/sys-metadata.object.ts
624
+ var _data = require('@objectstack/spec/data');
625
+ var SysMetadataObject = _data.ObjectSchema.create({
626
+ name: "sys_metadata",
627
+ label: "System Metadata",
628
+ pluralLabel: "System Metadata",
629
+ icon: "settings",
630
+ isSystem: true,
631
+ // managedBy: 'system' — the metadata table backs every other config
632
+ // object. Writing rows directly here bypasses the typed Zod APIs and
633
+ // would let an admin inject malformed payloads. The "All Metadata"
634
+ // menu is therefore a read-only debug surface (Export only); typed
635
+ // edits flow through the dedicated per-type pages (Approval Process,
636
+ // Sharing Rule, etc.).
637
+ managedBy: "system",
638
+ description: "Stores platform and user-scope metadata records (objects, views, flows, etc.)",
639
+ fields: {
640
+ /** Primary Key (UUID) */
641
+ id: _data.Field.text({
642
+ label: "ID",
643
+ required: true,
644
+ readonly: true
645
+ }),
646
+ /** Machine name — unique identifier used in code references */
647
+ name: _data.Field.text({
648
+ label: "Name",
649
+ required: true,
650
+ searchable: true,
651
+ maxLength: 255
652
+ }),
653
+ /** Metadata type (e.g. "object", "view", "flow") */
654
+ type: _data.Field.text({
655
+ label: "Metadata Type",
656
+ required: true,
657
+ searchable: true,
658
+ maxLength: 100
659
+ }),
660
+ /** Namespace / module grouping (e.g. "crm", "core") */
661
+ namespace: _data.Field.text({
662
+ label: "Namespace",
663
+ required: false,
664
+ defaultValue: "default",
665
+ maxLength: 100
666
+ }),
667
+ /** Package that owns/delivered this metadata (legacy string identifier, kept for compat) */
668
+ package_id: _data.Field.text({
669
+ label: "Package ID",
670
+ required: false,
671
+ maxLength: 255,
672
+ description: "Legacy package manifest ID string. Use package_version_id for new records."
673
+ }),
674
+ /**
675
+ * FK → sys_package_version (UUID). Set for metadata that belongs to a specific
676
+ * package release snapshot. NULL = platform-built-in or environment override.
677
+ */
678
+ package_version_id: _data.Field.lookup("sys_package_version", {
679
+ label: "Package Version",
680
+ required: false,
681
+ description: "Foreign key to sys_package_version (UUID). Null = platform-built-in or env-level override."
682
+ }),
683
+ /** Who manages this record: package, platform, or user */
684
+ managed_by: _data.Field.select(["package", "platform", "user"], {
685
+ label: "Managed By",
686
+ required: false
687
+ }),
688
+ /** Scope: system (code), platform (admin DB), user (personal DB) */
689
+ scope: _data.Field.select(["system", "platform", "user"], {
690
+ label: "Scope",
691
+ required: true,
692
+ defaultValue: "platform"
693
+ }),
694
+ /** JSON payload — the actual metadata configuration */
695
+ metadata: _data.Field.textarea({
696
+ label: "Metadata",
697
+ required: true,
698
+ description: "JSON-serialized metadata payload"
699
+ }),
700
+ /** Parent metadata name for extension/override */
701
+ extends: _data.Field.text({
702
+ label: "Extends",
703
+ required: false,
704
+ maxLength: 255
705
+ }),
706
+ /** Merge strategy when extending parent metadata */
707
+ strategy: _data.Field.select(["merge", "replace"], {
708
+ label: "Strategy",
709
+ required: false,
710
+ defaultValue: "merge"
711
+ }),
712
+ /** Owner user ID (for user-scope items) */
713
+ owner: _data.Field.text({
714
+ label: "Owner",
715
+ required: false,
716
+ maxLength: 255
717
+ }),
718
+ /** Lifecycle state */
719
+ state: _data.Field.select(["draft", "active", "archived", "deprecated"], {
720
+ label: "State",
721
+ required: false,
722
+ defaultValue: "active"
723
+ }),
724
+ /** Organization ID for multi-tenant isolation */
725
+ organization_id: _data.Field.lookup("sys_organization", {
726
+ label: "Organization",
727
+ required: false,
728
+ description: "Organization for multi-tenant isolation."
729
+ }),
730
+ /**
731
+ * @deprecated ADR-0005 (revised 2026-05): per-env DBs replace per-project
732
+ * isolation. `environment_id` is no longer written by saveMetaItem and not
733
+ * consulted by overlay reads. Kept for legacy rows; new writes leave it
734
+ * NULL. Will be dropped in a future schema migration.
735
+ */
736
+ environment_id: _data.Field.lookup("sys_environment", {
737
+ label: "Environment (deprecated)",
738
+ required: false,
739
+ description: "DEPRECATED. Use organization_id for tenant isolation."
740
+ }),
741
+ /** Version number for optimistic concurrency */
742
+ version: _data.Field.number({
743
+ label: "Version",
744
+ required: false,
745
+ defaultValue: 1
746
+ }),
747
+ /** Content checksum for change detection (e.g. `sha256:<64 hex>` = 71 chars) */
748
+ checksum: _data.Field.text({
749
+ label: "Checksum",
750
+ required: false,
751
+ maxLength: 71
752
+ }),
753
+ /** Origin of this metadata record */
754
+ source: _data.Field.select(["filesystem", "database", "api", "migration"], {
755
+ label: "Source",
756
+ required: false
757
+ }),
758
+ /** Classification tags (JSON array) */
759
+ tags: _data.Field.textarea({
760
+ label: "Tags",
761
+ required: false,
762
+ description: "JSON-serialized array of classification tags"
763
+ }),
764
+ /** Audit fields */
765
+ created_by: _data.Field.lookup("sys_user", {
766
+ label: "Created By",
767
+ required: false,
768
+ readonly: true
769
+ }),
770
+ created_at: _data.Field.datetime({
771
+ label: "Created At",
772
+ required: false,
773
+ readonly: true
774
+ }),
775
+ updated_by: _data.Field.lookup("sys_user", {
776
+ label: "Updated By",
777
+ required: false
778
+ }),
779
+ updated_at: _data.Field.datetime({
780
+ label: "Updated At",
781
+ required: false
782
+ })
783
+ },
784
+ indexes: [
785
+ // ADR-0005 (revised 2026-05): overlay uniqueness is scoped by
786
+ // (type, name, organization_id), restricted to active rows so resets
787
+ // / archived versions don't collide. environment_id is deprecated and
788
+ // not part of the discriminator. The runtime layer (protocol.ts
789
+ // ensureOverlayIndex) issues a DROP-then-CREATE migration to
790
+ // replace any pre-existing legacy composite index in-place.
791
+ {
792
+ name: "idx_sys_metadata_overlay_active",
793
+ fields: ["type", "name", "organization_id"],
794
+ unique: true,
795
+ partial: "state = 'active'"
796
+ },
797
+ { name: "idx_sys_metadata_org_type", fields: ["organization_id", "type"] },
798
+ { fields: ["type", "scope"] },
799
+ { fields: ["package_version_id"] },
800
+ { fields: ["state"] },
801
+ { fields: ["namespace"] }
802
+ ],
803
+ enable: {
804
+ trackHistory: true,
805
+ searchable: false,
806
+ apiEnabled: true,
807
+ apiMethods: ["get", "list", "create", "update", "delete"],
808
+ trash: false
809
+ },
810
+ // Named list views — power the Setup App "Data Model" group so admins
811
+ // can browse object/field metadata in a typed grid instead of the raw
812
+ // `All Metadata` debug surface. Each entry pre-filters by `type` and
813
+ // shows the columns that matter for that type. The dedicated visual
814
+ // designer (objectui's <ObjectManager> / <FieldDesigner>) deep-links
815
+ // from the row's `Edit in Designer` action; the grid stays useful for
816
+ // search, audit (state / updated_at) and triage.
817
+ listViews: {
818
+ only_objects: {
819
+ type: "grid",
820
+ name: "only_objects",
821
+ label: "Objects",
822
+ data: { provider: "object", object: "sys_metadata" },
823
+ columns: ["name", "namespace", "scope", "managed_by", "state", "updated_at"],
824
+ filter: [{ field: "type", operator: "equals", value: "object" }],
825
+ sort: [{ field: "name", order: "asc" }],
826
+ pagination: { pageSize: 50 }
827
+ },
828
+ only_fields: {
829
+ type: "grid",
830
+ name: "only_fields",
831
+ label: "Fields",
832
+ data: { provider: "object", object: "sys_metadata" },
833
+ columns: ["name", "namespace", "scope", "managed_by", "state", "updated_at"],
834
+ filter: [{ field: "type", operator: "equals", value: "field" }],
835
+ sort: [{ field: "name", order: "asc" }],
836
+ pagination: { pageSize: 50 }
837
+ },
838
+ all_metadata: {
839
+ type: "grid",
840
+ name: "all_metadata",
841
+ label: "All",
842
+ data: { provider: "object", object: "sys_metadata" },
843
+ columns: ["name", "type", "namespace", "scope", "state", "updated_at"],
844
+ sort: [{ field: "updated_at", order: "desc" }],
845
+ pagination: { pageSize: 50 }
846
+ }
847
+ }
848
+ });
849
+
850
+ // src/objects/sys-metadata-history.object.ts
851
+
852
+ var SysMetadataHistoryObject = _data.ObjectSchema.create({
853
+ name: "sys_metadata_history",
854
+ label: "Metadata History",
855
+ pluralLabel: "Metadata History",
856
+ icon: "history",
857
+ isSystem: true,
858
+ managedBy: "system",
859
+ description: "Durable event log of metadata overlay changes (per-org, append-only)",
860
+ fields: {
861
+ /** Primary Key (UUID) */
862
+ id: _data.Field.text({
863
+ label: "ID",
864
+ required: true,
865
+ readonly: true
866
+ }),
867
+ /** Per-org monotonic event sequence (durable cursor for replay). */
868
+ event_seq: _data.Field.number({
869
+ label: "Event Seq",
870
+ required: true,
871
+ readonly: true,
872
+ description: "Per-organization monotonic event log cursor."
873
+ }),
874
+ /** Machine name (denormalized for easier querying) */
875
+ name: _data.Field.text({
876
+ label: "Name",
877
+ required: true,
878
+ searchable: true,
879
+ readonly: true,
880
+ maxLength: 255
881
+ }),
882
+ /** Metadata type (denormalized for easier querying) */
883
+ type: _data.Field.text({
884
+ label: "Metadata Type",
885
+ required: true,
886
+ searchable: true,
887
+ readonly: true,
888
+ maxLength: 100
889
+ }),
890
+ /** Per-(org,type,name) lineage counter at this snapshot. */
891
+ version: _data.Field.number({
892
+ label: "Version",
893
+ required: true,
894
+ readonly: true
895
+ }),
896
+ /** Type of operation that created this history entry */
897
+ operation_type: _data.Field.select(["create", "update", "publish", "revert", "delete"], {
898
+ label: "Operation Type",
899
+ required: true,
900
+ readonly: true
901
+ }),
902
+ /**
903
+ * Historical metadata snapshot (JSON payload).
904
+ * Null for `operation_type = 'delete'` — the row carries no body.
905
+ */
906
+ metadata: _data.Field.textarea({
907
+ label: "Metadata",
908
+ required: false,
909
+ readonly: true,
910
+ description: "JSON-serialized metadata snapshot at this version (null for deletes)."
911
+ }),
912
+ /** SHA-256 checksum of metadata content (null for deletes). */
913
+ checksum: _data.Field.text({
914
+ label: "Checksum",
915
+ required: false,
916
+ readonly: true,
917
+ maxLength: 80
918
+ }),
919
+ /** Checksum of the previous version (null for the first event). */
920
+ previous_checksum: _data.Field.text({
921
+ label: "Previous Checksum",
922
+ required: false,
923
+ readonly: true,
924
+ maxLength: 80
925
+ }),
926
+ /** Human-readable description of changes (= MetadataEvent.message). */
927
+ change_note: _data.Field.textarea({
928
+ label: "Change Note",
929
+ required: false,
930
+ readonly: true,
931
+ description: "Description of what changed in this version."
932
+ }),
933
+ /**
934
+ * Producer of the event ('sys-metadata-repo', 'fs', 'studio',
935
+ * 'api', …). Defaults to 'sys-metadata-repo' on the canonical
936
+ * write path; preserved on history() reads as MetadataEvent.source.
937
+ */
938
+ source: _data.Field.text({
939
+ label: "Source",
940
+ required: false,
941
+ readonly: true,
942
+ maxLength: 64
943
+ }),
944
+ /** Organization ID for multi-tenant isolation */
945
+ organization_id: _data.Field.lookup("sys_organization", {
946
+ label: "Organization",
947
+ required: false,
948
+ readonly: true,
949
+ description: "Organization for multi-tenant isolation."
950
+ }),
951
+ /** User who made this change (= MetadataEvent.actor). */
952
+ recorded_by: _data.Field.lookup("sys_user", {
953
+ label: "Recorded By",
954
+ required: false,
955
+ readonly: true
956
+ }),
957
+ /** When was this version recorded */
958
+ recorded_at: _data.Field.datetime({
959
+ label: "Recorded At",
960
+ required: true,
961
+ readonly: true
962
+ })
963
+ },
964
+ indexes: [
965
+ { fields: ["organization_id", "event_seq"], unique: true },
966
+ { fields: ["organization_id", "type", "name", "version"], unique: true },
967
+ { fields: ["organization_id", "type", "name", "recorded_at"] },
968
+ // ADR-0009: getByHash() lookup — execution-pinned types resolve a
969
+ // historical body by content hash via this index.
970
+ { fields: ["organization_id", "type", "name", "checksum"] },
971
+ { fields: ["type", "name"] },
972
+ { fields: ["recorded_at"] },
973
+ { fields: ["operation_type"] }
974
+ ],
975
+ enable: {
976
+ trackHistory: false,
977
+ searchable: false,
978
+ apiEnabled: true,
979
+ apiMethods: ["get", "list"],
980
+ trash: false
981
+ }
982
+ });
983
+
984
+ // src/objects/sys-metadata-audit.object.ts
985
+
986
+ var SysMetadataAuditObject = _data.ObjectSchema.create({
987
+ name: "sys_metadata_audit",
988
+ label: "Metadata Audit",
989
+ pluralLabel: "Metadata Audit",
990
+ icon: "shield-check",
991
+ isSystem: true,
992
+ managedBy: "append-only",
993
+ description: "Append-only audit trail of metadata write decisions (ADR-0010).",
994
+ fields: {
995
+ /** Primary Key (UUID) */
996
+ id: _data.Field.text({
997
+ label: "ID",
998
+ required: true,
999
+ readonly: true
1000
+ }),
1001
+ /** When the decision was made (ISO-8601 UTC). */
1002
+ occurred_at: _data.Field.datetime({
1003
+ label: "Occurred At",
1004
+ required: true,
1005
+ readonly: true
1006
+ }),
1007
+ /** Acting principal (user id, system id, or 'system'). */
1008
+ actor: _data.Field.text({
1009
+ label: "Actor",
1010
+ required: true,
1011
+ readonly: true,
1012
+ maxLength: 255,
1013
+ description: 'Acting principal \u2014 user id, system id, or "system".'
1014
+ }),
1015
+ /** Code path that produced the decision (e.g. `protocol.saveMetaItem`). */
1016
+ source: _data.Field.text({
1017
+ label: "Source",
1018
+ required: false,
1019
+ readonly: true,
1020
+ maxLength: 128
1021
+ }),
1022
+ /** Metadata type (singular, e.g. `app`, `object`, `view`). */
1023
+ type: _data.Field.text({
1024
+ label: "Metadata Type",
1025
+ required: true,
1026
+ readonly: true,
1027
+ searchable: true,
1028
+ maxLength: 100
1029
+ }),
1030
+ /** Item machine name. */
1031
+ name: _data.Field.text({
1032
+ label: "Name",
1033
+ required: true,
1034
+ readonly: true,
1035
+ searchable: true,
1036
+ maxLength: 255
1037
+ }),
1038
+ /** Organization for multi-tenant filtering. NULL for env-wide writes. */
1039
+ organization_id: _data.Field.lookup("sys_organization", {
1040
+ label: "Organization",
1041
+ required: false,
1042
+ readonly: true
1043
+ }),
1044
+ /** Operation kind. */
1045
+ operation: _data.Field.select(["save", "publish", "rollback", "delete", "reset"], {
1046
+ label: "Operation",
1047
+ required: true,
1048
+ readonly: true
1049
+ }),
1050
+ /** Decision outcome — allowed, denied (refused), or forced (bypassed via override). */
1051
+ outcome: _data.Field.select(["allowed", "denied", "forced"], {
1052
+ label: "Outcome",
1053
+ required: true,
1054
+ readonly: true
1055
+ }),
1056
+ /**
1057
+ * Machine-readable code for the decision:
1058
+ * - on `allowed`: `'ok'`
1059
+ * - on `denied`: `'not_overridable'` | `'not_creatable'` |
1060
+ * `'item_locked'` | `'invalid_metadata'` | `'destructive_change'` |
1061
+ * `'metadata_conflict'`
1062
+ * - on `forced`: `'lock_override'` (Phase 3)
1063
+ */
1064
+ code: _data.Field.text({
1065
+ label: "Code",
1066
+ required: true,
1067
+ readonly: true,
1068
+ maxLength: 64
1069
+ }),
1070
+ /**
1071
+ * Lock state observed at the time of the decision (`none` if the
1072
+ * item carried no `_lock`). Captured even on `allowed` rows so
1073
+ * later compliance queries can see "what was the lock state when
1074
+ * this write succeeded".
1075
+ */
1076
+ lock_state: _data.Field.select(["none", "no-overlay", "no-delete", "full"], {
1077
+ label: "Lock State",
1078
+ required: false,
1079
+ readonly: true
1080
+ }),
1081
+ /** True when the write succeeded by bypassing a lock (Phase 3). */
1082
+ lock_overridden: _data.Field.boolean({
1083
+ label: "Lock Overridden",
1084
+ required: false,
1085
+ readonly: true
1086
+ }),
1087
+ /** Optional request correlation id for tracing. */
1088
+ request_id: _data.Field.text({
1089
+ label: "Request ID",
1090
+ required: false,
1091
+ readonly: true,
1092
+ maxLength: 128
1093
+ }),
1094
+ /** Optional free-form context (e.g. brief diff summary). */
1095
+ note: _data.Field.textarea({
1096
+ label: "Note",
1097
+ required: false,
1098
+ readonly: true
1099
+ })
1100
+ },
1101
+ indexes: [
1102
+ { fields: ["organization_id", "occurred_at"] },
1103
+ { fields: ["type", "name", "occurred_at"] },
1104
+ { fields: ["actor", "occurred_at"] },
1105
+ { fields: ["outcome"] }
1106
+ ],
1107
+ enable: {
1108
+ trackHistory: false,
1109
+ searchable: false,
1110
+ apiEnabled: true,
1111
+ apiMethods: ["get", "list"],
1112
+ trash: false
1113
+ }
1114
+ });
1115
+
1116
+ // src/objects/sys-view-definition.object.ts
1117
+
1118
+ var SysViewDefinitionObject = _data.ObjectSchema.create({
1119
+ name: "sys_view_definition",
1120
+ label: "View Definition",
1121
+ pluralLabel: "View Definitions",
1122
+ icon: "layout-grid",
1123
+ isSystem: true,
1124
+ description: "Runtime-authored view definitions (shared / personal layers). The package layer ships from source.",
1125
+ fields: {
1126
+ /** Primary Key (UUID) */
1127
+ id: _data.Field.text({ label: "ID", required: true, readonly: true }),
1128
+ /**
1129
+ * Globally-unique qualified view id, `<object>.<viewKey>`, matching the
1130
+ * spec `ViewItemSchema.name`. For personal views the runtime may suffix
1131
+ * to keep it unique per owner.
1132
+ */
1133
+ name: _data.Field.text({
1134
+ label: "Name",
1135
+ required: true,
1136
+ searchable: true,
1137
+ maxLength: 255
1138
+ }),
1139
+ /** Bound object — the foreign key used to aggregate views for the switcher. */
1140
+ object: _data.Field.text({
1141
+ label: "Object",
1142
+ required: true,
1143
+ searchable: true,
1144
+ maxLength: 255
1145
+ }),
1146
+ /** Whether `config` is a ListView (list family) or a FormView. */
1147
+ view_kind: _data.Field.select(["list", "form"], {
1148
+ label: "View Kind",
1149
+ required: true,
1150
+ defaultValue: "list"
1151
+ }),
1152
+ /** Display label (plain string; i18n keys also accepted). */
1153
+ label: _data.Field.text({ label: "Label", required: false, maxLength: 255 }),
1154
+ /** Whether this is the object's default view in the switcher. */
1155
+ is_default: _data.Field.boolean({ label: "Is Default", required: false, defaultValue: false }),
1156
+ /** Sort order within the object's switcher / left rail. */
1157
+ view_order: _data.Field.number({ label: "Order", required: false, defaultValue: 0 }),
1158
+ /**
1159
+ * Identity layer. Only `shared` and `personal` are stored at runtime;
1160
+ * `package` views come from source.
1161
+ */
1162
+ scope: _data.Field.select(["shared", "personal"], {
1163
+ label: "Scope",
1164
+ required: true,
1165
+ defaultValue: "personal"
1166
+ }),
1167
+ /** Owner user id — set when scope = personal; null for shared. */
1168
+ owner: _data.Field.text({ label: "Owner", required: false, maxLength: 255 }),
1169
+ /** Hidden from the switcher (per-user / per-org declutter). */
1170
+ hidden: _data.Field.boolean({ label: "Hidden", required: false, defaultValue: false }),
1171
+ /** The ListView / FormView configuration payload. */
1172
+ config: _data.Field.json({
1173
+ label: "Config",
1174
+ required: true,
1175
+ description: "ListView or FormView configuration (matches spec ViewItem.config)."
1176
+ }),
1177
+ /** Organization for multi-tenant isolation. */
1178
+ organization_id: _data.Field.lookup("sys_organization", {
1179
+ label: "Organization",
1180
+ required: false,
1181
+ description: "Organization for multi-tenant isolation."
1182
+ }),
1183
+ /** Lifecycle state. */
1184
+ state: _data.Field.select(["draft", "active", "archived"], {
1185
+ label: "State",
1186
+ required: false,
1187
+ defaultValue: "active"
1188
+ }),
1189
+ /** Audit fields. */
1190
+ created_by: _data.Field.lookup("sys_user", { label: "Created By", required: false, readonly: true }),
1191
+ created_at: _data.Field.datetime({ label: "Created At", required: false, readonly: true }),
1192
+ updated_by: _data.Field.lookup("sys_user", { label: "Updated By", required: false }),
1193
+ updated_at: _data.Field.datetime({ label: "Updated At", required: false })
1194
+ },
1195
+ indexes: [
1196
+ // A given view name is unique per (organization, owner) among active rows —
1197
+ // a shared view (owner NULL) and each user's personal views don't collide.
1198
+ {
1199
+ name: "idx_sys_view_def_active",
1200
+ fields: ["name", "organization_id", "owner"],
1201
+ unique: true,
1202
+ partial: "state = 'active'"
1203
+ },
1204
+ // The switcher query: views for one object within a tenant.
1205
+ { name: "idx_sys_view_def_object", fields: ["organization_id", "object"] },
1206
+ { fields: ["scope"] },
1207
+ { fields: ["owner"] },
1208
+ { fields: ["state"] }
1209
+ ],
1210
+ enable: {
1211
+ trackHistory: true,
1212
+ searchable: false,
1213
+ apiEnabled: true,
1214
+ apiMethods: ["get", "list", "create", "update", "delete"],
1215
+ trash: false
1216
+ }
1217
+ });
1218
+
1219
+
1220
+
1221
+
1222
+
1223
+
623
1224
 
624
1225
 
625
1226
 
@@ -637,5 +1238,5 @@ function multiplexWatch(layers, filter, since) {
637
1238
 
638
1239
 
639
1240
 
640
- exports.BranchError = _chunkF3VZBGKCcjs.BranchError; exports.ConflictError = _chunkF3VZBGKCcjs.ConflictError; exports.InMemoryRepository = InMemoryRepository; exports.LAYER_SOURCE = LAYER_SOURCE; exports.LayeredRepository = LayeredRepository; exports.MetaRefSchema = MetaRefSchema; exports.MetadataCache = MetadataCache; exports.MetadataError = _chunkF3VZBGKCcjs.MetadataError; exports.MetadataEventSchema = MetadataEventSchema; exports.MetadataItemSchema = MetadataItemSchema; exports.MetadataOpSchema = MetadataOpSchema; exports.MetadataTypeSchema = MetadataTypeSchema; exports.NotFoundError = _chunkF3VZBGKCcjs.NotFoundError; exports.SchemaValidationError = _chunkF3VZBGKCcjs.SchemaValidationError; exports.canonicalize = _chunkF3VZBGKCcjs.canonicalize; exports.hashSpec = _chunkF3VZBGKCcjs.hashSpec; exports.refKey = refKey;
1241
+ exports.BranchError = _chunkF3VZBGKCcjs.BranchError; exports.ConflictError = _chunkF3VZBGKCcjs.ConflictError; exports.InMemoryRepository = InMemoryRepository; exports.LAYER_SOURCE = LAYER_SOURCE; exports.LayeredRepository = LayeredRepository; exports.MetaRefSchema = MetaRefSchema; exports.MetadataCache = MetadataCache; exports.MetadataError = _chunkF3VZBGKCcjs.MetadataError; exports.MetadataEventSchema = MetadataEventSchema; exports.MetadataItemSchema = MetadataItemSchema; exports.MetadataOpSchema = MetadataOpSchema; exports.MetadataTypeSchema = MetadataTypeSchema; exports.NotFoundError = _chunkF3VZBGKCcjs.NotFoundError; exports.SchemaValidationError = _chunkF3VZBGKCcjs.SchemaValidationError; exports.SysMetadata = SysMetadataObject; exports.SysMetadataAuditObject = SysMetadataAuditObject; exports.SysMetadataHistoryObject = SysMetadataHistoryObject; exports.SysMetadataObject = SysMetadataObject; exports.SysViewDefinitionObject = SysViewDefinitionObject; exports.canonicalize = _chunkF3VZBGKCcjs.canonicalize; exports.hashSpec = _chunkF3VZBGKCcjs.hashSpec; exports.refKey = refKey;
641
1242
  //# sourceMappingURL=index.cjs.map