@publish.os/nextjs 0.0.1-alpha.90 → 0.0.1-alpha.92

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 (284) hide show
  1. package/compiler-assets/nextjs/defaults/group/index.tsx +16 -11
  2. package/compiler-assets/nextjs/defaults/group/layout.tsx +6 -6
  3. package/compiler-assets/nextjs/defaults/group/page.tsx +36 -26
  4. package/compiler-assets/nextjs/defaults/project/next.config.mjs +21 -11
  5. package/compiler-assets/nextjs/defaults/project/tsconfig.json.template +10 -0
  6. package/compiler-assets/nextjs/defaults/root/css/components/code-block.css +18 -0
  7. package/compiler-assets/nextjs/defaults/root/index.tsx +16 -11
  8. package/compiler-assets/nextjs/defaults/root/layout.tsx +7 -3
  9. package/compiler-assets/nextjs/shims/agent-user-agents.ts +65 -0
  10. package/compiler-assets/nextjs/shims/document.tsx +46 -0
  11. package/compiler-assets/nextjs/shims/generated-leaf-page.tsx +5 -0
  12. package/compiler-assets/nextjs/shims/global-layout.tsx +8 -42
  13. package/compiler-assets/nextjs/shims/global-not-found.tsx +69 -0
  14. package/compiler-assets/nextjs/shims/markdown-route.ts +2 -0
  15. package/compiler-assets/nextjs/shims/metadata-icons.tsx +39 -0
  16. package/compiler-assets/nextjs/shims/not-found-content.tsx +53 -0
  17. package/compiler-assets/nextjs/shims/not-found-navigation.tsx +60 -0
  18. package/compiler-assets/nextjs/shims/proxy.ts +254 -86
  19. package/compiler-assets/nextjs/shims/site-fenced-code-block.tsx +2 -6
  20. package/compiler-assets/nextjs/shims/site-mdx-components.tsx +28 -16
  21. package/compiler-assets/nextjs/shims/site-mdx.tsx +6 -1
  22. package/dist/{build-operation-2JAYBSKF.js → build-operation-CJDUL4OW.js} +29 -23
  23. package/dist/{button-c3WGnxIj.d.ts → button-D6Xp2HBm.d.ts} +4 -4
  24. package/dist/capture-local-source-WGGDIUU2.js +258 -0
  25. package/dist/chunk-22RSSUNV.js +13 -0
  26. package/dist/chunk-3T4HVDSC.js +426 -0
  27. package/dist/{chunk-WKTEO6RS.js → chunk-4BC2L2KA.js} +46 -12
  28. package/dist/{chunk-WDY4IK6Z.js → chunk-5J3YUNRY.js} +3 -10
  29. package/dist/chunk-5KAD7W53.js +248 -0
  30. package/dist/{chunk-DWA3ZRGW.js → chunk-6C65KV7O.js} +2 -2
  31. package/dist/{chunk-GGKFQ3MA.js → chunk-6D2E6UMD.js} +144 -70
  32. package/dist/{chunk-7OGTPSKI.js → chunk-7NY22B5U.js} +8 -3
  33. package/dist/chunk-DX7PXFCM.js +2519 -0
  34. package/dist/{chunk-726GV2NF.js → chunk-DZ3VWEV5.js} +950 -632
  35. package/dist/chunk-EFO6AWXN.js +19 -0
  36. package/dist/chunk-IL4RJOKI.js +186 -0
  37. package/dist/{chunk-H6XILMZX.js → chunk-NHSLTARU.js} +2588 -1493
  38. package/dist/{chunk-DLDFHU7Y.js → chunk-NNBJZPFM.js} +4 -2
  39. package/dist/{chunk-VO2I7MTM.js → chunk-SBMDONTV.js} +10 -7
  40. package/dist/{chunk-YLTOLYWM.js → chunk-WL75GQ5M.js} +6 -18
  41. package/dist/compiler.d.ts +15 -2
  42. package/dist/compiler.js +111 -23
  43. package/dist/components/blocks/agent-actions.d.ts +81 -0
  44. package/dist/components/blocks/agent-actions.js +563 -0
  45. package/dist/components/blocks/toc.d.ts +43 -0
  46. package/dist/components/blocks/toc.js +136 -0
  47. package/dist/components/ui/button.d.ts +4 -0
  48. package/dist/components/ui/button.js +94 -0
  49. package/dist/compose-44GJSMXD.js +16 -0
  50. package/dist/config/createNextConfig.js +19 -3
  51. package/dist/{dev-operation-TZDVJCN7.js → dev-operation-WNECBHZ5.js} +134 -84
  52. package/dist/{framework-selection-X4U6Y6QC.js → framework-selection-ZVO323PK.js} +3 -2
  53. package/dist/ide-support-TG74L4FF.js +16 -0
  54. package/dist/index.d.ts +151 -95
  55. package/dist/index.js +25 -0
  56. package/dist/jsx-dev-runtime.d.ts +6 -0
  57. package/dist/jsx-dev-runtime.js +100 -0
  58. package/dist/jsx-runtime.d.ts +7 -0
  59. package/dist/jsx-runtime.js +97 -0
  60. package/dist/kernel/components/blocks/AgentActions.d.ts +37 -8
  61. package/dist/kernel/components/blocks/AgentActions.js +384 -174
  62. package/dist/kernel/components/blocks/agent-actions.d.ts +4 -0
  63. package/dist/kernel/components/blocks/agent-actions.js +563 -0
  64. package/dist/kernel/components/blocks/animated-icon-swap.d.ts +2 -2
  65. package/dist/kernel/components/blocks/animated-icon-swap.js +1 -1
  66. package/dist/kernel/components/blocks/color-palette.d.ts +2 -2
  67. package/dist/kernel/components/blocks/color-palette.js +4 -4
  68. package/dist/kernel/components/blocks/logo-block.d.ts +2 -2
  69. package/dist/kernel/components/blocks/logo-block.js +1 -1
  70. package/dist/kernel/components/blocks/nav-breadcrumb.d.ts +6 -5
  71. package/dist/kernel/components/blocks/nav-breadcrumb.js +21 -15
  72. package/dist/kernel/components/blocks/navbar.d.ts +5 -4
  73. package/dist/kernel/components/blocks/navbar.js +79 -59
  74. package/dist/kernel/components/blocks/navigation-progress.d.ts +2 -2
  75. package/dist/kernel/components/blocks/navigation-progress.js +2 -2
  76. package/dist/kernel/components/blocks/next-prev.d.ts +4 -4
  77. package/dist/kernel/components/blocks/next-prev.js +30 -7
  78. package/dist/kernel/components/blocks/page-list.d.ts +4 -4
  79. package/dist/kernel/components/blocks/page-list.js +32 -9
  80. package/dist/kernel/components/blocks/search.d.ts +9 -15
  81. package/dist/kernel/components/blocks/search.js +16 -17
  82. package/dist/kernel/components/blocks/sidebar-node.d.ts +3 -5
  83. package/dist/kernel/components/blocks/sidebar-node.js +13 -3
  84. package/dist/kernel/components/blocks/sidebar.d.ts +6 -7
  85. package/dist/kernel/components/blocks/sidebar.js +137 -28
  86. package/dist/kernel/components/blocks/theme-toggle.d.ts +3 -4
  87. package/dist/kernel/components/blocks/theme-toggle.js +5 -5
  88. package/dist/kernel/components/blocks/toc-client.d.ts +40 -0
  89. package/dist/kernel/components/blocks/toc-client.js +495 -0
  90. package/dist/kernel/components/blocks/toc.d.ts +20 -2
  91. package/dist/kernel/components/blocks/toc.js +121 -179
  92. package/dist/kernel/components/mdx/components/blockquote.d.ts +2 -2
  93. package/dist/kernel/components/mdx/components/blockquote.js +1 -1
  94. package/dist/kernel/components/mdx/components/callout.d.ts +3 -3
  95. package/dist/kernel/components/mdx/components/callout.js +1 -1
  96. package/dist/kernel/components/mdx/components/code-block.d.ts +2 -2
  97. package/dist/kernel/components/mdx/components/code-block.js +2 -2
  98. package/dist/kernel/components/mdx/components/copy-code-button.d.ts +2 -2
  99. package/dist/kernel/components/mdx/components/copy-code-button.js +5 -4
  100. package/dist/kernel/components/mdx/components/figure-caption.d.ts +3 -3
  101. package/dist/kernel/components/mdx/components/figure-caption.js +3 -2
  102. package/dist/kernel/components/mdx/components/figure.d.ts +8 -4
  103. package/dist/kernel/components/mdx/components/figure.js +23 -13
  104. package/dist/kernel/components/mdx/components/footnotes.d.ts +2 -2
  105. package/dist/kernel/components/mdx/components/footnotes.js +1 -1
  106. package/dist/kernel/components/mdx/components/heading-copy-link.d.ts +2 -2
  107. package/dist/kernel/components/mdx/components/heading-copy-link.js +1 -1
  108. package/dist/kernel/components/mdx/components/heading.d.ts +2 -2
  109. package/dist/kernel/components/mdx/components/heading.js +6 -3
  110. package/dist/kernel/components/mdx/components/hr.d.ts +4 -4
  111. package/dist/kernel/components/mdx/components/hr.js +2 -2
  112. package/dist/kernel/components/mdx/components/image-zoom.d.ts +3 -3
  113. package/dist/kernel/components/mdx/components/image-zoom.js +4 -3
  114. package/dist/kernel/components/mdx/components/image.d.ts +2 -2
  115. package/dist/kernel/components/mdx/components/image.js +22 -17
  116. package/dist/kernel/components/mdx/components/inline-code.d.ts +2 -2
  117. package/dist/kernel/components/mdx/components/inline-code.js +1 -1
  118. package/dist/kernel/components/mdx/components/kbd.d.ts +3 -3
  119. package/dist/kernel/components/mdx/components/kbd.js +2 -2
  120. package/dist/kernel/components/mdx/components/link.d.ts +6 -6
  121. package/dist/kernel/components/mdx/components/link.js +2 -2
  122. package/dist/kernel/components/mdx/components/paragraph.d.ts +2 -2
  123. package/dist/kernel/components/mdx/components/paragraph.js +1 -1
  124. package/dist/kernel/components/mdx/components/strikethrough.d.ts +2 -2
  125. package/dist/kernel/components/mdx/components/strikethrough.js +1 -1
  126. package/dist/kernel/components/mdx/components/table.d.ts +7 -7
  127. package/dist/kernel/components/mdx/components/table.js +2 -2
  128. package/dist/kernel/components/mdx/components/task-list.d.ts +3 -3
  129. package/dist/kernel/components/mdx/components/task-list.js +1 -1
  130. package/dist/kernel/components/mdx/components/video-player.d.ts +8 -4
  131. package/dist/kernel/components/mdx/components/video-player.js +6 -2
  132. package/dist/kernel/components/mdx/components/video.d.ts +5 -4
  133. package/dist/kernel/components/mdx/components/video.js +7 -5
  134. package/dist/kernel/components/mdx/error-boundary.d.ts +3 -4
  135. package/dist/kernel/components/mdx/error-boundary.js +2 -2
  136. package/dist/kernel/components/mdx/error-fallback.d.ts +2 -2
  137. package/dist/kernel/components/mdx/error-fallback.js +1 -1
  138. package/dist/kernel/components/mdx/mdx.d.ts +57 -16
  139. package/dist/kernel/components/mdx/mdx.js +232 -35
  140. package/dist/kernel/components/mdx/rehype-heading-ids.d.ts +1 -0
  141. package/dist/kernel/components/mdx/rehype-heading-ids.js +5 -3
  142. package/dist/kernel/components/mdx/types.d.ts +1 -1
  143. package/dist/kernel/components/next-image.d.ts +12 -0
  144. package/dist/kernel/components/next-image.js +61 -0
  145. package/dist/kernel/components/ui/accordion.d.ts +7 -7
  146. package/dist/kernel/components/ui/accordion.js +1 -1
  147. package/dist/kernel/components/ui/breadcrumb-trail.d.ts +3 -4
  148. package/dist/kernel/components/ui/breadcrumb-trail.js +2 -2
  149. package/dist/kernel/components/ui/breadcrumb.d.ts +14 -14
  150. package/dist/kernel/components/ui/breadcrumb.js +4 -4
  151. package/dist/kernel/components/ui/button-group.d.ts +6 -6
  152. package/dist/kernel/components/ui/button-group.js +3 -3
  153. package/dist/kernel/components/ui/button.d.ts +59 -7
  154. package/dist/kernel/components/ui/button.js +43 -39
  155. package/dist/kernel/components/ui/card.d.ts +7 -7
  156. package/dist/kernel/components/ui/card.js +1 -1
  157. package/dist/kernel/components/ui/dialog.d.ts +10 -10
  158. package/dist/kernel/components/ui/dialog.js +1 -1
  159. package/dist/kernel/components/ui/drawer.d.ts +12 -12
  160. package/dist/kernel/components/ui/drawer.js +1 -1
  161. package/dist/kernel/components/ui/input.d.ts +2 -2
  162. package/dist/kernel/components/ui/input.js +1 -1
  163. package/dist/kernel/components/ui/kbd.d.ts +4 -4
  164. package/dist/kernel/components/ui/kbd.js +1 -1
  165. package/dist/kernel/components/ui/link.d.ts +11 -5
  166. package/dist/kernel/components/ui/link.js +2 -2
  167. package/dist/kernel/components/ui/menu.d.ts +22 -22
  168. package/dist/kernel/components/ui/menu.js +1 -1
  169. package/dist/kernel/components/ui/mod-key.d.ts +2 -3
  170. package/dist/kernel/components/ui/mod-key.js +2 -2
  171. package/dist/kernel/components/ui/navigation-menu.d.ts +15 -15
  172. package/dist/kernel/components/ui/navigation-menu.js +1 -1
  173. package/dist/kernel/components/ui/popover.d.ts +11 -11
  174. package/dist/kernel/components/ui/popover.js +1 -1
  175. package/dist/kernel/components/ui/progress.d.ts +7 -7
  176. package/dist/kernel/components/ui/progress.js +1 -1
  177. package/dist/kernel/components/ui/scroll-area.d.ts +9 -10
  178. package/dist/kernel/components/ui/scroll-area.js +1 -1
  179. package/dist/kernel/components/ui/select.d.ts +16 -16
  180. package/dist/kernel/components/ui/select.js +1 -1
  181. package/dist/kernel/components/ui/separator.d.ts +3 -3
  182. package/dist/kernel/components/ui/separator.js +1 -1
  183. package/dist/kernel/components/ui/table.d.ts +7 -7
  184. package/dist/kernel/components/ui/table.js +1 -1
  185. package/dist/kernel/components/ui/tabs.d.ts +12 -12
  186. package/dist/kernel/components/ui/tabs.js +1 -1
  187. package/dist/kernel/components/ui/tag.d.ts +3 -3
  188. package/dist/kernel/components/ui/tag.js +1 -1
  189. package/dist/kernel/components/ui/text.d.ts +4 -4
  190. package/dist/kernel/components/ui/text.js +1 -1
  191. package/dist/kernel/components/ui/toast.d.ts +11 -11
  192. package/dist/kernel/components/ui/toast.js +1 -1
  193. package/dist/kernel/components/ui/tooltip.d.ts +9 -9
  194. package/dist/kernel/components/ui/tooltip.js +1 -1
  195. package/dist/kernel/defaults.registry.d.ts +4 -17
  196. package/dist/kernel/defaults.registry.js +4 -19
  197. package/dist/kernel/routes/agent/markdown.d.ts +7 -0
  198. package/dist/kernel/routes/agent/markdown.js +229 -54
  199. package/dist/kernel/routes/layouts/group.d.ts +1 -1
  200. package/dist/kernel/routes/layouts/group.js +5 -7
  201. package/dist/kernel/routes/metadata/feed.d.ts +1 -2
  202. package/dist/kernel/routes/metadata/feed.js +119 -88
  203. package/dist/kernel/routes/metadata/llms.d.ts +3 -23
  204. package/dist/kernel/routes/metadata/llms.js +2 -103
  205. package/dist/kernel/routes/metadata/og-image.js +1 -1
  206. package/dist/kernel/routes/metadata/robots.d.ts +5 -3
  207. package/dist/kernel/routes/metadata/robots.js +4 -25
  208. package/dist/kernel/routes/metadata/sitemap.d.ts +36 -3
  209. package/dist/kernel/routes/metadata/sitemap.js +277 -49
  210. package/dist/kernel/routes/not-found.d.ts +34 -0
  211. package/dist/kernel/routes/not-found.js +213 -0
  212. package/dist/kernel/routes/pages/group.d.ts +5 -5
  213. package/dist/kernel/routes/pages/group.js +11 -5
  214. package/dist/kernel/routes/pages/leaf.d.ts +38 -6
  215. package/dist/kernel/routes/pages/leaf.js +21 -12
  216. package/dist/kernel/routes/pages/root.d.ts +5 -5
  217. package/dist/kernel/routes/pages/root.js +21 -6
  218. package/dist/keyboard-shortcuts.d.ts +2 -2
  219. package/dist/keyboard-shortcuts.js +1 -1
  220. package/dist/manifest-types-CcVPH_jh.d.ts +83 -0
  221. package/dist/resolvers/manifest-resolver.d.ts +2 -2
  222. package/dist/resolvers/manifest-resolver.js +65 -35
  223. package/dist/route-metadata-og-image-BeKKFHg7.d.ts +58 -0
  224. package/dist/search.d.ts +2 -9
  225. package/dist/search.js +9 -16
  226. package/dist/sidebar-types-CMrMM0Nj.d.ts +105 -0
  227. package/dist/theme-scope.d.ts +2 -2
  228. package/dist/theme-scope.js +1 -1
  229. package/dist/types-BbqmOzLC.d.ts +168 -0
  230. package/dist/types-TjH1ek0X.d.ts +22 -0
  231. package/dist/types-sM2g9nW0.d.ts +12 -0
  232. package/dist/types.d.ts +117 -91
  233. package/dist/utils/heading-ids.js +30 -11
  234. package/dist/utils/toc-selection.d.ts +7 -0
  235. package/dist/utils/toc-selection.js +14 -0
  236. package/dist/validate-local-source-EN2GW4FR.js +16 -0
  237. package/dist/validate-publish-os-source-OEWQDB7B.js +14 -0
  238. package/init/seed/minimal/publish.os/assets/blog/hello-world.svg +13 -0
  239. package/init/seed/minimal/publish.os/assets/favicon.dark.svg +13 -0
  240. package/init/seed/minimal/publish.os/assets/favicon.svg +13 -0
  241. package/init/seed/minimal/publish.os/blog/content/hello-world.mdx +48 -0
  242. package/init/seed/minimal/publish.os/blog/content/series-a.mdx +11 -0
  243. package/init/seed/minimal/publish.os/blog/index.tsx +85 -0
  244. package/init/seed/minimal/publish.os/blog/layout.tsx +13 -0
  245. package/init/seed/minimal/publish.os/blog/page.tsx +91 -0
  246. package/init/seed/minimal/publish.os/components/blog/copy-link.tsx +64 -0
  247. package/init/seed/minimal/publish.os/components/blog/frontmatter.ts +41 -0
  248. package/init/seed/minimal/publish.os/docs/content/get-started.mdx +2 -3
  249. package/init/seed/minimal/publish.os/docs/content/groups.mdx +5 -6
  250. package/init/seed/minimal/publish.os/publish.os.config.json +17 -2
  251. package/init/seed/minimal/publish.os/theme.css +3 -3
  252. package/init/seed/minimal/seed.json +12 -4
  253. package/init/seed/scratch/publish.os/docs/content/get-started.mdx +1 -1
  254. package/init/seed/scratch/publish.os/publish.os.config.json +1 -1
  255. package/package.json +48 -23
  256. package/release/app/phosphor/package.json +4 -4
  257. package/release/app/phosphor/pnpm-lock.yaml.template +123 -184
  258. package/release/compiler/package.json +5 -3
  259. package/release/compiler/pnpm-lock.yaml.template +153 -183
  260. package/release/release.json +6 -6
  261. package/dist/button-CtzUJB8u.d.ts +0 -11
  262. package/dist/chunk-535TM4A5.js +0 -1455
  263. package/dist/chunk-B2V22WRT.js +0 -297
  264. package/dist/chunk-NECL5IBJ.js +0 -318
  265. package/dist/chunk-SVYGXXYR.js +0 -36
  266. package/dist/chunk-UF6ATARM.js +0 -1100
  267. package/dist/compose-NN23UJGC.js +0 -13
  268. package/dist/ide-support-ZNW7ODFY.js +0 -15
  269. package/dist/kernel/components/blocks/design-system-preview.d.ts +0 -61
  270. package/dist/kernel/components/blocks/design-system-preview.js +0 -667
  271. package/dist/kernel/components/blocks/link-playground.d.ts +0 -5
  272. package/dist/kernel/components/blocks/link-playground.js +0 -744
  273. package/dist/kernel/components/blocks/navigation-progress-playground.d.ts +0 -5
  274. package/dist/kernel/components/blocks/navigation-progress-playground.js +0 -629
  275. package/dist/kernel/components/ui/theme-toggle.d.ts +0 -24
  276. package/dist/kernel/components/ui/theme-toggle.js +0 -53
  277. package/dist/sidebar-types-DKpR27II.d.ts +0 -25
  278. package/dist/types-BzkZty3r.d.ts +0 -147
  279. package/dist/types-CJWRG05y.d.ts +0 -76
  280. package/dist/types-CUtrppxt.d.ts +0 -69
  281. package/dist/validate-local-source-XRL2Y7XE.js +0 -14
  282. package/dist/validate-publish-os-source-DAPZ4QGE.js +0 -12
  283. package/init/seed/minimal/publish.os/assets/favicon/favicon.dark.png +0 -0
  284. package/init/seed/minimal/publish.os/assets/favicon/favicon.png +0 -0
