@wix/astro 0.1.1 → 0.2.0

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.
@@ -1,20 +1,13 @@
1
- import type { CacheStorage as CLOUDFLARE_CACHESTORAGE, Request as CLOUDFLARE_REQUEST, ExecutionContext } from "@cloudflare/workers-types";
1
+ import type { Request as CLOUDFLARE_REQUEST, ExecutionContext } from "@cloudflare/workers-types";
2
2
  import type { SSRManifest } from "astro";
3
- type Env = {
4
- __STATIC_CONTENT: KVNamespace;
5
- ASTRO_STUDIO_APP_TOKEN?: string;
6
- };
7
3
  export interface Runtime<T extends object = object> {
8
4
  runtime: {
9
- env: Env & T;
10
- cf: CLOUDFLARE_REQUEST["cf"];
11
- caches: CLOUDFLARE_CACHESTORAGE;
5
+ env: T;
12
6
  ctx: ExecutionContext;
13
7
  };
14
8
  }
15
9
  export declare function createExports(manifest: SSRManifest): {
16
10
  default: {
17
- fetch: (request: Request & CLOUDFLARE_REQUEST, env: Env, context: ExecutionContext) => Promise<Response>;
11
+ fetch: (request: Request & CLOUDFLARE_REQUEST, env: Record<string, unknown>) => Promise<Response>;
18
12
  };
19
13
  };
20
- export {};
@@ -1,20 +1,19 @@
1
- import { App } from "astro/app";
2
- import { getAssetFromKV } from "@cloudflare/kv-asset-handler";
3
- // @ts-expect-error
4
- import staticContentManifest from "__STATIC_CONTENT_MANIFEST";
5
1
  import { createClient } from "@wix/sdk";
