@asaidimu/anansi 1.2.2 → 1.2.4

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.
Files changed (5) hide show
  1. package/index.cjs +35 -35
  2. package/index.d.cts +299 -113
  3. package/index.d.ts +299 -113
  4. package/index.js +35 -35
  5. package/package.json +1 -1
package/index.cjs CHANGED
@@ -1,46 +1,46 @@
1
- "use strict";var se=Object.create;var v=Object.defineProperty;var ce=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames;var me=Object.getPrototypeOf,de=Object.prototype.hasOwnProperty;var le=(e,r)=>{for(var t in r)v(e,t,{get:r[t],enumerable:!0})},B=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of pe(r))!de.call(e,a)&&a!==t&&v(e,a,{get:()=>r[a],enumerable:!(n=ce(r,a))||n.enumerable});return e};var C=(e,r,t)=>(t=e!=null?se(me(e)):{},B(r||!e||!e.__esModule?v(t,"default",{value:e,enumerable:!0}):t,e)),fe=e=>B(v({},"__esModule",{value:!0}),e);var Ge={};le(Ge,{JsonPatchError:()=>y,MigrationError:()=>L,MigrationErrorCode:()=>ae,MigrationSchema:()=>ee,applyPatch:()=>M,calculateNextVersion:()=>re,compareSemanticVersions:()=>R,createPatch:()=>ye,createSchemaMigrationHelper:()=>ie,createStandardSchemaValidator:()=>Q,deepMerge:()=>A,docgen:()=>He,generateSHA256Hash:()=>_,normalizePath:()=>z,schemaChangeToPatch:()=>q,schemaToTypes:()=>Le,sortSemanticVars:()=>Fe,validate:()=>Te,validateMigration:()=>te,validateSchemaChange:()=>ne,validateSchemaDefinition:()=>J});module.exports=fe(Ge);var Ne=require("@asaidimu/events");var Ae=require("@asaidimu/events"),k=require("@asaidimu/query");var y=class extends Error{constructor(t,n){super(t);this.operation=n;this.name="JsonPatchError"}};function x(e){let r=z(e);return r===""?[]:r.substring(1).split("/").map(ue)}function z(e){return e===""||e==="/"?"":e.startsWith("/")?"/"+e.substring(1).split("/").map(T).join("/"):"/"+e.split(".").map(T).join("/")}function T(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function ue(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}var w=new Map;function E(e,r){let t=e;for(let n of r){if(t===null||typeof t!="object")throw new y(`Invalid path - parent not found at ${n}`);if(Array.isArray(t)){let a=n==="-"?t.length:parseInt(n);if(isNaN(a)||a<0||a>t.length)throw new y(`Invalid array index: ${n}`);t=t[a]}else{if(!t.hasOwnProperty(n))throw new y(`Property ${n} not found`);t=t[n]}}return t}function D(e,r){let t=w.get(r)||x(r);if(w.set(r,t),t.length===0)return e;let n=E(e,t.slice(0,-1)),a=t[t.length-1];if(Array.isArray(n)){let i=parseInt(a);if(isNaN(i)||i<0||i>=n.length)throw new y(`Invalid array index: ${a}`);return n[i]}return n[a]}function he(e,r,t){let n=w.get(r)||x(r);w.set(r,n);let a=E(e,n.slice(0,-1)),i=n[n.length-1];return Array.isArray(a)?a.splice(0,a.length,...a.filter(m=>m!==t)):a[i]===t&&delete a[i],e}function $(e,r,t){let n=w.get(r)||x(r);if(w.set(r,n),n.length===0)return t;let a=n.slice(0,-1),i=n[n.length-1],m=E(e,a);if(Array.isArray(m))if(i==="-")m.push(t);else{let c=parseInt(i);if(c<0||c>m.length)throw new y(`Invalid array index: ${i}`);m.splice(c,0,t)}else m[i]=t;return e}function O(e,r){let t=w.get(r)||x(r);if(w.set(r,t),t.length===0)return;let n=E(e,t.slice(0,-1)),a=t[t.length-1];if(Array.isArray(n)){let i=parseInt(a);n.splice(i,1)}else delete n[a];return e}function M(e,r){let t=JSON.parse(JSON.stringify(e));for(let n of r)try{switch(n.op){case"add":t=$(t,n.path,n.value);break;case"remove":t=O(t,n.path);break;case"removeValue":t=he(t,n.path,n.value);break;case"replace":t=$(O(t,n.path),n.path,n.value);break;case"copy":{let a=D(t,n.from);t=$(t,n.path,JSON.parse(JSON.stringify(a)));break}case"move":{let a=D(t,n.from);t=$(t,n.path,a),t=O(t,n.from);break}case"test":{let a=D(t,n.path);if(JSON.stringify(a)!==JSON.stringify(n.value))throw new y("Test operation failed");break}default:throw new y(`Unsupported operation: ${n.op}`)}}catch(a){throw a instanceof y&&(a.operation=n),a}return t}function ye(e,r){let t=[];return P(e,r,"",t),t}function P(e,r,t,n){if(e!==r){if(typeof e!=typeof r||Array.isArray(e)!==Array.isArray(r)){n.push({op:"replace",path:t,value:r});return}typeof e=="object"&&e!==null?Array.isArray(e)?ge(e,r,t,n):we(e,r,t,n):e!==r&&n.push({op:"replace",path:t,value:r})}}function ge(e,r,t,n){let a=Math.max(e.length,r.length);for(let i=0;i<a;i++){let m=`${t}/${i}`;i>=e.length?n.push({op:"add",path:`${t}/-`,value:r[i]}):i>=r.length?n.push({op:"remove",path:m}):P(e[i],r[i],m,n)}}function we(e,r,t,n){let a=new Set,i=Object.keys(e),m=Object.keys(r);for(let c of i){let d=T(c),s=t?`${t}/${d}`:`/${d}`;r.hasOwnProperty(c)?(P(e[c],r[c],s,n),a.add(c)):n.push({op:"remove",path:s})}for(let c of m)if(!a.has(c)){let d=T(c),s=t?`${t}/${d}`:`/${d}`;n.push({op:"add",path:s,value:r[c]})}}function q(e,r){let t=[];switch(e.type){case"addField":t.push({op:"add",path:`/fields/${e.name}`,value:e.definition});break;case"removeField":t.push({op:"remove",path:`/fields/${e.name}`});break;case"modifyField":{let n=`/fields/${e.name}`;Object.entries(e.changes).forEach(([a,i])=>{typeof i=="object"&&i!==null&&!Array.isArray(i)?t.push({op:"replace",path:`${n}/${a}`,value:i}):t.push({op:"replace",path:`${n}/${a}`,value:i})});break}case"deprecateField":t.push({op:"add",path:`/fields/${e.name}/deprecated`,value:!0});break;case"addIndex":r.indexes||t.push({op:"add",path:"/indexes",value:[]}),t.push({op:"add",path:"/indexes/-",value:e.definition});break;case"removeIndex":{let n=r.indexes?.findIndex(a=>a.name===e.name);n!==void 0&&n>=0&&t.push({op:"remove",path:`/indexes/${n}`});break}case"modifyIndex":{let n=r.indexes?.findIndex(a=>a.name===e.name);n!==void 0&&n>=0&&Object.entries(e.changes).forEach(([a,i])=>{t.push({op:"replace",path:`/indexes/${n}/${a}`,value:i})});break}case"addConstraint":r.constraints||t.push({op:"add",path:"/constraints",value:[]}),Array.isArray(e.constraint)?e.constraint.forEach(n=>{t.push({op:"add",path:"/constraints/-",value:n})}):t.push({op:"add",path:"/constraints/-",value:e.constraint});break;case"removeConstraint":{let n=r.constraints?.findIndex(a=>Array.isArray(a)?a.some(i=>i.name===e.name):a.name===e.name);n!==void 0&&n>=0&&t.push({op:"remove",path:`/constraints/${n}`});break}case"modifyConstraint":{let n=Se(r,e.name);n&&Object.entries(e.changes).forEach(([a,i])=>{t.push({op:"replace",path:`${n}/${a}`,value:i})});break}}return t}function Se(e,r){if(!e.constraints)return null;for(let t=0;t<e.constraints.length;t++){let n=e.constraints[t];if(n.name===r)return`/constraints/${t}`;if(K(n)){let a=Y(n.rules,r);if(a)return`/constraints/${t}${a}`}}return null}function K(e){return e&&"operator"in e&&"rules"in e}function Y(e,r){for(let t=0;t<e.length;t++){let n=e[t];if("name"in n&&n.name===r)return`/rules/${t}`;if(K(n)){let a=Y(n.rules,r);if(a)return`/rules/${t}${a}`}}return null}function A(e,r){let t={...e};return F(e)&&F(r)&&Object.keys(r).forEach(n=>{F(r[n])?n in e?t[n]=A(e[n],r[n]):Object.assign(t,{[n]:r[n]}):Object.assign(t,{[n]:r[n]})}),t}function F(e){return e&&typeof e=="object"&&!Array.isArray(e)}function Q(e,r){let t=(s,l,u,p)=>{let f=[];switch(u.type){case"string":typeof s!="string"&&f.push({message:`Expected type string but received ${typeof s}.`,path:p});break;case"number":typeof s!="number"&&f.push({message:`Expected type number but received ${typeof s}.`,path:p});break;case"boolean":typeof s!="boolean"&&f.push({message:`Expected type boolean but received ${typeof s}.`,path:p});break;case"array":Array.isArray(s)?u.itemsType?s.forEach((h,g)=>{f.push(...t(h,`Array: ${l}`,{type:u.itemsType,nestedSchema:u.nestedSchema},[...p,g]))}):f.push({message:`Expected itemsType for array ${l}`,path:p}):f.push({message:`Expected an array but received ${typeof s}.`,path:p});break;case"object":if(typeof s!="object"||s===null)f.push({message:`Expected an object but received ${s===null?"null":typeof s}.`,path:p});else if(u.nestedSchema){let h={name:u.description?`${u.description}-schema`:"nested-schema",version:"1.0",fields:u.nestedSchema};f.push(...d(h,s,p))}break;case"dynamic":break;default:f.push({message:`Unknown field type: ${u.type}`,path:p});break}return f},n=(s,l,u,p)=>{let f=[];return l.constraints&&l.constraints.forEach(h=>{let g=r[h.predicate];g?(h.type==="schema"?g({data:u,arguments:h.parameters}):g({data:u,field:s,arguments:h.parameters}))||f.push({message:`Constraint '${h.name}' failed for field '${s}'.`,path:p}):f.push({message:`Missing predicate for constraint: ${h.name}`,path:p})}),f},a=(s,l,u,p,f)=>[...t(u,s,l,f),...n(s,l,p,f)],i=(s,l,u)=>{if("operator"in s)return m(s.operator,s.rules.map(f=>i(f,l,u)));let p=r[s.predicate];return p?s.type==="schema"?p({data:l,field:s.field,arguments:s.parameters}):p({data:l,field:u,arguments:s.parameters}):!1},m=(s,l)=>{switch(s){case"and":return l.every(Boolean);case"or":return l.some(Boolean);case"not":return l.length===1?!l[0]:!1;case"nor":return!l.some(Boolean);case"xor":return l.filter(Boolean).length===1;default:return console.error(`Unknown logical operator: ${s}`),!1}},c=s=>"operator"in s?`(${s.rules.map(c).join(` ${s.operator} `)})`:s.name,d=(s,l,u=[])=>{let p=[];for(let[f,h]of Object.entries(s.fields))h.required&&l[f]===void 0&&p.push({message:`Field '${f}' is required.`,path:[...u,f]});for(let[f,h]of Object.entries(s.fields)){let g=l[f];g!==void 0&&p.push(...a(f,h,g,l,[...u,f]))}return s.constraints&&s.constraints.forEach(f=>{i(f,l)||p.push({message:`Schema constraint failed: ${c(f)}`,path:u})}),p};return{"~standard":{version:1,vendor:"@asaidimu/anansi",validate:s=>{if(typeof s!="object"||s===null)return{issues:[{message:"Value must be a non-null object",path:[]}]};let l=d(e,s);return l.length===0?{value:s}:{issues:l}}}}}var o=require("zod");var S=class extends Error{constructor(t,n){super(t);this.errors=n;this.name="SchemaValidationError"}};var Z=o.z.enum(["and","or","not","nor","xor"]),W=o.z.enum(["string","number","boolean","array","object","dynamic"]),be=o.z.enum(["normal","unique","btree","hash","spatial","fulltext","gi","expression","composite"]),ve=o.z.custom(()=>!0),b=o.z.object({type:o.z.string().optional(),name:o.z.string(),predicate:o.z.string().optional(),parameters:ve.optional(),description:o.z.string().optional(),field:o.z.string().optional(),errorMessage:o.z.string().optional()}),V=o.z.object({operator:Z,rules:o.z.array(o.z.union([b,o.z.lazy(()=>V)]))}),I=o.z.object({type:W,required:o.z.boolean().optional(),constraints:o.z.array(b).optional(),default:o.z.any().optional(),itemsType:W.optional(),nestedSchema:o.z.record(o.z.lazy(()=>I)).optional(),deprecated:o.z.boolean().optional(),reference:o.z.object({schema:o.z.string(),field:o.z.string()}).optional(),description:o.z.string().optional(),unique:o.z.boolean().optional()}),X=o.z.object({operator:Z,field:o.z.string(),value:o.z.any().optional(),conditions:o.z.array(o.z.lazy(()=>X)).optional()}),N=o.z.object({fields:o.z.array(o.z.string()),type:be,unique:o.z.boolean().optional(),partial:X.optional(),description:o.z.string().optional(),order:o.z.enum(["asc","desc"]).optional(),name:o.z.string().optional()}),Ce=o.z.array(o.z.union([b,V])),$e=o.z.object({name:o.z.string(),version:o.z.string(),description:o.z.string().optional(),fields:o.z.record(I),indexes:o.z.array(N).optional(),constraints:Ce.optional(),metadata:o.z.record(o.z.any()).optional(),dependencies:o.z.array(o.z.string()).optional(),migrations:o.z.array(o.z.any()).optional()}),j=o.z.union([o.z.object({type:o.z.literal("addField"),name:o.z.string(),definition:I}),o.z.object({type:o.z.literal("removeField"),name:o.z.string()}),o.z.object({type:o.z.literal("modifyField"),name:o.z.string(),changes:I.partial()}),o.z.object({type:o.z.literal("addIndex"),definition:N}),o.z.object({type:o.z.literal("removeIndex"),name:o.z.string()}),o.z.object({type:o.z.literal("modifyIndex"),name:o.z.string(),changes:N.partial()}),o.z.object({type:o.z.literal("addConstraint"),constraint:o.z.union([b,V])}),o.z.object({type:o.z.literal("removeConstraint"),name:o.z.string()}),o.z.object({type:o.z.literal("modifyConstraint"),name:o.z.string(),changes:b.partial()}),o.z.object({type:o.z.literal("deprecateField"),name:o.z.string()})]),ee=o.z.object({id:o.z.string(),schemaVersion:o.z.string(),changes:o.z.array(j),description:o.z.string(),status:o.z.enum(["pending","applied","failed"]),rollback:o.z.array(j).optional(),transform:o.z.unknown(),createdAt:o.z.string(),checksum:o.z.string().optional()});function te(e){try{return ee.parse(e),!0}catch(r){throw new S("Invalid migration definition",r)}}function ne(e){try{return j.parse(e),!0}catch(r){throw new S("Invalid schema definition",r)}}function J(e){try{return $e.parse(e),!0}catch(r){throw new S("Invalid schema definition",r)}}var Te=J;var _=async e=>{if(typeof window<"u"&&crypto.subtle){let t=new TextEncoder().encode(e),n=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(n)).map(i=>i.toString(16).padStart(2,"0")).join("")}else{let{createHash:r}=await import("crypto");return r("sha256").update(e).digest("hex")}};function xe(e){let r=e.match(/^(\d+)\.(\d+)\.(\d+)$/);if(!r)throw new Error(`Invalid version format: ${e}. Expected format: major.minor.patch`);return{major:parseInt(r[1],10),minor:parseInt(r[2],10),patch:parseInt(r[3],10)}}function Ee(e,r){if(r&&"field"in e&&e.field){let t=r.fields[e.field];if(t)return t.type}if("parameters"in e){let t=e.parameters;if(t instanceof RegExp||Array.isArray(t)&&typeof t[0]=="string")return"string";if(typeof t=="number"||Array.isArray(t)&&typeof t[0]=="number")return"number";if(typeof t=="boolean")return"boolean";if(typeof t=="object"&&t!==null){if("minItems"in t||"maxItems"in t)return"array";if("schema"in t)return"object"}}}function Ie(e){return e.required===!0||e.type!==void 0||e.itemsType!==void 0||e.nestedSchema!==void 0||e.reference!==void 0||e.unique===!0}function Re(e,r,t){switch(t){case"string":if(e instanceof RegExp&&r instanceof RegExp)return e.source!==r.source;if(Array.isArray(e)&&Array.isArray(r))return r.length<e.length||!e.every(n=>r.includes(n));break;case"number":if(typeof e=="object"&&typeof r=="object"&&"precision"in e&&"precision"in r)return r.precision<e.precision||(r.scale??0)<(e.scale??0);if(Array.isArray(e)&&Array.isArray(r))return r.length<e.length||!e.every(n=>r.includes(n));break;case"array":if(typeof e=="object"&&typeof r=="object"&&"minItems"in e&&"maxItems"in e&&"minItems"in r&&"maxItems"in r)return r.minItems>e.minItems||r.maxItems<e.maxItems;break;case"object":if(typeof e=="object"&&typeof r=="object"&&"schema"in e&&"schema"in r)return Object.keys(r.schema).length>Object.keys(e.schema).length;break}return!1}function ke(e,r){let t={or:1,xor:2,and:3,not:4,nor:4};return!!(r.operator&&t[r.operator]>t[e.operator]||r.rules&&r.rules.length>e.rules.length)}function De(e,r,t){if(!r)return!0;if("rules"in r&&"rules"in e)return ke(r,e);if("predicate"in e&&e.predicate!==void 0)return!0;if("parameters"in e&&e.parameters!==void 0){let n=Ee(r,t);return n?Re(r.parameters,e.parameters,n):!0}return!1}function Oe(e,r){switch(e.type){case"removeField":case"removeIndex":return"major";case"modifyField":return Ie(e.changes)?"major":e.changes.deprecated?"minor":"patch";case"modifyIndex":return e.changes.unique!==void 0||e.changes.fields!==void 0?"major":"minor";case"addConstraint":return"major";case"removeConstraint":return"minor";case"modifyConstraint":let t=r?.constraints?.find(n=>"name"in n&&n.name===e.name);return De(e.changes,t,r)?"major":"minor";case"addField":case"addIndex":case"deprecateField":return"minor";default:throw new Error(`Unhandled change type: ${JSON.stringify(e)}`)}}function Me(e){let r=new Set,t=new Set,n=new Set,a=new Set;for(let i of e)switch(i.type){case"addField":if(t.has(i.name))throw new Error(`Cannot add previously removed field: ${i.name}`);if(r.has(i.name))throw new Error(`Cannot add already modified field: ${i.name}`);if(a.has(i.name))throw new Error(`Cannot add deprecated field: ${i.name}`);n.add(i.name);break;case"removeField":if(n.has(i.name))throw new Error(`Cannot remove newly added field: ${i.name}`);if(r.has(i.name))throw new Error(`Cannot remove modified field: ${i.name}`);if(a.has(i.name))throw new Error(`Cannot remove field that is being deprecated: ${i.name}`);t.add(i.name);break;case"modifyField":if(t.has(i.name))throw new Error(`Cannot modify removed field: ${i.name}`);if(n.has(i.name))throw new Error(`Cannot modify newly added field: ${i.name}`);if(a.has(i.name))throw new Error(`Cannot modify field that is being deprecated: ${i.name}`);r.add(i.name);break;case"deprecateField":if(t.has(i.name))throw new Error(`Cannot deprecate removed field: ${i.name}`);if(n.has(i.name))throw new Error(`Cannot deprecate newly added field: ${i.name}`);if(r.has(i.name))throw new Error(`Cannot deprecate modified field: ${i.name}`);a.add(i.name);break}}function Pe(e){let r=new Set,t=new Set,n=new Set;for(let a of e)switch(a.type){case"addConstraint":let i=a.constraint,m=("name"in i,i.name);if(t.has(m))throw new Error(`Cannot add previously removed constraint: ${m}`);if(r.has(m))throw new Error(`Cannot add already modified constraint: ${m}`);n.add(m);break;case"removeConstraint":if(n.has(a.name))throw new Error(`Cannot remove newly added constraint: ${a.name}`);if(r.has(a.name))throw new Error(`Cannot remove modified constraint: ${a.name}`);t.add(a.name);break;case"modifyConstraint":if(t.has(a.name))throw new Error(`Cannot modify removed constraint: ${a.name}`);if(n.has(a.name))throw new Error(`Cannot modify newly added constraint: ${a.name}`);r.add(a.name);break}}function re(e,r,t){if(r.length===0)throw new Error("No changes provided");Me(r),Pe(r);let n=xe(e),a="patch";for(let i of r){let m=Oe(i,t);if(m==="major"){a="major";break}else m==="minor"&&a==="patch"&&(a="minor")}switch(a){case"major":return`${n.major+1}.0.0`;case"minor":return`${n.major}.${n.minor+1}.0`;case"patch":return`${n.major}.${n.minor}.${n.patch+1}`}}function R(e,r){let t=s=>s.split(".").map(l=>parseInt(l,10)||0),[n,a,i]=t(e),[m,c,d]=t(r);return n-m||a-c||i-d}function Fe(e){return e.sort(R)}var L=class extends Error{constructor(t,n,a,i){super(t);this.code=n;this.migrationId=a;this.cause=i;this.name="MigrationError"}},ae=(p=>(p.INVALID_SCHEMA="INVALID_SCHEMA",p.INVALID_MIGRATION="INVALID_MIGRATION",p.CHECKSUM_MISMATCH="CHECKSUM_MISMATCH",p.TIMEOUT="TIMEOUT",p.MEMORY_LIMIT="MEMORY_LIMIT",p.CONCURRENT_OPERATION="CONCURRENT_OPERATION",p.TRANSFORM_ERROR="TRANSFORM_ERROR",p.VERSION_NOT_FOUND="VERSION_NOT_FOUND",p.CIRCULAR_DEPENDENCY="CIRCULAR_DEPENDENCY",p.STREAM_ERROR="STREAM_ERROR",p.ROLLBACK_ERROR="ROLLBACK_ERROR",p.MISSING_TRANSFORM="MISSING_TRANSFORM",p))(ae||{});var ie=e=>{let r=[],t=[];return{addField:(n,a)=>{r.push({type:"addField",name:n,definition:a}),t.push({type:"removeField",name:n})},removeField:n=>{r.push({type:"removeField",name:n});let a=e.fields[n];a&&t.push({type:"addField",name:n,definition:a})},modifyField:(n,a)=>{r.push({type:"modifyField",name:n,changes:a});let i=e.fields[n];t.push({type:"modifyField",name:n,changes:i})},deprecateField:n=>{r.push({type:"deprecateField",name:n}),t.push({type:"modifyField",name:n,changes:{deprecated:!1}})},addIndex:n=>{r.push({type:"addIndex",definition:n}),t.push({type:"removeIndex",name:n.name})},removeIndex:n=>{r.push({type:"removeIndex",name:n});let a=e.indexes?.find(i=>i.name===n);a&&t.push({type:"addIndex",definition:a})},modifyIndex:(n,a)=>{r.push({type:"modifyIndex",name:n,changes:a});let i=e.indexes?.find(m=>m.name===n);i&&t.push({type:"modifyIndex",name:n,changes:i})},addConstraint:n=>{r.push({type:"addConstraint",constraint:n}),t.push({type:"removeConstraint",name:n.name})},removeConstraint:n=>{r.push({type:"removeConstraint",name:n});let a=e.constraints?.find(i=>"name"in i&&i.name===n);a&&t.push({type:"addConstraint",constraint:a})},modifyConstraint:(n,a)=>{r.push({type:"modifyConstraint",name:n,changes:a});let i=e.constraints?.find(m=>"name"in m&&m.name===n);i&&t.push({type:"modifyConstraint",name:n,changes:i})},changes:()=>({migrate:r,rollback:t})}};var je=C(require("@isomorphic-git/lightning-fs"),1),oe=require("buffer"),Ve=C(require("isomorphic-git"),1),Je=C(require("isomorphic-git/http/web"),1);window.Buffer=oe.Buffer;function _e(e,r,t){switch(e.type){case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"array":return e.itemsType?e.itemsType==="object"&&e.nestedSchema?`${`${r}ItemsItem`}[]`:`${e.itemsType}[]`:"any[]";case"object":return e.nestedSchema?`${r}${U(t)}`:"Record<string, any>";case"dynamic":return"any";default:return"any"}}function H(e,r){let t="";for(let[n,a]of Object.entries(e))if(a.type==="object"&&a.nestedSchema){let i=`${r}${U(n)}`;t+=`
1
+ "use strict";var ce=Object.create;var T=Object.defineProperty;var pe=Object.getOwnPropertyDescriptor;var de=Object.getOwnPropertyNames;var me=Object.getPrototypeOf,le=Object.prototype.hasOwnProperty;var fe=(r,t)=>{for(var e in t)T(r,e,{get:t[e],enumerable:!0})},Q=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of de(t))!le.call(r,a)&&a!==e&&T(r,a,{get:()=>t[a],enumerable:!(n=pe(t,a))||n.enumerable});return r};var C=(r,t,e)=>(e=r!=null?ce(me(r)):{},Q(t||!r||!r.__esModule?T(e,"default",{value:r,enumerable:!0}):e,r)),ue=r=>Q(T({},"__esModule",{value:!0}),r);var Ue={};fe(Ue,{JsonPatchError:()=>g,MigrationEngine:()=>z,MigrationError:()=>h,MigrationErrorCode:()=>ie,MigrationSchema:()=>ae,applyPatch:()=>k,calculateNextVersion:()=>B,compareSemanticVersions:()=>b,createPatch:()=>ge,createSchemaMigrationHelper:()=>oe,createStandardSchemaValidator:()=>ee,deepMerge:()=>J,docgen:()=>Ge,generateSHA256Hash:()=>M,normalizePath:()=>W,schemaChangeToPatch:()=>j,schemaToTypes:()=>He,sortSemanticVars:()=>Ae,validate:()=>xe,validateMigration:()=>G,validateSchemaChange:()=>U,validateSchemaDefinition:()=>O});module.exports=ue(Ue);var je=require("@asaidimu/events");var Ne=require("@asaidimu/events"),P=require("@asaidimu/query");var g=class extends Error{constructor(e,n){super(e);this.operation=n;this.name="JsonPatchError"}};function I(r){let t=W(r);return t===""?[]:t.substring(1).split("/").map(he)}function W(r){return r===""||r==="/"?"":r.startsWith("/")?"/"+r.substring(1).split("/").map(E).join("/"):"/"+r.split(".").map(E).join("/")}function E(r){return r.replace(/~/g,"~0").replace(/\//g,"~1")}function he(r){return r.replace(/~1/g,"/").replace(/~0/g,"~")}var S=new Map;function R(r,t){let e=r;for(let n of t){if(e===null||typeof e!="object")throw new g(`Invalid path - parent not found at ${n}`);if(Array.isArray(e)){let a=n==="-"?e.length:parseInt(n);if(isNaN(a)||a<0||a>e.length)throw new g(`Invalid array index: ${n}`);e=e[a]}else{if(!e.hasOwnProperty(n))throw new g(`Property ${n} not found`);e=e[n]}}return e}function F(r,t){let e=S.get(t)||I(t);if(S.set(t,e),e.length===0)return r;let n=R(r,e.slice(0,-1)),a=e[e.length-1];if(Array.isArray(n)){let i=parseInt(a);if(isNaN(i)||i<0||i>=n.length)throw new g(`Invalid array index: ${a}`);return n[i]}return n[a]}function ye(r,t,e){let n=S.get(t)||I(t);S.set(t,n);let a=R(r,n.slice(0,-1)),i=n[n.length-1];return Array.isArray(a)?a.splice(0,a.length,...a.filter(p=>p!==e)):a[i]===e&&delete a[i],r}function x(r,t,e){let n=S.get(t)||I(t);if(S.set(t,n),n.length===0)return e;let a=n.slice(0,-1),i=n[n.length-1],p=R(r,a);if(Array.isArray(p))if(i==="-")p.push(e);else{let s=parseInt(i);if(s<0||s>p.length)throw new g(`Invalid array index: ${i}`);p.splice(s,0,e)}else p[i]=e;return r}function A(r,t){let e=S.get(t)||I(t);if(S.set(t,e),e.length===0)return;let n=R(r,e.slice(0,-1)),a=e[e.length-1];if(Array.isArray(n)){let i=parseInt(a);n.splice(i,1)}else delete n[a];return r}function k(r,t){let e=JSON.parse(JSON.stringify(r));for(let n of t)try{switch(n.op){case"add":e=x(e,n.path,n.value);break;case"remove":e=A(e,n.path);break;case"removeValue":e=ye(e,n.path,n.value);break;case"replace":e=x(A(e,n.path),n.path,n.value);break;case"copy":{let a=F(e,n.from);e=x(e,n.path,JSON.parse(JSON.stringify(a)));break}case"move":{let a=F(e,n.from);e=x(e,n.path,a),e=A(e,n.from);break}case"test":{let a=F(e,n.path);if(JSON.stringify(a)!==JSON.stringify(n.value))throw new g("Test operation failed");break}default:throw new g(`Unsupported operation: ${n.op}`)}}catch(a){throw a instanceof g&&(a.operation=n),a}return e}function ge(r,t){let e=[];return N(r,t,"",e),e}function N(r,t,e,n){if(r!==t){if(typeof r!=typeof t||Array.isArray(r)!==Array.isArray(t)){n.push({op:"replace",path:e,value:t});return}typeof r=="object"&&r!==null?Array.isArray(r)?we(r,t,e,n):Se(r,t,e,n):r!==t&&n.push({op:"replace",path:e,value:t})}}function we(r,t,e,n){let a=Math.max(r.length,t.length);for(let i=0;i<a;i++){let p=`${e}/${i}`;i>=r.length?n.push({op:"add",path:`${e}/-`,value:t[i]}):i>=t.length?n.push({op:"remove",path:p}):N(r[i],t[i],p,n)}}function Se(r,t,e,n){let a=new Set,i=Object.keys(r),p=Object.keys(t);for(let s of i){let m=E(s),c=e?`${e}/${m}`:`/${m}`;t.hasOwnProperty(s)?(N(r[s],t[s],c,n),a.add(s)):n.push({op:"remove",path:c})}for(let s of p)if(!a.has(s)){let m=E(s),c=e?`${e}/${m}`:`/${m}`;n.push({op:"add",path:c,value:t[s]})}}function j(r,t){let e=[];switch(r.type){case"addField":e.push({op:"add",path:`/fields/${r.id}`,value:r.definition});break;case"removeField":e.push({op:"remove",path:`/fields/${r.id}`});break;case"modifyField":{let n=`/fields/${r.id}`;Object.entries(r.changes).forEach(([a,i])=>{typeof i=="object"&&i!==null&&!Array.isArray(i)?e.push({op:"replace",path:`${n}/${a}`,value:i}):e.push({op:"replace",path:`${n}/${a}`,value:i})});break}case"deprecateField":e.push({op:"add",path:`/fields/${r.id}/deprecated`,value:!0});break;case"addIndex":t.indexes||e.push({op:"add",path:"/indexes",value:[]}),e.push({op:"add",path:"/indexes/-",value:r.definition});break;case"removeIndex":{let n=t.indexes?.findIndex(a=>a.name===r.name);n!==void 0&&n>=0&&e.push({op:"remove",path:`/indexes/${n}`});break}case"modifyIndex":{let n=t.indexes?.findIndex(a=>a.name===r.name);n!==void 0&&n>=0&&Object.entries(r.changes).forEach(([a,i])=>{e.push({op:"replace",path:`/indexes/${n}/${a}`,value:i})});break}case"addConstraint":t.constraints||e.push({op:"add",path:"/constraints",value:[]}),Array.isArray(r.constraint)?r.constraint.forEach(n=>{e.push({op:"add",path:"/constraints/-",value:n})}):e.push({op:"add",path:"/constraints/-",value:r.constraint});break;case"removeConstraint":{let n=t.constraints?.findIndex(a=>Array.isArray(a)?a.some(i=>i.name===r.name):a.name===r.name);n!==void 0&&n>=0&&e.push({op:"remove",path:`/constraints/${n}`});break}case"modifyConstraint":{let n=be(t,r.name);n&&Object.entries(r.changes).forEach(([a,i])=>{e.push({op:"replace",path:`${n}/${a}`,value:i})});break}}return e}function be(r,t){if(!r.constraints)return null;for(let e=0;e<r.constraints.length;e++){let n=r.constraints[e];if(n.name===t)return`/constraints/${e}`;if(Z(n)){let a=X(n.rules,t);if(a)return`/constraints/${e}${a}`}}return null}function Z(r){return r&&"operator"in r&&"rules"in r}function X(r,t){for(let e=0;e<r.length;e++){let n=r[e];if("name"in n&&n.name===t)return`/rules/${e}`;if(Z(n)){let a=X(n.rules,t);if(a)return`/rules/${e}${a}`}}return null}function J(r,t){let e={...r};return V(r)&&V(t)&&Object.keys(t).forEach(n=>{V(t[n])?n in r?e[n]=J(r[n],t[n]):Object.assign(e,{[n]:t[n]}):Object.assign(e,{[n]:t[n]})}),e}function V(r){return r&&typeof r=="object"&&!Array.isArray(r)}function ee(r,t){let e=(c,l,f,d)=>{let u=[];switch(f.type){case"string":typeof c!="string"&&u.push({message:`Expected type string but received ${typeof c}.`,path:d});break;case"number":typeof c!="number"&&u.push({message:`Expected type number but received ${typeof c}.`,path:d});break;case"boolean":typeof c!="boolean"&&u.push({message:`Expected type boolean but received ${typeof c}.`,path:d});break;case"array":Array.isArray(c)?f.itemsType?c.forEach((y,w)=>{u.push(...e(y,`Array: ${l}`,{name:f.name,type:f.itemsType,nestedSchema:f.nestedSchema},[...d,w]))}):u.push({message:`Expected itemsType for array ${l}`,path:d}):u.push({message:`Expected an array but received ${typeof c}.`,path:d});break;case"object":if(typeof c!="object"||c===null)u.push({message:`Expected an object but received ${c===null?"null":typeof c}.`,path:d});else if(f.nestedSchema){let y={name:f.description?`${f.description}-schema`:"nested-schema",version:"1.0",fields:f.nestedSchema};u.push(...m(y,c,d))}break;case"dynamic":break;default:u.push({message:`Unknown field type: ${f.type}`,path:d});break}return u},n=(c,l,f,d)=>{let u=[];return l.constraints&&l.constraints.forEach(y=>{let w=t[y.predicate];w?(y.type==="schema"?w({data:f,arguments:y.parameters}):w({data:f,field:c,arguments:y.parameters}))||u.push({message:`Constraint '${y.name}' failed for field '${c}'.`,path:d}):u.push({message:`Missing predicate for constraint: ${y.name}`,path:d})}),u},a=(c,l,f,d,u)=>[...e(f,c,l,u),...n(c,l,d,u)],i=(c,l,f)=>{if("operator"in c)return p(c.operator,c.rules.map(u=>i(u,l,f)));let d=t[c.predicate];return d?c.type==="schema"?d({data:l,field:c.field,arguments:c.parameters}):d({data:l,field:f,arguments:c.parameters}):!1},p=(c,l)=>{switch(c){case"and":return l.every(Boolean);case"or":return l.some(Boolean);case"not":return l.length===1?!l[0]:!1;case"nor":return!l.some(Boolean);case"xor":return l.filter(Boolean).length===1;default:return console.error(`Unknown logical operator: ${c}`),!1}},s=c=>"operator"in c?`(${c.rules.map(s).join(` ${c.operator} `)})`:c.name,m=(c,l,f=[])=>{let d=[];for(let[u,y]of Object.entries(c.fields))y.required&&l[u]===void 0&&d.push({message:`Field '${u}' is required.`,path:[...f,u]});for(let[u,y]of Object.entries(c.fields)){let w=l[u];w!==void 0&&d.push(...a(u,y,w,l,[...f,u]))}return c.constraints&&c.constraints.forEach(u=>{i(u,l)||d.push({message:`Schema constraint failed: ${s(u)}`,path:f})}),d};return{"~standard":{version:1,vendor:"@asaidimu/anansi",validate:c=>{if(typeof c!="object"||c===null)return{issues:[{message:"Value must be a non-null object",path:[]}]};let l=m(r,c);return l.length===0?{value:c}:{issues:l}}}}}var o=require("zod");var v=class extends Error{constructor(e,n){super(e);this.errors=n;this.name="SchemaValidationError"}};var ne=o.z.enum(["and","or","not","nor","xor"]),te=o.z.enum(["string","number","boolean","array","object","dynamic"]),ve=o.z.enum(["normal","unique","btree","hash","spatial","fulltext","gi","expression","composite"]),Ce=o.z.custom(()=>!0),$=o.z.object({type:o.z.string().optional(),name:o.z.string(),predicate:o.z.string().optional(),parameters:Ce.optional(),description:o.z.string().optional(),field:o.z.string().optional(),errorMessage:o.z.string().optional()}),H=o.z.object({operator:ne,rules:o.z.array(o.z.union([$,o.z.lazy(()=>H)]))}),D=o.z.object({name:o.z.string(),type:te,required:o.z.boolean().optional(),constraints:o.z.array($).optional(),default:o.z.any().optional(),itemsType:te.optional(),nestedSchema:o.z.record(o.z.lazy(()=>D)).optional(),deprecated:o.z.boolean().optional(),reference:o.z.object({schema:o.z.string(),field:o.z.string()}).optional(),description:o.z.string().optional(),unique:o.z.boolean().optional(),metadata:o.z.any().optional()}),re=o.z.object({operator:ne,field:o.z.string(),value:o.z.any().optional(),conditions:o.z.array(o.z.lazy(()=>re)).optional()}),_=o.z.object({fields:o.z.array(o.z.string()),type:ve,unique:o.z.boolean().optional(),partial:re.optional(),description:o.z.string().optional(),order:o.z.enum(["asc","desc"]).optional(),name:o.z.string().optional()}),$e=o.z.array(o.z.union([$,H])),Te=o.z.object({name:o.z.string(),version:o.z.string(),description:o.z.string().optional(),fields:o.z.record(D),indexes:o.z.array(_).optional(),constraints:$e.optional(),metadata:o.z.record(o.z.any()).optional(),dependencies:o.z.array(o.z.string()).optional(),migrations:o.z.array(o.z.any()).optional()}),L=o.z.union([o.z.object({type:o.z.literal("addField"),id:o.z.string(),definition:D}),o.z.object({type:o.z.literal("removeField"),id:o.z.string()}),o.z.object({type:o.z.literal("modifyField"),id:o.z.string(),changes:D.partial()}),o.z.object({type:o.z.literal("addIndex"),definition:_}),o.z.object({type:o.z.literal("removeIndex"),name:o.z.string()}),o.z.object({type:o.z.literal("modifyIndex"),name:o.z.string(),changes:_.partial()}),o.z.object({type:o.z.literal("addConstraint"),constraint:o.z.union([$,H])}),o.z.object({type:o.z.literal("removeConstraint"),name:o.z.string()}),o.z.object({type:o.z.literal("modifyConstraint"),name:o.z.string(),changes:$.partial()}),o.z.object({type:o.z.literal("deprecateField"),id:o.z.string()})]),ae=o.z.object({id:o.z.string(),schemaVersion:o.z.string(),changes:o.z.array(L),description:o.z.string(),status:o.z.enum(["pending","applied","failed"]),rollback:o.z.array(L).optional(),transform:o.z.unknown(),createdAt:o.z.string(),checksum:o.z.string().optional()});function G(r){try{return ae.parse(r),!0}catch(t){throw new v("Invalid migration definition",t)}}function U(r){try{return L.parse(r),!0}catch(t){throw new v("Invalid schema definition",t)}}function O(r){try{return Te.parse(r),!0}catch(t){throw new v("Invalid schema definition",t)}}var xe=O;var M=async r=>{if(typeof window<"u"&&crypto.subtle){let e=new TextEncoder().encode(r),n=await crypto.subtle.digest("SHA-256",e);return Array.from(new Uint8Array(n)).map(i=>i.toString(16).padStart(2,"0")).join("")}else{let{createHash:t}=await import("crypto");return t("sha256").update(r).digest("hex")}};function Ee(r){let t=r.match(/^(\d+)\.(\d+)\.(\d+)$/);if(!t)throw new Error(`Invalid version format: ${r}. Expected format: major.minor.patch`);return{major:parseInt(t[1],10),minor:parseInt(t[2],10),patch:parseInt(t[3],10)}}function Ie(r,t){if(t&&"field"in r&&r.field){let e=t.fields[r.field];if(e)return e.type}if("parameters"in r){let e=r.parameters;if(e instanceof RegExp||Array.isArray(e)&&typeof e[0]=="string")return"string";if(typeof e=="number"||Array.isArray(e)&&typeof e[0]=="number")return"number";if(typeof e=="boolean")return"boolean";if(typeof e=="object"&&e!==null){if("minItems"in e||"maxItems"in e)return"array";if("schema"in e)return"object"}}}function Re(r){return r.required===!0||r.type!==void 0||r.itemsType!==void 0||r.nestedSchema!==void 0||r.reference!==void 0||r.unique===!0}function ke(r,t,e){switch(e){case"string":if(r instanceof RegExp&&t instanceof RegExp)return r.source!==t.source;if(Array.isArray(r)&&Array.isArray(t))return t.length<r.length||!r.every(n=>t.includes(n));break;case"number":if(typeof r=="object"&&typeof t=="object"&&"precision"in r&&"precision"in t)return t.precision<r.precision||(t.scale??0)<(r.scale??0);if(Array.isArray(r)&&Array.isArray(t))return t.length<r.length||!r.every(n=>t.includes(n));break;case"array":if(typeof r=="object"&&typeof t=="object"&&"minItems"in r&&"maxItems"in r&&"minItems"in t&&"maxItems"in t)return t.minItems>r.minItems||t.maxItems<r.maxItems;break;case"object":if(typeof r=="object"&&typeof t=="object"&&"schema"in r&&"schema"in t)return Object.keys(t.schema).length>Object.keys(r.schema).length;break}return!1}function De(r,t){let e={or:1,xor:2,and:3,not:4,nor:4};return!!(t.operator&&e[t.operator]>e[r.operator]||t.rules&&t.rules.length>r.rules.length)}function Oe(r,t,e){if(!t)return!0;if("rules"in t&&"rules"in r)return De(t,r);if("predicate"in r&&r.predicate!==void 0)return!0;if("parameters"in r&&r.parameters!==void 0){let n=Ie(t,e);return n?ke(t.parameters,r.parameters,n):!0}return!1}function Me(r,t){switch(r.type){case"removeField":case"removeIndex":return"major";case"modifyField":return Re(r.changes)?"major":r.changes.deprecated?"minor":"patch";case"modifyIndex":return r.changes.unique!==void 0||r.changes.fields!==void 0?"major":"minor";case"addConstraint":return"major";case"removeConstraint":return"minor";case"modifyConstraint":let e=t?.constraints?.find(n=>"name"in n&&n.name===r.name);return Oe(r.changes,e,t)?"major":"minor";case"addField":case"addIndex":case"deprecateField":return"minor";default:throw new Error(`Unhandled change type: ${JSON.stringify(r)}`)}}function Pe(r){let t=new Set,e=new Set,n=new Set,a=new Set;for(let i of r)switch(i.type){case"addField":if(e.has(i.id))throw new Error(`Cannot add previously removed field: ${i.id}`);if(t.has(i.id))throw new Error(`Cannot add already modified field: ${i.id}`);if(a.has(i.id))throw new Error(`Cannot add deprecated field: ${i.id}`);n.add(i.id);break;case"removeField":if(n.has(i.id))throw new Error(`Cannot remove newly added field: ${i.id}`);if(t.has(i.id))throw new Error(`Cannot remove modified field: ${i.id}`);if(a.has(i.id))throw new Error(`Cannot remove field that is being deprecated: ${i.id}`);e.add(i.id);break;case"modifyField":if(e.has(i.id))throw new Error(`Cannot modify removed field: ${i.id}`);if(n.has(i.id))throw new Error(`Cannot modify newly added field: ${i.id}`);if(a.has(i.id))throw new Error(`Cannot modify field that is being deprecated: ${i.id}`);t.add(i.id);break;case"deprecateField":if(e.has(i.id))throw new Error(`Cannot deprecate removed field: ${i.id}`);if(n.has(i.id))throw new Error(`Cannot deprecate newly added field: ${i.id}`);if(t.has(i.id))throw new Error(`Cannot deprecate modified field: ${i.id}`);a.add(i.id);break}}function Fe(r){let t=new Set,e=new Set,n=new Set;for(let a of r)switch(a.type){case"addConstraint":let i=a.constraint,p=("name"in i,i.name);if(e.has(p))throw new Error(`Cannot add previously removed constraint: ${p}`);if(t.has(p))throw new Error(`Cannot add already modified constraint: ${p}`);n.add(p);break;case"removeConstraint":if(n.has(a.name))throw new Error(`Cannot remove newly added constraint: ${a.name}`);if(t.has(a.name))throw new Error(`Cannot remove modified constraint: ${a.name}`);e.add(a.name);break;case"modifyConstraint":if(e.has(a.name))throw new Error(`Cannot modify removed constraint: ${a.name}`);if(n.has(a.name))throw new Error(`Cannot modify newly added constraint: ${a.name}`);t.add(a.name);break}}function B(r,t,e){if(t.length===0)throw new Error("No changes provided");Pe(t),Fe(t);let n=Ee(r),a="patch";for(let i of t){let p=Me(i,e);if(p==="major"){a="major";break}else p==="minor"&&a==="patch"&&(a="minor")}switch(a){case"major":return`${n.major+1}.0.0`;case"minor":return`${n.major}.${n.minor+1}.0`;case"patch":return`${n.major}.${n.minor}.${n.patch+1}`}}function b(r,t){let e=c=>c.split(".").map(l=>parseInt(l,10)||0),[n,a,i]=e(r),[p,s,m]=e(t);return n-p||a-s||i-m}function Ae(r){return r.sort(b)}var h=class extends Error{constructor(e,n,a,i){super(e);this.code=n;this.migrationId=a;this.cause=i;this.name="MigrationError"}},ie=(d=>(d.INVALID_SCHEMA="INVALID_SCHEMA",d.INVALID_MIGRATION="INVALID_MIGRATION",d.CHECKSUM_MISMATCH="CHECKSUM_MISMATCH",d.TIMEOUT="TIMEOUT",d.MEMORY_LIMIT="MEMORY_LIMIT",d.CONCURRENT_OPERATION="CONCURRENT_OPERATION",d.TRANSFORM_ERROR="TRANSFORM_ERROR",d.VERSION_NOT_FOUND="VERSION_NOT_FOUND",d.CIRCULAR_DEPENDENCY="CIRCULAR_DEPENDENCY",d.STREAM_ERROR="STREAM_ERROR",d.ROLLBACK_ERROR="ROLLBACK_ERROR",d.MISSING_TRANSFORM="MISSING_TRANSFORM",d))(ie||{}),z=class r{currentSchema;history=[];migrations=[];isProcessing=!1;constructor(t,e,n){try{if(!O(t))throw new h("Invalid initial schema","INVALID_SCHEMA");if(this.currentSchema=t,e){if(!e.every(a=>G(a)))throw new h("Invalid migration configuration","INVALID_MIGRATION");this.migrations=e.sort((a,i)=>b(a.schemaVersion,i.schemaVersion))}n&&(this.history=n.sort((a,i)=>b(a.version,i.version)))}catch(a){throw a instanceof h?a:new h("Failed to initialize MigrationEngine","INVALID_SCHEMA",void 0,a)}}data(){return{schema:this.currentSchema,history:this.history,migrations:this.migrations}}async generateChecksum(t){try{let e=JSON.stringify({id:t.id,schemaVersion:t.schemaVersion,changes:t.changes,description:t.description,rollback:t.rollback,createdAt:t.createdAt});return await M(e)}catch(e){throw new h("Checksum generation failed","CHECKSUM_MISMATCH",t.id,e)}}async add(t){if(this.isProcessing)throw new h("Concurrent operation","CONCURRENT_OPERATION");if(!t.changes?.length)throw new h("Migration must include changes","INVALID_MIGRATION");try{t.changes.forEach(n=>U(n))}catch(n){throw new h("Invalid schema changes","INVALID_MIGRATION",void 0,n)}let e={id:Date.now().toString(),schemaVersion:this.currentSchema.version,changes:t.changes,description:t.description,status:"pending",rollback:t.rollback,transform:t.transform,createdAt:new Date().toISOString(),checksum:""};e.checksum=await this.generateChecksum(e),this.migrations.push(e)}async dryRun(t,e,n){if(this.isProcessing)throw new h("Concurrent operation","CONCURRENT_OPERATION");try{this.isProcessing=!0;let a={...this.currentSchema},i=this.getRelevantMigrations(e,n),p=i.reduce((m,c)=>{let l=e==="forward"?c.changes:c.rollback||[];return this.applySchemaChanges(m,l,c.id)},a),s=await r.processMigrationList(t,e,i);return{newSchema:p,dataPreview:s}}catch(a){throw a instanceof h?a:new h("Dry run failed","INVALID_SCHEMA",void 0,a)}finally{this.isProcessing=!1}}getRelevantMigrations(t,e){return[...this.migrations].filter(n=>{let a=t==="forward"?"pending":"applied",i=e?b(n.schemaVersion,e)>=0:!0;return n.status===a&&i}).sort((n,a)=>t==="forward"?n.id.localeCompare(a.id):a.id.localeCompare(n.id))}applySchemaChanges(t,e,n){try{let a=B(t.version,e);return e.map(p=>{try{return j(p,t)}catch(s){throw new h("Invalid schema change","INVALID_SCHEMA",n,s)}}).reduce((p,s)=>{try{return k(p,s)}catch(m){throw new h("Failed to apply patch","INVALID_SCHEMA",n,m)}},{...t,version:a})}catch(a){throw a instanceof h?a:new h("Schema update failed","INVALID_SCHEMA",n,a)}}async prepareMigration(){let t=this.migrations.filter(e=>e.status==="pending");return await this.validateMigrations(t),t}async migrate(t){if(this.isProcessing)throw new h("Concurrent operation","CONCURRENT_OPERATION");let e=await this.prepareMigration();try{this.isProcessing=!0,this.transformSchema("forward");let n=await r.processMigrationList(t,"forward",e);return this.markMigrationsApplied(e),n}finally{this.isProcessing=!1}}async validateMigrations(t){await Promise.all(t.map(async e=>{let n=await this.generateChecksum(e);if(e.checksum!==n)throw new h("Checksum mismatch","CHECKSUM_MISMATCH",e.id)}))}markMigrationsApplied(t){this.migrations=this.migrations.map(e=>t.some(n=>n.id===e.id)?{...e,status:"applied"}:e)}async rollback(t){if(this.isProcessing)throw new h("Concurrent operation","CONCURRENT_OPERATION");return this.migrations.filter(n=>n.status==="applied").slice(-1)[0]?this.rollbackToVersion(this.history[this.history.length-1]?.version||this.currentSchema.version,t):t}async rollbackToVersion(t,e){if(this.isProcessing)throw new h("Concurrent operation","CONCURRENT_OPERATION");try{let n=this.history.findIndex(s=>s.version===t);if(n===-1)throw new Error(`Version ${t} not found in history`);let a=this.migrations.filter(s=>s.schemaVersion===t&&s.status==="applied").sort((s,m)=>m.id.localeCompare(s.id)),i=this.history.length-n;if(i<0)return e;for(let s=0;s<i;s++)this.transformSchema("backward");let p=await r.processMigrationList(e,"backward",a);return this.migrations=this.migrations.map(s=>s.schemaVersion===t&&s.status==="applied"?{...s,status:"pending"}:s),p}finally{this.isProcessing=!1}}static async processMigrationList(t,e,n){return(await Promise.all(n.map(async p=>{try{let s=await this.resolveTransform(p,e);return{migration:p,transform:s}}catch(s){throw new h(`Failed to resolve transform for migration ${p.id}`,"TRANSFORM_ERROR",p.id,s)}}))).filter(p=>!!p.transform).reduce((p,{migration:s,transform:m})=>p.pipeThrough(new TransformStream({async transform(c,l){try{let f=await m(c);l.enqueue(f)}catch(f){l.error(new h(`Data transformation failed for migration ${s.id}`,"TRANSFORM_ERROR",s.id,f))}}})),t)}static async resolveTransform(t,e){return t.transform?typeof t.transform=="string"?t.transform.startsWith("http://")||t.transform.startsWith("https://")?this.resolveRemoteTransform(t.transform,e):this.resolveLocalTransform(t.transform,e):t.transform[e]:null}static async resolveRemoteTransform(t,e){try{let n=await fetch(t);if(!n.ok)throw new h(`Failed to fetch transform module: ${t}`,"TRANSFORM_ERROR",void 0);let a=await n.text();if(typeof window<"u"){let i=new Blob([a],{type:"application/javascript"});return(await import(URL.createObjectURL(i))).default[e]}else{let{runInNewContext:i}=await import("vm"),p={module:{exports:{}},console};return i(a,p,t),p.module.exports[e]}}catch(n){throw new h(`Failed to load remote transform module: ${t}`,"TRANSFORM_ERROR",void 0,n)}}static async resolveLocalTransform(t,e){try{return(await import(t)).default[e]}catch(n){throw new h(`Failed to import local transform module: ${t}`,"TRANSFORM_ERROR",void 0,n)}}transformSchema(t){try{if(t==="backward"){let n=this.history.pop();if(!n)throw new Error("No previous version");this.currentSchema=n;return}let e=this.migrations.filter(n=>n.status==="pending").flatMap(n=>n.changes);if(!e.length)return;this.history.push(structuredClone(this.currentSchema)),this.currentSchema=e.reduce((n,a)=>this.applySchemaChanges(n,[a]),this.currentSchema)}catch(e){throw e instanceof h?e:new h("Schema transformation failed","INVALID_SCHEMA",void 0,e)}}};var oe=r=>{let t=[],e=[];return{addField:(n,a)=>{t.push({type:"addField",id:n,definition:a}),e.push({type:"removeField",id:n})},removeField:n=>{t.push({type:"removeField",id:n});let a=r.fields[n];a&&e.push({type:"addField",id:n,definition:a})},modifyField:(n,a)=>{t.push({type:"modifyField",id:n,changes:a});let i=r.fields[n];e.push({type:"modifyField",id:n,changes:i})},deprecateField:n=>{t.push({type:"deprecateField",id:n}),e.push({type:"modifyField",id:n,changes:{deprecated:!1}})},addIndex:n=>{t.push({type:"addIndex",definition:n}),e.push({type:"removeIndex",name:n.name})},removeIndex:n=>{t.push({type:"removeIndex",name:n});let a=r.indexes?.find(i=>i.name===n);a&&e.push({type:"addIndex",definition:a})},modifyIndex:(n,a)=>{t.push({type:"modifyIndex",name:n,changes:a});let i=r.indexes?.find(p=>p.name===n);i&&e.push({type:"modifyIndex",name:n,changes:i})},addConstraint:n=>{t.push({type:"addConstraint",constraint:n}),e.push({type:"removeConstraint",name:n.name})},removeConstraint:n=>{t.push({type:"removeConstraint",name:n});let a=r.constraints?.find(i=>"name"in i&&i.name===n);a&&e.push({type:"addConstraint",constraint:a})},modifyConstraint:(n,a)=>{t.push({type:"modifyConstraint",name:n,changes:a});let i=r.constraints?.find(p=>"name"in p&&p.name===n);i&&e.push({type:"modifyConstraint",name:n,changes:i})},changes:()=>({migrate:t,rollback:e})}};var Ve=C(require("@isomorphic-git/lightning-fs"),1),se=require("buffer"),Je=C(require("isomorphic-git"),1),_e=C(require("isomorphic-git/http/web"),1);window.Buffer=se.Buffer;function Le(r,t,e){switch(r.type){case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"array":return r.itemsType?r.itemsType==="object"&&r.nestedSchema?`${`${t}ItemsItem`}[]`:`${r.itemsType}[]`:"any[]";case"object":return r.nestedSchema?`${t}${Y(e)}`:"Record<string, any>";case"dynamic":return"any";default:return"any"}}function q(r,t){let e="";for(let[n,a]of Object.entries(r))if(a.type==="object"&&a.nestedSchema){let i=`${t}${Y(n)}`;e+=`
2
2
  export interface ${i} {
3
- ${G(a.nestedSchema,i)}
4
- }`;let m=H(a.nestedSchema,i);m&&(t+=`
5
- ${m}`)}else if(a.type==="array"&&a.itemsType==="object"&&a.nestedSchema){let i=`${r}ItemsItem`;t+=`
3
+ ${K(a.nestedSchema,i)}
4
+ }`;let p=q(a.nestedSchema,i);p&&(e+=`
5
+ ${p}`)}else if(a.type==="array"&&a.itemsType==="object"&&a.nestedSchema){let i=`${t}ItemsItem`;e+=`
6
6
  export interface ${i} {
7
- ${G(a.nestedSchema,i)}
8
- }`;let m=H(a.nestedSchema,i);m&&(t+=`
9
- ${m}`)}return t}function G(e,r){return Object.entries(e).map(([t,n])=>{let a=[];n.description&&a.push(` /** ${n.description} */`),n.deprecated&&a.push(" /** @deprecated */");let i=n.required?"":"?",m=_e(n,r,t);return a.push(` ${t}${i}: ${m};`),a.join(`
7
+ ${K(a.nestedSchema,i)}
8
+ }`;let p=q(a.nestedSchema,i);p&&(e+=`
9
+ ${p}`)}return e}function K(r,t){return Object.entries(r).map(([e,n])=>{let a=[];n.description&&a.push(` /** ${n.description} */`),n.deprecated&&a.push(" /** @deprecated */");let i=n.required?"":"?",p=Le(n,t,e);return a.push(` ${e}${i}: ${p};`),a.join(`
10
10
  `)}).join(`