@@ -1,37 +1,40 @@
1
1
  import {
2
2
  withCheckoutPreparation
3
- } from "./chunk-DWA3ZRGW.js";
4
- import {
5
- approveLocalComposition
6
- } from "./chunk-SVYGXXYR.js";
7
- import {
8
- withLocalOperation
9
- } from "./chunk-B2V22WRT.js";
3
+ } from "./chunk-6C65KV7O.js";
10
4
  import {
11
5
  LocalProcessError,
6
+ approveLocalComposition,
12
7
  installLocalApp,
13
8
  localProcessEnvironment,
14
9
  startLocalProcess
15
- } from "./chunk-WKTEO6RS.js";
10
+ } from "./chunk-4BC2L2KA.js";
11
+ import {
12
+ withLocalOperation
13
+ } from "./chunk-IL4RJOKI.js";
16
14
  import {
17
15
  assertGeneratedOutput,
18
16
  assertLocalDirectory,
19
17
  assertOperationOutput,
20
18
  prepareGeneratedOutputUpdate
21
- } from "./chunk-GGKFQ3MA.js";
19
+ } from "./chunk-6D2E6UMD.js";
22
20
  import {
23
21
  assertFrameworkSelection
24
- } from "./chunk-DLDFHU7Y.js";
25
- import "./chunk-7OGTPSKI.js";
22
+ } from "./chunk-NNBJZPFM.js";
23
+ import "./chunk-7NY22B5U.js";
26
24
  import {
27
- PUBLIC_PAGEFIND_DIRECTORY,
28
- isExcludedSourcePath
29
- } from "./chunk-YLTOLYWM.js";
25
+ PUBLIC_SEARCH_DIRECTORY
26
+ } from "./chunk-EFO6AWXN.js";
27
+ import {
28
+ isExcludedSourcePath,
29
+ isOsMetadataPath
30
+ } from "./chunk-WL75GQ5M.js";
30
31
  import "./chunk-AI2UULNX.js";
