@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.
- package/dist/entrypoints/server.d.ts +3 -10
- package/dist/entrypoints/server.js +12 -42
- package/dist/extensions.d.ts +1 -25
- package/dist/extensions.js +2 -54
- package/dist/index.d.ts +1 -31
- package/dist/index.js +40 -207
- package/dist/middleware.js +24 -35
- package/package.json +14 -12
- package/dist/entrypoints/image-endpoint.d.ts +0 -1
- package/dist/entrypoints/image-endpoint.js +0 -4
- package/dist/entrypoints/image-service.d.ts +0 -3
- package/dist/entrypoints/image-service.js +0 -35
- package/dist/entrypoints/manifest.d.ts +0 -2
- package/dist/entrypoints/manifest.js +0 -6
- package/dist/utils/assets.d.ts +0 -9
- package/dist/utils/assets.js +0 -69
- package/dist/utils/generate-routes-json.d.ts +0 -9
- package/dist/utils/generate-routes-json.js +0 -237
- package/dist/utils/image-config.d.ts +0 -12
- package/dist/utils/image-config.js +0 -30
- package/dist/utils/index.d.ts +0 -8
- package/dist/utils/index.js +0 -59
- package/dist/utils/non-server-chunk-detector.d.ts +0 -14
- package/dist/utils/non-server-chunk-detector.js +0 -73
- package/dist/utils/wasm-module-loader.d.ts +0 -13
- package/dist/utils/wasm-module-loader.js +0 -117
|
@@ -1,20 +1,13 @@
|
|
|
1
|
-
import type {
|
|
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:
|
|
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:
|
|
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
|
-
|
|
7
|
-
import
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
extension
|
|
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
|
|
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
|
-
|
|
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,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VudHJ5cG9pbnRzL3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXhDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sV0FBVyxNQUFNLHNCQUFzQixDQUFDO0FBUy9DLE1BQU0sVUFBVSxhQUFhLENBQUMsUUFBcUI7SUFDakQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUIsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLElBQUksV0FBVyxFQUFFLENBQUM7UUFDaEIsS0FBSyxNQUFNLFNBQVMsSUFBSSxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0MsSUFBSSxVQUFVLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQzVCLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxFQUNqQixPQUFxQyxFQUNyQyxHQUE0QixFQUM1QixFQUFFO1FBQ0YsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDaEIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ25FLENBQUM7UUFFRixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTFDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxNQUFNLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3JFLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsSUFDRSxPQUFPLENBQUMsTUFBTSxLQUFLLE1BQU07WUFDekIsUUFBUSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxFQUM1QyxDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FDVCxPQUFPLEVBQ1AsTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxFQUNqQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUN4QyxDQUFDO1FBRUYsTUFBTSxRQUFRLEdBQUcsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTNDLElBQUksR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDekIsS0FBSyxNQUFNLGVBQWUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDN0QsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ3pELENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7QUFDaEMsQ0FBQyJ9
|
package/dist/extensions.d.ts
CHANGED
|
@@ -1,25 +1 @@
|
|
|
1
|
-
|
|
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";
|
package/dist/extensions.js
CHANGED
|
@@ -1,54 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
|
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,
|
|
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 {
|
|
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(
|
|
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: "@
|
|
9
|
+
name: "@wix/astro",
|
|
25
10
|
hooks: {
|
|
26
|
-
"astro:config:setup": async ({
|
|
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(
|
|
42
|
-
server: new URL("./
|
|
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
|
-
|
|
126
|
-
|
|
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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
|