@instantdb/platform 0.22.157 → 0.22.158

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 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,EAAE,GAMH,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAqB,MAAM,oBAAoB,CAAC;AA0DhF,MAAM,uBAAuB,GAAG,CAC9B,KAAiB,EACjB,aAA8B,EACf,EAAE;IACjB,MAAM,KAAK,GACT,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1B,OAAO,CACL,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS;YAC/C,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAC/C,CAAC;IACJ,CAAC,CAAC,IAAI,IAAI,CAAC;IACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,YAAY,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,6BAA6B,GAA2B,CAC5D,EAAE,EACF,QAAQ,EACR,EAAE;IACF,MAAM,KAAK,GAAG,uBAAuB,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC/D,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,EAAE;QACnB,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,CAAC;KAC9C,CAAC;AACJ,CAAC,CAAC;AAEF,uEAAuE;AACvE,+CAA+C;AAC/C,MAAM,UAAU,GAA0B;IACxC,KAAK,EAAE,6BAA6B;IACpC,MAAM,EAAE,6BAA6B;IACrC,QAAQ,EAAE,6BAA6B;IACvC,cAAc,EAAE,6BAA6B;IAC7C,eAAe,EAAE,6BAA6B;IAC9C,iBAAiB,EAAE,6BAA6B;IAEhD,aAAa,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACjE,OAAO,KAAK,CAAC,EAAE,CAAC;IAClB,CAAC;IACD,aAAa,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACjE,OAAO;YACL,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;gBACtD,CAAC,CAAC;oBACE,KAAK,CAAC,EAAE;oBACR,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,SAAS;oBAC9C,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,QAAQ;iBAC9C;gBACH,CAAC,CAAC,SAAS;YACb,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;gBACtD,CAAC,CAAC;oBACE,KAAK,CAAC,EAAE;oBACR,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,SAAS;oBAC9C,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,QAAQ;iBAC9C;gBACH,CAAC,CAAC,SAAS;YACb,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;gBAC1C,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;gBACjC,CAAC,CAAC,SAAS;YAEb,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;gBACxC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;gBAC/B,CAAC,CAAC,SAAS;YACb,mBAAmB,EAAE,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC;gBACxD,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC;gBACvC,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;IACD,UAAU,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QAC9B,MAAM,MAAM,GAAG,EAAE,EAAE,CAAC;QACpB,MAAM,eAAe,GAA6B;YAChD,MAAM;YACN,IAAI,CAAC,UAAU,CAAC,SAAS;YACzB,IAAI,CAAC,UAAU,CAAC,QAAQ;SACzB,CAAC;QAEF,MAAM,KAAK,GAAe,EAAE,CAAC;QAE7B,mEAAmE;QACnE,KAAK,CAAC,IAAI,CAAC;YACT,UAAU;YACV;gBACE,kBAAkB,EAAE,eAAe;gBACnC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC;oBAC1C,CAAC,CAAC;wBACE,EAAE,EAAE;wBACJ,IAAI,CAAC,kBAAkB,CAAC,CAAC,SAAS;wBAClC,IAAI,CAAC,kBAAkB,CAAC,CAAC,QAAQ;qBAClC;oBACH,CAAC,CAAC,IAAI;gBACR,gBAAgB,EAAE,IAAI;gBACtB,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC;gBAChC,EAAE,EAAE,MAAM;gBACV,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,KAAK;gBAClB,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,MAAM;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;gBAC9B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC;gBAC9C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC;aAC/C;SACF,CAAC,CAAC;QAEH,4DAA4D;QAC5D,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC;gBACT,QAAQ;gBACR;oBACE,SAAS,EAAE,MAAM;oBACjB,kBAAkB,EAAE,eAAe;iBACpC;aACF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC;gBACT,UAAU;gBACV;oBACE,SAAS,EAAE,MAAM;oBACjB,kBAAkB,EAAE,eAAe;iBACpC;aACF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC;gBACT,OAAO;gBACP;oBACE,SAAS,EAAE,MAAM;oBACjB,kBAAkB,EAAE,eAAe;iBACpC;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IACD,kBAAkB,EAAE,6BAA6B;IACjD,iBAAiB,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;QACpC,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACjE,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,EAAE;YACnB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC;YAC9C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,CAAC;SAC9C,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,mBAAmB,CAC1B,uBAAoD,EACpD,UAAkB,EAClB,QAAgB;IAEhB,OAAO,CAAC,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,GAAkB,EAClB,aAA8B,EAClB,EAAE;IACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QACjB,MAAM,SAAS,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,6BAA6B,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,SAAS,GAAG,SAAS,CAAC,EAAS,EAAE,aAAa,CAAC,CAAC;QACtD,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAa,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAwBF,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,SAA0C,EAC1C,SAA0C,EAC1C,SAAkC,EAClC,uBAAoD,EAC5B,EAAE;IAC1B,MAAM,YAAY,GAAkB,EAAE,CAAC;IAEvC,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC;IACvC,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC;IAEvC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEhD,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAC9C,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CACzC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,kBAAkB,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC9D,IAAI,mBAAmB,CAAC,uBAAuB,EAAE,UAAU,EAAE,QAAQ,CAAC;gBACpE,OAAO;YACT,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE;oBACV,QAAQ;oBACR,SAAS,EAAE,UAAU;iBACtB;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,mBAAmB,CAAC,uBAAuB,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC;YACnE,SAAS;QACX,CAAC;QACD,YAAY,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE;gBACV,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,UAAU;aACtB;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAC5C,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CACzC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;QAC1C,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC;YACpE,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,UAAU;gBAChB,kBAAkB,EAAE;oBAClB,SAAS,EAAE,UAAU;oBACrB,QAAQ,EAAE,IAAI;iBACf;gBACD,UAAU,EAAE;oBACV,QAAQ,EAAE,IAAI;oBACd,SAAS,EAAE,UAAU;iBACtB;gBACD,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,KAAK;gBAClB,SAAS,EAAE,IAAI;gBACf,YAAY,EAAE,MAAM;aACrB,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAClE,IAAI,mBAAmB,CAAC,uBAAuB,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACvE,SAAS;YACX,CAAC;YACD,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7D,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACtD,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC9B,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;QAC1C,kBAAkB;QAClB,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CACnE,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,mBAAmB,CAAC,uBAAuB,EAAE,UAAU,EAAE,KAAK,CAAC;gBACjE,OAAO,KAAK,CAAC;YAEf,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAChC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAC9B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClB,OAAO,CAAC,cAAc,CAAC;QACzB,CAAC,CACF,CAAC;QACF,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CACrE,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,mBAAmB,CAAC,uBAAuB,EAAE,UAAU,EAAE,KAAK,CAAC;gBACjE,OAAO,KAAK,CAAC;YAEf,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAChC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAC9B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClB,OAAO,CAAC,cAAc,CAAC;QACzB,CAAC,CACF,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,cAAc,CACnC,WAAW,EACX,aAAa,EACb,SAAS,EACT;YACE,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,UAAU;SACvB,CACF,CAAC;QAEF,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CACxE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CACtE,CAAC;QAEF,gBAAgB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YACrC,IAAI,mBAAmB,CAAC,uBAAuB,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;gBACxE,OAAO;YACT,CAAC;YACD,YAAY,CAAC,IAAI,CACf,GAAG,YAAY,CACb;gBACE,QAAQ,EAAE,SAAS;gBACnB,SAAS,EAAE,UAAU;aACtB,EACD,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EACxC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CACzC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACpC,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE;oBACV,QAAQ;oBACR,SAAS,EAAE,UAAU;iBACtB;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;YACvC,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,CACvD,WAAW,CACD,CAAC;YACb,YAAY,CAAC,IAAI,CACf,kBAAkB,CAAC,YAAY,EAAE,UAAU,EAAE,WAAW,CAAC,CAC1D,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACnC,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE;oBACV,QAAQ,EAAE,OAAO,CAAC,IAAI;oBACtB,SAAS,EAAE,UAAU;iBACtB;gBACD,WAAW,EAAE;oBACX,YAAY,EAAE,MAAM;oBACpB,WAAW,EAAE,KAAK;oBAClB,kBAAkB,EAAE;wBAClB,QAAQ,EAAE,OAAO,CAAC,EAAE;wBACpB,SAAS,EAAE,UAAU;qBACtB;iBACF;aACF,CAAC,CAAC;YAEH,YAAY,CAAC,IAAI,CACf,GAAG,YAAY,CACb;gBACE,QAAQ,EAAE,OAAO,CAAC,IAAI;gBACtB,SAAS,EAAE,UAAU;aACtB,EACD,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAC3C,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAC1C,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAe,CAAC,MAAM,CACnE,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,mBAAmB,CAClB,uBAAuB,EACvB,IAAI,CAAC,OAAO,CAAC,EAAE,EACf,IAAI,CAAC,OAAO,CAAC,KAAK,CACnB,CACJ,CAAC;IACF,MAAM,QAAQ,GAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAe,CAAC,MAAM,CACnE,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,mBAAmB,CAClB,uBAAuB,EACvB,IAAI,CAAC,OAAO,CAAC,EAAE,EACf,IAAI,CAAC,OAAO,CAAC,KAAK,CACnB,CACJ,CAAC;IAEF,0EAA0E;IAC1E,MAAM,aAAa,GAAG,CAAC,IAAa,EAAE,EAAE,CACtC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;IAC5C,MAAM,kBAAkB,GAAG,CAAC,IAAa,EAAE,EAAE,CAC3C,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAExF,MAAM,aAAa,GAAG,IAAI,GAAG,EAAqB,CAAC;IACnD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAqB,CAAC;IAEnD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;QAC1B,GAAG,aAAa,CAAC,IAAI,EAAE;QACvB,GAAG,aAAa,CAAC,IAAI,EAAE;KACxB,CAAC,CAAC;IAEH,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,eAAe,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACzD,MAAM,eAAe,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAEzD,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACjD,kBAAkB,CAAC,IAAI,CAAC,CACzB,CAAC;QACF,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACjD,kBAAkB,CAAC,IAAI,CAAC,CACzB,CAAC;QAEF,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAC1C,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAChD,CAAC;QAEF,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAC5C,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAChD,CAAC;QAEF,MAAM,oBAAoB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC7D,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACjC,CAAC;QAEF,oBAAoB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACxC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,QAAQ,CAC1C,CAAC;YACF,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,QAAQ,CAC1C,CAAC;YACF,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;gBAAE,OAAO;YACjC,YAAY,CAAC,IAAI,CACf,GAAG,YAAY,CACb;gBACE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC7B,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;aAChC,EACD,OAAO,EACP,OAAO,CACR,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,cAAc,CACnC,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT;YACE,IAAI,EAAE,MAAM;YACZ,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;YACjD,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;SAClD,CACF,CAAC;QAEF,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACpC,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,QAAQ,CAC1C,CAAC;YACF,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE;oBACV,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;oBAC5B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;iBAC3B;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACpC,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,QAAQ,CAC1C,CAAC;YACF,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAC9C,CAAC;YACF,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,EAAE,CAC5C,CAAC;YACF,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;gBAAE,OAAO;YAEjC,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE;oBACV,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;oBAC/B,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;iBAC9B;gBACD,WAAW,EAAE;oBACX,YAAY,EAAE,KAAK;oBACnB,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;oBAC3D,kBAAkB,EAAE;wBAClB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;wBAC/B,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;qBAC9B;oBACD,kBAAkB,EAAE;wBAClB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;wBAC/B,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;qBAC9B;iBACF;aACF,CAAC,CAAC;YACH,YAAY,CAAC,IAAI,CACf,GAAG,YAAY,CACb;gBACE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;gBAC/B,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;aAC9B,EACD,OAAO,EACP,OAAO,CACR,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,QAAoB,EACpB,OAAgB,EAChB,OAAgB,EACD,EAAE;IACjB,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,CAA8B,IAAO,EAAE,EAAE;QACxD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI;YACJ,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,mCAAmC;IACnC,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI;QAC3D,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEpB,qCAAqC;IACrC,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK;QAC3D,QAAQ,CAAC,cAAc,CAAC,CAAC;IAE3B,kCAAkC;IAClC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI;QACnE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAErB,sCAAsC;IACtC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;QACnE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAE5B,oCAAoC;IACpC,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI;QACzD,QAAQ,CAAC,UAAU,CAAC,CAAC;IAEvB,wCAAwC;IACxC,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK;QACzD,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAE9B,iDAAiD;IACjD,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,kBAAkB;YACxB,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;IACL,CAAC;SAAM,IACL,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS;QACvC,OAAO,CAAC,SAAS,KAAK,MAAM,EAC5B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE,QAAQ;YACpB,mBAAmB,EAAE,OAAO,CAAC,SAAS;SACvC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,QAAoB,EACpB,OAAgB,EAChB,OAAgB,EACD,EAAE;IACjB,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,eAAe,GACnB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAuB,CAAC;IACvE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,GACtD,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAE3C,MAAM,eAAe,GACnB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAuB,CAAC;IACvE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,GACtD,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAE3C,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,eAAe;YACrB,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;IACL,CAAC;IAED,IACE,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ;QACrD,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ;QACrD,WAAW,KAAK,WAAW,EAC3B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,QAAQ;YACpB,WAAW,EAAE;gBACX,YAAY,EAAE,KAAK;gBACnB,mBAAmB,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;gBAC7C,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;gBACrC,WAAW,EAAE,WAAW;aACzB;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,IAA6B,EACA,EAAE;IAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAQF,MAAM,cAAc,GAAG,KAAK,EAC1B,QAAa,EACb,YAAiB,EACjB,SAA6B,EAC7B,SAAe,EAQd,EAAE;IACH,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvD,OAAO;YACL,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAIR,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,WAAW,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAEpC,GAAG,CAAC;QACF,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,OAAO,GAA0B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YAC5D,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,MAAM,UAAU,GAAgC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;QAEtE,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACnD,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,KAAK,IAAI,CAAC,CAAC;IACb,CAAC,QAAQ,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE;IAElC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAaF,SAAS,oBAAoB,CAAC,MAAc;IAC1C,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9D,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,wBAAwB,MAAM,qDAAqD;YACjF,0BAA0B,CAC7B,CAAC;IACJ,CAAC;AACH,CAAC;AAED,qCAAqC;AACrC,SAAS,mBAAmB,CAAC,OAAwB;IACnD,4CAA4C;IAC5C,yEAAyE;IACzE,yBAAyB;IACzB,MAAM,SAAS,GAAwB,IAAI,GAAG,EAAE,CAAC;IACjD,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,2BAA2B,SAAS,kDAAkD;gBACpF,kFAAkF,CACrF,CAAC;QACJ,CAAC;QACD,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC3B,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACzB,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAwB;IAC9D,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAA4B,KAAK,WAC7C,OAAe,EACf,UAAiD,EACjD,SAAc;QAEd,IAAI,WAAW,GAAa,EAAE,CAAC;QAC/B,IAAI,SAAS,EAAE,IAAI,KAAK,WAAW,IAAI,SAAS,EAAE,UAAU,EAAE,CAAC;YAC7D,WAAW,GAAG,CAAC,GAAG,SAAS,CAAC,UAAU,IAAI,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;aAAM,IAAI,SAAS,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;YACtC,yCAAyC;YACzC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnC,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,+DAA+D;QAC/D,IAAI,QAAQ,GAAkB,IAAI,CAAC;QACnC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;gBAC7C,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,SAAS,CAAC;YACd,IAAI,SAAS,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;gBACpC,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC5C,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACvC,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;gBAChE,CAAC,CAAC,CAAC;gBAEH,IAAI,YAAY,EAAE,CAAC;oBACjB,SAAS;wBACP,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;gBACxE,CAAC;qBAAM,CAAC;oBACN,OAAO,OAAO,CAAC;gBACjB,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBACxC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,OAAO,IAAI,KAAK,SAAS,CAAC;gBAC5B,CAAC;qBAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACrB,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;gBACjC,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;YAEH,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;gBAC1B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import {\n DataAttrDef,\n id,\n InstantDBAttr,\n InstantDBAttrOnDelete,\n InstantDBCheckedDataType,\n InstantSchemaDef,\n LinkDef,\n} from '@instantdb/core';\nimport { PlanStep } from './api.ts';\nimport { attrDefToNewAttrTx, linkDefToNewAttrTx } from './migrationUtils.ts';\nimport { relationshipConstraints, RelationshipKinds } from './relationships.ts';\n\nexport type Identifier = {\n namespace: string;\n attrName: string;\n};\n\ntype AttrWithIdentifier = {\n 'value-type': 'blob' | 'ref';\n cardinality?: 'many' | 'one';\n 'forward-identity'?: Identifier;\n 'reverse-identity'?: Identifier | null;\n 'on-delete'?: InstantDBAttrOnDelete | null | undefined;\n 'on-delete-reverse'?: InstantDBAttrOnDelete | null | undefined;\n};\n\nexport type MigrationTxTypes = {\n 'delete-attr': { identifier: Identifier };\n 'update-attr': { identifier: Identifier; partialAttr: AttrWithIdentifier };\n 'add-attr': {\n identifier: Identifier;\n 'unique?': boolean;\n 'index?': boolean;\n 'required?': boolean;\n 'reverse-identity'?: Identifier | null;\n 'forward-identity': Identifier;\n cardinality: 'many' | 'one';\n 'value-type': 'blob' | 'ref';\n 'on-delete'?: InstantDBAttrOnDelete | null;\n 'on-delete-reverse'?: InstantDBAttrOnDelete | null;\n 'checked-data-type'?: InstantDBCheckedDataType | null;\n };\n index: { identifier: Identifier };\n 'remove-index': { identifier: Identifier };\n unique: { identifier: Identifier };\n 'remove-unique': { identifier: Identifier };\n required: { identifier: Identifier };\n 'remove-required': { identifier: Identifier };\n 'check-data-type': {\n identifier: Identifier;\n 'checked-data-type': InstantDBCheckedDataType;\n };\n 'remove-data-type': { identifier: Identifier };\n};\n\ntype JobMigrationTypes =\n | 'index'\n | 'remove-index'\n | 'remove-unique'\n | 'remove-required'\n | 'unique'\n | 'remove-data-type'\n | 'required';\n\ntype PlanStepMap = {\n [K in PlanStep as K[0]]: K[1];\n};\n\nconst getExistingAttrThrowing = (\n ident: Identifier,\n existingAttrs: InstantDBAttr[],\n): InstantDBAttr => {\n const found =\n existingAttrs.find((attr) => {\n return (\n attr['forward-identity'][1] === ident.namespace &&\n attr['forward-identity'][2] === ident.attrName\n );\n }) || null;\n if (!found) {\n throw new Error(`Attribute ${ident.namespace}.${ident.attrName} not found`);\n }\n return found;\n};\n\nconst convertSimpleConstraintUpdate: ConvertPlanStepFn<any> = (\n tx,\n existing,\n) => {\n const found = getExistingAttrThrowing(tx.identifier, existing);\n return {\n 'attr-id': found.id,\n 'forward-identity': found['forward-identity'],\n };\n};\n\n// converts migration operations from Identifier (namespace/name) based\n// into transaction steps that use database ids\nconst CONVERTERS: AllConvertPlanStepFns = {\n index: convertSimpleConstraintUpdate,\n unique: convertSimpleConstraintUpdate,\n required: convertSimpleConstraintUpdate,\n 'remove-index': convertSimpleConstraintUpdate,\n 'remove-unique': convertSimpleConstraintUpdate,\n 'remove-required': convertSimpleConstraintUpdate,\n\n 'delete-attr': (from, existing) => {\n const found = getExistingAttrThrowing(from.identifier, existing);\n return found.id;\n },\n 'update-attr': (from, existing) => {\n const found = getExistingAttrThrowing(from.identifier, existing);\n return {\n id: found.id,\n 'forward-identity': from.partialAttr['forward-identity']\n ? [\n found.id,\n from.partialAttr['forward-identity'].namespace,\n from.partialAttr['forward-identity'].attrName,\n ]\n : undefined,\n 'reverse-identity': from.partialAttr['reverse-identity']\n ? [\n found.id,\n from.partialAttr['reverse-identity'].namespace,\n from.partialAttr['reverse-identity'].attrName,\n ]\n : undefined,\n cardinality: from.partialAttr['cardinality']\n ? from.partialAttr['cardinality']\n : undefined,\n\n 'on-delete': from.partialAttr['on-delete']\n ? from.partialAttr['on-delete']\n : undefined,\n 'on-delete-reverse': from.partialAttr['on-delete-reverse']\n ? from.partialAttr['on-delete-reverse']\n : undefined,\n };\n },\n 'add-attr': (from, _existing) => {\n const attrId = id();\n const forwardIdentity: [string, string, string] = [\n attrId,\n from.identifier.namespace,\n from.identifier.attrName,\n ];\n\n const steps: PlanStep[] = [];\n\n // First, create the attribute without unique, required, or indexed\n steps.push([\n 'add-attr',\n {\n 'forward-identity': forwardIdentity,\n 'reverse-identity': from['reverse-identity']\n ? [\n id(),\n from['reverse-identity'].namespace,\n from['reverse-identity'].attrName,\n ]\n : null,\n 'inferred-types': null,\n 'value-type': from['value-type'],\n id: attrId,\n cardinality: from.cardinality,\n 'index?': false,\n 'required?': false,\n 'unique?': false,\n catalog: 'user',\n 'on-delete': from['on-delete'],\n 'on-delete-reverse': from['on-delete-reverse'],\n 'checked-data-type': from['checked-data-type'],\n },\n ]);\n\n // Then add separate steps for unique, required, and indexed\n if (from['unique?']) {\n steps.push([\n 'unique',\n {\n 'attr-id': attrId,\n 'forward-identity': forwardIdentity,\n },\n ]);\n }\n\n if (from['required?']) {\n steps.push([\n 'required',\n {\n 'attr-id': attrId,\n 'forward-identity': forwardIdentity,\n },\n ]);\n }\n\n if (from['index?']) {\n steps.push([\n 'index',\n {\n 'attr-id': attrId,\n 'forward-identity': forwardIdentity,\n },\n ]);\n }\n\n return steps;\n },\n 'remove-data-type': convertSimpleConstraintUpdate,\n 'check-data-type': (from, existing) => {\n const found = getExistingAttrThrowing(from.identifier, existing);\n return {\n 'attr-id': found.id,\n 'checked-data-type': from['checked-data-type'],\n 'forward-identity': found['forward-identity'],\n };\n },\n};\n\nfunction isSystemCatalogAttr(\n systemCatalogIdentNames: Record<string, Set<string>>,\n entityName: string,\n attrName: string,\n): boolean {\n return !!systemCatalogIdentNames[entityName]?.has(attrName);\n}\n\nexport const convertTxSteps = (\n txs: MigrationTx[],\n existingAttrs: InstantDBAttr[],\n): PlanStep[] => {\n if (!existingAttrs) {\n throw new Error('Existing attributes are required');\n }\n const result: PlanStep[] = [];\n txs.forEach((tx) => {\n const converter = CONVERTERS[tx.type];\n if (!converter) {\n throw new Error(`Unknown transaction type: ${tx.type}`);\n }\n const converted = converter(tx as any, existingAttrs);\n if (Array.isArray(converted)) {\n result.push(...converted);\n } else {\n result.push([tx.type, converted] as PlanStep);\n }\n });\n return result;\n};\n\ntype ConvertPlanStepFn<T extends keyof MigrationTxTypes> = (\n from: MigrationTxTypes[T],\n existingAttrs: InstantDBAttr[],\n) => PlanStepMap[T] | PlanStep[];\n\ntype AllConvertPlanStepFns = {\n [K in keyof MigrationTxTypes]: ConvertPlanStepFn<K>;\n};\n\nexport type MigrationTx = {\n [K in keyof MigrationTxTypes]: {\n type: K;\n } & MigrationTxTypes[K];\n}[keyof MigrationTxTypes];\n\nexport type MigrationTxSpecific<T extends keyof MigrationTxTypes> = {\n type: T;\n} & MigrationTxTypes[T];\n\nexport type AnyLink = LinkDef<any, any, any, any, any, any, any>;\nexport type AnyBlob = DataAttrDef<any, any, any>;\n\nexport const diffSchemas = async (\n oldSchema: InstantSchemaDef<any, any, any>,\n newSchema: InstantSchemaDef<any, any, any>,\n resolveFn: RenameResolveFn<string>,\n systemCatalogIdentNames: Record<string, Set<string>>,\n): Promise<MigrationTx[]> => {\n const transactions: MigrationTx[] = [];\n\n const oldEntities = oldSchema.entities;\n const newEntities = newSchema.entities;\n\n const oldEntityNames = Object.keys(oldEntities);\n const newEntityNames = Object.keys(newEntities);\n\n const deletedEntityNames = oldEntityNames.filter(\n (name) => !newEntityNames.includes(name),\n );\n\n for (const entityName of deletedEntityNames) {\n Object.keys(oldEntities[entityName].attrs).forEach((attrName) => {\n if (isSystemCatalogAttr(systemCatalogIdentNames, entityName, attrName))\n return;\n transactions.push({\n type: 'delete-attr',\n identifier: {\n attrName,\n namespace: entityName,\n },\n });\n });\n if (isSystemCatalogAttr(systemCatalogIdentNames, entityName, 'id')) {\n continue;\n }\n transactions.push({\n type: 'delete-attr',\n identifier: {\n attrName: 'id',\n namespace: entityName,\n },\n });\n }\n\n const addedEntityNames = newEntityNames.filter(\n (name) => !oldEntityNames.includes(name),\n );\n\n for (const entityName of addedEntityNames) {\n if (!isSystemCatalogAttr(systemCatalogIdentNames, entityName, 'id')) {\n transactions.push({\n type: 'add-attr',\n 'forward-identity': {\n namespace: entityName,\n attrName: 'id',\n },\n identifier: {\n attrName: 'id',\n namespace: entityName,\n },\n 'index?': false,\n 'required?': true,\n cardinality: 'one',\n 'unique?': true,\n 'value-type': 'blob',\n });\n }\n\n for (const attrName of Object.keys(newEntities[entityName].attrs)) {\n if (isSystemCatalogAttr(systemCatalogIdentNames, entityName, attrName)) {\n continue;\n }\n const attrInSchema = newEntities[entityName].attrs[attrName];\n transactions.push(attrDefToNewAttrTx(attrInSchema, entityName, attrName));\n }\n }\n\n const innerEntityNames = oldEntityNames.filter((name) =>\n newEntityNames.includes(name),\n );\n\n for (const entityName of innerEntityNames) {\n // BLOB ATTRIBUTES\n const addedFields = Object.keys(newEntities[entityName].attrs).filter(\n (field) => {\n if (isSystemCatalogAttr(systemCatalogIdentNames, entityName, field))\n return false;\n\n const oldEntityHasIt = Object.keys(\n oldEntities[entityName].attrs,\n ).includes(field);\n return !oldEntityHasIt;\n },\n );\n const removedFields = Object.keys(oldEntities[entityName].attrs).filter(\n (field) => {\n if (isSystemCatalogAttr(systemCatalogIdentNames, entityName, field))\n return false;\n\n const newEntityHasIt = Object.keys(\n newEntities[entityName].attrs,\n ).includes(field);\n return !newEntityHasIt;\n },\n );\n\n const resolved = await resolveRenames(\n addedFields,\n removedFields,\n resolveFn,\n {\n type: 'attribute',\n entityName: entityName,\n },\n );\n\n const consistentFields = Object.keys(oldEntities[entityName].attrs).filter(\n (field) => Object.keys(newEntities[entityName].attrs).includes(field),\n );\n\n consistentFields.forEach((fieldName) => {\n if (isSystemCatalogAttr(systemCatalogIdentNames, entityName, fieldName)) {\n return;\n }\n transactions.push(\n ...compareBlobs(\n {\n attrName: fieldName,\n namespace: entityName,\n },\n oldEntities[entityName].attrs[fieldName],\n newEntities[entityName].attrs[fieldName],\n ),\n );\n });\n\n resolved.deleted.forEach((attrName) => {\n transactions.push({\n type: 'delete-attr',\n identifier: {\n attrName,\n namespace: entityName,\n },\n });\n });\n\n resolved.created.forEach((createdName) => {\n const attrInSchema = newSchema.entities[entityName].attrs[\n createdName\n ] as AnyBlob;\n transactions.push(\n attrDefToNewAttrTx(attrInSchema, entityName, createdName),\n );\n });\n\n resolved.renamed.forEach((renamed) => {\n transactions.push({\n type: 'update-attr',\n identifier: {\n attrName: renamed.from,\n namespace: entityName,\n },\n partialAttr: {\n 'value-type': 'blob',\n cardinality: 'one',\n 'forward-identity': {\n attrName: renamed.to,\n namespace: entityName,\n },\n },\n });\n\n transactions.push(\n ...compareBlobs(\n {\n attrName: renamed.from,\n namespace: entityName,\n },\n oldEntities[entityName].attrs[renamed.from],\n newEntities[entityName].attrs[renamed.to],\n ),\n );\n });\n }\n\n const oldLinks = (Object.values(oldSchema.links) as AnyLink[]).filter(\n (link) =>\n !isSystemCatalogAttr(\n systemCatalogIdentNames,\n link.forward.on,\n link.forward.label,\n ),\n );\n const newLinks = (Object.values(newSchema.links) as AnyLink[]).filter(\n (link) =>\n !isSystemCatalogAttr(\n systemCatalogIdentNames,\n link.forward.on,\n link.forward.label,\n ),\n );\n\n // Group links by their forward namespace-label combination for comparison\n const createLinkKey = (link: AnyLink) =>\n `${link.forward.on}<->${link.reverse.on}`;\n const createLinkIdentity = (link: AnyLink) =>\n `${link.forward.on}.${link.forward.label}<->${link.reverse.on}.${link.reverse.label}`;\n\n const newLinksByKey = new Map<string, AnyLink[]>();\n const oldLinksByKey = new Map<string, AnyLink[]>();\n\n for (const link of newLinks) {\n const key = createLinkKey(link);\n const links = newLinksByKey.get(key) || [];\n links.push(link);\n newLinksByKey.set(key, links);\n }\n\n for (const link of oldLinks) {\n const key = createLinkKey(link);\n const links = oldLinksByKey.get(key) || [];\n links.push(link);\n oldLinksByKey.set(key, links);\n }\n\n const allLinkKeys = new Set([\n ...oldLinksByKey.keys(),\n ...newLinksByKey.keys(),\n ]);\n\n for (const linkKey of allLinkKeys) {\n const oldLinksInGroup = oldLinksByKey.get(linkKey) || [];\n const newLinksInGroup = newLinksByKey.get(linkKey) || [];\n\n const oldIdentities = oldLinksInGroup.map((link) =>\n createLinkIdentity(link),\n );\n const newIdentities = newLinksInGroup.map((link) =>\n createLinkIdentity(link),\n );\n\n const addedIdentities = newIdentities.filter(\n (identity) => !oldIdentities.includes(identity),\n );\n\n const removedIdentities = oldIdentities.filter(\n (identity) => !newIdentities.includes(identity),\n );\n\n const consistentIdentities = oldIdentities.filter((identity) =>\n newIdentities.includes(identity),\n );\n\n consistentIdentities.forEach((identity) => {\n const oldLink = oldLinksInGroup.find(\n (l) => createLinkIdentity(l) === identity,\n );\n const newLink = newLinksInGroup.find(\n (l) => createLinkIdentity(l) === identity,\n );\n if (!oldLink || !newLink) return;\n transactions.push(\n ...compareLinks(\n {\n namespace: oldLink.forward.on,\n attrName: oldLink.forward.label,\n },\n oldLink,\n newLink,\n ),\n );\n });\n\n const resolved = await resolveRenames(\n addedIdentities,\n removedIdentities,\n resolveFn,\n {\n type: 'link',\n forwardEntityName: oldLinksInGroup[0]?.forward.on,\n reverseEntityName: oldLinksInGroup[0]?.reverse.on,\n },\n );\n\n resolved.deleted.forEach((identity) => {\n const link = oldLinksInGroup.find(\n (l) => createLinkIdentity(l) === identity,\n );\n if (!link) return;\n transactions.push({\n type: 'delete-attr',\n identifier: {\n attrName: link.forward.label,\n namespace: link.forward.on,\n },\n });\n });\n\n resolved.created.forEach((identity) => {\n const link = newLinksInGroup.find(\n (l) => createLinkIdentity(l) === identity,\n );\n if (!link) return;\n transactions.push(linkDefToNewAttrTx(link));\n });\n\n resolved.renamed.forEach((renamed) => {\n const oldLink = oldLinksInGroup.find(\n (l) => createLinkIdentity(l) === renamed.from,\n );\n const newLink = newLinksInGroup.find(\n (l) => createLinkIdentity(l) === renamed.to,\n );\n if (!oldLink || !newLink) return;\n\n transactions.push({\n type: 'update-attr',\n identifier: {\n attrName: oldLink.forward.label,\n namespace: oldLink.forward.on,\n },\n partialAttr: {\n 'value-type': 'ref',\n cardinality: newLink.forward.has === 'one' ? 'one' : 'many',\n 'forward-identity': {\n attrName: newLink.forward.label,\n namespace: newLink.forward.on,\n },\n 'reverse-identity': {\n attrName: newLink.reverse.label,\n namespace: newLink.reverse.on,\n },\n },\n });\n transactions.push(\n ...compareLinks(\n {\n attrName: oldLink.forward.label,\n namespace: oldLink.forward.on,\n },\n oldLink,\n newLink,\n ),\n );\n });\n }\n\n return transactions;\n};\n\nexport interface RenamePromptItem<T> {\n from: T;\n to: T;\n}\n\nexport const compareBlobs = (\n identity: Identifier,\n oldBlob: AnyBlob,\n newBlob: AnyBlob,\n): MigrationTx[] => {\n const results: MigrationTx[] = [];\n const sendType = <T extends JobMigrationTypes>(type: T) => {\n results.push({\n type,\n identifier: identity,\n });\n };\n\n // check if index needs to be added\n if (oldBlob.isIndexed === false && newBlob.isIndexed === true)\n sendType('index');\n\n // check if index needs to be removed\n if (oldBlob.isIndexed === true && newBlob.isIndexed === false)\n sendType('remove-index');\n\n // check if needs to become unique\n if (oldBlob.config.unique === false && newBlob.config.unique === true)\n sendType('unique');\n\n // check if needs to become non-unique\n if (oldBlob.config.unique === true && newBlob.config.unique === false)\n sendType('remove-unique');\n\n // check if needs to become required\n if (oldBlob.required === false && newBlob.required === true)\n sendType('required');\n\n // check if needs to become non-required\n if (oldBlob.required === true && newBlob.required === false)\n sendType('remove-required');\n\n // check if data type needs to be changed / added\n if (oldBlob.valueType !== 'json' && newBlob.valueType === 'json') {\n results.push({\n type: 'remove-data-type',\n identifier: identity,\n });\n } else if (\n oldBlob.valueType !== newBlob.valueType &&\n newBlob.valueType !== 'json'\n ) {\n results.push({\n type: 'check-data-type',\n identifier: identity,\n 'checked-data-type': newBlob.valueType,\n });\n }\n\n return results;\n};\n\nexport const compareLinks = (\n identity: Identifier,\n oldLink: AnyLink,\n newLink: AnyLink,\n): MigrationTx[] => {\n const results: MigrationTx[] = [];\n const oldRelationship =\n `${oldLink.forward.has}-${oldLink.reverse.has}` as RelationshipKinds;\n const { cardinality: oldCardinal, 'unique?': oldUnique } =\n relationshipConstraints[oldRelationship];\n\n const newRelationship =\n `${newLink.forward.has}-${newLink.reverse.has}` as RelationshipKinds;\n const { cardinality: newCardinal, 'unique?': newUnique } =\n relationshipConstraints[newRelationship];\n\n if (!oldUnique && newUnique) {\n results.push({\n type: 'unique',\n identifier: identity,\n });\n }\n if (!newUnique && newUnique !== oldUnique) {\n results.push({\n type: 'remove-unique',\n identifier: identity,\n });\n }\n\n if (\n oldLink.reverse.onDelete !== newLink.reverse.onDelete ||\n oldLink.forward.onDelete !== newLink.forward.onDelete ||\n oldCardinal !== newCardinal\n ) {\n results.push({\n type: 'update-attr',\n identifier: identity,\n partialAttr: {\n 'value-type': 'ref',\n 'on-delete-reverse': newLink.reverse.onDelete,\n 'on-delete': newLink.forward.onDelete,\n cardinality: newCardinal,\n },\n });\n }\n\n return results;\n};\n\nexport const isRenamePromptItem = <T>(\n item: RenamePromptItem<T> | T,\n): item is RenamePromptItem<T> => {\n if (typeof item === 'object') return true;\n return false;\n};\n\nexport type RenameResolveFn<T> = (\n created: T,\n promptData: (RenamePromptItem<T> | T)[],\n extraInfo?: any,\n) => Promise<T | RenamePromptItem<T>>;\n\nconst resolveRenames = async <T>(\n newItems: T[],\n missingItems: T[],\n resolveFn: RenameResolveFn<T>,\n extraInfo?: any,\n): Promise<{\n created: T[];\n deleted: T[];\n renamed: {\n from: T;\n to: T;\n }[];\n}> => {\n if (missingItems.length === 0 || newItems.length === 0) {\n return {\n created: newItems,\n deleted: missingItems,\n renamed: [],\n };\n }\n\n const result: {\n created: T[];\n renamed: { from: T; to: T }[];\n deleted: T[];\n } = { created: [], renamed: [], deleted: [] };\n let index = 0;\n let leftMissing = [...missingItems];\n\n do {\n const created = newItems[index];\n const renames: RenamePromptItem<T>[] = leftMissing.map((it) => {\n return { from: it, to: created };\n });\n const promptData: (RenamePromptItem<T> | T)[] = [created, ...renames];\n\n const data = await resolveFn(created, promptData, extraInfo);\n if (isRenamePromptItem(data)) {\n if (data.from !== data.to) {\n result.renamed.push(data);\n }\n delete leftMissing[leftMissing.indexOf(data.from)];\n leftMissing = leftMissing.filter(Boolean);\n } else {\n result.created.push(created);\n }\n index += 1;\n } while (index < newItems.length);\n\n result.deleted.push(...leftMissing);\n return result;\n};\n\n/**\n * a `rename command` lets us know your intent to rename a particular entity\n *\n * The format is `from:to`, where `from` and `to` are lookups.\n *\n * For example, to rename `posts.name` to `posts.title`, a command could\n * look like:\n *\n * `posts.name:posts.title`\n */\nexport type RenameCommand = `${string}.${string}:${string}.${string}`;\nfunction validateRenameLookup(lookup: string) {\n const [etype, label] = lookup.split('.').map((x) => x.trim());\n if (!etype || !label) {\n throw new Error(\n `Invalid lookup. Got '${lookup}'. We expect a pattern like 'entityname.columname;.` +\n 'For example: posts.title',\n );\n }\n}\n\n// RenameMap goes from `to` -> `from`\nfunction parseRenameCommands(renames: RenameCommand[]): Map<string, string> {\n // Parse rename options: format is \"from:to\"\n // note that it saves backwards since we will be testing against the base\n // case of a created attr\n const renameMap: Map<string, string> = new Map();\n for (const renameStr of renames) {\n let [from, to] = renameStr.split(':').map((x) => x.trim());\n if (!from || !to) {\n throw new Error(\n `Invalid rename command: ${renameStr}. We could not parse a distinct 'from' and 'to'.` +\n \" The structure should look like 'from:to'. For example: 'posts.name:posts.title'\",\n );\n }\n validateRenameLookup(from);\n validateRenameLookup(to);\n renameMap.set(to.trim(), from.trim());\n }\n return renameMap;\n}\n\n/**\n * Given a list of RenameCommands, builds a cusotm `resolveFn` for\n * `diffSchemas`, which automatically resolves rename conflicts with these commands.\n */\nexport function buildAutoRenameSelector(renames: RenameCommand[]) {\n const renameMap = parseRenameCommands(renames);\n\n const renameFn: RenameResolveFn<string> = async function (\n created: string,\n promptData: (RenamePromptItem<string> | string)[],\n extraInfo: any,\n ): Promise<string | RenamePromptItem<string>> {\n let lookupNames: string[] = [];\n if (extraInfo?.type === 'attribute' && extraInfo?.entityName) {\n lookupNames = [`${extraInfo.entityName}.${created}`];\n } else if (extraInfo?.type === 'link') {\n // Extract both forward and reverse parts\n const parts = created.split('<->');\n lookupNames = [parts[0], parts[1]];\n } else {\n return created;\n }\n\n // Try to find a match in the rename map using the lookup names\n let fromAttr: string | null = null;\n for (const lookupName of lookupNames) {\n if (renameMap.has(lookupName)) {\n fromAttr = renameMap.get(lookupName) || null;\n break;\n }\n }\n\n if (fromAttr) {\n let fromValue;\n if (extraInfo?.type === 'attribute') {\n fromValue = fromAttr.split('.').pop();\n } else {\n const matchingItem = promptData.find((item) => {\n const itemStr = typeof item === 'string' ? item : item.from;\n const itemParts = itemStr.split('<->');\n return itemParts[0] === fromAttr || itemParts[1] === fromAttr;\n });\n\n if (matchingItem) {\n fromValue =\n typeof matchingItem === 'string' ? matchingItem : matchingItem.from;\n } else {\n return created;\n }\n }\n\n const hasMatch = promptData.some((item) => {\n if (typeof item === 'string') {\n return item === fromValue;\n } else if (item.from) {\n return item.from === fromValue;\n }\n return false;\n });\n\n if (fromValue && hasMatch) {\n return { from: fromValue, to: created };\n }\n }\n\n return created;\n };\n\n return renameFn;\n}\n"]}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,EAAE,GAMH,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAqB,MAAM,oBAAoB,CAAC;AA0DhF,MAAM,uBAAuB,GAAG,CAC9B,KAAiB,EACjB,aAA8B,EACf,EAAE;IACjB,MAAM,KAAK,GACT,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1B,OAAO,CACL,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS;YAC/C,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAC/C,CAAC;IACJ,CAAC,CAAC,IAAI,IAAI,CAAC;IACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,YAAY,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,6BAA6B,GAA2B,CAC5D,EAAE,EACF,QAAQ,EACR,EAAE;IACF,MAAM,KAAK,GAAG,uBAAuB,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC/D,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,EAAE;QACnB,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,CAAC;KAC9C,CAAC;AACJ,CAAC,CAAC;AAEF,uEAAuE;AACvE,+CAA+C;AAC/C,MAAM,UAAU,GAA0B;IACxC,KAAK,EAAE,6BAA6B;IACpC,MAAM,EAAE,6BAA6B;IACrC,QAAQ,EAAE,6BAA6B;IACvC,cAAc,EAAE,6BAA6B;IAC7C,eAAe,EAAE,6BAA6B;IAC9C,iBAAiB,EAAE,6BAA6B;IAEhD,aAAa,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACjE,OAAO,KAAK,CAAC,EAAE,CAAC;IAClB,CAAC;IACD,aAAa,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACjE,OAAO;YACL,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;gBACtD,CAAC,CAAC;oBACE,KAAK,CAAC,EAAE;oBACR,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,SAAS;oBAC9C,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,QAAQ;iBAC9C;gBACH,CAAC,CAAC,SAAS;YACb,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;gBACtD,CAAC,CAAC;oBACE,KAAK,CAAC,EAAE;oBACR,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,SAAS;oBAC9C,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,QAAQ;iBAC9C;gBACH,CAAC,CAAC,SAAS;YACb,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;gBAC1C,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;gBACjC,CAAC,CAAC,SAAS;YAEb,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;gBACxC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;gBAC/B,CAAC,CAAC,SAAS;YACb,mBAAmB,EAAE,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC;gBACxD,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC;gBACvC,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;IACD,UAAU,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QAC9B,MAAM,MAAM,GAAG,EAAE,EAAE,CAAC;QACpB,MAAM,eAAe,GAA6B;YAChD,MAAM;YACN,IAAI,CAAC,UAAU,CAAC,SAAS;YACzB,IAAI,CAAC,UAAU,CAAC,QAAQ;SACzB,CAAC;QAEF,MAAM,KAAK,GAAe,EAAE,CAAC;QAE7B,mEAAmE;QACnE,KAAK,CAAC,IAAI,CAAC;YACT,UAAU;YACV;gBACE,kBAAkB,EAAE,eAAe;gBACnC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC;oBAC1C,CAAC,CAAC;wBACE,EAAE,EAAE;wBACJ,IAAI,CAAC,kBAAkB,CAAC,CAAC,SAAS;wBAClC,IAAI,CAAC,kBAAkB,CAAC,CAAC,QAAQ;qBAClC;oBACH,CAAC,CAAC,IAAI;gBACR,gBAAgB,EAAE,IAAI;gBACtB,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC;gBAChC,EAAE,EAAE,MAAM;gBACV,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,KAAK;gBAClB,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,MAAM;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;gBAC9B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC;gBAC9C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC;aAC/C;SACF,CAAC,CAAC;QAEH,4DAA4D;QAC5D,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC;gBACT,QAAQ;gBACR;oBACE,SAAS,EAAE,MAAM;oBACjB,kBAAkB,EAAE,eAAe;iBACpC;aACF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC;gBACT,UAAU;gBACV;oBACE,SAAS,EAAE,MAAM;oBACjB,kBAAkB,EAAE,eAAe;iBACpC;aACF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC;gBACT,OAAO;gBACP;oBACE,SAAS,EAAE,MAAM;oBACjB,kBAAkB,EAAE,eAAe;iBACpC;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IACD,kBAAkB,EAAE,6BAA6B;IACjD,iBAAiB,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;QACpC,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACjE,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,EAAE;YACnB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC;YAC9C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,CAAC;SAC9C,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,mBAAmB,CAC1B,uBAAoD,EACpD,UAAkB,EAClB,QAAgB;IAEhB,OAAO,CAAC,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,GAAkB,EAClB,aAA8B,EAClB,EAAE;IACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QACjB,MAAM,SAAS,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,6BAA6B,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,SAAS,GAAG,SAAS,CAAC,EAAS,EAAE,aAAa,CAAC,CAAC;QACtD,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAa,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAwBF,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,SAA0C,EAC1C,SAA0C,EAC1C,SAAkC,EAClC,uBAAoD,EAC5B,EAAE;IAC1B,MAAM,YAAY,GAAkB,EAAE,CAAC;IAEvC,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC;IACvC,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC;IAEvC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEhD,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAC9C,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CACzC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,kBAAkB,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC9D,IAAI,mBAAmB,CAAC,uBAAuB,EAAE,UAAU,EAAE,QAAQ,CAAC;gBACpE,OAAO;YACT,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE;oBACV,QAAQ;oBACR,SAAS,EAAE,UAAU;iBACtB;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,mBAAmB,CAAC,uBAAuB,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC;YACnE,SAAS;QACX,CAAC;QACD,YAAY,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE;gBACV,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,UAAU;aACtB;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAC5C,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CACzC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;QAC1C,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC;YACpE,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,UAAU;gBAChB,kBAAkB,EAAE;oBAClB,SAAS,EAAE,UAAU;oBACrB,QAAQ,EAAE,IAAI;iBACf;gBACD,UAAU,EAAE;oBACV,QAAQ,EAAE,IAAI;oBACd,SAAS,EAAE,UAAU;iBACtB;gBACD,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,KAAK;gBAClB,SAAS,EAAE,IAAI;gBACf,YAAY,EAAE,MAAM;aACrB,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAClE,IAAI,mBAAmB,CAAC,uBAAuB,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACvE,SAAS;YACX,CAAC;YACD,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7D,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACtD,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC9B,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;QAC1C,kBAAkB;QAClB,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CACnE,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,mBAAmB,CAAC,uBAAuB,EAAE,UAAU,EAAE,KAAK,CAAC;gBACjE,OAAO,KAAK,CAAC;YAEf,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAChC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAC9B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClB,OAAO,CAAC,cAAc,CAAC;QACzB,CAAC,CACF,CAAC;QACF,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CACrE,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,mBAAmB,CAAC,uBAAuB,EAAE,UAAU,EAAE,KAAK,CAAC;gBACjE,OAAO,KAAK,CAAC;YAEf,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAChC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAC9B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClB,OAAO,CAAC,cAAc,CAAC;QACzB,CAAC,CACF,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,cAAc,CACnC,WAAW,EACX,aAAa,EACb,SAAS,EACT;YACE,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,UAAU;SACvB,CACF,CAAC;QAEF,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CACxE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CACtE,CAAC;QAEF,gBAAgB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YACrC,IAAI,mBAAmB,CAAC,uBAAuB,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;gBACxE,OAAO;YACT,CAAC;YACD,YAAY,CAAC,IAAI,CACf,GAAG,YAAY,CACb;gBACE,QAAQ,EAAE,SAAS;gBACnB,SAAS,EAAE,UAAU;aACtB,EACD,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EACxC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CACzC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACpC,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE;oBACV,QAAQ;oBACR,SAAS,EAAE,UAAU;iBACtB;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;YACvC,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,CACvD,WAAW,CACD,CAAC;YACb,YAAY,CAAC,IAAI,CACf,kBAAkB,CAAC,YAAY,EAAE,UAAU,EAAE,WAAW,CAAC,CAC1D,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACnC,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE;oBACV,QAAQ,EAAE,OAAO,CAAC,IAAI;oBACtB,SAAS,EAAE,UAAU;iBACtB;gBACD,WAAW,EAAE;oBACX,YAAY,EAAE,MAAM;oBACpB,WAAW,EAAE,KAAK;oBAClB,kBAAkB,EAAE;wBAClB,QAAQ,EAAE,OAAO,CAAC,EAAE;wBACpB,SAAS,EAAE,UAAU;qBACtB;iBACF;aACF,CAAC,CAAC;YAEH,YAAY,CAAC,IAAI,CACf,GAAG,YAAY,CACb;gBACE,QAAQ,EAAE,OAAO,CAAC,IAAI;gBACtB,SAAS,EAAE,UAAU;aACtB,EACD,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAC3C,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAC1C,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAe,CAAC,MAAM,CACnE,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,mBAAmB,CAClB,uBAAuB,EACvB,IAAI,CAAC,OAAO,CAAC,EAAE,EACf,IAAI,CAAC,OAAO,CAAC,KAAK,CACnB,CACJ,CAAC;IACF,MAAM,QAAQ,GAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAe,CAAC,MAAM,CACnE,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,mBAAmB,CAClB,uBAAuB,EACvB,IAAI,CAAC,OAAO,CAAC,EAAE,EACf,IAAI,CAAC,OAAO,CAAC,KAAK,CACnB,CACJ,CAAC;IAEF,0EAA0E;IAC1E,MAAM,aAAa,GAAG,CAAC,IAAa,EAAE,EAAE,CACtC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;IAC5C,MAAM,kBAAkB,GAAG,CAAC,IAAa,EAAE,EAAE,CAC3C,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAExF,MAAM,aAAa,GAAG,IAAI,GAAG,EAAqB,CAAC;IACnD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAqB,CAAC;IAEnD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;QAC1B,GAAG,aAAa,CAAC,IAAI,EAAE;QACvB,GAAG,aAAa,CAAC,IAAI,EAAE;KACxB,CAAC,CAAC;IAEH,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,eAAe,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACzD,MAAM,eAAe,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAEzD,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACjD,kBAAkB,CAAC,IAAI,CAAC,CACzB,CAAC;QACF,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACjD,kBAAkB,CAAC,IAAI,CAAC,CACzB,CAAC;QAEF,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAC1C,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAChD,CAAC;QAEF,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAC5C,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAChD,CAAC;QAEF,MAAM,oBAAoB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC7D,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACjC,CAAC;QAEF,oBAAoB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACxC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,QAAQ,CAC1C,CAAC;YACF,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,QAAQ,CAC1C,CAAC;YACF,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;gBAAE,OAAO;YACjC,YAAY,CAAC,IAAI,CACf,GAAG,YAAY,CACb;gBACE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC7B,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;aAChC,EACD,OAAO,EACP,OAAO,CACR,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,cAAc,CACnC,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT;YACE,IAAI,EAAE,MAAM;YACZ,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;YACjD,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;SAClD,CACF,CAAC;QAEF,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACpC,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,QAAQ,CAC1C,CAAC;YACF,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE;oBACV,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;oBAC5B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;iBAC3B;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACpC,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,QAAQ,CAC1C,CAAC;YACF,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAC9C,CAAC;YACF,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,EAAE,CAC5C,CAAC;YACF,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;gBAAE,OAAO;YAEjC,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE;oBACV,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;oBAC/B,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;iBAC9B;gBACD,WAAW,EAAE;oBACX,YAAY,EAAE,KAAK;oBACnB,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;oBAC3D,kBAAkB,EAAE;wBAClB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;wBAC/B,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;qBAC9B;oBACD,kBAAkB,EAAE;wBAClB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;wBAC/B,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;qBAC9B;iBACF;aACF,CAAC,CAAC;YACH,YAAY,CAAC,IAAI,CACf,GAAG,YAAY,CACb;gBACE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;gBAC/B,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;aAC9B,EACD,OAAO,EACP,OAAO,CACR,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,QAAoB,EACpB,OAAgB,EAChB,OAAgB,EACD,EAAE;IACjB,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,CAA8B,IAAO,EAAE,EAAE;QACxD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI;YACJ,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,mCAAmC;IACnC,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI;QAC3D,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEpB,qCAAqC;IACrC,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK;QAC3D,QAAQ,CAAC,cAAc,CAAC,CAAC;IAE3B,kCAAkC;IAClC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI;QACnE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAErB,sCAAsC;IACtC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;QACnE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAE5B,oCAAoC;IACpC,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI;QACzD,QAAQ,CAAC,UAAU,CAAC,CAAC;IAEvB,wCAAwC;IACxC,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK;QACzD,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAE9B,iDAAiD;IACjD,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,kBAAkB;YACxB,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;IACL,CAAC;SAAM,IACL,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS;QACvC,OAAO,CAAC,SAAS,KAAK,MAAM,EAC5B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE,QAAQ;YACpB,mBAAmB,EAAE,OAAO,CAAC,SAAS;SACvC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,QAAoB,EACpB,OAAgB,EAChB,OAAgB,EACD,EAAE;IACjB,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,eAAe,GACnB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAuB,CAAC;IACvE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,GACtD,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IAE/C,MAAM,eAAe,GACnB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAuB,CAAC;IACvE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,GACtD,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IAE/C,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,eAAe;YACrB,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB;YAClD,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;IACL,CAAC;IAED,IACE,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ;QACrD,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ;QACrD,WAAW,KAAK,WAAW,EAC3B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,QAAQ;YACpB,WAAW,EAAE;gBACX,YAAY,EAAE,KAAK;gBACnB,mBAAmB,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;gBAC7C,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;gBACrC,WAAW,EAAE,WAAW;aACzB;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,IAA6B,EACA,EAAE;IAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAQF,MAAM,cAAc,GAAG,KAAK,EAC1B,QAAa,EACb,YAAiB,EACjB,SAA6B,EAC7B,SAAe,EAQd,EAAE;IACH,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvD,OAAO;YACL,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAIR,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,WAAW,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAEpC,GAAG,CAAC;QACF,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,OAAO,GAA0B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YAC5D,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,MAAM,UAAU,GAAgC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;QAEtE,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACnD,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,KAAK,IAAI,CAAC,CAAC;IACb,CAAC,QAAQ,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE;IAElC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAaF,SAAS,oBAAoB,CAAC,MAAc;IAC1C,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9D,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,wBAAwB,MAAM,qDAAqD;YACjF,0BAA0B,CAC7B,CAAC;IACJ,CAAC;AACH,CAAC;AAED,qCAAqC;AACrC,SAAS,mBAAmB,CAAC,OAAwB;IACnD,4CAA4C;IAC5C,yEAAyE;IACzE,yBAAyB;IACzB,MAAM,SAAS,GAAwB,IAAI,GAAG,EAAE,CAAC;IACjD,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,2BAA2B,SAAS,kDAAkD;gBACpF,kFAAkF,CACrF,CAAC;QACJ,CAAC;QACD,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC3B,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACzB,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAwB;IAC9D,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAA4B,KAAK,WAC7C,OAAe,EACf,UAAiD,EACjD,SAAc;QAEd,IAAI,WAAW,GAAa,EAAE,CAAC;QAC/B,IAAI,SAAS,EAAE,IAAI,KAAK,WAAW,IAAI,SAAS,EAAE,UAAU,EAAE,CAAC;YAC7D,WAAW,GAAG,CAAC,GAAG,SAAS,CAAC,UAAU,IAAI,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;aAAM,IAAI,SAAS,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;YACtC,yCAAyC;YACzC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnC,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,+DAA+D;QAC/D,IAAI,QAAQ,GAAkB,IAAI,CAAC;QACnC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;gBAC7C,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,SAAS,CAAC;YACd,IAAI,SAAS,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;gBACpC,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC5C,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACvC,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;gBAChE,CAAC,CAAC,CAAC;gBAEH,IAAI,YAAY,EAAE,CAAC;oBACjB,SAAS;wBACP,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;gBACxE,CAAC;qBAAM,CAAC;oBACN,OAAO,OAAO,CAAC;gBACjB,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBACxC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,OAAO,IAAI,KAAK,SAAS,CAAC;gBAC5B,CAAC;qBAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACrB,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;gBACjC,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;YAEH,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;gBAC1B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import {\n DataAttrDef,\n id,\n InstantDBAttr,\n InstantDBAttrOnDelete,\n InstantDBCheckedDataType,\n InstantSchemaDef,\n LinkDef,\n} from '@instantdb/core';\nimport { PlanStep } from './api.ts';\nimport { attrDefToNewAttrTx, linkDefToNewAttrTx } from './migrationUtils.ts';\nimport { relationshipConstraints, RelationshipKinds } from './relationships.ts';\n\nexport type Identifier = {\n namespace: string;\n attrName: string;\n};\n\ntype AttrWithIdentifier = {\n 'value-type': 'blob' | 'ref';\n cardinality?: 'many' | 'one';\n 'forward-identity'?: Identifier;\n 'reverse-identity'?: Identifier | null;\n 'on-delete'?: InstantDBAttrOnDelete | null | undefined;\n 'on-delete-reverse'?: InstantDBAttrOnDelete | null | undefined;\n};\n\nexport type MigrationTxTypes = {\n 'delete-attr': { identifier: Identifier };\n 'update-attr': { identifier: Identifier; partialAttr: AttrWithIdentifier };\n 'add-attr': {\n identifier: Identifier;\n 'unique?': boolean;\n 'index?': boolean;\n 'required?': boolean;\n 'reverse-identity'?: Identifier | null;\n 'forward-identity': Identifier;\n cardinality: 'many' | 'one';\n 'value-type': 'blob' | 'ref';\n 'on-delete'?: InstantDBAttrOnDelete | null;\n 'on-delete-reverse'?: InstantDBAttrOnDelete | null;\n 'checked-data-type'?: InstantDBCheckedDataType | null;\n };\n index: { identifier: Identifier };\n 'remove-index': { identifier: Identifier };\n unique: { identifier: Identifier };\n 'remove-unique': { identifier: Identifier };\n required: { identifier: Identifier };\n 'remove-required': { identifier: Identifier };\n 'check-data-type': {\n identifier: Identifier;\n 'checked-data-type': InstantDBCheckedDataType;\n };\n 'remove-data-type': { identifier: Identifier };\n};\n\ntype JobMigrationTypes =\n | 'index'\n | 'remove-index'\n | 'remove-unique'\n | 'remove-required'\n | 'unique'\n | 'remove-data-type'\n | 'required';\n\ntype PlanStepMap = {\n [K in PlanStep as K[0]]: K[1];\n};\n\nconst getExistingAttrThrowing = (\n ident: Identifier,\n existingAttrs: InstantDBAttr[],\n): InstantDBAttr => {\n const found =\n existingAttrs.find((attr) => {\n return (\n attr['forward-identity'][1] === ident.namespace &&\n attr['forward-identity'][2] === ident.attrName\n );\n }) || null;\n if (!found) {\n throw new Error(`Attribute ${ident.namespace}.${ident.attrName} not found`);\n }\n return found;\n};\n\nconst convertSimpleConstraintUpdate: ConvertPlanStepFn<any> = (\n tx,\n existing,\n) => {\n const found = getExistingAttrThrowing(tx.identifier, existing);\n return {\n 'attr-id': found.id,\n 'forward-identity': found['forward-identity'],\n };\n};\n\n// converts migration operations from Identifier (namespace/name) based\n// into transaction steps that use database ids\nconst CONVERTERS: AllConvertPlanStepFns = {\n index: convertSimpleConstraintUpdate,\n unique: convertSimpleConstraintUpdate,\n required: convertSimpleConstraintUpdate,\n 'remove-index': convertSimpleConstraintUpdate,\n 'remove-unique': convertSimpleConstraintUpdate,\n 'remove-required': convertSimpleConstraintUpdate,\n\n 'delete-attr': (from, existing) => {\n const found = getExistingAttrThrowing(from.identifier, existing);\n return found.id;\n },\n 'update-attr': (from, existing) => {\n const found = getExistingAttrThrowing(from.identifier, existing);\n return {\n id: found.id,\n 'forward-identity': from.partialAttr['forward-identity']\n ? [\n found.id,\n from.partialAttr['forward-identity'].namespace,\n from.partialAttr['forward-identity'].attrName,\n ]\n : undefined,\n 'reverse-identity': from.partialAttr['reverse-identity']\n ? [\n found.id,\n from.partialAttr['reverse-identity'].namespace,\n from.partialAttr['reverse-identity'].attrName,\n ]\n : undefined,\n cardinality: from.partialAttr['cardinality']\n ? from.partialAttr['cardinality']\n : undefined,\n\n 'on-delete': from.partialAttr['on-delete']\n ? from.partialAttr['on-delete']\n : undefined,\n 'on-delete-reverse': from.partialAttr['on-delete-reverse']\n ? from.partialAttr['on-delete-reverse']\n : undefined,\n };\n },\n 'add-attr': (from, _existing) => {\n const attrId = id();\n const forwardIdentity: [string, string, string] = [\n attrId,\n from.identifier.namespace,\n from.identifier.attrName,\n ];\n\n const steps: PlanStep[] = [];\n\n // First, create the attribute without unique, required, or indexed\n steps.push([\n 'add-attr',\n {\n 'forward-identity': forwardIdentity,\n 'reverse-identity': from['reverse-identity']\n ? [\n id(),\n from['reverse-identity'].namespace,\n from['reverse-identity'].attrName,\n ]\n : null,\n 'inferred-types': null,\n 'value-type': from['value-type'],\n id: attrId,\n cardinality: from.cardinality,\n 'index?': false,\n 'required?': false,\n 'unique?': false,\n catalog: 'user',\n 'on-delete': from['on-delete'],\n 'on-delete-reverse': from['on-delete-reverse'],\n 'checked-data-type': from['checked-data-type'],\n },\n ]);\n\n // Then add separate steps for unique, required, and indexed\n if (from['unique?']) {\n steps.push([\n 'unique',\n {\n 'attr-id': attrId,\n 'forward-identity': forwardIdentity,\n },\n ]);\n }\n\n if (from['required?']) {\n steps.push([\n 'required',\n {\n 'attr-id': attrId,\n 'forward-identity': forwardIdentity,\n },\n ]);\n }\n\n if (from['index?']) {\n steps.push([\n 'index',\n {\n 'attr-id': attrId,\n 'forward-identity': forwardIdentity,\n },\n ]);\n }\n\n return steps;\n },\n 'remove-data-type': convertSimpleConstraintUpdate,\n 'check-data-type': (from, existing) => {\n const found = getExistingAttrThrowing(from.identifier, existing);\n return {\n 'attr-id': found.id,\n 'checked-data-type': from['checked-data-type'],\n 'forward-identity': found['forward-identity'],\n };\n },\n};\n\nfunction isSystemCatalogAttr(\n systemCatalogIdentNames: Record<string, Set<string>>,\n entityName: string,\n attrName: string,\n): boolean {\n return !!systemCatalogIdentNames[entityName]?.has(attrName);\n}\n\nexport const convertTxSteps = (\n txs: MigrationTx[],\n existingAttrs: InstantDBAttr[],\n): PlanStep[] => {\n if (!existingAttrs) {\n throw new Error('Existing attributes are required');\n }\n const result: PlanStep[] = [];\n txs.forEach((tx) => {\n const converter = CONVERTERS[tx.type];\n if (!converter) {\n throw new Error(`Unknown transaction type: ${tx.type}`);\n }\n const converted = converter(tx as any, existingAttrs);\n if (Array.isArray(converted)) {\n result.push(...converted);\n } else {\n result.push([tx.type, converted] as PlanStep);\n }\n });\n return result;\n};\n\ntype ConvertPlanStepFn<T extends keyof MigrationTxTypes> = (\n from: MigrationTxTypes[T],\n existingAttrs: InstantDBAttr[],\n) => PlanStepMap[T] | PlanStep[];\n\ntype AllConvertPlanStepFns = {\n [K in keyof MigrationTxTypes]: ConvertPlanStepFn<K>;\n};\n\nexport type MigrationTx = {\n [K in keyof MigrationTxTypes]: {\n type: K;\n } & MigrationTxTypes[K];\n}[keyof MigrationTxTypes];\n\nexport type MigrationTxSpecific<T extends keyof MigrationTxTypes> = {\n type: T;\n} & MigrationTxTypes[T];\n\nexport type AnyLink = LinkDef<any, any, any, any, any, any, any>;\nexport type AnyBlob = DataAttrDef<any, any, any>;\n\nexport const diffSchemas = async (\n oldSchema: InstantSchemaDef<any, any, any>,\n newSchema: InstantSchemaDef<any, any, any>,\n resolveFn: RenameResolveFn<string>,\n systemCatalogIdentNames: Record<string, Set<string>>,\n): Promise<MigrationTx[]> => {\n const transactions: MigrationTx[] = [];\n\n const oldEntities = oldSchema.entities;\n const newEntities = newSchema.entities;\n\n const oldEntityNames = Object.keys(oldEntities);\n const newEntityNames = Object.keys(newEntities);\n\n const deletedEntityNames = oldEntityNames.filter(\n (name) => !newEntityNames.includes(name),\n );\n\n for (const entityName of deletedEntityNames) {\n Object.keys(oldEntities[entityName].attrs).forEach((attrName) => {\n if (isSystemCatalogAttr(systemCatalogIdentNames, entityName, attrName))\n return;\n transactions.push({\n type: 'delete-attr',\n identifier: {\n attrName,\n namespace: entityName,\n },\n });\n });\n if (isSystemCatalogAttr(systemCatalogIdentNames, entityName, 'id')) {\n continue;\n }\n transactions.push({\n type: 'delete-attr',\n identifier: {\n attrName: 'id',\n namespace: entityName,\n },\n });\n }\n\n const addedEntityNames = newEntityNames.filter(\n (name) => !oldEntityNames.includes(name),\n );\n\n for (const entityName of addedEntityNames) {\n if (!isSystemCatalogAttr(systemCatalogIdentNames, entityName, 'id')) {\n transactions.push({\n type: 'add-attr',\n 'forward-identity': {\n namespace: entityName,\n attrName: 'id',\n },\n identifier: {\n attrName: 'id',\n namespace: entityName,\n },\n 'index?': false,\n 'required?': true,\n cardinality: 'one',\n 'unique?': true,\n 'value-type': 'blob',\n });\n }\n\n for (const attrName of Object.keys(newEntities[entityName].attrs)) {\n if (isSystemCatalogAttr(systemCatalogIdentNames, entityName, attrName)) {\n continue;\n }\n const attrInSchema = newEntities[entityName].attrs[attrName];\n transactions.push(attrDefToNewAttrTx(attrInSchema, entityName, attrName));\n }\n }\n\n const innerEntityNames = oldEntityNames.filter((name) =>\n newEntityNames.includes(name),\n );\n\n for (const entityName of innerEntityNames) {\n // BLOB ATTRIBUTES\n const addedFields = Object.keys(newEntities[entityName].attrs).filter(\n (field) => {\n if (isSystemCatalogAttr(systemCatalogIdentNames, entityName, field))\n return false;\n\n const oldEntityHasIt = Object.keys(\n oldEntities[entityName].attrs,\n ).includes(field);\n return !oldEntityHasIt;\n },\n );\n const removedFields = Object.keys(oldEntities[entityName].attrs).filter(\n (field) => {\n if (isSystemCatalogAttr(systemCatalogIdentNames, entityName, field))\n return false;\n\n const newEntityHasIt = Object.keys(\n newEntities[entityName].attrs,\n ).includes(field);\n return !newEntityHasIt;\n },\n );\n\n const resolved = await resolveRenames(\n addedFields,\n removedFields,\n resolveFn,\n {\n type: 'attribute',\n entityName: entityName,\n },\n );\n\n const consistentFields = Object.keys(oldEntities[entityName].attrs).filter(\n (field) => Object.keys(newEntities[entityName].attrs).includes(field),\n );\n\n consistentFields.forEach((fieldName) => {\n if (isSystemCatalogAttr(systemCatalogIdentNames, entityName, fieldName)) {\n return;\n }\n transactions.push(\n ...compareBlobs(\n {\n attrName: fieldName,\n namespace: entityName,\n },\n oldEntities[entityName].attrs[fieldName],\n newEntities[entityName].attrs[fieldName],\n ),\n );\n });\n\n resolved.deleted.forEach((attrName) => {\n transactions.push({\n type: 'delete-attr',\n identifier: {\n attrName,\n namespace: entityName,\n },\n });\n });\n\n resolved.created.forEach((createdName) => {\n const attrInSchema = newSchema.entities[entityName].attrs[\n createdName\n ] as AnyBlob;\n transactions.push(\n attrDefToNewAttrTx(attrInSchema, entityName, createdName),\n );\n });\n\n resolved.renamed.forEach((renamed) => {\n transactions.push({\n type: 'update-attr',\n identifier: {\n attrName: renamed.from,\n namespace: entityName,\n },\n partialAttr: {\n 'value-type': 'blob',\n cardinality: 'one',\n 'forward-identity': {\n attrName: renamed.to,\n namespace: entityName,\n },\n },\n });\n\n transactions.push(\n ...compareBlobs(\n {\n attrName: renamed.from,\n namespace: entityName,\n },\n oldEntities[entityName].attrs[renamed.from],\n newEntities[entityName].attrs[renamed.to],\n ),\n );\n });\n }\n\n const oldLinks = (Object.values(oldSchema.links) as AnyLink[]).filter(\n (link) =>\n !isSystemCatalogAttr(\n systemCatalogIdentNames,\n link.forward.on,\n link.forward.label,\n ),\n );\n const newLinks = (Object.values(newSchema.links) as AnyLink[]).filter(\n (link) =>\n !isSystemCatalogAttr(\n systemCatalogIdentNames,\n link.forward.on,\n link.forward.label,\n ),\n );\n\n // Group links by their forward namespace-label combination for comparison\n const createLinkKey = (link: AnyLink) =>\n `${link.forward.on}<->${link.reverse.on}`;\n const createLinkIdentity = (link: AnyLink) =>\n `${link.forward.on}.${link.forward.label}<->${link.reverse.on}.${link.reverse.label}`;\n\n const newLinksByKey = new Map<string, AnyLink[]>();\n const oldLinksByKey = new Map<string, AnyLink[]>();\n\n for (const link of newLinks) {\n const key = createLinkKey(link);\n const links = newLinksByKey.get(key) || [];\n links.push(link);\n newLinksByKey.set(key, links);\n }\n\n for (const link of oldLinks) {\n const key = createLinkKey(link);\n const links = oldLinksByKey.get(key) || [];\n links.push(link);\n oldLinksByKey.set(key, links);\n }\n\n const allLinkKeys = new Set([\n ...oldLinksByKey.keys(),\n ...newLinksByKey.keys(),\n ]);\n\n for (const linkKey of allLinkKeys) {\n const oldLinksInGroup = oldLinksByKey.get(linkKey) || [];\n const newLinksInGroup = newLinksByKey.get(linkKey) || [];\n\n const oldIdentities = oldLinksInGroup.map((link) =>\n createLinkIdentity(link),\n );\n const newIdentities = newLinksInGroup.map((link) =>\n createLinkIdentity(link),\n );\n\n const addedIdentities = newIdentities.filter(\n (identity) => !oldIdentities.includes(identity),\n );\n\n const removedIdentities = oldIdentities.filter(\n (identity) => !newIdentities.includes(identity),\n );\n\n const consistentIdentities = oldIdentities.filter((identity) =>\n newIdentities.includes(identity),\n );\n\n consistentIdentities.forEach((identity) => {\n const oldLink = oldLinksInGroup.find(\n (l) => createLinkIdentity(l) === identity,\n );\n const newLink = newLinksInGroup.find(\n (l) => createLinkIdentity(l) === identity,\n );\n if (!oldLink || !newLink) return;\n transactions.push(\n ...compareLinks(\n {\n namespace: oldLink.forward.on,\n attrName: oldLink.forward.label,\n },\n oldLink,\n newLink,\n ),\n );\n });\n\n const resolved = await resolveRenames(\n addedIdentities,\n removedIdentities,\n resolveFn,\n {\n type: 'link',\n forwardEntityName: oldLinksInGroup[0]?.forward.on,\n reverseEntityName: oldLinksInGroup[0]?.reverse.on,\n },\n );\n\n resolved.deleted.forEach((identity) => {\n const link = oldLinksInGroup.find(\n (l) => createLinkIdentity(l) === identity,\n );\n if (!link) return;\n transactions.push({\n type: 'delete-attr',\n identifier: {\n attrName: link.forward.label,\n namespace: link.forward.on,\n },\n });\n });\n\n resolved.created.forEach((identity) => {\n const link = newLinksInGroup.find(\n (l) => createLinkIdentity(l) === identity,\n );\n if (!link) return;\n transactions.push(linkDefToNewAttrTx(link));\n });\n\n resolved.renamed.forEach((renamed) => {\n const oldLink = oldLinksInGroup.find(\n (l) => createLinkIdentity(l) === renamed.from,\n );\n const newLink = newLinksInGroup.find(\n (l) => createLinkIdentity(l) === renamed.to,\n );\n if (!oldLink || !newLink) return;\n\n transactions.push({\n type: 'update-attr',\n identifier: {\n attrName: oldLink.forward.label,\n namespace: oldLink.forward.on,\n },\n partialAttr: {\n 'value-type': 'ref',\n cardinality: newLink.forward.has === 'one' ? 'one' : 'many',\n 'forward-identity': {\n attrName: newLink.forward.label,\n namespace: newLink.forward.on,\n },\n 'reverse-identity': {\n attrName: newLink.reverse.label,\n namespace: newLink.reverse.on,\n },\n },\n });\n transactions.push(\n ...compareLinks(\n {\n attrName: oldLink.forward.label,\n namespace: oldLink.forward.on,\n },\n oldLink,\n newLink,\n ),\n );\n });\n }\n\n return transactions;\n};\n\nexport interface RenamePromptItem<T> {\n from: T;\n to: T;\n}\n\nexport const compareBlobs = (\n identity: Identifier,\n oldBlob: AnyBlob,\n newBlob: AnyBlob,\n): MigrationTx[] => {\n const results: MigrationTx[] = [];\n const sendType = <T extends JobMigrationTypes>(type: T) => {\n results.push({\n type,\n identifier: identity,\n });\n };\n\n // check if index needs to be added\n if (oldBlob.isIndexed === false && newBlob.isIndexed === true)\n sendType('index');\n\n // check if index needs to be removed\n if (oldBlob.isIndexed === true && newBlob.isIndexed === false)\n sendType('remove-index');\n\n // check if needs to become unique\n if (oldBlob.config.unique === false && newBlob.config.unique === true)\n sendType('unique');\n\n // check if needs to become non-unique\n if (oldBlob.config.unique === true && newBlob.config.unique === false)\n sendType('remove-unique');\n\n // check if needs to become required\n if (oldBlob.required === false && newBlob.required === true)\n sendType('required');\n\n // check if needs to become non-required\n if (oldBlob.required === true && newBlob.required === false)\n sendType('remove-required');\n\n // check if data type needs to be changed / added\n if (oldBlob.valueType !== 'json' && newBlob.valueType === 'json') {\n results.push({\n type: 'remove-data-type',\n identifier: identity,\n });\n } else if (\n oldBlob.valueType !== newBlob.valueType &&\n newBlob.valueType !== 'json'\n ) {\n results.push({\n type: 'check-data-type',\n identifier: identity,\n 'checked-data-type': newBlob.valueType,\n });\n }\n\n return results;\n};\n\nexport const compareLinks = (\n identity: Identifier,\n oldLink: AnyLink,\n newLink: AnyLink,\n): MigrationTx[] => {\n const results: MigrationTx[] = [];\n const oldRelationship =\n `${oldLink.forward.has}-${oldLink.reverse.has}` as RelationshipKinds;\n const { cardinality: oldCardinal, 'unique?': oldUnique } =\n relationshipConstraints[oldRelationship];\n const oldRequired = !!oldLink.forward.required;\n\n const newRelationship =\n `${newLink.forward.has}-${newLink.reverse.has}` as RelationshipKinds;\n const { cardinality: newCardinal, 'unique?': newUnique } =\n relationshipConstraints[newRelationship];\n const newRequired = !!newLink.forward.required;\n\n if (!oldUnique && newUnique) {\n results.push({\n type: 'unique',\n identifier: identity,\n });\n }\n if (!newUnique && newUnique !== oldUnique) {\n results.push({\n type: 'remove-unique',\n identifier: identity,\n });\n }\n\n if (newRequired !== oldRequired) {\n results.push({\n type: newRequired ? 'required' : 'remove-required',\n identifier: identity,\n });\n }\n\n if (\n oldLink.reverse.onDelete !== newLink.reverse.onDelete ||\n oldLink.forward.onDelete !== newLink.forward.onDelete ||\n oldCardinal !== newCardinal\n ) {\n results.push({\n type: 'update-attr',\n identifier: identity,\n partialAttr: {\n 'value-type': 'ref',\n 'on-delete-reverse': newLink.reverse.onDelete,\n 'on-delete': newLink.forward.onDelete,\n cardinality: newCardinal,\n },\n });\n }\n\n return results;\n};\n\nexport const isRenamePromptItem = <T>(\n item: RenamePromptItem<T> | T,\n): item is RenamePromptItem<T> => {\n if (typeof item === 'object') return true;\n return false;\n};\n\nexport type RenameResolveFn<T> = (\n created: T,\n promptData: (RenamePromptItem<T> | T)[],\n extraInfo?: any,\n) => Promise<T | RenamePromptItem<T>>;\n\nconst resolveRenames = async <T>(\n newItems: T[],\n missingItems: T[],\n resolveFn: RenameResolveFn<T>,\n extraInfo?: any,\n): Promise<{\n created: T[];\n deleted: T[];\n renamed: {\n from: T;\n to: T;\n }[];\n}> => {\n if (missingItems.length === 0 || newItems.length === 0) {\n return {\n created: newItems,\n deleted: missingItems,\n renamed: [],\n };\n }\n\n const result: {\n created: T[];\n renamed: { from: T; to: T }[];\n deleted: T[];\n } = { created: [], renamed: [], deleted: [] };\n let index = 0;\n let leftMissing = [...missingItems];\n\n do {\n const created = newItems[index];\n const renames: RenamePromptItem<T>[] = leftMissing.map((it) => {\n return { from: it, to: created };\n });\n const promptData: (RenamePromptItem<T> | T)[] = [created, ...renames];\n\n const data = await resolveFn(created, promptData, extraInfo);\n if (isRenamePromptItem(data)) {\n if (data.from !== data.to) {\n result.renamed.push(data);\n }\n delete leftMissing[leftMissing.indexOf(data.from)];\n leftMissing = leftMissing.filter(Boolean);\n } else {\n result.created.push(created);\n }\n index += 1;\n } while (index < newItems.length);\n\n result.deleted.push(...leftMissing);\n return result;\n};\n\n/**\n * a `rename command` lets us know your intent to rename a particular entity\n *\n * The format is `from:to`, where `from` and `to` are lookups.\n *\n * For example, to rename `posts.name` to `posts.title`, a command could\n * look like:\n *\n * `posts.name:posts.title`\n */\nexport type RenameCommand = `${string}.${string}:${string}.${string}`;\nfunction validateRenameLookup(lookup: string) {\n const [etype, label] = lookup.split('.').map((x) => x.trim());\n if (!etype || !label) {\n throw new Error(\n `Invalid lookup. Got '${lookup}'. We expect a pattern like 'entityname.columname;.` +\n 'For example: posts.title',\n );\n }\n}\n\n// RenameMap goes from `to` -> `from`\nfunction parseRenameCommands(renames: RenameCommand[]): Map<string, string> {\n // Parse rename options: format is \"from:to\"\n // note that it saves backwards since we will be testing against the base\n // case of a created attr\n const renameMap: Map<string, string> = new Map();\n for (const renameStr of renames) {\n let [from, to] = renameStr.split(':').map((x) => x.trim());\n if (!from || !to) {\n throw new Error(\n `Invalid rename command: ${renameStr}. We could not parse a distinct 'from' and 'to'.` +\n \" The structure should look like 'from:to'. For example: 'posts.name:posts.title'\",\n );\n }\n validateRenameLookup(from);\n validateRenameLookup(to);\n renameMap.set(to.trim(), from.trim());\n }\n return renameMap;\n}\n\n/**\n * Given a list of RenameCommands, builds a cusotm `resolveFn` for\n * `diffSchemas`, which automatically resolves rename conflicts with these commands.\n */\nexport function buildAutoRenameSelector(renames: RenameCommand[]) {\n const renameMap = parseRenameCommands(renames);\n\n const renameFn: RenameResolveFn<string> = async function (\n created: string,\n promptData: (RenamePromptItem<string> | string)[],\n extraInfo: any,\n ): Promise<string | RenamePromptItem<string>> {\n let lookupNames: string[] = [];\n if (extraInfo?.type === 'attribute' && extraInfo?.entityName) {\n lookupNames = [`${extraInfo.entityName}.${created}`];\n } else if (extraInfo?.type === 'link') {\n // Extract both forward and reverse parts\n const parts = created.split('<->');\n lookupNames = [parts[0], parts[1]];\n } else {\n return created;\n }\n\n // Try to find a match in the rename map using the lookup names\n let fromAttr: string | null = null;\n for (const lookupName of lookupNames) {\n if (renameMap.has(lookupName)) {\n fromAttr = renameMap.get(lookupName) || null;\n break;\n }\n }\n\n if (fromAttr) {\n let fromValue;\n if (extraInfo?.type === 'attribute') {\n fromValue = fromAttr.split('.').pop();\n } else {\n const matchingItem = promptData.find((item) => {\n const itemStr = typeof item === 'string' ? item : item.from;\n const itemParts = itemStr.split('<->');\n return itemParts[0] === fromAttr || itemParts[1] === fromAttr;\n });\n\n if (matchingItem) {\n fromValue =\n typeof matchingItem === 'string' ? matchingItem : matchingItem.from;\n } else {\n return created;\n }\n }\n\n const hasMatch = promptData.some((item) => {\n if (typeof item === 'string') {\n return item === fromValue;\n } else if (item.from) {\n return item.from === fromValue;\n }\n return false;\n });\n\n if (fromValue && hasMatch) {\n return { from: fromValue, to: created };\n }\n }\n\n return created;\n };\n\n return renameFn;\n}\n"]}
@@ -839,7 +839,7 @@ class Ve extends qt {
839
839
  }
