@kubb/agent 0.0.0-canary-20260217115709

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 (575) hide show
  1. package/.output/nitro.json +15 -0
  2. package/.output/server/chunks/_/package.mjs +4 -0
  3. package/.output/server/chunks/_/package.mjs.map +1 -0
  4. package/.output/server/chunks/nitro/nitro.mjs +6685 -0
  5. package/.output/server/chunks/nitro/nitro.mjs.map +1 -0
  6. package/.output/server/chunks/routes/api/generate.options.mjs +31 -0
  7. package/.output/server/chunks/routes/api/generate.options.mjs.map +1 -0
  8. package/.output/server/chunks/routes/api/generate.post.mjs +120 -0
  9. package/.output/server/chunks/routes/api/generate.post.mjs.map +1 -0
  10. package/.output/server/chunks/routes/api/health.get.mjs +36 -0
  11. package/.output/server/chunks/routes/api/health.get.mjs.map +1 -0
  12. package/.output/server/chunks/routes/api/info.get.mjs +63 -0
  13. package/.output/server/chunks/routes/api/info.get.mjs.map +1 -0
  14. package/.output/server/index.mjs +25 -0
  15. package/.output/server/index.mjs.map +1 -0
  16. package/.output/server/node_modules/.nitro/path-key@3.1.1/index.js +16 -0
  17. package/.output/server/node_modules/.nitro/path-key@3.1.1/package.json +39 -0
  18. package/.output/server/node_modules/.nitro/path-key@4.0.0/index.js +12 -0
  19. package/.output/server/node_modules/.nitro/path-key@4.0.0/package.json +41 -0
  20. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/buffer-util.js +131 -0
  21. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/constants.js +18 -0
  22. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/event-target.js +292 -0
  23. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/extension.js +203 -0
  24. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/limiter.js +55 -0
  25. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/permessage-deflate.js +514 -0
  26. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/receiver.js +706 -0
  27. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/sender.js +602 -0
  28. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/stream.js +159 -0
  29. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/subprotocol.js +62 -0
  30. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/validation.js +152 -0
  31. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/websocket-server.js +540 -0
  32. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/websocket.js +1388 -0
  33. package/.output/server/node_modules/.nitro/ws@8.18.0/package.json +69 -0
  34. package/.output/server/node_modules/.nitro/ws@8.18.0/wrapper.mjs +8 -0
  35. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/buffer-util.js +131 -0
  36. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/constants.js +19 -0
  37. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/event-target.js +292 -0
  38. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/extension.js +203 -0
  39. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/limiter.js +55 -0
  40. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/permessage-deflate.js +528 -0
  41. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/receiver.js +706 -0
  42. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/sender.js +602 -0
  43. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/stream.js +161 -0
  44. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/subprotocol.js +62 -0
  45. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/validation.js +152 -0
  46. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/websocket-server.js +554 -0
  47. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/websocket.js +1393 -0
  48. package/.output/server/node_modules/.nitro/ws@8.19.0/package.json +69 -0
  49. package/.output/server/node_modules/.nitro/ws@8.19.0/wrapper.mjs +8 -0
  50. package/.output/server/node_modules/@clack/core/dist/index.mjs +18 -0
  51. package/.output/server/node_modules/@clack/core/package.json +61 -0
  52. package/.output/server/node_modules/@clack/prompts/dist/index.mjs +135 -0
  53. package/.output/server/node_modules/@clack/prompts/package.json +66 -0
  54. package/.output/server/node_modules/@kubb/fabric-core/dist/Root-BQX3eHqb.js +830 -0
  55. package/.output/server/node_modules/@kubb/fabric-core/dist/chunk-BVHe6Par.js +22 -0
  56. package/.output/server/node_modules/@kubb/fabric-core/dist/defaultParser-BD_N68Bo.js +16 -0
  57. package/.output/server/node_modules/@kubb/fabric-core/dist/getRelativePath-C4Au07ON.js +58 -0
  58. package/.output/server/node_modules/@kubb/fabric-core/dist/index.js +668 -0
  59. package/.output/server/node_modules/@kubb/fabric-core/dist/parsers/typescript.js +102 -0
  60. package/.output/server/node_modules/@kubb/fabric-core/dist/parsers.js +18 -0
  61. package/.output/server/node_modules/@kubb/fabric-core/dist/plugins.js +620 -0
  62. package/.output/server/node_modules/@kubb/fabric-core/package.json +120 -0
  63. package/.output/server/node_modules/@kubb/react-fabric/dist/chunk-DbZtQ4qb.js +47 -0
  64. package/.output/server/node_modules/@kubb/react-fabric/dist/index.js +535 -0
  65. package/.output/server/node_modules/@kubb/react-fabric/dist/jsx-runtime-CQFBnRKx.js +265 -0
  66. package/.output/server/node_modules/@kubb/react-fabric/dist/jsx-runtime.js +13 -0
  67. package/.output/server/node_modules/@kubb/react-fabric/dist/parsers.js +3 -0
  68. package/.output/server/node_modules/@kubb/react-fabric/dist/plugins.js +7 -0
  69. package/.output/server/node_modules/@kubb/react-fabric/dist/react--draJ5Pm.js +1192 -0
  70. package/.output/server/node_modules/@kubb/react-fabric/dist/reactPlugin-DqJsInTf.js +17931 -0
  71. package/.output/server/node_modules/@kubb/react-fabric/package.json +140 -0
  72. package/.output/server/node_modules/@sec-ant/readable-stream/dist/ponyfill/asyncIterator.js +89 -0
  73. package/.output/server/node_modules/@sec-ant/readable-stream/dist/ponyfill/fromAnyIterable.js +34 -0
  74. package/.output/server/node_modules/@sec-ant/readable-stream/dist/ponyfill/index.js +6 -0
  75. package/.output/server/node_modules/@sec-ant/readable-stream/package.json +98 -0
  76. package/.output/server/node_modules/@sindresorhus/merge-streams/index.js +265 -0
  77. package/.output/server/node_modules/@sindresorhus/merge-streams/package.json +49 -0
  78. package/.output/server/node_modules/balanced-match/index.js +62 -0
  79. package/.output/server/node_modules/balanced-match/package.json +48 -0
  80. package/.output/server/node_modules/brace-expansion/index.js +201 -0
  81. package/.output/server/node_modules/brace-expansion/package.json +50 -0
  82. package/.output/server/node_modules/buffer-from/index.js +72 -0
  83. package/.output/server/node_modules/buffer-from/package.json +19 -0
  84. package/.output/server/node_modules/bytes/index.js +159 -0
  85. package/.output/server/node_modules/bytes/package.json +39 -0
  86. package/.output/server/node_modules/concat-map/index.js +13 -0
  87. package/.output/server/node_modules/concat-map/package.json +59 -0
  88. package/.output/server/node_modules/content-disposition/index.js +445 -0
  89. package/.output/server/node_modules/content-disposition/package.json +39 -0
  90. package/.output/server/node_modules/cross-spawn/index.js +39 -0
  91. package/.output/server/node_modules/cross-spawn/lib/enoent.js +59 -0
  92. package/.output/server/node_modules/cross-spawn/lib/parse.js +91 -0
  93. package/.output/server/node_modules/cross-spawn/lib/util/escape.js +47 -0
  94. package/.output/server/node_modules/cross-spawn/lib/util/readShebang.js +23 -0
  95. package/.output/server/node_modules/cross-spawn/lib/util/resolveCommand.js +52 -0
  96. package/.output/server/node_modules/cross-spawn/package.json +73 -0
  97. package/.output/server/node_modules/execa/index.js +28 -0
  98. package/.output/server/node_modules/execa/lib/arguments/command.js +20 -0
  99. package/.output/server/node_modules/execa/lib/arguments/cwd.js +39 -0
  100. package/.output/server/node_modules/execa/lib/arguments/encoding-option.js +50 -0
  101. package/.output/server/node_modules/execa/lib/arguments/escape.js +88 -0
  102. package/.output/server/node_modules/execa/lib/arguments/fd-options.js +108 -0
  103. package/.output/server/node_modules/execa/lib/arguments/file-url.js +25 -0
  104. package/.output/server/node_modules/execa/lib/arguments/options.js +96 -0
  105. package/.output/server/node_modules/execa/lib/arguments/shell.js +11 -0
  106. package/.output/server/node_modules/execa/lib/arguments/specific.js +111 -0
  107. package/.output/server/node_modules/execa/lib/convert/add.js +15 -0
  108. package/.output/server/node_modules/execa/lib/convert/concurrent.js +33 -0
  109. package/.output/server/node_modules/execa/lib/convert/duplex.js +69 -0
  110. package/.output/server/node_modules/execa/lib/convert/iterable.js +34 -0
  111. package/.output/server/node_modules/execa/lib/convert/readable.js +113 -0
  112. package/.output/server/node_modules/execa/lib/convert/shared.js +46 -0
  113. package/.output/server/node_modules/execa/lib/convert/writable.js +90 -0
  114. package/.output/server/node_modules/execa/lib/io/contents.js +116 -0
  115. package/.output/server/node_modules/execa/lib/io/input-sync.js +44 -0
  116. package/.output/server/node_modules/execa/lib/io/iterate.js +110 -0
  117. package/.output/server/node_modules/execa/lib/io/max-buffer.js +89 -0
  118. package/.output/server/node_modules/execa/lib/io/output-async.js +80 -0
  119. package/.output/server/node_modules/execa/lib/io/output-sync.js +135 -0
  120. package/.output/server/node_modules/execa/lib/io/pipeline.js +48 -0
  121. package/.output/server/node_modules/execa/lib/io/strip-newline.js +12 -0
  122. package/.output/server/node_modules/execa/lib/ipc/array.js +4 -0
  123. package/.output/server/node_modules/execa/lib/ipc/buffer-messages.js +47 -0
  124. package/.output/server/node_modules/execa/lib/ipc/forward.js +56 -0
  125. package/.output/server/node_modules/execa/lib/ipc/get-each.js +89 -0
  126. package/.output/server/node_modules/execa/lib/ipc/get-one.js +69 -0
  127. package/.output/server/node_modules/execa/lib/ipc/graceful.js +72 -0
  128. package/.output/server/node_modules/execa/lib/ipc/incoming.js +79 -0
  129. package/.output/server/node_modules/execa/lib/ipc/ipc-input.js +44 -0
  130. package/.output/server/node_modules/execa/lib/ipc/methods.js +49 -0
  131. package/.output/server/node_modules/execa/lib/ipc/outgoing.js +47 -0
  132. package/.output/server/node_modules/execa/lib/ipc/reference.js +44 -0
  133. package/.output/server/node_modules/execa/lib/ipc/send.js +91 -0
  134. package/.output/server/node_modules/execa/lib/ipc/strict.js +113 -0
  135. package/.output/server/node_modules/execa/lib/ipc/validation.js +111 -0
  136. package/.output/server/node_modules/execa/lib/methods/bind.js +23 -0
  137. package/.output/server/node_modules/execa/lib/methods/command.js +43 -0
  138. package/.output/server/node_modules/execa/lib/methods/create.js +65 -0
  139. package/.output/server/node_modules/execa/lib/methods/main-async.js +194 -0
  140. package/.output/server/node_modules/execa/lib/methods/main-sync.js +163 -0
  141. package/.output/server/node_modules/execa/lib/methods/node.js +51 -0
  142. package/.output/server/node_modules/execa/lib/methods/parameters.js +31 -0
  143. package/.output/server/node_modules/execa/lib/methods/promise.js +15 -0
  144. package/.output/server/node_modules/execa/lib/methods/script.js +22 -0
  145. package/.output/server/node_modules/execa/lib/methods/template.js +153 -0
  146. package/.output/server/node_modules/execa/lib/pipe/abort.js +20 -0
  147. package/.output/server/node_modules/execa/lib/pipe/pipe-arguments.js +91 -0
  148. package/.output/server/node_modules/execa/lib/pipe/sequence.js +24 -0
  149. package/.output/server/node_modules/execa/lib/pipe/setup.js +72 -0
  150. package/.output/server/node_modules/execa/lib/pipe/streaming.js +51 -0
  151. package/.output/server/node_modules/execa/lib/pipe/throw.js +58 -0
  152. package/.output/server/node_modules/execa/lib/resolve/all-async.js +46 -0
  153. package/.output/server/node_modules/execa/lib/resolve/all-sync.js +33 -0
  154. package/.output/server/node_modules/execa/lib/resolve/exit-async.js +54 -0
  155. package/.output/server/node_modules/execa/lib/resolve/exit-sync.js +25 -0
  156. package/.output/server/node_modules/execa/lib/resolve/stdio.js +47 -0
  157. package/.output/server/node_modules/execa/lib/resolve/wait-stream.js +96 -0
  158. package/.output/server/node_modules/execa/lib/resolve/wait-subprocess.js +146 -0
  159. package/.output/server/node_modules/execa/lib/return/duration.js +8 -0
  160. package/.output/server/node_modules/execa/lib/return/early-error.js +60 -0
  161. package/.output/server/node_modules/execa/lib/return/final-error.js +40 -0
  162. package/.output/server/node_modules/execa/lib/return/message.js +157 -0
  163. package/.output/server/node_modules/execa/lib/return/reject.js +13 -0
  164. package/.output/server/node_modules/execa/lib/return/result.js +186 -0
  165. package/.output/server/node_modules/execa/lib/stdio/direction.js +76 -0
  166. package/.output/server/node_modules/execa/lib/stdio/duplicate.js +116 -0
  167. package/.output/server/node_modules/execa/lib/stdio/handle-async.js +52 -0
  168. package/.output/server/node_modules/execa/lib/stdio/handle-sync.js +57 -0
  169. package/.output/server/node_modules/execa/lib/stdio/handle.js +214 -0
  170. package/.output/server/node_modules/execa/lib/stdio/input-option.js +50 -0
  171. package/.output/server/node_modules/execa/lib/stdio/native.js +106 -0
  172. package/.output/server/node_modules/execa/lib/stdio/stdio-option.js +60 -0
  173. package/.output/server/node_modules/execa/lib/stdio/type.js +173 -0
  174. package/.output/server/node_modules/execa/lib/terminate/cancel.js +20 -0
  175. package/.output/server/node_modules/execa/lib/terminate/cleanup.js +16 -0
  176. package/.output/server/node_modules/execa/lib/terminate/graceful.js +71 -0
  177. package/.output/server/node_modules/execa/lib/terminate/kill.js +93 -0
  178. package/.output/server/node_modules/execa/lib/terminate/signal.js +70 -0
  179. package/.output/server/node_modules/execa/lib/terminate/timeout.js +21 -0
  180. package/.output/server/node_modules/execa/lib/transform/encoding-transform.js +51 -0
  181. package/.output/server/node_modules/execa/lib/transform/generator.js +107 -0
  182. package/.output/server/node_modules/execa/lib/transform/normalize.js +111 -0
  183. package/.output/server/node_modules/execa/lib/transform/object-mode.js +41 -0
  184. package/.output/server/node_modules/execa/lib/transform/run-async.js +60 -0
  185. package/.output/server/node_modules/execa/lib/transform/run-sync.js +50 -0
  186. package/.output/server/node_modules/execa/lib/transform/split.js +110 -0
  187. package/.output/server/node_modules/execa/lib/transform/validate.js +43 -0
  188. package/.output/server/node_modules/execa/lib/utils/abort-signal.js +8 -0
  189. package/.output/server/node_modules/execa/lib/utils/deferred.js +7 -0
  190. package/.output/server/node_modules/execa/lib/utils/max-listeners.js +14 -0
  191. package/.output/server/node_modules/execa/lib/utils/standard-stream.js +6 -0
  192. package/.output/server/node_modules/execa/lib/utils/uint-array.js +69 -0
  193. package/.output/server/node_modules/execa/lib/verbose/complete.js +24 -0
  194. package/.output/server/node_modules/execa/lib/verbose/custom.js +26 -0
  195. package/.output/server/node_modules/execa/lib/verbose/default.js +54 -0
  196. package/.output/server/node_modules/execa/lib/verbose/error.js +13 -0
  197. package/.output/server/node_modules/execa/lib/verbose/info.js +39 -0
  198. package/.output/server/node_modules/execa/lib/verbose/ipc.js +15 -0
  199. package/.output/server/node_modules/execa/lib/verbose/log.js +54 -0
  200. package/.output/server/node_modules/execa/lib/verbose/output.js +60 -0
  201. package/.output/server/node_modules/execa/lib/verbose/start.js +15 -0
  202. package/.output/server/node_modules/execa/lib/verbose/values.js +33 -0
  203. package/.output/server/node_modules/execa/package.json +105 -0
  204. package/.output/server/node_modules/figures/index.js +292 -0
  205. package/.output/server/node_modules/figures/package.json +49 -0
  206. package/.output/server/node_modules/fs-extra/lib/copy/copy-sync.js +176 -0
  207. package/.output/server/node_modules/fs-extra/lib/copy/copy.js +180 -0
  208. package/.output/server/node_modules/fs-extra/lib/copy/index.js +7 -0
  209. package/.output/server/node_modules/fs-extra/lib/empty/index.js +39 -0
  210. package/.output/server/node_modules/fs-extra/lib/ensure/file.js +66 -0
  211. package/.output/server/node_modules/fs-extra/lib/ensure/index.js +23 -0
  212. package/.output/server/node_modules/fs-extra/lib/ensure/link.js +64 -0
  213. package/.output/server/node_modules/fs-extra/lib/ensure/symlink-paths.js +101 -0
  214. package/.output/server/node_modules/fs-extra/lib/ensure/symlink-type.js +34 -0
  215. package/.output/server/node_modules/fs-extra/lib/ensure/symlink.js +67 -0
  216. package/.output/server/node_modules/fs-extra/lib/fs/index.js +146 -0
  217. package/.output/server/node_modules/fs-extra/lib/index.js +16 -0
  218. package/.output/server/node_modules/fs-extra/lib/json/index.js +16 -0
  219. package/.output/server/node_modules/fs-extra/lib/json/jsonfile.js +11 -0
  220. package/.output/server/node_modules/fs-extra/lib/json/output-json-sync.js +12 -0
  221. package/.output/server/node_modules/fs-extra/lib/json/output-json.js +12 -0
  222. package/.output/server/node_modules/fs-extra/lib/mkdirs/index.js +14 -0
  223. package/.output/server/node_modules/fs-extra/lib/mkdirs/make-dir.js +27 -0
  224. package/.output/server/node_modules/fs-extra/lib/mkdirs/utils.js +21 -0
  225. package/.output/server/node_modules/fs-extra/lib/move/index.js +7 -0
  226. package/.output/server/node_modules/fs-extra/lib/move/move-sync.js +55 -0
  227. package/.output/server/node_modules/fs-extra/lib/move/move.js +59 -0
  228. package/.output/server/node_modules/fs-extra/lib/output-file/index.js +31 -0
  229. package/.output/server/node_modules/fs-extra/lib/path-exists/index.js +12 -0
  230. package/.output/server/node_modules/fs-extra/lib/remove/index.js +17 -0
  231. package/.output/server/node_modules/fs-extra/lib/util/async.js +29 -0
  232. package/.output/server/node_modules/fs-extra/lib/util/stat.js +159 -0
  233. package/.output/server/node_modules/fs-extra/lib/util/utimes.js +36 -0
  234. package/.output/server/node_modules/fs-extra/package.json +71 -0
  235. package/.output/server/node_modules/get-stream/package.json +60 -0
  236. package/.output/server/node_modules/get-stream/source/array-buffer.js +84 -0
  237. package/.output/server/node_modules/get-stream/source/array.js +32 -0
  238. package/.output/server/node_modules/get-stream/source/buffer.js +19 -0
  239. package/.output/server/node_modules/get-stream/source/contents.js +121 -0
  240. package/.output/server/node_modules/get-stream/source/exports.js +5 -0
  241. package/.output/server/node_modules/get-stream/source/index.js +13 -0
  242. package/.output/server/node_modules/get-stream/source/stream.js +65 -0
  243. package/.output/server/node_modules/get-stream/source/string.js +41 -0
  244. package/.output/server/node_modules/get-stream/source/utils.js +11 -0
  245. package/.output/server/node_modules/graceful-fs/clone.js +23 -0
  246. package/.output/server/node_modules/graceful-fs/graceful-fs.js +448 -0
  247. package/.output/server/node_modules/graceful-fs/legacy-streams.js +118 -0
  248. package/.output/server/node_modules/graceful-fs/package.json +53 -0
  249. package/.output/server/node_modules/graceful-fs/polyfills.js +355 -0
  250. package/.output/server/node_modules/human-signals/build/src/core.js +273 -0
  251. package/.output/server/node_modules/human-signals/build/src/main.js +70 -0
  252. package/.output/server/node_modules/human-signals/build/src/realtime.js +16 -0
  253. package/.output/server/node_modules/human-signals/build/src/signals.js +34 -0
  254. package/.output/server/node_modules/human-signals/package.json +66 -0
  255. package/.output/server/node_modules/is-plain-obj/index.js +8 -0
  256. package/.output/server/node_modules/is-plain-obj/package.json +41 -0
  257. package/.output/server/node_modules/is-stream/index.js +37 -0
  258. package/.output/server/node_modules/is-stream/package.json +48 -0
  259. package/.output/server/node_modules/is-unicode-supported/index.js +21 -0
  260. package/.output/server/node_modules/is-unicode-supported/package.json +47 -0
  261. package/.output/server/node_modules/isexe/index.js +57 -0
  262. package/.output/server/node_modules/isexe/mode.js +41 -0
  263. package/.output/server/node_modules/isexe/package.json +31 -0
  264. package/.output/server/node_modules/isexe/windows.js +42 -0
  265. package/.output/server/node_modules/jiti/dist/jiti.cjs +1 -0
  266. package/.output/server/node_modules/jiti/lib/jiti.mjs +29 -0
  267. package/.output/server/node_modules/jiti/package.json +133 -0
  268. package/.output/server/node_modules/js-runtime/dist/index.js +5 -0
  269. package/.output/server/node_modules/js-runtime/package.json +72 -0
  270. package/.output/server/node_modules/jsonfile/index.js +88 -0
  271. package/.output/server/node_modules/jsonfile/package.json +40 -0
  272. package/.output/server/node_modules/jsonfile/utils.js +14 -0
  273. package/.output/server/node_modules/mime-db/db.json +7088 -0
  274. package/.output/server/node_modules/mime-db/index.js +11 -0
  275. package/.output/server/node_modules/mime-db/package.json +57 -0
  276. package/.output/server/node_modules/mime-types/index.js +188 -0
  277. package/.output/server/node_modules/mime-types/package.json +43 -0
  278. package/.output/server/node_modules/minimatch/minimatch.js +947 -0
  279. package/.output/server/node_modules/minimatch/package.json +33 -0
  280. package/.output/server/node_modules/natural-orderby/dist/main.js +19 -0
  281. package/.output/server/node_modules/natural-orderby/dist/umd/natural-orderby.development.js +420 -0
  282. package/.output/server/node_modules/natural-orderby/dist/umd/natural-orderby.production.min.js +11 -0
  283. package/.output/server/node_modules/natural-orderby/package.json +119 -0
  284. package/.output/server/node_modules/npm-run-path/index.js +55 -0
  285. package/.output/server/node_modules/npm-run-path/package.json +52 -0
  286. package/.output/server/node_modules/p-limit/index.js +127 -0
  287. package/.output/server/node_modules/p-limit/package.json +58 -0
  288. package/.output/server/node_modules/parse-ms/index.js +45 -0
  289. package/.output/server/node_modules/parse-ms/package.json +47 -0
  290. package/.output/server/node_modules/path-is-inside/lib/path-is-inside.js +28 -0
  291. package/.output/server/node_modules/path-is-inside/package.json +27 -0
  292. package/.output/server/node_modules/path-to-regexp/index.js +421 -0
  293. package/.output/server/node_modules/path-to-regexp/package.json +46 -0
  294. package/.output/server/node_modules/picocolors/package.json +25 -0
  295. package/.output/server/node_modules/picocolors/picocolors.js +75 -0
  296. package/.output/server/node_modules/pretty-ms/index.js +149 -0
  297. package/.output/server/node_modules/pretty-ms/package.json +55 -0
  298. package/.output/server/node_modules/range-parser/index.js +158 -0
  299. package/.output/server/node_modules/range-parser/package.json +40 -0
  300. package/.output/server/node_modules/react-devtools-core/dist/backend.js +18302 -0
  301. package/.output/server/node_modules/react-devtools-core/package.json +38 -0
  302. package/.output/server/node_modules/remeda/dist/add.js +2 -0
  303. package/.output/server/node_modules/remeda/dist/addProp.js +2 -0
  304. package/.output/server/node_modules/remeda/dist/allPass.js +2 -0
  305. package/.output/server/node_modules/remeda/dist/anyPass.js +2 -0
  306. package/.output/server/node_modules/remeda/dist/binarySearchCutoffIndex-CLQRwIY1.js +2 -0
  307. package/.output/server/node_modules/remeda/dist/capitalize.js +2 -0
  308. package/.output/server/node_modules/remeda/dist/ceil.js +2 -0
  309. package/.output/server/node_modules/remeda/dist/chunk.js +2 -0
  310. package/.output/server/node_modules/remeda/dist/clamp.js +2 -0
  311. package/.output/server/node_modules/remeda/dist/clone.js +2 -0
  312. package/.output/server/node_modules/remeda/dist/concat.js +2 -0
  313. package/.output/server/node_modules/remeda/dist/conditional.js +2 -0
  314. package/.output/server/node_modules/remeda/dist/constant.js +2 -0
  315. package/.output/server/node_modules/remeda/dist/countBy.js +2 -0
  316. package/.output/server/node_modules/remeda/dist/debounce.js +2 -0
  317. package/.output/server/node_modules/remeda/dist/defaultTo.js +2 -0
  318. package/.output/server/node_modules/remeda/dist/difference.js +2 -0
  319. package/.output/server/node_modules/remeda/dist/differenceWith.js +2 -0
  320. package/.output/server/node_modules/remeda/dist/divide.js +2 -0
  321. package/.output/server/node_modules/remeda/dist/doNothing.js +2 -0
  322. package/.output/server/node_modules/remeda/dist/drop.js +2 -0
  323. package/.output/server/node_modules/remeda/dist/dropFirstBy.js +2 -0
  324. package/.output/server/node_modules/remeda/dist/dropLast.js +2 -0
  325. package/.output/server/node_modules/remeda/dist/dropLastWhile.js +2 -0
  326. package/.output/server/node_modules/remeda/dist/dropWhile.js +2 -0
  327. package/.output/server/node_modules/remeda/dist/endsWith.js +2 -0
  328. package/.output/server/node_modules/remeda/dist/entries.js +2 -0
  329. package/.output/server/node_modules/remeda/dist/evolve.js +2 -0
  330. package/.output/server/node_modules/remeda/dist/filter.js +2 -0
  331. package/.output/server/node_modules/remeda/dist/find.js +2 -0
  332. package/.output/server/node_modules/remeda/dist/findIndex.js +2 -0
  333. package/.output/server/node_modules/remeda/dist/findLast.js +2 -0
  334. package/.output/server/node_modules/remeda/dist/findLastIndex.js +2 -0
  335. package/.output/server/node_modules/remeda/dist/first.js +2 -0
  336. package/.output/server/node_modules/remeda/dist/firstBy.js +2 -0
  337. package/.output/server/node_modules/remeda/dist/flat.js +2 -0
  338. package/.output/server/node_modules/remeda/dist/flatMap.js +2 -0
  339. package/.output/server/node_modules/remeda/dist/floor.js +2 -0
  340. package/.output/server/node_modules/remeda/dist/forEach.js +2 -0
  341. package/.output/server/node_modules/remeda/dist/forEachObj.js +2 -0
  342. package/.output/server/node_modules/remeda/dist/fromEntries.js +2 -0
  343. package/.output/server/node_modules/remeda/dist/fromKeys.js +2 -0
  344. package/.output/server/node_modules/remeda/dist/funnel.js +2 -0
  345. package/.output/server/node_modules/remeda/dist/groupBy.js +2 -0
  346. package/.output/server/node_modules/remeda/dist/groupByProp.js +2 -0
  347. package/.output/server/node_modules/remeda/dist/hasAtLeast.js +2 -0
  348. package/.output/server/node_modules/remeda/dist/hasSubObject.js +2 -0
  349. package/.output/server/node_modules/remeda/dist/heap-OOe_F8_z.js +2 -0
  350. package/.output/server/node_modules/remeda/dist/identity.js +2 -0
  351. package/.output/server/node_modules/remeda/dist/index.js +1 -0
  352. package/.output/server/node_modules/remeda/dist/indexBy.js +2 -0
  353. package/.output/server/node_modules/remeda/dist/intersection.js +2 -0
  354. package/.output/server/node_modules/remeda/dist/intersectionWith.js +2 -0
  355. package/.output/server/node_modules/remeda/dist/invert.js +2 -0
  356. package/.output/server/node_modules/remeda/dist/isArray.js +2 -0
  357. package/.output/server/node_modules/remeda/dist/isBigInt.js +2 -0
  358. package/.output/server/node_modules/remeda/dist/isBoolean.js +2 -0
  359. package/.output/server/node_modules/remeda/dist/isDate.js +2 -0
  360. package/.output/server/node_modules/remeda/dist/isDeepEqual.js +2 -0
  361. package/.output/server/node_modules/remeda/dist/isDefined.js +2 -0
  362. package/.output/server/node_modules/remeda/dist/isEmpty.js +2 -0
  363. package/.output/server/node_modules/remeda/dist/isEmptyish.js +2 -0
  364. package/.output/server/node_modules/remeda/dist/isError.js +2 -0
  365. package/.output/server/node_modules/remeda/dist/isFunction.js +2 -0
  366. package/.output/server/node_modules/remeda/dist/isIncludedIn.js +2 -0
  367. package/.output/server/node_modules/remeda/dist/isNonNull.js +2 -0
  368. package/.output/server/node_modules/remeda/dist/isNonNullish.js +2 -0
  369. package/.output/server/node_modules/remeda/dist/isNot.js +2 -0
  370. package/.output/server/node_modules/remeda/dist/isNullish.js +2 -0
  371. package/.output/server/node_modules/remeda/dist/isNumber.js +2 -0
  372. package/.output/server/node_modules/remeda/dist/isObjectType.js +2 -0
  373. package/.output/server/node_modules/remeda/dist/isPlainObject.js +2 -0
  374. package/.output/server/node_modules/remeda/dist/isPromise.js +2 -0
  375. package/.output/server/node_modules/remeda/dist/isShallowEqual.js +2 -0
  376. package/.output/server/node_modules/remeda/dist/isStrictEqual.js +2 -0
  377. package/.output/server/node_modules/remeda/dist/isString.js +2 -0
  378. package/.output/server/node_modules/remeda/dist/isSymbol.js +2 -0
  379. package/.output/server/node_modules/remeda/dist/isTruthy.js +2 -0
  380. package/.output/server/node_modules/remeda/dist/join.js +2 -0
  381. package/.output/server/node_modules/remeda/dist/keys.js +2 -0
  382. package/.output/server/node_modules/remeda/dist/last.js +2 -0
  383. package/.output/server/node_modules/remeda/dist/lazyDataLastImpl-DtF3cihj.js +2 -0
  384. package/.output/server/node_modules/remeda/dist/length.js +2 -0
  385. package/.output/server/node_modules/remeda/dist/map.js +2 -0
  386. package/.output/server/node_modules/remeda/dist/mapKeys.js +2 -0
  387. package/.output/server/node_modules/remeda/dist/mapToObj.js +2 -0
  388. package/.output/server/node_modules/remeda/dist/mapValues.js +2 -0
  389. package/.output/server/node_modules/remeda/dist/mapWithFeedback.js +2 -0
  390. package/.output/server/node_modules/remeda/dist/mean.js +2 -0
  391. package/.output/server/node_modules/remeda/dist/meanBy.js +2 -0
  392. package/.output/server/node_modules/remeda/dist/median.js +2 -0
  393. package/.output/server/node_modules/remeda/dist/merge.js +2 -0
  394. package/.output/server/node_modules/remeda/dist/mergeAll.js +2 -0
  395. package/.output/server/node_modules/remeda/dist/mergeDeep.js +2 -0
  396. package/.output/server/node_modules/remeda/dist/multiply.js +2 -0
  397. package/.output/server/node_modules/remeda/dist/nthBy.js +2 -0
  398. package/.output/server/node_modules/remeda/dist/objOf.js +2 -0
  399. package/.output/server/node_modules/remeda/dist/omit.js +2 -0
  400. package/.output/server/node_modules/remeda/dist/omitBy.js +2 -0
  401. package/.output/server/node_modules/remeda/dist/once.js +2 -0
  402. package/.output/server/node_modules/remeda/dist/only.js +2 -0
  403. package/.output/server/node_modules/remeda/dist/partialBind.js +2 -0
  404. package/.output/server/node_modules/remeda/dist/partialLastBind.js +2 -0
  405. package/.output/server/node_modules/remeda/dist/partition.js +2 -0
  406. package/.output/server/node_modules/remeda/dist/pathOr.js +2 -0
  407. package/.output/server/node_modules/remeda/dist/pick.js +2 -0
  408. package/.output/server/node_modules/remeda/dist/pickBy.js +2 -0
  409. package/.output/server/node_modules/remeda/dist/pipe.js +2 -0
  410. package/.output/server/node_modules/remeda/dist/piped.js +2 -0
  411. package/.output/server/node_modules/remeda/dist/product.js +2 -0
  412. package/.output/server/node_modules/remeda/dist/prop.js +2 -0
  413. package/.output/server/node_modules/remeda/dist/pullObject.js +2 -0
  414. package/.output/server/node_modules/remeda/dist/purry.js +2 -0
  415. package/.output/server/node_modules/remeda/dist/purryFromLazy-B-_oTxzb.js +2 -0
  416. package/.output/server/node_modules/remeda/dist/purryOn-D4wFIFMT.js +2 -0
  417. package/.output/server/node_modules/remeda/dist/purryOrderRules-4JgY6z4X.js +2 -0
  418. package/.output/server/node_modules/remeda/dist/quickSelect-B4eZ0JeB.js +2 -0
  419. package/.output/server/node_modules/remeda/dist/randomBigInt.js +2 -0
  420. package/.output/server/node_modules/remeda/dist/randomInteger.js +2 -0
  421. package/.output/server/node_modules/remeda/dist/randomString.js +2 -0
  422. package/.output/server/node_modules/remeda/dist/range.js +2 -0
  423. package/.output/server/node_modules/remeda/dist/rankBy.js +2 -0
  424. package/.output/server/node_modules/remeda/dist/reduce.js +2 -0
  425. package/.output/server/node_modules/remeda/dist/reverse.js +2 -0
  426. package/.output/server/node_modules/remeda/dist/round.js +2 -0
  427. package/.output/server/node_modules/remeda/dist/sample.js +2 -0
  428. package/.output/server/node_modules/remeda/dist/set.js +2 -0
  429. package/.output/server/node_modules/remeda/dist/setPath.js +2 -0
  430. package/.output/server/node_modules/remeda/dist/shuffle.js +2 -0
  431. package/.output/server/node_modules/remeda/dist/sliceString.js +2 -0
  432. package/.output/server/node_modules/remeda/dist/sort.js +2 -0
  433. package/.output/server/node_modules/remeda/dist/sortBy.js +2 -0
  434. package/.output/server/node_modules/remeda/dist/sortedIndex.js +2 -0
  435. package/.output/server/node_modules/remeda/dist/sortedIndexBy.js +2 -0
  436. package/.output/server/node_modules/remeda/dist/sortedIndexWith.js +2 -0
  437. package/.output/server/node_modules/remeda/dist/sortedLastIndex.js +2 -0
  438. package/.output/server/node_modules/remeda/dist/sortedLastIndexBy.js +2 -0
  439. package/.output/server/node_modules/remeda/dist/splice.js +2 -0
  440. package/.output/server/node_modules/remeda/dist/split.js +2 -0
  441. package/.output/server/node_modules/remeda/dist/splitAt.js +2 -0
  442. package/.output/server/node_modules/remeda/dist/splitWhen.js +2 -0
  443. package/.output/server/node_modules/remeda/dist/startsWith.js +2 -0
  444. package/.output/server/node_modules/remeda/dist/stringToPath.js +2 -0
  445. package/.output/server/node_modules/remeda/dist/subtract.js +2 -0
  446. package/.output/server/node_modules/remeda/dist/sum.js +2 -0
  447. package/.output/server/node_modules/remeda/dist/sumBy.js +2 -0
  448. package/.output/server/node_modules/remeda/dist/swapInPlace-BrVgf3c3.js +2 -0
  449. package/.output/server/node_modules/remeda/dist/swapIndices.js +2 -0
  450. package/.output/server/node_modules/remeda/dist/swapProps.js +2 -0
  451. package/.output/server/node_modules/remeda/dist/take.js +2 -0
  452. package/.output/server/node_modules/remeda/dist/takeFirstBy.js +2 -0
  453. package/.output/server/node_modules/remeda/dist/takeLast.js +2 -0
  454. package/.output/server/node_modules/remeda/dist/takeLastWhile.js +2 -0
  455. package/.output/server/node_modules/remeda/dist/takeWhile.js +2 -0
  456. package/.output/server/node_modules/remeda/dist/tap.js +2 -0
  457. package/.output/server/node_modules/remeda/dist/times.js +2 -0
  458. package/.output/server/node_modules/remeda/dist/toCamelCase.js +2 -0
  459. package/.output/server/node_modules/remeda/dist/toKebabCase.js +2 -0
  460. package/.output/server/node_modules/remeda/dist/toLowerCase.js +2 -0
  461. package/.output/server/node_modules/remeda/dist/toSingle-qs9PC5sP.js +2 -0
  462. package/.output/server/node_modules/remeda/dist/toSnakeCase.js +2 -0
  463. package/.output/server/node_modules/remeda/dist/toTitleCase.js +2 -0
  464. package/.output/server/node_modules/remeda/dist/toUpperCase.js +2 -0
  465. package/.output/server/node_modules/remeda/dist/truncate.js +2 -0
  466. package/.output/server/node_modules/remeda/dist/uncapitalize.js +2 -0
  467. package/.output/server/node_modules/remeda/dist/unique.js +2 -0
  468. package/.output/server/node_modules/remeda/dist/uniqueBy.js +2 -0
  469. package/.output/server/node_modules/remeda/dist/uniqueWith.js +2 -0
  470. package/.output/server/node_modules/remeda/dist/utilityEvaluators-BQqW5Ir5.js +2 -0
  471. package/.output/server/node_modules/remeda/dist/values.js +2 -0
  472. package/.output/server/node_modules/remeda/dist/when.js +2 -0
  473. package/.output/server/node_modules/remeda/dist/withPrecision-CDZ-Oor7.js +2 -0
  474. package/.output/server/node_modules/remeda/dist/words-Dv8LmnKC.js +3 -0
  475. package/.output/server/node_modules/remeda/dist/zip.js +2 -0
  476. package/.output/server/node_modules/remeda/dist/zipWith.js +2 -0
  477. package/.output/server/node_modules/remeda/package.json +90 -0
  478. package/.output/server/node_modules/semver/classes/comparator.js +143 -0
  479. package/.output/server/node_modules/semver/classes/range.js +557 -0
  480. package/.output/server/node_modules/semver/classes/semver.js +333 -0
  481. package/.output/server/node_modules/semver/functions/clean.js +8 -0
  482. package/.output/server/node_modules/semver/functions/cmp.js +54 -0
  483. package/.output/server/node_modules/semver/functions/coerce.js +62 -0
  484. package/.output/server/node_modules/semver/functions/compare-build.js +9 -0
  485. package/.output/server/node_modules/semver/functions/compare-loose.js +5 -0
  486. package/.output/server/node_modules/semver/functions/compare.js +7 -0
  487. package/.output/server/node_modules/semver/functions/diff.js +60 -0
  488. package/.output/server/node_modules/semver/functions/eq.js +5 -0
  489. package/.output/server/node_modules/semver/functions/gt.js +5 -0
  490. package/.output/server/node_modules/semver/functions/gte.js +5 -0
  491. package/.output/server/node_modules/semver/functions/inc.js +21 -0
  492. package/.output/server/node_modules/semver/functions/lt.js +5 -0
  493. package/.output/server/node_modules/semver/functions/lte.js +5 -0
  494. package/.output/server/node_modules/semver/functions/major.js +5 -0
  495. package/.output/server/node_modules/semver/functions/minor.js +5 -0
  496. package/.output/server/node_modules/semver/functions/neq.js +5 -0
  497. package/.output/server/node_modules/semver/functions/parse.js +18 -0
  498. package/.output/server/node_modules/semver/functions/patch.js +5 -0
  499. package/.output/server/node_modules/semver/functions/prerelease.js +8 -0
  500. package/.output/server/node_modules/semver/functions/rcompare.js +5 -0
  501. package/.output/server/node_modules/semver/functions/rsort.js +5 -0
  502. package/.output/server/node_modules/semver/functions/satisfies.js +12 -0
  503. package/.output/server/node_modules/semver/functions/sort.js +5 -0
  504. package/.output/server/node_modules/semver/functions/valid.js +8 -0
  505. package/.output/server/node_modules/semver/index.js +91 -0
  506. package/.output/server/node_modules/semver/internal/constants.js +37 -0
  507. package/.output/server/node_modules/semver/internal/debug.js +11 -0
  508. package/.output/server/node_modules/semver/internal/identifiers.js +29 -0
  509. package/.output/server/node_modules/semver/internal/lrucache.js +42 -0
  510. package/.output/server/node_modules/semver/internal/parse-options.js +17 -0
  511. package/.output/server/node_modules/semver/internal/re.js +223 -0
  512. package/.output/server/node_modules/semver/package.json +78 -0
  513. package/.output/server/node_modules/semver/preload.js +4 -0
  514. package/.output/server/node_modules/semver/ranges/gtr.js +6 -0
  515. package/.output/server/node_modules/semver/ranges/intersects.js +9 -0
  516. package/.output/server/node_modules/semver/ranges/ltr.js +6 -0
  517. package/.output/server/node_modules/semver/ranges/max-satisfying.js +27 -0
  518. package/.output/server/node_modules/semver/ranges/min-satisfying.js +26 -0
  519. package/.output/server/node_modules/semver/ranges/min-version.js +63 -0
  520. package/.output/server/node_modules/semver/ranges/outside.js +82 -0
  521. package/.output/server/node_modules/semver/ranges/simplify.js +49 -0
  522. package/.output/server/node_modules/semver/ranges/subset.js +249 -0
  523. package/.output/server/node_modules/semver/ranges/to-comparators.js +10 -0
  524. package/.output/server/node_modules/semver/ranges/valid.js +13 -0
  525. package/.output/server/node_modules/serve-handler/package.json +68 -0
  526. package/.output/server/node_modules/serve-handler/src/directory.js +16 -0
  527. package/.output/server/node_modules/serve-handler/src/error.js +10 -0
  528. package/.output/server/node_modules/serve-handler/src/glob-slash.js +9 -0
  529. package/.output/server/node_modules/serve-handler/src/index.js +769 -0
  530. package/.output/server/node_modules/shebang-command/index.js +19 -0
  531. package/.output/server/node_modules/shebang-command/package.json +34 -0
  532. package/.output/server/node_modules/shebang-regex/index.js +2 -0
  533. package/.output/server/node_modules/shebang-regex/package.json +35 -0
  534. package/.output/server/node_modules/signal-exit/dist/mjs/index.js +275 -0
  535. package/.output/server/node_modules/signal-exit/dist/mjs/package.json +3 -0
  536. package/.output/server/node_modules/signal-exit/dist/mjs/signals.js +39 -0
  537. package/.output/server/node_modules/signal-exit/package.json +106 -0
  538. package/.output/server/node_modules/sisteransi/package.json +34 -0
  539. package/.output/server/node_modules/sisteransi/src/index.js +58 -0
  540. package/.output/server/node_modules/source-map/lib/array-set.js +121 -0
  541. package/.output/server/node_modules/source-map/lib/base64-vlq.js +140 -0
  542. package/.output/server/node_modules/source-map/lib/base64.js +67 -0
  543. package/.output/server/node_modules/source-map/lib/binary-search.js +111 -0
  544. package/.output/server/node_modules/source-map/lib/mapping-list.js +79 -0
  545. package/.output/server/node_modules/source-map/lib/quick-sort.js +114 -0
  546. package/.output/server/node_modules/source-map/lib/source-map-consumer.js +1145 -0
  547. package/.output/server/node_modules/source-map/lib/source-map-generator.js +425 -0
  548. package/.output/server/node_modules/source-map/lib/source-node.js +413 -0
  549. package/.output/server/node_modules/source-map/lib/util.js +488 -0
  550. package/.output/server/node_modules/source-map/package.json +73 -0
  551. package/.output/server/node_modules/source-map/source-map.js +8 -0
  552. package/.output/server/node_modules/source-map-support/package.json +31 -0
  553. package/.output/server/node_modules/source-map-support/source-map-support.js +625 -0
  554. package/.output/server/node_modules/string-argv/index.js +41 -0
  555. package/.output/server/node_modules/string-argv/package.json +51 -0
  556. package/.output/server/node_modules/strip-final-newline/index.js +26 -0
  557. package/.output/server/node_modules/strip-final-newline/package.json +49 -0
  558. package/.output/server/node_modules/typescript/lib/typescript.js +200276 -0
  559. package/.output/server/node_modules/typescript/package.json +120 -0
  560. package/.output/server/node_modules/unicorn-magic/default.js +14 -0
  561. package/.output/server/node_modules/unicorn-magic/node.js +49 -0
  562. package/.output/server/node_modules/unicorn-magic/package.json +62 -0
  563. package/.output/server/node_modules/universalify/index.js +24 -0
  564. package/.output/server/node_modules/universalify/package.json +34 -0
  565. package/.output/server/node_modules/which/package.json +43 -0
  566. package/.output/server/node_modules/which/which.js +125 -0
  567. package/.output/server/node_modules/yocto-queue/index.js +90 -0
  568. package/.output/server/node_modules/yocto-queue/package.json +48 -0
  569. package/.output/server/node_modules/yoctocolors/base.js +94 -0
  570. package/.output/server/node_modules/yoctocolors/index.js +2 -0
  571. package/.output/server/node_modules/yoctocolors/package.json +69 -0
  572. package/.output/server/package.json +66 -0
  573. package/LICENSE +21 -0
  574. package/README.md +99 -0
  575. package/package.json +70 -0