11
- `)}function U(e){return e.charAt(0).toUpperCase()+e.slice(1)}function Le(e){let r=U(e.name),t=`// Generated from schema version ${e.version}
12
- `;e.description&&(t+=`/** ${e.description} */
13
- `),t+=`export interface ${r} {
14
- ${G(e.fields,r)}
15
- }`;let n=H(e.fields,r);return n&&(t+=`
16
- ${n}`),t+=`
17
- `,t}function He(e,r){let t=[],n=c=>c===void 0?"`None`":`\`${JSON.stringify(c,null,2)}\``,a=(c=[])=>c.map(d=>`- **${d.name}**: ${d.description||""}
18
- - Parameters: ${JSON.stringify(d.parameters)}
19
- - Error: ${d.errorMessage||"None"}`).join(`
20
- `),i=c=>{let d=`**${c.field}** ${c.operator}`;return c.value!==void 0&&(d+=` ${JSON.stringify(c.value)}`),c.conditions&&(d+=` [
21
- ${c.conditions.map(s=>` ${i(s)}`).join(`
11
+ `)}function Y(r){return r.charAt(0).toUpperCase()+r.slice(1)}function He(r){let t=Y(r.name),e=`// Generated from schema version ${r.version}
12
+ `;r.description&&(e+=`/** ${r.description} */
13
+ `),e+=`export interface ${t} {
14
+ ${K(r.fields,t)}
15
+ }`;let n=q(r.fields,t);return n&&(e+=`
16
+ ${n}`),e+=`
17
+ `,e}function Ge(r,t){let e=[],n=s=>s===void 0?"`None`":`\`${JSON.stringify(s,null,2)}\``,a=(s=[])=>s.map(m=>`- **${m.name}**: ${m.description||""}
18
+ - Parameters: ${JSON.stringify(m.parameters)}
19
+ - Error: ${m.errorMessage||"None"}`).join(`
20
+ `),i=s=>{let m=`**${s.field}** ${s.operator}`;return s.value!==void 0&&(m+=` ${JSON.stringify(s.value)}`),s.conditions&&(m+=` [
21
+ ${s.conditions.map(c=>` ${i(c)}`).join(`
22
22
  `)}
23
- ]`),d},m=(c,d=1)=>{let s="#".repeat(d+2);return Object.entries(c).map(([l,u])=>{let p=`${s} ${l} (${u.type})
23
+ ]`),m},p=(s,m=1)=>{let c="#".repeat(m+2);return Object.entries(s).map(([l,f])=>{let d=`${c} ${l} (${f.type})
24
24
 
25
- `;return p+=`**Required:** ${u.required?"Yes":"No"}
25
+ `;return d+=`**Required:** ${f.required?"Yes":"No"}
26
26
 
27
- `,u.description&&(p+=`**Description:** ${u.description}
27
+ `,f.description&&(d+=`**Description:** ${f.description}
28
28
 
29
- `),u.itemsType&&(p+=`**Item Type:** ${u.itemsType}
29
+ `),f.itemsType&&(d+=`**Item Type:** ${f.itemsType}
30
30
 
31
- `),u.nestedSchema&&(p+=m(u.nestedSchema,d+1)),p}).join(`
32
- `)};t.push(`# ${e.name} Schema (Version ${e.version})`),e.description&&t.push(`
33
- ${e.description}
34
- `),t.push("## Metadata"),t.push(`- **Dependencies:** ${e.dependencies?.join(", ")||"None"}`),t.push(`- **Created:** ${new Date().toISOString()}
35
- `),t.push(`## Fields
36
- `),t.push("| Name | Type | Required | Default | Description | Deprecated | Unique | Constraints |"),t.push("|------|------|----------|---------|-------------|------------|--------|-------------|");for(let[c,d]of Object.entries(e.fields))t.push([c,d.type,d.required?"Yes":"No",n(d.default),d.description?.replace(/\n/g," ")||"",d.deprecated?"Yes":"No",d.unique?"Yes":"No",d.constraints?.length||0].join("|"));Object.entries(e.fields).forEach(([c,d])=>{d.nestedSchema&&(t.push(`
37
- ### Nested Schema: ${c}
38
- `),t.push(m(d.nestedSchema)))}),t.push(`
31
+ `),f.nestedSchema&&(d+=p(f.nestedSchema,m+1)),d}).join(`
32
+ `)};e.push(`# ${r.name} Schema (Version ${r.version})`),r.description&&e.push(`
33
+ ${r.description}
34
+ `),e.push("## Metadata"),e.push(`- **Dependencies:** ${r.dependencies?.join(", ")||"None"}`),e.push(`- **Created:** ${new Date().toISOString()}
35
+ `),e.push(`## Fields
36
+ `),e.push("| Name | Type | Required | Default | Description | Deprecated | Unique | Constraints |"),e.push("|------|------|----------|---------|-------------|------------|--------|-------------|");for(let[s,m]of Object.entries(r.fields))e.push([s,m.type,m.required?"Yes":"No",n(m.default),m.description?.replace(/\n/g," ")||"",m.deprecated?"Yes":"No",m.unique?"Yes":"No",m.constraints?.length||0].join("|"));Object.entries(r.fields).forEach(([s,m])=>{m.nestedSchema&&(e.push(`
37
+ ### Nested Schema: ${s}
38
+ `),e.push(p(m.nestedSchema)))}),e.push(`
39
39
  ## Indexes
40
- `),t.push("| Name | Type | Fields | Unique | Order | Partial Condition | Description |"),t.push("|------|------|--------|--------|-------|-------------------|-------------|");for(let c of e.indexes||[])t.push([c.name,c.type,c.fields.join(", "),c.unique?"Yes":"No",c.order||"asc",c.partial?i(c.partial):"None",c.description||""].join("|"));t.push(`
40
+ `),e.push("| Name | Type | Fields | Unique | Order | Partial Condition | Description |"),e.push("|------|------|--------|--------|-------|-------------------|-------------|");for(let s of r.indexes||[])e.push([s.name,s.type,s.fields.join(", "),s.unique?"Yes":"No",s.order||"asc",s.partial?i(s.partial):"None",s.description||""].join("|"));e.push(`
41
41
  ## Constraints
42
- `),e.constraints&&t.push("### Schema-level Constraints"),t.push(`
42
+ `),r.constraints&&e.push("### Schema-level Constraints"),e.push(`
43
43
  ## Migrations
44
- `),t.push("| ID | Description | Status | Changes |"),t.push("|----|-------------|--------|---------|");for(let c of e.migrations||[])t.push([c.id,c.description,c.status,c.changes.length].join("|"));if(e.mock&&r?.faker)try{let c=e.mock(r.faker).next().value;t.push("\n## Example Data\n```json\n"+JSON.stringify(c,null,2)+"\n```")}catch{t.push(`
45
- <!-- Error generating mock data -->`)}return t.join(`
46
- `)}0&&(module.exports={JsonPatchError,MigrationError,MigrationErrorCode,MigrationSchema,applyPatch,calculateNextVersion,compareSemanticVersions,createPatch,createSchemaMigrationHelper,createStandardSchemaValidator,deepMerge,docgen,generateSHA256Hash,normalizePath,schemaChangeToPatch,schemaToTypes,sortSemanticVars,validate,validateMigration,validateSchemaChange,validateSchemaDefinition});
44
+ `),e.push("| ID | Description | Status | Changes |"),e.push("|----|-------------|--------|---------|");for(let s of r.migrations||[])e.push([s.id,s.description,s.status,s.changes.length].join("|"));if(r.mock&&t?.faker)try{let s=r.mock(t.faker).next().value;e.push("\n## Example Data\n```json\n"+JSON.stringify(s,null,2)+"\n```")}catch{e.push(`
45
+ <!-- Error generating mock data -->`)}return e.join(`
46
+ `)}0&&(module.exports={JsonPatchError,MigrationEngine,MigrationError,MigrationErrorCode,MigrationSchema,applyPatch,calculateNextVersion,compareSemanticVersions,createPatch,createSchemaMigrationHelper,createStandardSchemaValidator,deepMerge,docgen,generateSHA256Hash,normalizePath,schemaChangeToPatch,schemaToTypes,sortSemanticVars,validate,validateMigration,validateSchemaChange,validateSchemaDefinition});