eddev 0.3.38 → 2.0.0-beta.10

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 (559) hide show
  1. package/bin/eddev.js +1 -3
  2. package/css/devtools.css +15 -0
  3. package/css/editor-styles.css +94 -0
  4. package/dist/app/entry/boot-admin.d.ts +1 -0
  5. package/dist/app/entry/boot-admin.js +8 -0
  6. package/dist/app/entry/spa-root.d.ts +1 -0
  7. package/dist/app/entry/spa-root.js +9 -0
  8. package/dist/app/entry/ssr-root-client.d.ts +4 -0
  9. package/dist/app/entry/ssr-root-client.js +9 -0
  10. package/dist/app/entry/ssr-root.d.ts +9 -0
  11. package/dist/app/entry/ssr-root.js +21 -0
  12. package/{admin → dist/app/lib/admin}/defineField.d.ts +2 -2
  13. package/dist/app/lib/admin/defineField.js +3 -0
  14. package/{admin → dist/app/lib/admin}/defineWidget.d.ts +1 -1
  15. package/dist/app/lib/admin/defineWidget.js +6 -0
  16. package/dist/app/lib/admin/index.d.ts +2 -0
  17. package/dist/app/lib/admin/index.js +2 -0
  18. package/dist/app/lib/admin/installFieldTypes.js +92 -0
  19. package/dist/app/lib/admin/runWidgets.js +38 -0
  20. package/dist/app/lib/blocks/ContentBlocks.d.ts +83 -0
  21. package/dist/app/lib/blocks/ContentBlocks.js +92 -0
  22. package/dist/app/lib/blocks/EditableText.d.ts +41 -0
  23. package/dist/app/lib/blocks/EditableText.js +50 -0
  24. package/{blocks → dist/app/lib/blocks}/ErrorBoundaryFrontend.d.ts +2 -2
  25. package/dist/app/lib/blocks/ErrorBoundaryFrontend.js +35 -0
  26. package/dist/app/lib/blocks/InnerBlocks.d.ts +42 -0
  27. package/dist/app/lib/blocks/InnerBlocks.js +55 -0
  28. package/dist/app/lib/blocks/block-utils.d.ts +24 -0
  29. package/dist/app/lib/blocks/block-utils.js +41 -0
  30. package/dist/app/lib/blocks/defineBlock.d.ts +2 -0
  31. package/dist/app/lib/blocks/defineBlock.js +3 -0
  32. package/dist/app/lib/blocks/editor/EditorSupport.d.ts +5 -0
  33. package/dist/app/lib/blocks/editor/EditorSupport.js +19 -0
  34. package/{blocks → dist/app/lib/blocks/editor}/ErrorBoundaryEditor.d.ts +1 -1
  35. package/dist/app/lib/blocks/editor/ErrorBoundaryEditor.js +28 -0
  36. package/dist/app/lib/blocks/editor/block-templates.d.ts +3 -0
  37. package/dist/app/lib/blocks/editor/block-templates.js +9 -0
  38. package/dist/app/lib/blocks/editor/blocks-by-tag.d.ts +7 -0
  39. package/dist/app/lib/blocks/editor/blocks-by-tag.js +42 -0
  40. package/dist/app/lib/blocks/editor/controls.d.ts +10 -0
  41. package/dist/app/lib/blocks/editor/controls.js +20 -0
  42. package/dist/app/lib/blocks/editor/editor-config.d.ts +58 -0
  43. package/dist/app/lib/blocks/editor/editor-config.js +191 -0
  44. package/dist/app/lib/blocks/editor/installGutenbergHooks.d.ts +2 -0
  45. package/dist/app/lib/blocks/editor/installGutenbergHooks.js +131 -0
  46. package/dist/app/lib/blocks/editor/usePostEditor.d.ts +27 -0
  47. package/dist/app/lib/blocks/editor/usePostEditor.js +79 -0
  48. package/dist/app/lib/blocks/index.d.ts +9 -0
  49. package/dist/app/lib/blocks/index.js +9 -0
  50. package/dist/app/lib/blocks/inline-editing.d.ts +54 -0
  51. package/dist/app/lib/blocks/inline-editing.js +114 -0
  52. package/dist/app/lib/devtools/components/BreakpointIndicator.js +81 -0
  53. package/{dev-ui → dist/app/lib/devtools}/components/DevUI.d.ts +1 -0
  54. package/dist/app/lib/devtools/components/DevUI.js +6 -0
  55. package/dist/app/lib/devtools/dev-tools-store.d.ts +9 -0
  56. package/dist/app/lib/devtools/dev-tools-store.js +8 -0
  57. package/dist/app/lib/devtools/hooks/usePersistState.js +31 -0
  58. package/dist/app/lib/devtools/hooks/useTailwind.d.ts +4183 -0
  59. package/dist/app/lib/devtools/hooks/useTailwind.js +9 -0
  60. package/dist/app/lib/devtools/index.d.ts +1 -0
  61. package/dist/app/lib/devtools/index.js +1 -0
  62. package/dist/app/lib/devtools/loader.js +23 -0
  63. package/dist/app/lib/devtools/tailwind.config.d.ts +23 -0
  64. package/dist/app/lib/devtools/tailwind.config.js +24 -0
  65. package/{hooks → dist/app/lib/devtools}/useQueryDebug.d.ts +1 -1
  66. package/dist/app/lib/devtools/useQueryDebug.js +13 -0
  67. package/dist/app/lib/dynamic/dynamic.d.ts +8 -0
  68. package/dist/app/lib/dynamic/dynamic.js +25 -0
  69. package/dist/app/lib/dynamic/index.d.ts +1 -0
  70. package/dist/app/lib/dynamic/index.js +1 -0
  71. package/dist/app/lib/hooks/apiConfig.d.ts +18 -0
  72. package/dist/app/lib/hooks/apiConfig.js +4 -0
  73. package/{hooks → dist/app/lib/hooks}/index.d.ts +2 -0
  74. package/dist/app/lib/hooks/index.js +5 -0
  75. package/dist/app/lib/hooks/queryUtils.d.ts +49 -0
  76. package/dist/app/lib/hooks/queryUtils.js +180 -0
  77. package/dist/app/lib/hooks/useAppData.d.ts +4 -0
  78. package/dist/app/lib/hooks/useAppData.js +11 -0
  79. package/{hooks → dist/app/lib/hooks}/usePageLoad.d.ts +1 -1
  80. package/dist/app/lib/hooks/usePageLoad.js +5 -0
  81. package/dist/app/lib/hooks/useRPC.d.ts +9 -0
  82. package/dist/app/lib/hooks/useRPC.js +9 -0
  83. package/dist/app/lib/internal/index.d.ts +4 -0
  84. package/dist/app/lib/internal/index.js +4 -0
  85. package/dist/app/lib/internal/internal-store.d.ts +9 -0
  86. package/dist/app/lib/internal/internal-store.js +7 -0
  87. package/dist/app/lib/internal/read-admin-manifest.d.ts +19 -0
  88. package/dist/app/lib/internal/read-admin-manifest.js +17 -0
  89. package/dist/app/lib/internal/read-block-manifest.d.ts +15 -0
  90. package/dist/app/lib/internal/read-block-manifest.js +16 -0
  91. package/dist/app/lib/internal/read-view-manifest.d.ts +12 -0
  92. package/dist/app/lib/internal/read-view-manifest.js +3 -0
  93. package/dist/app/lib/legacy-stitches/createStitches.d.ts +615 -0
  94. package/dist/app/lib/legacy-stitches/createStitches.js +439 -0
  95. package/dist/app/lib/legacy-stitches/index.js +1 -0
  96. package/{components → dist/app/lib/routing/components}/BrowserRouter.d.ts +2 -4
  97. package/dist/app/lib/routing/components/BrowserRouter.js +351 -0
  98. package/dist/app/lib/routing/components/ClientOnly.d.ts +12 -0
  99. package/dist/app/lib/routing/components/ClientOnly.js +14 -0
  100. package/dist/app/lib/routing/components/Link.d.ts +26 -0
  101. package/dist/app/lib/routing/components/Link.js +93 -0
  102. package/dist/app/lib/routing/components/RouteRenderer.d.ts +9 -0
  103. package/dist/app/lib/routing/components/RouteRenderer.js +28 -0
  104. package/dist/app/lib/routing/components/SSRRouter.d.ts +9 -0
  105. package/dist/app/lib/routing/components/SSRRouter.js +14 -0
  106. package/dist/app/lib/routing/components/ScrollRestoration.d.ts +15 -0
  107. package/dist/app/lib/routing/components/ScrollRestoration.js +32 -0
  108. package/dist/app/lib/routing/context.d.ts +5 -0
  109. package/dist/app/lib/routing/context.js +129 -0
  110. package/dist/app/lib/routing/hooks/useIsSSR.d.ts +8 -0
  111. package/dist/app/lib/routing/hooks/useIsSSR.js +22 -0
  112. package/dist/app/lib/routing/hooks/useRestorableState.d.ts +5 -0
  113. package/dist/app/lib/routing/hooks/useRestorableState.js +17 -0
  114. package/dist/app/lib/routing/hooks/useRoute.d.ts +2 -0
  115. package/dist/app/lib/routing/hooks/useRoute.js +5 -0
  116. package/dist/app/lib/routing/hooks/useRouteTransition.d.ts +4 -0
  117. package/dist/app/lib/routing/hooks/useRouteTransition.js +12 -0
  118. package/dist/app/lib/routing/hooks/useRouter.d.ts +2 -0
  119. package/dist/app/lib/routing/hooks/useRouter.js +11 -0
  120. package/dist/app/lib/routing/hooks/useRouterEvents.d.ts +2 -0
  121. package/dist/app/lib/routing/hooks/useRouterEvents.js +10 -0
  122. package/dist/app/lib/routing/hooks/useRouterState.d.ts +2 -0
  123. package/dist/app/lib/routing/hooks/useRouterState.js +8 -0
  124. package/dist/app/lib/routing/hooks/useSearchParams.d.ts +10 -0
  125. package/dist/app/lib/routing/hooks/useSearchParams.js +30 -0
  126. package/dist/app/lib/routing/index.d.ts +13 -0
  127. package/dist/app/lib/routing/index.js +13 -0
  128. package/dist/app/lib/routing/loader.d.ts +30 -0
  129. package/dist/app/lib/routing/loader.js +108 -0
  130. package/dist/app/lib/routing/types.d.ts +138 -0
  131. package/dist/app/lib/routing/utils.d.ts +15 -0
  132. package/dist/app/lib/routing/utils.js +94 -0
  133. package/dist/app/lib/views/defineView.d.ts +4 -0
  134. package/dist/app/lib/views/defineView.js +3 -0
  135. package/dist/app/lib/views/index.js +1 -0
  136. package/dist/app/server/index.d.ts +3 -0
  137. package/dist/app/server/index.js +3 -0
  138. package/dist/app/server/proxy-wp-admin.d.ts +3 -0
  139. package/dist/app/server/proxy-wp-admin.js +106 -0
  140. package/dist/app/server/render-ssr-page.d.ts +2 -0
  141. package/dist/app/server/render-ssr-page.js +22 -0
  142. package/dist/app/server/server-context.d.ts +34 -0
  143. package/dist/app/server/server-context.js +116 -0
  144. package/dist/app/server/utils/headers.d.ts +5 -0
  145. package/dist/app/server/utils/headers.js +28 -0
  146. package/dist/app/server/utils/index.html.d.ts +2 -0
  147. package/dist/app/server/utils/index.html.js +14 -0
  148. package/dist/app/server/utils/replace-host.d.ts +10 -0
  149. package/dist/app/server/utils/replace-host.js +61 -0
  150. package/dist/app/utils/query-client.d.ts +2 -0
  151. package/dist/app/utils/query-client.js +16 -0
  152. package/dist/app/utils/wp.d.ts +26 -0
  153. package/dist/node/cli/cli-mode.d.ts +10 -0
  154. package/dist/node/cli/cli-mode.js +12 -0
  155. package/dist/node/cli/cli-worker.d.ts +13 -0
  156. package/dist/node/cli/cli-worker.js +117 -0
  157. package/dist/node/cli/cli.js +197 -0
  158. package/dist/node/cli/display/CLIApp.d.ts +16 -0
  159. package/dist/node/cli/display/CLIApp.js +117 -0
  160. package/dist/node/cli/display/boot-cli-app.d.ts +2 -0
  161. package/dist/node/cli/display/boot-cli-app.js +10 -0
  162. package/{cli → dist/node/cli}/display/components/Fullscreen.d.ts +1 -1
  163. package/dist/node/cli/display/components/Fullscreen.js +24 -0
  164. package/dist/node/cli/display/components/LogEntries.d.ts +13 -0
  165. package/dist/node/cli/display/components/LogEntries.js +87 -0
  166. package/dist/node/cli/display/components/MenuItem.d.ts +6 -0
  167. package/dist/node/cli/display/components/MenuItem.js +11 -0
  168. package/dist/node/cli/display/components/TextInput.d.ts +44 -0
  169. package/dist/node/cli/display/components/TextInput.js +105 -0
  170. package/dist/node/cli/display/hooks/useManifest.d.ts +2 -0
  171. package/dist/node/cli/display/hooks/useManifest.js +8 -0
  172. package/dist/node/cli/display/hooks/useStatefulLog.d.ts +11 -0
  173. package/dist/node/cli/display/hooks/useStatefulLog.js +51 -0
  174. package/dist/node/cli/display/tools/BlockList.d.ts +2 -0
  175. package/dist/node/cli/display/tools/BlockList.js +10 -0
  176. package/dist/node/cli/display/tools/CreateBlock.d.ts +2 -0
  177. package/dist/node/cli/display/tools/CreateBlock.js +8 -0
  178. package/dist/node/cli/display/tools/cli-tool-list.d.ts +2 -0
  179. package/dist/node/cli/display/tools/cli-tool-list.js +23 -0
  180. package/dist/node/cli/display/tools/cli-tools.d.ts +26 -0
  181. package/dist/node/cli/display/tools/cli-tools.js +15 -0
  182. package/dist/node/cli/display/util/colors.d.ts +4 -0
  183. package/dist/node/cli/display/util/colors.js +63 -0
  184. package/dist/node/cli/version.d.ts +1 -0
  185. package/dist/node/cli/version.js +1 -0
  186. package/dist/node/compiler/build-vinxi.d.ts +8 -0
  187. package/dist/node/compiler/build-vinxi.js +37 -0
  188. package/dist/node/compiler/bundler.admin.d.ts +13 -0
  189. package/dist/node/compiler/bundler.admin.js +37 -0
  190. package/dist/node/compiler/bundler.frontend.d.ts +13 -0
  191. package/dist/node/compiler/bundler.frontend.js +37 -0
  192. package/dist/node/compiler/dev-server.d.ts +18 -0
  193. package/dist/node/compiler/dev-server.js +97 -0
  194. package/dist/node/compiler/get-vite-config.d.ts +19 -0
  195. package/dist/node/compiler/get-vite-config.js +184 -0
  196. package/dist/node/compiler/vinxi-app.d.ts +10 -0
  197. package/dist/node/compiler/vinxi-app.js +121 -0
  198. package/dist/node/compiler/vinxi-codegen.d.ts +12 -0
  199. package/dist/node/compiler/vinxi-codegen.js +408 -0
  200. package/dist/node/graphql/graphql-codegen.d.ts +30 -0
  201. package/dist/node/graphql/graphql-codegen.js +503 -0
  202. package/dist/node/graphql/graphql-schema-loader.d.ts +17 -0
  203. package/dist/node/graphql/graphql-schema-loader.js +91 -0
  204. package/dist/node/graphql/plugins/gql-plugin-files.d.ts +14 -0
  205. package/dist/node/graphql/plugins/gql-plugin-files.js +66 -0
  206. package/dist/node/graphql/plugins/gql-plugin-no-duplicates.d.ts +8 -0
  207. package/dist/node/graphql/plugins/gql-plugin-no-duplicates.js +10 -0
  208. package/dist/node/graphql/plugins/gql-plugin-queries.d.ts +8 -0
  209. package/dist/node/graphql/plugins/gql-plugin-queries.js +263 -0
  210. package/dist/node/graphql/query-files-loader.d.ts +26 -0
  211. package/dist/node/graphql/query-files-loader.js +54 -0
  212. package/dist/node/graphql/wp-info-query.d.ts +1 -0
  213. package/dist/node/graphql/wp-info-query.js +29 -0
  214. package/{config/config-schema.d.ts → dist/node/project/config.d.ts} +54 -38
  215. package/dist/node/project/config.js +138 -0
  216. package/dist/node/project/eddev-build-file.d.ts +10 -0
  217. package/dist/node/project/eddev-build-file.js +79 -0
  218. package/dist/node/project/env.d.ts +39 -0
  219. package/dist/node/project/env.js +77 -0
  220. package/dist/node/project/favicons.js +1 -0
  221. package/dist/node/project/manifest/block-manifest.d.ts +19 -0
  222. package/dist/node/project/manifest/block-manifest.js +206 -0
  223. package/dist/node/project/manifest/field-manifest.d.ts +17 -0
  224. package/dist/node/project/manifest/field-manifest.js +42 -0
  225. package/dist/node/project/manifest/manifest.d.ts +30 -0
  226. package/dist/node/project/manifest/manifest.js +105 -0
  227. package/dist/node/project/manifest/view-manifest.d.ts +19 -0
  228. package/dist/node/project/manifest/view-manifest.js +152 -0
  229. package/dist/node/project/manifest/widget-manifest.d.ts +17 -0
  230. package/dist/node/project/manifest/widget-manifest.js +42 -0
  231. package/dist/node/project/project.d.ts +58 -0
  232. package/dist/node/project/project.js +113 -0
  233. package/dist/node/project/wp-info.d.ts +32 -0
  234. package/dist/node/project/wp-info.js +32 -0
  235. package/dist/node/types/block-type.d.ts +92 -0
  236. package/dist/node/types/block-type.js +82 -0
  237. package/dist/node/types/view-type.d.ts +31 -0
  238. package/dist/node/types/view-type.js +53 -0
  239. package/dist/node/utils/format-zod-error.d.ts +3 -0
  240. package/dist/node/utils/format-zod-error.js +33 -0
  241. package/dist/node/utils/fs-codegen.d.ts +40 -0
  242. package/dist/node/utils/fs-codegen.js +97 -0
  243. package/dist/node/utils/fs.d.ts +106 -0
  244. package/dist/node/utils/fs.js +58 -0
  245. package/dist/node/utils/get-repo-info.d.ts +7 -0
  246. package/dist/node/utils/get-repo-info.js +21 -0
  247. package/dist/node/utils/helpers.d.ts +2 -0
  248. package/dist/node/utils/helpers.js +14 -0
  249. package/dist/node/utils/highlight-code.d.ts +10 -0
  250. package/dist/node/utils/highlight-code.js +30 -0
  251. package/dist/node/utils/is-deploying.d.ts +4 -0
  252. package/dist/node/utils/is-deploying.js +6 -0
  253. package/dist/node/utils/report-builder.d.ts +9 -0
  254. package/dist/node/utils/report-builder.js +51 -0
  255. package/dist/node/utils/self-signed-cert.d.ts +4 -0
  256. package/dist/node/utils/self-signed-cert.js +35 -0
  257. package/dist/node/utils/stateful-log.d.ts +65 -0
  258. package/dist/node/utils/stateful-log.js +223 -0
  259. package/dist/node/utils/ts-export-extractor.d.ts +9 -0
  260. package/dist/node/utils/ts-export-extractor.js +71 -0
  261. package/dist/node/utils/watch-file-tree.d.ts +11 -0
  262. package/dist/node/utils/watch-file-tree.js +58 -0
  263. package/package.json +121 -102
  264. package/stitches-archive/config.d.ts +210 -0
  265. package/stitches-archive/css-util.d.ts +119 -0
  266. package/stitches-archive/css.d.ts +9797 -0
  267. package/stitches-archive/index.d.mts +144 -0
  268. package/stitches-archive/index.d.ts +82 -0
  269. package/stitches-archive/index.mjs +2 -0
  270. package/stitches-archive/stitches.d.ts +288 -0
  271. package/stitches-archive/styled-component.d.ts +163 -0
  272. package/stitches-archive/theme.d.ts +43 -0
  273. package/stitches-archive/util.d.ts +32 -0
  274. package/tsconfig.app.json +20 -0
  275. package/tsconfig.json +2 -104
  276. package/tsconfig.node.json +20 -0
  277. package/types.app.d.ts +22 -0
  278. package/types.app.internal.d.ts +13 -0
  279. package/types.env.d.ts +16 -0
  280. package/types.meta.d.ts +319 -0
  281. package/types.node.d.ts +3 -0
  282. package/admin/components/FileWell.d.ts +0 -8
  283. package/admin/components/FileWell.js +0 -189
  284. package/admin/components/ImageWell.d.ts +0 -9
  285. package/admin/components/ImageWell.js +0 -209
  286. package/admin/defineField.js +0 -7
  287. package/admin/defineWidget.js +0 -10
  288. package/admin/index.d.ts +0 -4
  289. package/admin/index.js +0 -16
  290. package/admin/installFieldTypes.js +0 -71
  291. package/admin/runWidgets.js +0 -55
  292. package/admin/selectMedia.d.ts +0 -31
  293. package/admin/selectMedia.js +0 -9
  294. package/blocks/ContentBlocks.d.ts +0 -40
  295. package/blocks/ContentBlocks.js +0 -125
  296. package/blocks/ErrorBoundaryEditor.js +0 -64
  297. package/blocks/ErrorBoundaryFrontend.js +0 -69
  298. package/blocks/InspectorControls.d.ts +0 -2
  299. package/blocks/InspectorControls.js +0 -13
  300. package/blocks/blockAttributes.d.ts +0 -20
  301. package/blocks/blockAttributes.js +0 -81
  302. package/blocks/defineBlock.d.ts +0 -2
  303. package/blocks/defineBlock.js +0 -7
  304. package/blocks/index.d.ts +0 -5
  305. package/blocks/index.js +0 -23
  306. package/blocks/inlineEditing.d.ts +0 -32
  307. package/blocks/inlineEditing.js +0 -141
  308. package/blocks/installGutenbergHooks.d.ts +0 -2
  309. package/blocks/installGutenbergHooks.js +0 -211
  310. package/build/babel/plugin-name-defined-components.d.ts +0 -7
  311. package/build/babel/plugin-name-defined-components.js +0 -47
  312. package/build/build-favicon.d.ts +0 -1
  313. package/build/build-favicon.js +0 -71
  314. package/build/clean.d.ts +0 -1
  315. package/build/clean.js +0 -60
  316. package/build/create-codegen-worker.d.ts +0 -3
  317. package/build/create-codegen-worker.js +0 -71
  318. package/build/create-serverless-dev-worker.d.ts +0 -3
  319. package/build/create-serverless-dev-worker.js +0 -99
  320. package/build/create-webpack-worker.d.ts +0 -3
  321. package/build/create-webpack-worker.js +0 -64
  322. package/build/file-tree.d.ts +0 -5
  323. package/build/file-tree.js +0 -45
  324. package/build/get-webpack-config.d.ts +0 -3
  325. package/build/get-webpack-config.js +0 -426
  326. package/build/graphql-codegen/graphql-codegen-blocks.d.ts +0 -1
  327. package/build/graphql-codegen/graphql-codegen-blocks.js +0 -7
  328. package/build/graphql-codegen/graphql-codegen-files.js +0 -64
  329. package/build/graphql-codegen/graphql-codegen-no-duplicates.js +0 -13
  330. package/build/graphql-codegen/graphql-codegen-queries.d.ts +0 -1
  331. package/build/graphql-codegen/graphql-codegen-queries.js +0 -248
  332. package/build/manifests/manifest-blocks.d.ts +0 -12
  333. package/build/manifests/manifest-blocks.js +0 -61
  334. package/build/manifests/manifest-fields.d.ts +0 -12
  335. package/build/manifests/manifest-fields.js +0 -42
  336. package/build/manifests/manifest-views.d.ts +0 -12
  337. package/build/manifests/manifest-views.js +0 -49
  338. package/build/manifests/manifest-widgets.d.ts +0 -12
  339. package/build/manifests/manifest-widgets.js +0 -42
  340. package/build/manifests/manifest.d.ts +0 -11
  341. package/build/manifests/manifest.js +0 -100
  342. package/build/reporter.d.ts +0 -12
  343. package/build/reporter.js +0 -102
  344. package/build/serverless/create-next-app.d.ts +0 -9
  345. package/build/serverless/create-next-app.js +0 -536
  346. package/build/state/codegen-state.d.ts +0 -32
  347. package/build/state/codegen-state.js +0 -2
  348. package/build/state/compiler-state.d.ts +0 -49
  349. package/build/state/compiler-state.js +0 -2
  350. package/build/state/serverless-state.d.ts +0 -26
  351. package/build/state/serverless-state.js +0 -2
  352. package/build/workers/codegen-worker-script.d.ts +0 -2
  353. package/build/workers/codegen-worker-script.js +0 -624
  354. package/build/workers/serverless-worker-dev-script.d.ts +0 -1
  355. package/build/workers/serverless-worker-dev-script.js +0 -21
  356. package/build/workers/webpack-worker-script.d.ts +0 -2
  357. package/build/workers/webpack-worker-script.js +0 -171
  358. package/cli/build.dev.d.ts +0 -7
  359. package/cli/build.dev.js +0 -136
  360. package/cli/build.prod.d.ts +0 -5
  361. package/cli/build.prod.js +0 -107
  362. package/cli/cli.js +0 -90
  363. package/cli/display/components/BundleDisplay.d.ts +0 -5
  364. package/cli/display/components/BundleDisplay.js +0 -56
  365. package/cli/display/components/CodegenDisplay.d.ts +0 -5
  366. package/cli/display/components/CodegenDisplay.js +0 -62
  367. package/cli/display/components/DevCLIDisplay.d.ts +0 -12
  368. package/cli/display/components/DevCLIDisplay.js +0 -42
  369. package/cli/display/components/Fullscreen.js +0 -39
  370. package/cli/display/components/ServerlessDisplay.d.ts +0 -8
  371. package/cli/display/components/ServerlessDisplay.js +0 -68
  372. package/cli/display/components/StatusIcon.d.ts +0 -5
  373. package/cli/display/components/StatusIcon.js +0 -9
  374. package/cli/preinstall.d.ts +0 -1
  375. package/cli/preinstall.js +0 -19
  376. package/cli/setup.d.ts +0 -1
  377. package/cli/setup.js +0 -90
  378. package/components/AdminBar.d.ts +0 -1
  379. package/components/AdminBar.js +0 -9
  380. package/components/BrowserRouter.js +0 -155
  381. package/components/InlinePage.d.ts +0 -11
  382. package/components/InlinePage.js +0 -70
  383. package/components/NextRouter.d.ts +0 -9
  384. package/components/NextRouter.js +0 -45
  385. package/components/index.d.ts +0 -2
  386. package/components/index.js +0 -14
  387. package/config/config-schema.js +0 -38
  388. package/config/create-schema-file.d.ts +0 -1
  389. package/config/create-schema-file.js +0 -20
  390. package/config/get-config.d.ts +0 -78
  391. package/config/get-config.js +0 -32
  392. package/config/index.d.ts +0 -2
  393. package/config/index.js +0 -14
  394. package/config/parse-config.d.ts +0 -51
  395. package/config/parse-config.js +0 -8
  396. package/config/print-zod-errors.d.ts +0 -2
  397. package/config/print-zod-errors.js +0 -14
  398. package/dev-ui/components/BreakpointColumnHeader.d.ts +0 -10
  399. package/dev-ui/components/BreakpointColumnHeader.js +0 -47
  400. package/dev-ui/components/BreakpointIndicator.js +0 -139
  401. package/dev-ui/components/DevUI.js +0 -28
  402. package/dev-ui/components/Launcher.d.ts +0 -98
  403. package/dev-ui/components/Launcher.js +0 -94
  404. package/dev-ui/components/PanelWrapper.d.ts +0 -8
  405. package/dev-ui/components/PanelWrapper.js +0 -37
  406. package/dev-ui/components/ResponsiveLerpControl.d.ts +0 -7
  407. package/dev-ui/components/ResponsiveLerpControl.js +0 -176
  408. package/dev-ui/components/ResponsiveScaleEditor.d.ts +0 -25
  409. package/dev-ui/components/ResponsiveScaleEditor.js +0 -238
  410. package/dev-ui/components/atoms/Button.d.ts +0 -47
  411. package/dev-ui/components/atoms/Button.js +0 -67
  412. package/dev-ui/components/atoms/Dropdown.d.ts +0 -13
  413. package/dev-ui/components/atoms/Dropdown.js +0 -50
  414. package/dev-ui/components/atoms/NumberField.d.ts +0 -11
  415. package/dev-ui/components/atoms/NumberField.js +0 -111
  416. package/dev-ui/components/atoms/Spacer.d.ts +0 -42
  417. package/dev-ui/components/atoms/Spacer.js +0 -8
  418. package/dev-ui/components/atoms/Text.d.ts +0 -45
  419. package/dev-ui/components/atoms/Text.js +0 -39
  420. package/dev-ui/components/atoms/ToggleButton.d.ts +0 -8
  421. package/dev-ui/components/atoms/ToggleButton.js +0 -41
  422. package/dev-ui/components/atoms/Tooltip.d.ts +0 -9
  423. package/dev-ui/components/atoms/Tooltip.js +0 -66
  424. package/dev-ui/components/panels/AppDataDebugger.d.ts +0 -1
  425. package/dev-ui/components/panels/AppDataDebugger.js +0 -29
  426. package/dev-ui/components/panels/ColorEditor.d.ts +0 -1
  427. package/dev-ui/components/panels/ColorEditor.js +0 -128
  428. package/dev-ui/components/panels/PageDataDebugger.d.ts +0 -1
  429. package/dev-ui/components/panels/PageDataDebugger.js +0 -30
  430. package/dev-ui/components/panels/QueryDebugger.d.ts +0 -1
  431. package/dev-ui/components/panels/QueryDebugger.js +0 -46
  432. package/dev-ui/components/panels/SpacingEditor.d.ts +0 -1
  433. package/dev-ui/components/panels/SpacingEditor.js +0 -88
  434. package/dev-ui/components/panels/TypographyEditor.d.ts +0 -1
  435. package/dev-ui/components/panels/TypographyEditor.js +0 -97
  436. package/dev-ui/hooks/useBreakpoint.d.ts +0 -11
  437. package/dev-ui/hooks/useBreakpoint.js +0 -59
  438. package/dev-ui/hooks/usePersistState.js +0 -36
  439. package/dev-ui/hooks/useStylesheet.d.ts +0 -4
  440. package/dev-ui/hooks/useStylesheet.js +0 -31
  441. package/dev-ui/icons.d.ts +0 -15
  442. package/dev-ui/icons.js +0 -30
  443. package/dev-ui/index.d.ts +0 -1
  444. package/dev-ui/index.js +0 -13
  445. package/dev-ui/loader.js +0 -44
  446. package/dev-ui/panels.d.ts +0 -11
  447. package/dev-ui/panels.js +0 -47
  448. package/dev-ui/theme.d.ts +0 -151
  449. package/dev-ui/theme.js +0 -50
  450. package/dynamic/dynamic-component.d.ts +0 -10
  451. package/dynamic/dynamic-component.js +0 -8
  452. package/dynamic/index.d.ts +0 -1
  453. package/dynamic/index.js +0 -13
  454. package/entry/Root.d.ts +0 -3
  455. package/entry/Root.js +0 -56
  456. package/entry/entry.admin.dev.d.ts +0 -1
  457. package/entry/entry.admin.dev.js +0 -26
  458. package/entry/entry.admin.prod.d.ts +0 -1
  459. package/entry/entry.admin.prod.js +0 -16
  460. package/entry/entry.monolith.dev.d.ts +0 -6
  461. package/entry/entry.monolith.dev.js +0 -19
  462. package/entry/entry.monolith.prod.d.ts +0 -6
  463. package/entry/entry.monolith.prod.js +0 -18
  464. package/entry/entry.publicPath.js +0 -6
  465. package/gravityforms/index.d.ts +0 -2
  466. package/gravityforms/index.js +0 -14
  467. package/gravityforms/types.d.ts +0 -140
  468. package/gravityforms/types.js +0 -2
  469. package/gravityforms/useGravityForm.d.ts +0 -30
  470. package/gravityforms/useGravityForm.js +0 -292
  471. package/hooks/index.js +0 -15
  472. package/hooks/queryUtils.d.ts +0 -63
  473. package/hooks/queryUtils.js +0 -281
  474. package/hooks/useAppData.d.ts +0 -10
  475. package/hooks/useAppData.js +0 -37
  476. package/hooks/usePageLoad.js +0 -11
  477. package/hooks/useQuery.d.ts +0 -1
  478. package/hooks/useQuery.js +0 -10
  479. package/hooks/useQueryDebug.js +0 -21
  480. package/hooks/useRPC.d.ts +0 -12
  481. package/hooks/useRPC.js +0 -20
  482. package/index.d.ts +0 -1
  483. package/index.js +0 -5
  484. package/routing/index.d.ts +0 -1
  485. package/routing/index.js +0 -13
  486. package/routing/remoteProps.d.ts +0 -22
  487. package/routing/remoteProps.js +0 -103
  488. package/routing/routing.d.ts +0 -96
  489. package/routing/routing.js +0 -442
  490. package/routing/updateEditLink.d.ts +0 -1
  491. package/routing/updateEditLink.js +0 -12
  492. package/routing/updateHeadTags.d.ts +0 -2
  493. package/routing/updateHeadTags.js +0 -11
  494. package/serverless/define-api.d.ts +0 -2
  495. package/serverless/define-api.js +0 -66
  496. package/serverless/define-rpc-router.d.ts +0 -6
  497. package/serverless/define-rpc-router.js +0 -35
  498. package/serverless/error-codes.d.ts +0 -2
  499. package/serverless/error-codes.js +0 -14
  500. package/serverless/index.d.ts +0 -5
  501. package/serverless/index.js +0 -18
  502. package/serverless/rpc-provider.d.ts +0 -1
  503. package/serverless/rpc-provider.js +0 -5
  504. package/serverless-template/README.md +0 -34
  505. package/serverless-template/_utils/PageMeta.tsx +0 -44
  506. package/serverless-template/_utils/ed-config.ts +0 -5
  507. package/serverless-template/_utils/fetch-wordpress-props.ts +0 -62
  508. package/serverless-template/_utils/fetch-wp.ts +0 -34
  509. package/serverless-template/_utils/swr.ts +0 -43
  510. package/serverless-template/global.d.ts +0 -15
  511. package/serverless-template/next-env.d.ts +0 -3
  512. package/serverless-template/next.config.js +0 -119
  513. package/serverless-template/null.ts +0 -1
  514. package/serverless-template/package.json +0 -21
  515. package/serverless-template/pages/404.tsx +0 -12
  516. package/serverless-template/pages/[...slug].tsx +0 -35
  517. package/serverless-template/pages/_app.tsx +0 -55
  518. package/serverless-template/pages/_document.tsx +0 -65
  519. package/serverless-template/pages/api/rest/[...method].ts +0 -59
  520. package/serverless-template/pages/api/robots.ts +0 -49
  521. package/serverless-template/pages/api/sitemap/[...sitemap].ts +0 -56
  522. package/serverless-template/pages/api/trpc/[...trpc].ts +0 -41
  523. package/serverless-template/pages/index.tsx +0 -15
  524. package/serverless-template/tsconfig.json +0 -39
  525. package/style/createStitches.d.ts +0 -1058
  526. package/style/createStitches.js +0 -443
  527. package/style/index.js +0 -13
  528. package/utils/Observable.d.ts +0 -11
  529. package/utils/Observable.js +0 -34
  530. package/utils/getRepoName.d.ts +0 -4
  531. package/utils/getRepoName.js +0 -30
  532. package/utils/merge-refs.d.ts +0 -2
  533. package/utils/merge-refs.js +0 -17
  534. package/utils/promptIfRepoNameIncorrect.d.ts +0 -1
  535. package/utils/promptIfRepoNameIncorrect.js +0 -72
  536. package/utils/refreshOverlayInterop.d.ts +0 -4
  537. package/utils/refreshOverlayInterop.js +0 -12
  538. package/utils/reportErrorStack.d.ts +0 -7
  539. package/utils/reportErrorStack.js +0 -13
  540. package/utils/serverlessAppContext.d.ts +0 -3
  541. package/utils/serverlessAppContext.js +0 -6
  542. package/utils/updateEnvFile.d.ts +0 -1
  543. package/utils/updateEnvFile.js +0 -76
  544. package/utils/useObservable.d.ts +0 -2
  545. package/utils/useObservable.js +0 -12
  546. package/views/defineView.d.ts +0 -2
  547. package/views/defineView.js +0 -7
  548. package/views/index.js +0 -13
  549. /package/{admin → dist/app/lib/admin}/installFieldTypes.d.ts +0 -0
  550. /package/{admin → dist/app/lib/admin}/runWidgets.d.ts +0 -0
  551. /package/{dev-ui → dist/app/lib/devtools}/components/BreakpointIndicator.d.ts +0 -0
  552. /package/{dev-ui → dist/app/lib/devtools}/hooks/usePersistState.d.ts +0 -0
  553. /package/{dev-ui → dist/app/lib/devtools}/loader.d.ts +0 -0
  554. /package/{style → dist/app/lib/legacy-stitches}/index.d.ts +0 -0
  555. /package/{build/graphql-codegen/graphql-codegen-files.d.ts → dist/app/lib/routing/types.js} +0 -0
  556. /package/{views → dist/app/lib/views}/index.d.ts +0 -0
  557. /package/{build/graphql-codegen/graphql-codegen-no-duplicates.d.ts → dist/app/utils/wp.js} +0 -0
  558. /package/{cli → dist/node/cli}/cli.d.ts +0 -0
  559. /package/{entry/entry.publicPath.d.ts → dist/node/project/favicons.d.ts} +0 -0