31
32
  import {
32
- AppError,
33
33
  readInstalledFramework
34
- } from "./chunk-WDY4IK6Z.js";
34
+ } from "./chunk-5J3YUNRY.js";
35
+ import {
36
+ AppError
37
+ } from "./chunk-22RSSUNV.js";
35
38
 
36
39
  // src/lib/compiler/lifecycle/dev-operation.ts
37
40
  import { createHash as createHash4 } from "crypto";
@@ -41,23 +44,47 @@ import { join as join5 } from "path";
41
44
  import { setTimeout as delay } from "timers/promises";
42
45
  import { stripVTControlCharacters } from "util";
43
46
 
47
+ // src/lib/compiler/lifecycle/change-scheduler.ts
48
+ function createChangeScheduler({
49
+ onChange,
50
+ onReady,
51
+ delayMs = 100
52
+ }) {
53
+ let timer;
54
+ return {
55
+ notify() {
56
+ onChange(), timer && clearTimeout(timer), timer = setTimeout(() => {
57
+ timer = void 0, onReady();
58
+ }, delayMs);
59
+ },
60
+ stop() {
61
+ timer && clearTimeout(timer), timer = void 0;
62
+ }
63
+ };
64
+ }
65
+
44
66
  // src/lib/compiler/lifecycle/checkout-development.ts