840
840
  }
841
841
  typeof window < "u" && typeof window.localStorage < "u" && (window.localStorage.getItem("devBackend"), window.localStorage.getItem("__instantLogging"), window.localStorage.getItem("__devtoolLocalDash"));
842
- const Ue = "v0.22.157";
842
+ const Ue = "v0.22.158";
843
843
  class Q {
844
844
  constructor(t, s, e, i = { indexed: !1, unique: !1 }) {
845
845
  m(this, "valueType");
@@ -11577,21 +11577,24 @@ const xn = (r, t) => {
11577
11577
  "checked-data-type": s.valueType
11578
11578
  }), e;
11579
11579
  }, Ls = (r, t, s) => {
11580
- const e = [], i = `${t.forward.has}-${t.reverse.has}`, { cardinality: a, "unique?": n } = lt[i], o = `${s.forward.has}-${s.reverse.has}`, { cardinality: c, "unique?": h } = lt[o];
11581
- return !n && h && e.push({
11580
+ const e = [], i = `${t.forward.has}-${t.reverse.has}`, { cardinality: a, "unique?": n } = lt[i], o = !!t.forward.required, c = `${s.forward.has}-${s.reverse.has}`, { cardinality: h, "unique?": l } = lt[c], u = !!s.forward.required;
11581
+ return !n && l && e.push({
11582
11582
  type: "unique",
11583
11583
  identifier: r
11584
- }), !h && h !== n && e.push({
11584
+ }), !l && l !== n && e.push({
11585
11585
  type: "remove-unique",
11586
11586
  identifier: r
11587
- }), (t.reverse.onDelete !== s.reverse.onDelete || t.forward.onDelete !== s.forward.onDelete || a !== c) && e.push({
11587
+ }), u !== o && e.push({
11588
+ type: u ? "required" : "remove-required",
11589
+ identifier: r
11590
+ }), (t.reverse.onDelete !== s.reverse.onDelete || t.forward.onDelete !== s.forward.onDelete || a !== h) && e.push({
11588
11591
  type: "update-attr",
11589
11592
  identifier: r,
11590
11593
  partialAttr: {
11591
11594
  "value-type": "ref",
11592
11595
  "on-delete-reverse": s.reverse.onDelete,
11593
11596
  "on-delete": s.forward.onDelete,
11594
- cardinality: c
11597
+ cardinality: h
11595
11598
  }
11596
11599
  }), e;
11597
11600
  }, gn = (r) => typeof r == "object", Ms = async (r, t, s, e) => {