@@ -0,0 +1,138 @@
1
+ import { objFormat } from "obj-console";
2
+ import path from "path";
3
+ import { z } from "zod";
4
+ import { zodToJsonSchema } from "zod-to-json-schema";
5
+ import { cliMode } from "../cli/cli-mode.js";
6
+ import { fs } from "../utils/fs.js";
7
+ import { isDeploying } from "../utils/is-deploying.js";
8
+ import { projectLog as console } from "./project.js";
9
+ export const EDConfigSchema = z.object({
10
+ $schema: z.string().optional(),
11
+ version: z.enum(["1", "2"]).refine((v) => v === "2", { message: "Only version 2 is supported" }),
12
+ legacyMetadata: z
13
+ .boolean()
14
+ .optional()
15
+ .default(false)
16
+ .describe("Whether to use legacy comments or exported JSON for block and view metadata"),
17
+ legacyStitches: z.boolean().optional().default(true).describe("Whether this site is using Stitches"),
18
+ tracking: z
19
+ .object({
20
+ tagManagerID: z.string().optional(),
21
+ ga: z
22
+ .object({
23
+ trackingID: z.string().optional(),
24
+ version: z.enum(["3", "4"]),
25
+ })
26
+ .optional(),
27
+ })
28
+ .optional(),
29
+ serverless: z.object({
30
+ enabled: z.boolean().default(true).describe("Whether to deploy the site as a serverless app"),
31
+ uploads: z
32
+ .enum(["proxy", "remote"])
33
+ .describe("Whether to proxy plugin assets or serve them from the serverless endpoint.\nDefault is `remote`, but `proxy` can be used to hide the CMS origin, but may incur additional bandwidth costs."),
34
+ plugins: z
35
+ .enum(["proxy", "remote"])
36
+ .default("remote")
37
+ .describe("Whether to proxy plugin assets or serve them from the serverless endpoint.\nDefault is `remote`, but `proxy` can be used to hide the CMS origin."),
38
+ // theme: z.enum(["proxy", "copy", "remote"]),
39
+ themeAssets: z
40
+ .array(z.string())
41
+ .optional()
42
+ .default(["assets"])
43
+ .describe('Files to include in a serverless deployment.\nDefault is `["assets"]`'),
44
+ apiOnly: z.boolean().optional().default(false).describe("Whether to deploy only the API, not the frontend"),
45
+ endpoints: z
46
+ .record(z.string(), z.string())
47
+ .describe("A map of WordPress hostnames -> serverless hostnames. You can use `*` as a wildcard for the key.\n\nFor example, `{'cms.ed.studio': 'ed.studio'}` tells the WordPress frontend where it can find any serverless API endpoints."),
48
+ defaultRevalidate: z.number().optional(),
49
+ defaultRevalidateQueries: z.number().optional(),
50
+ }),
51
+ cache: z
52
+ .record(z.string(), z.object({
53
+ props: z.number(),
54
+ queries: z.number(),
55
+ }))
56
+ .optional(),
57
+ devUI: z.enum(["disabled", "enabled"]).default("enabled"),
58
+ });
59
+ export class Configurator {
60
+ project;
61
+ config;
62
+ constructor(project) {
63
+ this.project = project;
64
+ }
65
+ static async create(project) {
66
+ const config = new Configurator(project);
67
+ await config.load();
68
+ return config;
69
+ }
70
+ async load() {
71
+ console.verbose("Booting up configurator...");
72
+ if (!cliMode.readonly) {
73
+ await this.ensureConfigSchema();
74
+ }
75
+ this.config = await this.loadConfig(cliMode.exitOnValidationError);
76
+ }
77
+ async ensureConfigSchema() {
78
+ if (isDeploying())
79
+ return;
80
+ console.verbose("Ensuring config schema exists...");
81
+ const schemaPath = path.resolve(this.project.rootDir, ".ed.config.schema.json");
82
+ const didChange = await fs.writeJsonIfUnchanged(schemaPath, zodToJsonSchema(EDConfigSchema)).catch((err) => {
83
+ console.error("Failed to write config schema file:\n", err);
84
+ });
85
+ if (didChange) {
86
+ console.verbose("Updated config schema");
87
+ }
88
+ }
89
+ async loadConfig(exitOnError) {
90
+ let loaded = await fs.readJson(this.project.configFile).catch((err) => {
91
+ console.error("Failed to read config file:\n");
92
+ throw err;
93
+ });
94
+ console.verbose("Raw Config:\n", loaded);
95
+ const result = EDConfigSchema.safeParse(loaded);
96
+ if (result.success) {
97
+ console.verbose("Config parsed successfully:\n", result.data);
98
+ if (cliMode.detailed) {
99
+ if (!result.data) {
100
+ console.fail("Config could not be loaded");
101
+ return;
102
+ }
103
+ else {
104
+ console.startGroup("Config:");
105
+ console.success("Loaded ed.config.json successfully");
106
+ console.log(Configurator.describeConfig(result.data, this.project));
107
+ console.endGroup();
108
+ }
109
+ }
110
+ delete result.data.$schema;
111
+ return result.data;
112
+ }
113
+ else {
114
+ this.reportError(result.error);
115
+ this.config = undefined;
116
+ if (exitOnError) {
117
+ console.flush();
118
+ process.exit(0);
119
+ }
120
+ }
121
+ }
122
+ reportError(error) {
123
+ console.startGroup(`Validation failed for '${this.project.configFile}'`, "error");
124
+ console.zodError(error);
125
+ console.help(`Please open '${this.project.configFile}' and look for the validation errors.`);
126
+ console.endGroup();
127
+ }
128
+ static describeConfig(config, project) {
129
+ // TODO: Make this human-readable!
130
+ return objFormat(config, {
131
+ unfoldDepth: 2,
132
+ omitBrackets: true,
133
+ quote: "",
134
+ omitEolCommas: true,
135
+ padding: " ",
136
+ });
137
+ }
138
+ }
@@ -0,0 +1,10 @@
1
+ import type { Project } from "./project.js";
2
+ /**
3
+ * This class writes theme info to the theme-manifest.json file, which is then consumed by PHP code.
4
+ */
5
+ export declare class BuildInfoWriter {
6
+ project: Project;
7
+ constructor(project: Project);
8
+ watch(): void;
9
+ write(): Promise<void>;
10
+ }
@@ -0,0 +1,79 @@
1
+ import { join } from "path";
2
+ import { fs } from "../utils/fs.js";
3
+ import { kebabCase, snakeCase } from "change-case-all";
4
+ /**
5
+ * This class writes theme info to the theme-manifest.json file, which is then consumed by PHP code.
6
+ */
7
+ export class BuildInfoWriter {
8
+ project;
9
+ constructor(project) {
10
+ this.project = project;
11
+ }
12
+ watch() {
13
+ this.project.blocks.subscribeFuture((blocks) => {
14
+ this.write();
15
+ });
16
+ this.project.views.subscribeFuture((blocks) => {
17
+ this.write();
18
+ });
19
+ }
20
+ async write() {
21
+ const [blockManifest, viewManifest] = await Promise.all([this.project.blocks.get(), this.project.views.get()]);
22
+ const toAcfBlockName = (name) => {
23
+ if (blockManifest.blocks[name]?.acfName) {
24
+ return blockManifest.blocks[name].acfName;
25
+ }
26
+ return name;
27
+ };
28
+ const data = {
29
+ blocks: Object.values(blockManifest.blocks)
30
+ .sort((a, b) => b.fileName.localeCompare(a.fileName))
31
+ .map((block) => {
32
+ // See https://github.com/WordPress/wordpress-develop/blob/6.4/src/wp-includes/class-wp-block-type.php#L18-L541
33
+ return {
34
+ id: block.slug,
35
+ acfName: block.acfName,
36
+ graphqlFieldName: snakeCase(block.slug.replace("/", "-")),
37
+ name: kebabCase(block.slug.replace("/", "-")),
38
+ title: block.title,
39
+ category: block.category,
40
+ types: block.types,
41
+ templates: block.templates,
42
+ parent: block.parent?.length > 0 ? block.parent.map(toAcfBlockName) : [],
43
+ ancestor: block.ancestors?.length > 0 ? block.ancestors.map(toAcfBlockName) : undefined,
44
+ icon: block.icon ? kebabCase(block.icon) : undefined,
45
+ description: block.description,
46
+ keywords: block.keywords,
47
+ tags: block.tags,
48
+ flags: block.flags,
49
+ childTags: block.childTags?.length ? block.childTags : undefined,
50
+ allowed_blocks: block.childBlocks?.length ? block.childBlocks.map(toAcfBlockName) : undefined,
51
+ supports: {
52
+ align: false,
53
+ align_text: false,
54
+ align_center: false,
55
+ multiple: block.allowMultiple ? true : false,
56
+ mode: block.mode ?? "preview",
57
+ customClassName: false,
58
+ inserter: block.inserter,
59
+ },
60
+ mode: block.mode ?? "preview",
61
+ canCache: block.cache,
62
+ frontendMode: block.frontendMode,
63
+ postmeta: block.postMetaBlock,
64
+ };
65
+ }),
66
+ templates: Object.values(viewManifest.views)
67
+ .filter((view) => view.isCustomTemplate)
68
+ .map((view) => {
69
+ return {
70
+ postType: view.postType,
71
+ fileName: view.fileName,
72
+ cache: view.cache,
73
+ title: view.title,
74
+ };
75
+ }),
76
+ };
77
+ fs.writeJsonIfUnchanged(join(this.project.rootDir, "ed.dist.json"), data);
78
+ }
79
+ }
@@ -0,0 +1,39 @@
1
+ import { z } from "zod";
2
+ export type ProjectEnvMap = z.infer<typeof ProjectEnvSchema>;
3
+ export declare const fields: {
4
+ readonly DEBUG_GRAPHQL_URL: z.ZodString;
5
+ readonly SITE_URL: z.ZodString;
6
+ readonly DEV_HOT_PORT: z.ZodEffects<z.ZodEffects<z.ZodDefault<z.ZodString>, string | number, string | undefined>, number, string | undefined>;
7
+ readonly DEV_SERVERLESS_PORT: z.ZodEffects<z.ZodEffects<z.ZodDefault<z.ZodString>, string | number, string | undefined>, number, string | undefined>;
8
+ };
9
+ export declare const ProjectEnvSchema: z.ZodObject<{
10
+ readonly DEBUG_GRAPHQL_URL: z.ZodOptional<z.ZodString>;
11
+ readonly SITE_URL: z.ZodOptional<z.ZodString>;
12
+ readonly DEV_HOT_PORT: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodDefault<z.ZodString>, string | number, string | undefined>, number, string | undefined>>;
13
+ readonly DEV_SERVERLESS_PORT: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodDefault<z.ZodString>, string | number, string | undefined>, number, string | undefined>>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ DEBUG_GRAPHQL_URL?: string | undefined;
16
+ SITE_URL?: string | undefined;
17
+ DEV_HOT_PORT?: number | undefined;
18
+ DEV_SERVERLESS_PORT?: number | undefined;
19
+ }, {
20
+ DEBUG_GRAPHQL_URL?: string | undefined;
21
+ SITE_URL?: string | undefined;
22
+ DEV_HOT_PORT?: string | undefined;
23
+ DEV_SERVERLESS_PORT?: string | undefined;
24
+ }>;
25
+ export type ProjectEnvKey = keyof typeof fields;
26
+ export declare const ProjectEnvUtils: {
27
+ /**
28
+ * Ensure environment variables are in the correct syntax
29
+ * All environment variables are optional
30
+ */
31
+ parse(exitOnFail: boolean): {
32
+ valid: true;
33
+ env: ProjectEnvMap;
34
+ } | {
35
+ valid: false;
36
+ };
37
+ getSafe<T extends ProjectEnvKey>(key: T): Required<ProjectEnvMap[T]> | undefined;
38
+ get<T extends ProjectEnvKey>(key: T, cons?: import("../utils/stateful-log.js").StatefulLog<import("./project.js").Project>): z.infer<(typeof fields)[T]>;
39
+ };
@@ -0,0 +1,77 @@
1
+ import { z } from "zod";
2
+ import { cliMode } from "../cli/cli-mode.js";
3
+ import { projectLog as console } from "./project.js";
4
+ import { formatZodError } from "../utils/format-zod-error.js";
5
+ const portNumber = z
6
+ .string()
7
+ .default("0")
8
+ .transform((val) => (val === "0" ? Math.floor(8000 + Math.random() * 1000) : val))
9
+ .transform((val) => (typeof val === "string" ? parseInt(val) : val));
10
+ export const fields = {
11
+ DEBUG_GRAPHQL_URL: z
12
+ .string()
13
+ .url()
14
+ .describe("The GraphQL endpoint served by GraphQL, needed for Typescript code generation. It should be automatically set when running running WordPress with the stack configured correctly. If this is a new site, you may need to refresh the admin panel."),
15
+ SITE_URL: z.string().url().describe("The URL of the site"),
16
+ DEV_HOT_PORT: portNumber,
17
+ DEV_SERVERLESS_PORT: portNumber,
18
+ };
19
+ export const ProjectEnvSchema = z.object(fields).partial();
20
+ export const ProjectEnvUtils = {
21
+ /**
22
+ * Ensure environment variables are in the correct syntax
23
+ * All environment variables are optional
24
+ */
25
+ parse(exitOnFail) {
26
+ const result = ProjectEnvSchema.safeParse(process.env);
27
+ if (result.success) {
28
+ if (cliMode.verbose) {
29
+ console.success("No formatting issues with provided environment variables");
30
+ }
31
+ for (let k in result.data) {
32
+ process.env[k] = result.data[k];
33
+ }
34
+ return {
35
+ valid: true,
36
+ env: result.data,
37
+ };
38
+ }
39
+ else {
40
+ const error = result.error;
41
+ if (error) {
42
+ console.error("Failed to validate some environment variables variables:\n", error);
43
+ }
44
+ if (exitOnFail) {
45
+ console.flush();
46
+ process.exit(1);
47
+ }
48
+ return {
49
+ valid: false,
50
+ };
51
+ }
52
+ },
53
+ getSafe(key) {
54
+ const result = fields[key].safeParse(process.env[key]);
55
+ if (result.success) {
56
+ return result.data;
57
+ }
58
+ else {
59
+ return undefined;
60
+ }
61
+ },
62
+ get(key, cons = console) {
63
+ const schema = fields[key];
64
+ const result = schema.safeParse(process.env[key]);
65
+ if (result.success) {
66
+ return result.data;
67
+ }
68
+ else {
69
+ cons.error(`Missing or invalid environment variable:\n"${key}"\n${formatZodError(result.error)}`);
70
+ if (schema.description) {
71
+ cons.info(`About "${key}":\n` + schema.description + "\n");
72
+ }
73
+ cons.flush();
74
+ process.exit(1);
75
+ }
76
+ },
77
+ };
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,19 @@
1
+ import { BlockMetadata, BlockMetadataConstructor } from "../../types/block-type.js";
2
+ import { Project } from "../project.js";
3
+ export type BlockManifest = {
4
+ blocks: {
5
+ [K: string]: BlockMetadata;
6
+ };
7
+ validationMessages: {
8
+ blockKey: string;
9
+ message: string;
10
+ severity: "error" | "warning";
11
+ }[];
12
+ };
13
+ type BlockLoadResult = {
14
+ data: BlockMetadataConstructor | null;
15
+ error?: string;
16
+ };
17
+ export type BlockManifestGenerator = ReturnType<typeof loadBlockManifest>;
18
+ export declare function loadBlockManifest(project: Project): import("./manifest.js").ManifestGenerator<BlockLoadResult, BlockManifest>;
19
+ export {};
@@ -0,0 +1,206 @@
1
+ import { camelCase, kebabCase } from "change-case-all";
2
+ import { cliMode } from "../../cli/cli-mode.js";
3
+ import { BlockMetaSchema } from "../../types/block-type.js";
4
+ import { metaExtractor } from "../../utils/ts-export-extractor.js";
5
+ import { formatZodError } from "../../utils/format-zod-error.js";
6
+ import { fs } from "../../utils/fs.js";
7
+ import { createManifestGenerator } from "./manifest.js";
8
+ export function loadBlockManifest(project) {
9
+ return createManifestGenerator({
10
+ baseDir: project.rootDir,
11
+ pattern: "blocks/**/*.tsx",
12
+ watch: cliMode.watch,
13
+ async generateManifest(entries) {
14
+ let result = {
15
+ blocks: {},
16
+ validationMessages: [],
17
+ };
18
+ Object.entries(entries)
19
+ .sort(([b1], [b2]) => {
20
+ return b1.localeCompare(b2);
21
+ })
22
+ .forEach(([key, entry]) => {
23
+ const { data, error: initialError } = entry.value;
24
+ // Add the block to the manifest, even though it might be broken.
25
+ // Any broken blocks will have warnings/errors attached.
26
+ result.blocks[key] = data;
27
+ // If there was an error loading the block, add it to the manifest
28
+ if (initialError) {
29
+ result.validationMessages.push({
30
+ blockKey: key,
31
+ message: initialError,
32
+ severity: "error",
33
+ });
34
+ return;
35
+ }
36
+ else {
37
+ // Validate the structure of the metadata
38
+ const parsed = BlockMetaSchema.safeParse(data);
39
+ if (parsed.success) {
40
+ // The block metadata matches our schema, and may have been transformed
41
+ result.blocks[key] = parsed.data;
42
+ }
43
+ else {
44
+ result.validationMessages.push({
45
+ blockKey: key,
46
+ message: "Metadata validation error:\n" + formatZodError(parsed.error),
47
+ severity: "warning",
48
+ });
49
+ }
50
+ }
51
+ });
52
+ return result;
53
+ },
54
+ getKey(path) {
55
+ // Ignore files which start with an underscore
56
+ if (path.startsWith("_core"))
57
+ return null;
58
+ // Strip the blocks folder name + extension
59
+ return path.replace(/\.tsx$/, "").replace(/^blocks\//, "");
60
+ },
61
+ onFileChange(path) {
62
+ metaExtractor.invalidate(path);
63
+ },
64
+ async loadValue(path, key) {
65
+ const contents = await fs.readFile(path, "utf8");
66
+ // Start with a default value
67
+ let metadata = {
68
+ acfName: `acf/${key.toLowerCase().replace(/\//g, "-").replace("_", "")}`,
69
+ fileName: path,
70
+ slug: key,
71
+ graphqlFieldName: key
72
+ .split("/")
73
+ .map((s) => camelCase(s))
74
+ .join("_"),
75
+ title: key,
76
+ types: [],
77
+ };
78
+ let result;
79
+ /**
80
+ * If the project is configured to use legacy metadata, read the metadata from
81
+ * the comment header.
82
+ *
83
+ * Otherwise, we'll pull it as JSON straight from the .tsx file
84
+ */
85
+ if (project.config?.legacyMetadata) {
86
+ result = readBlockDataAsComment(contents);
87
+ if (!result) {
88
+ return {
89
+ data: metadata,
90
+ error: `Could not read block metadata from comment header`,
91
+ };
92
+ }
93
+ }
94
+ else {
95
+ result = readBlockDataAsJSONExport(path, contents);
96
+ if (!result) {
97
+ return {
98
+ data: metadata,
99
+ error: "Could not find `export const meta` in file, or it was not statically parsable.",
100
+ };
101
+ }
102
+ }
103
+ Object.assign(metadata, result);
104
+ // Compute the various names for this block
105
+ return {
106
+ data: metadata,
107
+ };
108
+ },
109
+ });
110
+ }
111
+ /**
112
+ * Rip the JSON metadata directly from the .tsx file
113
+ */
114
+ function readBlockDataAsJSONExport(file, contents) {
115
+ const userData = metaExtractor.extract(file, contents);
116
+ if (!userData)
117
+ return null;
118
+ const result = {};
119
+ result.title = userData.title;
120
+ result.description = userData.description;
121
+ result.category = userData.category;
122
+ result.icon = userData.icon ? kebabCase(userData.icon) : undefined;
123
+ result.cache = userData.cache;
124
+ result.tags = userData.tags;
125
+ result.flags = userData.flags;
126
+ // result.childTags = userData.innerBlocks?.allowedTags
127
+ // result.childBlocks = userData.innerBlocks?.allowedBlocks
128
+ result.ancestors = userData.conditions?.parents;
129
+ result.parent = userData.conditions?.parents;
130
+ result.types = userData.conditions?.postTypes;
131
+ result.templates = userData.conditions?.templates;
132
+ result.allowMultiple = userData.conditions?.multiple !== false;
133
+ result.inserter = userData.inserter;
134
+ result.frontendMode = userData.frontendMode;
135
+ if (userData.postMetaBlock) {
136
+ result.postMetaBlock = {
137
+ fieldName: userData.postMetaBlock.fieldName,
138
+ };
139
+ result.types = userData.postMetaBlock.postTypes;
140
+ result.allowMultiple = false;
141
+ }
142
+ return result;
143
+ }
144
+ /**
145
+ * Parse as a legacy comment header
146
+ */
147
+ function readBlockDataAsComment(file) {
148
+ let meta = {};
149
+ // Ensure the comment header is set
150
+ if (!/^\/\*.+?\*\//s.test(file))
151
+ return null;
152
+ // Get the comment section
153
+ const commentSection = file.match(/^.+\*\//s);
154
+ if (!commentSection)
155
+ return null;
156
+ const lines = commentSection[0].split("\n");
157
+ lines.forEach((line, i) => {
158
+ const match = line.match(/\s*\*?\s*([^:]+):\s*(.+)\s*/);
159
+ if (!match)
160
+ return;
161
+ let key = match[1].replace(/\s/g, "").toLocaleLowerCase();
162
+ let value = match[2].trim();
163
+ switch (key) {
164
+ case "title":
165
+ meta.title = value;
166
+ return;
167
+ case "description":
168
+ meta.description = value;
169
+ return;
170
+ case "category":
171
+ meta.category = value;
172
+ return;
173
+ case "icon":
174
+ meta.icon = value ? kebabCase(value) : "";
175
+ return;
176
+ case "keywords":
177
+ meta.keywords = value.split(/,\s*/);
178
+ return;
179
+ case "types":
180
+ meta.types = value.split(/,\s*/);
181
+ return;
182
+ case "templates":
183
+ meta.templates = value.split(/,\s*/);
184
+ return;
185
+ case "mode":
186
+ meta.mode = value;
187
+ return;
188
+ case "tags":
189
+ meta.tags = value.split(/,\s*/);
190
+ return;
191
+ case "childTags":
192
+ meta.childTags = value.split(/,\s*/);
193
+ return;
194
+ case "dynamic":
195
+ meta.dynamic = value === "true";
196
+ return;
197
+ case "cache":
198
+ meta.cache = value === "true";
199
+ return;
200
+ case "supportsmultiple":
201
+ meta.allowMultiple = value === "true";
202
+ return;
203
+ }
204
+ });
205
+ return meta;
206
+ }
@@ -0,0 +1,17 @@
1
+ import { Project } from "../project.js";
2
+ export type FieldManifest = {
3
+ fields: Record<string, FieldInfo>;
4
+ validationMessages: {
5
+ fieldKey: string;
6
+ message: string;
7
+ severity: "error" | "warning";
8
+ }[];
9
+ };
10
+ type FieldInfo = {
11
+ fileName: string;
12
+ slug: string;
13
+ error?: string;
14
+ };
15
+ export type FieldManifestGenerator = ReturnType<typeof loadFieldManifest>;
16
+ export declare function loadFieldManifest(project: Project): import("./manifest.js").ManifestGenerator<FieldInfo, FieldManifest>;
17
+ export {};
@@ -0,0 +1,42 @@
1
+ import { cliMode } from "../../cli/cli-mode.js";
2
+ import { createManifestGenerator } from "./manifest.js";
3
+ export function loadFieldManifest(project) {
4
+ return createManifestGenerator({
5
+ baseDir: project.rootDir,
6
+ pattern: "backend/fields/*.tsx",
7
+ watch: cliMode.watch,
8
+ async generateManifest(entries) {
9
+ let result = {
10
+ fields: {},
11
+ validationMessages: [],
12
+ };
13
+ Object.entries(entries)
14
+ .sort(([b1], [b2]) => {
15
+ return b1.localeCompare(b2);
16
+ })
17
+ .forEach(([key, entry]) => {
18
+ const { error: initialError } = entry.value;
19
+ result.fields[key] = entry.value;
20
+ if (initialError) {
21
+ result.validationMessages.push({
22
+ fieldKey: key,
23
+ message: initialError,
24
+ severity: "error",
25
+ });
26
+ return;
27
+ }
28
+ });
29
+ return result;
30
+ },
31
+ getKey(path) {
32
+ // Strip the views folder name + extension
33
+ return path.replace(/\.tsx$/, "").replace(/^backend\/fields\//, "");
34
+ },
35
+ async loadValue(fileName, key) {
36
+ return {
37
+ slug: key,
38
+ fileName,
39
+ };
40
+ },
41
+ });
42
+ }
@@ -0,0 +1,30 @@
1
+ import { FileEvent } from "../../utils/watch-file-tree.js";
2
+ type ManifestEntry<TEntryData> = {
3
+ key: string;
4
+ relativePath: string;
5
+ fullPath: string;
6
+ value: TEntryData;
7
+ };
8
+ type ManifestGeneratorArgs<TEntryData, TManifest> = {
9
+ baseDir: string;
10
+ pattern: string | string[];
11
+ watch: boolean;
12
+ loadValue: (path: string, key: string) => Promise<TEntryData>;
13
+ getKey: (path: string) => string | null;
14
+ generateManifest: (entries: {
15
+ [key: string]: ManifestEntry<TEntryData>;
16
+ }) => Promise<TManifest>;
17
+ onFileChange?(path: string): void;
18
+ };
19
+ export type ManifestGenerator<TEntryData, TManifest> = {
20
+ /** Destroy the generator, and stop watching for changes */
21
+ dispose: () => void;
22
+ /** Subscribe to changes, and also kick off the monitor process if it hasn't already started */
23
+ subscribe: (callback: (manifest: TManifest, events?: FileEvent[]) => void) => () => void;
24
+ /** Subscribe to future changes */
25
+ subscribeFuture: (callback: (manifest: TManifest, events?: FileEvent[]) => void) => () => void;
26
+ /** Get the existing manifest, or generate a new one if one hasn'tyet been created */
27
+ get(): Promise<TManifest>;
28
+ };
29
+ export declare function createManifestGenerator<TEntryData, TManifest>(args: ManifestGeneratorArgs<TEntryData, TManifest>): ManifestGenerator<TEntryData, TManifest>;
30
+ export {};