@effect/platform 0.63.3 → 0.64.1

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 (62) hide show
  1. package/README.md +2 -416
  2. package/dist/cjs/Command.js +3 -3
  3. package/dist/cjs/Command.js.map +1 -1
  4. package/dist/cjs/Etag.js +11 -1
  5. package/dist/cjs/Etag.js.map +1 -1
  6. package/dist/cjs/HttpApiBuilder.js +35 -1
  7. package/dist/cjs/HttpApiBuilder.js.map +1 -1
  8. package/dist/cjs/HttpPlatform.js +6 -1
  9. package/dist/cjs/HttpPlatform.js.map +1 -1
  10. package/dist/cjs/Socket.js +56 -16
  11. package/dist/cjs/Socket.js.map +1 -1
  12. package/dist/cjs/internal/command.js +2 -2
  13. package/dist/cjs/internal/command.js.map +1 -1
  14. package/dist/cjs/internal/etag.js +42 -1
  15. package/dist/cjs/internal/etag.js.map +1 -1
  16. package/dist/cjs/internal/httpPlatform.js +28 -4
  17. package/dist/cjs/internal/httpPlatform.js.map +1 -1
  18. package/dist/cjs/internal/httpServerResponse.js +5 -4
  19. package/dist/cjs/internal/httpServerResponse.js.map +1 -1
  20. package/dist/cjs/internal/multipart.js +1 -3
  21. package/dist/cjs/internal/multipart.js.map +1 -1
  22. package/dist/dts/Command.d.ts +4 -4
  23. package/dist/dts/Command.d.ts.map +1 -1
  24. package/dist/dts/Etag.d.ts +11 -0
  25. package/dist/dts/Etag.d.ts.map +1 -1
  26. package/dist/dts/HttpApiBuilder.d.ts +29 -1
  27. package/dist/dts/HttpApiBuilder.d.ts.map +1 -1
  28. package/dist/dts/HttpPlatform.d.ts +6 -0
  29. package/dist/dts/HttpPlatform.d.ts.map +1 -1
  30. package/dist/dts/Socket.d.ts +20 -3
  31. package/dist/dts/Socket.d.ts.map +1 -1
  32. package/dist/esm/Command.js +3 -3
  33. package/dist/esm/Command.js.map +1 -1
  34. package/dist/esm/Etag.js +10 -0
  35. package/dist/esm/Etag.js.map +1 -1
  36. package/dist/esm/HttpApiBuilder.js +33 -0
  37. package/dist/esm/HttpApiBuilder.js.map +1 -1
  38. package/dist/esm/HttpPlatform.js +5 -0
  39. package/dist/esm/HttpPlatform.js.map +1 -1
  40. package/dist/esm/Socket.js +53 -15
  41. package/dist/esm/Socket.js.map +1 -1
  42. package/dist/esm/internal/command.js +2 -2
  43. package/dist/esm/internal/command.js.map +1 -1
  44. package/dist/esm/internal/etag.js +41 -0
  45. package/dist/esm/internal/etag.js.map +1 -1
  46. package/dist/esm/internal/httpPlatform.js +28 -4
  47. package/dist/esm/internal/httpPlatform.js.map +1 -1
  48. package/dist/esm/internal/httpServerResponse.js +4 -3
  49. package/dist/esm/internal/httpServerResponse.js.map +1 -1
  50. package/dist/esm/internal/multipart.js +1 -3
  51. package/dist/esm/internal/multipart.js.map +1 -1
  52. package/package.json +3 -3
  53. package/src/Command.ts +7 -8
  54. package/src/Etag.ts +13 -0
  55. package/src/HttpApiBuilder.ts +46 -2
  56. package/src/HttpPlatform.ts +7 -0
  57. package/src/Socket.ts +97 -23
  58. package/src/internal/command.ts +4 -3
  59. package/src/internal/etag.ts +43 -0
  60. package/src/internal/httpPlatform.ts +32 -4
  61. package/src/internal/httpServerResponse.ts +6 -3
  62. package/src/internal/multipart.ts +1 -3
