percher 1.3.0 → 1.4.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 (314) hide show
  1. package/LICENSE +0 -0
  2. package/THIRD-PARTY-NOTICES.txt +0 -0
  3. package/dist/bin/percher.d.ts +0 -0
  4. package/dist/bin/percher.d.ts.map +0 -0
  5. package/dist/bin/percher.js +38914 -47272
  6. package/dist/bin/percher.js.map +0 -0
  7. package/dist/package.json +5 -4
  8. package/dist/src/ci-env.d.ts +0 -0
  9. package/dist/src/ci-env.d.ts.map +0 -0
  10. package/dist/src/ci-env.js +0 -0
  11. package/dist/src/ci-env.js.map +0 -0
  12. package/dist/src/cli-utils.d.ts +0 -0
  13. package/dist/src/cli-utils.d.ts.map +1 -1
  14. package/dist/src/cli-utils.js +3 -0
  15. package/dist/src/cli-utils.js.map +1 -1
  16. package/dist/src/commands/account.d.ts +0 -0
  17. package/dist/src/commands/account.d.ts.map +0 -0
  18. package/dist/src/commands/account.js +0 -0
  19. package/dist/src/commands/account.js.map +0 -0
  20. package/dist/src/commands/admin.d.ts +0 -0
  21. package/dist/src/commands/admin.d.ts.map +0 -0
  22. package/dist/src/commands/admin.js +0 -0
  23. package/dist/src/commands/admin.js.map +0 -0
  24. package/dist/src/commands/analytics.d.ts +0 -0
  25. package/dist/src/commands/analytics.d.ts.map +0 -0
  26. package/dist/src/commands/analytics.js +0 -0
  27. package/dist/src/commands/analytics.js.map +0 -0
  28. package/dist/src/commands/apps.d.ts +0 -0
  29. package/dist/src/commands/apps.d.ts.map +1 -1
  30. package/dist/src/commands/apps.js +8 -1
  31. package/dist/src/commands/apps.js.map +1 -1
  32. package/dist/src/commands/auth.d.ts +0 -0
  33. package/dist/src/commands/auth.d.ts.map +1 -1
  34. package/dist/src/commands/auth.js +9 -0
  35. package/dist/src/commands/auth.js.map +1 -1
  36. package/dist/src/commands/data-records.d.ts +0 -0
  37. package/dist/src/commands/data-records.d.ts.map +0 -0
  38. package/dist/src/commands/data-records.js +0 -0
  39. package/dist/src/commands/data-records.js.map +0 -0
  40. package/dist/src/commands/data.d.ts +0 -0
  41. package/dist/src/commands/data.d.ts.map +0 -0
  42. package/dist/src/commands/data.js +0 -0
  43. package/dist/src/commands/data.js.map +0 -0
  44. package/dist/src/commands/deploys.d.ts +0 -0
  45. package/dist/src/commands/deploys.d.ts.map +0 -0
  46. package/dist/src/commands/deploys.js +0 -0
  47. package/dist/src/commands/deploys.js.map +0 -0
  48. package/dist/src/commands/env.d.ts +0 -0
  49. package/dist/src/commands/env.d.ts.map +0 -0
  50. package/dist/src/commands/env.js +0 -0
  51. package/dist/src/commands/env.js.map +0 -0
  52. package/dist/src/commands/export.d.ts +0 -0
  53. package/dist/src/commands/export.d.ts.map +0 -0
  54. package/dist/src/commands/export.js +0 -0
  55. package/dist/src/commands/export.js.map +0 -0
  56. package/dist/src/commands/github.d.ts +0 -0
  57. package/dist/src/commands/github.d.ts.map +0 -0
  58. package/dist/src/commands/github.js +0 -0
  59. package/dist/src/commands/github.js.map +0 -0
  60. package/dist/src/commands/hooks.d.ts +0 -0
  61. package/dist/src/commands/hooks.d.ts.map +0 -0
  62. package/dist/src/commands/hooks.js +0 -0
  63. package/dist/src/commands/hooks.js.map +0 -0
  64. package/dist/src/commands/migrate.d.ts +0 -0
  65. package/dist/src/commands/migrate.d.ts.map +0 -0
  66. package/dist/src/commands/migrate.js +0 -0
  67. package/dist/src/commands/migrate.js.map +0 -0
  68. package/dist/src/commands/sharing.d.ts +0 -0
  69. package/dist/src/commands/sharing.d.ts.map +0 -0
  70. package/dist/src/commands/sharing.js +0 -0
  71. package/dist/src/commands/sharing.js.map +0 -0
  72. package/dist/src/commands/status.d.ts +0 -0
  73. package/dist/src/commands/status.d.ts.map +0 -0
  74. package/dist/src/commands/status.js +0 -0
  75. package/dist/src/commands/status.js.map +0 -0
  76. package/dist/src/commands/telemetry.d.ts +0 -0
  77. package/dist/src/commands/telemetry.d.ts.map +0 -0
  78. package/dist/src/commands/telemetry.js +0 -0
  79. package/dist/src/commands/telemetry.js.map +0 -0
  80. package/dist/src/commands/token.d.ts +0 -0
  81. package/dist/src/commands/token.d.ts.map +0 -0
  82. package/dist/src/commands/token.js +0 -0
  83. package/dist/src/commands/token.js.map +0 -0
  84. package/dist/src/commands/transfers.d.ts +0 -0
  85. package/dist/src/commands/transfers.d.ts.map +0 -0
  86. package/dist/src/commands/transfers.js +0 -0
  87. package/dist/src/commands/transfers.js.map +0 -0
  88. package/dist/src/context.d.ts +0 -0
  89. package/dist/src/context.d.ts.map +0 -0
  90. package/dist/src/context.js +0 -0
  91. package/dist/src/context.js.map +0 -0
  92. package/dist/src/env-set-input.d.ts +0 -0
  93. package/dist/src/env-set-input.d.ts.map +0 -0
  94. package/dist/src/env-set-input.js +0 -0
  95. package/dist/src/env-set-input.js.map +0 -0
  96. package/dist/src/index.d.ts +0 -0
  97. package/dist/src/index.d.ts.map +0 -0
  98. package/dist/src/index.js +0 -0
  99. package/dist/src/index.js.map +0 -0
  100. package/dist/src/open.d.ts +0 -0
  101. package/dist/src/open.d.ts.map +0 -0
  102. package/dist/src/open.js +0 -0
  103. package/dist/src/open.js.map +0 -0
  104. package/dist/src/output.d.ts +0 -0
  105. package/dist/src/output.d.ts.map +1 -1
  106. package/dist/src/output.js +16 -1
  107. package/dist/src/output.js.map +1 -1
  108. package/dist/src/prompt-hidden.d.ts +0 -0
  109. package/dist/src/prompt-hidden.d.ts.map +0 -0
  110. package/dist/src/prompt-hidden.js +0 -0
  111. package/dist/src/prompt-hidden.js.map +0 -0
  112. package/dist/src/prompt.d.ts +0 -0
  113. package/dist/src/prompt.d.ts.map +0 -0
  114. package/dist/src/prompt.js +0 -0
  115. package/dist/src/prompt.js.map +0 -0
  116. package/dist/src/security-output.d.ts +3 -0
  117. package/dist/src/security-output.d.ts.map +1 -0
  118. package/dist/src/security-output.js +22 -0
  119. package/dist/src/security-output.js.map +1 -0
  120. package/dist/src/telemetry.d.ts +0 -0
  121. package/dist/src/telemetry.d.ts.map +0 -0
  122. package/dist/src/telemetry.js +0 -0
  123. package/dist/src/telemetry.js.map +0 -0
  124. package/dist/src/version-check.d.ts +0 -0
  125. package/dist/src/version-check.d.ts.map +0 -0
  126. package/dist/src/version-check.js +0 -0
  127. package/dist/src/version-check.js.map +0 -0
  128. package/dist/templates/LICENSE +0 -0
  129. package/dist/templates/astro/Caddyfile +5 -1
  130. package/dist/templates/astro/Dockerfile +15 -16
  131. package/dist/templates/astro/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  132. package/dist/templates/astro/astro.config.mjs +0 -0
  133. package/dist/templates/astro/package.json +0 -0
  134. package/dist/templates/astro/percher.toml +0 -0
  135. package/dist/templates/astro/src/pages/index.astro +0 -0
  136. package/dist/templates/bun/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  137. package/dist/templates/bun/index.ts +0 -0
  138. package/dist/templates/bun/package.json +0 -0
  139. package/dist/templates/bun/percher.toml +0 -0
  140. package/dist/templates/capsule/Caddyfile +0 -0
  141. package/dist/templates/capsule/Dockerfile +10 -15
  142. package/dist/templates/capsule/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  143. package/dist/templates/capsule/index.html +0 -0
  144. package/dist/templates/capsule/package.json +0 -0
  145. package/dist/templates/capsule/pb/schema.json +0 -0
  146. package/dist/templates/capsule/percher.toml +0 -0
  147. package/dist/templates/capsule/src/App.tsx +0 -0
  148. package/dist/templates/capsule/src/components/Auth.tsx +0 -0
  149. package/dist/templates/capsule/src/components/SignInWithGoogle.tsx +0 -0
  150. package/dist/templates/capsule/src/lib/ai-client.ts +0 -0
  151. package/dist/templates/capsule/src/lib/ai.ts +0 -0
  152. package/dist/templates/capsule/src/lib/db.ts +0 -0
  153. package/dist/templates/capsule/src/lib/realtime.ts +0 -0
  154. package/dist/templates/capsule/src/main.tsx +0 -0
  155. package/dist/templates/capsule/tsconfig.json +0 -0
  156. package/dist/templates/capsule/vite.config.ts +0 -0
  157. package/dist/templates/django/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  158. package/dist/templates/django/Procfile +0 -0
  159. package/dist/templates/django/app/__init__.py +0 -0
  160. package/dist/templates/django/app/settings.py +0 -0
  161. package/dist/templates/django/app/urls.py +0 -0
  162. package/dist/templates/django/app/wsgi.py +0 -0
  163. package/dist/templates/django/manage.py +0 -0
  164. package/dist/templates/django/percher.toml +0 -0
  165. package/dist/templates/django/requirements.txt +0 -0
  166. package/dist/templates/dotnet/Dockerfile +0 -0
  167. package/dist/templates/dotnet/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  168. package/dist/templates/dotnet/Program.cs +0 -0
  169. package/dist/templates/dotnet/app.csproj +0 -0
  170. package/dist/templates/dotnet/percher.toml +0 -0
  171. package/dist/templates/eleventy/.eleventy.js +0 -0
  172. package/dist/templates/eleventy/Caddyfile +5 -1
  173. package/dist/templates/eleventy/Dockerfile +15 -16
  174. package/dist/templates/eleventy/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  175. package/dist/templates/eleventy/package.json +0 -0
  176. package/dist/templates/eleventy/percher.toml +0 -0
  177. package/dist/templates/eleventy/src/_includes/base.njk +0 -0
  178. package/dist/templates/eleventy/src/assets/style.css +0 -0
  179. package/dist/templates/eleventy/src/index.md +0 -0
  180. package/dist/templates/elysia/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  181. package/dist/templates/elysia/index.ts +0 -0
  182. package/dist/templates/elysia/package.json +0 -0
  183. package/dist/templates/elysia/percher.toml +0 -0
  184. package/dist/templates/express/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  185. package/dist/templates/express/index.ts +0 -0
  186. package/dist/templates/express/package.json +0 -0
  187. package/dist/templates/express/percher.toml +0 -0
  188. package/dist/templates/fastify/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  189. package/dist/templates/fastify/index.ts +0 -0
  190. package/dist/templates/fastify/package.json +0 -0
  191. package/dist/templates/fastify/percher.toml +0 -0
  192. package/dist/templates/flask/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  193. package/dist/templates/flask/main.py +0 -0
  194. package/dist/templates/flask/percher.toml +0 -0
  195. package/dist/templates/flask/requirements.txt +0 -0
  196. package/dist/templates/go/Dockerfile +0 -0
  197. package/dist/templates/go/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  198. package/dist/templates/go/go.mod +0 -0
  199. package/dist/templates/go/main.go +0 -0
  200. package/dist/templates/go/percher.toml +0 -0
  201. package/dist/templates/hono/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  202. package/dist/templates/hono/index.ts +0 -0
  203. package/dist/templates/hono/package.json +0 -0
  204. package/dist/templates/hono/percher.toml +0 -0
  205. package/dist/templates/htmx/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  206. package/dist/templates/htmx/index.ts +0 -0
  207. package/dist/templates/htmx/package.json +0 -0
  208. package/dist/templates/htmx/percher.toml +0 -0
  209. package/dist/templates/hugo/Caddyfile +0 -0
  210. package/dist/templates/hugo/Dockerfile +10 -15
  211. package/dist/templates/hugo/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  212. package/dist/templates/hugo/content/_index.md +0 -0
  213. package/dist/templates/hugo/hugo.toml +0 -0
  214. package/dist/templates/hugo/layouts/index.html +0 -0
  215. package/dist/templates/hugo/percher.toml +0 -0
  216. package/dist/templates/java/Dockerfile +0 -0
  217. package/dist/templates/java/Main.java +0 -0
  218. package/dist/templates/java/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  219. package/dist/templates/java/percher.toml +0 -0
  220. package/dist/templates/laravel/Dockerfile +0 -0
  221. package/dist/templates/laravel/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  222. package/dist/templates/laravel/composer.json +0 -0
  223. package/dist/templates/laravel/percher.toml +0 -0
  224. package/dist/templates/laravel/public/index.php +0 -0
  225. package/dist/templates/nextjs/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  226. package/dist/templates/nextjs/app/api/health/route.ts +0 -0
  227. package/dist/templates/nextjs/app/layout.tsx +0 -0
  228. package/dist/templates/nextjs/app/page.tsx +0 -0
  229. package/dist/templates/nextjs/next.config.mjs +0 -0
  230. package/dist/templates/nextjs/package.json +0 -0
  231. package/dist/templates/nextjs/percher.toml +0 -0
  232. package/dist/templates/node/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  233. package/dist/templates/node/index.js +0 -0
  234. package/dist/templates/node/package.json +0 -0
  235. package/dist/templates/node/percher.toml +0 -0
  236. package/dist/templates/nuxt/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  237. package/dist/templates/nuxt/app.vue +0 -0
  238. package/dist/templates/nuxt/nuxt.config.ts +0 -0
  239. package/dist/templates/nuxt/package.json +0 -0
  240. package/dist/templates/nuxt/percher.toml +0 -0
  241. package/dist/templates/nuxt/server/api/health.ts +0 -0
  242. package/dist/templates/phoenix/Dockerfile +0 -0
  243. package/dist/templates/phoenix/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  244. package/dist/templates/phoenix/lib/application.ex +0 -0
  245. package/dist/templates/phoenix/lib/router.ex +0 -0
  246. package/dist/templates/phoenix/mix.exs +0 -0
  247. package/dist/templates/phoenix/percher.toml +0 -0
  248. package/dist/templates/preact/Caddyfile +6 -2
  249. package/dist/templates/preact/Dockerfile +15 -16
  250. package/dist/templates/preact/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  251. package/dist/templates/preact/index.html +0 -0
  252. package/dist/templates/preact/package.json +0 -0
  253. package/dist/templates/preact/percher.toml +0 -0
  254. package/dist/templates/preact/src/main.tsx +0 -0
  255. package/dist/templates/preact/vite.config.ts +0 -0
  256. package/dist/templates/python/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  257. package/dist/templates/python/main.py +0 -0
  258. package/dist/templates/python/nixpacks.toml +0 -0
  259. package/dist/templates/python/percher.toml +0 -0
  260. package/dist/templates/python/requirements.txt +0 -0
  261. package/dist/templates/rails/Dockerfile +0 -0
  262. package/dist/templates/rails/Gemfile +0 -0
  263. package/dist/templates/rails/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  264. package/dist/templates/rails/config.ru +0 -0
  265. package/dist/templates/rails/percher.toml +0 -0
  266. package/dist/templates/remix/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  267. package/dist/templates/remix/app/root.tsx +0 -0
  268. package/dist/templates/remix/app/routes/_index.tsx +0 -0
  269. package/dist/templates/remix/app/routes/health.tsx +0 -0
  270. package/dist/templates/remix/package.json +0 -0
  271. package/dist/templates/remix/percher.toml +0 -0
  272. package/dist/templates/remix/vite.config.ts +0 -0
  273. package/dist/templates/rust/Cargo.toml +0 -0
  274. package/dist/templates/rust/Dockerfile +0 -0
  275. package/dist/templates/rust/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  276. package/dist/templates/rust/percher.toml +0 -0
  277. package/dist/templates/rust/src/main.rs +0 -0
  278. package/dist/templates/solid/Caddyfile +6 -2
  279. package/dist/templates/solid/Dockerfile +15 -16
  280. package/dist/templates/solid/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  281. package/dist/templates/solid/index.html +0 -0
  282. package/dist/templates/solid/package.json +0 -0
  283. package/dist/templates/solid/percher.toml +0 -0
  284. package/dist/templates/solid/src/main.tsx +0 -0
  285. package/dist/templates/solid/vite.config.ts +0 -0
  286. package/dist/templates/static/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  287. package/dist/templates/static/index.html +0 -0
  288. package/dist/templates/static/percher.toml +0 -0
  289. package/dist/templates/static/style.css +0 -0
  290. package/dist/templates/sveltekit/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  291. package/dist/templates/sveltekit/package.json +0 -0
  292. package/dist/templates/sveltekit/percher.toml +0 -0
  293. package/dist/templates/sveltekit/src/app.html +0 -0
  294. package/dist/templates/sveltekit/src/routes/+page.svelte +0 -0
  295. package/dist/templates/sveltekit/src/routes/health/+server.ts +0 -0
  296. package/dist/templates/sveltekit/svelte.config.js +0 -0
  297. package/dist/templates/sveltekit/vite.config.js +0 -0
  298. package/dist/templates/vite-react/Caddyfile +6 -2
  299. package/dist/templates/vite-react/Dockerfile +15 -16
  300. package/dist/templates/vite-react/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  301. package/dist/templates/vite-react/index.html +0 -0
  302. package/dist/templates/vite-react/package.json +0 -0
  303. package/dist/templates/vite-react/percher.toml +0 -0
  304. package/dist/templates/vite-react/src/main.tsx +0 -0
  305. package/dist/templates/vite-react/vite.config.ts +0 -0
  306. package/dist/templates/vite-vue/Caddyfile +6 -2
  307. package/dist/templates/vite-vue/Dockerfile +15 -16
  308. package/dist/templates/vite-vue/PERCHER-TEMPLATE-LICENSE.txt +0 -0
  309. package/dist/templates/vite-vue/index.html +0 -0
  310. package/dist/templates/vite-vue/package.json +0 -0
  311. package/dist/templates/vite-vue/percher.toml +0 -0
  312. package/dist/templates/vite-vue/src/main.ts +0 -0
  313. package/dist/templates/vite-vue/vite.config.ts +0 -0
  314. package/package.json +5 -4
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/output.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,3 @@
1
+ /** Plain diagnostic lines; control characters are refused by the shared decoder. */
2
+ export declare function securityOutputLines(value: unknown, includeSummary?: boolean): string[];
3
+ //# sourceMappingURL=security-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-output.d.ts","sourceRoot":"","sources":["../../src/security-output.ts"],"names":[],"mappings":"AAMA,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,UAAO,GAAG,MAAM,EAAE,CAkBnF"}
@@ -0,0 +1,22 @@
1
+ import { deploymentSecurityActionText, deploymentSecuritySummary, parseDeploymentSecurityBlock, } from "@percher/shared";
2
+ /** Plain diagnostic lines; control characters are refused by the shared decoder. */
3
+ export function securityOutputLines(value, includeSummary = true) {
4
+ const block = parseDeploymentSecurityBlock(value);
5
+ if (!block)
6
+ return [];
7
+ const lines = includeSummary
8
+ ? [
9
+ deploymentSecuritySummary(block),
10
+ ...block.actions.map((action) => deploymentSecurityActionText(action, block.context)),
11
+ ]
12
+ : [];
13
+ for (const f of block.findings) {
14
+ lines.push(`${f.cve}: ${f.component}${f.version ? ` ${f.version}` : ""}; ${f.fixedIn ? `reported fixed versions: ${f.fixedIn}` : "no fixed version reported"}; ${f.responsibility === "percher" ? "Percher component" : "app dependency"}${f.exploitedKev ? "; known exploited" : ""}.`);
15
+ }
16
+ if (block.truncated)
17
+ lines.push(`Showing ${block.findings.length} of ${block.totalFindings} findings.`);
18
+ if (block.imageId)
19
+ lines.push(`Image: ${block.imageId}`);
20
+ return lines;
21
+ }
22
+ //# sourceMappingURL=security-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-output.js","sourceRoot":"","sources":["../../src/security-output.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AAEzB,oFAAoF;AACpF,MAAM,UAAU,mBAAmB,CAAC,KAAc,EAAE,cAAc,GAAG,IAAI;IACvE,MAAM,KAAK,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,KAAK,GAAG,cAAc;QAC1B,CAAC,CAAC;YACE,yBAAyB,CAAC,KAAK,CAAC;YAChC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,4BAA4B,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;SACtF;QACH,CAAC,CAAC,EAAE,CAAC;IACP,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CACR,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,2BAA2B,KAAK,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,GAAG,CAC7Q,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,SAAS;QACjB,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,QAAQ,CAAC,MAAM,OAAO,KAAK,CAAC,aAAa,YAAY,CAAC,CAAC;IACrF,IAAI,KAAK,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACzD,OAAO,KAAK,CAAC;AACf,CAAC"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -2,5 +2,9 @@
2
2
  bind 0.0.0.0
