@webflow/webflow-cli 1.22.0-next.1 → 1.22.0-next.2
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/cloud-scaffolds/registry.ts +2 -2
- package/dist/index.js +112 -93
- package/dist/index.js.map +1 -1
- package/dist/templates/astro/astro.config.webflow.ts +67 -0
- package/dist/templates/astro/v5/astro.config.mjs.template +25 -0
- package/dist/templates/astro/{webflow-loader.ts → v5/webflow-loader.ts} +12 -12
- package/dist/templates/astro/{wrangler.astro.json → v5/wrangler.json} +1 -1
- package/dist/templates/astro/v6/astro.config.mjs.template +34 -0
- package/dist/templates/astro/v6/webflow-loader.ts +122 -0
- package/dist/templates/astro/v6/wrangler.json +9 -0
- package/dist/templates/nextjs/next.config.ts.template +10 -21
- package/dist/templates/nextjs/next.config.webflow.ts +55 -0
- package/dist/templates/nextjs/open-next.config.ts +3 -0
- package/dist/templates/nextjs/webflow-loader.ts +11 -9
- package/dist/templates/vite/vite.config.ts.template +14 -0
- package/dist/templates/vite/vite.config.webflow.ts +58 -0
- package/dist/templates/vite/wrangler.json +10 -0
- package/package.json +1 -1
- package/dist/cloud-scaffolds/__tests__/fetcher.test.ts +0 -249
- package/dist/cloud-scaffolds/__tests__/registry.test.ts +0 -134
- package/dist/templates/astro/astro.config.mjs.template +0 -52
- package/dist/templates/nextjs/next.config.ts +0 -5
- /package/dist/templates/nextjs/{wrangler.nextjs.json → wrangler.json} +0 -0
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
import * as fs from "fs";
|
|
2
|
-
import * as path from "path";
|
|
3
|
-
import os from "os";
|
|
4
|
-
import * as tar from "tar";
|
|
5
|
-
import {
|
|
6
|
-
fetchScaffoldContent,
|
|
7
|
-
getScaffoldContent,
|
|
8
|
-
getScaffoldFromLocal,
|
|
9
|
-
} from "../fetcher";
|
|
10
|
-
import * as registry from "../registry";
|
|
11
|
-
import { ScaffoldError } from "../types";
|
|
12
|
-
|
|
13
|
-
jest.mock("../registry");
|
|
14
|
-
jest.mock("../../../utils/logger", () => ({
|
|
15
|
-
__esModule: true,
|
|
16
|
-
default: {
|
|
17
|
-
spinner: jest.fn(() => ({
|
|
18
|
-
succeed: jest.fn(),
|
|
19
|
-
fail: jest.fn(),
|
|
20
|
-
warn: jest.fn(),
|
|
21
|
-
info: jest.fn(),
|
|
22
|
-
})),
|
|
23
|
-
},
|
|
24
|
-
}));
|
|
25
|
-
|
|
26
|
-
const mockGetFrameworkDefinition =
|
|
27
|
-
registry.getFrameworkDefinition as jest.MockedFunction<
|
|
28
|
-
typeof registry.getFrameworkDefinition
|
|
29
|
-
>;
|
|
30
|
-
const mockToMinimalScaffoldId =
|
|
31
|
-
registry.toMinimalScaffoldId as jest.MockedFunction<
|
|
32
|
-
typeof registry.toMinimalScaffoldId
|
|
33
|
-
>;
|
|
34
|
-
|
|
35
|
-
describe("scaffold fetcher", () => {
|
|
36
|
-
let tempDir: string;
|
|
37
|
-
|
|
38
|
-
beforeEach(() => {
|
|
39
|
-
tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "fetcher-test-"));
|
|
40
|
-
jest.clearAllMocks();
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
afterEach(() => {
|
|
44
|
-
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
describe("getScaffoldFromLocal", () => {
|
|
48
|
-
it("returns ScaffoldContent from local directory", async () => {
|
|
49
|
-
const scaffoldDir = path.join(tempDir, "scaffold");
|
|
50
|
-
fs.mkdirSync(scaffoldDir, { recursive: true });
|
|
51
|
-
fs.writeFileSync(path.join(scaffoldDir, "package.json"), "{}");
|
|
52
|
-
fs.mkdirSync(path.join(scaffoldDir, "src"), { recursive: true });
|
|
53
|
-
fs.writeFileSync(path.join(scaffoldDir, "src", "index.ts"), "// test");
|
|
54
|
-
|
|
55
|
-
mockGetFrameworkDefinition.mockReturnValue({
|
|
56
|
-
id: "test-minimal",
|
|
57
|
-
name: "Test",
|
|
58
|
-
source: {
|
|
59
|
-
type: "local",
|
|
60
|
-
path: path.resolve(scaffoldDir),
|
|
61
|
-
},
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
const result = await getScaffoldFromLocal("test-minimal");
|
|
65
|
-
|
|
66
|
-
expect(result.scaffoldId).toBe("test-minimal");
|
|
67
|
-
expect(result.extractionRoot).toBe(scaffoldDir);
|
|
68
|
-
expect(result.files).toHaveLength(2);
|
|
69
|
-
expect(result.files).toContain(path.join(scaffoldDir, "package.json"));
|
|
70
|
-
expect(result.files).toContain(path.join(scaffoldDir, "src", "index.ts"));
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
it("throws ScaffoldError when source is not local", async () => {
|
|
74
|
-
mockGetFrameworkDefinition.mockReturnValue({
|
|
75
|
-
id: "astro-minimal",
|
|
76
|
-
name: "Astro",
|
|
77
|
-
source: {
|
|
78
|
-
type: "github",
|
|
79
|
-
repo: "Webflow-Examples/hello-world-astro",
|
|
80
|
-
ref: "main",
|
|
81
|
-
},
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
await expect(getScaffoldFromLocal("astro-minimal")).rejects.toThrow(
|
|
85
|
-
ScaffoldError
|
|
86
|
-
);
|
|
87
|
-
await expect(getScaffoldFromLocal("astro-minimal")).rejects.toThrow(
|
|
88
|
-
"does not have a local source"
|
|
89
|
-
);
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
it("throws ScaffoldError when directory does not exist", async () => {
|
|
93
|
-
const missingPath = path.resolve(path.join(tempDir, "nonexistent"));
|
|
94
|
-
|
|
95
|
-
mockGetFrameworkDefinition.mockReturnValue({
|
|
96
|
-
id: "test-minimal",
|
|
97
|
-
name: "Test",
|
|
98
|
-
source: { type: "local", path: missingPath },
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
await expect(getScaffoldFromLocal("test-minimal")).rejects.toThrow(
|
|
102
|
-
ScaffoldError
|
|
103
|
-
);
|
|
104
|
-
await expect(getScaffoldFromLocal("test-minimal")).rejects.toThrow(
|
|
105
|
-
"Scaffold directory not found"
|
|
106
|
-
);
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
describe("fetchScaffoldContent", () => {
|
|
111
|
-
it("dispatches to getScaffoldFromLocal for local source", async () => {
|
|
112
|
-
const scaffoldDir = path.join(tempDir, "scaffold");
|
|
113
|
-
fs.mkdirSync(scaffoldDir, { recursive: true });
|
|
114
|
-
fs.writeFileSync(path.join(scaffoldDir, "package.json"), "{}");
|
|
115
|
-
|
|
116
|
-
mockGetFrameworkDefinition.mockReturnValue({
|
|
117
|
-
id: "test-minimal",
|
|
118
|
-
name: "Test",
|
|
119
|
-
source: { type: "local", path: path.resolve(scaffoldDir) },
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
const result = await fetchScaffoldContent("test-minimal");
|
|
123
|
-
|
|
124
|
-
expect(result.scaffoldId).toBe("test-minimal");
|
|
125
|
-
expect(result.files).toHaveLength(1);
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
it("fetches from GitHub and returns ScaffoldContent", async () => {
|
|
129
|
-
// Create a minimal tarball matching GitHub structure: owner-repo-sha/
|
|
130
|
-
const topLevelDir = "Webflow-Examples-hello-world-astro-abc123";
|
|
131
|
-
const tarballDir = path.join(tempDir, "tarball-src");
|
|
132
|
-
fs.mkdirSync(path.join(tarballDir, topLevelDir), { recursive: true });
|
|
133
|
-
fs.writeFileSync(
|
|
134
|
-
path.join(tarballDir, topLevelDir, "package.json"),
|
|
135
|
-
'{"name":"test"}'
|
|
136
|
-
);
|
|
137
|
-
|
|
138
|
-
const tarballPath = path.join(tempDir, "archive.tar.gz");
|
|
139
|
-
await tar.create(
|
|
140
|
-
{
|
|
141
|
-
gzip: true,
|
|
142
|
-
file: tarballPath,
|
|
143
|
-
cwd: tarballDir,
|
|
144
|
-
},
|
|
145
|
-
[topLevelDir]
|
|
146
|
-
);
|
|
147
|
-
const tarballBuffer = fs.readFileSync(tarballPath);
|
|
148
|
-
|
|
149
|
-
const originalFetch = globalThis.fetch;
|
|
150
|
-
const arrayBuffer = tarballBuffer.buffer.slice(
|
|
151
|
-
tarballBuffer.byteOffset,
|
|
152
|
-
tarballBuffer.byteOffset + tarballBuffer.byteLength
|
|
153
|
-
);
|
|
154
|
-
globalThis.fetch = jest.fn().mockResolvedValue({
|
|
155
|
-
ok: true,
|
|
156
|
-
arrayBuffer: () => Promise.resolve(arrayBuffer),
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
mockGetFrameworkDefinition.mockReturnValue({
|
|
160
|
-
id: "astro-minimal",
|
|
161
|
-
name: "Astro",
|
|
162
|
-
source: {
|
|
163
|
-
type: "github",
|
|
164
|
-
repo: "Webflow-Examples/hello-world-astro",
|
|
165
|
-
ref: "main",
|
|
166
|
-
},
|
|
167
|
-
});
|
|
168
|
-
|
|
169
|
-
try {
|
|
170
|
-
const result = await fetchScaffoldContent("astro-minimal");
|
|
171
|
-
|
|
172
|
-
expect(result.scaffoldId).toBe("astro-minimal");
|
|
173
|
-
expect(result.files).toHaveLength(1);
|
|
174
|
-
expect(result.files[0]).toContain("package.json");
|
|
175
|
-
expect(result.extractionRoot).toContain(topLevelDir);
|
|
176
|
-
} finally {
|
|
177
|
-
globalThis.fetch = originalFetch;
|
|
178
|
-
}
|
|
179
|
-
});
|
|
180
|
-
|
|
181
|
-
it("throws ScaffoldError when GitHub fetch fails", async () => {
|
|
182
|
-
const originalFetch = globalThis.fetch;
|
|
183
|
-
globalThis.fetch = jest.fn().mockResolvedValue({
|
|
184
|
-
ok: false,
|
|
185
|
-
status: 404,
|
|
186
|
-
statusText: "Not Found",
|
|
187
|
-
});
|
|
188
|
-
|
|
189
|
-
mockGetFrameworkDefinition.mockReturnValue({
|
|
190
|
-
id: "astro-minimal",
|
|
191
|
-
name: "Astro",
|
|
192
|
-
source: {
|
|
193
|
-
type: "github",
|
|
194
|
-
repo: "Webflow-Examples/hello-world-astro",
|
|
195
|
-
ref: "main",
|
|
196
|
-
},
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
try {
|
|
200
|
-
await expect(fetchScaffoldContent("astro-minimal")).rejects.toThrow(
|
|
201
|
-
ScaffoldError
|
|
202
|
-
);
|
|
203
|
-
await expect(fetchScaffoldContent("astro-minimal")).rejects.toThrow(
|
|
204
|
-
"Failed to fetch scaffold from GitHub"
|
|
205
|
-
);
|
|
206
|
-
} finally {
|
|
207
|
-
globalThis.fetch = originalFetch;
|
|
208
|
-
}
|
|
209
|
-
});
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
describe("getScaffoldContent", () => {
|
|
213
|
-
it("resolves framework name to minimal ID and fetches", async () => {
|
|
214
|
-
const scaffoldDir = path.join(tempDir, "scaffold");
|
|
215
|
-
fs.mkdirSync(scaffoldDir, { recursive: true });
|
|
216
|
-
fs.writeFileSync(path.join(scaffoldDir, "package.json"), "{}");
|
|
217
|
-
|
|
218
|
-
mockToMinimalScaffoldId.mockReturnValue("astro-minimal");
|
|
219
|
-
mockGetFrameworkDefinition.mockReturnValue({
|
|
220
|
-
id: "astro-minimal",
|
|
221
|
-
name: "Astro",
|
|
222
|
-
source: { type: "local", path: path.resolve(scaffoldDir) },
|
|
223
|
-
});
|
|
224
|
-
|
|
225
|
-
const result = await getScaffoldContent("astro");
|
|
226
|
-
|
|
227
|
-
expect(mockToMinimalScaffoldId).toHaveBeenCalledWith("astro");
|
|
228
|
-
expect(result.scaffoldId).toBe("astro-minimal");
|
|
229
|
-
expect(result.files).toHaveLength(1);
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
it("passes through full scaffold ID unchanged", async () => {
|
|
233
|
-
const scaffoldDir = path.join(tempDir, "scaffold");
|
|
234
|
-
fs.mkdirSync(scaffoldDir, { recursive: true });
|
|
235
|
-
fs.writeFileSync(path.join(scaffoldDir, "package.json"), "{}");
|
|
236
|
-
|
|
237
|
-
mockGetFrameworkDefinition.mockReturnValue({
|
|
238
|
-
id: "astro-minimal",
|
|
239
|
-
name: "Astro",
|
|
240
|
-
source: { type: "local", path: path.resolve(scaffoldDir) },
|
|
241
|
-
});
|
|
242
|
-
|
|
243
|
-
const result = await getScaffoldContent("astro-minimal");
|
|
244
|
-
|
|
245
|
-
expect(mockToMinimalScaffoldId).not.toHaveBeenCalled();
|
|
246
|
-
expect(result.scaffoldId).toBe("astro-minimal");
|
|
247
|
-
});
|
|
248
|
-
});
|
|
249
|
-
});
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
FRAMEWORK_REGISTRY,
|
|
3
|
-
getAvailableFrameworkNames,
|
|
4
|
-
getFrameworkDefinition,
|
|
5
|
-
listSupportedScaffoldIds,
|
|
6
|
-
toMinimalScaffoldId,
|
|
7
|
-
} from "../registry";
|
|
8
|
-
import { ScaffoldError } from "../types";
|
|
9
|
-
|
|
10
|
-
describe("scaffold registry", () => {
|
|
11
|
-
describe("getFrameworkDefinition", () => {
|
|
12
|
-
it("returns definition for astro-minimal", () => {
|
|
13
|
-
const def = getFrameworkDefinition("astro-minimal");
|
|
14
|
-
expect(def.id).toBe("astro-minimal");
|
|
15
|
-
expect(def.name).toBe("Astro");
|
|
16
|
-
expect(def.source.type).toBe("github");
|
|
17
|
-
if (def.source.type === "github") {
|
|
18
|
-
expect(def.source.repo).toBe("Webflow-Examples/hello-world-astro");
|
|
19
|
-
expect(def.source.ref).toBe("v1");
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
it("returns definition for nextjs-minimal", () => {
|
|
24
|
-
const def = getFrameworkDefinition("nextjs-minimal");
|
|
25
|
-
expect(def.id).toBe("nextjs-minimal");
|
|
26
|
-
expect(def.name).toBe("Next.js");
|
|
27
|
-
expect(def.source.type).toBe("github");
|
|
28
|
-
if (def.source.type === "github") {
|
|
29
|
-
expect(def.source.repo).toBe("Webflow-Examples/hello-world-nextjs");
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it("returns definition for astro (site-attached)", () => {
|
|
34
|
-
const def = getFrameworkDefinition("astro");
|
|
35
|
-
expect(def.id).toBe("astro");
|
|
36
|
-
expect(def.name).toBe("Astro (site-attached)");
|
|
37
|
-
expect(def.source.type).toBe("github");
|
|
38
|
-
if (def.source.type === "github") {
|
|
39
|
-
expect(def.source.repo).toBe(
|
|
40
|
-
"Webflow-Examples/hello-world-astro-devlink"
|
|
41
|
-
);
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
it("returns definition for nextjs (site-attached)", () => {
|
|
46
|
-
const def = getFrameworkDefinition("nextjs");
|
|
47
|
-
expect(def.id).toBe("nextjs");
|
|
48
|
-
expect(def.name).toBe("Next.js (site-attached)");
|
|
49
|
-
expect(def.source.type).toBe("github");
|
|
50
|
-
if (def.source.type === "github") {
|
|
51
|
-
expect(def.source.repo).toBe(
|
|
52
|
-
"Webflow-Examples/hello-world-nextjs-devlink"
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
it("throws ScaffoldError for unsupported scaffold ID", () => {
|
|
58
|
-
expect(() => getFrameworkDefinition("remix-minimal")).toThrow(
|
|
59
|
-
ScaffoldError
|
|
60
|
-
);
|
|
61
|
-
expect(() => getFrameworkDefinition("remix-minimal")).toThrow(
|
|
62
|
-
'Unsupported framework: "remix-minimal"'
|
|
63
|
-
);
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
it("includes supported IDs in ScaffoldError", () => {
|
|
67
|
-
try {
|
|
68
|
-
getFrameworkDefinition("unknown");
|
|
69
|
-
fail("Expected ScaffoldError");
|
|
70
|
-
} catch (err) {
|
|
71
|
-
expect(err).toBeInstanceOf(ScaffoldError);
|
|
72
|
-
expect((err as ScaffoldError).scaffoldId).toBe("unknown");
|
|
73
|
-
expect((err as ScaffoldError).supportedIds).toContain("astro-minimal");
|
|
74
|
-
expect((err as ScaffoldError).supportedIds).toContain("nextjs-minimal");
|
|
75
|
-
expect((err as ScaffoldError).supportedIds).toContain("astro");
|
|
76
|
-
expect((err as ScaffoldError).supportedIds).toContain("nextjs");
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
describe("listSupportedScaffoldIds", () => {
|
|
82
|
-
it("returns all registry keys", () => {
|
|
83
|
-
const ids = listSupportedScaffoldIds();
|
|
84
|
-
expect(ids).toEqual(
|
|
85
|
-
expect.arrayContaining([
|
|
86
|
-
"astro-minimal",
|
|
87
|
-
"nextjs-minimal",
|
|
88
|
-
"astro",
|
|
89
|
-
"nextjs",
|
|
90
|
-
])
|
|
91
|
-
);
|
|
92
|
-
expect(ids).toHaveLength(Object.keys(FRAMEWORK_REGISTRY).length);
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
describe("getAvailableFrameworkNames", () => {
|
|
97
|
-
it("returns framework names without -minimal suffix", () => {
|
|
98
|
-
const names = getAvailableFrameworkNames();
|
|
99
|
-
expect(names).toEqual(expect.arrayContaining(["astro", "nextjs"]));
|
|
100
|
-
expect(names).toHaveLength(2);
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
describe("toMinimalScaffoldId", () => {
|
|
105
|
-
it("maps astro to astro-minimal", () => {
|
|
106
|
-
expect(toMinimalScaffoldId("astro")).toBe("astro-minimal");
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
it("maps nextjs to nextjs-minimal", () => {
|
|
110
|
-
expect(toMinimalScaffoldId("nextjs")).toBe("nextjs-minimal");
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
it("passes through astro-minimal unchanged", () => {
|
|
114
|
-
expect(toMinimalScaffoldId("astro-minimal")).toBe("astro-minimal");
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
it("throws ScaffoldError for unsupported framework", () => {
|
|
118
|
-
expect(() => toMinimalScaffoldId("remix")).toThrow(ScaffoldError);
|
|
119
|
-
expect(() => toMinimalScaffoldId("remix")).toThrow(
|
|
120
|
-
'No minimal scaffold for "remix"'
|
|
121
|
-
);
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
it("includes supported IDs in ScaffoldError", () => {
|
|
125
|
-
try {
|
|
126
|
-
toMinimalScaffoldId("vue");
|
|
127
|
-
fail("Expected ScaffoldError");
|
|
128
|
-
} catch (err) {
|
|
129
|
-
expect(err).toBeInstanceOf(ScaffoldError);
|
|
130
|
-
expect((err as ScaffoldError).supportedIds).toBeDefined();
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
});
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { defineConfig } from "astro/config";
|
|
2
|
-
|
|
3
|
-
import cloudflare from "@astrojs/cloudflare";
|
|
4
|
-
|
|
5
|
-
import react from '@astrojs/react';
|
|
6
|
-
|
|
7
|
-
import userConfig from './clouduser.astro.config.mjs';
|
|
8
|
-
|
|
9
|
-
const webflowOverrides = {
|
|
10
|
-
base: "${COSMIC_MOUNT_PATH}",
|
|
11
|
-
output: "server",
|
|
12
|
-
adapter: cloudflare({
|
|
13
|
-
imageService: "custom",
|
|
14
|
-
platformProxy: {
|
|
15
|
-
enabled: true
|
|
16
|
-
}
|
|
17
|
-
}),
|
|
18
|
-
|
|
19
|
-
integrations: [react()],
|
|
20
|
-
vite: {
|
|
21
|
-
...userConfig.vite,
|
|
22
|
-
resolve: {
|
|
23
|
-
...userConfig.vite?.resolve,
|
|
24
|
-
// Use react-dom/server.edge instead of react-dom/server.browser for React 19.
|
|
25
|
-
// Without this, MessageChannel from node:worker_threads needs to be polyfilled.
|
|
26
|
-
alias: import.meta.env.PROD ? {
|
|
27
|
-
"react-dom/server": "react-dom/server.edge",
|
|
28
|
-
} : undefined,
|
|
29
|
-
},
|
|
30
|
-
},
|
|
31
|
-
|
|
32
|
-
build: {
|
|
33
|
-
assetsPrefix: "${COSMIC_DEPLOY_URL}${COSMIC_MOUNT_PATH}"
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
image: {
|
|
37
|
-
...userConfig.image,
|
|
38
|
-
service: {
|
|
39
|
-
entrypoint: "./webflow-loader.ts",
|
|
40
|
-
config: {
|
|
41
|
-
deployUrl: "${COSMIC_DEPLOY_URL}",
|
|
42
|
-
mountPath: "${COSMIC_MOUNT_PATH}"
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
// https://astro.build/config
|
|
49
|
-
export default defineConfig({
|
|
50
|
-
...userConfig,
|
|
51
|
-
...webflowOverrides,
|
|
52
|
-
});
|
|
File without changes
|