@pwfabric/cli 1.0.0-rc.0 → 1.0.0-rc.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 (132) hide show
  1. package/dist/args.d.ts +0 -1
  2. package/dist/args.js.map +1 -1
  3. package/dist/bin.d.ts +0 -1
  4. package/dist/bin.js.map +1 -1
  5. package/dist/commands/add.d.ts +0 -1
  6. package/dist/commands/add.js.map +1 -1
  7. package/dist/commands/build.d.ts +0 -1
  8. package/dist/commands/build.js.map +1 -1
  9. package/dist/commands/create.d.ts +0 -1
  10. package/dist/commands/create.js.map +1 -1
  11. package/dist/commands/dev.d.ts +0 -1
  12. package/dist/commands/dev.js.map +1 -1
  13. package/dist/commands/lib/flags.d.ts +0 -1
  14. package/dist/commands/lib/flags.js.map +1 -1
  15. package/dist/commands/lib/identity.d.ts +0 -1
  16. package/dist/commands/lib/identity.js.map +1 -1
  17. package/dist/commands/lib/project.d.ts +0 -1
  18. package/dist/commands/lib/project.js.map +1 -1
  19. package/dist/commands/lib/report.d.ts +0 -1
  20. package/dist/commands/lib/report.js.map +1 -1
  21. package/dist/commands/lib/starter.d.ts +0 -1
  22. package/dist/commands/lib/starter.js.map +1 -1
  23. package/dist/commands/lib/static-server.d.ts +0 -1
  24. package/dist/commands/lib/static-server.js +5 -2
  25. package/dist/commands/lib/static-server.js.map +1 -1
  26. package/dist/commands/pack.d.ts +0 -1
  27. package/dist/commands/pack.js.map +1 -1
  28. package/dist/commands/registry.d.ts +0 -1
  29. package/dist/commands/registry.js.map +1 -1
  30. package/dist/commands/run.d.ts +0 -1
  31. package/dist/commands/run.js +2 -2
  32. package/dist/commands/run.js.map +1 -1
  33. package/dist/commands/types.d.ts +0 -1
  34. package/dist/commands/types.js.map +1 -1
  35. package/dist/commands/validate.d.ts +0 -1
  36. package/dist/commands/validate.js.map +1 -1
  37. package/dist/dev/assemble.d.ts +0 -1
  38. package/dist/dev/assemble.js.map +1 -1
  39. package/dist/dev/compile.d.ts +0 -1
  40. package/dist/dev/compile.js.map +1 -1
  41. package/dist/dev/csp.d.ts +0 -1
  42. package/dist/dev/csp.js.map +1 -1
  43. package/dist/dev/diagnostics.d.ts +0 -1
  44. package/dist/dev/diagnostics.js.map +1 -1
  45. package/dist/dev/envelope.d.ts +0 -1
  46. package/dist/dev/envelope.js.map +1 -1
  47. package/dist/dev/media.d.ts +0 -1
  48. package/dist/dev/media.js.map +1 -1
  49. package/dist/dev/needs-host.d.ts +0 -1
  50. package/dist/dev/needs-host.js.map +1 -1
  51. package/dist/dev/output.d.ts +0 -1
  52. package/dist/dev/output.js.map +1 -1
  53. package/dist/dev/overlay.d.ts +0 -1
  54. package/dist/dev/overlay.js.map +1 -1
  55. package/dist/dev/server.d.ts +0 -1
  56. package/dist/dev/server.js +5 -1
  57. package/dist/dev/server.js.map +1 -1
  58. package/dist/dev/shell.d.ts +12 -1
  59. package/dist/dev/shell.js +23 -0
  60. package/dist/dev/shell.js.map +1 -1
  61. package/dist/dev/sources.d.ts +0 -1
  62. package/dist/dev/sources.js.map +1 -1
  63. package/dist/dev/theme.d.ts +0 -1
  64. package/dist/dev/theme.js.map +1 -1
  65. package/dist/dev/types.d.ts +0 -1
  66. package/dist/dev/types.js.map +1 -1
  67. package/dist/dev/watcher.d.ts +0 -1
  68. package/dist/dev/watcher.js.map +1 -1
  69. package/dist/host/definitions.d.ts +0 -1
  70. package/dist/host/definitions.js.map +1 -1
  71. package/dist/host/http.d.ts +0 -1
  72. package/dist/host/http.js.map +1 -1
  73. package/dist/host/local-host.d.ts +0 -1
  74. package/dist/host/local-host.js.map +1 -1
  75. package/dist/host/oidc.d.ts +0 -1
  76. package/dist/host/oidc.js.map +1 -1
  77. package/dist/host/query.d.ts +0 -1
  78. package/dist/host/query.js.map +1 -1
  79. package/dist/host/receipts.d.ts +0 -1
  80. package/dist/host/receipts.js.map +1 -1
  81. package/dist/host/records.d.ts +0 -1
  82. package/dist/host/records.js.map +1 -1
  83. package/dist/host/tokens.d.ts +0 -1
  84. package/dist/host/tokens.js.map +1 -1
  85. package/dist/host/types.d.ts +0 -1
  86. package/dist/host/types.js.map +1 -1
  87. package/dist/index.d.ts +2 -1
  88. package/dist/index.js +11 -1
  89. package/dist/index.js.map +1 -1
  90. package/package.json +26 -25
  91. package/dist/args.d.ts.map +0 -1
  92. package/dist/bin.d.ts.map +0 -1
  93. package/dist/commands/add.d.ts.map +0 -1
  94. package/dist/commands/build.d.ts.map +0 -1
  95. package/dist/commands/create.d.ts.map +0 -1
  96. package/dist/commands/dev.d.ts.map +0 -1
  97. package/dist/commands/lib/flags.d.ts.map +0 -1
  98. package/dist/commands/lib/identity.d.ts.map +0 -1
  99. package/dist/commands/lib/project.d.ts.map +0 -1
  100. package/dist/commands/lib/report.d.ts.map +0 -1
  101. package/dist/commands/lib/starter.d.ts.map +0 -1
  102. package/dist/commands/lib/static-server.d.ts.map +0 -1
  103. package/dist/commands/pack.d.ts.map +0 -1
  104. package/dist/commands/registry.d.ts.map +0 -1
  105. package/dist/commands/run.d.ts.map +0 -1
  106. package/dist/commands/types.d.ts.map +0 -1
  107. package/dist/commands/validate.d.ts.map +0 -1
  108. package/dist/dev/assemble.d.ts.map +0 -1
  109. package/dist/dev/compile.d.ts.map +0 -1
  110. package/dist/dev/csp.d.ts.map +0 -1
  111. package/dist/dev/diagnostics.d.ts.map +0 -1
  112. package/dist/dev/envelope.d.ts.map +0 -1
  113. package/dist/dev/media.d.ts.map +0 -1
  114. package/dist/dev/needs-host.d.ts.map +0 -1
  115. package/dist/dev/output.d.ts.map +0 -1
  116. package/dist/dev/overlay.d.ts.map +0 -1
  117. package/dist/dev/server.d.ts.map +0 -1
  118. package/dist/dev/shell.d.ts.map +0 -1
  119. package/dist/dev/sources.d.ts.map +0 -1
  120. package/dist/dev/theme.d.ts.map +0 -1
  121. package/dist/dev/types.d.ts.map +0 -1
  122. package/dist/dev/watcher.d.ts.map +0 -1
  123. package/dist/host/definitions.d.ts.map +0 -1
  124. package/dist/host/http.d.ts.map +0 -1
  125. package/dist/host/local-host.d.ts.map +0 -1
  126. package/dist/host/oidc.d.ts.map +0 -1
  127. package/dist/host/query.d.ts.map +0 -1
  128. package/dist/host/receipts.d.ts.map +0 -1
  129. package/dist/host/records.d.ts.map +0 -1
  130. package/dist/host/tokens.d.ts.map +0 -1
  131. package/dist/host/types.d.ts.map +0 -1
  132. package/dist/index.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/dev/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,YAAY,EAA6C,MAAM,WAAW,CAAA;AAEnF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAElD,OAAO,EAAE,aAAa,EAA6C,MAAM,eAAe,CAAA;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAA2B,MAAM,kBAAkB,CAAA;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC3G,OAAO,EAAE,OAAO,EAAiB,MAAM,cAAc,CAAA;AAErD,OAAO,EAAE,WAAW,EAAmC,MAAM,cAAc,CAAA;AAE3E,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAA;AAChC,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAA;AAC3C,mDAAmD;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAA;AAYnC,MAAM,aAAa,GAAqC;IACtD,OAAO,EAAE,0BAA0B;IACnC,KAAK,EAAE,gCAAgC;IACvC,MAAM,EAAE,gCAAgC;IACxC,OAAO,EAAE,iCAAiC;IAC1C,MAAM,EAAE,iCAAiC;IACzC,MAAM,EAAE,yBAAyB;IACjC,MAAM,EAAE,eAAe;IACvB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,cAAc;IACtB,QAAQ,EAAE,YAAY;IACtB,MAAM,EAAE,2BAA2B;CACpC,CAAA;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,0BAA0B,CAAA;AACjF,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAQ,KAAmB,CAAC,MAAM,KAAK,UAAU;QACjD,OAAQ,KAAmB,CAAC,eAAe,KAAK,UAAU,CAC3D,CAAA;AACH,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,MAAM,CAAC,QAAgB,EAAE,IAAY;IACnD,MAAM,CAAC,GAAG,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAA;IACjG,OAAO,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAA;AAC5D,CAAC;AAED,SAAS,IAAI,CAAC,GAAmB,EAAE,MAAc,EAAE,IAAY,EAAE,IAAyB,EAAE,IAAI,GAAG,KAAK;IACtG,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE;QACpB,cAAc,EAAE,IAAI;QACpB,eAAe,EAAE,UAAU;QAC3B,gBAAgB,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU;KACvF,CAAC,CAAA;IACF,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AAClC,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,QAAQ,CAAC,WAA0C;IACjE,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC;YAChE,YAAY,EAAE,CAAA;YACd,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM;YAAE,SAAQ;QACnC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC;IACD,IAAI,YAAY,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,6CAA6C,CAAC,CAAA;IACpI,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,iGAAiG;AACjG,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAyB,EAAE,YAAgC,EAAE;IACjG,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAS,EAAE,CAAC,SAAS,CAAC,CAAA;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,gBAAgB,CAAA;IACrD,MAAM,KAAK,GAAG,kBAAkB,CAC9B,SAAS,CAAC,QAAQ,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAC9G,CAAA;IAED,oEAAoE;IACpE,IAAI,IAAI,GAAqB,IAAI,CAAA;IACjC,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,IAAI,GAAG,OAAO,CAAC,SAAS,CAAA;IAC1B,CAAC;SAAM,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;QAC7D,IAAI,MAAM,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;QAC5D,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,GAAG,CACD,2BAA2B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,QAAQ,kDACxD,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,EAC/D,kBAAkB,CACnB,CAAA;QACH,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,IAAI,KAAK,GAA0B,IAAI,CAAA;IACvC,MAAM,QAAQ,GAAa,IAAI,GAAG,EAAE,CAAA;IACpC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;IACzC,IAAI,MAAM,GAAG,EAAE,CAAA;IAEf,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,IAAa,EAAQ,EAAE;QACvD,MAAM,KAAK,GAAG,UAAU,KAAK,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAA;QAClE,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACzC,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,KAAK,IAA6B,EAAE;QAChD,IAAI,MAAsB,CAAA;QAC1B,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE;gBACjC,GAAG,SAAS,CAAC,QAAQ;gBACrB,KAAK;gBACL,QAAQ;gBACR,UAAU,EAAE,aAAa;gBACzB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,WAAW,GAAyB;gBACxC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;aAC1G,CAAA;YACD,MAAM,GAAG;gBACP,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE;gBAChC,WAAW;gBACX,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;gBAC1F,EAAE,EAAE,CAAC;aACN,CAAA;QACH,CAAC;QACD,KAAK,GAAG,MAAM,CAAA;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;QACxB,GAAG,CACD,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,OAAO,MAAM,CAAC,EAAE,SAAS,KAAK,CAAC,KAAK,QAAQ,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAC7G,KAAK,CAAC,MACR,cAAc,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,oBAAoB,KAAK,CAAC,SAAS,cAC9G,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,EAC9C,GAAG,CACJ,CAAA;QACD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;YAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;QACjE,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;QACtC,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAA;IAC1H,CAAC,CAAA;IAED,IAAI,KAAK,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAA;IAC/C,MAAM,OAAO,GAAG,GAA4B,EAAE;QAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QACrC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACnC,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED,oEAAoE;IACpE,MAAM,MAAM,GAAG,KAAK,EAAE,GAAoB,EAAE,GAAmB,EAAiB,EAAE;QAChF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAA;QACvD,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YACjC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAA;YAClH,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;YAC5B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAChB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YAC1C,OAAM;QACR,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,aAAa,CAAC,KAAK,CAAW,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;YAChF,OAAM;QACR,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,aAAa,CAAC,OAAO,CAAW,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;YACnI,OAAM;QACR,CAAC;QACD,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAAE,OAAM;QACjD,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAClD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,aAAa,CAAC,MAAM,CAAW,EAAE,oBAAoB,CAAC,CAAA;YACrE,OAAM;QACR,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,KAAK,MAAM,CAAA;QAClC,IAAI,IAAY,CAAA;QAChB,IAAI,CAAC;YACH,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,aAAa,CAAC,MAAM,CAAW,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;YACjE,OAAM;QACR,CAAC;QACD,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAClC,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,GAAG,IAAI,YAAY,CAAA;QACxD,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACpG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,aAAa,CAAC,MAAM,CAAW,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;YACjE,OAAM;QACR,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAA;QACrB,MAAM,MAAM,GAAG,GAAG,KAAK,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;QAC1D,IAAI,MAAM,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,aAAa,CAAC,OAAO,CAAW,EAAE,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAA;YACxF,OAAM;QACR,CAAC;QACD,mEAAmE;QACnE,MAAM,IAAI,GACR,GAAG,KAAK,UAAU;YAChB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;QACvG,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,aAAa,CAAC,MAAM,CAAW,EAAE,eAAe,GAAG,EAAE,EAAE,IAAI,CAAC,CAAA;YAC3E,OAAM;QACR,CAAC;QACD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IACxE,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACvC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;YACpC,IAAI,CAAC,GAAG,CAAC,WAAW;gBAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,aAAa,CAAC,MAAM,CAAW,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;;gBAC5G,GAAG,CAAC,GAAG,EAAE,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,MAAM,IAAI,OAAO,CAAO,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;QACnC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAC1B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,YAAY,EAAE,QAAQ,EAAE,GAAG,EAAE;YACzD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YACzB,EAAE,EAAE,CAAA;QACN,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,MAAM,IAAI,GAAI,MAAM,CAAC,OAAO,EAAkB,CAAC,IAAI,CAAA;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IAClC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC/B,IAAI,IAAI,EAAE,CAAC;QACT,GAAG,CAAC,yBAAyB,MAAM,GAAG,WAAW,gEAAgE,CAAC,CAAA;IACpH,CAAC;IAED,MAAM,OAAO,EAAE,CAAA;IAEf,IAAI,OAAO,GAAmB,IAAI,CAAA;IAClC,IAAI,SAAS,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC9B,OAAO,GAAG,WAAW,CACnB,IAAI,EACJ,CAAC,KAAK,EAAE,EAAE;YACR,gFAAgF;YAChF,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,OAAO,QAAQ,CAAC,CAAC;gBAAE,QAAQ,CAAC,KAAK,EAAE,CAAA;YAC3F,KAAK,OAAO,EAAE,CAAA;QAChB,CAAC,EACD,SAAS,CAAC,KAAK,IAAI,EAAE,CACtB,CAAA;QACD,GAAG,CAAC,YAAY,IAAI,KAAK,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAA;IACpF,CAAC;IAED,IAAI,MAAM,GAAyB,IAAI,CAAA;IACvC,OAAO;QACL,GAAG;QACH,OAAO;QACP,KAAK;YACH,MAAM,KAAK,CAAC,KAAK,IAAI,EAAE;gBACrB,OAAO,EAAE,KAAK,EAAE,CAAA;gBAChB,KAAK,MAAM,CAAC,IAAI,OAAO;oBAAE,CAAC,CAAC,GAAG,EAAE,CAAA;gBAChC,OAAO,CAAC,KAAK,EAAE,CAAA;gBACf,MAAM,IAAI,OAAO,CAAO,CAAC,EAAE,EAAE,EAAE;oBAC7B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;oBACxB,MAAM,CAAC,mBAAmB,EAAE,CAAA;gBAC9B,CAAC,CAAC,CAAA;gBACF,MAAM,KAAK,CAAA;YACb,CAAC,CAAC,EAAE,CAAA;YACJ,OAAO,MAAM,CAAA;QACf,CAAC;KACF,CAAA;AACH,CAAC;AAED,0DAA0D;AAC1D,MAAM,CAAC,MAAM,cAAc,GAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/dev/server.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `pwf dev`: serves an app folder as a pwapp and keeps it current.\n *\n * One `node:http` server on 127.0.0.1 (port 4600 by default). It assembles\n * the app into memory (see ./assemble.ts), serves the files from there,\n * watches the folder, reassembles on change and tells the open page to reload\n * through Server-Sent Events. While the last build has errors the page is an\n * overlay listing them; the terminal gets the same list.\n *\n * When the app declares sign-in or records it needs a local host. A host\n * passed in `localHost` is mounted on the same server: requests it claims go\n * to `host.handle()`, and the envelope carries `host.envelopeEntries()`.\n * This module never constructs a host itself (it depends on the host's\n * interface only); a caller that can make one passes `createHost`.\n */\nimport { createServer, type IncomingMessage, type ServerResponse } from 'node:http'\nimport type { AddressInfo } from 'node:net'\nimport { extname, join, resolve } from 'node:path'\nimport type { CreateLocalHost, LocalHost } from '../host/types.js'\nimport { assemblePwapp, type AssembleOptions, type AssembleResult } from './assemble.js'\nimport { createCompileCache } from './compile.js'\nimport { formatDiagnostic, type AssembleDiagnostic } from './diagnostics.js'\nimport { hostNeeds } from './needs-host.js'\nimport { EVENTS_PATH, overlayHtml, RELOAD_CLIENT, RELOAD_JS, RELOAD_PATH, STATUS_PATH } from './overlay.js'\nimport { withBaseHref } from './shell.js'\nimport { PWF_DIR, type PackMemo } from './sources.js'\nimport type { DevBuildResult, DevServer, DevServerOptions, StartDevServer } from './types.js'\nimport { watchFolder, type WatchOptions, type Watcher } from './watcher.js'\n\nexport const DEFAULT_PORT = 4600\nexport const DEFAULT_HOSTNAME = '127.0.0.1'\n/** Where a host this server creates is mounted. */\nexport const HOST_PREFIX = '/_host'\n\n/** Seams for the `dev` command and for tests; not part of the public contract. */\nexport interface DevServerInternals {\n /** Watching; `false` turns it off. */\n readonly watch?: WatchOptions | false\n /** Makes a host when the app needs one and none was passed. */\n readonly createHost?: CreateLocalHost\n /** Assembly options (runtime bundles, cache folder). */\n readonly assemble?: Pick<AssembleOptions, 'runtime' | 'cacheDir' | 'publishedAt'>\n}\n\nconst CONTENT_TYPES: Readonly<Record<string, string>> = {\n '.html': 'text/html; charset=utf-8',\n '.js': 'text/javascript; charset=utf-8',\n '.mjs': 'text/javascript; charset=utf-8',\n '.json': 'application/json; charset=utf-8',\n '.map': 'application/json; charset=utf-8',\n '.css': 'text/css; charset=utf-8',\n '.svg': 'image/svg+xml',\n '.png': 'image/png',\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.gif': 'image/gif',\n '.webp': 'image/webp',\n '.avif': 'image/avif',\n '.ico': 'image/x-icon',\n '.woff2': 'font/woff2',\n '.txt': 'text/plain; charset=utf-8',\n}\n\nexport function contentTypeOf(path: string): string {\n return CONTENT_TYPES[extname(path).toLowerCase()] ?? 'application/octet-stream'\n}\n\nfunction isLocalHost(value: unknown): value is LocalHost {\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof (value as LocalHost).handle === 'function' &&\n typeof (value as LocalHost).envelopeEntries === 'function'\n )\n}\n\n/** The address a browser should open for a bound interface. */\nexport function urlFor(hostname: string, port: number): string {\n const h = hostname === '0.0.0.0' || hostname === '::' || hostname === '' ? 'localhost' : hostname\n return `http://${h.includes(':') ? `[${h}]` : h}:${port}/`\n}\n\nfunction send(res: ServerResponse, status: number, type: string, body: string | Uint8Array, head = false): void {\n res.writeHead(status, {\n 'content-type': type,\n 'cache-control': 'no-store',\n 'content-length': typeof body === 'string' ? Buffer.byteLength(body) : body.byteLength,\n })\n res.end(head ? undefined : body)\n}\n\n/** Lines for the terminal: everything that is the app's own, and a count of what pinned packs say. */\nexport function logLines(diagnostics: readonly AssembleDiagnostic[]): string[] {\n const own: string[] = []\n let packWarnings = 0\n for (const d of diagnostics) {\n if (d.severity !== 'error' && d.path?.startsWith(`${PWF_DIR}/`)) {\n packWarnings++\n continue\n }\n if (d.severity === 'info') continue\n own.push(formatDiagnostic(d))\n }\n if (packWarnings > 0) own.push(`${packWarnings} finding${packWarnings === 1 ? '' : 's'} in pinned packs (\\`pwf build\\` lists them)`)\n return own\n}\n\n/** Starts the dev server with the internal seams. {@link startDevServer} is the public entry. */\nexport async function createDevServer(options: DevServerOptions, internals: DevServerInternals = {}): Promise<DevServer> {\n const root = resolve(options.root)\n const log = options.log ?? ((): void => undefined)\n const hostname = options.hostname ?? DEFAULT_HOSTNAME\n const cache = createCompileCache(\n internals.assemble?.cacheDir === undefined ? join(root, PWF_DIR, 'build-cache') : internals.assemble.cacheDir\n )\n\n // ── the local host ───────────────────────────────────────────────\n let host: LocalHost | null = null\n if (isLocalHost(options.localHost)) {\n host = options.localHost\n } else if (options.localHost !== false) {\n const needs = await hostNeeds(root)\n const wanted = options.localHost === true || needs.length > 0\n if (wanted && internals.createHost) {\n host = internals.createHost({ root, prefix: HOST_PREFIX })\n } else if (wanted) {\n log(\n `note: this app declares ${needs.join(' and ') || 'a host'}, but no local host is mounted — pages render, ${\n needs.includes('sign-in') ? 'sign-in cannot complete and ' : ''\n }data stays empty`\n )\n }\n }\n\n // ── state ────────────────────────────────────────────────────────\n let state: AssembleResult | null = null\n const packMemo: PackMemo = new Map()\n const clients = new Set<ServerResponse>()\n let origin = ''\n\n const broadcast = (event: string, data: unknown): void => {\n const frame = `event: ${event}\\ndata: ${JSON.stringify(data)}\\n\\n`\n for (const c of clients) c.write(frame)\n }\n\n const build = async (): Promise<DevBuildResult> => {\n let result: AssembleResult\n try {\n result = await assemblePwapp(root, {\n ...internals.assemble,\n cache,\n packMemo,\n shellExtra: RELOAD_CLIENT,\n ...(host ? { envelopeEntries: host.envelopeEntries(origin) } : {}),\n })\n } catch (e) {\n const diagnostics: AssembleDiagnostic[] = [\n { severity: 'error', code: 'INTERNAL', message: e instanceof Error ? (e.stack ?? e.message) : String(e) },\n ]\n result = {\n ok: false,\n files: state?.files ?? new Map(),\n diagnostics,\n stats: { pages: 0, blocks: 0, engines: 0, atoms: 0, compiled: 0, fromCache: 0, failed: 0 },\n ms: 0,\n }\n }\n state = result\n const { stats } = result\n log(\n `${result.ok ? 'built' : 'build failed'} in ${result.ms} ms — ${stats.pages} page${stats.pages === 1 ? '' : 's'}, ${\n stats.blocks\n } block type${stats.blocks === 1 ? '' : 's'}, ${stats.compiled}/${stats.atoms} atoms compiled (${stats.fromCache} from cache${\n stats.failed ? `, ${stats.failed} failed` : ''\n })`\n )\n for (const line of logLines(result.diagnostics)) log(` ${line}`)\n broadcast('reload', { ok: result.ok })\n return { ok: result.ok, compiled: stats.compiled, diagnostics: result.diagnostics.map(formatDiagnostic), ms: result.ms }\n }\n\n let chain: Promise<unknown> = Promise.resolve()\n const rebuild = (): Promise<DevBuildResult> => {\n const next = chain.then(build, build)\n chain = next.catch(() => undefined)\n return next\n }\n\n // ── HTTP ─────────────────────────────────────────────────────────\n const handle = async (req: IncomingMessage, res: ServerResponse): Promise<void> => {\n const url = new URL(req.url ?? '/', 'http://localhost')\n if (url.pathname === EVENTS_PATH) {\n res.writeHead(200, { 'content-type': 'text/event-stream', 'cache-control': 'no-store', connection: 'keep-alive' })\n res.write(': connected\\n\\n')\n clients.add(res)\n req.on('close', () => clients.delete(res))\n return\n }\n if (url.pathname === RELOAD_PATH) {\n send(res, 200, CONTENT_TYPES['.js'] as string, RELOAD_JS, req.method === 'HEAD')\n return\n }\n if (url.pathname === STATUS_PATH) {\n send(res, 200, CONTENT_TYPES['.json'] as string, JSON.stringify({ ok: state?.ok ?? false, diagnostics: state?.diagnostics ?? [] }))\n return\n }\n if (host && (await host.handle(req, res))) return\n if (req.method !== 'GET' && req.method !== 'HEAD') {\n send(res, 405, CONTENT_TYPES['.txt'] as string, 'method not allowed')\n return\n }\n const head = req.method === 'HEAD'\n let path: string\n try {\n path = decodeURIComponent(url.pathname)\n } catch {\n send(res, 400, CONTENT_TYPES['.txt'] as string, 'bad path', head)\n return\n }\n let rel = path.replace(/^\\/+/, '')\n if (rel === '' || rel.endsWith('/')) rel += 'index.html'\n if (rel.split('/').some((s) => s === '..' || s === '.') || rel.includes('\\\\') || rel.includes('\\0')) {\n send(res, 400, CONTENT_TYPES['.txt'] as string, 'bad path', head)\n return\n }\n const current = state\n const isPage = rel === 'index.html' || extname(rel) === ''\n if (isPage && current && !current.ok) {\n send(res, 200, CONTENT_TYPES['.html'] as string, overlayHtml(current.diagnostics), head)\n return\n }\n // `_headers` configures a static host; it is not part of the site.\n const file =\n rel === '_headers'\n ? undefined\n : (current?.files.get(rel) ?? (extname(rel) === '' ? current?.files.get('index.html') : undefined))\n if (!file) {\n send(res, 404, CONTENT_TYPES['.txt'] as string, `not found: /${rel}`, head)\n return\n }\n // A nested page path answered with the shell needs the app's base, or the\n // shell's relative script addresses resolve under the page's folder.\n const body = isPage && rel !== 'index.html' ? withBaseHref(file) : file\n send(res, 200, contentTypeOf(isPage ? 'index.html' : rel), body, head)\n }\n\n const server = createServer((req, res) => {\n handle(req, res).catch((e: unknown) => {\n if (!res.headersSent) send(res, 500, CONTENT_TYPES['.txt'] as string, e instanceof Error ? e.message : String(e))\n else res.end()\n })\n })\n await new Promise<void>((ok, fail) => {\n server.once('error', fail)\n server.listen(options.port ?? DEFAULT_PORT, hostname, () => {\n server.off('error', fail)\n ok()\n })\n })\n const port = (server.address() as AddressInfo).port\n const url = urlFor(hostname, port)\n origin = url.replace(/\\/$/, '')\n if (host) {\n log(`local host mounted at ${origin}${HOST_PREFIX} — development only: records in memory, one user, any password`)\n }\n\n await rebuild()\n\n let watcher: Watcher | null = null\n if (internals.watch !== false) {\n watcher = watchFolder(\n root,\n (paths) => {\n // A pack build changed (or the platform could not say what did): read it again.\n if (paths === null || paths.some((p) => p.startsWith(`${PWF_DIR}/packs`))) packMemo.clear()\n void rebuild()\n },\n internals.watch ?? {}\n )\n log(`watching ${root} (${watcher.mode === 'native' ? 'file events' : 'polling'})`)\n }\n\n let closed: Promise<void> | null = null\n return {\n url,\n rebuild,\n close() {\n closed ??= (async () => {\n watcher?.close()\n for (const c of clients) c.end()\n clients.clear()\n await new Promise<void>((ok) => {\n server.close(() => ok())\n server.closeAllConnections()\n })\n await chain\n })()\n return closed\n },\n }\n}\n\n/** Implements the `pwf dev` contract (see ./types.ts). */\nexport const startDevServer: StartDevServer = (options) => createDevServer(options)\n"]}
@@ -80,4 +80,15 @@ export declare function runnerLocaleOf(locale: string | undefined): 'en' | 'tr';
80
80
  * sub-path, or from disk behind any static server.
81
81
  */
82
82
  export declare function buildShellHtml(options: ShellOptions): string;
83
- //# sourceMappingURL=shell.d.ts.map
83
+ /**
84
+ * The shell with `<base href="/">` as the first element of its head, unless it
85
+ * already declares a base.
86
+ *
87
+ * The shell addresses its scripts and the import map relatively (`./assets/…`,
88
+ * `./shims/…`) so the folder works under any sub-path. When a server answers a
89
+ * nested page path (`/team/members`) with that shell, the browser would resolve
90
+ * those addresses against `/team/` and miss every file. The pwapp format puts
91
+ * the fix on the host: under path routing it declares the app's base with
92
+ * `<base href>`. This server serves the app at its root, so the base is `/`.
93
+ */
94
+ export declare function withBaseHref(body: Uint8Array, href?: string): Uint8Array;
package/dist/dev/shell.js CHANGED
@@ -241,4 +241,27 @@ export function buildShellHtml(options) {
241
241
  </html>
242
242
  `;
243
243
  }
244
+ /**
245
+ * The shell with `<base href="/">` as the first element of its head, unless it
246
+ * already declares a base.
247
+ *
248
+ * The shell addresses its scripts and the import map relatively (`./assets/…`,
249
+ * `./shims/…`) so the folder works under any sub-path. When a server answers a
250
+ * nested page path (`/team/members`) with that shell, the browser would resolve
251
+ * those addresses against `/team/` and miss every file. The pwapp format puts
252
+ * the fix on the host: under path routing it declares the app's base with
253
+ * `<base href>`. This server serves the app at its root, so the base is `/`.
254
+ */
255
+ export function withBaseHref(body, href = '/') {
256
+ const html = new TextDecoder().decode(body);
257
+ if (/<bases/i.test(html))
258
+ return body;
259
+ const at = html.search(/<head[^>]*>/i);
260
+ if (at < 0)
261
+ return body;
262
+ const end = html.indexOf('>', at) + 1;
263
+ const tag = `
264
+ <base href="${href.replace(/"/g, '&quot;')}" />`;
265
+ return new TextEncoder().encode(html.slice(0, end) + tag + html.slice(end));
266
+ }
244
267
  //# sourceMappingURL=shell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/dev/shell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/dev/shell.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The runtime half of a pwapp: the shell page, the runner and renderer\n * bundles, and the shim modules the import map points at.\n *\n * Every bare specifier a compiled block may import comes from one list in\n * the engine (`BLOCK_HOST_IMPORTS`). The import map and the shim files are\n * derived from it here, so a block compiled against that list always links.\n *\n * A shim re-exports a global the renderer seeded from its own bundled copy\n * (one React, one runtime, one zod for every block). Its named exports are\n * not typed out by hand: they are read off the very globals the renderer\n * bundle seeds, by evaluating that bundle once in an isolated context. An\n * ESM import of a name a shim does not export fails the whole module at link\n * time, so the list has to be complete — and reading it from the bundle that\n * serves it is the only way it stays complete.\n */\nimport { readFile } from 'node:fs/promises'\nimport { createRequire } from 'node:module'\nimport vm from 'node:vm'\nimport {\n BLOCK_HOST_IMPORTS,\n blockImportMap,\n blockShimFiles,\n specifiersForShim,\n} from '@pwfabric/core'\nimport { webfontStylesheetHref, themeWebfonts } from './theme.js'\n\nconst require = createRequire(import.meta.url)\n\n/** The runner and renderer bundles a pwapp ships. */\nexport interface RuntimeAssets {\n /** `assets/runner.js` — the ES module exporting `runApp`. */\n readonly runnerJs: string\n /** Its source map, when the build has one. */\n readonly runnerMap?: string\n /** `assets/embed.js` — the classic script that defines `window.PWFabric`. */\n readonly embedJs: string\n}\n\nlet cachedAssets: Promise<RuntimeAssets> | null = null\n\n/** Reads the built runner and renderer from the installed engine packages (once per process). */\nexport function loadRuntimeAssets(): Promise<RuntimeAssets> {\n cachedAssets ??= (async () => {\n const runnerPath = require.resolve('@pwfabric/runner')\n const embedPath = require.resolve('@pwfabric/embed/embed.js')\n const [runnerJs, embedJs, runnerMap] = await Promise.all([\n readFile(runnerPath, 'utf8'),\n readFile(embedPath, 'utf8'),\n readFile(`${runnerPath}.map`, 'utf8').catch(() => undefined),\n ])\n return { runnerJs, embedJs, ...(runnerMap !== undefined ? { runnerMap } : {}) }\n })()\n cachedAssets.catch(() => {\n cachedAssets = null\n })\n return cachedAssets\n}\n\n/** The vendor table the renderer exposes besides the `__pwfabric_*` globals. */\nconst VENDOR_GLOBAL = '__PW_VENDOR__'\n\n/**\n * Globals the renderer bundle does not seed itself, and the vendor-table key\n * the shell seeds each from (see {@link buildShellHtml}), so blocks that reach\n * for these get the renderer's own instance instead of `undefined`.\n *\n * The renderer bundle (`@pwfabric/embed`'s `embed.js`) carries `react-dom`,\n * `@pwfabric/core` and `@pwfabric/authoring` (the `sdk@v1` shim's package)\n * in its `__PW_VENDOR__` table but does not seed these globals itself, so a\n * block that uses a VALUE from core or the authoring kit (as opposed to a\n * type) reads the renderer's instance here instead of `undefined`.\n */\nexport const SHELL_SEEDED_GLOBALS: Readonly<Record<string, string>> = {\n __pwfabric_react_dom: 'react-dom',\n __pwfabric_core: '@pwfabric/core',\n __pwfabric_sdk: '@pwfabric/authoring',\n}\n\n/** Packages to read export names from when no bundle seeds their global. */\nconst NAME_SOURCES: Readonly<Record<string, string>> = {\n __pwfabric_core: '@pwfabric/core',\n __pwfabric_sdk: '@pwfabric/authoring',\n}\n\n/** Export names a shim falls back to when neither a bundle nor a package says more. */\nconst FALLBACK_NAMES: Readonly<Record<string, readonly string[]>> = {\n __pwfabric_sdk: ['defineBlock'],\n}\n\nconst RESERVED = new Set(\n (\n 'break case catch class const continue debugger default delete do else enum export extends false finally for ' +\n 'function if import in instanceof new null return super switch this throw true try typeof var void while with ' +\n 'yield let static implements interface package private protected public await arguments eval'\n ).split(' ')\n)\n\n/** Whether `name` can be an `export const { name }` binding. */\nexport function isExportableName(name: string): boolean {\n return /^[A-Za-z_$][\\w$]*$/.test(name) && !RESERVED.has(name)\n}\n\n/** Evaluates the renderer bundle in an isolated context and returns what it put on `globalThis`. */\nexport function seededGlobals(embedJs: string): Record<string, unknown> {\n const sandbox: Record<string, unknown> = { console, setTimeout, clearTimeout, queueMicrotask }\n sandbox['globalThis'] = sandbox\n sandbox['self'] = sandbox\n const context = vm.createContext(sandbox)\n try {\n vm.runInContext(embedJs, context, { filename: 'embed.js', timeout: 10_000 })\n } catch {\n // A bundle that needs a document past its globals still seeded them first.\n }\n const out: Record<string, unknown> = {}\n for (const [k, v] of Object.entries(sandbox)) {\n if (k.startsWith('__pwfabric_') || k === VENDOR_GLOBAL) out[k] = v\n }\n return out\n}\n\nasync function namesFromPackage(pkg: string): Promise<string[] | null> {\n try {\n const mod = (await import(pkg)) as Record<string, unknown>\n return Object.keys(mod)\n } catch {\n return null\n }\n}\n\n/** The global each shim file reads (every specifier sharing a shim names the same global). */\nexport function shimGlobal(shim: string): string {\n const entry = BLOCK_HOST_IMPORTS.find((i) => i.shim === shim && i.global)\n return entry?.global ?? `__pwfabric_${shim.replace(/[^A-Za-z0-9]+/g, '_')}`\n}\n\n/** Source of one shim module. */\nexport function shimSource(shim: string, global: string, names: readonly string[]): string {\n const exported = [...new Set(names)].filter(isExportableName).sort()\n const specifiers = specifiersForShim(shim)\n const lines = [\n `// Generated by pwf. Serves ${specifiers.map((s) => `'${s}'`).join(', ')} to compiled blocks:`,\n `// re-exports the instance the page seeded on globalThis.${global}.`,\n `const m = globalThis.${global} ?? {}`,\n 'export default m',\n ]\n if (exported.length > 0) {\n lines.push(`export const {\\n${exported.map((n) => ` ${n},`).join('\\n')}\\n} = m`)\n }\n return `${lines.join('\\n')}\\n`\n}\n\n/**\n * Every shim file the import map can point at, with its source.\n *\n * Names come from, in order: the global the renderer seeds; the vendor table\n * entry the shell seeds the global from; the package itself (for globals no\n * standalone page seeds — their exports resolve to `undefined`, which keeps a\n * block linking instead of failing at load).\n */\nexport async function buildShims(embedJs: string): Promise<Map<string, string>> {\n const seeded = seededGlobals(embedJs)\n const vendor = (seeded[VENDOR_GLOBAL] ?? {}) as Record<string, unknown>\n const out = new Map<string, string>()\n for (const shim of blockShimFiles()) {\n const global = shimGlobal(shim)\n let names: string[] | null = null\n const value = seeded[global]\n if (value && typeof value === 'object') names = Object.keys(value)\n const vendorKey = SHELL_SEEDED_GLOBALS[global]\n if (!names && vendorKey && vendor[vendorKey] && typeof vendor[vendorKey] === 'object') {\n names = Object.keys(vendor[vendorKey] as object)\n }\n if (!names && NAME_SOURCES[global]) names = await namesFromPackage(NAME_SOURCES[global] as string)\n out.set(shim, shimSource(shim, global, names ?? [...(FALLBACK_NAMES[global] ?? [])]))\n }\n return out\n}\n\nlet cachedShims: { embedJs: string; shims: Promise<Map<string, string>> } | null = null\n\n/** {@link buildShims}, once per renderer bundle. */\nexport function shimsFor(embedJs: string): Promise<Map<string, string>> {\n if (cachedShims?.embedJs !== embedJs) cachedShims = { embedJs, shims: buildShims(embedJs) }\n return cachedShims.shims\n}\n\n/** The import map: every host import → `./shims/<file>`. */\nexport function importMap(): { readonly imports: Record<string, string> } {\n return blockImportMap('./shims')\n}\n\nexport function escapeHtml(s: string): string {\n return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;')\n}\n\n/** JSON safe to place inside a `<script>` element. */\nexport function scriptJson(value: unknown): string {\n return JSON.stringify(value).replace(/</g, '\\\\u003c')\n}\n\nexport interface ShellOptions {\n readonly title: string\n /** `<html lang>`; default `en`. */\n readonly lang?: string\n /** The app's appearance configuration (its webfonts are linked). */\n readonly appearance?: Record<string, unknown>\n /** Markup appended to `<body>` (the dev server's reload client). */\n readonly bodyExtra?: string\n /** The policy for the shell's `<meta http-equiv=\"Content-Security-Policy\">`; none when absent. */\n readonly csp?: string\n}\n\n/** The exact text of the shell's inline import map (the CSP hashes this). */\nexport function importMapText(): string {\n return scriptJson(importMap())\n}\n\n/**\n * `assets/seed.js`: seeds the globals the renderer does not seed itself from\n * its vendor table (a file, not an inline script, so the policy needs no hash).\n */\nexport function seedScript(): string {\n const seeds = Object.entries(SHELL_SEEDED_GLOBALS)\n .map(([global, key]) => ` g.${global} = g.${global} || v[${JSON.stringify(key)}];`)\n .join('\\n')\n return `// Generated by pwf: globals the renderer carries in ${VENDOR_GLOBAL} but does not seed.\n(function (g) {\n var v = g.${VENDOR_GLOBAL} || {};\n${seeds}\n})(globalThis)\n`\n}\n\n/** `assets/boot.js`: the module that starts the runner. */\nexport function bootScript(locale: 'en' | 'tr' = 'en'): string {\n return `// Generated by pwf: starts the app.\nimport { runApp } from './runner.js'\n\nrunApp({ source: './pwpack', blocks: './blocks/', engines: './engines', router: 'hash', locale: '${locale}' })\n`\n}\n\n/** A BCP-47-looking tag, or `en`. */\nexport function htmlLangOf(locale: string | undefined): string {\n const tag = (locale ?? '').trim()\n return /^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/.test(tag) ? tag : 'en'\n}\n\n/** `tr-TR` → `tr`; the runner's copy knows `en` and `tr`. */\nexport function runnerLocaleOf(locale: string | undefined): 'en' | 'tr' {\n return /^tr(?:[-_]|$)/i.test(locale ?? '') ? 'tr' : 'en'\n}\n\n/**\n * `index.html`, in the order the pwapp format requires: import map, the\n * renderer (a classic script that seeds the shared globals) and `seed.js`,\n * the mount element, then `boot.js`, which starts the runner. The import map\n * is the only inline script, so a Content Security Policy needs one hash.\n * Every address is relative, so the folder works at a host root, under a\n * sub-path, or from disk behind any static server.\n */\nexport function buildShellHtml(options: ShellOptions): string {\n const href = webfontStylesheetHref(themeWebfonts(options.appearance))\n const fonts = href\n ? `\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\" />\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin />\n <link rel=\"stylesheet\" href=\"${escapeHtml(href)}\" />`\n : ''\n const csp = options.csp\n ? `\n <meta http-equiv=\"Content-Security-Policy\" content=\"${escapeHtml(options.csp)}\" />`\n : ''\n return `<!doctype html>\n<html lang=\"${escapeHtml(htmlLangOf(options.lang))}\">\n <head>\n <meta charset=\"UTF-8\" />${csp}\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>${escapeHtml(options.title)}</title>\n <link rel=\"icon\" href=\"data:,\" />\n <link rel=\"stylesheet\" href=\"./assets/theme.css\" />${fonts}\n <script type=\"importmap\">${importMapText()}</script>\n <script src=\"./assets/embed.js\"></script>\n <script src=\"./assets/seed.js\"></script>\n </head>\n <body>\n <div id=\"root\"></div>\n <script type=\"module\" src=\"./assets/boot.js\"></script>${options.bodyExtra ?? ''}\n </body>\n</html>\n`\n}\n\n/**\n * The shell with `<base href=\"/\">` as the first element of its head, unless it\n * already declares a base.\n *\n * The shell addresses its scripts and the import map relatively (`./assets/…`,\n * `./shims/…`) so the folder works under any sub-path. When a server answers a\n * nested page path (`/team/members`) with that shell, the browser would resolve\n * those addresses against `/team/` and miss every file. The pwapp format puts\n * the fix on the host: under path routing it declares the app's base with\n * `<base href>`. This server serves the app at its root, so the base is `/`.\n */\nexport function withBaseHref(body: Uint8Array, href = '/'): Uint8Array {\n const html = new TextDecoder().decode(body)\n if (/<bases/i.test(html)) return body\n const at = html.search(/<head[^>]*>/i)\n if (at < 0) return body\n const end = html.indexOf('>', at) + 1\n const tag = `\n <base href=\"${href.replace(/\"/g, '&quot;')}\" />`\n return new TextEncoder().encode(html.slice(0, end) + tag + html.slice(end))\n}\n"]}