3
3
  root * /srv
4
4
  encode gzip zstd
5
- file_server
5
+ route {
6
+ @percher_platform path_regexp percher_platform (?i)(?:^/+(?:percher[.]toml|[.]percherignore|pb|Dockerfile|Caddyfile|[.]git|[.]env|[.]env[.][^/]*|[.]percher-[^/]*)(?:/|$)|(?:^|/)(?:[.]npmrc|[.]pypirc|[.]netrc|_netrc|[.]git-credentials|[.]htpasswd|[.]pgpass|[.]my[.]cnf|[.]dev[.]vars|id_rsa|id_dsa|id_ecdsa|id_ed25519|credentials[.]json|secrets[.]toml|wp-config[.]php|[.]env|[.]ssh|[.]aws|[.]gnupg|[.]docker/config[.]json|[.]kube/config|[.]env[.][^/]*|[.]dev[.]vars[.][^/]*|[^/]*[.]pem|[^/]*[.]key|[^/]*[.]p12|[^/]*[.]pfx|[^/]*[.]jks|[^/]*[.]keystore)(?:/|$))
7
+ respond @percher_platform 404
8
+ file_server
9
+ }
6
10
  }
@@ -10,27 +10,26 @@ WORKDIR /app
10
10
  COPY . .
11
11
  RUN bun install && bun run build
