@untestutils/astro 0.5.2 → 0.5.4
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/index.d.mts +10 -2
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +109 -43
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
|
-
import { type FrameworkBaseOptions, type Recipe } from "@untestutils/core";
|
|
1
|
+
import { type Driver, type FrameworkBaseOptions, type Recipe } from "@untestutils/core";
|
|
2
2
|
export type AstroRun = "preview" | "server" | "dev";
|
|
3
|
+
export type AstroConfigOverride = Record<string, unknown>;
|
|
3
4
|
export interface AstroOptions extends FrameworkBaseOptions {
|
|
4
5
|
run?: AstroRun;
|
|
5
6
|
/** SSR entry relative to root (default dist/server/entry.mjs). */
|
|
6
7
|
serverEntry?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Merged onto the app's astro.config via ephemeral `--config` (same role as Nuxt `nuxtConfig`).
|
|
10
|
+
*/
|
|
11
|
+
astroConfig?: AstroConfigOverride;
|
|
7
12
|
}
|
|
13
|
+
export type AstroMatrixVariant = Partial<Pick<AstroOptions, "env" | "hashInputs" | "run" | "serverEntry" | "readyPath" | "readyTimeoutMs" | "workspaceDeps" | "astroConfig">>;
|
|
8
14
|
/**
|
|
9
15
|
* Astro Recipe factory.
|
|
10
16
|
* `run: 'preview'` (default) — `astro build` + `astro preview`
|
|
11
17
|
* `run: 'server'` — build + `node dist/server/entry.mjs`
|
|
12
18
|
* `run: 'dev'` — `astro dev`
|
|
13
19
|
*/
|
|
14
|
-
export declare
|
|
20
|
+
export declare const astro: Driver<AstroOptions>;
|
|
21
|
+
/** Expand one Astro recipe base into many recipes with distinct ids. */
|
|
22
|
+
export declare function matrix(base: AstroOptions, variants: Record<string, AstroMatrixVariant>): Record<string, Recipe>;
|
|
15
23
|
export default astro;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,16 +1,24 @@
|
|
|
1
|
-
import { type FrameworkBaseOptions, type Recipe } from '@untestutils/core';
|
|
1
|
+
import { type Driver, type FrameworkBaseOptions, type Recipe } from '@untestutils/core';
|
|
2
2
|
export type AstroRun = 'preview' | 'server' | 'dev';
|
|
3
|
+
export type AstroConfigOverride = Record<string, unknown>;
|
|
3
4
|
export interface AstroOptions extends FrameworkBaseOptions {
|
|
4
5
|
run?: AstroRun;
|
|
5
6
|
/** SSR entry relative to root (default dist/server/entry.mjs). */
|
|
6
7
|
serverEntry?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Merged onto the app's astro.config via ephemeral `--config` (same role as Nuxt `nuxtConfig`).
|
|
10
|
+
*/
|
|
11
|
+
astroConfig?: AstroConfigOverride;
|
|
7
12
|
}
|
|
13
|
+
export type AstroMatrixVariant = Partial<Pick<AstroOptions, 'env' | 'hashInputs' | 'run' | 'serverEntry' | 'readyPath' | 'readyTimeoutMs' | 'workspaceDeps' | 'astroConfig'>>;
|
|
8
14
|
/**
|
|
9
15
|
* Astro Recipe factory.
|
|
10
16
|
* `run: 'preview'` (default) — `astro build` + `astro preview`
|
|
11
17
|
* `run: 'server'` — build + `node dist/server/entry.mjs`
|
|
12
18
|
* `run: 'dev'` — `astro dev`
|
|
13
19
|
*/
|
|
14
|
-
export declare
|
|
20
|
+
export declare const astro: Driver<AstroOptions>;
|
|
21
|
+
/** Expand one Astro recipe base into many recipes with distinct ids. */
|
|
22
|
+
export declare function matrix(base: AstroOptions, variants: Record<string, AstroMatrixVariant>): Record<string, Recipe>;
|
|
15
23
|
export default astro;
|
|
16
24
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAYL,KAAK,MAAM,EACX,KAAK,oBAAoB,EACzB,KAAK,MAAM,EACZ,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEpD,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1D,MAAM,WAAW,YAAa,SAAQ,oBAAoB;IACxD,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,WAAW,CAAC,EAAE,mBAAmB,CAAC;CACnC;AAED,MAAM,MAAM,kBAAkB,GAAG,OAAO,CACtC,IAAI,CACF,YAAY,EACV,KAAK,GACL,YAAY,GACZ,KAAK,GACL,aAAa,GACb,WAAW,GACX,gBAAgB,GAChB,eAAe,GACf,aAAa,CAChB,CACF,CAAC;AA4CF;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,YAAY,CA8FrC,CAAC;AAEH,wEAAwE;AACxE,wBAAgB,MAAM,CACpB,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAC3C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxB;AAED,eAAe,KAAK,CAAC"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
|
+
import { pathToFileURL } from "node:url";
|
|
2
3
|
import { join, resolve } from "pathe";
|
|
3
|
-
import { cliFrameworkRecipe, frameworkRoots, resolveBin } from "@untestutils/core";
|
|
4
|
+
import { cliFrameworkRecipe, configOverrideHashInput, deepMergePlain, defineDriver, findFirstExistingConfig, frameworkRoots, matrixRecipe, resolveBin, serializeAstroMergeConfigModule, serializeDefaultExport, writeEphemeralConfig } from "@untestutils/core";
|
|
5
|
+
const ASTRO_CONFIG_NAMES = [
|
|
6
|
+
"astro.config.mjs",
|
|
7
|
+
"astro.config.js",
|
|
8
|
+
"astro.config.ts",
|
|
9
|
+
"astro.config.mts",
|
|
10
|
+
"astro.config.cjs"
|
|
11
|
+
];
|
|
4
12
|
function resolveAstroBin(root) {
|
|
5
13
|
return resolveBin({
|
|
6
14
|
label: "astro",
|
|
@@ -10,8 +18,24 @@ function resolveAstroBin(root) {
|
|
|
10
18
|
binRelative: ["astro.js", "bin/astro.mjs"]
|
|
11
19
|
});
|
|
12
20
|
}
|
|
21
|
+
function hashInputsFor(opts, root, extra) {
|
|
22
|
+
const inputs = [...opts.hashInputs ?? [root], ...extra];
|
|
23
|
+
if (opts.astroConfig) inputs.push(configOverrideHashInput("astroConfig", opts.astroConfig));
|
|
24
|
+
return inputs;
|
|
25
|
+
}
|
|
26
|
+
async function astroConfigArgs(root, outDir, astroConfig) {
|
|
27
|
+
if (!astroConfig || !Object.keys(astroConfig).length) return [];
|
|
28
|
+
const configPath = join(outDir, "astro.untestutils.mjs");
|
|
29
|
+
const userConfig = findFirstExistingConfig(root, ASTRO_CONFIG_NAMES);
|
|
30
|
+
const contents = userConfig ? serializeAstroMergeConfigModule({
|
|
31
|
+
baseImportSpecifier: pathToFileURL(userConfig).href,
|
|
32
|
+
overrides: astroConfig
|
|
33
|
+
}) : serializeDefaultExport(astroConfig);
|
|
34
|
+
await writeEphemeralConfig(configPath, contents);
|
|
35
|
+
return ["--config", configPath];
|
|
36
|
+
}
|
|
13
37
|
|
|
14
|
-
export
|
|
38
|
+
export const astro = defineDriver((opts) => {
|
|
15
39
|
const root = resolve(opts.root);
|
|
16
40
|
const runMode = opts.run ?? "preview";
|
|
17
41
|
const id = opts.id ?? `astro-${runMode}-${root.split("/").pop()}`;
|
|
@@ -23,21 +47,26 @@ export function astro(opts) {
|
|
|
23
47
|
label: "astro",
|
|
24
48
|
share: "never",
|
|
25
49
|
env: opts.env,
|
|
26
|
-
hashInputs: opts
|
|
50
|
+
hashInputs: hashInputsFor(opts, root, ["run:dev"]),
|
|
27
51
|
readyPath: opts.readyPath,
|
|
28
52
|
readyTimeoutMs: opts.readyTimeoutMs,
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
53
|
+
workspaceDeps: opts.workspaceDeps,
|
|
54
|
+
start: async ({ port, outDir }) => {
|
|
55
|
+
const configArgs = await astroConfigArgs(root, outDir, opts.astroConfig);
|
|
56
|
+
return {
|
|
57
|
+
command: process.execPath,
|
|
58
|
+
args: [
|
|
59
|
+
bin(),
|
|
60
|
+
"dev",
|
|
61
|
+
...configArgs,
|
|
62
|
+
"--host",
|
|
63
|
+
"127.0.0.1",
|
|
64
|
+
"--port",
|
|
65
|
+
String(port)
|
|
66
|
+
],
|
|
67
|
+
cwd: root
|
|
68
|
+
};
|
|
69
|
+
}
|
|
41
70
|
});
|
|
42
71
|
}
|
|
43
72
|
if (runMode === "server") {
|
|
@@ -48,18 +77,22 @@ export function astro(opts) {
|
|
|
48
77
|
label: "astro",
|
|
49
78
|
share: "always",
|
|
50
79
|
env: opts.env,
|
|
51
|
-
hashInputs: opts
|
|
52
|
-
root,
|
|
53
|
-
"run:server",
|
|
54
|
-
entryRel
|
|
55
|
-
],
|
|
80
|
+
hashInputs: hashInputsFor(opts, root, ["run:server", entryRel]),
|
|
56
81
|
readyPath: opts.readyPath,
|
|
57
82
|
readyTimeoutMs: opts.readyTimeoutMs,
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
83
|
+
workspaceDeps: opts.workspaceDeps,
|
|
84
|
+
prepare: async ({ outDir }) => {
|
|
85
|
+
const configArgs = await astroConfigArgs(root, outDir, opts.astroConfig);
|
|
86
|
+
return {
|
|
87
|
+
command: process.execPath,
|
|
88
|
+
args: [
|
|
89
|
+
bin(),
|
|
90
|
+
"build",
|
|
91
|
+
...configArgs
|
|
92
|
+
],
|
|
93
|
+
cwd: root
|
|
94
|
+
};
|
|
95
|
+
},
|
|
63
96
|
verifyAfterPrepare: () => {
|
|
64
97
|
const entry = join(root, entryRel);
|
|
65
98
|
if (!existsSync(entry)) {
|
|
@@ -84,26 +117,59 @@ export function astro(opts) {
|
|
|
84
117
|
label: "astro",
|
|
85
118
|
share: "always",
|
|
86
119
|
env: opts.env,
|
|
87
|
-
hashInputs: opts
|
|
120
|
+
hashInputs: hashInputsFor(opts, root, ["run:preview"]),
|
|
88
121
|
readyPath: opts.readyPath,
|
|
89
122
|
readyTimeoutMs: opts.readyTimeoutMs,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
123
|
+
workspaceDeps: opts.workspaceDeps,
|
|
124
|
+
prepare: async ({ outDir }) => {
|
|
125
|
+
const configArgs = await astroConfigArgs(root, outDir, opts.astroConfig);
|
|
126
|
+
return {
|
|
127
|
+
command: process.execPath,
|
|
128
|
+
args: [
|
|
129
|
+
bin(),
|
|
130
|
+
"build",
|
|
131
|
+
...configArgs
|
|
132
|
+
],
|
|
133
|
+
cwd: root
|
|
134
|
+
};
|
|
135
|
+
},
|
|
136
|
+
start: async ({ port, host, outDir }) => {
|
|
137
|
+
const configArgs = await astroConfigArgs(root, outDir, opts.astroConfig);
|
|
138
|
+
return {
|
|
139
|
+
command: process.execPath,
|
|
140
|
+
args: [
|
|
141
|
+
bin(),
|
|
142
|
+
"preview",
|
|
143
|
+
...configArgs,
|
|
144
|
+
"--host",
|
|
145
|
+
host,
|
|
146
|
+
"--port",
|
|
147
|
+
String(port)
|
|
148
|
+
],
|
|
149
|
+
cwd: root,
|
|
150
|
+
env: { ASTRO_PREVIEW_BACKGROUND: "0" }
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
export function matrix(base, variants) {
|
|
157
|
+
return matrixRecipe(astro, base, variants, {
|
|
158
|
+
label: "astro",
|
|
159
|
+
merge: (b, patch, id, name) => ({
|
|
160
|
+
...b,
|
|
161
|
+
...patch,
|
|
162
|
+
id,
|
|
163
|
+
env: {
|
|
164
|
+
...b.env ?? {},
|
|
165
|
+
...patch.env ?? {}
|
|
166
|
+
},
|
|
167
|
+
astroConfig: b.astroConfig || patch.astroConfig ? deepMergePlain(b.astroConfig ?? {}, patch.astroConfig ?? {}) : undefined,
|
|
168
|
+
hashInputs: [
|
|
169
|
+
...b.hashInputs ?? [b.root],
|
|
170
|
+
...patch.hashInputs ?? [],
|
|
171
|
+
`variant:${name}`
|
|
172
|
+
]
|
|
107
173
|
})
|
|
108
174
|
});
|
|
109
175
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@untestutils/astro",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.4",
|
|
4
4
|
"homepage": "https://s00d.github.io/untestutils/",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"pathe": "^2.0.3",
|
|
31
|
-
"@untestutils/core": "0.5.
|
|
31
|
+
"@untestutils/core": "0.5.4"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/node": "^26.6.1",
|