@@ -43,4 +43,3 @@ export declare function jsonOf(folder: PackFolder, path: string): unknown;
43
43
  export declare function isRecord(v: unknown): v is Record<string, unknown>;
44
44
  /** The atoms of one source, as validation derived them. */
45
45
  export declare function atomsOf(source: SourcePack): readonly AtomRef[];
46
- //# sourceMappingURL=sources.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/dev/sources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/dev/sources.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Reading what an app is made of: the app folder itself and every pack build\n * its `pwpack.json` pins, from the project's local cache\n * (`.pwf/packs/<id>@<version>/`, written by `pwf create` / `pwf add`).\n *\n * Nothing here fetches: a pin that is not in the cache is a diagnostic that\n * says which command fills it.\n */\nimport { stat } from 'node:fs/promises'\nimport { join } from 'node:path'\nimport type { AtomRef, PwpackIdentity } from '@pwfabric/contracts'\nimport {\n DEFAULT_IGNORED_NAMES,\n PackError,\n isSafePackPath,\n packContent,\n readFolder,\n validatePack,\n type PackFolder,\n type PackValidation,\n} from '@pwfabric/pack'\nimport type { AssembleDiagnostic } from './diagnostics.js'\n\n/** The project's working folder; never part of the app. */\nexport const PWF_DIR = '.pwf'\n/** Names skipped when the app folder is read. */\nexport const APP_IGNORED_NAMES: ReadonlySet<string> = new Set([...DEFAULT_IGNORED_NAMES, PWF_DIR])\n\n/** One folder the assembler reads atoms from: the app itself or a pinned pack build. */\nexport interface SourcePack {\n readonly origin: 'app' | 'pack'\n readonly id: string\n readonly version: string\n /** The pin's hash, when the app pinned one. */\n readonly pinnedHash?: string\n /** Absolute folder. */\n readonly dir: string\n /** Path of `dir` as diagnostics print it (relative to the app root). */\n readonly label: string\n readonly folder: PackFolder\n readonly validation: PackValidation\n}\n\nexport interface LoadedSources {\n readonly app: SourcePack | null\n readonly identity: PwpackIdentity | null\n /** The pinned packs, in pin order (the app's own atoms are in `app`). */\n readonly packs: readonly SourcePack[]\n readonly diagnostics: readonly AssembleDiagnostic[]\n}\n\n/** `.pwf/packs/<id>@<version>` as a POSIX path relative to the app root. */\nexport function packCacheRel(id: string, version: string): string | null {\n const rel = `${id}@${version}`\n if (!isSafePackPath(rel) || /[<>:\"|?*]/.test(rel)) return null\n return `${PWF_DIR}/packs/${rel}`\n}\n\nasync function isDir(path: string): Promise<boolean> {\n return (await stat(path).catch(() => null))?.isDirectory() === true\n}\n\nfunction issuesToDiagnostics(\n validation: PackValidation,\n label: string,\n downgrade: boolean\n): AssembleDiagnostic[] {\n return validation.issues\n .filter((i) => i.severity !== 'info')\n .map((i) => ({\n severity: downgrade && i.severity === 'error' ? 'warning' : i.severity,\n code: i.code,\n message: i.message,\n ...(i.path !== undefined ? { path: label ? `${label}/${i.path}` : i.path } : {}),\n }))\n}\n\nfunction packDiagnostics(source: SourcePack, pin: { id: string; version: string }): AssembleDiagnostic[] {\n const out = issuesToDiagnostics(source.validation, source.label, true)\n const cached = source.validation.identity\n if (cached && (cached.id !== pin.id || cached.version !== pin.version)) {\n out.push({\n severity: 'warning',\n code: 'PACK_IDENTITY_MISMATCH',\n message: `${source.label}/pwpack.json says ${cached.id}@${cached.version}, the pin says ${pin.id}@${pin.version}`,\n path: `${source.label}/pwpack.json`,\n })\n }\n return out\n}\n\nasync function readSource(dir: string, ignore: ReadonlySet<string>): Promise<PackFolder | string> {\n try {\n return await readFolder(dir, { ignore })\n } catch (e) {\n if (e instanceof PackError) return `${e.code}: ${e.message}`\n throw e\n }\n}\n\n/**\n * Pack builds already read, by absolute folder. A cached build is immutable\n * (`<id>@<version>`), so a dev session reads each once and forgets it only\n * when the watcher sees its folder change.\n */\nexport type PackMemo = Map<string, SourcePack>\n\n/** Reads the app at `root` and every pack build it pins. */\nexport async function loadSources(root: string, memo?: PackMemo): Promise<LoadedSources> {\n const diagnostics: AssembleDiagnostic[] = []\n const read = await readSource(root, APP_IGNORED_NAMES)\n if (typeof read === 'string') {\n diagnostics.push({ severity: 'error', code: 'APP_UNREADABLE', message: read })\n return { app: null, identity: null, packs: [], diagnostics }\n }\n // The app is its pack content: the `.gitignore` that `pwf create` writes,\n // editor dotfiles and the author's tooling are not part of it, so a build\n // neither reads nor warns about them (`pwf validate` still lists tooling).\n const appFolder = packContent(read)\n const appValidation = validatePack(appFolder)\n diagnostics.push(...issuesToDiagnostics(appValidation, '', false))\n const identity = appValidation.identity\n if (!identity) {\n if (!diagnostics.some((d) => d.severity === 'error')) {\n diagnostics.push({ severity: 'error', code: 'IDENTITY_MISSING', message: 'pwpack.json is missing or invalid', path: 'pwpack.json' })\n }\n return { app: null, identity: null, packs: [], diagnostics }\n }\n const app: SourcePack = {\n origin: 'app',\n id: identity.id,\n version: identity.version,\n dir: root,\n label: '',\n folder: appFolder,\n validation: appValidation,\n }\n\n const packs: SourcePack[] = []\n for (const pin of identity.packs ?? []) {\n const rel = packCacheRel(pin.id, pin.version)\n if (!rel) {\n diagnostics.push({\n severity: 'error',\n code: 'PIN_INVALID',\n message: `pack \"${pin.id}\" version \"${pin.version}\" cannot name a cache folder`,\n path: 'pwpack.json',\n })\n continue\n }\n const dir = join(root, ...rel.split('/'))\n const remembered = memo?.get(dir)\n if (remembered) {\n diagnostics.push(...packDiagnostics(remembered, pin))\n packs.push({ ...remembered, pinnedHash: pin.hash })\n continue\n }\n if (!(await isDir(dir))) {\n diagnostics.push({\n severity: 'error',\n code: 'PACK_NOT_CACHED',\n message: `${pin.id}@${pin.version} is pinned in pwpack.json but is not in ${rel}/ — run \\`pwf add ${pin.id}@${pin.version}\\` (or recreate the app with \\`pwf create\\`) to put it there`,\n path: 'pwpack.json',\n })\n continue\n }\n const folder = await readSource(dir, DEFAULT_IGNORED_NAMES)\n if (typeof folder === 'string') {\n diagnostics.push({ severity: 'error', code: 'PACK_UNREADABLE', message: folder, path: rel })\n continue\n }\n const source: SourcePack = {\n origin: 'pack',\n id: pin.id,\n version: pin.version,\n pinnedHash: pin.hash,\n dir,\n label: rel,\n folder,\n validation: validatePack(folder),\n }\n memo?.set(dir, source)\n diagnostics.push(...packDiagnostics(source, pin))\n packs.push(source)\n }\n return { app, identity, packs, diagnostics }\n}\n\n/** The text of a file in a pack, or undefined. */\nexport function textOf(folder: PackFolder, path: string): string | undefined {\n const bytes = folder.files.get(path)\n if (!bytes) return undefined\n const text = new TextDecoder().decode(bytes)\n return text.charCodeAt(0) === 0xfeff ? text.slice(1) : text\n}\n\n/** A JSON file of a pack, parsed; `undefined` when absent, an `Error` when it does not parse. */\nexport function jsonOf(folder: PackFolder, path: string): unknown {\n const text = textOf(folder, path)\n if (text === undefined) return undefined\n try {\n return JSON.parse(text) as unknown\n } catch (e) {\n return new Error((e as Error).message)\n }\n}\n\nexport function isRecord(v: unknown): v is Record<string, unknown> {\n return v !== null && typeof v === 'object' && !Array.isArray(v)\n}\n\n/** The atoms of one source, as validation derived them. */\nexport function atomsOf(source: SourcePack): readonly AtomRef[] {\n return source.validation.atoms\n}\n"]}
@@ -49,4 +49,3 @@ export declare function buildThemeCss(config: Record<string, unknown> | undefine
49
49
  export declare function themeWebfonts(config: Record<string, unknown> | undefined): AllowedWebfont[];
50
50
  /** One stylesheet address for the families, or null when there are none. */
51
51
  export declare function webfontStylesheetHref(fonts: readonly AllowedWebfont[]): string | null;
52
- //# sourceMappingURL=theme.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/dev/theme.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/dev/theme.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The app's appearance: resolving a theme named by `use` against the themes\n * the app and its packs carry, and the stylesheet the shell links so the page\n * has its identity before any script runs.\n */\nimport {\n DEFAULT_APPEARANCE_THEME,\n findAllowedWebfont,\n mergeSurfaceThemes,\n parseFontStack,\n resolveAppearanceMode,\n resolveDarkTheme,\n surfaceThemeToCSS,\n type AllowedWebfont,\n type SurfaceTheme,\n} from '@pwfabric/contracts'\nimport type { AssembleDiagnostic } from './diagnostics.js'\nimport { isRecord } from './sources.js'\n\n/** A `ui-appearance` atom an app can name: its id and its token sets. */\nexport interface ThemeAtom {\n readonly id: string\n /** The manifest's own `id`, when it differs from the path-derived one. */\n readonly manifestId?: string\n readonly theme: Record<string, unknown>\n readonly darkTheme?: Record<string, unknown>\n /** Where it came from, for diagnostics. */\n readonly from: string\n}\n\n/** Builds a {@link ThemeAtom} from a `ui-appearance` manifest, or null when it carries no token set. */\nexport function themeAtomOf(id: string, manifest: unknown, from: string): ThemeAtom | null {\n if (!isRecord(manifest) || !isRecord(manifest['theme'])) return null\n const manifestId = typeof manifest['id'] === 'string' ? manifest['id'] : undefined\n return {\n id,\n ...(manifestId && manifestId !== id ? { manifestId } : {}),\n theme: manifest['theme'],\n ...(isRecord(manifest['darkTheme']) ? { darkTheme: manifest['darkTheme'] } : {}),\n from,\n }\n}\n\n/**\n * The theme a name points at. Matched as given, then as `theme-<name>`, then\n * with an `appearance-` / `theme-` prefix removed; the first atom wins (the\n * app's own themes come before its packs').\n */\nexport function findTheme(name: string, themes: readonly ThemeAtom[]): ThemeAtom | undefined {\n const bare = name.trim().replace(/^(appearance|theme)-/, '')\n const wanted = [name.trim(), `theme-${bare}`, bare]\n for (const w of wanted) {\n const hit = themes.find((t) => t.id === w || t.manifestId === w)\n if (hit) return hit\n }\n return undefined\n}\n\n/** Per-group merge, `over` winning. */\nexport function mergeGroups(base: Record<string, unknown>, over: unknown): Record<string, unknown> {\n const out: Record<string, unknown> = {}\n for (const [k, v] of Object.entries(base)) out[k] = isRecord(v) ? { ...v } : v\n if (isRecord(over)) {\n for (const [k, v] of Object.entries(over)) {\n const prev = out[k]\n out[k] = isRecord(v) && isRecord(prev) ? { ...prev, ...v } : v\n }\n }\n return out\n}\n\nfunction resolveConfig(\n doc: Record<string, unknown>,\n themes: readonly ThemeAtom[],\n diagnostics: AssembleDiagnostic[],\n path: string\n): Record<string, unknown> {\n const use = doc['use']\n if (typeof use !== 'string' || !use.trim()) return doc\n const theme = findTheme(use, themes)\n if (!theme) {\n diagnostics.push({\n severity: 'warning',\n code: 'THEME_NOT_FOUND',\n message: `appearance names theme \"${use}\", which neither the app nor its packs carry (known: ${\n themes.map((t) => t.id).join(', ') || 'none'\n }); the runner falls back to its built-in presets`,\n path,\n })\n return doc\n }\n const { use: _use, ...rest } = doc\n const out: Record<string, unknown> = { ...rest, theme: mergeGroups(theme.theme, rest['theme']) }\n if (theme.darkTheme) out['darkTheme'] = mergeGroups(theme.darkTheme, rest['darkTheme'])\n return out\n}\n\n/**\n * The app-wide appearance as the envelope carries it. A theme named by `use`\n * is resolved to its tokens here, so the published app does not depend on\n * the runner knowing the name. The three shapes a reader accepts are kept:\n * a reference (`{ config }`) stays a reference, everything else becomes a\n * bare configuration.\n */\nexport function resolveAppearance(\n doc: unknown,\n themes: readonly ThemeAtom[],\n diagnostics: AssembleDiagnostic[],\n path = 'app/definitions/appearance.json'\n): Record<string, unknown> | undefined {\n if (!isRecord(doc)) return undefined\n if (isRecord(doc['config'])) return { ...doc, config: resolveConfig(doc['config'], themes, diagnostics, path) }\n return resolveConfig(doc, themes, diagnostics, path)\n}\n\n/** The configuration inside any of the three appearance shapes. */\nexport function appearanceConfigOf(doc: Record<string, unknown> | undefined): Record<string, unknown> | undefined {\n if (!doc) return undefined\n return isRecord(doc['config']) ? doc['config'] : doc\n}\n\nfunction declList(vars: Record<string, string>): string {\n return Object.entries(vars)\n .map(([name, value]) => ` ${name}: ${value};`)\n .join('\\n')\n}\n\nfunction modeBlocks(policy: 'light' | 'dark' | 'system', light: string, dark: string, darkOverLight: string): string {\n if (policy === 'light') return `:root, [data-pw-surface] {\\n${light}\\n}`\n if (policy === 'dark') return `:root, [data-pw-surface] {\\n${darkOverLight}\\n}`\n return `:root, [data-pw-surface] {\n${light}\n}\n\n:root[data-pw-theme=\"dark\"],\n[data-pw-surface][data-pw-theme=\"dark\"] {\n${dark}\n}\n\n@media (prefers-color-scheme: dark) {\n :root:not([data-pw-theme=\"light\"]),\n [data-pw-surface]:not([data-pw-theme=\"light\"]) {\n${dark}\n }\n}`\n}\n\n/**\n * `assets/theme.css`: the full token set as custom properties (light, the\n * dark variant per the mode policy) and the document binding — page margin,\n * body font and colours — so the app wears its identity before hydration.\n */\nexport function buildThemeCss(config: Record<string, unknown> | undefined): string {\n const cfg = config as { theme?: SurfaceTheme; darkTheme?: SurfaceTheme; styleVariables?: Record<string, unknown> } | undefined\n const { policy, contrast } = resolveAppearanceMode(cfg)\n const options = { contrast }\n const lightVars = surfaceThemeToCSS(cfg?.theme, DEFAULT_APPEARANCE_THEME, undefined, options)\n if (isRecord(cfg?.styleVariables)) {\n for (const [key, value] of Object.entries(cfg.styleVariables)) {\n if (typeof value !== 'string') continue\n lightVars[key.startsWith('--') ? key : `--${key}`] = value\n }\n }\n const light = mergeSurfaceThemes(DEFAULT_APPEARANCE_THEME, cfg?.theme)\n const darkVars = surfaceThemeToCSS(resolveDarkTheme(light, cfg?.darkTheme), undefined, undefined, options)\n return `${modeBlocks(policy, declList(lightVars), declList(darkVars), declList({ ...lightVars, ...darkVars }))}\n\nhtml, body {\n margin: 0;\n font-family: var(--pw-font-family, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif);\n font-size: var(--pw-font-size-base, 16px);\n color: var(--pw-color-text, #1e293b);\n background: var(--pw-color-background, #ffffff);\n}\nh1, h2, h3, h4, h5, h6 {\n font-family: var(--pw-font-family-heading, inherit);\n}\ncode, pre, kbd {\n font-family: var(--pw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n}\n`\n}\n\n/**\n * The webfonts a theme names and may load: the first family of the body,\n * heading and mono stacks, and only when it is on the engine's allow-list. A\n * free-text family never becomes a URL.\n */\nexport function themeWebfonts(config: Record<string, unknown> | undefined): AllowedWebfont[] {\n const theme = config?.['theme']\n const typography = isRecord(theme) && isRecord(theme['typography']) ? theme['typography'] : undefined\n const out: AllowedWebfont[] = []\n for (const key of ['fontFamily', 'headingFontFamily', 'monoFontFamily']) {\n const stack = typography?.[key]\n const first = parseFontStack(typeof stack === 'string' ? stack : undefined)[0]\n const font = first === undefined ? undefined : findAllowedWebfont(first)\n if (font && !out.some((f) => f.family === font.family)) out.push(font)\n }\n return out\n}\n\n/** One stylesheet address for the families, or null when there are none. */\nexport function webfontStylesheetHref(fonts: readonly AllowedWebfont[]): string | null {\n if (fonts.length === 0) return null\n const families = fonts.map((f) => {\n const weights = [...new Set(f.weights)].sort((a, b) => a - b)\n const name = encodeURIComponent(f.family).replace(/%20/g, '+')\n if (weights.length === 0) return `family=${name}`\n if (!f.italic) return `family=${name}:wght@${weights.join(';')}`\n const tuples = [...weights.map((w) => `0,${w}`), ...weights.map((w) => `1,${w}`)]\n return `family=${name}:ital,wght@${tuples.join(';')}`\n })\n return `https://fonts.googleapis.com/css2?${families.join('&')}&display=swap`\n}\n"]}
@@ -38,4 +38,3 @@ export interface DevBuildResult {
38
38
  }
39
39
  /** Implemented in ./server.ts. */
40
40
  export type StartDevServer = (options: DevServerOptions) => Promise<DevServer>;
41
- //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/dev/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/dev/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG","sourcesContent":["/**\n * The contract between `pwf dev` (./server.ts, written by the dev lane) and\n * the rest of the CLI.\n *\n * `pwf dev` watches a pwpack folder, compiles its atoms with the engine's\n * compiler, builds an envelope from the folder, and serves a page that boots\n * the runner against it. When the app declares data or sign-in, it mounts a\n * local host (../host) that implements the session and data protocols.\n */\n\nimport type { LocalHost } from '../host/types.js'\n\nexport interface DevServerOptions {\n /** Absolute path of the pwpack folder to serve. */\n readonly root: string\n /** Port to listen on; 0 picks a free port. Default 4600. */\n readonly port?: number\n /** Host interface to bind. Default 127.0.0.1. */\n readonly hostname?: string\n /** Mount a local host for data and sign-in. Default: only when the app declares them. */\n readonly localHost?: boolean | LocalHost\n /** Called with human-readable progress lines. */\n readonly log?: (line: string) => void\n}\n\nexport interface DevServer {\n /** The URL the app is served at, e.g. http://127.0.0.1:4600/. */\n readonly url: string\n /** Rebuilds now (the watcher also rebuilds on change). */\n rebuild(): Promise<DevBuildResult>\n /** Stops the watcher and the HTTP server. */\n close(): Promise<void>\n}\n\nexport interface DevBuildResult {\n readonly ok: boolean\n /** Atoms compiled in this build. */\n readonly compiled: number\n /** Compiler and validation diagnostics, already formatted for a terminal. */\n readonly diagnostics: readonly string[]\n readonly ms: number\n}\n\n/** Implemented in ./server.ts. */\nexport type StartDevServer = (options: DevServerOptions) => Promise<DevServer>\n"]}
@@ -27,4 +27,3 @@ export declare function snapshot(root: string): Promise<string>;
27
27
  * could not say (polling, or an event without a file name).
28
28
  */
29
29
  export declare function watchFolder(root: string, onChange: (paths: string[] | null) => void, options?: WatchOptions): Watcher;
30
- //# sourceMappingURL=watcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/dev/watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/dev/watcher.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Watching an app folder for changes.\n *\n * `fs.watch` with `recursive: true` where the platform supports it (Windows,\n * macOS, Linux on current Node); a polling walk where it does not. Either way\n * the caller sees one debounced callback per burst of changes, and changes in\n * the build's own output (`.pwf/build-cache`, `.pwf/out`), version control\n * and dependencies are ignored. The pack cache (`.pwf/packs`) is watched:\n * adding a pack is a change the app should pick up.\n */\nimport { watch as fsWatch, type FSWatcher } from 'node:fs'\nimport { readdir, stat } from 'node:fs/promises'\nimport { join, relative, sep } from 'node:path'\n\nexport type WatchMode = 'auto' | 'native' | 'poll'\n\nexport interface WatchOptions {\n /** Default `auto`: native recursive watching, polling when it is unavailable. */\n readonly mode?: WatchMode\n /** Quiet period before the callback fires. Default 150 ms. */\n readonly debounceMs?: number\n /** Poll interval in `poll` mode. Default 500 ms. */\n readonly pollMs?: number\n}\n\nexport interface Watcher {\n /** `native` or `poll` — what is actually running. */\n readonly mode: 'native' | 'poll'\n close(): void\n}\n\nconst IGNORED_SEGMENTS = new Set(['node_modules', '.git', 'dist'])\nconst IGNORED_PREFIXES = ['.pwf/build-cache', '.pwf/out']\n\n/** Whether a change at `rel` (POSIX, relative to the root) should trigger a rebuild. */\nexport function isWatchedPath(rel: string): boolean {\n const p = rel.split(sep).join('/').replace(/^\\.\\//, '')\n if (!p) return true\n if (IGNORED_PREFIXES.some((x) => p === x || p.startsWith(`${x}/`))) return false\n return !p.split('/').some((s) => IGNORED_SEGMENTS.has(s))\n}\n\n/** A function that runs `fn` once `ms` after the last call. */\nexport function debounce(fn: () => void, ms: number): { (): void; cancel(): void } {\n let timer: ReturnType<typeof setTimeout> | null = null\n const run = (): void => {\n if (timer) clearTimeout(timer)\n timer = setTimeout(() => {\n timer = null\n fn()\n }, ms)\n }\n run.cancel = (): void => {\n if (timer) clearTimeout(timer)\n timer = null\n }\n return run\n}\n\n/** A signature of every watched file (path, size, mtime), for polling. */\nexport async function snapshot(root: string): Promise<string> {\n const parts: string[] = []\n const walk = async (dir: string): Promise<void> => {\n const entries = await readdir(dir, { withFileTypes: true }).catch(() => [])\n for (const e of entries) {\n const full = join(dir, e.name)\n const rel = relative(root, full)\n if (!isWatchedPath(rel)) continue\n if (e.isDirectory()) await walk(full)\n else if (e.isFile()) {\n const st = await stat(full).catch(() => null)\n if (st) parts.push(`${rel}|${st.size}|${st.mtimeMs}`)\n }\n }\n }\n await walk(root)\n return parts.sort().join('\\n')\n}\n\nfunction startPolling(root: string, onChange: () => void, pollMs: number): Watcher {\n let last: string | null = null\n let closed = false\n let running = false\n const tick = async (): Promise<void> => {\n if (running || closed) return\n running = true\n try {\n const now = await snapshot(root)\n if (last !== null && now !== last && !closed) onChange()\n last = now\n } finally {\n running = false\n }\n }\n void tick()\n const timer = setInterval(() => void tick(), pollMs)\n return {\n mode: 'poll',\n close() {\n closed = true\n clearInterval(timer)\n },\n }\n}\n\n/**\n * Watches `root` and calls `onChange` after each debounced burst of relevant\n * changes, with the POSIX paths that changed — or `null` when the platform\n * could not say (polling, or an event without a file name).\n */\nexport function watchFolder(root: string, onChange: (paths: string[] | null) => void, options: WatchOptions = {}): Watcher {\n let changed: Set<string> | null = new Set()\n const fire = debounce(() => {\n const paths = changed ? [...changed].sort() : null\n changed = new Set()\n onChange(paths)\n }, options.debounceMs ?? 150)\n const note = (path: string | null): void => {\n if (path === null) changed = null\n else changed?.add(path.split(sep).join('/'))\n fire()\n }\n const mode = options.mode ?? 'auto'\n if (mode !== 'poll') {\n let watcher: FSWatcher | null = null\n try {\n watcher = fsWatch(root, { recursive: true }, (_event, filename) => {\n if (filename === null) note(null)\n else if (isWatchedPath(String(filename))) note(String(filename))\n })\n } catch (e) {\n if (mode === 'native') throw e\n }\n if (watcher) {\n const w = watcher\n // A watcher that dies (the folder is removed, the platform gives up)\n // must not take the server down; the next edit simply is not seen.\n w.on('error', () => undefined)\n return {\n mode: 'native',\n close() {\n fire.cancel()\n w.close()\n },\n }\n }\n }\n const poller = startPolling(root, () => note(null), options.pollMs ?? 500)\n return {\n mode: 'poll',\n close() {\n fire.cancel()\n poller.close()\n },\n }\n}\n"]}
@@ -59,4 +59,3 @@ export declare function readReceipt(root: string, key: string): Record<string, u
59
59
  * read when no `.json` file exists.
60
60
  */
61
61
  export declare function readSeed(root: string, typeId: string): Record<string, unknown>[];
62
- //# sourceMappingURL=definitions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/host/definitions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/host/definitions.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * What the local host reads from the pwpack folder.\n *\n * app/definitions/auth.json who may enter (definitions.md, `auth.json`)\n * app/definitions/entities.json the collections the host keeps\n * app/surfaces/<key>.receipt.json the pages it serves\n * app/data/<typeId>.jsonl | .json seed rows (a convention of this host)\n *\n * Read on every call, never cached: `pwf dev` edits these files while the\n * host runs, and a definition change must apply without a restart. An absent\n * file is \"not declared\"; an unreadable one is reported as an error rather\n * than guessed around.\n */\n\nimport { existsSync, readdirSync, readFileSync } from 'node:fs'\nimport { join } from 'node:path'\n\nexport interface AuthDeclaration {\n readonly required: boolean\n readonly topology: 'app' | 'external'\n readonly methods: readonly string[]\n readonly issuer?: {\n readonly issuer: string\n readonly clientId: string\n readonly scopes: readonly string[]\n readonly audience?: string\n }\n readonly access: {\n readonly rules: readonly { readonly subject: string; readonly model: string; readonly rule: string }[]\n }\n}\n\nexport interface EntityField {\n readonly name: string\n readonly type: string\n readonly required: boolean\n}\n\nexport interface EntityDeclaration {\n readonly typeId: string\n readonly displayName?: string\n readonly fields: readonly EntityField[]\n /** Carried member (not in the spec yet): `\"owner\"` makes the collection per-visitor. */\n readonly scope?: string\n}\n\nfunction readJson(path: string): unknown {\n if (!existsSync(path)) return undefined\n const text = readFileSync(path, 'utf8')\n try {\n return JSON.parse(text) as unknown\n } catch (err) {\n throw new Error(`${path} is not valid JSON: ${(err as Error).message}`)\n }\n}\n\nconst isObject = (v: unknown): v is Record<string, unknown> => Boolean(v) && typeof v === 'object' && !Array.isArray(v)\nconst strings = (v: unknown): string[] => (Array.isArray(v) ? v.filter((x): x is string => typeof x === 'string') : [])\n\n/** `undefined` when the app declares no `auth.json` (or an empty one). */\nexport function readAuth(root: string): AuthDeclaration | undefined {\n const raw = readJson(join(root, 'app', 'definitions', 'auth.json'))\n if (!isObject(raw) || Object.keys(raw).length === 0) return undefined\n const topology = raw.topology === 'external' ? 'external' : 'app'\n const iss = isObject(raw.issuer) ? raw.issuer : undefined\n const access = isObject(raw.access) ? raw.access : {}\n const rules = (Array.isArray(access.rules) ? access.rules : [])\n .filter(isObject)\n .map((r) => ({ subject: String(r.subject ?? ''), model: String(r.model ?? ''), rule: String(r.rule ?? '') }))\n return {\n required: raw.required === true,\n topology,\n methods: strings(raw.methods),\n ...(iss && typeof iss.issuer === 'string' && typeof iss.clientId === 'string'\n ? {\n issuer: {\n issuer: iss.issuer,\n clientId: iss.clientId,\n scopes: Array.isArray(iss.scopes) ? strings(iss.scopes) : ['openid', 'profile', 'email'],\n ...(typeof iss.audience === 'string' && iss.audience ? { audience: iss.audience } : {}),\n },\n }\n : {}),\n access: { rules },\n }\n}\n\nexport function readEntities(root: string): EntityDeclaration[] {\n const raw = readJson(join(root, 'app', 'definitions', 'entities.json'))\n const list = isObject(raw) && Array.isArray(raw.entities) ? raw.entities : []\n return list.filter(isObject).flatMap((e) => {\n if (typeof e.typeId !== 'string' || !e.typeId) return []\n const fields = (Array.isArray(e.fields) ? e.fields : []).filter(isObject).flatMap((f) =>\n typeof f.name === 'string' && f.name\n ? [{ name: f.name, type: typeof f.type === 'string' ? f.type : 'text', required: f.required === true }]\n : []\n )\n return [\n {\n typeId: e.typeId,\n ...(typeof e.displayName === 'string' ? { displayName: e.displayName } : {}),\n fields,\n ...(typeof e.scope === 'string' ? { scope: e.scope } : {}),\n },\n ]\n })\n}\n\n/** A page key is a file name, never a path. */\nexport const PAGE_KEY = /^[A-Za-z0-9][A-Za-z0-9_-]*$/\n\nexport function surfaceKeys(root: string): string[] {\n const dir = join(root, 'app', 'surfaces')\n if (!existsSync(dir)) return []\n return readdirSync(dir)\n .filter((f) => f.endsWith('.receipt.json'))\n .map((f) => f.slice(0, -'.receipt.json'.length))\n .filter((k) => PAGE_KEY.test(k))\n .sort()\n}\n\nexport function readReceipt(root: string, key: string): Record<string, unknown> | undefined {\n if (!PAGE_KEY.test(key)) return undefined\n const raw = readJson(join(root, 'app', 'surfaces', `${key}.receipt.json`))\n return isObject(raw) ? raw : undefined\n}\n\n/**\n * Seed rows for one collection.\n *\n * THE CONVENTION (proposed for the spec): `app/data/<typeId>.json` holding\n * `{ \"data\": [ …records ] }` — the same `data` envelope a record list answer\n * uses. A record may carry its own `id`; `createdAt`/`updatedAt` are filled\n * when absent. Also accepted, for hand-written seed files only:\n * `app/data/<typeId>.jsonl`, one JSON object per line (blank lines skipped),\n * read when no `.json` file exists.\n */\nexport function readSeed(root: string, typeId: string): Record<string, unknown>[] {\n if (!PAGE_KEY.test(typeId)) return []\n const dir = join(root, 'app', 'data')\n const jsonPath = join(dir, `${typeId}.json`)\n const json = readJson(jsonPath)\n if (json !== undefined) {\n if (!isObject(json) || !Array.isArray(json.data)) {\n throw new Error(`${jsonPath} must be { \"data\": [ ...records ] }`)\n }\n return json.data.filter(isObject)\n }\n const jsonl = join(dir, `${typeId}.jsonl`)\n if (!existsSync(jsonl)) return []\n return readFileSync(jsonl, 'utf8')\n .split(/\\r?\\n/)\n .map((line, i) => [line.trim(), i + 1] as const)\n .filter(([line]) => line !== '')\n .map(([line, n]) => {\n let row: unknown\n try {\n row = JSON.parse(line)\n } catch {\n throw new Error(`${jsonl}:${n} is not valid JSON`)\n }\n if (!isObject(row)) throw new Error(`${jsonl}:${n} is not a JSON object`)\n return row\n })\n}\n"]}
@@ -37,4 +37,3 @@ export declare function credentialOf(req: IncomingMessage): string | undefined;
37
37
  * other sites to a browser).
