carrick 0.3.131 → 0.3.132

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.
@@ -19,7 +19,9 @@
19
19
  // hosted read this machine has not yet made signed in and connected. On a
20
20
  // workspace `carrick index` has just indexed, nothing is re-read.
21
21
  // carrick#985 is the other half of that saving, inside `refresh`: a repo whose
22
- // local blob is already current should be fetched for rather than scanned.
22
+ // tree has not moved under any file a scan reads since the hosted commit is
23
+ // read in from the hosted index rather than re-read (`current_hosted_blobs`
24
+ // in `src/local_mode/index.rs`), so a fresh clone of main costs the download.
23
25
  //
24
26
  // What it reports is read back from `carrick status`, not assumed from an
25
27
  // exit code: a refresh that scanned fine can still have been refused the
@@ -1 +1 @@
1
- {"version":3,"file":"hosted.js","sourceRoot":"","sources":["../../src/init/hosted.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,6EAA6E;AAC7E,kEAAkE;AAClE,kBAAkB;AAClB,EAAE;AACF,yEAAyE;AACzE,yEAAyE;AACzE,8EAA8E;AAC9E,sEAAsE;AACtE,EAAE;AACF,2EAA2E;AAC3E,4EAA4E;AAC5E,6EAA6E;AAC7E,8EAA8E;AAC9E,6EAA6E;AAC7E,0EAA0E;AAC1E,kEAAkE;AAClE,+EAA+E;AAC/E,2EAA2E;AAC3E,EAAE;AACF,0EAA0E;AAC1E,yEAAyE;AACzE,yEAAyE;AACzE,kBAAkB;AAElB,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA2DlD;;;;;;;;;;;GAWG;AACH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,cAAc;CACf,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe,CAAC,MAA2B,EAAE,KAAe;IAC1E,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;IACrF,0EAA0E;IAC1E,0EAA0E;IAC1E,iBAAiB;IACjB,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAClF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;IAClE,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QACvG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7F,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,qCAAqC,EAAE,CAAC;IACrF,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,SAAS,CAAC,MAAM,uCAAuC,EAAE,CAAC;IAC1G,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAClC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAClG,CAAC;IACF,IAAI,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;IAC9E,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,aAAa,CAAC,IAAiB;IACtC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5E,IAAI,CAAC;QACH,sEAAsE;QACtE,6DAA6D;QAC7D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAQ,KAA+B,CAAC,IAAI,KAAK,OAAO,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,2FAA2F;AAC3F,SAAS,QAAQ,CAAC,KAA0B;IAC1C,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IAC7D,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,WAAW,CAClB,IAAc,EACd,KAAc,EACd,QAA6B;IAE7B,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,MAAM,CAAC,OAAO,IAAI,uCAAuC;SAClE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAgB,EAAE,IAAI,EAAE;YACjD,qEAAqE;YACrE,uDAAuD;YACvD,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE;YACvE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACrE,sEAAsE;QACtE,sEAAsE;QACtE,0EAA0E;QAC1E,sEAAsE;QACtE,MAAM,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3E,OAAO,EAAE,KAAK,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,CAAC,KAAgE,EAAQ,EAAE;YACxF,IAAI,OAAO,KAAK,IAAI;gBAAE,aAAa,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC;QACF,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,sEAAsE;YACtE,sDAAsD;YACtD,MAAM,GAAG,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzC,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBACzB,KAAK,MAAM,IAAI,IAAI,KAAK;oBAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,CAAC;YACD,wEAAwE;YACxE,sEAAsE;YACtE,wEAAwE;YACxE,oEAAoE;YACpE,0EAA0E;YAC1E,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACvF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+DAA+D;AAC/D,SAAS,cAAc,CAAC,KAAa;IACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,KAAK;SACT,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;SAC5C,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAiB,EAAE,MAAoB,IAAI,CAAC,GAAG;IAC9E,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;IACxB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,4EAA4E;IAC5E,6EAA6E;IAC7E,wEAAwE;IACxE,yBAAyB;IACzB,MAAM,IAAI,GAAG,GAAS,EAAE;QACtB,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;QACjB,IAAI,MAAM,KAAK,IAAI,IAAI,EAAE,GAAG,MAAM,GAAG,OAAO;YAAE,OAAO;QACrD,MAAM,GAAG,EAAE,CAAC;QACZ,yEAAyE;QACzE,yEAAyE;QACzE,uDAAuD;QACvD,MAAM,KAAK,GAAG,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACrD,GAAG,CAAC,CAAC,UAAU,EAAE,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpG,CAAC,CAAC;IACF,OAAO;QACL,IAAI,EAAE,CAAC,IAAY,EAAQ,EAAE;YAC3B,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO;YAC5B,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC7B,QAAQ,GAAG,GAAG,MAAM,CAAC,aAAa,OAAO,MAAM,CAAC,aAAa,WAAW,CAAC;gBACzE,IAAI,EAAE,CAAC;gBACP,OAAO;YACT,CAAC;YACD,oEAAoE;YACpE,+DAA+D;YAC/D,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACrE,KAAK,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtD,IAAI,EAAE,CAAC;YACT,CAAC;QACH,CAAC;QACD,IAAI,EAAE,IAAI;KACX,CAAC;AACJ,CAAC;AAoBD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,oCAAoC,CAAC;AAE/D,gFAAgF;AAChF,MAAM,CAAC,MAAM,SAAS,GAAG,sBAAsB,CAAC;AAEhD,yEAAyE;AACzE,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;AAE5C,0EAA0E;AAC1E,SAAS,SAAS,CAAC,IAAY,EAAE,QAAgB;IAC/C,MAAM,IAAI,GAAG,IAAI;SACd,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,WAAgC,IAAI;IAC/E,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACpF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,SAAiB,EACjB,MAAiB,YAAY,CAAC,KAAK,CAAC,EACpC,QAAkB,EAAE,EACpB,MAA2B,IAAI;IAE/B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC3D,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACnE,GAAG,EAAE,CAAC,GAAG,UAAU,KAAK,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;IACzE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,4BAA4B,CAAC,EAAE,CAAC;IAChG,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5E,CAAC;AAED,+EAA+E;AAC/E,KAAK,UAAU,UAAU,CAAC,SAAiB,EAAE,GAAc;IACzD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IACzE,yEAAyE;IACzE,4EAA4E;IAC5E,WAAW;IACX,OAAO,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,QAAQ,CAAC,MAA2B,EAAE,OAAsB,EAAE,MAAe;IACpF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,SAAS,CAChB,MAAM,EAAE,OAAO,IAAI,OAAO,IAAI,EAAE,EAChC,yDAAyD,CAC1D;SACF,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxC,2EAA2E;IAC3E,8EAA8E;IAC9E,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,kBAAkB,CAAC,EAAE,CAAC;QACnF,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACxD,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,UAAU,CAAC,CAAC;IAC1F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,YAAY,IAAI,SAAS,CAAC;QACjG,IAAI,KAAK,KAAK,gBAAgB;YAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACvF,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1F,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AACnE,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,MAAoB;IAC1C,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,YAAY,KAAK,gBAAgB,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,SAAS;QAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;YAAE,SAAS;QAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9F,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,UAAU,CAAC,KAAa,EAAE,OAAwB;IACzD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,aAAa;YAChB,OAAO;gBACL,OAAO,EAAE,0DAA0D;gBACnE,MAAM,EAAE,iCAAiC;aAC1C,CAAC;QACJ,KAAK,gBAAgB;YACnB,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9B,KAAK,cAAc;YACjB,OAAO,EAAE,OAAO,EAAE,qCAAqC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC1E,KAAK,eAAe;YAClB,OAAO,EAAE,OAAO,EAAE,oDAAoD,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACzF,oEAAoE;QACpE,0EAA0E;QAC1E,yDAAyD;QACzD,KAAK,gBAAgB;YACnB,OAAO;gBACL,OAAO,EAAE,gFAAgF;gBACzF,MAAM,EAAE,IAAI;aACb,CAAC;QACJ,KAAK,eAAe;YAClB,OAAO,EAAE,OAAO,EAAE,iEAAiE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACtG;YACE,OAAO,EAAE,OAAO,EAAE,mCAAmC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1E,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,WAAW,CAAC,OAAwB;IAC3C,MAAM,GAAG,GAAG,CAAC,MAAc,EAAU,EAAE,CACrC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC;IACxF,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACvB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,+DAA+D;QAC/D,OAAO;YACL,OAAO,EAAE,0EAA0E;YACnF,MAAM,EAAE,yCAAyC;SAClD,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAC/G,OAAO;YACL,OAAO,EAAE,sCAAsC,EAAE,cAAc,IAAI,CAAC,MAAM,kCAAkC;YAC5G,MAAM,EAAE,GAAG,GAAG,CAAC,gBAAgB,CAAC,qBAAqB,IAAI,CAAC,IAAI,4BAA4B;SAC3F,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrF,OAAO;QACL,OAAO,EAAE,4EAA4E,MAAM,GAAG;QAC9F,MAAM,EAAE,GAAG,GAAG,CAAC,mBAAmB,CAAC,kDAAkD;KACtF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAuB,EACvB,UAAyB,IAAI,EAC7B,OAA2B,QAAQ;IAEnC,MAAM,MAAM,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,GAAG,KAAK,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACtF,yEAAyE;IACzE,0EAA0E;IAC1E,0DAA0D;IAC1D,MAAM,IAAI,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/D,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,YAAY;YACf,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO,CAAC,MAAM;oBAClB,CAAC,CAAC,oBAAoB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,IAAI,EAAE;oBAC3E,CAAC,CAAC,gDAAgD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;aACpG,CAAC;QACJ,KAAK,kBAAkB;YACrB,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,IAAI,EACF,IAAI,KAAK,OAAO;oBACd,CAAC,CAAC,iKAAiK;oBACnK,CAAC,CAAC,kFAAkF;aACzF,CAAC;QACJ,wEAAwE;QACxE,qEAAqE;QACrE,+CAA+C;QAC/C,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAC7E,MAAM,KAAK,GAAG,6CAA6C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GACjF,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBACxB,EAAE,CAAC;YACH,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,aAAa,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,MAAM,gBAAgB,KAAK,GAAG;aACxG,CAAC;QACJ,CAAC;QACD,KAAK,UAAU;YACb,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,4GAA4G;aACnH,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,kDAAkD,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;IACzG,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"hosted.js","sourceRoot":"","sources":["../../src/init/hosted.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,6EAA6E;AAC7E,kEAAkE;AAClE,kBAAkB;AAClB,EAAE;AACF,yEAAyE;AACzE,yEAAyE;AACzE,8EAA8E;AAC9E,sEAAsE;AACtE,EAAE;AACF,2EAA2E;AAC3E,4EAA4E;AAC5E,6EAA6E;AAC7E,8EAA8E;AAC9E,6EAA6E;AAC7E,0EAA0E;AAC1E,kEAAkE;AAClE,+EAA+E;AAC/E,4EAA4E;AAC5E,4EAA4E;AAC5E,8EAA8E;AAC9E,EAAE;AACF,0EAA0E;AAC1E,yEAAyE;AACzE,yEAAyE;AACzE,kBAAkB;AAElB,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA2DlD;;;;;;;;;;;GAWG;AACH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,cAAc;CACf,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe,CAAC,MAA2B,EAAE,KAAe;IAC1E,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;IACrF,0EAA0E;IAC1E,0EAA0E;IAC1E,iBAAiB;IACjB,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAClF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;IAClE,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QACvG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7F,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,qCAAqC,EAAE,CAAC;IACrF,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,SAAS,CAAC,MAAM,uCAAuC,EAAE,CAAC;IAC1G,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAClC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAClG,CAAC;IACF,IAAI,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;IAC9E,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,aAAa,CAAC,IAAiB;IACtC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5E,IAAI,CAAC;QACH,sEAAsE;QACtE,6DAA6D;QAC7D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAQ,KAA+B,CAAC,IAAI,KAAK,OAAO,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,2FAA2F;AAC3F,SAAS,QAAQ,CAAC,KAA0B;IAC1C,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IAC7D,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,WAAW,CAClB,IAAc,EACd,KAAc,EACd,QAA6B;IAE7B,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,MAAM,CAAC,OAAO,IAAI,uCAAuC;SAClE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAgB,EAAE,IAAI,EAAE;YACjD,qEAAqE;YACrE,uDAAuD;YACvD,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE;YACvE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACrE,sEAAsE;QACtE,sEAAsE;QACtE,0EAA0E;QAC1E,sEAAsE;QACtE,MAAM,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3E,OAAO,EAAE,KAAK,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,CAAC,KAAgE,EAAQ,EAAE;YACxF,IAAI,OAAO,KAAK,IAAI;gBAAE,aAAa,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC;QACF,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,sEAAsE;YACtE,sDAAsD;YACtD,MAAM,GAAG,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzC,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBACzB,KAAK,MAAM,IAAI,IAAI,KAAK;oBAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,CAAC;YACD,wEAAwE;YACxE,sEAAsE;YACtE,wEAAwE;YACxE,oEAAoE;YACpE,0EAA0E;YAC1E,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACvF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+DAA+D;AAC/D,SAAS,cAAc,CAAC,KAAa;IACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,KAAK;SACT,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;SAC5C,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAiB,EAAE,MAAoB,IAAI,CAAC,GAAG;IAC9E,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;IACxB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,4EAA4E;IAC5E,6EAA6E;IAC7E,wEAAwE;IACxE,yBAAyB;IACzB,MAAM,IAAI,GAAG,GAAS,EAAE;QACtB,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;QACjB,IAAI,MAAM,KAAK,IAAI,IAAI,EAAE,GAAG,MAAM,GAAG,OAAO;YAAE,OAAO;QACrD,MAAM,GAAG,EAAE,CAAC;QACZ,yEAAyE;QACzE,yEAAyE;QACzE,uDAAuD;QACvD,MAAM,KAAK,GAAG,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACrD,GAAG,CAAC,CAAC,UAAU,EAAE,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpG,CAAC,CAAC;IACF,OAAO;QACL,IAAI,EAAE,CAAC,IAAY,EAAQ,EAAE;YAC3B,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO;YAC5B,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC7B,QAAQ,GAAG,GAAG,MAAM,CAAC,aAAa,OAAO,MAAM,CAAC,aAAa,WAAW,CAAC;gBACzE,IAAI,EAAE,CAAC;gBACP,OAAO;YACT,CAAC;YACD,oEAAoE;YACpE,+DAA+D;YAC/D,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACrE,KAAK,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtD,IAAI,EAAE,CAAC;YACT,CAAC;QACH,CAAC;QACD,IAAI,EAAE,IAAI;KACX,CAAC;AACJ,CAAC;AAoBD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,oCAAoC,CAAC;AAE/D,gFAAgF;AAChF,MAAM,CAAC,MAAM,SAAS,GAAG,sBAAsB,CAAC;AAEhD,yEAAyE;AACzE,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;AAE5C,0EAA0E;AAC1E,SAAS,SAAS,CAAC,IAAY,EAAE,QAAgB;IAC/C,MAAM,IAAI,GAAG,IAAI;SACd,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,WAAgC,IAAI;IAC/E,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACpF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,SAAiB,EACjB,MAAiB,YAAY,CAAC,KAAK,CAAC,EACpC,QAAkB,EAAE,EACpB,MAA2B,IAAI;IAE/B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC3D,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACnE,GAAG,EAAE,CAAC,GAAG,UAAU,KAAK,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;IACzE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,4BAA4B,CAAC,EAAE,CAAC;IAChG,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5E,CAAC;AAED,+EAA+E;AAC/E,KAAK,UAAU,UAAU,CAAC,SAAiB,EAAE,GAAc;IACzD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IACzE,yEAAyE;IACzE,4EAA4E;IAC5E,WAAW;IACX,OAAO,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,QAAQ,CAAC,MAA2B,EAAE,OAAsB,EAAE,MAAe;IACpF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,SAAS,CAChB,MAAM,EAAE,OAAO,IAAI,OAAO,IAAI,EAAE,EAChC,yDAAyD,CAC1D;SACF,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxC,2EAA2E;IAC3E,8EAA8E;IAC9E,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,kBAAkB,CAAC,EAAE,CAAC;QACnF,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACxD,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,UAAU,CAAC,CAAC;IAC1F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,YAAY,IAAI,SAAS,CAAC;QACjG,IAAI,KAAK,KAAK,gBAAgB;YAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACvF,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1F,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AACnE,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,MAAoB;IAC1C,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,YAAY,KAAK,gBAAgB,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,SAAS;QAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;YAAE,SAAS;QAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9F,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,UAAU,CAAC,KAAa,EAAE,OAAwB;IACzD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,aAAa;YAChB,OAAO;gBACL,OAAO,EAAE,0DAA0D;gBACnE,MAAM,EAAE,iCAAiC;aAC1C,CAAC;QACJ,KAAK,gBAAgB;YACnB,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9B,KAAK,cAAc;YACjB,OAAO,EAAE,OAAO,EAAE,qCAAqC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC1E,KAAK,eAAe;YAClB,OAAO,EAAE,OAAO,EAAE,oDAAoD,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACzF,oEAAoE;QACpE,0EAA0E;QAC1E,yDAAyD;QACzD,KAAK,gBAAgB;YACnB,OAAO;gBACL,OAAO,EAAE,gFAAgF;gBACzF,MAAM,EAAE,IAAI;aACb,CAAC;QACJ,KAAK,eAAe;YAClB,OAAO,EAAE,OAAO,EAAE,iEAAiE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACtG;YACE,OAAO,EAAE,OAAO,EAAE,mCAAmC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1E,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,WAAW,CAAC,OAAwB;IAC3C,MAAM,GAAG,GAAG,CAAC,MAAc,EAAU,EAAE,CACrC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC;IACxF,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACvB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,+DAA+D;QAC/D,OAAO;YACL,OAAO,EAAE,0EAA0E;YACnF,MAAM,EAAE,yCAAyC;SAClD,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAC/G,OAAO;YACL,OAAO,EAAE,sCAAsC,EAAE,cAAc,IAAI,CAAC,MAAM,kCAAkC;YAC5G,MAAM,EAAE,GAAG,GAAG,CAAC,gBAAgB,CAAC,qBAAqB,IAAI,CAAC,IAAI,4BAA4B;SAC3F,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrF,OAAO;QACL,OAAO,EAAE,4EAA4E,MAAM,GAAG;QAC9F,MAAM,EAAE,GAAG,GAAG,CAAC,mBAAmB,CAAC,kDAAkD;KACtF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAuB,EACvB,UAAyB,IAAI,EAC7B,OAA2B,QAAQ;IAEnC,MAAM,MAAM,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,GAAG,KAAK,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACtF,yEAAyE;IACzE,0EAA0E;IAC1E,0DAA0D;IAC1D,MAAM,IAAI,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/D,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,YAAY;YACf,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO,CAAC,MAAM;oBAClB,CAAC,CAAC,oBAAoB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,IAAI,EAAE;oBAC3E,CAAC,CAAC,gDAAgD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;aACpG,CAAC;QACJ,KAAK,kBAAkB;YACrB,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,IAAI,EACF,IAAI,KAAK,OAAO;oBACd,CAAC,CAAC,iKAAiK;oBACnK,CAAC,CAAC,kFAAkF;aACzF,CAAC;QACJ,wEAAwE;QACxE,qEAAqE;QACrE,+CAA+C;QAC/C,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAC7E,MAAM,KAAK,GAAG,6CAA6C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GACjF,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBACxB,EAAE,CAAC;YACH,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,aAAa,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,MAAM,gBAAgB,KAAK,GAAG;aACxG,CAAC;QACJ,CAAC;QACD,KAAK,UAAU;YACb,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,4GAA4G;aACnH,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,kDAAkD,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;IACzG,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "carrick",
3
- "version": "0.3.131",
3
+ "version": "0.3.132",
4
4
  "carrickCache": {
5
5
  "cache_version": 22,
6
6
  "intent_cache_version": 2
@@ -113,11 +113,11 @@
113
113
  "zod": "^3.23.0"
114
114
  },
115
115
  "optionalDependencies": {
116
- "@carrick-tools/cli-darwin-arm64": "0.3.131",
117
- "@carrick-tools/cli-darwin-x64": "0.3.131",
118
- "@carrick-tools/cli-linux-arm64": "0.3.131",
119
- "@carrick-tools/cli-linux-x64": "0.3.131",
120
- "@carrick-tools/cli-win32-x64": "0.3.131"
116
+ "@carrick-tools/cli-darwin-arm64": "0.3.132",
117
+ "@carrick-tools/cli-darwin-x64": "0.3.132",
118
+ "@carrick-tools/cli-linux-arm64": "0.3.132",
119
+ "@carrick-tools/cli-linux-x64": "0.3.132",
120
+ "@carrick-tools/cli-win32-x64": "0.3.132"
121
121
  },
122
122
  "devDependencies": {
123
123
  "@types/node": "^24.13.3"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "carrick",
3
3
  "description": "Claude Code plugin for Carrick, which indexes TypeScript codebases across service and repository boundaries. After each edit it adds the file's routes, calls, and cross-service type mismatches to the session, and it registers Carrick's language server. It pairs with the Carrick MCP server, which lets agents search functions by intent rather than name.",
4
- "version": "0.3.131",
4
+ "version": "0.3.132",
5
5
  "author": {
6
6
  "name": "Carrick",
7
7
  "email": "hello@carrick.tools"
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Whether a handler still works when no request body arrives (carrick#2814).
3
+ *
4
+ * A server library hands a handler `undefined` where a request carried no
5
+ * body, whatever the handler's type says. A handler typed `{ limit?: number }`
6
+ * that destructures the body, or reads `body.limit` without `?.`, throws on
7
+ * that call, so a route that dereferences its body requires one even when its
8
+ * type has no required member. These readers answer the question from the
9
+ * handler's own source, by shape and with no library name consulted:
10
+ *
11
+ * - every read of the body tolerates `undefined`: `body ?? {}`, `body || {}`,
12
+ * `body?.x`, a comparison, `typeof body`, `!body`, a condition, an object
13
+ * spread, or a binding default (`{ body = {} }`, `(payload = {}) =>`);
14
+ * - a name the body is bound to is followed to each of its own reads;
15
+ * - anything else (a destructure with no default, a plain member read, the
16
+ * body handed to a function) dereferences it, or may, so the answer is no.
17
+ *
18
+ * Conservative by construction: a read these rules do not recognise answers
19
+ * no, and the check keeps the reading it had without the mark.
20
+ */
21
+ import { type BindingElement, type ParameterDeclaration } from 'ts-morph';
22
+ import type { HandlerFunction } from './stated-params.js';
23
+ /**
24
+ * A binding that receives the body, or a payload, tolerates `undefined`: it
25
+ * has a default, or it binds a name whose every read tolerates it. A pattern
26
+ * with no default destructures `undefined` and throws.
27
+ */
28
+ export declare function bindingToleratesAbsence(binding: ParameterDeclaration | BindingElement): boolean;
29
+ /**
30
+ * True when the handler reads its request body, and every read tolerates the
31
+ * body being absent. False when it reads none: a body read some other way
32
+ * (handed on with the request, read by a method) cannot be seen here.
33
+ *
34
+ * A body read is the `body` member of a value rooted at one of the handler's
35
+ * parameters (`request.body`, `ctx.request.body`), or a binding that takes
36
+ * `body` out of a parameter or out of such a value (`({ body }) =>`,
37
+ * `const { body } = request`). A parameter the body is read through must not
38
+ * be handed on whole (`service.create(request)`): what the callee reads off
39
+ * it is not seen.
40
+ */
41
+ export declare function handlerToleratesAbsentBody(handler: HandlerFunction): boolean;
@@ -0,0 +1,224 @@
1
+ /**
2
+ * Whether a handler still works when no request body arrives (carrick#2814).
3
+ *
4
+ * A server library hands a handler `undefined` where a request carried no
5
+ * body, whatever the handler's type says. A handler typed `{ limit?: number }`
6
+ * that destructures the body, or reads `body.limit` without `?.`, throws on
7
+ * that call, so a route that dereferences its body requires one even when its
8
+ * type has no required member. These readers answer the question from the
9
+ * handler's own source, by shape and with no library name consulted:
10
+ *
11
+ * - every read of the body tolerates `undefined`: `body ?? {}`, `body || {}`,
12
+ * `body?.x`, a comparison, `typeof body`, `!body`, a condition, an object
13
+ * spread, or a binding default (`{ body = {} }`, `(payload = {}) =>`);
14
+ * - a name the body is bound to is followed to each of its own reads;
15
+ * - anything else (a destructure with no default, a plain member read, the
16
+ * body handed to a function) dereferences it, or may, so the answer is no.
17
+ *
18
+ * Conservative by construction: a read these rules do not recognise answers
19
+ * no, and the check keeps the reading it had without the mark.
20
+ */
21
+ import { Node, SyntaxKind } from 'ts-morph';
22
+ /** How many names a body may be rebound through before the reads are not followed. */
23
+ const ALIAS_DEPTH = 3;
24
+ /** The member a request object carries its parsed body on. */
25
+ const BODY_MEMBER = 'body';
26
+ /** Wrappers that change nothing about the value at runtime. */
27
+ function isTransparentWrapper(node, child) {
28
+ return ((Node.isParenthesizedExpression(node) ||
29
+ Node.isNonNullExpression(node) ||
30
+ Node.isAsExpression(node) ||
31
+ Node.isSatisfiesExpression(node) ||
32
+ Node.isTypeAssertion(node)) &&
33
+ node.getExpression() === child);
34
+ }
35
+ /** The function the declaration of `name` sits in, whose reads of it are counted. */
36
+ function scopeOf(name) {
37
+ return (name.getFirstAncestor((ancestor) => Node.isFunctionDeclaration(ancestor) ||
38
+ Node.isArrowFunction(ancestor) ||
39
+ Node.isFunctionExpression(ancestor) ||
40
+ Node.isMethodDeclaration(ancestor)) ?? name.getSourceFile());
41
+ }
42
+ /**
43
+ * Every read of the name `name` declares tolerates `undefined`. A name that is
44
+ * never read tolerates it. A shorthand property (`{ body }`) hands the value
45
+ * on, so it counts as a read that may dereference it.
46
+ */
47
+ function nameToleratesAbsence(name, depth) {
48
+ if (depth > ALIAS_DEPTH)
49
+ return false;
50
+ const symbol = name.getSymbol();
51
+ const scope = scopeOf(name);
52
+ if (!symbol || !scope)
53
+ return false;
54
+ for (const shorthand of scope.getDescendantsOfKind(SyntaxKind.ShorthandPropertyAssignment)) {
55
+ if (shorthand.getName() === name.getText())
56
+ return false;
57
+ }
58
+ for (const reference of scope.getDescendantsOfKind(SyntaxKind.Identifier)) {
59
+ if (reference === name || reference.getSymbol() !== symbol)
60
+ continue;
61
+ if (!valueToleratesAbsence(reference, depth))
62
+ return false;
63
+ }
64
+ return true;
65
+ }
66
+ /** The read `value` (an expression that evaluates to the body) tolerates `undefined`. */
67
+ function valueToleratesAbsence(value, depth) {
68
+ let node = value;
69
+ let parent = node.getParent();
70
+ while (parent && isTransparentWrapper(parent, node)) {
71
+ node = parent;
72
+ parent = node.getParent();
73
+ }
74
+ if (!parent)
75
+ return false;
76
+ if (Node.isBinaryExpression(parent)) {
77
+ const operator = parent.getOperatorToken().getKind();
78
+ if (parent.getLeft() === node &&
79
+ (operator === SyntaxKind.QuestionQuestionToken ||
80
+ operator === SyntaxKind.BarBarToken ||
81
+ operator === SyntaxKind.AmpersandAmpersandToken)) {
82
+ return true;
83
+ }
84
+ return (operator === SyntaxKind.EqualsEqualsEqualsToken ||
85
+ operator === SyntaxKind.ExclamationEqualsEqualsToken ||
86
+ operator === SyntaxKind.EqualsEqualsToken ||
87
+ operator === SyntaxKind.ExclamationEqualsToken);
88
+ }
89
+ if ((Node.isPropertyAccessExpression(parent) || Node.isElementAccessExpression(parent)) &&
90
+ parent.getExpression() === node) {
91
+ return parent.hasQuestionDotToken();
92
+ }
93
+ if (Node.isTypeOfExpression(parent))
94
+ return true;
95
+ if (Node.isPrefixUnaryExpression(parent)) {
96
+ return parent.getOperatorToken() === SyntaxKind.ExclamationToken;
97
+ }
98
+ if (Node.isIfStatement(parent))
99
+ return parent.getExpression() === node;
100
+ if (Node.isConditionalExpression(parent))
101
+ return parent.getCondition() === node;
102
+ if (Node.isSpreadAssignment(parent))
103
+ return true;
104
+ if (Node.isVariableDeclaration(parent) && parent.getInitializer() === node) {
105
+ const name = parent.getNameNode();
106
+ return Node.isIdentifier(name) && nameToleratesAbsence(name, depth + 1);
107
+ }
108
+ return false;
109
+ }
110
+ /**
111
+ * A binding that receives the body, or a payload, tolerates `undefined`: it
112
+ * has a default, or it binds a name whose every read tolerates it. A pattern
113
+ * with no default destructures `undefined` and throws.
114
+ */
115
+ export function bindingToleratesAbsence(binding) {
116
+ if (binding.hasInitializer())
117
+ return true;
118
+ const name = binding.getNameNode();
119
+ return Node.isIdentifier(name) && nameToleratesAbsence(name, 0);
120
+ }
121
+ /** The name a binding element takes out of its object: `body` in `{ body }` and `{ body: b }`. */
122
+ function memberNameOf(element) {
123
+ return element.getPropertyNameNode()?.getText() ?? element.getName();
124
+ }
125
+ /** The root identifier of a member chain (`ctx` in `ctx.request.body`), through transparent wrappers. */
126
+ function rootOf(expression) {
127
+ let root = expression;
128
+ while (Node.isPropertyAccessExpression(root) ||
129
+ Node.isElementAccessExpression(root) ||
130
+ Node.isNonNullExpression(root) ||
131
+ Node.isParenthesizedExpression(root)) {
132
+ root = root.getExpression();
133
+ }
134
+ return root;
135
+ }
136
+ /**
137
+ * True when the handler reads its request body, and every read tolerates the
138
+ * body being absent. False when it reads none: a body read some other way
139
+ * (handed on with the request, read by a method) cannot be seen here.
140
+ *
141
+ * A body read is the `body` member of a value rooted at one of the handler's
142
+ * parameters (`request.body`, `ctx.request.body`), or a binding that takes
143
+ * `body` out of a parameter or out of such a value (`({ body }) =>`,
144
+ * `const { body } = request`). A parameter the body is read through must not
145
+ * be handed on whole (`service.create(request)`): what the callee reads off
146
+ * it is not seen.
147
+ */
148
+ export function handlerToleratesAbsentBody(handler) {
149
+ const parameters = new Set(handler.getParameters());
150
+ const parameterOf = (identifier) => {
151
+ if (!Node.isIdentifier(identifier))
152
+ return undefined;
153
+ for (const declaration of identifier.getSymbol()?.getDeclarations() ?? []) {
154
+ const parameter = Node.isParameterDeclaration(declaration)
155
+ ? declaration
156
+ : Node.isBindingElement(declaration)
157
+ ? declaration.getFirstAncestorByKind(SyntaxKind.Parameter)
158
+ : undefined;
159
+ if (parameter && parameters.has(parameter))
160
+ return parameter;
161
+ }
162
+ return undefined;
163
+ };
164
+ let reads = 0;
165
+ const readThrough = new Set();
166
+ for (const parameter of handler.getParameters()) {
167
+ for (const element of parameter.getDescendantsOfKind(SyntaxKind.BindingElement)) {
168
+ if (memberNameOf(element) !== BODY_MEMBER)
169
+ continue;
170
+ reads++;
171
+ if (!bindingToleratesAbsence(element))
172
+ return false;
173
+ }
174
+ }
175
+ for (const access of handler.getDescendantsOfKind(SyntaxKind.PropertyAccessExpression)) {
176
+ if (access.getName() !== BODY_MEMBER)
177
+ continue;
178
+ const parameter = parameterOf(rootOf(access.getExpression()));
179
+ if (!parameter)
180
+ continue;
181
+ reads++;
182
+ readThrough.add(parameter);
183
+ if (!valueToleratesAbsence(access, 0))
184
+ return false;
185
+ }
186
+ for (const declaration of handler.getDescendantsOfKind(SyntaxKind.VariableDeclaration)) {
187
+ const pattern = declaration.getNameNode();
188
+ const initializer = declaration.getInitializer();
189
+ if (!Node.isObjectBindingPattern(pattern) || !initializer)
190
+ continue;
191
+ const parameter = parameterOf(rootOf(initializer));
192
+ if (!parameter)
193
+ continue;
194
+ for (const element of pattern.getElements()) {
195
+ if (memberNameOf(element) !== BODY_MEMBER)
196
+ continue;
197
+ reads++;
198
+ readThrough.add(parameter);
199
+ if (!bindingToleratesAbsence(element))
200
+ return false;
201
+ }
202
+ }
203
+ for (const parameter of readThrough) {
204
+ const name = parameter.getNameNode();
205
+ if (!Node.isIdentifier(name))
206
+ continue;
207
+ const symbol = name.getSymbol();
208
+ for (const reference of handler.getDescendantsOfKind(SyntaxKind.Identifier)) {
209
+ if (reference === name || reference.getSymbol() !== symbol)
210
+ continue;
211
+ const parent = reference.getParent();
212
+ const memberRead = parent !== undefined &&
213
+ (Node.isPropertyAccessExpression(parent) || Node.isElementAccessExpression(parent)) &&
214
+ parent.getExpression() === reference;
215
+ const destructured = parent !== undefined &&
216
+ Node.isVariableDeclaration(parent) &&
217
+ parent.getInitializer() === reference &&
218
+ Node.isObjectBindingPattern(parent.getNameNode());
219
+ if (!memberRead && !destructured)
220
+ return false;
221
+ }
222
+ }
223
+ return reads > 0;
224
+ }
@@ -55,6 +55,12 @@ export interface SymbolAnchorRequest {
55
55
  * table keyed by status code captures as its 2xx body, not as the table.
56
56
  */
57
57
  consumer_response?: boolean;
58
+ /**
59
+ * carrick#2814: the symbol is a request body or payload whose handler works
60
+ * when none is sent (the inferrer's mark for the alias). Copied onto the
61
+ * alias's record, where the check phase reads it.
62
+ */
63
+ absent_body_tolerated?: true;
58
64
  }
59
65
  /**
60
66
  * Inline literal type text with no addressable symbol (the v1 inline-alias
@@ -88,6 +94,12 @@ export interface LiteralAnchorRequest {
88
94
  * onto the alias's record, where the check phase reads it.
89
95
  */
90
96
  raw_text_read?: true;
97
+ /**
98
+ * carrick#2814: the text is a request body or payload whose handler works
99
+ * when none is sent. Copied onto the alias's record, where the check phase
100
+ * reads it.
101
+ */
102
+ absent_body_tolerated?: true;
91
103
  }
92
104
  /**
93
105
  * The declaration a bare name in printed type text meant (carrick#1836).
@@ -325,6 +337,14 @@ export interface CaptureAliasRecord {
325
337
  * otherwise, and absent on every record a release before this one stored.
326
338
  */
327
339
  raw_text_read?: true;
340
+ /**
341
+ * carrick#2814: the alias is a route's request body, or a subscriber's
342
+ * payload, whose handler works when none is sent. The check phase lets a
343
+ * sender that may send nothing pass against it when its type has no
344
+ * required member. Absent otherwise: the absent body is then judged by the
345
+ * type alone.
346
+ */
347
+ absent_body_tolerated?: true;
328
348
  }
329
349
  /** Aggregate fidelity metric, emitted per capture (one service). */
330
350
  export interface CaptureFidelity {
@@ -142,5 +142,9 @@ export declare function decisiveAssignmentLine(plan: ProbePlan): number;
142
142
  * probe of an `http` pair then ends with a second assignment of that reading,
143
143
  * in the wire form. Without an answer the probe is what it always was, byte
144
144
  * for byte.
145
+ *
146
+ * `expectedToleratesAbsence` answers, for the receiving side, whether its
147
+ * capture record marks a handler that works when no body is sent
148
+ * (carrick#2814).
145
149
  */
146
- export declare function buildProbe(spec: CheckPairSpec, packageOf: (serviceName: string) => string, unwidenedAliasFor?: (sent: CheckPairEndpoint) => string | undefined): ProbePlan;
150
+ export declare function buildProbe(spec: CheckPairSpec, packageOf: (serviceName: string) => string, unwidenedAliasFor?: (sent: CheckPairEndpoint) => string | undefined, expectedToleratesAbsence?: (expected: CheckPairEndpoint) => boolean): ProbePlan;
@@ -132,8 +132,12 @@ export function decisiveAssignmentLine(plan) {
132
132
  * probe of an `http` pair then ends with a second assignment of that reading,
133
133
  * in the wire form. Without an answer the probe is what it always was, byte
134
134
  * for byte.
135
+ *
136
+ * `expectedToleratesAbsence` answers, for the receiving side, whether its
137
+ * capture record marks a handler that works when no body is sent
138
+ * (carrick#2814).
135
139
  */
136
- export function buildProbe(spec, packageOf, unwidenedAliasFor) {
140
+ export function buildProbe(spec, packageOf, unwidenedAliasFor, expectedToleratesAbsence) {
137
141
  const id = pairId(spec);
138
142
  const direction = directionFor(spec.protocol, spec.type_kind);
139
143
  const sentEndpoint = direction.sent === 'producer' ? spec.producer : spec.consumer;
@@ -210,7 +214,32 @@ export function buildProbe(spec, packageOf, unwidenedAliasFor) {
210
214
  gateLines.set(push(`type _G_sent_envelope = Assert<Not<PsOnly<Sent, Expected>>>;`), 'sent:envelope');
211
215
  gateLines.set(push(`type _G_expected_envelope = Assert<Not<PsOnly<Expected, Sent>>>;`), 'expected:envelope');
212
216
  }
213
- push(`declare const sent: Sent;`);
217
+ // carrick#2814: a body the sender may omit (`T | undefined`, `T | void`) is
218
+ // compatible with a receiver that requires none. A receiver requires none
219
+ // when its type has no required member (`{} extends Expected`) AND either
220
+ // its type admits absence (`Expected` holds `undefined` or `void`), or its
221
+ // handler works with nothing sent: the capture record says so
222
+ // (`absent_body_tolerated`), from a handler that defaults the body or reads
223
+ // it only through `?.` / `?? {}`. A handler that destructures or
224
+ // dereferences the body throws on `undefined`, whatever its type says, so
225
+ // without the mark the absent body keeps today's incompatible reading. When
226
+ // it holds, the absent members are dropped from the sent side and what
227
+ // remains is compared as before. The request direction of HTTP, and socket
228
+ // and pub/sub payloads (the subscriber is `expected`); a GraphQL request is
229
+ // not read this way.
230
+ const absentBodyAllowed = (spec.protocol === 'http' && spec.type_kind === 'request') ||
231
+ spec.protocol === 'socket' ||
232
+ spec.protocol === 'pubsub';
233
+ const toleratesAbsence = expectedToleratesAbsence?.(expectedEndpoint) === true;
234
+ const sentBodyType = (sent) => {
235
+ const dropped = `Exclude<${sent}, undefined | void>`;
236
+ const byHandler = toleratesAbsence ? dropped : sent;
237
+ return `[Extract<${sent}, undefined | void>] extends [never] ? ${sent} : [{}] extends [Expected] ? ([Extract<Expected, undefined | void>] extends [never] ? ${byHandler} : ${dropped}) : ${sent}`;
238
+ };
239
+ if (absentBodyAllowed)
240
+ push(`type SentBody = ${sentBodyType('Sent')};`);
241
+ const sentBody = absentBodyAllowed ? 'SentBody' : 'Sent';
242
+ push(`declare const sent: ${sentBody};`);
214
243
  let assignmentLine;
215
244
  if (spec.protocol === 'graphql') {
216
245
  // GraphQL selection-set semantics (v1 `unwrapGraphqlPayload` parity): the
@@ -304,7 +333,7 @@ export function buildProbe(spec, packageOf, unwidenedAliasFor) {
304
333
  // that name — and there the declared name no longer describes what travels.
305
334
  for (const line of jsonWireDeclarations(''))
306
335
  push(line);
307
- push(`type WireSent = [Sent] extends [Expected] ? Sent : (JsonWireSame<JsonWire<Sent>, Sent> extends true ? Sent : JsonWire<Sent>);`);
336
+ push(`type WireSent = [${sentBody}] extends [Expected] ? ${sentBody} : (JsonWireSame<JsonWire<${sentBody}>, ${sentBody}> extends true ? ${sentBody} : JsonWire<${sentBody}>);`);
308
337
  push(`declare const sentWire: WireSent;`);
309
338
  wireAssignmentLine = push(`const expectedWire: Expected = sentWire;`);
310
339
  }
@@ -333,7 +362,12 @@ export function buildProbe(spec, packageOf, unwidenedAliasFor) {
333
362
  push(`type _G_unwidened_any = Assert<Not<IsAny<${local}>>>;`);
334
363
  push(`type _G_unwidened_unknown = Assert<Not<IsUnknown<${local}>>>;`);
335
364
  push(`type _G_unwidened_never = Assert<Not<IsNever<${local}>>>;`);
336
- push(`type WireSentUnwidened = [${local}] extends [Expected] ? ${local} : (JsonWireSame<JsonWire<${local}>, ${local}> extends true ? ${local} : JsonWire<${local}>);`);
365
+ let unwidenedBody = local;
366
+ if (absentBodyAllowed) {
367
+ push(`type SentUnwidenedBody = ${sentBodyType(local)};`);
368
+ unwidenedBody = 'SentUnwidenedBody';
369
+ }
370
+ push(`type WireSentUnwidened = [${unwidenedBody}] extends [Expected] ? ${unwidenedBody} : (JsonWireSame<JsonWire<${unwidenedBody}>, ${unwidenedBody}> extends true ? ${unwidenedBody} : JsonWire<${unwidenedBody}>);`);
337
371
  push(`declare const sentWireUnwidened: WireSentUnwidened;`);
338
372
  push(`const expectedWireUnwidened: Expected = sentWireUnwidened;`);
339
373
  }
@@ -66,6 +66,8 @@ export function rewriteAliases(text, sentAlias, expectedAlias) {
66
66
  return text
67
67
  .split(`'Sent'`)
68
68
  .join(`'${sentAlias}'`)
69
+ .split(`'SentBody'`)
70
+ .join(`'${sentAlias}'`)
69
71
  .split(`'Expected'`)
70
72
  .join(`'${expectedAlias}'`);
71
73
  }
@@ -196,7 +196,7 @@ export async function runCheck(opts, onProgress) {
196
196
  const unresolved = [];
197
197
  for (const spec of opts.pairs) {
198
198
  try {
199
- plans.push(buildProbe(spec, ws.packageOf, unwidenedAliasIn(aliasRecords)));
199
+ plans.push(buildProbe(spec, ws.packageOf, unwidenedAliasIn(aliasRecords), absenceToleratedIn(aliasRecords)));
200
200
  }
201
201
  catch {
202
202
  unresolved.push({
@@ -404,6 +404,13 @@ function unwidenedAliasIn(aliasRecords) {
404
404
  return record.alias;
405
405
  };
406
406
  }
407
+ /**
408
+ * carrick#2814: whether the receiving side's capture record marks a handler
409
+ * that works when no body is sent.
410
+ */
411
+ function absenceToleratedIn(aliasRecords) {
412
+ return (expected) => aliasRecords.get(expected.service_name)?.get(expected.alias)?.absent_body_tolerated === true;
413
+ }
407
414
  /**
408
415
  * Capture-time deep-decay pre-gate (adversarial-review finding 1): a
409
416
  * member-level `any`/`unknown` recorded by the capture self-check with no
@@ -268,11 +268,21 @@ function buildSurfaceSpanIndex(surfaceSource) {
268
268
  };
269
269
  }
270
270
  /**
271
- * carrick#1842: a literal anchor whose text is a body read as raw text passes
272
- * that mark to its record, where the check phase reads it.
271
+ * A literal anchor passes the inferrer's marks to its record, where the check
272
+ * phase reads them: a body read as raw text (carrick#1842), and a body whose
273
+ * handler works when none is sent (carrick#2814). A symbol anchor passes the
274
+ * second only: the model named the body's type, the handler is still read.
273
275
  */
274
- function rawTextMark(request) {
275
- return request.kind === 'literal' && request.raw_text_read ? { raw_text_read: true } : {};
276
+ function literalMarks(request) {
277
+ if (request.kind === 'symbol') {
278
+ return request.absent_body_tolerated ? { absent_body_tolerated: true } : {};
279
+ }
280
+ if (request.kind !== 'literal')
281
+ return {};
282
+ return {
283
+ ...(request.raw_text_read ? { raw_text_read: true } : {}),
284
+ ...(request.absent_body_tolerated ? { absent_body_tolerated: true } : {}),
285
+ };
276
286
  }
277
287
  /** An alias that never reached a capture-native tier: the failure reason was
278
288
  * recorded at demotion time; the surface line is `unknown` by construction. */
@@ -294,7 +304,7 @@ function demotedRecord(anchor) {
294
304
  ...(anchor.request.kind === 'literal' && anchor.namesUnemittedModule
295
305
  ? { unresolved_in_tree: [unemittedModuleProvenance()] }
296
306
  : {}),
297
- ...rawTextMark(anchor.request),
307
+ ...literalMarks(anchor.request),
298
308
  };
299
309
  }
300
310
  function checkedRecord(anchor, ctx) {
@@ -476,7 +486,7 @@ function checkedRecord(anchor, ctx) {
476
486
  .map((p) => unresolvedInTreeProvenance(p, [...unfoundNames].sort())),
477
487
  }
478
488
  : {}),
479
- ...rawTextMark(anchor.request),
489
+ ...literalMarks(anchor.request),
480
490
  };
481
491
  }
482
492
  /** Resolve a relative specifier from `fromAbs` to a tree file, if present. */
@@ -63,7 +63,7 @@ export declare class StatedParams {
63
63
  * reference, a second callable argument or property there. What such a
64
64
  * function (a middleware) does with the request is not read here.
65
65
  */
66
- private handsInAnotherFunction;
66
+ handsInAnotherFunction(registration: Node, handler: HandlerFunction): boolean;
67
67
  /**
68
68
  * A type argument the source writes for this route: on a call the handler
69
69
  * is passed to (the registration, or a wrapper that makes the handler),
@@ -234,6 +234,18 @@ export declare class TypeInferrer {
234
234
  * truncation.
235
235
  */
236
236
  private inferFunctionParam;
237
+ /**
238
+ * carrick#2814: mark a route's request body as one its handler tolerates
239
+ * going unsent, when the handler is in reach and every read of the body
240
+ * survives `undefined` (`absent-body.ts`). The check then lets a caller that
241
+ * may send nothing call a route whose body type has no required member.
242
+ *
243
+ * No mark where the handler cannot be found, where a validator the
244
+ * registration declares reads the body first (a schema, or another function
245
+ * handed in beside the handler), or where the handler reads no body it can
246
+ * see: the check keeps the reading it had.
247
+ */
248
+ private withAbsentBodyMark;
237
249
  /**
238
250
  * Resolve a `function_param` locator against a function's parameter list.
239
251
  * Three shapes, tried in order: