@fhevm/sdk 1.1.0-alpha.3 → 1.1.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/_cjs/core/_version.js +1 -1
  2. package/_cjs/core/base/auth.js +8 -6
  3. package/_cjs/core/base/auth.js.map +1 -1
  4. package/_cjs/core/base/errors/InvalidUrlError.js +17 -0
  5. package/_cjs/core/base/errors/InvalidUrlError.js.map +1 -0
  6. package/_cjs/core/base/fetch.js +37 -0
  7. package/_cjs/core/base/fetch.js.map +1 -1
  8. package/_cjs/core/base/string.js +10 -0
  9. package/_cjs/core/base/string.js.map +1 -1
  10. package/_cjs/core/modules/relayer/module/RelayerAsyncRequest.js +16 -7
  11. package/_cjs/core/modules/relayer/module/RelayerAsyncRequest.js.map +1 -1
  12. package/_cjs/core/modules/relayer/module/fetchCoprocessorSignatures.js +5 -2
  13. package/_cjs/core/modules/relayer/module/fetchCoprocessorSignatures.js.map +1 -1
  14. package/_cjs/core/modules/relayer/module/fetchDelegatedUserDecrypt.js +5 -1
  15. package/_cjs/core/modules/relayer/module/fetchDelegatedUserDecrypt.js.map +1 -1
  16. package/_cjs/core/modules/relayer/module/fetchFheEncryptionKeySource.js +10 -5
  17. package/_cjs/core/modules/relayer/module/fetchFheEncryptionKeySource.js.map +1 -1
  18. package/_cjs/core/modules/relayer/module/fetchPublicDecrypt.js +5 -1
  19. package/_cjs/core/modules/relayer/module/fetchPublicDecrypt.js.map +1 -1
  20. package/_cjs/core/modules/relayer/module/fetchUserDecrypt.js +5 -1
  21. package/_cjs/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
  22. package/_cjs/core/modules/relayer/module/relayerUrl.js +33 -27
  23. package/_cjs/core/modules/relayer/module/relayerUrl.js.map +1 -1
  24. package/_cjs/wasm/tfhe/loadTfheLib.js.map +1 -1
  25. package/_cjs/wasm/tkms/loadKmsLib.js.map +1 -1
  26. package/_esm/core/_version.js +1 -1
  27. package/_esm/core/base/auth.js +8 -6
  28. package/_esm/core/base/auth.js.map +1 -1
  29. package/_esm/core/base/errors/InvalidUrlError.js +13 -0
  30. package/_esm/core/base/errors/InvalidUrlError.js.map +1 -0
  31. package/_esm/core/base/fetch.js +96 -0
  32. package/_esm/core/base/fetch.js.map +1 -1
  33. package/_esm/core/base/string.js +9 -0
  34. package/_esm/core/base/string.js.map +1 -1
  35. package/_esm/core/modules/relayer/module/RelayerAsyncRequest.js +17 -13
  36. package/_esm/core/modules/relayer/module/RelayerAsyncRequest.js.map +1 -1
  37. package/_esm/core/modules/relayer/module/fetchCoprocessorSignatures.js +5 -2
  38. package/_esm/core/modules/relayer/module/fetchCoprocessorSignatures.js.map +1 -1
  39. package/_esm/core/modules/relayer/module/fetchDelegatedUserDecrypt.js +6 -2
  40. package/_esm/core/modules/relayer/module/fetchDelegatedUserDecrypt.js.map +1 -1
  41. package/_esm/core/modules/relayer/module/fetchFheEncryptionKeySource.js +12 -7
  42. package/_esm/core/modules/relayer/module/fetchFheEncryptionKeySource.js.map +1 -1
  43. package/_esm/core/modules/relayer/module/fetchPublicDecrypt.js +6 -2
  44. package/_esm/core/modules/relayer/module/fetchPublicDecrypt.js.map +1 -1
  45. package/_esm/core/modules/relayer/module/fetchUserDecrypt.js +6 -2
  46. package/_esm/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
  47. package/_esm/core/modules/relayer/module/relayerUrl.js +55 -27
  48. package/_esm/core/modules/relayer/module/relayerUrl.js.map +1 -1
  49. package/_types/core/base/auth.d.ts.map +1 -1
  50. package/_types/core/base/errors/InvalidUrlError.d.ts +14 -0
  51. package/_types/core/base/errors/InvalidUrlError.d.ts.map +1 -0
  52. package/_types/core/base/fetch.d.ts +57 -0
  53. package/_types/core/base/fetch.d.ts.map +1 -1
  54. package/_types/core/base/string.d.ts +1 -0
  55. package/_types/core/base/string.d.ts.map +1 -1
  56. package/_types/core/modules/relayer/module/RelayerAsyncRequest.d.ts +1 -0
  57. package/_types/core/modules/relayer/module/RelayerAsyncRequest.d.ts.map +1 -1
  58. package/_types/core/modules/relayer/module/fetchCoprocessorSignatures.d.ts.map +1 -1
  59. package/_types/core/modules/relayer/module/fetchDelegatedUserDecrypt.d.ts.map +1 -1
  60. package/_types/core/modules/relayer/module/fetchFheEncryptionKeySource.d.ts.map +1 -1
  61. package/_types/core/modules/relayer/module/fetchPublicDecrypt.d.ts.map +1 -1
  62. package/_types/core/modules/relayer/module/fetchUserDecrypt.d.ts.map +1 -1
  63. package/_types/core/modules/relayer/module/relayerUrl.d.ts +24 -5
  64. package/_types/core/modules/relayer/module/relayerUrl.d.ts.map +1 -1
  65. package/_types/core/types/relayer.d.ts +1 -0
  66. package/_types/core/types/relayer.d.ts.map +1 -1
  67. package/core/_version.ts +1 -1
  68. package/core/base/auth.ts +8 -6
  69. package/core/base/errors/InvalidUrlError.ts +24 -0
  70. package/core/base/fetch.ts +102 -0
  71. package/core/base/string.ts +10 -0
  72. package/core/modules/relayer/module/RelayerAsyncRequest.ts +19 -17
  73. package/core/modules/relayer/module/fetchCoprocessorSignatures.ts +6 -2
  74. package/core/modules/relayer/module/fetchDelegatedUserDecrypt.ts +7 -2
  75. package/core/modules/relayer/module/fetchFheEncryptionKeySource.ts +12 -7
  76. package/core/modules/relayer/module/fetchPublicDecrypt.ts +7 -2
  77. package/core/modules/relayer/module/fetchUserDecrypt.ts +7 -2
  78. package/core/modules/relayer/module/relayerUrl.ts +66 -27
  79. package/core/types/relayer.ts +1 -0
  80. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../../core/base/string.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAKjE,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ1E;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAEnD;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAE9C;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,YAAY,CAAC,CAAC;AAC/F,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,CAAC;AAKnD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,QAAQ,CAAC,CAAC;AAC3F,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;AAK5C,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAIvE;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAKxD;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,IAAI,MAAM,CAMtE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,wBAAwB,CAAC,CAAC,CAAC,CAKlH;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,MAAM,EACzD,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,CAAC,EACX,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,GAAG,mBAAmB,GACnE,OAAO,CAAC,MAAM,IAAI,wBAAwB,CAAC,CAAC,CAAC,CAkD/C;AAED,wBAAgB,+BAA+B,CAAC,CAAC,SAAS,MAAM,EAC9D,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,CAAC,EACX,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,MAAM,IAAI,6BAA6B,CAAC,CAAC,CAAC,CAiBpD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKvD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAM7E"}
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../../core/base/string.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAKjE,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ1E;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ1E;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAEnD;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAE9C;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,YAAY,CAAC,CAAC;AAC/F,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,CAAC;AAKnD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,QAAQ,CAAC,CAAC;AAC3F,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;AAK5C,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAIvE;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAKxD;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,IAAI,MAAM,CAMtE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,wBAAwB,CAAC,CAAC,CAAC,CAKlH;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,MAAM,EACzD,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,CAAC,EACX,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,GAAG,mBAAmB,GACnE,OAAO,CAAC,MAAM,IAAI,wBAAwB,CAAC,CAAC,CAAC,CAkD/C;AAED,wBAAgB,+BAA+B,CAAC,CAAC,SAAS,MAAM,EAC9D,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,CAAC,EACX,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,MAAM,IAAI,6BAA6B,CAAC,CAAC,CAAC,CAiBpD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKvD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAM7E"}
@@ -30,6 +30,7 @@ export declare class RelayerAsyncRequest {
30
30
  private readonly _url;
31
31
  private readonly _payload;
32
32
  private readonly _fhevmAuth;
33
+ private readonly _customHeaders;
33
34
  private _retryAfterTimeoutPromiseFuncReject?;
34
35
  private readonly _onProgress?;
35
36
  private readonly _requestMaxDurationInMs;
@@ -1 +1 @@
1
- {"version":3,"file":"RelayerAsyncRequest.d.ts","sourceRoot":"","sources":["../../../../../core/modules/relayer/module/RelayerAsyncRequest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,wBAAwB,EAQxB,sBAAsB,EACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAEV,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,kCAAkC,EAGlC,wBAAwB,EAExB,oBAAoB,EAOpB,2BAA2B,EAE3B,yBAAyB,EAE1B,MAAM,2BAA2B,CAAC;AAuEnC,KAAK,yBAAyB,GAAG;IAC/B,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,wBAAwB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/C,OAAO,CAAC,EACJ,wBAAwB,GACxB,yBAAyB,GACzB,kCAAkC,GAClC,2BAA2B,GAC3B,SAAS,CAAC;CACf,CAAC;AAEF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAuB;IACzD,OAAO,CAAC,wBAAwB,CAA8B;IAC9D,OAAO,CAAC,oBAAoB,CAA0B;IACtD,OAAO,CAAC,oBAAoB,CAA0B;IACtD,OAAO,CAAC,gBAAgB,CAAqC;IAC7D,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAS;IACxD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,oBAAoB,CAA4C;IACxE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,mCAAmC,CAAC,CAA2C;IACvF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAQf;IACd,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAS;IACjD,OAAO,CAAC,sBAAsB,CAAqB;IACnD,OAAO,CAAC,uBAAuB,CAA4C;IAC3E,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAU;IAIpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IACtD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IAEtD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iCAAiC,CAAkB;IAC3E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAW;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAqC;IAG3E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAK;gBAE5B,MAAM,EAAE,yBAAyB;IAmE7C;;;;;;;;;;;;;;;OAeG;IACU,GAAG,CAAC,MAAM,CAAC,EAAE;QACxB,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,qBAAqB,GAAG,wBAAwB,GAAG,sBAAsB,CAAC;IAiGtF,OAAO,CAAC,YAAY;IAIb,MAAM,IAAI,IAAI;IAkBrB,IAAW,KAAK,IAAI,wBAAwB,CAE3C;IAED,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED,IAAW,eAAe,IAAI,sBAAsB,GAAG,SAAS,CAE/D;IAED,IAAW,cAAc,IAAI,OAAO,CAEnC;IAED,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED,IAAW,WAAW,IAAI,MAAM,GAAG,SAAS,CAE3C;IAED,IAAW,aAAa,IAAI,MAAM,GAAG,SAAS,CAK7C;IAED,IAAW,UAAU,IAAI,MAAM,CAE9B;YAOa,YAAY;YA4PZ,WAAW;IA8WzB;;;OAGG;YACW,gBAAgB;IAoB9B,OAAO,CAAC,6BAA6B;IAgCrC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,aAAa;IAQrB,OAAO,KAAK,KAAK,GAGhB;IAMD;;;;;;;;OAQG;YACW,eAAe;IA2B7B;;;OAGG;YACW,UAAU;IAqExB;;;OAGG;YACW,SAAS;IAoEvB,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CA0BzC;IAGF,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAkCzC;IAMF;;OAEG;IACH,OAAO,CAAC,UAAU;YA+CJ,qBAAqB;IAyCnC,OAAO,CAAC,0BAA0B;IA+BlC,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,2BAA2B;IA8BnC,OAAO,CAAC,6BAA6B;IAerC,OAAO,CAAC,4BAA4B;IA6BpC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAwB/B;;;OAGG;IACH,OAAO,CAAC,6BAA6B;IA6CrC,OAAO,CAAC,OAAO;IAMf;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;;OAGG;IACH,OAAO,CAAC,8BAA8B;IAiBtC;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,MAAM;CAKf"}
1
+ {"version":3,"file":"RelayerAsyncRequest.d.ts","sourceRoot":"","sources":["../../../../../core/modules/relayer/module/RelayerAsyncRequest.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetchCoprocessorSignatures.d.ts","sourceRoot":"","sources":["../../../../../core/modules/relayer/module/fetchCoprocessorSignatures.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,oCAAoC,EACpC,oCAAoC,EACpC,wBAAwB,EACzB,MAAM,aAAa,CAAC;AAUrB,wBAAsB,0BAA0B,CAC9C,aAAa,EAAE,wBAAwB,EACvC,UAAU,EAAE,oCAAoC,GAC/C,OAAO,CAAC,oCAAoC,CAAC,CAyB/C"}
1
+ {"version":3,"file":"fetchCoprocessorSignatures.d.ts","sourceRoot":"","sources":["../../../../../core/modules/relayer/module/fetchCoprocessorSignatures.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,oCAAoC,EACpC,oCAAoC,EACpC,wBAAwB,EACzB,MAAM,aAAa,CAAC;AAUrB,wBAAsB,0BAA0B,CAC9C,aAAa,EAAE,wBAAwB,EACvC,UAAU,EAAE,oCAAoC,GAC/C,OAAO,CAAC,oCAAoC,CAAC,CA6B/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetchDelegatedUserDecrypt.d.ts","sourceRoot":"","sources":["../../../../../core/modules/relayer/module/fetchDelegatedUserDecrypt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,mCAAmC,EACnC,mCAAmC,EACnC,wBAAwB,EACzB,MAAM,aAAa,CAAC;AASrB,wBAAsB,yBAAyB,CAC7C,aAAa,EAAE,wBAAwB,EACvC,UAAU,EAAE,mCAAmC,GAC9C,OAAO,CAAC,mCAAmC,CAAC,CAgD9C"}
1
+ {"version":3,"file":"fetchDelegatedUserDecrypt.d.ts","sourceRoot":"","sources":["../../../../../core/modules/relayer/module/fetchDelegatedUserDecrypt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,mCAAmC,EACnC,mCAAmC,EACnC,wBAAwB,EACzB,MAAM,aAAa,CAAC;AAUrB,wBAAsB,yBAAyB,CAC7C,aAAa,EAAE,wBAAwB,EACvC,UAAU,EAAE,mCAAmC,GAC9C,OAAO,CAAC,mCAAmC,CAAC,CAoD9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetchFheEncryptionKeySource.d.ts","sourceRoot":"","sources":["../../../../../core/modules/relayer/module/fetchFheEncryptionKeySource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qCAAqC,EACrC,qCAAqC,EACrC,aAAa,EACd,MAAM,aAAa,CAAC;AAarB,wBAAsB,2BAA2B,CAC/C,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,qCAAqC,GAChD,OAAO,CAAC,qCAAqC,CAAC,CAyEhD"}
1
+ {"version":3,"file":"fetchFheEncryptionKeySource.d.ts","sourceRoot":"","sources":["../../../../../core/modules/relayer/module/fetchFheEncryptionKeySource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qCAAqC,EACrC,qCAAqC,EACrC,aAAa,EACd,MAAM,aAAa,CAAC;AAerB,wBAAsB,2BAA2B,CAC/C,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,qCAAqC,GAChD,OAAO,CAAC,qCAAqC,CAAC,CA4EhD"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetchPublicDecrypt.d.ts","sourceRoot":"","sources":["../../../../../core/modules/relayer/module/fetchPublicDecrypt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAQxH,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,wBAAwB,EACvC,UAAU,EAAE,4BAA4B,GACvC,OAAO,CAAC,4BAA4B,CAAC,CAyBvC"}
1
+ {"version":3,"file":"fetchPublicDecrypt.d.ts","sourceRoot":"","sources":["../../../../../core/modules/relayer/module/fetchPublicDecrypt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AASxH,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,wBAAwB,EACvC,UAAU,EAAE,4BAA4B,GACvC,OAAO,CAAC,4BAA4B,CAAC,CA6BvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetchUserDecrypt.d.ts","sourceRoot":"","sources":["../../../../../core/modules/relayer/module/fetchUserDecrypt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAQpH,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,wBAAwB,EACvC,UAAU,EAAE,0BAA0B,GACrC,OAAO,CAAC,0BAA0B,CAAC,CAiDrC"}
1
+ {"version":3,"file":"fetchUserDecrypt.d.ts","sourceRoot":"","sources":["../../../../../core/modules/relayer/module/fetchUserDecrypt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AASpH,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,wBAAwB,EACvC,UAAU,EAAE,0BAA0B,GACrC,OAAO,CAAC,0BAA0B,CAAC,CAqDrC"}
@@ -1,6 +1,25 @@
1
- export declare const ZamaMainnetRelayerBaseUrl = "https://relayer.mainnet.zama.org";
2
- export declare const ZamaMainnetRelayerUrlV2 = "https://relayer.mainnet.zama.org/v2";
3
- export declare const ZamaSepoliaRelayerBaseUrl = "https://relayer.testnet.zama.org";
4
- export declare const ZamaSepoliaRelayerUrlV2 = "https://relayer.testnet.zama.org/v2";
5
- export declare function parseZamaRelayerUrl(relayerUrl: unknown): string | null;
1
+ /**
2
+ * Validates and normalizes a relayer URL before it's used to build the request.
3
+ *
4
+ * Validation:
5
+ * - non-empty string
6
+ * - parses as a URL
7
+ * - protocol is `http:` or `https:`
8
+ * - contains no userinfo (`user:pass@host`)
9
+ * - contains no query string or fragment (they would corrupt path concatenation)
10
+ * - if `hasAuth` is true, requires `https:` unless the host is localhost
11
+ *
12
+ * Normalization (via WHATWG `URL`):
13
+ * - scheme and host lower-cased
14
+ * - default ports collapsed (`:443` for https, `:80` for http)
15
+ * - path percent-encoded canonically
16
+ * - bare-origin URLs get a single trailing `/` (`https://x` → `https://x/`)
17
+ *
18
+ * Throws {@link InvalidUrlError} on any failure so the caller surfaces a
19
+ * uniform error type.
20
+ *
21
+ * @returns The normalized URL object.
22
+ */
23
+ export declare function validateRelayerBaseUrl(relayerUrl: unknown, hasAuth: boolean): URL;
24
+ export declare function buildRelayerUrlString(relayerBaseUrl: URL, path: string): string;
6
25
  //# sourceMappingURL=relayerUrl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"relayerUrl.d.ts","sourceRoot":"","sources":["../../../../../core/modules/relayer/module/relayerUrl.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAC5E,eAAO,MAAM,uBAAuB,wCAAoC,CAAC;AAEzE,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAC5E,eAAO,MAAM,uBAAuB,wCAAoC,CAAC;AAEzE,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CA6BtE"}
1
+ {"version":3,"file":"relayerUrl.d.ts","sourceRoot":"","sources":["../../../../../core/modules/relayer/module/relayerUrl.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,GAAG,CA2CjF;AAED,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK/E"}
@@ -23,6 +23,7 @@ export type FetchUserDecryptResult = readonly FetchUserDecryptResultItem[];
23
23
  export type FetchDelegatedUserDecryptResult = readonly FetchUserDecryptResultItem[];
24
24
  export type RelayerCommonOptions = {
25
25
  auth?: Auth | undefined;
26
+ headers?: Record<string, string>;
26
27
  debug?: boolean | undefined;
27
28
  fetchRetries?: number | undefined;
28
29
  fetchRetryDelayInMilliseconds?: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"relayer.d.ts","sourceRoot":"","sources":["../../../core/types/relayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,MAAM,oBAAoB,GAAG,GAAG,GAAG,GAAG,CAAC;AAC7C,MAAM,MAAM,oBAAoB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAErE,MAAM,MAAM,qBAAqB,GAAG;IAElC,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IAEzC,QAAQ,CAAC,UAAU,EAAE,SAAS,UAAU,EAAE,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,UAAU,EAAE,SAAS,YAAY,EAAE,CAAC;IAC7C,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;CAC9B,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG,SAAS,0BAA0B,EAAE,CAAC;AAC3E,MAAM,MAAM,+BAA+B,GAAG,SAAS,0BAA0B,EAAE,CAAC;AAMpF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,6BAA6B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CACzC,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,GAAG;IACtC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,yBAAyB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACtE,CACF,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAC7C,oBAAoB,GAAG;IACrB,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,6BAA6B,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC1E,CACF,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAC9C,oBAAoB,GAAG;IACrB,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,8BAA8B,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC3E,CACF,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG,QAAQ,CACvD,oBAAoB,GAAG;IACrB,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,uCAAuC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACpF,CACF,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,QAAQ,CAChD,oBAAoB,GAAG;IACrB,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,gCAAgC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC7E,CACF,CAAC;AAMF,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;AAE7G,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG,gBAAgB,GAAG,cAAc,GAAG,wBAAwB,CAAC;AAEhH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,oBAAoB,IAAI,CAAC,SAAS,aAAa,GAC/E,qBAAqB,GACrB,CAAC,SAAS,gBAAgB,GACxB,wBAAwB,GACxB,sBAAsB,CAAC;AAE7B,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,oBAAoB,IAC1D,qBAAqB,CAAC,CAAC,CAAC,GACxB,wBAAwB,CAAC,CAAC,CAAC,GAC3B,wBAAwB,CAAC,CAAC,CAAC,GAC3B,sBAAsB,CAAC,CAAC,CAAC,GACzB,oBAAoB,CAAC,CAAC,CAAC,GACvB,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAE7B,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,6BAA6B,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;AAC/E,MAAM,MAAM,8BAA8B,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;AACjF,MAAM,MAAM,uCAAuC,GAAG,mBAAmB,CAAC,wBAAwB,CAAC,CAAC;AACpG,MAAM,MAAM,gCAAgC,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;AAErF,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,wBAAwB,EAAE,CAAC,SAAS,oBAAoB,IAAI;IACpG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,yBAAyB,CACnC,CAAC,SAAS,wBAAwB,EAClC,CAAC,SAAS,oBAAoB,EAC9B,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,IACnD,QAAQ,CACV,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;CACpB,CACF,CAAC;AAEF,MAAM,MAAM,wBAAwB,CAClC,CAAC,SAAS,wBAAwB,EAClC,CAAC,SAAS,oBAAoB,EAC9B,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,IACnD,QAAQ,CACV,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CACF,CAAC;AAGF,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,oBAAoB,IAAI,QAAQ,CAC1E,wBAAwB,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CACF,CAAC;AAEF,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,oBAAoB,IAAI,QAAQ,CAC7E,yBAAyB,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE;QACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH,CACF,CAAC;AAEF,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,oBAAoB,IAAI,QAAQ,CAC7E,wBAAwB,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CACnC,CACF,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAC/B,CAAC,SAAS,oBAAoB,EAC9B,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,IACnD,QAAQ,CACV,yBAAyB,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE;QACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH,CACF,CAAC;AAEF,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,oBAAoB,IAAI,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;AAEjH,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,oBAAoB,IAAI,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"relayer.d.ts","sourceRoot":"","sources":["../../../core/types/relayer.ts"],"names":[],"mappings":"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"}
package/core/_version.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  // This file is auto-generated
2
- export const version: string = '1.1.0-alpha.3';
2
+ export const version: string = '1.1.0-alpha.4';
3
3
  export const sdkName: string = '@fhevm/sdk';
package/core/base/auth.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { Auth } from '../types/auth.js';
2
+ import { normalizeHeaderName, validateHeaderValue } from './fetch.js';
2
3
  import { isNonEmptyString } from './string.js';
3
4
 
4
5
  /**
@@ -12,23 +13,24 @@ export function setAuth(init: RequestInit, auth?: Auth): RequestInit {
12
13
  if (auth) {
13
14
  switch (auth.type) {
14
15
  case 'BearerToken': {
15
- (init.headers as Record<string, string>).Authorization = `Bearer ${auth.token}`;
16
+ (init.headers as Record<string, string>).authorization = `Bearer ${validateHeaderValue(auth.token)}`;
16
17
  break;
17
18
  }
18
19
 
19
20
  case 'ApiKeyHeader': {
20
- const h = isNonEmptyString(auth.header) ? auth.header : 'x-api-key';
21
- (init.headers as Record<string, string>)[h] = auth.value;
21
+ const h = isNonEmptyString(auth.header) ? normalizeHeaderName(auth.header) : 'x-api-key';
22
+ (init.headers as Record<string, string>)[h] = validateHeaderValue(auth.value);
22
23
  break;
23
24
  }
24
25
 
25
26
  case 'ApiKeyCookie': {
26
- const h = isNonEmptyString(auth.cookie) ? auth.cookie : 'x-api-key';
27
+ const h = isNonEmptyString(auth.cookie) ? normalizeHeaderName(auth.cookie) : 'x-api-key';
28
+ const v = validateHeaderValue(auth.value);
27
29
  if (typeof window !== 'undefined') {
28
- document.cookie = `${h}=${auth.value}; path=/; SameSite=Lax; Secure; HttpOnly;`;
30
+ document.cookie = `${h}=${v}; path=/; SameSite=Lax; Secure; HttpOnly;`;
29
31
  init.credentials = 'include';
30
32
  } else {
31
- (init.headers as Record<string, string>).Cookie = `${h}=${auth.value};`;
33
+ (init.headers as Record<string, string>).cookie = `${h}=${v};`;
32
34
  }
33
35
  break;
34
36
  }
@@ -0,0 +1,24 @@
1
+ import type { ErrorMetadataParams } from './ErrorBase.js';
2
+ import { ErrorBase } from './ErrorBase.js';
3
+ import { ensureError } from './utils.js';
4
+
5
+ export type InvalidUrlErrorType = InvalidUrlError & {
6
+ name: 'InvalidUrlError';
7
+ };
8
+
9
+ export type InvalidUrlErrorParams = Readonly<{
10
+ url?: string;
11
+ message?: string;
12
+ cause?: unknown;
13
+ }>;
14
+
15
+ export class InvalidUrlError extends ErrorBase {
16
+ constructor(params: InvalidUrlErrorParams, options: ErrorMetadataParams) {
17
+ super({
18
+ ...options,
19
+ message: params.message ?? (params.url !== undefined ? `Url "${params.url}" is invalid.` : 'Url is invalid.'),
20
+ ...(params.cause !== undefined ? { cause: ensureError(params.cause) } : {}),
21
+ name: 'InvalidUrlError',
22
+ });
23
+ }
24
+ }
@@ -282,3 +282,105 @@ async function _isDataUrlFetchSupported(): Promise<boolean> {
282
282
  return false;
283
283
  }
284
284
  }
285
+
286
+ ////////////////////////////////////////////////////////////////////////////////
287
+
288
+ /**
289
+ * RFC 7230 `token` grammar restricted to lower-case (since names are normalized).
290
+ * tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" / "." /
291
+ * "^" / "_" / "`" / "|" / "~" / DIGIT / ALPHA
292
+ * Rejects whitespace, CR/LF, colons, and any non-ASCII characters.
293
+ */
294
+ const HEADER_NAME_RE = /^[!#$%&'*+\-.^_`|~0-9a-z]+$/;
295
+
296
+ /** RFC 7230 forbids CR, LF, and NUL in header values (CRLF-injection vector). */
297
+ const HEADER_VALUE_FORBIDDEN_RE = /[\r\n\0]/;
298
+
299
+ /**
300
+ * Lower-cases a header name and validates it against the RFC 7230 `token` grammar.
301
+ * Throws if the input is not a non-empty string of valid token characters.
302
+ *
303
+ * @param name - The header name to normalize.
304
+ * @returns The lower-cased, validated header name.
305
+ * @throws Error When `name` is not a string or contains characters outside RFC 7230 `token`.
306
+ *
307
+ * @example
308
+ * normalizeHeaderName('Content-Type'); // → 'content-type'
309
+ * normalizeHeaderName('X-Bad\r\nInject'); // throws
310
+ */
311
+ export function normalizeHeaderName(name: string): string {
312
+ const lower = name.toLowerCase();
313
+ if (!HEADER_NAME_RE.test(lower)) {
314
+ throw new Error(`normalizeHeaderName: invalid header name ${JSON.stringify(name)}`);
315
+ }
316
+ return lower;
317
+ }
318
+
319
+ /**
320
+ * Validates a header value against the CRLF-injection forbidden set (`\r`, `\n`, `\0`).
321
+ * Returns the value unchanged when valid, so it can be used inline at the assignment site.
322
+ *
323
+ * @param value - The header value to validate.
324
+ * @returns The same `value`, unchanged.
325
+ * @throws Error When `value` contains CR, LF, or NUL.
326
+ *
327
+ * @example
328
+ * headers.authorization = `Bearer ${validateHeaderValue(token)}`;
329
+ * validateHeaderValue('bad\r\nInjected: x'); // throws
330
+ */
331
+ export function validateHeaderValue(value: string): string {
332
+ if (HEADER_VALUE_FORBIDDEN_RE.test(value)) {
333
+ throw new Error(`validateHeaderValue: header value contains CR, LF, or NUL`);
334
+ }
335
+ return value;
336
+ }
337
+
338
+ /**
339
+ * Returns a new header record with keys lower-cased and non-string values dropped.
340
+ * Validates each header name against the RFC 7230 `token` grammar and rejects
341
+ * values containing CR, LF, or NUL (CRLF-injection vectors).
342
+ * Throws if two input keys lower-case to the same name (e.g. `Authorization` and
343
+ * `authorization`) — collision detection runs before value filtering.
344
+ * Non-object inputs (`null`, primitives, arrays) return `{}`.
345
+ *
346
+ * @param headers - Arbitrary value; only plain enumerable string-keyed objects
347
+ * are processed. Anything else yields `{}`.
348
+ * @returns A fresh, lower-cased header record with string values only.
349
+ * @throws Error When a header name violates RFC 7230, a value contains CR/LF/NUL,
350
+ * or two input keys differ only in case.
351
+ *
352
+ * @example
353
+ * normalizeHeaders({ 'Content-Type': 'application/json', Authorization: 'Bearer x' });
354
+ * // → { 'content-type': 'application/json', authorization: 'Bearer x' }
355
+ *
356
+ * @example
357
+ * normalizeHeaders({ Authorization: 'a', authorization: 'b' });
358
+ * // throws: keys 'Authorization' and 'authorization' both lower-case to 'authorization'
359
+ *
360
+ * @example
361
+ * normalizeHeaders({ 'X-Bad\r\nInject': 'x' });
362
+ * // throws: invalid header name
363
+ *
364
+ * @example
365
+ * normalizeHeaders({ foo: 'bar', count: 42, missing: undefined });
366
+ * // → { foo: 'bar' } (non-string values dropped)
367
+ */
368
+ export function normalizeHeaders(headers: unknown): Readonly<Record<string, string>> {
369
+ if (headers === null || typeof headers !== 'object' || Array.isArray(headers)) {
370
+ return {};
371
+ }
372
+ const firstSeen = new Map<string, string>();
373
+ const result: Record<string, string> = {};
374
+ for (const [key, value] of Object.entries(headers)) {
375
+ const lowerKey = normalizeHeaderName(key);
376
+ const previousKey = firstSeen.get(lowerKey);
377
+ if (previousKey !== undefined) {
378
+ throw new Error(`normalizeHeaders: keys '${previousKey}' and '${key}' both lower-case to '${lowerKey}'`);
379
+ }
380
+ firstSeen.set(lowerKey, key);
381
+ if (typeof value === 'string') {
382
+ result[lowerKey] = validateHeaderValue(value);
383
+ }
384
+ }
385
+ return result;
386
+ }
@@ -15,6 +15,16 @@ export function removeSuffix(s: string | undefined, suffix: string): string {
15
15
  return s.endsWith(suffix) ? s.slice(0, -suffix.length) : s;
16
16
  }
17
17
 
18
+ export function removePrefix(s: string | undefined, prefix: string): string {
19
+ if (s === undefined) {
20
+ return '';
21
+ }
22
+ if (prefix.length === 0) {
23
+ return s;
24
+ }
25
+ return s.startsWith(prefix) ? s.substring(prefix.length) : s;
26
+ }
27
+
18
28
  export function is0x(s: unknown): s is `0x${string}` {
19
29
  return typeof s === 'string' && s.startsWith('0x');
20
30
  }
@@ -37,7 +37,7 @@ import { sdkName, version } from '../../../_version.js';
37
37
  import { setAuth } from '../../../base/auth.js';
38
38
  import { InvalidPropertyError } from '../../../base/errors/InvalidPropertyError.js';
39
39
  import { assertNever } from '../../../base/errors/utils.js';
40
- import { formatFetchErrorMetaMessages } from '../../../base/fetch.js';
40
+ import { formatFetchErrorMetaMessages, normalizeHeaders } from '../../../base/fetch.js';
41
41
  import { isNonEmptyString, safeJSONstringify } from '../../../base/string.js';
42
42
  import { isUint } from '../../../base/uint.js';
43
43
  import { RelayerAbortError } from '../../../errors/RelayerAbortError.js';
@@ -139,6 +139,7 @@ export class RelayerAsyncRequest {
139
139
  private readonly _url: string;
140
140
  private readonly _payload: Record<string, unknown>;
141
141
  private readonly _fhevmAuth: Auth | undefined;
142
+ private readonly _customHeaders: Record<string, string> | undefined;
142
143
  private _retryAfterTimeoutPromiseFuncReject?: ((reason?: unknown) => void) | undefined;
143
144
  private readonly _onProgress?:
144
145
  | ((
@@ -206,6 +207,7 @@ export class RelayerAsyncRequest {
206
207
  this._payload = params.payload;
207
208
  this._debug = params.options?.debug === true;
208
209
  this._fhevmAuth = params.options?.auth;
210
+ this._customHeaders = normalizeHeaders(params.options?.headers);
209
211
  this._onProgress = params.options?.onProgress as typeof this._onProgress;
210
212
  this._state = {
211
213
  aborted: false,
@@ -1197,9 +1199,10 @@ export class RelayerAsyncRequest {
1197
1199
  {
1198
1200
  method: 'POST',
1199
1201
  headers: {
1200
- 'Content-Type': 'application/json',
1201
- 'ZAMA-SDK-VERSION': version,
1202
- 'ZAMA-SDK-NAME': sdkName,
1202
+ ...this._customHeaders,
1203
+ 'content-type': 'application/json',
1204
+ 'zama-sdk-version': version,
1205
+ 'zama-sdk-name': sdkName,
1203
1206
  },
1204
1207
  body: JSON.stringify(this._payload),
1205
1208
  ...(this._internalAbortSignal ? { signal: this._internalAbortSignal } : {}),
@@ -1265,19 +1268,18 @@ export class RelayerAsyncRequest {
1265
1268
 
1266
1269
  this._trace('_fetchGet', `jobId=${this.jobId}`);
1267
1270
 
1268
- // Do not include API key here!
1269
- // API key is only required on POST (by design).
1270
- // This is necessary for future caching on gateway.
1271
- // It will be implemented in future releases on (relayer).
1272
- // See relayer team.
1273
- const init: RequestInit = {
1274
- method: 'GET',
1275
- headers: {
1276
- 'ZAMA-SDK-VERSION': version,
1277
- 'ZAMA-SDK-NAME': sdkName,
1278
- },
1279
- ...(this._internalAbortSignal ? { signal: this._internalAbortSignal } : {}),
1280
- };
1271
+ const init = setAuth(
1272
+ {
1273
+ method: 'GET',
1274
+ headers: {
1275
+ ...this._customHeaders,
1276
+ 'zama-sdk-version': version,
1277
+ 'zama-sdk-name': sdkName,
1278
+ },
1279
+ ...(this._internalAbortSignal ? { signal: this._internalAbortSignal } : {}),
1280
+ } satisfies RequestInit,
1281
+ this._fhevmAuth,
1282
+ );
1281
1283
 
1282
1284
  this._state.fetching = true;
1283
1285
 
@@ -6,9 +6,9 @@ import type {
6
6
  RelayerClientWithRuntime,
7
7
  } from '../types.js';
8
8
  import { bytesToHexNo0x } from '../../../base/bytes.js';
9
- import { removeSuffix } from '../../../base/string.js';
10
9
  import { uintToHex0x } from '../../../base/uint.js';
11
10
  import { RelayerAsyncRequest } from './RelayerAsyncRequest.js';
11
+ import { buildRelayerUrlString, validateRelayerBaseUrl } from './relayerUrl.js';
12
12
 
13
13
  ////////////////////////////////////////////////////////////////////////////////
14
14
  // fetchCoprocessorSignatures
@@ -28,9 +28,13 @@ export async function fetchCoprocessorSignatures(
28
28
  userAddress: payload.zkProof.userAddress,
29
29
  };
30
30
 
31
+ const hasAuth: boolean = options?.auth !== undefined;
32
+ const relayerBaseUrl: URL = validateRelayerBaseUrl(relayerClient.chain.fhevm.relayerUrl, hasAuth);
33
+ const url = buildRelayerUrlString(relayerBaseUrl, 'v2/input-proof');
34
+
31
35
  const request = new RelayerAsyncRequest({
32
36
  relayerOperation: 'INPUT_PROOF',
33
- url: `${removeSuffix(relayerClient.chain.fhevm.relayerUrl, '/')}/v2/input-proof`,
37
+ url,
34
38
  payload: inputProofPayload,
35
39
  options,
36
40
  });
@@ -6,8 +6,9 @@ import type {
6
6
  RelayerClientWithRuntime,
7
7
  } from '../types.js';
8
8
  import type { KmsSigncryptedShare } from '../../../types/kms-p.js';
9
- import { remove0x, removeSuffix } from '../../../base/string.js';
9
+ import { remove0x } from '../../../base/string.js';
10
10
  import { RelayerAsyncRequest } from './RelayerAsyncRequest.js';
11
+ import { buildRelayerUrlString, validateRelayerBaseUrl } from './relayerUrl.js';
11
12
 
12
13
  //////////////////////////////////////////////////////////////////////////////
13
14
  // fetchDelegatedUserDecrypt
@@ -45,9 +46,13 @@ export async function fetchDelegatedUserDecrypt(
45
46
  publicKey: remove0x(payload.kmsDecryptEip712Message.publicKey),
46
47
  };
47
48
 
49
+ const hasAuth: boolean = options?.auth !== undefined;
50
+ const relayerBaseUrl: URL = validateRelayerBaseUrl(relayerClient.chain.fhevm.relayerUrl, hasAuth);
51
+ const url = buildRelayerUrlString(relayerBaseUrl, 'v2/delegated-user-decrypt');
52
+
48
53
  const request = new RelayerAsyncRequest({
49
54
  relayerOperation: 'DELEGATED_USER_DECRYPT',
50
- url: `${removeSuffix(relayerClient.chain.fhevm.relayerUrl, '/')}/v2/delegated-user-decrypt`,
55
+ url,
51
56
  payload: relayerPayload,
52
57
  options,
53
58
  });
@@ -7,9 +7,11 @@ import type { FetchKeyUrlResult } from '../../../types/relayer-p.js';
7
7
  import { setAuth } from '../../../base/auth.js';
8
8
  import { RelayerFetchError } from '../../../errors/RelayerFetchError.js';
9
9
  import { assertRecordArrayProperty, assertRecordNonNullableProperty } from '../../../base/record.js';
10
- import { fetchWithRetry } from '../../../base/fetch.js';
10
+ import { fetchWithRetry, normalizeHeaders } from '../../../base/fetch.js';
11
11
  import { sdkName, version } from '../../../_version.js';
12
- import { assertRecordStringArrayProperty, assertRecordStringProperty, removeSuffix } from '../../../base/string.js';
12
+ import { assertRecordStringArrayProperty, assertRecordStringProperty } from '../../../base/string.js';
13
+ import { buildRelayerUrlString, validateRelayerBaseUrl } from './relayerUrl.js';
14
+ import { assert } from '../../../base/errors/InternalError.js';
13
15
 
14
16
  ////////////////////////////////////////////////////////////////////////////////
15
17
  // fetchFheEncryptionKeySource
@@ -20,19 +22,22 @@ export async function fetchFheEncryptionKeySource(
20
22
  parameters: FetchFheEncryptionKeySourceParameters,
21
23
  ): Promise<FetchFheEncryptionKeySourceReturnType> {
22
24
  const { options } = parameters;
23
- const relayerUrl = relayerClient.relayerUrl;
25
+ const relayerBaseUrl: URL = validateRelayerBaseUrl(relayerClient.relayerUrl, options?.auth !== undefined);
26
+ const customHeaders = normalizeHeaders(options?.headers);
24
27
  const init = setAuth(
25
28
  {
26
29
  method: 'GET',
27
30
  headers: {
28
- 'ZAMA-SDK-VERSION': version,
29
- 'ZAMA-SDK-NAME': sdkName,
31
+ ...customHeaders,
32
+ 'zama-sdk-version': version,
33
+ 'zama-sdk-name': sdkName,
30
34
  },
31
35
  } satisfies RequestInit,
32
36
  options?.auth,
33
37
  );
34
38
 
35
- const url = `${removeSuffix(relayerUrl, '/')}/v2/keyurl`;
39
+ assert(relayerBaseUrl.pathname.endsWith('/'));
40
+ const url = buildRelayerUrlString(relayerBaseUrl, 'v2/keyurl');
36
41
 
37
42
  let response;
38
43
  try {
@@ -87,7 +92,7 @@ export async function fetchFheEncryptionKeySource(
87
92
  capacity: 2048,
88
93
  },
89
94
  metadata: {
90
- relayerUrl,
95
+ relayerUrl: relayerClient.relayerUrl,
91
96
  chainId: relayerClient.chainId,
92
97
  },
93
98
  };
@@ -2,8 +2,9 @@ import type { Bytes65Hex } from '../../../types/primitives.js';
2
2
  import type { RelayerFetchPublicDecryptPayload } from '../../../types/relayer-p.js';
3
3
  import type { FetchPublicDecryptResult } from '../../../types/relayer.js';
4
4
  import type { FetchPublicDecryptParameters, FetchPublicDecryptReturnType, RelayerClientWithRuntime } from '../types.js';
5
- import { ensure0x, removeSuffix } from '../../../base/string.js';
5
+ import { ensure0x } from '../../../base/string.js';
6
6
  import { RelayerAsyncRequest } from './RelayerAsyncRequest.js';
7
+ import { buildRelayerUrlString, validateRelayerBaseUrl } from './relayerUrl.js';
7
8
 
8
9
  //////////////////////////////////////////////////////////////////////////////
9
10
  // fetchPublicDecrypt
@@ -23,9 +24,13 @@ export async function fetchPublicDecrypt(
23
24
  extraData: payload.extraData,
24
25
  };
25
26
 
27
+ const hasAuth: boolean = options?.auth !== undefined;
28
+ const relayerBaseUrl: URL = validateRelayerBaseUrl(relayerClient.chain.fhevm.relayerUrl, hasAuth);
29
+ const url = buildRelayerUrlString(relayerBaseUrl, 'v2/public-decrypt');
30
+
26
31
  const request = new RelayerAsyncRequest({
27
32
  relayerOperation: 'PUBLIC_DECRYPT',
28
- url: `${removeSuffix(relayerClient.chain.fhevm.relayerUrl, '/')}/v2/public-decrypt`,
33
+ url,
29
34
  payload: p,
30
35
  options,
31
36
  });
@@ -2,8 +2,9 @@ import type { KmsSigncryptedShare } from '../../../types/kms-p.js';
2
2
  import type { FetchUserDecryptPayload } from '../../../types/relayer-p.js';
3
3
  import type { FetchUserDecryptResult } from '../../../types/relayer.js';
4
4
  import type { FetchUserDecryptParameters, FetchUserDecryptReturnType, RelayerClientWithRuntime } from '../types.js';
5
- import { remove0x, removeSuffix } from '../../../base/string.js';
5
+ import { remove0x } from '../../../base/string.js';
6
6
  import { RelayerAsyncRequest } from './RelayerAsyncRequest.js';
7
+ import { buildRelayerUrlString, validateRelayerBaseUrl } from './relayerUrl.js';
7
8
 
8
9
  //////////////////////////////////////////////////////////////////////////////
9
10
  // fetchUserDecrypt
@@ -42,9 +43,13 @@ export async function fetchUserDecrypt(
42
43
  publicKey: remove0x(payload.kmsDecryptEip712Message.publicKey),
43
44
  };
44
45
 
46
+ const hasAuth: boolean = options?.auth !== undefined;
47
+ const relayerBaseUrl: URL = validateRelayerBaseUrl(relayerClient.chain.fhevm.relayerUrl, hasAuth);
48
+ const url = buildRelayerUrlString(relayerBaseUrl, 'v2/user-decrypt');
49
+
45
50
  const request = new RelayerAsyncRequest({
46
51
  relayerOperation: 'USER_DECRYPT',
47
- url: `${removeSuffix(relayerClient.chain.fhevm.relayerUrl, '/')}/v2/user-decrypt`,
52
+ url,
48
53
  payload: relayerPayload,
49
54
  options,
50
55
  });