@gxp-dev/tools 2.0.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.
- package/.github/workflows/npm-publish.yml +48 -0
- package/CLAUDE.md +400 -0
- package/README.md +247 -0
- package/REFACTOR_PLAN.md +194 -0
- package/bin/gx-devtools.js +87 -0
- package/bin/lib/cli.js +251 -0
- package/bin/lib/commands/assets.js +337 -0
- package/bin/lib/commands/build.js +259 -0
- package/bin/lib/commands/datastore.js +433 -0
- package/bin/lib/commands/dev.js +328 -0
- package/bin/lib/commands/extensions.js +298 -0
- package/bin/lib/commands/index.js +35 -0
- package/bin/lib/commands/init.js +307 -0
- package/bin/lib/commands/publish.js +189 -0
- package/bin/lib/commands/socket.js +158 -0
- package/bin/lib/commands/ssl.js +47 -0
- package/bin/lib/constants.js +120 -0
- package/bin/lib/tui/App.tsx +600 -0
- package/bin/lib/tui/components/CommandInput.tsx +278 -0
- package/bin/lib/tui/components/GeminiPanel.tsx +161 -0
- package/bin/lib/tui/components/Header.tsx +27 -0
- package/bin/lib/tui/components/LogPanel.tsx +122 -0
- package/bin/lib/tui/components/TabBar.tsx +56 -0
- package/bin/lib/tui/components/WelcomeScreen.tsx +80 -0
- package/bin/lib/tui/index.tsx +63 -0
- package/bin/lib/tui/services/ExtensionService.ts +122 -0
- package/bin/lib/tui/services/GeminiService.ts +395 -0
- package/bin/lib/tui/services/ServiceManager.ts +336 -0
- package/bin/lib/tui/services/SocketService.ts +204 -0
- package/bin/lib/tui/services/ViteService.ts +107 -0
- package/bin/lib/tui/services/index.ts +13 -0
- package/bin/lib/utils/files.js +180 -0
- package/bin/lib/utils/index.js +17 -0
- package/bin/lib/utils/paths.js +138 -0
- package/bin/lib/utils/prompts.js +71 -0
- package/bin/lib/utils/ssl.js +233 -0
- 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/docs/DOCUSAURUS_IMPORT.md +378 -0
- package/docs/_category_.json +8 -0
- package/docs/app-manifest.md +272 -0
- package/docs/building-for-platform.md +315 -0
- package/docs/dev-tools.md +291 -0
- package/docs/getting-started.md +180 -0
- package/docs/gxp-store.md +305 -0
- package/docs/index.md +44 -0
- package/package.json +77 -0
- 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
- package/tsconfig.tui.json +21 -0
- package/vite.config.js +164 -0
package/vite.config.js
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { defineConfig, loadEnv } from "vite";
|
|
2
|
+
import vue from "@vitejs/plugin-vue";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import fs from "fs";
|
|
5
|
+
import externalGlobals from "rollup-plugin-external-globals";
|
|
6
|
+
import { gxpInspectorPlugin } from "./runtime/vite-inspector-plugin.js";
|
|
7
|
+
|
|
8
|
+
// https://www.npmjs.com/package/rollup-plugin-external-globals
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Get the library name from package.json
|
|
12
|
+
*/
|
|
13
|
+
function getLibName() {
|
|
14
|
+
try {
|
|
15
|
+
const packageJsonPath = path.resolve(process.cwd(), "package.json");
|
|
16
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
17
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
|
|
18
|
+
// Convert package name to a valid JS identifier
|
|
19
|
+
// e.g., "@company/my-plugin" -> "MyPlugin"
|
|
20
|
+
const name = packageJson.name || "Plugin";
|
|
21
|
+
return name
|
|
22
|
+
.replace(/[@\/\-]/g, " ")
|
|
23
|
+
.replace(/\b\w/g, (l) => l.toUpperCase())
|
|
24
|
+
.replace(/\s/g, "");
|
|
25
|
+
}
|
|
26
|
+
} catch (error) {
|
|
27
|
+
console.warn("Could not read package.json, using default lib name");
|
|
28
|
+
}
|
|
29
|
+
return "Plugin";
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Setup HTTPS configuration if certificates are available
|
|
34
|
+
*/
|
|
35
|
+
function getHttpsConfig(env) {
|
|
36
|
+
const useHttps = env.USE_HTTPS === "true";
|
|
37
|
+
const certPath = env.CERT_PATH;
|
|
38
|
+
const keyPath = env.KEY_PATH;
|
|
39
|
+
|
|
40
|
+
if (!useHttps || !certPath || !keyPath) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Resolve paths relative to project root
|
|
45
|
+
const resolvedCertPath = path.resolve(process.cwd(), certPath);
|
|
46
|
+
const resolvedKeyPath = path.resolve(process.cwd(), keyPath);
|
|
47
|
+
|
|
48
|
+
// Check if certificate files exist
|
|
49
|
+
if (!fs.existsSync(resolvedCertPath) || !fs.existsSync(resolvedKeyPath)) {
|
|
50
|
+
console.warn("⚠ SSL certificate files not found, falling back to HTTP");
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
try {
|
|
55
|
+
return {
|
|
56
|
+
key: fs.readFileSync(resolvedKeyPath),
|
|
57
|
+
cert: fs.readFileSync(resolvedCertPath),
|
|
58
|
+
};
|
|
59
|
+
} catch (error) {
|
|
60
|
+
console.warn("⚠ Failed to read SSL certificates, falling back to HTTP");
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export default defineConfig(({ mode }) => {
|
|
66
|
+
// Load environment variables
|
|
67
|
+
const env = loadEnv(mode, process.cwd(), "");
|
|
68
|
+
|
|
69
|
+
// Get lib name from package.json
|
|
70
|
+
const libName = getLibName();
|
|
71
|
+
|
|
72
|
+
return {
|
|
73
|
+
plugins: [
|
|
74
|
+
vue(),
|
|
75
|
+
gxpInspectorPlugin(),
|
|
76
|
+
externalGlobals(
|
|
77
|
+
{
|
|
78
|
+
"@gramercytech/gx-devtools/config/stores/gxpPortalConfigStore":
|
|
79
|
+
"(window.useGxpStoreBuilder || (() => { console.warn('useGxpStoreBuilder not found on window, using fallback'); return {}; }))",
|
|
80
|
+
vue: "Vue",
|
|
81
|
+
"@/stores/gxpPortalConfigStore":
|
|
82
|
+
"(window.useGxpStoreBuilder || (() => { console.warn('useGxpStoreBuilder not found on window, using fallback'); return {}; }))",
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
include: ["template/**"],
|
|
86
|
+
}
|
|
87
|
+
),
|
|
88
|
+
// Custom request logging and CORS plugin
|
|
89
|
+
{
|
|
90
|
+
name: "request-logger-cors",
|
|
91
|
+
configureServer(server) {
|
|
92
|
+
server.middlewares.use((req, res, next) => {
|
|
93
|
+
const start = Date.now();
|
|
94
|
+
const originalEnd = res.end;
|
|
95
|
+
|
|
96
|
+
// Add CORS headers to all responses
|
|
97
|
+
res.setHeader("Access-Control-Allow-Origin", "*");
|
|
98
|
+
res.setHeader(
|
|
99
|
+
"Access-Control-Allow-Methods",
|
|
100
|
+
"GET, POST, PUT, DELETE, OPTIONS"
|
|
101
|
+
);
|
|
102
|
+
res.setHeader("Access-Control-Allow-Headers", "*");
|
|
103
|
+
res.setHeader("Access-Control-Allow-Credentials", "false");
|
|
104
|
+
|
|
105
|
+
// Handle preflight requests
|
|
106
|
+
if (req.method === "OPTIONS") {
|
|
107
|
+
res.statusCode = 200;
|
|
108
|
+
res.end();
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
res.end = function (...args) {
|
|
113
|
+
const duration = Date.now() - start;
|
|
114
|
+
const status = res.statusCode;
|
|
115
|
+
const method = req.method;
|
|
116
|
+
const url = req.url;
|
|
117
|
+
const referer = req.headers.referer || "direct";
|
|
118
|
+
const origin = req.headers.origin || "unknown";
|
|
119
|
+
|
|
120
|
+
console.log(
|
|
121
|
+
`[${new Date().toISOString()}] ${method} ${url} ${status} (${duration}ms) - Origin: ${origin} - Referer: ${referer}`
|
|
122
|
+
);
|
|
123
|
+
originalEnd.apply(this, args);
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
next();
|
|
127
|
+
});
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
],
|
|
131
|
+
logLevel: env.NODE_LOG_LEVEL || "error",
|
|
132
|
+
clearScreen: false,
|
|
133
|
+
dev: {},
|
|
134
|
+
server: {
|
|
135
|
+
port: parseInt(env.NODE_PORT) || 3060,
|
|
136
|
+
strictPort: true,
|
|
137
|
+
https: getHttpsConfig(env),
|
|
138
|
+
cors: {
|
|
139
|
+
origin: "*",
|
|
140
|
+
methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
|
|
141
|
+
allowedHeaders: ["*"],
|
|
142
|
+
credentials: false,
|
|
143
|
+
},
|
|
144
|
+
hmr: {
|
|
145
|
+
clientPort:
|
|
146
|
+
parseInt(env.CLIENT_PORT) || parseInt(env.NODE_PORT) || 3060,
|
|
147
|
+
},
|
|
148
|
+
host: true, // Allow access from network
|
|
149
|
+
},
|
|
150
|
+
build: {
|
|
151
|
+
lib: {
|
|
152
|
+
entry: [env.COMPONENT_PATH || "./src/Plugin.vue"],
|
|
153
|
+
name: libName,
|
|
154
|
+
fileName: (format) => `plugin.${format}.js`,
|
|
155
|
+
formats: ["es"],
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
resolve: {
|
|
159
|
+
alias: {
|
|
160
|
+
"@": path.resolve(process.cwd(), "template/src"),
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
});
|