create-disposabl-app 0.1.0 → 0.1.2
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/dist/index.js +21 -22
- package/dist/templates/default/apps/desktop/.oxfmtrc.json +5 -0
- package/dist/templates/default/apps/desktop/.oxlintrc.json +6 -0
- package/dist/templates/default/apps/desktop/README.md +58 -0
- package/dist/templates/default/apps/desktop/forge.config.mts +90 -0
- package/dist/templates/default/apps/desktop/index.html +12 -0
- package/dist/templates/default/apps/desktop/package.json +55 -1
- package/dist/templates/default/apps/desktop/src/declarations.d.ts +2 -0
- package/dist/templates/default/apps/desktop/src/index.css +8 -0
- package/dist/templates/default/apps/desktop/src/main.ts +58 -0
- package/dist/templates/default/apps/desktop/src/preload.ts +3 -0
- package/dist/templates/default/apps/desktop/src/renderer.ts +19 -0
- package/dist/templates/default/apps/desktop/tsconfig.json +14 -0
- package/dist/templates/default/apps/desktop/vite.main.config.mts +4 -0
- package/dist/templates/default/apps/desktop/vite.preload.config.mts +4 -0
- package/dist/templates/default/apps/desktop/vite.renderer.config.mts +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/agent-device/SKILL.md +22 -0
- package/dist/templates/default/apps/mobile/.agents/skills/android-emulator/SKILL.md +32 -0
- package/dist/templates/default/apps/mobile/.agents/skills/dogfood/SKILL.md +27 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/SKILL.md +176 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/references/app-store-metadata.md +497 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/references/ios-app-store.md +376 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/references/native-ios.md +167 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/references/play-store.md +244 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/references/testflight.md +62 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/references/workflows.md +120 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-hosting/SKILL.md +431 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-hosting/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-observe/SKILL.md +46 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-observe/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-observe/references/metrics.md +98 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-observe/references/queries.md +444 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-observe/references/setup.md +529 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-observe/references/third-party.md +136 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-simulator/SKILL.md +237 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-simulator/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-simulator/references/controllers.md +139 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-simulator/references/logs-and-crashes.md +101 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-simulator/references/run-your-app.md +256 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-simulator/references/troubleshooting.md +56 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-update/SKILL.md +146 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-update/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-update-insights/SKILL.md +238 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-update-insights/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-update-insights/references/channel-insights-schema.md +47 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-update-insights/references/update-insights-schema.md +69 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-workflows/SKILL.md +99 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-workflows/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-workflows/scripts/fetch.js +109 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-workflows/scripts/package.json +6 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-animation/LICENSE +21 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-animation/RECIPES.md +385 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-animation/SKILL.md +274 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-animation/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-app-clip/SKILL.md +290 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-app-clip/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-app-clip/references/native-module.md +96 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/SKILL.md +69 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/references/brownfield-integrated.md +551 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/references/brownfield-isolated.md +449 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/references/comparison.md +63 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/references/feature-integration.md +163 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/references/troubleshooting.md +88 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/references/version-compatibility.md +40 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-data-fetching/SKILL.md +478 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-data-fetching/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-data-fetching/references/expo-router-loaders.md +341 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-data-fetching/references/offline-and-cancellation.md +68 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-design-system/SKILL.md +376 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-design-system/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-design-system/references/audit.md +190 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-design-system/references/native-slop.md +74 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-dev-client/SKILL.md +184 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-dev-client/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-dom/SKILL.md +425 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-dom/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-examples/SKILL.md +106 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-examples/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-examples/references/catalog.md +105 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-migrate-module/SKILL.md +124 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-migrate-module/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-migrate-module/references/compatibility.md +130 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-migrate-module/references/example.md +212 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-migrate-module/references/migration-map.md +457 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-module/SKILL.md +151 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-module/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-module/references/config-plugin.md +90 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-module/references/create-expo-module.md +206 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-module/references/lifecycle.md +127 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-module/references/module-config.md +48 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-module/references/native-module.md +286 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-module/references/native-view.md +171 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/SKILL.md +201 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/controls.md +231 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/gradients.md +106 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/icons.md +232 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/media.md +193 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/storage.md +121 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/visual-effects.md +198 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/webgpu-three.md +605 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-overview/SKILL.md +120 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-overview/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-overview/references/launch-without-dev-menu.md +24 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-project-structure/SKILL.md +114 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-project-structure/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-router/SKILL.md +240 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-router/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-router/references/form-sheet.md +253 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-router/references/route-structure.md +229 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-router/references/search.md +248 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-router/references/tabs.md +433 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-router/references/toolbar-and-headers.md +284 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-router/references/zoom-transitions.md +158 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/SKILL.md +314 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/agents/visual-grader.md +52 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/references/design-rubric.md +45 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/references/runtime-matrix.md +34 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/check-static.sh +64 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/clean-fixture.sh +56 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/generate_viewer.py +450 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/latest-sdk.sh +46 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/make-fixture.sh +95 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/make-workspace.sh +31 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/snapshot-android.sh +284 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/snapshot-ios.sh +132 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/snapshot-web.sh +61 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/SKILL.md +101 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/references/drop-in-replacements.md +27 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/references/jetpack-compose.md +73 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/references/swift-ui.md +73 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/references/universal.md +104 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/scripts/list-components.js +193 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/SKILL.md +150 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/expo-av-to-audio.md +132 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/expo-av-to-video.md +160 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/native-tabs.md +124 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/new-architecture.md +79 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/react-19.md +79 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/react-compiler.md +59 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/react-navigation-to-expo-router.md +61 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-web-to-native/SKILL.md +91 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-web-to-native/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-web-to-native/references/false-friends.md +119 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-web-to-native/references/native-patterns.md +39 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-web-to-native/references/run-as-goal.md +48 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-web-to-native/references/verify-on-device.md +45 -0
- package/dist/templates/default/apps/mobile/.agents/skills/ios-simulator/SKILL.md +32 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/POWER.md +172 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/SKILL.md +238 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-analyze-app.md +208 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-analyze-js.md +264 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-barrel-exports.md +250 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-code-splitting.md +255 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-hermes-mmap.md +167 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-library-size.md +164 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-native-assets.md +208 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-r8-android.md +231 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-tree-shaking.md +215 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/bundle-treemap-source-map-explorer.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/controlled-textinput-pingpong.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/devtools-flamegraph.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/emerge-xray-ios.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/expo-atlas-treemap.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/flashlight-flatlist-vs-flashlist.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/fps-drop-graph.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/memory-heap-snapshot.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/tti-warm-start-diagram.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/view-hierarchy-flattening.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/xcode-instruments-templates.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/xcode-thread-view.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-animations-reanimated.md +273 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-atomic-state.md +190 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-bottomsheet.md +339 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-concurrent-react.md +238 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-lists-flatlist-flashlist.md +223 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-measure-fps.md +178 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-memory-leaks.md +168 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-profile-react.md +138 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-react-compiler.md +261 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-uncontrolled-components.md +219 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-android-16kb-alignment.md +114 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-measure-tti.md +221 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-memory-leaks.md +206 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-memory-patterns.md +240 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-platform-setup.md +112 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-profiling.md +140 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-sdks-over-polyfills.md +192 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-threading-model.md +230 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-turbo-modules.md +210 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-view-flattening.md +180 -0
- package/dist/templates/default/apps/mobile/AGENTS.md +41 -0
- package/dist/templates/default/apps/mobile/app.json +38 -0
- package/dist/templates/default/apps/mobile/assets/expo.icon/Assets/expo-symbol 2.svg +3 -0
- package/dist/templates/default/apps/mobile/assets/expo.icon/Assets/grid.png +0 -0
- package/dist/templates/default/apps/mobile/assets/expo.icon/icon.json +40 -0
- package/dist/templates/default/apps/mobile/assets/images/android-icon-background.png +0 -0
- package/dist/templates/default/apps/mobile/assets/images/android-icon-foreground.png +0 -0
- package/dist/templates/default/apps/mobile/assets/images/android-icon-monochrome.png +0 -0
- package/dist/templates/default/apps/mobile/assets/images/icon.png +0 -0
- package/dist/templates/default/apps/mobile/assets/images/splash-icon.png +0 -0
- package/dist/templates/default/apps/mobile/eslint.config.js +10 -0
- package/dist/templates/default/apps/mobile/package.json +43 -1
- package/dist/templates/default/apps/mobile/skills-lock.json +185 -0
- package/dist/templates/default/apps/mobile/src/app/_layout.tsx +5 -0
- package/dist/templates/default/apps/mobile/src/app/index.tsx +17 -0
- package/dist/templates/default/apps/mobile/tsconfig.json +20 -0
- package/dist/templates/default/apps/web/.agents/skills/frontend-design/SKILL.md +71 -0
- package/dist/templates/default/apps/web/.agents/skills/web-design-guidelines/SKILL.md +39 -0
- package/dist/templates/default/apps/web/.env.example +3 -0
- package/dist/templates/default/apps/web/components.json +23 -0
- package/dist/templates/default/apps/web/eslint.config.ts +21 -0
- package/dist/templates/default/apps/web/package.json +39 -1
- package/dist/templates/default/apps/web/public/disposabl-logo.svg +8 -0
- package/dist/templates/default/apps/web/public/favicon.ico +0 -0
- package/dist/templates/default/apps/web/public/manifest.json +25 -0
- package/dist/templates/default/apps/web/skills-lock.json +17 -0
- package/dist/templates/default/apps/web/src/index.css +92 -0
- package/dist/templates/default/apps/web/src/routeTree.gen.ts +282 -0
- package/dist/templates/default/apps/web/src/router/__root.tsx +63 -0
- package/dist/templates/default/apps/web/src/router/_authenticated/dashboard.tsx +9 -0
- package/dist/templates/default/apps/web/src/router/_authenticated/todos/$id.tsx +27 -0
- package/dist/templates/default/apps/web/src/router/_authenticated/todos/index.tsx +33 -0
- package/dist/templates/default/apps/web/src/router/index.tsx +15 -0
- package/dist/templates/default/apps/web/src/router.tsx +20 -0
- package/dist/templates/default/apps/web/tsconfig.json +33 -0
- package/dist/templates/default/apps/web/tsr.config.json +6 -0
- package/dist/templates/default/apps/web/vite.config.ts +65 -0
- package/dist/templates/default/bun.lock +3932 -0
- package/dist/templates/default/bunfig.toml +5 -0
- package/dist/templates/default/disposabl.json +9 -0
- package/dist/templates/default/gitignore +9 -1
- package/dist/templates/default/package.json +29 -4
- package/dist/templates/default/packages/backend/.agents/skills/convex/SKILL.md +69 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-add/SKILL.md +26 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-advisor/SKILL.md +32 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-agent/SKILL.md +25 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-auth/SKILL.md +29 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-authz/SKILL.md +36 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-backup/SKILL.md +33 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-billing/SKILL.md +69 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-cost/SKILL.md +29 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/SKILL.md +325 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/agents/openai.yaml +14 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/assets/icon.svg +3 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/references/advanced-patterns.md +146 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/references/hybrid-components.md +38 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/references/local-components.md +39 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/references/packaged-components.md +54 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-crons/SKILL.md +23 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-deploy-guard/SKILL.md +29 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-design/SKILL.md +30 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-docs/SKILL.md +31 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-domains/SKILL.md +26 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-env/SKILL.md +24 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-expert/SKILL.md +38 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-explain-app/SKILL.md +29 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-improve-convex-plugin/SKILL.md +24 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-insights/SKILL.md +32 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-launch-readiness/SKILL.md +35 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-migrate/SKILL.md +23 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-migrate-rehearse/SKILL.md +31 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-monitor/SKILL.md +22 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-optimize/SKILL.md +26 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-quickstart/SKILL.md +29 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-quickstart/agents/openai.yaml +14 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-quickstart/assets/icon.svg +4 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-reviewer/SKILL.md +26 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-seed/SKILL.md +23 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-self-heal/SKILL.md +38 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-sentinel/SKILL.md +25 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-suggest/SKILL.md +27 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-test/SKILL.md +23 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-verify/SKILL.md +34 -0
- package/dist/templates/default/packages/backend/.prettierignore +4 -0
- package/dist/templates/default/packages/backend/AGENTS.md +18 -0
- package/dist/templates/default/packages/backend/CLAUDE.md +13 -0
- package/dist/templates/default/packages/backend/README.md +33 -0
- package/dist/templates/default/packages/backend/convex/_generated/ai/ai-files.state.json +6 -0
- package/dist/templates/default/packages/backend/convex/_generated/ai/guidelines.md +286 -0
- package/dist/templates/default/packages/backend/convex/_generated/api.d.ts +66 -0
- package/dist/templates/default/packages/backend/convex/_generated/api.js +23 -0
- package/dist/templates/default/packages/backend/convex/_generated/dataModel.d.ts +60 -0
- package/dist/templates/default/packages/backend/convex/_generated/server.d.ts +164 -0
- package/dist/templates/default/packages/backend/convex/_generated/server.js +101 -0
- package/dist/templates/default/packages/backend/convex/auth.config.ts +14 -0
- package/dist/templates/default/packages/backend/convex/auth.ts +15 -0
- package/dist/templates/default/packages/backend/convex/convex.config.ts +30 -0
- package/dist/templates/default/packages/backend/convex/http.ts +5 -0
- package/dist/templates/default/packages/backend/convex/mcp.ts +8 -0
- package/dist/templates/default/packages/backend/convex/schema.ts +10 -0
- package/dist/templates/default/packages/backend/convex/todos/index.ts +26 -0
- package/dist/templates/default/packages/backend/convex/todos/internal.ts +43 -0
- package/dist/templates/default/packages/backend/convex/tsconfig.json +27 -0
- package/dist/templates/default/packages/backend/convex/users.ts +20 -0
- package/dist/templates/default/packages/backend/eslint.config.mjs +62 -0
- package/dist/templates/default/packages/backend/package.json +36 -0
- package/dist/templates/default/packages/backend/skills-lock.json +203 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/accordion.tsx +77 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/alert-dialog.tsx +185 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/alert.tsx +75 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/aspect-ratio.tsx +22 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/attachment.tsx +207 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/avatar.tsx +106 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/badge.tsx +51 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/breadcrumb.tsx +121 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/bubble.tsx +127 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/button-group.tsx +87 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/button.tsx +57 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/calendar.tsx +241 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/card.tsx +102 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/carousel.tsx +239 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/chart.tsx +368 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/checkbox.tsx +27 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/code-block.tsx +243 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/collapsible.tsx +19 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/combobox.tsx +300 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/command.tsx +194 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/context-menu.tsx +271 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/dialog.tsx +156 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/direction.tsx +4 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/drawer.tsx +224 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/dropdown-menu.tsx +269 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/empty.tsx +103 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/field.tsx +236 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/hover-card.tsx +50 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/input-group.tsx +158 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/input-otp.tsx +83 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/input.tsx +19 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/item.tsx +201 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/kbd.tsx +26 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/label.tsx +19 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/marker.tsx +70 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/menubar.tsx +284 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/message-scroller.tsx +128 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/message.tsx +91 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/native-select.tsx +64 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/navigation-menu.tsx +170 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/pagination.tsx +133 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/popover.tsx +87 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/progress.tsx +82 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/questionnaire.tsx +330 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/radio-group.tsx +35 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/resizable.tsx +49 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/scroll-area.tsx +51 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/select.tsx +201 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/separator.tsx +22 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/sheet.tsx +132 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/sidebar.tsx +723 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/skeleton.tsx +13 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/slider.tsx +51 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/spinner.tsx +16 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/switch.tsx +31 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/table.tsx +113 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/tabs.tsx +81 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/textarea.tsx +17 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/toast.tsx +229 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/toggle-group.tsx +87 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/toggle.tsx +42 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/tooltip.tsx +65 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/trace.tsx +161 -0
- package/dist/templates/default/packages/disposabl-kit/client/hooks/use-mobile.ts +21 -0
- package/dist/templates/default/packages/disposabl-kit/client/lib/prerender.ts +89 -0
- package/dist/templates/default/packages/disposabl-kit/client/lib/return-to.ts +12 -0
- package/dist/templates/default/packages/disposabl-kit/client/lib/utils.ts +1 -0
- package/dist/templates/default/packages/disposabl-kit/client/routes/_auth-pages/login.tsx +114 -0
- package/dist/templates/default/packages/disposabl-kit/client/routes/_auth-pages/signUp.tsx +120 -0
- package/dist/templates/default/packages/disposabl-kit/client/routes/_authenticated/route.tsx +38 -0
- package/dist/templates/default/packages/disposabl-kit/client/routes/consent.tsx +137 -0
- package/dist/templates/default/packages/disposabl-kit/client/routes/route.tsx +30 -0
- package/dist/templates/default/packages/disposabl-kit/client/styles/globals.css +60 -0
- package/dist/templates/default/packages/disposabl-kit/client/vite.config.ts +32 -0
- package/dist/templates/default/packages/disposabl-kit/components.json +23 -0
- package/dist/templates/default/packages/disposabl-kit/eslint.config.js +21 -0
- package/dist/templates/default/packages/disposabl-kit/package.json +59 -0
- package/dist/templates/default/packages/disposabl-kit/server/http.ts +42 -0
- package/dist/templates/default/packages/disposabl-kit/server/lib/functions.ts +46 -0
- package/dist/templates/default/packages/disposabl-kit/server/lib/mcp-tools.ts +47 -0
- package/dist/templates/default/packages/disposabl-kit/server/lib/platforms.ts +20 -0
- package/dist/templates/default/packages/disposabl-kit/tsconfig.json +17 -0
- package/dist/templates/default/patches/@convex-dev%2Fauth@2.0.0-beta.0.patch +310 -0
- package/dist/templates/default/patches/@convex-dev%2Fstatic-hosting@0.2.1.patch +187 -0
- package/dist/templates/default/tsconfig.json +9 -0
- package/dist/templates/default/turbo.json +51 -0
- package/package.json +1 -2
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
diff --git a/dist/cli/program.d.ts b/dist/cli/program.d.ts
|
|
2
|
+
index bd6fd586968841cfda5aff80bb943f27d1a9e75d..793c51c8fdb474be84d2518c2a7382790be2f16c 100644
|
|
3
|
+
--- a/dist/cli/program.d.ts
|
|
4
|
+
+++ b/dist/cli/program.d.ts
|
|
5
|
+
@@ -56,7 +56,7 @@ export declare function installCommand(packageManager: string): "pnpm add @conve
|
|
6
|
+
*/
|
|
7
|
+
export declare function detectPackageManager(dir: string, env?: NodeJS.ProcessEnv): PackageManager;
|
|
8
|
+
/** The real implementations, injected into `runInit` (overridden in tests). */
|
|
9
|
+
-export declare function defaultDeps(): InitDeps;
|
|
10
|
+
+export declare function defaultDeps(deploymentArgs?: string[]): InitDeps;
|
|
11
|
+
/**
|
|
12
|
+
* Run the full initialization against the injected `deps`. Fatal problems are
|
|
13
|
+
* reported via `command.error`, which prints to stderr and exits (or throws a
|
|
14
|
+
@@ -64,6 +64,7 @@ export declare function defaultDeps(): InitDeps;
|
|
15
|
+
*/
|
|
16
|
+
declare function runInit(deps: InitDeps, options: {
|
|
17
|
+
force?: boolean;
|
|
18
|
+
+ keysOnly?: boolean;
|
|
19
|
+
}, command: Command): Promise<void>;
|
|
20
|
+
/** Build the commander program, wired to the given dependencies. */
|
|
21
|
+
export declare function createProgram(deps?: InitDeps): Command;
|
|
22
|
+
diff --git a/dist/cli/program.js b/dist/cli/program.js
|
|
23
|
+
index 81d8f6d54dfcbae2662504b4b57ae3ee5b224ebf..d5795d97273aa4b00d11ef62a17f3e4532dc8d84 100644
|
|
24
|
+
--- a/dist/cli/program.js
|
|
25
|
+
+++ b/dist/cli/program.js
|
|
26
|
+
@@ -18,7 +18,7 @@
|
|
27
|
+
// TODO(nicolas) This is a rough draft. Ideally, we simplify the setup process
|
|
28
|
+
// (e.g. by skipping the need for a key pair generation + simplyfying the API)
|
|
29
|
+
// so that users don’t need to rely on this.
|
|
30
|
+
-import { Command } from "commander";
|
|
31
|
+
+import { Command, Option } from "commander";
|
|
32
|
+
import { generateKeyPair, exportPKCS8, exportJWK } from "jose";
|
|
33
|
+
import { randomUUID } from "node:crypto";
|
|
34
|
+
import { spawnSync } from "node:child_process";
|
|
35
|
+
@@ -138,8 +138,8 @@ async function generateAuthKeys() {
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/** Read an env var off the current directory's Convex deployment. */
|
|
39
|
+
-function getConvexEnv(key) {
|
|
40
|
+
- const result = spawnSync("npx", ["convex", "env", "get", key], {
|
|
41
|
+
+function getConvexEnv(key, deploymentArgs) {
|
|
42
|
+
+ const result = spawnSync("bunx", ["--no-install", "convex", "env", "get", key, ...deploymentArgs], {
|
|
43
|
+
cwd: process.cwd(),
|
|
44
|
+
encoding: "utf8",
|
|
45
|
+
});
|
|
46
|
+
@@ -153,21 +153,19 @@ function getConvexEnv(key) {
|
|
47
|
+
*
|
|
48
|
+
* The output of the Convex CLI is captured, not printed: it echoes the value it
|
|
49
|
+
* sets, and one of the values here is the private signing key. If the command
|
|
50
|
+
- * fails, its stderr goes into the error message.
|
|
51
|
+
+ * fails, only a sanitized error is returned.
|
|
52
|
+
*/
|
|
53
|
+
-function setConvexEnv(key, value) {
|
|
54
|
+
- const result = spawnSync("npx", ["convex", "env", "set", key, value], {
|
|
55
|
+
+function setConvexEnv(key, value, deploymentArgs) {
|
|
56
|
+
+ const result = spawnSync("bunx", ["--no-install", "convex", "env", "set", key, value, ...deploymentArgs], {
|
|
57
|
+
cwd: process.cwd(),
|
|
58
|
+
encoding: "utf8",
|
|
59
|
+
});
|
|
60
|
+
if (result.status !== 0) {
|
|
61
|
+
- const reason = (result.stderr ?? "").trim();
|
|
62
|
+
- throw new Error(`Could not set ${key} on the Convex deployment.` +
|
|
63
|
+
- (reason.length > 0 ? `\n\n${indent(reason)}` : ""));
|
|
64
|
+
+ throw new Error(`Could not set ${key} on the selected Convex deployment.`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/** The real implementations, injected into `runInit` (overridden in tests). */
|
|
68
|
+
-export function defaultDeps() {
|
|
69
|
+
+export function defaultDeps(deploymentArgs = []) {
|
|
70
|
+
return {
|
|
71
|
+
cwd: () => process.cwd(),
|
|
72
|
+
fs: {
|
|
73
|
+
@@ -180,8 +178,8 @@ export function defaultDeps() {
|
|
74
|
+
warn: (message) => console.warn(message),
|
|
75
|
+
spinner: startSpinner,
|
|
76
|
+
generateKeys: generateAuthKeys,
|
|
77
|
+
- getEnv: getConvexEnv,
|
|
78
|
+
- setEnv: setConvexEnv,
|
|
79
|
+
+ getEnv: (key) => getConvexEnv(key, deploymentArgs),
|
|
80
|
+
+ setEnv: (key, value) => setConvexEnv(key, value, deploymentArgs),
|
|
81
|
+
detectPackageManager,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
@@ -216,10 +214,15 @@ function indent(text) {
|
|
85
|
+
*/
|
|
86
|
+
async function ensureAuthKeys(deps, force) {
|
|
87
|
+
const reading = deps.spinner("Reading the deployment environment…");
|
|
88
|
+
- const isSet = deps.getEnv("AUTH_PRIVATE_KEY") && deps.getEnv("AUTH_JWKS");
|
|
89
|
+
+ const privateKey = deps.getEnv("AUTH_PRIVATE_KEY");
|
|
90
|
+
+ const jwks = deps.getEnv("AUTH_JWKS");
|
|
91
|
+
+ const isSet = privateKey && jwks;
|
|
92
|
+
reading.stop();
|
|
93
|
+
if (!force && isSet)
|
|
94
|
+
return "kept";
|
|
95
|
+
+ if (!force && Boolean(privateKey) !== Boolean(jwks)) {
|
|
96
|
+
+ throw new Error("Partial Auth key configuration; restore the matching missing key. Existing keys were preserved.");
|
|
97
|
+
+ }
|
|
98
|
+
const generating = deps.spinner("Generating an RS256 key pair…");
|
|
99
|
+
const { authPrivateKey, authJwks } = await deps.generateKeys();
|
|
100
|
+
generating.stop();
|
|
101
|
+
@@ -323,23 +326,43 @@ async function runInit(deps, options, command) {
|
|
102
|
+
deps.log(`${chalk.bold("Convex Auth")} ${chalk.dim(`setup in ${dir}`)}`);
|
|
103
|
+
const keyOutcome = await ensureAuthKeys(deps, options.force ?? false);
|
|
104
|
+
reportKeys(deps, keyOutcome);
|
|
105
|
+
- reportFiles(deps, writeAuthFiles(deps, dir));
|
|
106
|
+
- reportNextSteps(deps);
|
|
107
|
+
+ if (!options.keysOnly) {
|
|
108
|
+
+ reportFiles(deps, writeAuthFiles(deps, dir));
|
|
109
|
+
+ reportNextSteps(deps);
|
|
110
|
+
+ }
|
|
111
|
+
}
|
|
112
|
+
/** Build the commander program, wired to the given dependencies. */
|
|
113
|
+
-export function createProgram(deps = defaultDeps()) {
|
|
114
|
+
+export function createProgram(deps) {
|
|
115
|
+
const program = new Command();
|
|
116
|
+
program
|
|
117
|
+
.name("@convex-dev/auth")
|
|
118
|
+
.description("Set up Convex Auth in this project: put the signing keys on the " +
|
|
119
|
+
"Convex deployment, and scaffold the convex/ files.")
|
|
120
|
+
.option("--force", "Regenerate the auth signing keys even if already set")
|
|
121
|
+
+ .option("--keys-only", "Set up signing keys without scaffolding files")
|
|
122
|
+
+ .option("--prod", "Set up signing keys on production")
|
|
123
|
+
+ .addOption(new Option("--preview-name <name>", "Set up signing keys on a named preview").conflicts("prod"))
|
|
124
|
+
// Mark every failure with the same symbol, both ours (`command.error`) and
|
|
125
|
+
// the ones commander itself writes, which start with "error: ".
|
|
126
|
+
.configureOutput({
|
|
127
|
+
outputError: (text, write) => write(`${symbols.failed} ${text.replace(/^error: /, "")}`),
|
|
128
|
+
})
|
|
129
|
+
- .action((options, command) => runInit(deps, options, command));
|
|
130
|
+
+ .action((options, command) => {
|
|
131
|
+
+ if (options.previewName !== undefined && (!options.previewName.trim() || options.previewName.startsWith("-"))) {
|
|
132
|
+
+ command.error("--preview-name must identify a preview deployment");
|
|
133
|
+
+ }
|
|
134
|
+
+ const key = process.env.CONVEX_DEPLOY_KEY;
|
|
135
|
+
+ if (key && options.previewName && !key.startsWith("preview:")) {
|
|
136
|
+
+ command.error("Preview setup requires a preview project deploy key.");
|
|
137
|
+
+ }
|
|
138
|
+
+ if (key && options.prod && !key.startsWith("prod:")) {
|
|
139
|
+
+ command.error("Production setup requires a production deploy key.");
|
|
140
|
+
+ }
|
|
141
|
+
+ const deploymentArgs = options.previewName
|
|
142
|
+
+ ? ["--preview-name", options.previewName]
|
|
143
|
+
+ : options.prod ? ["--prod"] : [];
|
|
144
|
+
+ return runInit(deps ?? defaultDeps(deploymentArgs), options, command);
|
|
145
|
+
+ });
|
|
146
|
+
return program;
|
|
147
|
+
}
|
|
148
|
+
export { runInit };
|
|
149
|
+
diff --git a/dist/internal-types/cli/program.d.ts b/dist/internal-types/cli/program.d.ts
|
|
150
|
+
index bd6fd586968841cfda5aff80bb943f27d1a9e75d..793c51c8fdb474be84d2518c2a7382790be2f16c 100644
|
|
151
|
+
--- a/dist/internal-types/cli/program.d.ts
|
|
152
|
+
+++ b/dist/internal-types/cli/program.d.ts
|
|
153
|
+
@@ -56,7 +56,7 @@ export declare function installCommand(packageManager: string): "pnpm add @conve
|
|
154
|
+
*/
|
|
155
|
+
export declare function detectPackageManager(dir: string, env?: NodeJS.ProcessEnv): PackageManager;
|
|
156
|
+
/** The real implementations, injected into `runInit` (overridden in tests). */
|
|
157
|
+
-export declare function defaultDeps(): InitDeps;
|
|
158
|
+
+export declare function defaultDeps(deploymentArgs?: string[]): InitDeps;
|
|
159
|
+
/**
|
|
160
|
+
* Run the full initialization against the injected `deps`. Fatal problems are
|
|
161
|
+
* reported via `command.error`, which prints to stderr and exits (or throws a
|
|
162
|
+
@@ -64,6 +64,7 @@ export declare function defaultDeps(): InitDeps;
|
|
163
|
+
*/
|
|
164
|
+
declare function runInit(deps: InitDeps, options: {
|
|
165
|
+
force?: boolean;
|
|
166
|
+
+ keysOnly?: boolean;
|
|
167
|
+
}, command: Command): Promise<void>;
|
|
168
|
+
/** Build the commander program, wired to the given dependencies. */
|
|
169
|
+
export declare function createProgram(deps?: InitDeps): Command;
|
|
170
|
+
diff --git a/src/cli/program.ts b/src/cli/program.ts
|
|
171
|
+
index a437ec4aa701ff90839badf12279350342b83d31..5aae1fd9b0a35757e290ea79c55519b002999bf6 100644
|
|
172
|
+
--- a/src/cli/program.ts
|
|
173
|
+
+++ b/src/cli/program.ts
|
|
174
|
+
@@ -20,7 +20,7 @@
|
|
175
|
+
// (e.g. by skipping the need for a key pair generation + simplyfying the API)
|
|
176
|
+
// so that users don’t need to rely on this.
|
|
177
|
+
|
|
178
|
+
-import { Command } from "commander";
|
|
179
|
+
+import { Command, Option } from "commander";
|
|
180
|
+
import { generateKeyPair, exportPKCS8, exportJWK } from "jose";
|
|
181
|
+
import { randomUUID } from "node:crypto";
|
|
182
|
+
import { spawnSync } from "node:child_process";
|
|
183
|
+
@@ -191,8 +191,8 @@ async function generateAuthKeys() {
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/** Read an env var off the current directory's Convex deployment. */
|
|
187
|
+
-function getConvexEnv(key: string) {
|
|
188
|
+
- const result = spawnSync("npx", ["convex", "env", "get", key], {
|
|
189
|
+
+function getConvexEnv(key: string, deploymentArgs: string[]) {
|
|
190
|
+
+ const result = spawnSync("bunx", ["--no-install", "convex", "env", "get", key, ...deploymentArgs], {
|
|
191
|
+
cwd: process.cwd(),
|
|
192
|
+
encoding: "utf8",
|
|
193
|
+
});
|
|
194
|
+
@@ -206,24 +206,20 @@ function getConvexEnv(key: string) {
|
|
195
|
+
*
|
|
196
|
+
* The output of the Convex CLI is captured, not printed: it echoes the value it
|
|
197
|
+
* sets, and one of the values here is the private signing key. If the command
|
|
198
|
+
- * fails, its stderr goes into the error message.
|
|
199
|
+
+ * fails, only a sanitized error is returned.
|
|
200
|
+
*/
|
|
201
|
+
-function setConvexEnv(key: string, value: string) {
|
|
202
|
+
- const result = spawnSync("npx", ["convex", "env", "set", key, value], {
|
|
203
|
+
+function setConvexEnv(key: string, value: string, deploymentArgs: string[]) {
|
|
204
|
+
+ const result = spawnSync("bunx", ["--no-install", "convex", "env", "set", key, value, ...deploymentArgs], {
|
|
205
|
+
cwd: process.cwd(),
|
|
206
|
+
encoding: "utf8",
|
|
207
|
+
});
|
|
208
|
+
if (result.status !== 0) {
|
|
209
|
+
- const reason = (result.stderr ?? "").trim();
|
|
210
|
+
- throw new Error(
|
|
211
|
+
- `Could not set ${key} on the Convex deployment.` +
|
|
212
|
+
- (reason.length > 0 ? `\n\n${indent(reason)}` : ""),
|
|
213
|
+
- );
|
|
214
|
+
+ throw new Error(`Could not set ${key} on the selected Convex deployment.`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/** The real implementations, injected into `runInit` (overridden in tests). */
|
|
219
|
+
-export function defaultDeps(): InitDeps {
|
|
220
|
+
+export function defaultDeps(deploymentArgs: string[] = []): InitDeps {
|
|
221
|
+
return {
|
|
222
|
+
cwd: () => process.cwd(),
|
|
223
|
+
fs: {
|
|
224
|
+
@@ -236,8 +232,8 @@ export function defaultDeps(): InitDeps {
|
|
225
|
+
warn: (message) => console.warn(message),
|
|
226
|
+
spinner: startSpinner,
|
|
227
|
+
generateKeys: generateAuthKeys,
|
|
228
|
+
- getEnv: getConvexEnv,
|
|
229
|
+
- setEnv: setConvexEnv,
|
|
230
|
+
+ getEnv: (key) => getConvexEnv(key, deploymentArgs),
|
|
231
|
+
+ setEnv: (key, value) => setConvexEnv(key, value, deploymentArgs),
|
|
232
|
+
detectPackageManager,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
@@ -286,9 +282,14 @@ async function ensureAuthKeys(
|
|
236
|
+
force: boolean,
|
|
237
|
+
): Promise<KeyOutcome> {
|
|
238
|
+
const reading = deps.spinner("Reading the deployment environment…");
|
|
239
|
+
- const isSet = deps.getEnv("AUTH_PRIVATE_KEY") && deps.getEnv("AUTH_JWKS");
|
|
240
|
+
+ const privateKey = deps.getEnv("AUTH_PRIVATE_KEY");
|
|
241
|
+
+ const jwks = deps.getEnv("AUTH_JWKS");
|
|
242
|
+
+ const isSet = privateKey && jwks;
|
|
243
|
+
reading.stop();
|
|
244
|
+
if (!force && isSet) return "kept";
|
|
245
|
+
+ if (!force && Boolean(privateKey) !== Boolean(jwks)) {
|
|
246
|
+
+ throw new Error("Partial Auth key configuration; restore the matching missing key. Existing keys were preserved.");
|
|
247
|
+
+ }
|
|
248
|
+
|
|
249
|
+
const generating = deps.spinner("Generating an RS256 key pair…");
|
|
250
|
+
const { authPrivateKey, authJwks } = await deps.generateKeys();
|
|
251
|
+
@@ -391,7 +392,7 @@ function reportNextSteps(deps: InitDeps) {
|
|
252
|
+
*/
|
|
253
|
+
async function runInit(
|
|
254
|
+
deps: InitDeps,
|
|
255
|
+
- options: { force?: boolean },
|
|
256
|
+
+ options: { force?: boolean; keysOnly?: boolean },
|
|
257
|
+
command: Command,
|
|
258
|
+
) {
|
|
259
|
+
const dir = deps.cwd();
|
|
260
|
+
@@ -431,12 +432,14 @@ async function runInit(
|
|
261
|
+
const keyOutcome = await ensureAuthKeys(deps, options.force ?? false);
|
|
262
|
+
reportKeys(deps, keyOutcome);
|
|
263
|
+
|
|
264
|
+
- reportFiles(deps, writeAuthFiles(deps, dir));
|
|
265
|
+
- reportNextSteps(deps);
|
|
266
|
+
+ if (!options.keysOnly) {
|
|
267
|
+
+ reportFiles(deps, writeAuthFiles(deps, dir));
|
|
268
|
+
+ reportNextSteps(deps);
|
|
269
|
+
+ }
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/** Build the commander program, wired to the given dependencies. */
|
|
273
|
+
-export function createProgram(deps: InitDeps = defaultDeps()) {
|
|
274
|
+
+export function createProgram(deps?: InitDeps) {
|
|
275
|
+
const program = new Command();
|
|
276
|
+
program
|
|
277
|
+
.name("@convex-dev/auth")
|
|
278
|
+
@@ -445,13 +448,31 @@ export function createProgram(deps: InitDeps = defaultDeps()) {
|
|
279
|
+
"Convex deployment, and scaffold the convex/ files.",
|
|
280
|
+
)
|
|
281
|
+
.option("--force", "Regenerate the auth signing keys even if already set")
|
|
282
|
+
+ .option("--keys-only", "Set up signing keys without scaffolding files")
|
|
283
|
+
+ .option("--prod", "Set up signing keys on production")
|
|
284
|
+
+ .addOption(new Option("--preview-name <name>", "Set up signing keys on a named preview").conflicts("prod"))
|
|
285
|
+
// Mark every failure with the same symbol, both ours (`command.error`) and
|
|
286
|
+
// the ones commander itself writes, which start with "error: ".
|
|
287
|
+
.configureOutput({
|
|
288
|
+
outputError: (text, write) =>
|
|
289
|
+
write(`${symbols.failed} ${text.replace(/^error: /, "")}`),
|
|
290
|
+
})
|
|
291
|
+
- .action((options, command) => runInit(deps, options, command));
|
|
292
|
+
+ .action((options, command) => {
|
|
293
|
+
+ if (options.previewName !== undefined && (!options.previewName.trim() || options.previewName.startsWith("-"))) {
|
|
294
|
+
+ command.error("--preview-name must identify a preview deployment");
|
|
295
|
+
+ }
|
|
296
|
+
+ const key = process.env.CONVEX_DEPLOY_KEY;
|
|
297
|
+
+ if (key && options.previewName && !key.startsWith("preview:")) {
|
|
298
|
+
+ command.error("Preview setup requires a preview project deploy key.");
|
|
299
|
+
+ }
|
|
300
|
+
+ if (key && options.prod && !key.startsWith("prod:")) {
|
|
301
|
+
+ command.error("Production setup requires a production deploy key.");
|
|
302
|
+
+ }
|
|
303
|
+
+ const deploymentArgs = options.previewName
|
|
304
|
+
+ ? ["--preview-name", options.previewName]
|
|
305
|
+
+ : options.prod ? ["--prod"] : [];
|
|
306
|
+
+ return runInit(deps ?? defaultDeps(deploymentArgs), options, command);
|
|
307
|
+
+ });
|
|
308
|
+
return program;
|
|
309
|
+
}
|
|
310
|
+
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
diff --git a/dist/cli/args.d.ts b/dist/cli/args.d.ts
|
|
2
|
+
index 49cc75cfed936742c87d445b35c290d881402cb4..a5854ec0a121e39e5af13e9167fc0d97ec91e324 100644
|
|
3
|
+
--- a/dist/cli/args.d.ts
|
|
4
|
+
+++ b/dist/cli/args.d.ts
|
|
5
|
+
@@ -2,6 +2,7 @@ export interface UploadArgs {
|
|
6
|
+
dist: string;
|
|
7
|
+
component: string;
|
|
8
|
+
prod: boolean;
|
|
9
|
+
+ previewName?: string;
|
|
10
|
+
build: boolean;
|
|
11
|
+
buildCommand: string;
|
|
12
|
+
cdn: boolean;
|
|
13
|
+
diff --git a/dist/cli/args.js b/dist/cli/args.js
|
|
14
|
+
index d4681a0493412e012cb3472bc257585716650aac..97b0187653a9ea45d704c310c208e8a986f09864 100644
|
|
15
|
+
--- a/dist/cli/args.js
|
|
16
|
+
+++ b/dist/cli/args.js
|
|
17
|
+
@@ -31,6 +31,10 @@ export function parseUploadArgs(args) {
|
|
18
|
+
result.component = optionValue(args, i, arg);
|
|
19
|
+
i++;
|
|
20
|
+
}
|
|
21
|
+
+ else if (arg === "--preview-name") {
|
|
22
|
+
+ result.previewName = optionValue(args, i, arg);
|
|
23
|
+
+ i++;
|
|
24
|
+
+ }
|
|
25
|
+
else if (arg === "--prod") {
|
|
26
|
+
result.prod = true;
|
|
27
|
+
}
|
|
28
|
+
@@ -71,6 +75,9 @@ export function parseUploadArgs(args) {
|
|
29
|
+
throw new Error(`Unknown upload option: ${arg}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
+ if (result.prod && result.previewName) {
|
|
33
|
+
+ throw new Error("--prod and --preview-name cannot be used together");
|
|
34
|
+
+ }
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
export function parseDeployArgs(args) {
|
|
38
|
+
diff --git a/dist/cli/upload.js b/dist/cli/upload.js
|
|
39
|
+
index c56bea2295e25496a1f89abcc6c48e94754a8fb3..cbbd6ae077470342eccc4f91052b9b2458ca2131 100644
|
|
40
|
+
--- a/dist/cli/upload.js
|
|
41
|
+
+++ b/dist/cli/upload.js
|
|
42
|
+
@@ -59,6 +59,7 @@ Options:
|
|
43
|
+
-d, --dist <path> Path to dist directory (default: ./dist)
|
|
44
|
+
-c, --component <name> Static-hosting component instance name (default: staticHosting)
|
|
45
|
+
--prod Deploy to production deployment
|
|
46
|
+
+ --preview-name <name> Upload to a named preview deployment
|
|
47
|
+
-b, --build Run the build command with VITE_CONVEX_URL +
|
|
48
|
+
STATIC_HOSTING_BASE_PATH set before uploading
|
|
49
|
+
--build-command <cmd> Build command to run (default: 'npm run build').
|
|
50
|
+
@@ -83,6 +84,7 @@ Examples:
|
|
51
|
+
}
|
|
52
|
+
// Global flag for production mode
|
|
53
|
+
let useProd = true;
|
|
54
|
+
+let previewName;
|
|
55
|
+
const MAX_ASSETS_PER_DEPLOYMENT = 1800;
|
|
56
|
+
const MAX_MANIFEST_SERIALIZED_BYTES = 2 * 1024 * 1024;
|
|
57
|
+
// A Convex CLI function result can be truncated around 64 KiB. Signed upload
|
|
58
|
+
@@ -137,6 +139,7 @@ function convexRunAsync(componentName, functionPath, args = {}, options = {}) {
|
|
59
|
+
"--typecheck=disable",
|
|
60
|
+
"--codegen=disable",
|
|
61
|
+
...(useProd ? ["--prod"] : []),
|
|
62
|
+
+ ...(previewName ? ["--preview-name", previewName] : []),
|
|
63
|
+
], options);
|
|
64
|
+
}
|
|
65
|
+
function errorMessage(error) {
|
|
66
|
+
@@ -538,8 +541,9 @@ async function main() {
|
|
67
|
+
showHelp();
|
|
68
|
+
process.exit(0);
|
|
69
|
+
}
|
|
70
|
+
- // Set global prod flag
|
|
71
|
+
+ // Set the target for every Convex call
|
|
72
|
+
useProd = args.prod;
|
|
73
|
+
+ previewName = args.previewName;
|
|
74
|
+
// The component knows both its CONVEX_SITE_URL (where the app is served,
|
|
75
|
+
// including the mount prefix) and CONVEX_CLOUD_URL (what the frontend
|
|
76
|
+
// connects to). We fetch both in one call and trust neither hostname. This
|
|
77
|
+
@@ -548,7 +552,7 @@ async function main() {
|
|
78
|
+
// Run build if requested
|
|
79
|
+
if (args.build) {
|
|
80
|
+
const basePath = new URL(componentSiteUrl).pathname || "/";
|
|
81
|
+
- const envLabel = useProd ? "production" : "development";
|
|
82
|
+
+ const envLabel = previewName ? `preview ${previewName}` : useProd ? "production" : "development";
|
|
83
|
+
console.log(`🔨 Building for ${envLabel}...`);
|
|
84
|
+
console.log(` Build command: ${args.buildCommand}`);
|
|
85
|
+
console.log(` VITE_CONVEX_URL=${convexUrl}`);
|
|
86
|
+
@@ -601,7 +605,7 @@ async function main() {
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
await cleanUpAbandonedUploads(componentName, args.cdnDeleteFunction);
|
|
90
|
+
- const envLabel = useProd ? "production" : "development";
|
|
91
|
+
+ const envLabel = previewName ? `preview ${previewName}` : useProd ? "production" : "development";
|
|
92
|
+
console.log(`🚀 Deploying to ${envLabel} environment`);
|
|
93
|
+
if (useCdn) {
|
|
94
|
+
console.log("☁️ CDN mode: non-HTML assets will be uploaded to convex-fs");
|
|
95
|
+
diff --git a/src/cli/args.ts b/src/cli/args.ts
|
|
96
|
+
index b12a21bf6e77b0aa5de3665adf7e7ccc6b631910..0e0dc4a13c426f7cf2e9b201f105003adb39412a 100644
|
|
97
|
+
--- a/src/cli/args.ts
|
|
98
|
+
+++ b/src/cli/args.ts
|
|
99
|
+
@@ -2,6 +2,7 @@ export interface UploadArgs {
|
|
100
|
+
dist: string;
|
|
101
|
+
component: string;
|
|
102
|
+
prod: boolean;
|
|
103
|
+
+ previewName?: string;
|
|
104
|
+
build: boolean;
|
|
105
|
+
buildCommand: string;
|
|
106
|
+
cdn: boolean;
|
|
107
|
+
@@ -55,6 +56,9 @@ export function parseUploadArgs(args: string[]): UploadArgs {
|
|
108
|
+
} else if (arg === "--component" || arg === "-c") {
|
|
109
|
+
result.component = optionValue(args, i, arg);
|
|
110
|
+
i++;
|
|
111
|
+
+ } else if (arg === "--preview-name") {
|
|
112
|
+
+ result.previewName = optionValue(args, i, arg);
|
|
113
|
+
+ i++;
|
|
114
|
+
} else if (arg === "--prod") {
|
|
115
|
+
result.prod = true;
|
|
116
|
+
} else if (arg === "--no-prod" || arg === "--dev") {
|
|
117
|
+
@@ -86,6 +90,9 @@ export function parseUploadArgs(args: string[]): UploadArgs {
|
|
118
|
+
throw new Error(`Unknown upload option: ${arg}`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
+ if (result.prod && result.previewName) {
|
|
122
|
+
+ throw new Error("--prod and --preview-name cannot be used together");
|
|
123
|
+
+ }
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
diff --git a/src/cli/upload.ts b/src/cli/upload.ts
|
|
128
|
+
index 9c2f9c1fccedb954b845c7599a2e8d5d132c0087..2fbcbe1dd4c0462ef945f40907bbcb0d2a434ddf 100644
|
|
129
|
+
--- a/src/cli/upload.ts
|
|
130
|
+
+++ b/src/cli/upload.ts
|
|
131
|
+
@@ -70,6 +70,7 @@ Options:
|
|
132
|
+
-d, --dist <path> Path to dist directory (default: ./dist)
|
|
133
|
+
-c, --component <name> Static-hosting component instance name (default: staticHosting)
|
|
134
|
+
--prod Deploy to production deployment
|
|
135
|
+
+ --preview-name <name> Upload to a named preview deployment
|
|
136
|
+
-b, --build Run the build command with VITE_CONVEX_URL +
|
|
137
|
+
STATIC_HOSTING_BASE_PATH set before uploading
|
|
138
|
+
--build-command <cmd> Build command to run (default: 'npm run build').
|
|
139
|
+
@@ -95,6 +96,7 @@ Examples:
|
|
140
|
+
|
|
141
|
+
// Global flag for production mode
|
|
142
|
+
let useProd = true;
|
|
143
|
+
+let previewName: string | undefined;
|
|
144
|
+
const MAX_ASSETS_PER_DEPLOYMENT = 1800;
|
|
145
|
+
const MAX_MANIFEST_SERIALIZED_BYTES = 2 * 1024 * 1024;
|
|
146
|
+
// A Convex CLI function result can be truncated around 64 KiB. Signed upload
|
|
147
|
+
@@ -175,6 +177,7 @@ function convexRunAsync(
|
|
148
|
+
"--typecheck=disable",
|
|
149
|
+
"--codegen=disable",
|
|
150
|
+
...(useProd ? ["--prod"] : []),
|
|
151
|
+
+ ...(previewName ? ["--preview-name", previewName] : []),
|
|
152
|
+
],
|
|
153
|
+
options,
|
|
154
|
+
);
|
|
155
|
+
@@ -800,8 +803,9 @@ async function main(): Promise<void> {
|
|
156
|
+
process.exit(0);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
- // Set global prod flag
|
|
160
|
+
+ // Set the target for every Convex call
|
|
161
|
+
useProd = args.prod;
|
|
162
|
+
+ previewName = args.previewName;
|
|
163
|
+
|
|
164
|
+
// The component knows both its CONVEX_SITE_URL (where the app is served,
|
|
165
|
+
// including the mount prefix) and CONVEX_CLOUD_URL (what the frontend
|
|
166
|
+
@@ -816,7 +820,9 @@ async function main(): Promise<void> {
|
|
167
|
+
if (args.build) {
|
|
168
|
+
const basePath = new URL(componentSiteUrl).pathname || "/";
|
|
169
|
+
|
|
170
|
+
- const envLabel = useProd ? "production" : "development";
|
|
171
|
+
+ const envLabel = previewName
|
|
172
|
+
+ ? `preview ${previewName}`
|
|
173
|
+
+ : useProd ? "production" : "development";
|
|
174
|
+
console.log(`🔨 Building for ${envLabel}...`);
|
|
175
|
+
console.log(` Build command: ${args.buildCommand}`);
|
|
176
|
+
console.log(` VITE_CONVEX_URL=${convexUrl}`);
|
|
177
|
+
@@ -889,7 +895,9 @@ async function main(): Promise<void> {
|
|
178
|
+
|
|
179
|
+
await cleanUpAbandonedUploads(componentName, args.cdnDeleteFunction);
|
|
180
|
+
|
|
181
|
+
- const envLabel = useProd ? "production" : "development";
|
|
182
|
+
+ const envLabel = previewName
|
|
183
|
+
+ ? `preview ${previewName}`
|
|
184
|
+
+ : useProd ? "production" : "development";
|
|
185
|
+
console.log(`🚀 Deploying to ${envLabel} environment`);
|
|
186
|
+
if (useCdn) {
|
|
187
|
+
console.log("☁️ CDN mode: non-HTML assets will be uploaded to convex-fs");
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://turbo.build/schema.json",
|
|
3
|
+
"ui": "tui",
|
|
4
|
+
"tasks": {
|
|
5
|
+
"build": {
|
|
6
|
+
"dependsOn": [
|
|
7
|
+
"^build"
|
|
8
|
+
],
|
|
9
|
+
"inputs": [
|
|
10
|
+
"$TURBO_DEFAULT$",
|
|
11
|
+
".env*"
|
|
12
|
+
],
|
|
13
|
+
"outputs": [
|
|
14
|
+
"dist/**",
|
|
15
|
+
".output/app/**"
|
|
16
|
+
],
|
|
17
|
+
"env": [
|
|
18
|
+
"VITE_CONVEX_SITE_URL",
|
|
19
|
+
"VITE_CONVEX_URL"
|
|
20
|
+
],
|
|
21
|
+
"cache": false
|
|
22
|
+
},
|
|
23
|
+
"lint": {
|
|
24
|
+
"dependsOn": [
|
|
25
|
+
"^lint"
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
"format": {
|
|
29
|
+
"dependsOn": [
|
|
30
|
+
"^format"
|
|
31
|
+
],
|
|
32
|
+
"cache": false
|
|
33
|
+
},
|
|
34
|
+
"typecheck": {
|
|
35
|
+
"dependsOn": [
|
|
36
|
+
"^typecheck"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"dev": {
|
|
40
|
+
"cache": false,
|
|
41
|
+
"persistent": true,
|
|
42
|
+
"passThroughEnv": [
|
|
43
|
+
"CONVEX_*",
|
|
44
|
+
"VITE_*"
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"globalDependencies": [
|
|
49
|
+
"disposabl.json"
|
|
50
|
+
]
|
|
51
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-disposabl-app",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Create a Disposabl app",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -24,7 +24,6 @@
|
|
|
24
24
|
"build": "bun build.ts",
|
|
25
25
|
"typecheck": "bun check",
|
|
26
26
|
"lint": "eslint .",
|
|
27
|
-
"test": "bun test tests",
|
|
28
27
|
"format": "bun fmt"
|
|
29
28
|
},
|
|
30
29
|
"publishConfig": {
|