convex-cms 0.0.2 → 0.0.3
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/admin-dist/nitro.json +15 -0
- package/admin-dist/public/assets/CmsEmptyState-CRswfTzk.js +5 -0
- package/admin-dist/public/assets/CmsPageHeader-CirpXndm.js +1 -0
- package/admin-dist/public/assets/CmsStatusBadge-CbEUpQu-.js +1 -0
- package/admin-dist/public/assets/CmsToolbar-BI2nZOXp.js +1 -0
- package/admin-dist/public/assets/ContentEntryEditor-CBeCyK_m.js +4 -0
- package/admin-dist/public/assets/ErrorState-BIVaWmom.js +1 -0
- package/admin-dist/public/assets/TaxonomyFilter-ChaY6Y_x.js +1 -0
- package/admin-dist/public/assets/_contentTypeId-DQ8k_Rvw.js +1 -0
- package/admin-dist/public/assets/_entryId-CKU_glsK.js +1 -0
- package/admin-dist/public/assets/alert-BXjTqrwQ.js +1 -0
- package/admin-dist/public/assets/badge-hvUOzpVZ.js +1 -0
- package/admin-dist/public/assets/circle-check-big-CF_pR17r.js +1 -0
- package/admin-dist/public/assets/command-DU82cJlt.js +1 -0
- package/admin-dist/public/assets/content-_LXl3pp7.js +1 -0
- package/admin-dist/public/assets/content-types-KjxaXGxY.js +2 -0
- package/admin-dist/public/assets/globals-CS6BZ0zp.css +1 -0
- package/admin-dist/public/assets/index-DNGIZHL-.js +1 -0
- package/admin-dist/public/assets/label-KNtpL71g.js +1 -0
- package/admin-dist/public/assets/link-2-Bw2aI4V4.js +1 -0
- package/admin-dist/public/assets/list-sYepHjt_.js +1 -0
- package/admin-dist/public/assets/main-CKj5yfEi.js +97 -0
- package/admin-dist/public/assets/media-Bkrkffm7.js +1 -0
- package/admin-dist/public/assets/new._contentTypeId-C3LstjNs.js +1 -0
- package/admin-dist/public/assets/plus-DUn8v_Xf.js +1 -0
- package/admin-dist/public/assets/rotate-ccw-DJEoHcRI.js +1 -0
- package/admin-dist/public/assets/scroll-area-DfIlT0in.js +1 -0
- package/admin-dist/public/assets/search-MuAUDJKR.js +1 -0
- package/admin-dist/public/assets/select-BD29IXCI.js +1 -0
- package/admin-dist/public/assets/settings-DmMyn_6A.js +1 -0
- package/admin-dist/public/assets/switch-h3Rrnl5i.js +1 -0
- package/admin-dist/public/assets/tabs-imc8h-Dp.js +1 -0
- package/admin-dist/public/assets/taxonomies-dAsrT65H.js +1 -0
- package/admin-dist/public/assets/textarea-BTy7nwzR.js +1 -0
- package/admin-dist/public/assets/trash-SAWKZZHv.js +1 -0
- package/admin-dist/public/assets/triangle-alert-E52Vfeuh.js +1 -0
- package/admin-dist/public/assets/useBreadcrumbLabel-BECBMCzM.js +1 -0
- package/admin-dist/public/assets/usePermissions-Basjs9BT.js +1 -0
- package/admin-dist/public/favicon.ico +0 -0
- package/admin-dist/server/_chunks/_libs/@date-fns/tz.mjs +217 -0
- package/admin-dist/server/_chunks/_libs/@floating-ui/core.mjs +719 -0
- package/admin-dist/server/_chunks/_libs/@floating-ui/dom.mjs +622 -0
- package/admin-dist/server/_chunks/_libs/@floating-ui/react-dom.mjs +292 -0
- package/admin-dist/server/_chunks/_libs/@floating-ui/utils.mjs +320 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/number.mjs +6 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/primitive.mjs +11 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-arrow.mjs +23 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-avatar.mjs +119 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-checkbox.mjs +270 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-collection.mjs +69 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-compose-refs.mjs +39 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-context.mjs +137 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-dialog.mjs +325 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-direction.mjs +9 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-dismissable-layer.mjs +210 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-dropdown-menu.mjs +253 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-focus-guards.mjs +29 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-focus-scope.mjs +206 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-id.mjs +14 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-label.mjs +23 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-menu.mjs +812 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-popover.mjs +300 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-popper.mjs +286 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-portal.mjs +16 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-presence.mjs +128 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-primitive.mjs +141 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-roving-focus.mjs +224 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-scroll-area.mjs +721 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-select.mjs +1163 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-separator.mjs +28 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-slot.mjs +601 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-switch.mjs +152 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-tabs.mjs +189 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-callback-ref.mjs +11 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-controllable-state.mjs +69 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-effect-event.mjs +1 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-escape-keydown.mjs +17 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-is-hydrated.mjs +15 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-layout-effect.mjs +6 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-previous.mjs +14 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-size.mjs +39 -0
- package/admin-dist/server/_chunks/_libs/@radix-ui/react-visually-hidden.mjs +33 -0
- package/admin-dist/server/_chunks/_libs/@tanstack/history.mjs +409 -0
- package/admin-dist/server/_chunks/_libs/@tanstack/react-router.mjs +1711 -0
- package/admin-dist/server/_chunks/_libs/@tanstack/react-store.mjs +56 -0
- package/admin-dist/server/_chunks/_libs/@tanstack/router-core.mjs +4829 -0
- package/admin-dist/server/_chunks/_libs/@tanstack/store.mjs +134 -0
- package/admin-dist/server/_chunks/_libs/react-dom.mjs +10781 -0
- package/admin-dist/server/_chunks/_libs/react.mjs +513 -0
- package/admin-dist/server/_libs/aria-hidden.mjs +122 -0
- package/admin-dist/server/_libs/class-variance-authority.mjs +44 -0
- package/admin-dist/server/_libs/clsx.mjs +16 -0
- package/admin-dist/server/_libs/cmdk.mjs +315 -0
- package/admin-dist/server/_libs/convex.mjs +4841 -0
- package/admin-dist/server/_libs/cookie-es.mjs +58 -0
- package/admin-dist/server/_libs/croner.mjs +1 -0
- package/admin-dist/server/_libs/crossws.mjs +1 -0
- package/admin-dist/server/_libs/date-fns.mjs +1716 -0
- package/admin-dist/server/_libs/detect-node-es.mjs +1 -0
- package/admin-dist/server/_libs/get-nonce.mjs +9 -0
- package/admin-dist/server/_libs/h3-v2.mjs +277 -0
- package/admin-dist/server/_libs/h3.mjs +401 -0
- package/admin-dist/server/_libs/hookable.mjs +1 -0
- package/admin-dist/server/_libs/isbot.mjs +20 -0
- package/admin-dist/server/_libs/lucide-react.mjs +850 -0
- package/admin-dist/server/_libs/ohash.mjs +1 -0
- package/admin-dist/server/_libs/react-day-picker.mjs +2201 -0
- package/admin-dist/server/_libs/react-remove-scroll-bar.mjs +82 -0
- package/admin-dist/server/_libs/react-remove-scroll.mjs +328 -0
- package/admin-dist/server/_libs/react-style-singleton.mjs +69 -0
- package/admin-dist/server/_libs/rou3.mjs +8 -0
- package/admin-dist/server/_libs/seroval-plugins.mjs +58 -0
- package/admin-dist/server/_libs/seroval.mjs +1765 -0
- package/admin-dist/server/_libs/srvx.mjs +719 -0
- package/admin-dist/server/_libs/tailwind-merge.mjs +3010 -0
- package/admin-dist/server/_libs/tiny-invariant.mjs +12 -0
- package/admin-dist/server/_libs/tiny-warning.mjs +5 -0
- package/admin-dist/server/_libs/tslib.mjs +39 -0
- package/admin-dist/server/_libs/ufo.mjs +54 -0
- package/admin-dist/server/_libs/unctx.mjs +1 -0
- package/admin-dist/server/_libs/unstorage.mjs +1 -0
- package/admin-dist/server/_libs/use-callback-ref.mjs +66 -0
- package/admin-dist/server/_libs/use-sidecar.mjs +106 -0
- package/admin-dist/server/_libs/use-sync-external-store.mjs +139 -0
- package/admin-dist/server/_libs/zod.mjs +4223 -0
- package/admin-dist/server/_ssr/CmsEmptyState-DU7-7-mV.mjs +290 -0
- package/admin-dist/server/_ssr/CmsPageHeader-CseW0AHm.mjs +24 -0
- package/admin-dist/server/_ssr/CmsStatusBadge-B_pi4KCp.mjs +127 -0
- package/admin-dist/server/_ssr/CmsToolbar-X75ex6ek.mjs +49 -0
- package/admin-dist/server/_ssr/ContentEntryEditor-CepusRsA.mjs +3720 -0
- package/admin-dist/server/_ssr/ErrorState-cI-bKLez.mjs +89 -0
- package/admin-dist/server/_ssr/TaxonomyFilter-Bwrq0-cz.mjs +188 -0
- package/admin-dist/server/_ssr/_contentTypeId-BqYKEcLr.mjs +379 -0
- package/admin-dist/server/_ssr/_entryId-CRfnqeDf.mjs +161 -0
- package/admin-dist/server/_ssr/_tanstack-start-manifest_v-BwDlABVk.mjs +4 -0
- package/admin-dist/server/_ssr/alert-CVt45UUP.mjs +92 -0
- package/admin-dist/server/_ssr/badge-6BsP37vG.mjs +125 -0
- package/admin-dist/server/_ssr/command-fy8epIKf.mjs +128 -0
- package/admin-dist/server/_ssr/config.server-D7JHDcDv.mjs +117 -0
- package/admin-dist/server/_ssr/content-B5RhL7uW.mjs +532 -0
- package/admin-dist/server/_ssr/content-types-BIOqCQYN.mjs +1166 -0
- package/admin-dist/server/_ssr/index-DHSHDPt1.mjs +193 -0
- package/admin-dist/server/_ssr/index.mjs +1275 -0
- package/admin-dist/server/_ssr/label-C8Dko1j7.mjs +22 -0
- package/admin-dist/server/_ssr/media-CSx3XttC.mjs +1832 -0
- package/admin-dist/server/_ssr/new._contentTypeId-DzanEZQM.mjs +144 -0
- package/admin-dist/server/_ssr/router-DDWcF-kt.mjs +1556 -0
- package/admin-dist/server/_ssr/scroll-area-bjPYwhXN.mjs +59 -0
- package/admin-dist/server/_ssr/select-BUhDDf4T.mjs +142 -0
- package/admin-dist/server/_ssr/settings-DAsxnw2q.mjs +348 -0
- package/admin-dist/server/_ssr/start-HYkvq4Ni.mjs +4 -0
- package/admin-dist/server/_ssr/switch-BgyRtQ1Z.mjs +31 -0
- package/admin-dist/server/_ssr/tabs-DzMdRB1A.mjs +628 -0
- package/admin-dist/server/_ssr/taxonomies-C8j8g5Q5.mjs +915 -0
- package/admin-dist/server/_ssr/textarea-9jNeYJSc.mjs +18 -0
- package/admin-dist/server/_ssr/trash-DYMxwhZB.mjs +291 -0
- package/admin-dist/server/_ssr/useBreadcrumbLabel-FNSAr2Ha.mjs +16 -0
- package/admin-dist/server/_ssr/usePermissions-BJGGahrJ.mjs +68 -0
- package/admin-dist/server/favicon.ico +0 -0
- package/admin-dist/server/index.mjs +627 -0
- package/dist/cli/index.js +0 -0
- package/dist/client/admin-config.d.ts +0 -1
- package/dist/client/admin-config.d.ts.map +1 -1
- package/dist/client/admin-config.js +0 -1
- package/dist/client/admin-config.js.map +1 -1
- package/dist/client/adminApi.d.ts.map +1 -1
- package/dist/client/agentTools.d.ts +1237 -135
- package/dist/client/agentTools.d.ts.map +1 -1
- package/dist/client/agentTools.js +33 -9
- package/dist/client/agentTools.js.map +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/component.d.ts +9 -0
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/mediaAssets.d.ts +35 -0
- package/dist/component/mediaAssets.d.ts.map +1 -1
- package/dist/component/mediaAssets.js +81 -0
- package/dist/component/mediaAssets.js.map +1 -1
- package/dist/test.d.ts.map +1 -1
- package/dist/test.js +2 -1
- package/dist/test.js.map +1 -1
- package/package.json +9 -5
- package/dist/component/auditLog.d.ts +0 -410
- package/dist/component/auditLog.d.ts.map +0 -1
- package/dist/component/auditLog.js +0 -607
- package/dist/component/auditLog.js.map +0 -1
- package/dist/component/types.d.ts +0 -4
- package/dist/component/types.d.ts.map +0 -1
- package/dist/component/types.js +0 -2
- package/dist/component/types.js.map +0 -1
- package/src/cli/commands/admin.ts +0 -104
- package/src/cli/index.ts +0 -21
- package/src/cli/utils/detectConvexUrl.ts +0 -54
- package/src/cli/utils/openBrowser.ts +0 -16
- package/src/client/admin-config.ts +0 -138
- package/src/client/adminApi.ts +0 -942
- package/src/client/agentTools.ts +0 -1311
- package/src/client/argTypes.ts +0 -316
- package/src/client/field-types.ts +0 -187
- package/src/client/index.ts +0 -1301
- package/src/client/queryBuilder.ts +0 -1100
- package/src/client/schema/codegen.ts +0 -500
- package/src/client/schema/defineContentType.ts +0 -501
- package/src/client/schema/index.ts +0 -169
- package/src/client/schema/schemaDrift.ts +0 -574
- package/src/client/schema/typedClient.ts +0 -688
- package/src/client/schema/types.ts +0 -666
- package/src/client/types.ts +0 -723
- package/src/client/workflows.ts +0 -141
- package/src/client/wrapper.ts +0 -4304
- package/src/component/_generated/api.ts +0 -140
- package/src/component/_generated/component.ts +0 -5029
- package/src/component/_generated/dataModel.ts +0 -60
- package/src/component/_generated/server.ts +0 -156
- package/src/component/authorization.ts +0 -647
- package/src/component/authorizationHooks.ts +0 -668
- package/src/component/bulkOperations.ts +0 -687
- package/src/component/contentEntries.ts +0 -1976
- package/src/component/contentEntryMutations.ts +0 -1223
- package/src/component/contentEntryValidation.ts +0 -707
- package/src/component/contentLock.ts +0 -550
- package/src/component/contentTypeMigration.ts +0 -1064
- package/src/component/contentTypeMutations.ts +0 -969
- package/src/component/contentTypes.ts +0 -346
- package/src/component/convex.config.ts +0 -44
- package/src/component/documentTypes.ts +0 -240
- package/src/component/eventEmitter.ts +0 -485
- package/src/component/exportImport.ts +0 -1169
- package/src/component/index.ts +0 -491
- package/src/component/lib/deepReferenceResolver.ts +0 -999
- package/src/component/lib/errors.ts +0 -816
- package/src/component/lib/index.ts +0 -145
- package/src/component/lib/mediaReferenceResolver.ts +0 -495
- package/src/component/lib/metadataExtractor.ts +0 -792
- package/src/component/lib/mutationAuth.ts +0 -199
- package/src/component/lib/queries.ts +0 -79
- package/src/component/lib/ragContentChunker.ts +0 -1371
- package/src/component/lib/referenceResolver.ts +0 -430
- package/src/component/lib/slugGenerator.ts +0 -262
- package/src/component/lib/slugUniqueness.ts +0 -333
- package/src/component/lib/softDelete.ts +0 -44
- package/src/component/localeFallbackChain.ts +0 -673
- package/src/component/localeFields.ts +0 -896
- package/src/component/mediaAssetMutations.ts +0 -725
- package/src/component/mediaAssets.ts +0 -932
- package/src/component/mediaFolderMutations.ts +0 -1046
- package/src/component/mediaUploadMutations.ts +0 -224
- package/src/component/mediaVariantMutations.ts +0 -900
- package/src/component/mediaVariants.ts +0 -793
- package/src/component/ragContentIndexer.ts +0 -1067
- package/src/component/rateLimitHooks.ts +0 -572
- package/src/component/roles.ts +0 -1360
- package/src/component/scheduledPublish.ts +0 -358
- package/src/component/schema.ts +0 -617
- package/src/component/taxonomies.ts +0 -949
- package/src/component/taxonomyMutations.ts +0 -1210
- package/src/component/trash.ts +0 -724
- package/src/component/userContext.ts +0 -898
- package/src/component/validation.ts +0 -1388
- package/src/component/validators.ts +0 -949
- package/src/component/versionMutations.ts +0 -392
- package/src/component/webhookTrigger.ts +0 -1922
- package/src/react/index.ts +0 -898
- package/src/test.ts +0 -1580
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import path from "path";
|
|
2
|
-
import { fileURLToPath } from "url";
|
|
3
|
-
import { detectConvexUrl } from "../utils/detectConvexUrl.js";
|
|
4
|
-
import { openBrowser } from "../utils/openBrowser.js";
|
|
5
|
-
|
|
6
|
-
interface AdminOptions {
|
|
7
|
-
url?: string;
|
|
8
|
-
port: string;
|
|
9
|
-
demo?: boolean;
|
|
10
|
-
open: boolean;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Launch the Convex CMS admin panel.
|
|
15
|
-
*
|
|
16
|
-
* This command starts a pre-built TanStack Start server that serves the
|
|
17
|
-
* admin UI. The server reads CONVEX_URL from the environment at runtime,
|
|
18
|
-
* allowing a single build to connect to any Convex deployment.
|
|
19
|
-
*/
|
|
20
|
-
export async function adminCommand(options: AdminOptions): Promise<void> {
|
|
21
|
-
// 1. Resolve Convex URL
|
|
22
|
-
const convexUrl = options.url ?? (await detectConvexUrl());
|
|
23
|
-
|
|
24
|
-
if (!convexUrl && !options.demo) {
|
|
25
|
-
console.error("Error: Could not detect Convex deployment URL.");
|
|
26
|
-
console.error("");
|
|
27
|
-
console.error("Please provide the URL using one of these methods:");
|
|
28
|
-
console.error(" --url <url> Pass URL directly");
|
|
29
|
-
console.error(" CONVEX_URL=<url> Set environment variable");
|
|
30
|
-
console.error(" .env.local Add CONVEX_URL to env file");
|
|
31
|
-
console.error("");
|
|
32
|
-
console.error("Or run in demo mode with mock data:");
|
|
33
|
-
console.error(" npx convex-cms admin --demo");
|
|
34
|
-
process.exit(1);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// 2. Set environment variables for the server
|
|
38
|
-
if (convexUrl) {
|
|
39
|
-
process.env.CONVEX_URL = convexUrl;
|
|
40
|
-
}
|
|
41
|
-
process.env.AUTH_MODE = options.demo ? "demo" : "production";
|
|
42
|
-
process.env.PORT = options.port;
|
|
43
|
-
process.env.NITRO_PORT = options.port;
|
|
44
|
-
|
|
45
|
-
// 3. Find the pre-built admin assets
|
|
46
|
-
// When compiled, this file is at dist/cli/commands/admin.js
|
|
47
|
-
// We need to go up 3 levels to reach admin-dist at the package root
|
|
48
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
49
|
-
const adminDistPath = path.resolve(__dirname, "../../../admin-dist");
|
|
50
|
-
|
|
51
|
-
// 4. Log startup info
|
|
52
|
-
console.log("");
|
|
53
|
-
console.log(" Convex CMS Admin");
|
|
54
|
-
console.log(" ----------------");
|
|
55
|
-
if (convexUrl) {
|
|
56
|
-
console.log(` Convex URL: ${convexUrl}`);
|
|
57
|
-
} else {
|
|
58
|
-
console.log(" Convex URL: Not configured (demo mode)");
|
|
59
|
-
}
|
|
60
|
-
console.log(` Port: ${options.port}`);
|
|
61
|
-
console.log(` Auth Mode: ${options.demo ? "demo" : "production"}`);
|
|
62
|
-
console.log("");
|
|
63
|
-
|
|
64
|
-
// 5. Start the server
|
|
65
|
-
const serverEntry = path.join(adminDistPath, "server", "index.mjs");
|
|
66
|
-
|
|
67
|
-
try {
|
|
68
|
-
// Dynamically import the server to start it
|
|
69
|
-
await import(serverEntry);
|
|
70
|
-
|
|
71
|
-
// 6. Open browser after server starts
|
|
72
|
-
const adminUrl = `http://localhost:${options.port}`;
|
|
73
|
-
if (options.open) {
|
|
74
|
-
// Give the server a moment to start before opening browser
|
|
75
|
-
setTimeout(() => {
|
|
76
|
-
openBrowser(adminUrl);
|
|
77
|
-
}, 1000);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
console.log(` Admin panel starting at ${adminUrl}`);
|
|
81
|
-
console.log("");
|
|
82
|
-
console.log(" Press Ctrl+C to stop");
|
|
83
|
-
console.log("");
|
|
84
|
-
} catch (error) {
|
|
85
|
-
if (
|
|
86
|
-
error instanceof Error &&
|
|
87
|
-
error.message.includes("Cannot find module")
|
|
88
|
-
) {
|
|
89
|
-
console.error("Error: Admin build not found.");
|
|
90
|
-
console.error("");
|
|
91
|
-
console.error(
|
|
92
|
-
"The pre-built admin UI is missing. This usually means:"
|
|
93
|
-
);
|
|
94
|
-
console.error(" - You're running from source (not the npm package)");
|
|
95
|
-
console.error(" - The package wasn't built correctly");
|
|
96
|
-
console.error("");
|
|
97
|
-
console.error("If developing locally, run:");
|
|
98
|
-
console.error(" cd admin && npm run dev");
|
|
99
|
-
} else {
|
|
100
|
-
console.error("Error starting admin server:", error);
|
|
101
|
-
}
|
|
102
|
-
process.exit(1);
|
|
103
|
-
}
|
|
104
|
-
}
|
package/src/cli/index.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { Command } from "commander";
|
|
3
|
-
import { adminCommand } from "./commands/admin.js";
|
|
4
|
-
|
|
5
|
-
const program = new Command();
|
|
6
|
-
|
|
7
|
-
program
|
|
8
|
-
.name("convex-cms")
|
|
9
|
-
.description("Convex CMS CLI - Headless CMS built on Convex")
|
|
10
|
-
.version("0.0.1");
|
|
11
|
-
|
|
12
|
-
program
|
|
13
|
-
.command("admin")
|
|
14
|
-
.description("Launch the Convex CMS admin panel")
|
|
15
|
-
.option("--url <url>", "Convex deployment URL")
|
|
16
|
-
.option("--port <port>", "Port to serve admin on", "3000")
|
|
17
|
-
.option("--demo", "Run in demo mode with mock authentication")
|
|
18
|
-
.option("--no-open", "Do not open browser automatically")
|
|
19
|
-
.action(adminCommand);
|
|
20
|
-
|
|
21
|
-
program.parse();
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import fs from "fs";
|
|
2
|
-
import path from "path";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Detects the Convex deployment URL from various sources.
|
|
6
|
-
*
|
|
7
|
-
* Priority order:
|
|
8
|
-
* 1. CONVEX_URL environment variable
|
|
9
|
-
* 2. VITE_CONVEX_URL environment variable
|
|
10
|
-
* 3. .env.local file in current directory
|
|
11
|
-
* 4. .env file in current directory
|
|
12
|
-
*
|
|
13
|
-
* @returns The detected Convex URL or null if not found
|
|
14
|
-
*/
|
|
15
|
-
export async function detectConvexUrl(): Promise<string | null> {
|
|
16
|
-
// Check environment variables first
|
|
17
|
-
if (process.env.CONVEX_URL) {
|
|
18
|
-
return process.env.CONVEX_URL;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
if (process.env.VITE_CONVEX_URL) {
|
|
22
|
-
return process.env.VITE_CONVEX_URL;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// Try to read from env files in the current working directory
|
|
26
|
-
const envFiles = [".env.local", ".env"];
|
|
27
|
-
|
|
28
|
-
for (const envFile of envFiles) {
|
|
29
|
-
const envPath = path.join(process.cwd(), envFile);
|
|
30
|
-
|
|
31
|
-
if (fs.existsSync(envPath)) {
|
|
32
|
-
try {
|
|
33
|
-
const content = fs.readFileSync(envPath, "utf-8");
|
|
34
|
-
|
|
35
|
-
// Look for CONVEX_URL or VITE_CONVEX_URL
|
|
36
|
-
const patterns = [
|
|
37
|
-
/^CONVEX_URL=["']?([^"'\n\r]+)["']?/m,
|
|
38
|
-
/^VITE_CONVEX_URL=["']?([^"'\n\r]+)["']?/m,
|
|
39
|
-
];
|
|
40
|
-
|
|
41
|
-
for (const pattern of patterns) {
|
|
42
|
-
const match = content.match(pattern);
|
|
43
|
-
if (match?.[1]) {
|
|
44
|
-
return match[1].trim();
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
} catch {
|
|
48
|
-
// Ignore read errors, continue to next file
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return null;
|
|
54
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import open from "open";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Opens a URL in the default browser.
|
|
5
|
-
*
|
|
6
|
-
* @param url - The URL to open
|
|
7
|
-
*/
|
|
8
|
-
export async function openBrowser(url: string): Promise<void> {
|
|
9
|
-
try {
|
|
10
|
-
await open(url);
|
|
11
|
-
} catch (_error) {
|
|
12
|
-
// Silently fail if browser cannot be opened
|
|
13
|
-
// The user can still manually navigate to the URL
|
|
14
|
-
console.warn(`Could not open browser automatically. Please visit: ${url}`);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Admin UI Configuration Re-exports
|
|
3
|
-
*
|
|
4
|
-
* These utilities allow users to define admin UI configuration
|
|
5
|
-
* in a code-first, type-safe manner.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* // cms-admin.config.ts
|
|
9
|
-
* import { defineAdminConfig } from "@convex-cms/core";
|
|
10
|
-
*
|
|
11
|
-
* export default defineAdminConfig({
|
|
12
|
-
* branding: {
|
|
13
|
-
* appName: "My Blog CMS",
|
|
14
|
-
* logo: "/logo.svg",
|
|
15
|
-
* },
|
|
16
|
-
* navigation: {
|
|
17
|
-
* showTaxonomies: false,
|
|
18
|
-
* customItems: [
|
|
19
|
-
* {
|
|
20
|
-
* id: "analytics",
|
|
21
|
-
* path: "/analytics",
|
|
22
|
-
* label: "Analytics",
|
|
23
|
-
* icon: "BarChart",
|
|
24
|
-
* section: "main",
|
|
25
|
-
* },
|
|
26
|
-
* ],
|
|
27
|
-
* },
|
|
28
|
-
* theme: {
|
|
29
|
-
* mode: "dark",
|
|
30
|
-
* },
|
|
31
|
-
* });
|
|
32
|
-
*/
|
|
33
|
-
|
|
34
|
-
import { z } from "zod";
|
|
35
|
-
|
|
36
|
-
export interface NavItem {
|
|
37
|
-
id: string;
|
|
38
|
-
path: string;
|
|
39
|
-
label: string;
|
|
40
|
-
icon: string;
|
|
41
|
-
visible?: boolean;
|
|
42
|
-
section: "main" | "config";
|
|
43
|
-
badge?: string;
|
|
44
|
-
exact?: boolean;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const navItemSchema = z.object({
|
|
48
|
-
id: z.string(),
|
|
49
|
-
path: z.string(),
|
|
50
|
-
label: z.string(),
|
|
51
|
-
icon: z.string(),
|
|
52
|
-
visible: z.boolean().default(true),
|
|
53
|
-
section: z.enum(["main", "config"]).default("main"),
|
|
54
|
-
badge: z.string().optional(),
|
|
55
|
-
exact: z.boolean().optional(),
|
|
56
|
-
}) satisfies z.ZodType<NavItem>;
|
|
57
|
-
|
|
58
|
-
const brandingSchema = z.object({
|
|
59
|
-
appName: z.string().default("Convex CMS"),
|
|
60
|
-
logo: z.string().optional(),
|
|
61
|
-
favicon: z.string().optional(),
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
const layoutSchema = z.object({
|
|
65
|
-
sidebarWidth: z.number().min(200).max(400).default(256),
|
|
66
|
-
sidebarCollapsible: z.boolean().default(false),
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
const navigationSchema = z.object({
|
|
70
|
-
showDashboard: z.boolean().default(true),
|
|
71
|
-
showContent: z.boolean().default(true),
|
|
72
|
-
showMedia: z.boolean().default(true),
|
|
73
|
-
showTaxonomies: z.boolean().default(true),
|
|
74
|
-
showContentTypes: z.boolean().default(true),
|
|
75
|
-
showAuditLogs: z.boolean().default(true),
|
|
76
|
-
showTrash: z.boolean().default(true),
|
|
77
|
-
showSettings: z.boolean().default(true),
|
|
78
|
-
customItems: z.array(navItemSchema).default([]),
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
const themeSchema = z.object({
|
|
82
|
-
mode: z.enum(["light", "dark", "system"]).default("system"),
|
|
83
|
-
allowModeSwitch: z.boolean().default(true),
|
|
84
|
-
tokens: z.record(z.string(), z.string()).optional(),
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
export const adminConfigSchema = z.object({
|
|
88
|
-
branding: brandingSchema.default(() => brandingSchema.parse({})),
|
|
89
|
-
layout: layoutSchema.default(() => layoutSchema.parse({})),
|
|
90
|
-
navigation: navigationSchema.default(() => navigationSchema.parse({})),
|
|
91
|
-
theme: themeSchema.default(() => themeSchema.parse({})),
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
export type AdminConfig = z.infer<typeof adminConfigSchema>;
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Define admin UI configuration for your CMS.
|
|
98
|
-
*
|
|
99
|
-
* Use this function in a cms-admin.config.ts file at your project root,
|
|
100
|
-
* or pass the config directly to the <CmsAdmin /> component for embedded mode.
|
|
101
|
-
*
|
|
102
|
-
* @param config - Partial admin configuration (uses sensible defaults)
|
|
103
|
-
* @returns The configuration object (unchanged, for type inference)
|
|
104
|
-
*
|
|
105
|
-
* @example
|
|
106
|
-
* // Code-first config file approach (cms-admin.config.ts)
|
|
107
|
-
* import { defineAdminConfig } from "@convex-cms/core";
|
|
108
|
-
*
|
|
109
|
-
* export default defineAdminConfig({
|
|
110
|
-
* branding: { appName: "My CMS" },
|
|
111
|
-
* navigation: { showTaxonomies: false },
|
|
112
|
-
* });
|
|
113
|
-
*
|
|
114
|
-
* @example
|
|
115
|
-
* // Embedded admin approach
|
|
116
|
-
* import { CmsAdmin, defineAdminConfig } from "@convex-cms/admin/embed";
|
|
117
|
-
*
|
|
118
|
-
* const config = defineAdminConfig({
|
|
119
|
-
* branding: { appName: "My CMS" },
|
|
120
|
-
* });
|
|
121
|
-
*
|
|
122
|
-
* function App() {
|
|
123
|
-
* return <CmsAdmin config={config} ... />;
|
|
124
|
-
* }
|
|
125
|
-
*/
|
|
126
|
-
export function defineAdminConfig(config: Partial<AdminConfig>): Partial<AdminConfig> {
|
|
127
|
-
return config;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Resolve partial admin config with defaults.
|
|
132
|
-
*
|
|
133
|
-
* @param input - Partial configuration
|
|
134
|
-
* @returns Full configuration with all defaults applied
|
|
135
|
-
*/
|
|
136
|
-
export function resolveAdminConfig(input?: Partial<AdminConfig>): AdminConfig {
|
|
137
|
-
return adminConfigSchema.parse(input ?? {});
|
|
138
|
-
}
|