45
67
  import { createHash as createHash2 } from "crypto";
46
68
  import { mkdtemp, readFile as readFile2, rm, stat, writeFile } from "fs/promises";
47
69
  import { createRequire } from "module";
48
70
  import { dirname, isAbsolute, join as join2 } from "path";
71
+ import { pathToFileURL } from "url";
49
72
 
50
73
  // src/lib/compiler/lifecycle/source-watch.ts
51
74
  import { createHash } from "crypto";
52
75
  import { watch } from "fs";
53
76
  import { lstat, readdir, readFile } from "fs/promises";
54
77
  import { join, relative } from "path";
78
+ import { setImmediate } from "timers/promises";
55
79
  function ignored(sourceRoot, path, include) {
56
80
  let name = relative(sourceRoot, path).replace(/\\/g, "/");
57
- return (include ? !include(name) : isExcludedSourcePath(name)) || name.split("/").length === 1 && name.startsWith(".env") || name.split("/").some(
81
+ return isOsMetadataPath(name) || (include ? !include(name) : isExcludedSourcePath(name)) || name.split("/").length === 1 && name.startsWith(".env") || name.split("/").some(
58
82
  (segment) => ["node_modules", ".next", ".cache", ".turbo", ".git"].includes(segment)
59
83
  );
60
84
  }
85
+ function usesRecursiveSourceWatch(platform) {
86
+ return platform === "darwin";
87
+ }
61
88
  function changesBetween(before, after) {
62
89
  return [.../* @__PURE__ */ new Set([...before.keys(), ...after.keys()])].sort().flatMap((path) => {
63
90
  let previous = before.get(path), current = after.get(path);
@@ -70,17 +97,24 @@ function changesBetween(before, after) {
70
97
  });
71
98
  }
72
99
  async function watchSource(options) {
73
- let watchers = /* @__PURE__ */ new Map(), closed = !1, scan = Promise.resolve(), baseline = /* @__PURE__ */ new Map(), scanNow = async () => {
100
+ let watchers = /* @__PURE__ */ new Map(), recursiveRootWatch = usesRecursiveSourceWatch(process.platform), closed = !1, scan = Promise.resolve(), rescanning = !1, baseline = /* @__PURE__ */ new Map(), closeWatchers = async () => {
101
+ let entries = [...watchers.values()];
102
+ watchers.clear();
103
+ for (let { watcher } of entries)
104
+ await setImmediate(), watcher.close();
105
+ }, scanNow = async () => {
74
106
  let visited = /* @__PURE__ */ new Set(), identity = /* @__PURE__ */ new Map();
75
107
  await visit(options.sourceRoot, visited, identity);
76
108
  for (let [path, entry] of watchers)
77
109
  visited.has(path) || (entry.watcher.close(), watchers.delete(path));
78
110
  return identity;
79
- }, rescan = () => (scan = scan.then(async () => {
111
+ }, rescan = () => (closed || rescanning || (rescanning = !0, scan = scan.then(async () => {
80
112
  if (closed) return;
81
113
  let identity = await scanNow();
82
- changesBetween(baseline, identity).length > 0 && options.onChange();
83
- }).catch(options.onError), scan), visit = async (directory, visited, identity) => {
114
+ !closed && changesBetween(baseline, identity).length > 0 && options.onChange();
115
+ }).catch(options.onError).finally(() => {
116
+ rescanning = !1;
117
+ })), scan), visit = async (directory, visited, identity) => {
84
118
  if (closed || ignored(options.sourceRoot, directory, options.include))
85
119
  return;
86
120
  let entry = await lstat(directory, { bigint: !0 }).catch(
@@ -104,15 +138,16 @@ async function watchSource(options) {
104
138
  return;
105
139
  }
106
140
  visited.add(directory);
107
- let previous = watchers.get(directory);
108
- if (previous && (previous.dev !== entry.dev || previous.ino !== entry.ino) && (previous.watcher.close(), watchers.delete(directory)), !watchers.has(directory)) {
109
- let watcher = watch(directory, (_event, filename) => {
110
- closed || filename && ignored(
141
+ let watchDirectory = !recursiveRootWatch || directory === options.sourceRoot, previous = watchDirectory ? watchers.get(directory) : void 0;
142
+ if (previous && (previous.dev !== entry.dev || previous.ino !== entry.ino) && (previous.watcher.close(), watchers.delete(directory)), watchDirectory && !watchers.has(directory)) {
143
+ let onEvent = (_event, filename) => {
144
+ let relativeFilename = typeof filename == "string" ? filename : Buffer.isBuffer(filename) ? filename.toString("utf8") : void 0;
145
+ closed || relativeFilename && ignored(
111
146
  options.sourceRoot,
112
- join(directory, filename),
147
+ join(directory, relativeFilename),
113
148
  options.include
114
149
  ) || rescan();
115
- });
150
+ }, watcher = recursiveRootWatch ? watch(directory, { recursive: !0 }, onEvent) : watch(directory, onEvent);
116
151
  watcher.on("error", (error) => {
117
152
  closed || options.onError(error);
118
153
  }), watchers.set(directory, { watcher, dev: entry.dev, ino: entry.ino });
@@ -131,11 +166,12 @@ async function watchSource(options) {
131
166
  baseline = identity;
132
167
  }), await scan;
133
168
  } catch (error) {
134
- closed = !0;
135
- for (let { watcher } of watchers.values()) watcher.close();
136
- throw error;
169
+ throw closed = !0, await closeWatchers(), error;
137
170
  }
138
- return {
171
+ let reconciliation = setInterval(() => {
172
+ rescan();
173
+ }, 2e3);
174
+ return reconciliation.unref(), {
139
175
  reconcileStartup: rescan,
140
176
  revision: async () => {
141
177
  if (await scan, closed) return;
@@ -159,9 +195,7 @@ async function watchSource(options) {
159
195
  return baseline = current, changes;
160
196
  },
161
197
  stop: async () => {
162
- closed = !0;
163
- for (let { watcher } of watchers.values()) watcher.close();
164
- watchers.clear(), await scan;
198
+ closed = !0, clearInterval(reconciliation), await closeWatchers(), await scan;
165
199
  }
166
200
  };
167
201
  }
@@ -295,8 +329,7 @@ async function prepareCheckoutDependencies(options) {
295
329
  "@publish.os/nextjs...",
296
330
  "install",
297
331
  "--frozen-lockfile",
298
- "--prefer-offline",
299
- "--fetch-timeout=10000"
332
+ "--prefer-offline"
300
333
  ],
301
334
  cwd: options.workspaceRoot ?? options.packageRoot,
302
335
  environment: {
@@ -305,7 +338,7 @@ async function prepareCheckoutDependencies(options) {
305
338
  },
306
339
  signal: AbortSignal.any([
307
340
  options.lifetime.signal,
308
- AbortSignal.timeout(12e4)
341
+ AbortSignal.timeout(3e5)
309
342
  ]),
310
343
  onShutdown: options.lifetime.onShutdown,
311
344
  quiet: !0
@@ -328,7 +361,7 @@ async function runCheckoutCompiler(options) {
328
361
  });
329
362
  let temporary = await mkdtemp(
330
363
  join2(dirname(options.request.paths.output), "compiler-")
331
- ), identity = await assertLocalDirectory(temporary), requestPath = join2(temporary, "request.json"), resultPath = join2(temporary, "result.json"), importIndex = process.execArgv.indexOf("--import"), retain = !1;
364
+ ), identity = await assertLocalDirectory(temporary), requestPath = join2(temporary, "request.json"), resultPath = join2(temporary, "result.json"), retain = !1;
332
365
  try {
333
366
  await writeFile(requestPath, JSON.stringify(options.request), {
334
367
  flag: "wx",
@@ -337,9 +370,11 @@ async function runCheckoutCompiler(options) {
337
370
  command: process.execPath,
338
371
  args: [
339
372
  "--import",
340
- importIndex === -1 ? createRequire(join2(selection.packageRoot, "package.json")).resolve(
341
- "tsx/esm"
342
- ) : process.execArgv[importIndex + 1] ?? "",
373
+ pathToFileURL(
374
+ createRequire(join2(selection.packageRoot, "package.json")).resolve(
375
+ "tsx/esm"
376
+ )
377
+ ).href,
343
378
  join2(
344
379
  selection.packageRoot,
345
380
  "src/lib/compiler/lifecycle/checkout-compiler-worker.ts"
@@ -374,6 +409,15 @@ async function runCheckoutCompiler(options) {
374
409
  }
375
410
  }
376
411
 
412
+ // src/lib/compiler/lifecycle/checkout-watch-shutdown.ts
413
+ async function startCheckoutWatchForOperation({
414
+ lifetime,
415
+ watch: watch2
416
+ }) {
417
+ let checkoutWatch = await watch2();
418
+ return lifetime.onShutdown(() => checkoutWatch.stop()), checkoutWatch;
419
+ }
420
+
377
421
  // src/lib/compiler/lifecycle/preview-cache.ts
378
422
  import { createHash as createHash3 } from "crypto";
379
423
  import {
@@ -438,12 +482,12 @@ async function reusablePreview(options) {
438
482
  let cache = JSON.parse(
439
483
  await readFile3(join3(options.outputDir, CACHE_FILE), "utf8")
440
484
  );
441
- if (cache.version !== 5 || cache.inputKind !== (options.inputKind ?? "customer") || cache.runtimeGraph !== (options.inputKind === "checkout" ? "checkout-source" : void 0) || cache.runtime !== options.runtime || cache.sourcePath !== options.sourcePath || typeof cache.integrity != "string")
485
+ if (cache.version !== 8 || cache.inputKind !== (options.inputKind ?? "customer") || cache.runtimeGraph !== (options.inputKind === "checkout" ? "checkout-source" : void 0) || cache.runtime !== options.runtime || cache.sourcePath !== options.sourcePath || typeof cache.integrity != "string")
442
486
  return;
443
487
  let current = cache.revision === options.revision && cache.frameworkIdentity === options.frameworkIdentity && cache.compilerRevision === options.compilerRevision && cache.checkoutDependencyRevision === options.checkoutDependencyRevision && cache.url === options.url;
444
488
  return !current && options.inputKind !== "checkout" || options.inputKind === "checkout" && (!options.checkoutRoot || await realpath(
445
489
  join3(options.outputDir, "node_modules/@publish.os/nextjs")
446
- ) !== await realpath(options.checkoutRoot)) || (options.ide && await readFile3(join3(options.sourceRoot, ".publish.os/ide/metadata.json")), cache.integrity !== await outputIntegrity(options)) ? void 0 : {
490
+ ) !== await realpath(options.checkoutRoot)) || cache.integrity !== await outputIntegrity(options) ? void 0 : {
447
491
  current,
448
492
  dependenciesChanged: cache.checkoutDependencyRevision !== options.checkoutDependencyRevision
449
493
  };
@@ -454,7 +498,7 @@ async function reusablePreview(options) {
454
498
  async function recordPreviewCache(options) {
455
499
  if (!options.revision) return;
456
500
  let cache = {
457
- version: 5,
501
+ version: 8,
458
502
  inputKind: options.inputKind ?? "customer",
459
503
  ...options.inputKind === "checkout" ? { runtimeGraph: "checkout-source" } : {},
460
504
  revision: options.revision,
@@ -490,7 +534,7 @@ var PRESERVED_PREVIEW_ENTRIES = /* @__PURE__ */ new Set([
490
534
  ".next",
491
535
  ".operation-owner.json",
492
536
  ".preview-cache.json",
493
- PUBLIC_PAGEFIND_DIRECTORY
537
+ PUBLIC_SEARCH_DIRECTORY
494
538
  ]);
495
539
  async function refreshPreview(options) {
496
540
  let sync = async (source, target) => {
@@ -670,7 +714,7 @@ async function runDevelopment(options) {
670
714
  scope,
671
715
  signal: options.signal ? AbortSignal.any([options.signal, sessionCancellation.signal]) : sessionCancellation.signal,
672
716
  run: async (lifetime) => {
673
- let localOptions = { ...options, signal: lifetime.signal }, stopped = !1, dirty = !1, refreshing, startupReconciliation, timer, ready = !1, checkoutWatch, checkoutDependenciesDirty = !1, rejectSession = () => {
717
+ let localOptions = { ...options, signal: lifetime.signal }, stopped = !1, dirty = !1, refreshing, startupReconciliation, ready = !1, checkoutWatch, checkoutDependenciesDirty = !1, rejectSession = () => {
674
718
  }, failed = new Promise((_resolve, reject) => {
675
719
  rejectSession = reject;
676
720
  });
@@ -678,12 +722,15 @@ async function runDevelopment(options) {
678
722
  });
679
723
  let abortSession = () => rejectSession(lifetime.signal.reason);
680
724
  lifetime.signal.addEventListener("abort", abortSession, { once: !0 });
681
- let watchOptions = {
725
+ let changeScheduler = createChangeScheduler({
682
726
  onChange: () => {
683
- dirty = !0, timer && clearTimeout(timer), timer = setTimeout(() => {
684
- ready && drain();
685
- }, 100);
727
+ dirty = !0;
686
728
  },
729
+ onReady: () => {
730
+ ready && drain();
731
+ }
732
+ }), watchOptions = {
733
+ onChange: changeScheduler.notify,
687
734
  onError: (cause) => {
688
735
  let error = new AppError({
689
736
  code: "FRAMEWORK_PREVIEW_WATCH_FAILED",
@@ -695,15 +742,20 @@ async function runDevelopment(options) {
695
742
  ...watchOptions,
696
743
  sourceRoot: lifetime.sourceRoot
697
744
  });
698
- lifetime.onShutdown(async () => {
699
- stopped = !0, timer && clearTimeout(timer), await sourceWatch.stop(), await checkoutWatch?.stop(), await startupReconciliation, await refreshing;
700
- }), options.request.context?.framework?.kind === "checkout" && (checkoutWatch = await watchCheckout({
701
- ...watchOptions,
702
- packageRoot: options.request.context.framework.packageRoot
703
- }));
745
+ if (lifetime.onShutdown(async () => {
746
+ stopped = !0, changeScheduler.stop(), await sourceWatch.stop(), await startupReconciliation, await refreshing;
747
+ }), options.request.context?.framework?.kind === "checkout") {
748
+ let packageRoot = options.request.context.framework.packageRoot;
749
+ checkoutWatch = await startCheckoutWatchForOperation({
750
+ lifetime,
751
+ watch: () => watchCheckout({
752
+ ...watchOptions,
753
+ packageRoot
754
+ })
755
+ });
756
+ }
704
757
  let initialRevision = await sourceWatch.revision(), initialCompilerRevision = await checkoutWatch?.revision(), initialDependencyRevision = await checkoutWatch?.dependencyRevision(), initialConfig = await readSourceSelection(lifetime.sourceRoot) ?? {}, reuse = await reusablePreview({
705
758
  outputDir: lifetime.outputDir,
706
- sourceRoot: lifetime.sourceRoot,
707
759
  revision: initialRevision,
708
760
  runtime: options.request.context?.framework ? `${framework.packageName}@${framework.version}` : initialConfig.runtime ?? "",
709
761
  frameworkIdentity,
@@ -712,11 +764,10 @@ async function runDevelopment(options) {
712
764
  inputKind,
713
765
  url,
714
766
  sourcePath: options.request.context?.sourcePath ?? "publish.os",
715
- ide: !!options.request.context?.ide,
716
767
  checkoutRoot: options.request.context?.framework?.kind === "checkout" ? options.request.context.framework.packageRoot : void 0
717
768
  });
718
769
  checkoutDependenciesDirty = reuse?.dependenciesChanged ?? !1;
719
- let validateSource = async () => (await import("./validate-local-source-XRL2Y7XE.js")).validateLocalSource({
770
+ let validateSource = async () => (await import("./validate-local-source-EN2GW4FR.js")).validateLocalSource({
720
771
  options: localOptions,
721
772
  sourceDir: lifetime.sourceDir,
722
773
  sourceRoot: lifetime.sourceRoot
@@ -732,17 +783,16 @@ async function runDevelopment(options) {
732
783
  });
733
784
  };
734
785
  if (options.request.context?.ide) {
735
- let { prepareIdeSupport } = await import("./ide-support-ZNW7ODFY.js");
786
+ let { prepareIdeSupport } = await import("./ide-support-TG74L4FF.js"), ideSource = prepared?.source ?? (await validateSource()).source;
736
787
  await prepareIdeSupport({
788
+ frameworkOptions: localOptions,
737
789
  publishOsDir: lifetime.sourceRoot,
738
- // Only a verified unchanged source can defer validation until IDE repair.
739
- source: prepared?.source ?? (reuse?.current ? async () => (await validateSource()).source : (await validateSource()).source),
740
- framework: prepared?.framework ?? framework,
741
- frameworkOptions: localOptions
790
+ source: ideSource,
791
+ framework: prepared?.framework ?? framework
742
792
  });
743
793
  }
744
794
  let compose = async (outputDir, preparedSource) => {
745
- let { composeFrameworkSource } = await import("./compose-NN23UJGC.js");
795
+ let { composeFrameworkSource } = await import("./compose-44GJSMXD.js");
746
796
  await composeFrameworkSource({
747
797
  request: {
748
798
  ...options.request,
@@ -756,7 +806,13 @@ async function runDevelopment(options) {
756
806
  },
757
807
  source: preparedSource,
758
808
  signal: lifetime.signal,
759
- onProgress: (message) => options.onEvent?.({ type: "progress", message })
809
+ onProgress: (message) => options.onEvent?.({ type: "progress", message }),
810
+ onWarning: (warning) => options.onEvent?.({
811
+ type: "diagnostics",
812
+ diagnostics: {
813
+ diagnostics: [{ ...warning, severity: "warning" }]
814
+ }
815
+ })
760
816
  });
761
817
  }, search = async (outputDir) => {
762
818
  options.onEvent?.({
@@ -874,7 +930,7 @@ async function runDevelopment(options) {
874
930
  );
875
931
  let revisionBefore = await sourceWatch.revision(), compilerRevisionBefore = await checkoutWatch?.revision(), dependencyRevisionBefore = await checkoutWatch?.dependencyRevision(), inputsCurrent = async () => revisionBefore !== void 0 && revisionBefore === await sourceWatch.revision() && (!checkoutWatch || compilerRevisionBefore !== void 0 && compilerRevisionBefore === await checkoutWatch.revision());
876
932
  await assertSelection();
877
- let validation = checkoutWatch ? void 0 : await (await import("./validate-local-source-XRL2Y7XE.js")).validateLocalSource({
933
+ let validation = checkoutWatch ? void 0 : await (await import("./validate-local-source-EN2GW4FR.js")).validateLocalSource({
878
934
  options: localOptions,
879
935
  sourceDir: lifetime.sourceDir,
880
936
  sourceRoot: lifetime.sourceRoot
@@ -882,7 +938,17 @@ async function runDevelopment(options) {
882
938
  await assertSelection(), await assertOutput(), await assertGeneratedOutput({ outputDir: lifetime.outputDir, scope });
883
939
  let temporary = await mkdtemp2(join5(lifetime.outputDir, ".refresh-")), identity = await assertLocalDirectory(temporary), retain = !1, recordGeneratedOutput, primaryFailure, cleanup = async () => {
884
940
  try {
885
- await assertOutput(), await assertLocalDirectory(temporary, identity), await recordGeneratedOutput?.(), await rm3(temporary, { recursive: !0, force: !0 });
941
+ await assertOutput(), await assertLocalDirectory(temporary, identity), await recordGeneratedOutput?.(), lifetime.signal.aborted && recordGeneratedOutput && inputKind === "checkout" && await recordPreviewCache({
942
+ outputDir: lifetime.outputDir,
943
+ revision: "interrupted",
944
+ runtime: selection.runtime ?? "",
945
+ frameworkIdentity,
946
+ compilerRevision: compilerRevisionBefore,
947
+ checkoutDependencyRevision: dependencyRevisionBefore,
948
+ inputKind,
949
+ url,
950
+ sourcePath: options.request.context?.sourcePath ?? "publish.os"
951
+ }), await rm3(temporary, { recursive: !0, force: !0 });
886
952
  } catch (error) {
887
953
  if (!primaryFailure) throw error;
888
954
  primaryFailure.error instanceof Error && (primaryFailure.error.cause = {
@@ -946,22 +1012,6 @@ async function runDevelopment(options) {
946
1012
  framework,
947
1013
  runtime: void 0
948
1014
  }) : frameworkIdentity;
949
- if (checkoutWatch && options.request.context?.ide && JSON.parse(
950
- await readFile5(
951
- join5(lifetime.sourceRoot, ".publish.os/ide/metadata.json"),
952
- "utf8"
953
- )
954
- ).selection?.integrity !== nextFrameworkIdentity) {
955
- let ide = await runCheckoutCompiler({
956
- request: {
957
- ...options.request,
958
- operation: "validate",
959
- paths: { source: lifetime.sourceRoot, output: incoming }
960
- },
961
- lifetime
962
- });
963
- acceptCompilation(ide);
964
- }
965
1015
  if (!await inputsCurrent())
966
1016
  return dirty = !0, !1;
967
1017
  if (recordGeneratedOutput = await prepareGeneratedOutputUpdate({
@@ -1,9 +1,10 @@
1
1
  import {
2
2
  assertFrameworkSelection,
3
3
  readCheckoutTypeScriptConfig
4
- } from "./chunk-DLDFHU7Y.js";
4
+ } from "./chunk-NNBJZPFM.js";
5
5
  import "./chunk-AI2UULNX.js";
6
- import "./chunk-WDY4IK6Z.js";
6
+ import "./chunk-5J3YUNRY.js";
7
+ import "./chunk-22RSSUNV.js";
7
8
  export {
8
9
  assertFrameworkSelection,
9
10
  readCheckoutTypeScriptConfig
@@ -0,0 +1,16 @@
1
+ import {
2
+ prepareIdeSupport
3
+ } from "./chunk-3T4HVDSC.js";
4
+ import "./chunk-6D2E6UMD.js";
5
+ import "./chunk-NHSLTARU.js";
6
+ import "./chunk-NNBJZPFM.js";
7
+ import "./chunk-DX7PXFCM.js";
8
+ import "./chunk-EFO6AWXN.js";
9
+ import "./chunk-5KAD7W53.js";
10
+ import "./chunk-WL75GQ5M.js";
11
+ import "./chunk-AI2UULNX.js";
12
+ import "./chunk-5J3YUNRY.js";
13
+ import "./chunk-22RSSUNV.js";
14
+ export {
15
+ prepareIdeSupport
16
+ };