12
12
 
13
+ # Preserve build inputs for deployment; only this filtered copy reaches /srv.
14
+ FROM build AS static-content
15
+ RUN bun -e 'const fs=require("node:fs"),path=require("node:path");const root=fs.realpathSync(process.argv[1]),dir=fs.realpathSync(process.argv[2]),dest=process.argv[3];const deny=new RegExp("(?:^/+(?:percher[.]toml|[.]percherignore|pb|Dockerfile|Caddyfile|[.]git|[.]env|[.]env[.][^/]*|[.]percher-[^/]*)(?:/|$)|(?:^|/)(?:[.]npmrc|[.]pypirc|[.]netrc|_netrc|[.]git-credentials|[.]htpasswd|[.]pgpass|[.]my[.]cnf|[.]dev[.]vars|id_rsa|id_dsa|id_ecdsa|id_ed25519|credentials[.]json|secrets[.]toml|wp-config[.]php|[.]env|[.]ssh|[.]aws|[.]gnupg|[.]docker/config[.]json|[.]kube/config|[.]env[.][^/]*|[.]dev[.]vars[.][^/]*|[^/]*[.]pem|[^/]*[.]key|[^/]*[.]p12|[^/]*[.]pfx|[^/]*[.]jks|[^/]*[.]keystore)(?:/|$))","i");const reserved=p=>deny.test("/"+p.split(path.sep).join("/"));if((dir!==root&&!dir.startsWith(root+path.sep))||reserved(path.relative(root,dir)))throw Error("Static output escapes the project or selects platform content");if(fs.existsSync(dest))throw Error("Reserved static staging directory already exists");fs.cpSync(dir,dest,{recursive:true,filter:p=>{if(reserved(path.relative(dir,p))||reserved(path.relative(root,p)))return false;if(fs.lstatSync(p).isSymbolicLink())throw Error("Static content cannot contain symlinks");return true}})' '/app' '/app/dist' '/percher-static-content'
16
+
13
17
  # --- Serve stage: minimal Caddy image --------------------------------
