@gxp-dev/tools 2.0.6 ā 2.0.7
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/browser-extensions/README.md +1 -0
- package/browser-extensions/chrome/background.js +857 -0
- package/browser-extensions/chrome/content.js +51 -0
- package/browser-extensions/chrome/devtools.html +9 -0
- package/browser-extensions/chrome/devtools.js +23 -0
- package/browser-extensions/chrome/icons/gx_off_128.png +0 -0
- package/browser-extensions/chrome/icons/gx_off_16.png +0 -0
- package/browser-extensions/chrome/icons/gx_off_32.png +0 -0
- package/browser-extensions/chrome/icons/gx_off_64.png +0 -0
- package/browser-extensions/chrome/icons/gx_on_128.png +0 -0
- package/browser-extensions/chrome/icons/gx_on_16.png +0 -0
- package/browser-extensions/chrome/icons/gx_on_32.png +0 -0
- package/browser-extensions/chrome/icons/gx_on_64.png +0 -0
- package/browser-extensions/chrome/inspector.js +1087 -0
- package/browser-extensions/chrome/manifest.json +70 -0
- package/browser-extensions/chrome/panel.html +638 -0
- package/browser-extensions/chrome/panel.js +862 -0
- package/browser-extensions/chrome/popup.html +399 -0
- package/browser-extensions/chrome/popup.js +515 -0
- package/browser-extensions/chrome/rules.json +1 -0
- package/browser-extensions/chrome/test-chrome.html +145 -0
- package/browser-extensions/chrome/test-mixed-content.html +190 -0
- package/browser-extensions/chrome/test-uri-pattern.html +199 -0
- package/browser-extensions/firefox/README.md +134 -0
- package/browser-extensions/firefox/background.js +804 -0
- package/browser-extensions/firefox/content.js +120 -0
- package/browser-extensions/firefox/debug-errors.html +229 -0
- package/browser-extensions/firefox/debug-https.html +113 -0
- package/browser-extensions/firefox/devtools.html +9 -0
- package/browser-extensions/firefox/devtools.js +24 -0
- package/browser-extensions/firefox/icons/gx_off_128.png +0 -0
- package/browser-extensions/firefox/icons/gx_off_16.png +0 -0
- package/browser-extensions/firefox/icons/gx_off_32.png +0 -0
- package/browser-extensions/firefox/icons/gx_off_64.png +0 -0
- package/browser-extensions/firefox/icons/gx_on_128.png +0 -0
- package/browser-extensions/firefox/icons/gx_on_16.png +0 -0
- package/browser-extensions/firefox/icons/gx_on_32.png +0 -0
- package/browser-extensions/firefox/icons/gx_on_64.png +0 -0
- package/browser-extensions/firefox/inspector.js +1087 -0
- package/browser-extensions/firefox/manifest.json +67 -0
- package/browser-extensions/firefox/panel.html +638 -0
- package/browser-extensions/firefox/panel.js +862 -0
- package/browser-extensions/firefox/popup.html +525 -0
- package/browser-extensions/firefox/popup.js +536 -0
- package/browser-extensions/firefox/test-gramercy.html +126 -0
- package/browser-extensions/firefox/test-imports.html +58 -0
- package/browser-extensions/firefox/test-masking.html +147 -0
- package/browser-extensions/firefox/test-uri-pattern.html +199 -0
- package/package.json +7 -2
- package/runtime/PortalContainer.vue +326 -0
- package/runtime/dev-tools/DevToolsModal.vue +217 -0
- package/runtime/dev-tools/LayoutSwitcher.vue +221 -0
- package/runtime/dev-tools/MockDataEditor.vue +621 -0
- package/runtime/dev-tools/SocketSimulator.vue +562 -0
- package/runtime/dev-tools/StoreInspector.vue +644 -0
- package/runtime/dev-tools/index.js +6 -0
- package/runtime/gxpStringsPlugin.js +428 -0
- package/runtime/index.html +22 -0
- package/runtime/main.js +32 -0
- package/runtime/mock-api/auth-middleware.js +97 -0
- package/runtime/mock-api/image-generator.js +221 -0
- package/runtime/mock-api/index.js +197 -0
- package/runtime/mock-api/response-generator.js +394 -0
- package/runtime/mock-api/route-generator.js +323 -0
- package/runtime/mock-api/socket-triggers.js +371 -0
- package/runtime/mock-api/spec-loader.js +300 -0
- package/runtime/server.js +180 -0
- package/runtime/stores/gxpPortalConfigStore.js +554 -0
- package/runtime/stores/index.js +6 -0
- package/runtime/vite-inspector-plugin.js +749 -0
- package/runtime/vite-source-tracker-plugin.js +232 -0
- package/runtime/vite.config.js +402 -0
- package/scripts/launch-chrome.js +90 -0
- package/scripts/pack-chrome.js +91 -0
- package/socket-events/AiSessionMessageCreated.json +18 -0
- package/socket-events/SocialStreamPostCreated.json +24 -0
- package/socket-events/SocialStreamPostVariantCompleted.json +23 -0
- package/template/README.md +332 -0
- package/template/app-manifest.json +32 -0
- package/template/dev-assets/images/avatar-placeholder.png +0 -0
- package/template/dev-assets/images/background-placeholder.jpg +0 -0
- package/template/dev-assets/images/banner-placeholder.jpg +0 -0
- package/template/dev-assets/images/icon-placeholder.png +0 -0
- package/template/dev-assets/images/logo-placeholder.png +0 -0
- package/template/dev-assets/images/product-placeholder.jpg +0 -0
- package/template/dev-assets/images/thumbnail-placeholder.jpg +0 -0
- package/template/env.example +51 -0
- package/template/gitignore +53 -0
- package/template/index.html +22 -0
- package/template/main.js +28 -0
- package/template/src/DemoPage.vue +459 -0
- package/template/src/Plugin.vue +38 -0
- package/template/src/stores/index.js +9 -0
- package/template/src/stores/test-data.json +173 -0
- package/template/theme-layouts/AdditionalStyling.css +0 -0
- package/template/theme-layouts/PrivateLayout.vue +39 -0
- package/template/theme-layouts/PublicLayout.vue +39 -0
- package/template/theme-layouts/SystemLayout.vue +39 -0
- package/template/vite.config.js +333 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
const express = require("express");
|
|
2
|
+
const cors = require("cors");
|
|
3
|
+
const fs = require("fs");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const dotenv = require("dotenv");
|
|
6
|
+
|
|
7
|
+
// Load .env file from project directory (process.cwd())
|
|
8
|
+
const envPath = path.join(process.cwd(), ".env");
|
|
9
|
+
if (fs.existsSync(envPath)) {
|
|
10
|
+
dotenv.config({ path: envPath });
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const app = express();
|
|
14
|
+
|
|
15
|
+
app.use(
|
|
16
|
+
cors({
|
|
17
|
+
origin: "*",
|
|
18
|
+
})
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
// Middleware to parse JSON
|
|
22
|
+
app.use(express.json());
|
|
23
|
+
|
|
24
|
+
// Serve static development assets
|
|
25
|
+
const devAssetsDir = path.join(process.cwd(), "dev-assets");
|
|
26
|
+
if (fs.existsSync(devAssetsDir)) {
|
|
27
|
+
app.use("/dev-assets", express.static(devAssetsDir));
|
|
28
|
+
console.log("š Serving development assets from /dev-assets");
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Finds existing SSL certificates in the certs directory, including those with suffixes
|
|
33
|
+
*/
|
|
34
|
+
function findExistingCertificates(certsDir) {
|
|
35
|
+
if (!fs.existsSync(certsDir)) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const files = fs.readdirSync(certsDir);
|
|
40
|
+
|
|
41
|
+
// Look for localhost certificates (with or without suffixes)
|
|
42
|
+
const certFile = files.find(
|
|
43
|
+
(f) =>
|
|
44
|
+
f.startsWith("localhost") && f.endsWith(".pem") && !f.includes("-key")
|
|
45
|
+
);
|
|
46
|
+
const keyFile = files.find(
|
|
47
|
+
(f) => f.startsWith("localhost") && f.endsWith("-key.pem")
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
if (certFile && keyFile) {
|
|
51
|
+
const certPath = path.join(certsDir, certFile);
|
|
52
|
+
const keyPath = path.join(certsDir, keyFile);
|
|
53
|
+
|
|
54
|
+
// Verify files actually exist and have content
|
|
55
|
+
try {
|
|
56
|
+
const certStats = fs.statSync(certPath);
|
|
57
|
+
const keyStats = fs.statSync(keyPath);
|
|
58
|
+
|
|
59
|
+
if (certStats.size > 0 && keyStats.size > 0) {
|
|
60
|
+
return { certPath, keyPath };
|
|
61
|
+
}
|
|
62
|
+
} catch (error) {
|
|
63
|
+
// Files don't exist or can't be read
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Check for SSL certificates using improved detection
|
|
71
|
+
const certsDir = path.join(process.cwd(), ".certs");
|
|
72
|
+
const existingCerts = findExistingCertificates(certsDir);
|
|
73
|
+
|
|
74
|
+
let server;
|
|
75
|
+
let protocol = "HTTP";
|
|
76
|
+
|
|
77
|
+
if (existingCerts) {
|
|
78
|
+
// Use HTTPS if certificates are available
|
|
79
|
+
const https = require("https");
|
|
80
|
+
const options = {
|
|
81
|
+
cert: fs.readFileSync(existingCerts.certPath),
|
|
82
|
+
key: fs.readFileSync(existingCerts.keyPath),
|
|
83
|
+
};
|
|
84
|
+
server = https.createServer(options, app);
|
|
85
|
+
protocol = "HTTPS";
|
|
86
|
+
console.log(`š Using certificate: ${path.basename(existingCerts.certPath)}`);
|
|
87
|
+
console.log(`š Using key: ${path.basename(existingCerts.keyPath)}`);
|
|
88
|
+
} else {
|
|
89
|
+
// Fall back to HTTP if no certificates
|
|
90
|
+
const http = require("http");
|
|
91
|
+
server = http.createServer(app);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const { Server } = require("socket.io");
|
|
95
|
+
|
|
96
|
+
const io = new Server(server, {
|
|
97
|
+
cors: {
|
|
98
|
+
origin: "*",
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
io.on("connection", (socket) => {
|
|
103
|
+
socket.onAny((event, data) => {
|
|
104
|
+
socket.broadcast.emit(event, data);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
// HTTP endpoint for CLI to send socket events
|
|
109
|
+
app.post("/emit", (req, res) => {
|
|
110
|
+
const { event, channel, data } = req.body;
|
|
111
|
+
|
|
112
|
+
if (!event) {
|
|
113
|
+
return res.status(400).json({ error: "Event name is required" });
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
console.log(`š” CLI triggered socket event: ${event}`);
|
|
117
|
+
console.log(`šŗ Channel: ${channel}`);
|
|
118
|
+
console.log(`š¦ Data:`, data);
|
|
119
|
+
|
|
120
|
+
// Emit to all connected clients
|
|
121
|
+
io.emit(event, data);
|
|
122
|
+
|
|
123
|
+
res.json({
|
|
124
|
+
success: true,
|
|
125
|
+
message: `Event ${event} sent to all connected clients`,
|
|
126
|
+
event,
|
|
127
|
+
channel,
|
|
128
|
+
data,
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
// Basic health check endpoint
|
|
133
|
+
app.get("/health", (req, res) => {
|
|
134
|
+
res.json({
|
|
135
|
+
status: "ok",
|
|
136
|
+
protocol,
|
|
137
|
+
mockApiEnabled: process.env.MOCK_API_ENABLED === "true",
|
|
138
|
+
timestamp: new Date().toISOString(),
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Initialize and start the server
|
|
144
|
+
*/
|
|
145
|
+
async function startServer() {
|
|
146
|
+
// Mount Mock API if enabled
|
|
147
|
+
if (process.env.MOCK_API_ENABLED === "true") {
|
|
148
|
+
try {
|
|
149
|
+
const { createMockApiRouter } = require("./mock-api");
|
|
150
|
+
const mockRouter = await createMockApiRouter(io, {
|
|
151
|
+
projectRoot: process.cwd(),
|
|
152
|
+
});
|
|
153
|
+
app.use(mockRouter);
|
|
154
|
+
} catch (error) {
|
|
155
|
+
console.error("ā Failed to initialize Mock API:", error.message);
|
|
156
|
+
console.log(" Continuing without Mock API...");
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
const socketIoPort = process.env.SOCKET_IO_PORT || 3069;
|
|
161
|
+
|
|
162
|
+
server.listen(socketIoPort, () => {
|
|
163
|
+
console.log(
|
|
164
|
+
`\nš Socket.IO server running on ${protocol} at port ${socketIoPort}`
|
|
165
|
+
);
|
|
166
|
+
if (protocol === "HTTPS") {
|
|
167
|
+
console.log("š Using SSL certificates for secure WebSocket connections");
|
|
168
|
+
}
|
|
169
|
+
console.log("š” Socket event simulation available at POST /emit");
|
|
170
|
+
if (process.env.MOCK_API_ENABLED === "true") {
|
|
171
|
+
console.log("š Mock API enabled - routes available under /api/*");
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// Start the server
|
|
177
|
+
startServer().catch((error) => {
|
|
178
|
+
console.error("Failed to start server:", error);
|
|
179
|
+
process.exit(1);
|
|
180
|
+
});
|