sunpeak 0.12.6 → 0.12.8

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 (78) hide show
  1. package/bin/commands/build.mjs +66 -3
  2. package/bin/commands/dev.mjs +8 -5
  3. package/package.json +1 -1
  4. package/template/dist/albums/albums.js +47 -7
  5. package/template/dist/albums/albums.json +1 -1
  6. package/template/dist/carousel/carousel.js +47 -7
  7. package/template/dist/carousel/carousel.json +1 -1
  8. package/template/dist/map/map.js +187 -140
  9. package/template/dist/map/map.json +1 -1
  10. package/template/dist/review/review.js +47 -7
  11. package/template/dist/review/review.json +1 -1
  12. package/template/node_modules/.vite/deps/_metadata.json +19 -19
  13. package/template/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  14. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/@openai_apps-sdk-ui_components_Avatar.js +0 -0
  15. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/@openai_apps-sdk-ui_components_Avatar.js.map +0 -0
  16. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/@openai_apps-sdk-ui_components_Button.js +0 -0
  17. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/@openai_apps-sdk-ui_components_Button.js.map +0 -0
  18. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/@openai_apps-sdk-ui_components_Checkbox.js +0 -0
  19. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/@openai_apps-sdk-ui_components_Checkbox.js.map +0 -0
  20. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/@openai_apps-sdk-ui_components_Icon.js +0 -0
  21. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/@openai_apps-sdk-ui_components_Icon.js.map +0 -0
  22. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/@openai_apps-sdk-ui_components_Input.js +0 -0
  23. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/@openai_apps-sdk-ui_components_Input.js.map +0 -0
  24. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/@openai_apps-sdk-ui_components_SegmentedControl.js +0 -0
  25. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/@openai_apps-sdk-ui_components_SegmentedControl.js.map +0 -0
  26. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/@openai_apps-sdk-ui_components_Select.js +0 -0
  27. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/@openai_apps-sdk-ui_components_Select.js.map +0 -0
  28. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/@openai_apps-sdk-ui_components_Textarea.js +0 -0
  29. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/@openai_apps-sdk-ui_components_Textarea.js.map +0 -0
  30. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/@openai_apps-sdk-ui_theme.js +0 -0
  31. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/@openai_apps-sdk-ui_theme.js.map +0 -0
  32. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-6CR5OFLH.js +0 -0
  33. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-6CR5OFLH.js.map +0 -0
  34. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-EGRHWZRV.js +0 -0
  35. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-EGRHWZRV.js.map +0 -0
  36. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-EXGLAROW.js +0 -0
  37. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-EXGLAROW.js.map +0 -0
  38. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-IFPDCKUT.js +0 -0
  39. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-IFPDCKUT.js.map +0 -0
  40. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-ILHRZGIS.js +0 -0
  41. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-ILHRZGIS.js.map +0 -0
  42. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-JSPMUVNT.js +0 -0
  43. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-JSPMUVNT.js.map +0 -0
  44. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-L2PWLFDO.js +0 -0
  45. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-L2PWLFDO.js.map +0 -0
  46. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-OMOWBQDU.js +0 -0
  47. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-OMOWBQDU.js.map +0 -0
  48. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-R3BTL4CL.js +0 -0
  49. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-R3BTL4CL.js.map +0 -0
  50. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-SPDZ46BB.js +0 -0
  51. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-SPDZ46BB.js.map +0 -0
  52. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-WSHFT23M.js +0 -0
  53. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-WSHFT23M.js.map +0 -0
  54. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-Y7UNCRGH.js +0 -0
  55. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-Y7UNCRGH.js.map +0 -0
  56. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-ZNFXUT4Q.js +0 -0
  57. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/chunk-ZNFXUT4Q.js.map +0 -0
  58. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/clsx.js +0 -0
  59. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/clsx.js.map +0 -0
  60. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/embla-carousel-react.js +0 -0
  61. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/embla-carousel-react.js.map +0 -0
  62. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/embla-carousel-wheel-gestures.js +0 -0
  63. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/embla-carousel-wheel-gestures.js.map +0 -0
  64. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/mapbox-gl.js +0 -0
  65. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/mapbox-gl.js.map +0 -0
  66. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/package.json +0 -0
  67. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/react-dom.js +0 -0
  68. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/react-dom.js.map +0 -0
  69. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/react-dom_client.js +0 -0
  70. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/react-dom_client.js.map +0 -0
  71. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/react.js +0 -0
  72. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/react.js.map +0 -0
  73. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/react_jsx-dev-runtime.js +0 -0
  74. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/react_jsx-dev-runtime.js.map +0 -0
  75. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/react_jsx-runtime.js +0 -0
  76. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/react_jsx-runtime.js.map +0 -0
  77. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/tailwind-merge.js +0 -0
  78. /package/template/node_modules/.vite-mcp/{deps_temp_48e8c71a → deps_temp_c22d194e}/tailwind-merge.js.map +0 -0
@@ -1,11 +1,49 @@
1
1
  #!/usr/bin/env node
2
- import { build as viteBuild } from 'vite';
3
- import react from '@vitejs/plugin-react';
4
- import tailwindcss from '@tailwindcss/vite';
5
2
  import { existsSync, rmSync, readdirSync, readFileSync, writeFileSync, mkdirSync, copyFileSync, unlinkSync } from 'fs';
6
3
  import path from 'path';
4
+ import { createRequire } from 'module';
5
+ import { pathToFileURL } from 'url';
7
6
  import { toPascalCase } from '../lib/patterns.mjs';