14
18
  # Build pinned Caddy source with refreshed security modules. The scratch
15
19
  # runtime carries no shell, package manager, or file capabilities and listens
16
20
  # on the unprivileged port :8080.
17
- FROM golang:1.26.9-alpine3.23@sha256:6750308561953d451210ed1a8086d36c8c8bdcbf672d38d9d0d424b8a7a0216c AS caddy-source
18
- ADD --checksum=sha256:78e660d838e45c0b8c89338b325946238f153641aa9925df9ef2ad5e8eced31b \
19
- https://github.com/caddyserver/caddy/commit/b2693fb63a30e6d7be0972c3645e9a2c0a500e93.patch /tmp/caddy-cel-go.patch
20
- RUN go mod download github.com/caddyserver/caddy/v2@v2.11.4 \
21
- && cp -R /go/pkg/mod/github.com/caddyserver/caddy/v2@v2.11.4 /src \
21
+ FROM golang:1.26.10-alpine3.23@sha256:0525c952defebc693cdaf62cdf43afa32be5a7f377e99260642ea19c240c708e AS caddy-source
22
+ RUN go mod download github.com/caddyserver/caddy/v2@v2.11.7 \
23
+ && cp -R /go/pkg/mod/github.com/caddyserver/caddy/v2@v2.11.7 /src \
22
24
  && chmod -R u+w /src
