@fairfox/polly 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{cli/polly.ts → dist/cli/polly.js} +100 -206
- package/dist/cli/polly.js.map +10 -0
- package/dist/scripts/build-extension.js +137 -0
- package/dist/scripts/build-extension.js.map +10 -0
- package/dist/vendor/verify/src/cli.js +2089 -0
- package/dist/vendor/verify/src/cli.js.map +16 -0
- package/dist/vendor/visualize/src/cli.js +2204 -0
- package/dist/vendor/visualize/src/cli.js.map +19 -0
- package/package.json +12 -12
- package/vendor/analysis/src/extract/adr.ts +0 -212
- package/vendor/analysis/src/extract/architecture.ts +0 -160
- package/vendor/analysis/src/extract/contexts.ts +0 -298
- package/vendor/analysis/src/extract/flows.ts +0 -309
- package/vendor/analysis/src/extract/handlers.ts +0 -321
- package/vendor/analysis/src/extract/index.ts +0 -9
- package/vendor/analysis/src/extract/integrations.ts +0 -329
- package/vendor/analysis/src/extract/manifest.ts +0 -298
- package/vendor/analysis/src/extract/types.ts +0 -389
- package/vendor/analysis/src/index.ts +0 -7
- package/vendor/analysis/src/types/adr.ts +0 -53
- package/vendor/analysis/src/types/architecture.ts +0 -245
- package/vendor/analysis/src/types/core.ts +0 -210
- package/vendor/analysis/src/types/index.ts +0 -18
- package/vendor/verify/src/adapters/base.ts +0 -164
- package/vendor/verify/src/adapters/detection.ts +0 -281
- package/vendor/verify/src/adapters/event-bus/index.ts +0 -480
- package/vendor/verify/src/adapters/web-extension/index.ts +0 -508
- package/vendor/verify/src/adapters/websocket/index.ts +0 -486
- package/vendor/verify/src/cli.ts +0 -430
- package/vendor/verify/src/codegen/config.ts +0 -354
- package/vendor/verify/src/codegen/tla.ts +0 -719
- package/vendor/verify/src/config/parser.ts +0 -303
- package/vendor/verify/src/config/types.ts +0 -113
- package/vendor/verify/src/core/model.ts +0 -267
- package/vendor/verify/src/core/primitives.ts +0 -106
- package/vendor/verify/src/extract/handlers.ts +0 -2
- package/vendor/verify/src/extract/types.ts +0 -2
- package/vendor/verify/src/index.ts +0 -150
- package/vendor/verify/src/primitives/index.ts +0 -102
- package/vendor/verify/src/runner/docker.ts +0 -283
- package/vendor/verify/src/types.ts +0 -51
- package/vendor/visualize/src/cli.ts +0 -365
- package/vendor/visualize/src/codegen/structurizr.ts +0 -770
- package/vendor/visualize/src/index.ts +0 -13
- package/vendor/visualize/src/runner/export.ts +0 -235
- package/vendor/visualize/src/viewer/server.ts +0 -485
- /package/dist/{background → src/background}/index.js +0 -0
- /package/dist/{background → src/background}/index.js.map +0 -0
- /package/dist/{background → src/background}/message-router.js +0 -0
- /package/dist/{background → src/background}/message-router.js.map +0 -0
- /package/dist/{index.js → src/index.js} +0 -0
- /package/dist/{index.js.map → src/index.js.map} +0 -0
- /package/dist/{shared → src/shared}/adapters/index.js +0 -0
- /package/dist/{shared → src/shared}/adapters/index.js.map +0 -0
- /package/dist/{shared → src/shared}/lib/context-helpers.js +0 -0
- /package/dist/{shared → src/shared}/lib/context-helpers.js.map +0 -0
- /package/dist/{shared → src/shared}/lib/errors.js +0 -0
- /package/dist/{shared → src/shared}/lib/errors.js.map +0 -0
- /package/dist/{shared → src/shared}/lib/message-bus.js +0 -0
- /package/dist/{shared → src/shared}/lib/message-bus.js.map +0 -0
- /package/dist/{shared → src/shared}/lib/state.js +0 -0
- /package/dist/{shared → src/shared}/lib/state.js.map +0 -0
- /package/dist/{shared → src/shared}/lib/test-helpers.js +0 -0
- /package/dist/{shared → src/shared}/lib/test-helpers.js.map +0 -0
- /package/dist/{shared → src/shared}/state/app-state.js +0 -0
- /package/dist/{shared → src/shared}/state/app-state.js.map +0 -0
- /package/dist/{shared → src/shared}/types/messages.js +0 -0
- /package/dist/{shared → src/shared}/types/messages.js.map +0 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
|
|
3
|
+
// scripts/build-extension.ts
|
|
4
|
+
var srcDir = process.env["WEB_EXT_SRC"] || "src";
|
|
5
|
+
var distDir = process.env["WEB_EXT_DIST"] || "dist";
|
|
6
|
+
var manifestPath = process.env["WEB_EXT_MANIFEST"] || "manifest.json";
|
|
7
|
+
var isProd = process.env["WEB_EXT_PROD"] === "true";
|
|
8
|
+
async function cleanDist() {
|
|
9
|
+
await Bun.$`rm -rf ${distDir}`.quiet();
|
|
10
|
+
await Bun.$`mkdir -p ${distDir}`.quiet();
|
|
11
|
+
}
|
|
12
|
+
async function copyManifest() {
|
|
13
|
+
if (!await Bun.file(manifestPath).exists()) {
|
|
14
|
+
throw new Error(`manifest.json not found at: ${manifestPath}`);
|
|
15
|
+
}
|
|
16
|
+
const manifest = await Bun.file(manifestPath).json();
|
|
17
|
+
await Bun.write(`${distDir}/manifest.json`, JSON.stringify(manifest, null, 2));
|
|
18
|
+
}
|
|
19
|
+
async function copyHTML() {
|
|
20
|
+
const htmlGlob = new Bun.Glob("**/*.html");
|
|
21
|
+
const htmlFiles = await Array.fromAsync(htmlGlob.scan({ cwd: srcDir, onlyFiles: true }));
|
|
22
|
+
for (const file of htmlFiles) {
|
|
23
|
+
const srcPath = `${srcDir}/${file}`;
|
|
24
|
+
const outPath = `${distDir}/${file}`;
|
|
25
|
+
const outDir = `${distDir}/${file.split("/").slice(0, -1).join("/")}`;
|
|
26
|
+
if (!await Bun.file(outDir).exists()) {
|
|
27
|
+
await Bun.$`mkdir -p ${outDir}`.quiet();
|
|
28
|
+
}
|
|
29
|
+
const content = await Bun.file(srcPath).text();
|
|
30
|
+
await Bun.write(outPath, content);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async function copyAssets() {
|
|
34
|
+
const assetsDir = `${srcDir}/assets`;
|
|
35
|
+
if (!await Bun.file(assetsDir).exists()) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const outDir = `${distDir}/assets`;
|
|
39
|
+
await Bun.$`mkdir -p ${outDir}`.quiet();
|
|
40
|
+
const glob = new Bun.Glob("**/*");
|
|
41
|
+
const files = await Array.fromAsync(glob.scan({ cwd: assetsDir, onlyFiles: true }));
|
|
42
|
+
for (const file of files) {
|
|
43
|
+
const srcPath = `${assetsDir}/${file}`;
|
|
44
|
+
const outPath = `${outDir}/${file}`;
|
|
45
|
+
const fileOutDir = `${outDir}/${file.split("/").slice(0, -1).join("/")}`;
|
|
46
|
+
if (!await Bun.file(fileOutDir).exists()) {
|
|
47
|
+
await Bun.$`mkdir -p ${fileOutDir}`.quiet();
|
|
48
|
+
}
|
|
49
|
+
const content = await Bun.file(srcPath).arrayBuffer();
|
|
50
|
+
await Bun.write(outPath, content);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async function buildTypeScript() {
|
|
54
|
+
const entryPoints = [];
|
|
55
|
+
const patterns = [
|
|
56
|
+
"background/**/*.{ts,tsx}",
|
|
57
|
+
"popup/**/*.{ts,tsx}",
|
|
58
|
+
"options/**/*.{ts,tsx}",
|
|
59
|
+
"content/**/*.{ts,tsx}",
|
|
60
|
+
"devtools/**/*.{ts,tsx}",
|
|
61
|
+
"offscreen/**/*.{ts,tsx}",
|
|
62
|
+
"page/**/*.{ts,tsx}"
|
|
63
|
+
];
|
|
64
|
+
for (const pattern of patterns) {
|
|
65
|
+
const glob = new Bun.Glob(pattern);
|
|
66
|
+
const files = await Array.fromAsync(glob.scan({ cwd: srcDir, onlyFiles: true }));
|
|
67
|
+
for (const file of files) {
|
|
68
|
+
if (file.includes("index.") || file.includes("panel.") || file.includes("devtools.") || file.endsWith("worker.ts")) {
|
|
69
|
+
entryPoints.push(`${srcDir}/${file}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (entryPoints.length === 0) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const result = await Bun.build({
|
|
77
|
+
entrypoints: entryPoints,
|
|
78
|
+
outdir: distDir,
|
|
79
|
+
format: "esm",
|
|
80
|
+
target: "browser",
|
|
81
|
+
minify: isProd,
|
|
82
|
+
sourcemap: isProd ? "none" : "inline",
|
|
83
|
+
splitting: false,
|
|
84
|
+
external: ["chrome"],
|
|
85
|
+
naming: {
|
|
86
|
+
entry: "[dir]/[name].[ext]",
|
|
87
|
+
chunk: "[name]-[hash].[ext]",
|
|
88
|
+
asset: "[name]-[hash].[ext]"
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
if (!result.success) {
|
|
92
|
+
console.error("❌ TypeScript build errors:");
|
|
93
|
+
for (const message of result.logs) {
|
|
94
|
+
console.error(message);
|
|
95
|
+
}
|
|
96
|
+
throw new Error("TypeScript build failed");
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
async function buildCSS() {
|
|
100
|
+
const cssGlob = new Bun.Glob("**/*.css");
|
|
101
|
+
const cssFiles = await Array.fromAsync(cssGlob.scan({ cwd: srcDir, onlyFiles: true }));
|
|
102
|
+
if (cssFiles.length === 0) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
for (const file of cssFiles) {
|
|
106
|
+
const srcPath = `${srcDir}/${file}`;
|
|
107
|
+
const outPath = `${distDir}/${file}`;
|
|
108
|
+
const outDir = `${distDir}/${file.split("/").slice(0, -1).join("/")}`;
|
|
109
|
+
if (!await Bun.file(outDir).exists()) {
|
|
110
|
+
await Bun.$`mkdir -p ${outDir}`.quiet();
|
|
111
|
+
}
|
|
112
|
+
const result = await Bun.build({
|
|
113
|
+
entrypoints: [srcPath],
|
|
114
|
+
minify: isProd
|
|
115
|
+
});
|
|
116
|
+
if (result.success && result.outputs[0]) {
|
|
117
|
+
await Bun.write(outPath, result.outputs[0]);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async function build() {
|
|
122
|
+
try {
|
|
123
|
+
await cleanDist();
|
|
124
|
+
await copyManifest();
|
|
125
|
+
await copyHTML();
|
|
126
|
+
await copyAssets();
|
|
127
|
+
await buildCSS();
|
|
128
|
+
await buildTypeScript();
|
|
129
|
+
} catch (error) {
|
|
130
|
+
console.error(`
|
|
131
|
+
❌ Build failed:`, error);
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
build();
|
|
136
|
+
|
|
137
|
+
//# debugId=E48EE2B6AB36ED2B64756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../scripts/build-extension.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"#!/usr/bin/env bun\n/**\n * Extension Build Script\n *\n * Called by the web-ext CLI to build user extensions.\n * Reads configuration from environment variables set by CLI.\n */\n\n// Configuration from CLI via environment\nconst srcDir = process.env[\"WEB_EXT_SRC\"] || \"src\";\nconst distDir = process.env[\"WEB_EXT_DIST\"] || \"dist\";\nconst manifestPath = process.env[\"WEB_EXT_MANIFEST\"] || \"manifest.json\";\nconst isProd = process.env[\"WEB_EXT_PROD\"] === \"true\";\n\n// ============================================================================\n// Build Functions\n// ============================================================================\n\nasync function cleanDist() {\n // Use Bun shell for directory operations\n await Bun.$`rm -rf ${distDir}`.quiet();\n await Bun.$`mkdir -p ${distDir}`.quiet();\n}\n\nasync function copyManifest() {\n if (!(await Bun.file(manifestPath).exists())) {\n throw new Error(`manifest.json not found at: ${manifestPath}`);\n }\n\n const manifest = await Bun.file(manifestPath).json();\n await Bun.write(`${distDir}/manifest.json`, JSON.stringify(manifest, null, 2));\n}\n\nasync function copyHTML() {\n const htmlGlob = new Bun.Glob(\"**/*.html\");\n const htmlFiles = await Array.fromAsync(htmlGlob.scan({ cwd: srcDir, onlyFiles: true }));\n\n for (const file of htmlFiles) {\n const srcPath = `${srcDir}/${file}`;\n const outPath = `${distDir}/${file}`;\n const outDir = `${distDir}/${file.split(\"/\").slice(0, -1).join(\"/\")}`;\n\n if (!(await Bun.file(outDir).exists())) {\n await Bun.$`mkdir -p ${outDir}`.quiet();\n }\n\n const content = await Bun.file(srcPath).text();\n await Bun.write(outPath, content);\n }\n}\n\nasync function copyAssets() {\n const assetsDir = `${srcDir}/assets`;\n if (!(await Bun.file(assetsDir).exists())) {\n return;\n }\n\n const outDir = `${distDir}/assets`;\n await Bun.$`mkdir -p ${outDir}`.quiet();\n\n const glob = new Bun.Glob(\"**/*\");\n const files = await Array.fromAsync(glob.scan({ cwd: assetsDir, onlyFiles: true }));\n\n for (const file of files) {\n const srcPath = `${assetsDir}/${file}`;\n const outPath = `${outDir}/${file}`;\n const fileOutDir = `${outDir}/${file.split(\"/\").slice(0, -1).join(\"/\")}`;\n\n if (!(await Bun.file(fileOutDir).exists())) {\n await Bun.$`mkdir -p ${fileOutDir}`.quiet();\n }\n\n const content = await Bun.file(srcPath).arrayBuffer();\n await Bun.write(outPath, content);\n }\n}\n\nasync function buildTypeScript() {\n // Find TypeScript/TSX entry points\n const entryPoints: string[] = [];\n\n const patterns = [\n \"background/**/*.{ts,tsx}\",\n \"popup/**/*.{ts,tsx}\",\n \"options/**/*.{ts,tsx}\",\n \"content/**/*.{ts,tsx}\",\n \"devtools/**/*.{ts,tsx}\",\n \"offscreen/**/*.{ts,tsx}\",\n \"page/**/*.{ts,tsx}\",\n ];\n\n for (const pattern of patterns) {\n const glob = new Bun.Glob(pattern);\n const files = await Array.fromAsync(glob.scan({ cwd: srcDir, onlyFiles: true }));\n\n for (const file of files) {\n // Only main entry files (index, panel, devtools, etc.)\n if (\n file.includes(\"index.\") ||\n file.includes(\"panel.\") ||\n file.includes(\"devtools.\") ||\n file.endsWith(\"worker.ts\")\n ) {\n entryPoints.push(`${srcDir}/${file}`);\n }\n }\n }\n\n if (entryPoints.length === 0) {\n return;\n }\n\n // Build with Bun\n const result = await Bun.build({\n entrypoints: entryPoints,\n outdir: distDir,\n format: \"esm\",\n target: \"browser\",\n minify: isProd,\n sourcemap: isProd ? \"none\" : \"inline\",\n splitting: false, // Chrome extensions don't support module splitting\n external: [\"chrome\"], // Don't bundle chrome APIs\n naming: {\n entry: \"[dir]/[name].[ext]\",\n chunk: \"[name]-[hash].[ext]\",\n asset: \"[name]-[hash].[ext]\",\n },\n });\n\n if (!result.success) {\n console.error(\"❌ TypeScript build errors:\");\n for (const message of result.logs) {\n console.error(message);\n }\n throw new Error(\"TypeScript build failed\");\n }\n}\n\nasync function buildCSS() {\n const cssGlob = new Bun.Glob(\"**/*.css\");\n const cssFiles = await Array.fromAsync(cssGlob.scan({ cwd: srcDir, onlyFiles: true }));\n\n if (cssFiles.length === 0) {\n return;\n }\n\n for (const file of cssFiles) {\n const srcPath = `${srcDir}/${file}`;\n const outPath = `${distDir}/${file}`;\n const outDir = `${distDir}/${file.split(\"/\").slice(0, -1).join(\"/\")}`;\n\n if (!(await Bun.file(outDir).exists())) {\n await Bun.$`mkdir -p ${outDir}`.quiet();\n }\n\n const result = await Bun.build({\n entrypoints: [srcPath],\n minify: isProd,\n });\n\n if (result.success && result.outputs[0]) {\n await Bun.write(outPath, result.outputs[0]);\n }\n }\n}\n\n// ============================================================================\n// Main Build\n// ============================================================================\n\nasync function build() {\n try {\n await cleanDist();\n await copyManifest();\n await copyHTML();\n await copyAssets();\n await buildCSS();\n await buildTypeScript();\n } catch (error) {\n console.error(\"\\n❌ Build failed:\", error);\n process.exit(1);\n }\n}\n\nbuild();\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "E48EE2B6AB36ED2B64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|