@hachej/boring-ui-cli 0.1.39 → 0.1.41
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/server/cli.js +10 -1
- package/dist/server/modeApps.js +84 -2
- package/dist/server/pluginDiscovery.js +5 -4
- package/dist/server/pluginFrontRuntime.js +88 -0
- package/package.json +7 -6
- package/public/assets/{DebugDrawer-BKnTv0ta.js → DebugDrawer-DIrD57xb.js} +1 -1
- package/public/assets/{_baseUniq-BLLh7JYg.js → _baseUniq-C2C4b5Zg.js} +1 -1
- package/public/assets/{arc-CCKoqe23.js → arc-Aki4mkRC.js} +1 -1
- package/public/assets/{architectureDiagram-Q4EWVU46-BiezsVHo.js → architectureDiagram-Q4EWVU46-C55L0tNP.js} +1 -1
- package/public/assets/{blockDiagram-DXYQGD6D-BiontjNM.js → blockDiagram-DXYQGD6D-DF8nSGue.js} +1 -1
- package/public/assets/{c4Diagram-AHTNJAMY-BBwk8oFU.js → c4Diagram-AHTNJAMY-DThxTjcb.js} +1 -1
- package/public/assets/channel-DdHIHQYg.js +1 -0
- package/public/assets/{chunk-4BX2VUAB-DPKS56FY.js → chunk-4BX2VUAB-WPq3Ddjs.js} +1 -1
- package/public/assets/{chunk-4TB4RGXK-BQsSw8RM.js → chunk-4TB4RGXK-CnA4yrxJ.js} +1 -1
- package/public/assets/{chunk-55IACEB6-Ci72MzDy.js → chunk-55IACEB6-BTm860DS.js} +1 -1
- package/public/assets/{chunk-EDXVE4YY-DEmniXcF.js → chunk-EDXVE4YY-f8foKIiP.js} +1 -1
- package/public/assets/{chunk-FMBD7UC4-BlX3J66_.js → chunk-FMBD7UC4-Du8gpwgv.js} +1 -1
- package/public/assets/{chunk-OYMX7WX6-CVgYvnDy.js → chunk-OYMX7WX6-DaIIOiWw.js} +1 -1
- package/public/assets/{chunk-QZHKN3VN-CByUXwie.js → chunk-QZHKN3VN-PahkgR2H.js} +1 -1
- package/public/assets/{chunk-YZCP3GAM-kVASw0Ps.js → chunk-YZCP3GAM-B6cGPgW_.js} +1 -1
- package/public/assets/classDiagram-6PBFFD2Q-CDMLIr4z.js +1 -0
- package/public/assets/classDiagram-v2-HSJHXN6E-CDMLIr4z.js +1 -0
- package/public/assets/clone-Bk70n0sh.js +1 -0
- package/public/assets/{cose-bilkent-S5V4N54A-P1wJoSYn.js → cose-bilkent-S5V4N54A-Dho0WFv6.js} +1 -1
- package/public/assets/{dagre-KV5264BT-COwIFIWR.js → dagre-KV5264BT-B20VBqgV.js} +1 -1
- package/public/assets/{diagram-5BDNPKRD-Cu1uZiY8.js → diagram-5BDNPKRD-Dk9XCVCz.js} +1 -1
- package/public/assets/{diagram-G4DWMVQ6-LYnPYs25.js → diagram-G4DWMVQ6-Bt1y8Hin.js} +1 -1
- package/public/assets/{diagram-MMDJMWI5-BHdCIIZQ.js → diagram-MMDJMWI5-Bg8vUqBZ.js} +1 -1
- package/public/assets/{diagram-TYMM5635-DOP9v9nq.js → diagram-TYMM5635-DcU3ShDg.js} +1 -1
- package/public/assets/{erDiagram-SMLLAGMA-r1ECuX9K.js → erDiagram-SMLLAGMA-D3h9WAQP.js} +1 -1
- package/public/assets/{flowDiagram-DWJPFMVM-BGfCv6DR.js → flowDiagram-DWJPFMVM-B2OCERnW.js} +1 -1
- package/public/assets/{ganttDiagram-T4ZO3ILL-BT1XjcZL.js → ganttDiagram-T4ZO3ILL-CtyH7k9Y.js} +1 -1
- package/public/assets/{gitGraphDiagram-UUTBAWPF-CI1rp0X1.js → gitGraphDiagram-UUTBAWPF-C6lbrb8g.js} +1 -1
- package/public/assets/{graph-DI_xMEn_.js → graph-4G-uIrK7.js} +1 -1
- package/public/assets/{highlighted-body-OFNGDK62-8n743sC6.js → highlighted-body-OFNGDK62-CE1ThRaN.js} +1 -1
- package/public/assets/index-BMbY-d9g.css +1 -0
- package/public/assets/{index-BbHTuYde.js → index-CVAj7PxY.js} +379 -379
- package/public/assets/{infoDiagram-42DDH7IO-BpRHk6VQ.js → infoDiagram-42DDH7IO-CsTqwf5w.js} +1 -1
- package/public/assets/{ishikawaDiagram-UXIWVN3A-DKm4l4s3.js → ishikawaDiagram-UXIWVN3A-DXGc1-Pd.js} +1 -1
- package/public/assets/{journeyDiagram-VCZTEJTY-BF6q66EE.js → journeyDiagram-VCZTEJTY-C_nwgyvM.js} +1 -1
- package/public/assets/{kanban-definition-6JOO6SKY-ghGywoOn.js → kanban-definition-6JOO6SKY-BzwQ3kZ0.js} +1 -1
- package/public/assets/{layout-rNIh0dh7.js → layout-CvGVBCEa.js} +1 -1
- package/public/assets/{linear-uZeMuiY-.js → linear-BVK_QZAj.js} +1 -1
- package/public/assets/{min-CUa0xbzO.js → min-CsOe_qnr.js} +1 -1
- package/public/assets/{mindmap-definition-QFDTVHPH-CqAtG59w.js → mindmap-definition-QFDTVHPH-D0-49mNx.js} +1 -1
- package/public/assets/{pieDiagram-DEJITSTG-p9Q1gHs7.js → pieDiagram-DEJITSTG-CRkr-BNX.js} +1 -1
- package/public/assets/{quadrantDiagram-34T5L4WZ-CXVkk7JI.js → quadrantDiagram-34T5L4WZ-BWX_9RCX.js} +1 -1
- package/public/assets/{requirementDiagram-MS252O5E-Cjtu6Q56.js → requirementDiagram-MS252O5E-BGfAl3Qx.js} +1 -1
- package/public/assets/{sankeyDiagram-XADWPNL6-BpnNV-v0.js → sankeyDiagram-XADWPNL6-QgmUrXPP.js} +1 -1
- package/public/assets/{sequenceDiagram-FGHM5R23-Dvp42ano.js → sequenceDiagram-FGHM5R23-DBLe7csV.js} +1 -1
- package/public/assets/{stateDiagram-FHFEXIEX-Cr5QWnxH.js → stateDiagram-FHFEXIEX-BfYCzdCO.js} +1 -1
- package/public/assets/stateDiagram-v2-QKLJ7IA2-Bq2TsEg2.js +1 -0
- package/public/assets/{timeline-definition-GMOUNBTQ-zevXOd6g.js → timeline-definition-GMOUNBTQ-BoJVJBXk.js} +1 -1
- package/public/assets/{vennDiagram-DHZGUBPP-6KiZ2GA5.js → vennDiagram-DHZGUBPP-BbEEpzeb.js} +1 -1
- package/public/assets/{wardley-RL74JXVD-DiCKkv9h.js → wardley-RL74JXVD-D54PzR9e.js} +1 -1
- package/public/assets/{wardleyDiagram-NUSXRM2D-BV7_buYN.js → wardleyDiagram-NUSXRM2D-CpmLfr1T.js} +1 -1
- package/public/assets/{xychartDiagram-5P7HB3ND-C-mSzQZo.js → xychartDiagram-5P7HB3ND-DKbM8GqZ.js} +1 -1
- package/public/index.html +2 -2
- package/public/assets/channel-B1YUFW3e.js +0 -1
- package/public/assets/classDiagram-6PBFFD2Q-CcrldmCi.js +0 -1
- package/public/assets/classDiagram-v2-HSJHXN6E-CcrldmCi.js +0 -1
- package/public/assets/clone-BUiJZ_PH.js +0 -1
- package/public/assets/index-o6MvaI3V.css +0 -1
- package/public/assets/stateDiagram-v2-QKLJ7IA2-Fp_LJrX2.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -39,7 +39,16 @@ async function registerStatic(app, publicDir) {
|
|
|
39
39
|
const { default: fastifyStatic } = await import("@fastify/static");
|
|
40
40
|
await app.register(fastifyStatic, {
|
|
41
41
|
root: publicDir,
|
|
42
|
-
prefix: "/"
|
|
42
|
+
prefix: "/",
|
|
43
|
+
// @fastify/send writes its own Cache-Control after setHeaders runs, so
|
|
44
|
+
// disable it and set the header explicitly for both cases below.
|
|
45
|
+
cacheControl: false,
|
|
46
|
+
setHeaders(res, filePath) {
|
|
47
|
+
res.setHeader(
|
|
48
|
+
"cache-control",
|
|
49
|
+
/[\\/]assets[\\/]/.test(filePath) ? "public, max-age=31536000, immutable" : "public, max-age=0"
|
|
50
|
+
);
|
|
51
|
+
}
|
|
43
52
|
});
|
|
44
53
|
app.setNotFoundHandler(async (req, reply) => {
|
|
45
54
|
if (req.url.startsWith("/api/")) {
|
package/dist/server/modeApps.js
CHANGED
|
@@ -108,6 +108,7 @@ const RUNTIME_PLUGIN_TRUST_LABEL = "Trusted local runtime plugins";
|
|
|
108
108
|
const RUNTIME_PLUGIN_TRUST_DESCRIPTION = "Loads plugin UI code from trusted local Pi extension roots through the CLI-owned runtime module host.";
|
|
109
109
|
function createRuntimePluginDiagnosticsStore() {
|
|
110
110
|
const byWorkspace = /* @__PURE__ */ new Map();
|
|
111
|
+
const frontErrorsByWorkspace = /* @__PURE__ */ new Map();
|
|
111
112
|
function upsert(workspaceId, pluginId) {
|
|
112
113
|
const workspace = byWorkspace.get(workspaceId) ?? /* @__PURE__ */ new Map();
|
|
113
114
|
byWorkspace.set(workspaceId, workspace);
|
|
@@ -137,6 +138,10 @@ function createRuntimePluginDiagnosticsStore() {
|
|
|
137
138
|
entry.lastErrorCode = void 0;
|
|
138
139
|
entry.lastErrorMessage = void 0;
|
|
139
140
|
entry.lastErrorStage = void 0;
|
|
141
|
+
const storedFrontError = frontErrorsByWorkspace.get(diagnostic.workspaceId)?.get(diagnostic.pluginId);
|
|
142
|
+
if (storedFrontError && diagnostic.revision !== void 0 && storedFrontError.revision < diagnostic.revision) {
|
|
143
|
+
frontErrorsByWorkspace.get(diagnostic.workspaceId)?.delete(diagnostic.pluginId);
|
|
144
|
+
}
|
|
140
145
|
}
|
|
141
146
|
if (diagnostic.stage === "cache") entry.lastRequestAt = now;
|
|
142
147
|
if (diagnostic.stage === "transform" && diagnostic.outcome === "served") {
|
|
@@ -163,8 +168,22 @@ function createRuntimePluginDiagnosticsStore() {
|
|
|
163
168
|
snapshot(workspaceId) {
|
|
164
169
|
return [...byWorkspace.get(workspaceId)?.values() ?? []].map((entry) => ({ ...entry, recent: [...entry.recent] })).sort((a, b) => a.pluginId.localeCompare(b.pluginId));
|
|
165
170
|
},
|
|
171
|
+
recordFrontError(workspaceId, error) {
|
|
172
|
+
const forWorkspace = frontErrorsByWorkspace.get(workspaceId) ?? /* @__PURE__ */ new Map();
|
|
173
|
+
frontErrorsByWorkspace.set(workspaceId, forWorkspace);
|
|
174
|
+
const existing = forWorkspace.get(error.pluginId);
|
|
175
|
+
if (existing && existing.revision > error.revision) return;
|
|
176
|
+
forWorkspace.set(error.pluginId, error);
|
|
177
|
+
},
|
|
178
|
+
clearFrontError(workspaceId, pluginId) {
|
|
179
|
+
frontErrorsByWorkspace.get(workspaceId)?.delete(pluginId);
|
|
180
|
+
},
|
|
181
|
+
frontErrors(workspaceId) {
|
|
182
|
+
return [...frontErrorsByWorkspace.get(workspaceId)?.values() ?? []].sort((a, b) => a.pluginId.localeCompare(b.pluginId));
|
|
183
|
+
},
|
|
166
184
|
disposeWorkspace(workspaceId) {
|
|
167
185
|
byWorkspace.delete(workspaceId);
|
|
186
|
+
frontErrorsByWorkspace.delete(workspaceId);
|
|
168
187
|
}
|
|
169
188
|
};
|
|
170
189
|
}
|
|
@@ -204,11 +223,33 @@ function buildRuntimePluginDiagnosticsResponse(args) {
|
|
|
204
223
|
host: hostEntry
|
|
205
224
|
});
|
|
206
225
|
}
|
|
226
|
+
for (const frontError of args.frontErrors ?? []) {
|
|
227
|
+
const current = byPlugin.get(frontError.pluginId) ?? { id: frontError.pluginId };
|
|
228
|
+
byPlugin.set(frontError.pluginId, {
|
|
229
|
+
...current,
|
|
230
|
+
frontError
|
|
231
|
+
});
|
|
232
|
+
}
|
|
207
233
|
return {
|
|
208
234
|
workspaceId: args.workspaceId,
|
|
209
235
|
plugins: [...byPlugin.values()].sort((a, b) => a.id.localeCompare(b.id))
|
|
210
236
|
};
|
|
211
237
|
}
|
|
238
|
+
function parseFrontErrorReport(pluginId, body) {
|
|
239
|
+
if (typeof body !== "object" || body === null) return null;
|
|
240
|
+
const record = body;
|
|
241
|
+
const message = typeof record.message === "string" ? record.message : "";
|
|
242
|
+
if (!pluginId || !message) return null;
|
|
243
|
+
const revisionRaw = record.revision;
|
|
244
|
+
const revision = typeof revisionRaw === "number" && Number.isFinite(revisionRaw) ? revisionRaw : 0;
|
|
245
|
+
return {
|
|
246
|
+
pluginId,
|
|
247
|
+
revision,
|
|
248
|
+
message,
|
|
249
|
+
...typeof record.url === "string" ? { url: record.url } : {},
|
|
250
|
+
reportedAt: Date.now()
|
|
251
|
+
};
|
|
252
|
+
}
|
|
212
253
|
async function createFolderModeApp(opts) {
|
|
213
254
|
const workspaceRoot = resolve(opts.workspaceRoot);
|
|
214
255
|
const projectName = opts.projectName ?? (basename(workspaceRoot) || "workspace");
|
|
@@ -257,9 +298,17 @@ async function createFolderModeApp(opts) {
|
|
|
257
298
|
workspaceId: FOLDER_RUNTIME_PLUGIN_WORKSPACE_ID,
|
|
258
299
|
loaded: manager?.inspectLoaded() ?? [],
|
|
259
300
|
errors: manager?.getErrors() ?? [],
|
|
260
|
-
host: diagnosticsStore.snapshot(FOLDER_RUNTIME_PLUGIN_WORKSPACE_ID)
|
|
301
|
+
host: diagnosticsStore.snapshot(FOLDER_RUNTIME_PLUGIN_WORKSPACE_ID),
|
|
302
|
+
frontErrors: diagnosticsStore.frontErrors(FOLDER_RUNTIME_PLUGIN_WORKSPACE_ID)
|
|
261
303
|
});
|
|
262
304
|
});
|
|
305
|
+
app.post("/api/v1/agent-plugins/:id/front-error", async (request, reply) => {
|
|
306
|
+
const { id } = request.params;
|
|
307
|
+
const report = parseFrontErrorReport(id, request.body);
|
|
308
|
+
if (!report) return reply.code(400).send({ error: "invalid_front_error_report" });
|
|
309
|
+
diagnosticsStore.recordFrontError(FOLDER_RUNTIME_PLUGIN_WORKSPACE_ID, report);
|
|
310
|
+
return reply.code(204).send();
|
|
311
|
+
});
|
|
263
312
|
app.get("/api/v1/workspace/meta", async () => ({
|
|
264
313
|
workspaceId: "default",
|
|
265
314
|
workspaceRoot,
|
|
@@ -497,6 +546,14 @@ async function createWorkspacesModeApp(opts) {
|
|
|
497
546
|
source: "plugin-preflight",
|
|
498
547
|
message: `${error.code}: ${error.message} (${error.pluginDir})`,
|
|
499
548
|
...error.pluginId ? { pluginId: error.pluginId } : {}
|
|
549
|
+
})),
|
|
550
|
+
// Browser-reported front import failures: the server scan/transform is
|
|
551
|
+
// green, so without these a plugin that never renders looks healthy to
|
|
552
|
+
// the agent. The plugin_diagnostics tool consumes this array.
|
|
553
|
+
...diagnosticsStore.frontErrors(workspace.id).map((error) => ({
|
|
554
|
+
source: "plugin-front",
|
|
555
|
+
message: error.message,
|
|
556
|
+
pluginId: error.pluginId
|
|
500
557
|
}))
|
|
501
558
|
];
|
|
502
559
|
},
|
|
@@ -527,9 +584,18 @@ async function createWorkspacesModeApp(opts) {
|
|
|
527
584
|
workspaceId: workspace.id,
|
|
528
585
|
loaded: runtime.manager.inspectLoaded(),
|
|
529
586
|
errors: runtime.manager.getErrors(),
|
|
530
|
-
host: diagnosticsStore.snapshot(workspace.id)
|
|
587
|
+
host: diagnosticsStore.snapshot(workspace.id),
|
|
588
|
+
frontErrors: diagnosticsStore.frontErrors(workspace.id)
|
|
531
589
|
});
|
|
532
590
|
});
|
|
591
|
+
app.post("/api/v1/agent-plugins/:id/front-error", async (request, reply) => {
|
|
592
|
+
const workspace = await workspaceFromRequest(request);
|
|
593
|
+
const { id } = request.params;
|
|
594
|
+
const report = parseFrontErrorReport(id, request.body);
|
|
595
|
+
if (!report) return reply.code(400).send({ error: "invalid_front_error_report" });
|
|
596
|
+
diagnosticsStore.recordFrontError(workspace.id, report);
|
|
597
|
+
return reply.code(204).send();
|
|
598
|
+
});
|
|
533
599
|
app.get("/api/v1/agent-plugins", async (request) => {
|
|
534
600
|
const workspace = await workspaceFromRequest(request);
|
|
535
601
|
const runtime = await getLoadedPluginRuntime(workspace);
|
|
@@ -630,6 +696,22 @@ async function createWorkspacesModeApp(opts) {
|
|
|
630
696
|
runtimePluginTrustDescription: RUNTIME_PLUGIN_TRUST_DESCRIPTION,
|
|
631
697
|
runtimePluginDiagnosticsEnabled: true
|
|
632
698
|
}));
|
|
699
|
+
void (async () => {
|
|
700
|
+
await new Promise((resolve2) => setTimeout(resolve2, 250));
|
|
701
|
+
try {
|
|
702
|
+
const byRecency = [...await registry.list()].sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
|
|
703
|
+
for (const workspace of byRecency) {
|
|
704
|
+
if (!workspace.available) continue;
|
|
705
|
+
try {
|
|
706
|
+
await getLoadedPluginRuntime(workspace);
|
|
707
|
+
} catch (error) {
|
|
708
|
+
app.log.warn({ err: error, workspaceId: workspace.id }, "[cli] workspace plugin prewarm failed");
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
} catch (error) {
|
|
712
|
+
app.log.warn({ err: error }, "[cli] workspace plugin prewarm skipped");
|
|
713
|
+
}
|
|
714
|
+
})();
|
|
633
715
|
return app;
|
|
634
716
|
}
|
|
635
717
|
export {
|
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
resolveDefaultWorkspacePluginPackagePaths
|
|
11
11
|
} from "@hachej/boring-workspace/app/server";
|
|
12
12
|
import {
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
resolvePluginSourceScopePaths,
|
|
14
|
+
resolveRegisteredPluginSourceDirs
|
|
15
15
|
} from "@hachej/boring-ui-plugin-cli";
|
|
16
16
|
function resolveBoringUiCliPackageRoot() {
|
|
17
17
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
@@ -41,8 +41,8 @@ function resolveCliBoringPluginDirs(workspaceRoot, options = {}) {
|
|
|
41
41
|
const globalScope = resolvePluginSourceScopePaths("global", { globalRoot: globalAgentRoot });
|
|
42
42
|
const localScope = resolvePluginSourceScopePaths("local", { workspaceRoot: resolvedWorkspaceRoot });
|
|
43
43
|
const packageSources = [
|
|
44
|
-
...
|
|
45
|
-
...
|
|
44
|
+
...resolveRegisteredPluginSourceDirs(globalScope).map((dir) => ({ ...dir, scope: "global" })),
|
|
45
|
+
...resolveRegisteredPluginSourceDirs(localScope).map((dir) => ({ ...dir, scope: "local" }))
|
|
46
46
|
];
|
|
47
47
|
const includeDefaultPackages = options.includeDefaultPackages ?? true;
|
|
48
48
|
const roots = [
|
|
@@ -56,6 +56,7 @@ function resolveCliBoringPluginDirs(workspaceRoot, options = {}) {
|
|
|
56
56
|
...packageSources.map((record) => ({
|
|
57
57
|
rootDir: record.rootDir,
|
|
58
58
|
kind: "external",
|
|
59
|
+
registered: true,
|
|
59
60
|
...record.scope === "local" ? { workspaceId: resolvedWorkspaceRoot } : {}
|
|
60
61
|
}))
|
|
61
62
|
];
|
|
@@ -8,6 +8,7 @@ import react from "@vitejs/plugin-react";
|
|
|
8
8
|
import { ErrorCode } from "@hachej/boring-agent/shared";
|
|
9
9
|
import ts from "typescript";
|
|
10
10
|
import { createServer } from "vite";
|
|
11
|
+
import { init as initCjsLexer, parse as parseCjsExports } from "cjs-module-lexer";
|
|
11
12
|
const PLUGIN_FRONT_RUNTIME_BASE_PATH = "/api/v1/agent-plugins/runtime";
|
|
12
13
|
const HOST_VIRTUAL_SINGLETON_MODULES = [
|
|
13
14
|
"react",
|
|
@@ -817,6 +818,86 @@ function runtimeAssetContentType(path) {
|
|
|
817
818
|
return "application/octet-stream";
|
|
818
819
|
}
|
|
819
820
|
}
|
|
821
|
+
const CJS_REQUIRE_PLACEHOLDER = "__boringCjsRequire";
|
|
822
|
+
let cjsLexerReady;
|
|
823
|
+
function ensureCjsLexer() {
|
|
824
|
+
if (!cjsLexerReady) cjsLexerReady = initCjsLexer();
|
|
825
|
+
return cjsLexerReady;
|
|
826
|
+
}
|
|
827
|
+
function hasEsmSyntax(sourceText) {
|
|
828
|
+
const sourceFile = ts.createSourceFile("cjs-probe.js", sourceText, ts.ScriptTarget.Latest, true, ts.ScriptKind.JS);
|
|
829
|
+
let esm = false;
|
|
830
|
+
const visit = (node) => {
|
|
831
|
+
if (esm) return;
|
|
832
|
+
if (ts.isImportDeclaration(node) || ts.isExportDeclaration(node) || ts.isExportAssignment(node) || ts.isFunctionDeclaration(node) && node.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword) || (ts.isVariableStatement(node) || ts.isClassDeclaration(node)) && node.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword)) {
|
|
833
|
+
esm = true;
|
|
834
|
+
return;
|
|
835
|
+
}
|
|
836
|
+
ts.forEachChild(node, visit);
|
|
837
|
+
};
|
|
838
|
+
visit(sourceFile);
|
|
839
|
+
return esm;
|
|
840
|
+
}
|
|
841
|
+
function looksLikeCommonJs(sourceText) {
|
|
842
|
+
if (hasEsmSyntax(sourceText)) return false;
|
|
843
|
+
return /\b(?:module\.exports|exports\.|exports\[)/.test(sourceText) || /\brequire\s*\(/.test(sourceText);
|
|
844
|
+
}
|
|
845
|
+
function collectRequireSpecifiers(sourceFile) {
|
|
846
|
+
const specifiers = /* @__PURE__ */ new Set();
|
|
847
|
+
const visit = (node) => {
|
|
848
|
+
if (ts.isCallExpression(node) && ts.isIdentifier(node.expression) && node.expression.text === "require" && node.arguments.length === 1 && ts.isStringLiteralLike(node.arguments[0])) {
|
|
849
|
+
specifiers.add(node.arguments[0].text);
|
|
850
|
+
}
|
|
851
|
+
ts.forEachChild(node, visit);
|
|
852
|
+
};
|
|
853
|
+
visit(sourceFile);
|
|
854
|
+
return [...specifiers];
|
|
855
|
+
}
|
|
856
|
+
async function cjsDependencyToEsm(sourceText, modulePath) {
|
|
857
|
+
await ensureCjsLexer();
|
|
858
|
+
const sourceFile = ts.createSourceFile(modulePath, sourceText, ts.ScriptTarget.Latest, true, ts.ScriptKind.JS);
|
|
859
|
+
const requireSpecifiers = collectRequireSpecifiers(sourceFile);
|
|
860
|
+
const importLines = [];
|
|
861
|
+
const requireMapEntries = [];
|
|
862
|
+
requireSpecifiers.forEach((specifier, index) => {
|
|
863
|
+
const binding = `${CJS_REQUIRE_PLACEHOLDER}_${index}`;
|
|
864
|
+
importLines.push(`import * as ${binding} from ${JSON.stringify(specifier)};`);
|
|
865
|
+
requireMapEntries.push(` [${JSON.stringify(specifier)}]: ${binding},`);
|
|
866
|
+
});
|
|
867
|
+
let exportNames = [];
|
|
868
|
+
try {
|
|
869
|
+
const parsed = parseCjsExports(sourceText, modulePath);
|
|
870
|
+
exportNames = [...parsed.exports];
|
|
871
|
+
} catch {
|
|
872
|
+
exportNames = [];
|
|
873
|
+
}
|
|
874
|
+
const safeExportNames = exportNames.filter(
|
|
875
|
+
(name) => /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name) && name !== "default" && name !== "__esModule"
|
|
876
|
+
);
|
|
877
|
+
const namedExportLines = safeExportNames.map(
|
|
878
|
+
(name) => `export const ${name} = ${JSON.stringify(name)} in __boringCjsExports ? __boringCjsExports[${JSON.stringify(name)}] : undefined;`
|
|
879
|
+
);
|
|
880
|
+
return [
|
|
881
|
+
...importLines,
|
|
882
|
+
`const ${CJS_REQUIRE_PLACEHOLDER}_modules = {`,
|
|
883
|
+
...requireMapEntries,
|
|
884
|
+
"};",
|
|
885
|
+
`function ${CJS_REQUIRE_PLACEHOLDER}(id) {`,
|
|
886
|
+
` const ns = ${CJS_REQUIRE_PLACEHOLDER}_modules[id];`,
|
|
887
|
+
` if (!ns) throw new Error("runtime plugin CommonJS require could not be resolved: " + id);`,
|
|
888
|
+
" const def = ns.default;",
|
|
889
|
+
" if (def !== undefined && (ns.__esModule || typeof def !== 'object' || Object.keys(ns).length === 1)) return def;",
|
|
890
|
+
" return ns.default !== undefined ? ns.default : ns;",
|
|
891
|
+
"}",
|
|
892
|
+
"const __boringCjsModule = { exports: {} };",
|
|
893
|
+
`(function (module, exports, require) {`,
|
|
894
|
+
sourceText,
|
|
895
|
+
`})(__boringCjsModule, __boringCjsModule.exports, ${CJS_REQUIRE_PLACEHOLDER});`,
|
|
896
|
+
"const __boringCjsExports = __boringCjsModule.exports;",
|
|
897
|
+
"export default __boringCjsExports;",
|
|
898
|
+
...namedExportLines
|
|
899
|
+
].join("\n");
|
|
900
|
+
}
|
|
820
901
|
function runtimeAssetModuleCode(path, bytes) {
|
|
821
902
|
const dataUrl = `data:${runtimeAssetContentType(path)};base64,${Buffer.from(bytes).toString("base64")}`;
|
|
822
903
|
return `export default ${JSON.stringify(dataUrl)};`;
|
|
@@ -1093,6 +1174,13 @@ async function createPluginFrontRuntimeHost(options = {}) {
|
|
|
1093
1174
|
return runtimeAssetModuleCode(resolvedPath2, await readFile(resolvedPath2));
|
|
1094
1175
|
}
|
|
1095
1176
|
const sourceText2 = await readFile(resolvedPath2, "utf8");
|
|
1177
|
+
const extension = extname(resolvedPath2).toLowerCase();
|
|
1178
|
+
const isCommonJs = extension === ".cjs" || extension !== ".mjs" && looksLikeCommonJs(sourceText2);
|
|
1179
|
+
if (isCommonJs) {
|
|
1180
|
+
const interop = await cjsDependencyToEsm(sourceText2, resolvedPath2);
|
|
1181
|
+
validateSourceImports(interop, resolvedPath2, basePath);
|
|
1182
|
+
return interop;
|
|
1183
|
+
}
|
|
1096
1184
|
validateSourceImports(sourceText2, resolvedPath2, basePath);
|
|
1097
1185
|
return sourceText2;
|
|
1098
1186
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hachej/boring-ui-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.41",
|
|
4
4
|
"description": "Turn an agent into an app",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -15,15 +15,16 @@
|
|
|
15
15
|
"@fastify/compress": "^8.3.1",
|
|
16
16
|
"@fastify/static": "^9.1.1",
|
|
17
17
|
"@vitejs/plugin-react": "^4.0.0",
|
|
18
|
+
"cjs-module-lexer": "^2.0.0",
|
|
18
19
|
"fastify": "^5.4.0",
|
|
19
20
|
"lucide-react": "^1.8.0",
|
|
20
21
|
"typescript": "^5.8.3",
|
|
21
22
|
"vite": "^6.0.0",
|
|
22
|
-
"@hachej/boring-agent": "0.1.
|
|
23
|
-
"@hachej/boring-ui-kit": "0.1.
|
|
24
|
-
"@hachej/boring-ask-user": "0.1.
|
|
25
|
-
"@hachej/boring-
|
|
26
|
-
"@hachej/boring-
|
|
23
|
+
"@hachej/boring-agent": "0.1.41",
|
|
24
|
+
"@hachej/boring-ui-kit": "0.1.41",
|
|
25
|
+
"@hachej/boring-ask-user": "0.1.41",
|
|
26
|
+
"@hachej/boring-ui-plugin-cli": "0.1.41",
|
|
27
|
+
"@hachej/boring-workspace": "0.1.41"
|
|
27
28
|
},
|
|
28
29
|
"devDependencies": {
|
|
29
30
|
"@tailwindcss/vite": "^4.0.0",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as x,j as e,T as C,a as S,b as R,c as v,d as N,I as T,R as E,B as M,C as $,e as I,f as D,g as L,h as _}from"./index-
|
|
1
|
+
import{r as x,j as e,T as C,a as S,b as R,c as v,d as N,I as T,R as E,B as M,C as $,e as I,f as D,g as L,h as _}from"./index-CVAj7PxY.js";function z({value:n,label:t}){const[o,s]=x.useState(!1),i=x.useCallback(()=>{D(n).then(a=>{a&&(s(!0),window.setTimeout(()=>s(!1),1200))})},[n]);return e.jsx(T,{type:"button",variant:"ghost",size:"icon-xs",onClick:i,className:"text-muted-foreground/60","aria-label":t,title:t,children:o?e.jsx(L,{className:"h-3 w-3"}):e.jsx(_,{className:"h-3 w-3"})})}function w({label:n,value:t}){return e.jsxs("div",{className:"rounded-md border border-border/40 bg-muted/20 p-2",children:[e.jsxs("div",{className:"mb-1 flex items-center justify-between gap-2",children:[e.jsx("span",{className:"text-[10px] font-medium uppercase tracking-[0.16em] text-muted-foreground",children:n}),e.jsx(z,{value:t,label:`Copy ${n}`})]}),e.jsx("code",{className:"block break-all font-mono text-[11px] leading-relaxed text-foreground dark:text-zinc-100",children:t})]})}function A({sessionId:n}){const t=`pi --session ${n}`;return e.jsxs("div",{className:"flex flex-col gap-3 overflow-auto p-3 text-[11px] text-muted-foreground dark:text-zinc-300",children:[e.jsx("p",{className:"text-muted-foreground dark:text-zinc-300",children:"This web chat is backed by a pi session. Use the id below from the workspace root to resume the same conversation in a terminal."}),e.jsx(w,{label:"Pi session id",value:n}),e.jsx(w,{label:"Resume command",value:t}),e.jsxs("p",{className:"rounded-md border border-border/30 bg-muted/10 p-2 text-[10px] leading-relaxed text-muted-foreground dark:text-zinc-300",children:["Tip: ",e.jsx("code",{className:"font-mono text-foreground/80",children:"pi --continue"})," ","opens the most recent session for the current working directory. The explicit command above targets this session directly."]})]})}const P=2500,y=20;function X({apiBaseUrl:n,fetch:t,sessionId:o,requestHeaders:s,storageScope:i}){const[a,r]=x.useState({kind:"loading"}),[c,u]=x.useState(0),m=x.useRef(0),j=x.useCallback(()=>{m.current=0,u(l=>l+1)},[]);return x.useEffect(()=>{let l=!1,f=null;return r({kind:"loading"}),(t??globalThis.fetch.bind(globalThis))(Y(n,`/api/v1/agent/sessions/${encodeURIComponent(o)}/system-prompt`),{headers:J(s,i)}).then(async d=>{var g;if(l)return;if(d.ok){const b=await d.json();if(typeof b.systemPrompt=="string"){m.current=0,r({kind:"ok",text:b.systemPrompt});return}}const h=await d.json().catch(()=>null),p=((g=h==null?void 0:h.error)==null?void 0:g.message)??`HTTP ${d.status}`;d.status===404&&m.current<y?(r({kind:"empty",reason:p}),f=setTimeout(()=>{l||(m.current++,u(b=>b+1))},P)):r(d.status===404?{kind:"empty",reason:p}:{kind:"error",reason:p})}).catch(d=>{l||r({kind:"error",reason:d instanceof Error?d.message:String(d)})}),()=>{l=!0,f&&clearTimeout(f)}},[n,t,o,s,c,i]),e.jsxs("div",{className:"flex flex-col h-full min-h-0",children:[e.jsxs("div",{className:"shrink-0 flex items-center justify-between px-3 pt-2 pb-1 border-b border-border/40",children:[e.jsx("span",{className:"text-[10px] text-muted-foreground/80 font-mono",children:a.kind==="ok"?`${a.text.length.toLocaleString()} chars`:a.kind==="loading"?"loading…":a.kind==="empty"?`waiting for session · retry ${m.current}/${y}`:"error"}),a.kind!=="loading"&&e.jsx(T,{type:"button",variant:"ghost",size:"icon-xs",onClick:j,className:"text-muted-foreground/60","aria-label":"Refresh system prompt",children:e.jsx(E,{className:"h-3 w-3"})})]}),(a.kind==="loading"||a.kind==="empty")&&e.jsx("p",{className:"text-[11px] text-muted-foreground p-3",children:a.kind==="loading"?"Loading…":a.reason}),a.kind==="error"&&e.jsx("p",{className:"text-[11px] text-destructive p-3",children:a.reason}),a.kind==="ok"&&e.jsx("pre",{className:"flex-1 overflow-auto px-3 py-2 font-mono text-[11px] leading-relaxed text-foreground whitespace-pre-wrap break-words",children:a.text})]})}function F(n){const t=n,o=(t==null?void 0:t.type)??"?";if(o==="text"){const s=String(t.text??"");return s.slice(0,80)+(s.length>80?"…":"")}if(o==="tool-invocation"){const s=t.toolInvocation,i=String((s==null?void 0:s.state)??"");return`${(s==null?void 0:s.toolName)??"?"}() · ${i}`}if(o==="reasoning"){const s=String(t.text??t.reasoning??"");return s.slice(0,80)+(s.length>80?"…":"")}return o}function H(n){const t=[];for(let o=0;o<n.length;o++){const s=n[o],i=s,a=i.createdAt?new Date(i.createdAt).toISOString().slice(11,23):null;for(let r=0;r<s.parts.length;r++){const c=s.parts[r];t.push({msgId:s.id,msgIndex:o,role:s.role,time:a,partIndex:r,partType:(c==null?void 0:c.type)??"unknown",part:c})}}return t}function O({messages:n}){const t=H(n),[o,s]=x.useState(null),i=x.useRef(null),a=x.useRef(t.length);return x.useEffect(()=>{var r;t.length!==a.current&&((r=i.current)==null||r.scrollIntoView({behavior:"smooth"}),a.current=t.length)},[t.length]),t.length===0?e.jsx("p",{className:"text-[11px] text-muted-foreground p-3",children:"No messages yet."}):e.jsxs("div",{className:"flex flex-col h-full min-h-0",children:[e.jsxs("div",{className:"shrink-0 px-3 pt-2 pb-1 text-[10px] text-muted-foreground/80 font-mono border-b border-border/40",children:[n.length," msg · ",t.length," parts"]}),e.jsxs("div",{className:"flex-1 overflow-auto",children:[t.map(r=>{const c=`${r.msgId}:${r.partIndex}`,u=o===c;return e.jsxs("div",{className:"border-b border-border/30 last:border-0",children:[e.jsxs(M,{type:"button",variant:"ghost",onClick:()=>s(u?null:c),className:"h-auto w-full justify-start gap-1.5 rounded-none px-2 py-1.5 text-left",children:[e.jsx("span",{className:"mt-0.5 shrink-0 text-muted-foreground/40",children:u?e.jsx($,{className:"h-3 w-3"}):e.jsx(I,{className:"h-3 w-3"})}),e.jsx("span",{className:"font-mono text-[10px] shrink-0 w-20",children:r.time?e.jsx("span",{className:"text-muted-foreground/60",children:r.time}):e.jsxs("span",{className:"text-muted-foreground/30",children:["m",r.msgIndex]})}),e.jsx("span",{className:N("shrink-0 font-mono text-[10px] w-14",r.role==="user"?"text-accent":"text-muted-foreground"),children:r.role}),e.jsx("span",{className:"shrink-0 font-mono text-[10px] text-muted-foreground/60 w-24",children:r.partType}),e.jsx("span",{className:"flex-1 min-w-0 font-mono text-[11px] text-foreground truncate",children:F(r.part)})]}),u&&e.jsx("pre",{className:"px-3 pb-2 font-mono text-[10px] leading-relaxed text-foreground/80 whitespace-pre-wrap break-words bg-muted/20",children:JSON.stringify(r.part,null,2)})]},c)}),e.jsx("div",{ref:i})]})]})}const V=[{id:"session",label:"Session"},{id:"prompt",label:"System prompt"},{id:"messages",label:"Messages"}],K=280,W=800;function G({apiBaseUrl:n,fetch:t,sessionId:o,messages:s,requestHeaders:i,storageScope:a,width:r,onWidthChange:c}){const[u,m]=x.useState("session"),j=x.useCallback(l=>{l.preventDefault();const f=l.clientX,k=r,d=p=>{const g=f-p.clientX;c(Math.min(W,Math.max(K,k+g)))},h=()=>{window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",h)};window.addEventListener("mousemove",d),window.addEventListener("mouseup",h)},[r,c]);return e.jsxs(e.Fragment,{children:[e.jsx("div",{onMouseDown:j,className:"w-1 shrink-0 cursor-col-resize hover:bg-accent/40 active:bg-accent/60 transition-colors","aria-hidden":!0}),e.jsx("aside",{style:{width:r},className:N("flex h-full shrink-0 flex-col border-l border-border/60","bg-[oklch(from_var(--background)_calc(l-0.01)_c_h)]"),children:e.jsxs(C,{value:u,onValueChange:l=>m(l),className:"flex flex-col flex-1 min-h-0 overflow-hidden",children:[e.jsx("header",{className:"flex shrink-0 items-center gap-0 border-b border-border/60 px-1",children:e.jsx(S,{variant:"line",className:"h-auto gap-0 p-0 w-full",children:V.map(({id:l,label:f})=>e.jsx(R,{value:l,className:"h-8 flex-none px-3 py-2 text-[11px] font-medium data-[state=active]:after:bg-[color:var(--accent)]",children:f},l))})}),e.jsx(v,{value:"session",forceMount:!0,className:"flex flex-col flex-1 min-h-0 overflow-hidden data-[state=inactive]:hidden",children:e.jsx(A,{sessionId:o})}),e.jsx(v,{value:"prompt",forceMount:!0,className:"flex flex-col flex-1 min-h-0 overflow-hidden data-[state=inactive]:hidden",children:e.jsx(X,{apiBaseUrl:n,fetch:t,sessionId:o,requestHeaders:i,storageScope:a})}),e.jsx(v,{value:"messages",forceMount:!0,className:"flex flex-col flex-1 min-h-0 overflow-hidden data-[state=inactive]:hidden",children:e.jsx(O,{messages:s})})]})})]})}function Y(n,t){return`${(n==null?void 0:n.replace(/\/$/,""))??""}${t}`}function J(n,t){if(!n&&!t)return;const o={...n??{}},s=Object.keys(o).some(i=>i.toLowerCase()==="x-boring-storage-scope");return t&&!s&&(o["x-boring-storage-scope"]=t),o}export{G as DebugDrawer};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{be as S,bE as ln,aZ as A,bc as P,aY as W,bF as gn,bG as dn,bH as hn,bI as z,bJ as pn,bK as An,bL as N,bf as m,bk as K,bn as T,bM as _n,bi as on,bN as wn,bO as On,a_ as V,bP as bn,bQ as R}from"./index-
|
|
1
|
+
import{be as S,bE as ln,aZ as A,bc as P,aY as W,bF as gn,bG as dn,bH as hn,bI as z,bJ as pn,bK as An,bL as N,bf as m,bk as K,bn as T,bM as _n,bi as on,bN as wn,bO as On,a_ as V,bP as bn,bQ as R}from"./index-CVAj7PxY.js";var Pn="[object Symbol]";function x(n){return typeof n=="symbol"||S(n)&&ln(n)==Pn}function vn(n,r){for(var e=-1,i=n==null?0:n.length,f=Array(i);++e<i;)f[e]=r(n[e],e,n);return f}var U=P?P.prototype:void 0,B=U?U.toString:void 0;function k(n){if(typeof n=="string")return n;if(A(n))return vn(n,k)+"";if(x(n))return B?B.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(){}function En(n,r){for(var e=-1,i=n==null?0:n.length;++e<i&&r(n[e],e,n)!==!1;);return n}function cn(n,r,e,i){for(var f=n.length,t=e+-1;++t<f;)if(r(n[t],t,n))return t;return-1}function Tn(n){return n!==n}function In(n,r,e){for(var i=e-1,f=n.length;++i<f;)if(n[i]===r)return i;return-1}function Rn(n,r,e){return r===r?In(n,r,e):cn(n,Tn,e)}function Ln(n,r){var e=n==null?0:n.length;return!!e&&Rn(n,r,0)>-1}function M(n){return W(n)?gn(n):dn(n)}var Sn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,xn=/^\w*$/;function $(n,r){if(A(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||x(n)?!0:xn.test(n)||!Sn.test(n)||r!=null&&n in Object(r)}var Mn=500;function $n(n){var r=hn(n,function(i){return e.size===Mn&&e.clear(),i}),e=r.cache;return r}var Cn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Fn=/\\(\\)?/g,Gn=$n(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Cn,function(e,i,f,t){r.push(f?t.replace(Fn,"$1"):i||e)}),r});function Dn(n){return n==null?"":k(n)}function j(n,r){return A(n)?n:$(n,r)?[n]:Gn(Dn(n))}function I(n){if(typeof n=="string"||x(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function nn(n,r){r=j(r,n);for(var e=0,i=r.length;n!=null&&e<i;)n=n[I(r[e++])];return e&&e==i?n:void 0}function Nn(n,r,e){var i=n==null?void 0:nn(n,r);return i===void 0?e:i}function rn(n,r){for(var e=-1,i=r.length,f=n.length;++e<i;)n[f+e]=r[e];return n}var H=P?P.isConcatSpreadable:void 0;function mn(n){return A(n)||z(n)||!!(H&&n&&n[H])}function Hr(n,r,e,i,f){var t=-1,s=n.length;for(e||(e=mn),f||(f=[]);++t<s;){var u=n[t];e(u)?rn(f,u):i||(f[f.length]=u)}return f}function Kn(n,r,e,i){var f=-1,t=n==null?0:n.length;for(i&&t&&(e=n[++f]);++f<t;)e=r(e,n[f],f,n);return e}function en(n,r){for(var e=-1,i=n==null?0:n.length,f=0,t=[];++e<i;){var s=n[e];r(s,e,n)&&(t[f++]=s)}return t}function Un(){return[]}var Bn=Object.prototype,Hn=Bn.propertyIsEnumerable,Z=Object.getOwnPropertySymbols,Zn=Z?function(n){return n==null?[]:(n=Object(n),en(Z(n),function(r){return Hn.call(n,r)}))}:Un;function qn(n,r,e){var i=r(n);return A(n)?i:rn(i,e(n))}function q(n){return qn(n,M,Zn)}var Yn="__lodash_hash_undefined__";function Jn(n){return this.__data__.set(n,Yn),this}function Qn(n){return this.__data__.has(n)}function v(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new pn;++r<e;)this.add(n[r])}v.prototype.add=v.prototype.push=Jn;v.prototype.has=Qn;function Xn(n,r){for(var e=-1,i=n==null?0:n.length;++e<i;)if(r(n[e],e,n))return!0;return!1}function tn(n,r){return n.has(r)}var Wn=1,zn=2;function fn(n,r,e,i,f,t){var s=e&Wn,u=n.length,a=r.length;if(u!=a&&!(s&&a>u))return!1;var h=t.get(n),g=t.get(r);if(h&&g)return h==r&&g==n;var l=-1,d=!0,o=e&zn?new v:void 0;for(t.set(n,r),t.set(r,n);++l<u;){var p=n[l],_=r[l];if(i)var w=s?i(_,p,l,r,n,t):i(p,_,l,n,r,t);if(w!==void 0){if(w)continue;d=!1;break}if(o){if(!Xn(r,function(O,b){if(!tn(o,b)&&(p===O||f(p,O,e,i,t)))return o.push(b)})){d=!1;break}}else if(!(p===_||f(p,_,e,i,t))){d=!1;break}}return t.delete(n),t.delete(r),d}function Vn(n){var r=-1,e=Array(n.size);return n.forEach(function(i,f){e[++r]=[f,i]}),e}function C(n){var r=-1,e=Array(n.size);return n.forEach(function(i){e[++r]=i}),e}var kn=1,jn=2,nr="[object Boolean]",rr="[object Date]",er="[object Error]",ir="[object Map]",tr="[object Number]",fr="[object RegExp]",sr="[object Set]",ur="[object String]",ar="[object Symbol]",lr="[object ArrayBuffer]",gr="[object DataView]",Y=P?P.prototype:void 0,L=Y?Y.valueOf:void 0;function dr(n,r,e,i,f,t,s){switch(e){case gr:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case lr:return!(n.byteLength!=r.byteLength||!t(new N(n),new N(r)));case nr:case rr:case tr:return An(+n,+r);case er:return n.name==r.name&&n.message==r.message;case fr:case ur:return n==r+"";case ir:var u=Vn;case sr:var a=i&kn;if(u||(u=C),n.size!=r.size&&!a)return!1;var h=s.get(n);if(h)return h==r;i|=jn,s.set(n,r);var g=fn(u(n),u(r),i,f,t,s);return s.delete(n),g;case ar:if(L)return L.call(n)==L.call(r)}return!1}var hr=1,pr=Object.prototype,Ar=pr.hasOwnProperty;function _r(n,r,e,i,f,t){var s=e&hr,u=q(n),a=u.length,h=q(r),g=h.length;if(a!=g&&!s)return!1;for(var l=a;l--;){var d=u[l];if(!(s?d in r:Ar.call(r,d)))return!1}var o=t.get(n),p=t.get(r);if(o&&p)return o==r&&p==n;var _=!0;t.set(n,r),t.set(r,n);for(var w=s;++l<a;){d=u[l];var O=n[d],b=r[d];if(i)var D=s?i(b,O,d,r,n,t):i(O,b,d,n,r,t);if(!(D===void 0?O===b||f(O,b,e,i,t):D)){_=!1;break}w||(w=d=="constructor")}if(_&&!w){var y=n.constructor,E=r.constructor;y!=E&&"constructor"in n&&"constructor"in r&&!(typeof y=="function"&&y instanceof y&&typeof E=="function"&&E instanceof E)&&(_=!1)}return t.delete(n),t.delete(r),_}var or=1,J="[object Arguments]",Q="[object Array]",c="[object Object]",wr=Object.prototype,X=wr.hasOwnProperty;function Or(n,r,e,i,f,t){var s=A(n),u=A(r),a=s?Q:m(n),h=u?Q:m(r);a=a==J?c:a,h=h==J?c:h;var g=a==c,l=h==c,d=a==h;if(d&&K(n)){if(!K(r))return!1;s=!0,g=!1}if(d&&!g)return t||(t=new T),s||_n(n)?fn(n,r,e,i,f,t):dr(n,r,a,e,i,f,t);if(!(e&or)){var o=g&&X.call(n,"__wrapped__"),p=l&&X.call(r,"__wrapped__");if(o||p){var _=o?n.value():n,w=p?r.value():r;return t||(t=new T),f(_,w,e,i,t)}}return d?(t||(t=new T),_r(n,r,e,i,f,t)):!1}function F(n,r,e,i,f){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:Or(n,r,e,i,F,f)}var br=1,Pr=2;function vr(n,r,e,i){var f=e.length,t=f;if(n==null)return!t;for(n=Object(n);f--;){var s=e[f];if(s[2]?s[1]!==n[s[0]]:!(s[0]in n))return!1}for(;++f<t;){s=e[f];var u=s[0],a=n[u],h=s[1];if(s[2]){if(a===void 0&&!(u in n))return!1}else{var g=new T,l;if(!(l===void 0?F(h,a,br|Pr,i,g):l))return!1}}return!0}function sn(n){return n===n&&!on(n)}function yr(n){for(var r=M(n),e=r.length;e--;){var i=r[e],f=n[i];r[e]=[i,f,sn(f)]}return r}function un(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function Er(n){var r=yr(n);return r.length==1&&r[0][2]?un(r[0][0],r[0][1]):function(e){return e===n||vr(e,n,r)}}function cr(n,r){return n!=null&&r in Object(n)}function Tr(n,r,e){r=j(r,n);for(var i=-1,f=r.length,t=!1;++i<f;){var s=I(r[i]);if(!(t=n!=null&&e(n,s)))break;n=n[s]}return t||++i!=f?t:(f=n==null?0:n.length,!!f&&wn(f)&&On(s,f)&&(A(n)||z(n)))}function Ir(n,r){return n!=null&&Tr(n,r,cr)}var Rr=1,Lr=2;function Sr(n,r){return $(n)&&sn(r)?un(I(n),r):function(e){var i=Nn(e,n);return i===void 0&&i===r?Ir(e,n):F(r,i,Rr|Lr)}}function xr(n){return function(r){return r==null?void 0:r[n]}}function Mr(n){return function(r){return nn(r,n)}}function $r(n){return $(n)?xr(I(n)):Mr(n)}function an(n){return typeof n=="function"?n:n==null?V:typeof n=="object"?A(n)?Sr(n[0],n[1]):Er(n):$r(n)}function Cr(n,r){return n&&bn(n,r,M)}function Fr(n,r){return function(e,i){if(e==null)return e;if(!W(e))return n(e,i);for(var f=e.length,t=-1,s=Object(e);++t<f&&i(s[t],t,s)!==!1;);return e}}var G=Fr(Cr);function Gr(n){return typeof n=="function"?n:V}function Zr(n,r){var e=A(n)?En:G;return e(n,Gr(r))}function Dr(n,r){var e=[];return G(n,function(i,f,t){r(i,f,t)&&e.push(i)}),e}function qr(n,r){var e=A(n)?en:Dr;return e(n,an(r))}function Nr(n,r,e,i,f){return f(n,function(t,s,u){e=i?(i=!1,t):r(e,t,s,u)}),e}function Yr(n,r,e){var i=A(n)?Kn:Nr,f=arguments.length<3;return i(n,an(r),e,f,G)}var mr=1/0,Kr=R&&1/C(new R([,-0]))[1]==mr?function(n){return new R(n)}:yn,Ur=200;function Jr(n,r,e){var i=-1,f=Ln,t=n.length,s=!0,u=[],a=u;if(t>=Ur){var h=r?null:Kr(n);if(h)return C(h);s=!1,f=tn,a=new v}else a=r?[]:u;n:for(;++i<t;){var g=n[i],l=r?r(g):g;if(g=g!==0?g:0,s&&l===l){for(var d=a.length;d--;)if(a[d]===l)continue n;r&&a.push(l),u.push(g)}else f(a,l,e)||(a!==u&&a.push(l),u.push(g))}return u}export{G as a,Hr as b,an as c,vn as d,rn as e,qn as f,Zn as g,En as h,x as i,q as j,M as k,Jr as l,qr as m,Zr as n,cn as o,Gr as p,Cr as q,Yr as r,Un as s,Tr as t,j as u,I as v,nn as w,Ir as x,Dn as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a4 as ln,a5 as an,a6 as H,a7 as q,a8 as B,a9 as un,aa as g,ab as tn,ac as L,ad as _,ae as rn,af as o,ag as on,ah as sn,ai as fn}from"./index-
|
|
1
|
+
import{a4 as ln,a5 as an,a6 as H,a7 as q,a8 as B,a9 as un,aa as g,ab as tn,ac as L,ad as _,ae as rn,af as o,ag as on,ah as sn,ai as fn}from"./index-CVAj7PxY.js";function cn(l){return l.innerRadius}function gn(l){return l.outerRadius}function yn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,C,a){var O=I-l,i=D-h,n=C-v,d=a-A,u=d*O-n*i;if(!(u*u<g))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(u+f)/2,t=(s+c)/2,m=f-u,y=c-s,R=m*m+y*y,T=v-A,P=u*c-f*s,S=(y<0?-1:1)*L(on(0,T*T*R-P*P)),j=(P*y-m*S)/R,z=(-P*m-y*S)/R,w=(P*y+m*S)/R,p=(-P*m+y*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=gn,I=B(0),D=null,v=yn,A=dn,C=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,F=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>g))a.moveTo(0,0);else if(F>tn-g)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>g&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,y=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>g&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>g){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>g?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>g?(M*=t?1:-1,m+=M,y-=M):(S=0,m=y=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>g){var U=s*H(y),V=s*q(y),X=u*H(R),Y=u*q(R),E;if(F<an)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(fn((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>g?x>g?(e=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(J,K),a.arc(0,0,s,m,y,!t)):a.moveTo(J,K),!(u>g)||!(P>g)?a.lineTo(N,Q):p>g?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|