23
25
  WORKDIR /src
24
- RUN apk add --no-cache patch \
25
- && patch -p1 < /tmp/caddy-cel-go.patch \
26
- && go get github.com/go-chi/chi/v5@v5.3.0 github.com/google/cel-go@v0.29.2 \
27
- github.com/klauspost/compress@v1.18.7 go.opentelemetry.io/otel@v1.45.0 \
28
- go.opentelemetry.io/otel/sdk/log@v0.21.0 \
29
- go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc@v0.21.0 \
30
- go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp@v0.21.0 \
31
- go.opentelemetry.io/otel/exporters/stdout/stdoutlog@v0.21.0 \
32
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc@v1.45.0 \
33
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp@v1.45.0 \
26
+ RUN go get github.com/go-chi/chi/v5@v5.3.2 github.com/klauspost/compress@v1.20.1 \
27
+ go.opentelemetry.io/otel@v1.46.0 go.opentelemetry.io/otel/sdk/log@v0.22.0 \
28
+ go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc@v0.22.0 \
29
+ go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp@v0.22.0 \
30
+ go.opentelemetry.io/otel/exporters/stdout/stdoutlog@v0.22.0 \
31
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc@v1.46.0 \
32
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp@v1.46.0 \
34
33
  golang.org/x/crypto@v0.57.0 golang.org/x/net@v0.60.0 \
