@ohos-ports/layer0-prefetch 4.20.0-beta.0 → 4.20.0-beta.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 (281) hide show
  1. package/node_modules/@layer0/core/README.md +50 -0
  2. package/node_modules/@layer0/core/build.d.ts +5 -0
  3. package/node_modules/@layer0/core/build.js +17 -0
  4. package/node_modules/@layer0/core/cache/Cache.d.ts +56 -0
  5. package/node_modules/@layer0/core/cache/Cache.js +138 -0
  6. package/node_modules/@layer0/core/cache/CacheKey.d.ts +52 -0
  7. package/node_modules/@layer0/core/cache/CacheKey.js +95 -0
  8. package/node_modules/@layer0/core/config.d.ts +53 -0
  9. package/node_modules/@layer0/core/config.js +113 -0
  10. package/node_modules/@layer0/core/constants.d.ts +214 -0
  11. package/node_modules/@layer0/core/constants.js +216 -0
  12. package/node_modules/@layer0/core/context.d.ts +38 -0
  13. package/node_modules/@layer0/core/context.js +98 -0
  14. package/node_modules/@layer0/core/default-app/all/layer0.config.js +60 -0
  15. package/node_modules/@layer0/core/default-app/js/routes.js +27 -0
  16. package/node_modules/@layer0/core/default-app/ts/routes.ts +27 -0
  17. package/node_modules/@layer0/core/deploy/DeploymentBuilder.d.ts +177 -0
  18. package/node_modules/@layer0/core/deploy/DeploymentBuilder.js +543 -0
  19. package/node_modules/@layer0/core/deploy/bundle-esbuild.d.ts +11 -0
  20. package/node_modules/@layer0/core/deploy/bundle-esbuild.js +67 -0
  21. package/node_modules/@layer0/core/deploy/bundle-ncc.d.ts +8 -0
  22. package/node_modules/@layer0/core/deploy/bundle-ncc.js +30 -0
  23. package/node_modules/@layer0/core/deploy/bundle-nft.d.ts +7 -0
  24. package/node_modules/@layer0/core/deploy/bundle-nft.js +41 -0
  25. package/node_modules/@layer0/core/deploy/bundle-webpack.d.ts +11 -0
  26. package/node_modules/@layer0/core/deploy/bundle-webpack.js +127 -0
  27. package/node_modules/@layer0/core/deploy/index.d.ts +19 -0
  28. package/node_modules/@layer0/core/deploy/index.js +6 -0
  29. package/node_modules/@layer0/core/deploy/listSources.d.ts +11 -0
  30. package/node_modules/@layer0/core/deploy/listSources.js +18 -0
  31. package/node_modules/@layer0/core/deploy/paths.d.ts +27 -0
  32. package/node_modules/@layer0/core/deploy/paths.js +33 -0
  33. package/node_modules/@layer0/core/deploy/resolveInPackage.d.ts +7 -0
  34. package/node_modules/@layer0/core/deploy/resolveInPackage.js +21 -0
  35. package/node_modules/@layer0/core/deploy/routeToFiles.d.ts +14 -0
  36. package/node_modules/@layer0/core/deploy/routeToFiles.js +24 -0
  37. package/node_modules/@layer0/core/dev/DevServerOptions.d.ts +33 -0
  38. package/node_modules/@layer0/core/dev/DevServerOptions.js +2 -0
  39. package/node_modules/@layer0/core/dev/createDevServer.d.ts +8 -0
  40. package/node_modules/@layer0/core/dev/createDevServer.js +114 -0
  41. package/node_modules/@layer0/core/dev/index.d.ts +3 -0
  42. package/node_modules/@layer0/core/dev/index.js +6 -0
  43. package/node_modules/@layer0/core/dev/runLocalApp.d.ts +8 -0
  44. package/node_modules/@layer0/core/dev/runLocalApp.js +73 -0
  45. package/node_modules/@layer0/core/dev/serverlessCompatibilityMiddleware.d.ts +11 -0
  46. package/node_modules/@layer0/core/dev/serverlessCompatibilityMiddleware.js +30 -0
  47. package/node_modules/@layer0/core/edge/EdgeErrorPageResponseWriter.d.ts +12 -0
  48. package/node_modules/@layer0/core/edge/EdgeErrorPageResponseWriter.js +22 -0
  49. package/node_modules/@layer0/core/edge/EdgeResponseWriter.d.ts +122 -0
  50. package/node_modules/@layer0/core/edge/EdgeResponseWriter.js +451 -0
  51. package/node_modules/@layer0/core/edge/createEdgeConfig.d.ts +16 -0
  52. package/node_modules/@layer0/core/edge/createEdgeConfig.js +284 -0
  53. package/node_modules/@layer0/core/environment.d.ts +24 -0
  54. package/node_modules/@layer0/core/environment.js +42 -0
  55. package/node_modules/@layer0/core/errors/BackendFetchError.d.ts +11 -0
  56. package/node_modules/@layer0/core/errors/BackendFetchError.js +17 -0
  57. package/node_modules/@layer0/core/errors/FrameworkBuildError.d.ts +7 -0
  58. package/node_modules/@layer0/core/errors/FrameworkBuildError.js +26 -0
  59. package/node_modules/@layer0/core/index.d.ts +3 -0
  60. package/node_modules/@layer0/core/index.js +9 -0
  61. package/node_modules/@layer0/core/init/addToPackageJson.d.ts +7 -0
  62. package/node_modules/@layer0/core/init/addToPackageJson.js +22 -0
  63. package/node_modules/@layer0/core/init/index.d.ts +2 -0
  64. package/node_modules/@layer0/core/init/index.js +6 -0
  65. package/node_modules/@layer0/core/init/init.d.ts +5 -0
  66. package/node_modules/@layer0/core/init/init.js +17 -0
  67. package/node_modules/@layer0/core/lambda/JSBackend.d.ts +30 -0
  68. package/node_modules/@layer0/core/lambda/JSBackend.js +51 -0
  69. package/node_modules/@layer0/core/lambda/RequestListenerJSBackend.d.ts +8 -0
  70. package/node_modules/@layer0/core/lambda/RequestListenerJSBackend.js +19 -0
  71. package/node_modules/@layer0/core/lambda/adaptResponseEncodingToDownstream.d.ts +17 -0
  72. package/node_modules/@layer0/core/lambda/adaptResponseEncodingToDownstream.js +132 -0
  73. package/node_modules/@layer0/core/lambda/consoleWrapper.d.ts +16 -0
  74. package/node_modules/@layer0/core/lambda/consoleWrapper.js +127 -0
  75. package/node_modules/@layer0/core/lambda/getBodyLoggingData.d.ts +10 -0
  76. package/node_modules/@layer0/core/lambda/getBodyLoggingData.js +108 -0
  77. package/node_modules/@layer0/core/lambda/handler.d.ts +1 -0
  78. package/node_modules/@layer0/core/lambda/handler.js +91 -0
  79. package/node_modules/@layer0/core/lambda/handler.js.map +7 -0
  80. package/node_modules/@layer0/core/lambda/innerHandler.d.ts +7 -0
  81. package/node_modules/@layer0/core/lambda/innerHandler.js +181 -0
  82. package/node_modules/@layer0/core/lambda/lambdaInstance.d.ts +29 -0
  83. package/node_modules/@layer0/core/lambda/lambdaInstance.js +71 -0
  84. package/node_modules/@layer0/core/lambda/reqResMapper.d.ts +24 -0
  85. package/node_modules/@layer0/core/lambda/reqResMapper.js +286 -0
  86. package/node_modules/@layer0/core/lambda/stdStreamsWrapper.d.ts +31 -0
  87. package/node_modules/@layer0/core/lambda/stdStreamsWrapper.js +196 -0
  88. package/node_modules/@layer0/core/lambda/toJSBackend.d.ts +10 -0
  89. package/node_modules/@layer0/core/lambda/toJSBackend.js +23 -0
  90. package/node_modules/@layer0/core/node_modules/esbuild/LICENSE.md +21 -0
  91. package/node_modules/@layer0/core/node_modules/esbuild/README.md +3 -0
  92. package/node_modules/@layer0/core/node_modules/esbuild/bin/esbuild +223 -0
  93. package/node_modules/@layer0/core/node_modules/esbuild/install.js +301 -0
  94. package/node_modules/@layer0/core/node_modules/esbuild/lib/main.d.ts +716 -0
  95. package/node_modules/@layer0/core/node_modules/esbuild/lib/main.js +2532 -0
  96. package/node_modules/@layer0/core/node_modules/esbuild/node_modules/@ohos-ports/esbuild-openharmony-arm64/README.md +3 -0
  97. package/node_modules/@layer0/core/node_modules/esbuild/node_modules/@ohos-ports/esbuild-openharmony-arm64/bin/esbuild +0 -0
  98. package/node_modules/@layer0/core/node_modules/esbuild/node_modules/@ohos-ports/esbuild-openharmony-arm64/esbuild.wasm +0 -0
  99. package/node_modules/@layer0/core/node_modules/esbuild/node_modules/@ohos-ports/esbuild-openharmony-arm64/package.json +28 -0
  100. package/node_modules/@layer0/core/node_modules/esbuild/node_modules/@ohos-ports/esbuild-openharmony-arm64/wasm_exec.js +575 -0
  101. package/node_modules/@layer0/core/node_modules/esbuild/node_modules/@ohos-ports/esbuild-openharmony-arm64/wasm_exec_node.js +40 -0
  102. package/node_modules/@layer0/core/node_modules/esbuild/package.json +78 -0
  103. package/node_modules/@layer0/core/package.json +132 -0
  104. package/node_modules/@layer0/core/parser/parseRouter.d.ts +13 -0
  105. package/node_modules/@layer0/core/parser/parseRouter.js +77 -0
  106. package/node_modules/@layer0/core/plugins/PluginBase.d.ts +18 -0
  107. package/node_modules/@layer0/core/plugins/PluginBase.js +19 -0
  108. package/node_modules/@layer0/core/router/Backend.d.ts +69 -0
  109. package/node_modules/@layer0/core/router/Backend.js +176 -0
  110. package/node_modules/@layer0/core/router/BackendOptions.d.ts +11 -0
  111. package/node_modules/@layer0/core/router/BackendOptions.js +2 -0
  112. package/node_modules/@layer0/core/router/BaseResponseWriter.d.ts +65 -0
  113. package/node_modules/@layer0/core/router/BaseResponseWriter.js +81 -0
  114. package/node_modules/@layer0/core/router/BehindEdgeResponseWriterProxy.d.ts +4 -0
  115. package/node_modules/@layer0/core/router/BehindEdgeResponseWriterProxy.js +89 -0
  116. package/node_modules/@layer0/core/router/CacheManifest.d.ts +80 -0
  117. package/node_modules/@layer0/core/router/CacheManifest.js +83 -0
  118. package/node_modules/@layer0/core/router/CacheOptions.d.ts +171 -0
  119. package/node_modules/@layer0/core/router/CacheOptions.js +2 -0
  120. package/node_modules/@layer0/core/router/CustomCacheKey.d.ts +140 -0
  121. package/node_modules/@layer0/core/router/CustomCacheKey.js +272 -0
  122. package/node_modules/@layer0/core/router/GroupConfig.d.ts +7 -0
  123. package/node_modules/@layer0/core/router/GroupConfig.js +20 -0
  124. package/node_modules/@layer0/core/router/Groups.d.ts +7 -0
  125. package/node_modules/@layer0/core/router/Groups.js +21 -0
  126. package/node_modules/@layer0/core/router/Headers.d.ts +3 -0
  127. package/node_modules/@layer0/core/router/Headers.js +2 -0
  128. package/node_modules/@layer0/core/router/PathMatcher.d.ts +51 -0
  129. package/node_modules/@layer0/core/router/PathMatcher.js +73 -0
  130. package/node_modules/@layer0/core/router/Preload.d.ts +16 -0
  131. package/node_modules/@layer0/core/router/Preload.js +2 -0
  132. package/node_modules/@layer0/core/router/PreloadRequests.d.ts +23 -0
  133. package/node_modules/@layer0/core/router/PreloadRequests.js +66 -0
  134. package/node_modules/@layer0/core/router/Request.d.ts +74 -0
  135. package/node_modules/@layer0/core/router/Request.js +2 -0
  136. package/node_modules/@layer0/core/router/RequestContext.d.ts +12 -0
  137. package/node_modules/@layer0/core/router/RequestContext.js +11 -0
  138. package/node_modules/@layer0/core/router/Response.d.ts +55 -0
  139. package/node_modules/@layer0/core/router/Response.js +2 -0
  140. package/node_modules/@layer0/core/router/ResponseWriter.d.ts +1011 -0
  141. package/node_modules/@layer0/core/router/ResponseWriter.js +1341 -0
  142. package/node_modules/@layer0/core/router/Route.d.ts +124 -0
  143. package/node_modules/@layer0/core/router/Route.js +280 -0
  144. package/node_modules/@layer0/core/router/RouteCriteria.d.ts +68 -0
  145. package/node_modules/@layer0/core/router/RouteCriteria.js +2 -0
  146. package/node_modules/@layer0/core/router/RouteGroup.d.ts +157 -0
  147. package/node_modules/@layer0/core/router/RouteGroup.js +223 -0
  148. package/node_modules/@layer0/core/router/RouteGroupList.d.ts +45 -0
  149. package/node_modules/@layer0/core/router/RouteGroupList.js +73 -0
  150. package/node_modules/@layer0/core/router/Router.d.ts +439 -0
  151. package/node_modules/@layer0/core/router/Router.js +907 -0
  152. package/node_modules/@layer0/core/router/addBuiltInRoutes.d.ts +2 -0
  153. package/node_modules/@layer0/core/router/addBuiltInRoutes.js +58 -0
  154. package/node_modules/@layer0/core/router/addPreloadHeaders.d.ts +7 -0
  155. package/node_modules/@layer0/core/router/addPreloadHeaders.js +57 -0
  156. package/node_modules/@layer0/core/router/cacheManifestFromRouter.d.ts +6 -0
  157. package/node_modules/@layer0/core/router/cacheManifestFromRouter.js +85 -0
  158. package/node_modules/@layer0/core/router/createCustomCacheKey.d.ts +27 -0
  159. package/node_modules/@layer0/core/router/createCustomCacheKey.js +35 -0
  160. package/node_modules/@layer0/core/router/deriveSurrogateKeysFromJson.d.ts +36 -0
  161. package/node_modules/@layer0/core/router/deriveSurrogateKeysFromJson.js +70 -0
  162. package/node_modules/@layer0/core/router/index.d.ts +11 -0
  163. package/node_modules/@layer0/core/router/index.js +17 -0
  164. package/node_modules/@layer0/core/router/interpolateParams.d.ts +21 -0
  165. package/node_modules/@layer0/core/router/interpolateParams.js +150 -0
  166. package/node_modules/@layer0/core/router/loadRouter.d.ts +13 -0
  167. package/node_modules/@layer0/core/router/loadRouter.js +29 -0
  168. package/node_modules/@layer0/core/router/mergeQueryString.d.ts +1 -0
  169. package/node_modules/@layer0/core/router/mergeQueryString.js +23 -0
  170. package/node_modules/@layer0/core/router/normalizeCriteria.d.ts +6 -0
  171. package/node_modules/@layer0/core/router/normalizeCriteria.js +20 -0
  172. package/node_modules/@layer0/core/router/stream.d.ts +12 -0
  173. package/node_modules/@layer0/core/router/stream.js +30 -0
  174. package/node_modules/@layer0/core/router/universalRouteUtils.d.ts +55 -0
  175. package/node_modules/@layer0/core/router/universalRouteUtils.js +114 -0
  176. package/node_modules/@layer0/core/router/validateWriter.d.ts +41 -0
  177. package/node_modules/@layer0/core/router/validateWriter.js +120 -0
  178. package/node_modules/@layer0/core/serverless.yml +30 -0
  179. package/node_modules/@layer0/core/source.d.ts +9 -0
  180. package/node_modules/@layer0/core/source.js +17 -0
  181. package/node_modules/@layer0/core/test-utils/MockRequest.d.ts +15 -0
  182. package/node_modules/@layer0/core/test-utils/MockRequest.js +36 -0
  183. package/node_modules/@layer0/core/test-utils/MockResponse.d.ts +7 -0
  184. package/node_modules/@layer0/core/test-utils/MockResponse.js +24 -0
  185. package/node_modules/@layer0/core/test-utils/expect-extend.d.ts +1 -0
  186. package/node_modules/@layer0/core/test-utils/expect-extend.js +11 -0
  187. package/node_modules/@layer0/core/test-utils/index.d.ts +4 -0
  188. package/node_modules/@layer0/core/test-utils/index.js +11 -0
  189. package/node_modules/@layer0/core/test-utils/matchers/toBeCachedByTheBrowser.d.ts +19 -0
  190. package/node_modules/@layer0/core/test-utils/matchers/toBeCachedByTheBrowser.js +45 -0
  191. package/node_modules/@layer0/core/test-utils/matchers/toBeCachedByTheEdge.d.ts +19 -0
  192. package/node_modules/@layer0/core/test-utils/matchers/toBeCachedByTheEdge.js +38 -0
  193. package/node_modules/@layer0/core/test-utils/matchers/toBeCachedByTheServiceWorker.d.ts +19 -0
  194. package/node_modules/@layer0/core/test-utils/matchers/toBeCachedByTheServiceWorker.js +45 -0
  195. package/node_modules/@layer0/core/test-utils/matchers/toBeServedStale.d.ts +20 -0
  196. package/node_modules/@layer0/core/test-utils/matchers/toBeServedStale.js +50 -0
  197. package/node_modules/@layer0/core/test-utils/matchers/toHaveBody.d.ts +18 -0
  198. package/node_modules/@layer0/core/test-utils/matchers/toHaveBody.js +40 -0
  199. package/node_modules/@layer0/core/test-utils/matchers/toHaveHeader.d.ts +19 -0
  200. package/node_modules/@layer0/core/test-utils/matchers/toHaveHeader.js +43 -0
  201. package/node_modules/@layer0/core/test-utils/matchers.d.ts +6 -0
  202. package/node_modules/@layer0/core/test-utils/matchers.js +18 -0
  203. package/node_modules/@layer0/core/test-utils/utils/createRouteMock.d.ts +21 -0
  204. package/node_modules/@layer0/core/test-utils/utils/createRouteMock.js +27 -0
  205. package/node_modules/@layer0/core/test-utils/utils/getBackend.d.ts +13 -0
  206. package/node_modules/@layer0/core/test-utils/utils/getBackend.js +30 -0
  207. package/node_modules/@layer0/core/test-utils/utils/getMessage.d.ts +1 -0
  208. package/node_modules/@layer0/core/test-utils/utils/getMessage.js +16 -0
  209. package/node_modules/@layer0/core/test-utils/utils/runRoute.d.ts +10 -0
  210. package/node_modules/@layer0/core/test-utils/utils/runRoute.js +39 -0
  211. package/node_modules/@layer0/core/timing.d.ts +115 -0
  212. package/node_modules/@layer0/core/timing.js +200 -0
  213. package/node_modules/@layer0/core/transform/index.d.ts +1 -0
  214. package/node_modules/@layer0/core/transform/index.js +4 -0
  215. package/node_modules/@layer0/core/transform/transformMethod.d.ts +40 -0
  216. package/node_modules/@layer0/core/transform/transformMethod.js +58 -0
  217. package/node_modules/@layer0/core/types.d.ts +102 -0
  218. package/node_modules/@layer0/core/types.js +30 -0
  219. package/node_modules/@layer0/core/utils/Tasks.d.ts +32 -0
  220. package/node_modules/@layer0/core/utils/Tasks.js +80 -0
  221. package/node_modules/@layer0/core/utils/Validator.d.ts +18 -0
  222. package/node_modules/@layer0/core/utils/Validator.js +178 -0
  223. package/node_modules/@layer0/core/utils/bindParamsToPath.d.ts +15 -0
  224. package/node_modules/@layer0/core/utils/bindParamsToPath.js +49 -0
  225. package/node_modules/@layer0/core/utils/convertParamsToBackReferences.d.ts +16 -0
  226. package/node_modules/@layer0/core/utils/convertParamsToBackReferences.js +45 -0
  227. package/node_modules/@layer0/core/utils/convertStringMatcherToRegex.d.ts +7 -0
  228. package/node_modules/@layer0/core/utils/convertStringMatcherToRegex.js +26 -0
  229. package/node_modules/@layer0/core/utils/decode.d.ts +9 -0
  230. package/node_modules/@layer0/core/utils/decode.js +44 -0
  231. package/node_modules/@layer0/core/utils/esImport.d.ts +1 -0
  232. package/node_modules/@layer0/core/utils/esImport.js +9 -0
  233. package/node_modules/@layer0/core/utils/fs.d.ts +1 -0
  234. package/node_modules/@layer0/core/utils/fs.js +7 -0
  235. package/node_modules/@layer0/core/utils/get.d.ts +6 -0
  236. package/node_modules/@layer0/core/utils/get.js +19 -0
  237. package/node_modules/@layer0/core/utils/getPackageVersion.d.ts +7 -0
  238. package/node_modules/@layer0/core/utils/getPackageVersion.js +19 -0
  239. package/node_modules/@layer0/core/utils/has.d.ts +6 -0
  240. package/node_modules/@layer0/core/utils/has.js +15 -0
  241. package/node_modules/@layer0/core/utils/identity.d.ts +7 -0
  242. package/node_modules/@layer0/core/utils/identity.js +12 -0
  243. package/node_modules/@layer0/core/utils/index.d.ts +1 -0
  244. package/node_modules/@layer0/core/utils/index.js +4 -0
  245. package/node_modules/@layer0/core/utils/isEmpty.d.ts +6 -0
  246. package/node_modules/@layer0/core/utils/isEmpty.js +20 -0
  247. package/node_modules/@layer0/core/utils/isString.d.ts +1 -0
  248. package/node_modules/@layer0/core/utils/isString.js +6 -0
  249. package/node_modules/@layer0/core/utils/logo.d.ts +5 -0
  250. package/node_modules/@layer0/core/utils/logo.js +27 -0
  251. package/node_modules/@layer0/core/utils/mapValues.d.ts +7 -0
  252. package/node_modules/@layer0/core/utils/mapValues.js +16 -0
  253. package/node_modules/@layer0/core/utils/minBy.d.ts +8 -0
  254. package/node_modules/@layer0/core/utils/minBy.js +41 -0
  255. package/node_modules/@layer0/core/utils/nonWebpackRequire.d.ts +11 -0
  256. package/node_modules/@layer0/core/utils/nonWebpackRequire.js +28 -0
  257. package/node_modules/@layer0/core/utils/packageUtils.d.ts +12 -0
  258. package/node_modules/@layer0/core/utils/packageUtils.js +22 -0
  259. package/node_modules/@layer0/core/utils/ports.d.ts +5 -0
  260. package/node_modules/@layer0/core/utils/ports.js +7 -0
  261. package/node_modules/@layer0/core/utils/readBody.d.ts +7 -0
  262. package/node_modules/@layer0/core/utils/readBody.js +15 -0
  263. package/node_modules/@layer0/core/utils/readRawBody.d.ts +9 -0
  264. package/node_modules/@layer0/core/utils/readRawBody.js +21 -0
  265. package/node_modules/@layer0/core/utils/regExpEscape.d.ts +12 -0
  266. package/node_modules/@layer0/core/utils/regExpEscape.js +20 -0
  267. package/node_modules/@layer0/core/utils/requireInternal.d.ts +7 -0
  268. package/node_modules/@layer0/core/utils/requireInternal.js +24 -0
  269. package/node_modules/@layer0/core/utils/set.d.ts +10 -0
  270. package/node_modules/@layer0/core/utils/set.js +21 -0
  271. package/node_modules/@layer0/core/utils/toEdgeRegex.d.ts +11 -0
  272. package/node_modules/@layer0/core/utils/toEdgeRegex.js +23 -0
  273. package/node_modules/@layer0/core/utils/toHttpMethodMatchRegex.d.ts +12 -0
  274. package/node_modules/@layer0/core/utils/toHttpMethodMatchRegex.js +17 -0
  275. package/node_modules/@layer0/core/utils/toLower.d.ts +1 -0
  276. package/node_modules/@layer0/core/utils/toLower.js +9 -0
  277. package/node_modules/@layer0/core/utils/validateBackends.d.ts +5 -0
  278. package/node_modules/@layer0/core/utils/validateBackends.js +30 -0
  279. package/node_modules/@layer0/core/utils/watch.d.ts +10 -0
  280. package/node_modules/@layer0/core/utils/watch.js +17 -0
  281. package/package.json +47 -3
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../node_modules/uuid/dist/rng.js", "../../node_modules/uuid/dist/regex.js", "../../node_modules/uuid/dist/validate.js", "../../node_modules/uuid/dist/stringify.js", "../../node_modules/uuid/dist/v1.js", "../../node_modules/uuid/dist/parse.js", "../../node_modules/uuid/dist/v35.js", "../../node_modules/uuid/dist/md5.js", "../../node_modules/uuid/dist/v3.js", "../../node_modules/uuid/dist/v4.js", "../../node_modules/uuid/dist/sha1.js", "../../node_modules/uuid/dist/v5.js", "../../node_modules/uuid/dist/nil.js", "../../node_modules/uuid/dist/version.js", "../../node_modules/uuid/dist/index.js", "../../node_modules/uuid/wrapper.mjs", "../../src/lambda/lambdaInstance.ts", "../../node_modules/pino-std-serializers/lib/err.js", "../../node_modules/pino-std-serializers/lib/req.js", "../../node_modules/pino-std-serializers/lib/res.js", "../../node_modules/pino-std-serializers/index.js", "../../node_modules/fast-redact/lib/validator.js", "../../node_modules/fast-redact/lib/rx.js", "../../node_modules/fast-redact/lib/parse.js", "../../node_modules/fast-redact/lib/redactor.js", "../../node_modules/fast-redact/lib/modifiers.js", "../../node_modules/fast-redact/lib/restorer.js", "../../node_modules/fast-redact/lib/state.js", "../../node_modules/fast-redact/index.js", "../../node_modules/pino/lib/symbols.js", "../../node_modules/pino/lib/redaction.js", "../../node_modules/pino/lib/time.js", "../../node_modules/flatstr/index.js", "../../node_modules/atomic-sleep/index.js", "../../node_modules/sonic-boom/index.js", "../../node_modules/fastify-warning/index.js", "../../node_modules/pino/lib/deprecations.js", "../../node_modules/quick-format-unescaped/index.js", "../../node_modules/fast-safe-stringify/index.js", "../../node_modules/pino/lib/tools.js", "../../node_modules/pino/lib/levels.js", "../../node_modules/pino/lib/meta.js", "../../node_modules/pino/lib/proto.js", "../../node_modules/pino/pino.js", "../../src/lambda/consoleWrapper.ts", "../../src/constants.ts", "../../src/environment.ts", "../../src/lambda/stdStreamsWrapper.ts", "../../src/lambda/getBodyLoggingData.ts", "../../src/lambda/httpRequestInterceptor.js", "../../node_modules/universalify/index.js", "../../node_modules/graceful-fs/polyfills.js", "../../node_modules/graceful-fs/legacy-streams.js", "../../node_modules/graceful-fs/clone.js", "../../node_modules/graceful-fs/graceful-fs.js", "../../node_modules/fs-extra/lib/fs/index.js", "../../node_modules/fs-extra/lib/mkdirs/win32.js", "../../node_modules/fs-extra/lib/mkdirs/mkdirs.js", "../../node_modules/fs-extra/lib/mkdirs/mkdirs-sync.js", "../../node_modules/fs-extra/lib/mkdirs/index.js", "../../node_modules/fs-extra/lib/util/utimes.js", "../../node_modules/fs-extra/lib/util/stat.js", "../../node_modules/fs-extra/lib/util/buffer.js", "../../node_modules/fs-extra/lib/copy-sync/copy-sync.js", "../../node_modules/fs-extra/lib/copy-sync/index.js", "../../node_modules/fs-extra/lib/path-exists/index.js", "../../node_modules/fs-extra/lib/copy/copy.js", "../../node_modules/fs-extra/lib/copy/index.js", "../../node_modules/fs-extra/lib/remove/rimraf.js", "../../node_modules/fs-extra/lib/remove/index.js", "../../node_modules/fs-extra/lib/empty/index.js", "../../node_modules/fs-extra/lib/ensure/file.js", "../../node_modules/fs-extra/lib/ensure/link.js", "../../node_modules/fs-extra/lib/ensure/symlink-paths.js", "../../node_modules/fs-extra/lib/ensure/symlink-type.js", "../../node_modules/fs-extra/lib/ensure/symlink.js", "../../node_modules/fs-extra/lib/ensure/index.js", "../../node_modules/jsonfile/index.js", "../../node_modules/fs-extra/lib/json/jsonfile.js", "../../node_modules/fs-extra/lib/json/output-json.js", "../../node_modules/fs-extra/lib/json/output-json-sync.js", "../../node_modules/fs-extra/lib/json/index.js", "../../node_modules/fs-extra/lib/move-sync/move-sync.js", "../../node_modules/fs-extra/lib/move-sync/index.js", "../../node_modules/fs-extra/lib/move/move.js", "../../node_modules/fs-extra/lib/move/index.js", "../../node_modules/fs-extra/lib/output/index.js", "../../node_modules/fs-extra/lib/index.js", "../../src/deploy/paths.ts", "../../node_modules/slash/index.js", "../../src/utils/nonWebpackRequire.ts", "../../src/context.ts", "../../src/timing.ts", "../../src/router/loadRouter.ts", "../../node_modules/has-symbols/shams.js", "../../node_modules/has-symbols/index.js", "../../node_modules/function-bind/implementation.js", "../../node_modules/function-bind/index.js", "../../node_modules/has/src/index.js", "../../node_modules/get-intrinsic/index.js", "../../node_modules/call-bind/index.js", "../../node_modules/call-bind/callBound.js", "../../node_modules/object-inspect/util.inspect.js", "../../node_modules/object-inspect/index.js", "../../node_modules/side-channel/index.js", "../../node_modules/qs/lib/formats.js", "../../node_modules/qs/lib/utils.js", "../../node_modules/qs/lib/stringify.js", "../../node_modules/qs/lib/parse.js", "../../node_modules/qs/lib/index.js", "../../node_modules/content-type/index.js", "../../src/utils/isEmpty.ts", "../../src/utils/isString.ts", "../../src/utils/decode.ts", "../../src/lambda/adaptResponseEncodingToDownstream.ts", "../../src/lambda/reqResMapper.ts", "../../src/utils/get.ts", "../../src/utils/has.ts", "../../node_modules/deepmerge/dist/cjs.js", "../../src/utils/Validator.ts", "../../src/config.ts", "../../src/lambda/innerHandler.ts", "../../src/lambda/handler.ts"],
4
+ "sourcesContent": ["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\n\nfunction rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n _crypto.default.randomFillSync(rnds8Pool);\n\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.default)(b);\n}\n\nvar _default = v1;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.URL = exports.DNS = void 0;\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction _default(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.default)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction md5(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('md5').update(bytes).digest();\n}\n\nvar _default = md5;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.default)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sha1(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('sha1').update(bytes).digest();\n}\n\nvar _default = sha1;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nvar _default = version;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function () {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _version.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function () {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function () {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function () {\n return _parse.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }", "import uuid from './dist/index.js';\nexport const v1 = uuid.v1;\nexport const v3 = uuid.v3;\nexport const v4 = uuid.v4;\nexport const v5 = uuid.v5;\nexport const NIL = uuid.NIL;\nexport const version = uuid.version;\nexport const validate = uuid.validate;\nexport const stringify = uuid.stringify;\nexport const parse = uuid.parse;\n", "import * as uuid from 'uuid'\n\n/**\n * Objects of this class represent a single instantiation of an AWS Lambda function.\n */\nexport default class LambdaInstance {\n private readonly _id = uuid.v4().toString()\n private readonly _spawnedAt = Date.now()\n private _invocationCounter = 0\n private _lifetimeDuration = 0\n\n public get id() {\n return this._id\n }\n\n public get age() {\n return Date.now() - this._spawnedAt\n }\n\n public get invocationCounter() {\n return this._invocationCounter\n }\n\n public get lifetimeDuration() {\n return this._lifetimeDuration\n }\n\n public startInvocation() {\n ++this._invocationCounter\n }\n\n public stopInvocation(duration: number) {\n this._lifetimeDuration += duration\n }\n}\n\n/**\n * Objects of this class represent a single invocation of an AWS Lambda function.\n */\nexport class LambdaInvocation {\n private readonly _startTime = Date.now()\n private _stopTime: number\n private readonly _lambda: LambdaInstance\n private _isRunning = false\n\n public get lambda() {\n return this._lambda\n }\n\n public get duration() {\n return this._stopTime - this._startTime\n }\n\n constructor(lambda: LambdaInstance) {\n this._lambda = lambda\n this._stopTime = this._startTime\n }\n\n start() {\n if (!this._isRunning) {\n this._isRunning = true\n this._lambda.startInvocation()\n }\n }\n\n stop() {\n if (this._isRunning) {\n this._isRunning = false\n this._stopTime = Date.now()\n this._lambda.stopInvocation(this.duration)\n }\n }\n}\n", "'use strict'\n\nmodule.exports = errSerializer\n\nconst { toString } = Object.prototype\nconst seen = Symbol('circular-ref-tag')\nconst rawSymbol = Symbol('pino-raw-err-ref')\nconst pinoErrProto = Object.create({}, {\n type: {\n enumerable: true,\n writable: true,\n value: undefined\n },\n message: {\n enumerable: true,\n writable: true,\n value: undefined\n },\n stack: {\n enumerable: true,\n writable: true,\n value: undefined\n },\n raw: {\n enumerable: false,\n get: function () {\n return this[rawSymbol]\n },\n set: function (val) {\n this[rawSymbol] = val\n }\n }\n})\nObject.defineProperty(pinoErrProto, rawSymbol, {\n writable: true,\n value: {}\n})\n\nfunction errSerializer (err) {\n if (!(err instanceof Error)) {\n return err\n }\n\n err[seen] = undefined // tag to prevent re-looking at this\n const _err = Object.create(pinoErrProto)\n _err.type = toString.call(err.constructor) === '[object Function]'\n ? err.constructor.name\n : err.name\n _err.message = err.message\n _err.stack = err.stack\n for (const key in err) {\n if (_err[key] === undefined) {\n const val = err[key]\n if (val instanceof Error) {\n /* eslint-disable no-prototype-builtins */\n if (!val.hasOwnProperty(seen)) {\n _err[key] = errSerializer(val)\n }\n } else {\n _err[key] = val\n }\n }\n }\n\n delete err[seen] // clean up tag in case err is serialized again later\n _err.raw = err\n return _err\n}\n", "'use strict'\n\nmodule.exports = {\n mapHttpRequest,\n reqSerializer\n}\n\nconst rawSymbol = Symbol('pino-raw-req-ref')\nconst pinoReqProto = Object.create({}, {\n id: {\n enumerable: true,\n writable: true,\n value: ''\n },\n method: {\n enumerable: true,\n writable: true,\n value: ''\n },\n url: {\n enumerable: true,\n writable: true,\n value: ''\n },\n query: {\n enumerable: true,\n writable: true,\n value: ''\n },\n params: {\n enumerable: true,\n writable: true,\n value: ''\n },\n headers: {\n enumerable: true,\n writable: true,\n value: {}\n },\n remoteAddress: {\n enumerable: true,\n writable: true,\n value: ''\n },\n remotePort: {\n enumerable: true,\n writable: true,\n value: ''\n },\n raw: {\n enumerable: false,\n get: function () {\n return this[rawSymbol]\n },\n set: function (val) {\n this[rawSymbol] = val\n }\n }\n})\nObject.defineProperty(pinoReqProto, rawSymbol, {\n writable: true,\n value: {}\n})\n\nfunction reqSerializer (req) {\n // req.info is for hapi compat.\n const connection = req.info || req.socket\n const _req = Object.create(pinoReqProto)\n _req.id = (typeof req.id === 'function' ? req.id() : (req.id || (req.info ? req.info.id : undefined)))\n _req.method = req.method\n // req.originalUrl is for expressjs compat.\n if (req.originalUrl) {\n _req.url = req.originalUrl\n _req.query = req.query\n _req.params = req.params\n } else {\n // req.url.path is for hapi compat.\n _req.url = req.path || (req.url ? (req.url.path || req.url) : undefined)\n }\n _req.headers = req.headers\n _req.remoteAddress = connection && connection.remoteAddress\n _req.remotePort = connection && connection.remotePort\n // req.raw is for hapi compat/equivalence\n _req.raw = req.raw || req\n return _req\n}\n\nfunction mapHttpRequest (req) {\n return {\n req: reqSerializer(req)\n }\n}\n", "'use strict'\n\nmodule.exports = {\n mapHttpResponse,\n resSerializer\n}\n\nconst rawSymbol = Symbol('pino-raw-res-ref')\nconst pinoResProto = Object.create({}, {\n statusCode: {\n enumerable: true,\n writable: true,\n value: 0\n },\n headers: {\n enumerable: true,\n writable: true,\n value: ''\n },\n raw: {\n enumerable: false,\n get: function () {\n return this[rawSymbol]\n },\n set: function (val) {\n this[rawSymbol] = val\n }\n }\n})\nObject.defineProperty(pinoResProto, rawSymbol, {\n writable: true,\n value: {}\n})\n\nfunction resSerializer (res) {\n const _res = Object.create(pinoResProto)\n _res.statusCode = res.statusCode\n _res.headers = res.getHeaders ? res.getHeaders() : res._headers\n _res.raw = res\n return _res\n}\n\nfunction mapHttpResponse (res) {\n return {\n res: resSerializer(res)\n }\n}\n", "'use strict'\n\nconst errSerializer = require('./lib/err')\nconst reqSerializers = require('./lib/req')\nconst resSerializers = require('./lib/res')\n\nmodule.exports = {\n err: errSerializer,\n mapHttpRequest: reqSerializers.mapHttpRequest,\n mapHttpResponse: resSerializers.mapHttpResponse,\n req: reqSerializers.reqSerializer,\n res: resSerializers.resSerializer,\n\n wrapErrorSerializer: function wrapErrorSerializer (customSerializer) {\n if (customSerializer === errSerializer) return customSerializer\n return function wrapErrSerializer (err) {\n return customSerializer(errSerializer(err))\n }\n },\n\n wrapRequestSerializer: function wrapRequestSerializer (customSerializer) {\n if (customSerializer === reqSerializers.reqSerializer) return customSerializer\n return function wrappedReqSerializer (req) {\n return customSerializer(reqSerializers.reqSerializer(req))\n }\n },\n\n wrapResponseSerializer: function wrapResponseSerializer (customSerializer) {\n if (customSerializer === resSerializers.resSerializer) return customSerializer\n return function wrappedResSerializer (res) {\n return customSerializer(resSerializers.resSerializer(res))\n }\n }\n}\n", "'use strict'\n\nconst { createContext, runInContext } = require('vm')\n\nmodule.exports = validator\n\nfunction validator (opts = {}) {\n const {\n ERR_PATHS_MUST_BE_STRINGS = () => 'fast-redact - Paths must be (non-empty) strings',\n ERR_INVALID_PATH = (s) => `fast-redact \u2013 Invalid path (${s})`\n } = opts\n\n return function validate ({ paths }) {\n paths.forEach((s) => {\n if (typeof s !== 'string') {\n throw Error(ERR_PATHS_MUST_BE_STRINGS())\n }\n try {\n if (/\u3007/.test(s)) throw Error()\n const proxy = new Proxy({}, { get: () => proxy, set: () => { throw Error() } })\n const expr = (s[0] === '[' ? '' : '.') + s.replace(/^\\*/, '\u3007').replace(/\\.\\*/g, '.\u3007').replace(/\\[\\*\\]/g, '[\u3007]')\n if (/\\n|\\r|;/.test(expr)) throw Error()\n if (/\\/\\*/.test(expr)) throw Error()\n runInContext(`\n (function () {\n 'use strict'\n o${expr}\n if ([o${expr}].length !== 1) throw Error()\n })()\n `, createContext({ o: proxy, \u3007: null }), {\n codeGeneration: { strings: false, wasm: false }\n })\n } catch (e) {\n throw Error(ERR_INVALID_PATH(s))\n }\n })\n }\n}\n", "'use strict'\n\nmodule.exports = /[^.[\\]]+|\\[((?:.)*?)\\]/g\n\n/*\nRegular expression explanation:\n\nAlt 1: /[^.[\\]]+/ - Match one or more characters that are *not* a dot (.)\n opening square bracket ([) or closing square bracket (])\n\nAlt 2: /\\[((?:.)*?)\\]/ - If the char IS dot or square bracket, then create a capture\n group (which will be capture group $1) that matches anything\n within square brackets. Expansion is lazy so it will\n stop matching as soon as the first closing bracket is met `]`\n (rather than continuing to match until the final closing bracket).\n*/\n", "'use strict'\n\nconst rx = require('./rx')\n\nmodule.exports = parse\n\nfunction parse ({ paths }) {\n const wildcards = []\n var wcLen = 0\n const secret = paths.reduce(function (o, strPath, ix) {\n var path = strPath.match(rx).map((p) => p.replace(/'|\"|`/g, ''))\n const leadingBracket = strPath[0] === '['\n path = path.map((p) => {\n if (p[0] === '[') return p.substr(1, p.length - 2)\n else return p\n })\n const star = path.indexOf('*')\n if (star > -1) {\n const before = path.slice(0, star)\n const beforeStr = before.join('.')\n const after = path.slice(star + 1, path.length)\n if (after.indexOf('*') > -1) throw Error('fast-redact \u2013 Only one wildcard per path is supported')\n const nested = after.length > 0\n wcLen++\n wildcards.push({\n before,\n beforeStr,\n after,\n nested\n })\n } else {\n o[strPath] = {\n path: path,\n val: undefined,\n precensored: false,\n circle: '',\n escPath: JSON.stringify(strPath),\n leadingBracket: leadingBracket\n }\n }\n return o\n }, {})\n\n return { wildcards, wcLen, secret }\n}\n", "'use strict'\n\nconst rx = require('./rx')\n\nmodule.exports = redactor\n\nfunction redactor ({ secret, serialize, wcLen, strict, isCensorFct, censorFctTakesPath }, state) {\n /* eslint-disable-next-line */\n const redact = Function('o', `\n if (typeof o !== 'object' || o == null) {\n ${strictImpl(strict, serialize)}\n }\n const { censor, secret } = this\n ${redactTmpl(secret, isCensorFct, censorFctTakesPath)}\n this.compileRestore()\n ${dynamicRedactTmpl(wcLen > 0, isCensorFct, censorFctTakesPath)}\n ${resultTmpl(serialize)}\n `).bind(state)\n\n if (serialize === false) {\n redact.restore = (o) => state.restore(o)\n }\n\n return redact\n}\n\nfunction redactTmpl (secret, isCensorFct, censorFctTakesPath) {\n return Object.keys(secret).map((path) => {\n const { escPath, leadingBracket, path: arrPath } = secret[path]\n const skip = leadingBracket ? 1 : 0\n const delim = leadingBracket ? '' : '.'\n const hops = []\n var match\n while ((match = rx.exec(path)) !== null) {\n const [ , ix ] = match\n const { index, input } = match\n if (index > skip) hops.push(input.substring(0, index - (ix ? 0 : 1)))\n }\n var existence = hops.map((p) => `o${delim}${p}`).join(' && ')\n if (existence.length === 0) existence += `o${delim}${path} != null`\n else existence += ` && o${delim}${path} != null`\n\n const circularDetection = `\n switch (true) {\n ${hops.reverse().map((p) => `\n case o${delim}${p} === censor:\n secret[${escPath}].circle = ${JSON.stringify(p)}\n break\n `).join('\\n')}\n }\n `\n\n const censorArgs = censorFctTakesPath\n ? `val, ${JSON.stringify(arrPath)}`\n : `val`\n\n return `\n if (${existence}) {\n const val = o${delim}${path}\n if (val === censor) {\n secret[${escPath}].precensored = true\n } else {\n secret[${escPath}].val = val\n o${delim}${path} = ${isCensorFct ? `censor(${censorArgs})` : 'censor'}\n ${circularDetection}\n }\n }\n `\n }).join('\\n')\n}\n\nfunction dynamicRedactTmpl (hasWildcards, isCensorFct, censorFctTakesPath) {\n return hasWildcards === true ? `\n {\n const { wildcards, wcLen, groupRedact, nestedRedact } = this\n for (var i = 0; i < wcLen; i++) {\n const { before, beforeStr, after, nested } = wildcards[i]\n if (nested === true) {\n secret[beforeStr] = secret[beforeStr] || []\n nestedRedact(secret[beforeStr], o, before, after, censor, ${isCensorFct}, ${censorFctTakesPath})\n } else secret[beforeStr] = groupRedact(o, before, censor, ${isCensorFct}, ${censorFctTakesPath})\n }\n }\n ` : ''\n}\n\nfunction resultTmpl (serialize) {\n return serialize === false ? `return o` : `\n var s = this.serialize(o)\n this.restore(o)\n return s\n `\n}\n\nfunction strictImpl (strict, serialize) {\n return strict === true\n ? `throw Error('fast-redact: primitives cannot be redacted')`\n : serialize === false ? `return o` : `return this.serialize(o)`\n}\n", "'use strict'\n\nmodule.exports = {\n groupRedact,\n groupRestore,\n nestedRedact,\n nestedRestore\n}\n\nfunction groupRestore ({ keys, values, target }) {\n if (target == null) return\n const length = keys.length\n for (var i = 0; i < length; i++) {\n const k = keys[i]\n target[k] = values[i]\n }\n}\n\nfunction groupRedact (o, path, censor, isCensorFct, censorFctTakesPath) {\n const target = get(o, path)\n if (target == null) return { keys: null, values: null, target: null, flat: true }\n const keys = Object.keys(target)\n const keysLength = keys.length\n const pathLength = path.length\n const pathWithKey = censorFctTakesPath ? [...path] : undefined\n const values = new Array(keysLength)\n\n for (var i = 0; i < keysLength; i++) {\n const key = keys[i]\n values[i] = target[key]\n\n if (censorFctTakesPath) {\n pathWithKey[pathLength] = key\n target[key] = censor(target[key], pathWithKey)\n } else if (isCensorFct) {\n target[key] = censor(target[key])\n } else {\n target[key] = censor\n }\n }\n return { keys, values, target, flat: true }\n}\n\nfunction nestedRestore (arr) {\n const length = arr.length\n for (var i = 0; i < length; i++) {\n const { key, target, value } = arr[i]\n target[key] = value\n }\n}\n\nfunction nestedRedact (store, o, path, ns, censor, isCensorFct, censorFctTakesPath) {\n const target = get(o, path)\n if (target == null) return\n const keys = Object.keys(target)\n const keysLength = keys.length\n for (var i = 0; i < keysLength; i++) {\n const key = keys[i]\n const { value, parent, exists } =\n specialSet(target, key, path, ns, censor, isCensorFct, censorFctTakesPath)\n\n if (exists === true && parent !== null) {\n store.push({ key: ns[ns.length - 1], target: parent, value })\n }\n }\n return store\n}\n\nfunction has (obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop)\n}\n\nfunction specialSet (o, k, path, afterPath, censor, isCensorFct, censorFctTakesPath) {\n const afterPathLen = afterPath.length\n const lastPathIndex = afterPathLen - 1\n const originalKey = k\n var i = -1\n var n\n var nv\n var ov\n var oov = null\n var exists = true\n ov = n = o[k]\n if (typeof n !== 'object') return { value: null, parent: null, exists }\n while (n != null && ++i < afterPathLen) {\n k = afterPath[i]\n oov = ov\n if (!(k in n)) {\n exists = false\n break\n }\n ov = n[k]\n nv = (i !== lastPathIndex)\n ? ov\n : (isCensorFct\n ? (censorFctTakesPath ? censor(ov, [...path, originalKey, ...afterPath]) : censor(ov))\n : censor)\n n[k] = (has(n, k) && nv === ov) || (nv === undefined && censor !== undefined) ? n[k] : nv\n n = n[k]\n if (typeof n !== 'object') break\n }\n return { value: ov, parent: oov, exists }\n}\n\nfunction get (o, p) {\n var i = -1\n var l = p.length\n var n = o\n while (n != null && ++i < l) {\n n = n[p[i]]\n }\n return n\n}\n", "'use strict'\n\nconst { groupRestore, nestedRestore } = require('./modifiers')\n\nmodule.exports = restorer\n\nfunction restorer ({ secret, wcLen }) {\n return function compileRestore () {\n if (this.restore) return\n const paths = Object.keys(secret)\n const resetters = resetTmpl(secret, paths)\n const hasWildcards = wcLen > 0\n const state = hasWildcards ? { secret, groupRestore, nestedRestore } : { secret }\n /* eslint-disable-next-line */\n this.restore = Function(\n 'o',\n restoreTmpl(resetters, paths, hasWildcards)\n ).bind(state)\n }\n}\n\n/**\n * Mutates the original object to be censored by restoring its original values\n * prior to censoring.\n *\n * @param {object} secret Compiled object describing which target fields should\n * be censored and the field states.\n * @param {string[]} paths The list of paths to censor as provided at\n * initialization time.\n *\n * @returns {string} String of JavaScript to be used by `Function()`. The\n * string compiles to the function that does the work in the description.\n */\nfunction resetTmpl (secret, paths) {\n return paths.map((path) => {\n const { circle, escPath, leadingBracket } = secret[path]\n const delim = leadingBracket ? '' : '.'\n const reset = circle\n ? `o.${circle} = secret[${escPath}].val`\n : `o${delim}${path} = secret[${escPath}].val`\n const clear = `secret[${escPath}].val = undefined`\n return `\n if (secret[${escPath}].val !== undefined) {\n try { ${reset} } catch (e) {}\n ${clear}\n }\n `\n }).join('')\n}\n\n/**\n * Creates the body of the restore function\n *\n * Restoration of the redacted object happens\n * backwards, in reverse order of redactions,\n * so that repeated redactions on the same object\n * property can be eventually rolled back to the\n * original value.\n *\n * This way dynamic redactions are restored first,\n * starting from the last one working backwards and\n * followed by the static ones.\n *\n * @returns {string} the body of the restore function\n */\nfunction restoreTmpl (resetters, paths, hasWildcards) {\n const dynamicReset = hasWildcards === true ? `\n const keys = Object.keys(secret)\n const len = keys.length\n for (var i = len - 1; i >= ${paths.length}; i--) {\n const k = keys[i]\n const o = secret[k]\n if (o.flat === true) this.groupRestore(o)\n else this.nestedRestore(o)\n secret[k] = null\n }\n ` : ''\n\n return `\n const secret = this.secret\n ${dynamicReset}\n ${resetters}\n return o\n `\n}\n", "'use strict'\n\nmodule.exports = state\n\nfunction state (o) {\n const {\n secret,\n censor,\n compileRestore,\n serialize,\n groupRedact,\n nestedRedact,\n wildcards,\n wcLen\n } = o\n const builder = [{ secret, censor, compileRestore }]\n if (serialize !== false) builder.push({ serialize })\n if (wcLen > 0) builder.push({ groupRedact, nestedRedact, wildcards, wcLen })\n return Object.assign(...builder)\n}\n", "'use strict'\n\nconst validator = require('./lib/validator')\nconst parse = require('./lib/parse')\nconst redactor = require('./lib/redactor')\nconst restorer = require('./lib/restorer')\nconst { groupRedact, nestedRedact } = require('./lib/modifiers')\nconst state = require('./lib/state')\nconst rx = require('./lib/rx')\nconst validate = validator()\nconst noop = (o) => o\nnoop.restore = noop\n\nconst DEFAULT_CENSOR = '[REDACTED]'\nfastRedact.rx = rx\nfastRedact.validator = validator\n\nmodule.exports = fastRedact\n\nfunction fastRedact (opts = {}) {\n const paths = Array.from(new Set(opts.paths || []))\n const serialize = 'serialize' in opts ? (\n opts.serialize === false ? opts.serialize\n : (typeof opts.serialize === 'function' ? opts.serialize : JSON.stringify)\n ) : JSON.stringify\n const remove = opts.remove\n if (remove === true && serialize !== JSON.stringify) {\n throw Error('fast-redact \u2013 remove option may only be set when serializer is JSON.stringify')\n }\n const censor = remove === true\n ? undefined\n : 'censor' in opts ? opts.censor : DEFAULT_CENSOR\n\n const isCensorFct = typeof censor === 'function'\n const censorFctTakesPath = isCensorFct && censor.length > 1\n\n if (paths.length === 0) return serialize || noop\n\n validate({ paths, serialize, censor })\n\n const { wildcards, wcLen, secret } = parse({ paths, censor })\n\n const compileRestore = restorer({ secret, wcLen })\n const strict = 'strict' in opts ? opts.strict : true\n\n return redactor({ secret, wcLen, serialize, strict, isCensorFct, censorFctTakesPath }, state({\n secret,\n censor,\n compileRestore,\n serialize,\n groupRedact,\n nestedRedact,\n wildcards,\n wcLen\n }))\n}\n", "'use strict'\n\nconst setLevelSym = Symbol('pino.setLevel')\nconst getLevelSym = Symbol('pino.getLevel')\nconst levelValSym = Symbol('pino.levelVal')\nconst useLevelLabelsSym = Symbol('pino.useLevelLabels')\nconst useOnlyCustomLevelsSym = Symbol('pino.useOnlyCustomLevels')\nconst mixinSym = Symbol('pino.mixin')\n\nconst lsCacheSym = Symbol('pino.lsCache')\nconst chindingsSym = Symbol('pino.chindings')\nconst parsedChindingsSym = Symbol('pino.parsedChindings')\n\nconst asJsonSym = Symbol('pino.asJson')\nconst writeSym = Symbol('pino.write')\nconst redactFmtSym = Symbol('pino.redactFmt')\n\nconst timeSym = Symbol('pino.time')\nconst timeSliceIndexSym = Symbol('pino.timeSliceIndex')\nconst streamSym = Symbol('pino.stream')\nconst stringifySym = Symbol('pino.stringify')\nconst stringifiersSym = Symbol('pino.stringifiers')\nconst endSym = Symbol('pino.end')\nconst formatOptsSym = Symbol('pino.formatOpts')\nconst messageKeySym = Symbol('pino.messageKey')\nconst nestedKeySym = Symbol('pino.nestedKey')\n\nconst wildcardFirstSym = Symbol('pino.wildcardFirst')\n\n// public symbols, no need to use the same pino\n// version for these\nconst serializersSym = Symbol.for('pino.serializers')\nconst formattersSym = Symbol.for('pino.formatters')\nconst hooksSym = Symbol.for('pino.hooks')\nconst needsMetadataGsym = Symbol.for('pino.metadata')\n\nmodule.exports = {\n setLevelSym,\n getLevelSym,\n levelValSym,\n useLevelLabelsSym,\n mixinSym,\n lsCacheSym,\n chindingsSym,\n parsedChindingsSym,\n asJsonSym,\n writeSym,\n serializersSym,\n redactFmtSym,\n timeSym,\n timeSliceIndexSym,\n streamSym,\n stringifySym,\n stringifiersSym,\n endSym,\n formatOptsSym,\n messageKeySym,\n nestedKeySym,\n wildcardFirstSym,\n needsMetadataGsym,\n useOnlyCustomLevelsSym,\n formattersSym,\n hooksSym\n}\n", "'use strict'\n\nconst fastRedact = require('fast-redact')\nconst { redactFmtSym, wildcardFirstSym } = require('./symbols')\nconst { rx, validator } = fastRedact\n\nconst validate = validator({\n ERR_PATHS_MUST_BE_STRINGS: () => 'pino \u2013 redacted paths must be strings',\n ERR_INVALID_PATH: (s) => `pino \u2013 redact paths array contains an invalid path (${s})`\n})\n\nconst CENSOR = '[Redacted]'\nconst strict = false // TODO should this be configurable?\n\nfunction redaction (opts, serialize) {\n const { paths, censor } = handle(opts)\n\n const shape = paths.reduce((o, str) => {\n rx.lastIndex = 0\n const first = rx.exec(str)\n const next = rx.exec(str)\n\n // ns is the top-level path segment, brackets + quoting removed.\n let ns = first[1] !== undefined\n ? first[1].replace(/^(?:\"|'|`)(.*)(?:\"|'|`)$/, '$1')\n : first[0]\n\n if (ns === '*') {\n ns = wildcardFirstSym\n }\n\n // top level key:\n if (next === null) {\n o[ns] = null\n return o\n }\n\n // path with at least two segments:\n // if ns is already redacted at the top level, ignore lower level redactions\n if (o[ns] === null) {\n return o\n }\n\n const { index } = next\n const nextPath = `${str.substr(index, str.length - 1)}`\n\n o[ns] = o[ns] || []\n\n // shape is a mix of paths beginning with literal values and wildcard\n // paths [ \"a.b.c\", \"*.b.z\" ] should reduce to a shape of\n // { \"a\": [ \"b.c\", \"b.z\" ], *: [ \"b.z\" ] }\n // note: \"b.z\" is in both \"a\" and * arrays because \"a\" matches the wildcard.\n // (* entry has wildcardFirstSym as key)\n if (ns !== wildcardFirstSym && o[ns].length === 0) {\n // first time ns's get all '*' redactions so far\n o[ns].push(...(o[wildcardFirstSym] || []))\n }\n\n if (ns === wildcardFirstSym) {\n // new * path gets added to all previously registered literal ns's.\n Object.keys(o).forEach(function (k) {\n if (o[k]) {\n o[k].push(nextPath)\n }\n })\n }\n\n o[ns].push(nextPath)\n return o\n }, {})\n\n // the redactor assigned to the format symbol key\n // provides top level redaction for instances where\n // an object is interpolated into the msg string\n const result = {\n [redactFmtSym]: fastRedact({ paths, censor, serialize, strict })\n }\n\n const topCensor = (...args) => {\n return typeof censor === 'function' ? serialize(censor(...args)) : serialize(censor)\n }\n\n return [...Object.keys(shape), ...Object.getOwnPropertySymbols(shape)].reduce((o, k) => {\n // top level key:\n if (shape[k] === null) {\n o[k] = (value) => topCensor(value, [k])\n } else {\n const wrappedCensor = typeof censor === 'function'\n ? (value, path) => {\n return censor(value, [k, ...path])\n }\n : censor\n o[k] = fastRedact({\n paths: shape[k],\n censor: wrappedCensor,\n serialize,\n strict\n })\n }\n return o\n }, result)\n}\n\nfunction handle (opts) {\n if (Array.isArray(opts)) {\n opts = { paths: opts, censor: CENSOR }\n validate(opts)\n return opts\n }\n let { paths, censor = CENSOR, remove } = opts\n if (Array.isArray(paths) === false) { throw Error('pino \u2013 redact must contain an array of strings') }\n if (remove === true) censor = undefined\n validate({ paths, censor })\n\n return { paths, censor }\n}\n\nmodule.exports = redaction\n", "'use strict'\n\nconst nullTime = () => ''\n\nconst epochTime = () => `,\"time\":${Date.now()}`\n\nconst unixTime = () => `,\"time\":${Math.round(Date.now() / 1000.0)}`\n\nconst isoTime = () => `,\"time\":\"${new Date(Date.now()).toISOString()}\"` // using Date.now() for testability\n\nmodule.exports = { nullTime, epochTime, unixTime, isoTime }\n", "'use strict'\n\n// You may be tempted to copy and paste this, \n// but take a look at the commit history first,\n// this is a moving target so relying on the module\n// is the best way to make sure the optimization\n// method is kept up to date and compatible with\n// every Node version.\n\nfunction flatstr (s) {\n s | 0\n return s\n}\n\nmodule.exports = flatstr", "'use strict'\n\n/* global SharedArrayBuffer, Atomics */\n\nif (typeof SharedArrayBuffer !== 'undefined' && typeof Atomics !== 'undefined') {\n const nil = new Int32Array(new SharedArrayBuffer(4))\n\n function sleep (ms) {\n // also filters out NaN, non-number types, including empty strings, but allows bigints\n const valid = ms > 0 && ms < Infinity \n if (valid === false) {\n if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n throw TypeError('sleep: ms must be a number')\n }\n throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')\n }\n\n Atomics.wait(nil, 0, 0, Number(ms))\n }\n module.exports = sleep\n} else {\n\n function sleep (ms) {\n // also filters out NaN, non-number types, including empty strings, but allows bigints\n const valid = ms > 0 && ms < Infinity \n if (valid === false) {\n if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n throw TypeError('sleep: ms must be a number')\n }\n throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')\n }\n const target = Date.now() + Number(ms)\n while (target > Date.now()){}\n }\n\n module.exports = sleep\n\n}\n", "'use strict'\n\nconst fs = require('fs')\nconst EventEmitter = require('events')\nconst flatstr = require('flatstr')\nconst inherits = require('util').inherits\n\nconst BUSY_WRITE_TIMEOUT = 100\n\nconst sleep = require('atomic-sleep')\n\n// 16 MB - magic number\n// This constant ensures that SonicBoom only needs\n// 32 MB of free memory to run. In case of having 1GB+\n// of data to write, this prevents an out of memory\n// condition.\nconst MAX_WRITE = 16 * 1024 * 1024\n\nfunction openFile (file, sonic) {\n sonic._opening = true\n sonic._writing = true\n sonic._asyncDrainScheduled = false\n\n // NOTE: 'error' and 'ready' events emitted below only relevant when sonic.sync===false\n // for sync mode, there is no way to add a listener that will receive these\n\n function fileOpened (err, fd) {\n if (err) {\n sonic._reopening = false\n sonic._writing = false\n sonic._opening = false\n\n if (sonic.sync) {\n process.nextTick(() => {\n if (sonic.listenerCount('error') > 0) {\n sonic.emit('error', err)\n }\n })\n } else {\n sonic.emit('error', err)\n }\n return\n }\n\n sonic.fd = fd\n sonic.file = file\n sonic._reopening = false\n sonic._opening = false\n sonic._writing = false\n\n if (sonic.sync) {\n process.nextTick(() => sonic.emit('ready'))\n } else {\n sonic.emit('ready')\n }\n\n if (sonic._reopening) {\n return\n }\n\n // start\n const len = sonic._buf.length\n if (len > 0 && len > sonic.minLength && !sonic.destroyed) {\n actualWrite(sonic)\n }\n }\n\n if (sonic.sync) {\n try {\n const fd = fs.openSync(file, 'a')\n fileOpened(null, fd)\n } catch (err) {\n fileOpened(err)\n throw err\n }\n } else {\n fs.open(file, 'a', fileOpened)\n }\n}\n\nfunction SonicBoom (opts) {\n if (!(this instanceof SonicBoom)) {\n return new SonicBoom(opts)\n }\n\n let { fd, dest, minLength, sync } = opts || {}\n\n fd = fd || dest\n\n this._buf = ''\n this.fd = -1\n this._writing = false\n this._writingBuf = ''\n this._ending = false\n this._reopening = false\n this._asyncDrainScheduled = false\n this.file = null\n this.destroyed = false\n this.sync = sync || false\n\n this.minLength = minLength || 0\n\n if (typeof fd === 'number') {\n this.fd = fd\n process.nextTick(() => this.emit('ready'))\n } else if (typeof fd === 'string') {\n openFile(fd, this)\n } else {\n throw new Error('SonicBoom supports only file descriptors and files')\n }\n\n this.release = (err, n) => {\n if (err) {\n if (err.code === 'EAGAIN') {\n if (this.sync) {\n // This error code should not happen in sync mode, because it is\n // not using the underlining operating system asynchronous functions.\n // However it happens, and so we handle it.\n // Ref: https://github.com/pinojs/pino/issues/783\n try {\n sleep(BUSY_WRITE_TIMEOUT)\n this.release(undefined, 0)\n } catch (err) {\n this.release(err)\n }\n } else {\n // Let's give the destination some time to process the chunk.\n setTimeout(() => {\n fs.write(this.fd, this._writingBuf, 'utf8', this.release)\n }, BUSY_WRITE_TIMEOUT)\n }\n } else {\n // The error maybe recoverable later, so just put data back to this._buf\n this._buf = this._writingBuf + this._buf\n this._writingBuf = ''\n this._writing = false\n\n this.emit('error', err)\n }\n return\n }\n\n if (this._writingBuf.length !== n) {\n this._writingBuf = this._writingBuf.slice(n)\n if (this.sync) {\n try {\n do {\n n = fs.writeSync(this.fd, this._writingBuf, 'utf8')\n this._writingBuf = this._writingBuf.slice(n)\n } while (this._writingBuf.length !== 0)\n } catch (err) {\n this.release(err)\n return\n }\n } else {\n fs.write(this.fd, this._writingBuf, 'utf8', this.release)\n return\n }\n }\n\n this._writingBuf = ''\n\n if (this.destroyed) {\n return\n }\n\n const len = this._buf.length\n if (this._reopening) {\n this._writing = false\n this._reopening = false\n this.reopen()\n } else if (len > 0 && len > this.minLength) {\n actualWrite(this)\n } else if (this._ending) {\n if (len > 0) {\n actualWrite(this)\n } else {\n this._writing = false\n actualClose(this)\n }\n } else {\n this._writing = false\n if (this.sync) {\n if (!this._asyncDrainScheduled) {\n this._asyncDrainScheduled = true\n process.nextTick(emitDrain, this)\n }\n } else {\n this.emit('drain')\n }\n }\n }\n\n this.on('newListener', function (name) {\n if (name === 'drain') {\n this._asyncDrainScheduled = false\n }\n })\n}\n\nfunction emitDrain (sonic) {\n const hasListeners = sonic.listenerCount('drain') > 0\n if (!hasListeners) return\n sonic._asyncDrainScheduled = false\n sonic.emit('drain')\n}\n\ninherits(SonicBoom, EventEmitter)\n\nSonicBoom.prototype.write = function (data) {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n this._buf += data\n const len = this._buf.length\n if (!this._writing && len > this.minLength) {\n actualWrite(this)\n }\n return len < 16384\n}\n\nSonicBoom.prototype.flush = function () {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this._writing || this.minLength <= 0) {\n return\n }\n\n actualWrite(this)\n}\n\nSonicBoom.prototype.reopen = function (file) {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this._opening) {\n this.once('ready', () => {\n this.reopen(file)\n })\n return\n }\n\n if (this._ending) {\n return\n }\n\n if (!this.file) {\n throw new Error('Unable to reopen a file descriptor, you must pass a file to SonicBoom')\n }\n\n this._reopening = true\n\n if (this._writing) {\n return\n }\n\n const fd = this.fd\n this.once('ready', () => {\n if (fd !== this.fd) {\n fs.close(fd, (err) => {\n if (err) {\n return this.emit('error', err)\n }\n })\n }\n })\n\n openFile(file || this.file, this)\n}\n\nSonicBoom.prototype.end = function () {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this._opening) {\n this.once('ready', () => {\n this.end()\n })\n return\n }\n\n if (this._ending) {\n return\n }\n\n this._ending = true\n\n if (!this._writing && this._buf.length > 0 && this.fd >= 0) {\n actualWrite(this)\n return\n }\n\n if (this._writing) {\n return\n }\n\n actualClose(this)\n}\n\nSonicBoom.prototype.flushSync = function () {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this.fd < 0) {\n throw new Error('sonic boom is not ready yet')\n }\n\n while (this._buf.length > 0) {\n try {\n fs.writeSync(this.fd, this._buf, 'utf8')\n this._buf = ''\n } catch (err) {\n if (err.code !== 'EAGAIN') {\n throw err\n }\n\n sleep(BUSY_WRITE_TIMEOUT)\n }\n }\n}\n\nSonicBoom.prototype.destroy = function () {\n if (this.destroyed) {\n return\n }\n actualClose(this)\n}\n\nfunction actualWrite (sonic) {\n sonic._writing = true\n let buf = sonic._buf\n const release = sonic.release\n if (buf.length > MAX_WRITE) {\n buf = buf.slice(0, MAX_WRITE)\n sonic._buf = sonic._buf.slice(MAX_WRITE)\n } else {\n sonic._buf = ''\n }\n flatstr(buf)\n sonic._writingBuf = buf\n if (sonic.sync) {\n try {\n const written = fs.writeSync(sonic.fd, buf, 'utf8')\n release(null, written)\n } catch (err) {\n release(err)\n }\n } else {\n fs.write(sonic.fd, buf, 'utf8', release)\n }\n}\n\nfunction actualClose (sonic) {\n if (sonic.fd === -1) {\n sonic.once('ready', actualClose.bind(null, sonic))\n return\n }\n // TODO write a test to check if we are not leaking fds\n fs.close(sonic.fd, (err) => {\n if (err) {\n sonic.emit('error', err)\n return\n }\n\n if (sonic._ending && !sonic._writing) {\n sonic.emit('finish')\n }\n sonic.emit('close')\n })\n sonic.destroyed = true\n sonic._buf = ''\n}\n\nmodule.exports = SonicBoom\n", "'use strict'\n\nconst { format } = require('util')\n\nfunction build () {\n const codes = {}\n const emitted = new Map()\n\n function create (name, code, message) {\n if (!name) throw new Error('Fastify warning name must not be empty')\n if (!code) throw new Error('Fastify warning code must not be empty')\n if (!message) throw new Error('Fastify warning message must not be empty')\n\n code = code.toUpperCase()\n\n if (codes[code] !== undefined) {\n throw new Error(`The code '${code}' already exist`)\n }\n\n function buildWarnOpts (a, b, c) {\n // more performant than spread (...) operator\n let formatted\n if (a && b && c) {\n formatted = format(message, a, b, c)\n } else if (a && b) {\n formatted = format(message, a, b)\n } else if (a) {\n formatted = format(message, a)\n } else {\n formatted = message\n }\n\n return {\n code,\n name,\n message: formatted\n }\n }\n\n emitted.set(code, false)\n codes[code] = buildWarnOpts\n\n return codes[code]\n }\n\n function emit (code, a, b, c) {\n if (codes[code] === undefined) throw new Error(`The code '${code}' does not exist`)\n if (emitted.get(code) === true) return\n emitted.set(code, true)\n\n const warning = codes[code](a, b, c)\n process.emitWarning(warning.message, warning.name, warning.code)\n }\n\n return {\n create,\n emit,\n emitted\n }\n}\n\nmodule.exports = build\n", "'use strict'\n\nconst warning = require('fastify-warning')()\nmodule.exports = warning\n\nconst warnName = 'PinoWarning'\n\nwarning.create(warnName, 'PINODEP004', 'bindings.serializers is deprecated, use options.serializers option instead')\n\nwarning.create(warnName, 'PINODEP005', 'bindings.formatters is deprecated, use options.formatters option instead')\n\nwarning.create(warnName, 'PINODEP006', 'bindings.customLevels is deprecated, use options.customLevels option instead')\n\nwarning.create(warnName, 'PINODEP007', 'bindings.level is deprecated, use options.level option instead')\n", "'use strict'\nfunction tryStringify (o) {\n try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n var ss = (opts && opts.stringify) || tryStringify\n var offset = 1\n if (typeof f === 'object' && f !== null) {\n var len = args.length + offset\n if (len === 1) return f\n var objects = new Array(len)\n objects[0] = ss(f)\n for (var index = 1; index < len; index++) {\n objects[index] = ss(args[index])\n }\n return objects.join(' ')\n }\n if (typeof f !== 'string') {\n return f\n }\n var argLen = args.length\n if (argLen === 0) return f\n var str = ''\n var a = 1 - offset\n var lastPos = -1\n var flen = (f && f.length) || 0\n for (var i = 0; i < flen;) {\n if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n lastPos = lastPos > -1 ? lastPos : 0\n switch (f.charCodeAt(i + 1)) {\n case 100: // 'd'\n case 102: // 'f'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Number(args[a])\n lastPos = i + 2\n i++\n break\n case 105: // 'i'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Math.floor(Number(args[a]))\n lastPos = i + 2\n i++\n break\n case 79: // 'O'\n case 111: // 'o'\n case 106: // 'j'\n if (a >= argLen)\n break\n if (args[a] === undefined) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n var type = typeof args[a]\n if (type === 'string') {\n str += '\\'' + args[a] + '\\''\n lastPos = i + 2\n i++\n break\n }\n if (type === 'function') {\n str += args[a].name || '<anonymous>'\n lastPos = i + 2\n i++\n break\n }\n str += ss(args[a])\n lastPos = i + 2\n i++\n break\n case 115: // 's'\n if (a >= argLen)\n break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += String(args[a])\n lastPos = i + 2\n i++\n break\n case 37: // '%'\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += '%'\n lastPos = i + 2\n i++\n a--\n break\n }\n ++a\n }\n ++i\n }\n if (lastPos === -1)\n return f\n else if (lastPos < flen) {\n str += f.slice(lastPos)\n }\n\n return str\n}\n", "module.exports = stringify\nstringify.default = stringify\nstringify.stable = deterministicStringify\nstringify.stableStringify = deterministicStringify\n\nvar LIMIT_REPLACE_NODE = '[...]'\nvar CIRCULAR_REPLACE_NODE = '[Circular]'\n\nvar arr = []\nvar replacerStack = []\n\nfunction defaultOptions () {\n return {\n depthLimit: Number.MAX_SAFE_INTEGER,\n edgesLimit: Number.MAX_SAFE_INTEGER\n }\n}\n\n// Regular stringify\nfunction stringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n decirc(obj, '', 0, [], undefined, 0, options)\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(obj, replacer, spacer)\n } else {\n res = JSON.stringify(obj, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction setReplace (replace, val, k, parent) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k)\n if (propertyDescriptor.get !== undefined) {\n if (propertyDescriptor.configurable) {\n Object.defineProperty(parent, k, { value: replace })\n arr.push([parent, k, val, propertyDescriptor])\n } else {\n replacerStack.push([val, k, replace])\n }\n } else {\n parent[k] = replace\n arr.push([parent, k, val])\n }\n}\n\nfunction decirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n decirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n var keys = Object.keys(val)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n decirc(val[key], key, i, stack, val, depth, options)\n }\n }\n stack.pop()\n }\n}\n\n// Stable-stringify\nfunction compareFunction (a, b) {\n if (a < b) {\n return -1\n }\n if (a > b) {\n return 1\n }\n return 0\n}\n\nfunction deterministicStringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n var tmp = deterministicDecirc(obj, '', 0, [], undefined, 0, options) || obj\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(tmp, replacer, spacer)\n } else {\n res = JSON.stringify(tmp, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n // Ensure that we restore the object as it was.\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction deterministicDecirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n try {\n if (typeof val.toJSON === 'function') {\n return\n }\n } catch (_) {\n return\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n deterministicDecirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n // Create a temporary object in the required way\n var tmp = {}\n var keys = Object.keys(val).sort(compareFunction)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n deterministicDecirc(val[key], key, i, stack, val, depth, options)\n tmp[key] = val[key]\n }\n if (typeof parent !== 'undefined') {\n arr.push([parent, k, val])\n parent[k] = tmp\n } else {\n return tmp\n }\n }\n stack.pop()\n }\n}\n\n// wraps replacer function to handle values we couldn't replace\n// and mark them as replaced value\nfunction replaceGetterValues (replacer) {\n replacer =\n typeof replacer !== 'undefined'\n ? replacer\n : function (k, v) {\n return v\n }\n return function (key, val) {\n if (replacerStack.length > 0) {\n for (var i = 0; i < replacerStack.length; i++) {\n var part = replacerStack[i]\n if (part[1] === key && part[0] === val) {\n val = part[2]\n replacerStack.splice(i, 1)\n break\n }\n }\n }\n return replacer.call(this, key, val)\n }\n}\n", "'use strict'\n\n/* eslint no-prototype-builtins: 0 */\n\nconst format = require('quick-format-unescaped')\nconst { mapHttpRequest, mapHttpResponse } = require('pino-std-serializers')\nconst SonicBoom = require('sonic-boom')\nconst stringifySafe = require('fast-safe-stringify')\nconst {\n lsCacheSym,\n chindingsSym,\n parsedChindingsSym,\n writeSym,\n serializersSym,\n formatOptsSym,\n endSym,\n stringifiersSym,\n stringifySym,\n wildcardFirstSym,\n needsMetadataGsym,\n redactFmtSym,\n streamSym,\n nestedKeySym,\n formattersSym,\n messageKeySym\n} = require('./symbols')\n\nfunction noop () {}\n\nfunction genLog (level, hook) {\n if (!hook) return LOG\n\n return function hookWrappedLog (...args) {\n hook.call(this, args, LOG, level)\n }\n\n function LOG (o, ...n) {\n if (typeof o === 'object') {\n let msg = o\n if (o !== null) {\n if (o.method && o.headers && o.socket) {\n o = mapHttpRequest(o)\n } else if (typeof o.setHeader === 'function') {\n o = mapHttpResponse(o)\n }\n }\n if (this[nestedKeySym]) o = { [this[nestedKeySym]]: o }\n let formatParams\n if (msg === null && n.length === 0) {\n formatParams = [null]\n } else {\n msg = n.shift()\n formatParams = n\n }\n this[writeSym](o, format(msg, formatParams, this[formatOptsSym]), level)\n } else {\n this[writeSym](null, format(o, n, this[formatOptsSym]), level)\n }\n }\n}\n\n// magically escape strings for json\n// relying on their charCodeAt\n// everything below 32 needs JSON.stringify()\n// 34 and 92 happens all the time, so we\n// have a fast case for them\nfunction asString (str) {\n let result = ''\n let last = 0\n let found = false\n let point = 255\n const l = str.length\n if (l > 100) {\n return JSON.stringify(str)\n }\n for (var i = 0; i < l && point >= 32; i++) {\n point = str.charCodeAt(i)\n if (point === 34 || point === 92) {\n result += str.slice(last, i) + '\\\\'\n last = i\n found = true\n }\n }\n if (!found) {\n result = str\n } else {\n result += str.slice(last)\n }\n return point < 32 ? JSON.stringify(str) : '\"' + result + '\"'\n}\n\nfunction asJson (obj, msg, num, time) {\n const stringify = this[stringifySym]\n const stringifiers = this[stringifiersSym]\n const end = this[endSym]\n const chindings = this[chindingsSym]\n const serializers = this[serializersSym]\n const formatters = this[formattersSym]\n const messageKey = this[messageKeySym]\n let data = this[lsCacheSym][num] + time\n\n // we need the child bindings added to the output first so instance logged\n // objects can take precedence when JSON.parse-ing the resulting log line\n data = data + chindings\n\n let value\n const notHasOwnProperty = obj.hasOwnProperty === undefined\n if (formatters.log) {\n obj = formatters.log(obj)\n }\n if (msg !== undefined) {\n obj[messageKey] = msg\n }\n const wildcardStringifier = stringifiers[wildcardFirstSym]\n for (const key in obj) {\n value = obj[key]\n if ((notHasOwnProperty || obj.hasOwnProperty(key)) && value !== undefined) {\n value = serializers[key] ? serializers[key](value) : value\n\n const stringifier = stringifiers[key] || wildcardStringifier\n\n switch (typeof value) {\n case 'undefined':\n case 'function':\n continue\n case 'number':\n /* eslint no-fallthrough: \"off\" */\n if (Number.isFinite(value) === false) {\n value = null\n }\n // this case explicitly falls through to the next one\n case 'boolean':\n if (stringifier) value = stringifier(value)\n break\n case 'string':\n value = (stringifier || asString)(value)\n break\n default:\n value = (stringifier || stringify)(value)\n }\n if (value === undefined) continue\n data += ',\"' + key + '\":' + value\n }\n }\n\n return data + end\n}\n\nfunction asChindings (instance, bindings) {\n let value\n let data = instance[chindingsSym]\n const stringify = instance[stringifySym]\n const stringifiers = instance[stringifiersSym]\n const wildcardStringifier = stringifiers[wildcardFirstSym]\n const serializers = instance[serializersSym]\n const formatter = instance[formattersSym].bindings\n bindings = formatter(bindings)\n\n for (const key in bindings) {\n value = bindings[key]\n const valid = key !== 'level' &&\n key !== 'serializers' &&\n key !== 'formatters' &&\n key !== 'customLevels' &&\n bindings.hasOwnProperty(key) &&\n value !== undefined\n if (valid === true) {\n value = serializers[key] ? serializers[key](value) : value\n value = (stringifiers[key] || wildcardStringifier || stringify)(value)\n if (value === undefined) continue\n data += ',\"' + key + '\":' + value\n }\n }\n return data\n}\n\nfunction getPrettyStream (opts, prettifier, dest, instance) {\n if (prettifier && typeof prettifier === 'function') {\n prettifier = prettifier.bind(instance)\n return prettifierMetaWrapper(prettifier(opts), dest, opts)\n }\n try {\n const prettyFactory = require('pino-pretty').prettyFactory || require('pino-pretty')\n prettyFactory.asMetaWrapper = prettifierMetaWrapper\n return prettifierMetaWrapper(prettyFactory(opts), dest, opts)\n } catch (e) {\n if (e.message.startsWith(\"Cannot find module 'pino-pretty'\")) {\n throw Error('Missing `pino-pretty` module: `pino-pretty` must be installed separately')\n };\n throw e\n }\n}\n\nfunction prettifierMetaWrapper (pretty, dest, opts) {\n opts = Object.assign({ suppressFlushSyncWarning: false }, opts)\n let warned = false\n return {\n [needsMetadataGsym]: true,\n lastLevel: 0,\n lastMsg: null,\n lastObj: null,\n lastLogger: null,\n flushSync () {\n if (opts.suppressFlushSyncWarning || warned) {\n return\n }\n warned = true\n setMetadataProps(dest, this)\n dest.write(pretty(Object.assign({\n level: 40, // warn\n msg: 'pino.final with prettyPrint does not support flushing',\n time: Date.now()\n }, this.chindings())))\n },\n chindings () {\n const lastLogger = this.lastLogger\n let chindings = null\n\n // protection against flushSync being called before logging\n // anything\n if (!lastLogger) {\n return null\n }\n\n if (lastLogger.hasOwnProperty(parsedChindingsSym)) {\n chindings = lastLogger[parsedChindingsSym]\n } else {\n chindings = JSON.parse('{' + lastLogger[chindingsSym].substr(1) + '}')\n lastLogger[parsedChindingsSym] = chindings\n }\n\n return chindings\n },\n write (chunk) {\n const lastLogger = this.lastLogger\n const chindings = this.chindings()\n\n let time = this.lastTime\n\n if (time.match(/^\\d+/)) {\n time = parseInt(time)\n } else {\n time = time.slice(1, -1)\n }\n\n const lastObj = this.lastObj\n const lastMsg = this.lastMsg\n const errorProps = null\n\n const formatters = lastLogger[formattersSym]\n const formattedObj = formatters.log ? formatters.log(lastObj) : lastObj\n\n const messageKey = lastLogger[messageKeySym]\n if (lastMsg && formattedObj && !formattedObj.hasOwnProperty(messageKey)) {\n formattedObj[messageKey] = lastMsg\n }\n\n const obj = Object.assign({\n level: this.lastLevel,\n time\n }, formattedObj, errorProps)\n\n const serializers = lastLogger[serializersSym]\n const keys = Object.keys(serializers)\n\n for (var i = 0; i < keys.length; i++) {\n const key = keys[i]\n if (obj[key] !== undefined) {\n obj[key] = serializers[key](obj[key])\n }\n }\n\n for (const key in chindings) {\n if (!obj.hasOwnProperty(key)) {\n obj[key] = chindings[key]\n }\n }\n\n const stringifiers = lastLogger[stringifiersSym]\n const redact = stringifiers[redactFmtSym]\n\n const formatted = pretty(typeof redact === 'function' ? redact(obj) : obj)\n if (formatted === undefined) return\n\n setMetadataProps(dest, this)\n dest.write(formatted)\n }\n }\n}\n\nfunction hasBeenTampered (stream) {\n return stream.write !== stream.constructor.prototype.write\n}\n\nfunction buildSafeSonicBoom (opts) {\n const stream = new SonicBoom(opts)\n stream.on('error', filterBrokenPipe)\n return stream\n\n function filterBrokenPipe (err) {\n // TODO verify on Windows\n if (err.code === 'EPIPE') {\n // If we get EPIPE, we should stop logging here\n // however we have no control to the consumer of\n // SonicBoom, so we just overwrite the write method\n stream.write = noop\n stream.end = noop\n stream.flushSync = noop\n stream.destroy = noop\n return\n }\n stream.removeListener('error', filterBrokenPipe)\n stream.emit('error', err)\n }\n}\n\nfunction createArgsNormalizer (defaultOptions) {\n return function normalizeArgs (instance, opts = {}, stream) {\n // support stream as a string\n if (typeof opts === 'string') {\n stream = buildSafeSonicBoom({ dest: opts, sync: true })\n opts = {}\n } else if (typeof stream === 'string') {\n stream = buildSafeSonicBoom({ dest: stream, sync: true })\n } else if (opts instanceof SonicBoom || opts.writable || opts._writableState) {\n stream = opts\n opts = null\n }\n opts = Object.assign({}, defaultOptions, opts)\n if ('extreme' in opts) {\n throw Error('The extreme option has been removed, use pino.destination({ sync: false }) instead')\n }\n if ('onTerminated' in opts) {\n throw Error('The onTerminated option has been removed, use pino.final instead')\n }\n if ('changeLevelName' in opts) {\n process.emitWarning(\n 'The changeLevelName option is deprecated and will be removed in v7. Use levelKey instead.',\n { code: 'changeLevelName_deprecation' }\n )\n opts.levelKey = opts.changeLevelName\n delete opts.changeLevelName\n }\n const { enabled, prettyPrint, prettifier, messageKey } = opts\n if (enabled === false) opts.level = 'silent'\n stream = stream || process.stdout\n if (stream === process.stdout && stream.fd >= 0 && !hasBeenTampered(stream)) {\n stream = buildSafeSonicBoom({ fd: stream.fd, sync: true })\n }\n if (prettyPrint) {\n const prettyOpts = Object.assign({ messageKey }, prettyPrint)\n stream = getPrettyStream(prettyOpts, prettifier, stream, instance)\n }\n return { opts, stream }\n }\n}\n\nfunction final (logger, handler) {\n if (typeof logger === 'undefined' || typeof logger.child !== 'function') {\n throw Error('expected a pino logger instance')\n }\n const hasHandler = (typeof handler !== 'undefined')\n if (hasHandler && typeof handler !== 'function') {\n throw Error('if supplied, the handler parameter should be a function')\n }\n const stream = logger[streamSym]\n if (typeof stream.flushSync !== 'function') {\n throw Error('final requires a stream that has a flushSync method, such as pino.destination')\n }\n\n const finalLogger = new Proxy(logger, {\n get: (logger, key) => {\n if (key in logger.levels.values) {\n return (...args) => {\n logger[key](...args)\n stream.flushSync()\n }\n }\n return logger[key]\n }\n })\n\n if (!hasHandler) {\n return finalLogger\n }\n\n return (err = null, ...args) => {\n try {\n stream.flushSync()\n } catch (e) {\n // it's too late to wait for the stream to be ready\n // because this is a final tick scenario.\n // in practice there shouldn't be a situation where it isn't\n // however, swallow the error just in case (and for easier testing)\n }\n return handler(err, finalLogger, ...args)\n }\n}\n\nfunction stringify (obj) {\n try {\n return JSON.stringify(obj)\n } catch (_) {\n return stringifySafe(obj)\n }\n}\n\nfunction buildFormatters (level, bindings, log) {\n return {\n level,\n bindings,\n log\n }\n}\n\nfunction setMetadataProps (dest, that) {\n if (dest[needsMetadataGsym] === true) {\n dest.lastLevel = that.lastLevel\n dest.lastMsg = that.lastMsg\n dest.lastObj = that.lastObj\n dest.lastTime = that.lastTime\n dest.lastLogger = that.lastLogger\n }\n}\n\nmodule.exports = {\n noop,\n buildSafeSonicBoom,\n getPrettyStream,\n asChindings,\n asJson,\n genLog,\n createArgsNormalizer,\n final,\n stringify,\n buildFormatters\n}\n", "'use strict'\n/* eslint no-prototype-builtins: 0 */\nconst flatstr = require('flatstr')\nconst {\n lsCacheSym,\n levelValSym,\n useOnlyCustomLevelsSym,\n streamSym,\n formattersSym,\n hooksSym\n} = require('./symbols')\nconst { noop, genLog } = require('./tools')\n\nconst levels = {\n trace: 10,\n debug: 20,\n info: 30,\n warn: 40,\n error: 50,\n fatal: 60\n}\nconst levelMethods = {\n fatal: (hook) => {\n const logFatal = genLog(levels.fatal, hook)\n return function (...args) {\n const stream = this[streamSym]\n logFatal.call(this, ...args)\n if (typeof stream.flushSync === 'function') {\n try {\n stream.flushSync()\n } catch (e) {\n // https://github.com/pinojs/pino/pull/740#discussion_r346788313\n }\n }\n }\n },\n error: (hook) => genLog(levels.error, hook),\n warn: (hook) => genLog(levels.warn, hook),\n info: (hook) => genLog(levels.info, hook),\n debug: (hook) => genLog(levels.debug, hook),\n trace: (hook) => genLog(levels.trace, hook)\n}\n\nconst nums = Object.keys(levels).reduce((o, k) => {\n o[levels[k]] = k\n return o\n}, {})\n\nconst initialLsCache = Object.keys(nums).reduce((o, k) => {\n o[k] = flatstr('{\"level\":' + Number(k))\n return o\n}, {})\n\nfunction genLsCache (instance) {\n const formatter = instance[formattersSym].level\n const { labels } = instance.levels\n const cache = {}\n for (const label in labels) {\n const level = formatter(labels[label], Number(label))\n cache[label] = JSON.stringify(level).slice(0, -1)\n }\n instance[lsCacheSym] = cache\n return instance\n}\n\nfunction isStandardLevel (level, useOnlyCustomLevels) {\n if (useOnlyCustomLevels) {\n return false\n }\n\n switch (level) {\n case 'fatal':\n case 'error':\n case 'warn':\n case 'info':\n case 'debug':\n case 'trace':\n return true\n default:\n return false\n }\n}\n\nfunction setLevel (level) {\n const { labels, values } = this.levels\n if (typeof level === 'number') {\n if (labels[level] === undefined) throw Error('unknown level value' + level)\n level = labels[level]\n }\n if (values[level] === undefined) throw Error('unknown level ' + level)\n const preLevelVal = this[levelValSym]\n const levelVal = this[levelValSym] = values[level]\n const useOnlyCustomLevelsVal = this[useOnlyCustomLevelsSym]\n const hook = this[hooksSym].logMethod\n\n for (const key in values) {\n if (levelVal > values[key]) {\n this[key] = noop\n continue\n }\n this[key] = isStandardLevel(key, useOnlyCustomLevelsVal) ? levelMethods[key](hook) : genLog(values[key], hook)\n }\n\n this.emit(\n 'level-change',\n level,\n levelVal,\n labels[preLevelVal],\n preLevelVal\n )\n}\n\nfunction getLevel (level) {\n const { levels, levelVal } = this\n // protection against potential loss of Pino scope from serializers (edge case with circular refs - https://github.com/pinojs/pino/issues/833)\n return (levels && levels.labels) ? levels.labels[levelVal] : ''\n}\n\nfunction isLevelEnabled (logLevel) {\n const { values } = this.levels\n const logLevelVal = values[logLevel]\n return logLevelVal !== undefined && (logLevelVal >= this[levelValSym])\n}\n\nfunction mappings (customLevels = null, useOnlyCustomLevels = false) {\n const customNums = customLevels\n /* eslint-disable */\n ? Object.keys(customLevels).reduce((o, k) => {\n o[customLevels[k]] = k\n return o\n }, {})\n : null\n /* eslint-enable */\n\n const labels = Object.assign(\n Object.create(Object.prototype, { Infinity: { value: 'silent' } }),\n useOnlyCustomLevels ? null : nums,\n customNums\n )\n const values = Object.assign(\n Object.create(Object.prototype, { silent: { value: Infinity } }),\n useOnlyCustomLevels ? null : levels,\n customLevels\n )\n return { labels, values }\n}\n\nfunction assertDefaultLevelFound (defaultLevel, customLevels, useOnlyCustomLevels) {\n if (typeof defaultLevel === 'number') {\n const values = [].concat(\n Object.keys(customLevels || {}).map(key => customLevels[key]),\n useOnlyCustomLevels ? [] : Object.keys(nums).map(level => +level),\n Infinity\n )\n if (!values.includes(defaultLevel)) {\n throw Error(`default level:${defaultLevel} must be included in custom levels`)\n }\n return\n }\n\n const labels = Object.assign(\n Object.create(Object.prototype, { silent: { value: Infinity } }),\n useOnlyCustomLevels ? null : levels,\n customLevels\n )\n if (!(defaultLevel in labels)) {\n throw Error(`default level:${defaultLevel} must be included in custom levels`)\n }\n}\n\nfunction assertNoLevelCollisions (levels, customLevels) {\n const { labels, values } = levels\n for (const k in customLevels) {\n if (k in values) {\n throw Error('levels cannot be overridden')\n }\n if (customLevels[k] in labels) {\n throw Error('pre-existing level values cannot be used for new levels')\n }\n }\n}\n\nmodule.exports = {\n initialLsCache,\n genLsCache,\n levelMethods,\n getLevel,\n setLevel,\n isLevelEnabled,\n mappings,\n assertNoLevelCollisions,\n assertDefaultLevelFound\n}\n", "'use strict'\n\nconst { version } = require('../package.json')\n\nmodule.exports = { version }\n", "'use strict'\n\n/* eslint no-prototype-builtins: 0 */\n\nconst { EventEmitter } = require('events')\nconst SonicBoom = require('sonic-boom')\nconst flatstr = require('flatstr')\nconst warning = require('./deprecations')\nconst {\n lsCacheSym,\n levelValSym,\n setLevelSym,\n getLevelSym,\n chindingsSym,\n parsedChindingsSym,\n mixinSym,\n asJsonSym,\n writeSym,\n timeSym,\n timeSliceIndexSym,\n streamSym,\n serializersSym,\n formattersSym,\n useOnlyCustomLevelsSym,\n needsMetadataGsym,\n redactFmtSym,\n stringifySym,\n formatOptsSym,\n stringifiersSym\n} = require('./symbols')\nconst {\n getLevel,\n setLevel,\n isLevelEnabled,\n mappings,\n initialLsCache,\n genLsCache,\n assertNoLevelCollisions\n} = require('./levels')\nconst {\n asChindings,\n asJson,\n buildFormatters,\n stringify\n} = require('./tools')\nconst {\n version\n} = require('./meta')\nconst redaction = require('./redaction')\n\n// note: use of class is satirical\n// https://github.com/pinojs/pino/pull/433#pullrequestreview-127703127\nconst constructor = class Pino {}\nconst prototype = {\n constructor,\n child,\n bindings,\n setBindings,\n flush,\n isLevelEnabled,\n version,\n get level () { return this[getLevelSym]() },\n set level (lvl) { this[setLevelSym](lvl) },\n get levelVal () { return this[levelValSym] },\n set levelVal (n) { throw Error('levelVal is read-only') },\n [lsCacheSym]: initialLsCache,\n [writeSym]: write,\n [asJsonSym]: asJson,\n [getLevelSym]: getLevel,\n [setLevelSym]: setLevel\n}\n\nObject.setPrototypeOf(prototype, EventEmitter.prototype)\n\n// exporting and consuming the prototype object using factory pattern fixes scoping issues with getters when serializing\nmodule.exports = function () {\n return Object.create(prototype)\n}\n\nconst resetChildingsFormatter = bindings => bindings\nfunction child (bindings, options) {\n if (!bindings) {\n throw Error('missing bindings for child Pino')\n }\n options = options || {} // default options to empty object\n const serializers = this[serializersSym]\n const formatters = this[formattersSym]\n const instance = Object.create(this)\n\n if (bindings.hasOwnProperty('serializers') === true) {\n warning.emit('PINODEP004')\n options.serializers = bindings.serializers\n }\n if (bindings.hasOwnProperty('formatters') === true) {\n warning.emit('PINODEP005')\n options.formatters = bindings.formatters\n }\n if (bindings.hasOwnProperty('customLevels') === true) {\n warning.emit('PINODEP006')\n options.customLevels = bindings.customLevels\n }\n if (bindings.hasOwnProperty('level') === true) {\n warning.emit('PINODEP007')\n options.level = bindings.level\n }\n if (options.hasOwnProperty('serializers') === true) {\n instance[serializersSym] = Object.create(null)\n\n for (const k in serializers) {\n instance[serializersSym][k] = serializers[k]\n }\n const parentSymbols = Object.getOwnPropertySymbols(serializers)\n /* eslint no-var: off */\n for (var i = 0; i < parentSymbols.length; i++) {\n const ks = parentSymbols[i]\n instance[serializersSym][ks] = serializers[ks]\n }\n\n for (const bk in options.serializers) {\n instance[serializersSym][bk] = options.serializers[bk]\n }\n const bindingsSymbols = Object.getOwnPropertySymbols(options.serializers)\n for (var bi = 0; bi < bindingsSymbols.length; bi++) {\n const bks = bindingsSymbols[bi]\n instance[serializersSym][bks] = options.serializers[bks]\n }\n } else instance[serializersSym] = serializers\n if (options.hasOwnProperty('formatters')) {\n const { level, bindings: chindings, log } = options.formatters\n instance[formattersSym] = buildFormatters(\n level || formatters.level,\n chindings || resetChildingsFormatter,\n log || formatters.log\n )\n } else {\n instance[formattersSym] = buildFormatters(\n formatters.level,\n resetChildingsFormatter,\n formatters.log\n )\n }\n if (options.hasOwnProperty('customLevels') === true) {\n assertNoLevelCollisions(this.levels, options.customLevels)\n instance.levels = mappings(options.customLevels, instance[useOnlyCustomLevelsSym])\n genLsCache(instance)\n }\n\n // redact must place before asChindings and only replace if exist\n if ((typeof options.redact === 'object' && options.redact !== null) || Array.isArray(options.redact)) {\n instance.redact = options.redact // replace redact directly\n const stringifiers = redaction(instance.redact, stringify)\n const formatOpts = { stringify: stringifiers[redactFmtSym] }\n instance[stringifySym] = stringify\n instance[stringifiersSym] = stringifiers\n instance[formatOptsSym] = formatOpts\n }\n\n instance[chindingsSym] = asChindings(instance, bindings)\n const childLevel = options.level || this.level\n instance[setLevelSym](childLevel)\n\n return instance\n}\n\nfunction bindings () {\n const chindings = this[chindingsSym]\n const chindingsJson = `{${chindings.substr(1)}}` // at least contains ,\"pid\":7068,\"hostname\":\"myMac\"\n const bindingsFromJson = JSON.parse(chindingsJson)\n delete bindingsFromJson.pid\n delete bindingsFromJson.hostname\n return bindingsFromJson\n}\n\nfunction setBindings (newBindings) {\n const chindings = asChindings(this, newBindings)\n this[chindingsSym] = chindings\n delete this[parsedChindingsSym]\n}\n\nfunction write (_obj, msg, num) {\n const t = this[timeSym]()\n const mixin = this[mixinSym]\n const objError = _obj instanceof Error\n let obj\n\n if (_obj === undefined || _obj === null) {\n obj = mixin ? mixin({}) : {}\n } else {\n obj = Object.assign(mixin ? mixin(_obj) : {}, _obj)\n if (!msg && objError) {\n msg = _obj.message\n }\n\n if (objError) {\n obj.stack = _obj.stack\n if (!obj.type) {\n obj.type = 'Error'\n }\n }\n }\n\n const s = this[asJsonSym](obj, msg, num, t)\n\n const stream = this[streamSym]\n if (stream[needsMetadataGsym] === true) {\n stream.lastLevel = num\n stream.lastObj = obj\n stream.lastMsg = msg\n stream.lastTime = t.slice(this[timeSliceIndexSym])\n stream.lastLogger = this // for child loggers\n }\n if (stream instanceof SonicBoom) stream.write(s)\n else stream.write(flatstr(s))\n}\n\nfunction flush () {\n const stream = this[streamSym]\n if ('flush' in stream) stream.flush()\n}\n", "'use strict'\n/* eslint no-prototype-builtins: 0 */\nconst os = require('os')\nconst stdSerializers = require('pino-std-serializers')\nconst redaction = require('./lib/redaction')\nconst time = require('./lib/time')\nconst proto = require('./lib/proto')\nconst symbols = require('./lib/symbols')\nconst { assertDefaultLevelFound, mappings, genLsCache } = require('./lib/levels')\nconst {\n createArgsNormalizer,\n asChindings,\n final,\n stringify,\n buildSafeSonicBoom,\n buildFormatters,\n noop\n} = require('./lib/tools')\nconst { version } = require('./lib/meta')\nconst {\n chindingsSym,\n redactFmtSym,\n serializersSym,\n timeSym,\n timeSliceIndexSym,\n streamSym,\n stringifySym,\n stringifiersSym,\n setLevelSym,\n endSym,\n formatOptsSym,\n messageKeySym,\n nestedKeySym,\n mixinSym,\n useOnlyCustomLevelsSym,\n formattersSym,\n hooksSym\n} = symbols\nconst { epochTime, nullTime } = time\nconst { pid } = process\nconst hostname = os.hostname()\nconst defaultErrorSerializer = stdSerializers.err\nconst defaultOptions = {\n level: 'info',\n messageKey: 'msg',\n nestedKey: null,\n enabled: true,\n prettyPrint: false,\n base: { pid, hostname },\n serializers: Object.assign(Object.create(null), {\n err: defaultErrorSerializer\n }),\n formatters: Object.assign(Object.create(null), {\n bindings (bindings) {\n return bindings\n },\n level (label, number) {\n return { level: number }\n }\n }),\n hooks: {\n logMethod: undefined\n },\n timestamp: epochTime,\n name: undefined,\n redact: null,\n customLevels: null,\n levelKey: undefined,\n useOnlyCustomLevels: false\n}\n\nconst normalize = createArgsNormalizer(defaultOptions)\n\nconst serializers = Object.assign(Object.create(null), stdSerializers)\n\nfunction pino (...args) {\n const instance = {}\n const { opts, stream } = normalize(instance, ...args)\n const {\n redact,\n crlf,\n serializers,\n timestamp,\n messageKey,\n nestedKey,\n base,\n name,\n level,\n customLevels,\n useLevelLabels,\n changeLevelName,\n levelKey,\n mixin,\n useOnlyCustomLevels,\n formatters,\n hooks\n } = opts\n\n const allFormatters = buildFormatters(\n formatters.level,\n formatters.bindings,\n formatters.log\n )\n\n if (useLevelLabels && !(changeLevelName || levelKey)) {\n process.emitWarning('useLevelLabels is deprecated, use the formatters.level option instead', 'Warning', 'PINODEP001')\n allFormatters.level = labelsFormatter\n } else if ((changeLevelName || levelKey) && !useLevelLabels) {\n process.emitWarning('changeLevelName and levelKey are deprecated, use the formatters.level option instead', 'Warning', 'PINODEP002')\n allFormatters.level = levelNameFormatter(changeLevelName || levelKey)\n } else if ((changeLevelName || levelKey) && useLevelLabels) {\n process.emitWarning('useLevelLabels is deprecated, use the formatters.level option instead', 'Warning', 'PINODEP001')\n process.emitWarning('changeLevelName and levelKey are deprecated, use the formatters.level option instead', 'Warning', 'PINODEP002')\n allFormatters.level = levelNameLabelFormatter(changeLevelName || levelKey)\n }\n\n if (serializers[Symbol.for('pino.*')]) {\n process.emitWarning('The pino.* serializer is deprecated, use the formatters.log options instead', 'Warning', 'PINODEP003')\n allFormatters.log = serializers[Symbol.for('pino.*')]\n }\n\n if (!allFormatters.bindings) {\n allFormatters.bindings = defaultOptions.formatters.bindings\n }\n if (!allFormatters.level) {\n allFormatters.level = defaultOptions.formatters.level\n }\n\n const stringifiers = redact ? redaction(redact, stringify) : {}\n const formatOpts = redact\n ? { stringify: stringifiers[redactFmtSym] }\n : { stringify }\n const end = '}' + (crlf ? '\\r\\n' : '\\n')\n const coreChindings = asChindings.bind(null, {\n [chindingsSym]: '',\n [serializersSym]: serializers,\n [stringifiersSym]: stringifiers,\n [stringifySym]: stringify,\n [formattersSym]: allFormatters\n })\n\n let chindings = ''\n if (base !== null) {\n if (name === undefined) {\n chindings = coreChindings(base)\n } else {\n chindings = coreChindings(Object.assign({}, base, { name }))\n }\n }\n\n const time = (timestamp instanceof Function)\n ? timestamp\n : (timestamp ? epochTime : nullTime)\n const timeSliceIndex = time().indexOf(':') + 1\n\n if (useOnlyCustomLevels && !customLevels) throw Error('customLevels is required if useOnlyCustomLevels is set true')\n if (mixin && typeof mixin !== 'function') throw Error(`Unknown mixin type \"${typeof mixin}\" - expected \"function\"`)\n\n assertDefaultLevelFound(level, customLevels, useOnlyCustomLevels)\n const levels = mappings(customLevels, useOnlyCustomLevels)\n\n Object.assign(instance, {\n levels,\n [useOnlyCustomLevelsSym]: useOnlyCustomLevels,\n [streamSym]: stream,\n [timeSym]: time,\n [timeSliceIndexSym]: timeSliceIndex,\n [stringifySym]: stringify,\n [stringifiersSym]: stringifiers,\n [endSym]: end,\n [formatOptsSym]: formatOpts,\n [messageKeySym]: messageKey,\n [nestedKeySym]: nestedKey,\n [serializersSym]: serializers,\n [mixinSym]: mixin,\n [chindingsSym]: chindings,\n [formattersSym]: allFormatters,\n [hooksSym]: hooks,\n silent: noop\n })\n\n Object.setPrototypeOf(instance, proto())\n\n genLsCache(instance)\n\n instance[setLevelSym](level)\n\n return instance\n}\n\nfunction labelsFormatter (label, number) {\n return { level: label }\n}\n\nfunction levelNameFormatter (name) {\n return function (label, number) {\n return { [name]: number }\n }\n}\n\nfunction levelNameLabelFormatter (name) {\n return function (label, number) {\n return { [name]: label }\n }\n}\n\nmodule.exports = pino\n\nmodule.exports.extreme = (dest = process.stdout.fd) => {\n process.emitWarning(\n 'The pino.extreme() option is deprecated and will be removed in v7. Use pino.destination({ sync: false }) instead.',\n { code: 'extreme_deprecation' }\n )\n return buildSafeSonicBoom({ dest, minLength: 4096, sync: false })\n}\n\nmodule.exports.destination = (dest = process.stdout.fd) => {\n if (typeof dest === 'object') {\n dest.dest = dest.dest || process.stdout.fd\n return buildSafeSonicBoom(dest)\n } else {\n return buildSafeSonicBoom({ dest, minLength: 0, sync: true })\n }\n}\n\nmodule.exports.final = final\nmodule.exports.levels = mappings()\nmodule.exports.stdSerializers = serializers\nmodule.exports.stdTimeFunctions = Object.assign({}, time)\nmodule.exports.symbols = symbols\nmodule.exports.version = version\n\n// Enables default and name export with TypeScript and Babel\nmodule.exports.default = pino\nmodule.exports.pino = pino\n", "/*\n * Wrap the console logging functions with 'pino' JSON logger\n * when we are running as a lambda\n */\n\nexport const awsCloudWatchTag = { awsTag: 'userLogs' }\nconst util = require('util')\nconst pino = require('pino')\n\n// The following console function write to stdout,\n// but we do not support them when running as Lambda.\n// console.count\n// console.countReset\n// console.dirxml\n// console.group\n// console.table\n\n// Because the enable() and disable() functions can\n// be called multiple, overlapping times, we need to\n// put these two variables into a global.\n// istanbul ignore else\nconst layer0OriginalConsole = {\n assert: console.assert,\n debug: console.debug,\n dir: console.dir,\n error: console.error,\n info: console.info,\n log: console.log,\n time: console.time,\n timeEnd: console.timeEnd,\n timeLog: console.timeLog,\n trace: console.trace,\n warn: console.warn,\n}\n\nlet _timers: { [key: string]: number } = {}\n\n/**\n * A function set as `logMethod` in Pino options in order to concatenate\n * trailing parameters to logging functions. This emulates the behavior\n * of console.log family of methods.\n *\n * More at https://github.com/pinojs/pino/blob/HEAD/docs/api.md#interpolationvalues-any\n */\nfunction pinoLogArgConcatenationMethod(args: any[], method: any) {\n if (args.length >= 2) {\n // interpolate all non-string arguments with %j which serializes objects properly\n // @ts-ignore\n method.apply(this, [\n args.map(arg => (typeof arg === 'string' ? '%s' : '%j')).join(' '),\n ...args,\n ])\n } else {\n // @ts-ignore\n method.apply(this, args)\n }\n}\n\nexport default class ConsoleWrapper {\n static _assert(condition: boolean | undefined, ...args: any[]) {\n if (!condition) {\n console.info(...args)\n }\n }\n\n static _dir(...args: any[]) {\n console.info(util.inspect(...args))\n }\n\n static _time(label: string) {\n _timers[label] = Date.now()\n }\n\n static _timeEnd(label: string) {\n ConsoleWrapper._timeLog(label)\n }\n\n static _timeLog(label: string, ...args: any[]) {\n if (!_timers[label]) {\n console.warn(`Warning: No such label '${label}' for console.timeEnd()`)\n return\n }\n const deltaTime = Date.now() - _timers[label]\n _timers[label] = Date.now()\n console.info(`${label}: ${deltaTime}ms`, ...args)\n }\n\n static enable({\n clientIp,\n requestId,\n wi,\n }: { clientIp?: string; requestId?: string; wi?: string } = {}) {\n _timers = {}\n\n let logger = pino({\n base: {\n ...awsCloudWatchTag,\n ...{ wi },\n },\n // Changing this to true because we are getting rid of cloudwatch\n // which used to add timestamps automatically. We should use the log generation time over\n // log ingestion time anyway because the former is more accurate.\n timestamp: true,\n hooks: {\n logMethod: pinoLogArgConcatenationMethod,\n },\n })\n\n if (clientIp) {\n logger = logger.child({ clientIp })\n }\n\n if (requestId) {\n logger = logger.child({ requestId })\n }\n\n console.assert = ConsoleWrapper._assert\n console.debug = logger.debug.bind(logger)\n console.dir = ConsoleWrapper._dir\n console.error = logger.error.bind(logger)\n console.info = logger.info.bind(logger)\n console.log = logger.info.bind(logger)\n console.time = ConsoleWrapper._time\n console.timeEnd = ConsoleWrapper._timeEnd\n console.timeLog = ConsoleWrapper._timeLog\n console.trace = logger.trace.bind(logger)\n console.warn = logger.warn.bind(logger)\n }\n\n static disable() {\n console.assert = layer0OriginalConsole.assert\n console.debug = layer0OriginalConsole.debug\n console.dir = layer0OriginalConsole.dir\n console.error = layer0OriginalConsole.error\n console.info = layer0OriginalConsole.info\n console.log = layer0OriginalConsole.log\n console.time = layer0OriginalConsole.time\n console.timeEnd = layer0OriginalConsole.timeEnd\n console.timeLog = layer0OriginalConsole.timeLog\n console.trace = layer0OriginalConsole.trace\n console.warn = layer0OriginalConsole.warn\n }\n}\n", "/**\n * Layer0 configuration file name.\n */\nexport const LAYER0_CONFIG_FILE = 'layer0.config.js'\n\n/**\n * Indicate asset files that need to be uploaded under a different\n * bucket key.\n * It contains values like\n * {\n * '/posts' => '/posts/index.html'\n * }\n */\nexport const LAYER0_ASSET_ALIASES_FILE = 'asset-aliases.json'\n\n/**\n * Environment variables used by Layer0.\n */\nexport const LAYER0_ENV_VARIABLES = {\n /**\n * Layer0 configuration environment variable key.\n */\n config: 'LAYER0_CONFIG',\n /**\n * Indicates whether code is running locally or in the cloud.\n * @private\n */\n deploymentType: 'LAYER0_DEPLOYMENT_TYPE',\n /**\n * Allows Layer0 development team to easily override Layer0 version\n * during development process.\n * @private\n */\n versionOverride: 'LAYER0_VERSION_OVERRIDE',\n}\n\n/**\n * Indicates that code is running in AWS.\n * @private\n */\nexport const LAYER0_DEPLOYMENT_TYPE_AWS = 'AWS'\n\n/**\n * Prefix of all Layer0 headers.\n */\nexport const LAYER0_HEADERS_PREFIX = 'x-0-'\n\n/**\n * Maximum number of user headers allowed by Layer0 platform.\n *\n * We limit the request and response headers allowed to 70. This is due to a limitation that edge has\n * which at the moment supports up to 96 headers. Edge provider itself needs to use some of those headers\n * with the remainder used by our edge code.\n *\n * NOTE: This constant must be equal ot the constant of the same name defined in Layer0 buffer proxy.\n * NOTE: If this constant is updated then the constant of the same name has to be updated in @layer0/build-lambda module.\n */\nexport const LAYER0_MAX_USER_HEADERS_ALLOWED = 70\n\n/**\n * Status code returned when there are too many request or response headers.\n *\n * Must be equal to HeaderOverflowError status code as defined in build lambda and Layer0 buffer proxy.\n */\nexport const LAYER0_TOO_MANY_HEADERS_STATUS_CODE = 542\n\n/**\n * The status code returned when the layer0_prefetch query param is present and a response could not be found in the cache.\n */\nexport const LAYER0_UNCACHED_PREFETCH_STATUS = 412\n\n/**\n * CDN-as-code configuration actions\n */\nexport const ACTIONS = {\n setHeader: 'set-header',\n updateHeader: 'update-header',\n removeHeader: 'remove-header',\n syntheticRes: 'synthetic-response',\n updatePath: 'update-path',\n proxy: 'proxy',\n addCookie: 'add-cookie',\n updateCookie: 'update-cookie',\n removeCookie: 'remove-cookie',\n}\n\n/**\n * The backend for cloud functions\n */\nexport const BACKENDS = {\n js: '__js__',\n static: '__static__',\n permanentStatic: '__permanent_static__',\n imageOptimizer: '__image_optimizer__',\n}\n\n/**\n * The hostname used for the internal service running the user's application.\n */\nexport const JS_BACKEND_HOSTNAME = '127.0.0.1'\n\nexport const HTTP_METHODS = {\n head: 'head',\n get: 'get',\n post: 'post',\n delete: 'delete',\n put: 'put',\n patch: 'patch',\n options: 'options',\n}\n\n/**\n * Common HTTP headers.\n */\nexport const HTTP_HEADERS = {\n acceptEncoding: 'accept-encoding',\n authorization: 'authorization',\n cacheControl: 'cache-control',\n contentEncoding: 'content-encoding',\n contentLength: 'content-length',\n contentType: 'content-type',\n cookie: 'cookie',\n host: 'host',\n location: 'location',\n serverTiming: 'server-timing',\n setCookie: 'set-cookie',\n userAgent: 'user-agent',\n vary: 'vary',\n via: 'via',\n x0Browser: 'x-0-browser',\n x0CacheControl: 'x-0-cache-control',\n x0CacheVersion: 'x-0-cache-version',\n x0CachingStatus: 'x-0-caching-status',\n x0ClientIp: 'x-0-client-ip',\n x0Components: 'x-0-components',\n x0Destination: 'x-0-destination',\n x0Device: 'x-0-device',\n x0DeviceIsBot: 'x-0-device-is-bot',\n x0GeoCity: 'x-0-geo-city',\n x0GeoCountryCode: 'x-0-geo-country-code',\n x0GeoLatitude: 'x-0-geo-latitude',\n x0GeoLongitude: 'x-0-geo-longitude',\n x0GeoPostalCode: 'x-0-geo-postal-code',\n x0MatchedRoutes: 'x-0-matched-routes',\n x0Protocol: 'x-0-protocol',\n x0Route: 'x-0-route',\n x0Status: 'x-0-status',\n x0SurrogateKey: 'x-0-surrogate-key',\n x0T: 'x-0-t',\n x0UserT: 'x-0-user-t',\n x0Vendor: 'x-0-vendor',\n x0Version: 'x-0-version',\n xForwardedFor: 'x-forwarded-for',\n xRequestId: 'x-request-id',\n xSwCacheControl: 'x-sw-cache-control',\n}\n\n/**\n * Values for x-0-caching-status\n */\nexport const CACHING_STATUS = {\n ok: 'ok',\n private: 'private',\n method: 'method',\n bodyTooBig: 'body-too-big',\n code: 'code',\n setCookie: 'set-cookie',\n noMaxAge: 'no-max-age',\n}\n\nexport const CACHEABLE_METHODS = new Set<string>(['get', 'head'])\n\n/**\n * When present, this query parameter will cause Layer0 to return a 412 status\n * if a response could not be found in the cache.\n */\nexport const THROTTLED_QUERY_PARAM = 'layer0_prefetch'\n/**\n * Same value as above but DEPRECATED.\n */\nexport const PREFETCH_QUERY_PARAM = THROTTLED_QUERY_PARAM\n\n/**\n Adds query parameter with custom maxAgeSecond value for service-worker cache if it's specified in PrefetchConfiguration\n */\nexport const PREFETCH_TTL_PARAM = 'layer0_prefetch_ttl'\n\n/**\n Labels the request so that devtools will display as prefetched\n */\nexport const DEVTOOLS_PREFETCH_QUERY_PARAM = 'layer0_dt_pf'\n\n/**\n * The name of the query parameter used to detect HEAD requests.\n */\nexport const HEAD_QUERY_PARAM = 'layer0_head'\n\n/**\n * The name of the query parameter used for the body of POST requests, which is used for the cache key\n */\nexport const POST_BODY_QUERY_PARAM = 'pref_layer0_body'\n\n/**\n * The name of the query parameter used for the method of requests, which is used for the cache key\n */\nexport const METHOD_QUERY_PARAM = 'pref_layer0_method'\n\n/**\n * Route Group name, which is used in router for fallback routes\n */\nexport const ROUTES_FALLBACK = 'fallback'\n\n/**\n * Route Group name, which is used in router for error page routes\n */\nexport const ROUTES_CATCH_GROUP = 'catch'\n\n/**\n * Route Group name, which is used in router for noindex routes\n */\nexport const ROUTES_NOINDEX_GROUP = 'noindex'\n\n/**\n * The path for the built-in image optimizer.\n */\nexport const LAYER0_IMAGE_OPTIMIZER_PATH = '/__layer0_image_optimizer'\n\n/**\n * Is current environment 'browser'\n */\nexport const IS_BROWSER = typeof window !== 'undefined'\n\n/**\n * Brotli encoding code.\n */\nexport const BROTLI_ENCODING = 'br'\n\n/**\n * Gzip encoding code.\n */\nexport const GZIP_ENCODING = 'gzip'\n", "import { LAYER0_DEPLOYMENT_TYPE_AWS, LAYER0_ENV_VARIABLES } from './constants'\n\n/**\n * Used to determine if the app is running in the cloud.\n * @returns `true` when running in the cloud, `false` otherwise\n */\nexport function isCloud(): boolean {\n return process.env[LAYER0_ENV_VARIABLES.deploymentType] === LAYER0_DEPLOYMENT_TYPE_AWS\n}\n\n/**\n * Returns true when running locally, either in dev or production mode\n */\nexport function isLocal(): boolean {\n return process.env.LAYER0_LOCAL === 'true'\n}\n\n/**\n * Used to determine if the app is running on a production build.\n * @returns `true` when running a production build, either locally or in the cloud; `false` otherwise\n */\nexport function isProductionBuild(): boolean {\n return process.env.NODE_ENV === 'production'\n}\n\n/**\n * Used to determine if the app is running in `layer0 run` development environment\n * @returns `true` when running with `layer0 run`without production flag, `false` otherwise\n */\nexport function isLayer0RunDev(): boolean {\n return !isCloud() && !isProductionBuild()\n}\n\n/**\n * Determines whether or not we are running in a browser\n * @returns `true` when running in a browser, otherwise false\n */\nexport function isBrowser() {\n return typeof window !== 'undefined'\n}\n", "/*\n * Wrap the stdout/stderr write function to get a JSON output with request metadata\n * when we are running as a lambda\n */\n\nconst environment = require('../environment')\nimport ConsoleWrapper, { awsCloudWatchTag } from './consoleWrapper'\nimport LambdaInstance from './lambdaInstance'\n\nconst layer0OriginalOutputs: any = {\n stdoutWrite: process.stdout.write,\n stderrWrite: process.stderr.write,\n}\n\nconst PINO_ERROR_LEVEL = 50\nconst PINO_INFO_LEVEL = 30\n\nlet layer0EnabledCount: number = 0\n\nconst JSON_LOG_IDENTIFIER = JSON.stringify(awsCloudWatchTag).replace('{', '').replace('}', '')\n\n/**\n * Check if this log is already wrapped into a json payload\n * @param log\n */\nfunction isLayer0JsonLog(log: string) {\n return log.indexOf(JSON_LOG_IDENTIFIER) >= 0\n}\n\n// Connascence of values with LeDeployer UI: it depends on the values to correctly\n// render the logged request data.\n// Connascence of values with Log Streamr lambda: it depends on these values to\n// correctly apply the filtering,\nconst DOWNSTREAM_REQUEST_INFO_LEVEL = 100\nconst DOWNSTREAM_RESPONSE_INFO_LEVEL = 101\nconst UPSTREAM_REQUEST_INFO_LEVEL = 102\nconst UPSTREAM_RESPONSE_INFO_LEVEL = 103\nconst UPSTREAM_RESPONSE_BODY_INFO_LEVEL = 104\n\n// Base JSON object for the ongoing request. In AWS lambda all\n// requests are processed serially so we can keep this globally.\n// If we have to make this work for local development, we will\n// have to use \"thread local storage\".\nlet currentBaseJsonObject: any = {}\n\nexport function deepRequestInspectionLogger(instance: LambdaInstance) {\n // Logs the HTTP request information at the given level, provided that\n // the HTTP request logging is globally enabled.\n // This functionn never throws as it is just related to logging and we don't\n // want a request to ever fail due to logging issues.\n function logHttpRequestInfo(data: any, level: number) {\n try {\n // A global that is ultimately set through the UI in the environment version.\n if (process.env.LAYER0_HTTP_REQUEST_LOGGING === '1') {\n layer0OriginalOutputs.stdoutWrite.apply(process.stdout, [\n JSON.stringify({\n level,\n time: Date.now(),\n wi: instance.id,\n ...currentBaseJsonObject,\n data,\n }),\n ])\n layer0OriginalOutputs.stdoutWrite.apply(process.stdout, ['\\n'])\n }\n } catch (e) {\n // istanbul ignore next\n console.error(`Error while logging HTTP request info at level ${level}: ${e && e.message}`)\n }\n }\n\n function logDownstreamRequestInfo(data: any) {\n return logHttpRequestInfo(data, DOWNSTREAM_REQUEST_INFO_LEVEL)\n }\n function logDownstreamResponseInfo(data: any) {\n return logHttpRequestInfo(data, DOWNSTREAM_RESPONSE_INFO_LEVEL)\n }\n function logUpstreamRequestInfo(data: any) {\n return logHttpRequestInfo(data, UPSTREAM_REQUEST_INFO_LEVEL)\n }\n function logUpstreamResponseInfo(data: any) {\n return logHttpRequestInfo(data, UPSTREAM_RESPONSE_INFO_LEVEL)\n }\n function logUpstreamResponseBodyInfo(data: any) {\n return logHttpRequestInfo(data, UPSTREAM_RESPONSE_BODY_INFO_LEVEL)\n }\n return {\n logDownstreamRequestInfo,\n logDownstreamResponseInfo,\n logUpstreamRequestInfo,\n logUpstreamResponseInfo,\n logUpstreamResponseBodyInfo,\n }\n}\n\n/**\n * Overrides the given stream #write method so that every chunk\n * of text sent to that function is wrapped into a JSON object\n * as a 'msg' attribute.\n * The rest of the JSON object is defined by baseJsonObject\n *\n * @param stream Stream to override\n * @param baseJsonObject JSON object into which we inject the stream message\n */\nfunction jsonifyWriteStream(stream: NodeJS.WritableStream, baseJsonObject: object) {\n const originalWrite = stream.write\n\n // @ts-ignore\n stream.write = function (chunk: Uint8Array | string, ...otherArgs) {\n // Converts Buffer or Uint8Array to string\n let convertedChunk\n if (typeof chunk === 'object') {\n convertedChunk = Buffer.from(chunk).toString()\n } else {\n convertedChunk = chunk\n }\n\n const dynamicObject = {\n time: Date.now(),\n }\n\n // Let JSON pass through without wrapping it again.\n if (chunk && !isLayer0JsonLog(convertedChunk)) {\n chunk =\n JSON.stringify({\n ...baseJsonObject,\n ...dynamicObject,\n msg: convertedChunk,\n }) + '\\n'\n }\n\n // @ts-ignore\n return originalWrite.apply(stream, [chunk, ...otherArgs])\n }\n}\n\nconst stdStreamsWrapper = {\n /**\n * Wraps console.xxx methods AND standard streams into a JSON payload that will\n * be sent back to the final user in the log streaming interface.\n *\n * Notes:\n * - We have to wrap standard streams because some logging libraries (like 'consola')\n * writes to those directly without going through console.xxx\n * - We have to wrap console.xxx methods too, as they don't seem to be bound to\n * standard streams in AWS Lambda Environment. That wrapper (using pino) streams\n * to process.stdout, leading to the point below.\n * - Both notes above would result in a double json encapsulation when logging via\n * console.xxx methods. We prevent that in our standard stream wrapper by detecting\n * a json string that coming from pino logger.\n */\n enable: ({\n clientIp,\n requestId,\n wi,\n }: { clientIp?: string; requestId?: string; wi?: string } = {}) => {\n if (!environment.isCloud()) {\n return\n }\n\n if (layer0EnabledCount === 0) {\n let basePayload: any = awsCloudWatchTag\n if (clientIp) {\n basePayload = {\n ...basePayload,\n clientIp,\n }\n }\n\n if (requestId) {\n basePayload = {\n ...basePayload,\n requestId,\n }\n }\n\n if (wi) {\n basePayload = {\n ...basePayload,\n wi,\n }\n }\n\n // Since lambda processes the requests serially, we can rely on a global.\n currentBaseJsonObject = basePayload\n\n // Wrap standard streams as some\n // As we don't have the same degree of \"level\" details as console methods, we\n // assign INFO for stdout and ERROR for stderr\n jsonifyWriteStream(process.stdout, { level: PINO_INFO_LEVEL, ...basePayload })\n jsonifyWriteStream(process.stderr, { level: PINO_ERROR_LEVEL, ...basePayload })\n\n // Wrap console.xxx methods\n ConsoleWrapper.enable({ clientIp, requestId, wi })\n }\n\n layer0EnabledCount++\n },\n\n disable: () => {\n if (!environment.isCloud()) {\n return\n }\n\n layer0EnabledCount--\n\n if (layer0EnabledCount === 0) {\n process.stdout.write = layer0OriginalOutputs.stdoutWrite\n process.stderr.write = layer0OriginalOutputs.stderrWrite\n currentBaseJsonObject = {}\n\n ConsoleWrapper.disable()\n }\n },\n}\n\nexport default stdStreamsWrapper\n", "import { gunzipSync, brotliDecompressSync } from 'zlib'\nimport { HTTP_HEADERS, BROTLI_ENCODING, GZIP_ENCODING } from '../constants'\n\n// We limit the logged body due to CloudWatch 256Kb per line limitation,\n// CloudWatch costs and, last but not least, websocket exploding on\n// larger sizes.\n// Tests have shown that 8Kb length results in responsive UI with enough\n// captured information.\nconst MAX_BODY_LENGTH = 8 * 1024\n\nfunction base64encode(str: string) {\n return Buffer.from(str).toString('base64')\n}\n\n// Gets the content encoding value from the given headers, no matter\n// what case the header has been passed through.\nfunction getContentEncoding(headers?: any) {\n if (!headers) {\n return undefined\n }\n\n let encoding = headers[HTTP_HEADERS.contentEncoding]\n if (!encoding) {\n for (let name of Object.keys(headers)) {\n if (name.toLowerCase() === HTTP_HEADERS.contentEncoding) {\n encoding = headers[name]\n break\n }\n }\n }\n\n if (Array.isArray(encoding)) {\n if (encoding.length) {\n encoding = encoding[0]\n } else {\n encoding = undefined\n }\n }\n\n return encoding\n}\n\n// For the purposes of HTTP request and response logging we log the body.\n// This function returns an object with possibly truncated body, full body\n// length and a flag set to true if the body was truncated.\n// The object is directly included in the HTTP request logging result.\n// This functionn never throws as it is just related to logging and we don't\n// want a request to ever fail due to logging issues.\nexport default function getBodyLoggingData(rawBody: string | Buffer[], headers?: any) {\n try {\n if (!rawBody || rawBody.length === 0) {\n return {}\n }\n\n let body\n if (typeof rawBody === 'string') {\n body = Buffer.from(rawBody, 'base64')\n } else if (Buffer.isBuffer(rawBody)) {\n body = rawBody\n } else if (Array.isArray(rawBody)) {\n body = Buffer.concat(rawBody)\n } else {\n // We don't know what we have so the best we can do is return a user visible error.\n return {\n body: base64encode(`Unknown body format: ${typeof rawBody}`),\n // @ts-ignore\n bodyLength: rawBody.length,\n bodyTruncated: true,\n }\n }\n\n let encoding = getContentEncoding(headers)?.toLowerCase()\n try {\n switch (encoding) {\n case GZIP_ENCODING: {\n body = gunzipSync(body)\n break\n }\n case BROTLI_ENCODING: {\n body = brotliDecompressSync(body)\n break\n }\n default: {\n // Nothing to do.\n }\n }\n } catch (e) {\n return {\n body: base64encode(`Error while decompressing the body [${encoding}]: ${e.message}`),\n bodyLength: body.length,\n bodyTruncated: true,\n }\n }\n\n return {\n body: body.slice(0, MAX_BODY_LENGTH).toString('base64'),\n bodyLength: body.length,\n bodyTruncated: body.length > MAX_BODY_LENGTH,\n }\n } catch (e) {\n // istanbul ignore next\n return {\n body: base64encode(`Error while getting body logging data: ${e && e.message}`),\n bodyLength: rawBody.length,\n bodyTruncated: true,\n }\n }\n}\n", "'use strict'\n/* istanbul ignore file */\n\n// This entire module is written in JavaScript to allow for *very* precise and low-level overriding of\n// built-in NodeJS modules. When done in TypeScript it introduces another layer of abstraction and then\n// compilation which may or may not be compatible with what we are trying to do here.\n\nconst { inherits } = require('util')\n\nconst { deepRequestInspectionLogger } = require('./stdStreamsWrapper')\n\nconst http = require('http')\nconst https = require('https')\nconst url = require('url')\nconst { HTTP_HEADERS } = require('../constants')\nconst getBodyLoggingData = require('./getBodyLoggingData').default\n\n// Regex used to detect when the upstream requests are going to Layer0 static backend.\n// The format of such domains is `xdn-user-assets-<AWS region>-<AWS Organization ID>.s3.amazonaws.com`\n// AWS regions are named `us-east-1`, `us-east-2`, etc.\n// AWS Organization IDs are only numbers.\nconst LAYER0_STATIC_BACKEND_DOMAIN_REGEX =\n /^xdn-user-assets-[a-zA-Z0-9-]+-[0-9]+\\.s3\\.amazonaws\\.com$/\n\n// Copied from Node 14.x source code https://github.com/nodejs/node/blob/78680c1cbc8b0c435963bc512e826b2a6227c315/lib/internal/url.js#L1267\nfunction urlToOptions(url) {\n const options = {\n protocol: url.protocol,\n hostname:\n typeof url.hostname === 'string' && url.hostname.startsWith('[')\n ? url.hostname.slice(1, -1)\n : url.hostname,\n hash: url.hash,\n search: url.search,\n pathname: url.pathname,\n path: `${url.pathname || ''}${url.search || ''}`,\n href: url.href,\n }\n if (url.port !== '') {\n options.port = Number(url.port)\n }\n if (url.username || url.password) {\n options.auth = `${url.username}:${url.password}`\n }\n return options\n}\n\n// Adapted from Node 14.x source code https://github.com/nodejs/node/blob/78680c1cbc8b0c435963bc512e826b2a6227c315/lib/_http_client.js#L92\nlet urlWarningEmitted = false\nconst searchParams = Symbol('query')\nconst searchParamsSymbol = searchParams\nfunction normalizeClientRequestArgs(input, options, cb) {\n if (typeof input === 'string') {\n const urlStr = input\n try {\n input = urlToOptions(new URL(urlStr))\n } catch (err) {\n input = url.parse(urlStr)\n if (!input.hostname) {\n throw err\n }\n if (!urlWarningEmitted && !process.noDeprecation) {\n urlWarningEmitted = true\n process.emitWarning(\n `The provided URL ${urlStr} is not a valid URL, and is supported ` +\n 'in the http module solely for compatibility.',\n 'DeprecationWarning',\n 'DEP0109'\n )\n }\n }\n } else if (input && input[searchParamsSymbol] && input[searchParamsSymbol][searchParamsSymbol]) {\n // url.URL instance\n input = urlToOptions(input)\n } else {\n cb = options\n options = input\n input = null\n }\n\n if (typeof options === 'function') {\n cb = options\n options = input || {}\n } else {\n options = Object.assign(input || {}, options)\n }\n\n return { options, callback: cb }\n}\n\n// The original HTTP module ClientRequest. We will use this class\n// whenever we are not intercepting the requests.\nconst OriginalClientRequest = http.ClientRequest\n\n// Upstream counter per downstream request. It is reset every time\n// the request logging is enabled. Since Lambda is serially executed\n// we know that this will never have multiple concurrent requests.\nlet upstreamRequestCounter = 0\nlet upstreamRequestStart = []\n\n// The current interception options. These are set anew on every new\n// lambda (downstream) request.\nlet upstreamRequestInterceptionOptions = {}\n\n// The value of the `via` header to be injected into all upstream requests\n// calculated for the current lambda (downstream) request. This header is\n// controlled by the platform so that it can detect and prevent request loops.\nlet upstreamRequestViaHeaderValue = 'Layer0'\n\n// The value of `x-0-cache-version` header needs to be preserved and sent upstream as it\n// has been received from the downstream. This allows us to have all the reentrant\n// requests/response be part of the same cache version as the most downstream\n// request/response.\nlet downstreamX0CacheVersionHeaderValue = null\n\n// Calculate the correct upstream request `via` header value. See above on why we do this.\n// The event here is the Lambda event from which we get the downstream `via` header\n// which is under the control of the platform to prevent request loops.\n// If no Layer0 downstream component has injected `Layer0` string into the `via` header\n// then we will inject it.\nfunction getUpstreamRequestViaHeaderValue(event) {\n let upstreamViaHeaderValue = null\n\n const headers = (event && event.multiValueHeaders) || {}\n\n // Get the downstream `via` header value if it's available.\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() === HTTP_HEADERS.via) {\n upstreamViaHeaderValue = value\n break\n }\n }\n\n if (!upstreamViaHeaderValue) {\n upstreamViaHeaderValue = 'Layer0'\n }\n\n if (!/\\bLayer0\\b/.test(upstreamViaHeaderValue)) {\n upstreamViaHeaderValue = upstreamViaHeaderValue + ', Layer0'\n }\n\n return upstreamViaHeaderValue\n}\n\n// Return the downstream request `x-0-cache-version` header value. See above on why we do this.\nfunction getX0CacheVersionHeaderValue(event) {\n const headers = (event && event.multiValueHeaders) || {}\n\n // Get the downstream `x-0-cache-version` header value if it's available.\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() === HTTP_HEADERS.x0CacheVersion) {\n return value\n }\n }\n}\n\nfunction injectPlatformControlledHeaders(\n headers,\n viaHeaderValue,\n downstreamX0CacheVersionHeaderValue\n) {\n // Delete the headers in whatever case they may appear.\n for (let name of Object.keys(headers)) {\n const lowerCaseName = name.toLowerCase()\n if (lowerCaseName === HTTP_HEADERS.via || lowerCaseName === HTTP_HEADERS.x0CacheVersion) {\n delete headers[name]\n }\n }\n // Now set the values of platform controlled headers.\n if (viaHeaderValue) {\n headers[HTTP_HEADERS.via] = viaHeaderValue\n }\n if (downstreamX0CacheVersionHeaderValue) {\n headers[HTTP_HEADERS.x0CacheVersion] = downstreamX0CacheVersionHeaderValue\n }\n}\n\n// Inherits native ClientRequest class in order to intercept the\n// upstream requests and log them.\nfunction Layer0ClientRequest(...args) {\n const { options, callback } = normalizeClientRequestArgs(...args)\n\n if (!options.headers) {\n options.headers = {}\n }\n injectPlatformControlledHeaders(\n options.headers,\n upstreamRequestViaHeaderValue,\n downstreamX0CacheVersionHeaderValue\n )\n\n // We don't log requests going to the same process on a different port.\n // We also don't log requests to Layer0 static assets as developers don't\n // expect to see internal platform requests.\n // `xdn-user-assets-` has connascence of value with Layer0 subaccount deploy lambda\n // which creates and forms the name of the bucket.\n const host = options.hostname || options.host\n const loggingDisabled =\n host &&\n (['127.0.0.1', '0.0.0.0', '::1', '0:0:0:0:0:0:0:1', 'localhost'].includes(host) ||\n LAYER0_STATIC_BACKEND_DOMAIN_REGEX.test(host))\n\n if (loggingDisabled) {\n // On disabled logging, invoke the native Node ClientRequest.\n OriginalClientRequest.call(this, options, callback)\n } else {\n // On enabled logging, patch the native ClientRequest to log request, response and response body.\n const wrappedCallback = patchClientRequest(this, options, callback)\n // After patching and wrapping invoke the native ClientRequest (aka `super`)\n OriginalClientRequest.call(this, options, wrappedCallback)\n }\n}\n\n// Patches the native ClientRequest in order to intercept upstream request and response data and log it.\nfunction patchClientRequest(clientRequest, options, callback) {\n const id = upstreamRequestCounter++\n upstreamRequestStart[id] = Date.now()\n\n // For easier log tracking we log some of the upstream request info on upstream requests *and*\n // on upstream responses.\n const upstreamRequestInfo = {\n method: options.method,\n protocol: options.protocol,\n host: options.hostname || options.host,\n port: options.port,\n path: options.path,\n }\n\n const driLogger = new deepRequestInspectionLogger(\n upstreamRequestInterceptionOptions.lambdaInstance\n )\n\n const wrappedCallback = res => {\n const bodyBuffers = []\n\n res.once('end', () => {\n driLogger.logUpstreamResponseBodyInfo({\n id,\n ...upstreamRequestInfo,\n ...getBodyLoggingData(bodyBuffers, res.headers),\n })\n })\n\n // We only need to log upstream response and intercept the body if the\n // HTTP request logging is enabled.\n if (upstreamRequestInterceptionOptions.enableHttpRequestLogging) {\n driLogger.logUpstreamResponseInfo({\n id,\n ...upstreamRequestInfo,\n statusCode: res.statusCode,\n statusMessage: res.statusMessage,\n headers: res.headers,\n duration: Date.now() - upstreamRequestStart[id],\n })\n\n let encoding\n // We need to be aware of changes to the stream's encoding so that we\n // don't accidentally mangle the data.\n const { setEncoding } = res\n res.setEncoding = function (newEncoding) {\n encoding = newEncoding\n return setEncoding.apply(this, arguments)\n }\n\n // Capture the data as it is streamed and log it on end.\n // One danger that this poses is that it, in general case, it will\n // increase the memory use of the function compared to user code\n // running without logging. There is no way to avoid this short of\n // logging buffers as they are coming and even that would not be\n // entirely safe (as decompressing and converting a single buffer\n // to base64 also needs additional memory)\n // Replace res.push with our own implementation that stores chunks\n // We use this approach over subscribing to res.on('data') because\n // subscribing to data event turns the response stream to flowing mode\n // That means the user code might miss some data events if it hasn't subscribed\n // to 'data' event synchronously.\n const origResPush = res.push\n res.push = function (data) {\n if (data) {\n if (encoding) {\n data = Buffer.from(data, encoding)\n }\n bodyBuffers.push(data)\n }\n\n return origResPush.call(res, data)\n }\n }\n\n if (callback) {\n callback(res)\n }\n }\n\n // Patch the write and the end methods to intercept the request data.\n const requestBodyBuffers = []\n // Adds the buffer unless it's actually a callback function passed to\n // `.write` or `.end`.\n const addRequestBodyBuffer = function (buffer, encoding) {\n if (Buffer.isBuffer(buffer) || typeof buffer === 'string') {\n let internalBuffer = buffer\n if (!Buffer.isBuffer(internalBuffer)) {\n if (typeof encoding !== 'string') {\n encoding = null\n }\n internalBuffer = Buffer.from(buffer, encoding)\n }\n requestBodyBuffers.push(internalBuffer)\n }\n }\n clientRequest.write = function (buffer, encoding, callback) {\n // Capture more of the request body. As with response bodies, this\n // posses a problem of larger memory use when compared to user code on its own.\n addRequestBodyBuffer(buffer, encoding)\n\n return Object.getPrototypeOf(Object.getPrototypeOf(clientRequest)).write.call(\n clientRequest,\n buffer,\n encoding,\n callback\n )\n }.bind(clientRequest)\n clientRequest.end = function (buffer, encoding, callback) {\n // Capture the last buffer if it's being written through `.end`.\n addRequestBodyBuffer(buffer, encoding)\n\n if (upstreamRequestInterceptionOptions.enableHttpRequestLogging) {\n driLogger.logUpstreamRequestInfo({\n id,\n ...upstreamRequestInfo,\n headers: options.headers,\n ...getBodyLoggingData(requestBodyBuffers, options.headers),\n })\n }\n\n return Object.getPrototypeOf(Object.getPrototypeOf(clientRequest)).end.call(\n clientRequest,\n buffer,\n encoding,\n callback\n )\n }.bind(clientRequest)\n // We log the first error as some errors like bad certs raise error event multiple times.\n clientRequest.once('error', err => {\n if (upstreamRequestInterceptionOptions.enableHttpRequestLogging) {\n driLogger.logUpstreamResponseInfo({\n id,\n ...upstreamRequestInfo,\n duration: Date.now() - upstreamRequestStart[id],\n code: err && err.code,\n error: err && err.message,\n })\n }\n })\n\n return wrappedCallback\n}\n\n// Layer0ClientRequest extends the native ClientRequest and adds request and response\n// logging to it.\ninherits(Layer0ClientRequest, http.ClientRequest)\n\n// Current ClientRequest class. When not logging requests, this\n// is equal to the native HTTP ClientRequest. When logging requests\n// this is equal to Layer0ClientRequest.\nlet CurrentClientRequest = OriginalClientRequest\n\n// Override HTTP and HTTPS `request` functions so that they use\n// our current ClientRequest class. We have to do this in lambda\n// because by the time we get to override the HTTP/HTTPS modules\n// seem already loaded and then set to use native ClientRequest.\n\n// Copied from Node 14.x source code https://github.com/nodejs/node/blob/78680c1cbc8b0c435963bc512e826b2a6227c315/lib/http.js#L49\nhttp.request = function request(url, options, cb) {\n return new CurrentClientRequest(url, options, cb)\n}\n\n// Adapted from Node 14.x source code https://github.com/nodejs/node/blob/78680c1cbc8b0c435963bc512e826b2a6227c315/lib/https.js#L280\nhttps.request = function request(...args) {\n const { options, callback } = normalizeClientRequestArgs(...args)\n options._defaultAgent = https.globalAgent\n return new CurrentClientRequest(options, callback)\n}\n\n// Globally enables HTTP request logging by replacing the current ClientRequest\n// with Layer0ClientRequest.\nCurrentClientRequest = Layer0ClientRequest\nhttp.ClientRequest = Layer0ClientRequest\n\n// Replace the current ClientRequest with EdgioClientRequest in order to intercept\n// all HTTP requests issued by the user code inside of lambda. This allows us to:\n//\n// * perform HTTP request logging\n// * preserve platform controlled headers (`via`, `x-0-cache-version`, `layer0_bucket` cookie)\n//\n// Details:\n// * This function resets the internal counters so it cannot be used with concurrent\n// downstream requests on a single instance. AWS doesn't support this but if we need\n// to support it in local development this would need to be changed to use \"thread local storage\".\n// * Note that the enabling is global as long as it's done at the earliest possible\n// time in the lifetime of the process. Otherwise, other modules might make their\n// own copies of native ClientRequest and globally replacing it afterwards would\n// not work for those modules.\nfunction interceptRequests(event, options) {\n upstreamRequestCounter = 0\n upstreamRequestStart = []\n upstreamRequestInterceptionOptions = options || {}\n upstreamRequestViaHeaderValue = getUpstreamRequestViaHeaderValue(event)\n downstreamX0CacheVersionHeaderValue = getX0CacheVersionHeaderValue(event)\n}\n\nmodule.exports = {\n interceptRequests,\n}\n", "'use strict'\n\nexports.fromCallback = function (fn) {\n return Object.defineProperty(function () {\n if (typeof arguments[arguments.length - 1] === 'function') fn.apply(this, arguments)\n else {\n return new Promise((resolve, reject) => {\n arguments[arguments.length] = (err, res) => {\n if (err) return reject(err)\n resolve(res)\n }\n arguments.length++\n fn.apply(this, arguments)\n })\n }\n }, 'name', { value: fn.name })\n}\n\nexports.fromPromise = function (fn) {\n return Object.defineProperty(function () {\n const cb = arguments[arguments.length - 1]\n if (typeof cb !== 'function') return fn.apply(this, arguments)\n else fn.apply(this, arguments).then(r => cb(null, r), cb)\n }, 'name', { value: fn.name })\n}\n", "var constants = require('constants')\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = process.env.GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n if (!cwd)\n cwd = origCwd.call(process)\n return cwd\n}\ntry {\n process.cwd()\n} catch (er) {}\n\nvar chdir = process.chdir\nprocess.chdir = function(d) {\n cwd = null\n chdir.call(process, d)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n // (re-)implement some things that are known busted or missing.\n\n // lchmod, broken prior to 0.6.2\n // back-port the fix here.\n if (constants.hasOwnProperty('O_SYMLINK') &&\n process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n patchLchmod(fs)\n }\n\n // lutimes implementation, or no-op\n if (!fs.lutimes) {\n patchLutimes(fs)\n }\n\n // https://github.com/isaacs/node-graceful-fs/issues/4\n // Chown should not fail on einval or eperm if non-root.\n // It should not fail on enosys ever, as this just indicates\n // that a fs doesn't support the intended operation.\n\n fs.chown = chownFix(fs.chown)\n fs.fchown = chownFix(fs.fchown)\n fs.lchown = chownFix(fs.lchown)\n\n fs.chmod = chmodFix(fs.chmod)\n fs.fchmod = chmodFix(fs.fchmod)\n fs.lchmod = chmodFix(fs.lchmod)\n\n fs.chownSync = chownFixSync(fs.chownSync)\n fs.fchownSync = chownFixSync(fs.fchownSync)\n fs.lchownSync = chownFixSync(fs.lchownSync)\n\n fs.chmodSync = chmodFixSync(fs.chmodSync)\n fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n fs.stat = statFix(fs.stat)\n fs.fstat = statFix(fs.fstat)\n fs.lstat = statFix(fs.lstat)\n\n fs.statSync = statFixSync(fs.statSync)\n fs.fstatSync = statFixSync(fs.fstatSync)\n fs.lstatSync = statFixSync(fs.lstatSync)\n\n // if lchmod/lchown do not exist, then make them no-ops\n if (!fs.lchmod) {\n fs.lchmod = function (path, mode, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchmodSync = function () {}\n }\n if (!fs.lchown) {\n fs.lchown = function (path, uid, gid, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchownSync = function () {}\n }\n\n // on Windows, A/V software can lock the directory, causing this\n // to fail with an EACCES or EPERM if the directory contains newly\n // created files. Try again on failure, for up to 60 seconds.\n\n // Set the timeout this long because some Windows Anti-Virus, such as Parity\n // bit9, may lock files for up to a minute, causing npm package install\n // failures. Also, take care to yield the scheduler. Windows scheduling gives\n // CPU to a busy looping process, which can cause the program causing the lock\n // contention to be starved of CPU by node, so the contention doesn't resolve.\n if (platform === \"win32\") {\n fs.rename = (function (fs$rename) { return function (from, to, cb) {\n var start = Date.now()\n var backoff = 0;\n fs$rename(from, to, function CB (er) {\n if (er\n && (er.code === \"EACCES\" || er.code === \"EPERM\")\n && Date.now() - start < 60000) {\n setTimeout(function() {\n fs.stat(to, function (stater, st) {\n if (stater && stater.code === \"ENOENT\")\n fs$rename(from, to, CB);\n else\n cb(er)\n })\n }, backoff)\n if (backoff < 100)\n backoff += 10;\n return;\n }\n if (cb) cb(er)\n })\n }})(fs.rename)\n }\n\n // if read() returns EAGAIN, then just try it again.\n fs.read = (function (fs$read) {\n function read (fd, buffer, offset, length, position, callback_) {\n var callback\n if (callback_ && typeof callback_ === 'function') {\n var eagCounter = 0\n callback = function (er, _, __) {\n if (er && er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n callback_.apply(this, arguments)\n }\n }\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n\n // This ensures `util.promisify` works as it does for native `fs.read`.\n read.__proto__ = fs$read\n return read\n })(fs.read)\n\n fs.readSync = (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n var eagCounter = 0\n while (true) {\n try {\n return fs$readSync.call(fs, fd, buffer, offset, length, position)\n } catch (er) {\n if (er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n continue\n }\n throw er\n }\n }\n }})(fs.readSync)\n\n function patchLchmod (fs) {\n fs.lchmod = function (path, mode, callback) {\n fs.open( path\n , constants.O_WRONLY | constants.O_SYMLINK\n , mode\n , function (err, fd) {\n if (err) {\n if (callback) callback(err)\n return\n }\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n fs.fchmod(fd, mode, function (err) {\n fs.close(fd, function(err2) {\n if (callback) callback(err || err2)\n })\n })\n })\n }\n\n fs.lchmodSync = function (path, mode) {\n var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n var threw = true\n var ret\n try {\n ret = fs.fchmodSync(fd, mode)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n }\n\n function patchLutimes (fs) {\n if (constants.hasOwnProperty(\"O_SYMLINK\")) {\n fs.lutimes = function (path, at, mt, cb) {\n fs.open(path, constants.O_SYMLINK, function (er, fd) {\n if (er) {\n if (cb) cb(er)\n return\n }\n fs.futimes(fd, at, mt, function (er) {\n fs.close(fd, function (er2) {\n if (cb) cb(er || er2)\n })\n })\n })\n }\n\n fs.lutimesSync = function (path, at, mt) {\n var fd = fs.openSync(path, constants.O_SYMLINK)\n var ret\n var threw = true\n try {\n ret = fs.futimesSync(fd, at, mt)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n\n } else {\n fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n fs.lutimesSync = function () {}\n }\n }\n\n function chmodFix (orig) {\n if (!orig) return orig\n return function (target, mode, cb) {\n return orig.call(fs, target, mode, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chmodFixSync (orig) {\n if (!orig) return orig\n return function (target, mode) {\n try {\n return orig.call(fs, target, mode)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n\n function chownFix (orig) {\n if (!orig) return orig\n return function (target, uid, gid, cb) {\n return orig.call(fs, target, uid, gid, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chownFixSync (orig) {\n if (!orig) return orig\n return function (target, uid, gid) {\n try {\n return orig.call(fs, target, uid, gid)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n function statFix (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n function callback (er, stats) {\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n if (cb) cb.apply(this, arguments)\n }\n return options ? orig.call(fs, target, options, callback)\n : orig.call(fs, target, callback)\n }\n }\n\n function statFixSync (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options) {\n var stats = options ? orig.call(fs, target, options)\n : orig.call(fs, target)\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n return stats;\n }\n }\n\n // ENOSYS means that the fs doesn't support the op. Just ignore\n // that, because it doesn't matter.\n //\n // if there's no getuid, or if getuid() is something other\n // than 0, and the error is EINVAL or EPERM, then just ignore\n // it.\n //\n // This specific case is a silent failure in cp, install, tar,\n // and most other unix tools that manage permissions.\n //\n // When running as root, or if other types of errors are\n // encountered, then it's strict.\n function chownErOk (er) {\n if (!er)\n return true\n\n if (er.code === \"ENOSYS\")\n return true\n\n var nonroot = !process.getuid || process.getuid() !== 0\n if (nonroot) {\n if (er.code === \"EINVAL\" || er.code === \"EPERM\")\n return true\n }\n\n return false\n }\n}\n", "var Stream = require('stream').Stream\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n return {\n ReadStream: ReadStream,\n WriteStream: WriteStream\n }\n\n function ReadStream (path, options) {\n if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n Stream.call(this);\n\n var self = this;\n\n this.path = path;\n this.fd = null;\n this.readable = true;\n this.paused = false;\n\n this.flags = 'r';\n this.mode = 438; /*=0666*/\n this.bufferSize = 64 * 1024;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.encoding) this.setEncoding(this.encoding);\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.end === undefined) {\n this.end = Infinity;\n } else if ('number' !== typeof this.end) {\n throw TypeError('end must be a Number');\n }\n\n if (this.start > this.end) {\n throw new Error('start must be <= end');\n }\n\n this.pos = this.start;\n }\n\n if (this.fd !== null) {\n process.nextTick(function() {\n self._read();\n });\n return;\n }\n\n fs.open(this.path, this.flags, this.mode, function (err, fd) {\n if (err) {\n self.emit('error', err);\n self.readable = false;\n return;\n }\n\n self.fd = fd;\n self.emit('open', fd);\n self._read();\n })\n }\n\n function WriteStream (path, options) {\n if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n Stream.call(this);\n\n this.path = path;\n this.fd = null;\n this.writable = true;\n\n this.flags = 'w';\n this.encoding = 'binary';\n this.mode = 438; /*=0666*/\n this.bytesWritten = 0;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.start < 0) {\n throw new Error('start must be >= zero');\n }\n\n this.pos = this.start;\n }\n\n this.busy = false;\n this._queue = [];\n\n if (this.fd === null) {\n this._open = fs.open;\n this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n this.flush();\n }\n }\n}\n", "'use strict'\n\nmodule.exports = clone\n\nfunction clone (obj) {\n if (obj === null || typeof obj !== 'object')\n return obj\n\n if (obj instanceof Object)\n var copy = { __proto__: obj.__proto__ }\n else\n var copy = Object.create(null)\n\n Object.getOwnPropertyNames(obj).forEach(function (key) {\n Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n })\n\n return copy\n}\n", "var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n gracefulQueue = Symbol.for('graceful-fs.queue')\n // This is used in testing by future versions\n previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n gracefulQueue = '___graceful-fs.queue'\n previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nvar debug = noop\nif (util.debuglog)\n debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n debug = function() {\n var m = util.format.apply(util, arguments)\n m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n console.error(m)\n }\n\n// Once time initialization\nif (!global[gracefulQueue]) {\n // This queue can be shared by multiple loaded instances\n var queue = []\n Object.defineProperty(global, gracefulQueue, {\n get: function() {\n return queue\n }\n })\n\n // Patch fs.close/closeSync to shared queue version, because we need\n // to retry() whenever a close happens *anywhere* in the program.\n // This is essential when multiple graceful-fs instances are\n // in play at the same time.\n fs.close = (function (fs$close) {\n function close (fd, cb) {\n return fs$close.call(fs, fd, function (err) {\n // This function uses the graceful-fs shared queue\n if (!err) {\n retry()\n }\n\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n })\n }\n\n Object.defineProperty(close, previousSymbol, {\n value: fs$close\n })\n return close\n })(fs.close)\n\n fs.closeSync = (function (fs$closeSync) {\n function closeSync (fd) {\n // This function uses the graceful-fs shared queue\n fs$closeSync.apply(fs, arguments)\n retry()\n }\n\n Object.defineProperty(closeSync, previousSymbol, {\n value: fs$closeSync\n })\n return closeSync\n })(fs.closeSync)\n\n if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n process.on('exit', function() {\n debug(global[gracefulQueue])\n require('assert').equal(global[gracefulQueue].length, 0)\n })\n }\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n module.exports = patch(fs)\n fs.__patched = true;\n}\n\nfunction patch (fs) {\n // Everything that references the open() function needs to be in here\n polyfills(fs)\n fs.gracefulify = patch\n\n fs.createReadStream = createReadStream\n fs.createWriteStream = createWriteStream\n var fs$readFile = fs.readFile\n fs.readFile = readFile\n function readFile (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$readFile(path, options, cb)\n\n function go$readFile (path, options, cb) {\n return fs$readFile(path, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$readFile, [path, options, cb]])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n retry()\n }\n })\n }\n }\n\n var fs$writeFile = fs.writeFile\n fs.writeFile = writeFile\n function writeFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$writeFile(path, data, options, cb)\n\n function go$writeFile (path, data, options, cb) {\n return fs$writeFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$writeFile, [path, data, options, cb]])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n retry()\n }\n })\n }\n }\n\n var fs$appendFile = fs.appendFile\n if (fs$appendFile)\n fs.appendFile = appendFile\n function appendFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$appendFile(path, data, options, cb)\n\n function go$appendFile (path, data, options, cb) {\n return fs$appendFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$appendFile, [path, data, options, cb]])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n retry()\n }\n })\n }\n }\n\n var fs$readdir = fs.readdir\n fs.readdir = readdir\n function readdir (path, options, cb) {\n var args = [path]\n if (typeof options !== 'function') {\n args.push(options)\n } else {\n cb = options\n }\n args.push(go$readdir$cb)\n\n return go$readdir(args)\n\n function go$readdir$cb (err, files) {\n if (files && files.sort)\n files.sort()\n\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$readdir, [args]])\n\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n retry()\n }\n }\n }\n\n function go$readdir (args) {\n return fs$readdir.apply(fs, args)\n }\n\n if (process.version.substr(0, 4) === 'v0.8') {\n var legStreams = legacy(fs)\n ReadStream = legStreams.ReadStream\n WriteStream = legStreams.WriteStream\n }\n\n var fs$ReadStream = fs.ReadStream\n if (fs$ReadStream) {\n ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n ReadStream.prototype.open = ReadStream$open\n }\n\n var fs$WriteStream = fs.WriteStream\n if (fs$WriteStream) {\n WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n WriteStream.prototype.open = WriteStream$open\n }\n\n Object.defineProperty(fs, 'ReadStream', {\n get: function () {\n return ReadStream\n },\n set: function (val) {\n ReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n Object.defineProperty(fs, 'WriteStream', {\n get: function () {\n return WriteStream\n },\n set: function (val) {\n WriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n // legacy names\n var FileReadStream = ReadStream\n Object.defineProperty(fs, 'FileReadStream', {\n get: function () {\n return FileReadStream\n },\n set: function (val) {\n FileReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n var FileWriteStream = WriteStream\n Object.defineProperty(fs, 'FileWriteStream', {\n get: function () {\n return FileWriteStream\n },\n set: function (val) {\n FileWriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n function ReadStream (path, options) {\n if (this instanceof ReadStream)\n return fs$ReadStream.apply(this, arguments), this\n else\n return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n }\n\n function ReadStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n if (that.autoClose)\n that.destroy()\n\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n that.read()\n }\n })\n }\n\n function WriteStream (path, options) {\n if (this instanceof WriteStream)\n return fs$WriteStream.apply(this, arguments), this\n else\n return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n }\n\n function WriteStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n that.destroy()\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n }\n })\n }\n\n function createReadStream (path, options) {\n return new fs.ReadStream(path, options)\n }\n\n function createWriteStream (path, options) {\n return new fs.WriteStream(path, options)\n }\n\n var fs$open = fs.open\n fs.open = open\n function open (path, flags, mode, cb) {\n if (typeof mode === 'function')\n cb = mode, mode = null\n\n return go$open(path, flags, mode, cb)\n\n function go$open (path, flags, mode, cb) {\n return fs$open(path, flags, mode, function (err, fd) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$open, [path, flags, mode, cb]])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n retry()\n }\n })\n }\n }\n\n return fs\n}\n\nfunction enqueue (elem) {\n debug('ENQUEUE', elem[0].name, elem[1])\n global[gracefulQueue].push(elem)\n}\n\nfunction retry () {\n var elem = global[gracefulQueue].shift()\n if (elem) {\n debug('RETRY', elem[0].name, elem[1])\n elem[0].apply(null, elem[1])\n }\n}\n", "'use strict'\n// This is adapted from https://github.com/normalize/mz\n// Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors\nconst u = require('universalify').fromCallback\nconst fs = require('graceful-fs')\n\nconst api = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'close',\n 'copyFile',\n 'fchmod',\n 'fchown',\n 'fdatasync',\n 'fstat',\n 'fsync',\n 'ftruncate',\n 'futimes',\n 'lchown',\n 'lchmod',\n 'link',\n 'lstat',\n 'mkdir',\n 'mkdtemp',\n 'open',\n 'readFile',\n 'readdir',\n 'readlink',\n 'realpath',\n 'rename',\n 'rmdir',\n 'stat',\n 'symlink',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile'\n].filter(key => {\n // Some commands are not available on some systems. Ex:\n // fs.copyFile was added in Node.js v8.5.0\n // fs.mkdtemp was added in Node.js v5.10.0\n // fs.lchown is not available on at least some Linux\n return typeof fs[key] === 'function'\n})\n\n// Export all keys:\nObject.keys(fs).forEach(key => {\n if (key === 'promises') {\n // fs.promises is a getter property that triggers ExperimentalWarning\n // Don't re-export it here, the getter is defined in \"lib/index.js\"\n return\n }\n exports[key] = fs[key]\n})\n\n// Universalify async methods:\napi.forEach(method => {\n exports[method] = u(fs[method])\n})\n\n// We differ from mz/fs in that we still ship the old, broken, fs.exists()\n// since we are a drop-in replacement for the native module\nexports.exists = function (filename, callback) {\n if (typeof callback === 'function') {\n return fs.exists(filename, callback)\n }\n return new Promise(resolve => {\n return fs.exists(filename, resolve)\n })\n}\n\n// fs.read() & fs.write need special treatment due to multiple callback args\n\nexports.read = function (fd, buffer, offset, length, position, callback) {\n if (typeof callback === 'function') {\n return fs.read(fd, buffer, offset, length, position, callback)\n }\n return new Promise((resolve, reject) => {\n fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer) => {\n if (err) return reject(err)\n resolve({ bytesRead, buffer })\n })\n })\n}\n\n// Function signature can be\n// fs.write(fd, buffer[, offset[, length[, position]]], callback)\n// OR\n// fs.write(fd, string[, position[, encoding]], callback)\n// We need to handle both cases, so we use ...args\nexports.write = function (fd, buffer, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.write(fd, buffer, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.write(fd, buffer, ...args, (err, bytesWritten, buffer) => {\n if (err) return reject(err)\n resolve({ bytesWritten, buffer })\n })\n })\n}\n\n// fs.realpath.native only available in Node v9.2+\nif (typeof fs.realpath.native === 'function') {\n exports.realpath.native = u(fs.realpath.native)\n}\n", "'use strict'\n\nconst path = require('path')\n\n// get drive on windows\nfunction getRootPath (p) {\n p = path.normalize(path.resolve(p)).split(path.sep)\n if (p.length > 0) return p[0]\n return null\n}\n\n// http://stackoverflow.com/a/62888/10333 contains more accurate\n// TODO: expand to include the rest\nconst INVALID_PATH_CHARS = /[<>:\"|?*]/\n\nfunction invalidWin32Path (p) {\n const rp = getRootPath(p)\n p = p.replace(rp, '')\n return INVALID_PATH_CHARS.test(p)\n}\n\nmodule.exports = {\n getRootPath,\n invalidWin32Path\n}\n", "'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst invalidWin32Path = require('./win32').invalidWin32Path\n\nconst o777 = parseInt('0777', 8)\n\nfunction mkdirs (p, opts, callback, made) {\n if (typeof opts === 'function') {\n callback = opts\n opts = {}\n } else if (!opts || typeof opts !== 'object') {\n opts = { mode: opts }\n }\n\n if (process.platform === 'win32' && invalidWin32Path(p)) {\n const errInval = new Error(p + ' contains invalid WIN32 path characters.')\n errInval.code = 'EINVAL'\n return callback(errInval)\n }\n\n let mode = opts.mode\n const xfs = opts.fs || fs\n\n if (mode === undefined) {\n mode = o777 & (~process.umask())\n }\n if (!made) made = null\n\n callback = callback || function () {}\n p = path.resolve(p)\n\n xfs.mkdir(p, mode, er => {\n if (!er) {\n made = made || p\n return callback(null, made)\n }\n switch (er.code) {\n case 'ENOENT':\n if (path.dirname(p) === p) return callback(er)\n mkdirs(path.dirname(p), opts, (er, made) => {\n if (er) callback(er, made)\n else mkdirs(p, opts, callback, made)\n })\n break\n\n // In the case of any other error, just see if there's a dir\n // there already. If so, then hooray! If not, then something\n // is borked.\n default:\n xfs.stat(p, (er2, stat) => {\n // if the stat fails, then that's super weird.\n // let the original error be the failure reason.\n if (er2 || !stat.isDirectory()) callback(er, made)\n else callback(null, made)\n })\n break\n }\n })\n}\n\nmodule.exports = mkdirs\n", "'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst invalidWin32Path = require('./win32').invalidWin32Path\n\nconst o777 = parseInt('0777', 8)\n\nfunction mkdirsSync (p, opts, made) {\n if (!opts || typeof opts !== 'object') {\n opts = { mode: opts }\n }\n\n let mode = opts.mode\n const xfs = opts.fs || fs\n\n if (process.platform === 'win32' && invalidWin32Path(p)) {\n const errInval = new Error(p + ' contains invalid WIN32 path characters.')\n errInval.code = 'EINVAL'\n throw errInval\n }\n\n if (mode === undefined) {\n mode = o777 & (~process.umask())\n }\n if (!made) made = null\n\n p = path.resolve(p)\n\n try {\n xfs.mkdirSync(p, mode)\n made = made || p\n } catch (err0) {\n if (err0.code === 'ENOENT') {\n if (path.dirname(p) === p) throw err0\n made = mkdirsSync(path.dirname(p), opts, made)\n mkdirsSync(p, opts, made)\n } else {\n // In the case of any other error, just see if there's a dir there\n // already. If so, then hooray! If not, then something is borked.\n let stat\n try {\n stat = xfs.statSync(p)\n } catch (err1) {\n throw err0\n }\n if (!stat.isDirectory()) throw err0\n }\n }\n\n return made\n}\n\nmodule.exports = mkdirsSync\n", "'use strict'\nconst u = require('universalify').fromCallback\nconst mkdirs = u(require('./mkdirs'))\nconst mkdirsSync = require('./mkdirs-sync')\n\nmodule.exports = {\n mkdirs,\n mkdirsSync,\n // alias\n mkdirp: mkdirs,\n mkdirpSync: mkdirsSync,\n ensureDir: mkdirs,\n ensureDirSync: mkdirsSync\n}\n", "'use strict'\n\nconst fs = require('graceful-fs')\nconst os = require('os')\nconst path = require('path')\n\n// HFS, ext{2,3}, FAT do not, Node.js v0.10 does not\nfunction hasMillisResSync () {\n let tmpfile = path.join('millis-test-sync' + Date.now().toString() + Math.random().toString().slice(2))\n tmpfile = path.join(os.tmpdir(), tmpfile)\n\n // 550 millis past UNIX epoch\n const d = new Date(1435410243862)\n fs.writeFileSync(tmpfile, 'https://github.com/jprichardson/node-fs-extra/pull/141')\n const fd = fs.openSync(tmpfile, 'r+')\n fs.futimesSync(fd, d, d)\n fs.closeSync(fd)\n return fs.statSync(tmpfile).mtime > 1435410243000\n}\n\nfunction hasMillisRes (callback) {\n let tmpfile = path.join('millis-test' + Date.now().toString() + Math.random().toString().slice(2))\n tmpfile = path.join(os.tmpdir(), tmpfile)\n\n // 550 millis past UNIX epoch\n const d = new Date(1435410243862)\n fs.writeFile(tmpfile, 'https://github.com/jprichardson/node-fs-extra/pull/141', err => {\n if (err) return callback(err)\n fs.open(tmpfile, 'r+', (err, fd) => {\n if (err) return callback(err)\n fs.futimes(fd, d, d, err => {\n if (err) return callback(err)\n fs.close(fd, err => {\n if (err) return callback(err)\n fs.stat(tmpfile, (err, stats) => {\n if (err) return callback(err)\n callback(null, stats.mtime > 1435410243000)\n })\n })\n })\n })\n })\n}\n\nfunction timeRemoveMillis (timestamp) {\n if (typeof timestamp === 'number') {\n return Math.floor(timestamp / 1000) * 1000\n } else if (timestamp instanceof Date) {\n return new Date(Math.floor(timestamp.getTime() / 1000) * 1000)\n } else {\n throw new Error('fs-extra: timeRemoveMillis() unknown parameter type')\n }\n}\n\nfunction utimesMillis (path, atime, mtime, callback) {\n // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback)\n fs.open(path, 'r+', (err, fd) => {\n if (err) return callback(err)\n fs.futimes(fd, atime, mtime, futimesErr => {\n fs.close(fd, closeErr => {\n if (callback) callback(futimesErr || closeErr)\n })\n })\n })\n}\n\nfunction utimesMillisSync (path, atime, mtime) {\n const fd = fs.openSync(path, 'r+')\n fs.futimesSync(fd, atime, mtime)\n return fs.closeSync(fd)\n}\n\nmodule.exports = {\n hasMillisRes,\n hasMillisResSync,\n timeRemoveMillis,\n utimesMillis,\n utimesMillisSync\n}\n", "'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\n\nconst NODE_VERSION_MAJOR_WITH_BIGINT = 10\nconst NODE_VERSION_MINOR_WITH_BIGINT = 5\nconst NODE_VERSION_PATCH_WITH_BIGINT = 0\nconst nodeVersion = process.versions.node.split('.')\nconst nodeVersionMajor = Number.parseInt(nodeVersion[0], 10)\nconst nodeVersionMinor = Number.parseInt(nodeVersion[1], 10)\nconst nodeVersionPatch = Number.parseInt(nodeVersion[2], 10)\n\nfunction nodeSupportsBigInt () {\n if (nodeVersionMajor > NODE_VERSION_MAJOR_WITH_BIGINT) {\n return true\n } else if (nodeVersionMajor === NODE_VERSION_MAJOR_WITH_BIGINT) {\n if (nodeVersionMinor > NODE_VERSION_MINOR_WITH_BIGINT) {\n return true\n } else if (nodeVersionMinor === NODE_VERSION_MINOR_WITH_BIGINT) {\n if (nodeVersionPatch >= NODE_VERSION_PATCH_WITH_BIGINT) {\n return true\n }\n }\n }\n return false\n}\n\nfunction getStats (src, dest, cb) {\n if (nodeSupportsBigInt()) {\n fs.stat(src, { bigint: true }, (err, srcStat) => {\n if (err) return cb(err)\n fs.stat(dest, { bigint: true }, (err, destStat) => {\n if (err) {\n if (err.code === 'ENOENT') return cb(null, { srcStat, destStat: null })\n return cb(err)\n }\n return cb(null, { srcStat, destStat })\n })\n })\n } else {\n fs.stat(src, (err, srcStat) => {\n if (err) return cb(err)\n fs.stat(dest, (err, destStat) => {\n if (err) {\n if (err.code === 'ENOENT') return cb(null, { srcStat, destStat: null })\n return cb(err)\n }\n return cb(null, { srcStat, destStat })\n })\n })\n }\n}\n\nfunction getStatsSync (src, dest) {\n let srcStat, destStat\n if (nodeSupportsBigInt()) {\n srcStat = fs.statSync(src, { bigint: true })\n } else {\n srcStat = fs.statSync(src)\n }\n try {\n if (nodeSupportsBigInt()) {\n destStat = fs.statSync(dest, { bigint: true })\n } else {\n destStat = fs.statSync(dest)\n }\n } catch (err) {\n if (err.code === 'ENOENT') return { srcStat, destStat: null }\n throw err\n }\n return { srcStat, destStat }\n}\n\nfunction checkPaths (src, dest, funcName, cb) {\n getStats(src, dest, (err, stats) => {\n if (err) return cb(err)\n const { srcStat, destStat } = stats\n if (destStat && destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) {\n return cb(new Error('Source and destination must not be the same.'))\n }\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n return cb(new Error(errMsg(src, dest, funcName)))\n }\n return cb(null, { srcStat, destStat })\n })\n}\n\nfunction checkPathsSync (src, dest, funcName) {\n const { srcStat, destStat } = getStatsSync(src, dest)\n if (destStat && destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) {\n throw new Error('Source and destination must not be the same.')\n }\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return { srcStat, destStat }\n}\n\n// recursively check if dest parent is a subdirectory of src.\n// It works for all file types including symlinks since it\n// checks the src and dest inodes. It starts from the deepest\n// parent and stops once it reaches the src parent or the root path.\nfunction checkParentPaths (src, srcStat, dest, funcName, cb) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return cb()\n if (nodeSupportsBigInt()) {\n fs.stat(destParent, { bigint: true }, (err, destStat) => {\n if (err) {\n if (err.code === 'ENOENT') return cb()\n return cb(err)\n }\n if (destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) {\n return cb(new Error(errMsg(src, dest, funcName)))\n }\n return checkParentPaths(src, srcStat, destParent, funcName, cb)\n })\n } else {\n fs.stat(destParent, (err, destStat) => {\n if (err) {\n if (err.code === 'ENOENT') return cb()\n return cb(err)\n }\n if (destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) {\n return cb(new Error(errMsg(src, dest, funcName)))\n }\n return checkParentPaths(src, srcStat, destParent, funcName, cb)\n })\n }\n}\n\nfunction checkParentPathsSync (src, srcStat, dest, funcName) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return\n let destStat\n try {\n if (nodeSupportsBigInt()) {\n destStat = fs.statSync(destParent, { bigint: true })\n } else {\n destStat = fs.statSync(destParent)\n }\n } catch (err) {\n if (err.code === 'ENOENT') return\n throw err\n }\n if (destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return checkParentPathsSync(src, srcStat, destParent, funcName)\n}\n\n// return true if dest is a subdir of src, otherwise false.\n// It only checks the path strings.\nfunction isSrcSubdir (src, dest) {\n const srcArr = path.resolve(src).split(path.sep).filter(i => i)\n const destArr = path.resolve(dest).split(path.sep).filter(i => i)\n return srcArr.reduce((acc, cur, i) => acc && destArr[i] === cur, true)\n}\n\nfunction errMsg (src, dest, funcName) {\n return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`\n}\n\nmodule.exports = {\n checkPaths,\n checkPathsSync,\n checkParentPaths,\n checkParentPathsSync,\n isSrcSubdir\n}\n", "'use strict'\n/* eslint-disable node/no-deprecated-api */\nmodule.exports = function (size) {\n if (typeof Buffer.allocUnsafe === 'function') {\n try {\n return Buffer.allocUnsafe(size)\n } catch (e) {\n return new Buffer(size)\n }\n }\n return new Buffer(size)\n}\n", "'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst mkdirpSync = require('../mkdirs').mkdirsSync\nconst utimesSync = require('../util/utimes.js').utimesMillisSync\nconst stat = require('../util/stat')\n\nfunction copySync (src, dest, opts) {\n if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n opts = opts || {}\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\\n\n see https://github.com/jprichardson/node-fs-extra/issues/269`)\n }\n\n const { srcStat, destStat } = stat.checkPathsSync(src, dest, 'copy')\n stat.checkParentPathsSync(src, srcStat, dest, 'copy')\n return handleFilterAndCopy(destStat, src, dest, opts)\n}\n\nfunction handleFilterAndCopy (destStat, src, dest, opts) {\n if (opts.filter && !opts.filter(src, dest)) return\n const destParent = path.dirname(dest)\n if (!fs.existsSync(destParent)) mkdirpSync(destParent)\n return startCopy(destStat, src, dest, opts)\n}\n\nfunction startCopy (destStat, src, dest, opts) {\n if (opts.filter && !opts.filter(src, dest)) return\n return getStats(destStat, src, dest, opts)\n}\n\nfunction getStats (destStat, src, dest, opts) {\n const statSync = opts.dereference ? fs.statSync : fs.lstatSync\n const srcStat = statSync(src)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n else if (srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts)\n else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n}\n\nfunction onFile (srcStat, destStat, src, dest, opts) {\n if (!destStat) return copyFile(srcStat, src, dest, opts)\n return mayCopyFile(srcStat, src, dest, opts)\n}\n\nfunction mayCopyFile (srcStat, src, dest, opts) {\n if (opts.overwrite) {\n fs.unlinkSync(dest)\n return copyFile(srcStat, src, dest, opts)\n } else if (opts.errorOnExist) {\n throw new Error(`'${dest}' already exists`)\n }\n}\n\nfunction copyFile (srcStat, src, dest, opts) {\n if (typeof fs.copyFileSync === 'function') {\n fs.copyFileSync(src, dest)\n fs.chmodSync(dest, srcStat.mode)\n if (opts.preserveTimestamps) {\n return utimesSync(dest, srcStat.atime, srcStat.mtime)\n }\n return\n }\n return copyFileFallback(srcStat, src, dest, opts)\n}\n\nfunction copyFileFallback (srcStat, src, dest, opts) {\n const BUF_LENGTH = 64 * 1024\n const _buff = require('../util/buffer')(BUF_LENGTH)\n\n const fdr = fs.openSync(src, 'r')\n const fdw = fs.openSync(dest, 'w', srcStat.mode)\n let pos = 0\n\n while (pos < srcStat.size) {\n const bytesRead = fs.readSync(fdr, _buff, 0, BUF_LENGTH, pos)\n fs.writeSync(fdw, _buff, 0, bytesRead)\n pos += bytesRead\n }\n\n if (opts.preserveTimestamps) fs.futimesSync(fdw, srcStat.atime, srcStat.mtime)\n\n fs.closeSync(fdr)\n fs.closeSync(fdw)\n}\n\nfunction onDir (srcStat, destStat, src, dest, opts) {\n if (!destStat) return mkDirAndCopy(srcStat, src, dest, opts)\n if (destStat && !destStat.isDirectory()) {\n throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n }\n return copyDir(src, dest, opts)\n}\n\nfunction mkDirAndCopy (srcStat, src, dest, opts) {\n fs.mkdirSync(dest)\n copyDir(src, dest, opts)\n return fs.chmodSync(dest, srcStat.mode)\n}\n\nfunction copyDir (src, dest, opts) {\n fs.readdirSync(src).forEach(item => copyDirItem(item, src, dest, opts))\n}\n\nfunction copyDirItem (item, src, dest, opts) {\n const srcItem = path.join(src, item)\n const destItem = path.join(dest, item)\n const { destStat } = stat.checkPathsSync(srcItem, destItem, 'copy')\n return startCopy(destStat, srcItem, destItem, opts)\n}\n\nfunction onLink (destStat, src, dest, opts) {\n let resolvedSrc = fs.readlinkSync(src)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n\n if (!destStat) {\n return fs.symlinkSync(resolvedSrc, dest)\n } else {\n let resolvedDest\n try {\n resolvedDest = fs.readlinkSync(dest)\n } catch (err) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlinkSync(resolvedSrc, dest)\n throw err\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n }\n\n // prevent copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (fs.statSync(dest).isDirectory() && stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n }\n return copyLink(resolvedSrc, dest)\n }\n}\n\nfunction copyLink (resolvedSrc, dest) {\n fs.unlinkSync(dest)\n return fs.symlinkSync(resolvedSrc, dest)\n}\n\nmodule.exports = copySync\n", "'use strict'\n\nmodule.exports = {\n copySync: require('./copy-sync')\n}\n", "'use strict'\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\n\nfunction pathExists (path) {\n return fs.access(path).then(() => true).catch(() => false)\n}\n\nmodule.exports = {\n pathExists: u(pathExists),\n pathExistsSync: fs.existsSync\n}\n", "'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst mkdirp = require('../mkdirs').mkdirs\nconst pathExists = require('../path-exists').pathExists\nconst utimes = require('../util/utimes').utimesMillis\nconst stat = require('../util/stat')\n\nfunction copy (src, dest, opts, cb) {\n if (typeof opts === 'function' && !cb) {\n cb = opts\n opts = {}\n } else if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n cb = cb || function () {}\n opts = opts || {}\n\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\\n\n see https://github.com/jprichardson/node-fs-extra/issues/269`)\n }\n\n stat.checkPaths(src, dest, 'copy', (err, stats) => {\n if (err) return cb(err)\n const { srcStat, destStat } = stats\n stat.checkParentPaths(src, srcStat, dest, 'copy', err => {\n if (err) return cb(err)\n if (opts.filter) return handleFilter(checkParentDir, destStat, src, dest, opts, cb)\n return checkParentDir(destStat, src, dest, opts, cb)\n })\n })\n}\n\nfunction checkParentDir (destStat, src, dest, opts, cb) {\n const destParent = path.dirname(dest)\n pathExists(destParent, (err, dirExists) => {\n if (err) return cb(err)\n if (dirExists) return startCopy(destStat, src, dest, opts, cb)\n mkdirp(destParent, err => {\n if (err) return cb(err)\n return startCopy(destStat, src, dest, opts, cb)\n })\n })\n}\n\nfunction handleFilter (onInclude, destStat, src, dest, opts, cb) {\n Promise.resolve(opts.filter(src, dest)).then(include => {\n if (include) return onInclude(destStat, src, dest, opts, cb)\n return cb()\n }, error => cb(error))\n}\n\nfunction startCopy (destStat, src, dest, opts, cb) {\n if (opts.filter) return handleFilter(getStats, destStat, src, dest, opts, cb)\n return getStats(destStat, src, dest, opts, cb)\n}\n\nfunction getStats (destStat, src, dest, opts, cb) {\n const stat = opts.dereference ? fs.stat : fs.lstat\n stat(src, (err, srcStat) => {\n if (err) return cb(err)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts, cb)\n else if (srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts, cb)\n else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts, cb)\n })\n}\n\nfunction onFile (srcStat, destStat, src, dest, opts, cb) {\n if (!destStat) return copyFile(srcStat, src, dest, opts, cb)\n return mayCopyFile(srcStat, src, dest, opts, cb)\n}\n\nfunction mayCopyFile (srcStat, src, dest, opts, cb) {\n if (opts.overwrite) {\n fs.unlink(dest, err => {\n if (err) return cb(err)\n return copyFile(srcStat, src, dest, opts, cb)\n })\n } else if (opts.errorOnExist) {\n return cb(new Error(`'${dest}' already exists`))\n } else return cb()\n}\n\nfunction copyFile (srcStat, src, dest, opts, cb) {\n if (typeof fs.copyFile === 'function') {\n return fs.copyFile(src, dest, err => {\n if (err) return cb(err)\n return setDestModeAndTimestamps(srcStat, dest, opts, cb)\n })\n }\n return copyFileFallback(srcStat, src, dest, opts, cb)\n}\n\nfunction copyFileFallback (srcStat, src, dest, opts, cb) {\n const rs = fs.createReadStream(src)\n rs.on('error', err => cb(err)).once('open', () => {\n const ws = fs.createWriteStream(dest, { mode: srcStat.mode })\n ws.on('error', err => cb(err))\n .on('open', () => rs.pipe(ws))\n .once('close', () => setDestModeAndTimestamps(srcStat, dest, opts, cb))\n })\n}\n\nfunction setDestModeAndTimestamps (srcStat, dest, opts, cb) {\n fs.chmod(dest, srcStat.mode, err => {\n if (err) return cb(err)\n if (opts.preserveTimestamps) {\n return utimes(dest, srcStat.atime, srcStat.mtime, cb)\n }\n return cb()\n })\n}\n\nfunction onDir (srcStat, destStat, src, dest, opts, cb) {\n if (!destStat) return mkDirAndCopy(srcStat, src, dest, opts, cb)\n if (destStat && !destStat.isDirectory()) {\n return cb(new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`))\n }\n return copyDir(src, dest, opts, cb)\n}\n\nfunction mkDirAndCopy (srcStat, src, dest, opts, cb) {\n fs.mkdir(dest, err => {\n if (err) return cb(err)\n copyDir(src, dest, opts, err => {\n if (err) return cb(err)\n return fs.chmod(dest, srcStat.mode, cb)\n })\n })\n}\n\nfunction copyDir (src, dest, opts, cb) {\n fs.readdir(src, (err, items) => {\n if (err) return cb(err)\n return copyDirItems(items, src, dest, opts, cb)\n })\n}\n\nfunction copyDirItems (items, src, dest, opts, cb) {\n const item = items.pop()\n if (!item) return cb()\n return copyDirItem(items, item, src, dest, opts, cb)\n}\n\nfunction copyDirItem (items, item, src, dest, opts, cb) {\n const srcItem = path.join(src, item)\n const destItem = path.join(dest, item)\n stat.checkPaths(srcItem, destItem, 'copy', (err, stats) => {\n if (err) return cb(err)\n const { destStat } = stats\n startCopy(destStat, srcItem, destItem, opts, err => {\n if (err) return cb(err)\n return copyDirItems(items, src, dest, opts, cb)\n })\n })\n}\n\nfunction onLink (destStat, src, dest, opts, cb) {\n fs.readlink(src, (err, resolvedSrc) => {\n if (err) return cb(err)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n\n if (!destStat) {\n return fs.symlink(resolvedSrc, dest, cb)\n } else {\n fs.readlink(dest, (err, resolvedDest) => {\n if (err) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlink(resolvedSrc, dest, cb)\n return cb(err)\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n return cb(new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`))\n }\n\n // do not copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (destStat.isDirectory() && stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n return cb(new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`))\n }\n return copyLink(resolvedSrc, dest, cb)\n })\n }\n })\n}\n\nfunction copyLink (resolvedSrc, dest, cb) {\n fs.unlink(dest, err => {\n if (err) return cb(err)\n return fs.symlink(resolvedSrc, dest, cb)\n })\n}\n\nmodule.exports = copy\n", "'use strict'\n\nconst u = require('universalify').fromCallback\nmodule.exports = {\n copy: u(require('./copy'))\n}\n", "'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst assert = require('assert')\n\nconst isWindows = (process.platform === 'win32')\n\nfunction defaults (options) {\n const methods = [\n 'unlink',\n 'chmod',\n 'stat',\n 'lstat',\n 'rmdir',\n 'readdir'\n ]\n methods.forEach(m => {\n options[m] = options[m] || fs[m]\n m = m + 'Sync'\n options[m] = options[m] || fs[m]\n })\n\n options.maxBusyTries = options.maxBusyTries || 3\n}\n\nfunction rimraf (p, options, cb) {\n let busyTries = 0\n\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n assert(p, 'rimraf: missing path')\n assert.strictEqual(typeof p, 'string', 'rimraf: path should be a string')\n assert.strictEqual(typeof cb, 'function', 'rimraf: callback function required')\n assert(options, 'rimraf: invalid options argument provided')\n assert.strictEqual(typeof options, 'object', 'rimraf: options should be object')\n\n defaults(options)\n\n rimraf_(p, options, function CB (er) {\n if (er) {\n if ((er.code === 'EBUSY' || er.code === 'ENOTEMPTY' || er.code === 'EPERM') &&\n busyTries < options.maxBusyTries) {\n busyTries++\n const time = busyTries * 100\n // try again, with the same exact callback as this one.\n return setTimeout(() => rimraf_(p, options, CB), time)\n }\n\n // already gone\n if (er.code === 'ENOENT') er = null\n }\n\n cb(er)\n })\n}\n\n// Two possible strategies.\n// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR\n// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR\n//\n// Both result in an extra syscall when you guess wrong. However, there\n// are likely far more normal files in the world than directories. This\n// is based on the assumption that a the average number of files per\n// directory is >= 1.\n//\n// If anyone ever complains about this, then I guess the strategy could\n// be made configurable somehow. But until then, YAGNI.\nfunction rimraf_ (p, options, cb) {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // sunos lets the root user unlink directories, which is... weird.\n // so we have to lstat here and make sure it's not a dir.\n options.lstat(p, (er, st) => {\n if (er && er.code === 'ENOENT') {\n return cb(null)\n }\n\n // Windows can EPERM on stat. Life is suffering.\n if (er && er.code === 'EPERM' && isWindows) {\n return fixWinEPERM(p, options, er, cb)\n }\n\n if (st && st.isDirectory()) {\n return rmdir(p, options, er, cb)\n }\n\n options.unlink(p, er => {\n if (er) {\n if (er.code === 'ENOENT') {\n return cb(null)\n }\n if (er.code === 'EPERM') {\n return (isWindows)\n ? fixWinEPERM(p, options, er, cb)\n : rmdir(p, options, er, cb)\n }\n if (er.code === 'EISDIR') {\n return rmdir(p, options, er, cb)\n }\n }\n return cb(er)\n })\n })\n}\n\nfunction fixWinEPERM (p, options, er, cb) {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n if (er) {\n assert(er instanceof Error)\n }\n\n options.chmod(p, 0o666, er2 => {\n if (er2) {\n cb(er2.code === 'ENOENT' ? null : er)\n } else {\n options.stat(p, (er3, stats) => {\n if (er3) {\n cb(er3.code === 'ENOENT' ? null : er)\n } else if (stats.isDirectory()) {\n rmdir(p, options, er, cb)\n } else {\n options.unlink(p, cb)\n }\n })\n }\n })\n}\n\nfunction fixWinEPERMSync (p, options, er) {\n let stats\n\n assert(p)\n assert(options)\n if (er) {\n assert(er instanceof Error)\n }\n\n try {\n options.chmodSync(p, 0o666)\n } catch (er2) {\n if (er2.code === 'ENOENT') {\n return\n } else {\n throw er\n }\n }\n\n try {\n stats = options.statSync(p)\n } catch (er3) {\n if (er3.code === 'ENOENT') {\n return\n } else {\n throw er\n }\n }\n\n if (stats.isDirectory()) {\n rmdirSync(p, options, er)\n } else {\n options.unlinkSync(p)\n }\n}\n\nfunction rmdir (p, options, originalEr, cb) {\n assert(p)\n assert(options)\n if (originalEr) {\n assert(originalEr instanceof Error)\n }\n assert(typeof cb === 'function')\n\n // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)\n // if we guessed wrong, and it's not a directory, then\n // raise the original error.\n options.rmdir(p, er => {\n if (er && (er.code === 'ENOTEMPTY' || er.code === 'EEXIST' || er.code === 'EPERM')) {\n rmkids(p, options, cb)\n } else if (er && er.code === 'ENOTDIR') {\n cb(originalEr)\n } else {\n cb(er)\n }\n })\n}\n\nfunction rmkids (p, options, cb) {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.readdir(p, (er, files) => {\n if (er) return cb(er)\n\n let n = files.length\n let errState\n\n if (n === 0) return options.rmdir(p, cb)\n\n files.forEach(f => {\n rimraf(path.join(p, f), options, er => {\n if (errState) {\n return\n }\n if (er) return cb(errState = er)\n if (--n === 0) {\n options.rmdir(p, cb)\n }\n })\n })\n })\n}\n\n// this looks simpler, and is strictly *faster*, but will\n// tie up the JavaScript thread and fail on excessively\n// deep directory trees.\nfunction rimrafSync (p, options) {\n let st\n\n options = options || {}\n defaults(options)\n\n assert(p, 'rimraf: missing path')\n assert.strictEqual(typeof p, 'string', 'rimraf: path should be a string')\n assert(options, 'rimraf: missing options')\n assert.strictEqual(typeof options, 'object', 'rimraf: options should be object')\n\n try {\n st = options.lstatSync(p)\n } catch (er) {\n if (er.code === 'ENOENT') {\n return\n }\n\n // Windows can EPERM on stat. Life is suffering.\n if (er.code === 'EPERM' && isWindows) {\n fixWinEPERMSync(p, options, er)\n }\n }\n\n try {\n // sunos lets the root user unlink directories, which is... weird.\n if (st && st.isDirectory()) {\n rmdirSync(p, options, null)\n } else {\n options.unlinkSync(p)\n }\n } catch (er) {\n if (er.code === 'ENOENT') {\n return\n } else if (er.code === 'EPERM') {\n return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)\n } else if (er.code !== 'EISDIR') {\n throw er\n }\n rmdirSync(p, options, er)\n }\n}\n\nfunction rmdirSync (p, options, originalEr) {\n assert(p)\n assert(options)\n if (originalEr) {\n assert(originalEr instanceof Error)\n }\n\n try {\n options.rmdirSync(p)\n } catch (er) {\n if (er.code === 'ENOTDIR') {\n throw originalEr\n } else if (er.code === 'ENOTEMPTY' || er.code === 'EEXIST' || er.code === 'EPERM') {\n rmkidsSync(p, options)\n } else if (er.code !== 'ENOENT') {\n throw er\n }\n }\n}\n\nfunction rmkidsSync (p, options) {\n assert(p)\n assert(options)\n options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options))\n\n if (isWindows) {\n // We only end up here once we got ENOTEMPTY at least once, and\n // at this point, we are guaranteed to have removed all the kids.\n // So, we know that it won't be ENOENT or ENOTDIR or anything else.\n // try really hard to delete stuff on windows, because it has a\n // PROFOUNDLY annoying habit of not closing handles promptly when\n // files are deleted, resulting in spurious ENOTEMPTY errors.\n const startTime = Date.now()\n do {\n try {\n const ret = options.rmdirSync(p, options)\n return ret\n } catch (er) { }\n } while (Date.now() - startTime < 500) // give up after 500ms\n } else {\n const ret = options.rmdirSync(p, options)\n return ret\n }\n}\n\nmodule.exports = rimraf\nrimraf.sync = rimrafSync\n", "'use strict'\n\nconst u = require('universalify').fromCallback\nconst rimraf = require('./rimraf')\n\nmodule.exports = {\n remove: u(rimraf),\n removeSync: rimraf.sync\n}\n", "'use strict'\n\nconst u = require('universalify').fromCallback\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst remove = require('../remove')\n\nconst emptyDir = u(function emptyDir (dir, callback) {\n callback = callback || function () {}\n fs.readdir(dir, (err, items) => {\n if (err) return mkdir.mkdirs(dir, callback)\n\n items = items.map(item => path.join(dir, item))\n\n deleteItem()\n\n function deleteItem () {\n const item = items.pop()\n if (!item) return callback()\n remove.remove(item, err => {\n if (err) return callback(err)\n deleteItem()\n })\n }\n })\n})\n\nfunction emptyDirSync (dir) {\n let items\n try {\n items = fs.readdirSync(dir)\n } catch (err) {\n return mkdir.mkdirsSync(dir)\n }\n\n items.forEach(item => {\n item = path.join(dir, item)\n remove.removeSync(item)\n })\n}\n\nmodule.exports = {\n emptyDirSync,\n emptydirSync: emptyDirSync,\n emptyDir,\n emptydir: emptyDir\n}\n", "'use strict'\n\nconst u = require('universalify').fromCallback\nconst path = require('path')\nconst fs = require('graceful-fs')\nconst mkdir = require('../mkdirs')\nconst pathExists = require('../path-exists').pathExists\n\nfunction createFile (file, callback) {\n function makeFile () {\n fs.writeFile(file, '', err => {\n if (err) return callback(err)\n callback()\n })\n }\n\n fs.stat(file, (err, stats) => { // eslint-disable-line handle-callback-err\n if (!err && stats.isFile()) return callback()\n const dir = path.dirname(file)\n pathExists(dir, (err, dirExists) => {\n if (err) return callback(err)\n if (dirExists) return makeFile()\n mkdir.mkdirs(dir, err => {\n if (err) return callback(err)\n makeFile()\n })\n })\n })\n}\n\nfunction createFileSync (file) {\n let stats\n try {\n stats = fs.statSync(file)\n } catch (e) {}\n if (stats && stats.isFile()) return\n\n const dir = path.dirname(file)\n if (!fs.existsSync(dir)) {\n mkdir.mkdirsSync(dir)\n }\n\n fs.writeFileSync(file, '')\n}\n\nmodule.exports = {\n createFile: u(createFile),\n createFileSync\n}\n", "'use strict'\n\nconst u = require('universalify').fromCallback\nconst path = require('path')\nconst fs = require('graceful-fs')\nconst mkdir = require('../mkdirs')\nconst pathExists = require('../path-exists').pathExists\n\nfunction createLink (srcpath, dstpath, callback) {\n function makeLink (srcpath, dstpath) {\n fs.link(srcpath, dstpath, err => {\n if (err) return callback(err)\n callback(null)\n })\n }\n\n pathExists(dstpath, (err, destinationExists) => {\n if (err) return callback(err)\n if (destinationExists) return callback(null)\n fs.lstat(srcpath, (err) => {\n if (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n return callback(err)\n }\n\n const dir = path.dirname(dstpath)\n pathExists(dir, (err, dirExists) => {\n if (err) return callback(err)\n if (dirExists) return makeLink(srcpath, dstpath)\n mkdir.mkdirs(dir, err => {\n if (err) return callback(err)\n makeLink(srcpath, dstpath)\n })\n })\n })\n })\n}\n\nfunction createLinkSync (srcpath, dstpath) {\n const destinationExists = fs.existsSync(dstpath)\n if (destinationExists) return undefined\n\n try {\n fs.lstatSync(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n throw err\n }\n\n const dir = path.dirname(dstpath)\n const dirExists = fs.existsSync(dir)\n if (dirExists) return fs.linkSync(srcpath, dstpath)\n mkdir.mkdirsSync(dir)\n\n return fs.linkSync(srcpath, dstpath)\n}\n\nmodule.exports = {\n createLink: u(createLink),\n createLinkSync\n}\n", "'use strict'\n\nconst path = require('path')\nconst fs = require('graceful-fs')\nconst pathExists = require('../path-exists').pathExists\n\n/**\n * Function that returns two types of paths, one relative to symlink, and one\n * relative to the current working directory. Checks if path is absolute or\n * relative. If the path is relative, this function checks if the path is\n * relative to symlink or relative to current working directory. This is an\n * initiative to find a smarter `srcpath` to supply when building symlinks.\n * This allows you to determine which path to use out of one of three possible\n * types of source paths. The first is an absolute path. This is detected by\n * `path.isAbsolute()`. When an absolute path is provided, it is checked to\n * see if it exists. If it does it's used, if not an error is returned\n * (callback)/ thrown (sync). The other two options for `srcpath` are a\n * relative url. By default Node's `fs.symlink` works by creating a symlink\n * using `dstpath` and expects the `srcpath` to be relative to the newly\n * created symlink. If you provide a `srcpath` that does not exist on the file\n * system it results in a broken symlink. To minimize this, the function\n * checks to see if the 'relative to symlink' source file exists, and if it\n * does it will use it. If it does not, it checks if there's a file that\n * exists that is relative to the current working directory, if does its used.\n * This preserves the expectations of the original fs.symlink spec and adds\n * the ability to pass in `relative to current working direcotry` paths.\n */\n\nfunction symlinkPaths (srcpath, dstpath, callback) {\n if (path.isAbsolute(srcpath)) {\n return fs.lstat(srcpath, (err) => {\n if (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n return callback(err)\n }\n return callback(null, {\n 'toCwd': srcpath,\n 'toDst': srcpath\n })\n })\n } else {\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n return pathExists(relativeToDst, (err, exists) => {\n if (err) return callback(err)\n if (exists) {\n return callback(null, {\n 'toCwd': relativeToDst,\n 'toDst': srcpath\n })\n } else {\n return fs.lstat(srcpath, (err) => {\n if (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n return callback(err)\n }\n return callback(null, {\n 'toCwd': srcpath,\n 'toDst': path.relative(dstdir, srcpath)\n })\n })\n }\n })\n }\n}\n\nfunction symlinkPathsSync (srcpath, dstpath) {\n let exists\n if (path.isAbsolute(srcpath)) {\n exists = fs.existsSync(srcpath)\n if (!exists) throw new Error('absolute srcpath does not exist')\n return {\n 'toCwd': srcpath,\n 'toDst': srcpath\n }\n } else {\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n exists = fs.existsSync(relativeToDst)\n if (exists) {\n return {\n 'toCwd': relativeToDst,\n 'toDst': srcpath\n }\n } else {\n exists = fs.existsSync(srcpath)\n if (!exists) throw new Error('relative srcpath does not exist')\n return {\n 'toCwd': srcpath,\n 'toDst': path.relative(dstdir, srcpath)\n }\n }\n }\n}\n\nmodule.exports = {\n symlinkPaths,\n symlinkPathsSync\n}\n", "'use strict'\n\nconst fs = require('graceful-fs')\n\nfunction symlinkType (srcpath, type, callback) {\n callback = (typeof type === 'function') ? type : callback\n type = (typeof type === 'function') ? false : type\n if (type) return callback(null, type)\n fs.lstat(srcpath, (err, stats) => {\n if (err) return callback(null, 'file')\n type = (stats && stats.isDirectory()) ? 'dir' : 'file'\n callback(null, type)\n })\n}\n\nfunction symlinkTypeSync (srcpath, type) {\n let stats\n\n if (type) return type\n try {\n stats = fs.lstatSync(srcpath)\n } catch (e) {\n return 'file'\n }\n return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nmodule.exports = {\n symlinkType,\n symlinkTypeSync\n}\n", "'use strict'\n\nconst u = require('universalify').fromCallback\nconst path = require('path')\nconst fs = require('graceful-fs')\nconst _mkdirs = require('../mkdirs')\nconst mkdirs = _mkdirs.mkdirs\nconst mkdirsSync = _mkdirs.mkdirsSync\n\nconst _symlinkPaths = require('./symlink-paths')\nconst symlinkPaths = _symlinkPaths.symlinkPaths\nconst symlinkPathsSync = _symlinkPaths.symlinkPathsSync\n\nconst _symlinkType = require('./symlink-type')\nconst symlinkType = _symlinkType.symlinkType\nconst symlinkTypeSync = _symlinkType.symlinkTypeSync\n\nconst pathExists = require('../path-exists').pathExists\n\nfunction createSymlink (srcpath, dstpath, type, callback) {\n callback = (typeof type === 'function') ? type : callback\n type = (typeof type === 'function') ? false : type\n\n pathExists(dstpath, (err, destinationExists) => {\n if (err) return callback(err)\n if (destinationExists) return callback(null)\n symlinkPaths(srcpath, dstpath, (err, relative) => {\n if (err) return callback(err)\n srcpath = relative.toDst\n symlinkType(relative.toCwd, type, (err, type) => {\n if (err) return callback(err)\n const dir = path.dirname(dstpath)\n pathExists(dir, (err, dirExists) => {\n if (err) return callback(err)\n if (dirExists) return fs.symlink(srcpath, dstpath, type, callback)\n mkdirs(dir, err => {\n if (err) return callback(err)\n fs.symlink(srcpath, dstpath, type, callback)\n })\n })\n })\n })\n })\n}\n\nfunction createSymlinkSync (srcpath, dstpath, type) {\n const destinationExists = fs.existsSync(dstpath)\n if (destinationExists) return undefined\n\n const relative = symlinkPathsSync(srcpath, dstpath)\n srcpath = relative.toDst\n type = symlinkTypeSync(relative.toCwd, type)\n const dir = path.dirname(dstpath)\n const exists = fs.existsSync(dir)\n if (exists) return fs.symlinkSync(srcpath, dstpath, type)\n mkdirsSync(dir)\n return fs.symlinkSync(srcpath, dstpath, type)\n}\n\nmodule.exports = {\n createSymlink: u(createSymlink),\n createSymlinkSync\n}\n", "'use strict'\n\nconst file = require('./file')\nconst link = require('./link')\nconst symlink = require('./symlink')\n\nmodule.exports = {\n // file\n createFile: file.createFile,\n createFileSync: file.createFileSync,\n ensureFile: file.createFile,\n ensureFileSync: file.createFileSync,\n // link\n createLink: link.createLink,\n createLinkSync: link.createLinkSync,\n ensureLink: link.createLink,\n ensureLinkSync: link.createLinkSync,\n // symlink\n createSymlink: symlink.createSymlink,\n createSymlinkSync: symlink.createSymlinkSync,\n ensureSymlink: symlink.createSymlink,\n ensureSymlinkSync: symlink.createSymlinkSync\n}\n", "var _fs\ntry {\n _fs = require('graceful-fs')\n} catch (_) {\n _fs = require('fs')\n}\n\nfunction readFile (file, options, callback) {\n if (callback == null) {\n callback = options\n options = {}\n }\n\n if (typeof options === 'string') {\n options = {encoding: options}\n }\n\n options = options || {}\n var fs = options.fs || _fs\n\n var shouldThrow = true\n if ('throws' in options) {\n shouldThrow = options.throws\n }\n\n fs.readFile(file, options, function (err, data) {\n if (err) return callback(err)\n\n data = stripBom(data)\n\n var obj\n try {\n obj = JSON.parse(data, options ? options.reviver : null)\n } catch (err2) {\n if (shouldThrow) {\n err2.message = file + ': ' + err2.message\n return callback(err2)\n } else {\n return callback(null, null)\n }\n }\n\n callback(null, obj)\n })\n}\n\nfunction readFileSync (file, options) {\n options = options || {}\n if (typeof options === 'string') {\n options = {encoding: options}\n }\n\n var fs = options.fs || _fs\n\n var shouldThrow = true\n if ('throws' in options) {\n shouldThrow = options.throws\n }\n\n try {\n var content = fs.readFileSync(file, options)\n content = stripBom(content)\n return JSON.parse(content, options.reviver)\n } catch (err) {\n if (shouldThrow) {\n err.message = file + ': ' + err.message\n throw err\n } else {\n return null\n }\n }\n}\n\nfunction stringify (obj, options) {\n var spaces\n var EOL = '\\n'\n if (typeof options === 'object' && options !== null) {\n if (options.spaces) {\n spaces = options.spaces\n }\n if (options.EOL) {\n EOL = options.EOL\n }\n }\n\n var str = JSON.stringify(obj, options ? options.replacer : null, spaces)\n\n return str.replace(/\\n/g, EOL) + EOL\n}\n\nfunction writeFile (file, obj, options, callback) {\n if (callback == null) {\n callback = options\n options = {}\n }\n options = options || {}\n var fs = options.fs || _fs\n\n var str = ''\n try {\n str = stringify(obj, options)\n } catch (err) {\n // Need to return whether a callback was passed or not\n if (callback) callback(err, null)\n return\n }\n\n fs.writeFile(file, str, options, callback)\n}\n\nfunction writeFileSync (file, obj, options) {\n options = options || {}\n var fs = options.fs || _fs\n\n var str = stringify(obj, options)\n // not sure if fs.writeFileSync returns anything, but just in case\n return fs.writeFileSync(file, str, options)\n}\n\nfunction stripBom (content) {\n // we do this because JSON.parse would convert it to a utf8 string if encoding wasn't specified\n if (Buffer.isBuffer(content)) content = content.toString('utf8')\n content = content.replace(/^\\uFEFF/, '')\n return content\n}\n\nvar jsonfile = {\n readFile: readFile,\n readFileSync: readFileSync,\n writeFile: writeFile,\n writeFileSync: writeFileSync\n}\n\nmodule.exports = jsonfile\n", "'use strict'\n\nconst u = require('universalify').fromCallback\nconst jsonFile = require('jsonfile')\n\nmodule.exports = {\n // jsonfile exports\n readJson: u(jsonFile.readFile),\n readJsonSync: jsonFile.readFileSync,\n writeJson: u(jsonFile.writeFile),\n writeJsonSync: jsonFile.writeFileSync\n}\n", "'use strict'\n\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst pathExists = require('../path-exists').pathExists\nconst jsonFile = require('./jsonfile')\n\nfunction outputJson (file, data, options, callback) {\n if (typeof options === 'function') {\n callback = options\n options = {}\n }\n\n const dir = path.dirname(file)\n\n pathExists(dir, (err, itDoes) => {\n if (err) return callback(err)\n if (itDoes) return jsonFile.writeJson(file, data, options, callback)\n\n mkdir.mkdirs(dir, err => {\n if (err) return callback(err)\n jsonFile.writeJson(file, data, options, callback)\n })\n })\n}\n\nmodule.exports = outputJson\n", "'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst jsonFile = require('./jsonfile')\n\nfunction outputJsonSync (file, data, options) {\n const dir = path.dirname(file)\n\n if (!fs.existsSync(dir)) {\n mkdir.mkdirsSync(dir)\n }\n\n jsonFile.writeJsonSync(file, data, options)\n}\n\nmodule.exports = outputJsonSync\n", "'use strict'\n\nconst u = require('universalify').fromCallback\nconst jsonFile = require('./jsonfile')\n\njsonFile.outputJson = u(require('./output-json'))\njsonFile.outputJsonSync = require('./output-json-sync')\n// aliases\njsonFile.outputJSON = jsonFile.outputJson\njsonFile.outputJSONSync = jsonFile.outputJsonSync\njsonFile.writeJSON = jsonFile.writeJson\njsonFile.writeJSONSync = jsonFile.writeJsonSync\njsonFile.readJSON = jsonFile.readJson\njsonFile.readJSONSync = jsonFile.readJsonSync\n\nmodule.exports = jsonFile\n", "'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst copySync = require('../copy-sync').copySync\nconst removeSync = require('../remove').removeSync\nconst mkdirpSync = require('../mkdirs').mkdirpSync\nconst stat = require('../util/stat')\n\nfunction moveSync (src, dest, opts) {\n opts = opts || {}\n const overwrite = opts.overwrite || opts.clobber || false\n\n const { srcStat } = stat.checkPathsSync(src, dest, 'move')\n stat.checkParentPathsSync(src, srcStat, dest, 'move')\n mkdirpSync(path.dirname(dest))\n return doRename(src, dest, overwrite)\n}\n\nfunction doRename (src, dest, overwrite) {\n if (overwrite) {\n removeSync(dest)\n return rename(src, dest, overwrite)\n }\n if (fs.existsSync(dest)) throw new Error('dest already exists.')\n return rename(src, dest, overwrite)\n}\n\nfunction rename (src, dest, overwrite) {\n try {\n fs.renameSync(src, dest)\n } catch (err) {\n if (err.code !== 'EXDEV') throw err\n return moveAcrossDevice(src, dest, overwrite)\n }\n}\n\nfunction moveAcrossDevice (src, dest, overwrite) {\n const opts = {\n overwrite,\n errorOnExist: true\n }\n copySync(src, dest, opts)\n return removeSync(src)\n}\n\nmodule.exports = moveSync\n", "'use strict'\n\nmodule.exports = {\n moveSync: require('./move-sync')\n}\n", "'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst copy = require('../copy').copy\nconst remove = require('../remove').remove\nconst mkdirp = require('../mkdirs').mkdirp\nconst pathExists = require('../path-exists').pathExists\nconst stat = require('../util/stat')\n\nfunction move (src, dest, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n const overwrite = opts.overwrite || opts.clobber || false\n\n stat.checkPaths(src, dest, 'move', (err, stats) => {\n if (err) return cb(err)\n const { srcStat } = stats\n stat.checkParentPaths(src, srcStat, dest, 'move', err => {\n if (err) return cb(err)\n mkdirp(path.dirname(dest), err => {\n if (err) return cb(err)\n return doRename(src, dest, overwrite, cb)\n })\n })\n })\n}\n\nfunction doRename (src, dest, overwrite, cb) {\n if (overwrite) {\n return remove(dest, err => {\n if (err) return cb(err)\n return rename(src, dest, overwrite, cb)\n })\n }\n pathExists(dest, (err, destExists) => {\n if (err) return cb(err)\n if (destExists) return cb(new Error('dest already exists.'))\n return rename(src, dest, overwrite, cb)\n })\n}\n\nfunction rename (src, dest, overwrite, cb) {\n fs.rename(src, dest, err => {\n if (!err) return cb()\n if (err.code !== 'EXDEV') return cb(err)\n return moveAcrossDevice(src, dest, overwrite, cb)\n })\n}\n\nfunction moveAcrossDevice (src, dest, overwrite, cb) {\n const opts = {\n overwrite,\n errorOnExist: true\n }\n copy(src, dest, opts, err => {\n if (err) return cb(err)\n return remove(src, cb)\n })\n}\n\nmodule.exports = move\n", "'use strict'\n\nconst u = require('universalify').fromCallback\nmodule.exports = {\n move: u(require('./move'))\n}\n", "'use strict'\n\nconst u = require('universalify').fromCallback\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst pathExists = require('../path-exists').pathExists\n\nfunction outputFile (file, data, encoding, callback) {\n if (typeof encoding === 'function') {\n callback = encoding\n encoding = 'utf8'\n }\n\n const dir = path.dirname(file)\n pathExists(dir, (err, itDoes) => {\n if (err) return callback(err)\n if (itDoes) return fs.writeFile(file, data, encoding, callback)\n\n mkdir.mkdirs(dir, err => {\n if (err) return callback(err)\n\n fs.writeFile(file, data, encoding, callback)\n })\n })\n}\n\nfunction outputFileSync (file, ...args) {\n const dir = path.dirname(file)\n if (fs.existsSync(dir)) {\n return fs.writeFileSync(file, ...args)\n }\n mkdir.mkdirsSync(dir)\n fs.writeFileSync(file, ...args)\n}\n\nmodule.exports = {\n outputFile: u(outputFile),\n outputFileSync\n}\n", "'use strict'\n\nmodule.exports = Object.assign(\n {},\n // Export promiseified graceful-fs:\n require('./fs'),\n // Export extra methods:\n require('./copy-sync'),\n require('./copy'),\n require('./empty'),\n require('./ensure'),\n require('./json'),\n require('./mkdirs'),\n require('./move-sync'),\n require('./move'),\n require('./output'),\n require('./path-exists'),\n require('./remove')\n)\n\n// Export fs.promises as a getter property so that we don't trigger\n// ExperimentalWarning before fs.promises is actually accessed.\nconst fs = require('fs')\nif (Object.getOwnPropertyDescriptor(fs, 'promises')) {\n Object.defineProperty(module.exports, 'promises', {\n get () { return fs.promises }\n })\n}\n", "import { join } from 'path'\n\n/**\n * The .layer0 build directory\n */\nexport const LAYER0_DIR = '.layer0'\n\n/**\n * The destination directory for JS server code\n */\nexport const JS_DIR = join(LAYER0_DIR, 'lambda')\n\n/**\n * The destination directory for static assets\n */\nexport const ASSETS_DIR = join(LAYER0_DIR, 's3')\nexport const PERMANENT_ASSETS_DIR = join(LAYER0_DIR, 's3-permanent')\n\n/**\n * The directory into which source code is copied for debugging purposes\n */\nexport const SOURCES_DIR = join(LAYER0_DIR, 'src')\n\n/**\n * The name of the compiled routes file\n */\nexport const ROUTES_FILE_NAME = 'routes.js'\n\n/**\n * Returns the destination path within the lambda dir for the specified backend\n * @param backend A backend name\n * @return a file path\n */\nexport function pathForBackend(backend: string) {\n return join('__backends__', `${backend}.js`)\n}\n", "'use strict';\nmodule.exports = path => {\n\tconst isExtendedLengthPath = /^\\\\\\\\\\?\\\\/.test(path);\n\tconst hasNonAscii = /[^\\u0000-\\u0080]+/.test(path); // eslint-disable-line no-control-regex\n\n\tif (isExtendedLengthPath || hasNonAscii) {\n\t\treturn path;\n\t}\n\n\treturn path.replace(/\\\\/g, '/');\n};\n", "import slash from 'slash'\n\n/**\n * Loads a module at runtime, ensuring that it won't be bundled by webpack. This function\n * also ensures proper behavior on windows, *nix, and macos filesystems, even if the module\n * path is derived from a file path with backslashes. This function will return undefined if\n * the module could not be loaded.\n * @param modulePath The path to the module to load\n * @param options.ignoreErrors Will return undefined if the module fails to load\n */\nexport default function nonWebpackRequire(\n modulePath: string,\n { ignoreErrors = false }: { ignoreErrors?: boolean } = {}\n) {\n try {\n return eval('require')(slash(modulePath))\n } catch (e) {\n if (ignoreErrors) {\n return undefined\n } else {\n throw e\n }\n }\n}\n", "/**\n * This module provides a context that can be used to store request\n * state. For example, accumulating timing metrics from various layers\n * during the life of the request.\n */\n\nimport { isLocal } from './environment'\nimport nonWebpackRequire from './utils/nonWebpackRequire'\n\ndeclare global {\n module NodeJS {\n interface Global {\n __layer0_timings__: SingletonContext\n }\n }\n}\n\nconst CONTEXT = 'layer0'\nlet clsNamespace: any\n\n/**\n * Runs the specified callback within the specified context\n * @param cb\n */\nexport function withContext(cb: () => Promise<any>) {\n if (isLocal()) {\n return createClsNamespace().runAndReturn(cb)\n } else {\n global.__layer0_timings__ = new SingletonContext()\n return cb()\n }\n}\n\n/**\n * Returns the current context.\n */\nfunction getContext() {\n return global.__layer0_timings__ || getClsNamespace()\n}\n\n/**\n * Creates a new CLS-hooked namespace\n */\nfunction createClsNamespace() {\n const cls = nonWebpackRequire('cls-hooked')\n\n if (!clsNamespace) {\n clsNamespace = cls.createNamespace(CONTEXT)\n }\n\n return clsNamespace\n}\n\n/**\n * Gets the current CLS-hooked namespace\n */\nfunction getClsNamespace() {\n return nonWebpackRequire('cls-hooked').getNamespace(CONTEXT)\n}\n\n/**\n * Gets a value from the current context\n * @param key The name of the variable to get\n * @param defaultValue A default value to set and return if no value is found.\n */\nexport function get(key: string, defaultValue: any) {\n try {\n const context = getContext()\n let value = context.get(key)\n\n if (value == null) {\n value = defaultValue\n context.set(key, defaultValue)\n }\n return value\n } catch (e) {\n return defaultValue\n }\n}\n\n/**\n * Sets a value on the current context\n * @param key The variable to set\n * @param value The value to store\n */\nexport function set(key: string, value: any) {\n try {\n getContext().set(key, value)\n } catch (e) {\n throw new Error('set must be called within withContext')\n }\n}\n\n/**\n *\n */\nclass SingletonContext {\n values: any = {}\n\n get(key: string) {\n return this.values[key]\n }\n\n set(key: string, value: any) {\n this.values[key] = value\n }\n}\n", "import Response from './router/Response'\nimport { HTTP_HEADERS } from './constants'\nimport { get, withContext } from './context'\n\nexport const NOT_ENDED_VALUE = 'na'\n\nexport class InternalTiming {\n /**\n * The name assigned to the timing in response headers\n */\n readonly name: string\n\n /**\n * The time the timing started\n */\n startTime?: Date\n\n /**\n * The number of milliseconds elapsed\n */\n duration: number = 0\n\n /**\n * A discrete value for the timing, for example \"hit\" for \"ecc\"\n */\n discreteValue?: string\n\n /**\n * Set to true if the timing has been ended\n */\n ended: boolean = false\n\n /**\n * @param name The name of the timing component that will be reported in the `x-0-user-t` header\n */\n constructor(name: string, internal: boolean = true) {\n this.name = name\n const timings = internal ? internalTimings() : userTimings()\n timings.push(this)\n }\n\n /**\n * Starts the timing.\n * @returns A self-reference, suitable for chaining\n */\n start() {\n this.startTime = new Date()\n this.ended = false\n return this\n }\n\n /**\n * Sets the discrete value for this timing\n * @param discreteValue\n * @returns A self-reference, suitable for chaining\n */\n set(discreteValue: string) {\n this.discreteValue = discreteValue\n return this\n }\n\n /**\n * Ends the timing.\n * @returns A self-reference, suitable for chaining\n */\n end() {\n if (!this.startTime) {\n console.warn(`Timing ${this.name} not started.`)\n return this\n }\n\n this.ended = true\n this.duration += new Date().getTime() - this.startTime.getTime()\n return this\n }\n\n /**\n * Convenience method that is the same as `end`, but meant to indicate\n * that the timing may be resumed later\n */\n pause() {\n return this.end()\n }\n\n /**\n * Convenience method that is the same as `start`, but meant to indicate\n * that the timing has been paused.\n */\n resume() {\n return this.start()\n }\n\n /**\n * Gets the value of the timing for response headers. Will be 'na' if not started, otherwise\n * the numeric duration in milliseconds.\n */\n get value() {\n if (this.discreteValue != null) {\n return this.discreteValue\n } else {\n return this.ended ? this.duration : NOT_ENDED_VALUE\n }\n }\n}\n\n/**\n * A higher order function that wraps the provided function in a request context with user\n * and internal timings reset\n * @private\n * @param handler\n */\nexport function withTimings<T extends Promise<any>>(handler: (...args: any[]) => T) {\n return (...args: any[]) => {\n return withContext(() => {\n return handler(...args)\n })\n }\n}\n\n/**\n * Returns the value of the internal timing with the specified name\n * @private\n * @param name The name of an internal timing, for example \"ecc\"\n */\nexport function getInternalTiming(name: string) {\n return internalTimings().find(t => t.name === name)?.value\n}\n\n/**\n * Returns the internal timings from the current request context\n * @private\n */\nfunction internalTimings(): Timing[] {\n return <InternalTiming[]>(<unknown>get('internalTimings', []))\n}\n\n/**\n * Returns the user timings from the current request context\n * @private\n */\nfunction userTimings(): Timing[] {\n return <Timing[]>(<unknown>get('userTimings', []))\n}\n\n/**\n * Adds x-0-t, x-0-user-t, and server-timing headers to the response\n * @private\n * @param response\n */\nexport function addTimings(response: Response) {\n const userT = userTimings()\n const internalT = internalTimings()\n\n if (userT.length) {\n response.setHeader(HTTP_HEADERS.x0UserT, getTimingsResponseHeader(userT))\n response.setHeader(HTTP_HEADERS.serverTiming, appendServerTimings(response))\n }\n if (internalT.length) {\n response.setHeader(HTTP_HEADERS.x0T, getTimingsResponseHeader(internalT))\n }\n}\n\n/**\n * Gets the value of the x-0-user-t header.\n * @private\n */\nfunction getTimingsResponseHeader(timings: Timing[]) {\n return timings.map(t => `${t.name}=${t.value}`).join(',')\n}\n\n/**\n * Returns the user timings in server-timing response header format\n * @private\n */\nfunction appendServerTimings(response: Response) {\n const existingHeader = response.getHeader(HTTP_HEADERS.serverTiming)\n const timings = userTimings().map(t => `${t.name};dur=${t.value}`)\n\n if (Array.isArray(existingHeader)) {\n timings.push(...existingHeader)\n } else if (existingHeader) {\n timings.push(existingHeader)\n }\n\n return timings.join(', ')\n}\n\n/**\n * Allows you to track the performance of your code and asynchronous operations such as fetches.\n * Timings will be returned as a comma delimited list in the `x-0-user-t` header.\n *\n * ** Example **\n *\n * ```js\n * import Timing from '@layer0/core/timing'\n *\n * const timing = new Timing('fetch').start()\n * const result = await fetch('http://my-api.com/products/1')\n * timing.end() // will result in `x-0-user-t: fetch=(millis)` response header\n * ```\n *\n * If a timing is started but not finished by the time the response is sent, the value will be `na`.\n */\nexport default class Timing extends InternalTiming {\n constructor(name: string) {\n super(name, false)\n }\n}\n\n/**\n * Names for x-0-t components\n */\nexport enum InternalNames {\n edgeCache = 'ecc',\n transformRequest = 'wa',\n transformResponse = 'wz',\n routeMatching = 'wr',\n proxying = 'wp',\n}\n\n/**\n * Values for edgeCache component of x-0-t\n */\nexport enum CacheValue {\n hit = 'hit',\n pass = 'pass',\n cached = 'cached',\n}\n", "import nonWebpackRequire from '../utils/nonWebpackRequire'\n\n/**\n * Loads and returns a router. This function can accomodate:\n *\n * 1.) a routes file that uses `module.exports` or `export default`.\n * 2.) a routes file that exports a function using `module.exports` or `export default`.\n * 3.) a router instance\n * 4.) An object with a default key that is a router instance\n * 5.) An object with a default key whose value is a function that returns a router instance.\n *\n * @param routerPath A path to routes.js,\n * @return {Router} The Router instance\n */\nexport default function loadRouter(router: any) {\n if (typeof router === 'string') {\n router = nonWebpackRequire(router)\n }\n if (router.default) router = router.default\n if (typeof router === 'function') router = router()\n return router\n}\n", "'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n", "'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n", "'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n", "'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n", "'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n", "module.exports = require('util').inspect;\n", "var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar match = String.prototype.match;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nvar inspectCustom = require('./util.inspect').custom;\nvar inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;\nvar toStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag !== 'undefined' ? Symbol.toStringTag : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('options \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n return String(obj);\n }\n if (typeof obj === 'bigint') {\n return String(obj) + 'n';\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = seen.slice();\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function') {\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + keys.join(', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? String(obj).replace(/^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + String(obj.nodeName).toLowerCase();\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '</' + String(obj.nodeName).toLowerCase() + '>';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + xs.join(', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + parts.join(', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function') {\n return obj[inspectSymbol]();\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? toStr(obj).slice(8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + [].concat(stringTag || [], protoTag || []).join(': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + ys.join(', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return String(s).replace(/\"/g, '&quot;');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString(str.slice(0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = str.replace(/(['\\\\])/g, '\\\\$1').replace(/[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + n.toString(16).toUpperCase();\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : entries.join(', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = Array(opts.indent + 1).join(' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: Array(depth + 1).join(baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + xs.join(',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ((/[^\\w$]/).test(key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n", "'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n", "'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n", "'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n if (sideChannel.has(object)) {\n throw new RangeError('Cyclic object value');\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n var value = typeof key === 'object' && key.value !== undefined ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix\n : prefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, true);\n var valueSideChannel = getSideChannel();\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('\u2713')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n", "'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the \u2713 character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the \u2713 character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('\u2713')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n", "'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n", "/*!\n * content-type\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter = token \"=\" ( token / quoted-string )\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n * / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * / DIGIT / ALPHA\n * ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text = %x80-FF\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nvar PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *(\"(?:[\\u000b\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u000b\\u0020-\\u00ff])*\"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g\nvar TEXT_REGEXP = /^[\\u000b\\u0020-\\u007e\\u0080-\\u00ff]+$/\nvar TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text = %x80-FF\n */\nvar QESC_REGEXP = /\\\\([\\u000b\\u0020-\\u00ff])/g\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6\n */\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type = token\n * subtype = token\n */\nvar TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * Module exports.\n * @public\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n if (!obj || typeof obj !== 'object') {\n throw new TypeError('argument obj is required')\n }\n\n var parameters = obj.parameters\n var type = obj.type\n\n if (!type || !TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid type')\n }\n\n var string = type\n\n // append parameters\n if (parameters && typeof parameters === 'object') {\n var param\n var params = Object.keys(parameters).sort()\n\n for (var i = 0; i < params.length; i++) {\n param = params[i]\n\n if (!TOKEN_REGEXP.test(param)) {\n throw new TypeError('invalid parameter name')\n }\n\n string += '; ' + param + '=' + qstring(parameters[param])\n }\n }\n\n return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @public\n */\n\nfunction parse (string) {\n if (!string) {\n throw new TypeError('argument string is required')\n }\n\n // support req/res-like objects as argument\n var header = typeof string === 'object'\n ? getcontenttype(string)\n : string\n\n if (typeof header !== 'string') {\n throw new TypeError('argument string is required to be a string')\n }\n\n var index = header.indexOf(';')\n var type = index !== -1\n ? header.substr(0, index).trim()\n : header.trim()\n\n if (!TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid media type')\n }\n\n var obj = new ContentType(type.toLowerCase())\n\n // parse parameters\n if (index !== -1) {\n var key\n var match\n var value\n\n PARAM_REGEXP.lastIndex = index\n\n while ((match = PARAM_REGEXP.exec(header))) {\n if (match.index !== index) {\n throw new TypeError('invalid parameter format')\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value[0] === '\"') {\n // remove quotes and escapes\n value = value\n .substr(1, value.length - 2)\n .replace(QESC_REGEXP, '$1')\n }\n\n obj.parameters[key] = value\n }\n\n if (index !== header.length) {\n throw new TypeError('invalid parameter format')\n }\n }\n\n return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @private\n */\n\nfunction getcontenttype (obj) {\n var header\n\n if (typeof obj.getHeader === 'function') {\n // res-like\n header = obj.getHeader('content-type')\n } else if (typeof obj.headers === 'object') {\n // req-like\n header = obj.headers && obj.headers['content-type']\n }\n\n if (typeof header !== 'string') {\n throw new TypeError('content-type header is missing from object')\n }\n\n return header\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n var str = String(val)\n\n // no need to quote tokens\n if (TOKEN_REGEXP.test(str)) {\n return str\n }\n\n if (str.length > 0 && !TEXT_REGEXP.test(str)) {\n throw new TypeError('invalid parameter value')\n }\n\n return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Class to represent a content type.\n * @private\n */\nfunction ContentType (type) {\n this.parameters = Object.create(null)\n this.type = type\n}\n", "/**\n * `isEmpty` function instead of importing lodash.\n *\n * Note that this function is not entirely equivalent to lodash's but it uses far less space in the bundle.\n */\nexport default function isEmpty(value: any) {\n if (!value) {\n return true\n }\n\n if (typeof value.length === 'number') {\n return !value.length\n }\n\n if (typeof value === 'object' && Object.keys(value).length) {\n return false\n }\n\n return true\n}\n", "export default function isString(x: any) {\n return typeof x === 'string'\n}\n", "import { gunzipSync, brotliDecompressSync } from 'zlib'\nimport { HTTP_HEADERS, BROTLI_ENCODING, GZIP_ENCODING } from '../constants'\nimport Response from '../router/Response'\n\n/**\n * If needed decodes the body in place from the response content-encoding.\n * Removes the content-encoding header and updates the content-length as the\n * decoded body has no encoding and will have a different length.\n * @param response\n * @returns True if decoding happened or wasn't needed, false otherwise\n */\nexport default function decode(response: Response): Boolean {\n const contentEncoding = (<string>response.getHeader(HTTP_HEADERS.contentEncoding))?.toLowerCase()\n // When there is no encoding, then there is nothing to decode.\n if (!contentEncoding) {\n return true\n }\n\n switch (contentEncoding) {\n case GZIP_ENCODING: {\n if (!Buffer.isBuffer(response.body)) {\n return false\n }\n response.body = gunzipSync(response.body)\n response.removeHeader(HTTP_HEADERS.contentEncoding)\n response.setHeader(HTTP_HEADERS.contentLength, Buffer.byteLength(response.body))\n return true\n }\n case BROTLI_ENCODING: {\n if (!Buffer.isBuffer(response.body)) {\n return false\n }\n response.body = brotliDecompressSync(response.body)\n response.removeHeader(HTTP_HEADERS.contentEncoding)\n response.setHeader(HTTP_HEADERS.contentLength, Buffer.byteLength(response.body))\n return true\n }\n default: {\n // We cannot decode the body for unsupported encodings.\n return false\n }\n }\n}\n", "// This module has connascence of behavior with the module of the same name in XBP.\n// There are differences in the actual implementation, most notably the use of asynchronous\n// compression which relies on the threadpool rather than blocking the main thread.\n// In lambda we are free to block the main thread as lambda processes the requests serially.\n// In XBP we are not free to block the main thread as it processes many requests concurrently.\n\nimport { gzipSync, brotliCompressSync } from 'zlib'\nimport { HTTP_HEADERS, BROTLI_ENCODING, GZIP_ENCODING } from '../constants'\nimport { parse as parseContentType } from 'content-type'\nimport isEmpty from '../utils/isEmpty'\nimport isString from '../utils/isString'\nimport Response from '../router/Response'\nimport decode from '../utils/decode'\n\n/**\n * Those content types that will be gzipped are generated from the lists in:\n * our Layer0 v1 production Nginx + Layer0 v1 production Varnish + default CDN gzip policy\n *\n * Set is not always optimal but in the benchmarks came out on top the most times.\n * It is also the easiest to read and check for correctness.\n */\nconst COMPRESSIBLE_TYPES = new Set([\n 'application/atom_xml',\n 'application/javascript',\n 'application/json',\n 'application/rss+xml',\n 'application/vnd.ms-fontobject',\n 'application/x-font-opentype',\n 'application/x-font-ttf',\n 'application/x-javascript',\n 'application/xhtml+xml',\n 'application/xml',\n 'application/xml+rss',\n 'font/eot',\n 'font/opentype',\n 'font/otf',\n 'image/svg+xml',\n 'image/x-icon',\n 'text/css',\n 'text/html',\n 'text/javascript',\n 'text/js',\n 'text/plain',\n])\n\n/**\n * Adapts the response body to the downstream accept encoding. This may mean:\n * a) Not doing anything if the downstream accept encoding the content encoding are compatible.\n * b) Compressing the response body to a downstream compatible encoding, if response body has no encoding.\n * c) Decompressing the response body from downstream incompatible encoding and optionally re-compressing it\n * to downstream compatible encoding.\n *\n * If any compression is done by this function, then the content-encoding and content-length headers will\n * correspond to the new encoding/length of the response body.\n *\n * @param acceptEncoding Value of downstream accept-encoding header\n * @param res HttpResponse object\n * @param response Lambda response object\n */\nconst adaptResponseEncodingToDownstream = (\n acceptEncoding: string,\n res: Response,\n response: any\n) => {\n let contentEncoding: any = res.getHeader(HTTP_HEADERS.contentEncoding)\n\n // Figure out if we first need to encode anything.\n if (isEmpty(acceptEncoding)) {\n if (!isEmpty(contentEncoding)) {\n // Best effort to decode and return the decoded body.\n decode(res)\n response.body = res.body\n }\n return\n }\n\n const BROTLI_ENCODING_REGEX = /\\bbr\\b/\n const GZIP_ENCODING_REGEX = /\\bgzip\\b/\n const downstreamIsGzipCompatible = GZIP_ENCODING_REGEX.test(acceptEncoding)\n const downstreamIsBrotliCompatible = BROTLI_ENCODING_REGEX.test(acceptEncoding)\n\n if (downstreamIsGzipCompatible && contentEncoding === GZIP_ENCODING) {\n return\n }\n if (downstreamIsBrotliCompatible && contentEncoding === BROTLI_ENCODING) {\n return\n }\n\n // Try to decode the content. If we cannot decode then we will pass the content\n // as-is and on the edge we will refuse to cache it (see the logic in upstream\n // response handling on the edge and specifically the bad-encoding caching status)\n if (!decode(res)) {\n return\n }\n\n // Since AWS lambda holds multiValueHeaders as array convert string to array\n let contentType: any = res.getHeader(HTTP_HEADERS.contentType)\n contentType = isString(contentType) ? [contentType] : contentType\n // Return body if content-type does not exist or match the list of mimes\n if (\n !contentType ||\n !COMPRESSIBLE_TYPES.has(parseContentType(contentType[0]).type.toLowerCase())\n ) {\n return\n }\n\n // If request accepts a gzip response, then encode it with gzip.\n // If request accepts a brotli response, then encoding it with brotli.\n // If both are acceptable then use gzip which we prefer gzip compression in lambda because\n // while the lambdas can scale (unlike the edge) the throughout for small un-cached objects\n // has been observed to drop by 40%.\n // End developers can work around this default behavior by doing the Brotli compression\n // themselves and correctly setting the `content-encoding`.\n let targetContentEncoding\n if (downstreamIsGzipCompatible) {\n targetContentEncoding = GZIP_ENCODING\n } else if (downstreamIsBrotliCompatible) {\n targetContentEncoding = BROTLI_ENCODING\n }\n\n // Encode the body.\n let encodedBody\n switch (targetContentEncoding) {\n case BROTLI_ENCODING: {\n encodedBody = brotliCompressSync(Buffer.from(response.body))\n break\n }\n case GZIP_ENCODING: {\n encodedBody = gzipSync(Buffer.from(response.body))\n break\n }\n default: {\n // We only support gzip and brotli so if neither is supported we just return\n // the un-encoded response.\n return\n }\n }\n // Set the response headers and body.\n res.setHeader(HTTP_HEADERS.contentLength, Buffer.byteLength(encodedBody))\n res.setHeader(HTTP_HEADERS.contentEncoding, targetContentEncoding)\n response.body = encodedBody\n}\n\nexport default adaptResponseEncodingToDownstream\n", "/**\n * This file is modified version of: https://github.com/danielcondemarin/serverless-next.js/blob/master/packages/next-aws-lambda/lib/compatLayer.js\n *\n * Mods:\n * - getHeader were only able to read lower case headers, but it was able to set upper case headers as well with writeHead,\n * so all headers are converted to lowercase now.\n *\n * - Gzippes the response on response end if matches the content-type\n *\n * - Removed variable for base64 support since we always return base64 from the lambdas.\n */\n\nimport { LambdaInvocation } from './lambdaInstance'\nimport { LAYER0_ENV_VARIABLES, HTTP_HEADERS } from '../constants'\nimport { parse, stringify } from 'qs'\nimport { v4 as uuidv4 } from 'uuid'\nimport adaptResponseEncodingToDownstream from './adaptResponseEncodingToDownstream'\nimport Stream from 'stream'\nimport { isLocal } from '../environment'\n\n/**\n * Gets the version of @layer0/core. For this to work in testing an entry needed\n * to be added to moduleNameMapper in the jest config specifically for package.json\n *\n * Notes:\n * - In this module there are multiple places that need to read Layer0 version.\n * But elegantly and correctly offering a single function to read Layer0 version is hard\n * because these different places are transpiled, bundled and invoked in different\n * contexts. For example, if we try to replace this with reading version from\n * DeploymentBuilder then bundling fails.\n *\n * @return {String}\n */\nfunction getLayer0Version() {\n return process.env[LAYER0_ENV_VARIABLES.versionOverride] || require('../../package.json').version\n}\n\nexport interface ReqResMapperOptions {\n /**\n * If `true`, duplicate queries in request will not be transformed to array\n */\n allowReqQueryDuplicates?: boolean\n}\n\nexport default (\n event: any,\n invocation: LambdaInvocation,\n options: ReqResMapperOptions = {\n allowReqQueryDuplicates: false,\n }\n) => {\n const response = {\n body: <any>Buffer.from(''),\n isBase64Encoded: true,\n statusCode: 200,\n statusMessage: 'OK',\n multiValueHeaders: <any>{},\n }\n\n let responsePromise\n const req: any = new Stream.Readable()\n\n // we provide url, path, and query (decoded), to match how express works so that development and production environment behave the same\n req.url = event.path\n req.path = event.path\n req.query = {}\n req.method = event.httpMethod\n req.rawHeaders = []\n req.headers = {}\n\n if (\n event.multiValueQueryStringParameters &&\n Object.keys(event.multiValueQueryStringParameters).length\n ) {\n Object.keys(event.multiValueQueryStringParameters).forEach(key => {\n // keep backwards compatibility so that arrays with a single value are\n // converted to just be that value:\n const curVal = event.multiValueQueryStringParameters[key]\n if (Array.isArray(curVal) && curVal.length === 1) {\n event.multiValueQueryStringParameters[key] = curVal[0]\n }\n })\n const qs = stringify(event.multiValueQueryStringParameters, {\n indices: !options.allowReqQueryDuplicates,\n })\n req.url += `?${qs}`\n req.query = parse(qs) // we stringify and reparse to ensure that query parameters with a single value are not provided as an array\n }\n\n const headers = event.multiValueHeaders || {}\n\n for (const key of Object.keys(headers)) {\n // Compatibility with https://nodejs.org/api/all.html#http_message_rawheaders\n // Header names are not lower-cased to maintain Node compatibility.\n for (const value of headers[key]) {\n req.rawHeaders.push(key)\n req.rawHeaders.push(value)\n }\n // Compatibility with https://nodejs.org/api/all.html#http_message_headers\n // Header names *are* lower-cased to maintain Node compatibility.\n req.headers[key.toLowerCase()] = headers[key].toString()\n }\n\n req.getHeader = (name: string) => req.headers[name.toLowerCase()]\n req.getHeaders = () => req.headers\n req.setHeader = (name: string, value: string | string[]) => {\n req.headers[name.toLowerCase()] = value\n }\n req.removeHeader = (name: string) => {\n delete req.headers[name.toLowerCase()]\n }\n req.connection = {}\n\n // Capture the downstream `accept-encoding` because compute can modify the `req` object\n // and we need the accept encoding post-user code to compress the response.\n const downstreamAcceptEncoding = req.getHeader(HTTP_HEADERS.acceptEncoding)\n\n // req.secure is ExpressJS extension, set to false only when the app is running locally or the protocol is HTTP\n // (so the default remains HTTPS which has historically been the only protocol we allowed)\n req.secure = !isLocal() && req.getHeader(HTTP_HEADERS.x0Protocol) !== 'http'\n\n // Depending on the version req.socket.encrypted is set to true by NodeJS when the protocol is HTTPS.\n req.socket = {\n encrypted: req.secure,\n }\n // Depending on the version req.connection.encrypted is set to true by NodeJS when the protocol is HTTPS.\n req.connection = {\n encrypted: req.secure,\n }\n req.protocol = req.secure ? 'https' : 'http'\n\n // If the downstream has sent us request ID we use it, otherwise we generate a new one.\n // We have to repeat this code here *and* in Router *and* in XBP *and* in edge because\n // each one of these components may be the first to receive the request:\n // - Router when using `layer0 run`\n // - Handler when using `layer0 run --production`\n // - XBP when making request to cloud\n // - Edge when making request to edge\n let newRequestId: string\n if (!req.headers[HTTP_HEADERS.xRequestId]) {\n newRequestId = uuidv4()\n req.headers[HTTP_HEADERS.xRequestId] = newRequestId\n }\n\n const res: any = new Stream()\n\n Object.defineProperty(res, 'statusCode', {\n get() {\n return response.statusCode\n },\n set(statusCode) {\n response.statusCode = statusCode\n },\n })\n Object.defineProperty(res, 'statusMessage', {\n get() {\n return response.statusMessage\n },\n set(statusMessage) {\n response.statusMessage = statusMessage\n },\n })\n res.headers = {}\n res.writeHead = (status: number, statusMessage?: string | object, headers?: object) => {\n response.statusCode = status\n if (typeof statusMessage === 'string') {\n response.statusMessage = statusMessage\n } else {\n if (typeof statusMessage === 'object') {\n headers = statusMessage\n statusMessage = undefined\n }\n }\n if (typeof headers === 'object') {\n Object.entries(headers).forEach(([name, value]) => {\n res.setHeader(name, value)\n })\n }\n // If this component has generated the new request ID then\n // it is also responsible for sending it downstream.\n if (newRequestId) {\n res.setHeader(HTTP_HEADERS.xRequestId, newRequestId)\n }\n }\n res.write = (chunk: any) => {\n response.body = Buffer.concat([\n response.body,\n Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk),\n ])\n }\n\n res.setHeader = (name: string, value: string) => {\n res.headers[name.toLowerCase()] = value\n }\n\n res.removeHeader = (name: string) => {\n delete res.headers[name.toLowerCase()]\n }\n\n res.getHeader = (name: string) => {\n return res.headers[name.toLowerCase()]\n }\n\n res.getHeaders = () => {\n return res.headers\n }\n\n const onResEnd = (resolve?: any) => (text: string) => {\n if (text) {\n res.write(text)\n }\n\n // Compress the response if needed.\n adaptResponseEncodingToDownstream(downstreamAcceptEncoding, res, response)\n\n // We always respond with base64 so that we can serve non-text assets like images.\n response.body = response.body.toString('base64')\n response.multiValueHeaders = res.headers\n\n invocation.stop()\n logStatusCode(response)\n logExecutionTime(response, invocation)\n logComponentVersion(response, getLayer0Version(), invocation.lambda.id)\n\n fixApiGatewayMultipleHeaders()\n\n resolve(response)\n }\n\n responsePromise = new Promise(resolve => {\n res.end = onResEnd(resolve)\n })\n\n if (event.body) {\n // We allow two ways to read the body. One is through stream events and\n // the other is directly on the request object. The 2nd one is used\n // internally by logging. This does not consume additional memory as\n // event.body is alive during the whole lambda lifetime anyways.\n req.push(event.body, event.isBase64Encoded ? 'base64' : undefined)\n req._rawBodyBase64 = event.body\n }\n\n req.push(null)\n\n function fixApiGatewayMultipleHeaders() {\n for (const key of Object.keys(response.multiValueHeaders)) {\n if (!Array.isArray(response.multiValueHeaders[key])) {\n response.multiValueHeaders[key] = [response.multiValueHeaders[key]]\n }\n }\n }\n\n return { req, res, responsePromise }\n}\n\n/**\n * Adds an `x-0-status` header to the response based on the status code.\n *\n * Notes:\n * - If the `x-0-status` already exists then the status is prefixed to upstream value.\n *\n * @param response The response event\n * @private\n */\nfunction logStatusCode(response: any) {\n prefixResponseHeader(response, HTTP_HEADERS.x0Status, `w=${response.statusCode}`)\n}\n\n/**\n * Adds an `x-0-t` header to the response based on the current time.\n *\n * Notes:\n * - If the `x-0-t` already exists then the execution time is prefixed to upstream value.\n * - `wt` stands for \"worker time\", the duration of the current execution\n * - `wc` stands for \"worker count\", the number of times the lambda has been invoked,\n * with the first invoication having the count of *1* (same as `pc` counter in XBP)\n * - `wg` stands for \"worker age\", the number of milliseconds since the lambda instances was spawned\n * (`wa` already stands for request transformation time)\n * - `wl` stands for \"worker lifetime\", the total lifetime duration\n *\n * @param response The response event\n * @param startTime The start time of the request\n * @private\n */\nfunction logExecutionTime(response: any, invocation: LambdaInvocation) {\n const lambda = invocation.lambda\n prefixResponseHeader(\n response,\n HTTP_HEADERS.x0T,\n `wt=${invocation.duration},wc=${lambda.invocationCounter},wg=${lambda.age},wl=${lambda.lifetimeDuration}`\n )\n}\n\n/**\n * Adds an `x-0-components` header to the response based on the current time.\n *\n * Notes:\n * - If the `x-0-components` already exists then the version is prefixed to upstream value.\n * - `w` stands for \"worker\" and has the Layer0 version of the worker\n * - `wi` stands for \"worker id\"\n *\n * @param response The response event\n * @param version The Layer0 version of the package\n * @private\n */\nfunction logComponentVersion(response: any, version: string, lambdaId: string) {\n prefixResponseHeader(response, HTTP_HEADERS.x0Components, `w=${version},wi=${lambdaId}`)\n}\n\n/**\n * Sets the response header to a new value by prefixing it with the given value or,\n * if it doesn't exist, by setting it to the given value,\n *\n * @param response The response event\n * @param headerName The name of the header to prefix or set\n * @param prefixValue The value of the prefix without trailing comma\n * @private\n */\nfunction prefixResponseHeader(response: any, headerName: string, prefixValue: string) {\n const headerValue = response.multiValueHeaders[headerName]\n if (headerValue) {\n if (Array.isArray(headerValue)) {\n headerValue[0] = `${prefixValue},${headerValue[0]}`\n } else {\n response.multiValueHeaders[headerName] = `${prefixValue},${headerValue}`\n }\n } else {\n response.multiValueHeaders[headerName] = `${prefixValue}`\n }\n}\n", "/**\n * `get` function instead of importing lodash.\n *\n * Note that this function is not entirely equivalent to lodash's but it uses far less space in the bundle.\n */\nexport default function get(object: any, path: string): any {\n let value = object\n const components = path.split('.')\n for (let component of components) {\n if (typeof value === 'undefined') {\n return undefined\n }\n value = value[component]\n }\n return value\n}\n", "import get from './get'\n\n/**\n * `has` function instead of importing lodash.\n *\n * Note that this function is not entirely equivalent to lodash's but it uses far less space in the bundle.\n */\nexport default function has(object: any, path: string): any {\n return !!get(object, path)\n}\n", "'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n", "import { EOL } from 'os'\nimport { BACKENDS } from '../constants'\nimport { isCloud } from '../environment'\nimport nonWebpackRequire from './nonWebpackRequire'\n\n// config.backends[x] domainOrIp schema\nconst domainOrIpSchema = {\n $id: '/domainOrIpSchema',\n type: 'string',\n}\n\n// config.backends[x] object schema\nconst backendObjectSchema = {\n $id: '/backendObjectSchema',\n type: 'object',\n properties: {\n domainOrIp: {\n $ref: domainOrIpSchema.$id,\n },\n port: {\n type: 'number',\n // We allow all ports but we will always use HTTPS protocol no matter the port.\n minimum: 1,\n maximum: 65535,\n },\n hostHeader: {\n type: 'string',\n },\n disableCheckCert: {\n type: 'boolean',\n },\n firstByteTimeout: {\n type: 'number',\n },\n basePath: {\n type: 'string',\n },\n },\n additionalProperties: false,\n required: ['domainOrIp'],\n}\n\n// config.backends schema\nconst backendSchema = {\n $id: '/backendSchema',\n type: 'object',\n patternProperties: {\n '^.*$': {\n oneOf: [{ $ref: domainOrIpSchema.$id }, { $ref: backendObjectSchema.$id }],\n },\n },\n}\n\n// layer0.config.js schema\nconst layer0FileConfigurationSchema = {\n $id: '/layer0FileConfigurationSchema',\n type: 'object',\n properties: {\n name: { type: 'string' },\n team: { type: 'string' },\n prerenderConcurrency: { type: 'number' },\n production: { type: 'boolean' },\n routes: { type: 'string' },\n server: {\n type: 'object',\n required: ['path'],\n properties: { path: { type: 'string' }, export: { type: 'string' } },\n },\n includeFiles: {\n type: 'object',\n },\n sources: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n backends: {\n $ref: backendSchema.$id,\n },\n includeNodeModules: { type: 'boolean' },\n connector: {\n type: 'string',\n },\n },\n additionalProperties: false,\n required: [],\n}\n\n/**\n * An object used to validate an layer0 config.\n *\n * Example:\n * ```js\n * Validator.validateLayer0FileConfiguration(config)\n * ```\n */\nclass Validator {\n /**\n * Validates `layer0.config.js`. If the config is validated, it is returned; otherwise,\n * an error is thrown.\n * @param config Loaded layer0 configuration\n * @returns The validated config\n */\n static validateLayer0FileConfiguration(config: any) {\n if (isCloud()) return config\n\n // Ajv is really big, so we don't bother validating in the cloud - I've we've gotten this far, let 'er rip, baby!\n const Ajv = nonWebpackRequire('ajv')\n\n if (config.connector) {\n try {\n const configSchema = require(`${config.connector}/configSchema`)\n // If a configuration schema exists for the connector, merge into the default schema\n Object.assign(layer0FileConfigurationSchema.properties, configSchema)\n } catch {\n // No config schema for connector, nothing to do here\n }\n }\n\n const ajv = new Ajv({\n allErrors: true,\n schemas: [\n layer0FileConfigurationSchema,\n backendSchema,\n backendObjectSchema,\n domainOrIpSchema,\n ],\n })\n\n let errors = []\n\n // the type cast on the following line is needed to get coverage to 100%. In theory getSchema can return undefined, but it won't since we are creating the schema ourselves.\n const layer0SchemaValidator = ajv.getSchema(layer0FileConfigurationSchema.$id)\n\n if (config.backends && config.backends.moov != null) {\n // Don't allow providing moov backend in layer0.config.js\n errors.push({\n message: 'is a reserved backend name',\n // eslint-disable-next-line quotes\n dataPath: \".backends['moov']\",\n })\n }\n\n // Don't allow providing static backend in layer0.config.js\n if (config.backends && config.backends[BACKENDS.static]) {\n errors.push({\n message: 'is a reserved backend name',\n // eslint-disable-next-line quotes\n dataPath: `.backends.${BACKENDS.static}`,\n })\n }\n\n // Don't allow providing js backend in layer0.config.js\n if (config.backends && config.backends[BACKENDS.js]) {\n errors.push({\n message: 'is a reserved backend name',\n // eslint-disable-next-line quotes\n dataPath: `.backends.${BACKENDS.js}`,\n })\n }\n\n // Run schema validation\n if (!layer0SchemaValidator(config) && layer0SchemaValidator.errors) {\n errors = [...errors, ...layer0SchemaValidator.errors]\n }\n\n // If errors length is not 0 throw error\n if (errors.length) {\n const errorsString = errors\n .map((err, i) => {\n let eString = `${i + 1}) config${err.dataPath}: ${err.message}`\n\n // @ts-ignore\n if (err.keyword === 'additionalProperties') {\n // @ts-ignore\n eString += ` '${err.params.additionalProperty}'`\n }\n\n return eString\n })\n .join(EOL)\n\n throw new Error(`Layer0 configuration validation failed with errors: ${EOL}${errorsString}`)\n }\n\n return config\n }\n}\n\nexport default Validator\n", "import get from './utils/get'\nimport has from './utils/has'\nimport merge from 'deepmerge'\nimport { existsSync } from 'fs'\nimport { join } from 'path'\nimport { LAYER0_ENV_VARIABLES, LAYER0_CONFIG_FILE } from './constants'\nimport Validator from './utils/Validator'\nimport nonWebpackRequire from './utils/nonWebpackRequire'\n\n/**\n * An object containing the config settings. This class is internal, but an instance\n * can be obtained using.\n *\n * ```js\n * import config from '@layer0/core/config'\n * ```\n *\n * @internal\n */\nclass Config {\n private values?: any\n\n readonly defaults = {\n production: true,\n backends: {},\n includeNodeModules: false,\n routes:\n ['routes.js', 'routes.ts', 'routes.cjs'].find(file =>\n existsSync(join(process.cwd(), file))\n ) || 'routes.js',\n }\n\n /**\n * Get configuration by key. Will throw an error if no value is configured\n * @param key The key to grab from the config.\n * @param fallback A value to return if a value is not configured\n */\n get(key: string, fallback?: any): any {\n if (this.has(key)) {\n return get(this.values, key)\n } else if (typeof fallback !== 'undefined') {\n return fallback\n } else {\n throw new Error(`Layer0 configuration key: \"${key}\" is not defined`)\n }\n }\n\n /**\n * Returns true if a value has been configured for a specific key, otherwise false.\n * @param key The key to test.\n */\n has(key: string): boolean {\n if (!this.values) this.loadLayer0Config()\n return has(this.values, key)\n }\n\n /**\n * Returns all config values\n */\n get all() {\n if (!this.values) this.loadLayer0Config()\n return this.values\n }\n\n /**\n * Loads Layer0 config and sets the current configuration.\n */\n private loadLayer0Config() {\n const file = this.loadFromFile()\n const env = this.loadFromEnv()\n this.values = merge.all([{}, this.defaults, file, env])\n }\n\n /**\n * Load configuration from file\n * @private\n */\n private loadFromFile() {\n const configAbsPath = [\n join(process.cwd(), LAYER0_CONFIG_FILE),\n join(process.cwd(), LAYER0_CONFIG_FILE.replace('.js', '.cjs')),\n ].find(existsSync)\n\n if (configAbsPath) {\n try {\n const fileConfig = nonWebpackRequire(configAbsPath)\n return Validator.validateLayer0FileConfiguration(fileConfig)\n } catch (e) {\n throw new Error(`Failed to load ${configAbsPath}: ${e.message}`)\n }\n }\n\n return {}\n }\n\n /**\n * Load configuration from env var\n * @private\n */\n private loadFromEnv() {\n if (process.env[LAYER0_ENV_VARIABLES.config]) {\n try {\n return JSON.parse(<string>process.env[LAYER0_ENV_VARIABLES.config])\n } catch (e) {\n throw new Error(\n `Layer0 configuration variable: ${LAYER0_ENV_VARIABLES.config}, is not parsable as json`\n )\n }\n }\n\n return {}\n }\n}\n\n/**\n * Create a Config instance.\n */\nexport default new Config()\n", "/* istanbul ignore file */\nimport { BACKENDS, HTTP_HEADERS, JS_BACKEND_HOSTNAME } from '../constants'\nimport { existsSync } from 'fs-extra'\nimport { join, basename } from 'path'\nimport { pathForBackend } from '../deploy/paths'\nimport { withTimings } from '../timing'\nimport loadRouter from '../router/loadRouter'\nimport nonWebpackRequire from '../utils/nonWebpackRequire'\nimport reqResMapper from './reqResMapper'\nimport stdStreamsWrapper, { deepRequestInspectionLogger } from './stdStreamsWrapper'\nimport getBodyLoggingData from './getBodyLoggingData'\nimport LambdaInstance, { LambdaInvocation } from './lambdaInstance'\nimport config from '../config'\n\nconst router = loadRouter('./' + basename(config.get('routes')))\n\n/**\n * This is the user lambda entry point\n * @param event A lambda event\n * @param instance The lambda instance\n */\nexport async function handler(event: any, instance: LambdaInstance) {\n // We always create a new lambda invocations, for all jobs so that we can accurately\n // identify cold starts.\n const invocation = new LambdaInvocation(instance)\n invocation.start()\n\n const driLogger = deepRequestInspectionLogger(instance)\n\n // Deployment actions: only for internal usage and is not exposed\n switch (event.action) {\n case 'getEdgeConfig':\n return router.createEdgeConfig()\n case 'getPreloadConfig':\n return withLogging(() => router.createPreloadConfig())\n }\n\n let req: any, res: any, responsePromise: any\n try {\n const reqResResult = reqResMapper(event, invocation, {\n allowReqQueryDuplicates: router.allowReqQueryDuplicates,\n })\n req = reqResResult.req\n res = reqResResult.res\n responsePromise = reqResResult.responsePromise\n } catch (e) {\n return withLogging(() => {\n console.log('Failed to parse the event to get request and response data:', e.message, e.stack)\n return {\n body: <any>(\n Buffer.from('{\"error\":\"Failed to parse the event to get request and response data\"}')\n ),\n isBase64Encoded: true,\n statusCode: 530,\n statusMessage: 'Internal Layer0 Error',\n multiValueHeaders: <any>{},\n }\n })\n }\n\n // Handle web requests.\n return await withLogging(\n async () => {\n const headers = req.headers || {}\n driLogger.logDownstreamRequestInfo({\n method: req.method,\n path: req.url,\n host: headers['host'],\n headers: headers,\n // We keep the protocol format same as the internal Node format on protocol fields.\n protocol: `${headers['x-0-protocol'] || 'https'}:`,\n ...getBodyLoggingData(req._rawBodyBase64, req.headers),\n })\n try {\n await ensureAppStarted(3001)\n } catch (error) {\n console.error(error)\n throw error\n }\n withTimings(() => router.run(req, res))()\n\n return responsePromise.then((result: any) => {\n const headers = res.headers || {}\n driLogger.logDownstreamResponseInfo({\n statusCode: res.statusCode,\n statusMessage: res.statusMessage,\n headers,\n ...getBodyLoggingData(result.body, res.headers),\n })\n return result\n })\n },\n req,\n instance\n )\n}\n\nasync function startApp(port: number) {\n const modulePath = join(process.cwd(), pathForBackend(BACKENDS.js))\n\n if (existsSync(modulePath)) {\n let prod = nonWebpackRequire(modulePath)\n\n if (prod.default) {\n prod = prod.default\n }\n\n // load the prod entry point from the framework integration package\n await prod(port)\n\n // let the router know where to proxy SSR requests\n router.setBackend(BACKENDS.js, {\n domainOrIp: JS_BACKEND_HOSTNAME,\n port,\n })\n\n // use default JS backend port when no port is provided\n const imageOptimizerPort = process.env.LAYER0_IMAGE_OPTIMIZER_PORT\n\n // check if provided env variable port can be parsed\n if (imageOptimizerPort && !/^\\d+$/.test(imageOptimizerPort)) {\n console.error('Error: LAYER0_IMAGE_OPTIMIZER_PORT is not valid number')\n process.exit(1)\n }\n\n // let the router know where to proxy image optimizer requests\n router.setBackend(BACKENDS.imageOptimizer, {\n domainOrIp: process.env.LAYER0_IMAGE_OPTIMIZER_HOST,\n port: imageOptimizerPort ? parseInt(imageOptimizerPort) : undefined,\n })\n }\n}\n/**\n * Starts the user's SSR app if it hasn't already been started\n */\nlet appStartedPromise: Promise<void>\nasync function ensureAppStarted(port: number) {\n if (!appStartedPromise) {\n appStartedPromise = startApp(port)\n }\n return appStartedPromise\n}\n\n// TODO: We need to implement a way to clearly split logs between:\n// 1) user code logs that needs to be JSON, flagged with { awsTag: 'userLogs' }\n// and sent to STDOUT to be picked up by Cloudwatch and our Log Streamer\n// 2) our internal wrapper exception logs that needs to be forwarded and handled\n// by XBP\n//\n// 1) is correctly implemented by stdStreamsWrapper, *but* we need to make sure that user code errors\n// cannot be logged to stdoud past `stdStreamsWrapper.disable()` otherwise they would not appear in Log Streamer\n//\n// 2) https://moovweb.atlassian.net/browse/PC-1766, exception logging and shipping in XBP needs\n// to be reviewed:\n// - some exceptions are escaping (some unhandled promise rejection for example)\n// - XBP is logging all access logs, but should only log exception traces (which should trigger alert)\n/**\n * Starts collecting stdout\n * @param req The web request, if we're serving one\n */\nfunction startLogging(req?: any, lambdaInstance?: LambdaInstance) {\n if (process.env.LAYER0_LOCAL !== 'true' || process.env.LAYER0_LOCAL_CONSOLE_WRAP === 'true') {\n // don't enable logging when running in local production mode because it makes debug output harder to read\n stdStreamsWrapper.enable({\n clientIp: req && req.headers[HTTP_HEADERS.x0ClientIp],\n requestId: req && req.headers[HTTP_HEADERS.xRequestId],\n wi: lambdaInstance?.id,\n })\n }\n}\n\n/**\n * Stops collecting stdout\n */\nfunction stopLogging() {\n stdStreamsWrapper.disable()\n}\n\n// this allows to call deploy action with streaming enabled. This is meant for internal functions such as getPreloadConfig\n// that is called after a deployment being successful. We don't need to wrap the edgeConfig call since it will never be available for the user\n// since it runs before the deployment has finished and user has no way to access those logs.\nasync function withLogging(action: Function, req?: any, lambdaInstance?: LambdaInstance) {\n try {\n startLogging(req, lambdaInstance)\n return await action()\n } finally {\n stopLogging()\n }\n}\n", "/* istanbul ignore file */\n\n// Initialize the LambdaInstance object once per lambda lifetime to capture the metrics.\n// This is done as early as possible so that we can accurately measure\n// cold starts. To get statistics on cold starts search for requests\n// that have the \"worker counter\" equal to 1 and then compare \"worker time\"\n// with \"worker age\".\nconst { default: LambdaInstance } = require('./lambdaInstance')\nconst instance = new LambdaInstance()\n\n// Load HTTP request interception as soon as possible so that we can monkey patch the underlying\n// Node modules before anything else had a chance to take a reference on the original\n// classes and functions.\nconst { interceptRequests } = require('./httpRequestInterceptor')\n\n// This handler is a thin wrapper around the actual inner handler which concerns itself\n// with lambda jobs, metrics, error handling and so on. The responsibility of this handler\n// is to load the HTTP request interception module before anything else is loaded.\nexport async function handler(event: any) {\n interceptRequests(event, {\n enableHttpRequestLogging: process.env.LAYER0_HTTP_REQUEST_LOGGING === '1',\n lambdaInstance: instance,\n })\n\n // Late load the inner handler so that it never interferes with the HTTP request interception module.\n return (async () => {\n const { handler } = require('./innerHandler')\n return await handler(event, instance)\n })()\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }