eddev 2.0.0-beta.1 → 2.0.0-beta.100
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.
- package/dist/app/entry/HydrationOverlay.d.ts +1 -0
- package/dist/app/entry/HydrationOverlay.js +2 -0
- package/dist/app/entry/MetaTags.d.ts +7 -0
- package/dist/app/entry/MetaTags.js +17 -0
- package/dist/app/entry/boot-admin.d.ts +1 -0
- package/dist/app/entry/boot-admin.js +13 -0
- package/dist/app/entry/hydration-script.d.ts +1 -0
- package/dist/app/entry/hydration-script.js +18 -0
- package/dist/app/entry/spa-root.d.ts +1 -0
- package/dist/app/entry/spa-root.js +8 -0
- package/dist/app/entry/ssr-root-client.d.ts +6 -0
- package/dist/app/entry/ssr-root-client.js +20 -0
- package/dist/app/entry/ssr-root.d.ts +8 -0
- package/dist/app/entry/ssr-root.js +22 -0
- package/dist/app/lib/admin/index.d.ts +2 -2
- package/dist/app/lib/admin/index.js +2 -2
- package/dist/app/lib/admin/installFieldTypes.js +1 -1
- package/dist/app/lib/admin/runWidgets.js +1 -1
- package/dist/app/lib/blocks/ContentBlocks.d.ts +1 -1
- package/dist/app/lib/blocks/ContentBlocks.js +5 -5
- package/dist/app/lib/blocks/EditableText.d.ts +1 -1
- package/dist/app/lib/blocks/EditableText.js +3 -3
- package/dist/app/lib/blocks/InnerBlocks.d.ts +13 -3
- package/dist/app/lib/blocks/InnerBlocks.js +13 -5
- package/dist/app/lib/blocks/block-utils.d.ts +2 -2
- package/dist/app/lib/blocks/block-utils.js +2 -2
- package/dist/app/lib/blocks/editor/EditorHighlights.d.ts +7 -0
- package/dist/app/lib/blocks/editor/EditorHighlights.js +130 -0
- package/dist/app/lib/blocks/editor/EditorSupport.js +4 -5
- package/dist/app/lib/blocks/editor/editor-config.d.ts +17 -4
- package/dist/app/lib/blocks/editor/editor-config.js +21 -9
- package/dist/app/lib/blocks/editor/installGutenbergHooks.js +20 -14
- package/dist/app/lib/blocks/editor/root-blocks.d.ts +6 -0
- package/dist/app/lib/blocks/editor/root-blocks.js +30 -0
- package/dist/app/lib/blocks/editor/usePostEditor.d.ts +1 -1
- package/dist/app/lib/blocks/index.d.ts +9 -9
- package/dist/app/lib/blocks/index.js +9 -9
- package/dist/app/lib/blocks/inline-editing.d.ts +1 -1
- package/dist/app/lib/blocks/inline-editing.js +7 -5
- package/dist/app/lib/devtools/components/BreakpointIndicator.js +6 -4
- package/dist/app/lib/devtools/components/DevUI.js +4 -3
- package/dist/app/lib/devtools/components/GridIndicator.d.ts +1 -0
- package/dist/app/lib/devtools/components/GridIndicator.js +29 -0
- package/dist/app/lib/devtools/dev-tools-store.d.ts +9 -0
- package/dist/app/lib/devtools/dev-tools-store.js +8 -0
- package/dist/app/lib/devtools/hooks/usePersistState.d.ts +1 -1
- package/dist/app/lib/devtools/hooks/usePersistState.js +11 -2
- package/dist/app/lib/devtools/hooks/useTailwind.d.ts +1102 -1103
- package/dist/app/lib/devtools/hooks/useTailwind.js +6 -3
- package/dist/app/lib/devtools/index.d.ts +1 -0
- package/dist/app/lib/devtools/index.js +1 -1
- package/dist/app/lib/devtools/loader.js +8 -7
- package/dist/app/lib/devtools/useQueryDebug.d.ts +7 -1
- package/dist/app/lib/devtools/useQueryDebug.js +5 -8
- package/dist/app/lib/dynamic/dynamic.d.ts +1 -1
- package/dist/app/lib/dynamic/dynamic.js +5 -1
- package/dist/app/lib/dynamic/index.d.ts +1 -1
- package/dist/app/lib/dynamic/index.js +1 -1
- package/dist/app/lib/hooks/index.d.ts +4 -5
- package/dist/app/lib/hooks/index.js +4 -5
- package/dist/app/lib/hooks/queryUtils.d.ts +41 -4
- package/dist/app/lib/hooks/queryUtils.js +74 -37
- package/dist/app/lib/hooks/useAppData.js +1 -1
- package/dist/app/lib/hooks/useRPC.d.ts +0 -4
- package/dist/app/lib/hooks/useRPC.js +1 -8
- package/dist/app/lib/internal/finalize-rpc.d.ts +17 -0
- package/dist/app/lib/internal/finalize-rpc.js +3 -0
- package/dist/app/lib/internal/index.d.ts +5 -4
- package/dist/app/lib/internal/index.js +5 -4
- package/dist/app/lib/internal/internal-store.d.ts +0 -2
- package/dist/app/lib/internal/internal-store.js +1 -3
- package/dist/app/lib/internal/read-admin-manifest.d.ts +1 -1
- package/dist/app/lib/legacy-stitches/createStitches.d.ts +21 -21
- package/dist/app/lib/legacy-stitches/createStitches.js +1 -1
- package/dist/app/lib/legacy-stitches/index.d.ts +1 -1
- package/dist/app/lib/legacy-stitches/index.js +1 -1
- package/dist/app/lib/routing/components/BackButton.d.ts +49 -0
- package/dist/app/lib/routing/components/BackButton.js +47 -0
- package/dist/app/lib/routing/components/BrowserRouter.d.ts +4 -1
- package/dist/app/lib/routing/components/BrowserRouter.js +95 -19
- package/dist/app/lib/routing/components/ClientOnly.js +1 -1
- package/dist/app/lib/routing/components/Link.d.ts +1 -0
- package/dist/app/lib/routing/components/Link.js +11 -12
- package/dist/app/lib/routing/components/RouteRenderer.d.ts +1 -1
- package/dist/app/lib/routing/components/RouteRenderer.js +7 -6
- package/dist/app/lib/routing/components/SSRRouter.d.ts +2 -2
- package/dist/app/lib/routing/components/SSRRouter.js +5 -6
- package/dist/app/lib/routing/components/ScrollRestoration.js +5 -2
- package/dist/app/lib/routing/context.d.ts +8 -5
- package/dist/app/lib/routing/context.js +13 -96
- package/dist/app/lib/routing/hooks/useRestorableState.d.ts +2 -1
- package/dist/app/lib/routing/hooks/useRestorableState.js +2 -1
- package/dist/app/lib/routing/hooks/useRoute.d.ts +16 -1
- package/dist/app/lib/routing/hooks/useRoute.js +22 -1
- package/dist/app/lib/routing/hooks/useRouteMeta.d.ts +5 -0
- package/dist/app/lib/routing/hooks/useRouteMeta.js +9 -0
- package/dist/app/lib/routing/hooks/useRouteTransition.d.ts +1 -1
- package/dist/app/lib/routing/hooks/useRouteTransition.js +1 -1
- package/dist/app/lib/routing/hooks/useRouter.d.ts +1 -1
- package/dist/app/lib/routing/hooks/useRouter.js +1 -1
- package/dist/app/lib/routing/hooks/useRouterEvents.d.ts +1 -1
- package/dist/app/lib/routing/hooks/useRouterEvents.js +1 -1
- package/dist/app/lib/routing/hooks/useRouterState.d.ts +1 -1
- package/dist/app/lib/routing/hooks/useRouterState.js +1 -1
- package/dist/app/lib/routing/hooks/useSearchParams.js +2 -2
- package/dist/app/lib/routing/index.d.ts +14 -13
- package/dist/app/lib/routing/index.js +14 -13
- package/dist/app/lib/routing/loader.d.ts +2 -2
- package/dist/app/lib/routing/loader.js +26 -15
- package/dist/app/lib/routing/types.d.ts +36 -10
- package/dist/app/lib/routing/utils.d.ts +5 -2
- package/dist/app/lib/routing/utils.js +37 -4
- package/dist/app/lib/{hooks → runtime}/apiConfig.d.ts +6 -2
- package/dist/app/lib/runtime/apiConfig.js +6 -0
- package/dist/app/lib/runtime/errorHandling.d.ts +39 -0
- package/dist/app/lib/runtime/errorHandling.js +6 -0
- package/dist/app/lib/runtime/index.d.ts +2 -0
- package/dist/app/lib/runtime/index.js +2 -0
- package/dist/app/lib/views/index.d.ts +1 -1
- package/dist/app/lib/views/index.js +1 -1
- package/dist/app/server/defineRouter.d.ts +2 -0
- package/dist/app/server/defineRouter.js +4 -0
- package/dist/app/server/index.d.ts +5 -0
- package/dist/app/server/index.js +5 -0
- package/dist/app/server/proxy-wp-admin.d.ts +2 -0
- package/dist/app/server/proxy-wp-admin.js +124 -0
- package/dist/app/server/render-ssr-page.d.ts +21 -0
- package/dist/app/server/render-ssr-page.js +166 -0
- package/dist/app/server/rpc.d.ts +56 -0
- package/dist/app/server/rpc.js +18 -0
- package/dist/app/server/server-context.d.ts +72 -0
- package/dist/app/server/server-context.js +283 -0
- package/dist/app/server/utils/headers.d.ts +1 -0
- package/dist/app/server/utils/headers.js +17 -0
- package/dist/app/server/utils/replace-host.d.ts +6 -4
- package/dist/app/server/utils/replace-host.js +66 -11
- package/dist/app/server/utils/swr-cache.d.ts +4 -0
- package/dist/app/server/utils/swr-cache.js +31 -0
- package/dist/app/utils/APIProvider.d.ts +2 -0
- package/dist/app/utils/APIProvider.js +5 -0
- package/dist/app/utils/BlockErrorBoundary.d.ts +19 -0
- package/dist/app/utils/BlockErrorBoundary.js +38 -0
- package/dist/app/utils/ErrorMessage.d.ts +5 -0
- package/dist/app/utils/ErrorMessage.js +14 -0
- package/dist/app/utils/RouteErrorBoundary.d.ts +18 -0
- package/dist/app/utils/RouteErrorBoundary.js +38 -0
- package/dist/app/utils/asset-capture.d.ts +2 -0
- package/dist/app/utils/asset-capture.js +5 -0
- package/dist/app/utils/hydration-debugger.d.ts +13 -0
- package/dist/app/utils/hydration-debugger.js +11 -0
- package/dist/app/utils/query-client.d.ts +2 -0
- package/dist/app/utils/query-client.js +5 -1
- package/dist/app/utils/trpc-client.d.ts +2 -0
- package/dist/app/utils/trpc-client.js +39 -0
- package/dist/node/cli/cli-worker.d.ts +1 -1
- package/dist/node/cli/cli-worker.js +11 -3
- package/dist/node/cli/cli.js +112 -13
- package/dist/node/cli/display/CLIApp.d.ts +1 -1
- package/dist/node/cli/display/CLIApp.js +4 -7
- package/dist/node/cli/display/boot-cli-app.js +1 -1
- package/dist/node/cli/display/components/LogEntries.d.ts +1 -1
- package/dist/node/cli/display/hooks/useStatefulLog.d.ts +1 -1
- package/dist/node/cli/display/tools/CreateBlock.d.ts +1 -1
- package/dist/node/cli/display/tools/cli-tools.d.ts +1 -11
- package/dist/node/cli/display/tools/cli-tools.js +9 -9
- package/dist/node/cli/display/util/colors.d.ts +2 -2
- package/dist/node/cli/version.d.ts +1 -1
- package/dist/node/cli/version.js +1 -1
- package/dist/node/compiler/build-vinxi.d.ts +8 -0
- package/dist/node/compiler/build-vinxi.js +38 -0
- package/dist/node/compiler/bundler.admin.d.ts +2 -2
- package/dist/node/compiler/bundler.admin.js +4 -4
- package/dist/node/compiler/bundler.frontend.d.ts +1 -1
- package/dist/node/compiler/bundler.frontend.js +4 -4
- package/dist/node/compiler/{serverless.dev.d.ts → dev-server.d.ts} +7 -5
- package/dist/node/compiler/dev-server.js +107 -0
- package/dist/node/compiler/get-vite-config.d.ts +20 -0
- package/dist/node/compiler/get-vite-config.js +207 -0
- package/dist/node/compiler/vinxi-app.d.ts +22 -0
- package/dist/node/compiler/vinxi-app.js +228 -0
- package/dist/node/compiler/vinxi-codegen.d.ts +12 -0
- package/dist/node/compiler/vinxi-codegen.js +638 -0
- package/dist/node/graphql/graphql-codegen.d.ts +12 -2
- package/dist/node/graphql/graphql-codegen.js +213 -36
- package/dist/node/graphql/graphql-schema-loader.d.ts +2 -1
- package/dist/node/graphql/graphql-schema-loader.js +5 -19
- package/dist/node/graphql/plugins/gql-plugin-queries.js +1 -1
- package/dist/node/graphql/query-files-loader.d.ts +3 -0
- package/dist/node/graphql/query-files-loader.js +5 -0
- package/dist/node/project/config.d.ts +159 -73
- package/dist/node/project/config.js +70 -21
- package/dist/node/project/env.d.ts +5 -1
- package/dist/node/project/env.js +2 -1
- package/dist/node/project/manifest/block-manifest.js +3 -2
- package/dist/node/project/manifest/manifest.d.ts +2 -1
- package/dist/node/project/manifest/manifest.js +15 -11
- package/dist/node/project/manifest/routes-manifest.d.ts +20 -0
- package/dist/node/project/manifest/routes-manifest.js +74 -0
- package/dist/node/project/manifest/view-manifest.js +2 -2
- package/dist/node/project/project.d.ts +11 -2
- package/dist/node/project/project.js +49 -20
- package/dist/node/project/wp-info.d.ts +1 -0
- package/dist/node/project/wp-info.js +13 -3
- package/dist/node/types/block-type.d.ts +25 -20
- package/dist/node/types/block-type.js +1 -0
- package/dist/node/types/view-type.d.ts +7 -7
- package/dist/node/types/view-type.js +3 -4
- package/dist/node/utils/fetch-wp.d.ts +1 -0
- package/dist/node/utils/fetch-wp.js +27 -0
- package/dist/node/utils/fs-codegen.d.ts +42 -0
- package/dist/node/utils/fs-codegen.js +98 -0
- package/dist/node/utils/fs.js +2 -0
- package/dist/node/utils/{isDeploying.js → is-deploying.js} +1 -1
- package/dist/node/utils/{selfSignedCert.js → self-signed-cert.js} +1 -1
- package/dist/node/utils/{statefulLog.js → stateful-log.js} +3 -1
- package/dist/node/utils/watch-file-tree.d.ts +25 -0
- package/dist/node/utils/{watchFileTree.js → watch-file-tree.js} +12 -5
- package/package.json +40 -38
- package/types.app.d.ts +4 -2
- package/types.app.internal.d.ts +2 -2
- package/types.node.d.ts +3 -3
- package/dist/app/entry/Root.d.ts +0 -1
- package/dist/app/entry/Root.js +0 -9
- package/dist/app/entry/main.admin.d.ts +0 -3
- package/dist/app/entry/main.admin.js +0 -10
- package/dist/app/entry/main.frontend.spa.d.ts +0 -3
- package/dist/app/entry/main.frontend.spa.js +0 -13
- package/dist/app/entry/main.frontend.ssr.d.ts +0 -21
- package/dist/app/entry/main.frontend.ssr.js +0 -79
- package/dist/app/entry/main.serverless.dev.d.ts +0 -4
- package/dist/app/entry/main.serverless.dev.js +0 -21
- package/dist/app/lib/blocks/ErrorBoundaryFrontend.d.ts +0 -15
- package/dist/app/lib/blocks/ErrorBoundaryFrontend.js +0 -35
- package/dist/app/lib/hooks/apiConfig.js +0 -4
- package/dist/app/lib/hooks/usePageLoad.d.ts +0 -6
- package/dist/app/lib/hooks/usePageLoad.js +0 -5
- package/dist/app/server/create-api-builtin-hono.d.ts +0 -8
- package/dist/app/server/create-api-builtin-hono.js +0 -80
- package/dist/app/server/create-ssr-hono.d.ts +0 -18
- package/dist/app/server/create-ssr-hono.js +0 -104
- package/dist/app/server/utils/index.html.d.ts +0 -2
- package/dist/app/server/utils/index.html.js +0 -14
- package/dist/node/compiler/index.html.d.ts +0 -2
- package/dist/node/compiler/index.html.js +0 -15
- package/dist/node/compiler/serverless.dev.js +0 -215
- package/dist/node/compiler/vite/get-vite-config.d.ts +0 -13
- package/dist/node/compiler/vite/get-vite-config.js +0 -315
- package/dist/node/compiler/vite/plugin-admin.d.ts +0 -4
- package/dist/node/compiler/vite/plugin-admin.js +0 -67
- package/dist/node/compiler/vite/plugin-blocks.d.ts +0 -4
- package/dist/node/compiler/vite/plugin-blocks.js +0 -73
- package/dist/node/compiler/vite/plugin-entry.d.ts +0 -6
- package/dist/node/compiler/vite/plugin-entry.js +0 -16
- package/dist/node/compiler/vite/plugin-resolved-tailwind.d.ts +0 -4
- package/dist/node/compiler/vite/plugin-resolved-tailwind.js +0 -29
- package/dist/node/compiler/vite/plugin-theme.d.ts +0 -4
- package/dist/node/compiler/vite/plugin-theme.js +0 -40
- package/dist/node/compiler/vite/plugin-views.d.ts +0 -4
- package/dist/node/compiler/vite/plugin-views.js +0 -51
- package/dist/node/utils/console.d.ts +0 -21
- package/dist/node/utils/console.js +0 -28
- package/dist/node/utils/unsafe-fetch.d.ts +0 -2
- package/dist/node/utils/unsafe-fetch.js +0 -19
- package/dist/node/utils/watchFileTree.d.ts +0 -11
- package/tsup.config.ts +0 -40
- package/types.manifests.d.ts +0 -22
- /package/dist/node/utils/{formatZodError.d.ts → format-zod-error.d.ts} +0 -0
- /package/dist/node/utils/{formatZodError.js → format-zod-error.js} +0 -0
- /package/dist/node/utils/{getRepoInfo.d.ts → get-repo-info.d.ts} +0 -0
- /package/dist/node/utils/{getRepoInfo.js → get-repo-info.js} +0 -0
- /package/dist/node/utils/{highlightCode.d.ts → highlight-code.d.ts} +0 -0
- /package/dist/node/utils/{highlightCode.js → highlight-code.js} +0 -0
- /package/dist/node/utils/{isDeploying.d.ts → is-deploying.d.ts} +0 -0
- /package/dist/node/utils/{selfSignedCert.d.ts → self-signed-cert.d.ts} +0 -0
- /package/dist/node/utils/{statefulLog.d.ts → stateful-log.d.ts} +0 -0
- /package/dist/node/utils/{export-extractor.d.ts → ts-export-extractor.d.ts} +0 -0
- /package/dist/node/utils/{export-extractor.js → ts-export-extractor.js} +0 -0
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { EDConfig } from "./config.js";
|
|
2
2
|
import { BlockManifestGenerator } from "./manifest/block-manifest.js";
|
|
3
|
-
import { ViewManifestGenerator } from "./manifest/view-manifest.js";
|
|
4
3
|
import { FieldManifestGenerator } from "./manifest/field-manifest.js";
|
|
4
|
+
import { RouteManifestGenerator } from "./manifest/routes-manifest.js";
|
|
5
|
+
import { ViewManifestGenerator } from "./manifest/view-manifest.js";
|
|
5
6
|
import { WidgetManifestGenerator } from "./manifest/widget-manifest.js";
|
|
6
|
-
export declare const projectLog: import("../utils/
|
|
7
|
+
export declare const projectLog: import("../utils/stateful-log.js").StatefulLog<Project>;
|
|
7
8
|
type ProjectArgs = {
|
|
8
9
|
rootDir: string;
|
|
9
10
|
reportPluginCompatibility?: boolean;
|
|
@@ -18,14 +19,22 @@ export declare class Project {
|
|
|
18
19
|
publicUrl: string;
|
|
19
20
|
repoUrl: string;
|
|
20
21
|
configFile: string;
|
|
22
|
+
origin: string;
|
|
21
23
|
config?: EDConfig;
|
|
22
24
|
blocks: BlockManifestGenerator;
|
|
23
25
|
views: ViewManifestGenerator;
|
|
24
26
|
fields: FieldManifestGenerator;
|
|
25
27
|
widgets: WidgetManifestGenerator;
|
|
28
|
+
serverRoutes: RouteManifestGenerator;
|
|
26
29
|
private wp;
|
|
27
30
|
reportPluginCompatibility: boolean;
|
|
28
31
|
private constructor();
|
|
32
|
+
verifyOriginAccess(): Promise<{
|
|
33
|
+
success: true;
|
|
34
|
+
} | {
|
|
35
|
+
success: false;
|
|
36
|
+
message: string;
|
|
37
|
+
}>;
|
|
29
38
|
private load;
|
|
30
39
|
reportProjectInfo(): string;
|
|
31
40
|
getWordpressInfo(): Promise<{
|
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { objFormat } from "obj-console";
|
|
2
2
|
import { relative, resolve } from "path";
|
|
3
3
|
import { undent } from "undent";
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
import { getRepoInfo } from "../utils/getRepoInfo.js";
|
|
8
|
-
import { isDeploying } from "../utils/isDeploying.js";
|
|
9
|
-
import { createConsole } from "../utils/statefulLog.js";
|
|
4
|
+
import { getRepoInfo } from "../utils/get-repo-info.js";
|
|
5
|
+
import { isDeploying } from "../utils/is-deploying.js";
|
|
6
|
+
import { createConsole } from "../utils/stateful-log.js";
|
|
10
7
|
import { Configurator } from "./config.js";
|
|
11
|
-
import { loadBlockManifest } from "./manifest/block-manifest.js";
|
|
12
|
-
import { loadViewManifest } from "./manifest/view-manifest.js";
|
|
13
|
-
import { WPInfo } from "./wp-info.js";
|
|
14
8
|
import { ProjectEnvUtils } from "./env.js";
|
|
9
|
+
import { loadBlockManifest } from "./manifest/block-manifest.js";
|
|
15
10
|
import { loadFieldManifest } from "./manifest/field-manifest.js";
|
|
11
|
+
import { loadRouteManifest } from "./manifest/routes-manifest.js";
|
|
12
|
+
import { loadViewManifest } from "./manifest/view-manifest.js";
|
|
16
13
|
import { loadWidgetManifest } from "./manifest/widget-manifest.js";
|
|
14
|
+
import { WPInfo } from "./wp-info.js";
|
|
17
15
|
const console = createConsole("Project", "project");
|
|
18
16
|
export const projectLog = console;
|
|
19
17
|
/**
|
|
@@ -26,21 +24,53 @@ export class Project {
|
|
|
26
24
|
publicUrl = "";
|
|
27
25
|
repoUrl = "";
|
|
28
26
|
configFile = "";
|
|
27
|
+
origin = "";
|
|
29
28
|
config;
|
|
30
29
|
blocks;
|
|
31
30
|
views;
|
|
32
31
|
fields;
|
|
33
32
|
widgets;
|
|
33
|
+
serverRoutes;
|
|
34
34
|
wp;
|
|
35
35
|
reportPluginCompatibility = false;
|
|
36
36
|
constructor(opts) {
|
|
37
37
|
this.rootDir = opts.rootDir;
|
|
38
|
+
this.origin = ProjectEnvUtils.getSafe("SITE_URL") ?? "";
|
|
38
39
|
this.reportPluginCompatibility = opts.reportPluginCompatibility || false;
|
|
39
40
|
this.blocks = loadBlockManifest(this);
|
|
40
41
|
this.views = loadViewManifest(this);
|
|
41
42
|
this.fields = loadFieldManifest(this);
|
|
42
43
|
this.widgets = loadWidgetManifest(this);
|
|
43
|
-
this.
|
|
44
|
+
this.serverRoutes = loadRouteManifest(this);
|
|
45
|
+
this.wp = new WPInfo(this.origin);
|
|
46
|
+
}
|
|
47
|
+
async verifyOriginAccess() {
|
|
48
|
+
try {
|
|
49
|
+
const response = await this.wp.ping();
|
|
50
|
+
if (!response.ok) {
|
|
51
|
+
return {
|
|
52
|
+
success: false,
|
|
53
|
+
message: [
|
|
54
|
+
`Failed to access WordPress origin at ${this.origin}`,
|
|
55
|
+
`Using API Key?: ${ProjectEnvUtils.getSafe("SITE_API_KEY") ? "Yes" : "No"}`,
|
|
56
|
+
`Response: ${response.status} ${response.statusText}`,
|
|
57
|
+
].join("\n"),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
success: true,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
return {
|
|
66
|
+
success: false,
|
|
67
|
+
message: [
|
|
68
|
+
`Failed to access WordPress origin at ${this.origin}`,
|
|
69
|
+
`Using API Key?: ${ProjectEnvUtils.getSafe("SITE_API_KEY") ? "Yes" : "No"}`,
|
|
70
|
+
`The following error occurred:${err}`,
|
|
71
|
+
].join("\n"),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
44
74
|
}
|
|
45
75
|
async load() {
|
|
46
76
|
console.setWorking(true);
|
|
@@ -62,15 +92,14 @@ export class Project {
|
|
|
62
92
|
|
|
63
93
|
You should rename the folder to match the repo name, or vice versa.
|
|
64
94
|
`);
|
|
65
|
-
if (cliMode.interactive) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
95
|
+
// if (cliMode.interactive) {
|
|
96
|
+
// await clack.confirm({
|
|
97
|
+
// message: `Ignore and continue anyway?`,
|
|
98
|
+
// })
|
|
99
|
+
// } else {
|
|
100
|
+
// console.flush()
|
|
101
|
+
// process.exit(1)
|
|
102
|
+
// }
|
|
74
103
|
}
|
|
75
104
|
/**
|
|
76
105
|
* Load configuration
|
|
@@ -1,17 +1,27 @@
|
|
|
1
1
|
import { resolveURL } from "ufo";
|
|
2
|
-
import {
|
|
2
|
+
import { fetchWP } from "../utils/fetch-wp.js";
|
|
3
3
|
export class WPInfo {
|
|
4
4
|
siteUrl;
|
|
5
5
|
cached;
|
|
6
6
|
constructor(siteUrl) {
|
|
7
7
|
this.siteUrl = siteUrl;
|
|
8
8
|
}
|
|
9
|
+
async ping() {
|
|
10
|
+
if (!this.siteUrl) {
|
|
11
|
+
throw new Error("Attempted to ping WordPress, but SITE_URL was not present in the environment.");
|
|
12
|
+
}
|
|
13
|
+
const url = resolveURL(this.siteUrl, "/wp-json/ed/v1/handshake");
|
|
14
|
+
const response = await fetchWP(url);
|
|
15
|
+
return response;
|
|
16
|
+
}
|
|
9
17
|
async getInfo(force = false) {
|
|
18
|
+
if (!this.siteUrl) {
|
|
19
|
+
throw new Error("Attempted to get site info from WordPress, but SITE_URL was not present in the environment.");
|
|
20
|
+
}
|
|
10
21
|
if (this.cached && !force)
|
|
11
22
|
return this.cached;
|
|
12
23
|
const url = resolveURL(this.siteUrl, "/wp-json/ed/v1/dev/site-info");
|
|
13
|
-
const
|
|
14
|
-
const response = await fetch(url);
|
|
24
|
+
const response = await fetchWP(url);
|
|
15
25
|
const result = (await response.json());
|
|
16
26
|
this.cached = result;
|
|
17
27
|
return result;
|
|
@@ -23,67 +23,72 @@ export declare const BlockMetaSchema: z.ZodObject<{
|
|
|
23
23
|
cache: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
24
24
|
allowMultiple: z.ZodDefault<z.ZodBoolean>;
|
|
25
25
|
postMetaBlock: z.ZodOptional<z.ZodObject<{
|
|
26
|
+
postTypes: z.ZodArray<z.ZodString, "many">;
|
|
26
27
|
fieldName: z.ZodString;
|
|
27
28
|
}, "strip", z.ZodTypeAny, {
|
|
29
|
+
postTypes: string[];
|
|
28
30
|
fieldName: string;
|
|
29
31
|
}, {
|
|
32
|
+
postTypes: string[];
|
|
30
33
|
fieldName: string;
|
|
31
34
|
}>>;
|
|
32
35
|
frontendMode: z.ZodDefault<z.ZodEnum<["hidden", "childrenOnly", "default"]>>;
|
|
33
36
|
inserter: z.ZodDefault<z.ZodBoolean>;
|
|
34
37
|
}, "strip", z.ZodTypeAny, {
|
|
35
|
-
|
|
38
|
+
title: string;
|
|
39
|
+
mode: "both" | "edit" | "preview";
|
|
40
|
+
slug: string;
|
|
41
|
+
tags: string[];
|
|
42
|
+
flags: Record<string, any>;
|
|
43
|
+
category: string;
|
|
44
|
+
parent: string[];
|
|
36
45
|
acfName: string;
|
|
37
46
|
fileName: string;
|
|
38
|
-
slug: string;
|
|
39
47
|
graphqlFieldName: string;
|
|
40
|
-
title: string;
|
|
41
|
-
category: string;
|
|
42
48
|
types: string[];
|
|
43
|
-
mode: "preview" | "edit" | "both";
|
|
44
|
-
tags: string[];
|
|
45
|
-
flags: Record<string, any>;
|
|
46
49
|
childTags: string[];
|
|
47
50
|
childBlocks: string[];
|
|
48
|
-
parent: string[];
|
|
49
51
|
ancestors: string[];
|
|
50
52
|
dynamic: boolean;
|
|
53
|
+
cache: boolean;
|
|
51
54
|
allowMultiple: boolean;
|
|
52
|
-
frontendMode: "hidden" | "
|
|
55
|
+
frontendMode: "hidden" | "default" | "childrenOnly";
|
|
53
56
|
inserter: boolean;
|
|
54
|
-
description?: string | undefined;
|
|
55
57
|
icon?: string | undefined;
|
|
58
|
+
description?: string | undefined;
|
|
56
59
|
keywords?: string[] | undefined;
|
|
57
60
|
templates?: string[] | null | undefined;
|
|
58
61
|
postMetaBlock?: {
|
|
62
|
+
postTypes: string[];
|
|
59
63
|
fieldName: string;
|
|
60
64
|
} | undefined;
|
|
61
65
|
}, {
|
|
66
|
+
title: string;
|
|
67
|
+
slug: string;
|
|
62
68
|
acfName: string;
|
|
63
69
|
fileName: string;
|
|
64
|
-
slug: string;
|
|
65
70
|
graphqlFieldName: string;
|
|
66
|
-
title: string;
|
|
67
71
|
types: string[];
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
72
|
+
mode?: "both" | "edit" | "preview" | undefined;
|
|
73
|
+
tags?: string[] | undefined;
|
|
74
|
+
flags?: Record<string, any> | undefined;
|
|
71
75
|
icon?: string | undefined;
|
|
76
|
+
category?: string | undefined;
|
|
77
|
+
parent?: string[] | undefined;
|
|
78
|
+
description?: string | undefined;
|
|
72
79
|
keywords?: string[] | undefined;
|
|
73
80
|
templates?: string[] | null | undefined;
|
|
74
|
-
mode?: "preview" | "edit" | "both" | undefined;
|
|
75
|
-
tags?: string[] | undefined;
|
|
76
|
-
flags?: Record<string, any> | undefined;
|
|
77
81
|
childTags?: string[] | undefined;
|
|
78
82
|
childBlocks?: string[] | undefined;
|
|
79
|
-
parent?: string[] | undefined;
|
|
80
83
|
ancestors?: string[] | undefined;
|
|
81
84
|
dynamic?: boolean | undefined;
|
|
85
|
+
cache?: boolean | undefined;
|
|
82
86
|
allowMultiple?: boolean | undefined;
|
|
83
87
|
postMetaBlock?: {
|
|
88
|
+
postTypes: string[];
|
|
84
89
|
fieldName: string;
|
|
85
90
|
} | undefined;
|
|
86
|
-
frontendMode?: "hidden" | "
|
|
91
|
+
frontendMode?: "hidden" | "default" | "childrenOnly" | undefined;
|
|
87
92
|
inserter?: boolean | undefined;
|
|
88
93
|
}>;
|
|
89
94
|
export type BlockMetadata = z.infer<typeof BlockMetaSchema>;
|
|
@@ -9,21 +9,21 @@ export declare const ViewMetaSchema: z.ZodObject<{
|
|
|
9
9
|
routePattern: z.ZodOptional<z.ZodString>;
|
|
10
10
|
postType: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
11
11
|
}, "strip", z.ZodTypeAny, {
|
|
12
|
-
cache: boolean;
|
|
13
|
-
fileName: string;
|
|
14
|
-
slug: string;
|
|
15
12
|
title: string;
|
|
13
|
+
slug: string;
|
|
14
|
+
fileName: string;
|
|
15
|
+
cache: boolean;
|
|
16
16
|
isCustomTemplate: boolean;
|
|
17
|
-
routePattern?: string | undefined;
|
|
18
17
|
postType?: string[] | undefined;
|
|
18
|
+
routePattern?: string | undefined;
|
|
19
19
|
}, {
|
|
20
|
-
fileName: string;
|
|
21
|
-
slug: string;
|
|
22
20
|
title: string;
|
|
21
|
+
slug: string;
|
|
22
|
+
fileName: string;
|
|
23
|
+
postType?: string[] | undefined;
|
|
23
24
|
cache?: boolean | undefined;
|
|
24
25
|
isCustomTemplate?: boolean | undefined;
|
|
25
26
|
routePattern?: string | undefined;
|
|
26
|
-
postType?: string[] | undefined;
|
|
27
27
|
}>;
|
|
28
28
|
export type ViewMetadata = z.infer<typeof ViewMetaSchema>;
|
|
29
29
|
export type ViewMetadataConstructor = z.input<typeof ViewMetaSchema>;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { objFormat } from "obj-console";
|
|
3
|
-
import { console } from "../utils/console.js";
|
|
4
3
|
import chalk from "chalk";
|
|
5
4
|
import { indent } from "../utils/helpers.js";
|
|
6
5
|
export const ViewMetaSchema = z.object({
|
|
@@ -28,7 +27,7 @@ export function describeView(view) {
|
|
|
28
27
|
return output;
|
|
29
28
|
}
|
|
30
29
|
export function describeViewManifest(manifest) {
|
|
31
|
-
console.
|
|
30
|
+
console.log("View Manifest");
|
|
32
31
|
console.info("Discovered " + Object.keys(manifest.views).length + " view(s)");
|
|
33
32
|
const totalWarnings = manifest.validationMessages.filter((m) => m.severity === "warning").length;
|
|
34
33
|
const totalErrors = manifest.validationMessages.filter((m) => m.severity === "error").length;
|
|
@@ -48,7 +47,7 @@ export function describeViewManifest(manifest) {
|
|
|
48
47
|
console.log(indent(4, describeView(view)));
|
|
49
48
|
}
|
|
50
49
|
if (totalWarnings > 0)
|
|
51
|
-
console.
|
|
50
|
+
console.warn(totalWarnings + " warning(s) while loading view metadata");
|
|
52
51
|
if (totalErrors > 0)
|
|
53
|
-
console.
|
|
52
|
+
console.warn(totalErrors + " error(s) while loading view metadata");
|
|
54
53
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function fetchWP(url: string | URL, args?: RequestInit): Promise<Response>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ProjectEnvUtils } from "../project/env.js";
|
|
2
|
+
import { Agent, fetch, setGlobalDispatcher, Headers } from "undici";
|
|
3
|
+
const agent = new Agent({
|
|
4
|
+
connect: {
|
|
5
|
+
rejectUnauthorized: false,
|
|
6
|
+
},
|
|
7
|
+
});
|
|
8
|
+
export function fetchWP(url, args = {}) {
|
|
9
|
+
const headers = new Headers(args.headers);
|
|
10
|
+
// If an API key has been set in the environment, use it
|
|
11
|
+
const accessKey = ProjectEnvUtils.getSafe("SITE_API_KEY");
|
|
12
|
+
if (accessKey) {
|
|
13
|
+
headers.set("x-ed-api-key", accessKey);
|
|
14
|
+
}
|
|
15
|
+
// Allow self-signed certificates when using a local development domain
|
|
16
|
+
let allowSelfSigned = isDevelopmentDomain(url);
|
|
17
|
+
return fetch(url, {
|
|
18
|
+
...args,
|
|
19
|
+
dispatcher: allowSelfSigned ? agent : undefined,
|
|
20
|
+
headers,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
setGlobalDispatcher(agent);
|
|
24
|
+
function isDevelopmentDomain(url) {
|
|
25
|
+
const hostname = typeof url === "string" ? new URL(url).hostname : url.hostname;
|
|
26
|
+
return !!hostname?.match(/(^[0-9\.]+$|\.local$)/);
|
|
27
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Code } from "ts-poet";
|
|
2
|
+
import { Project } from "../project/project.js";
|
|
3
|
+
type VirtualFile = {
|
|
4
|
+
name: string;
|
|
5
|
+
content: string | Code;
|
|
6
|
+
};
|
|
7
|
+
type CodeGenerator = {
|
|
8
|
+
getFiles(): Promise<VirtualFile | VirtualFile[] | null>;
|
|
9
|
+
susbcribe?(callback: () => void): () => void;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* A codegen utility that allows you to procedurally and reactively generate files, to be flushed to the FS.
|
|
13
|
+
*/
|
|
14
|
+
export declare class FSCodegen {
|
|
15
|
+
project: Project;
|
|
16
|
+
opts: {
|
|
17
|
+
outDir: string;
|
|
18
|
+
onWritten?: (opts: Set<string>) => void;
|
|
19
|
+
};
|
|
20
|
+
outDir: string;
|
|
21
|
+
private generators;
|
|
22
|
+
private generatorFiles;
|
|
23
|
+
private unsubscribers;
|
|
24
|
+
private flushScheduled;
|
|
25
|
+
constructor(project: Project, opts: {
|
|
26
|
+
outDir: string;
|
|
27
|
+
onWritten?: (opts: Set<string>) => void;
|
|
28
|
+
});
|
|
29
|
+
register(generator: CodeGenerator): void;
|
|
30
|
+
registerFile({ name, generate, subscribe, }: {
|
|
31
|
+
name: string;
|
|
32
|
+
generate: (() => string | Code | Promise<string | Code>) | string | Code;
|
|
33
|
+
subscribe?: (callback: () => void) => () => void;
|
|
34
|
+
}): void;
|
|
35
|
+
private runGenerator;
|
|
36
|
+
scheduleFlush(): void;
|
|
37
|
+
runAndWatch(): Promise<void>;
|
|
38
|
+
run(): Promise<void>;
|
|
39
|
+
private flush;
|
|
40
|
+
stop(): void;
|
|
41
|
+
}
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Code } from "ts-poet";
|
|
2
|
+
import { globby } from "globby";
|
|
3
|
+
import { fs } from "./fs.js";
|
|
4
|
+
import { join, resolve } from "path";
|
|
5
|
+
/**
|
|
6
|
+
* A codegen utility that allows you to procedurally and reactively generate files, to be flushed to the FS.
|
|
7
|
+
*/
|
|
8
|
+
export class FSCodegen {
|
|
9
|
+
project;
|
|
10
|
+
opts;
|
|
11
|
+
outDir;
|
|
12
|
+
generators = new Set();
|
|
13
|
+
generatorFiles = new Map();
|
|
14
|
+
unsubscribers = new Set();
|
|
15
|
+
flushScheduled = false;
|
|
16
|
+
constructor(project, opts) {
|
|
17
|
+
this.project = project;
|
|
18
|
+
this.opts = opts;
|
|
19
|
+
this.outDir = opts.outDir;
|
|
20
|
+
}
|
|
21
|
+
register(generator) {
|
|
22
|
+
this.generators.add(generator);
|
|
23
|
+
}
|
|
24
|
+
registerFile({ name, generate, subscribe, }) {
|
|
25
|
+
this.register({
|
|
26
|
+
async getFiles() {
|
|
27
|
+
return {
|
|
28
|
+
name,
|
|
29
|
+
content: generate instanceof Code ? generate.toString() : typeof generate === "string" ? generate : await generate(),
|
|
30
|
+
};
|
|
31
|
+
},
|
|
32
|
+
susbcribe: subscribe,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
async runGenerator(generator) {
|
|
36
|
+
const files = await generator.getFiles();
|
|
37
|
+
this.generatorFiles.set(generator, files ? (Array.isArray(files) ? files : [files]) : []);
|
|
38
|
+
this.scheduleFlush();
|
|
39
|
+
}
|
|
40
|
+
scheduleFlush() {
|
|
41
|
+
if (this.flushScheduled) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
this.flushScheduled = true;
|
|
45
|
+
setTimeout(() => {
|
|
46
|
+
this.flushScheduled = false;
|
|
47
|
+
this.flush();
|
|
48
|
+
}, 100);
|
|
49
|
+
}
|
|
50
|
+
async runAndWatch() {
|
|
51
|
+
await Promise.all(Array.from(this.generators).map((generator) => {
|
|
52
|
+
return new Promise((resolve) => {
|
|
53
|
+
let first = true;
|
|
54
|
+
if (generator.susbcribe) {
|
|
55
|
+
// Subscribe and run at least once
|
|
56
|
+
this.unsubscribers.add(generator.susbcribe(() => {
|
|
57
|
+
if (first) {
|
|
58
|
+
first = false;
|
|
59
|
+
this.runGenerator(generator).then(resolve);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
this.runGenerator(generator);
|
|
63
|
+
}
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
// Just run once, since there is no subscriber
|
|
68
|
+
this.runGenerator(generator).then(resolve);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}));
|
|
72
|
+
await this.flush();
|
|
73
|
+
}
|
|
74
|
+
async run() {
|
|
75
|
+
await Promise.all(Array.from(this.generators).map((generator) => this.runGenerator(generator)));
|
|
76
|
+
await this.flush();
|
|
77
|
+
}
|
|
78
|
+
async flush() {
|
|
79
|
+
const files = Array.from(this.generatorFiles.values()).flat();
|
|
80
|
+
const existing = (await globby(join(this.outDir, "/**/*"))).map((path) => resolve(this.project.rootDir, path));
|
|
81
|
+
const written = new Set();
|
|
82
|
+
await Promise.all(files.map(async (file) => {
|
|
83
|
+
const path = join(this.project.rootDir, this.outDir, file.name);
|
|
84
|
+
written.add(resolve(this.project.rootDir, path));
|
|
85
|
+
await fs.writeIfUnchanged(path, file.content.toString());
|
|
86
|
+
}));
|
|
87
|
+
await Promise.all(existing.map(async (path) => {
|
|
88
|
+
if (!written.has(path)) {
|
|
89
|
+
await fs.rm(path);
|
|
90
|
+
}
|
|
91
|
+
}));
|
|
92
|
+
this.opts.onWritten?.(written);
|
|
93
|
+
}
|
|
94
|
+
stop() {
|
|
95
|
+
this.unsubscribers.forEach((unsub) => unsub());
|
|
96
|
+
this.unsubscribers.clear();
|
|
97
|
+
}
|
|
98
|
+
}
|
package/dist/node/utils/fs.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import * as nodeFs from "fs/promises";
|
|
2
|
+
import { dirname } from "path";
|
|
2
3
|
export const fs = {
|
|
3
4
|
...nodeFs,
|
|
4
5
|
writeIfUnchanged: async (path, content) => {
|
|
6
|
+
await fs.mkdirp(dirname(path));
|
|
5
7
|
try {
|
|
6
8
|
const currentContent = await nodeFs.readFile(path, "utf8");
|
|
7
9
|
if (currentContent === content)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { cliMode } from "../cli/cli-mode.js";
|
|
2
|
-
import { eachFormattedZodError } from "./
|
|
2
|
+
import { eachFormattedZodError } from "./format-zod-error.js";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
let logId = 0;
|
|
5
5
|
const getID = () => logId++;
|
|
@@ -133,6 +133,8 @@ export class StatefulLog {
|
|
|
133
133
|
this.notifySubscribers();
|
|
134
134
|
}
|
|
135
135
|
addLogEntry(kind, ...messages) {
|
|
136
|
+
// We ignore SSL errors in dev mode.
|
|
137
|
+
// if (typeof messages[0] === "string" && messages[0].includes("NODE_TLS_REJECT_UNAUTHORIZED")) return
|
|
136
138
|
if (cliMode.interactive) {
|
|
137
139
|
const entry = {
|
|
138
140
|
id: getID(),
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
type FileList = string[];
|
|
2
|
+
type Disposer = () => void;
|
|
3
|
+
export type FileWatchEvent = "added" | "deleted" | "changed";
|
|
4
|
+
export type FileEvent = {
|
|
5
|
+
type: FileWatchEvent;
|
|
6
|
+
file: string;
|
|
7
|
+
};
|
|
8
|
+
type WatchTreeOpts = {
|
|
9
|
+
pattern: string | string[];
|
|
10
|
+
ignore?: string[];
|
|
11
|
+
callback: (files: FileList, event?: FileEvent) => void;
|
|
12
|
+
};
|
|
13
|
+
export declare function watchFileTree({ pattern, callback, ignore }: WatchTreeOpts): Promise<Disposer>;
|
|
14
|
+
type WatchTreeChangesOpts = {
|
|
15
|
+
pattern: string | string[];
|
|
16
|
+
ignore?: string | RegExp | string[];
|
|
17
|
+
callback: (event: FileEvent) => void;
|
|
18
|
+
};
|
|
19
|
+
export declare function watchFileTreeForChanges({ pattern, callback, ignore }: WatchTreeChangesOpts): Promise<Disposer>;
|
|
20
|
+
type GetTreeOpts = {
|
|
21
|
+
pattern: string | string[];
|
|
22
|
+
ignore?: string[];
|
|
23
|
+
};
|
|
24
|
+
export declare function getFileTree(opts: GetTreeOpts): Promise<FileList>;
|
|
25
|
+
export {};
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import chokidar from "chokidar";
|
|
2
2
|
import { globby } from "globby";
|
|
3
|
-
export function watchFileTree(pattern, callback) {
|
|
3
|
+
export function watchFileTree({ pattern, callback, ignore }) {
|
|
4
4
|
const files = [];
|
|
5
5
|
let ready = false;
|
|
6
6
|
return new Promise((resolve) => {
|
|
7
7
|
const watcher = chokidar
|
|
8
|
-
.watch(pattern
|
|
8
|
+
.watch(pattern, {
|
|
9
|
+
ignored: ignore,
|
|
10
|
+
})
|
|
9
11
|
.on("add", (path) => {
|
|
10
12
|
files.push(path);
|
|
11
13
|
if (ready)
|
|
@@ -31,7 +33,7 @@ export function watchFileTree(pattern, callback) {
|
|
|
31
33
|
});
|
|
32
34
|
});
|
|
33
35
|
}
|
|
34
|
-
export function watchFileTreeForChanges(pattern, callback) {
|
|
36
|
+
export function watchFileTreeForChanges({ pattern, callback, ignore }) {
|
|
35
37
|
let ready = false;
|
|
36
38
|
return new Promise((resolve) => {
|
|
37
39
|
const watcher = chokidar
|
|
@@ -50,9 +52,14 @@ export function watchFileTreeForChanges(pattern, callback) {
|
|
|
50
52
|
})
|
|
51
53
|
.on("ready", () => {
|
|
52
54
|
ready = true;
|
|
55
|
+
resolve(() => {
|
|
56
|
+
watcher.close();
|
|
57
|
+
});
|
|
53
58
|
});
|
|
54
59
|
});
|
|
55
60
|
}
|
|
56
|
-
export function getFileTree(
|
|
57
|
-
return globby(pattern
|
|
61
|
+
export function getFileTree(opts) {
|
|
62
|
+
return globby(opts.pattern, {
|
|
63
|
+
ignore: opts.ignore,
|
|
64
|
+
});
|
|
58
65
|
}
|