@smartlyio/oats-runtime 4.3.1 → 4.4.1-alpha.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.js CHANGED
@@ -95,7 +95,7 @@ function fillInPathParams(params, path) {
95
95
  }
96
96
  function makeMethod(adapter, handler, pathParams) {
97
97
  const params = paramObject(pathParams, handler.path);
98
- const call = server.safe(handler.headers, handler.params, handler.query, handler.body, handler.response, ctx => adapter(Object.assign(Object.assign({}, ctx), { path: fillInPathParams(params, handler.path), servers: handler.servers })));
98
+ const call = server.safe(handler.headers, handler.params, handler.query, handler.body, handler.response, ctx => adapter(Object.assign(Object.assign({}, ctx), { path: fillInPathParams(params, handler.path), servers: handler.servers })), { mode: 'client' });
99
99
  return (ctx) => call({
100
100
  path: handler.path,
101
101
  servers: handler.servers,
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AACnC,gEAA8C;AAC9C,qCAAkC;AAmClC,SAAgB,IAAI,CAClB,WAAwB,EACxB,KAAQ;IAER,OAAO;QACL,WAAW;QACX,KAAK;KACN,CAAC;AACJ,CAAC;AARD,oBAQC;AAEY,QAAA,oBAAoB,GAAG,eAAwB,CAAC;AAC7D,SAAgB,SAAS;IACvB,OAAO,IAAI,CAAC,4BAAoB,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAFD,8BAEC;AAED,SAAgB,IAAI,CAAI,IAAO;IAC7B,OAAO,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAFD,oBAEC;AAED,SAAgB,QAAQ,CAAI,IAAO;IACjC,OAAO,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAFD,4BAEC;AAED,SAAgB,cAAc,CAAI,IAAO;IACvC,OAAO,IAAI,CAAC,mCAAmC,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC;AAFD,wCAEC;AAED,SAAwB,OAAO,CAAmB,OAAU;IAC1D,OAAO,OAAO,CAAC;AACjB,CAAC;AAFD,0BAEC;AAED,SAAgB,SAAS;IACvB,OAAO;QACL,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,EAAE;KACV,CAAC;AACJ,CAAC;AALD,8BAKC;AAED,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC;AACd,CAAC;AAFD,gCAEC;AAED,SAAgB,OAAO,CACrB,MAAiB,EACjB,IAAY,EACZ,MAAsB,EACtB,KAAQ;IAER,MAAM,KAAK,GAAa,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvD,SAAS,QAAQ,CAAC,KAAe,EAAE,MAA6B;QAC9D,MAAM,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,IAAA,eAAM,EACJ,IAAA,yBAAI,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EAC5C,kCAAkC,GAAG,IAAI,CAC1C,CAAC;YACF,uCACK,MAAM,KACT,OAAO,kCACF,MAAM,CAAC,OAAO,KACjB,CAAC,MAAM,CAAC,EAAE,KAAK,OAEjB;SACH;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC1C,IAAI,KAAK,EAAE;YACT,IAAA,eAAM,EACJ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACtB,2EAA2E,GAAG,IAAI,CACnF,CAAC;YACF,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;gBACnB,uCACK,MAAM,KACT,KAAK,EAAE;wBACL,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC1B,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAA,yBAAI,EAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;qBAC1D,IACD;aACH;iBAAM;gBACL,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,uCACK,MAAM,KACT,KAAK,kCACA,MAAM,CAAC,KAAK,KACf,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAE7E;aACH;SACF;QACD,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5B,uCACK,MAAM,KACT,KAAK,kCAAO,MAAM,CAAC,KAAK,KAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAC1E;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACjC,CAAC;AAvDD,0BAuDC;AAeD,SAAS,SAAS,CAChB,OAAsB,EACtB,KAAqD,EACrD,UAAoB;IAEpB,OAAO,CAAC,KAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,WAAW,CAAC,UAAoB,EAAE,IAAY;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAA,eAAM,EAAC,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,mCAAmC,GAAG,IAAI,CAAC,CAAC;IACzF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QACxB,OAAO,SAAS,CAAC;KAClB;IACD,MAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACvC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;KACxD;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAiC,EAAE,IAAY;IACvE,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QAC7C,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,qBAAqB,GAAG,KAAK,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,OAAsB,EAAE,OAAuB,EAAE,UAAoB;IACvF,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CACtB,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,QAAQ,EAChB,GAAG,CAAC,EAAE,CACJ,OAAO,iCAAM,GAAG,KAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAG,CAC9F,CAAC;IACF,OAAO,CAAC,GAA6B,EAAE,EAAE,CACvC,IAAI,CAAC;QACH,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM;QACN,OAAO,EAAE,IAAA,yBAAI,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QAC5B,KAAK,EAAE,IAAA,yBAAI,EAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,EAAE,IAAA,yBAAI,EAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QACtB,cAAc,EAAE,EAAE;KACnB,CAAC,CAAC;AACP,CAAC;AAED,SAAS,QAAQ,CACf,OAAsB,EACtB,IAA4B,EAC5B,UAAoB;IAEpB,MAAM,IAAI,GAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACtC,IAAA,eAAM,EAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,sBAAsB,GAAG,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACpC,IAAA,eAAM,EAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,sBAAsB,GAAG,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,mBAAmB,CAAO,QAA0B;IAClE,OAAO,CAAC,OAAsB,EAAQ,EAAE;QACtC,MAAM,IAAI,GAA2B,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YACrE,OAAO,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC,EAAE,SAAS,EAAkB,CAAC,CAAC;QAChC,OAAO,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAoB,CAAC;IACxD,CAAC,CAAC;AACJ,CAAC;AAPD,kDAOC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AACnC,gEAA8C;AAC9C,qCAAkC;AAmClC,SAAgB,IAAI,CAClB,WAAwB,EACxB,KAAQ;IAER,OAAO;QACL,WAAW;QACX,KAAK;KACN,CAAC;AACJ,CAAC;AARD,oBAQC;AAEY,QAAA,oBAAoB,GAAG,eAAwB,CAAC;AAC7D,SAAgB,SAAS;IACvB,OAAO,IAAI,CAAC,4BAAoB,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAFD,8BAEC;AAED,SAAgB,IAAI,CAAI,IAAO;IAC7B,OAAO,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAFD,oBAEC;AAED,SAAgB,QAAQ,CAAI,IAAO;IACjC,OAAO,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAFD,4BAEC;AAED,SAAgB,cAAc,CAAI,IAAO;IACvC,OAAO,IAAI,CAAC,mCAAmC,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC;AAFD,wCAEC;AAED,SAAwB,OAAO,CAAmB,OAAU;IAC1D,OAAO,OAAO,CAAC;AACjB,CAAC;AAFD,0BAEC;AAED,SAAgB,SAAS;IACvB,OAAO;QACL,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,EAAE;KACV,CAAC;AACJ,CAAC;AALD,8BAKC;AAED,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC;AACd,CAAC;AAFD,gCAEC;AAED,SAAgB,OAAO,CACrB,MAAiB,EACjB,IAAY,EACZ,MAAsB,EACtB,KAAQ;IAER,MAAM,KAAK,GAAa,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvD,SAAS,QAAQ,CAAC,KAAe,EAAE,MAA6B;QAC9D,MAAM,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,IAAA,eAAM,EACJ,IAAA,yBAAI,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EAC5C,kCAAkC,GAAG,IAAI,CAC1C,CAAC;YACF,uCACK,MAAM,KACT,OAAO,kCACF,MAAM,CAAC,OAAO,KACjB,CAAC,MAAM,CAAC,EAAE,KAAK,OAEjB;SACH;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC1C,IAAI,KAAK,EAAE;YACT,IAAA,eAAM,EACJ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACtB,2EAA2E,GAAG,IAAI,CACnF,CAAC;YACF,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;gBACnB,uCACK,MAAM,KACT,KAAK,EAAE;wBACL,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC1B,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAA,yBAAI,EAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;qBAC1D,IACD;aACH;iBAAM;gBACL,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,uCACK,MAAM,KACT,KAAK,kCACA,MAAM,CAAC,KAAK,KACf,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAE7E;aACH;SACF;QACD,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5B,uCACK,MAAM,KACT,KAAK,kCAAO,MAAM,CAAC,KAAK,KAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAC1E;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACjC,CAAC;AAvDD,0BAuDC;AAeD,SAAS,SAAS,CAChB,OAAsB,EACtB,KAAqD,EACrD,UAAoB;IAEpB,OAAO,CAAC,KAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,WAAW,CAAC,UAAoB,EAAE,IAAY;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAA,eAAM,EAAC,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,mCAAmC,GAAG,IAAI,CAAC,CAAC;IACzF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QACxB,OAAO,SAAS,CAAC;KAClB;IACD,MAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACvC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;KACxD;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAiC,EAAE,IAAY;IACvE,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QAC7C,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,qBAAqB,GAAG,KAAK,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,OAAsB,EAAE,OAAuB,EAAE,UAAoB;IACvF,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CACtB,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,QAAQ,EAChB,GAAG,CAAC,EAAE,CACJ,OAAO,iCAAM,GAAG,KAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAG,EAC7F,EAAE,IAAI,EAAE,QAAQ,EAAE,CACnB,CAAC;IACF,OAAO,CAAC,GAA6B,EAAE,EAAE,CACvC,IAAI,CAAC;QACH,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM;QACN,OAAO,EAAE,IAAA,yBAAI,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QAC5B,KAAK,EAAE,IAAA,yBAAI,EAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,EAAE,IAAA,yBAAI,EAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QACtB,cAAc,EAAE,EAAE;KACnB,CAAC,CAAC;AACP,CAAC;AAED,SAAS,QAAQ,CACf,OAAsB,EACtB,IAA4B,EAC5B,UAAoB;IAEpB,MAAM,IAAI,GAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACtC,IAAA,eAAM,EAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,sBAAsB,GAAG,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACpC,IAAA,eAAM,EAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,sBAAsB,GAAG,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,mBAAmB,CAAO,QAA0B;IAClE,OAAO,CAAC,OAAsB,EAAQ,EAAE;QACtC,MAAM,IAAI,GAA2B,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YACrE,OAAO,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC,EAAE,SAAS,EAAkB,CAAC,CAAC;QAChC,OAAO,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAoB,CAAC;IACxD,CAAC,CAAC;AACJ,CAAC;AAPD,kDAOC"}
package/dist/make.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- import { NamedTypeDefinition, Type } from './reflection-type';
2
+ import { NamedTypeDefinition, ObjectType, Type } from './reflection-type';
3
3
  export declare class MakeError extends Error {
4
4
  readonly errors: ValidationError[];
5
5
  constructor(errors: ValidationError[]);
@@ -43,6 +43,8 @@ export interface MakeOptions {
43
43
  * (if query parameter is not repeated, it will not be an array on server side).
44
44
  */
45
45
  allowConvertForArrayType?: boolean;
46
+ /** If true convert property names from network to ts format while parsing objects */
47
+ convertFromNetwork?: boolean;
46
48
  }
47
49
  export declare type Maker<Shape, V> = (value: Shape, opts?: MakeOptions) => Make<V>;
48
50
  export declare function registerFormat(format: string, maker: Maker<any, undefined>): void;
@@ -60,12 +62,12 @@ export declare function makeOptional(maker: any): {
60
62
  export declare function makeBoolean(): Maker<unknown, boolean>;
61
63
  export declare function makeArray(maker: any, minSize?: number, maxSize?: number): Maker<unknown, unknown[]>;
62
64
  export declare function makeOneOf(...options: any[]): (value: any, opts?: MakeOptions | undefined) => any;
63
- export declare function makeAllOf(...all: any[]): (value: any, opts?: MakeOptions | undefined) => Make<any>;
65
+ export declare function makeAllOf(...all: Maker<any, any>[]): (value: any, opts?: MakeOptions | undefined) => Make<any>;
64
66
  export declare function makeObject<P extends {
65
67
  [key: string]: Maker<any, any> | {
66
68
  optional: Maker<any, any>;
67
69
  };
68
- }>(props: P, additionalProp?: any, comparisorOrder?: string[]): (value: any, opts?: MakeOptions | undefined) => Make<any>;
70
+ }>(props: P, additionalProp?: any, comparisorOrder?: string[], type?: ObjectType): (value: any, opts?: MakeOptions | undefined) => Make<any>;
69
71
  export declare type Binary = File | Buffer | FormBinary;
70
72
  export declare class FormBinary {
71
73
  readonly binary: Binary;
package/dist/make.js CHANGED
@@ -4,9 +4,10 @@ exports.makeOneOfWithDiscriminator = exports.extractDiscriminatorValueMap = expo
4
4
  const assert_1 = require("./assert");
5
5
  const safe_navigation_1 = require("@smartlyio/safe-navigation");
6
6
  const _ = require("lodash");
7
+ const lodash_1 = require("lodash");
7
8
  const value_class_1 = require("./value-class");
8
9
  const union_discriminator_1 = require("./union-discriminator");
9
- const lodash_1 = require("lodash");
10
+ const type_tag_1 = require("./type-tag");
10
11
  class MakeError extends Error {
11
12
  constructor(errors) {
12
13
  super('tried to get success value from error: ' + errors.map(validationErrorPrinter).join('\n'));
@@ -296,21 +297,48 @@ function makeOneOf(...options) {
296
297
  exports.makeOneOf = makeOneOf;
297
298
  function makeAllOf(...all) {
298
299
  return (value, opts) => {
300
+ var _a;
301
+ const types = [];
299
302
  for (const make of all) {
300
303
  const result = make(value, opts);
301
304
  if (result.isError()) {
302
305
  return result.errorPath('(allOf)');
303
306
  }
304
307
  value = result.success();
308
+ types.push(...((_a = (0, type_tag_1.getTypeSet)(value)) !== null && _a !== void 0 ? _a : []));
305
309
  }
306
- return Make.ok(value);
310
+ return Make.ok((0, type_tag_1.withType)(value, types));
307
311
  };
308
312
  }
309
313
  exports.makeAllOf = makeAllOf;
310
314
  function isMagic(field) {
311
315
  return ['__proto__', 'constructor'].indexOf(field) >= 0;
312
316
  }
313
- function makeObject(props, additionalProp, comparisorOrder) {
317
+ function getInputPropName(args) {
318
+ var _a, _b, _c, _d;
319
+ if (!((_a = args.opts) === null || _a === void 0 ? void 0 : _a.convertFromNetwork)) {
320
+ return args.index;
321
+ }
322
+ const types = (_b = (0, type_tag_1.getType)(args.value)) !== null && _b !== void 0 ? _b : [];
323
+ const networkProp = (_d = (_c = args.fromNetwork) === null || _c === void 0 ? void 0 : _c[args.index]) !== null && _d !== void 0 ? _d : args.index;
324
+ for (const type of types) {
325
+ if (type.type !== 'object') {
326
+ // only objects can have network mappings
327
+ continue;
328
+ }
329
+ const mapped = type.properties[args.index];
330
+ if (mapped) {
331
+ // if the object was made already then network mapping has been done for listed properties
332
+ // and we should use the ts side property
333
+ (0, assert_1.assert)(networkProp == mapped.networkName, `Network names for properties with the same name need to be equal when a object has multiple types. Mismatch in ${networkProp} and ${mapped.networkName}.`);
334
+ return args.index;
335
+ }
336
+ }
337
+ return networkProp;
338
+ }
339
+ function makeObject(props, additionalProp, comparisorOrder, type) {
340
+ const fromNetwork = fromNetworkMap(type);
341
+ const listedInputPropNames = new Set(Object.keys(props).map(prop => { var _a; return (_a = fromNetwork[prop]) !== null && _a !== void 0 ? _a : prop; }));
314
342
  return (value, opts) => {
315
343
  if (typeof value !== 'object' || value == null || Array.isArray(value)) {
316
344
  return getErrorWithValueMsg('expected an object', value);
@@ -321,26 +349,32 @@ function makeObject(props, additionalProp, comparisorOrder) {
321
349
  if (isMagic(index)) {
322
350
  return error(`Using ${index} as field of an object is not allowed`);
323
351
  }
352
+ const inputPropName = getInputPropName({ opts, index, fromNetwork, value });
324
353
  let maker = props[index];
325
354
  if (!maker) {
326
355
  return error(`Prop maker not found for key ${index}. This is likely a bug in oats`);
327
356
  }
328
357
  if (maker.optional) {
329
- if (!(index in value) || value[index] === undefined) {
358
+ if (!(inputPropName in value) || value[inputPropName] === undefined) {
330
359
  continue;
331
360
  }
332
361
  maker = maker.optional;
333
362
  }
334
- const propResult = maker(value[index], opts);
363
+ const propResult = maker(value[inputPropName], opts);
335
364
  if (propResult.isError()) {
336
365
  return propResult.errorPath(index);
337
366
  }
338
367
  result[index] = propResult.success();
339
368
  }
340
369
  for (const index of Object.keys(value)) {
370
+ // do not consider props that got mapped
371
+ if ((opts === null || opts === void 0 ? void 0 : opts.convertFromNetwork) && listedInputPropNames.has(index)) {
372
+ continue;
373
+ }
341
374
  if (isMagic(index)) {
342
375
  return error(`Using ${index} as objects additional field is not allowed.`);
343
376
  }
377
+ // do not allow overriding mapped props
344
378
  if (props[index]) {
345
379
  continue;
346
380
  }
@@ -356,7 +390,7 @@ function makeObject(props, additionalProp, comparisorOrder) {
356
390
  }
357
391
  result[index] = propResult.success();
358
392
  }
359
- return Make.ok(result);
393
+ return Make.ok((0, type_tag_1.withType)(result, type ? [type] : []));
360
394
  };
361
395
  }
362
396
  exports.makeObject = makeObject;
@@ -463,6 +497,19 @@ function priority(v) {
463
497
  }
464
498
  return Priority.NonScalar;
465
499
  }
500
+ function fromNetworkMap(type) {
501
+ if (!type) {
502
+ return {};
503
+ }
504
+ const fromNetwork = Object.keys(type.properties).reduce((memo, key) => {
505
+ const mapped = type.properties[key].networkName;
506
+ if (mapped) {
507
+ memo[key] = mapped;
508
+ }
509
+ return memo;
510
+ }, {});
511
+ return fromNetwork;
512
+ }
466
513
  function fromObjectReflection(type) {
467
514
  const comparisonOrder = Object.keys(type.properties).sort((aKey, bKey) => {
468
515
  const a = type.properties[aKey];
@@ -473,7 +520,7 @@ function fromObjectReflection(type) {
473
520
  ? type.additionalProperties === true
474
521
  ? makeAny()
475
522
  : fromReflection(type.additionalProperties)
476
- : undefined, comparisonOrder);
523
+ : undefined, comparisonOrder, type);
477
524
  }
478
525
  function fromUnionReflection(types) {
479
526
  const { discriminator, undiscriminated } = (0, union_discriminator_1.discriminateUnion)(types);
package/dist/make.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"make.js","sourceRoot":"","sources":["../src/make.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"make.js","sourceRoot":"","sources":["../src/make.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,12 @@ declare type DefaultValue<ContentType extends string> = ContentType extends type
14
14
  * But it will pass if type inference is not prevented.
15
15
  */
16
16
  declare type PreventGenericDefaultValueOverride<T> = [T][T extends unknown ? 0 : never];
17
+ /**
18
+ * Use to perform HTTP redirect.
19
+ * @param url an absolute or relative URL string. Will be encoded with `encodeurl` and set as "Location" header (@see https://github.com/pillarjs/encodeurl).
20
+ * @param options optional `status`, `contentType`, `value` that will override the default ones. Default `status` is 302, `contentType` is "text/html".
21
+ * @returns redirect server response.
22
+ */
17
23
  export declare function redirect<Status extends RedirectStatus = typeof DEFAULT_REDIRECT_STATUS, ContentType extends string = typeof TEXT_HTML_CONTENT_TYPE, Value = DefaultValue<ContentType>>(url: string, options?: {
18
24
  status?: Status;
19
25
  contentType?: ContentType;
package/dist/redirect.js CHANGED
@@ -2,13 +2,20 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.redirect = void 0;
4
4
  const escapeHtml = require("escape-html");
5
+ const encodeUrl = require("encodeurl");
5
6
  const REDIRECT_STATUSES = [300, 301, 302, 303, 305, 307, 308];
6
7
  const DEFAULT_REDIRECT_STATUS = 302;
7
8
  const TEXT_HTML_CONTENT_TYPE = 'text/html';
8
9
  const TEXT_PLAIN_CONTENT_TYPE = 'text/plain';
10
+ /**
11
+ * Use to perform HTTP redirect.
12
+ * @param url an absolute or relative URL string. Will be encoded with `encodeurl` and set as "Location" header (@see https://github.com/pillarjs/encodeurl).
13
+ * @param options optional `status`, `contentType`, `value` that will override the default ones. Default `status` is 302, `contentType` is "text/html".
14
+ * @returns redirect server response.
15
+ */
9
16
  function redirect(url, options = {}) {
10
17
  const { status = DEFAULT_REDIRECT_STATUS } = options;
11
- const encodedUrl = encodeURI(url);
18
+ const encodedUrl = encodeUrl(url);
12
19
  if (!REDIRECT_STATUSES.includes(status)) {
13
20
  throw new Error(`Status "${status}" is not a redirect status.`);
14
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"redirect.js","sourceRoot":"","sources":["../src/redirect.ts"],"names":[],"mappings":";;;AACA,0CAA2C;AAE3C,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AACvE,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACpC,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAC3C,MAAM,uBAAuB,GAAG,YAAY,CAAC;AAsB7C,SAAgB,QAAQ,CAKtB,GAAW,EACX,UAII,EAAE;IAON,MAAM,EAAE,MAAM,GAAG,uBAAiC,EAAE,GAAG,OAAO,CAAC;IAC/D,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QACvC,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,6BAA6B,CAAC,CAAC;KACjE;IACD,MAAM,EACJ,WAAW,GAAG,sBAAqC,EACnD,KAAK,GAAG,uBAAuB,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAqB,EACjF,GAAG,OAAO,CAAC;IAEZ,OAAO;QACL,MAAM;QACN,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;QAC7B,OAAO,EAAE;YACP,QAAQ,EAAE,UAAU;SACrB;KACF,CAAC;AACJ,CAAC;AAnCD,4BAmCC;AAED,SAAS,uBAAuB,CAAC,EAC/B,UAAU,EACV,WAAW,EAIZ;IACC,IAAI,aAAa,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,EAAE;QAChE,oGAAoG;QACpG,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1C,OAAO,2BAA2B,UAAU,KAAK,UAAU,OAAO,CAAC;KACpE;IACD,IAAI,aAAa,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,EAAE;QACjE,OAAO,kBAAkB,UAAU,GAAG,CAAC;KACxC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,EAAE,WAAW,EAAE,IAAI,EAAyC;IACjF,OAAO,WAAW,KAAK,IAAI,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AACpE,CAAC"}
1
+ {"version":3,"file":"redirect.js","sourceRoot":"","sources":["../src/redirect.ts"],"names":[],"mappings":";;;AACA,0CAA2C;AAC3C,uCAAwC;AAExC,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AACvE,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACpC,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAC3C,MAAM,uBAAuB,GAAG,YAAY,CAAC;AAsB7C;;;;;GAKG;AACH,SAAgB,QAAQ,CAKtB,GAAW,EACX,UAII,EAAE;IAON,MAAM,EAAE,MAAM,GAAG,uBAAiC,EAAE,GAAG,OAAO,CAAC;IAC/D,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QACvC,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,6BAA6B,CAAC,CAAC;KACjE;IACD,MAAM,EACJ,WAAW,GAAG,sBAAqC,EACnD,KAAK,GAAG,uBAAuB,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAqB,EACjF,GAAG,OAAO,CAAC;IAEZ,OAAO;QACL,MAAM;QACN,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;QAC7B,OAAO,EAAE;YACP,QAAQ,EAAE,UAAU;SACrB;KACF,CAAC;AACJ,CAAC;AAnCD,4BAmCC;AAED,SAAS,uBAAuB,CAAC,EAC/B,UAAU,EACV,WAAW,EAIZ;IACC,IAAI,aAAa,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,EAAE;QAChE,oGAAoG;QACpG,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1C,OAAO,2BAA2B,UAAU,KAAK,UAAU,OAAO,CAAC;KACpE;IACD,IAAI,aAAa,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,EAAE;QACjE,OAAO,kBAAkB,UAAU,GAAG,CAAC;KACxC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,EAAE,WAAW,EAAE,IAAI,EAAyC;IACjF,OAAO,WAAW,KAAK,IAAI,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AACpE,CAAC"}
@@ -65,6 +65,7 @@ export interface NamedType {
65
65
  export interface PropType {
66
66
  required: boolean;
67
67
  value: Type;
68
+ networkName?: string;
68
69
  }
69
70
  export interface Props {
70
71
  [name: string]: PropType;
@@ -1 +1 @@
1
- {"version":3,"file":"reflection-type.js","sourceRoot":"","sources":["../src/reflection-type.ts"],"names":[],"mappings":";;;AACA,qCAAwC;AACxC,gEAA8C;AAC9C,qCAAqC;AAmHrC,MAAa,SAAS;IAQpB,YACmB,IAA+B,EAC/B,IAA+B;QAD/B,SAAI,GAAJ,IAAI,CAA2B;QAC/B,SAAI,GAAJ,IAAI,CAA2B;QAL1C,UAAK,GAAY,IAAI,GAAG,EAAE,CAAC;QAOjC,qBAAqB,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1E,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAbD,MAAM,CAAC,OAAO,CAAa,IAA+B,EAAE,IAA+B;QACzF,OAAO,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAaO,WAAW,CAAC,SAAoD;QACtE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE;YACnD,MAAM,YAAY,GAAgB,KAAK,CAAC,MAAM,CAC5C,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAC9C,IAAI,GAAG,EAAU,CAClB,CAAC;YACF,OAAO,CAAC,GAAG,CACT,QAAQ,EACR,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CACzD,CAAC;SACH;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,GAAG,CAAC,KAAW,EAAE,EAAwB;QACvC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAQ,EAAE,CAAC,KAAU,EAAE,EAAE;YAChF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAU,EAAE,EAAE;gBACvC,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAW,EAAE,EAAiC;QACvD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAQ,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE;YAC3F,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACpC,KAAK,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;aAC7C;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,KAAU;QACtB,MAAM,KAAK,GAAW,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE;YAC1E,IAAI,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACvC,KAAK,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC;aAClC;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,OAAO;QACb,OAAO,CAAC,KAAU,EAAE,EAAE;YACpB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE;gBAClD,IAAI,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;oBACvC,OAAO,IAAI,CAAC;iBACb;aACF;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,8CAA8C,CAAC,CAAC;IAChG,CAAC;IAEO,WAAW,CACjB,SAAoD,EACpD,QAAsC,EACtC,IAAU;QAEV,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,eAAe,EAAE;YACpB,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;SACxC;QACD,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,oBAAoB,CAC1B,MAAoC;QAEpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,IAAA,aAAI,EAAC,mBAAmB,CAAC,CAAC;SAClC;QACD,MAAM,YAAY,GAA8C,IAAI,GAAG,EAAE,CAAC;QAC1E,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE;YAChD,MAAM,IAAI,GAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACvC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACzB,IAAI,QAAQ,CAAC,GAAG,EAAE;oBAChB,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;iBAChD;qBAAM,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACpE,KAAK,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAClE,QAAQ,CACT,CAAC,OAAO,EAAE,EAAE;wBACX,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAC/B,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,mBAAmB,EAAE,CAAC,GAAG,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAAC,CACpF,CAAC;qBACH;iBACF;qBAAM;oBACL,IAAA,aAAI,EAAC,mDAAmD,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;iBAC3E;YACH,CAAC,CAAC,CAAC;SACJ;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;CACF;AAvHD,8BAuHC;AAED,SAAS,WAAW,CAAC,KAAU,EAAE,IAAU,EAAE,EAAuB;IAClE,IAAI,MAAM,GAAG,IAAA,yBAAI,EAAC,KAAK,CAAC,CAAC;IACzB,yCAAyC;IACzC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;YACtB,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAC9B,UAAU,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CACzE,CAAC;SACH;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,oBAAoB,EAAE;YACnC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACnF,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAU,EAAE,EAAE;gBAChC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;oBAC9B,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;iBACvF;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;SACJ;QACD,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KACzB;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,KAAU,EAAE,IAAU,EAAE,EAAgC;IAClF,IAAI,MAAM,GAAG,IAAA,yBAAI,EAAC,KAAK,CAAC,CAAC;IACzB,yCAAyC;IACzC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;YACtB,OAAO,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAC/B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CACvF,CAAC;SACH;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,oBAAoB,EAAE;YACnC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACnF,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAU,EAAE,EAAE;gBACvC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;oBAC9B,KAAK,GAAG,MAAM,YAAY,CACxB,KAAK,EACL,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EACrD,EAAE,CACH,CAAC;iBACH;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;SACJ;QACD,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KACzB;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAKD,SAAS,QAAQ,CACf,OAAgB,EAChB,IAAkC,EAClC,EAAgC,EAChC,MAAY;IAEZ,IAAI,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,QAAQ,EAAE;QACb,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;KAC3B;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,EAAE;QACV,KAAK,GAAG,EAAE,CAAC;QACX,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;KACjC;IACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAC5B,SAA4C,EAC5C,OAAgB,EAChB,IAAkC,EAClC,EAAgC,EAChC,aAAsB;IAEtB,IAAA,eAAM,EACJ,IAAI,KAAK,EAAE,IAAI,CAAC,aAAa,EAC7B,yIAAyI,CAC1I,CAAC;IACF,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACvB,OAAO;KACR;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE;QACrC,aAAa,GAAG,KAAK,CAAC;QACtB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACrB;IACD,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACnE,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,oBAAoB,CAC3B,SAA4C,EAC5C,OAAgB,EAChB,IAAkC,EAClC,EAAgC,EAChC,IAAU,EACV,IAAU,EACV,aAAsB;IAEtB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;QACzB,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;QAChD,qBAAqB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;KAChF;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;QAChC,oBAAoB,CAClB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,EAAE,EACF,IAAI,CAAC,KAAK,EACV,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAC5B,aAAa,CACd,CAAC;KACH;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;QAChC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CACxB,oBAAoB,CAClB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,EAAE,EACF,MAAM,EACN,IAAI,EACJ,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,aAAa,CAChD,CACF,CAAC;KACH;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE;QACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CACxB,oBAAoB,CAClB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,EAAE,EACF,MAAM,EACN,IAAI,EACJ,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,aAAa,CAChD,CACF,CAAC;KACH;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;QACjC,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,KAAK,IAAI,EAAE;YACnE,oBAAoB,CAClB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,EAAE,EACF,IAAI,CAAC,oBAAoB,EACzB,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAC1F,aAAa,CACd,CAAC;SACH;QACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC9C,oBAAoB,CAClB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,EAAE,EACF,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,EAC/B,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAC3C,aAAa,CACd,CAAC;QACJ,CAAC,CAAC,CAAC;KACJ;AACH,CAAC"}
1
+ {"version":3,"file":"reflection-type.js","sourceRoot":"","sources":["../src/reflection-type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function serialize(value: any): any;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serialize = void 0;
4
+ const type_tag_1 = require("./type-tag");
5
+ function serialize(value) {
6
+ if (Array.isArray(value)) {
7
+ return value.map(v => serialize(v));
8
+ }
9
+ const types = (0, type_tag_1.getType)(value);
10
+ if (!types) {
11
+ return value;
12
+ }
13
+ return types.reduce((value, type) => {
14
+ switch (type.type) {
15
+ case 'object':
16
+ return Object.keys(value).reduce((memo, key) => {
17
+ const prop = type.properties[key];
18
+ const networkProp = prop && prop.networkName ? prop.networkName : key;
19
+ // serializing the same value multiple times is ok but unnecessary so long
20
+ // as the mappings in different objects match. If that is not the case we are screwed.
21
+ if (memo[networkProp] === undefined) {
22
+ memo[networkProp] = serialize(value[key]);
23
+ }
24
+ return memo;
25
+ }, {});
26
+ default:
27
+ return value;
28
+ }
29
+ }, value);
30
+ }
31
+ exports.serialize = serialize;
32
+ //# sourceMappingURL=serialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAErC,SAAgB,SAAS,CAAC,KAAU;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KACrC;IACD,MAAM,KAAK,GAAG,IAAA,kBAAO,EAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,KAAK,CAAC;KACd;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAClC,QAAQ,IAAI,CAAC,IAAI,EAAE;YACjB,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAsB,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;oBAClE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBAClC,MAAM,WAAW,GAAG,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;oBACtE,0EAA0E;oBAC1E,sFAAsF;oBACtF,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE;wBACnC,IAAI,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;qBAC3C;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC,EAAE,EAAE,CAAC,CAAC;YACT;gBACE,OAAO,KAAK,CAAC;SAChB;IACH,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC;AAzBD,8BAyBC"}
package/dist/server.d.ts CHANGED
@@ -54,7 +54,7 @@ export declare class ResponseValidationError extends Error {
54
54
  errors: ValidationError[];
55
55
  constructor(tag: string, originalResponse: any, errors: ValidationError[]);
56
56
  }
57
- export declare function safe<H extends Headers, P extends Params, Q extends Query, Body extends RequestBody<any>, R extends Response<any, any, any, Record<string, any>>, RC extends RequestContext>(headers: Maker<any, H>, params: Maker<any, P>, query: Maker<any, Q>, body: Maker<any, Body>, response: Maker<any, R>, endpoint: Endpoint<H, P, Q, Body, R, RC>, { validationOptions }?: HandlerOptions): Endpoint<Headers, Params, Query, RequestBody<any>, Response<number, any, any, Record<string, any>>, RequestContext>;
57
+ export declare function safe<H extends Headers, P extends Params, Q extends Query, Body extends RequestBody<any>, R extends Response<any, any, any, Record<string, any>>, RC extends RequestContext>(headers: Maker<any, H>, params: Maker<any, P>, query: Maker<any, Q>, body: Maker<any, Body>, response: Maker<any, R>, endpoint: Endpoint<H, P, Q, Body, R, RC>, { validationOptions, mode }?: HandlerOptions & InternalHandlerOptions): Endpoint<Headers, Params, Query, RequestBody<any>, Response<number, any, any, Record<string, any>>, RequestContext>;
58
58
  export declare type Methods = keyof MethodHandlers;
59
59
  export declare const supportedMethods: Methods[];
60
60
  declare type AnyMaker = Maker<any, any>;
@@ -72,6 +72,14 @@ export interface Handler {
72
72
  export declare type HandlerFactory<Spec> = (adapter: ServerAdapter) => (spec: Spec) => void;
73
73
  export declare function assertMethod(method: string): Methods;
74
74
  export declare type ServerAdapter = (path: string, op: string, method: Methods, handler: SafeEndpoint, servers: string[]) => void;
75
+ declare type Mode = 'client' | 'server';
76
+ export interface InternalHandlerOptions {
77
+ /** whether we are calling this on client side or in server side.
78
+ * This may have effect on eg network <-> ts property mapping.
79
+ * This value is set automatically by oats.
80
+ * */
81
+ mode: Mode;
82
+ }
75
83
  export interface HandlerOptions {
76
84
  /**
77
85
  * Options for request schema validation.
package/dist/server.js CHANGED
@@ -4,6 +4,7 @@ exports.createHandlerFactory = exports.assertMethod = exports.supportedMethods =
4
4
  const assert_1 = require("./assert");
5
5
  const safe_navigation_1 = require("@smartlyio/safe-navigation");
6
6
  const make_1 = require("./make");
7
+ const serialize_1 = require("./serialize");
7
8
  class RequestValidationError extends Error {
8
9
  constructor(tag, errors) {
9
10
  super('invalid request ' + tag + ' ' + errors.map(make_1.validationErrorPrinter).join('\n'));
@@ -46,30 +47,55 @@ function voidify(value) {
46
47
  }
47
48
  return null;
48
49
  }
49
- function cleanHeaders(maker, headers) {
50
- const normalized = voidify(lowercaseObject(headers));
50
+ function cleanHeaders(mode, maker, headers) {
51
+ // note: we now expect that on client side headers are type conforming so do not need to lowercase those
52
+ // this is slightly breaking change is somebody has subverted the type checker
53
+ const normalized = voidify(mode === 'server' ? lowercaseObject(headers) : headers);
51
54
  const acceptsNull = maker(null);
52
55
  if (acceptsNull.isSuccess()) {
53
56
  return acceptsNull.success();
54
57
  }
55
58
  return maker(normalized, {
56
- unknownField: 'drop'
59
+ unknownField: 'drop',
60
+ convertFromNetwork: mode === 'server'
57
61
  }).success(throwRequestValidationError.bind(null, 'headers'));
58
62
  }
59
- function safe(headers, params, query, body, response, endpoint, { validationOptions = {} } = {}) {
63
+ function serializeWhenClient(mode, value) {
64
+ if (mode === 'client') {
65
+ return (0, serialize_1.serialize)(value);
66
+ }
67
+ return value;
68
+ }
69
+ function getOutBody(mode, value) {
70
+ if (!value) {
71
+ return value;
72
+ }
73
+ return { contentType: value.contentType, value: serializeWhenClient(mode, value.value) };
74
+ }
75
+ function safe(headers, params, query, body, response, endpoint, { validationOptions = {}, mode } = { mode: 'client' }) {
60
76
  return async (ctx) => {
77
+ // note: data coming to client adapter needs to be serialized and data coming from the adapter needs conversion from network
78
+ // note: data coming to server adapter needs to be deserialized and data coming from the adapter needs serialization
79
+ // this is all very clear.
80
+ const internalMakeOptions = { convertFromNetwork: mode === 'server' };
61
81
  const result = await endpoint({
62
82
  path: ctx.path,
63
83
  method: ctx.method,
64
84
  servers: ctx.servers,
65
85
  op: ctx.op,
66
- headers: cleanHeaders(headers, ctx.headers),
67
- params: params(voidify(ctx.params), validationOptions.params).success(throwRequestValidationError.bind(null, 'params')),
68
- query: query(ctx.query || {}, validationOptions.query).success(throwRequestValidationError.bind(null, 'query')),
69
- body: body(voidify(ctx.body)).success(throwRequestValidationError.bind(null, 'body')),
86
+ headers: serializeWhenClient(mode, cleanHeaders(mode, headers, ctx.headers)),
87
+ // note: path params come to the adapter in network format always as those are gleaned from the path definition
88
+ params: params(voidify(ctx.params), Object.assign(Object.assign(Object.assign({}, validationOptions.params), internalMakeOptions), { convertFromNetwork: true })).success(throwRequestValidationError.bind(null, 'params')),
89
+ query: serializeWhenClient(mode, query(ctx.query || {}, Object.assign(Object.assign({}, validationOptions.query), internalMakeOptions)).success(throwRequestValidationError.bind(null, 'query'))),
90
+ body: getOutBody(mode, body(voidify(ctx.body), internalMakeOptions).success(throwRequestValidationError.bind(null, 'body'))),
70
91
  requestContext: ctx.requestContext
71
92
  });
72
- return response(result).success(throwResponseValidationError.bind(null, `body ${ctx.path}`, result.value.value));
93
+ const responseValue = response(result, { convertFromNetwork: mode === 'client' }).success(throwResponseValidationError.bind(null, `body ${ctx.path}`, result.value.value));
94
+ if (mode === 'client' || !responseValue) {
95
+ return responseValue;
96
+ }
97
+ // the response must be serialized for transferring from server to client
98
+ return Object.assign(Object.assign({}, responseValue), { headers: (0, serialize_1.serialize)(responseValue.headers), value: Object.assign(Object.assign({}, responseValue.value), { value: (0, serialize_1.serialize)(responseValue.value.value) }) });
73
99
  };
74
100
  }
75
101
  exports.safe = safe;
@@ -110,7 +136,7 @@ function createHandlerFactory(handlers, opts) {
110
136
  const methodHandler = endpoint[method];
111
137
  const endpointWrapper = (0, safe_navigation_1.default)(tree)[path][method].$;
112
138
  (0, assert_1.assert)(endpointWrapper, 'unknown endpoint ' + method.toUpperCase() + ' ' + path);
113
- adapter(path, endpointWrapper.op, assertMethod(method), endpointWrapper.safeHandler(methodHandler, opts), endpointWrapper.servers);
139
+ adapter(path, endpointWrapper.op, assertMethod(method), endpointWrapper.safeHandler(methodHandler, Object.assign(Object.assign({}, opts), { mode: 'server' })), endpointWrapper.servers);
114
140
  });
115
141
  });
116
142
  };
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Type } from './reflection-type';
2
+ export declare function withType<A>(to: A, type: Type[]): A;
3
+ export declare function getTypeSet(value: Record<string, any>): Set<Type> | undefined;
4
+ /** Get reflection type from a made value.
5
+ * Note that only directly made object values or ValueClasses can be used
6
+ * */
7
+ export declare function getType(value: Record<string, any>): Type[] | undefined;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getType = exports.getTypeSet = exports.withType = void 0;
4
+ const value_class_1 = require("./value-class");
5
+ function withType(to, type) {
6
+ if (type.length === 0) {
7
+ return to;
8
+ }
9
+ // todo: is it possible to confuse typing by re-use of valueclassed values
10
+ // eg. with value 'v: SomeValueClass' passing it to multiple makers
11
+ // -> no? the re-use happens only if the valueclass instance matches so it
12
+ // will not mutate the tagged reflection types
13
+ const previous = getTypeSet(to);
14
+ if (previous) {
15
+ type.forEach(type => previous.add(type));
16
+ return to;
17
+ }
18
+ const newType = new Set(type);
19
+ // tag each constructed object with a hidden type property
20
+ Object.defineProperty(to, reflection, {
21
+ enumerable: false,
22
+ value: newType
23
+ });
24
+ return to;
25
+ }
26
+ exports.withType = withType;
27
+ function getTypeSet(value) {
28
+ if (!value || typeof value !== 'object') {
29
+ return;
30
+ }
31
+ // NOTE: prefer using the added reflection type instead of the contstructor type
32
+ // the added reflection type will have types from eg allOf
33
+ // @ts-ignore
34
+ const t = value[reflection];
35
+ if (t && t.size > 0) {
36
+ return t;
37
+ }
38
+ if (value instanceof value_class_1.ValueClass) {
39
+ // a bit of leap here to trust that all ValueClasses have generated `reflection`
40
+ // @ts-ignore
41
+ const classType = new Set([value.constructor.reflection().definition]);
42
+ // tag each constructed object with a hidden type property
43
+ // this ensures that ValueClasses have a mutable reflection type property
44
+ Object.defineProperty(value, reflection, {
45
+ enumerable: false,
46
+ value: classType
47
+ });
48
+ return classType;
49
+ }
50
+ return;
51
+ }
52
+ exports.getTypeSet = getTypeSet;
53
+ /** Get reflection type from a made value.
54
+ * Note that only directly made object values or ValueClasses can be used
55
+ * */
56
+ function getType(value) {
57
+ const t = getTypeSet(value);
58
+ if (t) {
59
+ return [...t];
60
+ }
61
+ }
62
+ exports.getType = getType;
63
+ const reflection = Symbol();
64
+ //# sourceMappingURL=type-tag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-tag.js","sourceRoot":"","sources":["../src/type-tag.ts"],"names":[],"mappings":";;;AACA,+CAA2C;AAE3C,SAAgB,QAAQ,CAAI,EAAK,EAAE,IAAY;IAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,EAAE,CAAC;KACX;IACD,0EAA0E;IAC1E,oEAAoE;IACpE,0EAA0E;IAC1E,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;IAChC,IAAI,QAAQ,EAAE;QACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,OAAO,EAAE,CAAC;KACX;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,0DAA0D;IAC1D,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE;QACpC,UAAU,EAAE,KAAK;QACjB,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;IACH,OAAO,EAAE,CAAC;AACZ,CAAC;AApBD,4BAoBC;AAED,SAAgB,UAAU,CAAC,KAA0B;IACnD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACvC,OAAO;KACR;IAED,gFAAgF;IAChF,0DAA0D;IAC1D,aAAa;IACb,MAAM,CAAC,GAAc,KAAK,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE;QACnB,OAAO,CAAC,CAAC;KACV;IACD,IAAI,KAAK,YAAY,wBAAU,EAAE;QAC/B,gFAAgF;QAChF,aAAa;QACb,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QACvE,0DAA0D;QAC1D,yEAAyE;QACzE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE;YACvC,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;KAClB;IACD,OAAO;AACT,CAAC;AAzBD,gCAyBC;AAED;;KAEK;AACL,SAAgB,OAAO,CAAC,KAA0B;IAChD,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;KACf;AACH,CAAC;AALD,0BAKC;AAED,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC"}
package/jest.config.js ADDED
@@ -0,0 +1,38 @@
1
+ module.exports = {
2
+ moduleFileExtensions: ['js', 'ts', 'tsx'],
3
+ moduleNameMapper: {
4
+ "@smartlyio/oats$": "<rootDir>/packages/oats/index.ts",
5
+ "@smartlyio/oats-runtime$": "<rootDir>/packages/oats-runtime/src/runtime.ts",
6
+ "@smartlyio/oats-axios-adapter$": "<rootDir>/packages/oats-axios-adapter/index.ts",
7
+ "@smartlyio/oats-koa-adapter$": "<rootDir>/packages/oats-koa-adapter/index.ts",
8
+ "@smartlyio/oats-fast-check$": "<rootDir>/packages/oats-fast-check/src/index.ts"
9
+ },
10
+
11
+ testRegex: '.*\\.spec.(tsx?)$',
12
+
13
+ collectCoverageFrom: [
14
+ 'packages/*/src/**/*.{ts,tsxx}',
15
+ '!packages/*/src/**/*.story.*'
16
+ ],
17
+
18
+ coverageThreshold: {
19
+ global: {
20
+ branches: 20,
21
+ statements: 20,
22
+ },
23
+ },
24
+
25
+ modulePathIgnorePatterns: ['<rootDir>/packages/*/dist'],
26
+
27
+ transform: {
28
+ '^.+\\.(ts|js)x?$': 'ts-jest',
29
+ },
30
+
31
+ globals: {
32
+ 'ts-jest': {
33
+ isolatedModules: true,
34
+ diagnostics: true,
35
+ },
36
+ },
37
+ setupFilesAfterEnv: [],
38
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartlyio/oats-runtime",
3
- "version": "4.3.1",
3
+ "version": "4.4.1-alpha.13+a478b4d",
4
4
  "license": "MIT",
5
5
  "description": "Runtime for Oats a Openapi3 based generator for typescript aware servers and clients",
6
6
  "private": false,
@@ -23,7 +23,9 @@
23
23
  },
24
24
  "dependencies": {
25
25
  "@smartlyio/safe-navigation": "^5.0.1",
26
- "@types/escape-html": "1.0.1",
26
+ "@types/encodeurl": "1.0.0",
27
+ "@types/escape-html": "1.0.2",
28
+ "encodeurl": "1.0.2",
27
29
  "escape-html": "1.0.3",
28
30
  "lodash": "^4.17.20"
29
31
  },
@@ -40,7 +42,7 @@
40
42
  "@types/jest": "27.4.1",
41
43
  "@types/lodash": "4.14.181",
42
44
  "@types/node": "16.11.26",
43
- "fast-check": "2.24.0",
45
+ "fast-check": "2.25.0",
44
46
  "jest": "27.5.1",
45
47
  "jsverify": "0.8.4",
46
48
  "prettier": "2.6.2",
@@ -49,5 +51,5 @@
49
51
  "tsconfig-paths": "3.14.1",
50
52
  "typescript": "4.6.3"
51
53
  },
52
- "gitHead": "e608b6e9286423d95792b9fe3a4e7158fa3f7d9b"
54
+ "gitHead": "a478b4d4badc9273f16834b201afb40160009064"
53
55
  }
package/src/client.ts CHANGED
@@ -184,7 +184,8 @@ function makeMethod(adapter: ClientAdapter, handler: server.Handler, pathParams:
184
184
  handler.body,
185
185
  handler.response,
186
186
  ctx =>
187
- adapter({ ...ctx, path: fillInPathParams(params, handler.path), servers: handler.servers })
187
+ adapter({ ...ctx, path: fillInPathParams(params, handler.path), servers: handler.servers }),
188
+ { mode: 'client' }
188
189
  );
189
190
  return (ctx: ClientArg<any, any, any>) =>
190
191
  call({
package/src/make.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  import { assert, fail } from './assert';
2
2
  import safe from '@smartlyio/safe-navigation';
3
3
  import * as _ from 'lodash';
4
+ import { isEqual, uniq } from 'lodash';
4
5
  import { ValueClass } from './value-class';
5
6
  import { NamedTypeDefinition, ObjectType, Type } from './reflection-type';
6
7
  import { discriminateUnion } from './union-discriminator';
7
- import { isEqual, uniq } from 'lodash';
8
+ import { getType, getTypeSet, withType } from './type-tag';
8
9
 
9
10
  export class MakeError extends Error {
10
11
  constructor(readonly errors: ValidationError[]) {
@@ -122,6 +123,9 @@ export interface MakeOptions {
122
123
  * (if query parameter is not repeated, it will not be an array on server side).
123
124
  */
124
125
  allowConvertForArrayType?: boolean;
126
+
127
+ /** If true convert property names from network to ts format while parsing objects */
128
+ convertFromNetwork?: boolean;
125
129
  }
126
130
 
127
131
  export type Maker<Shape, V> = (value: Shape, opts?: MakeOptions) => Make<V>;
@@ -363,16 +367,18 @@ export function makeOneOf(...options: any[]) {
363
367
  };
364
368
  }
365
369
 
366
- export function makeAllOf(...all: any[]) {
370
+ export function makeAllOf(...all: Maker<any, any>[]) {
367
371
  return (value: any, opts?: MakeOptions) => {
372
+ const types = [];
368
373
  for (const make of all) {
369
374
  const result: Make<any> = make(value, opts);
370
375
  if (result.isError()) {
371
376
  return result.errorPath('(allOf)');
372
377
  }
373
378
  value = result.success();
379
+ types.push(...(getTypeSet(value) ?? []));
374
380
  }
375
- return Make.ok(value);
381
+ return Make.ok(withType(value, types));
376
382
  };
377
383
  }
378
384
 
@@ -380,9 +386,42 @@ function isMagic(field: string) {
380
386
  return ['__proto__', 'constructor'].indexOf(field) >= 0;
381
387
  }
382
388
 
389
+ function getInputPropName(args: {
390
+ value: any;
391
+ index: string;
392
+ fromNetwork: Record<string, string>;
393
+ opts?: MakeOptions;
394
+ }) {
395
+ if (!args.opts?.convertFromNetwork) {
396
+ return args.index;
397
+ }
398
+ const types = getType(args.value) ?? [];
399
+ const networkProp = args.fromNetwork?.[args.index] ?? args.index;
400
+ for (const type of types) {
401
+ if (type.type !== 'object') {
402
+ // only objects can have network mappings
403
+ continue;
404
+ }
405
+ const mapped = type.properties[args.index];
406
+ if (mapped) {
407
+ // if the object was made already then network mapping has been done for listed properties
408
+ // and we should use the ts side property
409
+ assert(
410
+ networkProp == mapped.networkName,
411
+ `Network names for properties with the same name need to be equal when a object has multiple types. Mismatch in ${networkProp} and ${mapped.networkName}.`
412
+ );
413
+ return args.index;
414
+ }
415
+ }
416
+ return networkProp;
417
+ }
418
+
383
419
  export function makeObject<
384
420
  P extends { [key: string]: Maker<any, any> | { optional: Maker<any, any> } }
385
- >(props: P, additionalProp?: any, comparisorOrder?: string[]) {
421
+ >(props: P, additionalProp?: any, comparisorOrder?: string[], type?: ObjectType) {
422
+ const fromNetwork = fromNetworkMap(type);
423
+ const listedInputPropNames = new Set(Object.keys(props).map(prop => fromNetwork[prop] ?? prop));
424
+
386
425
  return (value: any, opts?: MakeOptions) => {
387
426
  if (typeof value !== 'object' || value == null || Array.isArray(value)) {
388
427
  return getErrorWithValueMsg('expected an object', value);
@@ -393,26 +432,32 @@ export function makeObject<
393
432
  if (isMagic(index)) {
394
433
  return error(`Using ${index} as field of an object is not allowed`);
395
434
  }
435
+ const inputPropName = getInputPropName({ opts, index, fromNetwork, value });
396
436
  let maker: any = props[index];
397
437
  if (!maker) {
398
438
  return error(`Prop maker not found for key ${index}. This is likely a bug in oats`);
399
439
  }
400
440
  if (maker.optional) {
401
- if (!(index in value) || value[index] === undefined) {
441
+ if (!(inputPropName in value) || value[inputPropName] === undefined) {
402
442
  continue;
403
443
  }
404
444
  maker = maker.optional;
405
445
  }
406
- const propResult: Make<any> = maker(value[index], opts);
446
+ const propResult: Make<any> = maker(value[inputPropName], opts);
407
447
  if (propResult.isError()) {
408
448
  return propResult.errorPath(index);
409
449
  }
410
450
  result[index] = propResult.success();
411
451
  }
412
452
  for (const index of Object.keys(value)) {
453
+ // do not consider props that got mapped
454
+ if (opts?.convertFromNetwork && listedInputPropNames.has(index)) {
455
+ continue;
456
+ }
413
457
  if (isMagic(index)) {
414
458
  return error(`Using ${index} as objects additional field is not allowed.`);
415
459
  }
460
+ // do not allow overriding mapped props
416
461
  if (props[index]) {
417
462
  continue;
418
463
  }
@@ -428,7 +473,7 @@ export function makeObject<
428
473
  }
429
474
  result[index] = propResult.success();
430
475
  }
431
- return Make.ok(result);
476
+ return Make.ok(withType(result, type ? [type] : []));
432
477
  };
433
478
  }
434
479
 
@@ -542,12 +587,26 @@ function priority(v: ObjectType['properties'][string]) {
542
587
  return Priority.NonScalar;
543
588
  }
544
589
 
590
+ function fromNetworkMap(type?: ObjectType) {
591
+ if (!type) {
592
+ return {};
593
+ }
594
+ const fromNetwork = Object.keys(type.properties).reduce<Record<string, string>>((memo, key) => {
595
+ const mapped = type.properties[key].networkName;
596
+ if (mapped) {
597
+ memo[key] = mapped;
598
+ }
599
+ return memo;
600
+ }, {});
601
+ return fromNetwork;
602
+ }
545
603
  function fromObjectReflection(type: ObjectType): Maker<any, any> {
546
604
  const comparisonOrder = Object.keys(type.properties).sort((aKey, bKey) => {
547
605
  const a = type.properties[aKey]!;
548
606
  const b = type.properties[bKey]!;
549
607
  return priority(a) - priority(b);
550
608
  });
609
+
551
610
  return makeObject(
552
611
  Object.entries(type.properties).reduce(
553
612
  (memo, [key, prop]) => ({
@@ -561,7 +620,8 @@ function fromObjectReflection(type: ObjectType): Maker<any, any> {
561
620
  ? makeAny()
562
621
  : fromReflection(type.additionalProperties)
563
622
  : undefined,
564
- comparisonOrder
623
+ comparisonOrder,
624
+ type
565
625
  );
566
626
  }
567
627
 
package/src/redirect.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { Response } from './server';
2
2
  import escapeHtml = require('escape-html');
3
+ import encodeUrl = require('encodeurl');
3
4
 
4
5
  const REDIRECT_STATUSES = [300, 301, 302, 303, 305, 307, 308] as const;
5
6
  const DEFAULT_REDIRECT_STATUS = 302;
@@ -26,6 +27,12 @@ type DefaultValue<ContentType extends string> = ContentType extends
26
27
  */
27
28
  type PreventGenericDefaultValueOverride<T> = [T][T extends unknown ? 0 : never];
28
29
 
30
+ /**
31
+ * Use to perform HTTP redirect.
32
+ * @param url an absolute or relative URL string. Will be encoded with `encodeurl` and set as "Location" header (@see https://github.com/pillarjs/encodeurl).
33
+ * @param options optional `status`, `contentType`, `value` that will override the default ones. Default `status` is 302, `contentType` is "text/html".
34
+ * @returns redirect server response.
35
+ */
29
36
  export function redirect<
30
37
  Status extends RedirectStatus = typeof DEFAULT_REDIRECT_STATUS,
31
38
  ContentType extends string = typeof TEXT_HTML_CONTENT_TYPE,
@@ -44,7 +51,7 @@ export function redirect<
44
51
  { Location: string }
45
52
  > {
46
53
  const { status = DEFAULT_REDIRECT_STATUS as Status } = options;
47
- const encodedUrl = encodeURI(url);
54
+ const encodedUrl = encodeUrl(url);
48
55
 
49
56
  if (!REDIRECT_STATUSES.includes(status)) {
50
57
  throw new Error(`Status "${status}" is not a redirect status.`);
@@ -96,6 +96,7 @@ export interface NamedType {
96
96
  export interface PropType {
97
97
  required: boolean;
98
98
  value: Type;
99
+ networkName?: string;
99
100
  }
100
101
 
101
102
  export interface Props {
@@ -0,0 +1,28 @@
1
+ import { getType } from './type-tag';
2
+
3
+ export function serialize(value: any): any {
4
+ if (Array.isArray(value)) {
5
+ return value.map(v => serialize(v));
6
+ }
7
+ const types = getType(value);
8
+ if (!types) {
9
+ return value;
10
+ }
11
+ return types.reduce((value, type) => {
12
+ switch (type.type) {
13
+ case 'object':
14
+ return Object.keys(value).reduce<Record<string, any>>((memo, key) => {
15
+ const prop = type.properties[key];
16
+ const networkProp = prop && prop.networkName ? prop.networkName : key;
17
+ // serializing the same value multiple times is ok but unnecessary so long
18
+ // as the mappings in different objects match. If that is not the case we are screwed.
19
+ if (memo[networkProp] === undefined) {
20
+ memo[networkProp] = serialize(value[key]);
21
+ }
22
+ return memo;
23
+ }, {});
24
+ default:
25
+ return value;
26
+ }
27
+ }, value);
28
+ }
package/src/server.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { assert } from './assert';
2
2
  import safeNavigation from '@smartlyio/safe-navigation';
3
3
  import { Make, MakeOptions, Maker, ValidationError, validationErrorPrinter } from './make';
4
+ import { serialize } from './serialize';
4
5
 
5
6
  export type { RedirectStatus } from './redirect';
6
7
 
@@ -128,17 +129,34 @@ function voidify(value: object | undefined | null) {
128
129
  return null;
129
130
  }
130
131
 
131
- function cleanHeaders<H>(maker: Maker<any, H>, headers: object) {
132
- const normalized = voidify(lowercaseObject(headers));
132
+ function cleanHeaders<H>(mode: Mode, maker: Maker<any, H>, headers: object) {
133
+ // note: we now expect that on client side headers are type conforming so do not need to lowercase those
134
+ // this is slightly breaking change is somebody has subverted the type checker
135
+ const normalized = voidify(mode === 'server' ? lowercaseObject(headers) : headers);
133
136
  const acceptsNull = maker(null);
134
137
  if (acceptsNull.isSuccess()) {
135
138
  return acceptsNull.success();
136
139
  }
137
140
  return maker(normalized, {
138
- unknownField: 'drop'
141
+ unknownField: 'drop',
142
+ convertFromNetwork: mode === 'server'
139
143
  }).success(throwRequestValidationError.bind(null, 'headers'));
140
144
  }
141
145
 
146
+ function serializeWhenClient(mode: Mode, value: any) {
147
+ if (mode === 'client') {
148
+ return serialize(value);
149
+ }
150
+ return value;
151
+ }
152
+
153
+ function getOutBody<Body extends RequestBody<any>>(mode: Mode, value: Body): Body {
154
+ if (!value) {
155
+ return value;
156
+ }
157
+ return { contentType: value.contentType, value: serializeWhenClient(mode, value.value) } as Body;
158
+ }
159
+
142
160
  export function safe<
143
161
  H extends Headers,
144
162
  P extends Params,
@@ -153,7 +171,7 @@ export function safe<
153
171
  body: Maker<any, Body>,
154
172
  response: Maker<any, R>,
155
173
  endpoint: Endpoint<H, P, Q, Body, R, RC>,
156
- { validationOptions = {} }: HandlerOptions = {}
174
+ { validationOptions = {}, mode }: HandlerOptions & InternalHandlerOptions = { mode: 'client' }
157
175
  ): Endpoint<
158
176
  Headers,
159
177
  Params,
@@ -163,24 +181,51 @@ export function safe<
163
181
  RequestContext
164
182
  > {
165
183
  return async ctx => {
184
+ // note: data coming to client adapter needs to be serialized and data coming from the adapter needs conversion from network
185
+ // note: data coming to server adapter needs to be deserialized and data coming from the adapter needs serialization
186
+ // this is all very clear.
187
+ const internalMakeOptions = { convertFromNetwork: mode === 'server' };
166
188
  const result = await endpoint({
167
189
  path: ctx.path,
168
190
  method: ctx.method,
169
191
  servers: ctx.servers,
170
192
  op: ctx.op,
171
- headers: cleanHeaders(headers, ctx.headers),
172
- params: params(voidify(ctx.params), validationOptions.params).success(
173
- throwRequestValidationError.bind(null, 'params')
193
+ headers: serializeWhenClient(mode, cleanHeaders(mode, headers, ctx.headers)),
194
+ // note: path params come to the adapter in network format always as those are gleaned from the path definition
195
+ params: params(voidify(ctx.params), {
196
+ ...validationOptions.params,
197
+ ...internalMakeOptions,
198
+ convertFromNetwork: true
199
+ }).success(throwRequestValidationError.bind(null, 'params')),
200
+ query: serializeWhenClient(
201
+ mode,
202
+ query(ctx.query || {}, { ...validationOptions.query, ...internalMakeOptions }).success(
203
+ throwRequestValidationError.bind(null, 'query')
204
+ )
174
205
  ),
175
- query: query(ctx.query || {}, validationOptions.query).success(
176
- throwRequestValidationError.bind(null, 'query')
206
+ body: getOutBody<Body>(
207
+ mode,
208
+ body(voidify(ctx.body), internalMakeOptions).success(
209
+ throwRequestValidationError.bind(null, 'body')
210
+ )
177
211
  ),
178
- body: body(voidify(ctx.body)).success(throwRequestValidationError.bind(null, 'body')),
179
212
  requestContext: ctx.requestContext as any
180
213
  });
181
- return response(result).success(
214
+ const responseValue = response(result, { convertFromNetwork: mode === 'client' }).success(
182
215
  throwResponseValidationError.bind(null, `body ${ctx.path}`, result.value.value)
183
216
  );
217
+ if (mode === 'client' || !responseValue) {
218
+ return responseValue;
219
+ }
220
+ // the response must be serialized for transferring from server to client
221
+ return {
222
+ ...responseValue,
223
+ headers: serialize(responseValue.headers),
224
+ value: {
225
+ ...responseValue.value,
226
+ value: serialize(responseValue.value.value)
227
+ }
228
+ };
184
229
  };
185
230
  }
186
231
 
@@ -202,7 +247,7 @@ interface CheckingTree {
202
247
  [method: string]: {
203
248
  safeHandler: (
204
249
  e: Endpoint<any, any, any, any, any, any>,
205
- opts?: HandlerOptions
250
+ opts?: HandlerOptions & InternalHandlerOptions
206
251
  ) => SafeEndpoint;
207
252
  op: string;
208
253
  servers: string[];
@@ -228,7 +273,10 @@ function createTree(handlers: Handler[]): CheckingTree {
228
273
  memo[element.path] = {};
229
274
  }
230
275
  memo[element.path][element.method] = {
231
- safeHandler: (e: Endpoint<any, any, any, any, any, any>, opts?: HandlerOptions) =>
276
+ safeHandler: (
277
+ e: Endpoint<any, any, any, any, any, any>,
278
+ opts?: HandlerOptions & InternalHandlerOptions
279
+ ) =>
232
280
  safe(
233
281
  element.headers,
234
282
  element.params,
@@ -260,6 +308,15 @@ export type ServerAdapter = (
260
308
  servers: string[]
261
309
  ) => void;
262
310
 
311
+ type Mode = 'client' | 'server';
312
+ export interface InternalHandlerOptions {
313
+ /** whether we are calling this on client side or in server side.
314
+ * This may have effect on eg network <-> ts property mapping.
315
+ * This value is set automatically by oats.
316
+ * */
317
+ mode: Mode;
318
+ }
319
+
263
320
  export interface HandlerOptions {
264
321
  /**
265
322
  * Options for request schema validation.
@@ -287,7 +344,7 @@ export function createHandlerFactory<Spec>(
287
344
  path,
288
345
  endpointWrapper.op,
289
346
  assertMethod(method),
290
- endpointWrapper.safeHandler(methodHandler, opts),
347
+ endpointWrapper.safeHandler(methodHandler, { ...opts, mode: 'server' }),
291
348
  endpointWrapper.servers
292
349
  );
293
350
  });
@@ -0,0 +1,63 @@
1
+ import { Type } from './reflection-type';
2
+ import { ValueClass } from './value-class';
3
+
4
+ export function withType<A>(to: A, type: Type[]): A {
5
+ if (type.length === 0) {
6
+ return to;
7
+ }
8
+ // todo: is it possible to confuse typing by re-use of valueclassed values
9
+ // eg. with value 'v: SomeValueClass' passing it to multiple makers
10
+ // -> no? the re-use happens only if the valueclass instance matches so it
11
+ // will not mutate the tagged reflection types
12
+ const previous = getTypeSet(to);
13
+ if (previous) {
14
+ type.forEach(type => previous.add(type));
15
+ return to;
16
+ }
17
+ const newType = new Set(type);
18
+ // tag each constructed object with a hidden type property
19
+ Object.defineProperty(to, reflection, {
20
+ enumerable: false,
21
+ value: newType
22
+ });
23
+ return to;
24
+ }
25
+
26
+ export function getTypeSet(value: Record<string, any>): Set<Type> | undefined {
27
+ if (!value || typeof value !== 'object') {
28
+ return;
29
+ }
30
+
31
+ // NOTE: prefer using the added reflection type instead of the contstructor type
32
+ // the added reflection type will have types from eg allOf
33
+ // @ts-ignore
34
+ const t: Set<Type> = value[reflection];
35
+ if (t && t.size > 0) {
36
+ return t;
37
+ }
38
+ if (value instanceof ValueClass) {
39
+ // a bit of leap here to trust that all ValueClasses have generated `reflection`
40
+ // @ts-ignore
41
+ const classType = new Set([value.constructor.reflection().definition]);
42
+ // tag each constructed object with a hidden type property
43
+ // this ensures that ValueClasses have a mutable reflection type property
44
+ Object.defineProperty(value, reflection, {
45
+ enumerable: false,
46
+ value: classType
47
+ });
48
+ return classType;
49
+ }
50
+ return;
51
+ }
52
+
53
+ /** Get reflection type from a made value.
54
+ * Note that only directly made object values or ValueClasses can be used
55
+ * */
56
+ export function getType(value: Record<string, any>): Type[] | undefined {
57
+ const t = getTypeSet(value);
58
+ if (t) {
59
+ return [...t];
60
+ }
61
+ }
62
+
63
+ const reflection = Symbol();