8
7
 
8
+ /**
9
+ * Resolve the ESM entry point for a package from a specific project directory.
10
+ * This avoids the CJS deprecation warning from packages like Vite.
11
+ */
12
+ function resolveEsmEntry(require, packageName) {
13
+ // First resolve to find where the package is located
14
+ const resolvedPath = require.resolve(packageName);
15
+
16
+ // Walk up to find the package's package.json
17
+ let dir = path.dirname(resolvedPath);
18
+ while (dir !== path.dirname(dir)) {
19
+ const pkgJsonPath = path.join(dir, 'package.json');
20
+ if (existsSync(pkgJsonPath)) {
21
+ const pkg = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));
22
+ if (pkg.name === packageName) {
23
+ // Found the package.json, look for ESM entry in exports
24
+ const exports = pkg.exports;
25
+ if (exports?.['.']?.import) {
26
+ const importEntry = exports['.'].import;
27
+ // Handle nested conditions like { types, default }
28
+ const esmPath = typeof importEntry === 'string' ? importEntry : importEntry.default;
29
+ if (esmPath) {
30
+ return pathToFileURL(path.join(dir, esmPath)).href;
31
+ }
32
+ }
33
+ // Fallback to module field
34
+ if (pkg.module) {
35
+ return pathToFileURL(path.join(dir, pkg.module)).href;
36
+ }
37
+ break;
38
+ }
39
+ }
40
+ dir = path.dirname(dir);
41
+ }
42
+
43
+ // Fallback to resolved path (may be CJS)
44
+ return pathToFileURL(resolvedPath).href;
45
+ }
46
+
9
47
  /**
10
48
  * Build all resources for a Sunpeak project
11
49
  * Runs in the context of a user's project directory
@@ -48,6 +86,31 @@ export async function build(projectRoot = process.cwd()) {
48
86
  process.exit(1);
49
87
  }
50
88
 
89
+ // Import vite and plugins from the user's project (not from sunpeak's node_modules)
90
+ // This allows sunpeak to work when installed globally
91
+ // We resolve to ESM entry points to avoid the CJS deprecation warning from Vite
92
+ const require = createRequire(path.join(projectRoot, 'package.json'));
93
+ let viteBuild, react, tailwindcss;
94
+ try {
95
+ const [viteModule, reactModule, tailwindModule] = await Promise.all([
96
+ import(resolveEsmEntry(require, 'vite')),
97
+ import(resolveEsmEntry(require, '@vitejs/plugin-react')),
98
+ import(resolveEsmEntry(require, '@tailwindcss/vite')),
99
+ ]);
100
+ viteBuild = viteModule.build;
101
+ react = reactModule.default;
102
+ tailwindcss = tailwindModule.default;
103
+ } catch (error) {
104
+ console.error('Error: Could not load build dependencies from your project.');
105
+ console.error('\nMake sure you have these packages installed in your project:');
106
+ console.error(' - vite');
107
+ console.error(' - @vitejs/plugin-react');
108
+ console.error(' - @tailwindcss/vite');
109
+ console.error('\nRun: npm install -D vite @vitejs/plugin-react @tailwindcss/vite');
110
+ console.error('\nOriginal error:', error.message);
111
+ process.exit(1);
112
+ }
113
+
51
114
  // Plugin factory to inline CSS into the JS bundle for all output files
52
115
  const inlineCssPlugin = (buildOutDir) => ({
53
116
  name: 'inline-css',
@@ -182,9 +182,13 @@ export async function dev(projectRoot = process.cwd(), args = []) {
182
182
  console.log(`\nStarting MCP server with ${simulations.length} simulation(s)...`);
183
183
 
184
184
  // Virtual entry module plugin for MCP
185
- // Import sunpeak styles directly via JS to avoid CSS @import alias issues with Lightning CSS.
186
- // Then import app.css for user's @source directives and custom styles (no sunpeak import).
187
- const sunpeakStylePath = isTemplate ? `${parentSrc}/style.css` : 'sunpeak/style.css';
185
+ // For internal dev (template): Import sunpeak styles directly via JS to avoid CSS @import
186
+ // alias issues with Lightning CSS, then import app.css for user customizations.
187
+ // For external users: Import OpenAI SDK CSS directly (ensures Tailwind processes @theme static),
188
+ // then import globals.css for user's Tailwind config and custom styles.
189
+ const styleImports = isTemplate
190
+ ? `import '${parentSrc}/style.css';\nimport '/src/styles/app.css';`
191
+ : `import '@openai/apps-sdk-ui/css';\nimport '/src/styles/globals.css';`;
188
192
 
189
193
  const sunpeakEntryPlugin = () => ({
190
194
  name: 'sunpeak-entry',
@@ -206,8 +210,7 @@ export async function dev(projectRoot = process.cwd(), args = []) {
206
210
  return `
207
211
  import { createElement } from 'react';
208
212
  import { createRoot } from 'react-dom/client';
209
- import '${sunpeakStylePath}';
210
- import '/src/styles/app.css';
213
+ ${styleImports}
211
214
  import * as ResourceModule from '${srcPath}';
212
215
 
213
216
  const Component = ResourceModule.default || ResourceModule['${componentName}'];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sunpeak",
3
- "version": "0.12.6",
3
+ "version": "0.12.8",
4
4
  "description": "The ChatGPT App framework. Quickstart, build, & test your ChatGPT App locally!",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",