6
- // @ts-expect-error
7
- import wixManifest from "/src/wix/index";
2
+ import { App } from "astro/app";
3
+ import { setGetEnv } from "astro/env/setup";
4
+ import wixManifest from "virtual:wix-manifest";
8
5
  export function createExports(manifest) {
9
6
  const app = new App(manifest);
10
- const runtimeManifest = wixManifest;
11
7
  const client = createClient({});
12
- for (const extension of runtimeManifest.extensions) {
13
- if ("register" in extension) {
14
- extension.register(client);
8
+ if (wixManifest) {
9
+ for (const extension of wixManifest.extensions) {
10
+ if ("register" in extension) {
11
+ extension.register(client);
12
+ }
15
13
  }
16
14
  }
17
- const fetch = async (request, env, context) => {
15
+ const fetch = async (request, env) => {
16
+ setGetEnv((key) => typeof env[key] === "string" ? env[key] : JSON.stringify(env[key]));
18
17
  const { pathname } = new URL(request.url);
19
18
  if (request.method === "POST" && pathname.startsWith("/_wix/events")) {
20
19
  await client.webhooks.processRequest(request);
@@ -24,37 +23,8 @@ export function createExports(manifest) {
24
23
  pathname.startsWith("/_wix/service-plugins")) {
25
24
  return client.servicePlugins.processRequest(request);
26
25
  }
27
- const routeData = app.match(request);
28
- if (!routeData) {
29
- return await getAssetFromKV({
30
- request,
31
- waitUntil: context.waitUntil.bind(context),
32
- }, {
33
- ASSET_NAMESPACE: env.__STATIC_CONTENT,
34
- ASSET_MANIFEST: JSON.parse(staticContentManifest),
35
- cacheControl: {
36
- bypassCache: true,
37
- },
38
- });
39
- }
40
26
  Reflect.set(request, Symbol.for("astro.clientAddress"), request.headers.get("cf-connecting-ip"));
41
- process.env["ASTRO_STUDIO_APP_TOKEN"] ??= (() => {
42
- if (typeof env.ASTRO_STUDIO_APP_TOKEN === "string") {
43
- return env.ASTRO_STUDIO_APP_TOKEN;
44
- }
45
- })();
46
- const locals = {
47
- runtime: {
48
- env: env,
49
- cf: request.cf,
50
- caches: caches,
51
- ctx: {
52
- waitUntil: (promise) => context.waitUntil(promise),
53
- passThroughOnException: () => context.passThroughOnException(),
54
- },
55
- },
56
- };
57
- const response = await app.render(request, { routeData, locals });
27
+ const response = await app.render(request);
58
28
  if (app.setCookieHeaders) {
59
29
  for (const setCookieHeader of app.setCookieHeaders(response)) {
60
30
  response.headers.append("Set-Cookie", setCookieHeader);
@@ -64,4 +34,4 @@ export function createExports(manifest) {
64
34
  };
65
35
  return { default: { fetch } };
66
36
  }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VudHJ5cG9pbnRzL3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxtQkFBbUI7QUFDbkIsT0FBTyxxQkFBcUIsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXhDLG1CQUFtQjtBQUNuQixPQUFPLFdBQVcsTUFBTSxnQkFBZ0IsQ0FBQztBQWdCekMsTUFBTSxVQUFVLGFBQWEsQ0FBQyxRQUFxQjtJQUNqRCxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QixNQUFNLGVBQWUsR0FBYSxXQUFXLENBQUM7SUFDOUMsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLEtBQUssTUFBTSxTQUFTLElBQUksZUFBZSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ25ELElBQUksVUFBVSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQzVCLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxLQUFLLEVBQ2pCLE9BQXFDLEVBQ3JDLEdBQVEsRUFDUixPQUF5QixFQUN6QixFQUFFO1FBQ0YsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUxQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssTUFBTSxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUNyRSxNQUFNLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FB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
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VudHJ5cG9pbnRzL3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXhDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sV0FBVyxNQUFNLHNCQUFzQixDQUFDO0FBUy9DLE1BQU0sVUFBVSxhQUFhLENBQUMsUUFBcUI7SUFDakQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUIsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLElBQUksV0FBVyxFQUFFLENBQUM7UUFDaEIsS0FBSyxNQUFNLFNBQVMsSUFBSSxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0MsSUFBSSxVQUFVLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQzVCLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxFQUNqQixPQUFxQyxFQUNyQyxHQUE0QixFQUM1QixFQUFFO1FBQ0YsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDaEIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ25FLENBQUM7UUFFRixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTFDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxNQUFNLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3JFLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsSUFDRSxPQUFPLENBQUMsTUFBTSxLQUFLLE1BQU07WUFDekIsUUFBUSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxFQUM1QyxDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FDVCxPQUFPLEVBQ1AsTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxFQUNqQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUN4QyxDQUFDO1FBRUYsTUFBTSxRQUFRLEdBQUcsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTNDLElBQUksR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDekIsS0FBSyxNQUFNLGVBQWUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDN0QsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ3pELENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7QUFDaEMsQ0FBQyJ9
@@ -1,25 +1 @@
1
- import { BuildEventDefinition, BuildServicePluginDefinition, EventDefinition, ServicePluginDefinition, WixClient } from "@wix/sdk";
2
- export type WixExtensionsRegistrar = {
3
- on<T extends EventDefinition>(event: T, ...args: Parameters<BuildEventDefinition<T>>): Manifest & WixExtensionsRegistrar;
4
- provide<T extends ServicePluginDefinition<any>>(servicePlugin: {
5
- provideHandlers: T;
6
- }, config: unknown, ...impl: Parameters<BuildServicePluginDefinition<T>>): Manifest & WixExtensionsRegistrar;
7
- plugin(manifest: Manifest): Manifest & WixExtensionsRegistrar;
8
- permissions(permissions: string[]): Manifest & WixExtensionsRegistrar;
9
- };
10
- export type Manifest = {
11
- extensions: Array<{
12
- type: "ServicePlugin";
13
- componentType: string;
14
- config: unknown;
15
- register(client: WixClient): void;
16
- } | {
17
- type: "EventHandler";
18
- webhookSlug: string;
19
- register(client: WixClient): void;
20
- } | {
21
- type: "Permission";
22
- permission: string;
23
- }>;
24
- };
25
- export declare const manifest: Manifest & WixExtensionsRegistrar;
1
+ export * from "@wix/vite-plugin-wix-manifest/extensions";
@@ -1,54 +1,2 @@
1
- function wixManifestRegistrar(manifest = { extensions: [] }) {
2
- return {
3
- ...manifest,
4
- plugin(manifest) {
5
- return wixManifestRegistrar({
6
- extensions: [...this.extensions, ...manifest.extensions],
7
- });
8
- },
9
- on(event, ...args) {
10
- const newManifest = {
11
- ...manifest,
12
- extensions: [
13
- ...manifest.extensions,
14
- {
15
- type: "EventHandler",
16
- webhookSlug: event.type,
17
- register: (client) => client.use(event)(...args),
18
- },
19
- ],
20
- };
21
- return wixManifestRegistrar(newManifest);
22
- },
23
- provide(servicePlugin, config, ...impl) {
24
- const newManifest = {
25
- ...manifest,
26
- extensions: [
27
- ...manifest.extensions,
28
- {
29
- type: "ServicePlugin",
30
- componentType: servicePlugin.provideHandlers.componentType,
31
- config,
32
- register: (client) => client.use(servicePlugin.provideHandlers)(...impl),
33
- },
34
- ],
35
- };
36
- return wixManifestRegistrar(newManifest);
37
- },
38
- permissions(permissions) {
39
- const newManifest = {
40
- ...manifest,
41
- extensions: [
42
- ...manifest.extensions,
43
- ...permissions.map((permission) => ({
44
- type: "Permission",
45
- permission,
46
- })),
47
- ],
48
- };
49
- return wixManifestRegistrar(newManifest);
50
- },
51
- };
52
- }
53
- export const manifest = wixManifestRegistrar();
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9leHRlbnNpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVDQSxTQUFTLG9CQUFvQixDQUMzQixXQUFxQixFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUU7SUFFdkMsT0FBTztRQUNMLEdBQUcsUUFBUTtRQUNYLE1BQU0sQ0FBQyxRQUFRO1lBQ2IsT0FBTyxvQkFBb0IsQ0FBQztnQkFDMUIsVUFBVSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQzthQUN6RCxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsRUFBRSxDQUNBLEtBQVEsRUFDUixHQUFHLElBQXlDO1lBRTVDLE1BQU0sV0FBVyxHQUFhO2dCQUM1QixHQUFHLFFBQVE7Z0JBQ1gsVUFBVSxFQUFFO29CQUNWLEdBQUcsUUFBUSxDQUFDLFVBQVU7b0JBQ3RCO3dCQUNFLElBQUksRUFBRSxjQUFjO3dCQUNwQixXQUFXLEVBQUUsS0FBSyxDQUFDLElBQUk7d0JBQ3ZCLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ2xCLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUE2QixDQUFDLEdBQUcsSUFBSSxDQUFDO3FCQUMxRDtpQkFDRjthQUNGLENBQUM7WUFFRixPQUFPLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFDRCxPQUFPLENBQ0wsYUFBcUMsRUFDckMsTUFBZSxFQUNmLEdBQUcsSUFBaUQ7WUFFcEQsTUFBTSxXQUFXLEdBQWE7Z0JBQzVCLEdBQUcsUUFBUTtnQkFDWCxVQUFVLEVBQUU7b0JBQ1YsR0FBRyxRQUFRLENBQUMsVUFBVTtvQkFDdEI7d0JBQ0UsSUFBSSxFQUFFLGVBQWU7d0JBQ3JCLGFBQWEsRUFBRSxhQUFhLENBQUMsZUFBZSxDQUFDLGFBQWE7d0JBQzFELE1BQU07d0JBQ04sUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FFakIsTUFBTSxDQUFDLEdBQUcsQ0FDUixhQUFhLENBQUMsZUFBZSxDQUVoQyxDQUFDLEdBQUcsSUFBSSxDQUFDO3FCQUNiO2lCQUNGO2FBQ0YsQ0FBQztZQUVGLE9BQU8sb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELFdBQVcsQ0FBQyxXQUFxQjtZQUMvQixNQUFNLFdBQVcsR0FBYTtnQkFDNUIsR0FBRyxRQUFRO2dCQUNYLFVBQVUsRUFBRTtvQkFDVixHQUFHLFFBQVEsQ0FBQyxVQUFVO29CQUN0QixHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ2xDLElBQUksRUFBRSxZQUFxQjt3QkFDM0IsVUFBVTtxQkFDWCxDQUFDLENBQUM7aUJBQ0o7YUFDRixDQUFDO1lBRUYsT0FBTyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQyxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQyJ9
1
+ export * from "@wix/vite-plugin-wix-manifest/extensions";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9leHRlbnNpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMENBQTBDLENBQUMifQ==
package/dist/index.d.ts CHANGED
@@ -1,33 +1,3 @@
1
1
  import type { AstroIntegration } from "astro";
2
2
  export type { Runtime } from "./entrypoints/server.js";
3
- export type Options = {
4
- /** Options for handling images. */
5
- imageService?: "passthrough" | "cloudflare" | "compile" | "custom";
6
- /** Configuration for `_routes.json` generation. A _routes.json file controls when your Function is invoked. This file will include three different properties:
7
- *
8
- * - version: Defines the version of the schema. Currently there is only one version of the schema (version 1), however, we may add more in the future and aim to be backwards compatible.
9
- * - include: Defines routes that will be invoked by Functions. Accepts wildcard behavior.
10
- * - exclude: Defines routes that will not be invoked by Functions. Accepts wildcard behavior. `exclude` always take priority over `include`.
11
- *
12
- * Wildcards match any number of path segments (slashes). For example, `/users/*` will match everything after the `/users/` path.
13
- *
14
- */
15
- routes?: {
16
- /** Extend `_routes.json` */
17
- extend: {
18
- /** Paths which should be routed to the SSR function */
19
- include?: {
20
- /** Generally this is in pathname format, but does support wildcards, e.g. `/users`, `/products/*` */
21
- pattern: string;
22
- }[];
23
- /** Paths which should be routed as static assets */
24
- exclude?: {
25
- /** Generally this is in pathname format, but does support wildcards, e.g. `/static`, `/assets/*`, `/images/avatar.jpg` */
26
- pattern: string;
27
- }[];
28
- };
29
- };
30
- /** Enable WebAssembly support */
31
- wasmModuleImports?: boolean;
32
- };
33
- export default function createIntegration(args?: Options): AstroIntegration;
3
+ export default function createIntegration(): AstroIntegration;
package/dist/index.js CHANGED
@@ -1,29 +1,14 @@
1
- import { appendForwardSlash, prependForwardSlash, removeLeadingForwardSlash, } from "@astrojs/internal-helpers/path";
2
- import { createRedirectsFromAstroRoutes } from "@astrojs/underscore-redirects";
3
- import { AstroError } from "astro/errors";
4
- import { walk } from "estree-walker";
5
- import MagicString from "magic-string";
6
- import { createReadStream } from "node:fs";
7
- import { appendFile, rename, stat, unlink } from "node:fs/promises";
1
+ import { appendForwardSlash, prependForwardSlash, } from "@astrojs/internal-helpers/path";
8
2
  import { createRequire } from "node:module";
9
- import { createInterface } from "node:readline/promises";
10
- import { createRoutesFile, getParts } from "./utils/generate-routes-json.js";
11
- import { setImageConfig } from "./utils/image-config.js";
12
- import { mutateDynamicPageImportsInPlace, mutatePageMapInPlace, } from "./utils/index.js";
13
- import { NonServerChunkDetector } from "./utils/non-server-chunk-detector.js";
14
- import { wasmModuleLoader } from "./utils/wasm-module-loader.js";
3
+ import { wixManifest } from "@wix/vite-plugin-wix-manifest";
15
4
  import { buildResolver } from "esm-resolve";
16
5
  import { fileURLToPath } from "node:url";
17
- export default function createIntegration(args) {
6
+ export default function createIntegration() {
18
7
  let _config;
19
- // Initialize the unused chunk analyzer as a shared state between hooks.
20
- // The analyzer is used on earlier hooks to collect information about used hooks on a Vite plugin
21
- // and then later after the full build to clean up unused chunks, so it has to be shared between them.
22
- const chunkAnalyzer = new NonServerChunkDetector();
23
8
  return {
24
- name: "@astrojs/cloudflare",
9
+ name: "@wix/astro",
25
10
  hooks: {
26
- "astro:config:setup": async ({ command, config, updateConfig, logger, addMiddleware, injectRoute, }) => {
11
+ "astro:config:setup": async ({ config, updateConfig, addMiddleware }) => {
27
12
  const aRequire = buildResolver(fileURLToPath(import.meta.url), {
28
13
  resolveToAbsolute: true,
29
14
  });
@@ -31,102 +16,70 @@ export default function createIntegration(args) {
31
16
  entrypoint: aRequire("./middleware"),
32
17
  order: "pre",
33
18
  });
34
- injectRoute({
35
- entrypoint: aRequire("./entrypoints/manifest"),
36
- pattern: "/_wix/manifest.json",
37
- prerender: true,
38
- });
39
19
  updateConfig({
20
+ env: {
21
+ schema: {
22
+ WIX_CLIENT_ID: {
23
+ type: "string",
24
+ access: "public",
25
+ context: "client",
26
+ optional: true,
27
+ },
28
+ WIX_CLIENT_SECRET: {
29
+ type: "string",
30
+ access: "secret",
31
+ context: "server",
32
+ optional: true,
33
+ },
34
+ WIX_CLIENT_PUBLIC_KEY: {
35
+ type: "string",
36
+ access: "secret",
37
+ context: "server",
38
+ optional: true,
39
+ },
40
+ WIX_CLIENT_INSTANCE_ID: {
41
+ type: "string",
42
+ access: "secret",
43
+ context: "server",
44
+ optional: true,
45
+ },
46
+ },
47
+ },
40
48
  build: {
41
- client: new URL(`.${prependForwardSlash(appendForwardSlash(config.base))}`, config.outDir),
42
- server: new URL("./_worker.js/", config.outDir),
49
+ client: new URL(`./client${prependForwardSlash(appendForwardSlash(config.base))}`, config.outDir),
50
+ server: new URL("./server/", config.outDir),
43
51
  serverEntry: "index.js",
44
52
  redirects: false,
45
53
  },
46
54
  vite: {
47
- // load .wasm files as WebAssembly modules
48
55
  plugins: [
49
- wasmModuleLoader({
50
- disabled: !args?.wasmModuleImports,
51
- }),
52
- chunkAnalyzer.getPlugin(),
53
- {
54
- name: "dynamic-imports-analyzer",
55
- enforce: "post",
56
- generateBundle(_, bundle) {
57
- let astrojsSSRVirtualEntryAST;
58
- const prerenderImports = [];
59
- let entryChunk;
60
- // Find all pages (ignore the ssr entrypoint) which are prerendered based on the dynamic imports of the prerender chunk
61
- for (const chunk of Object.values(bundle)) {
62
- if (chunk.type !== "chunk")
63
- continue;
64
- if (chunk.name === "_@astrojs-ssr-virtual-entry") {
65
- astrojsSSRVirtualEntryAST = this.parse(chunk.code);
66
- entryChunk = chunk;
67
- continue;
68
- }
69
- const isPrerendered = chunk.dynamicImports.some((entry) => entry.includes("prerender"));
70
- if (isPrerendered) {
71
- prerenderImports.push(chunk.fileName);
72
- }
73
- }
74
- if (!astrojsSSRVirtualEntryAST)
75
- return;
76
- if (!entryChunk)
77
- return;
78
- const s = new MagicString(entryChunk.code);
79
- const constsToRemove = [];
80
- walk(astrojsSSRVirtualEntryAST, {
81
- leave(node) {
82
- // We are only looking for VariableDeclarations, since both (dynamic imports and pageMap) are declared as constants in the code
83
- if (node.type !== "VariableDeclaration")
84
- return;
85
- if (!node.declarations[0] ||
86
- node.declarations[0].type !== "VariableDeclarator")
87
- return;
88
- // This function will remove the dynamic imports from the entrypoint
89
- mutateDynamicPageImportsInPlace(node, prerenderImports, constsToRemove, s);
90
- // This function will remove the pageMap entries which are invalid now
91
- mutatePageMapInPlace(node, constsToRemove, s);
92
- },
93
- });
94
- entryChunk.code = s.toString();
95
- },
96
- },
97
56
  // The plugin is used to inject the Wix SDK context into the client bundle
98
57
  // It's currently commented out because there are some issues with the current implementation
99
58
  // (currently the magic import is injected into any type of module, not only JS)
100
59
  // not sure if it's necessary to inject the Wix SDK context into the client bundle
101
60
  // wixSDKContext(),
61
+ wixManifest(),
102
62
  ],
103
63
  },
104
- image: setImageConfig(args?.imageService ?? "DEFAULT", config.image, command, logger),
105
64
  });
106
65
  },
107
66
  "astro:config:done": async ({ setAdapter, config }) => {
108
67
  _config = config;
109
- if (config.output === "static") {
110
- throw new AstroError('[@astrojs/cloudflare] `output: "server"` or `output: "hybrid"` is required to use this adapter. Otherwise, this adapter is not necessary to deploy a static site to Cloudflare.');
111
- }
112
68
  setAdapter({
113
69
  name: "@astrojs/wix",
114
70
  serverEntrypoint: createRequire(import.meta.url).resolve("./entrypoints/server"),
115
71
  exports: ["default"],
116
72
  adapterFeatures: {
117
- functionPerRoute: false,
118
73
  edgeMiddleware: false,
74
+ buildOutput: "server",
119
75
  },
120
76
  supportedAstroFeatures: {
121
77
  serverOutput: "stable",
122
78
  hybridOutput: "stable",
123
79
  staticOutput: "unsupported",
124
80
  i18nDomains: "experimental",
125
- assets: {
126
- supportKind: "stable",
127
- isSharpCompatible: false,
128
- isSquooshCompatible: false,
129
- },
81
+ sharpImageService: "limited",
82
+ envGetSecret: "experimental",
130
83
  },
131
84
  });
132
85
  },
@@ -134,21 +87,6 @@ export default function createIntegration(args) {
134
87
  if (target === "server") {
135
88
  vite.resolve ||= {};
136
89
  vite.resolve.alias ||= {};
137
- const aliases = [
138
- {
139
- find: "react-dom/server",
140
- replacement: "react-dom/server.browser",
141
- },
142
- ];
143
- if (Array.isArray(vite.resolve.alias)) {
144
- vite.resolve.alias = [...vite.resolve.alias, ...aliases];
145
- }
146
- else {
147
- for (const alias of aliases) {
148
- vite.resolve.alias[alias.find] =
149
- alias.replacement;
150
- }
151
- }
152
90
  vite.resolve.conditions ||= [];
153
91
  // We need those conditions, previous these conditions where applied at the esbuild step which we removed
154
92
  // https://github.com/withastro/astro/pull/7092
@@ -168,22 +106,6 @@ export default function createIntegration(args) {
168
106
  vite.ssr.external = _config.vite.ssr?.external.filter((entry) => entry !== "@vue/server-renderer");
169
107
  vite.ssr.external.push("node:async_hooks");
170
108
  }
171
- vite.build ||= {};
172
- vite.build.rollupOptions ||= {};
173
- vite.build.rollupOptions.output ||= {};
174
- // @ts-expect-error
175
- vite.build.rollupOptions.output.banner ||=
176
- "globalThis.process ??= {}; globalThis.process.env ??= {};";
177
- vite.build.rollupOptions.external =
178
- _config.vite.build?.rollupOptions?.external ?? [];
179
- // @ts-expect-error
180
- vite.build.rollupOptions.external.push("__STATIC_CONTENT_MANIFEST");
181
- // Cloudflare env is only available per request. This isn't feasible for code that access env vars
182
- // in a global way, so we shim their access as `process.env.*`. This is not the recommended way for users to access environment variables. But we'll add this for compatibility for chosen variables. Mainly to support `@astrojs/db`
183
- vite.define = {
184
- "process.env": "process.env",
185
- ...vite.define,
186
- };
187
109
  }
188
110
  // we thought that vite config inside `if (target === 'server')` would not apply for client
189
111
  // but it seems like the same `vite` reference is used for both
@@ -195,96 +117,7 @@ export default function createIntegration(args) {
195
117
  vite.resolve.conditions = vite.resolve.conditions.filter((c) => c !== "workerd" && c !== "worker");
196
118
  }
197
119
  },
198
- "astro:build:done": async ({ pages, routes, dir, logger }) => {
199
- const PLATFORM_FILES = ["_headers", "_redirects", "_routes.json"];
200
- if (_config.base !== "/") {
201
- for (const file of PLATFORM_FILES) {
202
- try {
203
- await rename(new URL(file, _config.build.client), new URL(file, _config.outDir));
204
- }
205
- catch (e) {
206
- logger.error(`There was an error moving ${file} to the root of the output directory.`);
207
- }
208
- }
209
- }
210
- let redirectsExists = false;
211
- try {
212
- const redirectsStat = await stat(new URL("./_redirects", _config.outDir));
213
- if (redirectsStat.isFile()) {
214
- redirectsExists = true;
215
- }
216
- }
217
- catch (error) {
218
- redirectsExists = false;
219
- }
220
- const redirects = [];
221
- if (redirectsExists) {
222
- const rl = createInterface({
223
- input: createReadStream(new URL("./_redirects", _config.outDir)),
224
- crlfDelay: Number.POSITIVE_INFINITY,
225
- });
226
- for await (const line of rl) {
227
- const parts = line.split(" ");
228
- if (parts.length >= 2) {
229
- const p = removeLeadingForwardSlash(parts[0])
230
- .split("/")
231
- .filter(Boolean)
232
- .map((s) => {
233
- const syntax = s
234
- .replace(/\/:.*?(?=\/|$)/g, "/*")
235
- // remove query params as they are not supported by cloudflare
236
- .replace(/\?.*$/, "");
237
- return getParts(syntax);
238
- });
239
- redirects.push(p);
240
- }
241
- }
242
- }
243
- let routesExists = false;
244
- try {
245
- const routesStat = await stat(new URL("./_routes.json", _config.outDir));
246
- if (routesStat.isFile()) {
247
- routesExists = true;
248
- }
249
- }
250
- catch (error) {
251
- routesExists = false;
252
- }
253
- if (!routesExists) {
254
- await createRoutesFile(_config, logger, routes, pages, redirects, args?.routes?.extend?.include, args?.routes?.extend?.exclude);
255
- }
256
- const redirectRoutes = [];
257
- for (const route of routes) {
258
- if (route.type === "redirect")
259
- redirectRoutes.push([route, ""]);
260
- }
261
- const trueRedirects = createRedirectsFromAstroRoutes({
262
- config: _config,
263
- routeToDynamicTargetMap: new Map(Array.from(redirectRoutes)),
264
- dir,
265
- });
266
- if (!trueRedirects.empty()) {
267
- try {
268
- await appendFile(new URL("./_redirects", _config.outDir), trueRedirects.print());
269
- }
270
- catch (error) {
271
- logger.error("Failed to write _redirects file");
272
- }
273
- }
274
- // Get chunks from the bundle that are not needed on the server and delete them
275
- // Those modules are build only for prerendering routes.
276
- const chunksToDelete = chunkAnalyzer.getNonServerChunks();
277
- for (const chunk of chunksToDelete) {
278
- try {
279
- // Chunks are located on `./_worker.js` directory inside of the output directory
280
- await unlink(new URL(`./_worker.js/${chunk}`, _config.outDir));
281
- }
282
- catch (error) {
283
- logger.warn(`Issue while trying to delete unused file from server bundle: ${new URL(`./_worker.js/${chunk}`, _config.outDir).toString()}`);
284
- }
285
- }
286
- },
287
120
  },
288
121
  };
289
122
  }
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIseUJBQXlCLEdBQzFCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sV0FBVyxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUNMLCtCQUErQixFQUMvQixvQkFBb0IsR0FDckIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFtQ3pDLE1BQU0sQ0FBQyxPQUFPLFVBQVUsaUJBQWlCLENBQUMsSUFB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
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixtQkFBbUIsR0FDcEIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJekMsTUFBTSxDQUFDLE9BQU8sVUFBVSxpQkFBaUI7SUFDdkMsSUFBSSxPQUFvQixDQUFDO0lBRXpCLE9BQU87UUFDTCxJQUFJLEVBQUUsWUFBWTtRQUNsQixLQUFLLEVBQUU7WUFDTCxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUU7Z0JBQ3RFLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDN0QsaUJBQWlCLEVBQUUsSUFBSTtpQkFDeEIsQ0FBQyxDQUFDO2dCQUVILGFBQWEsQ0FBQztvQkFDWixVQUFVLEVBQUUsUUFBUSxDQUFDLGNBQWMsQ0FBRTtvQkFDckMsS0FBSyxFQUFFLEtBQUs7aUJBQ2IsQ0FBQyxDQUFDO2dCQUVILFlBQVksQ0FBQztvQkFDWCxHQUFHLEVBQUU7d0JBQ0gsTUFBTSxFQUFFOzRCQUNOLGFBQWEsRUFBRTtnQ0FDYixJQUFJLEVBQUUsUUFBUTtnQ0FDZCxNQUFNLEVBQUUsUUFBUTtnQ0FDaEIsT0FBTyxFQUFFLFFBQVE7Z0NBQ2pCLFFBQVEsRUFBRSxJQUFJOzZCQUNmOzRCQUNELGlCQUFpQixFQUFFO2dDQUNqQixJQUFJLEVBQUUsUUFB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