@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.
Files changed (145) hide show
  1. package/.github/workflows/npm-publish.yml +48 -0
  2. package/CLAUDE.md +400 -0
  3. package/README.md +247 -0
  4. package/REFACTOR_PLAN.md +194 -0
  5. package/bin/gx-devtools.js +87 -0
  6. package/bin/lib/cli.js +251 -0
  7. package/bin/lib/commands/assets.js +337 -0
  8. package/bin/lib/commands/build.js +259 -0
  9. package/bin/lib/commands/datastore.js +433 -0
  10. package/bin/lib/commands/dev.js +328 -0
  11. package/bin/lib/commands/extensions.js +298 -0
  12. package/bin/lib/commands/index.js +35 -0
  13. package/bin/lib/commands/init.js +307 -0
  14. package/bin/lib/commands/publish.js +189 -0
  15. package/bin/lib/commands/socket.js +158 -0
  16. package/bin/lib/commands/ssl.js +47 -0
  17. package/bin/lib/constants.js +120 -0
  18. package/bin/lib/tui/App.tsx +600 -0
  19. package/bin/lib/tui/components/CommandInput.tsx +278 -0
  20. package/bin/lib/tui/components/GeminiPanel.tsx +161 -0
  21. package/bin/lib/tui/components/Header.tsx +27 -0
  22. package/bin/lib/tui/components/LogPanel.tsx +122 -0
  23. package/bin/lib/tui/components/TabBar.tsx +56 -0
  24. package/bin/lib/tui/components/WelcomeScreen.tsx +80 -0
  25. package/bin/lib/tui/index.tsx +63 -0
  26. package/bin/lib/tui/services/ExtensionService.ts +122 -0
  27. package/bin/lib/tui/services/GeminiService.ts +395 -0
  28. package/bin/lib/tui/services/ServiceManager.ts +336 -0
  29. package/bin/lib/tui/services/SocketService.ts +204 -0
  30. package/bin/lib/tui/services/ViteService.ts +107 -0
  31. package/bin/lib/tui/services/index.ts +13 -0
  32. package/bin/lib/utils/files.js +180 -0
  33. package/bin/lib/utils/index.js +17 -0
  34. package/bin/lib/utils/paths.js +138 -0
  35. package/bin/lib/utils/prompts.js +71 -0
  36. package/bin/lib/utils/ssl.js +233 -0
  37. package/browser-extensions/README.md +1 -0
  38. package/browser-extensions/chrome/background.js +857 -0
  39. package/browser-extensions/chrome/content.js +51 -0
  40. package/browser-extensions/chrome/devtools.html +9 -0
  41. package/browser-extensions/chrome/devtools.js +23 -0
  42. package/browser-extensions/chrome/icons/gx_off_128.png +0 -0
  43. package/browser-extensions/chrome/icons/gx_off_16.png +0 -0
  44. package/browser-extensions/chrome/icons/gx_off_32.png +0 -0
  45. package/browser-extensions/chrome/icons/gx_off_64.png +0 -0
  46. package/browser-extensions/chrome/icons/gx_on_128.png +0 -0
  47. package/browser-extensions/chrome/icons/gx_on_16.png +0 -0
  48. package/browser-extensions/chrome/icons/gx_on_32.png +0 -0
  49. package/browser-extensions/chrome/icons/gx_on_64.png +0 -0
  50. package/browser-extensions/chrome/inspector.js +1087 -0
  51. package/browser-extensions/chrome/manifest.json +70 -0
  52. package/browser-extensions/chrome/panel.html +638 -0
  53. package/browser-extensions/chrome/panel.js +862 -0
  54. package/browser-extensions/chrome/popup.html +399 -0
  55. package/browser-extensions/chrome/popup.js +515 -0
  56. package/browser-extensions/chrome/rules.json +1 -0
  57. package/browser-extensions/chrome/test-chrome.html +145 -0
  58. package/browser-extensions/chrome/test-mixed-content.html +190 -0
  59. package/browser-extensions/chrome/test-uri-pattern.html +199 -0
  60. package/browser-extensions/firefox/README.md +134 -0
  61. package/browser-extensions/firefox/background.js +804 -0
  62. package/browser-extensions/firefox/content.js +120 -0
  63. package/browser-extensions/firefox/debug-errors.html +229 -0
  64. package/browser-extensions/firefox/debug-https.html +113 -0
  65. package/browser-extensions/firefox/devtools.html +9 -0
  66. package/browser-extensions/firefox/devtools.js +24 -0
  67. package/browser-extensions/firefox/icons/gx_off_128.png +0 -0
  68. package/browser-extensions/firefox/icons/gx_off_16.png +0 -0
  69. package/browser-extensions/firefox/icons/gx_off_32.png +0 -0
  70. package/browser-extensions/firefox/icons/gx_off_64.png +0 -0
  71. package/browser-extensions/firefox/icons/gx_on_128.png +0 -0
  72. package/browser-extensions/firefox/icons/gx_on_16.png +0 -0
  73. package/browser-extensions/firefox/icons/gx_on_32.png +0 -0
  74. package/browser-extensions/firefox/icons/gx_on_64.png +0 -0
  75. package/browser-extensions/firefox/inspector.js +1087 -0
  76. package/browser-extensions/firefox/manifest.json +67 -0
  77. package/browser-extensions/firefox/panel.html +638 -0
  78. package/browser-extensions/firefox/panel.js +862 -0
  79. package/browser-extensions/firefox/popup.html +525 -0
  80. package/browser-extensions/firefox/popup.js +536 -0
  81. package/browser-extensions/firefox/test-gramercy.html +126 -0
  82. package/browser-extensions/firefox/test-imports.html +58 -0
  83. package/browser-extensions/firefox/test-masking.html +147 -0
  84. package/browser-extensions/firefox/test-uri-pattern.html +199 -0
  85. package/docs/DOCUSAURUS_IMPORT.md +378 -0
  86. package/docs/_category_.json +8 -0
  87. package/docs/app-manifest.md +272 -0
  88. package/docs/building-for-platform.md +315 -0
  89. package/docs/dev-tools.md +291 -0
  90. package/docs/getting-started.md +180 -0
  91. package/docs/gxp-store.md +305 -0
  92. package/docs/index.md +44 -0
  93. package/package.json +77 -0
  94. package/runtime/PortalContainer.vue +326 -0
  95. package/runtime/dev-tools/DevToolsModal.vue +217 -0
  96. package/runtime/dev-tools/LayoutSwitcher.vue +221 -0
  97. package/runtime/dev-tools/MockDataEditor.vue +621 -0
  98. package/runtime/dev-tools/SocketSimulator.vue +562 -0
  99. package/runtime/dev-tools/StoreInspector.vue +644 -0
  100. package/runtime/dev-tools/index.js +6 -0
  101. package/runtime/gxpStringsPlugin.js +428 -0
  102. package/runtime/index.html +22 -0
  103. package/runtime/main.js +32 -0
  104. package/runtime/mock-api/auth-middleware.js +97 -0
  105. package/runtime/mock-api/image-generator.js +221 -0
  106. package/runtime/mock-api/index.js +197 -0
  107. package/runtime/mock-api/response-generator.js +394 -0
  108. package/runtime/mock-api/route-generator.js +323 -0
  109. package/runtime/mock-api/socket-triggers.js +371 -0
  110. package/runtime/mock-api/spec-loader.js +300 -0
  111. package/runtime/server.js +180 -0
  112. package/runtime/stores/gxpPortalConfigStore.js +554 -0
  113. package/runtime/stores/index.js +6 -0
  114. package/runtime/vite-inspector-plugin.js +749 -0
  115. package/runtime/vite-source-tracker-plugin.js +232 -0
  116. package/runtime/vite.config.js +402 -0
  117. package/scripts/launch-chrome.js +90 -0
  118. package/scripts/pack-chrome.js +91 -0
  119. package/socket-events/AiSessionMessageCreated.json +18 -0
  120. package/socket-events/SocialStreamPostCreated.json +24 -0
  121. package/socket-events/SocialStreamPostVariantCompleted.json +23 -0
  122. package/template/README.md +332 -0
  123. package/template/app-manifest.json +32 -0
  124. package/template/dev-assets/images/avatar-placeholder.png +0 -0
  125. package/template/dev-assets/images/background-placeholder.jpg +0 -0
  126. package/template/dev-assets/images/banner-placeholder.jpg +0 -0
  127. package/template/dev-assets/images/icon-placeholder.png +0 -0
  128. package/template/dev-assets/images/logo-placeholder.png +0 -0
  129. package/template/dev-assets/images/product-placeholder.jpg +0 -0
  130. package/template/dev-assets/images/thumbnail-placeholder.jpg +0 -0
  131. package/template/env.example +51 -0
  132. package/template/gitignore +53 -0
  133. package/template/index.html +22 -0
  134. package/template/main.js +28 -0
  135. package/template/src/DemoPage.vue +459 -0
  136. package/template/src/Plugin.vue +38 -0
  137. package/template/src/stores/index.js +9 -0
  138. package/template/src/stores/test-data.json +173 -0
  139. package/template/theme-layouts/AdditionalStyling.css +0 -0
  140. package/template/theme-layouts/PrivateLayout.vue +39 -0
  141. package/template/theme-layouts/PublicLayout.vue +39 -0
  142. package/template/theme-layouts/SystemLayout.vue +39 -0
  143. package/template/vite.config.js +333 -0
  144. package/tsconfig.tui.json +21 -0
  145. 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
+ });