@@ -0,0 +1,769 @@
1
+ // Native
2
+ const {promisify} = require('util');
3
+ const path = require('path');
4
+ const {createHash} = require('crypto');
5
+ const {realpath, lstat, createReadStream, readdir} = require('fs');
6
+
7
+ // Packages
8
+ const url = require('url');
9
+ const slasher = require('./glob-slash');
10
+ const minimatch = require('minimatch');
11
+ const pathToRegExp = require('path-to-regexp');
12
+ const mime = require('mime-types');
13
+ const bytes = require('bytes');
14
+ const contentDisposition = require('content-disposition');
15
+ const isPathInside = require('path-is-inside');
16
+ const parseRange = require('range-parser');
17
+
18
+ // Other
19
+ const directoryTemplate = require('./directory');
20
+ const errorTemplate = require('./error');
21
+
22
+ const etags = new Map();
23
+
24
+ const calculateSha = (handlers, absolutePath) =>
25
+ new Promise((resolve, reject) => {
26
+ const hash = createHash('sha1');
27
+ hash.update(path.extname(absolutePath));
28
+ hash.update('-');
29
+ const rs = handlers.createReadStream(absolutePath);
30
+ rs.on('error', reject);
31
+ rs.on('data', buf => hash.update(buf));
32
+ rs.on('end', () => {
33
+ const sha = hash.digest('hex');
34
+ resolve(sha);
35
+ });
36
+ });
37
+
38
+ const sourceMatches = (source, requestPath, allowSegments) => {
39
+ const keys = [];
40
+ const slashed = slasher(source);
41
+ const resolvedPath = path.posix.resolve(requestPath);
42
+
43
+ let results = null;
44
+
45
+ if (allowSegments) {
46
+ const normalized = slashed.replace('*', '(.*)');
47
+ const expression = pathToRegExp(normalized, keys);
48
+
49
+ results = expression.exec(resolvedPath);
50
+
51
+ if (!results) {
52
+ // clear keys so that they are not used
53
+ // later with empty results. this may
54
+ // happen if minimatch returns true
55
+ keys.length = 0;
56
+ }
57
+ }
58
+
59
+ if (results || minimatch(resolvedPath, slashed)) {
60
+ return {
61
+ keys,
62
+ results
63
+ };
64
+ }
65
+
66
+ return null;
67
+ };
68
+
69
+ const toTarget = (source, destination, previousPath) => {
70
+ const matches = sourceMatches(source, previousPath, true);
71
+
72
+ if (!matches) {
73
+ return null;
74
+ }
75
+
76
+ const {keys, results} = matches;
77
+
78
+ const props = {};
79
+ const {protocol} = url.parse(destination);
80
+ const normalizedDest = protocol ? destination : slasher(destination);
81
+ const toPath = pathToRegExp.compile(normalizedDest);
82
+
83
+ for (let index = 0; index < keys.length; index++) {
84
+ const {name} = keys[index];
85
+ props[name] = results[index + 1];
86
+ }
87
+
88
+ return toPath(props);
89
+ };
90
+
91
+ const applyRewrites = (requestPath, rewrites = [], repetitive) => {
92
+ // We need to copy the array, since we're going to modify it.
93
+ const rewritesCopy = rewrites.slice();
94
+
95
+ // If the method was called again, the path was already rewritten
96
+ // so we need to make sure to return it.
97
+ const fallback = repetitive ? requestPath : null;
98
+
99
+ if (rewritesCopy.length === 0) {
100
+ return fallback;
101
+ }
102
+
103
+ for (let index = 0; index < rewritesCopy.length; index++) {
104
+ const {source, destination} = rewrites[index];
105
+ const target = toTarget(source, destination, requestPath);
106
+
107
+ if (target) {
108
+ // Remove rules that were already applied
109
+ rewritesCopy.splice(index, 1);
110
+
111
+ // Check if there are remaining ones to be applied
112
+ return applyRewrites(slasher(target), rewritesCopy, true);
113
+ }
114
+ }
115
+
116
+ return fallback;
117
+ };
118
+
119
+ const ensureSlashStart = target => (target.startsWith('/') ? target : `/${target}`);
120
+
121
+ const shouldRedirect = (decodedPath, {redirects = [], trailingSlash}, cleanUrl) => {
122
+ const slashing = typeof trailingSlash === 'boolean';
123
+ const defaultType = 301;
124
+ const matchHTML = /(\.html|\/index)$/g;
125
+
126
+ if (redirects.length === 0 && !slashing && !cleanUrl) {
127
+ return null;
128
+ }
129
+
130
+ // By stripping the HTML parts from the decoded
131
+ // path *before* handling the trailing slash, we make
132
+ // sure that only *one* redirect occurs if both
133
+ // config options are used.
134
+ if (cleanUrl && matchHTML.test(decodedPath)) {
135
+ decodedPath = decodedPath.replace(matchHTML, '');
136
+ if (decodedPath.indexOf('//') > -1) {
137
+ decodedPath = decodedPath.replace(/\/+/g, '/');
138
+ }
139
+ return {
140
+ target: ensureSlashStart(decodedPath),
141
+ statusCode: defaultType
142
+ };
143
+ }
144
+
145
+ if (slashing) {
146
+ const {ext, name} = path.parse(decodedPath);
147
+ const isTrailed = decodedPath.endsWith('/');
148
+ const isDotfile = name.startsWith('.');
149
+
150
+ let target = null;
151
+
152
+ if (!trailingSlash && isTrailed) {
153
+ target = decodedPath.slice(0, -1);
154
+ } else if (trailingSlash && !isTrailed && !ext && !isDotfile) {
155
+ target = `${decodedPath}/`;
156
+ }
157
+
158
+ if (decodedPath.indexOf('//') > -1) {
159
+ target = decodedPath.replace(/\/+/g, '/');
160
+ }
161
+
162
+ if (target) {
163
+ return {
164
+ target: ensureSlashStart(target),
165
+ statusCode: defaultType
166
+ };
167
+ }
168
+ }
169
+
170
+ // This is currently the fastest way to
171
+ // iterate over an array
172
+ for (let index = 0; index < redirects.length; index++) {
173
+ const {source, destination, type} = redirects[index];
174
+ const target = toTarget(source, destination, decodedPath);
175
+
176
+ if (target) {
177
+ return {
178
+ target,
179
+ statusCode: type || defaultType
180
+ };
181
+ }
182
+ }
183
+
184
+ return null;
185
+ };
186
+
187
+ const appendHeaders = (target, source) => {
188
+ for (let index = 0; index < source.length; index++) {
189
+ const {key, value} = source[index];
190
+ target[key] = value;
191
+ }
192
+ };
193
+
194
+ const getHeaders = async (handlers, config, current, absolutePath, stats) => {
195
+ const {headers: customHeaders = [], etag = false} = config;
196
+ const related = {};
197
+ const {base} = path.parse(absolutePath);
198
+ const relativePath = path.relative(current, absolutePath);
199
+
200
+ if (customHeaders.length > 0) {
201
+ // By iterating over all headers and never stopping, developers
202
+ // can specify multiple header sources in the config that
203
+ // might match a single path.
204
+ for (let index = 0; index < customHeaders.length; index++) {
205
+ const {source, headers} = customHeaders[index];
206
+
207
+ if (sourceMatches(source, slasher(relativePath))) {
208
+ appendHeaders(related, headers);
209
+ }
210
+ }
211
+ }
212
+
213
+ let defaultHeaders = {};
214
+
215
+ if (stats) {
216
+ defaultHeaders = {
217
+ 'Content-Length': stats.size,
218
+ // Default to "inline", which always tries to render in the browser,
219
+ // if that's not working, it will save the file. But to be clear: This
220
+ // only happens if it cannot find a appropiate value.
221
+ 'Content-Disposition': contentDisposition(base, {
222
+ type: 'inline'
223
+ }),
224
+ 'Accept-Ranges': 'bytes'
225
+ };
226
+
227
+ if (etag) {
228
+ let [mtime, sha] = etags.get(absolutePath) || [];
229
+ if (Number(mtime) !== Number(stats.mtime)) {
230
+ sha = await calculateSha(handlers, absolutePath);
231
+ etags.set(absolutePath, [stats.mtime, sha]);
232
+ }
233
+ defaultHeaders['ETag'] = `"${sha}"`;
234
+ } else {
235
+ defaultHeaders['Last-Modified'] = stats.mtime.toUTCString();
236
+ }
237
+
238
+ const contentType = mime.contentType(base);
239
+
240
+ if (contentType) {
241
+ defaultHeaders['Content-Type'] = contentType;
242
+ }
243
+ }
244
+
245
+ const headers = Object.assign(defaultHeaders, related);
246
+
247
+ for (const key in headers) {
248
+ if (headers.hasOwnProperty(key) && headers[key] === null) {
249
+ delete headers[key];
250
+ }
251
+ }
252
+
253
+ return headers;
254
+ };
255
+
256
+ const applicable = (decodedPath, configEntry) => {
257
+ if (typeof configEntry === 'boolean') {
258
+ return configEntry;
259
+ }
260
+
261
+ if (Array.isArray(configEntry)) {
262
+ for (let index = 0; index < configEntry.length; index++) {
263
+ const source = configEntry[index];
264
+
265
+ if (sourceMatches(source, decodedPath)) {
266
+ return true;
267
+ }
268
+ }
269
+
270
+ return false;
271
+ }
272
+
273
+ return true;
274
+ };
275
+
276
+ const getPossiblePaths = (relativePath, extension) => [
277
+ path.join(relativePath, `index${extension}`),
278
+ relativePath.endsWith('/') ? relativePath.replace(/\/$/g, extension) : (relativePath + extension)
279
+ ].filter(item => path.basename(item) !== extension);
280
+
281
+ const findRelated = async (current, relativePath, rewrittenPath, originalStat) => {
282
+ const possible = rewrittenPath ? [rewrittenPath] : getPossiblePaths(relativePath, '.html');
283
+
284
+ let stats = null;
285
+
286
+ for (let index = 0; index < possible.length; index++) {
287
+ const related = possible[index];
288
+ const absolutePath = path.join(current, related);
289
+
290
+ try {
291
+ stats = await originalStat(absolutePath);
292
+ } catch (err) {
293
+ if (err.code !== 'ENOENT' && err.code !== 'ENOTDIR') {
294
+ throw err;
295
+ }
296
+ }
297
+
298
+ if (stats) {
299
+ return {
300
+ stats,
301
+ absolutePath
302
+ };
303
+ }
304
+ }
305
+
306
+ return null;
307
+ };
308
+
309
+ const canBeListed = (excluded, file) => {
310
+ const slashed = slasher(file);
311
+ let whether = true;
312
+
313
+ for (let mark = 0; mark < excluded.length; mark++) {
314
+ const source = excluded[mark];
315
+
316
+ if (sourceMatches(source, slashed)) {
317
+ whether = false;
318
+ break;
319
+ }
320
+ }
321
+
322
+ return whether;
323
+ };
324
+
325
+ const renderDirectory = async (current, acceptsJSON, handlers, methods, config, paths) => {
326
+ const {directoryListing, trailingSlash, unlisted = [], renderSingle} = config;
327
+ const slashSuffix = typeof trailingSlash === 'boolean' ? (trailingSlash ? '/' : '') : '/';
328
+ const {relativePath, absolutePath} = paths;
329
+
330
+ const excluded = [
331
+ '.DS_Store',
332
+ '.git',
333
+ ...unlisted
334
+ ];
335
+
336
+ if (!applicable(relativePath, directoryListing) && !renderSingle) {
337
+ return {};
338
+ }
339
+
340
+ let files = await handlers.readdir(absolutePath);
341
+
342
+ const canRenderSingle = renderSingle && (files.length === 1);
343
+
344
+ for (let index = 0; index < files.length; index++) {
345
+ const file = files[index];
346
+
347
+ const filePath = path.resolve(absolutePath, file);
348
+ const details = path.parse(filePath);
349
+
350
+ // It's important to indicate that the `stat` call was
351
+ // spawned by the directory listing, as Now is
352
+ // simulating those calls and needs to special-case this.
353
+ let stats = null;
354
+
355
+ if (methods.lstat) {
356
+ stats = await handlers.lstat(filePath, true);
357
+ } else {
358
+ stats = await handlers.lstat(filePath);
359
+ }
360
+
361
+ details.relative = path.join(relativePath, details.base);
362
+
363
+ if (stats.isDirectory()) {
364
+ details.base += slashSuffix;
365
+ details.relative += slashSuffix;
366
+ details.type = 'folder';
367
+ } else {
368
+ if (canRenderSingle) {
369
+ return {
370
+ singleFile: true,
371
+ absolutePath: filePath,
372
+ stats
373
+ };
374
+ }
375
+
376
+ details.ext = details.ext.split('.')[1] || 'txt';
377
+ details.type = 'file';
378
+
379
+ details.size = bytes(stats.size, {
380
+ unitSeparator: ' ',
381
+ decimalPlaces: 0
382
+ });
383
+ }
384
+
385
+ details.title = details.base;
386
+
387
+ if (canBeListed(excluded, file)) {
388
+ files[index] = details;
389
+ } else {
390
+ delete files[index];
391
+ }
392
+ }
393
+
394
+ const toRoot = path.relative(current, absolutePath);
395
+ const directory = path.join(path.basename(current), toRoot, slashSuffix);
396
+ const pathParts = directory.split(path.sep).filter(Boolean);
397
+
398
+ // Sort to list directories first, then sort alphabetically
399
+ files = files.sort((a, b) => {
400
+ const aIsDir = a.type === 'directory';
401
+ const bIsDir = b.type === 'directory';
402
+
403
+ /* istanbul ignore next */
404
+ if (aIsDir && !bIsDir) {
405
+ return -1;
406
+ }
407
+
408
+ if ((bIsDir && !aIsDir) || (a.base > b.base)) {
409
+ return 1;
410
+ }
411
+
412
+ /* istanbul ignore next */
413
+ if (a.base < b.base) {
414
+ return -1;
415
+ }
416
+
417
+ /* istanbul ignore next */
418
+ return 0;
419
+ }).filter(Boolean);
420
+
421
+ // Add parent directory to the head of the sorted files array
422
+ if (toRoot.length > 0) {
423
+ const directoryPath = [...pathParts].slice(1);
424
+ const relative = path.join('/', ...directoryPath, '..', slashSuffix);
425
+
426
+ files.unshift({
427
+ type: 'directory',
428
+ base: '..',
429
+ relative,
430
+ title: relative,
431
+ ext: ''
432
+ });
433
+ }
434
+
435
+ const subPaths = [];
436
+
437
+ for (let index = 0; index < pathParts.length; index++) {
438
+ const parents = [];
439
+ const isLast = index === (pathParts.length - 1);
440
+
441
+ let before = 0;
442
+
443
+ while (before <= index) {
444
+ parents.push(pathParts[before]);
445
+ before++;
446
+ }
447
+
448
+ parents.shift();
449
+
450
+ subPaths.push({
451
+ name: pathParts[index] + (isLast ? slashSuffix : '/'),
452
+ url: index === 0 ? '' : parents.join('/') + slashSuffix
453
+ });
454
+ }
455
+
456
+ const spec = {
457
+ files,
458
+ directory,
459
+ paths: subPaths
460
+ };
461
+
462
+ const output = acceptsJSON ? JSON.stringify(spec) : directoryTemplate(spec);
463
+
464
+ return {directory: output};
465
+ };
466
+
467
+ const sendError = async (absolutePath, response, acceptsJSON, current, handlers, config, spec) => {
468
+ const {err: original, message, code, statusCode} = spec;
469
+
470
+ /* istanbul ignore next */
471
+ if (original && process.env.NODE_ENV !== 'test') {
472
+ console.error(original);
473
+ }
474
+
475
+ response.statusCode = statusCode;
476
+
477
+ if (acceptsJSON) {
478
+ response.setHeader('Content-Type', 'application/json; charset=utf-8');
479
+
480
+ response.end(JSON.stringify({
481
+ error: {
482
+ code,
483
+ message
484
+ }
485
+ }));
486
+
487
+ return;
488
+ }
489
+
490
+ let stats = null;
491
+
492
+ const errorPage = path.join(current, `${statusCode}.html`);
493
+
494
+ try {
495
+ stats = await handlers.lstat(errorPage);
496
+ } catch (err) {
497
+ if (err.code !== 'ENOENT') {
498
+ console.error(err);
499
+ }
500
+ }
501
+
502
+ if (stats) {
503
+ let stream = null;
504
+
505
+ try {
506
+ stream = await handlers.createReadStream(errorPage);
507
+
508
+ const headers = await getHeaders(handlers, config, current, errorPage, stats);
509
+
510
+ response.writeHead(statusCode, headers);
511
+ stream.pipe(response);
512
+
513
+ return;
514
+ } catch (err) {
515
+ console.error(err);
516
+ }
517
+ }
518
+
519
+ const headers = await getHeaders(handlers, config, current, absolutePath, null);
520
+ headers['Content-Type'] = 'text/html; charset=utf-8';
521
+
522
+ response.writeHead(statusCode, headers);
523
+ response.end(errorTemplate({statusCode, message}));
524
+ };
525
+
526
+ const internalError = async (...args) => {
527
+ const lastIndex = args.length - 1;
528
+ const err = args[lastIndex];
529
+
530
+ args[lastIndex] = {
531
+ statusCode: 500,
532
+ code: 'internal_server_error',
533
+ message: 'A server error has occurred',
534
+ err
535
+ };
536
+
537
+ return sendError(...args);
538
+ };
539
+
540
+ const getHandlers = methods => Object.assign({
541
+ lstat: promisify(lstat),
542
+ realpath: promisify(realpath),
543
+ createReadStream,
544
+ readdir: promisify(readdir),
545
+ sendError
546
+ }, methods);
547
+
548
+ module.exports = async (request, response, config = {}, methods = {}) => {
549
+ const cwd = process.cwd();
550
+ const current = config.public ? path.resolve(cwd, config.public) : cwd;
551
+ const handlers = getHandlers(methods);
552
+
553
+ let relativePath = null;
554
+ let acceptsJSON = null;
555
+
556
+ if (request.headers.accept) {
557
+ acceptsJSON = request.headers.accept.includes('application/json');
558
+ }
559
+
560
+ try {
561
+ relativePath = decodeURIComponent(url.parse(request.url).pathname);
562
+ } catch (err) {
563
+ return sendError('/', response, acceptsJSON, current, handlers, config, {
564
+ statusCode: 400,
565
+ code: 'bad_request',
566
+ message: 'Bad Request'
567
+ });
568
+ }
569
+
570
+ let absolutePath = path.join(current, relativePath);
571
+
572
+ // Prevent path traversal vulnerabilities. We could do this
573
+ // by ourselves, but using the package covers all the edge cases.
574
+ if (!isPathInside(absolutePath, current)) {
575
+ return sendError(absolutePath, response, acceptsJSON, current, handlers, config, {
576
+ statusCode: 400,
577
+ code: 'bad_request',
578
+ message: 'Bad Request'
579
+ });
580
+ }
581
+
582
+ const cleanUrl = applicable(relativePath, config.cleanUrls);
583
+ const redirect = shouldRedirect(relativePath, config, cleanUrl);
584
+
585
+ if (redirect) {
586
+ response.writeHead(redirect.statusCode, {
587
+ Location: encodeURI(redirect.target)
588
+ });
589
+
590
+ response.end();
591
+ return;
592
+ }
593
+
594
+ let stats = null;
595
+
596
+ // It's extremely important that we're doing multiple stat calls. This one
597
+ // right here could technically be removed, but then the program
598
+ // would be slower. Because for directories, we always want to see if a related file
599
+ // exists and then (after that), fetch the directory itself if no
600
+ // related file was found. However (for files, of which most have extensions), we should
601
+ // always stat right away.
602
+ //
603
+ // When simulating a file system without directory indexes, calculating whether a
604
+ // directory exists requires loading all the file paths and then checking if
605
+ // one of them includes the path of the directory. As that's a very
606
+ // performance-expensive thing to do, we need to ensure it's not happening if not really necessary.
607
+
608
+ if (path.extname(relativePath) !== '') {
609
+ try {
610
+ stats = await handlers.lstat(absolutePath);
611
+ } catch (err) {
612
+ if (err.code !== 'ENOENT' && err.code !== 'ENOTDIR') {
613
+ return internalError(absolutePath, response, acceptsJSON, current, handlers, config, err);
614
+ }
615
+ }
616
+ }
617
+
618
+ const rewrittenPath = applyRewrites(relativePath, config.rewrites);
619
+
620
+ if (!stats && (cleanUrl || rewrittenPath)) {
621
+ try {
622
+ const related = await findRelated(current, relativePath, rewrittenPath, handlers.lstat);
623
+
624
+ if (related) {
625
+ ({stats, absolutePath} = related);
626
+ }
627
+ } catch (err) {
628
+ if (err.code !== 'ENOENT' && err.code !== 'ENOTDIR') {
629
+ return internalError(absolutePath, response, acceptsJSON, current, handlers, config, err);
630
+ }
631
+ }
632
+ }
633
+
634
+ if (!stats) {
635
+ try {
636
+ stats = await handlers.lstat(absolutePath);
637
+ } catch (err) {
638
+ if (err.code !== 'ENOENT' && err.code !== 'ENOTDIR') {
639
+ return internalError(absolutePath, response, acceptsJSON, current, handlers, config, err);
640
+ }
641
+ }
642
+ }
643
+
644
+ if (stats && stats.isDirectory()) {
645
+ let directory = null;
646
+ let singleFile = null;
647
+
648
+ try {
649
+ const related = await renderDirectory(current, acceptsJSON, handlers, methods, config, {
650
+ relativePath,
651
+ absolutePath
652
+ });
653
+
654
+ if (related.singleFile) {
655
+ ({stats, absolutePath, singleFile} = related);
656
+ } else {
657
+ ({directory} = related);
658
+ }
659
+ } catch (err) {
660
+ if (err.code !== 'ENOENT') {
661
+ return internalError(absolutePath, response, acceptsJSON, current, handlers, config, err);
662
+ }
663
+ }
664
+
665
+ if (directory) {
666
+ const contentType = acceptsJSON ? 'application/json; charset=utf-8' : 'text/html; charset=utf-8';
667
+
668
+ response.statusCode = 200;
669
+ response.setHeader('Content-Type', contentType);
670
+ response.end(directory);
671
+
672
+ return;
673
+ }
674
+
675
+ if (!singleFile) {
676
+ // The directory listing is disabled, so we want to
677
+ // render a 404 error.
678
+ stats = null;
679
+ }
680
+ }
681
+
682
+ const isSymLink = stats && stats.isSymbolicLink();
683
+
684
+ // There are two scenarios in which we want to reply with
685
+ // a 404 error: Either the path does not exist, or it is a
686
+ // symlink while the `symlinks` option is disabled (which it is by default).
687
+ if (!stats || (!config.symlinks && isSymLink)) {
688
+ // allow for custom 404 handling
689
+ return handlers.sendError(absolutePath, response, acceptsJSON, current, handlers, config, {
690
+ statusCode: 404,
691
+ code: 'not_found',
692
+ message: 'The requested path could not be found'
693
+ });
694
+ }
695
+
696
+ // If we figured out that the target is a symlink, we need to
697
+ // resolve the symlink and run a new `stat` call just for the
698
+ // target of that symlink.
699
+ if (isSymLink) {
700
+ try {
701
+ absolutePath = await handlers.realpath(absolutePath);
702
+ } catch (err) {
703
+ if (err.code !== 'ENOENT') {
704
+ throw err;
705
+ }
706
+
707
+ // The requested symlink is invalid
708
+ return handlers.sendError(absolutePath, response, acceptsJSON, current, handlers, config, {
709
+ statusCode: 404,
710
+ code: 'not_found',
711
+ message: 'The requested path could not be found'
712
+ });
713
+ }
714
+ stats = await handlers.lstat(absolutePath);
715
+ }
716
+
717
+ const streamOpts = {};
718
+
719
+ // TODO ? if-range
720
+ if (request.headers.range && stats.size) {
721
+ const range = parseRange(stats.size, request.headers.range);
722
+
723
+ if (typeof range === 'object' && range.type === 'bytes') {
724
+ const {start, end} = range[0];
725
+
726
+ streamOpts.start = start;
727
+ streamOpts.end = end;
728
+
729
+ response.statusCode = 206;
730
+ } else {
731
+ response.statusCode = 416;
732
+ response.setHeader('Content-Range', `bytes */${stats.size}`);
733
+ }
734
+ }
735
+
736
+ // TODO ? multiple ranges
737
+
738
+ let stream = null;
739
+
740
+ try {
741
+ stream = await handlers.createReadStream(absolutePath, streamOpts);
742
+ } catch (err) {
743
+ return internalError(absolutePath, response, acceptsJSON, current, handlers, config, err);
744
+ }
745
+
746
+ const headers = await getHeaders(handlers, config, current, absolutePath, stats);
747
+
748
+ // eslint-disable-next-line no-undefined
749
+ if (streamOpts.start !== undefined && streamOpts.end !== undefined) {
750
+ headers['Content-Range'] = `bytes ${streamOpts.start}-${streamOpts.end}/${stats.size}`;
751
+ headers['Content-Length'] = streamOpts.end - streamOpts.start + 1;
752
+ }
753
+
754
+ // We need to check for `headers.ETag` being truthy first, otherwise it will
755
+ // match `undefined` being equal to `undefined`, which is true.
756
+ //
757
+ // Checking for `undefined` and `null` is also important, because `Range` can be `0`.
758
+ //
759
+ // eslint-disable-next-line no-eq-null
760
+ if (request.headers.range == null && headers.ETag && headers.ETag === request.headers['if-none-match']) {
761
+ response.statusCode = 304;
762
+ response.end();
763
+
764
+ return;
765
+ }
766
+
767
+ response.writeHead(response.statusCode || 200, headers);
768
+ stream.pipe(response);
769
+ };