{"version":3,"file":"fs-DQdOmh1b.mjs","names":[],"sources":["../src/seed/schemas.generated.ts","../src/seed/fs.ts"],"sourcesContent":["// Generated by scripts/seed-schemas.mjs — do not edit.\n/** JSON Schemas for the seed directory layout, keyed by file name. */\nexport const SEED_SCHEMAS: Record<string, string> = {\n\t\"seed.schema.json\":\n\t\t'{\"$ref\":\"#/definitions/SeedFile\",\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"definitions\":{\"CollectionAdminConfig\":{\"additionalProperties\":false,\"description\":\"Collection-level admin presentation options.\",\"properties\":{\"listColumns\":{\"description\":\"Custom field slugs to show in the content list.\",\"items\":{\"type\":\"string\"},\"type\":\"array\"}},\"type\":\"object\"},\"FieldType\":{\"description\":\"Supported field types\",\"enum\":[\"string\",\"text\",\"url\",\"number\",\"integer\",\"boolean\",\"datetime\",\"select\",\"multiSelect\",\"portableText\",\"image\",\"file\",\"reference\",\"json\",\"slug\",\"repeater\"],\"type\":\"string\"},\"MediaReference\":{\"additionalProperties\":false,\"description\":\"Media reference for logo/favicon/seo.defaultOgImage.\\\\n\\\\nStored shape is just `{ mediaId, alt? }`. The remaining fields are populated by `resolveMediaReference` on read so templates can emit correct head tags without a second round-trip to the media table.\\\\n\\\\nThe Zod schemas at the REST/MCP boundary are split:  - `mediaReferenceInput` (used by `settingsUpdateBody`) defines only    `mediaId` and `alt`. Default strip-mode parsing discards any    resolved fields a client posts back, so they never reach storage.  - `mediaReferenceResponse` (used by `siteSettingsSchema`) includes    the resolved fields so generated OpenAPI clients see them.\\\\n\\\\nIf you ever switch `mediaReferenceInput` to `passthrough`, you must also strip the resolved fields explicitly in `setSiteSettings`, or stored options will accumulate stale `url` / `contentType` / `width` / `height` snapshots.\",\"properties\":{\"alt\":{\"type\":\"string\"},\"contentType\":{\"description\":\"Stored MIME type (e.g. `image/svg+xml`). Populated alongside `url`.\",\"type\":\"string\"},\"height\":{\"description\":\"Pixel height if known. Populated alongside `url`.\",\"type\":\"number\"},\"mediaId\":{\"type\":\"string\"},\"url\":{\"description\":\"Resolved URL. Populated by `resolveMediaReference`; absent on raw stored values.\",\"type\":\"string\"},\"width\":{\"description\":\"Pixel width if known. Populated alongside `url`.\",\"type\":\"number\"}},\"required\":[\"mediaId\"],\"type\":\"object\"},\"SeedByline\":{\"additionalProperties\":false,\"description\":\"Byline profile in seed\",\"properties\":{\"avatar\":{\"$ref\":\"#/definitions/SeedBylineAvatar\",\"description\":\"Avatar for the byline, seeded as an already-stored media item. Unlike a content `$media` reference, nothing is downloaded: the caller supplies the `storageKey` of a file that already exists in the configured storage (the common case when seeding alongside a media migration). A `media` row is created and linked via `avatarMediaId`.\"},\"bio\":{\"type\":\"string\"},\"displayName\":{\"type\":\"string\"},\"id\":{\"description\":\"Seed-local ID for byline references in content entries\",\"type\":\"string\"},\"isGuest\":{\"type\":\"boolean\"},\"slug\":{\"type\":\"string\"},\"websiteUrl\":{\"type\":\"string\"}},\"required\":[\"id\",\"slug\",\"displayName\"],\"type\":\"object\"},\"SeedBylineAvatar\":{\"additionalProperties\":false,\"properties\":{\"alt\":{\"description\":\"Alt text for the avatar image.\",\"type\":\"string\"},\"filename\":{\"description\":\"Filename for the media record. Defaults to the storage key\\'s basename.\",\"type\":\"string\"},\"height\":{\"type\":\"number\"},\"mimeType\":{\"description\":\"MIME type for the media record. Defaults to `image/jpeg`.\",\"type\":\"string\"},\"storageKey\":{\"description\":\"Storage key of an avatar file that already exists in the configured storage.\",\"type\":\"string\"},\"width\":{\"type\":\"number\"}},\"required\":[\"storageKey\"],\"type\":\"object\"},\"SeedBylineCredit\":{\"additionalProperties\":false,\"properties\":{\"byline\":{\"description\":\"Seed byline ID from root `bylines[]`\",\"type\":\"string\"},\"roleLabel\":{\"type\":\"string\"}},\"required\":[\"byline\"],\"type\":\"object\"},\"SeedCollection\":{\"additionalProperties\":false,\"description\":\"Collection definition in seed\",\"properties\":{\"admin\":{\"$ref\":\"#/definitions/CollectionAdminConfig\"},\"commentsEnabled\":{\"description\":\"Enable comments on this collection\",\"type\":\"boolean\"},\"dateField\":{\"description\":\"Field slug (a datetime field) powering the admin list Date column (defaults to last-updated)\",\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"fields\":{\"items\":{\"$ref\":\"#/definitions/SeedField\"},\"type\":\"array\"},\"hidden\":{\"description\":\"Omit this collection from the admin sidebar. It stays reachable through the API, MCP, plugin hooks, and direct `/content/:collection` URLs.\",\"type\":\"boolean\"},\"icon\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"labelSingular\":{\"type\":\"string\"},\"routable\":{\"description\":\"Require a slug before an entry can be published. Defaults to true.\",\"type\":\"boolean\"},\"slug\":{\"type\":\"string\"},\"sortOrder\":{\"description\":\"Explicit position in the admin sidebar (ascending). Collections without a `sortOrder` keep the alphabetical order and follow the ordered ones.\",\"type\":\"number\"},\"supports\":{\"items\":{\"enum\":[\"drafts\",\"revisions\",\"preview\",\"scheduling\",\"search\",\"seo\"],\"type\":\"string\"},\"type\":\"array\"},\"titleField\":{\"description\":\"Field slug powering the admin list Title column (defaults to title display)\",\"type\":\"string\"},\"urlPattern\":{\"type\":\"string\"}},\"required\":[\"slug\",\"label\",\"fields\"],\"type\":\"object\"},\"SeedContentEntry\":{\"additionalProperties\":false,\"description\":\"Content entry in seed\",\"properties\":{\"bylines\":{\"description\":\"Ordered byline credits for this entry\",\"items\":{\"$ref\":\"#/definitions/SeedBylineCredit\"},\"type\":\"array\"},\"data\":{\"additionalProperties\":{},\"description\":\"Content data (field slug -> value)\",\"type\":\"object\"},\"id\":{\"description\":\"Seed-local ID for $ref resolution\",\"type\":\"string\"},\"locale\":{\"description\":\"BCP 47 locale code. When omitted, defaults to defaultLocale.\",\"type\":\"string\"},\"slug\":{\"description\":\"URL slug. May be omitted for entries in non-routable collections.\",\"type\":[\"string\",\"null\"]},\"status\":{\"description\":\"Publication status\",\"enum\":[\"published\",\"draft\"],\"type\":\"string\"},\"taxonomies\":{\"additionalProperties\":{\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"description\":\"Taxonomy term assignments (taxonomy name -> term slugs)\",\"type\":\"object\"},\"translationOf\":{\"description\":\"Seed-local ID of the source content entry this translates. Must reference another entry\\'s `id` in the same collection.\",\"type\":\"string\"}},\"required\":[\"id\",\"data\"],\"type\":\"object\"},\"SeedField\":{\"additionalProperties\":false,\"description\":\"Field definition in seed\",\"properties\":{\"defaultValue\":{},\"indexed\":{\"type\":\"boolean\"},\"label\":{\"type\":\"string\"},\"options\":{\"additionalProperties\":{},\"type\":\"object\"},\"required\":{\"type\":\"boolean\"},\"searchable\":{\"type\":\"boolean\"},\"slug\":{\"type\":\"string\"},\"type\":{\"$ref\":\"#/definitions/FieldType\"},\"unique\":{\"type\":\"boolean\"},\"validation\":{\"additionalProperties\":{},\"type\":\"object\"},\"widget\":{\"type\":\"string\"}},\"required\":[\"slug\",\"label\",\"type\"],\"type\":\"object\"},\"SeedFile\":{\"additionalProperties\":false,\"description\":\"Root seed file structure\",\"properties\":{\"$schema\":{\"description\":\"JSON schema reference (optional)\",\"type\":\"string\"},\"bylines\":{\"description\":\"Bylines used for presentation credits\",\"items\":{\"$ref\":\"#/definitions/SeedByline\"},\"type\":\"array\"},\"collections\":{\"description\":\"Collection definitions\",\"items\":{\"$ref\":\"#/definitions/SeedCollection\"},\"type\":\"array\"},\"content\":{\"additionalProperties\":{\"items\":{\"$ref\":\"#/definitions/SeedContentEntry\"},\"type\":\"array\"},\"description\":\"Sample content (organized by collection)\",\"type\":\"object\"},\"defaultLocale\":{\"description\":\"Default locale for locale-bearing rows (menus, taxonomies, content) that omit an explicit `locale`. Lets a non-`en` single-locale project survive an `export-seed` → `seed` round-trip: `apply` runs outside the Astro runtime (no i18n config), so without this it would backfill the omitted locale as `en`. See #1421.\",\"type\":\"string\"},\"menus\":{\"description\":\"Navigation menus\",\"items\":{\"$ref\":\"#/definitions/SeedMenu\"},\"type\":\"array\"},\"meta\":{\"additionalProperties\":false,\"description\":\"Metadata about the seed\",\"properties\":{\"author\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}},\"type\":\"object\"},\"redirects\":{\"description\":\"Redirect rules\",\"items\":{\"$ref\":\"#/definitions/SeedRedirect\"},\"type\":\"array\"},\"sections\":{\"description\":\"Sections (reusable content blocks, like WP patterns/reusable blocks)\",\"items\":{\"$ref\":\"#/definitions/SeedSection\"},\"type\":\"array\"},\"settings\":{\"additionalProperties\":false,\"description\":\"Site settings\",\"properties\":{\"dateFormat\":{\"type\":\"string\"},\"favicon\":{\"$ref\":\"#/definitions/MediaReference\"},\"logo\":{\"$ref\":\"#/definitions/MediaReference\"},\"postsPerPage\":{\"type\":\"number\"},\"seo\":{\"$ref\":\"#/definitions/SeoSettings\"},\"social\":{\"additionalProperties\":false,\"properties\":{\"facebook\":{\"type\":\"string\"},\"github\":{\"type\":\"string\"},\"instagram\":{\"type\":\"string\"},\"linkedin\":{\"type\":\"string\"},\"twitter\":{\"type\":\"string\"},\"youtube\":{\"type\":\"string\"}},\"type\":\"object\"},\"tagline\":{\"type\":\"string\"},\"timezone\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"}},\"type\":\"object\"},\"taxonomies\":{\"description\":\"Taxonomy definitions\",\"items\":{\"$ref\":\"#/definitions/SeedTaxonomy\"},\"type\":\"array\"},\"version\":{\"const\":\"1\",\"description\":\"Seed format version\",\"type\":\"string\"},\"widgetAreas\":{\"description\":\"Widget areas\",\"items\":{\"$ref\":\"#/definitions/SeedWidgetArea\"},\"type\":\"array\"}},\"required\":[\"version\"],\"type\":\"object\"},\"SeedMenu\":{\"additionalProperties\":false,\"description\":\"Menu definition in seed\",\"properties\":{\"id\":{\"description\":\"Optional seed-local id, e.g. \\\\\"menu:primary:en\\\\\".\",\"type\":\"string\"},\"items\":{\"items\":{\"$ref\":\"#/definitions/SeedMenuItem\"},\"type\":\"array\"},\"label\":{\"type\":\"string\"},\"locale\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"translationOf\":{\"type\":\"string\"}},\"required\":[\"name\",\"label\",\"items\"],\"type\":\"object\"},\"SeedMenuItem\":{\"additionalProperties\":false,\"description\":\"Menu item in seed\",\"properties\":{\"children\":{\"items\":{\"$ref\":\"#/definitions/SeedMenuItem\"},\"type\":\"array\"},\"collection\":{\"type\":\"string\"},\"cssClasses\":{\"type\":\"string\"},\"id\":{\"description\":\"Optional seed-local id, e.g. \\\\\"item:primary:home:en\\\\\".\",\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"locale\":{\"type\":\"string\"},\"ref\":{\"type\":\"string\"},\"target\":{\"enum\":[\"_blank\",\"_self\"],\"type\":\"string\"},\"titleAttr\":{\"type\":\"string\"},\"translationOf\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"}},\"required\":[\"type\"],\"type\":\"object\"},\"SeedRedirect\":{\"additionalProperties\":false,\"description\":\"Redirect definition in seed\",\"properties\":{\"destination\":{\"type\":\"string\"},\"enabled\":{\"type\":\"boolean\"},\"groupName\":{\"type\":[\"string\",\"null\"]},\"source\":{\"type\":\"string\"},\"type\":{\"enum\":[301,302,307,308],\"type\":\"number\"}},\"required\":[\"source\",\"destination\"],\"type\":\"object\"},\"SeedSection\":{\"additionalProperties\":false,\"description\":\"Section (reusable content block) in seed\",\"properties\":{\"content\":{\"description\":\"Portable Text content\",\"items\":{\"additionalProperties\":{},\"properties\":{\"_key\":{\"type\":\"string\"},\"_type\":{\"type\":\"string\"}},\"required\":[\"_type\"],\"type\":\"object\"},\"type\":\"array\"},\"description\":{\"type\":\"string\"},\"keywords\":{\"description\":\"Search keywords\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"slug\":{\"type\":\"string\"},\"source\":{\"description\":\"Source: \\\\\"theme\\\\\" for seed-provided, \\\\\"import\\\\\" for WP imports\",\"enum\":[\"theme\",\"import\"],\"type\":\"string\"},\"title\":{\"type\":\"string\"}},\"required\":[\"slug\",\"title\",\"content\"],\"type\":\"object\"},\"SeedTaxonomy\":{\"additionalProperties\":false,\"description\":\"Taxonomy definition in seed. For multi-locale exports each locale variant is its own entry, linked via `translationOf` (referencing another entry\\'s `id`).\",\"properties\":{\"collections\":{\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"hierarchical\":{\"type\":\"boolean\"},\"id\":{\"description\":\"Optional seed-local id, e.g. \\\\\"tax:category:en\\\\\". Target of `translationOf`.\",\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"labelSingular\":{\"type\":\"string\"},\"locale\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"terms\":{\"items\":{\"$ref\":\"#/definitions/SeedTaxonomyTerm\"},\"type\":\"array\"},\"translationOf\":{\"type\":\"string\"}},\"required\":[\"name\",\"label\",\"hierarchical\",\"collections\"],\"type\":\"object\"},\"SeedTaxonomyTerm\":{\"additionalProperties\":false,\"description\":\"Taxonomy term in seed\",\"properties\":{\"description\":{\"type\":\"string\"},\"id\":{\"description\":\"Optional seed-local id, e.g. \\\\\"term:category:news:en\\\\\".\",\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"locale\":{\"type\":\"string\"},\"parent\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"translationOf\":{\"type\":\"string\"}},\"required\":[\"slug\",\"label\"],\"type\":\"object\"},\"SeedWidget\":{\"additionalProperties\":false,\"description\":\"Widget in seed\",\"properties\":{\"componentId\":{\"type\":\"string\"},\"content\":{\"items\":{\"additionalProperties\":{},\"properties\":{\"_key\":{\"type\":\"string\"},\"_type\":{\"type\":\"string\"}},\"required\":[\"_type\"],\"type\":\"object\"},\"type\":\"array\"},\"menuName\":{\"type\":\"string\"},\"props\":{\"additionalProperties\":{},\"type\":\"object\"},\"title\":{\"type\":\"string\"},\"type\":{\"enum\":[\"content\",\"menu\",\"component\"],\"type\":\"string\"}},\"required\":[\"type\"],\"type\":\"object\"},\"SeedWidgetArea\":{\"additionalProperties\":false,\"description\":\"Widget area definition in seed\",\"properties\":{\"description\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"widgets\":{\"items\":{\"$ref\":\"#/definitions/SeedWidget\"},\"type\":\"array\"}},\"required\":[\"name\",\"label\",\"widgets\"],\"type\":\"object\"},\"SeoSettings\":{\"additionalProperties\":false,\"description\":\"Site-level SEO settings\",\"properties\":{\"bingVerification\":{\"description\":\"Bing Webmaster Tools verification meta tag content\",\"type\":\"string\"},\"defaultOgImage\":{\"$ref\":\"#/definitions/MediaReference\",\"description\":\"Default OG image when content has no seo_image\"},\"googleVerification\":{\"description\":\"Google Search Console verification meta tag content\",\"type\":\"string\"},\"robotsTxt\":{\"description\":\"Custom robots.txt content. If unset, a default is generated.\",\"type\":\"string\"},\"titleSeparator\":{\"description\":\"Separator between page title and site title (e.g., \\\\\" | \\\\\", \\\\\" — \\\\\")\",\"type\":\"string\"}},\"type\":\"object\"}},\"$id\":\"https://premium-cms.com/schemas/seed/seed.schema.json\",\"properties\":{\"order\":{\"type\":\"object\",\"description\":\"Apply order of each group, by file name (see seed/fs.ts).\",\"properties\":{\"collections\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"taxonomies\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"menus\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"widgetAreas\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"sections\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"bylines\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"content\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"additionalProperties\":false}},\"title\":\"SeedFile\"}',\n\t\"collection.schema.json\":\n\t\t'{\"$ref\":\"#/definitions/SeedCollection\",\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"definitions\":{\"CollectionAdminConfig\":{\"additionalProperties\":false,\"description\":\"Collection-level admin presentation options.\",\"properties\":{\"listColumns\":{\"description\":\"Custom field slugs to show in the content list.\",\"items\":{\"type\":\"string\"},\"type\":\"array\"}},\"type\":\"object\"},\"FieldType\":{\"description\":\"Supported field types\",\"enum\":[\"string\",\"text\",\"url\",\"number\",\"integer\",\"boolean\",\"datetime\",\"select\",\"multiSelect\",\"portableText\",\"image\",\"file\",\"reference\",\"json\",\"slug\",\"repeater\"],\"type\":\"string\"},\"SeedCollection\":{\"additionalProperties\":false,\"description\":\"Collection definition in seed\",\"properties\":{\"admin\":{\"$ref\":\"#/definitions/CollectionAdminConfig\"},\"commentsEnabled\":{\"description\":\"Enable comments on this collection\",\"type\":\"boolean\"},\"dateField\":{\"description\":\"Field slug (a datetime field) powering the admin list Date column (defaults to last-updated)\",\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"fields\":{\"items\":{\"$ref\":\"#/definitions/SeedField\"},\"type\":\"array\"},\"hidden\":{\"description\":\"Omit this collection from the admin sidebar. It stays reachable through the API, MCP, plugin hooks, and direct `/content/:collection` URLs.\",\"type\":\"boolean\"},\"icon\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"labelSingular\":{\"type\":\"string\"},\"routable\":{\"description\":\"Require a slug before an entry can be published. Defaults to true.\",\"type\":\"boolean\"},\"slug\":{\"type\":\"string\"},\"sortOrder\":{\"description\":\"Explicit position in the admin sidebar (ascending). Collections without a `sortOrder` keep the alphabetical order and follow the ordered ones.\",\"type\":\"number\"},\"supports\":{\"items\":{\"enum\":[\"drafts\",\"revisions\",\"preview\",\"scheduling\",\"search\",\"seo\"],\"type\":\"string\"},\"type\":\"array\"},\"titleField\":{\"description\":\"Field slug powering the admin list Title column (defaults to title display)\",\"type\":\"string\"},\"urlPattern\":{\"type\":\"string\"}},\"required\":[\"slug\",\"label\",\"fields\"],\"type\":\"object\"},\"SeedField\":{\"additionalProperties\":false,\"description\":\"Field definition in seed\",\"properties\":{\"defaultValue\":{},\"indexed\":{\"type\":\"boolean\"},\"label\":{\"type\":\"string\"},\"options\":{\"additionalProperties\":{},\"type\":\"object\"},\"required\":{\"type\":\"boolean\"},\"searchable\":{\"type\":\"boolean\"},\"slug\":{\"type\":\"string\"},\"type\":{\"$ref\":\"#/definitions/FieldType\"},\"unique\":{\"type\":\"boolean\"},\"validation\":{\"additionalProperties\":{},\"type\":\"object\"},\"widget\":{\"type\":\"string\"}},\"required\":[\"slug\",\"label\",\"type\"],\"type\":\"object\"}},\"$id\":\"https://premium-cms.com/schemas/seed/collection.schema.json\",\"title\":\"SeedCollection\"}',\n\t\"taxonomy.schema.json\":\n\t\t'{\"$ref\":\"#/definitions/SeedTaxonomy\",\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"definitions\":{\"SeedTaxonomy\":{\"additionalProperties\":false,\"description\":\"Taxonomy definition in seed. For multi-locale exports each locale variant is its own entry, linked via `translationOf` (referencing another entry\\'s `id`).\",\"properties\":{\"collections\":{\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"hierarchical\":{\"type\":\"boolean\"},\"id\":{\"description\":\"Optional seed-local id, e.g. \\\\\"tax:category:en\\\\\". Target of `translationOf`.\",\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"labelSingular\":{\"type\":\"string\"},\"locale\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"terms\":{\"items\":{\"$ref\":\"#/definitions/SeedTaxonomyTerm\"},\"type\":\"array\"},\"translationOf\":{\"type\":\"string\"}},\"required\":[\"name\",\"label\",\"hierarchical\",\"collections\"],\"type\":\"object\"},\"SeedTaxonomyTerm\":{\"additionalProperties\":false,\"description\":\"Taxonomy term in seed\",\"properties\":{\"description\":{\"type\":\"string\"},\"id\":{\"description\":\"Optional seed-local id, e.g. \\\\\"term:category:news:en\\\\\".\",\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"locale\":{\"type\":\"string\"},\"parent\":{\"type\":\"string\"},\"slug\":{\"type\":\"string\"},\"translationOf\":{\"type\":\"string\"}},\"required\":[\"slug\",\"label\"],\"type\":\"object\"}},\"$id\":\"https://premium-cms.com/schemas/seed/taxonomy.schema.json\",\"title\":\"SeedTaxonomy\"}',\n\t\"menu.schema.json\":\n\t\t'{\"$ref\":\"#/definitions/SeedMenu\",\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"definitions\":{\"SeedMenu\":{\"additionalProperties\":false,\"description\":\"Menu definition in seed\",\"properties\":{\"id\":{\"description\":\"Optional seed-local id, e.g. \\\\\"menu:primary:en\\\\\".\",\"type\":\"string\"},\"items\":{\"items\":{\"$ref\":\"#/definitions/SeedMenuItem\"},\"type\":\"array\"},\"label\":{\"type\":\"string\"},\"locale\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"translationOf\":{\"type\":\"string\"}},\"required\":[\"name\",\"label\",\"items\"],\"type\":\"object\"},\"SeedMenuItem\":{\"additionalProperties\":false,\"description\":\"Menu item in seed\",\"properties\":{\"children\":{\"items\":{\"$ref\":\"#/definitions/SeedMenuItem\"},\"type\":\"array\"},\"collection\":{\"type\":\"string\"},\"cssClasses\":{\"type\":\"string\"},\"id\":{\"description\":\"Optional seed-local id, e.g. \\\\\"item:primary:home:en\\\\\".\",\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"locale\":{\"type\":\"string\"},\"ref\":{\"type\":\"string\"},\"target\":{\"enum\":[\"_blank\",\"_self\"],\"type\":\"string\"},\"titleAttr\":{\"type\":\"string\"},\"translationOf\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"}},\"required\":[\"type\"],\"type\":\"object\"}},\"$id\":\"https://premium-cms.com/schemas/seed/menu.schema.json\",\"title\":\"SeedMenu\"}',\n\t\"redirect.schema.json\":\n\t\t'{\"$ref\":\"#/definitions/SeedRedirect\",\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"definitions\":{\"SeedRedirect\":{\"additionalProperties\":false,\"description\":\"Redirect definition in seed\",\"properties\":{\"destination\":{\"type\":\"string\"},\"enabled\":{\"type\":\"boolean\"},\"groupName\":{\"type\":[\"string\",\"null\"]},\"source\":{\"type\":\"string\"},\"type\":{\"enum\":[301,302,307,308],\"type\":\"number\"}},\"required\":[\"source\",\"destination\"],\"type\":\"object\"}},\"$id\":\"https://premium-cms.com/schemas/seed/redirect.schema.json\",\"title\":\"SeedRedirect\"}',\n\t\"widget-area.schema.json\":\n\t\t'{\"$ref\":\"#/definitions/SeedWidgetArea\",\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"definitions\":{\"SeedWidget\":{\"additionalProperties\":false,\"description\":\"Widget in seed\",\"properties\":{\"componentId\":{\"type\":\"string\"},\"content\":{\"items\":{\"additionalProperties\":{},\"properties\":{\"_key\":{\"type\":\"string\"},\"_type\":{\"type\":\"string\"}},\"required\":[\"_type\"],\"type\":\"object\"},\"type\":\"array\"},\"menuName\":{\"type\":\"string\"},\"props\":{\"additionalProperties\":{},\"type\":\"object\"},\"title\":{\"type\":\"string\"},\"type\":{\"enum\":[\"content\",\"menu\",\"component\"],\"type\":\"string\"}},\"required\":[\"type\"],\"type\":\"object\"},\"SeedWidgetArea\":{\"additionalProperties\":false,\"description\":\"Widget area definition in seed\",\"properties\":{\"description\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"widgets\":{\"items\":{\"$ref\":\"#/definitions/SeedWidget\"},\"type\":\"array\"}},\"required\":[\"name\",\"label\",\"widgets\"],\"type\":\"object\"}},\"$id\":\"https://premium-cms.com/schemas/seed/widget-area.schema.json\",\"title\":\"SeedWidgetArea\"}',\n\t\"section.schema.json\":\n\t\t'{\"$ref\":\"#/definitions/SeedSection\",\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"definitions\":{\"SeedSection\":{\"additionalProperties\":false,\"description\":\"Section (reusable content block) in seed\",\"properties\":{\"content\":{\"description\":\"Portable Text content\",\"items\":{\"additionalProperties\":{},\"properties\":{\"_key\":{\"type\":\"string\"},\"_type\":{\"type\":\"string\"}},\"required\":[\"_type\"],\"type\":\"object\"},\"type\":\"array\"},\"description\":{\"type\":\"string\"},\"keywords\":{\"description\":\"Search keywords\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"slug\":{\"type\":\"string\"},\"source\":{\"description\":\"Source: \\\\\"theme\\\\\" for seed-provided, \\\\\"import\\\\\" for WP imports\",\"enum\":[\"theme\",\"import\"],\"type\":\"string\"},\"title\":{\"type\":\"string\"}},\"required\":[\"slug\",\"title\",\"content\"],\"type\":\"object\"}},\"$id\":\"https://premium-cms.com/schemas/seed/section.schema.json\",\"title\":\"SeedSection\"}',\n\t\"byline.schema.json\":\n\t\t'{\"$ref\":\"#/definitions/SeedByline\",\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"definitions\":{\"SeedByline\":{\"additionalProperties\":false,\"description\":\"Byline profile in seed\",\"properties\":{\"avatar\":{\"$ref\":\"#/definitions/SeedBylineAvatar\",\"description\":\"Avatar for the byline, seeded as an already-stored media item. Unlike a content `$media` reference, nothing is downloaded: the caller supplies the `storageKey` of a file that already exists in the configured storage (the common case when seeding alongside a media migration). A `media` row is created and linked via `avatarMediaId`.\"},\"bio\":{\"type\":\"string\"},\"displayName\":{\"type\":\"string\"},\"id\":{\"description\":\"Seed-local ID for byline references in content entries\",\"type\":\"string\"},\"isGuest\":{\"type\":\"boolean\"},\"slug\":{\"type\":\"string\"},\"websiteUrl\":{\"type\":\"string\"}},\"required\":[\"id\",\"slug\",\"displayName\"],\"type\":\"object\"},\"SeedBylineAvatar\":{\"additionalProperties\":false,\"properties\":{\"alt\":{\"description\":\"Alt text for the avatar image.\",\"type\":\"string\"},\"filename\":{\"description\":\"Filename for the media record. Defaults to the storage key\\'s basename.\",\"type\":\"string\"},\"height\":{\"type\":\"number\"},\"mimeType\":{\"description\":\"MIME type for the media record. Defaults to `image/jpeg`.\",\"type\":\"string\"},\"storageKey\":{\"description\":\"Storage key of an avatar file that already exists in the configured storage.\",\"type\":\"string\"},\"width\":{\"type\":\"number\"}},\"required\":[\"storageKey\"],\"type\":\"object\"}},\"$id\":\"https://premium-cms.com/schemas/seed/byline.schema.json\",\"title\":\"SeedByline\"}',\n\t\"content-entry.schema.json\":\n\t\t'{\"$ref\":\"#/definitions/SeedContentEntry\",\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"definitions\":{\"SeedBylineCredit\":{\"additionalProperties\":false,\"properties\":{\"byline\":{\"description\":\"Seed byline ID from root `bylines[]`\",\"type\":\"string\"},\"roleLabel\":{\"type\":\"string\"}},\"required\":[\"byline\"],\"type\":\"object\"},\"SeedContentEntry\":{\"additionalProperties\":false,\"description\":\"Content entry in seed\",\"properties\":{\"bylines\":{\"description\":\"Ordered byline credits for this entry\",\"items\":{\"$ref\":\"#/definitions/SeedBylineCredit\"},\"type\":\"array\"},\"data\":{\"additionalProperties\":{},\"description\":\"Content data (field slug -> value)\",\"type\":\"object\"},\"id\":{\"description\":\"Seed-local ID for $ref resolution\",\"type\":\"string\"},\"locale\":{\"description\":\"BCP 47 locale code. When omitted, defaults to defaultLocale.\",\"type\":\"string\"},\"slug\":{\"description\":\"URL slug. May be omitted for entries in non-routable collections.\",\"type\":[\"string\",\"null\"]},\"status\":{\"description\":\"Publication status\",\"enum\":[\"published\",\"draft\"],\"type\":\"string\"},\"taxonomies\":{\"additionalProperties\":{\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"description\":\"Taxonomy term assignments (taxonomy name -> term slugs)\",\"type\":\"object\"},\"translationOf\":{\"description\":\"Seed-local ID of the source content entry this translates. Must reference another entry\\'s `id` in the same collection.\",\"type\":\"string\"}},\"required\":[\"id\",\"data\"],\"type\":\"object\"}},\"$id\":\"https://premium-cms.com/schemas/seed/content-entry.schema.json\",\"title\":\"SeedContentEntry\"}',\n};\n","/**\n * Seed as a directory: one small JSON file per thing instead of one large\n * seed.json, so a theme repo reads naturally in an editor and diffs stay\n * reviewable. Every file carries a `$schema` pointing at the schemas shipped\n * next to it (`.schemas/`), which the exporter writes alongside.\n *\n *   seed/\n *     seed.json                    version, meta, defaultLocale, settings\n *     collections/<slug>.json      SeedCollection\n *     taxonomies/<name>.json       SeedTaxonomy (with terms)\n *     menus/<name>.json            SeedMenu\n *     redirects.json               SeedRedirect[]\n *     widget-areas/<id>.json       SeedWidgetArea\n *     sections/<slug>.json         SeedSection\n *     bylines/<slug>.json          SeedByline\n *     content/<collection>/<slug>.json   SeedContentEntry\n *     .schemas/*.schema.json\n *\n * `splitSeed` and `composeSeed` are exact inverses; a single legacy\n * `seed.json` (the whole file) is still accepted by `composeSeed`.\n */\n\nimport { SEED_SCHEMAS } from \"./schemas.generated.js\";\nimport type {\n\tSeedByline,\n\tSeedCollection,\n\tSeedContentEntry,\n\tSeedFile,\n\tSeedMenu,\n\tSeedRedirect,\n\tSeedSection,\n\tSeedTaxonomy,\n\tSeedWidgetArea,\n} from \"./types.js\";\n\nexport const SEED_DIR = \"seed\";\nexport const SCHEMAS_DIR = \".schemas\";\n\n/** Map of repo-relative path → JSON text. */\nexport type SeedTree = Map<string, string>;\n\n/** Add the JSON Schemas the files' `$schema` pointers refer to (`seed/.schemas/`). */\nexport function withSchemas(tree: SeedTree): SeedTree {\n\tfor (const [name, text] of Object.entries(SEED_SCHEMAS)) {\n\t\ttree.set(`${SEED_DIR}/${SCHEMAS_DIR}/${name}`, `${text}\\n`);\n\t}\n\treturn tree;\n}\n\nconst UNSAFE = /[^a-z0-9._-]+/gi;\nconst EDGES = /^[-.]+|[-.]+$/g;\n\nfunction fileName(name: string, fallback: string): string {\n\tconst s = String(name || \"\")\n\t\t.replace(UNSAFE, \"-\")\n\t\t.replace(EDGES, \"\")\n\t\t.toLowerCase();\n\treturn s || fallback;\n}\n\nfunction json(value: unknown, schema: string): string {\n\tconst body =\n\t\tvalue && typeof value === \"object\" && !Array.isArray(value)\n\t\t\t? { $schema: `../${SCHEMAS_DIR}/${schema}.schema.json`, ...(value as object) }\n\t\t\t: value;\n\treturn `${JSON.stringify(body, null, \"\\t\")}\\n`;\n}\n\nfunction stripSchema<T>(value: T): T {\n\tif (value && typeof value === \"object\" && !Array.isArray(value) && \"$schema\" in value) {\n\t\tconst { $schema: _s, ...rest } = value as Record<string, unknown>;\n\t\treturn rest as T;\n\t}\n\treturn value;\n}\n\n/** Split a seed file into the directory layout (paths are relative to the repo root). */\nexport function splitSeed(seed: SeedFile): SeedTree {\n\tconst out: SeedTree = new Map();\n\tconst root: Record<string, unknown> = {\n\t\t$schema: `./${SCHEMAS_DIR}/seed.schema.json`,\n\t\tversion: seed.version,\n\t};\n\tif (seed.defaultLocale) root.defaultLocale = seed.defaultLocale;\n\tif (seed.meta) root.meta = seed.meta;\n\tif (seed.settings) root.settings = seed.settings;\n\t// Apply order matters (relations, parents before children); file systems\n\t// sort by name, so the root records the order of every group.\n\tconst order: Record<string, unknown> = {};\n\tconst names = (\n\t\titems: Array<{ slug?: string; name?: string }> | undefined,\n\t\tkey: \"slug\" | \"name\",\n\t\tfb: string,\n\t) => (items ?? []).map((x) => fileName(String(x[key] ?? \"\"), fb));\n\tif (seed.collections?.length) order.collections = names(seed.collections, \"slug\", \"collection\");\n\tif (seed.taxonomies?.length) order.taxonomies = names(seed.taxonomies, \"name\", \"taxonomy\");\n\tif (seed.menus?.length) order.menus = names(seed.menus, \"name\", \"menu\");\n\tif (seed.widgetAreas?.length) order.widgetAreas = names(seed.widgetAreas, \"name\", \"area\");\n\tif (seed.sections?.length) order.sections = names(seed.sections, \"slug\", \"section\");\n\tif (seed.bylines?.length) order.bylines = names(seed.bylines, \"slug\", \"byline\");\n\tif (seed.content && Object.keys(seed.content).length) {\n\t\torder.content = Object.fromEntries(\n\t\t\tObject.entries(seed.content).map(([c, entries]) => [\n\t\t\t\tfileName(c, \"collection\"),\n\t\t\t\tentries.map((e, i) => fileName(e.slug || String(i + 1), String(i + 1))),\n\t\t\t]),\n\t\t);\n\t}\n\tif (Object.keys(order).length) root.order = order;\n\tout.set(`${SEED_DIR}/seed.json`, `${JSON.stringify(root, null, \"\\t\")}\\n`);\n\n\tfor (const c of seed.collections ?? [])\n\t\tout.set(\n\t\t\t`${SEED_DIR}/collections/${fileName(c.slug, \"collection\")}.json`,\n\t\t\tjson(c, \"collection\"),\n\t\t);\n\tfor (const t of seed.taxonomies ?? [])\n\t\tout.set(`${SEED_DIR}/taxonomies/${fileName(t.name, \"taxonomy\")}.json`, json(t, \"taxonomy\"));\n\tfor (const m of seed.menus ?? [])\n\t\tout.set(`${SEED_DIR}/menus/${fileName(m.name, \"menu\")}.json`, json(m, \"menu\"));\n\tif (seed.redirects?.length)\n\t\tout.set(`${SEED_DIR}/redirects.json`, `${JSON.stringify(seed.redirects, null, \"\\t\")}\\n`);\n\tfor (const w of seed.widgetAreas ?? [])\n\t\tout.set(`${SEED_DIR}/widget-areas/${fileName(w.name, \"area\")}.json`, json(w, \"widget-area\"));\n\tfor (const s of seed.sections ?? [])\n\t\tout.set(`${SEED_DIR}/sections/${fileName(s.slug, \"section\")}.json`, json(s, \"section\"));\n\tfor (const b of seed.bylines ?? [])\n\t\tout.set(`${SEED_DIR}/bylines/${fileName(b.slug, \"byline\")}.json`, json(b, \"byline\"));\n\tfor (const [collection, entries] of Object.entries(seed.content ?? {})) {\n\t\tconst dir = fileName(collection, \"collection\");\n\t\tentries.forEach((e, i) => {\n\t\t\tconst name = fileName(e.slug || String(i + 1), String(i + 1));\n\t\t\tout.set(\n\t\t\t\t`${SEED_DIR}/content/${dir}/${name}.json`,\n\t\t\t\tjson(e, \"content-entry\").replace(\n\t\t\t\t\t`\"$schema\": \"../${SCHEMAS_DIR}/content-entry.schema.json\"`,\n\t\t\t\t\t`\"$schema\": \"../../${SCHEMAS_DIR}/content-entry.schema.json\"`,\n\t\t\t\t),\n\t\t\t);\n\t\t});\n\t}\n\treturn out;\n}\n\n/**\n * Compose a seed file from a directory tree (any map of paths → text; paths\n * may be prefixed by anything up to `seed/`). A lone `seed.json` holding a\n * whole seed file is returned as-is.\n */\nexport function composeSeed(files: SeedTree): SeedFile | null {\n\tconst entries = Array.from(files.entries(), ([p, text]) => {\n\t\tconst i = p.lastIndexOf(`${SEED_DIR}/`);\n\t\treturn i >= 0 ? ([p.slice(i + SEED_DIR.length + 1), text] as const) : null;\n\t})\n\t\t.filter((x): x is readonly [string, string] => x !== null && x[0].endsWith(\".json\"))\n\t\t.toSorted((a, b) => a[0].localeCompare(b[0]));\n\tif (entries.length === 0) {\n\t\t// Legacy: a single seed.json anywhere in the tree.\n\t\tconst legacy = [...files.entries()].find(([p]) => p.endsWith(\"seed.json\"));\n\t\treturn legacy ? (stripSchema(JSON.parse(legacy[1])) as SeedFile) : null;\n\t}\n\tconst parse = <T>(text: string): T => stripSchema(JSON.parse(text)) as T;\n\n\tconst rootText = entries.find(([p]) => p === \"seed.json\")?.[1];\n\tconst root = rootText ? parse<Partial<SeedFile> & { order?: SeedOrder }>(rootText) : {};\n\t// A whole-file seed.json (legacy layout inside seed/).\n\tif (root.collections || root.content) return root as SeedFile;\n\n\tconst { order, ...rest } = root;\n\tconst seed: SeedFile = { version: \"1\", ...rest } as SeedFile;\n\tconst collections: SeedCollection[] = [];\n\tconst taxonomies: SeedTaxonomy[] = [];\n\tconst menus: SeedMenu[] = [];\n\tconst widgetAreas: SeedWidgetArea[] = [];\n\tconst sections: SeedSection[] = [];\n\tconst bylines: SeedByline[] = [];\n\tconst content: Record<string, SeedContentEntry[]> = {};\n\tfor (const [p, text] of entries) {\n\t\tif (p === \"seed.json\" || p.startsWith(`${SCHEMAS_DIR}/`)) continue;\n\t\tif (p.startsWith(\"collections/\")) collections.push(parse(text));\n\t\telse if (p.startsWith(\"taxonomies/\")) taxonomies.push(parse(text));\n\t\telse if (p.startsWith(\"menus/\")) menus.push(parse(text));\n\t\telse if (p === \"redirects.json\") seed.redirects = parse<SeedRedirect[]>(text);\n\t\telse if (p.startsWith(\"widget-areas/\")) widgetAreas.push(parse(text));\n\t\telse if (p.startsWith(\"sections/\")) sections.push(parse(text));\n\t\telse if (p.startsWith(\"bylines/\")) bylines.push(parse(text));\n\t\telse if (p.startsWith(\"content/\")) {\n\t\t\tconst collection = p.split(\"/\")[1];\n\t\t\tif (!collection) continue;\n\t\t\t(content[collection] ??= []).push(parse(text));\n\t\t}\n\t}\n\tconst bySlug = <T extends { slug?: string }>(items: T[], want?: string[]) =>\n\t\tsortByOrder(items, (x) => fileName(String(x.slug ?? \"\"), \"\"), want);\n\tconst byName = <T extends { name?: string }>(items: T[], want?: string[]) =>\n\t\tsortByOrder(items, (x) => fileName(String(x.name ?? \"\"), \"\"), want);\n\tif (collections.length) seed.collections = bySlug(collections, order?.collections);\n\tif (taxonomies.length) seed.taxonomies = byName(taxonomies, order?.taxonomies);\n\tif (menus.length) seed.menus = byName(menus, order?.menus);\n\tif (widgetAreas.length) seed.widgetAreas = byName(widgetAreas, order?.widgetAreas);\n\tif (sections.length) seed.sections = bySlug(sections, order?.sections);\n\tif (bylines.length) seed.bylines = bySlug(bylines, order?.bylines);\n\tif (Object.keys(content).length) {\n\t\tseed.content = {};\n\t\tfor (const c of sortByOrder(\n\t\t\tObject.keys(content),\n\t\t\t(k) => k,\n\t\t\torder?.content && Object.keys(order.content),\n\t\t)) {\n\t\t\tseed.content[c] = sortByOrder(\n\t\t\t\tcontent[c]!,\n\t\t\t\t(e) => fileName(e.slug || \"\", \"\"),\n\t\t\t\torder?.content?.[c],\n\t\t\t);\n\t\t}\n\t}\n\treturn seed;\n}\n\ninterface SeedOrder {\n\tcollections?: string[];\n\ttaxonomies?: string[];\n\tmenus?: string[];\n\twidgetAreas?: string[];\n\tsections?: string[];\n\tbylines?: string[];\n\tcontent?: Record<string, string[]>;\n}\n\n/** Items in `want` order (by their file name), anything unlisted after, in name order. */\nfunction sortByOrder<T>(items: T[], nameOf: (x: T) => string, want?: string[]): T[] {\n\tif (!want?.length) return items;\n\tconst rank = new Map(want.map((n, i) => [n, i]));\n\treturn items.toSorted((a, b) => {\n\t\tconst ra = rank.get(nameOf(a)) ?? Number.MAX_SAFE_INTEGER;\n\t\tconst rb = rank.get(nameOf(b)) ?? Number.MAX_SAFE_INTEGER;\n\t\treturn ra - rb || nameOf(a).localeCompare(nameOf(b));\n\t});\n}\n"],"mappings":"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"}