@@ -1 +1 @@
1
- {"version":3,"file":"multipart.js","names":["Schema","Cause","Channel","Chunk","Effect","FiberRef","dual","flow","pipe","globalValue","Inspectable","Option","Predicate","Queue","Stream","MP","TypeIdError","FileSystem","IncomingMessage","Path","TypeId","Symbol","for","isPart","u","hasProperty","isField","_tag","isFile","isPersistedFile","isTagged","ErrorTypeId","MultipartError","message","reason","maxParts","unsafeMake","none","withMaxParts","effect","count","locally","maxFieldSize","Size","withMaxFieldSize","size","maxFileSize","withMaxFileSize","map","fieldMimeTypes","make","withFieldMimeTypes","mimeTypes","fromIterable","FileSchema","declare","identifier","jsonSchema","type","format","FilesSchema","Array","SingleFileSchema","transform","itemsCount","strict","decode","file","encode","schemaPersisted","schema","options","parse","decodeUnknown","persisted","schemaJson","fromJson","parseJson","field","Struct","_","makeConfig","headers","all","get","getOrUndefined","Number","maxPartSize","maxTotalSize","maxBodySize","length","undefined","info","some","contentType","includes","defaultIsFile","makeChannel","bufferSize","acquireUseRelease","bounded","config","queue","makeFromQueue","shutdown","suspend","error","partsBuffer","partsFinished","input","awaitRead","void","emit","element","offer","cause","done","_value","parser","onField","value","push","FieldImpl","name","decodeField","onFile","chunks","finished","take","zipRight","pump","chunk","unsafeFromArray","write","FileImpl","onError","error_","fail","convertError","onDone","flatMap","sync","end","forEach","buf","takeParts","parts","partsChannel","failCause","embedInput","limit","PartBase","Class","constructor","key","toJSON","_id","content","channel","filename","fromChannel","defaultWriteFile","path","fs","mapError","run","sink","toPersisted","stream","writeFile","Do","bind","makeTempDirectoryScoped","dir","path_","runFoldEffect","Object","create","part","succeed","join","basename","slice","isArray","PersistedFileImpl","as","catchTags","SystemError","BadArgument"],"sources":["../../../src/internal/multipart.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"multipart.js","names":["Schema","Cause","Channel","Chunk","Effect","FiberRef","dual","flow","pipe","globalValue","Inspectable","Option","Predicate","Queue","Stream","MP","TypeIdError","FileSystem","IncomingMessage","Path","TypeId","Symbol","for","isPart","u","hasProperty","isField","_tag","isFile","isPersistedFile","isTagged","ErrorTypeId","MultipartError","message","reason","maxParts","unsafeMake","none","withMaxParts","effect","count","locally","maxFieldSize","Size","withMaxFieldSize","size","maxFileSize","withMaxFileSize","map","fieldMimeTypes","make","withFieldMimeTypes","mimeTypes","fromIterable","FileSchema","declare","identifier","jsonSchema","type","format","FilesSchema","Array","SingleFileSchema","transform","itemsCount","strict","decode","file","encode","schemaPersisted","schema","options","parse","decodeUnknown","persisted","schemaJson","fromJson","parseJson","field","Struct","_","makeConfig","headers","all","get","getOrUndefined","Number","maxPartSize","maxTotalSize","maxBodySize","length","undefined","info","some","contentType","includes","defaultIsFile","makeChannel","bufferSize","acquireUseRelease","bounded","config","queue","makeFromQueue","shutdown","suspend","error","partsBuffer","partsFinished","input","awaitRead","void","emit","element","offer","cause","done","_value","parser","onField","value","push","FieldImpl","name","decodeField","onFile","chunks","finished","take","zipRight","pump","chunk","unsafeFromArray","write","FileImpl","onError","error_","fail","convertError","onDone","flatMap","sync","end","forEach","takeParts","parts","partsChannel","failCause","embedInput","limit","PartBase","Class","constructor","key","toJSON","_id","content","channel","filename","fromChannel","defaultWriteFile","path","fs","mapError","run","sink","toPersisted","stream","writeFile","Do","bind","makeTempDirectoryScoped","dir","path_","runFoldEffect","Object","create","part","succeed","join","basename","slice","isArray","PersistedFileImpl","as","catchTags","SystemError","BadArgument"],"sources":["../../../src/internal/multipart.ts"],"sourcesContent":[null],"mappings":"AAEA,OAAO,KAAKA,MAAM,MAAM,uBAAuB;AAC/C,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,SAASC,IAAI,EAAEC,IAAI,EAAEC,IAAI,QAAQ,iBAAiB;AAClD,SAASC,WAAW,QAAQ,oBAAoB;AAChD,OAAO,KAAKC,WAAW,MAAM,oBAAoB;AACjD,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,SAAS,MAAM,kBAAkB;AAC7C,OAAO,KAAKC,KAAK,MAAM,cAAc;AAGrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,EAAE,MAAM,YAAY;AAChC,SAASC,WAAW,QAAQ,aAAa;AACzC,OAAO,KAAKC,UAAU,MAAM,kBAAkB;AAC9C,OAAO,KAAKC,eAAe,MAAM,2BAA2B;AAE5D,OAAO,KAAKC,IAAI,MAAM,YAAY;AAElC;AACA,OAAO,MAAMC,MAAM,gBAAqBC,MAAM,CAACC,GAAG,CAAC,4BAA4B,CAAqB;AAEpG;AACA,OAAO,MAAMC,MAAM,GAAIC,CAAU,IAA0BZ,SAAS,CAACa,WAAW,CAACD,CAAC,EAAEJ,MAAM,CAAC;AAE3F;AACA,OAAO,MAAMM,OAAO,GAAIF,CAAU,IAA2BD,MAAM,CAACC,CAAC,CAAC,IAAIA,CAAC,CAACG,IAAI,KAAK,OAAO;AAE5F;AACA,OAAO,MAAMC,MAAM,GAAIJ,CAAU,IAA0BD,MAAM,CAACC,CAAC,CAAC,IAAIA,CAAC,CAACG,IAAI,KAAK,MAAM;AAEzF;AACA,OAAO,MAAME,eAAe,GAAIL,CAAU,IACxCZ,SAAS,CAACa,WAAW,CAACD,CAAC,EAAEJ,MAAM,CAAC,IAAIR,SAAS,CAACkB,QAAQ,CAACN,CAAC,EAAE,eAAe,CAAC;AAE5E;AACA,OAAO,MAAMO,WAAW,gBAA0BV,MAAM,CAACC,GAAG,CAC1D,2CAA2C,CACnB;AAE1B;AACA,OAAM,MAAOU,cAAe,sBAAQhB,WAAW,CAACe,WAAW,EAAE,gBAAgB,CAG3E;EACA,IAAIE,OAAOA,CAAA;IACT,OAAO,IAAI,CAACC,MAAM;EACpB;;AAGF;AACA,OAAO,MAAMC,QAAQ,gBAA6C1B,WAAW,CAC3E,qCAAqC,EACrC,MAAMJ,QAAQ,CAAC+B,UAAU,CAACzB,MAAM,CAAC0B,IAAI,EAAU,CAAC,CACjD;AAED;AACA,OAAO,MAAMC,YAAY,gBAAGhC,IAAI,CAG9B,CAAC,EAAE,CAACiC,MAAM,EAAEC,KAAK,KAAKpC,MAAM,CAACqC,OAAO,CAACF,MAAM,EAAEJ,QAAQ,EAAEK,KAAK,CAAC,CAAC;AAEhE;AACA,OAAO,MAAME,YAAY,gBAAuCjC,WAAW,CACzE,yCAAyC,EACzC,MAAMJ,QAAQ,CAAC+B,UAAU,CAACnB,UAAU,CAAC0B,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAC7D;AAED;AACA,OAAO,MAAMC,gBAAgB,gBAAGtC,IAAI,CAGlC,CAAC,EAAE,CAACiC,MAAM,EAAEM,IAAI,KAAKzC,MAAM,CAACqC,OAAO,CAACF,MAAM,EAAEG,YAAY,EAAEzB,UAAU,CAAC0B,IAAI,CAACE,IAAI,CAAC,CAAC,CAAC;AAEnF;AACA,OAAO,MAAMC,WAAW,gBAAsDrC,WAAW,CACvF,wCAAwC,EACxC,MAAMJ,QAAQ,CAAC+B,UAAU,CAACzB,MAAM,CAAC0B,IAAI,EAAmB,CAAC,CAC1D;AAED;AACA,OAAO,MAAMU,eAAe,gBAAGzC,IAAI,CAGjC,CAAC,EAAE,CAACiC,MAAM,EAAEM,IAAI,KAAKzC,MAAM,CAACqC,OAAO,CAACF,MAAM,EAAEO,WAAW,EAAEnC,MAAM,CAACqC,GAAG,CAACH,IAAI,EAAE5B,UAAU,CAAC0B,IAAI,CAAC,CAAC,CAAC;AAE9F;AACA,OAAO,MAAMM,cAAc,gBAA2CxC,WAAW,CAC/E,2CAA2C,EAC3C,MAAMJ,QAAQ,CAAC+B,UAAU,CAAsBjC,KAAK,CAAC+C,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAC/E;AAED;AACA,OAAO,MAAMC,kBAAkB,gBAAG7C,IAAI,CAGpC,CAAC,EAAE,CAACiC,MAAM,EAAEa,SAAS,KAAKhD,MAAM,CAACqC,OAAO,CAACF,MAAM,EAAEU,cAAc,EAAE9C,KAAK,CAACkD,YAAY,CAACD,SAAS,CAAC,CAAC,CAAC;AAElG;AACA,OAAO,MAAME,UAAU,gBAA2CtD,MAAM,CAACuD,OAAO,CAAC1B,eAAe,EAAE;EAChG2B,UAAU,EAAE,eAAe;EAC3BC,UAAU,EAAE;IACVC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;;CAEX,CAAC;AAEF;AACA,OAAO,MAAMC,WAAW,gBAA0D5D,MAAM,CAAC6D,KAAK,CAACP,UAAU,CAAC;AAE1G;AACA,OAAO,MAAMQ,gBAAgB,gBAGzB9D,MAAM,CAAC+D,SAAS,eAACH,WAAW,CAACpD,IAAI,eAACR,MAAM,CAACgE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAEV,UAAU,EAAE;EACvEW,MAAM,EAAE,IAAI;EACZC,MAAM,EAAEA,CAAC,CAACC,IAAI,CAAC,KAAKA,IAAI;EACxBC,MAAM,EAAGD,IAAI,IAAK,CAACA,IAAI;CACxB,CAAC;AAEF;AACA,OAAO,MAAME,eAAe,GAAGA,CAC7BC,MAA8B,EAC9BC,OAAkC,KAChC;EACF,MAAMC,KAAK,GAAGxE,MAAM,CAACyE,aAAa,CAACH,MAAM,EAAEC,OAAO,CAAC;EACnD,OAAQG,SAA8B,IAAKF,KAAK,CAACE,SAAS,CAAC;AAC7D,CAAC;AAED;AACA,OAAO,MAAMC,UAAU,GAAGA,CAAUL,MAA8B,EAAEC,OAAkC,KAQlG;EACF,MAAMK,QAAQ,GAAG5E,MAAM,CAAC6E,SAAS,CAACP,MAAM,CAAC;EACzC,OAAOhE,IAAI,CAUT,CAAC,EAAE,CAACoE,SAAS,EAAEI,KAAK,KACpB1E,MAAM,CAAC4C,GAAG,CACRhD,MAAM,CAACyE,aAAa,CAClBzE,MAAM,CAAC+E,MAAM,CAAC;IACZ,CAACD,KAAK,GAAGF;GACV,CAAC,EACFL,OAAO,CACR,CAACG,SAAS,CAAC,EACXM,CAAC,IAAKA,CAAC,CAACF,KAAK,CAAC,CAChB,CAAC;AACN,CAAC;AAED;AACA,OAAO,MAAMG,UAAU,GACrBC,OAA+B,IAE/B9E,MAAM,CAAC4C,GAAG,CACR5C,MAAM,CAAC+E,GAAG,CAAC;EACThD,QAAQ,EAAE/B,MAAM,CAAC4C,GAAG,CAAC3C,QAAQ,CAAC+E,GAAG,CAACjD,QAAQ,CAAC,EAAExB,MAAM,CAAC0E,cAAc,CAAC;EACnE3C,YAAY,EAAEtC,MAAM,CAAC4C,GAAG,CAAC3C,QAAQ,CAAC+E,GAAG,CAAC1C,YAAY,CAAC,EAAE4C,MAAM,CAAC;EAC5DC,WAAW,EAAEnF,MAAM,CAAC4C,GAAG,CAAC3C,QAAQ,CAAC+E,GAAG,CAACtC,WAAW,CAAC,EAAEvC,IAAI,CAACI,MAAM,CAACqC,GAAG,CAACsC,MAAM,CAAC,EAAE3E,MAAM,CAAC0E,cAAc,CAAC,CAAC;EACnGG,YAAY,EAAEpF,MAAM,CAAC4C,GAAG,CACtB3C,QAAQ,CAAC+E,GAAG,CAAClE,eAAe,CAACuE,WAAW,CAAC,EACzClF,IAAI,CAACI,MAAM,CAACqC,GAAG,CAACsC,MAAM,CAAC,EAAE3E,MAAM,CAAC0E,cAAc,CAAC,CAChD;EACDzD,MAAM,EAAExB,MAAM,CAAC4C,GAAG,CAAC3C,QAAQ,CAAC+E,GAAG,CAACnC,cAAc,CAAC,EAAGG,SAAS,IAAI;IAC7D,IAAIA,SAAS,CAACsC,MAAM,KAAK,CAAC,EAAE;MAC1B,OAAOC,SAAS;IAClB;IACA,OAAQC,IAAiB,IACvB,CAACzF,KAAK,CAAC0F,IAAI,CACTzC,SAAS,EACR4B,CAAC,IAAKY,IAAI,CAACE,WAAW,CAACC,QAAQ,CAACf,CAAC,CAAC,CACpC,IAAIjE,EAAE,CAACiF,aAAa,CAACJ,IAAI,CAAC;EAC/B,CAAC;CACF,CAAC,EACDZ,CAAC,KAAM;EAAE,GAAGA,CAAC;EAAEE;AAAO,CAAE,CAAC,CAC3B;AAEH;AACA,OAAO,MAAMe,WAAW,GAAGA,CACzBf,OAA+B,EAC/BgB,UAAU,GAAG,EAAE,KASfhG,OAAO,CAACiG,iBAAiB,CACvB/F,MAAM,CAAC+E,GAAG,CAAC,CACTF,UAAU,CAACC,OAAO,CAAC,EACnBrE,KAAK,CAACuF,OAAO,CAAiCF,UAAU,CAAC,CAC1D,CAAC,EACF,CAAC,CAACG,MAAM,EAAEC,KAAK,CAAC,KAAKC,aAAa,CAACF,MAAM,EAAEC,KAAK,CAAC,EACjD,CAAC,GAAGA,KAAK,CAAC,KAAKzF,KAAK,CAAC2F,QAAQ,CAACF,KAAK,CAAC,CACrC;AAEH,MAAMC,aAAa,GAAGA,CACpBF,MAAqB,EACrBC,KAAkD,KASlDpG,OAAO,CAACuG,OAAO,CAAC,MAAK;EACnB,IAAIC,KAAK,GAAG/F,MAAM,CAAC0B,IAAI,EAA8C;EACrE,IAAIsE,WAAW,GAA0B,EAAE;EAC3C,IAAIC,aAAa,GAAG,KAAK;EAEzB,MAAMC,KAAK,GAAwE;IACjFC,SAAS,EAAEA,CAAA,KAAM1G,MAAM,CAAC2G,IAAI;IAC5BC,IAAIA,CAACC,OAAO;MACV,OAAOpG,KAAK,CAACqG,KAAK,CAACZ,KAAK,EAAEW,OAAO,CAAC;IACpC,CAAC;IACDP,KAAKA,CAACS,KAAK;MACTT,KAAK,GAAG/F,MAAM,CAACkF,IAAI,CAACsB,KAAK,CAAC;MAC1B,OAAOtG,KAAK,CAACqG,KAAK,CAACZ,KAAK,EAAE,IAAI,CAAC;IACjC,CAAC;IACDc,IAAIA,CAACC,MAAM;MACT,OAAOxG,KAAK,CAACqG,KAAK,CAACZ,KAAK,EAAE,IAAI,CAAC;IACjC;GACD;EAED,MAAMgB,MAAM,GAAGvG,EAAE,CAACmC,IAAI,CAAC;IACrB,GAAGmD,MAAM;IACTkB,OAAOA,CAAC3B,IAAI,EAAE4B,KAAK;MACjBb,WAAW,CAACc,IAAI,CAAC,IAAIC,SAAS,CAAC9B,IAAI,CAAC+B,IAAI,EAAE/B,IAAI,CAACE,WAAW,EAAE/E,EAAE,CAAC6G,WAAW,CAAChC,IAAI,EAAE4B,KAAK,CAAC,CAAC,CAAC;IAC3F,CAAC;IACDK,MAAMA,CAACjC,IAAI;MACT,IAAIkC,MAAM,GAAsB,EAAE;MAClC,IAAIC,QAAQ,GAAG,KAAK;MACpB,MAAMC,IAAI,GAAqF9H,OAAO,CACnGuG,OAAO,CAAC,MAAK;QACZ,IAAIqB,MAAM,CAACpC,MAAM,KAAK,CAAC,EAAE;UACvB,OAAOqC,QAAQ,GAAG7H,OAAO,CAAC6G,IAAI,GAAG7G,OAAO,CAAC+H,QAAQ,CAACC,IAAI,EAAEF,IAAI,CAAC;QAC/D;QACA,MAAMG,KAAK,GAAGhI,KAAK,CAACiI,eAAe,CAACN,MAAM,CAAC;QAC3CA,MAAM,GAAG,EAAE;QACX,OAAOC,QAAQ,GAAG7H,OAAO,CAACmI,KAAK,CAACF,KAAK,CAAC,GAAGjI,OAAO,CAAC+H,QAAQ,CACvD/H,OAAO,CAACmI,KAAK,CAACF,KAAK,CAAC,EACpBjI,OAAO,CAAC+H,QAAQ,CAACC,IAAI,EAAEF,IAAI,CAAC,CAC7B;MACH,CAAC,CAAC;MACJrB,WAAW,CAACc,IAAI,CAAC,IAAIa,QAAQ,CAAC1C,IAAI,EAAEoC,IAAI,CAAC,CAAC;MAC1C,OAAO,UAASG,KAAK;QACnB,IAAIA,KAAK,KAAK,IAAI,EAAE;UAClBJ,QAAQ,GAAG,IAAI;QACjB,CAAC,MAAM;UACLD,MAAM,CAACL,IAAI,CAACU,KAAK,CAAC;QACpB;MACF,CAAC;IACH,CAAC;IACDI,OAAOA,CAACC,MAAM;MACZ9B,KAAK,GAAG/F,MAAM,CAACkF,IAAI,CAAC5F,KAAK,CAACwI,IAAI,CAACC,YAAY,CAACF,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IACDG,MAAMA,CAAA;MACJ/B,aAAa,GAAG,IAAI;IACtB;GACD,CAAC;EAEF,MAAMsB,IAAI,GAAGhI,OAAO,CAAC0I,OAAO,CAC1B/H,KAAK,CAACmH,IAAI,CAAC1B,KAAK,CAAC,EAChB6B,KAAK,IACJjI,OAAO,CAAC2I,IAAI,CAAC,MAAK;IAChB,IAAIV,KAAK,KAAK,IAAI,EAAE;MAClBb,MAAM,CAACwB,GAAG,EAAE;IACd,CAAC,MAAM;MACL3I,KAAK,CAAC4I,OAAO,CAACZ,KAAK,EAAEb,MAAM,CAACe,KAAK,CAAC;IACpC;EACF,CAAC,CAAC,CACL;EAED,MAAMW,SAAS,GAAG9I,OAAO,CAAC+H,QAAQ,CAChCC,IAAI,EACJhI,OAAO,CAACuG,OAAO,CAAC,MAAK;IACnB,IAAIE,WAAW,CAACjB,MAAM,KAAK,CAAC,EAAE;MAC5B,OAAOxF,OAAO,CAAC6G,IAAI;IACrB;IACA,MAAMkC,KAAK,GAAG9I,KAAK,CAACiI,eAAe,CAACzB,WAAW,CAAC;IAChDA,WAAW,GAAG,EAAE;IAChB,OAAOzG,OAAO,CAACmI,KAAK,CAACY,KAAK,CAAC;EAC7B,CAAC,CAAC,CACH;EAED,MAAMC,YAAY,GAOdhJ,OAAO,CAACuG,OAAO,CAAC,MAAK;IACvB,IAAIC,KAAK,CAAC/E,IAAI,KAAK,MAAM,EAAE;MACzB,OAAOzB,OAAO,CAACiJ,SAAS,CAACzC,KAAK,CAACc,KAAK,CAAC;IACvC,CAAC,MAAM,IAAIZ,aAAa,EAAE;MACxB,OAAO1G,OAAO,CAAC6G,IAAI;IACrB;IACA,OAAO7G,OAAO,CAAC+H,QAAQ,CAACe,SAAS,EAAEE,YAAY,CAAC;EAClD,CAAC,CAAC;EAEF,OAAOhJ,OAAO,CAACkJ,UAAU,CAACF,YAAY,EAAErC,KAAK,CAAC;AAChD,CAAC,CAAC;AAEJ,SAAS6B,YAAYA,CAACvB,KAAwB;EAC5C,QAAQA,KAAK,CAACxF,IAAI;IAChB,KAAK,cAAc;MAAE;QACnB,QAAQwF,KAAK,CAACkC,KAAK;UACjB,KAAK,UAAU;YAAE;cACf,OAAO,IAAIrH,cAAc,CAAC;gBAAEE,MAAM,EAAE,cAAc;gBAAEiF;cAAK,CAAE,CAAC;YAC9D;UACA,KAAK,cAAc;YAAE;cACnB,OAAO,IAAInF,cAAc,CAAC;gBAAEE,MAAM,EAAE,eAAe;gBAAEiF;cAAK,CAAE,CAAC;YAC/D;UACA,KAAK,aAAa;YAAE;cAClB,OAAO,IAAInF,cAAc,CAAC;gBAAEE,MAAM,EAAE,cAAc;gBAAEiF;cAAK,CAAE,CAAC;YAC9D;UACA,KAAK,cAAc;YAAE;cACnB,OAAO,IAAInF,cAAc,CAAC;gBAAEE,MAAM,EAAE,cAAc;gBAAEiF;cAAK,CAAE,CAAC;YAC9D;QACF;MACF;IACA;MAAS;QACP,OAAO,IAAInF,cAAc,CAAC;UAAEE,MAAM,EAAE,OAAO;UAAEiF;QAAK,CAAE,CAAC;MACvD;EACF;AACF;AAEA,MAAemC,QAAS,SAAQ5I,WAAW,CAAC6I,KAAK;EACtC,CAACnI,MAAM;EAChBoI,YAAA;IACE,KAAK,EAAE;IACP,IAAI,CAACpI,MAAM,CAAC,GAAGA,MAAM;EACvB;;AAGF,MAAMsG,SAAU,SAAQ4B,QAAQ;EAInBG,GAAA;EACA3D,WAAA;EACA0B,KAAA;EALF7F,IAAI,GAAG,OAAO;EAEvB6H,YACWC,GAAW,EACX3D,WAAmB,EACnB0B,KAAa;IAEtB,KAAK,EAAE;IAJE,KAAAiC,GAAG,GAAHA,GAAG;IACH,KAAA3D,WAAW,GAAXA,WAAW;IACX,KAAA0B,KAAK,GAALA,KAAK;EAGhB;EAEAkC,MAAMA,CAAA;IACJ,OAAO;MACLC,GAAG,EAAE,iCAAiC;MACtChI,IAAI,EAAE,OAAO;MACb8H,GAAG,EAAE,IAAI,CAACA,GAAG;MACb3D,WAAW,EAAE,IAAI,CAACA,WAAW;MAC7B0B,KAAK,EAAE,IAAI,CAACA;KACb;EACH;;AAGF,MAAMc,QAAS,SAAQgB,QAAQ;EACpB3H,IAAI,GAAG,MAAM;EACb8H,GAAG;EACH9B,IAAI;EACJ7B,WAAW;EACX8D,OAAO;EAEhBJ,YACE5D,IAAiB,EACjBiE,OAAyF;IAEzF,KAAK,EAAE;IACP,IAAI,CAACJ,GAAG,GAAG7D,IAAI,CAAC+B,IAAI;IACpB,IAAI,CAACA,IAAI,GAAG/B,IAAI,CAACkE,QAAQ,IAAIlE,IAAI,CAAC+B,IAAI;IACtC,IAAI,CAAC7B,WAAW,GAAGF,IAAI,CAACE,WAAW;IACnC,IAAI,CAAC8D,OAAO,GAAG9I,MAAM,CAACiJ,WAAW,CAACF,OAAO,CAAC;EAC5C;EAEAH,MAAMA,CAAA;IACJ,OAAO;MACLC,GAAG,EAAE,iCAAiC;MACtChI,IAAI,EAAE,MAAM;MACZ8H,GAAG,EAAE,IAAI,CAACA,GAAG;MACb9B,IAAI,EAAE,IAAI,CAACA,IAAI;MACf7B,WAAW,EAAE,IAAI,CAACA;KACnB;EACH;;AAGF,MAAMkE,gBAAgB,GAAGA,CAACC,IAAY,EAAE9F,IAAoB,KAC1D/D,MAAM,CAACwI,OAAO,CACZ3H,UAAU,CAACA,UAAU,EACpBiJ,EAAE,IACD9J,MAAM,CAAC+J,QAAQ,CACbrJ,MAAM,CAACsJ,GAAG,CAACjG,IAAI,CAACyF,OAAO,EAAEM,EAAE,CAACG,IAAI,CAACJ,IAAI,CAAC,CAAC,EACtC9C,KAAK,IAAK,IAAInF,cAAc,CAAC;EAAEE,MAAM,EAAE,eAAe;EAAEiF;AAAK,CAAE,CAAC,CAClE,CACJ;AAEH;AACA,OAAO,MAAMmD,WAAW,GAAGA,CACzBC,MAA+D,EAC/DC,SAAS,GAAGR,gBAAgB,KAE5BxJ,IAAI,CACFJ,MAAM,CAACqK,EAAE,EACTrK,MAAM,CAACsK,IAAI,CAAC,IAAI,EAAE,MAAMzJ,UAAU,CAACA,UAAU,CAAC,EAC9Cb,MAAM,CAACsK,IAAI,CAAC,MAAM,EAAE,MAAMvJ,IAAI,CAACA,IAAI,CAAC,EACpCf,MAAM,CAACsK,IAAI,CAAC,KAAK,EAAE,CAAC;EAAER;AAAE,CAAE,KAAKA,EAAE,CAACS,uBAAuB,EAAE,CAAC,EAC5DvK,MAAM,CAACwI,OAAO,CAAC,CAAC;EAAEgC,GAAG;EAAEX,IAAI,EAAEY;AAAK,CAAE,KAClC/J,MAAM,CAACgK,aAAa,CAClBP,MAAM,EACNQ,MAAM,CAACC,MAAM,CAAC,IAAI,CAA4D,EAC9E,CAACtG,SAAS,EAAEuG,IAAI,KAAI;EAClB,IAAIA,IAAI,CAACtJ,IAAI,KAAK,OAAO,EAAE;IACzB+C,SAAS,CAACuG,IAAI,CAACxB,GAAG,CAAC,GAAGwB,IAAI,CAACzD,KAAK;IAChC,OAAOpH,MAAM,CAAC8K,OAAO,CAACxG,SAAS,CAAC;EAClC;EACA,MAAMP,IAAI,GAAG8G,IAAI;EACjB,MAAMhB,IAAI,GAAGY,KAAK,CAACM,IAAI,CAACP,GAAG,EAAEC,KAAK,CAACO,QAAQ,CAACjH,IAAI,CAACwD,IAAI,CAAC,CAAC0D,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;EACnE,IAAI,CAACxH,KAAK,CAACyH,OAAO,CAAC5G,SAAS,CAACuG,IAAI,CAACxB,GAAG,CAAC,CAAC,EAAE;IACvC/E,SAAS,CAACuG,IAAI,CAACxB,GAAG,CAAC,GAAG,EAAE;EAC1B;EACA;EAAE/E,SAAS,CAACuG,IAAI,CAACxB,GAAG,CAAoC,CAAChC,IAAI,CAC3D,IAAI8D,iBAAiB,CACnBpH,IAAI,CAACsF,GAAG,EACRtF,IAAI,CAACwD,IAAI,EACTxD,IAAI,CAAC2B,WAAW,EAChBmE,IAAI,CACL,CACF;EACD,OAAO7J,MAAM,CAACoL,EAAE,CAAChB,SAAS,CAACP,IAAI,EAAE9F,IAAI,CAAC,EAAEO,SAAS,CAAC;AACpD,CAAC,CACF,CACF,EACDtE,MAAM,CAACqL,SAAS,CAAC;EACfC,WAAW,EAAGvE,KAAK,IAAK/G,MAAM,CAACqI,IAAI,CAAC,IAAIzG,cAAc,CAAC;IAAEE,MAAM,EAAE,eAAe;IAAEiF;EAAK,CAAE,CAAC,CAAC;EAC3FwE,WAAW,EAAGxE,KAAK,IAAK/G,MAAM,CAACqI,IAAI,CAAC,IAAIzG,cAAc,CAAC;IAAEE,MAAM,EAAE,eAAe;IAAEiF;EAAK,CAAE,CAAC;CAC3F,CAAC,CACH;AAEH,MAAMoE,iBAAkB,SAAQjC,QAAQ;EAI3BG,GAAA;EACA9B,IAAA;EACA7B,WAAA;EACAmE,IAAA;EANFtI,IAAI,GAAG,eAAe;EAE/B6H,YACWC,GAAW,EACX9B,IAAY,EACZ7B,WAAmB,EACnBmE,IAAY;IAErB,KAAK,EAAE;IALE,KAAAR,GAAG,GAAHA,GAAG;IACH,KAAA9B,IAAI,GAAJA,IAAI;IACJ,KAAA7B,WAAW,GAAXA,WAAW;IACX,KAAAmE,IAAI,GAAJA,IAAI;EAGf;EAEAP,MAAMA,CAAA;IACJ,OAAO;MACLC,GAAG,EAAE,iCAAiC;MACtChI,IAAI,EAAE,eAAe;MACrB8H,GAAG,EAAE,IAAI,CAACA,GAAG;MACb9B,IAAI,EAAE,IAAI,CAACA,IAAI;MACf7B,WAAW,EAAE,IAAI,CAACA,WAAW;MAC7BmE,IAAI,EAAE,IAAI,CAACA;KACZ;EACH","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/platform",
3
- "version": "0.63.3",
3
+ "version": "0.64.1",
4
4
  "description": "Unified interfaces for common platform-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -14,8 +14,8 @@
14
14
  "multipasta": "^0.2.5"
15
15
  },
16
16
  "peerDependencies": {
17
- "@effect/schema": "^0.72.2",
18
- "effect": "^3.7.2"
17
+ "@effect/schema": "^0.72.4",
18
+ "effect": "^3.7.3"
19
19
  },
20
20
  "publishConfig": {
21
21
  "provenance": true
package/src/Command.ts CHANGED
@@ -153,9 +153,9 @@ export const feed: {
153
153
  /**
154
154
  * Flatten this command to a non-empty array of standard commands.
155
155
  *
156
- * * For a `StandardCommand`, this simply returns a `1` element array
157
- * * For a `PipedCommand`, all commands in the pipe will be extracted out into
158
- * a array from left to right
156
+ * For a `StandardCommand`, this simply returns a `1` element array
157
+ * For a `PipedCommand`, all commands in the pipe will be extracted out into
158
+ * a array from left to right
159
159
  *
160
160
  * @since 1.0.0
161
161
  * @category combinators
@@ -169,10 +169,8 @@ export const flatten: (self: Command) => NonEmptyReadonlyArray<StandardCommand>
169
169
  * @since 1.0.0
170
170
  * @category execution
171
171
  */
172
- export const lines: (
173
- command: Command,
174
- encoding?: string
175
- ) => Effect<Array<string>, PlatformError, CommandExecutor> = internal.lines
172
+ export const lines: (command: Command, encoding?: string) => Effect<Array<string>, PlatformError, CommandExecutor> =
173
+ internal.lines
176
174
 
177
175
  /**
178
176
  * Create a command with the specified process name and an optional list of
@@ -235,7 +233,8 @@ export const stream: (command: Command) => Stream<Uint8Array, PlatformError, Com
235
233
  * @since 1.0.0
236
234
  * @category execution
237
235
  */
238
- export const streamLines: (command: Command) => Stream<string, PlatformError, CommandExecutor> = internal.streamLines
236
+ export const streamLines: (command: Command, encoding?: string) => Stream<string, PlatformError, CommandExecutor> =
237
+ internal.streamLines
239
238
 
240
239
  /**
241
240
  * Runs the command returning the entire output as a string with the
package/src/Etag.ts CHANGED
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import type * as Context from "effect/Context"
5
5
  import type * as Effect from "effect/Effect"
6
+ import type { Layer } from "effect/Layer"
6
7
  import type * as FileSystem from "./FileSystem.js"
7
8
  import type * as Body from "./HttpBody.js"
8
9
  import * as internal from "./internal/etag.js"
@@ -64,3 +65,15 @@ export interface Generator {
64
65
  * @category tags
65
66
  */
66
67
  export const Generator: Context.Tag<Generator, Generator> = internal.tag
68
+
69
+ /**
70
+ * @since 1.0.0
71
+ * @category layers
72
+ */
73
+ export const layer: Layer<Generator> = internal.layer
74
+
75
+ /**
76
+ * @since 1.0.0
77
+ * @category layers
78
+ */
79
+ export const layerWeak: Layer<Generator> = internal.layerWeak
@@ -12,6 +12,7 @@ import * as FiberRef from "effect/FiberRef"
12
12
  import { identity } from "effect/Function"
13
13
  import { globalValue } from "effect/GlobalValue"
14
14
  import * as Layer from "effect/Layer"
15
+ import type { ManagedRuntime } from "effect/ManagedRuntime"
15
16
  import * as Option from "effect/Option"
16
17
  import { type Pipeable, pipeArguments } from "effect/Pipeable"
17
18
  import type { ReadonlyRecord } from "effect/Record"
@@ -85,9 +86,9 @@ export const serve: {
85
86
  * @category constructors
86
87
  */
87
88
  export const httpApp: Effect.Effect<
88
- HttpApp.Default,
89
+ HttpApp.Default<never, HttpRouter.HttpRouter.DefaultServices>,
89
90
  never,
90
- Router | HttpApi.HttpApi.Service | HttpRouter.HttpRouter.DefaultServices
91
+ Router | HttpApi.HttpApi.Service
91
92
  > = Effect.gen(function*() {
92
93
  const api = yield* HttpApi.HttpApi
93
94
  const router = yield* Router.router
@@ -105,6 +106,49 @@ export const httpApp: Effect.Effect<
105
106
  )
106
107
  })
107
108
 
109
+ /**
110
+ * Construct an http web handler from an `HttpApi` instance.
111
+ *
112
+ * @since 1.0.0
113
+ * @category constructors
114
+ * @example
115
+ * import { HttpApi } from "@effect/platform"
116
+ * import { Etag, HttpApiBuilder, HttpMiddleware, HttpPlatform } from "@effect/platform"
117
+ * import { NodeContext } from "@effect/platform-node"
118
+ * import { Layer, ManagedRuntime } from "effect"
119
+ *
120
+ * const ApiLive = HttpApiBuilder.api(HttpApi.empty)
121
+ *
122
+ * const runtime = ManagedRuntime.make(
123
+ * Layer.mergeAll(
124
+ * ApiLive,
125
+ * HttpApiBuilder.Router.Live,
126
+ * HttpPlatform.layer,
127
+ * Etag.layerWeak
128
+ * ).pipe(
129
+ * Layer.provideMerge(NodeContext.layer)
130
+ * )
131
+ * )
132
+ *
133
+ * const handler = HttpApiBuilder.toWebHandler(runtime, HttpMiddleware.logger)
134
+ */
135
+ export const toWebHandler = <R, ER>(
136
+ runtime: ManagedRuntime<R | HttpApi.HttpApi.Service | Router | HttpRouter.HttpRouter.DefaultServices, ER>,
137
+ middleware?: (
138
+ httpApp: HttpApp.Default
139
+ ) => HttpApp.Default<never, R | HttpApi.HttpApi.Service | Router | HttpRouter.HttpRouter.DefaultServices>
140
+ ): (request: Request) => Promise<Response> => {
141
+ const handlerPromise = httpApp.pipe(
142
+ Effect.bindTo("httpApp"),
143
+ Effect.bind("runtime", () => runtime.runtimeEffect),
144
+ Effect.map(({ httpApp, runtime }) =>
145
+ HttpApp.toWebHandlerRuntime(runtime)(middleware ? middleware(httpApp as any) : httpApp)
146
+ ),
147
+ runtime.runPromise
148
+ )
149
+ return (request) => handlerPromise.then((handler) => handler(request))
150
+ }
151
+
108
152
  /**
109
153
  * Build a root level `Layer` from an `HttpApi` instance.
110
154
  *
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import type * as Context from "effect/Context"
5
5
  import type * as Effect from "effect/Effect"
6
+ import type { Layer } from "effect/Layer"
6
7
  import type * as Error from "./Error.js"
7
8
  import type * as Etag from "./Etag.js"
8
9
  import type * as FileSystem from "./FileSystem.js"
@@ -69,3 +70,9 @@ export const make: (
69
70
  ) => ServerResponse.HttpServerResponse
70
71
  }
71
72
  ) => Effect.Effect<HttpPlatform, never, FileSystem.FileSystem | Etag.Generator> = internal.make
73
+
74
+ /**
75
+ * @since 1.0.0
76
+ * @category layers
77
+ */
78
+ export const layer: Layer<HttpPlatform, never, FileSystem.FileSystem> = internal.layer
package/src/Socket.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import * as Cause from "effect/Cause"
5
4
  import * as Channel from "effect/Channel"
6
5
  import * as Chunk from "effect/Chunk"
7
6
  import * as Context from "effect/Context"
@@ -12,6 +11,7 @@ import * as ExecutionStrategy from "effect/ExecutionStrategy"
12
11
  import * as Exit from "effect/Exit"
13
12
  import * as FiberRef from "effect/FiberRef"
14
13
  import * as FiberSet from "effect/FiberSet"
14
+ import { dual } from "effect/Function"
15
15
  import { globalValue } from "effect/GlobalValue"
16
16
  import * as Layer from "effect/Layer"
17
17
  import * as Predicate from "effect/Predicate"
@@ -32,6 +32,12 @@ export const TypeId: unique symbol = Symbol.for("@effect/platform/Socket")
32
32
  */
33
33
  export type TypeId = typeof TypeId
34
34
 
35
+ /**
36
+ * @since 1.0.0
37
+ * @category guards
38
+ */
39
+ export const isSocket = (u: unknown): u is Socket => Predicate.hasProperty(u, TypeId)
40
+
35
41
  /**
36
42
  * @since 1.0.0
37
43
  * @category tags
@@ -171,10 +177,11 @@ export class SocketCloseError extends TypeIdError(SocketErrorTypeId, "SocketErro
171
177
  * @since 1.0.0
172
178
  * @category combinators
173
179
  */
174
- export const toChannel = <IE>(
175
- self: Socket
180
+ export const toChannelMap = <IE, A>(
181
+ self: Socket,
182
+ f: (data: Uint8Array | string) => A
176
183
  ): Channel.Channel<
177
- Chunk.Chunk<Uint8Array>,
184
+ Chunk.Chunk<A>,
178
185
  Chunk.Chunk<Uint8Array | string | CloseEvent>,
179
186
  SocketError | IE,
180
187
  IE,
@@ -183,25 +190,27 @@ export const toChannel = <IE>(
183
190
  > =>
184
191
  Effect.scope.pipe(
185
192
  Effect.bindTo("scope"),
193
+ Effect.let("state", () => ({ finished: false, buffer: [] as Array<A> })),
194
+ Effect.bind("semaphore", () => Effect.makeSemaphore(0)),
186
195
  Effect.bind("writeScope", ({ scope }) => Scope.fork(scope, ExecutionStrategy.sequential)),
187
196
  Effect.bind("write", ({ writeScope }) => Scope.extend(self.writer, writeScope)),
188
- Effect.bind("exitQueue", (_) => Queue.unbounded<Exit.Exit<Chunk.Chunk<Uint8Array>, SocketError | IE>>()),
197
+ Effect.bind("deferred", () => Deferred.make<void, SocketError | IE>()),
189
198
  Effect.let(
190
199
  "input",
191
200
  (
192
- { exitQueue, write, writeScope }
201
+ { deferred, write, writeScope }
193
202
  ): AsyncProducer.AsyncInputProducer<IE, Chunk.Chunk<Uint8Array | string | CloseEvent>, unknown> => ({
194
203
  awaitRead: () => Effect.void,
195
204
  emit(chunk) {
196
205
  return Effect.catchAllCause(
197
206
  Effect.forEach(chunk, write, { discard: true }),
198
- (cause) => Queue.offer(exitQueue, Exit.failCause(cause))
207
+ (cause) => Deferred.failCause(deferred, cause)
199
208
  )
200
209
  },
201
210
  error(error) {
202
211
  return Effect.zipRight(
203
212
  Scope.close(writeScope, Exit.void),
204
- Queue.offer(exitQueue, Exit.failCause(error))
213
+ Deferred.failCause(deferred, error)
205
214
  )
206
215
  },
207
216
  done() {
@@ -209,30 +218,95 @@ export const toChannel = <IE>(
209
218
  }
210
219
  })
211
220
  ),
212
- Effect.tap(({ exitQueue, scope }) =>
213
- self.run((data) => Queue.offer(exitQueue, Exit.succeed(Chunk.of(data)))).pipe(
214
- Effect.zipRight(Effect.failCause(Cause.empty)),
215
- Effect.exit,
216
- Effect.tap((exit) => Queue.offer(exitQueue, exit)),
221
+ Effect.tap(({ deferred, scope, semaphore, state }) =>
222
+ self.runRaw((data) => {
223
+ state.buffer.push(f(data))
224
+ return semaphore.release(1)
225
+ }).pipe(
226
+ Effect.intoDeferred(deferred),
227
+ Effect.raceFirst(Deferred.await(deferred)),
228
+ Effect.ensuring(Effect.suspend(() => {
229
+ state.finished = true
230
+ return semaphore.release(1)
231
+ })),
217
232
  Effect.forkIn(scope),
218
233
  Effect.interruptible
219
234
  )
220
235
  ),
221
- Effect.map(({ exitQueue, input }) => {
222
- const loop: Channel.Channel<Chunk.Chunk<Uint8Array>, unknown, SocketError | IE, unknown, void, unknown> = Channel
223
- .flatMap(
224
- Queue.take(exitQueue),
225
- Exit.match({
226
- onFailure: (cause) => Cause.isEmptyType(cause) ? Channel.void : Channel.failCause(cause),
227
- onSuccess: (chunk) => Channel.zipRight(Channel.write(chunk), loop)
228
- })
229
- )
230
-
236
+ Effect.map(({ deferred, input, semaphore, state }) => {
237
+ const loop: Channel.Channel<Chunk.Chunk<A>, unknown, SocketError | IE, unknown, void, unknown> = Channel.flatMap(
238
+ semaphore.take(1),
239
+ (_) => {
240
+ if (state.buffer.length === 0) {
241
+ return state.finished ? Deferred.await(deferred) : loop
242
+ }
243
+ const chunk = Chunk.unsafeFromArray(state.buffer)
244
+ state.buffer = []
245
+ return Channel.zipRight(Channel.write(chunk), state.finished ? Deferred.await(deferred) : loop)
246
+ }
247
+ )
231
248
  return Channel.embedInput(loop, input)
232
249
  }),
233
250
  Channel.unwrapScoped
234
251
  )
235
252
 
253
+ /**
254
+ * @since 1.0.0
255
+ * @category combinators
256
+ */
257
+ export const toChannel = <IE>(
258
+ self: Socket
259
+ ): Channel.Channel<
260
+ Chunk.Chunk<Uint8Array>,
261
+ Chunk.Chunk<Uint8Array | string | CloseEvent>,
262
+ SocketError | IE,
263
+ IE,
264
+ void,
265
+ unknown
266
+ > => {
267
+ const encoder = new TextEncoder()
268
+ return toChannelMap(self, (data) => typeof data === "string" ? encoder.encode(data) : data)
269
+ }
270
+
271
+ /**
272
+ * @since 1.0.0
273
+ * @category combinators
274
+ */
275
+ export const toChannelString: {
276
+ (encoding?: string | undefined): <IE>(self: Socket) => Channel.Channel<
277
+ Chunk.Chunk<string>,
278
+ Chunk.Chunk<Uint8Array | string | CloseEvent>,
279
+ SocketError | IE,
280
+ IE,
281
+ void,
282
+ unknown
283
+ >
284
+ <IE>(
285
+ self: Socket,
286
+ encoding?: string | undefined
287
+ ): Channel.Channel<
288
+ Chunk.Chunk<string>,
289
+ Chunk.Chunk<Uint8Array | string | CloseEvent>,
290
+ SocketError | IE,
291
+ IE,
292
+ void,
293
+ unknown
294
+ >
295
+ } = dual((args) => isSocket(args[0]), <IE>(
296
+ self: Socket,
297
+ encoding?: string | undefined
298
+ ): Channel.Channel<
299
+ Chunk.Chunk<string>,
300
+ Chunk.Chunk<Uint8Array | string | CloseEvent>,
301
+ SocketError | IE,
302
+ IE,
303
+ void,
304
+ unknown
305
+ > => {
306
+ const decoder = new TextDecoder(encoding)
307
+ return toChannelMap(self, (data) => typeof data === "string" ? data : decoder.decode(data))
308
+ })
309
+
236
310
  /**
237
311
  * @since 1.0.0
238
312
  * @category combinators
@@ -241,13 +241,14 @@ export const start = (
241
241
  export const stream = (
242
242
  command: Command.Command
243
243
  ): Stream.Stream<Uint8Array, PlatformError, CommandExecutor.CommandExecutor> =>
244
- Stream.flatMap(commandExecutor.CommandExecutor, (process) => process.stream(command))
244
+ Stream.flatMap(commandExecutor.CommandExecutor, (executor) => executor.stream(command))
245
245
 
246
246
  /** @internal */
247
247
  export const streamLines = (
248
- command: Command.Command
248
+ command: Command.Command,
249
+ encoding?: string
249
250
  ): Stream.Stream<string, PlatformError, CommandExecutor.CommandExecutor> =>
250
- Stream.flatMap(commandExecutor.CommandExecutor, (process) => process.streamLines(command))
251
+ Stream.flatMap(commandExecutor.CommandExecutor, (executor) => executor.streamLines(command, encoding))
251
252
 
252
253
  /** @internal */
253
254
  export const string = dual<
@@ -1,5 +1,9 @@
1
1
  import * as Context from "effect/Context"
2
+ import * as Effect from "effect/Effect"
3
+ import * as Layer from "effect/Layer"
2
4
  import type * as Etag from "../Etag.js"
5
+ import type * as FileSystem from "../FileSystem.js"
6
+ import type * as Body from "../HttpBody.js"
3
7
 
4
8
  /** @internal */
5
9
  export const GeneratorTypeId: Etag.GeneratorTypeId = Symbol.for(
@@ -18,3 +22,42 @@ export const toString = (self: Etag.Etag): string => {
18
22
  return `"${self.value}"`
19
23
  }
20
24
  }
25
+
26
+ const fromFileInfo = (info: FileSystem.File.Info) => {
27
+ const mtime = info.mtime._tag === "Some"
28
+ ? info.mtime.value.getTime().toString(16)
29
+ : "0"
30
+ return `${info.size.toString(16)}-${mtime}`
31
+ }
32
+
33
+ const fromFileWeb = (file: Body.HttpBody.FileLike) => {
34
+ return `${file.size.toString(16)}-${file.lastModified.toString(16)}`
35
+ }
36
+
37
+ /** @internal */
38
+ export const layer = Layer.succeed(
39
+ tag,
40
+ tag.of({
41
+ [GeneratorTypeId]: GeneratorTypeId,
42
+ fromFileInfo(info) {
43
+ return Effect.sync(() => ({ _tag: "Strong", value: fromFileInfo(info) }))
44
+ },
45
+ fromFileWeb(file) {
46
+ return Effect.sync(() => ({ _tag: "Strong", value: fromFileWeb(file) }))
47
+ }
48
+ })
49
+ )
50
+
51
+ /** @internal */
52
+ export const layerWeak = Layer.succeed(
53
+ tag,
54
+ tag.of({
55
+ [GeneratorTypeId]: GeneratorTypeId,
56
+ fromFileInfo(info) {
57
+ return Effect.sync(() => ({ _tag: "Weak", value: fromFileInfo(info) }))
58
+ },
59
+ fromFileWeb(file) {
60
+ return Effect.sync(() => ({ _tag: "Weak", value: fromFileWeb(file) }))
61
+ }
62
+ })
63
+ )
@@ -1,12 +1,15 @@
1
1
  import * as Context from "effect/Context"
2
2
  import * as Effect from "effect/Effect"
3
- import { pipe } from "effect/Function"
3
+ import { identity, pipe } from "effect/Function"
4
+ import * as Layer from "effect/Layer"
5
+ import * as Stream from "effect/Stream"
4
6
  import * as Etag from "../Etag.js"
5
7
  import * as FileSystem from "../FileSystem.js"
6
8
  import * as Headers from "../Headers.js"
7
9
  import type * as Body from "../HttpBody.js"
8
10
  import type * as Platform from "../HttpPlatform.js"
9
11
  import type * as ServerResponse from "../HttpServerResponse.js"
12
+ import * as serverResponse from "./httpServerResponse.js"
10
13
 
11
14
  /** @internal */
12
15
  export const TypeId: Platform.TypeId = Symbol.for("@effect/platform/HttpPlatform") as Platform.TypeId
@@ -33,9 +36,9 @@ export const make = (impl: {
33
36
  options?: FileSystem.StreamOptions
34
37
  ) => ServerResponse.HttpServerResponse
35
38
  }): Effect.Effect<Platform.HttpPlatform, never, FileSystem.FileSystem | Etag.Generator> =>
36
- Effect.gen(function*(_) {
37
- const fs = yield* _(FileSystem.FileSystem)
38
- const etagGen = yield* _(Etag.Generator)
39
+ Effect.gen(function*() {
40
+ const fs = yield* FileSystem.FileSystem
41
+ const etagGen = yield* Etag.Generator
39
42
 
40
43
  return tag.of({
41
44
  [TypeId]: TypeId,
@@ -83,3 +86,28 @@ export const make = (impl: {
83
86
  }
84
87
  })
85
88
  })
89
+
90
+ /** @internal */
91
+ export const layer = Layer.effect(
92
+ tag,
93
+ Effect.flatMap(FileSystem.FileSystem, (fs) =>
94
+ make({
95
+ fileResponse(path, status, statusText, headers, start, end, contentLength) {
96
+ return serverResponse.stream(
97
+ fs.stream(path, {
98
+ offset: start,
99
+ bytesToRead: end !== undefined ? end - start : undefined
100
+ }),
101
+ { contentLength, headers, status, statusText }
102
+ )
103
+ },
104
+ fileWebResponse(file, status, statusText, headers, _options) {
105
+ return serverResponse.stream(
106
+ Stream.fromReadableStream(() => file.stream() as ReadableStream<Uint8Array>, identity),
107
+ { headers, status, statusText }
108
+ )
109
+ }
110
+ }))
111
+ ).pipe(
112
+ Layer.provide(Etag.layerWeak)
113
+ )
@@ -1,5 +1,6 @@
1
1
  import type { ParseOptions } from "@effect/schema/AST"
2
2
  import type * as Schema from "@effect/schema/Schema"
3
+ import * as Context from "effect/Context"
3
4
  import * as Effect from "effect/Effect"
4
5
  import * as Effectable from "effect/Effectable"
5
6
  import { dual } from "effect/Function"
@@ -11,7 +12,7 @@ import type * as PlatformError from "../Error.js"
11
12
  import type * as FileSystem from "../FileSystem.js"
12
13
  import * as Headers from "../Headers.js"
13
14
  import type * as Body from "../HttpBody.js"
14
- import * as Platform from "../HttpPlatform.js"
15
+ import type * as Platform from "../HttpPlatform.js"
15
16
  import type * as Respondable from "../HttpServerRespondable.js"
16
17
  import type * as ServerResponse from "../HttpServerResponse.js"
17
18
  import * as Template from "../Template.js"
@@ -214,13 +215,15 @@ export const schemaJson = <A, I, R>(
214
215
  ))
215
216
  }
216
217
 
218
+ const httpPlatform = Context.GenericTag<Platform.HttpPlatform>("@effect/platform/HttpPlatform")
219
+
217
220
  /** @internal */
218
221
  export const file = (
219
222
  path: string,
220
223
  options?: (ServerResponse.Options & FileSystem.StreamOptions) | undefined
221
224
  ): Effect.Effect<ServerResponse.HttpServerResponse, PlatformError.PlatformError, Platform.HttpPlatform> =>
222
225
  Effect.flatMap(
223
- Platform.HttpPlatform,
226
+ httpPlatform,
224
227
  (platform) => platform.fileResponse(path, options)
225
228
  )
226
229
 
@@ -230,7 +233,7 @@ export const fileWeb = (
230
233
  options?: (ServerResponse.Options.WithContent & FileSystem.StreamOptions) | undefined
231
234
  ): Effect.Effect<ServerResponse.HttpServerResponse, never, Platform.HttpPlatform> =>
232
235
  Effect.flatMap(
233
- Platform.HttpPlatform,
236
+ httpPlatform,
234
237
  (platform) => platform.fileWebResponse(file, options)
235
238
  )
236
239
 
@@ -287,9 +287,7 @@ const makeFromQueue = <IE>(
287
287
  if (chunk === null) {
288
288
  parser.end()
289
289
  } else {
290
- Chunk.forEach(chunk, function(buf) {
291
- parser.write(buf)
292
- })
290
+ Chunk.forEach(chunk, parser.write)
293
291
  }
294
292
  })
295
293
  )