35
34
  golang.org/x/text@v0.42.0 google.golang.org/grpc@v1.83.2 \
36
35
  && go mod tidy \
@@ -46,7 +45,7 @@ COPY --from=caddy-source /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-ce
46
45
  COPY --from=caddy-source /out/caddy /usr/bin/caddy
47
46
  COPY --from=caddy-source /out/percher-healthcheck /usr/bin/percher-healthcheck
48
47
  COPY Caddyfile /etc/caddy/Caddyfile
49
- COPY --from=build /app/dist /srv
48
+ COPY --from=static-content /percher-static-content /srv
50
49
  LABEL dev.percher.health-client="static-http-v1"
51
50
  # HOME points at the writable tmpfs so non-root Caddy can persist its
52
51
  # XDG state (storage-clean lock, config autosave) under Percher's
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -21,23 +21,18 @@ RUN bun install && bun run build
21
21
  # Build pinned Caddy source with refreshed security modules. The scratch
22
22
  # runtime carries no shell, package manager, or file capabilities and listens
23
23
  # on the unprivileged port :8080.
24
- FROM golang:1.26.9-alpine3.23@sha256:6750308561953d451210ed1a8086d36c8c8bdcbf672d38d9d0d424b8a7a0216c AS caddy-source
25
- ADD --checksum=sha256:78e660d838e45c0b8c89338b325946238f153641aa9925df9ef2ad5e8eced31b \
26
- https://github.com/caddyserver/caddy/commit/b2693fb63a30e6d7be0972c3645e9a2c0a500e93.patch /tmp/caddy-cel-go.patch
27
- RUN go mod download github.com/caddyserver/caddy/v2@v2.11.4 \
28
- && cp -R /go/pkg/mod/github.com/caddyserver/caddy/v2@v2.11.4 /src \
24
+ FROM golang:1.26.10-alpine3.23@sha256:0525c952defebc693cdaf62cdf43afa32be5a7f377e99260642ea19c240c708e AS caddy-source
25
+ RUN go mod download github.com/caddyserver/caddy/v2@v2.11.7 \
26
+ && cp -R /go/pkg/mod/github.com/caddyserver/caddy/v2@v2.11.7 /src \
29
27
  && chmod -R u+w /src
30
28
  WORKDIR /src
31
- RUN apk add --no-cache patch \
32
- && patch -p1 < /tmp/caddy-cel-go.patch \
33
- && go get github.com/go-chi/chi/v5@v5.3.0 github.com/google/cel-go@v0.29.2 \
34
- github.com/klauspost/compress@v1.18.7 go.opentelemetry.io/otel@v1.45.0 \
35
- go.opentelemetry.io/otel/sdk/log@v0.21.0 \
36
- go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc@v0.21.0 \
37
- go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp@v0.21.0 \
38
- go.opentelemetry.io/otel/exporters/stdout/stdoutlog@v0.21.0 \
39
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc@v1.45.0 \
40
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp@v1.45.0 \
29
+ RUN go get github.com/go-chi/chi/v5@v5.3.2 github.com/klauspost/compress@v1.20.1 \
30
+ go.opentelemetry.io/otel@v1.46.0 go.opentelemetry.io/otel/sdk/log@v0.22.0 \
31
+ go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc@v0.22.0 \
32
+ go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp@v0.22.0 \
33
+ go.opentelemetry.io/otel/exporters/stdout/stdoutlog@v0.22.0 \
34
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc@v1.46.0 \
35
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp@v1.46.0 \
41
36
  golang.org/x/crypto@v0.57.0 golang.org/x/net@v0.60.0 \
