@fairfox/polly 0.1.3 → 0.1.5

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.
Files changed (69) hide show
  1. package/README.md +560 -184
  2. package/{cli/polly.ts → dist/cli/polly.js} +100 -206
  3. package/dist/cli/polly.js.map +10 -0
  4. package/dist/scripts/build-extension.js +137 -0
  5. package/dist/scripts/build-extension.js.map +10 -0
  6. package/dist/vendor/verify/src/cli.js +2089 -0
  7. package/dist/vendor/verify/src/cli.js.map +16 -0
  8. package/dist/vendor/visualize/src/cli.js +2204 -0
  9. package/dist/vendor/visualize/src/cli.js.map +19 -0
  10. package/package.json +12 -12
  11. package/vendor/analysis/src/extract/adr.ts +0 -212
  12. package/vendor/analysis/src/extract/architecture.ts +0 -160
  13. package/vendor/analysis/src/extract/contexts.ts +0 -298
  14. package/vendor/analysis/src/extract/flows.ts +0 -309
  15. package/vendor/analysis/src/extract/handlers.ts +0 -321
  16. package/vendor/analysis/src/extract/index.ts +0 -9
  17. package/vendor/analysis/src/extract/integrations.ts +0 -329
  18. package/vendor/analysis/src/extract/manifest.ts +0 -298
  19. package/vendor/analysis/src/extract/types.ts +0 -389
  20. package/vendor/analysis/src/index.ts +0 -7
  21. package/vendor/analysis/src/types/adr.ts +0 -53
  22. package/vendor/analysis/src/types/architecture.ts +0 -245
  23. package/vendor/analysis/src/types/core.ts +0 -210
  24. package/vendor/analysis/src/types/index.ts +0 -18
  25. package/vendor/verify/src/adapters/base.ts +0 -164
  26. package/vendor/verify/src/adapters/detection.ts +0 -281
  27. package/vendor/verify/src/adapters/event-bus/index.ts +0 -480
  28. package/vendor/verify/src/adapters/web-extension/index.ts +0 -508
  29. package/vendor/verify/src/adapters/websocket/index.ts +0 -486
  30. package/vendor/verify/src/cli.ts +0 -430
  31. package/vendor/verify/src/codegen/config.ts +0 -354
  32. package/vendor/verify/src/codegen/tla.ts +0 -719
  33. package/vendor/verify/src/config/parser.ts +0 -303
  34. package/vendor/verify/src/config/types.ts +0 -113
  35. package/vendor/verify/src/core/model.ts +0 -267
  36. package/vendor/verify/src/core/primitives.ts +0 -106
  37. package/vendor/verify/src/extract/handlers.ts +0 -2
  38. package/vendor/verify/src/extract/types.ts +0 -2
  39. package/vendor/verify/src/index.ts +0 -150
  40. package/vendor/verify/src/primitives/index.ts +0 -102
  41. package/vendor/verify/src/runner/docker.ts +0 -283
  42. package/vendor/verify/src/types.ts +0 -51
  43. package/vendor/visualize/src/cli.ts +0 -365
  44. package/vendor/visualize/src/codegen/structurizr.ts +0 -770
  45. package/vendor/visualize/src/index.ts +0 -13
  46. package/vendor/visualize/src/runner/export.ts +0 -235
  47. package/vendor/visualize/src/viewer/server.ts +0 -485
  48. /package/dist/{background → src/background}/index.js +0 -0
  49. /package/dist/{background → src/background}/index.js.map +0 -0
  50. /package/dist/{background → src/background}/message-router.js +0 -0
  51. /package/dist/{background → src/background}/message-router.js.map +0 -0
  52. /package/dist/{index.js → src/index.js} +0 -0
  53. /package/dist/{index.js.map → src/index.js.map} +0 -0
  54. /package/dist/{shared → src/shared}/adapters/index.js +0 -0
  55. /package/dist/{shared → src/shared}/adapters/index.js.map +0 -0
  56. /package/dist/{shared → src/shared}/lib/context-helpers.js +0 -0
  57. /package/dist/{shared → src/shared}/lib/context-helpers.js.map +0 -0
  58. /package/dist/{shared → src/shared}/lib/errors.js +0 -0
  59. /package/dist/{shared → src/shared}/lib/errors.js.map +0 -0
  60. /package/dist/{shared → src/shared}/lib/message-bus.js +0 -0
  61. /package/dist/{shared → src/shared}/lib/message-bus.js.map +0 -0
  62. /package/dist/{shared → src/shared}/lib/state.js +0 -0
  63. /package/dist/{shared → src/shared}/lib/state.js.map +0 -0
  64. /package/dist/{shared → src/shared}/lib/test-helpers.js +0 -0
  65. /package/dist/{shared → src/shared}/lib/test-helpers.js.map +0 -0
  66. /package/dist/{shared → src/shared}/state/app-state.js +0 -0
  67. /package/dist/{shared → src/shared}/state/app-state.js.map +0 -0
  68. /package/dist/{shared → src/shared}/types/messages.js +0 -0
  69. /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
+ }