38
38
  */
39
39
  export declare function safeReturnTo(value: string | null): string;
40
- //# sourceMappingURL=http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/host/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/host/http.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,0DAA0D;AAC1D,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,CAAA;AAEzC,2EAA2E;AAC3E,MAAM,OAAO,SAAU,SAAQ,KAAK;IAEvB;IACA;IAFX,YACW,MAAc,EACd,IAAY,EACrB,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAA;QAJL,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAQ;IAIvB,CAAC;CACF;AAED,MAAM,UAAU,QAAQ,CAAC,GAAmB,EAAE,MAAc,EAAE,IAAa,EAAE,UAAkC,EAAE;IAC/G,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACjC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE;QACpB,cAAc,EAAE,iCAAiC;QACjD,eAAe,EAAE,UAAU;QAC3B,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjD,GAAG,OAAO;KACX,CAAC,CAAA;IACF,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAmB,EAAE,GAAc;IAC3D,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;AAChF,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,QAAQ,CAAC,GAAmB,EAAE,QAAgB,EAAE,UAA6B,EAAE;IAC7F,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,QAAQ;QACR,eAAe,EAAE,UAAU;QAC3B,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9D,CAAC,CAAA;IACF,GAAG,CAAC,GAAG,EAAE,CAAA;AACX,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,QAAQ,CAAC,GAAoB;IAC3C,MAAM,QAAQ,GAAG,GAAc,EAAE,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,mBAAmB,EAAE,wCAAwC,CAAC,CAAA;IACnH,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAA;IACtD,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,cAAc,EAAE,CAAC;QAC3D,GAAG,CAAC,MAAM,EAAE,CAAA;QACZ,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IACnC,CAAC;IACD,2EAA2E;IAC3E,2EAA2E;IAC3E,kEAAkE;IAClE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,IAAI,IAAI,GAAG,CAAC,CAAA;QACZ,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;YACxC,IAAI,OAAO;gBAAE,OAAM;YACnB,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;YAClE,IAAI,IAAI,GAAG,CAAC,MAAM,CAAA;YAClB,IAAI,IAAI,GAAG,cAAc,EAAE,CAAC;gBAC1B,OAAO,GAAG,IAAI,CAAA;gBACd,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;gBACjB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAClB,OAAM;YACR,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAClB,CAAC,CAAC,CAAA;QACF,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACjB,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;QACF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACzB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,GAAoB;IACvC,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;SAC7C,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE;SACd,IAAI,EAAE;SACN,WAAW,EAAE,CAAA;AAClB,CAAC;AAED,iGAAiG;AACjG,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAoB;IACvD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,CAAA;IACjC,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,kBAAkB,EAAE,CAAC;QAC5C,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,wBAAwB,EAAE,oCAAoC,CAAC,CAAA;IAC1F,CAAC;IACD,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,qCAAqC,CAAC,CAAA;IACjF,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,yCAAyC,CAAC,CAAA;IACrF,CAAC;IACD,OAAO,MAAiC,CAAA;AAC1C,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAoB;IACjD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,mCAAmC,EAAE,CAAC;QAC7D,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,wBAAwB,EAAE,qDAAqD,CAAC,CAAA;IAC3G,CAAC;IACD,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAoB;IAC5C,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/D,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,EAAE,IAAI,CAAC;YAAE,SAAQ;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACvC,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;QACnB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAoB;IAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;IAC5C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE;QAAE,OAAO,OAAO,CAAC,IAAI,EAAE,CAAA;IACxE,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAA;IACtC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IACpB,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAoB;IAC/C,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAA;IAChD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC9B,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA;AACxD,CAAC","sourcesContent":["/**\n * The few HTTP chores the local host needs, on bare `node:http`.\n *\n * Every answer is JSON (or a redirect). Bodies are read up to 1 MiB and\n * refused past it; JSON routes refuse any other content type. Nothing here\n * logs — a request carries session tokens, and a development server's console\n * is copied into bug reports.\n */\n\nimport type { IncomingMessage, ServerResponse } from 'node:http'\n\n/** Request bodies past this size are refused with 413. */\nexport const MAX_BODY_BYTES = 1024 * 1024\n\n/** A failure that becomes `{ error: { code, message } }` with `status`. */\nexport class HostError extends Error {\n constructor(\n readonly status: number,\n readonly code: string,\n message: string\n ) {\n super(message)\n }\n}\n\nexport function sendJson(res: ServerResponse, status: number, body: unknown, headers: Record<string, string> = {}): void {\n const text = JSON.stringify(body)\n res.writeHead(status, {\n 'content-type': 'application/json; charset=utf-8',\n 'cache-control': 'no-store',\n 'content-length': String(Buffer.byteLength(text)),\n ...headers,\n })\n res.end(text)\n}\n\nexport function sendError(res: ServerResponse, err: HostError): void {\n sendJson(res, err.status, { error: { code: err.code, message: err.message } })\n}\n\n/** `302` to `location`, with any cookies to set on the way. */\nexport function redirect(res: ServerResponse, location: string, cookies: readonly string[] = []): void {\n res.writeHead(302, {\n location,\n 'cache-control': 'no-store',\n ...(cookies.length > 0 ? { 'set-cookie': [...cookies] } : {}),\n })\n res.end()\n}\n\n/** The raw body, refused past `MAX_BODY_BYTES`. */\nexport function readBody(req: IncomingMessage): Promise<string> {\n const tooLarge = (): HostError => new HostError(413, 'PAYLOAD_TOO_LARGE', 'The request body is larger than 1 MiB.')\n const declared = Number(req.headers['content-length'])\n if (Number.isFinite(declared) && declared > MAX_BODY_BYTES) {\n req.resume()\n return Promise.reject(tooLarge())\n }\n // Listeners, not an async iterator: leaving an iterator early destroys the\n // socket, and the refusal would never reach the client. Past the limit the\n // rest of the body is drained and dropped while the 413 goes out.\n return new Promise((resolve, reject) => {\n const chunks: Buffer[] = []\n let size = 0\n let refused = false\n req.on('data', (chunk: Buffer | string) => {\n if (refused) return\n const buf = typeof chunk === 'string' ? Buffer.from(chunk) : chunk\n size += buf.length\n if (size > MAX_BODY_BYTES) {\n refused = true\n chunks.length = 0\n reject(tooLarge())\n return\n }\n chunks.push(buf)\n })\n req.on('end', () => {\n if (!refused) resolve(Buffer.concat(chunks).toString('utf8'))\n })\n req.on('error', reject)\n })\n}\n\nfunction mediaTypeOf(req: IncomingMessage): string {\n return String(req.headers['content-type'] ?? '')\n .split(';')[0]!\n .trim()\n .toLowerCase()\n}\n\n/** A JSON object body. An empty body is `{}`; anything else that is not an object is refused. */\nexport async function readJsonObject(req: IncomingMessage): Promise<Record<string, unknown>> {\n const text = await readBody(req)\n if (text.trim() === '') return {}\n if (mediaTypeOf(req) !== 'application/json') {\n throw new HostError(415, 'UNSUPPORTED_MEDIA_TYPE', 'Send the body as application/json.')\n }\n let parsed: unknown\n try {\n parsed = JSON.parse(text)\n } catch {\n throw new HostError(400, 'INVALID_JSON', 'The request body is not valid JSON.')\n }\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n throw new HostError(400, 'INVALID_BODY', 'The request body must be a JSON object.')\n }\n return parsed as Record<string, unknown>\n}\n\n/** A form-encoded body (the OAuth token endpoint's only format). */\nexport async function readForm(req: IncomingMessage): Promise<URLSearchParams> {\n const text = await readBody(req)\n if (mediaTypeOf(req) !== 'application/x-www-form-urlencoded') {\n throw new HostError(415, 'UNSUPPORTED_MEDIA_TYPE', 'Send the body as application/x-www-form-urlencoded.')\n }\n return new URLSearchParams(text)\n}\n\nexport function cookiesOf(req: IncomingMessage): Record<string, string> {\n const out: Record<string, string> = {}\n for (const part of String(req.headers.cookie ?? '').split(';')) {\n const at = part.indexOf('=')\n if (at <= 0) continue\n const name = part.slice(0, at).trim()\n const value = part.slice(at + 1).trim()\n try {\n out[name] = decodeURIComponent(value)\n } catch {\n out[name] = value\n }\n }\n return out\n}\n\n/**\n * The visitor's credential: `x-app-session`, else `Authorization: Bearer`.\n * The session protocol accepts either on every session-server route.\n */\nexport function credentialOf(req: IncomingMessage): string | undefined {\n const session = req.headers['x-app-session']\n if (typeof session === 'string' && session.trim()) return session.trim()\n const auth = req.headers.authorization\n if (typeof auth === 'string') {\n const m = /^Bearer\\s+(\\S+)\\s*$/i.exec(auth)\n if (m) return m[1]\n }\n return undefined\n}\n\n/**\n * Only a path on the app's own origin may be the way back — the same rule the\n * runner applies before it builds a start address (`//host` and `/\\host` are\n * other sites to a browser).\n */\nexport function safeReturnTo(value: string | null): string {\n if (!value || !value.startsWith('/')) return '/'\n const second = value.charAt(1)\n return second === '/' || second === '\\\\' ? '/' : value\n}\n"]}
@@ -57,4 +57,3 @@ export declare const SESSION_COOKIE = "pwf_dev_session";
57
57
  */
58
58
  export declare function authAddresses(auth: AuthDeclaration | undefined, base: string): Record<string, unknown> | undefined;
59
59
  export declare const createLocalHost: CreateLocalHost;
60
- //# sourceMappingURL=local-host.d.ts.map