42
37
  golang.org/x/text@v0.42.0 google.golang.org/grpc@v1.83.2 \
43
38
  && go mod tidy \
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -2,5 +2,9 @@
2
2
  bind 0.0.0.0
3
3
  root * /srv
4
4
  encode gzip zstd
5
- file_server
5
+ route {
6
+ @percher_platform path_regexp percher_platform (?i)(?:^/+(?:percher[.]toml|[.]percherignore|pb|Dockerfile|Caddyfile|[.]git|[.]env|[.]env[.][^/]*|[.]percher-[^/]*)(?:/|$)|(?:^|/)(?:[.]npmrc|[.]pypirc|[.]netrc|_netrc|[.]git-credentials|[.]htpasswd|[.]pgpass|[.]my[.]cnf|[.]dev[.]vars|id_rsa|id_dsa|id_ecdsa|id_ed25519|credentials[.]json|secrets[.]toml|wp-config[.]php|[.]env|[.]ssh|[.]aws|[.]gnupg|[.]docker/config[.]json|[.]kube/config|[.]env[.][^/]*|[.]dev[.]vars[.][^/]*|[^/]*[.]pem|[^/]*[.]key|[^/]*[.]p12|[^/]*[.]pfx|[^/]*[.]jks|[^/]*[.]keystore)(?:/|$))
7
+ respond @percher_platform 404
8
+ file_server
9
+ }
6
10
  }
@@ -10,27 +10,26 @@ WORKDIR /app
10
10
  COPY . .
11
11
  RUN bun install && bun run build
12
12
 
13
+ # Preserve build inputs for deployment; only this filtered copy reaches /srv.
14
+ FROM build AS static-content
15
+ RUN bun -e 'const fs=require("node:fs"),path=require("node:path");const root=fs.realpathSync(process.argv[1]),dir=fs.realpathSync(process.argv[2]),dest=process.argv[3];const deny=new RegExp("(?:^/+(?:percher[.]toml|[.]percherignore|pb|Dockerfile|Caddyfile|[.]git|[.]env|[.]env[.][^/]*|[.]percher-[^/]*)(?:/|$)|(?:^|/)(?:[.]npmrc|[.]pypirc|[.]netrc|_netrc|[.]git-credentials|[.]htpasswd|[.]pgpass|[.]my[.]cnf|[.]dev[.]vars|id_rsa|id_dsa|id_ecdsa|id_ed25519|credentials[.]json|secrets[.]toml|wp-config[.]php|[.]env|[.]ssh|[.]aws|[.]gnupg|[.]docker/config[.]json|[.]kube/config|[.]env[.][^/]*|[.]dev[.]vars[.][^/]*|[^/]*[.]pem|[^/]*[.]key|[^/]*[.]p12|[^/]*[.]pfx|[^/]*[.]jks|[^/]*[.]keystore)(?:/|$))","i");const reserved=p=>deny.test("/"+p.split(path.sep).join("/"));if((dir!==root&&!dir.startsWith(root+path.sep))||reserved(path.relative(root,dir)))throw Error("Static output escapes the project or selects platform content");if(fs.existsSync(dest))throw Error("Reserved static staging directory already exists");fs.cpSync(dir,dest,{recursive:true,filter:p=>{if(reserved(path.relative(dir,p))||reserved(path.relative(root,p)))return false;if(fs.lstatSync(p).isSymbolicLink())throw Error("Static content cannot contain symlinks");return true}})' '/app' '/app/_site' '/percher-static-content'
16
+
13
17
  # --- Serve stage: minimal Caddy image --------------------------------
14
18
  # Build pinned Caddy source with refreshed security modules. The scratch
15
19
  # runtime carries no shell, package manager, or file capabilities and listens
16
20
  # on the unprivileged port :8080.
17
- FROM golang:1.26.9-alpine3.23@sha256:6750308561953d451210ed1a8086d36c8c8bdcbf672d38d9d0d424b8a7a0216c AS caddy-source
18
- ADD --checksum=sha256:78e660d838e45c0b8c89338b325946238f153641aa9925df9ef2ad5e8eced31b \
19
- https://github.com/caddyserver/caddy/commit/b2693fb63a30e6d7be0972c3645e9a2c0a500e93.patch /tmp/caddy-cel-go.patch
20
- RUN go mod download github.com/caddyserver/caddy/v2@v2.11.4 \
21
- && cp -R /go/pkg/mod/github.com/caddyserver/caddy/v2@v2.11.4 /src \
21
+ FROM golang:1.26.10-alpine3.23@sha256:0525c952defebc693cdaf62cdf43afa32be5a7f377e99260642ea19c240c708e AS caddy-source
22
+ RUN go mod download github.com/caddyserver/caddy/v2@v2.11.7 \
23
+ && cp -R /go/pkg/mod/github.com/caddyserver/caddy/v2@v2.11.7 /src \
22
24
  && chmod -R u+w /src
