browser-debug-mcp-bridge 1.9.0 → 1.11.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/README.md +271 -188
- package/apps/mcp-server/dist/db/automation-repository.js +199 -0
- package/apps/mcp-server/dist/db/automation-repository.js.map +1 -0
- package/apps/mcp-server/dist/db/connection.js +1 -5
- package/apps/mcp-server/dist/db/connection.js.map +1 -1
- package/apps/mcp-server/dist/db/events-repository.js +79 -10
- package/apps/mcp-server/dist/db/events-repository.js.map +1 -1
- package/apps/mcp-server/dist/db/index.js +2 -0
- package/apps/mcp-server/dist/db/index.js.map +1 -1
- package/apps/mcp-server/dist/db/migrations.js +493 -0
- package/apps/mcp-server/dist/db/migrations.js.map +1 -1
- package/apps/mcp-server/dist/db/schema.js +192 -1
- package/apps/mcp-server/dist/db/schema.js.map +1 -1
- package/apps/mcp-server/dist/document-response-rewriter.js +196 -0
- package/apps/mcp-server/dist/document-response-rewriter.js.map +1 -0
- package/apps/mcp-server/dist/json-rewrite.js +189 -0
- package/apps/mcp-server/dist/json-rewrite.js.map +1 -0
- package/apps/mcp-server/dist/main.js +375 -4
- package/apps/mcp-server/dist/main.js.map +1 -1
- package/apps/mcp-server/dist/mcp/server.js +4168 -310
- package/apps/mcp-server/dist/mcp/server.js.map +1 -1
- package/apps/mcp-server/dist/mcp-bridge.js +46 -3
- package/apps/mcp-server/dist/mcp-bridge.js.map +1 -1
- package/apps/mcp-server/dist/next-asset-mapper.js +701 -0
- package/apps/mcp-server/dist/next-asset-mapper.js.map +1 -0
- package/apps/mcp-server/dist/next-source-override-planner.js +601 -0
- package/apps/mcp-server/dist/next-source-override-planner.js.map +1 -0
- package/apps/mcp-server/dist/override-audit-contract.js +51 -0
- package/apps/mcp-server/dist/override-audit-contract.js.map +1 -0
- package/apps/mcp-server/dist/override-audit.js +740 -0
- package/apps/mcp-server/dist/override-audit.js.map +1 -0
- package/apps/mcp-server/dist/override-capabilities.js +136 -0
- package/apps/mcp-server/dist/override-capabilities.js.map +1 -0
- package/apps/mcp-server/dist/override-observed-assets.js +179 -0
- package/apps/mcp-server/dist/override-observed-assets.js.map +1 -0
- package/apps/mcp-server/dist/override-poc.js +336 -0
- package/apps/mcp-server/dist/override-poc.js.map +1 -0
- package/apps/mcp-server/dist/override-profile-generator.js +403 -0
- package/apps/mcp-server/dist/override-profile-generator.js.map +1 -0
- package/apps/mcp-server/dist/override-response-planner.js +557 -0
- package/apps/mcp-server/dist/override-response-planner.js.map +1 -0
- package/apps/mcp-server/dist/override-rule-types.js +32 -0
- package/apps/mcp-server/dist/override-rule-types.js.map +1 -0
- package/apps/mcp-server/dist/retention.js +4 -3
- package/apps/mcp-server/dist/retention.js.map +1 -1
- package/apps/mcp-server/dist/rsc-flight-patch-safety.js +269 -0
- package/apps/mcp-server/dist/rsc-flight-patch-safety.js.map +1 -0
- package/apps/mcp-server/dist/runtime-paths.js +33 -0
- package/apps/mcp-server/dist/runtime-paths.js.map +1 -0
- package/apps/mcp-server/dist/websocket/messages.js +13 -0
- package/apps/mcp-server/dist/websocket/messages.js.map +1 -1
- package/apps/mcp-server/dist/websocket/websocket-server.js +10 -0
- package/apps/mcp-server/dist/websocket/websocket-server.js.map +1 -1
- package/apps/mcp-server/package.json +1 -0
- package/package.json +16 -1
- package/scripts/mcp-start.cjs +201 -11
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
import { existsSync, readFileSync, readdirSync, statSync } from 'fs';
|
|
2
|
+
import { dirname, extname, relative, resolve } from 'path';
|
|
3
|
+
export const OVERRIDE_PROFILE_ADAPTERS = ['static', 'nextjs'];
|
|
4
|
+
const DEFAULT_ASSET_EXTENSIONS = ['.js', '.mjs', '.css'];
|
|
5
|
+
const DEFAULT_MAX_RULES = 500;
|
|
6
|
+
const NEXT_MANIFEST_RELATIVE_PATHS = [
|
|
7
|
+
'build-manifest.json',
|
|
8
|
+
'app-build-manifest.json',
|
|
9
|
+
'react-loadable-manifest.json',
|
|
10
|
+
];
|
|
11
|
+
function isRecord(value) {
|
|
12
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
13
|
+
}
|
|
14
|
+
function toPortablePath(value) {
|
|
15
|
+
return value.replace(/\\/g, '/');
|
|
16
|
+
}
|
|
17
|
+
function normalizeOptionalText(value, fallback) {
|
|
18
|
+
return typeof value === 'string' && value.trim().length > 0 ? value.trim() : fallback;
|
|
19
|
+
}
|
|
20
|
+
function normalizeAdapter(value) {
|
|
21
|
+
if (value === undefined) {
|
|
22
|
+
return 'nextjs';
|
|
23
|
+
}
|
|
24
|
+
if (OVERRIDE_PROFILE_ADAPTERS.includes(value)) {
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
throw new Error(`Unsupported override profile adapter: ${value}`);
|
|
28
|
+
}
|
|
29
|
+
function getAdapterDefaults(adapter) {
|
|
30
|
+
if (adapter === 'nextjs') {
|
|
31
|
+
return {
|
|
32
|
+
assetRoot: '.next',
|
|
33
|
+
profileId: 'nextjs-local',
|
|
34
|
+
profileName: 'Next.js local overrides',
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
assetRoot: 'dist',
|
|
39
|
+
profileId: 'static-local',
|
|
40
|
+
profileName: 'Static asset local overrides',
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function normalizeExtensions(value) {
|
|
44
|
+
const source = value && value.length > 0 ? value : DEFAULT_ASSET_EXTENSIONS;
|
|
45
|
+
const extensions = source
|
|
46
|
+
.map((entry) => entry.trim().toLowerCase())
|
|
47
|
+
.filter((entry) => entry.length > 0)
|
|
48
|
+
.map((entry) => entry.startsWith('.') ? entry : `.${entry}`);
|
|
49
|
+
if (extensions.length === 0) {
|
|
50
|
+
throw new Error('At least one asset extension is required');
|
|
51
|
+
}
|
|
52
|
+
return new Set(extensions);
|
|
53
|
+
}
|
|
54
|
+
function normalizeMaxRules(value) {
|
|
55
|
+
if (value === undefined) {
|
|
56
|
+
return DEFAULT_MAX_RULES;
|
|
57
|
+
}
|
|
58
|
+
if (!Number.isFinite(value) || value < 1) {
|
|
59
|
+
throw new Error('maxRules must be a positive finite number when provided');
|
|
60
|
+
}
|
|
61
|
+
return Math.floor(value);
|
|
62
|
+
}
|
|
63
|
+
function normalizeTargetBaseUrl(value, adapter) {
|
|
64
|
+
const trimmed = value.trim();
|
|
65
|
+
if (trimmed.length === 0) {
|
|
66
|
+
throw new Error('targetBaseUrl is required');
|
|
67
|
+
}
|
|
68
|
+
let parsed;
|
|
69
|
+
try {
|
|
70
|
+
parsed = new URL(trimmed);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
throw new Error('targetBaseUrl must be an absolute http(s) URL, for example https://example.com/_next/');
|
|
74
|
+
}
|
|
75
|
+
if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
|
|
76
|
+
throw new Error('targetBaseUrl must use http or https');
|
|
77
|
+
}
|
|
78
|
+
parsed.search = '';
|
|
79
|
+
parsed.hash = '';
|
|
80
|
+
if (!parsed.pathname.endsWith('/')) {
|
|
81
|
+
parsed.pathname = `${parsed.pathname}/`;
|
|
82
|
+
}
|
|
83
|
+
const warnings = [];
|
|
84
|
+
if (adapter === 'nextjs' && !parsed.pathname.includes('/_next/')) {
|
|
85
|
+
warnings.push('targetBaseUrl does not contain /_next/; verify this matches the production Next.js asset prefix exactly.');
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
targetBaseUrl: parsed.toString(),
|
|
89
|
+
warnings,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function normalizeNextAssetPath(value, extensions) {
|
|
93
|
+
let pathname = value.trim();
|
|
94
|
+
if (pathname.length === 0) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
const parsed = new URL(pathname);
|
|
99
|
+
pathname = parsed.pathname;
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
const queryIndex = pathname.search(/[?#]/);
|
|
103
|
+
if (queryIndex >= 0) {
|
|
104
|
+
pathname = pathname.slice(0, queryIndex);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
pathname = toPortablePath(pathname);
|
|
108
|
+
const nextIndex = pathname.indexOf('/_next/');
|
|
109
|
+
if (nextIndex >= 0) {
|
|
110
|
+
pathname = pathname.slice(nextIndex + '/_next/'.length);
|
|
111
|
+
}
|
|
112
|
+
else if (pathname.startsWith('_next/')) {
|
|
113
|
+
pathname = pathname.slice('_next/'.length);
|
|
114
|
+
}
|
|
115
|
+
else if (pathname.startsWith('/static/')) {
|
|
116
|
+
pathname = pathname.slice(1);
|
|
117
|
+
}
|
|
118
|
+
else if (pathname.startsWith('.next/')) {
|
|
119
|
+
pathname = pathname.slice('.next/'.length);
|
|
120
|
+
}
|
|
121
|
+
pathname = pathname.replace(/^\/+/, '');
|
|
122
|
+
if (!pathname.startsWith('static/')) {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
const extension = extname(pathname).toLowerCase();
|
|
126
|
+
return extensions.has(extension) ? pathname : null;
|
|
127
|
+
}
|
|
128
|
+
function collectNextAssetPaths(value, extensions, paths) {
|
|
129
|
+
if (typeof value === 'string') {
|
|
130
|
+
const assetPath = normalizeNextAssetPath(value, extensions);
|
|
131
|
+
if (assetPath) {
|
|
132
|
+
paths.add(assetPath);
|
|
133
|
+
}
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (Array.isArray(value)) {
|
|
137
|
+
for (const entry of value) {
|
|
138
|
+
collectNextAssetPaths(entry, extensions, paths);
|
|
139
|
+
}
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
if (isRecord(value)) {
|
|
143
|
+
for (const entry of Object.values(value)) {
|
|
144
|
+
collectNextAssetPaths(entry, extensions, paths);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
function collectNextManifestAssets(assetRoot, extensions) {
|
|
149
|
+
const discoveredAssetPaths = new Set();
|
|
150
|
+
const manifestFiles = [];
|
|
151
|
+
const warnings = [];
|
|
152
|
+
for (const relativePath of NEXT_MANIFEST_RELATIVE_PATHS) {
|
|
153
|
+
const manifestPath = resolve(assetRoot, relativePath);
|
|
154
|
+
if (!existsSync(manifestPath)) {
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
manifestFiles.push(manifestPath);
|
|
158
|
+
try {
|
|
159
|
+
collectNextAssetPaths(JSON.parse(readFileSync(manifestPath, 'utf8')), extensions, discoveredAssetPaths);
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
warnings.push(`Unable to parse ${manifestPath}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
const existingAssetPaths = new Set();
|
|
166
|
+
let missingManifestAssetCount = 0;
|
|
167
|
+
for (const assetPath of discoveredAssetPaths) {
|
|
168
|
+
if (existsSync(resolve(assetRoot, assetPath))) {
|
|
169
|
+
existingAssetPaths.add(assetPath);
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
missingManifestAssetCount += 1;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return {
|
|
176
|
+
assetPaths: existingAssetPaths,
|
|
177
|
+
manifestFiles,
|
|
178
|
+
missingManifestAssetCount,
|
|
179
|
+
warnings,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
function walkAssets(assetRoot, currentDir, extensions, assetPaths) {
|
|
183
|
+
for (const entry of readdirSync(currentDir, { withFileTypes: true })) {
|
|
184
|
+
const fullPath = resolve(currentDir, entry.name);
|
|
185
|
+
if (entry.isDirectory()) {
|
|
186
|
+
walkAssets(assetRoot, fullPath, extensions, assetPaths);
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
if (!entry.isFile() || !extensions.has(extname(entry.name).toLowerCase())) {
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
assetPaths.add(toPortablePath(relative(assetRoot, fullPath)));
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
function collectDirectoryAssets(assetRoot, extensions, options) {
|
|
196
|
+
const scanRoot = options.subdir ? resolve(assetRoot, options.subdir) : assetRoot;
|
|
197
|
+
const assetPaths = new Set();
|
|
198
|
+
const warnings = [];
|
|
199
|
+
if (!existsSync(scanRoot)) {
|
|
200
|
+
warnings.push(`${options.label} directory not found at ${scanRoot}. Build the app before generating a profile.`);
|
|
201
|
+
return { assetPaths, warnings };
|
|
202
|
+
}
|
|
203
|
+
if (!statSync(scanRoot).isDirectory()) {
|
|
204
|
+
warnings.push(`${options.label} path exists but is not a directory: ${scanRoot}`);
|
|
205
|
+
return { assetPaths, warnings };
|
|
206
|
+
}
|
|
207
|
+
walkAssets(assetRoot, scanRoot, extensions, assetPaths);
|
|
208
|
+
return { assetPaths, warnings };
|
|
209
|
+
}
|
|
210
|
+
function discoverStaticAssets(assetRoot, extensions) {
|
|
211
|
+
const directoryAssets = collectDirectoryAssets(assetRoot, extensions, { label: 'Static asset root' });
|
|
212
|
+
return {
|
|
213
|
+
assetPaths: directoryAssets.assetPaths,
|
|
214
|
+
manifestFiles: [],
|
|
215
|
+
staticFileCount: directoryAssets.assetPaths.size,
|
|
216
|
+
missingManifestAssetCount: 0,
|
|
217
|
+
warnings: directoryAssets.warnings,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
function discoverNextAssets(assetRoot, extensions, includeManifestFiles, includeStaticFiles) {
|
|
221
|
+
const assetPaths = new Set();
|
|
222
|
+
const warnings = [];
|
|
223
|
+
let manifestFiles = [];
|
|
224
|
+
let missingManifestAssetCount = 0;
|
|
225
|
+
let staticFileCount = 0;
|
|
226
|
+
if (!existsSync(assetRoot)) {
|
|
227
|
+
warnings.push(`Next.js output directory not found at ${assetRoot}.`);
|
|
228
|
+
}
|
|
229
|
+
if (includeManifestFiles) {
|
|
230
|
+
const manifestAssets = collectNextManifestAssets(assetRoot, extensions);
|
|
231
|
+
manifestFiles = manifestAssets.manifestFiles;
|
|
232
|
+
missingManifestAssetCount = manifestAssets.missingManifestAssetCount;
|
|
233
|
+
warnings.push(...manifestAssets.warnings);
|
|
234
|
+
for (const assetPath of manifestAssets.assetPaths) {
|
|
235
|
+
assetPaths.add(assetPath);
|
|
236
|
+
}
|
|
237
|
+
if (manifestFiles.length === 0) {
|
|
238
|
+
warnings.push(`No supported Next.js manifests found under ${assetRoot}. Falling back to static asset discovery if enabled.`);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
if (includeStaticFiles) {
|
|
242
|
+
const staticAssets = collectDirectoryAssets(assetRoot, extensions, { subdir: 'static', label: 'Next.js static' });
|
|
243
|
+
staticFileCount = staticAssets.assetPaths.size;
|
|
244
|
+
warnings.push(...staticAssets.warnings);
|
|
245
|
+
for (const assetPath of staticAssets.assetPaths) {
|
|
246
|
+
assetPaths.add(assetPath);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
if (missingManifestAssetCount > 0) {
|
|
250
|
+
warnings.push(`${missingManifestAssetCount} manifest asset(s) were skipped because the local file was missing.`);
|
|
251
|
+
}
|
|
252
|
+
return {
|
|
253
|
+
assetPaths,
|
|
254
|
+
manifestFiles,
|
|
255
|
+
staticFileCount,
|
|
256
|
+
missingManifestAssetCount,
|
|
257
|
+
warnings,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
function createRuleId(assetPath, index, usedRuleIds) {
|
|
261
|
+
const base = assetPath
|
|
262
|
+
.replace(/\.[^/.]+$/, '')
|
|
263
|
+
.replace(/^static\/(chunks|css|media)\//, '')
|
|
264
|
+
.replace(/[^a-zA-Z0-9]+/g, '-')
|
|
265
|
+
.replace(/^-+|-+$/g, '')
|
|
266
|
+
.toLowerCase()
|
|
267
|
+
.slice(0, 60) || 'asset';
|
|
268
|
+
let candidate = base;
|
|
269
|
+
let suffix = index + 1;
|
|
270
|
+
while (usedRuleIds.has(candidate)) {
|
|
271
|
+
candidate = `${base}-${suffix}`;
|
|
272
|
+
suffix += 1;
|
|
273
|
+
}
|
|
274
|
+
usedRuleIds.add(candidate);
|
|
275
|
+
return candidate;
|
|
276
|
+
}
|
|
277
|
+
function resolveContentType(assetPath) {
|
|
278
|
+
const extension = extname(assetPath).toLowerCase();
|
|
279
|
+
if (extension === '.css') {
|
|
280
|
+
return 'text/css; charset=utf-8';
|
|
281
|
+
}
|
|
282
|
+
if (extension === '.json') {
|
|
283
|
+
return 'application/json; charset=utf-8';
|
|
284
|
+
}
|
|
285
|
+
return 'application/javascript; charset=utf-8';
|
|
286
|
+
}
|
|
287
|
+
function createGenerationNextActions(adapter, ruleCount, suggestedConfigPath, enabled) {
|
|
288
|
+
if (ruleCount === 0) {
|
|
289
|
+
return [{
|
|
290
|
+
code: 'BUILD_APP',
|
|
291
|
+
message: `Build the ${adapter === 'nextjs' ? 'Next.js app' : 'app'} so local assets exist, then generate the profile again.`,
|
|
292
|
+
}];
|
|
293
|
+
}
|
|
294
|
+
const actions = [
|
|
295
|
+
{
|
|
296
|
+
code: 'REVIEW_ASSET_URLS',
|
|
297
|
+
message: 'Review generated targetAssetUrl values against the production network requests before enabling overrides.',
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
code: 'SAVE_LOCAL_CONFIG',
|
|
301
|
+
message: `Save the generated config JSON to ${suggestedConfigPath}, or rerun create_override_profile with writeConfig=true.`,
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
code: 'VALIDATE_PROFILE',
|
|
305
|
+
message: 'Run validate_override_profile after saving the generated config.',
|
|
306
|
+
},
|
|
307
|
+
];
|
|
308
|
+
if (!enabled) {
|
|
309
|
+
actions.push({
|
|
310
|
+
code: 'ENABLE_CONFIG_AFTER_REVIEW',
|
|
311
|
+
message: 'The generated root config is disabled by default; set enabled=true after reviewing the mappings.',
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
actions.push({
|
|
315
|
+
code: 'ENABLE_OVERRIDES',
|
|
316
|
+
message: 'Enable overrides on a connected session only after validation succeeds.',
|
|
317
|
+
});
|
|
318
|
+
return actions;
|
|
319
|
+
}
|
|
320
|
+
export function createOverrideProfileConfig(options) {
|
|
321
|
+
const adapter = normalizeAdapter(options.adapter);
|
|
322
|
+
const defaults = getAdapterDefaults(adapter);
|
|
323
|
+
const projectRoot = resolve(normalizeOptionalText(options.projectRoot, process.cwd()));
|
|
324
|
+
const rawAssetRoot = adapter === 'nextjs'
|
|
325
|
+
? normalizeOptionalText(options.nextDir ?? options.assetRoot, defaults.assetRoot)
|
|
326
|
+
: normalizeOptionalText(options.assetRoot, defaults.assetRoot);
|
|
327
|
+
const assetRoot = resolve(projectRoot, rawAssetRoot);
|
|
328
|
+
const suggestedConfigPath = resolve(projectRoot, normalizeOptionalText(options.configPath, 'override-poc.local.json'));
|
|
329
|
+
const configDir = dirname(suggestedConfigPath);
|
|
330
|
+
const profileId = normalizeOptionalText(options.profileId, defaults.profileId);
|
|
331
|
+
const profileName = normalizeOptionalText(options.profileName, defaults.profileName);
|
|
332
|
+
const configEnabled = options.enabled ?? false;
|
|
333
|
+
const profileEnabled = options.profileEnabled ?? true;
|
|
334
|
+
const autoReload = options.autoReload ?? true;
|
|
335
|
+
const includeManifestFiles = options.includeManifestFiles ?? true;
|
|
336
|
+
const includeStaticFiles = options.includeStaticFiles ?? true;
|
|
337
|
+
const extensions = normalizeExtensions(options.extensions);
|
|
338
|
+
const maxRules = normalizeMaxRules(options.maxRules);
|
|
339
|
+
const targetBase = normalizeTargetBaseUrl(options.targetBaseUrl, adapter);
|
|
340
|
+
const discovery = adapter === 'nextjs'
|
|
341
|
+
? discoverNextAssets(assetRoot, extensions, includeManifestFiles, includeStaticFiles)
|
|
342
|
+
: discoverStaticAssets(assetRoot, extensions);
|
|
343
|
+
const warnings = [...targetBase.warnings, ...discovery.warnings];
|
|
344
|
+
const sortedAssetPaths = Array.from(discovery.assetPaths).sort((first, second) => first.localeCompare(second));
|
|
345
|
+
const limitedAssetPaths = sortedAssetPaths.slice(0, maxRules);
|
|
346
|
+
if (sortedAssetPaths.length > limitedAssetPaths.length) {
|
|
347
|
+
warnings.push(`Rule generation was limited to ${maxRules} assets; increase maxRules if you need the remaining ${sortedAssetPaths.length - limitedAssetPaths.length}.`);
|
|
348
|
+
}
|
|
349
|
+
const usedRuleIds = new Set();
|
|
350
|
+
const rules = limitedAssetPaths.map((assetPath, index) => {
|
|
351
|
+
const absoluteLocalFilePath = resolve(assetRoot, assetPath);
|
|
352
|
+
return {
|
|
353
|
+
ruleId: createRuleId(assetPath, index, usedRuleIds),
|
|
354
|
+
enabled: true,
|
|
355
|
+
ruleType: 'asset',
|
|
356
|
+
requestMethod: 'GET',
|
|
357
|
+
matchMode: 'exact',
|
|
358
|
+
allowExperimentalRscFlightFulfillment: false,
|
|
359
|
+
targetAssetUrl: new URL(assetPath, targetBase.targetBaseUrl).toString(),
|
|
360
|
+
localFilePath: toPortablePath(relative(configDir, absoluteLocalFilePath)),
|
|
361
|
+
contentType: resolveContentType(assetPath),
|
|
362
|
+
};
|
|
363
|
+
});
|
|
364
|
+
const profile = {
|
|
365
|
+
profileId,
|
|
366
|
+
name: profileName,
|
|
367
|
+
enabled: profileEnabled,
|
|
368
|
+
autoReload,
|
|
369
|
+
rules,
|
|
370
|
+
};
|
|
371
|
+
const config = {
|
|
372
|
+
enabled: configEnabled,
|
|
373
|
+
activeProfileId: profileId,
|
|
374
|
+
profiles: [profile],
|
|
375
|
+
};
|
|
376
|
+
const configJson = `${JSON.stringify(config, null, 2)}\n`;
|
|
377
|
+
return {
|
|
378
|
+
adapter,
|
|
379
|
+
mode: adapter,
|
|
380
|
+
projectRoot,
|
|
381
|
+
assetRoot,
|
|
382
|
+
nextDir: adapter === 'nextjs' ? assetRoot : undefined,
|
|
383
|
+
targetBaseUrl: targetBase.targetBaseUrl,
|
|
384
|
+
suggestedConfigPath,
|
|
385
|
+
manifestFiles: discovery.manifestFiles,
|
|
386
|
+
staticFileCount: discovery.staticFileCount,
|
|
387
|
+
missingManifestAssetCount: discovery.missingManifestAssetCount,
|
|
388
|
+
ruleCount: rules.length,
|
|
389
|
+
warnings,
|
|
390
|
+
nextActions: createGenerationNextActions(adapter, rules.length, suggestedConfigPath, configEnabled),
|
|
391
|
+
config,
|
|
392
|
+
profile,
|
|
393
|
+
rules,
|
|
394
|
+
configJson,
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
export function createNextJsOverrideProfileConfig(options) {
|
|
398
|
+
return createOverrideProfileConfig({
|
|
399
|
+
...options,
|
|
400
|
+
adapter: 'nextjs',
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
//# sourceMappingURL=override-profile-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"override-profile-generator.js","sourceRoot":"","sources":["../src/override-profile-generator.ts"],"names":[],"mappings":"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"}
|