@qzsy/vinext 0.1.12 → 0.1.80
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 +19 -5
- package/dist/build/inject-pregenerated-paths.d.ts +4 -0
- package/dist/build/inject-pregenerated-paths.js +18 -0
- package/dist/build/pages-client-assets-module.d.ts +11 -0
- package/dist/build/pages-client-assets-module.js +27 -0
- package/dist/build/prerender.d.ts +2 -1
- package/dist/build/prerender.js +11 -4
- package/dist/build/report.d.ts +2 -1
- package/dist/build/report.js +2 -1
- package/dist/build/run-prerender.d.ts +7 -0
- package/dist/build/run-prerender.js +9 -0
- package/dist/build/standalone.js +2 -0
- package/dist/check.d.ts +18 -0
- package/dist/check.js +77 -19
- package/dist/cli-dev-config.d.ts +12 -0
- package/dist/cli-dev-config.js +23 -0
- package/dist/cli.js +64 -28
- package/dist/{server → client}/dev-error-overlay-store.d.ts +1 -1
- package/dist/{server → client}/dev-error-overlay-store.js +1 -1
- package/dist/{server → client}/dev-error-overlay.d.ts +1 -1
- package/dist/{server → client}/dev-error-overlay.js +2 -2
- package/dist/cloudflare/deploy-config.d.ts +51 -0
- package/dist/cloudflare/deploy-config.js +153 -0
- package/dist/cloudflare/index.d.ts +1 -1
- package/dist/cloudflare/index.js +1 -1
- package/dist/cloudflare/project.d.ts +41 -0
- package/dist/cloudflare/project.js +243 -0
- package/dist/cloudflare/tpr.js +1 -1
- package/dist/config/config-matchers.js +14 -10
- package/dist/config/next-config.d.ts +6 -3
- package/dist/config/next-config.js +47 -1
- package/dist/config/server-external-packages.d.ts +4 -0
- package/dist/config/server-external-packages.js +91 -0
- package/dist/deploy.d.ts +2 -122
- package/dist/deploy.js +20 -793
- package/dist/entries/app-rsc-entry.d.ts +2 -1
- package/dist/entries/app-rsc-entry.js +70 -12
- package/dist/entries/app-rsc-manifest.js +8 -0
- package/dist/entries/pages-client-entry.d.ts +1 -0
- package/dist/entries/pages-client-entry.js +2 -1
- package/dist/entries/pages-server-entry.js +6 -2
- package/dist/image/image-adapters-virtual.d.ts +59 -0
- package/dist/image/image-adapters-virtual.js +50 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +158 -109
- package/dist/init-cloudflare.d.ts +43 -0
- package/dist/init-cloudflare.js +1000 -0
- package/dist/init-platform.d.ts +38 -0
- package/dist/init-platform.js +150 -0
- package/dist/init.d.ts +14 -37
- package/dist/init.js +205 -95
- package/dist/node_modules/.pnpm/am-i-vibing@0.5.0/node_modules/am-i-vibing/dist/detector-1yx2Hoe0.js +294 -0
- package/dist/node_modules/.pnpm/process-ancestry@0.1.0/node_modules/process-ancestry/dist/index.js +94 -0
- package/dist/{cloudflare → packages/cloudflare}/src/cache/cdn-adapter.runtime.js +1 -1
- package/dist/{cloudflare → packages/cloudflare}/src/cache/kv-data-adapter.runtime.d.ts +2 -2
- package/dist/{cloudflare → packages/cloudflare}/src/cache/kv-data-adapter.runtime.js +1 -1
- package/dist/plugins/ast-scope.d.ts +16 -0
- package/dist/plugins/ast-scope.js +62 -0
- package/dist/plugins/ast-utils.js +3 -0
- package/dist/plugins/css-module-imports.d.ts +14 -0
- package/dist/plugins/css-module-imports.js +59 -0
- package/dist/plugins/ignore-dynamic-requests.d.ts +11 -0
- package/dist/plugins/ignore-dynamic-requests.js +530 -0
- package/dist/plugins/middleware-server-only.d.ts +8 -6
- package/dist/plugins/middleware-server-only.js +8 -7
- package/dist/plugins/optimize-imports.js +1 -1
- package/dist/plugins/typeof-window.d.ts +1 -1
- package/dist/plugins/typeof-window.js +28 -56
- package/dist/routing/app-route-graph.d.ts +13 -2
- package/dist/routing/app-route-graph.js +116 -32
- package/dist/routing/app-router.d.ts +5 -0
- package/dist/routing/app-router.js +5 -0
- package/dist/routing/file-matcher.d.ts +8 -0
- package/dist/routing/file-matcher.js +10 -1
- package/dist/routing/pages-router.js +2 -2
- package/dist/server/app-browser-action-result.d.ts +2 -1
- package/dist/server/app-browser-action-result.js +5 -1
- package/dist/server/app-browser-entry.js +17 -12
- package/dist/server/app-browser-history-controller.d.ts +2 -1
- package/dist/server/app-browser-history-controller.js +6 -2
- package/dist/server/app-browser-interception-context.d.ts +1 -0
- package/dist/server/app-browser-interception-context.js +4 -2
- package/dist/server/app-browser-navigation-controller.js +1 -0
- package/dist/server/app-browser-server-action-client.js +2 -3
- package/dist/server/app-browser-state.d.ts +1 -0
- package/dist/server/app-browser-state.js +3 -2
- package/dist/server/app-fallback-renderer.d.ts +3 -2
- package/dist/server/app-fallback-renderer.js +12 -7
- package/dist/server/app-middleware.d.ts +2 -3
- package/dist/server/app-middleware.js +3 -2
- package/dist/server/app-optimistic-routing.js +1 -1
- package/dist/server/app-page-boundary-render.d.ts +1 -0
- package/dist/server/app-page-boundary-render.js +12 -3
- package/dist/server/app-page-cache-finalizer.d.ts +1 -0
- package/dist/server/app-page-cache-finalizer.js +10 -3
- package/dist/server/app-page-cache-render.d.ts +1 -0
- package/dist/server/app-page-cache-render.js +8 -4
- package/dist/server/app-page-cache.d.ts +1 -0
- package/dist/server/app-page-cache.js +4 -1
- package/dist/server/app-page-dispatch.d.ts +11 -3
- package/dist/server/app-page-dispatch.js +55 -15
- package/dist/server/app-page-element-builder.d.ts +5 -1
- package/dist/server/app-page-element-builder.js +57 -20
- package/dist/server/app-page-head.d.ts +12 -0
- package/dist/server/app-page-head.js +42 -19
- package/dist/server/app-page-params.d.ts +2 -1
- package/dist/server/app-page-params.js +8 -1
- package/dist/server/app-page-probe.d.ts +1 -0
- package/dist/server/app-page-probe.js +6 -1
- package/dist/server/app-page-render-identity.d.ts +1 -0
- package/dist/server/app-page-render-identity.js +1 -1
- package/dist/server/app-page-render.d.ts +4 -1
- package/dist/server/app-page-render.js +8 -3
- package/dist/server/app-page-request.d.ts +22 -1
- package/dist/server/app-page-request.js +89 -13
- package/dist/server/app-page-route-wiring.d.ts +6 -1
- package/dist/server/app-page-route-wiring.js +31 -15
- package/dist/server/app-page-search-params-observation.d.ts +4 -2
- package/dist/server/app-page-search-params-observation.js +11 -7
- package/dist/server/app-page-segment-state.js +2 -0
- package/dist/server/app-route-handler-dispatch.js +1 -0
- package/dist/server/app-route-handler-execution.js +7 -2
- package/dist/server/app-route-handler-response.js +1 -0
- package/dist/server/app-route-handler-runtime.js +1 -1
- package/dist/server/app-route-module-loader.d.ts +2 -0
- package/dist/server/app-route-module-loader.js +1 -0
- package/dist/server/app-router-entry.d.ts +12 -0
- package/dist/server/app-router-entry.js +22 -8
- package/dist/server/app-router-image-optimization.d.ts +37 -0
- package/dist/server/app-router-image-optimization.js +40 -0
- package/dist/server/app-rsc-errors.js +7 -1
- package/dist/server/app-rsc-handler.js +27 -14
- package/dist/server/app-rsc-route-matching.d.ts +7 -0
- package/dist/server/app-rsc-route-matching.js +36 -3
- package/dist/server/app-segment-config.d.ts +12 -0
- package/dist/server/app-segment-config.js +91 -5
- package/dist/server/app-server-action-execution.d.ts +5 -0
- package/dist/server/app-server-action-execution.js +94 -33
- package/dist/server/app-ssr-entry.js +12 -1
- package/dist/server/app-static-generation.d.ts +1 -0
- package/dist/server/app-static-generation.js +1 -0
- package/dist/server/client-trace-metadata.js +26 -0
- package/dist/server/default-global-not-found-module.d.ts +14 -0
- package/dist/server/default-global-not-found-module.js +14 -0
- package/dist/server/dev-server.js +8 -15
- package/dist/server/dev-stack-sourcemap.d.ts +1 -1
- package/dist/server/dev-stack-sourcemap.js +1 -1
- package/dist/server/headers.d.ts +5 -15
- package/dist/server/headers.js +4 -15
- package/dist/server/image-optimization.d.ts +51 -1
- package/dist/server/image-optimization.js +52 -2
- package/dist/server/isr-cache.d.ts +1 -1
- package/dist/server/isr-cache.js +2 -2
- package/dist/server/middleware-runtime.js +6 -1
- package/dist/server/navigation-planner.d.ts +1 -0
- package/dist/server/navigation-planner.js +14 -3
- package/dist/server/pages-asset-tags.d.ts +4 -6
- package/dist/server/pages-asset-tags.js +12 -12
- package/dist/server/pages-client-assets.d.ts +12 -0
- package/dist/server/pages-client-assets.js +10 -0
- package/dist/server/pages-page-data.d.ts +23 -1
- package/dist/server/pages-page-data.js +43 -24
- package/dist/server/pages-page-handler.d.ts +2 -1
- package/dist/server/pages-page-handler.js +10 -4
- package/dist/server/pages-request-pipeline.d.ts +2 -0
- package/dist/server/pages-request-pipeline.js +25 -1
- package/dist/server/prerender-manifest.d.ts +3 -1
- package/dist/server/prerender-route-params.js +1 -1
- package/dist/server/prod-server.d.ts +1 -1
- package/dist/server/prod-server.js +47 -25
- package/dist/server/request-pipeline.js +1 -0
- package/dist/server/seed-cache.js +4 -4
- package/dist/server/worker-utils.d.ts +2 -1
- package/dist/server/worker-utils.js +7 -1
- package/dist/shims/app-router-scroll-state.d.ts +1 -0
- package/dist/shims/app-router-scroll-state.js +1 -0
- package/dist/shims/app-router-scroll.js +2 -1
- package/dist/shims/cache.js +19 -15
- package/dist/shims/cdn-cache.js +1 -1
- package/dist/shims/dynamic-preload-chunks.js +2 -1
- package/dist/shims/error-boundary.d.ts +19 -1
- package/dist/shims/error-boundary.js +11 -1
- package/dist/shims/form.d.ts +3 -1
- package/dist/shims/form.js +37 -43
- package/dist/shims/headers.d.ts +9 -1
- package/dist/shims/headers.js +31 -6
- package/dist/shims/image-optimization-url.d.ts +4 -0
- package/dist/shims/image-optimization-url.js +33 -1
- package/dist/shims/image.js +46 -13
- package/dist/shims/internal/app-route-detection.d.ts +2 -17
- package/dist/shims/internal/app-route-detection.js +4 -17
- package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +23 -0
- package/dist/shims/internal/hybrid-client-route-owner-direct.js +51 -0
- package/dist/shims/internal/hybrid-client-route-owner.d.ts +2 -5
- package/dist/shims/internal/hybrid-client-route-owner.js +9 -60
- package/dist/shims/internal/pages-router-components.d.ts +7 -0
- package/dist/shims/internal/pages-router-components.js +13 -0
- package/dist/shims/link.js +23 -16
- package/dist/shims/metadata.d.ts +3 -2
- package/dist/shims/metadata.js +8 -4
- package/dist/shims/navigation.js +4 -2
- package/dist/shims/root-params.d.ts +15 -1
- package/dist/shims/root-params.js +21 -1
- package/dist/shims/router.d.ts +2 -5
- package/dist/shims/router.js +41 -22
- package/dist/shims/server.js +3 -2
- package/dist/typegen.js +6 -5
- package/dist/utils/client-runtime-metadata.d.ts +2 -18
- package/dist/utils/client-runtime-metadata.js +31 -22
- package/dist/utils/dev-stack-sourcemap-endpoint.d.ts +4 -0
- package/dist/{server → utils}/dev-stack-sourcemap-endpoint.js +1 -1
- package/dist/utils/domain-locale.d.ts +6 -3
- package/dist/{server → utils}/middleware-request-headers.d.ts +1 -1
- package/dist/{server → utils}/middleware-request-headers.js +2 -2
- package/dist/utils/path.d.ts +2 -1
- package/dist/utils/path.js +1 -1
- package/dist/utils/project.d.ts +9 -1
- package/dist/utils/project.js +21 -4
- package/dist/utils/protocol-headers.d.ts +17 -0
- package/dist/utils/protocol-headers.js +17 -0
- package/dist/utils/react-version.d.ts +4 -0
- package/dist/utils/react-version.js +44 -0
- package/package.json +6 -1
- package/dist/server/dev-stack-sourcemap-endpoint.d.ts +0 -4
- /package/dist/{cloudflare → packages/cloudflare}/src/utils/cache-control-metadata.js +0 -0
package/dist/node_modules/.pnpm/am-i-vibing@0.5.0/node_modules/am-i-vibing/dist/detector-1yx2Hoe0.js
ADDED
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { getProcessAncestry } from "../../../../process-ancestry@0.1.0/node_modules/process-ancestry/dist/index.js";
|
|
2
|
+
//#region ../../node_modules/.pnpm/am-i-vibing@0.5.0/node_modules/am-i-vibing/dist/detector-1yx2Hoe0.mjs
|
|
3
|
+
/**
|
|
4
|
+
* Provider configurations for major AI coding tools
|
|
5
|
+
*/
|
|
6
|
+
const providers = [
|
|
7
|
+
{
|
|
8
|
+
id: "opencode",
|
|
9
|
+
name: "OpenCode",
|
|
10
|
+
type: "agent",
|
|
11
|
+
envVars: [{ any: [
|
|
12
|
+
"OPENCODE",
|
|
13
|
+
"OPENCODE_BIN_PATH",
|
|
14
|
+
"OPENCODE_SERVER",
|
|
15
|
+
"OPENCODE_APP_INFO",
|
|
16
|
+
"OPENCODE_MODES"
|
|
17
|
+
] }]
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
id: "jules",
|
|
21
|
+
name: "Jules",
|
|
22
|
+
type: "agent",
|
|
23
|
+
envVars: [{ all: [["HOME", "/home/jules"], ["USER", "swebot"]] }]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
id: "claude-code",
|
|
27
|
+
name: "Claude Code",
|
|
28
|
+
type: "agent",
|
|
29
|
+
envVars: ["CLAUDECODE"]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: "cursor-agent",
|
|
33
|
+
name: "Cursor Agent",
|
|
34
|
+
type: "agent",
|
|
35
|
+
envVars: [{ all: ["CURSOR_TRACE_ID", ["PAGER", "head -n 10000 | cat"]] }]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: "cursor",
|
|
39
|
+
name: "Cursor",
|
|
40
|
+
type: "interactive",
|
|
41
|
+
envVars: ["CURSOR_TRACE_ID"]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: "antigravity",
|
|
45
|
+
name: "Antigravity",
|
|
46
|
+
type: "agent",
|
|
47
|
+
envVars: [{ any: ["ANTIGRAVITY_AGENT", "ANTIGRAVITY_PROJECT_ID"] }]
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
id: "gemini-agent",
|
|
51
|
+
name: "Gemini CLI",
|
|
52
|
+
type: "agent",
|
|
53
|
+
envVars: [["GEMINI_CLI", "1"]],
|
|
54
|
+
processChecks: ["gemini"]
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
id: "codex",
|
|
58
|
+
name: "OpenAI Codex",
|
|
59
|
+
type: "agent",
|
|
60
|
+
envVars: ["CODEX_THREAD_ID"],
|
|
61
|
+
processChecks: ["codex"]
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
id: "replit",
|
|
65
|
+
name: "Replit",
|
|
66
|
+
type: "agent",
|
|
67
|
+
envVars: ["REPL_ID"]
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
id: "aider",
|
|
71
|
+
name: "Aider",
|
|
72
|
+
type: "agent",
|
|
73
|
+
envVars: ["AIDER_API_KEY"],
|
|
74
|
+
processChecks: ["aider"]
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
id: "bolt-agent",
|
|
78
|
+
name: "Bolt.new Agent",
|
|
79
|
+
type: "agent",
|
|
80
|
+
envVars: [{ all: [["SHELL", "/bin/jsh"], "npm_config_yes"] }]
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
id: "bolt",
|
|
84
|
+
name: "Bolt.new",
|
|
85
|
+
type: "interactive",
|
|
86
|
+
envVars: [{
|
|
87
|
+
all: [["SHELL", "/bin/jsh"]],
|
|
88
|
+
none: ["npm_config_yes"]
|
|
89
|
+
}]
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
id: "zed-agent",
|
|
93
|
+
name: "Zed Agent",
|
|
94
|
+
type: "agent",
|
|
95
|
+
envVars: [{ all: [["TERM_PROGRAM", "zed"], ["PAGER", "cat"]] }]
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
id: "zed",
|
|
99
|
+
name: "Zed",
|
|
100
|
+
type: "interactive",
|
|
101
|
+
envVars: [{
|
|
102
|
+
all: [["TERM_PROGRAM", "zed"]],
|
|
103
|
+
none: [["PAGER", "cat"]]
|
|
104
|
+
}]
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
id: "replit-assistant",
|
|
108
|
+
name: "Replit Assistant",
|
|
109
|
+
type: "agent",
|
|
110
|
+
envVars: [{ all: ["REPL_ID", ["REPLIT_MODE", "assistant"]] }]
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
id: "replit",
|
|
114
|
+
name: "Replit",
|
|
115
|
+
type: "interactive",
|
|
116
|
+
envVars: [{
|
|
117
|
+
all: ["REPL_ID"],
|
|
118
|
+
none: [["REPLIT_MODE", "assistant"]]
|
|
119
|
+
}]
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
id: "windsurf",
|
|
123
|
+
name: "Windsurf",
|
|
124
|
+
type: "agent",
|
|
125
|
+
envVars: ["CODEIUM_EDITOR_APP_ROOT"]
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
id: "crush",
|
|
129
|
+
name: "Crush",
|
|
130
|
+
type: "agent",
|
|
131
|
+
envVars: [{ any: [
|
|
132
|
+
["CRUSH", "1"],
|
|
133
|
+
["AGENT", "crush"],
|
|
134
|
+
["AI_AGENT", "crush"]
|
|
135
|
+
] }],
|
|
136
|
+
processChecks: ["crush"]
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
id: "amp",
|
|
140
|
+
name: "Amp",
|
|
141
|
+
type: "agent",
|
|
142
|
+
envVars: [{ any: ["AMP_CURRENT_THREAD_ID", ["AGENT", "amp"]] }]
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
id: "auggie",
|
|
146
|
+
name: "Auggie",
|
|
147
|
+
type: "agent",
|
|
148
|
+
envVars: [["AUGMENT_AGENT", "1"]]
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
id: "qwen-code",
|
|
152
|
+
name: "Qwen Code",
|
|
153
|
+
type: "agent",
|
|
154
|
+
envVars: [["QWEN_CODE", "1"]]
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
id: "vscode-copilot-agent",
|
|
158
|
+
name: "GitHub Copilot in VS Code",
|
|
159
|
+
type: "agent",
|
|
160
|
+
envVars: [{ all: [["TERM_PROGRAM", "vscode"], ["GIT_PAGER", "cat"]] }]
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
id: "warp",
|
|
164
|
+
name: "Warp Terminal",
|
|
165
|
+
type: "hybrid",
|
|
166
|
+
envVars: [{ all: [["TERM_PROGRAM", "WarpTerminal"]] }]
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
id: "octofriend",
|
|
170
|
+
name: "Octofriend",
|
|
171
|
+
type: "agent",
|
|
172
|
+
processChecks: ["octofriend"]
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
id: "devin",
|
|
176
|
+
name: "Devin",
|
|
177
|
+
type: "agent",
|
|
178
|
+
processChecks: ["devin"]
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
id: "droid",
|
|
182
|
+
name: "Factory Droid",
|
|
183
|
+
type: "agent",
|
|
184
|
+
processChecks: ["droid"]
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
id: "pi",
|
|
188
|
+
name: "Pi",
|
|
189
|
+
type: "agent",
|
|
190
|
+
envVars: [["PI_CODING_AGENT", "true"]]
|
|
191
|
+
}
|
|
192
|
+
];
|
|
193
|
+
/**
|
|
194
|
+
* Check if a specific environment variable exists (handles both strings and tuples)
|
|
195
|
+
*/
|
|
196
|
+
function checkEnvVar(envVarDef, env = process.env) {
|
|
197
|
+
const [envVar, expectedValue] = typeof envVarDef === "string" ? [envVarDef, void 0] : envVarDef;
|
|
198
|
+
const actualValue = env[envVar];
|
|
199
|
+
return Boolean(actualValue && (!expectedValue || actualValue === expectedValue));
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Check if a process is running in the process tree
|
|
203
|
+
*/
|
|
204
|
+
function checkProcess(processName, processAncestry) {
|
|
205
|
+
for (const ancestorProcess of processAncestry) if (ancestorProcess.command?.includes(processName)) return true;
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Check if an environment variable group matches based on its properties
|
|
210
|
+
*/
|
|
211
|
+
function checkEnvVars(definition, env = process.env) {
|
|
212
|
+
if (typeof definition === "string" || Array.isArray(definition)) return checkEnvVar(definition, env);
|
|
213
|
+
const { any, all, none } = definition;
|
|
214
|
+
const anyResult = !any?.length || any.some((envVar) => checkEnvVar(envVar, env));
|
|
215
|
+
const allResult = !all?.length || all.every((envVar) => checkEnvVar(envVar, env));
|
|
216
|
+
const noneResult = !none?.length || !none.some((envVar) => checkEnvVar(envVar, env));
|
|
217
|
+
return anyResult && allResult && noneResult;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Run custom detectors for a provider
|
|
221
|
+
*/
|
|
222
|
+
function runCustomDetectors(provider) {
|
|
223
|
+
return provider.customDetectors?.some((detector) => {
|
|
224
|
+
try {
|
|
225
|
+
return detector();
|
|
226
|
+
} catch {
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
}) ?? false;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Create a positive detection result
|
|
233
|
+
*/
|
|
234
|
+
function createDetectedResult(provider) {
|
|
235
|
+
return {
|
|
236
|
+
isAgentic: true,
|
|
237
|
+
id: provider.id,
|
|
238
|
+
name: provider.name,
|
|
239
|
+
type: provider.type
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Normalize the various supported argument shapes into a DetectOptions object.
|
|
244
|
+
*
|
|
245
|
+
* Supported shapes:
|
|
246
|
+
* - detectAgenticEnvironment()
|
|
247
|
+
* - detectAgenticEnvironment(options)
|
|
248
|
+
* - detectAgenticEnvironment(env) // legacy
|
|
249
|
+
* - detectAgenticEnvironment(env, processAncestry) // legacy
|
|
250
|
+
*/
|
|
251
|
+
function normalizeOptions(envOrOptions, legacyAncestry) {
|
|
252
|
+
if (envOrOptions != null && typeof envOrOptions === "object" && ("env" in envOrOptions || "processAncestry" in envOrOptions || "checkProcesses" in envOrOptions)) {
|
|
253
|
+
const opts = envOrOptions;
|
|
254
|
+
return {
|
|
255
|
+
env: opts.env ?? process.env,
|
|
256
|
+
processAncestry: opts.processAncestry,
|
|
257
|
+
checkProcesses: opts.checkProcesses ?? opts.processAncestry !== void 0
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
return {
|
|
261
|
+
env: envOrOptions ?? process.env,
|
|
262
|
+
processAncestry: legacyAncestry,
|
|
263
|
+
checkProcesses: legacyAncestry !== void 0
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
function detectAgenticEnvironment(envOrOptions, legacyAncestry) {
|
|
267
|
+
const { env, processAncestry, checkProcesses } = normalizeOptions(envOrOptions, legacyAncestry);
|
|
268
|
+
for (const provider of providers) if (provider.envVars?.some((group) => checkEnvVars(group, env))) return createDetectedResult(provider);
|
|
269
|
+
for (const provider of providers) if (runCustomDetectors(provider)) return createDetectedResult(provider);
|
|
270
|
+
if (checkProcesses) {
|
|
271
|
+
let cachedAncestry = processAncestry;
|
|
272
|
+
const getAncestry = () => {
|
|
273
|
+
if (cachedAncestry === void 0) try {
|
|
274
|
+
cachedAncestry = getProcessAncestry();
|
|
275
|
+
} catch {
|
|
276
|
+
cachedAncestry = [];
|
|
277
|
+
}
|
|
278
|
+
return cachedAncestry;
|
|
279
|
+
};
|
|
280
|
+
for (const provider of providers) if (provider.processChecks?.some((processName) => checkProcess(processName, getAncestry()))) return createDetectedResult(provider);
|
|
281
|
+
}
|
|
282
|
+
return {
|
|
283
|
+
isAgentic: false,
|
|
284
|
+
id: null,
|
|
285
|
+
name: null,
|
|
286
|
+
type: null
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
function isAgent(envOrOptions, legacyAncestry) {
|
|
290
|
+
const result = detectAgenticEnvironment(envOrOptions, legacyAncestry);
|
|
291
|
+
return result.type === "agent" || result.type === "hybrid";
|
|
292
|
+
}
|
|
293
|
+
//#endregion
|
|
294
|
+
export { isAgent };
|
package/dist/node_modules/.pnpm/process-ancestry@0.1.0/node_modules/process-ancestry/dist/index.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import os from "os";
|
|
2
|
+
import { execSync } from "child_process";
|
|
3
|
+
//#region ../../node_modules/.pnpm/process-ancestry@0.1.0/node_modules/process-ancestry/dist/index.js
|
|
4
|
+
function getProcessInfo(pid) {
|
|
5
|
+
try {
|
|
6
|
+
const output = execSync(`ps -p ${pid} -o pid=,ppid=,command=`, {
|
|
7
|
+
encoding: "utf8",
|
|
8
|
+
timeout: 5e3
|
|
9
|
+
}).trim();
|
|
10
|
+
if (!output) return null;
|
|
11
|
+
const [pidStr, ppidStr, ...commandParts] = output.split(/\s+/);
|
|
12
|
+
const parsedPid = pidStr ? parseInt(pidStr, 10) : NaN;
|
|
13
|
+
const parsedPpid = ppidStr ? parseInt(ppidStr, 10) : NaN;
|
|
14
|
+
if (isNaN(parsedPid) || isNaN(parsedPpid)) return null;
|
|
15
|
+
return {
|
|
16
|
+
pid: parsedPid,
|
|
17
|
+
ppid: parsedPpid,
|
|
18
|
+
command: commandParts.join(" ") || void 0
|
|
19
|
+
};
|
|
20
|
+
} catch (error) {
|
|
21
|
+
if (error instanceof Error && error.message.includes("timeout")) console.warn(`Process lookup timed out for PID ${pid}`);
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function getAncestryUnix(startPid) {
|
|
26
|
+
const result = [];
|
|
27
|
+
const visited = /* @__PURE__ */ new Set();
|
|
28
|
+
let currentPid = startPid;
|
|
29
|
+
let maxDepth = 1e3;
|
|
30
|
+
while (currentPid && maxDepth > 0) {
|
|
31
|
+
if (visited.has(currentPid)) {
|
|
32
|
+
console.warn(`Detected cycle in process tree at PID ${currentPid}`);
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
visited.add(currentPid);
|
|
36
|
+
const info = getProcessInfo(currentPid);
|
|
37
|
+
if (!info || info.ppid === 0 || info.ppid === 1) break;
|
|
38
|
+
result.push(info);
|
|
39
|
+
currentPid = info.ppid;
|
|
40
|
+
maxDepth--;
|
|
41
|
+
}
|
|
42
|
+
if (maxDepth === 0) console.warn(`Reached maximum depth limit while traversing process tree from PID ${startPid}`);
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
function getProcessInfo2(pid) {
|
|
46
|
+
try {
|
|
47
|
+
const output = execSync(`wmic process where (ProcessId=${pid}) get ProcessId,ParentProcessId,CommandLine /format:csv`, {
|
|
48
|
+
encoding: "utf8",
|
|
49
|
+
timeout: 1e4
|
|
50
|
+
});
|
|
51
|
+
if (!output) return null;
|
|
52
|
+
const fields = output.split("\n").filter((line) => line.trim() && !line.startsWith("Node")).pop()?.split(",");
|
|
53
|
+
if (!fields || fields.length < 4) return null;
|
|
54
|
+
const [_node, commandLine, parentPid, thisPid] = fields;
|
|
55
|
+
const parsedPid = thisPid ? parseInt(thisPid.trim(), 10) : NaN;
|
|
56
|
+
const parsedPpid = parentPid ? parseInt(parentPid.trim(), 10) : NaN;
|
|
57
|
+
if (isNaN(parsedPid) || isNaN(parsedPpid)) return null;
|
|
58
|
+
return {
|
|
59
|
+
pid: parsedPid,
|
|
60
|
+
ppid: parsedPpid,
|
|
61
|
+
command: commandLine?.trim() || void 0
|
|
62
|
+
};
|
|
63
|
+
} catch (error) {
|
|
64
|
+
if (error instanceof Error && error.message.includes("timeout")) console.warn(`Process lookup timed out for PID ${pid}`);
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function getAncestryWindows(startPid) {
|
|
69
|
+
const result = [];
|
|
70
|
+
const visited = /* @__PURE__ */ new Set();
|
|
71
|
+
let currentPid = startPid;
|
|
72
|
+
let maxDepth = 1e3;
|
|
73
|
+
while (currentPid && maxDepth > 0) {
|
|
74
|
+
if (visited.has(currentPid)) {
|
|
75
|
+
console.warn(`Detected cycle in process tree at PID ${currentPid}`);
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
visited.add(currentPid);
|
|
79
|
+
const info = getProcessInfo2(currentPid);
|
|
80
|
+
if (!info || info.ppid === 0 || info.ppid === 4) break;
|
|
81
|
+
result.push(info);
|
|
82
|
+
currentPid = info.ppid;
|
|
83
|
+
maxDepth--;
|
|
84
|
+
}
|
|
85
|
+
if (maxDepth === 0) console.warn(`Reached maximum depth limit while traversing process tree from PID ${startPid}`);
|
|
86
|
+
return result;
|
|
87
|
+
}
|
|
88
|
+
function getProcessAncestry(pid = process.pid) {
|
|
89
|
+
if (typeof pid !== "number" || !Number.isInteger(pid) || pid <= 0) throw new Error("PID must be a positive integer");
|
|
90
|
+
if (os.platform() === "win32") return getAncestryWindows(pid);
|
|
91
|
+
else return getAncestryUnix(pid);
|
|
92
|
+
}
|
|
93
|
+
//#endregion
|
|
94
|
+
export { getProcessAncestry };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getRequestExecutionContext } from "
|
|
1
|
+
import { getRequestExecutionContext } from "../../../../shims/request-context.js";
|
|
2
2
|
//#region ../cloudflare/src/cache/cdn-adapter.runtime.ts
|
|
3
3
|
function getWorkersCache() {
|
|
4
4
|
const cache = getRequestExecutionContext()?.cache;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CacheHandler, CacheHandlerValue, IncrementalCacheValue } from "
|
|
2
|
-
import { ExecutionContextLike } from "
|
|
1
|
+
import { CacheHandler, CacheHandlerValue, IncrementalCacheValue } from "../../../../shims/cache-handler.js";
|
|
2
|
+
import { ExecutionContextLike } from "../../../../shims/request-context.js";
|
|
3
3
|
|
|
4
4
|
//#region ../cloudflare/src/cache/kv-data-adapter.runtime.d.ts
|
|
5
5
|
type KVNamespace = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getRequestExecutionContext } from "
|
|
1
|
+
import { getRequestExecutionContext } from "../../../../shims/request-context.js";
|
|
2
2
|
import { isUnknownRecord, readCacheControlNumberField } from "../utils/cache-control-metadata.js";
|
|
3
3
|
import { Buffer } from "node:buffer";
|
|
4
4
|
//#region ../cloudflare/src/cache/kv-data-adapter.runtime.ts
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AstRecord } from "./ast-utils.js";
|
|
2
|
+
|
|
3
|
+
//#region src/plugins/ast-scope.d.ts
|
|
4
|
+
type AstScope = {
|
|
5
|
+
parent: AstScope | null;
|
|
6
|
+
bindings: Set<string>;
|
|
7
|
+
};
|
|
8
|
+
declare function createAstScope<T extends AstScope>(parent: T | null): AstScope;
|
|
9
|
+
declare function hasAstBinding(scope: AstScope, name: string): boolean;
|
|
10
|
+
declare function isFunctionNode(node: AstRecord): boolean;
|
|
11
|
+
declare function collectDirectScopeBindings(node: AstRecord, scope: AstScope, onVariableDeclarator?: (declaration: AstRecord, declarator: AstRecord) => void): void;
|
|
12
|
+
declare function collectLoopScopeBindings(node: AstRecord, scope: AstScope, onVariableDeclarator?: (declaration: AstRecord, declarator: AstRecord) => void): void;
|
|
13
|
+
declare function collectSwitchScopeBindings(node: AstRecord, scope: AstScope, onVariableDeclarator?: (declaration: AstRecord, declarator: AstRecord) => void): void;
|
|
14
|
+
declare function collectVarScopeBindings(node: AstRecord, scope: AstScope, root?: boolean): void;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { AstScope, collectDirectScopeBindings, collectLoopScopeBindings, collectSwitchScopeBindings, collectVarScopeBindings, createAstScope, hasAstBinding, isFunctionNode };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { collectBindingNames, forEachAstChild, isAstRecord, nodeArray } from "./ast-utils.js";
|
|
2
|
+
//#region src/plugins/ast-scope.ts
|
|
3
|
+
function createAstScope(parent) {
|
|
4
|
+
return {
|
|
5
|
+
parent,
|
|
6
|
+
bindings: /* @__PURE__ */ new Set()
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
function hasAstBinding(scope, name) {
|
|
10
|
+
for (let current = scope; current; current = current.parent) if (current.bindings.has(name)) return true;
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
function isFunctionNode(node) {
|
|
14
|
+
return node.type === "FunctionDeclaration" || node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression";
|
|
15
|
+
}
|
|
16
|
+
function collectDirectScopeBindings(node, scope, onVariableDeclarator) {
|
|
17
|
+
for (const statementValue of nodeArray(node.body)) {
|
|
18
|
+
const statement = isAstRecord(statementValue) ? statementValue : null;
|
|
19
|
+
if (!statement) continue;
|
|
20
|
+
const declaration = statement.type === "ExportNamedDeclaration" || statement.type === "ExportDefaultDeclaration" ? isAstRecord(statement.declaration) ? statement.declaration : null : statement;
|
|
21
|
+
if (!declaration) continue;
|
|
22
|
+
if (declaration.type === "ImportDeclaration") {
|
|
23
|
+
if (declaration.importKind === "type") continue;
|
|
24
|
+
for (const specifier of nodeArray(declaration.specifiers)) if (isAstRecord(specifier) && specifier.importKind !== "type") collectBindingNames(specifier.local, scope.bindings);
|
|
25
|
+
} else if (declaration.type === "TSImportEqualsDeclaration" && declaration.importKind !== "type") collectBindingNames(declaration.id, scope.bindings);
|
|
26
|
+
else if (declaration.type === "VariableDeclaration" && declaration.declare !== true) for (const declarator of nodeArray(declaration.declarations)) {
|
|
27
|
+
if (!isAstRecord(declarator)) continue;
|
|
28
|
+
collectBindingNames(declarator.id, scope.bindings);
|
|
29
|
+
onVariableDeclarator?.(declaration, declarator);
|
|
30
|
+
}
|
|
31
|
+
else if ((declaration.type === "FunctionDeclaration" || declaration.type === "ClassDeclaration") && declaration.declare !== true) collectBindingNames(declaration.id, scope.bindings);
|
|
32
|
+
else if ((declaration.type === "TSEnumDeclaration" || declaration.type === "TSModuleDeclaration") && declaration.declare !== true) collectBindingNames(declaration.id, scope.bindings);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function collectLoopScopeBindings(node, scope, onVariableDeclarator) {
|
|
36
|
+
const declarationValue = node.type === "ForStatement" ? node.init : node.left;
|
|
37
|
+
if (!isAstRecord(declarationValue)) return;
|
|
38
|
+
if (declarationValue.type !== "VariableDeclaration" || declarationValue.declare === true) return;
|
|
39
|
+
for (const declarator of nodeArray(declarationValue.declarations)) {
|
|
40
|
+
if (!isAstRecord(declarator)) continue;
|
|
41
|
+
collectBindingNames(declarator.id, scope.bindings);
|
|
42
|
+
onVariableDeclarator?.(declarationValue, declarator);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function collectSwitchScopeBindings(node, scope, onVariableDeclarator) {
|
|
46
|
+
for (const caseValue of nodeArray(node.cases)) {
|
|
47
|
+
if (!isAstRecord(caseValue)) continue;
|
|
48
|
+
collectDirectScopeBindings({
|
|
49
|
+
type: "BlockStatement",
|
|
50
|
+
body: nodeArray(caseValue.consequent)
|
|
51
|
+
}, scope, onVariableDeclarator);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function collectVarScopeBindings(node, scope, root = true) {
|
|
55
|
+
if (!root && (isFunctionNode(node) || node.type === "StaticBlock" || node.type === "TSModuleBlock")) return;
|
|
56
|
+
if (node.type === "VariableDeclaration" && node.kind === "var" && node.declare !== true) {
|
|
57
|
+
for (const declarator of nodeArray(node.declarations)) if (isAstRecord(declarator)) collectBindingNames(declarator.id, scope.bindings);
|
|
58
|
+
}
|
|
59
|
+
forEachAstChild(node, (child) => collectVarScopeBindings(child, scope, false));
|
|
60
|
+
}
|
|
61
|
+
//#endregion
|
|
62
|
+
export { collectDirectScopeBindings, collectLoopScopeBindings, collectSwitchScopeBindings, collectVarScopeBindings, createAstScope, hasAstBinding, isFunctionNode };
|
|
@@ -59,6 +59,9 @@ function collectBindingNames(pattern, target) {
|
|
|
59
59
|
case "AssignmentPattern":
|
|
60
60
|
collectBindingNames(node.left, target);
|
|
61
61
|
return;
|
|
62
|
+
case "TSParameterProperty":
|
|
63
|
+
collectBindingNames(node.parameter, target);
|
|
64
|
+
return;
|
|
62
65
|
case "ArrayPattern":
|
|
63
66
|
for (const element of nodeArray(node.elements)) collectBindingNames(element, target);
|
|
64
67
|
return;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Plugin } from "vite";
|
|
2
|
+
import MagicString from "magic-string";
|
|
3
|
+
|
|
4
|
+
//#region src/plugins/css-module-imports.d.ts
|
|
5
|
+
type ScriptLanguage = "js" | "jsx" | "ts" | "tsx";
|
|
6
|
+
declare function rewriteCssModuleNamespaceImports(code: string, lang?: ScriptLanguage): {
|
|
7
|
+
code: string;
|
|
8
|
+
map: ReturnType<MagicString["generateMap"]>;
|
|
9
|
+
} | null;
|
|
10
|
+
declare function createCssModuleImportCompatibilityPlugin(options?: {
|
|
11
|
+
compiledMdx?: boolean;
|
|
12
|
+
}): Plugin;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { createCssModuleImportCompatibilityPlugin, rewriteCssModuleNamespaceImports };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { parseAst } from "vite";
|
|
2
|
+
import MagicString from "magic-string";
|
|
3
|
+
//#region src/plugins/css-module-imports.ts
|
|
4
|
+
const CSS_MODULE_RE = /\.module\.(?:css|scss|sass)$/i;
|
|
5
|
+
const CSS_MODULE_HINT_RE = /\.module\.(?:css|scss|sass)/i;
|
|
6
|
+
const SCRIPT_RE = /\.(?:[cm]?[jt]sx?)(?:[?#].*)?$/i;
|
|
7
|
+
const MDX_RE = /\.mdx$/i;
|
|
8
|
+
function scriptLanguage(id) {
|
|
9
|
+
const cleanId = id.split("?", 1)[0].toLowerCase();
|
|
10
|
+
if (cleanId.endsWith(".tsx")) return "tsx";
|
|
11
|
+
if (cleanId.endsWith(".ts") || cleanId.endsWith(".mts") || cleanId.endsWith(".cts")) return "ts";
|
|
12
|
+
return "jsx";
|
|
13
|
+
}
|
|
14
|
+
function rewriteCssModuleNamespaceImports(code, lang = "js") {
|
|
15
|
+
let ast;
|
|
16
|
+
try {
|
|
17
|
+
ast = parseAst(code, { lang });
|
|
18
|
+
} catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
let output = null;
|
|
22
|
+
for (const statement of ast.body) {
|
|
23
|
+
if (statement.type !== "ImportDeclaration") continue;
|
|
24
|
+
if (statement.importKind === "type") continue;
|
|
25
|
+
if (typeof statement.source?.value !== "string") continue;
|
|
26
|
+
if (!CSS_MODULE_RE.test(statement.source.value)) continue;
|
|
27
|
+
if (statement.attributes && statement.attributes.length > 0) continue;
|
|
28
|
+
if (statement.specifiers?.length !== 1) continue;
|
|
29
|
+
const specifier = statement.specifiers[0];
|
|
30
|
+
if (specifier.type !== "ImportNamespaceSpecifier") continue;
|
|
31
|
+
if (typeof specifier.start !== "number" || typeof specifier.end !== "number") continue;
|
|
32
|
+
if (typeof specifier.local?.name !== "string") continue;
|
|
33
|
+
output ??= new MagicString(code);
|
|
34
|
+
output.overwrite(specifier.start, specifier.end, specifier.local.name);
|
|
35
|
+
}
|
|
36
|
+
if (!output) return null;
|
|
37
|
+
return {
|
|
38
|
+
code: output.toString(),
|
|
39
|
+
map: output.generateMap({ hires: true })
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function createCssModuleImportCompatibilityPlugin(options = {}) {
|
|
43
|
+
const idFilter = options.compiledMdx ? MDX_RE : SCRIPT_RE;
|
|
44
|
+
return {
|
|
45
|
+
name: options.compiledMdx ? "vinext:css-module-import-compatibility-mdx" : "vinext:css-module-import-compatibility",
|
|
46
|
+
enforce: options.compiledMdx ? "post" : "pre",
|
|
47
|
+
transform: {
|
|
48
|
+
filter: {
|
|
49
|
+
id: idFilter,
|
|
50
|
+
code: CSS_MODULE_HINT_RE
|
|
51
|
+
},
|
|
52
|
+
handler(code, id) {
|
|
53
|
+
return rewriteCssModuleNamespaceImports(code, options.compiledMdx ? "jsx" : scriptLanguage(id));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
//#endregion
|
|
59
|
+
export { createCssModuleImportCompatibilityPlugin, rewriteCssModuleNamespaceImports };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Plugin } from "vite";
|
|
2
|
+
|
|
3
|
+
//#region src/plugins/ignore-dynamic-requests.d.ts
|
|
4
|
+
declare function transformVeryDynamicRequests(code: string, id: string): {
|
|
5
|
+
code: string;
|
|
6
|
+
map: import("magic-string").SourceMap;
|
|
7
|
+
} | null;
|
|
8
|
+
declare function createIgnoreDynamicRequestsPlugin(getTranspiledPackages?: () => readonly string[]): Plugin;
|
|
9
|
+
declare const _transformVeryDynamicRequests: typeof transformVeryDynamicRequests;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { _transformVeryDynamicRequests, createIgnoreDynamicRequestsPlugin };
|