diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 86288f3..bbd1dc5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,7 +29,7 @@ jobs: - run: pnpm install --frozen-lockfile - run: pnpm build - run: pnpm typecheck - - run: pnpm run --filter emdashcms-demo --filter @emdashcms/demo-cloudflare typecheck + - run: pnpm run --filter emdashcms-demo --filter @emdash-cms/demo-cloudflare typecheck - run: pnpm typecheck:templates lint: @@ -156,7 +156,7 @@ jobs: node-version: 22 cache: pnpm - run: pnpm install --frozen-lockfile - - run: pnpm run --filter @emdashcms/admin... build + - run: pnpm run --filter @emdash-cms/admin... build - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 id: playwright-cache with: @@ -164,7 +164,7 @@ jobs: key: playwright-${{ hashFiles('pnpm-lock.yaml') }} - run: pnpm exec playwright install --with-deps chromium if: steps.playwright-cache.outputs.cache-hit != 'true' - - run: pnpm run --filter @emdashcms/admin test + - run: pnpm run --filter @emdash-cms/admin test test-e2e: name: E2E tests (${{ matrix.shardIndex }}/${{ matrix.shardTotal }}) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8f4b3b9..4478483 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -43,19 +43,19 @@ Templates in `templates/` are workspace members and can be run directly: ```bash # First time: set up database and seed content -pnpm --filter @emdashcms/template-portfolio bootstrap +pnpm --filter @emdash-cms/template-portfolio bootstrap # Run the dev server -pnpm --filter @emdashcms/template-portfolio dev +pnpm --filter @emdash-cms/template-portfolio dev ``` Available templates: | Template | Filter Name | | --------- | ------------------------------ | -| Blog | `@emdashcms/template-blog` | -| Portfolio | `@emdashcms/template-portfolio` | -| Marketing | `@emdashcms/template-marketing` | +| Blog | `@emdash-cms/template-blog` | +| Portfolio | `@emdash-cms/template-portfolio` | +| Marketing | `@emdash-cms/template-marketing` | Edit files in `templates/{name}/src/` and changes hot reload. @@ -73,7 +73,7 @@ To start fresh, delete the database and re-bootstrap: ```bash rm templates/portfolio/data.db -pnpm --filter @emdashcms/template-portfolio bootstrap +pnpm --filter @emdash-cms/template-portfolio bootstrap ``` ## Development Workflow @@ -123,9 +123,9 @@ Tests use real in-memory SQLite — no mocking. Each test gets a fresh database. emdash/ ├── packages/ │ ├── core/ # emdash — the main package (Astro integration + APIs + admin) -│ ├── auth/ # @emdashcms/auth — passkeys, OAuth, magic links -│ ├── admin/ # @emdashcms/admin — React admin SPA -│ ├── cloudflare/ # @emdashcms/cloudflare — CF adapter + plugin sandbox +│ ├── auth/ # @emdash-cms/auth — passkeys, OAuth, magic links +│ ├── admin/ # @emdash-cms/admin — React admin SPA +│ ├── cloudflare/ # @emdash-cms/cloudflare — CF adapter + plugin sandbox │ ├── create-emdash/ # create-emdash — project scaffolder │ ├── gutenberg-to-portable-text/ # WP block → Portable Text converter │ └── plugins/ # first-party plugins (each dir = package) diff --git a/demos/cloudflare/astro.config.mjs b/demos/cloudflare/astro.config.mjs index 3c3b420..de86808 100644 --- a/demos/cloudflare/astro.config.mjs +++ b/demos/cloudflare/astro.config.mjs @@ -9,9 +9,9 @@ import { cloudflareCache, cloudflareImages, cloudflareStream, -} from "@emdashcms/cloudflare"; -import { formsPlugin } from "@emdashcms/plugin-forms"; -import { webhookNotifierPlugin } from "@emdashcms/plugin-webhook-notifier"; +} from "@emdash-cms/cloudflare"; +import { formsPlugin } from "@emdash-cms/plugin-forms"; +import { webhookNotifierPlugin } from "@emdash-cms/plugin-webhook-notifier"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; diff --git a/demos/cloudflare/package.json b/demos/cloudflare/package.json index 4083cd2..310ceca 100644 --- a/demos/cloudflare/package.json +++ b/demos/cloudflare/package.json @@ -1,12 +1,12 @@ { - "name": "@emdashcms/demo-cloudflare", + "name": "@emdash-cms/demo-cloudflare", "version": "0.0.1", "private": true, "type": "module", "scripts": { "dev": "astro dev", "build": "astro build", - "build:all": "pnpm run --filter @emdashcms/demo-cloudflare... build", + "build:all": "pnpm run --filter @emdash-cms/demo-cloudflare... build", "preview": "astro preview", "deploy": "pnpm build:all && wrangler deploy", "db:create": "wrangler d1 create emdash-demo", @@ -16,9 +16,9 @@ "dependencies": { "@astrojs/cloudflare": "catalog:", "@astrojs/react": "catalog:", - "@emdashcms/cloudflare": "workspace:*", - "@emdashcms/plugin-forms": "workspace:*", - "@emdashcms/plugin-webhook-notifier": "workspace:*", + "@emdash-cms/cloudflare": "workspace:*", + "@emdash-cms/plugin-forms": "workspace:*", + "@emdash-cms/plugin-webhook-notifier": "workspace:*", "@tanstack/react-query": "catalog:", "@tanstack/react-router": "catalog:", "astro": "catalog:", diff --git a/demos/cloudflare/src/worker.ts b/demos/cloudflare/src/worker.ts index 6af9aaa..37f4434 100644 --- a/demos/cloudflare/src/worker.ts +++ b/demos/cloudflare/src/worker.ts @@ -10,7 +10,7 @@ import handler from "@astrojs/cloudflare/entrypoints/server"; // Re-export PluginBridge from the cloudflare sandbox runtime // This makes it available via ctx.exports.PluginBridge -export { PluginBridge } from "@emdashcms/cloudflare/sandbox"; +export { PluginBridge } from "@emdash-cms/cloudflare/sandbox"; /** * Default export - just re-export the Astro handler diff --git a/demos/playground/astro.config.mjs b/demos/playground/astro.config.mjs index 3a5a12a..bc090d9 100644 --- a/demos/playground/astro.config.mjs +++ b/demos/playground/astro.config.mjs @@ -1,6 +1,6 @@ import cloudflare from "@astrojs/cloudflare"; import react from "@astrojs/react"; -import { playgroundDatabase } from "@emdashcms/cloudflare"; +import { playgroundDatabase } from "@emdash-cms/cloudflare"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; @@ -20,7 +20,7 @@ export default defineConfig({ // Playground mode: injects playground middleware before runtime init, // skips setup/auth (handled by playground middleware) playground: { - middlewareEntrypoint: "@emdashcms/cloudflare/db/playground-middleware", + middlewareEntrypoint: "@emdash-cms/cloudflare/db/playground-middleware", }, }), ], diff --git a/demos/playground/package.json b/demos/playground/package.json index 331ff95..03b17ff 100644 --- a/demos/playground/package.json +++ b/demos/playground/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/playground", + "name": "@emdash-cms/playground", "version": "0.0.1", "private": true, "type": "module", @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/cloudflare": "catalog:", "@astrojs/react": "catalog:", - "@emdashcms/cloudflare": "workspace:*", + "@emdash-cms/cloudflare": "workspace:*", "astro": "catalog:", "emdash": "workspace:*", "react": "catalog:", diff --git a/demos/playground/src/worker.ts b/demos/playground/src/worker.ts index fc264fe..704ad04 100644 --- a/demos/playground/src/worker.ts +++ b/demos/playground/src/worker.ts @@ -9,6 +9,6 @@ import handler from "@astrojs/cloudflare/entrypoints/server"; // Export the DO class so Cloudflare can instantiate it -export { EmDashPreviewDB } from "@emdashcms/cloudflare/db/playground"; +export { EmDashPreviewDB } from "@emdash-cms/cloudflare/db/playground"; export default handler; diff --git a/demos/plugins-demo/README.md b/demos/plugins-demo/README.md index c9ad56c..8fea09f 100644 --- a/demos/plugins-demo/README.md +++ b/demos/plugins-demo/README.md @@ -4,7 +4,7 @@ This demo showcases EmDash's plugin system with plugins that demonstrate the hoo ## Plugins Included -### 1. Audit Log Plugin (`@emdashcms/plugin-audit-log`) +### 1. Audit Log Plugin (`@emdash-cms/plugin-audit-log`) Tracks all content changes for compliance. @@ -18,7 +18,7 @@ Tracks all content changes for compliance. - Before/after state comparison - Admin history page -### 2. Webhook Notifier Plugin (`@emdashcms/plugin-webhook-notifier`) +### 2. Webhook Notifier Plugin (`@emdash-cms/plugin-webhook-notifier`) Posts JSON payloads to external webhook URLs on content/media events. @@ -29,7 +29,7 @@ Posts JSON payloads to external webhook URLs on content/media events. - SSRF protection - Delivery tracking -### 3. Embeds Plugin (`@emdashcms/plugin-embeds`) +### 3. Embeds Plugin (`@emdash-cms/plugin-embeds`) Provides Portable Text block types for embedding external content. @@ -38,7 +38,7 @@ Provides Portable Text block types for embedding external content. - Link previews (Open Graph) - GitHub Gist embeds -### 4. API Test Plugin (`@emdashcms/plugin-api-test`) +### 4. API Test Plugin (`@emdash-cms/plugin-api-test`) Exercises all v2 plugin APIs for testing. diff --git a/demos/plugins-demo/astro.config.mjs b/demos/plugins-demo/astro.config.mjs index 57fd098..d10c4d2 100644 --- a/demos/plugins-demo/astro.config.mjs +++ b/demos/plugins-demo/astro.config.mjs @@ -1,9 +1,9 @@ import node from "@astrojs/node"; import react from "@astrojs/react"; -import { apiTestPlugin } from "@emdashcms/plugin-api-test"; -import { auditLogPlugin } from "@emdashcms/plugin-audit-log"; -import { embedsPlugin } from "@emdashcms/plugin-embeds"; -import { webhookNotifierPlugin } from "@emdashcms/plugin-webhook-notifier"; +import { apiTestPlugin } from "@emdash-cms/plugin-api-test"; +import { auditLogPlugin } from "@emdash-cms/plugin-audit-log"; +import { embedsPlugin } from "@emdash-cms/plugin-embeds"; +import { webhookNotifierPlugin } from "@emdash-cms/plugin-webhook-notifier"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; import { sqlite } from "emdash/db"; diff --git a/demos/plugins-demo/package.json b/demos/plugins-demo/package.json index 9cc499d..7549d2a 100644 --- a/demos/plugins-demo/package.json +++ b/demos/plugins-demo/package.json @@ -14,10 +14,10 @@ "dependencies": { "@astrojs/node": "catalog:", "@astrojs/react": "catalog:", - "@emdashcms/plugin-audit-log": "workspace:*", - "@emdashcms/plugin-api-test": "workspace:*", - "@emdashcms/plugin-webhook-notifier": "workspace:*", - "@emdashcms/plugin-embeds": "workspace:*", + "@emdash-cms/plugin-audit-log": "workspace:*", + "@emdash-cms/plugin-api-test": "workspace:*", + "@emdash-cms/plugin-webhook-notifier": "workspace:*", + "@emdash-cms/plugin-embeds": "workspace:*", "@tanstack/react-query": "catalog:", "@tanstack/react-router": "catalog:", "astro": "catalog:", diff --git a/demos/plugins-demo/src/pages/posts/[slug].astro b/demos/plugins-demo/src/pages/posts/[slug].astro index a80c44a..0c39d26 100644 --- a/demos/plugins-demo/src/pages/posts/[slug].astro +++ b/demos/plugins-demo/src/pages/posts/[slug].astro @@ -7,7 +7,7 @@ */ import { getEmDashEntry } from "emdash"; import { PortableText } from "emdash/ui"; -import { embedComponents } from "@emdashcms/plugin-embeds/astro"; +import { embedComponents } from "@emdash-cms/plugin-embeds/astro"; const { slug } = Astro.params; diff --git a/demos/plugins-demo/src/pages/test-embeds.astro b/demos/plugins-demo/src/pages/test-embeds.astro index 367a473..cfee9e5 100644 --- a/demos/plugins-demo/src/pages/test-embeds.astro +++ b/demos/plugins-demo/src/pages/test-embeds.astro @@ -5,7 +5,7 @@ * This page renders hardcoded Portable Text with embed blocks. */ import { PortableText } from "emdash/ui"; -import { embedComponents } from "@emdashcms/plugin-embeds/astro"; +import { embedComponents } from "@emdash-cms/plugin-embeds/astro"; // Sample Portable Text content with various embed types const testContent = [ diff --git a/demos/postgres/package.json b/demos/postgres/package.json index 0705973..0406a02 100644 --- a/demos/postgres/package.json +++ b/demos/postgres/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/demo-postgres", + "name": "@emdash-cms/demo-postgres", "version": "0.0.1", "private": true, "type": "module", diff --git a/demos/preview/astro.config.mjs b/demos/preview/astro.config.mjs index 9f1ccf4..8977e06 100644 --- a/demos/preview/astro.config.mjs +++ b/demos/preview/astro.config.mjs @@ -1,6 +1,6 @@ import cloudflare from "@astrojs/cloudflare"; import react from "@astrojs/react"; -import { previewDatabase } from "@emdashcms/cloudflare"; +import { previewDatabase } from "@emdash-cms/cloudflare"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; diff --git a/demos/preview/package.json b/demos/preview/package.json index f0811a4..95e0dd3 100644 --- a/demos/preview/package.json +++ b/demos/preview/package.json @@ -1,12 +1,12 @@ { - "name": "@emdashcms/demo-preview", + "name": "@emdash-cms/demo-preview", "version": "0.0.1", "private": true, "type": "module", "scripts": { "dev": "astro dev", "build": "astro build", - "build:all": "pnpm run --filter @emdashcms/demo-preview... build", + "build:all": "pnpm run --filter @emdash-cms/demo-preview... build", "preview": "astro preview", "deploy": "pnpm build:all && wrangler deploy", "typecheck": "astro check" @@ -14,7 +14,7 @@ "dependencies": { "@astrojs/cloudflare": "catalog:", "@astrojs/react": "catalog:", - "@emdashcms/cloudflare": "workspace:*", + "@emdash-cms/cloudflare": "workspace:*", "@tanstack/react-query": "catalog:", "@tanstack/react-router": "catalog:", "astro": "catalog:", diff --git a/demos/preview/src/middleware.ts b/demos/preview/src/middleware.ts index b2e6319..8bd085d 100644 --- a/demos/preview/src/middleware.ts +++ b/demos/preview/src/middleware.ts @@ -5,7 +5,7 @@ * populates snapshots, and overrides the request-context DB. */ -import { createPreviewMiddleware } from "@emdashcms/cloudflare/db/do"; +import { createPreviewMiddleware } from "@emdash-cms/cloudflare/db/do"; import { sequence } from "astro:middleware"; const preview = createPreviewMiddleware({ diff --git a/demos/preview/src/worker.ts b/demos/preview/src/worker.ts index 5c5bb13..1f7aa4a 100644 --- a/demos/preview/src/worker.ts +++ b/demos/preview/src/worker.ts @@ -9,6 +9,6 @@ import handler from "@astrojs/cloudflare/entrypoints/server"; // Export the DO class so Cloudflare can instantiate it -export { EmDashPreviewDB } from "@emdashcms/cloudflare/db/do"; +export { EmDashPreviewDB } from "@emdash-cms/cloudflare/db/do"; export default handler; diff --git a/demos/simple/astro.config.mjs b/demos/simple/astro.config.mjs index 7700501..e84e940 100644 --- a/demos/simple/astro.config.mjs +++ b/demos/simple/astro.config.mjs @@ -1,6 +1,6 @@ import node from "@astrojs/node"; import react from "@astrojs/react"; -import { auditLogPlugin } from "@emdashcms/plugin-audit-log"; +import { auditLogPlugin } from "@emdash-cms/plugin-audit-log"; import { defineConfig } from "astro/config"; import emdash, { local } from "emdash/astro"; import { sqlite } from "emdash/db"; diff --git a/demos/simple/package.json b/demos/simple/package.json index 4441a8e..8192ec3 100644 --- a/demos/simple/package.json +++ b/demos/simple/package.json @@ -18,8 +18,8 @@ "dependencies": { "@astrojs/node": "catalog:", "@astrojs/react": "catalog:", - "@emdashcms/plugin-audit-log": "workspace:*", - "@emdashcms/plugin-color": "workspace:*", + "@emdash-cms/plugin-audit-log": "workspace:*", + "@emdash-cms/plugin-color": "workspace:*", "astro": "catalog:", "better-sqlite3": "catalog:", "emdash": "workspace:*", diff --git a/docs/src/content/docs/coming-from/astro.mdx b/docs/src/content/docs/coming-from/astro.mdx index 2514cfc..3a16c90 100644 --- a/docs/src/content/docs/coming-from/astro.mdx +++ b/docs/src/content/docs/coming-from/astro.mdx @@ -282,7 +282,7 @@ Extend EmDash with plugins that add hooks, storage, settings, and admin UI: ```ts title="astro.config.mjs" import emdash from "emdash/astro"; -import seoPlugin from "@emdashcms/plugin-seo"; +import seoPlugin from "@emdash-cms/plugin-seo"; export default defineConfig({ integrations: [ diff --git a/docs/src/content/docs/concepts/admin-panel.mdx b/docs/src/content/docs/concepts/admin-panel.mdx index 8e97480..606f851 100644 --- a/docs/src/content/docs/concepts/admin-panel.mdx +++ b/docs/src/content/docs/concepts/admin-panel.mdx @@ -204,8 +204,8 @@ Plugins can extend the admin with pages and dashboard widgets. The integration g ```ts // virtual:emdash/plugin-admins (generated) -import * as pluginAdmin0 from "@emdashcms/plugin-seo/admin"; -import * as pluginAdmin1 from "@emdashcms/plugin-analytics/admin"; +import * as pluginAdmin0 from "@emdash-cms/plugin-seo/admin"; +import * as pluginAdmin1 from "@emdash-cms/plugin-analytics/admin"; export const pluginAdmins = { seo: pluginAdmin0, @@ -218,7 +218,7 @@ export const pluginAdmins = { Plugin pages mount under `/_emdash/admin/plugins/:pluginId/*`: ```tsx -// @emdashcms/plugin-seo/src/admin.tsx +// @emdash-cms/plugin-seo/src/admin.tsx export const pages = [ { path: "settings", diff --git a/docs/src/content/docs/concepts/architecture.mdx b/docs/src/content/docs/concepts/architecture.mdx index 25d7ff2..73d39d4 100644 --- a/docs/src/content/docs/concepts/architecture.mdx +++ b/docs/src/content/docs/concepts/architecture.mdx @@ -210,7 +210,7 @@ Plugins can run in two modes: ```ts // astro.config.mjs -import { seoPlugin } from "@emdashcms/plugin-seo"; +import { seoPlugin } from "@emdash-cms/plugin-seo"; emdash({ plugins: [seoPlugin({ maxTitleLength: 60 })], diff --git a/docs/src/content/docs/contributing/index.mdx b/docs/src/content/docs/contributing/index.mdx index 5dc1177..9861e56 100644 --- a/docs/src/content/docs/contributing/index.mdx +++ b/docs/src/content/docs/contributing/index.mdx @@ -15,9 +15,9 @@ EmDash is a **pnpm monorepo** with multiple packages: emdash/ ├── packages/ │ ├── core/ # emdash — Astro integration, APIs, admin (main package) -│ ├── auth/ # @emdashcms/auth — Authentication (passkeys, OAuth, magic links) -│ ├── cloudflare/ # @emdashcms/cloudflare — Cloudflare adapter + sandbox runner -│ ├── admin/ # @emdashcms/admin — Admin React SPA +│ ├── auth/ # @emdash-cms/auth — Authentication (passkeys, OAuth, magic links) +│ ├── cloudflare/ # @emdash-cms/cloudflare — Cloudflare adapter + sandbox runner +│ ├── admin/ # @emdash-cms/admin — Admin React SPA │ ├── create-emdash/ # create-emdash — project scaffolder │ ├── gutenberg-to-portable-text/ # WordPress block → Portable Text converter │ └── plugins/ # First-party plugins (each subdirectory is its own package) @@ -279,7 +279,7 @@ Route files live in `packages/core/src/astro/routes/api/`. Follow these conventi ```ts // packages/core/src/astro/routes/api/my-resource.ts import type { APIRoute } from "astro"; -import type { User } from "@emdashcms/auth"; +import type { User } from "@emdash-cms/auth"; import { apiError, handleError } from "#api/error.js"; import { requirePerm } from "#api/authorize.js"; import { parseBody } from "#api/parse.js"; @@ -398,7 +398,7 @@ Use `import type` for type-only imports: ```ts import type { Kysely } from "kysely"; -import type { User } from "@emdashcms/auth"; +import type { User } from "@emdash-cms/auth"; ``` ### Error Handling diff --git a/docs/src/content/docs/deployment/database.mdx b/docs/src/content/docs/deployment/database.mdx index 823dd1e..00b4dee 100644 --- a/docs/src/content/docs/deployment/database.mdx +++ b/docs/src/content/docs/deployment/database.mdx @@ -84,7 +84,7 @@ D1 supports [read replication](https://developers.cloudflare.com/d1/configuratio EmDash uses the D1 Sessions API to manage this transparently. Enable it with the `session` option: ```js title="astro.config.mjs" -import { d1 } from "@emdashcms/cloudflare"; +import { d1 } from "@emdash-cms/cloudflare"; export default defineConfig({ integrations: [ diff --git a/docs/src/content/docs/guides/media-library.mdx b/docs/src/content/docs/guides/media-library.mdx index f130710..1a7dc9a 100644 --- a/docs/src/content/docs/guides/media-library.mdx +++ b/docs/src/content/docs/guides/media-library.mdx @@ -349,7 +349,7 @@ In addition to local storage, EmDash supports external media providers for speci ```js title="astro.config.mjs" import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; -import { cloudflareImages } from "@emdashcms/cloudflare"; +import { cloudflareImages } from "@emdash-cms/cloudflare"; export default defineConfig({ integrations: [ @@ -381,7 +381,7 @@ export default defineConfig({ ```js title="astro.config.mjs" import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; -import { cloudflareStream } from "@emdashcms/cloudflare"; +import { cloudflareStream } from "@emdash-cms/cloudflare"; export default defineConfig({ integrations: [ @@ -418,7 +418,7 @@ You can configure multiple providers. Each appears as a tab in the media picker: ```js title="astro.config.mjs" import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; -import { cloudflareImages, cloudflareStream } from "@emdashcms/cloudflare"; +import { cloudflareImages, cloudflareStream } from "@emdash-cms/cloudflare"; export default defineConfig({ integrations: [ diff --git a/docs/src/content/docs/guides/x402-payments.mdx b/docs/src/content/docs/guides/x402-payments.mdx index ad07a74..e499e51 100644 --- a/docs/src/content/docs/guides/x402-payments.mdx +++ b/docs/src/content/docs/guides/x402-payments.mdx @@ -5,7 +5,7 @@ description: Monetize content with the x402 payment protocol — charge bots, no import { Aside, Steps, Tabs, TabItem } from "@astrojs/starlight/components"; -The `@emdashcms/x402` package adds [x402 payment protocol](https://www.x402.org/) support to any Astro site on Cloudflare. It works standalone — no dependency on EmDash core — but pairs well with EmDash's CMS fields for per-page pricing. +The `@emdash-cms/x402` package adds [x402 payment protocol](https://www.x402.org/) support to any Astro site on Cloudflare. It works standalone — no dependency on EmDash core — but pairs well with EmDash's CMS fields for per-page pricing. x402 is an HTTP-native payment protocol. When a client requests a paid resource without payment, the server responds with `402 Payment Required` and machine-readable payment instructions. Agents and browsers that understand x402 can complete payment automatically and retry the request. @@ -20,17 +20,17 @@ You can also enforce payment for all visitors, or check for payment headers with ```bash -pnpm add @emdashcms/x402 +pnpm add @emdash-cms/x402 ``` ```bash -npm install @emdashcms/x402 +npm install @emdash-cms/x402 ``` ```bash -yarn add @emdashcms/x402 +yarn add @emdash-cms/x402 ``` @@ -41,7 +41,7 @@ Add the integration to your Astro config: ```js title="astro.config.mjs" import { defineConfig } from "astro/config"; -import { x402 } from "@emdashcms/x402"; +import { x402 } from "@emdash-cms/x402"; export default defineConfig({ integrations: [ @@ -59,7 +59,7 @@ export default defineConfig({ Add the type reference so TypeScript knows about `Astro.locals.x402`: ```ts title="src/env.d.ts" -/// +/// ``` ## Basic Usage diff --git a/docs/src/content/docs/index.mdx b/docs/src/content/docs/index.mdx index 855735b..74006e5 100644 --- a/docs/src/content/docs/index.mdx +++ b/docs/src/content/docs/index.mdx @@ -37,7 +37,7 @@ import { Card, CardGrid } from "@astrojs/starlight/components"; ```bash # Create a new EmDash site -npm create astro@latest -- --template @emdashcms/template-blog +npm create astro@latest -- --template @emdash-cms/template-blog # Start the dev server npm run dev diff --git a/docs/src/content/docs/plugins/admin-ui.mdx b/docs/src/content/docs/plugins/admin-ui.mdx index e8a4893..be75c21 100644 --- a/docs/src/content/docs/plugins/admin-ui.mdx +++ b/docs/src/content/docs/plugins/admin-ui.mdx @@ -83,7 +83,7 @@ Pages mount at `/_emdash/admin/plugins//`. ```typescript title="src/components/SettingsPage.tsx" import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function SettingsPage() { const api = usePluginAPI(); @@ -135,7 +135,7 @@ export function SettingsPage() { Use `usePluginAPI()` to call your plugin's routes: ```typescript -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; function MyComponent() { const api = usePluginAPI(); @@ -177,7 +177,7 @@ admin: { ```typescript title="src/components/SEOWidget.tsx" import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function SEOWidget() { const api = usePluginAPI(); @@ -253,7 +253,7 @@ import { Pagination, Alert, Loading -} from "@emdashcms/admin"; +} from "@emdash-cms/admin"; function SettingsPage() { return ( @@ -309,7 +309,7 @@ export default { }, format: "esm", dts: true, - external: ["react", "react-dom", "emdash", "@emdashcms/admin"] + external: ["react", "react-dom", "emdash", "@emdash-cms/admin"] }; ``` @@ -319,7 +319,7 @@ export default { entry: ["src/index.ts", "src/admin.tsx"], format: "esm", dts: true, - external: ["react", "react-dom", "emdash", "@emdashcms/admin"] + external: ["react", "react-dom", "emdash", "@emdash-cms/admin"] }; ``` diff --git a/docs/src/content/docs/plugins/api-routes.mdx b/docs/src/content/docs/plugins/api-routes.mdx index cc1d85d..6b16520 100644 --- a/docs/src/content/docs/plugins/api-routes.mdx +++ b/docs/src/content/docs/plugins/api-routes.mdx @@ -402,7 +402,7 @@ routes: { Use the `usePluginAPI()` hook in admin components: ```typescript -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; function SettingsPage() { const api = usePluginAPI(); diff --git a/docs/src/content/docs/plugins/block-kit.mdx b/docs/src/content/docs/plugins/block-kit.mdx index af74573..1f4081f 100644 --- a/docs/src/content/docs/plugins/block-kit.mdx +++ b/docs/src/content/docs/plugins/block-kit.mdx @@ -89,10 +89,10 @@ routes: { ## Builder helpers -The `@emdashcms/blocks` package exports builder helpers for cleaner code: +The `@emdash-cms/blocks` package exports builder helpers for cleaner code: ```typescript -import { blocks, elements } from "@emdashcms/blocks"; +import { blocks, elements } from "@emdash-cms/blocks"; const { header, form, section, stats } = blocks; const { textInput, toggle, select, button } = elements; diff --git a/docs/src/content/docs/plugins/creating-plugins.mdx b/docs/src/content/docs/plugins/creating-plugins.mdx index 6518728..2ec5c17 100644 --- a/docs/src/content/docs/plugins/creating-plugins.mdx +++ b/docs/src/content/docs/plugins/creating-plugins.mdx @@ -148,7 +148,7 @@ The `id` field must follow these rules: // Valid IDs "seo"; "audit-log"; -"@emdashcms/plugin-forms"; +"@emdash-cms/plugin-forms"; // Invalid IDs "MyPlugin"; // No uppercase @@ -445,7 +445,7 @@ export function myPlugin(options = {}): PluginDescriptor { Plugin block components are automatically merged into `` — site authors don't need to import anything. User-provided components take precedence over plugin defaults. diff --git a/docs/src/content/docs/plugins/installing.mdx b/docs/src/content/docs/plugins/installing.mdx index 85d7182..38101a8 100644 --- a/docs/src/content/docs/plugins/installing.mdx +++ b/docs/src/content/docs/plugins/installing.mdx @@ -102,7 +102,7 @@ For trusted plugins (your own code, or packages you install via npm), add them d ```typescript title="astro.config.mjs" import { defineConfig } from "astro/config"; import { emdash } from "emdash/astro"; -import seoPlugin from "@emdashcms/plugin-seo"; +import seoPlugin from "@emdash-cms/plugin-seo"; export default defineConfig({ integrations: [ diff --git a/docs/src/content/docs/plugins/overview.mdx b/docs/src/content/docs/plugins/overview.mdx index 42d12b2..0baf4f0 100644 --- a/docs/src/content/docs/plugins/overview.mdx +++ b/docs/src/content/docs/plugins/overview.mdx @@ -135,8 +135,8 @@ Register plugins in your Astro configuration: ```typescript title="astro.config.mjs" import { defineConfig } from "astro/config"; import { emdash } from "emdash/astro"; -import seoPlugin from "@emdashcms/plugin-seo"; -import auditLogPlugin from "@emdashcms/plugin-audit-log"; +import seoPlugin from "@emdash-cms/plugin-seo"; +import auditLogPlugin from "@emdash-cms/plugin-audit-log"; export default defineConfig({ integrations: [ diff --git a/docs/src/content/docs/plugins/publishing.mdx b/docs/src/content/docs/plugins/publishing.mdx index f583b93..dfa8825 100644 --- a/docs/src/content/docs/plugins/publishing.mdx +++ b/docs/src/content/docs/plugins/publishing.mdx @@ -67,7 +67,7 @@ The bundle command finds your code through `package.json` exports: | Export | Purpose | Built as | | ------------ | ------- | -------- | -| `"."` | Main entry — used to extract the manifest | Externals: `emdash`, `@emdashcms/*` | +| `"."` | Main entry — used to extract the manifest | Externals: `emdash`, `@emdash-cms/*` | | `"./sandbox"` | Backend code that runs in the sandbox | Fully self-contained (no externals) | | `"./admin"` | Admin UI components | Fully self-contained | diff --git a/docs/src/content/docs/plugins/sandbox.mdx b/docs/src/content/docs/plugins/sandbox.mdx index acbd893..5587749 100644 --- a/docs/src/content/docs/plugins/sandbox.mdx +++ b/docs/src/content/docs/plugins/sandbox.mdx @@ -23,7 +23,7 @@ EmDash supports running plugins in two execution modes: **trusted** and **sandbo Trusted plugins run in the same process as your Astro site. They are loaded from npm packages or local files and configured in `astro.config.mjs`: ```typescript title="astro.config.mjs" -import myPlugin from "@emdashcms/plugin-analytics"; +import myPlugin from "@emdash-cms/plugin-analytics"; export default defineConfig({ integrations: [ @@ -54,7 +54,7 @@ To enable sandboxing, configure the sandbox runner in your Astro config: export default defineConfig({ integrations: [ emdash({ - sandboxRunner: "@emdashcms/cloudflare/sandbox", + sandboxRunner: "@emdash-cms/cloudflare/sandbox", sandboxed: [ { manifest: seoPluginManifest, diff --git a/docs/src/content/docs/reference/configuration.mdx b/docs/src/content/docs/reference/configuration.mdx index 3d0e012..dbe1e43 100644 --- a/docs/src/content/docs/reference/configuration.mdx +++ b/docs/src/content/docs/reference/configuration.mdx @@ -49,7 +49,7 @@ database: libsql({ authToken: process.env.LIBSQL_AUTH_TOKEN, }); -// Cloudflare D1 (import from @emdashcms/cloudflare) +// Cloudflare D1 (import from @emdash-cms/cloudflare) database: d1({ binding: "DB" }); ``` @@ -90,7 +90,7 @@ See [Storage Options](/deployment/storage/) for details. **Optional.** Array of EmDash plugins. ```js -import seoPlugin from "@emdashcms/plugin-seo"; +import seoPlugin from "@emdash-cms/plugin-seo"; plugins: [seoPlugin()]; ``` @@ -258,7 +258,7 @@ postgres({ connectionString: process.env.DATABASE_URL }); ### `d1(config)` -Cloudflare D1 database. Import from `@emdashcms/cloudflare`. +Cloudflare D1 database. Import from `@emdash-cms/cloudflare`. | Option | Type | Default | Description | | ---------------- | -------- | -------------------- | --------------------------------------------------- | @@ -417,7 +417,7 @@ EmDash generates types in `.emdash/types.ts`. Add to your `tsconfig.json`: { "compilerOptions": { "paths": { - "@emdashcms/types": ["./.emdash/types.ts"] + "@emdash-cms/types": ["./.emdash/types.ts"] } } } diff --git a/docs/src/content/docs/themes/overview.mdx b/docs/src/content/docs/themes/overview.mdx index 6dd6573..e30af76 100644 --- a/docs/src/content/docs/themes/overview.mdx +++ b/docs/src/content/docs/themes/overview.mdx @@ -64,7 +64,7 @@ When you create a site from a theme, this happens: Use `create-astro` with a template: ```bash -npm create astro@latest -- --template @emdashcms/template-blog +npm create astro@latest -- --template @emdash-cms/template-blog ``` Community themes work via GitHub: @@ -125,18 +125,18 @@ EmDash provides official starter themes, each available in local (SQLite + files | Theme | Description | Use Case | | ----- | ----------- | -------- | -| `@emdashcms/template-blog` | Minimal blog with posts, pages, categories, and dark mode | Personal blogs, simple sites | -| `@emdashcms/template-portfolio` | Editorial-style portfolio with projects, serif typography (Playfair Display), and image-focused layouts | Freelancers, agencies, creatives | -| `@emdashcms/template-marketing` | Bold marketing site with custom Portable Text blocks (hero, features, testimonials, pricing, FAQ) | Landing pages, SaaS sites, product marketing | +| `@emdash-cms/template-blog` | Minimal blog with posts, pages, categories, and dark mode | Personal blogs, simple sites | +| `@emdash-cms/template-portfolio` | Editorial-style portfolio with projects, serif typography (Playfair Display), and image-focused layouts | Freelancers, agencies, creatives | +| `@emdash-cms/template-marketing` | Bold marketing site with custom Portable Text blocks (hero, features, testimonials, pricing, FAQ) | Landing pages, SaaS sites, product marketing | ### Cloudflare Variants For deployment on Cloudflare Pages with D1 and R2, append `-cloudflare` to the template name: ```bash -npm create astro@latest -- --template @emdashcms/template-blog-cloudflare -npm create astro@latest -- --template @emdashcms/template-portfolio-cloudflare -npm create astro@latest -- --template @emdashcms/template-marketing-cloudflare +npm create astro@latest -- --template @emdash-cms/template-blog-cloudflare +npm create astro@latest -- --template @emdash-cms/template-portfolio-cloudflare +npm create astro@latest -- --template @emdash-cms/template-marketing-cloudflare ``` These variants include `wrangler.jsonc` for deployment configuration. diff --git a/e2e/fixture/astro.config.mjs b/e2e/fixture/astro.config.mjs index a4cfd9a..57f2919 100644 --- a/e2e/fixture/astro.config.mjs +++ b/e2e/fixture/astro.config.mjs @@ -6,7 +6,7 @@ */ import node from "@astrojs/node"; import react from "@astrojs/react"; -import { colorPlugin } from "@emdashcms/plugin-color"; +import { colorPlugin } from "@emdash-cms/plugin-color"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; import { sqlite } from "emdash/db"; diff --git a/e2e/fixture/package.json b/e2e/fixture/package.json index 3fb8ac2..8cffc3c 100644 --- a/e2e/fixture/package.json +++ b/e2e/fixture/package.json @@ -5,8 +5,8 @@ "dependencies": { "@astrojs/node": "catalog:", "@astrojs/react": "catalog:", - "@emdashcms/auth": "workspace:*", - "@emdashcms/plugin-color": "workspace:*", + "@emdash-cms/auth": "workspace:*", + "@emdash-cms/plugin-color": "workspace:*", "astro": "catalog:", "better-sqlite3": "catalog:", "emdash": "workspace:*", diff --git a/e2e/global-setup.ts b/e2e/global-setup.ts index 7d23ed9..3fbedd9 100644 --- a/e2e/global-setup.ts +++ b/e2e/global-setup.ts @@ -41,7 +41,7 @@ async function ensureBuilt(): Promise { /** * Ensure all e2e fixture dependencies are built. * The CI build filter (--filter emdash...) only builds emdash and its deps, - * not the fixture's plugin dependencies like @emdashcms/plugin-color. + * not the fixture's plugin dependencies like @emdash-cms/plugin-color. */ async function ensureFixtureDepsBuilt(): Promise { const colorDist = join(ROOT, "packages/plugins/color/dist/index.mjs"); diff --git a/package.json b/package.json index 9237897..fc051e7 100644 --- a/package.json +++ b/package.json @@ -6,12 +6,12 @@ "description": "Agent-portable reimplementation of WordPress on Astro", "scripts": { "typecheck": "pnpm run --filter './packages/**' typecheck", - "typecheck:demos": "pnpm run --workspace-concurrency=1 --filter './demos/*' --filter '!@emdashcms/demo-cloudflare' typecheck", + "typecheck:demos": "pnpm run --workspace-concurrency=1 --filter './demos/*' --filter '!@emdash-cms/demo-cloudflare' typecheck", "typecheck:templates": "pnpm run --workspace-concurrency=1 --filter './templates/*' typecheck", "check": "pnpm run typecheck && pnpm run --filter './packages/*' check", "test": "pnpm run --filter './packages/*' test", - "test:unit": "pnpm run --filter emdash --filter @emdashcms/auth --filter @emdashcms/blocks --filter @emdashcms/gutenberg-to-portable-text --filter @emdashcms/marketplace test", - "test:browser": "pnpm run --filter @emdashcms/admin test", + "test:unit": "pnpm run --filter emdash --filter @emdash-cms/auth --filter @emdash-cms/blocks --filter @emdash-cms/gutenberg-to-portable-text --filter @emdash-cms/marketplace test", + "test:browser": "pnpm run --filter @emdash-cms/admin test", "test:e2e": "playwright test", "test:e2e:ui": "playwright test --ui", "build": "pnpm run --filter './packages/**' build", diff --git a/packages/admin/package.json b/packages/admin/package.json index ae4becf..fb83a44 100644 --- a/packages/admin/package.json +++ b/packages/admin/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/admin", + "name": "@emdash-cms/admin", "version": "0.0.0", "description": "Admin UI for EmDash CMS", "type": "module", @@ -27,7 +27,7 @@ "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", - "@emdashcms/blocks": "workspace:*", + "@emdash-cms/blocks": "workspace:*", "@floating-ui/react": "^0.27.16", "@phosphor-icons/react": "catalog:", "@tanstack/react-query": "catalog:", diff --git a/packages/admin/src/components/AdminCommandPalette.tsx b/packages/admin/src/components/AdminCommandPalette.tsx index 0e24c64..3ccf5b7 100644 --- a/packages/admin/src/components/AdminCommandPalette.tsx +++ b/packages/admin/src/components/AdminCommandPalette.tsx @@ -28,7 +28,7 @@ import { useHotkeys } from "react-hotkeys-hook"; import { apiFetch } from "../lib/api/client"; import { useCurrentUser } from "../lib/api/current-user"; -// Role levels (matching @emdashcms/auth) +// Role levels (matching @emdash-cms/auth) const ROLE_ADMIN = 50; const ROLE_EDITOR = 40; diff --git a/packages/admin/src/components/BlockKitFieldWidget.tsx b/packages/admin/src/components/BlockKitFieldWidget.tsx index a12c4f5..eb8e242 100644 --- a/packages/admin/src/components/BlockKitFieldWidget.tsx +++ b/packages/admin/src/components/BlockKitFieldWidget.tsx @@ -1,5 +1,5 @@ import { Input, Switch } from "@cloudflare/kumo"; -import type { Element } from "@emdashcms/blocks"; +import type { Element } from "@emdash-cms/blocks"; import * as React from "react"; interface BlockKitFieldWidgetProps { diff --git a/packages/admin/src/components/ContentEditor.tsx b/packages/admin/src/components/ContentEditor.tsx index 24759b2..d7ddf01 100644 --- a/packages/admin/src/components/ContentEditor.tsx +++ b/packages/admin/src/components/ContentEditor.tsx @@ -69,7 +69,7 @@ import { SaveButton } from "./SaveButton"; import { SeoPanel } from "./SeoPanel"; import { TaxonomySidebar } from "./TaxonomySidebar"; -// Editor role level (40) from @emdashcms/auth +// Editor role level (40) from @emdash-cms/auth const ROLE_EDITOR = 40; export interface FieldDescriptor { diff --git a/packages/admin/src/components/PortableTextEditor.tsx b/packages/admin/src/components/PortableTextEditor.tsx index 6100ca4..536297d 100644 --- a/packages/admin/src/components/PortableTextEditor.tsx +++ b/packages/admin/src/components/PortableTextEditor.tsx @@ -41,7 +41,7 @@ import { type Icon, } from "@phosphor-icons/react"; import { X } from "@phosphor-icons/react"; -import type { Element } from "@emdashcms/blocks"; +import type { Element } from "@emdash-cms/blocks"; import { Extension, type Range } from "@tiptap/core"; import CharacterCount from "@tiptap/extension-character-count"; import Focus from "@tiptap/extension-focus"; diff --git a/packages/admin/src/components/SandboxedPluginPage.tsx b/packages/admin/src/components/SandboxedPluginPage.tsx index 39e79d8..588da73 100644 --- a/packages/admin/src/components/SandboxedPluginPage.tsx +++ b/packages/admin/src/components/SandboxedPluginPage.tsx @@ -6,8 +6,8 @@ */ import { CircleNotch, WarningCircle } from "@phosphor-icons/react"; -import { BlockRenderer } from "@emdashcms/blocks"; -import type { Block, BlockInteraction, BlockResponse } from "@emdashcms/blocks"; +import { BlockRenderer } from "@emdash-cms/blocks"; +import type { Block, BlockInteraction, BlockResponse } from "@emdash-cms/blocks"; import { useCallback, useEffect, useState } from "react"; import { apiFetch, API_BASE } from "../lib/api/client.js"; diff --git a/packages/admin/src/components/SandboxedPluginWidget.tsx b/packages/admin/src/components/SandboxedPluginWidget.tsx index 271eae7..1e105fa 100644 --- a/packages/admin/src/components/SandboxedPluginWidget.tsx +++ b/packages/admin/src/components/SandboxedPluginWidget.tsx @@ -6,8 +6,8 @@ */ import { CircleNotch } from "@phosphor-icons/react"; -import { BlockRenderer } from "@emdashcms/blocks"; -import type { Block, BlockInteraction, BlockResponse } from "@emdashcms/blocks"; +import { BlockRenderer } from "@emdash-cms/blocks"; +import type { Block, BlockInteraction, BlockResponse } from "@emdash-cms/blocks"; import { useCallback, useEffect, useState } from "react"; import { apiFetch, API_BASE } from "../lib/api/client.js"; diff --git a/packages/admin/src/components/Sidebar.tsx b/packages/admin/src/components/Sidebar.tsx index 92d2841..2e9ac77 100644 --- a/packages/admin/src/components/Sidebar.tsx +++ b/packages/admin/src/components/Sidebar.tsx @@ -28,7 +28,7 @@ import { cn } from "../lib/utils"; // Re-export for Shell.tsx and Header.tsx export { KumoSidebar as Sidebar, useSidebar }; -// Role levels (matching @emdashcms/auth) +// Role levels (matching @emdash-cms/auth) const ROLE_ADMIN = 50; const ROLE_EDITOR = 40; diff --git a/packages/admin/src/components/editor/PluginBlockNode.tsx b/packages/admin/src/components/editor/PluginBlockNode.tsx index fad31bf..8f9eb64 100644 --- a/packages/admin/src/components/editor/PluginBlockNode.tsx +++ b/packages/admin/src/components/editor/PluginBlockNode.tsx @@ -24,7 +24,7 @@ import { Cube, ListBullets, } from "@phosphor-icons/react"; -import type { Element } from "@emdashcms/blocks"; +import type { Element } from "@emdash-cms/blocks"; import { Node, mergeAttributes } from "@tiptap/core"; import type { NodeViewProps } from "@tiptap/react"; import { ReactNodeViewRenderer, NodeViewWrapper } from "@tiptap/react"; diff --git a/packages/admin/src/lib/api/client.ts b/packages/admin/src/lib/api/client.ts index fd4798a..721b113 100644 --- a/packages/admin/src/lib/api/client.ts +++ b/packages/admin/src/lib/api/client.ts @@ -2,7 +2,7 @@ * Base API client configuration and shared types */ -import type { Element } from "@emdashcms/blocks"; +import type { Element } from "@emdash-cms/blocks"; export const API_BASE = "/_emdash/api"; @@ -72,7 +72,7 @@ export interface AdminManifest { { name?: string; version?: string; - /** Package name for dynamic import (e.g., "@emdashcms/plugin-audit-log") */ + /** Package name for dynamic import (e.g., "@emdash-cms/plugin-audit-log") */ package?: string; /** Whether the plugin is enabled */ enabled?: boolean; @@ -97,7 +97,7 @@ export interface AdminManifest { name: string; label: string; fieldTypes: string[]; - elements?: import("@emdashcms/blocks").Element[]; + elements?: import("@emdash-cms/blocks").Element[]; }>; /** Block types for Portable Text editor */ portableTextBlocks?: Array<{ diff --git a/packages/admin/src/router.tsx b/packages/admin/src/router.tsx index ddf64f8..bf82584 100644 --- a/packages/admin/src/router.tsx +++ b/packages/admin/src/router.tsx @@ -469,7 +469,7 @@ const contentEditRoute = createRoute({ component: ContentEditPage, }); -// Editor role level from @emdashcms/auth +// Editor role level from @emdash-cms/auth const ROLE_EDITOR = 40; function ContentEditPage() { @@ -889,7 +889,7 @@ const commentsRoute = createRoute({ component: CommentsPage, }); -// Admin role level from @emdashcms/auth +// Admin role level from @emdash-cms/auth const ROLE_ADMIN = 50; function CommentsPage() { diff --git a/packages/auth/package.json b/packages/auth/package.json index 5f00ba8..4a739c3 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/auth", + "name": "@emdash-cms/auth", "version": "0.0.0", "description": "Passkey-first authentication for EmDash", "type": "module", diff --git a/packages/auth/src/adapters/kysely.ts b/packages/auth/src/adapters/kysely.ts index d278946..24d3207 100644 --- a/packages/auth/src/adapters/kysely.ts +++ b/packages/auth/src/adapters/kysely.ts @@ -1,5 +1,5 @@ /** - * Kysely database adapter for @emdashcms/auth + * Kysely database adapter for @emdash-cms/auth */ import type { Kysely, Insertable, Selectable, Updateable } from "kysely"; diff --git a/packages/auth/src/config.ts b/packages/auth/src/config.ts index b979a43..1d930ec 100644 --- a/packages/auth/src/config.ts +++ b/packages/auth/src/config.ts @@ -1,5 +1,5 @@ /** - * Configuration schema for @emdashcms/auth + * Configuration schema for @emdash-cms/auth */ import { z } from "zod"; diff --git a/packages/auth/src/index.ts b/packages/auth/src/index.ts index 9c2a6af..9c39814 100644 --- a/packages/auth/src/index.ts +++ b/packages/auth/src/index.ts @@ -1,5 +1,5 @@ /** - * @emdashcms/auth - Passkey-first authentication for EmDash + * @emdash-cms/auth - Passkey-first authentication for EmDash * * Email is now handled by the plugin email pipeline (see PLUGIN-EMAIL.md). * Auth functions accept an optional `email` send function instead of a @@ -8,7 +8,7 @@ * * @example * ```ts - * import { auth } from '@emdashcms/auth' + * import { auth } from '@emdash-cms/auth' * * export default defineConfig({ * integrations: [ diff --git a/packages/auth/src/types.ts b/packages/auth/src/types.ts index c9c26a3..0cd2c46 100644 --- a/packages/auth/src/types.ts +++ b/packages/auth/src/types.ts @@ -1,5 +1,5 @@ /** - * Core types for @emdashcms/auth + * Core types for @emdash-cms/auth */ // ============================================================================ diff --git a/packages/blocks/package.json b/packages/blocks/package.json index eb1fb99..e0c6444 100644 --- a/packages/blocks/package.json +++ b/packages/blocks/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/blocks", + "name": "@emdash-cms/blocks", "version": "0.0.0", "description": "Declarative plugin UI blocks for EmDash CMS", "type": "module", diff --git a/packages/blocks/playground/package.json b/packages/blocks/playground/package.json index 76240f6..5959e0b 100644 --- a/packages/blocks/playground/package.json +++ b/packages/blocks/playground/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/blocks-playground", + "name": "@emdash-cms/blocks-playground", "version": "0.0.0", "private": true, "type": "module", @@ -9,7 +9,7 @@ "preview": "vite preview" }, "dependencies": { - "@emdashcms/blocks": "workspace:*", + "@emdash-cms/blocks": "workspace:*", "@cloudflare/kumo": "^1.1.0", "@phosphor-icons/react": "catalog:", "react": "catalog:", diff --git a/packages/blocks/playground/src/Playground.tsx b/packages/blocks/playground/src/Playground.tsx index 82d3ecc..4bf052b 100644 --- a/packages/blocks/playground/src/Playground.tsx +++ b/packages/blocks/playground/src/Playground.tsx @@ -1,6 +1,6 @@ import { Sun, Moon, Share, Check, Trash, CaretDown, Warning, Plus } from "@phosphor-icons/react"; -import { BlockRenderer, validateBlocks } from "@emdashcms/blocks"; -import type { Block, BlockInteraction } from "@emdashcms/blocks"; +import { BlockRenderer, validateBlocks } from "@emdash-cms/blocks"; +import type { Block, BlockInteraction } from "@emdash-cms/blocks"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { blockCatalog } from "./block-defaults"; diff --git a/packages/blocks/playground/src/block-defaults.ts b/packages/blocks/playground/src/block-defaults.ts index 0b1bace..ea607a6 100644 --- a/packages/blocks/playground/src/block-defaults.ts +++ b/packages/blocks/playground/src/block-defaults.ts @@ -1,4 +1,4 @@ -import type { Block } from "@emdashcms/blocks"; +import type { Block } from "@emdash-cms/blocks"; interface BlockCatalogEntry { type: Block["type"]; diff --git a/packages/blocks/playground/src/templates.ts b/packages/blocks/playground/src/templates.ts index ff3ddd2..7f6de91 100644 --- a/packages/blocks/playground/src/templates.ts +++ b/packages/blocks/playground/src/templates.ts @@ -1,4 +1,4 @@ -import type { Block, ChartSeries } from "@emdashcms/blocks"; +import type { Block, ChartSeries } from "@emdash-cms/blocks"; export interface Template { name: string; @@ -508,7 +508,7 @@ export const templates: Template[] = [ }, { type: "code", - code: 'import { blocks } from "@emdashcms/blocks";\n\nconst page = [\n\tblocks.header("Hello"),\n\tblocks.section("Welcome to EmDash."),\n];', + code: 'import { blocks } from "@emdash-cms/blocks";\n\nconst page = [\n\tblocks.header("Hello"),\n\tblocks.section("Welcome to EmDash."),\n];', language: "ts", }, { type: "divider" }, diff --git a/packages/blocks/playground/vite.config.ts b/packages/blocks/playground/vite.config.ts index 6dff4fd..79faa3b 100644 --- a/packages/blocks/playground/vite.config.ts +++ b/packages/blocks/playground/vite.config.ts @@ -6,8 +6,8 @@ export default defineConfig({ plugins: [react(), tailwindcss()], resolve: { alias: { - // Resolve @emdashcms/blocks from source for HMR - "@emdashcms/blocks": new URL("../src/index.ts", import.meta.url).pathname, + // Resolve @emdash-cms/blocks from source for HMR + "@emdash-cms/blocks": new URL("../src/index.ts", import.meta.url).pathname, }, }, }); diff --git a/packages/blocks/src/server.ts b/packages/blocks/src/server.ts index 47bdb90..a0f1698 100644 --- a/packages/blocks/src/server.ts +++ b/packages/blocks/src/server.ts @@ -1,5 +1,5 @@ /** - * Server-safe exports for @emdashcms/blocks. + * Server-safe exports for @emdash-cms/blocks. * * Use this entry point in plugin route handlers and other server-side code * that doesn't have React available. Provides builders, validation, and types diff --git a/packages/cloudflare/package.json b/packages/cloudflare/package.json index 54fa361..cc3d7a6 100644 --- a/packages/cloudflare/package.json +++ b/packages/cloudflare/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/cloudflare", + "name": "@emdash-cms/cloudflare", "version": "0.0.0", "description": "Cloudflare adapters for EmDash - D1, R2, Access, and Worker Loader sandbox", "type": "module", diff --git a/packages/cloudflare/src/auth/index.ts b/packages/cloudflare/src/auth/index.ts index 06af791..69cee15 100644 --- a/packages/cloudflare/src/auth/index.ts +++ b/packages/cloudflare/src/auth/index.ts @@ -4,7 +4,7 @@ * This module is loaded at runtime when authenticating requests. * It exports the `authenticate` function required by the auth provider interface. * - * For config-time usage, import { access } from "@emdashcms/cloudflare" instead. + * For config-time usage, import { access } from "@emdash-cms/cloudflare" instead. */ export { authenticate } from "./cloudflare-access.js"; diff --git a/packages/cloudflare/src/cache/config.ts b/packages/cloudflare/src/cache/config.ts index 0d94138..053d123 100644 --- a/packages/cloudflare/src/cache/config.ts +++ b/packages/cloudflare/src/cache/config.ts @@ -4,7 +4,7 @@ * This is the config-time helper. Import it in your astro.config.mjs: * * ```ts - * import { cloudflareCache } from "@emdashcms/cloudflare"; + * import { cloudflareCache } from "@emdash-cms/cloudflare"; * * export default defineConfig({ * experimental: { @@ -49,7 +49,7 @@ export type { CloudflareCacheConfig }; * ```ts * import { defineConfig } from "astro/config"; * import cloudflare from "@astrojs/cloudflare"; - * import { cloudflareCache } from "@emdashcms/cloudflare"; + * import { cloudflareCache } from "@emdash-cms/cloudflare"; * * export default defineConfig({ * adapter: cloudflare(), @@ -75,7 +75,7 @@ export function cloudflareCache( ): CacheProviderConfig { return { // Resolved by Vite/Astro at build time — points to the runtime module - entrypoint: "@emdashcms/cloudflare/cache", + entrypoint: "@emdash-cms/cloudflare/cache", config, }; } diff --git a/packages/cloudflare/src/cache/runtime.ts b/packages/cloudflare/src/cache/runtime.ts index 927b416..0d3bd2c 100644 --- a/packages/cloudflare/src/cache/runtime.ts +++ b/packages/cloudflare/src/cache/runtime.ts @@ -15,7 +15,7 @@ * headers from the response that next() returns. * * Do NOT import this at config time. Use cloudflareCache() from - * "@emdashcms/cloudflare" or "@emdashcms/cloudflare/cache/config" instead. + * "@emdash-cms/cloudflare" or "@emdash-cms/cloudflare/cache/config" instead. */ import type { CacheProviderFactory } from "astro"; @@ -41,7 +41,7 @@ const SWR_REGEX = /stale-while-revalidate=(\d+)/; /** Internal headers to strip before returning responses to the client */ const INTERNAL_HEADERS = [STORED_AT_HEADER, MAX_AGE_HEADER, SWR_HEADER]; -/** Default D1 bookmark cookie name (from @emdashcms/cloudflare d1 config) */ +/** Default D1 bookmark cookie name (from @emdash-cms/cloudflare d1 config) */ const DEFAULT_BOOKMARK_COOKIE = "__ec_d1_bookmark"; export interface CloudflareCacheConfig { diff --git a/packages/cloudflare/src/db/d1.ts b/packages/cloudflare/src/db/d1.ts index 83f03ab..4ef0e89 100644 --- a/packages/cloudflare/src/db/d1.ts +++ b/packages/cloudflare/src/db/d1.ts @@ -5,7 +5,7 @@ * Loaded at runtime via virtual module when database queries are needed. * * This module imports directly from cloudflare:workers to access the D1 binding. - * Do NOT import this at config time - use { d1 } from "@emdashcms/cloudflare" instead. + * Do NOT import this at config time - use { d1 } from "@emdash-cms/cloudflare" instead. */ import { env } from "cloudflare:workers"; diff --git a/packages/cloudflare/src/db/do-preview.ts b/packages/cloudflare/src/db/do-preview.ts index dc69fff..6a9b0be 100644 --- a/packages/cloudflare/src/db/do-preview.ts +++ b/packages/cloudflare/src/db/do-preview.ts @@ -11,7 +11,7 @@ * @example * ```ts * // src/middleware.ts (in the preview Worker) - * import { createPreviewMiddleware } from "@emdashcms/cloudflare/db/do"; + * import { createPreviewMiddleware } from "@emdash-cms/cloudflare/db/do"; * * export const onRequest = createPreviewMiddleware({ * binding: "PREVIEW_DB", diff --git a/packages/cloudflare/src/db/playground-middleware.ts b/packages/cloudflare/src/db/playground-middleware.ts index 00885aa..e56b552 100644 --- a/packages/cloudflare/src/db/playground-middleware.ts +++ b/packages/cloudflare/src/db/playground-middleware.ts @@ -320,7 +320,7 @@ export const onRequest = defineMiddleware(async (context, next) => { // Stash the DO database and user on locals so downstream middleware // (runtime init, request-context) can use them. We can't use ALS directly - // because this middleware is in @emdashcms/cloudflare and resolves to a + // because this middleware is in @emdash-cms/cloudflare and resolves to a // different AsyncLocalStorage instance than the emdash core package // (workerd loads dist modules separately from Vite's source modules). // The request-context middleware (same module context as the loader) diff --git a/packages/cloudflare/src/index.ts b/packages/cloudflare/src/index.ts index 08fdb6f..3fcb108 100644 --- a/packages/cloudflare/src/index.ts +++ b/packages/cloudflare/src/index.ts @@ -1,5 +1,5 @@ /** - * @emdashcms/cloudflare + * @emdash-cms/cloudflare * * Cloudflare adapters for EmDash: * - D1 database adapter @@ -12,13 +12,13 @@ * * For runtime exports (PluginBridge, authenticate), import from the specific * runtime entrypoints: - * - @emdashcms/cloudflare/sandbox (PluginBridge, createSandboxRunner) - * - @emdashcms/cloudflare/auth (authenticate) + * - @emdash-cms/cloudflare/sandbox (PluginBridge, createSandboxRunner) + * - @emdash-cms/cloudflare/auth (authenticate) * * @example * ```ts * import emdash from "emdash/astro"; - * import { d1, r2, access, sandbox } from "@emdashcms/cloudflare"; + * import { d1, r2, access, sandbox } from "@emdash-cms/cloudflare"; * * export default defineConfig({ * integrations: [ @@ -160,7 +160,7 @@ export interface AccessConfig { */ export function d1(config: D1Config): DatabaseDescriptor { return { - entrypoint: "@emdashcms/cloudflare/db/d1", + entrypoint: "@emdash-cms/cloudflare/db/d1", config, type: "sqlite", }; @@ -183,7 +183,7 @@ export type { PreviewDOConfig } from "./db/do-types.js"; */ export function previewDatabase(config: PreviewDOConfig): DatabaseDescriptor { return { - entrypoint: "@emdashcms/cloudflare/db/do", + entrypoint: "@emdash-cms/cloudflare/db/do", config, type: "sqlite", }; @@ -205,7 +205,7 @@ export function previewDatabase(config: PreviewDOConfig): DatabaseDescriptor { */ export function playgroundDatabase(config: PreviewDOConfig): DatabaseDescriptor { return { - entrypoint: "@emdashcms/cloudflare/db/playground", + entrypoint: "@emdash-cms/cloudflare/db/playground", config, type: "sqlite", }; @@ -231,7 +231,7 @@ export function playgroundDatabase(config: PreviewDOConfig): DatabaseDescriptor */ export function r2(config: R2StorageConfig): StorageDescriptor { return { - entrypoint: "@emdashcms/cloudflare/storage/r2", + entrypoint: "@emdash-cms/cloudflare/storage/r2", config: { binding: config.binding, publicUrl: config.publicUrl }, }; } @@ -257,7 +257,7 @@ export function r2(config: R2StorageConfig): StorageDescriptor { export function access(config: AccessConfig): AuthDescriptor { return { type: "cloudflare-access", - entrypoint: "@emdashcms/cloudflare/auth", + entrypoint: "@emdash-cms/cloudflare/auth", config, }; } @@ -274,7 +274,7 @@ export function access(config: AccessConfig): AuthDescriptor { * ``` */ export function sandbox(): string { - return "@emdashcms/cloudflare/sandbox"; + return "@emdash-cms/cloudflare/sandbox"; } // Re-export media providers (config-time) diff --git a/packages/cloudflare/src/media/images.ts b/packages/cloudflare/src/media/images.ts index a6c5577..82dadfe 100644 --- a/packages/cloudflare/src/media/images.ts +++ b/packages/cloudflare/src/media/images.ts @@ -79,7 +79,7 @@ const IMAGES_ICON = `data:image/svg+xml,${encodeURIComponent(' { it("returns a sqlite DatabaseDescriptor with the DO entrypoint", () => { const result = previewDatabase({ binding: "PREVIEW_DB" }); expect(result).toEqual({ - entrypoint: "@emdashcms/cloudflare/db/do", + entrypoint: "@emdash-cms/cloudflare/db/do", config: { binding: "PREVIEW_DB" }, type: "sqlite", }); @@ -22,7 +22,7 @@ describe("playgroundDatabase()", () => { it("returns a sqlite DatabaseDescriptor with the playground entrypoint", () => { const result = playgroundDatabase({ binding: "PLAYGROUND_DB" }); expect(result).toEqual({ - entrypoint: "@emdashcms/cloudflare/db/playground", + entrypoint: "@emdash-cms/cloudflare/db/playground", config: { binding: "PLAYGROUND_DB" }, type: "sqlite", }); diff --git a/packages/core/locals.d.ts b/packages/core/locals.d.ts index e6b4e69..c934865 100644 --- a/packages/core/locals.d.ts +++ b/packages/core/locals.d.ts @@ -5,7 +5,7 @@ * Referenced via triple-slash directive in the generated emdash-env.d.ts. */ -import type { User } from "@emdashcms/auth"; +import type { User } from "@emdash-cms/auth"; import type { EmDashHandlers, EmDashManifest } from "./dist/types.d.mts"; @@ -30,7 +30,7 @@ declare global { /** * Per-session Durable Object database for playground mode. * - * Set by the playground middleware (@emdashcms/cloudflare). Read by + * Set by the playground middleware (@emdash-cms/cloudflare). Read by * the runtime middleware and request-context middleware to set the * database in ALS for the current request. * diff --git a/packages/core/package.json b/packages/core/package.json index 39d30ab..8436daf 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -152,9 +152,9 @@ "test": "vitest" }, "dependencies": { - "@emdashcms/admin": "workspace:*", - "@emdashcms/auth": "workspace:*", - "@emdashcms/gutenberg-to-portable-text": "workspace:*", + "@emdash-cms/admin": "workspace:*", + "@emdash-cms/auth": "workspace:*", + "@emdash-cms/gutenberg-to-portable-text": "workspace:*", "@floating-ui/react": "^0.27.16", "@modelcontextprotocol/sdk": "^1.26.0", "@portabletext/toolkit": "^5.0.1", @@ -205,7 +205,7 @@ "devDependencies": { "@apidevtools/swagger-parser": "^12.1.0", "@arethetypeswrong/cli": "catalog:", - "@emdashcms/blocks": "workspace:*", + "@emdash-cms/blocks": "workspace:*", "@types/better-sqlite3": "^7.6.12", "@types/pg": "^8.16.0", "@types/sanitize-html": "^2.16.0", diff --git a/packages/core/src/api/authorize.ts b/packages/core/src/api/authorize.ts index 52df2f6..baea83d 100644 --- a/packages/core/src/api/authorize.ts +++ b/packages/core/src/api/authorize.ts @@ -1,12 +1,12 @@ /** * Authorization helpers for API routes * - * Thin wrappers around @emdashcms/auth RBAC that return HTTP responses. + * Thin wrappers around @emdash-cms/auth RBAC that return HTTP responses. * Auth middleware handles authentication; these handle authorization. */ -import type { Permission, RoleLevel } from "@emdashcms/auth"; -import { hasPermission, canActOnOwn } from "@emdashcms/auth"; +import type { Permission, RoleLevel } from "@emdash-cms/auth"; +import { hasPermission, canActOnOwn } from "@emdash-cms/auth"; import { apiError } from "./error.js"; diff --git a/packages/core/src/api/handlers/device-flow.ts b/packages/core/src/api/handlers/device-flow.ts index 90e1978..7ae2868 100644 --- a/packages/core/src/api/handlers/device-flow.ts +++ b/packages/core/src/api/handlers/device-flow.ts @@ -6,11 +6,11 @@ * The user opens a browser, logs in, enters the code, and the CLI gets * an access + refresh token pair. * - * Uses arctic for code generation and @emdashcms/auth for token utilities. + * Uses arctic for code generation and @emdash-cms/auth for token utilities. */ -import { clampScopes } from "@emdashcms/auth"; -import type { RoleLevel } from "@emdashcms/auth"; +import { clampScopes } from "@emdash-cms/auth"; +import type { RoleLevel } from "@emdash-cms/auth"; import { generateCodeVerifier } from "arctic"; import type { Kysely } from "kysely"; diff --git a/packages/core/src/api/handlers/oauth-authorization.ts b/packages/core/src/api/handlers/oauth-authorization.ts index bd9cddc..c619e44 100644 --- a/packages/core/src/api/handlers/oauth-authorization.ts +++ b/packages/core/src/api/handlers/oauth-authorization.ts @@ -4,12 +4,12 @@ * Implements the server side of the authorization code grant for MCP clients * (Claude Desktop, VS Code, etc.) per the MCP authorization spec (draft). * - * Uses arctic for PKCE challenge generation and @emdashcms/auth for token + * Uses arctic for PKCE challenge generation and @emdash-cms/auth for token * utilities. Token infrastructure is shared with the device flow. */ -import { clampScopes, computeS256Challenge } from "@emdashcms/auth"; -import type { RoleLevel } from "@emdashcms/auth"; +import { clampScopes, computeS256Challenge } from "@emdash-cms/auth"; +import type { RoleLevel } from "@emdash-cms/auth"; import { generateCodeVerifier } from "arctic"; import type { Kysely } from "kysely"; diff --git a/packages/core/src/api/handlers/oauth-user-lookup.ts b/packages/core/src/api/handlers/oauth-user-lookup.ts index 94c7112..757dccb 100644 --- a/packages/core/src/api/handlers/oauth-user-lookup.ts +++ b/packages/core/src/api/handlers/oauth-user-lookup.ts @@ -6,7 +6,7 @@ * role and reject disabled users. */ -import { toRoleLevel, type RoleLevel } from "@emdashcms/auth"; +import { toRoleLevel, type RoleLevel } from "@emdash-cms/auth"; import type { Kysely } from "kysely"; import type { Database } from "../../database/types.js"; diff --git a/packages/core/src/api/schemas/auth.ts b/packages/core/src/api/schemas/auth.ts index 62a2917..e685492 100644 --- a/packages/core/src/api/schemas/auth.ts +++ b/packages/core/src/api/schemas/auth.ts @@ -3,7 +3,7 @@ import { z } from "zod"; import { roleLevel } from "./common.js"; // --------------------------------------------------------------------------- -// WebAuthn credential schemas (matching @emdashcms/auth/passkey types) +// WebAuthn credential schemas (matching @emdash-cms/auth/passkey types) // --------------------------------------------------------------------------- const authenticatorTransport = z.enum(["usb", "nfc", "ble", "internal", "hybrid"]); diff --git a/packages/core/src/astro/index.ts b/packages/core/src/astro/index.ts index 5391ef1..af9168f 100644 --- a/packages/core/src/astro/index.ts +++ b/packages/core/src/astro/index.ts @@ -4,7 +4,7 @@ * Astro integration for EmDash CMS (build-time only) * * For runtime APIs (loader, query functions, dialects), import from "emdash" directly. - * For Cloudflare-specific adapters (d1, r2, access), import from "@emdashcms/cloudflare". + * For Cloudflare-specific adapters (d1, r2, access), import from "@emdash-cms/cloudflare". */ // Locals types (for typing Astro.locals in API routes) @@ -17,7 +17,7 @@ export type { } from "./types.js"; // Storage adapters (for integration config) -// Note: For R2 bindings, use `r2()` from `@emdashcms/cloudflare` +// Note: For R2 bindings, use `r2()` from `@emdash-cms/cloudflare` export { local, s3 } from "./storage/index.js"; export type { StorageDescriptor, LocalStorageConfig, S3StorageConfig } from "./storage/index.js"; diff --git a/packages/core/src/astro/integration/runtime.ts b/packages/core/src/astro/integration/runtime.ts index 41f1879..63efaef 100644 --- a/packages/core/src/astro/integration/runtime.ts +++ b/packages/core/src/astro/integration/runtime.ts @@ -67,7 +67,7 @@ export interface PluginDescriptor> { id: string; /** Plugin version (semver) */ version: string; - /** Module specifier to import (e.g., "@emdashcms/plugin-api-test") */ + /** Module specifier to import (e.g., "@emdash-cms/plugin-api-test") */ entrypoint: string; /** * Options to pass to createPlugin(). Native format only. @@ -87,7 +87,7 @@ export interface PluginDescriptor> { * */ format?: "standard" | "native"; - /** Admin UI module specifier (e.g., "@emdashcms/plugin-audit-log/admin") */ + /** Admin UI module specifier (e.g., "@emdash-cms/plugin-audit-log/admin") */ adminEntry?: string; /** Module specifier for site-side Astro rendering components (must export `blockComponents`) */ componentsEntry?: string; @@ -153,8 +153,8 @@ export interface EmDashConfig { * * @example * ```ts - * import { auditLogPlugin } from "@emdashcms/plugin-audit-log"; - * import { webhookNotifierPlugin } from "@emdashcms/plugin-webhook-notifier"; + * import { auditLogPlugin } from "@emdash-cms/plugin-audit-log"; + * import { webhookNotifierPlugin } from "@emdash-cms/plugin-webhook-notifier"; * * emdash({ * plugins: [ @@ -178,7 +178,7 @@ export interface EmDashConfig { * emdash({ * plugins: [trustedPlugin()], // runs in host * sandboxed: [untrustedPlugin()], // runs in isolate - * sandboxRunner: "@emdashcms/sandbox-cloudflare", + * sandboxRunner: "@emdash-cms/sandbox-cloudflare", * }) * ``` */ @@ -190,7 +190,7 @@ export interface EmDashConfig { * @example * ```ts * emdash({ - * sandboxRunner: "@emdashcms/sandbox-cloudflare", + * sandboxRunner: "@emdash-cms/sandbox-cloudflare", * }) * ``` */ @@ -200,13 +200,13 @@ export interface EmDashConfig { * Authentication configuration * * Use an auth adapter function from a platform package: - * - `access({ teamDomain: "..." })` from `@emdashcms/cloudflare` + * - `access({ teamDomain: "..." })` from `@emdash-cms/cloudflare` * * When an external auth provider is configured, passkey auth is disabled. * * @example * ```ts - * import { access } from "@emdashcms/cloudflare"; + * import { access } from "@emdash-cms/cloudflare"; * * emdash({ * auth: access({ @@ -256,7 +256,7 @@ export interface EmDashConfig { * ```ts * emdash({ * marketplace: "https://marketplace.emdashcms.com", - * sandboxRunner: "@emdashcms/sandbox-cloudflare", + * sandboxRunner: "@emdash-cms/sandbox-cloudflare", * }) * ``` */ @@ -273,7 +273,7 @@ export interface EmDashConfig { * * Setup and auth middleware are skipped (the playground handles both). * - * Requires `@emdashcms/cloudflare` as a dependency and a DO binding + * Requires `@emdash-cms/cloudflare` as a dependency and a DO binding * in wrangler.jsonc. * * @example @@ -281,7 +281,7 @@ export interface EmDashConfig { * emdash({ * database: playgroundDatabase({ binding: "PLAYGROUND_DB" }), * playground: { - * middlewareEntrypoint: "@emdashcms/cloudflare/db/playground-middleware", + * middlewareEntrypoint: "@emdash-cms/cloudflare/db/playground-middleware", * }, * }) * ``` @@ -300,8 +300,8 @@ export interface EmDashConfig { * * @example * ```ts - * import { cloudflareImages, cloudflareStream } from "@emdashcms/cloudflare"; - * import { unsplash } from "@emdashcms/provider-unsplash"; + * import { cloudflareImages, cloudflareStream } from "@emdash-cms/cloudflare"; + * import { unsplash } from "@emdash-cms/provider-unsplash"; * * emdash({ * mediaProviders: [ diff --git a/packages/core/src/astro/integration/vite-config.ts b/packages/core/src/astro/integration/vite-config.ts index 7fc78e9..e5e19ff 100644 --- a/packages/core/src/astro/integration/vite-config.ts +++ b/packages/core/src/astro/integration/vite-config.ts @@ -55,19 +55,19 @@ import { */ function resolveAdminDist(): string { const require = createRequire(import.meta.url); - const adminPath = require.resolve("@emdashcms/admin"); + const adminPath = require.resolve("@emdash-cms/admin"); // Return the directory containing the built package (dist/) return dirname(adminPath); } /** * Resolve path to the admin package source directory. - * In dev mode, we alias @emdashcms/admin to the source so Vite processes it + * In dev mode, we alias @emdash-cms/admin to the source so Vite processes it * directly — giving instant HMR instead of requiring a rebuild + restart. */ function resolveAdminSource(): string | undefined { const require = createRequire(import.meta.url); - const adminPath = require.resolve("@emdashcms/admin"); + const adminPath = require.resolve("@emdash-cms/admin"); // dist/index.js -> go up to package root, then into src/ const packageRoot = resolve(dirname(adminPath), ".."); const srcEntry = resolve(packageRoot, "src", "index.ts"); @@ -244,16 +244,16 @@ export function createViteConfig( return { resolve: { - dedupe: ["@emdashcms/admin", "react", "react-dom"], + dedupe: ["@emdash-cms/admin", "react", "react-dom"], // Array form so more-specific entries are checked first. // The styles.css alias must come before the package alias, otherwise - // Vite's prefix matching on "@emdashcms/admin" would resolve - // "@emdashcms/admin/styles.css" through the source directory. + // Vite's prefix matching on "@emdash-cms/admin" would resolve + // "@emdash-cms/admin/styles.css" through the source directory. alias: [ // CSS: always dist (pre-compiled by @tailwindcss/cli) - { find: "@emdashcms/admin/styles.css", replacement: resolve(adminDistPath, "styles.css") }, + { find: "@emdash-cms/admin/styles.css", replacement: resolve(adminDistPath, "styles.css") }, // JS: source in dev (HMR), dist in build - { find: "@emdashcms/admin", replacement: useSource ? adminSourcePath : adminDistPath }, + { find: "@emdash-cms/admin", replacement: useSource ? adminSourcePath : adminDistPath }, ], }, // eslint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- Monorepo has both vite 6 (docs) and vite 7 (core). tsgo resolves correctly. @@ -264,7 +264,7 @@ export function createViteConfig( // ssr.external conflicts with @cloudflare/vite-plugin's resolve.external validation. ssr: cloudflare ? { - noExternal: ["emdash", "@emdashcms/admin"], + noExternal: ["emdash", "@emdash-cms/admin"], // Pre-bundle EmDash's runtime deps for workerd. Without this, // Vite discovers them one-by-one on first request, causing workerd // to enter "worker cancelled" state on cold cache. @@ -288,10 +288,10 @@ export function createViteConfig( "emdash > sax", // Deeper transitive deps "emdash > sanitize-html > parse5", - "emdash > @emdashcms/gutenberg-to-portable-text > @wordpress/block-serialization-default-parser", - "emdash > @emdashcms/auth > @oslojs/crypto/ecdsa", - "emdash > @emdashcms/auth > @oslojs/crypto/sha2", - "emdash > @emdashcms/auth > @oslojs/webauthn", + "emdash > @emdash-cms/gutenberg-to-portable-text > @wordpress/block-serialization-default-parser", + "emdash > @emdash-cms/auth > @oslojs/crypto/ecdsa", + "emdash > @emdash-cms/auth > @oslojs/crypto/sha2", + "emdash > @emdash-cms/auth > @oslojs/webauthn", // React (commonly used, may be hoisted) "react", "react/jsx-dev-runtime", @@ -301,7 +301,7 @@ export function createViteConfig( // Top-level deps (use astro > path for pnpm compat) "astro > zod/v4", "astro > zod/v4/core", - "@emdashcms/cloudflare > kysely-d1", + "@emdash-cms/cloudflare > kysely-d1", // Astro internal deps not covered by @astrojs/cloudflare adapter "astro/virtual-modules/middleware.js", "astro/virtual-modules/live-config", @@ -314,14 +314,14 @@ export function createViteConfig( } : { external: NODE_NATIVE_EXTERNALS, - noExternal: ["emdash", "@emdashcms/admin"], + noExternal: ["emdash", "@emdash-cms/admin"], }, optimizeDeps: { // When using source, don't pre-bundle JS — let Vite transform on the fly for HMR. // When using dist, pre-bundle to avoid re-optimization on first hydration. include: useSource ? ["@astrojs/react/client.js"] - : ["@emdashcms/admin", "@astrojs/react/client.js"], + : ["@emdash-cms/admin", "@astrojs/react/client.js"], exclude: cloudflare ? [] : NODE_NATIVE_EXTERNALS, }, }; diff --git a/packages/core/src/astro/middleware/auth.ts b/packages/core/src/astro/middleware/auth.ts index fce8f15..76228d1 100644 --- a/packages/core/src/astro/middleware/auth.ts +++ b/packages/core/src/astro/middleware/auth.ts @@ -10,8 +10,8 @@ * we know setup is complete and users exist. */ -import type { User, RoleLevel } from "@emdashcms/auth"; -import { createKyselyAdapter } from "@emdashcms/auth/adapters/kysely"; +import type { User, RoleLevel } from "@emdash-cms/auth"; +import { createKyselyAdapter } from "@emdash-cms/auth/adapters/kysely"; import { defineMiddleware } from "astro:middleware"; import { ulid } from "ulidx"; // Import auth provider via virtual module (statically bundled) @@ -47,7 +47,7 @@ declare global { } } -// Role level constants (matching @emdashcms/auth) +// Role level constants (matching @emdash-cms/auth) const ROLE_ADMIN = 50; /** diff --git a/packages/core/src/astro/middleware/request-context.ts b/packages/core/src/astro/middleware/request-context.ts index 31419cc..db8accd 100644 --- a/packages/core/src/astro/middleware/request-context.ts +++ b/packages/core/src/astro/middleware/request-context.ts @@ -46,7 +46,7 @@ export const onRequest = defineMiddleware(async (context, next) => { const { user } = context.locals; const isEditor = !!user && user.role >= 30; - // Playground mode: the playground middleware (from @emdashcms/cloudflare) stashes + // Playground mode: the playground middleware (from @emdash-cms/cloudflare) stashes // the per-session DO database on locals.__playgroundDb. We set it via ALS here // (same module instance as the loader) so getDb() picks it up correctly. const playgroundDb = context.locals.__playgroundDb; diff --git a/packages/core/src/astro/routes/PluginRegistry.tsx b/packages/core/src/astro/routes/PluginRegistry.tsx index a5923f0..d07daea 100644 --- a/packages/core/src/astro/routes/PluginRegistry.tsx +++ b/packages/core/src/astro/routes/PluginRegistry.tsx @@ -6,7 +6,7 @@ * together with the admin app and available via React context. */ -import { AdminApp } from "@emdashcms/admin"; +import { AdminApp } from "@emdash-cms/admin"; // @ts-ignore - virtual module generated by integration import { pluginAdmins } from "virtual:emdash/admin-registry"; diff --git a/packages/core/src/astro/routes/admin.astro b/packages/core/src/astro/routes/admin.astro index 839df6b..9b5709b 100644 --- a/packages/core/src/astro/routes/admin.astro +++ b/packages/core/src/astro/routes/admin.astro @@ -5,7 +5,7 @@ * This page serves the EmDash admin React SPA. * AdminWrapper imports plugin admin modules and passes them to AdminApp. */ -import "@emdashcms/admin/styles.css"; +import "@emdash-cms/admin/styles.css"; // Use package-qualified import so Astro generates a proper module URL // (relative imports resolve to absolute paths which break client hydration) import AdminWrapper from "emdash/routes/PluginRegistry"; diff --git a/packages/core/src/astro/routes/api/admin/allowed-domains/[domain].ts b/packages/core/src/astro/routes/api/admin/allowed-domains/[domain].ts index 273a313..1853177 100644 --- a/packages/core/src/astro/routes/api/admin/allowed-domains/[domain].ts +++ b/packages/core/src/astro/routes/api/admin/allowed-domains/[domain].ts @@ -10,8 +10,8 @@ import type { APIRoute } from "astro"; export const prerender = false; -import { Role, roleFromLevel } from "@emdashcms/auth"; -import { createKyselyAdapter } from "@emdashcms/auth/adapters/kysely"; +import { Role, roleFromLevel } from "@emdash-cms/auth"; +import { createKyselyAdapter } from "@emdash-cms/auth/adapters/kysely"; import { apiError, apiSuccess, handleError } from "#api/error.js"; import { isParseError, parseBody } from "#api/parse.js"; diff --git a/packages/core/src/astro/routes/api/admin/allowed-domains/index.ts b/packages/core/src/astro/routes/api/admin/allowed-domains/index.ts index 0b7be20..ed94afa 100644 --- a/packages/core/src/astro/routes/api/admin/allowed-domains/index.ts +++ b/packages/core/src/astro/routes/api/admin/allowed-domains/index.ts @@ -10,8 +10,8 @@ import type { APIRoute } from "astro"; export const prerender = false; -import { Role, roleFromLevel } from "@emdashcms/auth"; -import { createKyselyAdapter } from "@emdashcms/auth/adapters/kysely"; +import { Role, roleFromLevel } from "@emdash-cms/auth"; +import { createKyselyAdapter } from "@emdash-cms/auth/adapters/kysely"; import { apiError, apiSuccess, handleError } from "#api/error.js"; import { isParseError, parseBody } from "#api/parse.js"; diff --git a/packages/core/src/astro/routes/api/admin/api-tokens/[id].ts b/packages/core/src/astro/routes/api/admin/api-tokens/[id].ts index 2add0ad..4cbbbc8 100644 --- a/packages/core/src/astro/routes/api/admin/api-tokens/[id].ts +++ b/packages/core/src/astro/routes/api/admin/api-tokens/[id].ts @@ -4,7 +4,7 @@ * DELETE /_emdash/api/admin/api-tokens/:id — Revoke a token */ -import { Role } from "@emdashcms/auth"; +import { Role } from "@emdash-cms/auth"; import type { APIRoute } from "astro"; import { apiError, handleError, unwrapResult } from "#api/error.js"; diff --git a/packages/core/src/astro/routes/api/admin/api-tokens/index.ts b/packages/core/src/astro/routes/api/admin/api-tokens/index.ts index e7d288e..a4745e5 100644 --- a/packages/core/src/astro/routes/api/admin/api-tokens/index.ts +++ b/packages/core/src/astro/routes/api/admin/api-tokens/index.ts @@ -5,7 +5,7 @@ * POST /_emdash/api/admin/api-tokens — Create a new token */ -import { Role } from "@emdashcms/auth"; +import { Role } from "@emdash-cms/auth"; import type { APIRoute } from "astro"; import { z } from "zod"; diff --git a/packages/core/src/astro/routes/api/admin/bylines/[id]/index.ts b/packages/core/src/astro/routes/api/admin/bylines/[id]/index.ts index fbb860b..cd522ea 100644 --- a/packages/core/src/astro/routes/api/admin/bylines/[id]/index.ts +++ b/packages/core/src/astro/routes/api/admin/bylines/[id]/index.ts @@ -1,4 +1,4 @@ -import { Role } from "@emdashcms/auth"; +import { Role } from "@emdash-cms/auth"; import type { APIRoute } from "astro"; import { requirePerm } from "#api/authorize.js"; diff --git a/packages/core/src/astro/routes/api/admin/bylines/index.ts b/packages/core/src/astro/routes/api/admin/bylines/index.ts index 265f04f..748244b 100644 --- a/packages/core/src/astro/routes/api/admin/bylines/index.ts +++ b/packages/core/src/astro/routes/api/admin/bylines/index.ts @@ -1,4 +1,4 @@ -import { Role } from "@emdashcms/auth"; +import { Role } from "@emdash-cms/auth"; import type { APIRoute } from "astro"; import { requirePerm } from "#api/authorize.js"; diff --git a/packages/core/src/astro/routes/api/admin/oauth-clients/[id].ts b/packages/core/src/astro/routes/api/admin/oauth-clients/[id].ts index f5d3daf..845d837 100644 --- a/packages/core/src/astro/routes/api/admin/oauth-clients/[id].ts +++ b/packages/core/src/astro/routes/api/admin/oauth-clients/[id].ts @@ -6,7 +6,7 @@ * DELETE /_emdash/api/admin/oauth-clients/:id — Delete a client */ -import { Role } from "@emdashcms/auth"; +import { Role } from "@emdash-cms/auth"; import type { APIRoute } from "astro"; import { z } from "zod"; diff --git a/packages/core/src/astro/routes/api/admin/oauth-clients/index.ts b/packages/core/src/astro/routes/api/admin/oauth-clients/index.ts index e6909b1..733e7f4 100644 --- a/packages/core/src/astro/routes/api/admin/oauth-clients/index.ts +++ b/packages/core/src/astro/routes/api/admin/oauth-clients/index.ts @@ -5,7 +5,7 @@ * POST /_emdash/api/admin/oauth-clients — Register a new OAuth client */ -import { Role } from "@emdashcms/auth"; +import { Role } from "@emdash-cms/auth"; import type { APIRoute } from "astro"; import { z } from "zod"; diff --git a/packages/core/src/astro/routes/api/admin/users/[id]/disable.ts b/packages/core/src/astro/routes/api/admin/users/[id]/disable.ts index c18c705..438e211 100644 --- a/packages/core/src/astro/routes/api/admin/users/[id]/disable.ts +++ b/packages/core/src/astro/routes/api/admin/users/[id]/disable.ts @@ -4,8 +4,8 @@ * POST /_emdash/api/admin/users/:id/disable - Soft-disable a user */ -import { Role } from "@emdashcms/auth"; -import { createKyselyAdapter } from "@emdashcms/auth/adapters/kysely"; +import { Role } from "@emdash-cms/auth"; +import { createKyselyAdapter } from "@emdash-cms/auth/adapters/kysely"; import type { APIRoute } from "astro"; import { apiError, apiSuccess, handleError } from "#api/error.js"; diff --git a/packages/core/src/astro/routes/api/admin/users/[id]/enable.ts b/packages/core/src/astro/routes/api/admin/users/[id]/enable.ts index 5db93d1..6f319f8 100644 --- a/packages/core/src/astro/routes/api/admin/users/[id]/enable.ts +++ b/packages/core/src/astro/routes/api/admin/users/[id]/enable.ts @@ -4,8 +4,8 @@ * POST /_emdash/api/admin/users/:id/enable - Re-enable a disabled user */ -import { Role } from "@emdashcms/auth"; -import { createKyselyAdapter } from "@emdashcms/auth/adapters/kysely"; +import { Role } from "@emdash-cms/auth"; +import { createKyselyAdapter } from "@emdash-cms/auth/adapters/kysely"; import type { APIRoute } from "astro"; import { apiError, apiSuccess, handleError } from "#api/error.js"; diff --git a/packages/core/src/astro/routes/api/admin/users/[id]/index.ts b/packages/core/src/astro/routes/api/admin/users/[id]/index.ts index 47ccdfc..988b5d1 100644 --- a/packages/core/src/astro/routes/api/admin/users/[id]/index.ts +++ b/packages/core/src/astro/routes/api/admin/users/[id]/index.ts @@ -5,8 +5,8 @@ * PUT /_emdash/api/admin/users/:id - Update user */ -import { Role } from "@emdashcms/auth"; -import { createKyselyAdapter } from "@emdashcms/auth/adapters/kysely"; +import { Role } from "@emdash-cms/auth"; +import { createKyselyAdapter } from "@emdash-cms/auth/adapters/kysely"; import type { APIRoute } from "astro"; import { apiError, apiSuccess, handleError } from "#api/error.js"; diff --git a/packages/core/src/astro/routes/api/admin/users/[id]/send-recovery.ts b/packages/core/src/astro/routes/api/admin/users/[id]/send-recovery.ts index 0bc7728..61bee6f 100644 --- a/packages/core/src/astro/routes/api/admin/users/[id]/send-recovery.ts +++ b/packages/core/src/astro/routes/api/admin/users/[id]/send-recovery.ts @@ -6,8 +6,8 @@ * Admin-initiated account recovery — sends a recovery magic link to the user's email. */ -import { Role, sendMagicLink, type MagicLinkConfig } from "@emdashcms/auth"; -import { createKyselyAdapter } from "@emdashcms/auth/adapters/kysely"; +import { Role, sendMagicLink, type MagicLinkConfig } from "@emdash-cms/auth"; +import { createKyselyAdapter } from "@emdash-cms/auth/adapters/kysely"; import type { APIRoute } from "astro"; import { apiError, apiSuccess, handleError } from "#api/error.js"; diff --git a/packages/core/src/astro/routes/api/admin/users/index.ts b/packages/core/src/astro/routes/api/admin/users/index.ts index 71726ed..f278494 100644 --- a/packages/core/src/astro/routes/api/admin/users/index.ts +++ b/packages/core/src/astro/routes/api/admin/users/index.ts @@ -4,8 +4,8 @@ * GET /_emdash/api/admin/users - List users with search, filter, pagination */ -import { Role } from "@emdashcms/auth"; -import { createKyselyAdapter } from "@emdashcms/auth/adapters/kysely"; +import { Role } from "@emdash-cms/auth"; +import { createKyselyAdapter } from "@emdash-cms/auth/adapters/kysely"; import type { APIRoute } from "astro"; import { apiError, apiSuccess, handleError } from "#api/error.js"; diff --git a/packages/core/src/astro/routes/api/auth/dev-bypass.ts b/packages/core/src/astro/routes/api/auth/dev-bypass.ts index d2d638a..9239de1 100644 --- a/packages/core/src/astro/routes/api/auth/dev-bypass.ts +++ b/packages/core/src/astro/routes/api/auth/dev-bypass.ts @@ -29,7 +29,7 @@ import { runMigrations } from "#db/migrations/runner.js"; const DEV_USER_EMAIL = "dev@emdash.local"; const DEV_USER_NAME = "Dev Admin"; -// RBAC role levels (matching @emdashcms/auth) +// RBAC role levels (matching @emdash-cms/auth) const ROLE_ADMIN = 50; async function handleDevBypass(context: Parameters[0]): Promise { @@ -49,7 +49,7 @@ async function handleDevBypass(context: Parameters[0]): Promise[0]): Promise) => Storage; diff --git a/packages/core/src/astro/types.ts b/packages/core/src/astro/types.ts index 991f903..c216b12 100644 --- a/packages/core/src/astro/types.ts +++ b/packages/core/src/astro/types.ts @@ -5,7 +5,7 @@ * the locals interface that the middleware provides. */ -import type { Element } from "@emdashcms/blocks"; +import type { Element } from "@emdash-cms/blocks"; import type { Kysely } from "kysely"; // Re-export core types @@ -45,7 +45,7 @@ export interface ManifestCollection { */ export interface ManifestPlugin { version?: string; - /** Package name for dynamic import (e.g., "@emdashcms/plugin-audit-log") */ + /** Package name for dynamic import (e.g., "@emdash-cms/plugin-audit-log") */ package?: string; /** Whether the plugin is currently enabled */ enabled?: boolean; diff --git a/packages/core/src/auth/api-tokens.ts b/packages/core/src/auth/api-tokens.ts index ed1a2d4..93ed2ee 100644 --- a/packages/core/src/auth/api-tokens.ts +++ b/packages/core/src/auth/api-tokens.ts @@ -1,7 +1,7 @@ /** * API token generation and hashing utilities. * - * Re-exports from @emdashcms/auth which owns the implementations. + * Re-exports from @emdash-cms/auth which owns the implementations. * Uses Oslo.js (@oslojs/crypto, @oslojs/encoding) for all crypto. * * Token format: `ec_pat_` (Personal Access Tokens) @@ -22,4 +22,4 @@ export { hasScope, computeS256Challenge, type ApiTokenScope, -} from "@emdashcms/auth"; +} from "@emdash-cms/auth"; diff --git a/packages/core/src/auth/challenge-store.ts b/packages/core/src/auth/challenge-store.ts index 4e4f7a7..5b17d68 100644 --- a/packages/core/src/auth/challenge-store.ts +++ b/packages/core/src/auth/challenge-store.ts @@ -4,7 +4,7 @@ * Stores WebAuthn challenges in a dedicated table with automatic expiration. */ -import type { ChallengeStore, ChallengeData } from "@emdashcms/auth/passkey"; +import type { ChallengeStore, ChallengeData } from "@emdash-cms/auth/passkey"; import type { Kysely } from "kysely"; import type { Database } from "../database/types.js"; diff --git a/packages/core/src/auth/oauth-state-store.ts b/packages/core/src/auth/oauth-state-store.ts index 475c06d..43d8915 100644 --- a/packages/core/src/auth/oauth-state-store.ts +++ b/packages/core/src/auth/oauth-state-store.ts @@ -5,7 +5,7 @@ * Uses the existing table but with type="oauth" to distinguish from WebAuthn challenges. */ -import type { StateStore, OAuthState } from "@emdashcms/auth"; +import type { StateStore, OAuthState } from "@emdash-cms/auth"; import type { Kysely } from "kysely"; import type { Database } from "../database/types.js"; diff --git a/packages/core/src/auth/types.ts b/packages/core/src/auth/types.ts index fd2eea9..23fc2af 100644 --- a/packages/core/src/auth/types.ts +++ b/packages/core/src/auth/types.ts @@ -37,7 +37,7 @@ export interface AuthDescriptor { /** * Module specifier to import at runtime * The module must export an `authenticate` function. - * @example "@emdashcms/cloudflare/auth" + * @example "@emdash-cms/cloudflare/auth" */ entrypoint: string; diff --git a/packages/core/src/cleanup.ts b/packages/core/src/cleanup.ts index 13027b3..ef1014e 100644 --- a/packages/core/src/cleanup.ts +++ b/packages/core/src/cleanup.ts @@ -9,7 +9,7 @@ * rest still run. Failures are logged but never surface to callers. */ -import { createKyselyAdapter, type AuthTables } from "@emdashcms/auth/adapters/kysely"; +import { createKyselyAdapter, type AuthTables } from "@emdash-cms/auth/adapters/kysely"; import { sql, type Kysely } from "kysely"; import { cleanupExpiredChallenges } from "./auth/challenge-store.js"; diff --git a/packages/core/src/cli/commands/bundle.ts b/packages/core/src/cli/commands/bundle.ts index 99d8435..2f10a8a 100644 --- a/packages/core/src/cli/commands/bundle.ts +++ b/packages/core/src/cli/commands/bundle.ts @@ -40,7 +40,7 @@ import { const TS_EXT_RE = /\.tsx?$/; const SLASH_RE = /\//g; const LEADING_AT_RE = /^@/; -const emdash_SCOPE_RE = /^@emdashcms\//; +const emdash_SCOPE_RE = /^@emdash-cms\//; export const bundleCommand = defineCommand({ meta: { @@ -179,7 +179,7 @@ export const bundleCommand = defineCommand({ }); // Symlink plugin's node_modules so the built module can resolve - // external dependencies (emdash, @emdashcms/*, etc.) + // external dependencies (emdash, @emdash-cms/*, etc.) const pluginNodeModules = join(pluginDir, "node_modules"); const tmpNodeModules = join(mainOutDir, "node_modules"); if (await fileExists(pluginNodeModules)) { diff --git a/packages/core/src/cli/commands/import/wordpress.ts b/packages/core/src/cli/commands/import/wordpress.ts index 6a78576..463f2be 100644 --- a/packages/core/src/cli/commands/import/wordpress.ts +++ b/packages/core/src/cli/commands/import/wordpress.ts @@ -10,7 +10,7 @@ import { createReadStream } from "node:fs"; import { readFile, writeFile, mkdir } from "node:fs/promises"; import { dirname, join, resolve } from "node:path"; -import { gutenbergToPortableText } from "@emdashcms/gutenberg-to-portable-text"; +import { gutenbergToPortableText } from "@emdash-cms/gutenberg-to-portable-text"; import pc from "picocolors"; import { slugify } from "#utils/slugify.js"; diff --git a/packages/core/src/emdash-runtime.ts b/packages/core/src/emdash-runtime.ts index 607c24e..e5a7411 100644 --- a/packages/core/src/emdash-runtime.ts +++ b/packages/core/src/emdash-runtime.ts @@ -7,7 +7,7 @@ * Created once per worker lifetime, cached and reused across requests. */ -import type { Element } from "@emdashcms/blocks"; +import type { Element } from "@emdash-cms/blocks"; import { Kysely, sql, type Dialect } from "kysely"; import { validateRev } from "./api/rev.js"; diff --git a/packages/core/src/import/sections.ts b/packages/core/src/import/sections.ts index ab08966..b52d2d5 100644 --- a/packages/core/src/import/sections.ts +++ b/packages/core/src/import/sections.ts @@ -4,8 +4,8 @@ * Import reusable blocks from WordPress WXR exports as EmDash sections. */ -import type { PortableTextBlock } from "@emdashcms/gutenberg-to-portable-text"; -import { gutenbergToPortableText } from "@emdashcms/gutenberg-to-portable-text"; +import type { PortableTextBlock } from "@emdash-cms/gutenberg-to-portable-text"; +import { gutenbergToPortableText } from "@emdash-cms/gutenberg-to-portable-text"; import type { Kysely } from "kysely"; import { ulid } from "ulidx"; diff --git a/packages/core/src/import/sources/wordpress-plugin.ts b/packages/core/src/import/sources/wordpress-plugin.ts index 1e22eab..4e17327 100644 --- a/packages/core/src/import/sources/wordpress-plugin.ts +++ b/packages/core/src/import/sources/wordpress-plugin.ts @@ -5,7 +5,7 @@ * Provides full access to all content including drafts, custom post types, and ACF fields. */ -import { gutenbergToPortableText } from "@emdashcms/gutenberg-to-portable-text"; +import { gutenbergToPortableText } from "@emdash-cms/gutenberg-to-portable-text"; import { encodeBase64 } from "../../utils/base64.js"; import { ssrfSafeFetch, validateExternalUrl } from "../ssrf.js"; diff --git a/packages/core/src/import/sources/wxr.ts b/packages/core/src/import/sources/wxr.ts index 2d08a50..3e8bd53 100644 --- a/packages/core/src/import/sources/wxr.ts +++ b/packages/core/src/import/sources/wxr.ts @@ -5,7 +5,7 @@ * This wraps the existing WXR parsing and analysis logic. */ -import { gutenbergToPortableText } from "@emdashcms/gutenberg-to-portable-text"; +import { gutenbergToPortableText } from "@emdash-cms/gutenberg-to-portable-text"; import { parseWxrString, type WxrData, type WxrPost } from "../../cli/wxr/parser.js"; import type { diff --git a/packages/core/src/import/types.ts b/packages/core/src/import/types.ts index 6463f4c..5f90092 100644 --- a/packages/core/src/import/types.ts +++ b/packages/core/src/import/types.ts @@ -5,7 +5,7 @@ * to all produce the same normalized format for the import flow. */ -import type { PortableTextBlock } from "@emdashcms/gutenberg-to-portable-text"; +import type { PortableTextBlock } from "@emdash-cms/gutenberg-to-portable-text"; // ============================================================================= // Author Types diff --git a/packages/core/src/mcp/server.ts b/packages/core/src/mcp/server.ts index 139518a..c847b03 100644 --- a/packages/core/src/mcp/server.ts +++ b/packages/core/src/mcp/server.ts @@ -11,8 +11,8 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js"; -import type { Permission, RoleLevel } from "@emdashcms/auth"; -import { canActOnOwn, Role } from "@emdashcms/auth"; +import type { Permission, RoleLevel } from "@emdash-cms/auth"; +import { canActOnOwn, Role } from "@emdash-cms/auth"; import { z } from "zod"; import type { EmDashHandlers } from "../astro/types.js"; diff --git a/packages/core/src/plugins/sandbox/types.ts b/packages/core/src/plugins/sandbox/types.ts index 8495099..716594e 100644 --- a/packages/core/src/plugins/sandbox/types.ts +++ b/packages/core/src/plugins/sandbox/types.ts @@ -160,11 +160,11 @@ export interface SandboxRunner { /** * Factory function type for creating sandbox runners. - * Exported by platform adapters (e.g., @emdashcms/adapter-cloudflare/sandbox). + * Exported by platform adapters (e.g., @emdash-cms/adapter-cloudflare/sandbox). * * @example * ```typescript - * // In @emdashcms/adapter-cloudflare/sandbox.ts + * // In @emdash-cms/adapter-cloudflare/sandbox.ts * export const createSandboxRunner: SandboxRunnerFactory = (options) => { * return new CloudflareSandboxRunner(options); * }; diff --git a/packages/core/src/plugins/types.ts b/packages/core/src/plugins/types.ts index 0597f28..76a262d 100644 --- a/packages/core/src/plugins/types.ts +++ b/packages/core/src/plugins/types.ts @@ -9,7 +9,7 @@ * */ -import type { Element } from "@emdashcms/blocks"; +import type { Element } from "@emdash-cms/blocks"; import type { JSX } from "astro/jsx-runtime"; import type { z } from "astro/zod"; @@ -1046,8 +1046,8 @@ export type SettingField = /** * Block Kit element for block editing fields. - * This is the `Element` discriminated union from `@emdashcms/blocks`. - * Plugin authors should use `@emdashcms/blocks` builder functions to create these. + * This is the `Element` discriminated union from `@emdash-cms/blocks`. + * Plugin authors should use `@emdash-cms/blocks` builder functions to create these. */ export type PortableTextBlockField = Element; @@ -1089,7 +1089,7 @@ export interface FieldWidgetConfig { * Admin configuration */ export interface PluginAdminConfig { - /** Module specifier for admin UI exports (e.g., "@emdashcms/plugin-audit-log/admin") */ + /** Module specifier for admin UI exports (e.g., "@emdash-cms/plugin-audit-log/admin") */ entry?: string; /** Settings schema for auto-generated UI */ settingsSchema?: Record; diff --git a/packages/core/tests/integration/auth/authorization-code.test.ts b/packages/core/tests/integration/auth/authorization-code.test.ts index 9fac94a..8be27c8 100644 --- a/packages/core/tests/integration/auth/authorization-code.test.ts +++ b/packages/core/tests/integration/auth/authorization-code.test.ts @@ -5,7 +5,7 @@ * in-memory SQLite database. */ -import { computeS256Challenge, Role } from "@emdashcms/auth"; +import { computeS256Challenge, Role } from "@emdash-cms/auth"; import { generateCodeVerifier } from "arctic"; import type { Kysely } from "kysely"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; diff --git a/packages/core/tests/integration/auth/device-flow.test.ts b/packages/core/tests/integration/auth/device-flow.test.ts index ea7ede0..f5b39d6 100644 --- a/packages/core/tests/integration/auth/device-flow.test.ts +++ b/packages/core/tests/integration/auth/device-flow.test.ts @@ -4,8 +4,8 @@ * Tests the full device flow lifecycle against a real in-memory SQLite database. */ -import { Role } from "@emdashcms/auth"; -import type { RoleLevel } from "@emdashcms/auth"; +import { Role } from "@emdash-cms/auth"; +import type { RoleLevel } from "@emdash-cms/auth"; import type { Kysely } from "kysely"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; diff --git a/packages/core/tests/integration/auth/oauth-clients.test.ts b/packages/core/tests/integration/auth/oauth-clients.test.ts index b886067..b76202e 100644 --- a/packages/core/tests/integration/auth/oauth-clients.test.ts +++ b/packages/core/tests/integration/auth/oauth-clients.test.ts @@ -5,7 +5,7 @@ * redirect URIs not in the client's registered set. */ -import { computeS256Challenge, Role } from "@emdashcms/auth"; +import { computeS256Challenge, Role } from "@emdash-cms/auth"; import { generateCodeVerifier } from "arctic"; import type { Kysely } from "kysely"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; diff --git a/packages/core/tests/integration/fixture/astro.config.mjs b/packages/core/tests/integration/fixture/astro.config.mjs index 6a8109e..c361e70 100644 --- a/packages/core/tests/integration/fixture/astro.config.mjs +++ b/packages/core/tests/integration/fixture/astro.config.mjs @@ -6,7 +6,7 @@ */ import node from "@astrojs/node"; import react from "@astrojs/react"; -import { colorPlugin } from "@emdashcms/plugin-color"; +import { colorPlugin } from "@emdash-cms/plugin-color"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; import { sqlite } from "emdash/db"; diff --git a/packages/core/tests/integration/fixture/package.json b/packages/core/tests/integration/fixture/package.json index e376e3e..178a6d8 100644 --- a/packages/core/tests/integration/fixture/package.json +++ b/packages/core/tests/integration/fixture/package.json @@ -5,8 +5,8 @@ "dependencies": { "@astrojs/node": "catalog:", "@astrojs/react": "catalog:", - "@emdashcms/auth": "workspace:*", - "@emdashcms/plugin-color": "workspace:*", + "@emdash-cms/auth": "workspace:*", + "@emdash-cms/plugin-color": "workspace:*", "astro": "catalog:", "better-sqlite3": "^11.10.0", "emdash": "workspace:*", diff --git a/packages/core/tests/integration/snapshot/snapshot-auth.test.ts b/packages/core/tests/integration/snapshot/snapshot-auth.test.ts index be7fb9b..863b566 100644 --- a/packages/core/tests/integration/snapshot/snapshot-auth.test.ts +++ b/packages/core/tests/integration/snapshot/snapshot-auth.test.ts @@ -4,7 +4,7 @@ * Tests the complete chain that would have caught bug #3: * signPreviewUrl → middleware builds header → snapshot endpoint parses and verifies * - * The signing side (signPreviewUrl) lives in @emdashcms/cloudflare, but we + * The signing side (signPreviewUrl) lives in @emdash-cms/cloudflare, but we * inline the same HMAC logic here to test the format contract without * cross-package imports. */ @@ -25,7 +25,7 @@ const SECRET = "test-preview-secret"; /** * Sign a preview URL using the same HMAC-SHA256 logic as - * @emdashcms/cloudflare signPreviewUrl(). Inlined here so we test + * @emdash-cms/cloudflare signPreviewUrl(). Inlined here so we test * the format contract without cross-package deps. */ async function signPreview( @@ -75,7 +75,7 @@ describe("preview snapshot auth flow", () => { VALUES ('p1', 'test-post', 'published', 'Test', 'Body', datetime('now'), datetime('now'), 1) `.execute(db); - // 2. Sign a preview URL (same logic as @emdashcms/cloudflare signPreviewUrl) + // 2. Sign a preview URL (same logic as @emdash-cms/cloudflare signPreviewUrl) const signed = await signPreview("https://mysite.com"); // 3. Build the header the way the preview middleware does diff --git a/packages/core/tests/integration/wordpress-migration/theme-unit-test.test.ts b/packages/core/tests/integration/wordpress-migration/theme-unit-test.test.ts index c275ecb..31f399e 100644 --- a/packages/core/tests/integration/wordpress-migration/theme-unit-test.test.ts +++ b/packages/core/tests/integration/wordpress-migration/theme-unit-test.test.ts @@ -12,7 +12,7 @@ import { createReadStream, existsSync } from "node:fs"; import { mkdir, writeFile } from "node:fs/promises"; import { dirname, join } from "node:path"; -import { gutenbergToPortableText } from "@emdashcms/gutenberg-to-portable-text"; +import { gutenbergToPortableText } from "@emdash-cms/gutenberg-to-portable-text"; import { describe, it, expect, beforeAll } from "vitest"; import { parseWxr } from "../../../src/cli/wxr/parser.js"; diff --git a/packages/core/tests/unit/auth/allowed-domains.test.ts b/packages/core/tests/unit/auth/allowed-domains.test.ts index ad8f338..072b832 100644 --- a/packages/core/tests/unit/auth/allowed-domains.test.ts +++ b/packages/core/tests/unit/auth/allowed-domains.test.ts @@ -1,6 +1,6 @@ -import type { AuthAdapter } from "@emdashcms/auth"; -import { Role } from "@emdashcms/auth"; -import { createKyselyAdapter } from "@emdashcms/auth/adapters/kysely"; +import type { AuthAdapter } from "@emdash-cms/auth"; +import { Role } from "@emdash-cms/auth"; +import { createKyselyAdapter } from "@emdash-cms/auth/adapters/kysely"; import type { Kysely } from "kysely"; import { describe, it, expect, beforeEach, afterEach } from "vitest"; diff --git a/packages/core/tests/unit/auth/api-tokens.test.ts b/packages/core/tests/unit/auth/api-tokens.test.ts index 82361ab..313e624 100644 --- a/packages/core/tests/unit/auth/api-tokens.test.ts +++ b/packages/core/tests/unit/auth/api-tokens.test.ts @@ -2,7 +2,7 @@ * Unit tests for API token generation, hashing, and scope utilities. */ -import { Role, scopesForRole, clampScopes } from "@emdashcms/auth"; +import { Role, scopesForRole, clampScopes } from "@emdash-cms/auth"; import { describe, it, expect } from "vitest"; import { diff --git a/packages/core/tests/unit/auth/invite.test.ts b/packages/core/tests/unit/auth/invite.test.ts index a1aa5ef..745587f 100644 --- a/packages/core/tests/unit/auth/invite.test.ts +++ b/packages/core/tests/unit/auth/invite.test.ts @@ -1,5 +1,5 @@ -import type { AuthAdapter, EmailSendFn } from "@emdashcms/auth"; -import type { EmailMessage } from "@emdashcms/auth"; +import type { AuthAdapter, EmailSendFn } from "@emdash-cms/auth"; +import type { EmailMessage } from "@emdash-cms/auth"; import { Role, createInvite, @@ -9,8 +9,8 @@ import { InviteError, escapeHtml, generateToken, -} from "@emdashcms/auth"; -import { createKyselyAdapter } from "@emdashcms/auth/adapters/kysely"; +} from "@emdash-cms/auth"; +import { createKyselyAdapter } from "@emdash-cms/auth/adapters/kysely"; import type { Kysely } from "kysely"; import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; diff --git a/packages/core/tests/unit/auth/passkey-management.test.ts b/packages/core/tests/unit/auth/passkey-management.test.ts index 622ac40..a7bf24e 100644 --- a/packages/core/tests/unit/auth/passkey-management.test.ts +++ b/packages/core/tests/unit/auth/passkey-management.test.ts @@ -1,6 +1,6 @@ -import type { AuthAdapter, Credential, User } from "@emdashcms/auth"; -import { Role } from "@emdashcms/auth"; -import { createKyselyAdapter } from "@emdashcms/auth/adapters/kysely"; +import type { AuthAdapter, Credential, User } from "@emdash-cms/auth"; +import { Role } from "@emdash-cms/auth"; +import { createKyselyAdapter } from "@emdash-cms/auth/adapters/kysely"; import type { Kysely } from "kysely"; import { describe, it, expect, beforeEach, afterEach } from "vitest"; diff --git a/packages/core/tests/unit/auth/signup.test.ts b/packages/core/tests/unit/auth/signup.test.ts index 7962bf7..4c4830e 100644 --- a/packages/core/tests/unit/auth/signup.test.ts +++ b/packages/core/tests/unit/auth/signup.test.ts @@ -1,5 +1,5 @@ -import type { AuthAdapter, EmailSendFn } from "@emdashcms/auth"; -import type { EmailMessage } from "@emdashcms/auth"; +import type { AuthAdapter, EmailSendFn } from "@emdash-cms/auth"; +import type { EmailMessage } from "@emdash-cms/auth"; import { Role, canSignup, @@ -7,8 +7,8 @@ import { validateSignupToken, completeSignup, SignupError, -} from "@emdashcms/auth"; -import { createKyselyAdapter } from "@emdashcms/auth/adapters/kysely"; +} from "@emdash-cms/auth"; +import { createKyselyAdapter } from "@emdash-cms/auth/adapters/kysely"; import type { Kysely } from "kysely"; import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; diff --git a/packages/core/tests/unit/cleanup.test.ts b/packages/core/tests/unit/cleanup.test.ts index 66371cf..444a4eb 100644 --- a/packages/core/tests/unit/cleanup.test.ts +++ b/packages/core/tests/unit/cleanup.test.ts @@ -2,7 +2,7 @@ * Tests for the cleanup subsystems. * * Note: runSystemCleanup() is not tested directly here because it imports - * from @emdashcms/auth/adapters/kysely, which requires the auth package to + * from @emdash-cms/auth/adapters/kysely, which requires the auth package to * be built. Instead, we test each subsystem independently: * - cleanupExpiredChallenges: tested in auth/challenge-store.test.ts * - deleteExpiredTokens: tested below using direct DB operations diff --git a/packages/core/tests/unit/mcp/authorization.test.ts b/packages/core/tests/unit/mcp/authorization.test.ts index fe3b9ea..3b34bac 100644 --- a/packages/core/tests/unit/mcp/authorization.test.ts +++ b/packages/core/tests/unit/mcp/authorization.test.ts @@ -10,8 +10,8 @@ import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; -import { Role } from "@emdashcms/auth"; -import type { RoleLevel } from "@emdashcms/auth"; +import { Role } from "@emdash-cms/auth"; +import type { RoleLevel } from "@emdash-cms/auth"; import { afterEach, describe, expect, it, vi } from "vitest"; import type { EmDashHandlers } from "../../../src/astro/types.js"; diff --git a/packages/core/tests/unit/plugins/define-plugin.test.ts b/packages/core/tests/unit/plugins/define-plugin.test.ts index 7c24827..901f0f2 100644 --- a/packages/core/tests/unit/plugins/define-plugin.test.ts +++ b/packages/core/tests/unit/plugins/define-plugin.test.ts @@ -40,11 +40,11 @@ describe("definePlugin", () => { it("accepts valid scoped ID", () => { const plugin = definePlugin({ - id: "@emdashcms/seo-plugin", + id: "@emdash-cms/seo-plugin", version: "1.0.0", }); - expect(plugin.id).toBe("@emdashcms/seo-plugin"); + expect(plugin.id).toBe("@emdash-cms/seo-plugin"); }); it("accepts scoped ID with numbers", () => { diff --git a/packages/gutenberg-to-portable-text/package.json b/packages/gutenberg-to-portable-text/package.json index 47050db..6ff2c3d 100644 --- a/packages/gutenberg-to-portable-text/package.json +++ b/packages/gutenberg-to-portable-text/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/gutenberg-to-portable-text", + "name": "@emdash-cms/gutenberg-to-portable-text", "version": "0.0.0", "description": "Convert WordPress Gutenberg blocks to Portable Text", "type": "module", diff --git a/packages/marketplace/README.md b/packages/marketplace/README.md index 0142c1e..d7b6923 100644 --- a/packages/marketplace/README.md +++ b/packages/marketplace/README.md @@ -1,4 +1,4 @@ -# @emdashcms/marketplace +# @emdash-cms/marketplace Standalone Cloudflare Worker that hosts the EmDash plugin marketplace — discovery, publishing, and moderation. diff --git a/packages/marketplace/package.json b/packages/marketplace/package.json index fd0b419..6bf5413 100644 --- a/packages/marketplace/package.json +++ b/packages/marketplace/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/marketplace", + "name": "@emdash-cms/marketplace", "version": "0.0.0", "description": "Plugin marketplace Worker for EmDash CMS", "type": "module", diff --git a/packages/plugins/ai-moderation/package.json b/packages/plugins/ai-moderation/package.json index e3eebc9..a424629 100644 --- a/packages/plugins/ai-moderation/package.json +++ b/packages/plugins/ai-moderation/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/plugin-ai-moderation", + "name": "@emdash-cms/plugin-ai-moderation", "version": "0.0.1", "description": "AI-powered comment moderation plugin for EmDash CMS using Cloudflare Workers AI (Llama Guard)", "type": "module", diff --git a/packages/plugins/ai-moderation/src/descriptor.ts b/packages/plugins/ai-moderation/src/descriptor.ts index f472ae6..f70512f 100644 --- a/packages/plugins/ai-moderation/src/descriptor.ts +++ b/packages/plugins/ai-moderation/src/descriptor.ts @@ -24,9 +24,9 @@ export function aiModerationPlugin( return { id: "ai-moderation", version: "0.1.0", - entrypoint: "@emdashcms/plugin-ai-moderation/plugin", + entrypoint: "@emdash-cms/plugin-ai-moderation/plugin", options, - adminEntry: "@emdashcms/plugin-ai-moderation/admin", + adminEntry: "@emdash-cms/plugin-ai-moderation/admin", adminPages: [{ path: "/settings", label: "AI Moderation", icon: "shield" }], adminWidgets: [{ id: "status", title: "AI Moderation", size: "third" }], }; diff --git a/packages/plugins/ai-moderation/src/index.ts b/packages/plugins/ai-moderation/src/index.ts index 2a50399..a7f9b2c 100644 --- a/packages/plugins/ai-moderation/src/index.ts +++ b/packages/plugins/ai-moderation/src/index.ts @@ -56,7 +56,7 @@ export function createPlugin(options: AIModerationOptions = {}): ResolvedPlugin allowedHosts: [], admin: { - entry: "@emdashcms/plugin-ai-moderation/admin", + entry: "@emdash-cms/plugin-ai-moderation/admin", pages: [{ path: "/settings", label: "AI Moderation", icon: "shield" }], widgets: [{ id: "status", title: "AI Moderation", size: "third" }], }, diff --git a/packages/plugins/api-test/package.json b/packages/plugins/api-test/package.json index 45f768c..4b44118 100644 --- a/packages/plugins/api-test/package.json +++ b/packages/plugins/api-test/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/plugin-api-test", + "name": "@emdash-cms/plugin-api-test", "private": true, "version": "0.0.1", "description": "Test plugin that exercises all EmDash plugin APIs", diff --git a/packages/plugins/api-test/src/index.ts b/packages/plugins/api-test/src/index.ts index 477588a..a447af7 100644 --- a/packages/plugins/api-test/src/index.ts +++ b/packages/plugins/api-test/src/index.ts @@ -50,9 +50,9 @@ export function apiTestPlugin( return { id: "api-test", version: "0.0.1", - entrypoint: "@emdashcms/plugin-api-test", + entrypoint: "@emdash-cms/plugin-api-test", options, - adminEntry: "@emdashcms/plugin-api-test/admin", + adminEntry: "@emdash-cms/plugin-api-test/admin", adminPages: [{ path: "/test", label: "API Tests", icon: "code" }], adminWidgets: [{ id: "api-status", title: "API Status", size: "half" }], }; @@ -84,7 +84,7 @@ export function createPlugin(_options: ApiTestPluginOptions = {}): ResolvedPlugi // Admin configuration admin: { - entry: "@emdashcms/plugin-api-test/admin", + entry: "@emdash-cms/plugin-api-test/admin", pages: [{ path: "/test", label: "API Tests", icon: "code" }], widgets: [{ id: "api-status", title: "API Status", size: "half" }], }, diff --git a/packages/plugins/atproto/package.json b/packages/plugins/atproto/package.json index a3f7d5d..c2fa31b 100644 --- a/packages/plugins/atproto/package.json +++ b/packages/plugins/atproto/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/plugin-atproto", + "name": "@emdash-cms/plugin-atproto", "version": "0.0.1", "description": "AT Protocol / standard.site syndication plugin for EmDash CMS", "type": "module", diff --git a/packages/plugins/atproto/src/index.ts b/packages/plugins/atproto/src/index.ts index 8200d96..1904a4f 100644 --- a/packages/plugins/atproto/src/index.ts +++ b/packages/plugins/atproto/src/index.ts @@ -30,7 +30,7 @@ export function atprotoPlugin(): PluginDescriptor { id: "atproto", version: "0.1.0", format: "standard", - entrypoint: "@emdashcms/plugin-atproto/sandbox", + entrypoint: "@emdash-cms/plugin-atproto/sandbox", capabilities: ["read:content", "network:fetch:any"], storage: { publications: { indexes: ["contentId", "platform", "publishedAt"] }, diff --git a/packages/plugins/atproto/tests/plugin.test.ts b/packages/plugins/atproto/tests/plugin.test.ts index be96fb0..ab2f938 100644 --- a/packages/plugins/atproto/tests/plugin.test.ts +++ b/packages/plugins/atproto/tests/plugin.test.ts @@ -7,7 +7,7 @@ describe("atprotoPlugin descriptor", () => { const descriptor = atprotoPlugin(); expect(descriptor.id).toBe("atproto"); expect(descriptor.version).toBe("0.1.0"); - expect(descriptor.entrypoint).toBe("@emdashcms/plugin-atproto"); + expect(descriptor.entrypoint).toBe("@emdash-cms/plugin-atproto"); expect(descriptor.adminPages).toHaveLength(1); expect(descriptor.adminWidgets).toHaveLength(1); }); diff --git a/packages/plugins/audit-log/package.json b/packages/plugins/audit-log/package.json index 8935d72..fc515e1 100644 --- a/packages/plugins/audit-log/package.json +++ b/packages/plugins/audit-log/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/plugin-audit-log", + "name": "@emdash-cms/plugin-audit-log", "version": "0.0.1", "description": "Audit logging plugin for EmDash CMS - tracks content changes", "type": "module", diff --git a/packages/plugins/audit-log/src/index.ts b/packages/plugins/audit-log/src/index.ts index c17b61c..933e750 100644 --- a/packages/plugins/audit-log/src/index.ts +++ b/packages/plugins/audit-log/src/index.ts @@ -42,7 +42,7 @@ export function auditLogPlugin(): PluginDescriptor { id: "audit-log", version: "0.1.0", format: "standard", - entrypoint: "@emdashcms/plugin-audit-log/sandbox", + entrypoint: "@emdash-cms/plugin-audit-log/sandbox", capabilities: ["read:content"], storage: { entries: { indexes: ["timestamp", "action", "resourceType", "collection"] }, diff --git a/packages/plugins/audit-log/src/sandbox-entry.ts b/packages/plugins/audit-log/src/sandbox-entry.ts index 63a6bc1..626cc1a 100644 --- a/packages/plugins/audit-log/src/sandbox-entry.ts +++ b/packages/plugins/audit-log/src/sandbox-entry.ts @@ -203,7 +203,7 @@ export default definePlugin({ }, routes: { - // Block Kit admin handler -- returns plain block objects (no @emdashcms/blocks import needed) + // Block Kit admin handler -- returns plain block objects (no @emdash-cms/blocks import needed) admin: { handler: async ( routeCtx: { input: unknown; request: { url: string } }, @@ -288,7 +288,7 @@ export default definePlugin({ }, }); -// ── Block Kit helpers (plain objects, no @emdashcms/blocks import) ── +// ── Block Kit helpers (plain objects, no @emdash-cms/blocks import) ── async function buildHistoryBlocks(ctx: PluginContext, cursor?: string) { try { diff --git a/packages/plugins/color/package.json b/packages/plugins/color/package.json index f401460..46fced9 100644 --- a/packages/plugins/color/package.json +++ b/packages/plugins/color/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/plugin-color", + "name": "@emdash-cms/plugin-color", "version": "0.0.1", "description": "Color picker field widget for EmDash CMS", "type": "module", diff --git a/packages/plugins/color/src/index.ts b/packages/plugins/color/src/index.ts index 6af1f9a..e2d5ee5 100644 --- a/packages/plugins/color/src/index.ts +++ b/packages/plugins/color/src/index.ts @@ -26,7 +26,7 @@ export function createPlugin() { version: "0.0.1", admin: { - entry: "@emdashcms/plugin-color/admin", + entry: "@emdash-cms/plugin-color/admin", fieldWidgets: [ { name: "picker", @@ -47,8 +47,8 @@ export function colorPlugin(): PluginDescriptor { return { id: "color", version: "0.0.1", - entrypoint: "@emdashcms/plugin-color", + entrypoint: "@emdash-cms/plugin-color", options: {}, - adminEntry: "@emdashcms/plugin-color/admin", + adminEntry: "@emdash-cms/plugin-color/admin", }; } diff --git a/packages/plugins/embeds/package.json b/packages/plugins/embeds/package.json index c123543..1fa1bc4 100644 --- a/packages/plugins/embeds/package.json +++ b/packages/plugins/embeds/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/plugin-embeds", + "name": "@emdash-cms/plugin-embeds", "version": "0.0.1", "description": "Embed blocks for EmDash CMS - YouTube, Vimeo, Twitter, Bluesky, Mastodon, and more", "type": "module", @@ -28,7 +28,7 @@ "emdash": "workspace:*" }, "dependencies": { - "@emdashcms/blocks": "workspace:*", + "@emdash-cms/blocks": "workspace:*", "astro-embed": "^0.12.0" }, "scripts": { diff --git a/packages/plugins/embeds/src/astro/index.ts b/packages/plugins/embeds/src/astro/index.ts index 9b633d3..1dcf831 100644 --- a/packages/plugins/embeds/src/astro/index.ts +++ b/packages/plugins/embeds/src/astro/index.ts @@ -10,7 +10,7 @@ * @example Direct usage (if you need to customize) * ```astro * --- - * import { YouTube } from "@emdashcms/plugin-embeds/astro"; + * import { YouTube } from "@emdash-cms/plugin-embeds/astro"; * --- * * ``` diff --git a/packages/plugins/embeds/src/index.ts b/packages/plugins/embeds/src/index.ts index 9548690..93a1438 100644 --- a/packages/plugins/embeds/src/index.ts +++ b/packages/plugins/embeds/src/index.ts @@ -15,7 +15,7 @@ * @example * ```typescript * // live.config.ts - * import { embedsPlugin } from "@emdashcms/plugin-embeds"; + * import { embedsPlugin } from "@emdash-cms/plugin-embeds"; * * export default defineConfig({ * plugins: [embedsPlugin()], @@ -40,7 +40,7 @@ * ``` */ -import type { Element } from "@emdashcms/blocks"; +import type { Element } from "@emdash-cms/blocks"; import type { PluginDescriptor, ResolvedPlugin } from "emdash"; import { definePlugin } from "emdash"; @@ -139,8 +139,8 @@ export function embedsPlugin( return { id: "embeds", version: "0.0.1", - entrypoint: "@emdashcms/plugin-embeds", - componentsEntry: "@emdashcms/plugin-embeds/astro", + entrypoint: "@emdash-cms/plugin-embeds", + componentsEntry: "@emdash-cms/plugin-embeds/astro", options, }; } diff --git a/packages/plugins/forms/package.json b/packages/plugins/forms/package.json index 0eb1150..5294f76 100644 --- a/packages/plugins/forms/package.json +++ b/packages/plugins/forms/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/plugin-forms", + "name": "@emdash-cms/plugin-forms", "version": "0.0.1", "description": "Forms plugin for EmDash CMS - build forms, collect submissions, send notifications", "type": "module", diff --git a/packages/plugins/forms/src/astro/Form.astro b/packages/plugins/forms/src/astro/Form.astro index 317613e..4e504ad 100644 --- a/packages/plugins/forms/src/astro/Form.astro +++ b/packages/plugins/forms/src/astro/Form.astro @@ -7,7 +7,7 @@ * @example * ```astro * --- - * import { Form } from "@emdashcms/plugin-forms/ui"; + * import { Form } from "@emdash-cms/plugin-forms/ui"; * --- * *
diff --git a/packages/plugins/forms/src/astro/FormEmbed.astro b/packages/plugins/forms/src/astro/FormEmbed.astro index 046050b..38030c9 100644 --- a/packages/plugins/forms/src/astro/FormEmbed.astro +++ b/packages/plugins/forms/src/astro/FormEmbed.astro @@ -296,6 +296,6 @@ function fieldId(name: string): string { diff --git a/packages/plugins/forms/src/index.ts b/packages/plugins/forms/src/index.ts index 4a058df..8d71494 100644 --- a/packages/plugins/forms/src/index.ts +++ b/packages/plugins/forms/src/index.ts @@ -10,7 +10,7 @@ * @example * ```typescript * // live.config.ts - * import { formsPlugin } from "@emdashcms/plugin-forms"; + * import { formsPlugin } from "@emdash-cms/plugin-forms"; * * export default defineConfig({ * plugins: [formsPlugin()], @@ -67,9 +67,9 @@ export function formsPlugin( return { id: "emdash-forms", version: "0.0.1", - entrypoint: "@emdashcms/plugin-forms", - adminEntry: "@emdashcms/plugin-forms/admin", - componentsEntry: "@emdashcms/plugin-forms/astro", + entrypoint: "@emdash-cms/plugin-forms", + adminEntry: "@emdash-cms/plugin-forms/admin", + componentsEntry: "@emdash-cms/plugin-forms/astro", options, capabilities: ["email:send", "write:media", "network:fetch"], allowedHosts: ["*"], diff --git a/packages/plugins/forms/src/styles/forms.css b/packages/plugins/forms/src/styles/forms.css index 37987c7..07cd2ca 100644 --- a/packages/plugins/forms/src/styles/forms.css +++ b/packages/plugins/forms/src/styles/forms.css @@ -4,7 +4,7 @@ * Uses CSS custom properties for theming. * Import this stylesheet in your site to get basic form styling: * - * import "@emdashcms/plugin-forms/styles"; + * import "@emdash-cms/plugin-forms/styles"; */ .ec-form { diff --git a/packages/plugins/marketplace-test/package.json b/packages/plugins/marketplace-test/package.json index 201fc5e..97c6fa2 100644 --- a/packages/plugins/marketplace-test/package.json +++ b/packages/plugins/marketplace-test/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/plugin-marketplace-test", + "name": "@emdash-cms/plugin-marketplace-test", "private": true, "version": "0.1.0", "description": "Test plugin for end-to-end marketplace publishing and audit workflow testing", diff --git a/packages/plugins/marketplace-test/src/index.ts b/packages/plugins/marketplace-test/src/index.ts index 5f7704f..9fe9e95 100644 --- a/packages/plugins/marketplace-test/src/index.ts +++ b/packages/plugins/marketplace-test/src/index.ts @@ -22,7 +22,7 @@ export function marketplaceTestPlugin(): PluginDescriptor { id: "marketplace-test", version: "0.1.0", format: "standard", - entrypoint: "@emdashcms/plugin-marketplace-test/sandbox", + entrypoint: "@emdash-cms/plugin-marketplace-test/sandbox", capabilities: ["read:content", "write:content"], allowedHosts: [], storage: { diff --git a/packages/plugins/sandboxed-test/package.json b/packages/plugins/sandboxed-test/package.json index 769af2f..94a8af0 100644 --- a/packages/plugins/sandboxed-test/package.json +++ b/packages/plugins/sandboxed-test/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/plugin-sandboxed-test", + "name": "@emdash-cms/plugin-sandboxed-test", "private": true, "version": "0.0.1", "description": "Test plugin for sandboxed plugin system", diff --git a/packages/plugins/sandboxed-test/src/index.ts b/packages/plugins/sandboxed-test/src/index.ts index 7937306..92d7219 100644 --- a/packages/plugins/sandboxed-test/src/index.ts +++ b/packages/plugins/sandboxed-test/src/index.ts @@ -15,7 +15,7 @@ export function sandboxedTestPlugin(): PluginDescriptor { id: "sandboxed-test", version: "0.0.1", format: "standard", - entrypoint: "@emdashcms/plugin-sandboxed-test/sandbox", + entrypoint: "@emdash-cms/plugin-sandboxed-test/sandbox", adminPages: [{ path: "/sandbox", label: "Sandbox Tests", icon: "shield" }], adminWidgets: [{ id: "sandbox-status", title: "Sandbox Status", size: "half" }], diff --git a/packages/plugins/webhook-notifier/package.json b/packages/plugins/webhook-notifier/package.json index c552911..35859f3 100644 --- a/packages/plugins/webhook-notifier/package.json +++ b/packages/plugins/webhook-notifier/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/plugin-webhook-notifier", + "name": "@emdash-cms/plugin-webhook-notifier", "version": "0.0.1", "description": "Webhook notification plugin for EmDash CMS - posts to external URLs on content changes", "type": "module", diff --git a/packages/plugins/webhook-notifier/src/index.ts b/packages/plugins/webhook-notifier/src/index.ts index 8fb650e..e137d75 100644 --- a/packages/plugins/webhook-notifier/src/index.ts +++ b/packages/plugins/webhook-notifier/src/index.ts @@ -39,7 +39,7 @@ export function webhookNotifierPlugin(): PluginDescriptor { id: "webhook-notifier", version: "0.1.0", format: "standard", - entrypoint: "@emdashcms/plugin-webhook-notifier/sandbox", + entrypoint: "@emdash-cms/plugin-webhook-notifier/sandbox", capabilities: ["network:fetch:any"], storage: { deliveries: { indexes: ["timestamp", "webhookUrl", "status"] }, diff --git a/packages/x402/package.json b/packages/x402/package.json index e0b3bc4..d116aec 100644 --- a/packages/x402/package.json +++ b/packages/x402/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/x402", + "name": "@emdash-cms/x402", "version": "0.0.0", "description": "x402 payment protocol integration for Astro sites", "license": "MIT", diff --git a/packages/x402/src/index.ts b/packages/x402/src/index.ts index a067388..eaf378e 100644 --- a/packages/x402/src/index.ts +++ b/packages/x402/src/index.ts @@ -1,5 +1,5 @@ /** - * @emdashcms/x402 -- x402 Payment Integration for Astro + * @emdash-cms/x402 -- x402 Payment Integration for Astro * * An Astro integration that provides x402 payment enforcement via * Astro.locals.x402. Supports bot-only mode using Cloudflare Bot Management. @@ -7,7 +7,7 @@ * @example * ```ts * // astro.config.mjs - * import { x402 } from "@emdashcms/x402"; + * import { x402 } from "@emdash-cms/x402"; * * export default defineConfig({ * integrations: [ @@ -46,7 +46,7 @@ const RESOLVED_VIRTUAL_MODULE_ID = "\0" + VIRTUAL_MODULE_ID; */ export function x402(config: X402Config): AstroIntegration { return { - name: "@emdashcms/x402", + name: "@emdash-cms/x402", hooks: { "astro:config:setup": ({ addMiddleware, updateConfig }) => { // Inject the virtual module that provides config to the middleware @@ -70,7 +70,7 @@ export function x402(config: X402Config): AstroIntegration { // Register the middleware that puts the enforcer on locals addMiddleware({ - entrypoint: "@emdashcms/x402/middleware", + entrypoint: "@emdash-cms/x402/middleware", order: "pre", }); }, diff --git a/packages/x402/src/types.ts b/packages/x402/src/types.ts index b4163eb..179b4bd 100644 --- a/packages/x402/src/types.ts +++ b/packages/x402/src/types.ts @@ -18,7 +18,7 @@ export type Price = * * @example * ```ts - * import { x402 } from "@emdashcms/x402"; + * import { x402 } from "@emdash-cms/x402"; * * export default defineConfig({ * integrations: [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index de036fd..f44c390 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -179,13 +179,13 @@ importers: '@astrojs/react': specifier: 'catalog:' version: 5.0.0(@types/node@24.10.13)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.2) - '@emdashcms/cloudflare': + '@emdash-cms/cloudflare': specifier: workspace:* version: link:../../packages/cloudflare - '@emdashcms/plugin-forms': + '@emdash-cms/plugin-forms': specifier: workspace:* version: link:../../packages/plugins/forms - '@emdashcms/plugin-webhook-notifier': + '@emdash-cms/plugin-webhook-notifier': specifier: workspace:* version: link:../../packages/plugins/webhook-notifier '@tanstack/react-query': @@ -228,7 +228,7 @@ importers: '@astrojs/react': specifier: 'catalog:' version: 5.0.0(@types/node@24.10.13)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.2) - '@emdashcms/cloudflare': + '@emdash-cms/cloudflare': specifier: workspace:* version: link:../../packages/cloudflare astro: @@ -262,16 +262,16 @@ importers: '@astrojs/react': specifier: 'catalog:' version: 5.0.0(@types/node@24.10.13)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.2) - '@emdashcms/plugin-api-test': + '@emdash-cms/plugin-api-test': specifier: workspace:* version: link:../../packages/plugins/api-test - '@emdashcms/plugin-audit-log': + '@emdash-cms/plugin-audit-log': specifier: workspace:* version: link:../../packages/plugins/audit-log - '@emdashcms/plugin-embeds': + '@emdash-cms/plugin-embeds': specifier: workspace:* version: link:../../packages/plugins/embeds - '@emdashcms/plugin-webhook-notifier': + '@emdash-cms/plugin-webhook-notifier': specifier: workspace:* version: link:../../packages/plugins/webhook-notifier '@tanstack/react-query': @@ -342,7 +342,7 @@ importers: '@astrojs/react': specifier: 'catalog:' version: 5.0.0(@types/node@24.10.13)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.2) - '@emdashcms/cloudflare': + '@emdash-cms/cloudflare': specifier: workspace:* version: link:../../packages/cloudflare '@tanstack/react-query': @@ -385,10 +385,10 @@ importers: '@astrojs/react': specifier: 'catalog:' version: 5.0.0(@types/node@24.10.13)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.2) - '@emdashcms/plugin-audit-log': + '@emdash-cms/plugin-audit-log': specifier: workspace:* version: link:../../packages/plugins/audit-log - '@emdashcms/plugin-color': + '@emdash-cms/plugin-color': specifier: workspace:* version: link:../../packages/plugins/color astro: @@ -443,10 +443,10 @@ importers: '@astrojs/react': specifier: 'catalog:' version: 5.0.0(@types/node@24.10.13)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.2) - '@emdashcms/auth': + '@emdash-cms/auth': specifier: workspace:* version: link:../../packages/auth - '@emdashcms/plugin-color': + '@emdash-cms/plugin-color': specifier: workspace:* version: link:../../packages/plugins/color astro: @@ -479,7 +479,7 @@ importers: '@dnd-kit/utilities': specifier: ^3.2.2 version: 3.2.2(react@19.2.4) - '@emdashcms/blocks': + '@emdash-cms/blocks': specifier: workspace:* version: link:../blocks '@floating-ui/react': @@ -722,7 +722,7 @@ importers: '@cloudflare/kumo': specifier: ^1.1.0 version: 1.10.0(@phosphor-icons/react@2.1.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(echarts@6.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6) - '@emdashcms/blocks': + '@emdash-cms/blocks': specifier: workspace:* version: link:.. '@phosphor-icons/react': @@ -805,13 +805,13 @@ importers: '@astrojs/react': specifier: '>=5.0.0-beta.0' version: 5.0.0-beta.4(@types/node@24.10.13)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.2) - '@emdashcms/admin': + '@emdash-cms/admin': specifier: workspace:* version: link:../admin - '@emdashcms/auth': + '@emdash-cms/auth': specifier: workspace:* version: link:../auth - '@emdashcms/gutenberg-to-portable-text': + '@emdash-cms/gutenberg-to-portable-text': specifier: workspace:* version: link:../gutenberg-to-portable-text '@floating-ui/react': @@ -938,7 +938,7 @@ importers: '@arethetypeswrong/cli': specifier: 'catalog:' version: 0.18.2 - '@emdashcms/blocks': + '@emdash-cms/blocks': specifier: workspace:* version: link:../blocks '@types/better-sqlite3': @@ -1128,7 +1128,7 @@ importers: packages/plugins/embeds: dependencies: - '@emdashcms/blocks': + '@emdash-cms/blocks': specifier: workspace:* version: link:../../blocks astro: @@ -1262,7 +1262,7 @@ importers: '@astrojs/react': specifier: 'catalog:' version: 5.0.0(@types/node@24.10.13)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.2) - '@emdashcms/plugin-audit-log': + '@emdash-cms/plugin-audit-log': specifier: workspace:* version: link:../../packages/plugins/audit-log astro: @@ -1293,13 +1293,13 @@ importers: '@astrojs/react': specifier: 'catalog:' version: 5.0.0(@types/node@24.10.13)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.2) - '@emdashcms/cloudflare': + '@emdash-cms/cloudflare': specifier: workspace:* version: link:../../packages/cloudflare - '@emdashcms/plugin-forms': + '@emdash-cms/plugin-forms': specifier: workspace:* version: link:../../packages/plugins/forms - '@emdashcms/plugin-webhook-notifier': + '@emdash-cms/plugin-webhook-notifier': specifier: workspace:* version: link:../../packages/plugins/webhook-notifier astro: @@ -1361,7 +1361,7 @@ importers: '@astrojs/react': specifier: 'catalog:' version: 5.0.0(@types/node@24.10.13)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.2) - '@emdashcms/cloudflare': + '@emdash-cms/cloudflare': specifier: workspace:* version: link:../../packages/cloudflare astro: @@ -1423,7 +1423,7 @@ importers: '@astrojs/react': specifier: 'catalog:' version: 5.0.0(@types/node@24.10.13)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.2) - '@emdashcms/cloudflare': + '@emdash-cms/cloudflare': specifier: workspace:* version: link:../../packages/cloudflare astro: @@ -1485,7 +1485,7 @@ importers: '@astrojs/react': specifier: 'catalog:' version: 5.0.0(@types/node@24.10.13)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.2) - '@emdashcms/cloudflare': + '@emdash-cms/cloudflare': specifier: workspace:* version: link:../../packages/cloudflare astro: diff --git a/skills/building-emdash-site/references/configuration.md b/skills/building-emdash-site/references/configuration.md index 619800b..d24f221 100644 --- a/skills/building-emdash-site/references/configuration.md +++ b/skills/building-emdash-site/references/configuration.md @@ -37,7 +37,7 @@ export default defineConfig({ ```javascript import cloudflare from "@astrojs/cloudflare"; import react from "@astrojs/react"; -import { d1, r2 } from "@emdashcms/cloudflare"; +import { d1, r2 } from "@emdash-cms/cloudflare"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; @@ -88,7 +88,7 @@ Requires a `wrangler.jsonc` with D1 and R2 bindings: Register plugins in `astro.config.mjs`: ```javascript -import { auditLogPlugin } from "@emdashcms/plugin-audit-log"; +import { auditLogPlugin } from "@emdash-cms/plugin-audit-log"; emdash({ database: sqlite({ url: "file:./data.db" }), @@ -181,7 +181,7 @@ Key dependencies for a Node.js site: } ``` -For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdashcms/cloudflare`. +For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdash-cms/cloudflare`. ## Dev Server diff --git a/skills/creating-plugins/references/admin-ui.md b/skills/creating-plugins/references/admin-ui.md index 04ac204..e2289e1 100644 --- a/skills/creating-plugins/references/admin-ui.md +++ b/skills/creating-plugins/references/admin-ui.md @@ -51,7 +51,7 @@ React components. Use `usePluginAPI()` to call plugin routes. ```typescript // src/components/SettingsPage.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function SettingsPage() { const api = usePluginAPI(); @@ -94,7 +94,7 @@ Dashboard cards with at-a-glance info. ```typescript // src/components/StatusWidget.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function StatusWidget() { const api = usePluginAPI(); @@ -134,10 +134,10 @@ const result = await api.get("history?limit=50"); // Query params ## Admin Components -Pre-built components from `@emdashcms/admin`: +Pre-built components from `@emdash-cms/admin`: ```typescript -import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdashcms/admin"; +import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdash-cms/admin"; ``` ## Auto-Generated Settings @@ -166,11 +166,11 @@ export default { }, format: "esm", dts: true, - external: ["react", "react-dom", "emdash", "@emdashcms/admin"], + external: ["react", "react-dom", "emdash", "@emdash-cms/admin"], }; ``` -Keep React and `@emdashcms/admin` as externals to avoid bundling duplicates. +Keep React and `@emdash-cms/admin` as externals to avoid bundling duplicates. ## Plugin Descriptor diff --git a/skills/creating-plugins/references/api-routes.md b/skills/creating-plugins/references/api-routes.md index 77d41aa..941d688 100644 --- a/skills/creating-plugins/references/api-routes.md +++ b/skills/creating-plugins/references/api-routes.md @@ -245,7 +245,7 @@ definePlugin({ ## Calling from Admin UI ```typescript -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; const api = usePluginAPI(); const data = await api.get("status"); diff --git a/skills/creating-plugins/references/block-kit.md b/skills/creating-plugins/references/block-kit.md index 560eef7..397505b 100644 --- a/skills/creating-plugins/references/block-kit.md +++ b/skills/creating-plugins/references/block-kit.md @@ -329,10 +329,10 @@ Show/hide fields based on other field values. Evaluated client-side, no round-tr ## Builder Helpers -`@emdashcms/blocks` provides TypeScript helpers: +`@emdash-cms/blocks` provides TypeScript helpers: ```typescript -import { blocks, elements } from "@emdashcms/blocks"; +import { blocks, elements } from "@emdash-cms/blocks"; const { header, form, section, stats, timeseriesChart, customChart, banner: bannerBlock } = blocks; const { textInput, toggle, select, button } = elements; diff --git a/skills/creating-plugins/references/publishing.md b/skills/creating-plugins/references/publishing.md index 60051b0..11ec097 100644 --- a/skills/creating-plugins/references/publishing.md +++ b/skills/creating-plugins/references/publishing.md @@ -31,7 +31,7 @@ The bundle command uses `package.json` exports to find entrypoints: | Export | Purpose | Built as | | ------------- | ----------------------------- | ------------------------------------ | -| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdashcms/*` | +| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdash-cms/*` | | `"./sandbox"` | Backend code for the sandbox | Fully self-contained (no externals) | | `"./admin"` | Admin UI components | Fully self-contained | diff --git a/skills/wordpress-theme-to-emdash/scaffold/package.json b/skills/wordpress-theme-to-emdash/scaffold/package.json index 6778ded..dd8ffe9 100644 --- a/skills/wordpress-theme-to-emdash/scaffold/package.json +++ b/skills/wordpress-theme-to-emdash/scaffold/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/theme-scaffold", + "name": "@emdash-cms/theme-scaffold", "type": "module", "version": "0.0.1", "private": true, diff --git a/templates/blank/.agents/skills/building-emdash-site/references/configuration.md b/templates/blank/.agents/skills/building-emdash-site/references/configuration.md index 619800b..d24f221 100644 --- a/templates/blank/.agents/skills/building-emdash-site/references/configuration.md +++ b/templates/blank/.agents/skills/building-emdash-site/references/configuration.md @@ -37,7 +37,7 @@ export default defineConfig({ ```javascript import cloudflare from "@astrojs/cloudflare"; import react from "@astrojs/react"; -import { d1, r2 } from "@emdashcms/cloudflare"; +import { d1, r2 } from "@emdash-cms/cloudflare"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; @@ -88,7 +88,7 @@ Requires a `wrangler.jsonc` with D1 and R2 bindings: Register plugins in `astro.config.mjs`: ```javascript -import { auditLogPlugin } from "@emdashcms/plugin-audit-log"; +import { auditLogPlugin } from "@emdash-cms/plugin-audit-log"; emdash({ database: sqlite({ url: "file:./data.db" }), @@ -181,7 +181,7 @@ Key dependencies for a Node.js site: } ``` -For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdashcms/cloudflare`. +For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdash-cms/cloudflare`. ## Dev Server diff --git a/templates/blank/.agents/skills/creating-plugins/references/admin-ui.md b/templates/blank/.agents/skills/creating-plugins/references/admin-ui.md index 04ac204..e2289e1 100644 --- a/templates/blank/.agents/skills/creating-plugins/references/admin-ui.md +++ b/templates/blank/.agents/skills/creating-plugins/references/admin-ui.md @@ -51,7 +51,7 @@ React components. Use `usePluginAPI()` to call plugin routes. ```typescript // src/components/SettingsPage.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function SettingsPage() { const api = usePluginAPI(); @@ -94,7 +94,7 @@ Dashboard cards with at-a-glance info. ```typescript // src/components/StatusWidget.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function StatusWidget() { const api = usePluginAPI(); @@ -134,10 +134,10 @@ const result = await api.get("history?limit=50"); // Query params ## Admin Components -Pre-built components from `@emdashcms/admin`: +Pre-built components from `@emdash-cms/admin`: ```typescript -import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdashcms/admin"; +import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdash-cms/admin"; ``` ## Auto-Generated Settings @@ -166,11 +166,11 @@ export default { }, format: "esm", dts: true, - external: ["react", "react-dom", "emdash", "@emdashcms/admin"], + external: ["react", "react-dom", "emdash", "@emdash-cms/admin"], }; ``` -Keep React and `@emdashcms/admin` as externals to avoid bundling duplicates. +Keep React and `@emdash-cms/admin` as externals to avoid bundling duplicates. ## Plugin Descriptor diff --git a/templates/blank/.agents/skills/creating-plugins/references/api-routes.md b/templates/blank/.agents/skills/creating-plugins/references/api-routes.md index 77d41aa..941d688 100644 --- a/templates/blank/.agents/skills/creating-plugins/references/api-routes.md +++ b/templates/blank/.agents/skills/creating-plugins/references/api-routes.md @@ -245,7 +245,7 @@ definePlugin({ ## Calling from Admin UI ```typescript -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; const api = usePluginAPI(); const data = await api.get("status"); diff --git a/templates/blank/.agents/skills/creating-plugins/references/block-kit.md b/templates/blank/.agents/skills/creating-plugins/references/block-kit.md index 560eef7..397505b 100644 --- a/templates/blank/.agents/skills/creating-plugins/references/block-kit.md +++ b/templates/blank/.agents/skills/creating-plugins/references/block-kit.md @@ -329,10 +329,10 @@ Show/hide fields based on other field values. Evaluated client-side, no round-tr ## Builder Helpers -`@emdashcms/blocks` provides TypeScript helpers: +`@emdash-cms/blocks` provides TypeScript helpers: ```typescript -import { blocks, elements } from "@emdashcms/blocks"; +import { blocks, elements } from "@emdash-cms/blocks"; const { header, form, section, stats, timeseriesChart, customChart, banner: bannerBlock } = blocks; const { textInput, toggle, select, button } = elements; diff --git a/templates/blank/.agents/skills/creating-plugins/references/publishing.md b/templates/blank/.agents/skills/creating-plugins/references/publishing.md index 60051b0..11ec097 100644 --- a/templates/blank/.agents/skills/creating-plugins/references/publishing.md +++ b/templates/blank/.agents/skills/creating-plugins/references/publishing.md @@ -31,7 +31,7 @@ The bundle command uses `package.json` exports to find entrypoints: | Export | Purpose | Built as | | ------------- | ----------------------------- | ------------------------------------ | -| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdashcms/*` | +| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdash-cms/*` | | `"./sandbox"` | Backend code for the sandbox | Fully self-contained (no externals) | | `"./admin"` | Admin UI components | Fully self-contained | diff --git a/templates/blank/package.json b/templates/blank/package.json index 68a98dd..d9d7a67 100644 --- a/templates/blank/package.json +++ b/templates/blank/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/template-blank", + "name": "@emdash-cms/template-blank", "version": "0.0.1", "private": true, "type": "module", diff --git a/templates/blog-cloudflare/.agents/skills/building-emdash-site/references/configuration.md b/templates/blog-cloudflare/.agents/skills/building-emdash-site/references/configuration.md index 619800b..d24f221 100644 --- a/templates/blog-cloudflare/.agents/skills/building-emdash-site/references/configuration.md +++ b/templates/blog-cloudflare/.agents/skills/building-emdash-site/references/configuration.md @@ -37,7 +37,7 @@ export default defineConfig({ ```javascript import cloudflare from "@astrojs/cloudflare"; import react from "@astrojs/react"; -import { d1, r2 } from "@emdashcms/cloudflare"; +import { d1, r2 } from "@emdash-cms/cloudflare"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; @@ -88,7 +88,7 @@ Requires a `wrangler.jsonc` with D1 and R2 bindings: Register plugins in `astro.config.mjs`: ```javascript -import { auditLogPlugin } from "@emdashcms/plugin-audit-log"; +import { auditLogPlugin } from "@emdash-cms/plugin-audit-log"; emdash({ database: sqlite({ url: "file:./data.db" }), @@ -181,7 +181,7 @@ Key dependencies for a Node.js site: } ``` -For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdashcms/cloudflare`. +For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdash-cms/cloudflare`. ## Dev Server diff --git a/templates/blog-cloudflare/.agents/skills/creating-plugins/references/admin-ui.md b/templates/blog-cloudflare/.agents/skills/creating-plugins/references/admin-ui.md index 04ac204..e2289e1 100644 --- a/templates/blog-cloudflare/.agents/skills/creating-plugins/references/admin-ui.md +++ b/templates/blog-cloudflare/.agents/skills/creating-plugins/references/admin-ui.md @@ -51,7 +51,7 @@ React components. Use `usePluginAPI()` to call plugin routes. ```typescript // src/components/SettingsPage.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function SettingsPage() { const api = usePluginAPI(); @@ -94,7 +94,7 @@ Dashboard cards with at-a-glance info. ```typescript // src/components/StatusWidget.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function StatusWidget() { const api = usePluginAPI(); @@ -134,10 +134,10 @@ const result = await api.get("history?limit=50"); // Query params ## Admin Components -Pre-built components from `@emdashcms/admin`: +Pre-built components from `@emdash-cms/admin`: ```typescript -import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdashcms/admin"; +import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdash-cms/admin"; ``` ## Auto-Generated Settings @@ -166,11 +166,11 @@ export default { }, format: "esm", dts: true, - external: ["react", "react-dom", "emdash", "@emdashcms/admin"], + external: ["react", "react-dom", "emdash", "@emdash-cms/admin"], }; ``` -Keep React and `@emdashcms/admin` as externals to avoid bundling duplicates. +Keep React and `@emdash-cms/admin` as externals to avoid bundling duplicates. ## Plugin Descriptor diff --git a/templates/blog-cloudflare/.agents/skills/creating-plugins/references/api-routes.md b/templates/blog-cloudflare/.agents/skills/creating-plugins/references/api-routes.md index 77d41aa..941d688 100644 --- a/templates/blog-cloudflare/.agents/skills/creating-plugins/references/api-routes.md +++ b/templates/blog-cloudflare/.agents/skills/creating-plugins/references/api-routes.md @@ -245,7 +245,7 @@ definePlugin({ ## Calling from Admin UI ```typescript -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; const api = usePluginAPI(); const data = await api.get("status"); diff --git a/templates/blog-cloudflare/.agents/skills/creating-plugins/references/block-kit.md b/templates/blog-cloudflare/.agents/skills/creating-plugins/references/block-kit.md index 560eef7..397505b 100644 --- a/templates/blog-cloudflare/.agents/skills/creating-plugins/references/block-kit.md +++ b/templates/blog-cloudflare/.agents/skills/creating-plugins/references/block-kit.md @@ -329,10 +329,10 @@ Show/hide fields based on other field values. Evaluated client-side, no round-tr ## Builder Helpers -`@emdashcms/blocks` provides TypeScript helpers: +`@emdash-cms/blocks` provides TypeScript helpers: ```typescript -import { blocks, elements } from "@emdashcms/blocks"; +import { blocks, elements } from "@emdash-cms/blocks"; const { header, form, section, stats, timeseriesChart, customChart, banner: bannerBlock } = blocks; const { textInput, toggle, select, button } = elements; diff --git a/templates/blog-cloudflare/.agents/skills/creating-plugins/references/publishing.md b/templates/blog-cloudflare/.agents/skills/creating-plugins/references/publishing.md index 60051b0..11ec097 100644 --- a/templates/blog-cloudflare/.agents/skills/creating-plugins/references/publishing.md +++ b/templates/blog-cloudflare/.agents/skills/creating-plugins/references/publishing.md @@ -31,7 +31,7 @@ The bundle command uses `package.json` exports to find entrypoints: | Export | Purpose | Built as | | ------------- | ----------------------------- | ------------------------------------ | -| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdashcms/*` | +| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdash-cms/*` | | `"./sandbox"` | Backend code for the sandbox | Fully self-contained (no externals) | | `"./admin"` | Admin UI components | Fully self-contained | diff --git a/templates/blog-cloudflare/astro.config.mjs b/templates/blog-cloudflare/astro.config.mjs index d6a122f..8a50f80 100644 --- a/templates/blog-cloudflare/astro.config.mjs +++ b/templates/blog-cloudflare/astro.config.mjs @@ -1,8 +1,8 @@ import cloudflare from "@astrojs/cloudflare"; import react from "@astrojs/react"; -import { d1, r2, sandbox } from "@emdashcms/cloudflare"; -import { formsPlugin } from "@emdashcms/plugin-forms"; -import { webhookNotifierPlugin } from "@emdashcms/plugin-webhook-notifier"; +import { d1, r2, sandbox } from "@emdash-cms/cloudflare"; +import { formsPlugin } from "@emdash-cms/plugin-forms"; +import { webhookNotifierPlugin } from "@emdash-cms/plugin-webhook-notifier"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; diff --git a/templates/blog-cloudflare/package.json b/templates/blog-cloudflare/package.json index d7f74c2..9af23ee 100644 --- a/templates/blog-cloudflare/package.json +++ b/templates/blog-cloudflare/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/template-blog-cloudflare", + "name": "@emdash-cms/template-blog-cloudflare", "version": "0.0.1", "private": true, "type": "module", @@ -15,9 +15,9 @@ "dependencies": { "@astrojs/cloudflare": "catalog:", "@astrojs/react": "catalog:", - "@emdashcms/cloudflare": "workspace:*", - "@emdashcms/plugin-forms": "workspace:*", - "@emdashcms/plugin-webhook-notifier": "workspace:*", + "@emdash-cms/cloudflare": "workspace:*", + "@emdash-cms/plugin-forms": "workspace:*", + "@emdash-cms/plugin-webhook-notifier": "workspace:*", "astro": "catalog:", "emdash": "workspace:*", "react": "catalog:", diff --git a/templates/blog/.agents/skills/building-emdash-site/references/configuration.md b/templates/blog/.agents/skills/building-emdash-site/references/configuration.md index 619800b..d24f221 100644 --- a/templates/blog/.agents/skills/building-emdash-site/references/configuration.md +++ b/templates/blog/.agents/skills/building-emdash-site/references/configuration.md @@ -37,7 +37,7 @@ export default defineConfig({ ```javascript import cloudflare from "@astrojs/cloudflare"; import react from "@astrojs/react"; -import { d1, r2 } from "@emdashcms/cloudflare"; +import { d1, r2 } from "@emdash-cms/cloudflare"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; @@ -88,7 +88,7 @@ Requires a `wrangler.jsonc` with D1 and R2 bindings: Register plugins in `astro.config.mjs`: ```javascript -import { auditLogPlugin } from "@emdashcms/plugin-audit-log"; +import { auditLogPlugin } from "@emdash-cms/plugin-audit-log"; emdash({ database: sqlite({ url: "file:./data.db" }), @@ -181,7 +181,7 @@ Key dependencies for a Node.js site: } ``` -For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdashcms/cloudflare`. +For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdash-cms/cloudflare`. ## Dev Server diff --git a/templates/blog/.agents/skills/creating-plugins/references/admin-ui.md b/templates/blog/.agents/skills/creating-plugins/references/admin-ui.md index 04ac204..e2289e1 100644 --- a/templates/blog/.agents/skills/creating-plugins/references/admin-ui.md +++ b/templates/blog/.agents/skills/creating-plugins/references/admin-ui.md @@ -51,7 +51,7 @@ React components. Use `usePluginAPI()` to call plugin routes. ```typescript // src/components/SettingsPage.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function SettingsPage() { const api = usePluginAPI(); @@ -94,7 +94,7 @@ Dashboard cards with at-a-glance info. ```typescript // src/components/StatusWidget.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function StatusWidget() { const api = usePluginAPI(); @@ -134,10 +134,10 @@ const result = await api.get("history?limit=50"); // Query params ## Admin Components -Pre-built components from `@emdashcms/admin`: +Pre-built components from `@emdash-cms/admin`: ```typescript -import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdashcms/admin"; +import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdash-cms/admin"; ``` ## Auto-Generated Settings @@ -166,11 +166,11 @@ export default { }, format: "esm", dts: true, - external: ["react", "react-dom", "emdash", "@emdashcms/admin"], + external: ["react", "react-dom", "emdash", "@emdash-cms/admin"], }; ``` -Keep React and `@emdashcms/admin` as externals to avoid bundling duplicates. +Keep React and `@emdash-cms/admin` as externals to avoid bundling duplicates. ## Plugin Descriptor diff --git a/templates/blog/.agents/skills/creating-plugins/references/api-routes.md b/templates/blog/.agents/skills/creating-plugins/references/api-routes.md index 77d41aa..941d688 100644 --- a/templates/blog/.agents/skills/creating-plugins/references/api-routes.md +++ b/templates/blog/.agents/skills/creating-plugins/references/api-routes.md @@ -245,7 +245,7 @@ definePlugin({ ## Calling from Admin UI ```typescript -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; const api = usePluginAPI(); const data = await api.get("status"); diff --git a/templates/blog/.agents/skills/creating-plugins/references/block-kit.md b/templates/blog/.agents/skills/creating-plugins/references/block-kit.md index 560eef7..397505b 100644 --- a/templates/blog/.agents/skills/creating-plugins/references/block-kit.md +++ b/templates/blog/.agents/skills/creating-plugins/references/block-kit.md @@ -329,10 +329,10 @@ Show/hide fields based on other field values. Evaluated client-side, no round-tr ## Builder Helpers -`@emdashcms/blocks` provides TypeScript helpers: +`@emdash-cms/blocks` provides TypeScript helpers: ```typescript -import { blocks, elements } from "@emdashcms/blocks"; +import { blocks, elements } from "@emdash-cms/blocks"; const { header, form, section, stats, timeseriesChart, customChart, banner: bannerBlock } = blocks; const { textInput, toggle, select, button } = elements; diff --git a/templates/blog/.agents/skills/creating-plugins/references/publishing.md b/templates/blog/.agents/skills/creating-plugins/references/publishing.md index 60051b0..11ec097 100644 --- a/templates/blog/.agents/skills/creating-plugins/references/publishing.md +++ b/templates/blog/.agents/skills/creating-plugins/references/publishing.md @@ -31,7 +31,7 @@ The bundle command uses `package.json` exports to find entrypoints: | Export | Purpose | Built as | | ------------- | ----------------------------- | ------------------------------------ | -| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdashcms/*` | +| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdash-cms/*` | | `"./sandbox"` | Backend code for the sandbox | Fully self-contained (no externals) | | `"./admin"` | Admin UI components | Fully self-contained | diff --git a/templates/blog/astro.config.mjs b/templates/blog/astro.config.mjs index 7700501..e84e940 100644 --- a/templates/blog/astro.config.mjs +++ b/templates/blog/astro.config.mjs @@ -1,6 +1,6 @@ import node from "@astrojs/node"; import react from "@astrojs/react"; -import { auditLogPlugin } from "@emdashcms/plugin-audit-log"; +import { auditLogPlugin } from "@emdash-cms/plugin-audit-log"; import { defineConfig } from "astro/config"; import emdash, { local } from "emdash/astro"; import { sqlite } from "emdash/db"; diff --git a/templates/blog/package.json b/templates/blog/package.json index e2e2324..965b2eb 100644 --- a/templates/blog/package.json +++ b/templates/blog/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/template-blog", + "name": "@emdash-cms/template-blog", "version": "0.0.1", "private": true, "type": "module", @@ -18,7 +18,7 @@ "dependencies": { "@astrojs/node": "catalog:", "@astrojs/react": "catalog:", - "@emdashcms/plugin-audit-log": "workspace:*", + "@emdash-cms/plugin-audit-log": "workspace:*", "astro": "catalog:", "better-sqlite3": "catalog:", "emdash": "workspace:*", diff --git a/templates/marketing-cloudflare/.agents/skills/building-emdash-site/references/configuration.md b/templates/marketing-cloudflare/.agents/skills/building-emdash-site/references/configuration.md index 619800b..d24f221 100644 --- a/templates/marketing-cloudflare/.agents/skills/building-emdash-site/references/configuration.md +++ b/templates/marketing-cloudflare/.agents/skills/building-emdash-site/references/configuration.md @@ -37,7 +37,7 @@ export default defineConfig({ ```javascript import cloudflare from "@astrojs/cloudflare"; import react from "@astrojs/react"; -import { d1, r2 } from "@emdashcms/cloudflare"; +import { d1, r2 } from "@emdash-cms/cloudflare"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; @@ -88,7 +88,7 @@ Requires a `wrangler.jsonc` with D1 and R2 bindings: Register plugins in `astro.config.mjs`: ```javascript -import { auditLogPlugin } from "@emdashcms/plugin-audit-log"; +import { auditLogPlugin } from "@emdash-cms/plugin-audit-log"; emdash({ database: sqlite({ url: "file:./data.db" }), @@ -181,7 +181,7 @@ Key dependencies for a Node.js site: } ``` -For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdashcms/cloudflare`. +For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdash-cms/cloudflare`. ## Dev Server diff --git a/templates/marketing-cloudflare/.agents/skills/creating-plugins/references/admin-ui.md b/templates/marketing-cloudflare/.agents/skills/creating-plugins/references/admin-ui.md index 04ac204..e2289e1 100644 --- a/templates/marketing-cloudflare/.agents/skills/creating-plugins/references/admin-ui.md +++ b/templates/marketing-cloudflare/.agents/skills/creating-plugins/references/admin-ui.md @@ -51,7 +51,7 @@ React components. Use `usePluginAPI()` to call plugin routes. ```typescript // src/components/SettingsPage.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function SettingsPage() { const api = usePluginAPI(); @@ -94,7 +94,7 @@ Dashboard cards with at-a-glance info. ```typescript // src/components/StatusWidget.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function StatusWidget() { const api = usePluginAPI(); @@ -134,10 +134,10 @@ const result = await api.get("history?limit=50"); // Query params ## Admin Components -Pre-built components from `@emdashcms/admin`: +Pre-built components from `@emdash-cms/admin`: ```typescript -import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdashcms/admin"; +import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdash-cms/admin"; ``` ## Auto-Generated Settings @@ -166,11 +166,11 @@ export default { }, format: "esm", dts: true, - external: ["react", "react-dom", "emdash", "@emdashcms/admin"], + external: ["react", "react-dom", "emdash", "@emdash-cms/admin"], }; ``` -Keep React and `@emdashcms/admin` as externals to avoid bundling duplicates. +Keep React and `@emdash-cms/admin` as externals to avoid bundling duplicates. ## Plugin Descriptor diff --git a/templates/marketing-cloudflare/.agents/skills/creating-plugins/references/api-routes.md b/templates/marketing-cloudflare/.agents/skills/creating-plugins/references/api-routes.md index 77d41aa..941d688 100644 --- a/templates/marketing-cloudflare/.agents/skills/creating-plugins/references/api-routes.md +++ b/templates/marketing-cloudflare/.agents/skills/creating-plugins/references/api-routes.md @@ -245,7 +245,7 @@ definePlugin({ ## Calling from Admin UI ```typescript -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; const api = usePluginAPI(); const data = await api.get("status"); diff --git a/templates/marketing-cloudflare/.agents/skills/creating-plugins/references/block-kit.md b/templates/marketing-cloudflare/.agents/skills/creating-plugins/references/block-kit.md index 560eef7..397505b 100644 --- a/templates/marketing-cloudflare/.agents/skills/creating-plugins/references/block-kit.md +++ b/templates/marketing-cloudflare/.agents/skills/creating-plugins/references/block-kit.md @@ -329,10 +329,10 @@ Show/hide fields based on other field values. Evaluated client-side, no round-tr ## Builder Helpers -`@emdashcms/blocks` provides TypeScript helpers: +`@emdash-cms/blocks` provides TypeScript helpers: ```typescript -import { blocks, elements } from "@emdashcms/blocks"; +import { blocks, elements } from "@emdash-cms/blocks"; const { header, form, section, stats, timeseriesChart, customChart, banner: bannerBlock } = blocks; const { textInput, toggle, select, button } = elements; diff --git a/templates/marketing-cloudflare/.agents/skills/creating-plugins/references/publishing.md b/templates/marketing-cloudflare/.agents/skills/creating-plugins/references/publishing.md index 60051b0..11ec097 100644 --- a/templates/marketing-cloudflare/.agents/skills/creating-plugins/references/publishing.md +++ b/templates/marketing-cloudflare/.agents/skills/creating-plugins/references/publishing.md @@ -31,7 +31,7 @@ The bundle command uses `package.json` exports to find entrypoints: | Export | Purpose | Built as | | ------------- | ----------------------------- | ------------------------------------ | -| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdashcms/*` | +| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdash-cms/*` | | `"./sandbox"` | Backend code for the sandbox | Fully self-contained (no externals) | | `"./admin"` | Admin UI components | Fully self-contained | diff --git a/templates/marketing-cloudflare/astro.config.mjs b/templates/marketing-cloudflare/astro.config.mjs index 528ffda..1f01357 100644 --- a/templates/marketing-cloudflare/astro.config.mjs +++ b/templates/marketing-cloudflare/astro.config.mjs @@ -1,6 +1,6 @@ import cloudflare from "@astrojs/cloudflare"; import react from "@astrojs/react"; -import { d1, r2 } from "@emdashcms/cloudflare"; +import { d1, r2 } from "@emdash-cms/cloudflare"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; diff --git a/templates/marketing-cloudflare/package.json b/templates/marketing-cloudflare/package.json index a1ea3ba..0847999 100644 --- a/templates/marketing-cloudflare/package.json +++ b/templates/marketing-cloudflare/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/template-marketing-cloudflare", + "name": "@emdash-cms/template-marketing-cloudflare", "version": "0.0.1", "private": true, "type": "module", @@ -15,7 +15,7 @@ "dependencies": { "@astrojs/cloudflare": "catalog:", "@astrojs/react": "catalog:", - "@emdashcms/cloudflare": "workspace:*", + "@emdash-cms/cloudflare": "workspace:*", "astro": "catalog:", "emdash": "workspace:*", "react": "catalog:", diff --git a/templates/marketing/.agents/skills/building-emdash-site/references/configuration.md b/templates/marketing/.agents/skills/building-emdash-site/references/configuration.md index 619800b..d24f221 100644 --- a/templates/marketing/.agents/skills/building-emdash-site/references/configuration.md +++ b/templates/marketing/.agents/skills/building-emdash-site/references/configuration.md @@ -37,7 +37,7 @@ export default defineConfig({ ```javascript import cloudflare from "@astrojs/cloudflare"; import react from "@astrojs/react"; -import { d1, r2 } from "@emdashcms/cloudflare"; +import { d1, r2 } from "@emdash-cms/cloudflare"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; @@ -88,7 +88,7 @@ Requires a `wrangler.jsonc` with D1 and R2 bindings: Register plugins in `astro.config.mjs`: ```javascript -import { auditLogPlugin } from "@emdashcms/plugin-audit-log"; +import { auditLogPlugin } from "@emdash-cms/plugin-audit-log"; emdash({ database: sqlite({ url: "file:./data.db" }), @@ -181,7 +181,7 @@ Key dependencies for a Node.js site: } ``` -For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdashcms/cloudflare`. +For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdash-cms/cloudflare`. ## Dev Server diff --git a/templates/marketing/.agents/skills/creating-plugins/references/admin-ui.md b/templates/marketing/.agents/skills/creating-plugins/references/admin-ui.md index 04ac204..e2289e1 100644 --- a/templates/marketing/.agents/skills/creating-plugins/references/admin-ui.md +++ b/templates/marketing/.agents/skills/creating-plugins/references/admin-ui.md @@ -51,7 +51,7 @@ React components. Use `usePluginAPI()` to call plugin routes. ```typescript // src/components/SettingsPage.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function SettingsPage() { const api = usePluginAPI(); @@ -94,7 +94,7 @@ Dashboard cards with at-a-glance info. ```typescript // src/components/StatusWidget.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function StatusWidget() { const api = usePluginAPI(); @@ -134,10 +134,10 @@ const result = await api.get("history?limit=50"); // Query params ## Admin Components -Pre-built components from `@emdashcms/admin`: +Pre-built components from `@emdash-cms/admin`: ```typescript -import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdashcms/admin"; +import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdash-cms/admin"; ``` ## Auto-Generated Settings @@ -166,11 +166,11 @@ export default { }, format: "esm", dts: true, - external: ["react", "react-dom", "emdash", "@emdashcms/admin"], + external: ["react", "react-dom", "emdash", "@emdash-cms/admin"], }; ``` -Keep React and `@emdashcms/admin` as externals to avoid bundling duplicates. +Keep React and `@emdash-cms/admin` as externals to avoid bundling duplicates. ## Plugin Descriptor diff --git a/templates/marketing/.agents/skills/creating-plugins/references/api-routes.md b/templates/marketing/.agents/skills/creating-plugins/references/api-routes.md index 77d41aa..941d688 100644 --- a/templates/marketing/.agents/skills/creating-plugins/references/api-routes.md +++ b/templates/marketing/.agents/skills/creating-plugins/references/api-routes.md @@ -245,7 +245,7 @@ definePlugin({ ## Calling from Admin UI ```typescript -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; const api = usePluginAPI(); const data = await api.get("status"); diff --git a/templates/marketing/.agents/skills/creating-plugins/references/block-kit.md b/templates/marketing/.agents/skills/creating-plugins/references/block-kit.md index 560eef7..397505b 100644 --- a/templates/marketing/.agents/skills/creating-plugins/references/block-kit.md +++ b/templates/marketing/.agents/skills/creating-plugins/references/block-kit.md @@ -329,10 +329,10 @@ Show/hide fields based on other field values. Evaluated client-side, no round-tr ## Builder Helpers -`@emdashcms/blocks` provides TypeScript helpers: +`@emdash-cms/blocks` provides TypeScript helpers: ```typescript -import { blocks, elements } from "@emdashcms/blocks"; +import { blocks, elements } from "@emdash-cms/blocks"; const { header, form, section, stats, timeseriesChart, customChart, banner: bannerBlock } = blocks; const { textInput, toggle, select, button } = elements; diff --git a/templates/marketing/.agents/skills/creating-plugins/references/publishing.md b/templates/marketing/.agents/skills/creating-plugins/references/publishing.md index 60051b0..11ec097 100644 --- a/templates/marketing/.agents/skills/creating-plugins/references/publishing.md +++ b/templates/marketing/.agents/skills/creating-plugins/references/publishing.md @@ -31,7 +31,7 @@ The bundle command uses `package.json` exports to find entrypoints: | Export | Purpose | Built as | | ------------- | ----------------------------- | ------------------------------------ | -| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdashcms/*` | +| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdash-cms/*` | | `"./sandbox"` | Backend code for the sandbox | Fully self-contained (no externals) | | `"./admin"` | Admin UI components | Fully self-contained | diff --git a/templates/marketing/package.json b/templates/marketing/package.json index 2f5f3e1..6cf6080 100644 --- a/templates/marketing/package.json +++ b/templates/marketing/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/template-marketing", + "name": "@emdash-cms/template-marketing", "version": "0.0.1", "private": true, "type": "module", diff --git a/templates/portfolio-cloudflare/.agents/skills/building-emdash-site/references/configuration.md b/templates/portfolio-cloudflare/.agents/skills/building-emdash-site/references/configuration.md index 619800b..d24f221 100644 --- a/templates/portfolio-cloudflare/.agents/skills/building-emdash-site/references/configuration.md +++ b/templates/portfolio-cloudflare/.agents/skills/building-emdash-site/references/configuration.md @@ -37,7 +37,7 @@ export default defineConfig({ ```javascript import cloudflare from "@astrojs/cloudflare"; import react from "@astrojs/react"; -import { d1, r2 } from "@emdashcms/cloudflare"; +import { d1, r2 } from "@emdash-cms/cloudflare"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; @@ -88,7 +88,7 @@ Requires a `wrangler.jsonc` with D1 and R2 bindings: Register plugins in `astro.config.mjs`: ```javascript -import { auditLogPlugin } from "@emdashcms/plugin-audit-log"; +import { auditLogPlugin } from "@emdash-cms/plugin-audit-log"; emdash({ database: sqlite({ url: "file:./data.db" }), @@ -181,7 +181,7 @@ Key dependencies for a Node.js site: } ``` -For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdashcms/cloudflare`. +For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdash-cms/cloudflare`. ## Dev Server diff --git a/templates/portfolio-cloudflare/.agents/skills/creating-plugins/references/admin-ui.md b/templates/portfolio-cloudflare/.agents/skills/creating-plugins/references/admin-ui.md index 04ac204..e2289e1 100644 --- a/templates/portfolio-cloudflare/.agents/skills/creating-plugins/references/admin-ui.md +++ b/templates/portfolio-cloudflare/.agents/skills/creating-plugins/references/admin-ui.md @@ -51,7 +51,7 @@ React components. Use `usePluginAPI()` to call plugin routes. ```typescript // src/components/SettingsPage.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function SettingsPage() { const api = usePluginAPI(); @@ -94,7 +94,7 @@ Dashboard cards with at-a-glance info. ```typescript // src/components/StatusWidget.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function StatusWidget() { const api = usePluginAPI(); @@ -134,10 +134,10 @@ const result = await api.get("history?limit=50"); // Query params ## Admin Components -Pre-built components from `@emdashcms/admin`: +Pre-built components from `@emdash-cms/admin`: ```typescript -import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdashcms/admin"; +import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdash-cms/admin"; ``` ## Auto-Generated Settings @@ -166,11 +166,11 @@ export default { }, format: "esm", dts: true, - external: ["react", "react-dom", "emdash", "@emdashcms/admin"], + external: ["react", "react-dom", "emdash", "@emdash-cms/admin"], }; ``` -Keep React and `@emdashcms/admin` as externals to avoid bundling duplicates. +Keep React and `@emdash-cms/admin` as externals to avoid bundling duplicates. ## Plugin Descriptor diff --git a/templates/portfolio-cloudflare/.agents/skills/creating-plugins/references/api-routes.md b/templates/portfolio-cloudflare/.agents/skills/creating-plugins/references/api-routes.md index 77d41aa..941d688 100644 --- a/templates/portfolio-cloudflare/.agents/skills/creating-plugins/references/api-routes.md +++ b/templates/portfolio-cloudflare/.agents/skills/creating-plugins/references/api-routes.md @@ -245,7 +245,7 @@ definePlugin({ ## Calling from Admin UI ```typescript -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; const api = usePluginAPI(); const data = await api.get("status"); diff --git a/templates/portfolio-cloudflare/.agents/skills/creating-plugins/references/block-kit.md b/templates/portfolio-cloudflare/.agents/skills/creating-plugins/references/block-kit.md index 560eef7..397505b 100644 --- a/templates/portfolio-cloudflare/.agents/skills/creating-plugins/references/block-kit.md +++ b/templates/portfolio-cloudflare/.agents/skills/creating-plugins/references/block-kit.md @@ -329,10 +329,10 @@ Show/hide fields based on other field values. Evaluated client-side, no round-tr ## Builder Helpers -`@emdashcms/blocks` provides TypeScript helpers: +`@emdash-cms/blocks` provides TypeScript helpers: ```typescript -import { blocks, elements } from "@emdashcms/blocks"; +import { blocks, elements } from "@emdash-cms/blocks"; const { header, form, section, stats, timeseriesChart, customChart, banner: bannerBlock } = blocks; const { textInput, toggle, select, button } = elements; diff --git a/templates/portfolio-cloudflare/.agents/skills/creating-plugins/references/publishing.md b/templates/portfolio-cloudflare/.agents/skills/creating-plugins/references/publishing.md index 60051b0..11ec097 100644 --- a/templates/portfolio-cloudflare/.agents/skills/creating-plugins/references/publishing.md +++ b/templates/portfolio-cloudflare/.agents/skills/creating-plugins/references/publishing.md @@ -31,7 +31,7 @@ The bundle command uses `package.json` exports to find entrypoints: | Export | Purpose | Built as | | ------------- | ----------------------------- | ------------------------------------ | -| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdashcms/*` | +| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdash-cms/*` | | `"./sandbox"` | Backend code for the sandbox | Fully self-contained (no externals) | | `"./admin"` | Admin UI components | Fully self-contained | diff --git a/templates/portfolio-cloudflare/astro.config.mjs b/templates/portfolio-cloudflare/astro.config.mjs index 528ffda..1f01357 100644 --- a/templates/portfolio-cloudflare/astro.config.mjs +++ b/templates/portfolio-cloudflare/astro.config.mjs @@ -1,6 +1,6 @@ import cloudflare from "@astrojs/cloudflare"; import react from "@astrojs/react"; -import { d1, r2 } from "@emdashcms/cloudflare"; +import { d1, r2 } from "@emdash-cms/cloudflare"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; diff --git a/templates/portfolio-cloudflare/package.json b/templates/portfolio-cloudflare/package.json index 8a980af..a946a42 100644 --- a/templates/portfolio-cloudflare/package.json +++ b/templates/portfolio-cloudflare/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/template-portfolio-cloudflare", + "name": "@emdash-cms/template-portfolio-cloudflare", "version": "0.0.1", "private": true, "type": "module", @@ -18,7 +18,7 @@ "dependencies": { "@astrojs/cloudflare": "catalog:", "@astrojs/react": "catalog:", - "@emdashcms/cloudflare": "workspace:*", + "@emdash-cms/cloudflare": "workspace:*", "astro": "catalog:", "emdash": "workspace:*", "react": "catalog:", diff --git a/templates/portfolio/.agents/skills/building-emdash-site/references/configuration.md b/templates/portfolio/.agents/skills/building-emdash-site/references/configuration.md index 619800b..d24f221 100644 --- a/templates/portfolio/.agents/skills/building-emdash-site/references/configuration.md +++ b/templates/portfolio/.agents/skills/building-emdash-site/references/configuration.md @@ -37,7 +37,7 @@ export default defineConfig({ ```javascript import cloudflare from "@astrojs/cloudflare"; import react from "@astrojs/react"; -import { d1, r2 } from "@emdashcms/cloudflare"; +import { d1, r2 } from "@emdash-cms/cloudflare"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; @@ -88,7 +88,7 @@ Requires a `wrangler.jsonc` with D1 and R2 bindings: Register plugins in `astro.config.mjs`: ```javascript -import { auditLogPlugin } from "@emdashcms/plugin-audit-log"; +import { auditLogPlugin } from "@emdash-cms/plugin-audit-log"; emdash({ database: sqlite({ url: "file:./data.db" }), @@ -181,7 +181,7 @@ Key dependencies for a Node.js site: } ``` -For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdashcms/cloudflare`. +For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdash-cms/cloudflare`. ## Dev Server diff --git a/templates/portfolio/.agents/skills/creating-plugins/references/admin-ui.md b/templates/portfolio/.agents/skills/creating-plugins/references/admin-ui.md index 04ac204..e2289e1 100644 --- a/templates/portfolio/.agents/skills/creating-plugins/references/admin-ui.md +++ b/templates/portfolio/.agents/skills/creating-plugins/references/admin-ui.md @@ -51,7 +51,7 @@ React components. Use `usePluginAPI()` to call plugin routes. ```typescript // src/components/SettingsPage.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function SettingsPage() { const api = usePluginAPI(); @@ -94,7 +94,7 @@ Dashboard cards with at-a-glance info. ```typescript // src/components/StatusWidget.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function StatusWidget() { const api = usePluginAPI(); @@ -134,10 +134,10 @@ const result = await api.get("history?limit=50"); // Query params ## Admin Components -Pre-built components from `@emdashcms/admin`: +Pre-built components from `@emdash-cms/admin`: ```typescript -import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdashcms/admin"; +import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdash-cms/admin"; ``` ## Auto-Generated Settings @@ -166,11 +166,11 @@ export default { }, format: "esm", dts: true, - external: ["react", "react-dom", "emdash", "@emdashcms/admin"], + external: ["react", "react-dom", "emdash", "@emdash-cms/admin"], }; ``` -Keep React and `@emdashcms/admin` as externals to avoid bundling duplicates. +Keep React and `@emdash-cms/admin` as externals to avoid bundling duplicates. ## Plugin Descriptor diff --git a/templates/portfolio/.agents/skills/creating-plugins/references/api-routes.md b/templates/portfolio/.agents/skills/creating-plugins/references/api-routes.md index 77d41aa..941d688 100644 --- a/templates/portfolio/.agents/skills/creating-plugins/references/api-routes.md +++ b/templates/portfolio/.agents/skills/creating-plugins/references/api-routes.md @@ -245,7 +245,7 @@ definePlugin({ ## Calling from Admin UI ```typescript -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; const api = usePluginAPI(); const data = await api.get("status"); diff --git a/templates/portfolio/.agents/skills/creating-plugins/references/block-kit.md b/templates/portfolio/.agents/skills/creating-plugins/references/block-kit.md index 560eef7..397505b 100644 --- a/templates/portfolio/.agents/skills/creating-plugins/references/block-kit.md +++ b/templates/portfolio/.agents/skills/creating-plugins/references/block-kit.md @@ -329,10 +329,10 @@ Show/hide fields based on other field values. Evaluated client-side, no round-tr ## Builder Helpers -`@emdashcms/blocks` provides TypeScript helpers: +`@emdash-cms/blocks` provides TypeScript helpers: ```typescript -import { blocks, elements } from "@emdashcms/blocks"; +import { blocks, elements } from "@emdash-cms/blocks"; const { header, form, section, stats, timeseriesChart, customChart, banner: bannerBlock } = blocks; const { textInput, toggle, select, button } = elements; diff --git a/templates/portfolio/.agents/skills/creating-plugins/references/publishing.md b/templates/portfolio/.agents/skills/creating-plugins/references/publishing.md index 60051b0..11ec097 100644 --- a/templates/portfolio/.agents/skills/creating-plugins/references/publishing.md +++ b/templates/portfolio/.agents/skills/creating-plugins/references/publishing.md @@ -31,7 +31,7 @@ The bundle command uses `package.json` exports to find entrypoints: | Export | Purpose | Built as | | ------------- | ----------------------------- | ------------------------------------ | -| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdashcms/*` | +| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdash-cms/*` | | `"./sandbox"` | Backend code for the sandbox | Fully self-contained (no externals) | | `"./admin"` | Admin UI components | Fully self-contained | diff --git a/templates/portfolio/package.json b/templates/portfolio/package.json index d5ae480..8b1e9e6 100644 --- a/templates/portfolio/package.json +++ b/templates/portfolio/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/template-portfolio", + "name": "@emdash-cms/template-portfolio", "version": "0.0.1", "private": true, "type": "module", diff --git a/templates/starter-cloudflare/.agents/skills/building-emdash-site/references/configuration.md b/templates/starter-cloudflare/.agents/skills/building-emdash-site/references/configuration.md index 619800b..d24f221 100644 --- a/templates/starter-cloudflare/.agents/skills/building-emdash-site/references/configuration.md +++ b/templates/starter-cloudflare/.agents/skills/building-emdash-site/references/configuration.md @@ -37,7 +37,7 @@ export default defineConfig({ ```javascript import cloudflare from "@astrojs/cloudflare"; import react from "@astrojs/react"; -import { d1, r2 } from "@emdashcms/cloudflare"; +import { d1, r2 } from "@emdash-cms/cloudflare"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; @@ -88,7 +88,7 @@ Requires a `wrangler.jsonc` with D1 and R2 bindings: Register plugins in `astro.config.mjs`: ```javascript -import { auditLogPlugin } from "@emdashcms/plugin-audit-log"; +import { auditLogPlugin } from "@emdash-cms/plugin-audit-log"; emdash({ database: sqlite({ url: "file:./data.db" }), @@ -181,7 +181,7 @@ Key dependencies for a Node.js site: } ``` -For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdashcms/cloudflare`. +For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdash-cms/cloudflare`. ## Dev Server diff --git a/templates/starter-cloudflare/.agents/skills/creating-plugins/references/admin-ui.md b/templates/starter-cloudflare/.agents/skills/creating-plugins/references/admin-ui.md index 04ac204..e2289e1 100644 --- a/templates/starter-cloudflare/.agents/skills/creating-plugins/references/admin-ui.md +++ b/templates/starter-cloudflare/.agents/skills/creating-plugins/references/admin-ui.md @@ -51,7 +51,7 @@ React components. Use `usePluginAPI()` to call plugin routes. ```typescript // src/components/SettingsPage.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function SettingsPage() { const api = usePluginAPI(); @@ -94,7 +94,7 @@ Dashboard cards with at-a-glance info. ```typescript // src/components/StatusWidget.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function StatusWidget() { const api = usePluginAPI(); @@ -134,10 +134,10 @@ const result = await api.get("history?limit=50"); // Query params ## Admin Components -Pre-built components from `@emdashcms/admin`: +Pre-built components from `@emdash-cms/admin`: ```typescript -import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdashcms/admin"; +import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdash-cms/admin"; ``` ## Auto-Generated Settings @@ -166,11 +166,11 @@ export default { }, format: "esm", dts: true, - external: ["react", "react-dom", "emdash", "@emdashcms/admin"], + external: ["react", "react-dom", "emdash", "@emdash-cms/admin"], }; ``` -Keep React and `@emdashcms/admin` as externals to avoid bundling duplicates. +Keep React and `@emdash-cms/admin` as externals to avoid bundling duplicates. ## Plugin Descriptor diff --git a/templates/starter-cloudflare/.agents/skills/creating-plugins/references/api-routes.md b/templates/starter-cloudflare/.agents/skills/creating-plugins/references/api-routes.md index 77d41aa..941d688 100644 --- a/templates/starter-cloudflare/.agents/skills/creating-plugins/references/api-routes.md +++ b/templates/starter-cloudflare/.agents/skills/creating-plugins/references/api-routes.md @@ -245,7 +245,7 @@ definePlugin({ ## Calling from Admin UI ```typescript -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; const api = usePluginAPI(); const data = await api.get("status"); diff --git a/templates/starter-cloudflare/.agents/skills/creating-plugins/references/block-kit.md b/templates/starter-cloudflare/.agents/skills/creating-plugins/references/block-kit.md index 560eef7..397505b 100644 --- a/templates/starter-cloudflare/.agents/skills/creating-plugins/references/block-kit.md +++ b/templates/starter-cloudflare/.agents/skills/creating-plugins/references/block-kit.md @@ -329,10 +329,10 @@ Show/hide fields based on other field values. Evaluated client-side, no round-tr ## Builder Helpers -`@emdashcms/blocks` provides TypeScript helpers: +`@emdash-cms/blocks` provides TypeScript helpers: ```typescript -import { blocks, elements } from "@emdashcms/blocks"; +import { blocks, elements } from "@emdash-cms/blocks"; const { header, form, section, stats, timeseriesChart, customChart, banner: bannerBlock } = blocks; const { textInput, toggle, select, button } = elements; diff --git a/templates/starter-cloudflare/.agents/skills/creating-plugins/references/publishing.md b/templates/starter-cloudflare/.agents/skills/creating-plugins/references/publishing.md index 60051b0..11ec097 100644 --- a/templates/starter-cloudflare/.agents/skills/creating-plugins/references/publishing.md +++ b/templates/starter-cloudflare/.agents/skills/creating-plugins/references/publishing.md @@ -31,7 +31,7 @@ The bundle command uses `package.json` exports to find entrypoints: | Export | Purpose | Built as | | ------------- | ----------------------------- | ------------------------------------ | -| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdashcms/*` | +| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdash-cms/*` | | `"./sandbox"` | Backend code for the sandbox | Fully self-contained (no externals) | | `"./admin"` | Admin UI components | Fully self-contained | diff --git a/templates/starter-cloudflare/astro.config.mjs b/templates/starter-cloudflare/astro.config.mjs index 528ffda..1f01357 100644 --- a/templates/starter-cloudflare/astro.config.mjs +++ b/templates/starter-cloudflare/astro.config.mjs @@ -1,6 +1,6 @@ import cloudflare from "@astrojs/cloudflare"; import react from "@astrojs/react"; -import { d1, r2 } from "@emdashcms/cloudflare"; +import { d1, r2 } from "@emdash-cms/cloudflare"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; diff --git a/templates/starter-cloudflare/package.json b/templates/starter-cloudflare/package.json index 63a933c..6c722b4 100644 --- a/templates/starter-cloudflare/package.json +++ b/templates/starter-cloudflare/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/template-starter-cloudflare", + "name": "@emdash-cms/template-starter-cloudflare", "version": "0.0.1", "private": true, "type": "module", @@ -15,7 +15,7 @@ "dependencies": { "@astrojs/cloudflare": "catalog:", "@astrojs/react": "catalog:", - "@emdashcms/cloudflare": "workspace:*", + "@emdash-cms/cloudflare": "workspace:*", "astro": "catalog:", "emdash": "workspace:*", "react": "catalog:", diff --git a/templates/starter/.agents/skills/building-emdash-site/references/configuration.md b/templates/starter/.agents/skills/building-emdash-site/references/configuration.md index 619800b..d24f221 100644 --- a/templates/starter/.agents/skills/building-emdash-site/references/configuration.md +++ b/templates/starter/.agents/skills/building-emdash-site/references/configuration.md @@ -37,7 +37,7 @@ export default defineConfig({ ```javascript import cloudflare from "@astrojs/cloudflare"; import react from "@astrojs/react"; -import { d1, r2 } from "@emdashcms/cloudflare"; +import { d1, r2 } from "@emdash-cms/cloudflare"; import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; @@ -88,7 +88,7 @@ Requires a `wrangler.jsonc` with D1 and R2 bindings: Register plugins in `astro.config.mjs`: ```javascript -import { auditLogPlugin } from "@emdashcms/plugin-audit-log"; +import { auditLogPlugin } from "@emdash-cms/plugin-audit-log"; emdash({ database: sqlite({ url: "file:./data.db" }), @@ -181,7 +181,7 @@ Key dependencies for a Node.js site: } ``` -For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdashcms/cloudflare`. +For Cloudflare, replace `@astrojs/node` with `@astrojs/cloudflare` and add `@emdash-cms/cloudflare`. ## Dev Server diff --git a/templates/starter/.agents/skills/creating-plugins/references/admin-ui.md b/templates/starter/.agents/skills/creating-plugins/references/admin-ui.md index 04ac204..e2289e1 100644 --- a/templates/starter/.agents/skills/creating-plugins/references/admin-ui.md +++ b/templates/starter/.agents/skills/creating-plugins/references/admin-ui.md @@ -51,7 +51,7 @@ React components. Use `usePluginAPI()` to call plugin routes. ```typescript // src/components/SettingsPage.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function SettingsPage() { const api = usePluginAPI(); @@ -94,7 +94,7 @@ Dashboard cards with at-a-glance info. ```typescript // src/components/StatusWidget.tsx import { useState, useEffect } from "react"; -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; export function StatusWidget() { const api = usePluginAPI(); @@ -134,10 +134,10 @@ const result = await api.get("history?limit=50"); // Query params ## Admin Components -Pre-built components from `@emdashcms/admin`: +Pre-built components from `@emdash-cms/admin`: ```typescript -import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdashcms/admin"; +import { Card, Button, Input, Select, Toggle, Table, Loading, Alert } from "@emdash-cms/admin"; ``` ## Auto-Generated Settings @@ -166,11 +166,11 @@ export default { }, format: "esm", dts: true, - external: ["react", "react-dom", "emdash", "@emdashcms/admin"], + external: ["react", "react-dom", "emdash", "@emdash-cms/admin"], }; ``` -Keep React and `@emdashcms/admin` as externals to avoid bundling duplicates. +Keep React and `@emdash-cms/admin` as externals to avoid bundling duplicates. ## Plugin Descriptor diff --git a/templates/starter/.agents/skills/creating-plugins/references/api-routes.md b/templates/starter/.agents/skills/creating-plugins/references/api-routes.md index 77d41aa..941d688 100644 --- a/templates/starter/.agents/skills/creating-plugins/references/api-routes.md +++ b/templates/starter/.agents/skills/creating-plugins/references/api-routes.md @@ -245,7 +245,7 @@ definePlugin({ ## Calling from Admin UI ```typescript -import { usePluginAPI } from "@emdashcms/admin"; +import { usePluginAPI } from "@emdash-cms/admin"; const api = usePluginAPI(); const data = await api.get("status"); diff --git a/templates/starter/.agents/skills/creating-plugins/references/block-kit.md b/templates/starter/.agents/skills/creating-plugins/references/block-kit.md index 560eef7..397505b 100644 --- a/templates/starter/.agents/skills/creating-plugins/references/block-kit.md +++ b/templates/starter/.agents/skills/creating-plugins/references/block-kit.md @@ -329,10 +329,10 @@ Show/hide fields based on other field values. Evaluated client-side, no round-tr ## Builder Helpers -`@emdashcms/blocks` provides TypeScript helpers: +`@emdash-cms/blocks` provides TypeScript helpers: ```typescript -import { blocks, elements } from "@emdashcms/blocks"; +import { blocks, elements } from "@emdash-cms/blocks"; const { header, form, section, stats, timeseriesChart, customChart, banner: bannerBlock } = blocks; const { textInput, toggle, select, button } = elements; diff --git a/templates/starter/.agents/skills/creating-plugins/references/publishing.md b/templates/starter/.agents/skills/creating-plugins/references/publishing.md index 60051b0..11ec097 100644 --- a/templates/starter/.agents/skills/creating-plugins/references/publishing.md +++ b/templates/starter/.agents/skills/creating-plugins/references/publishing.md @@ -31,7 +31,7 @@ The bundle command uses `package.json` exports to find entrypoints: | Export | Purpose | Built as | | ------------- | ----------------------------- | ------------------------------------ | -| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdashcms/*` | +| `"."` | Main entry — extract manifest | Externals: `emdash`, `@emdash-cms/*` | | `"./sandbox"` | Backend code for the sandbox | Fully self-contained (no externals) | | `"./admin"` | Admin UI components | Fully self-contained | diff --git a/templates/starter/package.json b/templates/starter/package.json index 62a535f..cd73983 100644 --- a/templates/starter/package.json +++ b/templates/starter/package.json @@ -1,5 +1,5 @@ { - "name": "@emdashcms/template-starter", + "name": "@emdash-cms/template-starter", "version": "0.0.1", "private": true, "type": "module",