23
25
  WORKDIR /src
24
- RUN apk add --no-cache patch \
25
- && patch -p1 < /tmp/caddy-cel-go.patch \
26
- && go get github.com/go-chi/chi/v5@v5.3.0 github.com/google/cel-go@v0.29.2 \
27
- github.com/klauspost/compress@v1.18.7 go.opentelemetry.io/otel@v1.45.0 \
28
- go.opentelemetry.io/otel/sdk/log@v0.21.0 \
29
- go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc@v0.21.0 \
30
- go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp@v0.21.0 \
31
- go.opentelemetry.io/otel/exporters/stdout/stdoutlog@v0.21.0 \
32
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc@v1.45.0 \
33
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp@v1.45.0 \
26
+ RUN go get github.com/go-chi/chi/v5@v5.3.2 github.com/klauspost/compress@v1.20.1 \
27
+ go.opentelemetry.io/otel@v1.46.0 go.opentelemetry.io/otel/sdk/log@v0.22.0 \
28
+ go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc@v0.22.0 \
29
+ go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp@v0.22.0 \
30
+ go.opentelemetry.io/otel/exporters/stdout/stdoutlog@v0.22.0 \
31
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc@v1.46.0 \
32
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp@v1.46.0 \
34
33
  golang.org/x/crypto@v0.57.0 golang.org/x/net@v0.60.0 \
35
34
  golang.org/x/text@v0.42.0 google.golang.org/grpc@v1.83.2 \
36
35
  && go mod tidy \
@@ -46,7 +45,7 @@ COPY --from=caddy-source /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-ce
46
45
  COPY --from=caddy-source /out/caddy /usr/bin/caddy
47
46
  COPY --from=caddy-source /out/percher-healthcheck /usr/bin/percher-healthcheck
48
47
  COPY Caddyfile /etc/caddy/Caddyfile
49
- COPY --from=build /app/_site /srv
48
+ COPY --from=static-content /percher-static-content /srv
50
49
  LABEL dev.percher.health-client="static-http-v1"
51
50
  # HOME points at the writable tmpfs so non-root Caddy can persist its
52
51
  # XDG state (storage-clean lock, config autosave) under Percher's
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -12,23 +12,18 @@ RUN hugo --minify
12
12
  # Build pinned Caddy source with refreshed security modules. The scratch
13
13
  # runtime carries no shell, package manager, or file capabilities and listens
14
14
  # on the unprivileged port :8080.
15
- FROM golang:1.26.9-alpine3.23@sha256:6750308561953d451210ed1a8086d36c8c8bdcbf672d38d9d0d424b8a7a0216c AS caddy-source
16
- ADD --checksum=sha256:78e660d838e45c0b8c89338b325946238f153641aa9925df9ef2ad5e8eced31b \
17
- https://github.com/caddyserver/caddy/commit/b2693fb63a30e6d7be0972c3645e9a2c0a500e93.patch /tmp/caddy-cel-go.patch
18
- RUN go mod download github.com/caddyserver/caddy/v2@v2.11.4 \
19
- && cp -R /go/pkg/mod/github.com/caddyserver/caddy/v2@v2.11.4 /src \
15
+ FROM golang:1.26.10-alpine3.23@sha256:0525c952defebc693cdaf62cdf43afa32be5a7f377e99260642ea19c240c708e AS caddy-source
16
+ RUN go mod download github.com/caddyserver/caddy/v2@v2.11.7 \
17
+ && cp -R /go/pkg/mod/github.com/caddyserver/caddy/v2@v2.11.7 /src \
20
18
  && chmod -R u+w /src
21
19
  WORKDIR /src
22
- RUN apk add --no-cache patch \
23
- && patch -p1 < /tmp/caddy-cel-go.patch \
24
- && go get github.com/go-chi/chi/v5@v5.3.0 github.com/google/cel-go@v0.29.2 \
25
- github.com/klauspost/compress@v1.18.7 go.opentelemetry.io/otel@v1.45.0 \
26
- go.opentelemetry.io/otel/sdk/log@v0.21.0 \
27
- go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc@v0.21.0 \
28
- go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp@v0.21.0 \
29
- go.opentelemetry.io/otel/exporters/stdout/stdoutlog@v0.21.0 \
30
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc@v1.45.0 \
31
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp@v1.45.0 \
20
+ RUN go get github.com/go-chi/chi/v5@v5.3.2 github.com/klauspost/compress@v1.20.1 \
21
+ go.opentelemetry.io/otel@v1.46.0 go.opentelemetry.io/otel/sdk/log@v0.22.0 \
22
+ go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc@v0.22.0 \
23
+ go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp@v0.22.0 \
24
+ go.opentelemetry.io/otel/exporters/stdout/stdoutlog@v0.22.0 \
25
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc@v1.46.0 \
26
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp@v1.46.0 \
32
27
  golang.org/x/crypto@v0.57.0 golang.org/x/net@v0.60.0 \
33
28
  golang.org/x/text@v0.42.0 google.golang.org/grpc@v1.83.2 \
34
29
  && go mod tidy \
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes