payload-live-preview 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +389 -0
- package/dist/adapters/astro/RichText.astro +55 -0
- package/dist/adapters/astro/index.cjs +370 -0
- package/dist/adapters/astro/index.cjs.map +1 -0
- package/dist/adapters/astro/index.d.cts +105 -0
- package/dist/adapters/astro/index.d.ts +105 -0
- package/dist/adapters/astro/index.js +364 -0
- package/dist/adapters/astro/index.js.map +1 -0
- package/dist/adapters/astro/middleware-entry.cjs +303 -0
- package/dist/adapters/astro/middleware-entry.cjs.map +1 -0
- package/dist/adapters/astro/middleware-entry.d.cts +15 -0
- package/dist/adapters/astro/middleware-entry.d.ts +15 -0
- package/dist/adapters/astro/middleware-entry.js +297 -0
- package/dist/adapters/astro/middleware-entry.js.map +1 -0
- package/dist/adapters/nextjs/index.cjs +309 -0
- package/dist/adapters/nextjs/index.cjs.map +1 -0
- package/dist/adapters/nextjs/index.d.cts +75 -0
- package/dist/adapters/nextjs/index.d.ts +75 -0
- package/dist/adapters/nextjs/index.js +306 -0
- package/dist/adapters/nextjs/index.js.map +1 -0
- package/dist/adapters/nuxt/index.cjs +299 -0
- package/dist/adapters/nuxt/index.cjs.map +1 -0
- package/dist/adapters/nuxt/index.d.cts +126 -0
- package/dist/adapters/nuxt/index.d.ts +126 -0
- package/dist/adapters/nuxt/index.js +294 -0
- package/dist/adapters/nuxt/index.js.map +1 -0
- package/dist/adapters/sveltekit/index.cjs +275 -0
- package/dist/adapters/sveltekit/index.cjs.map +1 -0
- package/dist/adapters/sveltekit/index.d.cts +80 -0
- package/dist/adapters/sveltekit/index.d.ts +80 -0
- package/dist/adapters/sveltekit/index.js +273 -0
- package/dist/adapters/sveltekit/index.js.map +1 -0
- package/dist/bind-BSgxoQhN.d.cts +1137 -0
- package/dist/bind-BSgxoQhN.d.ts +1137 -0
- package/dist/codegen-astro.cjs +612 -0
- package/dist/codegen-astro.cjs.map +1 -0
- package/dist/codegen-astro.d.cts +54 -0
- package/dist/codegen-astro.d.ts +54 -0
- package/dist/codegen-astro.js +610 -0
- package/dist/codegen-astro.js.map +1 -0
- package/dist/codegen-cli.cjs +669 -0
- package/dist/codegen-cli.cjs.map +1 -0
- package/dist/codegen-cli.d.cts +19 -0
- package/dist/codegen-cli.d.ts +19 -0
- package/dist/codegen-cli.js +667 -0
- package/dist/codegen-cli.js.map +1 -0
- package/dist/codegen.cjs +551 -0
- package/dist/codegen.cjs.map +1 -0
- package/dist/codegen.d.cts +162 -0
- package/dist/codegen.d.ts +162 -0
- package/dist/codegen.js +547 -0
- package/dist/codegen.js.map +1 -0
- package/dist/core.cjs +3684 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.d.cts +24 -0
- package/dist/core.d.ts +24 -0
- package/dist/core.js +3657 -0
- package/dist/core.js.map +1 -0
- package/dist/index.cjs +4083 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +472 -0
- package/dist/index.d.ts +472 -0
- package/dist/index.js +4040 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware-BwIlf0jW.d.cts +168 -0
- package/dist/middleware-BwIlf0jW.d.ts +168 -0
- package/dist/payload.cjs +31 -0
- package/dist/payload.cjs.map +1 -0
- package/dist/payload.d.cts +87 -0
- package/dist/payload.d.ts +87 -0
- package/dist/payload.js +29 -0
- package/dist/payload.js.map +1 -0
- package/dist/preview-request-DAvxm18T.d.cts +68 -0
- package/dist/preview-request-DAvxm18T.d.ts +68 -0
- package/package.json +186 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/codegen/parser/extract-field.ts","../src/codegen/parser/extract-schema.ts","../src/codegen/emit/emit-types.ts","../src/codegen/index.ts","../src/codegen/astro-plugin.ts"],"names":["Node","SyntaxKind","Project","readStringProperty","literal","field","isAbsolute","resolve","mkdir","dirname","writeFile","watch"],"mappings":"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","file":"codegen-astro.cjs","sourcesContent":["/**\n * Field-level extraction from ts-morph object literals.\n *\n * Payload field definitions are TypeScript object literals like:\n *\n * ```ts\n * { name: 'heroTitle', type: 'text', required: true }\n * ```\n *\n * `extractField()` reads one such literal and produces a normalised\n * `ExtractedField`. It is intentionally tolerant — unknown field types\n * collapse to `unknown`, deeply-conditional fields surface as a\n * diagnostic rather than crashing the parser.\n *\n * @module @codegen/parser/extract-field\n */\n\nimport {\n Node,\n SyntaxKind,\n type ArrayLiteralExpression,\n type ObjectLiteralExpression,\n type PropertyAssignment,\n} from 'ts-morph';\nimport type { ExtractedBlock, ExtractedField, ExtractedScalarField } from './types';\n\nconst SCALAR_TYPE_MAP: Readonly<Record<string, ExtractedScalarField['typeRef']>> = {\n text: 'string',\n textarea: 'string',\n email: 'string',\n richText: 'unknown',\n number: 'number',\n checkbox: 'boolean',\n date: 'string',\n code: 'string',\n point: 'unknown',\n ui: 'unknown',\n radio: 'string',\n};\n\nexport function extractField(literal: ObjectLiteralExpression): ExtractedField | undefined {\n const type = readStringProperty(literal, 'type');\n if (type === undefined) return undefined;\n\n // Most fields carry a `name`. Structural containers (`tabs`,\n // `row`, `collapsible`) do not — they flatten into their parent.\n const STRUCTURAL_TYPES = new Set(['tabs', 'row', 'collapsible']);\n const name = readStringProperty(literal, 'name');\n if (name === undefined && !STRUCTURAL_TYPES.has(type)) return undefined;\n\n const required = readBooleanProperty(literal, 'required') ?? false;\n const localized = readBooleanProperty(literal, 'localized') ?? false;\n const base = { name: name ?? '__structural', required, localized };\n\n switch (type) {\n case 'array':\n return {\n ...base,\n kind: 'array',\n fields: extractNestedFields(literal),\n };\n case 'blocks':\n return {\n ...base,\n kind: 'blocks',\n blocks: extractBlocks(literal),\n };\n case 'group':\n return {\n ...base,\n kind: 'group',\n fields: extractNestedFields(literal),\n };\n case 'tabs':\n case 'row':\n case 'collapsible': {\n // Structural containers — flatten their inner fields up so they\n // appear at the parent's level (Payload does the same at runtime).\n const flattened = extractNestedFieldsFromStructural(literal);\n return {\n ...base,\n kind: 'group',\n fields: flattened,\n };\n }\n case 'relationship':\n return {\n ...base,\n kind: 'relationship',\n target: readRelationTarget(literal),\n hasMany: readBooleanProperty(literal, 'hasMany') ?? false,\n };\n case 'upload':\n return {\n ...base,\n kind: 'upload',\n target: readRelationTargetSingle(literal) ?? 'media',\n };\n case 'json':\n return { ...base, kind: 'json' };\n case 'select':\n return {\n ...base,\n kind: 'select',\n options: readSelectOptions(literal),\n hasMany: readBooleanProperty(literal, 'hasMany') ?? false,\n };\n default: {\n const typeRef = SCALAR_TYPE_MAP[type] ?? 'unknown';\n return { ...base, kind: 'scalar', typeRef };\n }\n }\n}\n\nfunction extractNestedFields(literal: ObjectLiteralExpression): readonly ExtractedField[] {\n const fieldsLiteral = readArrayProperty(literal, 'fields');\n if (!fieldsLiteral) return [];\n const out: ExtractedField[] = [];\n for (const element of fieldsLiteral.getElements()) {\n if (!Node.isObjectLiteralExpression(element)) continue;\n const f = extractField(element);\n if (!f) continue;\n // Structural containers carry the magic `__structural` sentinel\n // name — splat their child fields into the parent instead of\n // surfacing them as a nameless property.\n if (f.kind === 'group' && f.name === '__structural') {\n out.push(...f.fields);\n } else {\n out.push(f);\n }\n }\n return out;\n}\n\nfunction extractNestedFieldsFromStructural(\n literal: ObjectLiteralExpression,\n): readonly ExtractedField[] {\n // `tabs` is the awkward one — its inner shape is `tabs: [{ name, fields }, …]`\n // and each tab can either flatten via `name` or expose itself as a group.\n const tabsLiteral = readArrayProperty(literal, 'tabs');\n if (tabsLiteral) {\n const out: ExtractedField[] = [];\n for (const tabElement of tabsLiteral.getElements()) {\n if (!Node.isObjectLiteralExpression(tabElement)) continue;\n const tabName = readStringProperty(tabElement, 'name');\n const tabFields = extractNestedFields(tabElement);\n if (tabName !== undefined) {\n out.push({\n kind: 'group',\n name: tabName,\n required: false,\n localized: false,\n fields: tabFields,\n });\n } else {\n // Named-less tab — flatten its fields into the parent's surface.\n out.push(...tabFields);\n }\n }\n return out;\n }\n // `row` / `collapsible` — fields array sits directly on the literal.\n return extractNestedFields(literal);\n}\n\nfunction extractBlocks(literal: ObjectLiteralExpression): readonly ExtractedBlock[] {\n const blocksLiteral = readArrayProperty(literal, 'blocks');\n if (!blocksLiteral) return [];\n const out: ExtractedBlock[] = [];\n for (const element of blocksLiteral.getElements()) {\n if (!Node.isObjectLiteralExpression(element)) continue;\n const slug = readStringProperty(element, 'slug');\n if (slug === undefined) continue;\n out.push({\n slug,\n typeName: toPascalCase(slug),\n fields: extractNestedFields(element),\n });\n }\n return out;\n}\n\nfunction readRelationTarget(literal: ObjectLiteralExpression): string | readonly string[] {\n const property = literal.getProperty('relationTo');\n if (!property || !Node.isPropertyAssignment(property)) return 'unknown';\n const initialiser = property.getInitializer();\n if (initialiser && Node.isStringLiteral(initialiser)) return initialiser.getLiteralValue();\n if (initialiser && Node.isArrayLiteralExpression(initialiser)) {\n return initialiser\n .getElements()\n .filter(Node.isStringLiteral)\n .map((el) => el.getLiteralValue());\n }\n return 'unknown';\n}\n\nfunction readRelationTargetSingle(literal: ObjectLiteralExpression): string | undefined {\n const target = readRelationTarget(literal);\n if (typeof target === 'string') return target;\n return target[0];\n}\n\nfunction readSelectOptions(literal: ObjectLiteralExpression): readonly string[] {\n const optionsLiteral = readArrayProperty(literal, 'options');\n if (!optionsLiteral) return [];\n const out: string[] = [];\n for (const element of optionsLiteral.getElements()) {\n if (Node.isStringLiteral(element)) {\n out.push(element.getLiteralValue());\n } else if (Node.isObjectLiteralExpression(element)) {\n const value = readStringProperty(element, 'value');\n if (value !== undefined) out.push(value);\n }\n }\n return out;\n}\n\nfunction readStringProperty(literal: ObjectLiteralExpression, name: string): string | undefined {\n const property = literal.getProperty(name);\n if (!property || !isPropertyAssignment(property)) return undefined;\n const initialiser = property.getInitializer();\n if (initialiser && Node.isStringLiteral(initialiser)) return initialiser.getLiteralValue();\n if (initialiser && Node.isNoSubstitutionTemplateLiteral(initialiser)) {\n return initialiser.getLiteralValue();\n }\n return undefined;\n}\n\nfunction readBooleanProperty(literal: ObjectLiteralExpression, name: string): boolean | undefined {\n const property = literal.getProperty(name);\n if (!property || !isPropertyAssignment(property)) return undefined;\n const initialiser = property.getInitializer();\n if (!initialiser) return undefined;\n if (initialiser.getKind() === SyntaxKind.TrueKeyword) return true;\n if (initialiser.getKind() === SyntaxKind.FalseKeyword) return false;\n return undefined;\n}\n\nfunction readArrayProperty(\n literal: ObjectLiteralExpression,\n name: string,\n): ArrayLiteralExpression | undefined {\n const property = literal.getProperty(name);\n if (!property || !isPropertyAssignment(property)) return undefined;\n const initialiser = property.getInitializer();\n if (initialiser && Node.isArrayLiteralExpression(initialiser)) return initialiser;\n return undefined;\n}\n\nfunction isPropertyAssignment(node: Node): node is PropertyAssignment {\n return Node.isPropertyAssignment(node);\n}\n\nfunction toPascalCase(slug: string): string {\n return slug\n .split(/[-_\\s]+/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join('');\n}\n\nexport { toPascalCase };\n","/**\n * Schema-level extraction: open `payload.config.ts`, find every\n * collection and global definition, walk into them.\n *\n * The extractor is deliberately lenient. Payload configurations are\n * full TypeScript programs — a strict parser would have to model\n * conditional types, factory functions, plugin closures. Instead we\n * recognise the *common* shapes (object literal, identifier\n * referencing an imported literal, default export from a sibling\n * file) and emit a diagnostic for anything we can't unwrap.\n *\n * @module @codegen/parser/extract-schema\n */\n\nimport {\n Node,\n Project,\n SyntaxKind,\n type ArrayLiteralExpression,\n type Identifier,\n type ObjectLiteralExpression,\n type SourceFile,\n} from 'ts-morph';\nimport type { ExtractedField, ExtractedSchema, ExtractedSlug } from './types';\nimport { extractField, toPascalCase } from './extract-field';\n\nexport interface ExtractSchemaOptions {\n /** Absolute or relative path to `payload.config.ts`. */\n readonly configPath: string;\n /** When provided, used instead of constructing a fresh ts-morph project. */\n readonly project?: Project;\n /**\n * Optional path to a `tsconfig.json`. When set, ts-morph loads the\n * project's module-resolution configuration so cross-file imports\n * (Homepage from './globals') can be followed.\n */\n readonly tsConfigFilePath?: string;\n}\n\nexport function extractSchema(options: ExtractSchemaOptions): ExtractedSchema {\n const project =\n options.project ??\n new Project(\n options.tsConfigFilePath !== undefined\n ? { tsConfigFilePath: options.tsConfigFilePath }\n : { skipAddingFilesFromTsConfig: true },\n );\n const sourceFile = project.addSourceFileAtPathIfExists(options.configPath);\n if (!sourceFile) {\n return {\n globals: [],\n collections: [],\n diagnostics: [`Could not open ${options.configPath}`],\n };\n }\n // Pull in every transitively-imported file so cross-file identifier\n // resolution (e.g., `import { Homepage } from './globals'`) can\n // reach the underlying object literal.\n project.resolveSourceFileDependencies();\n const diagnostics: string[] = [];\n\n const configLiteral = findConfigLiteral(sourceFile, diagnostics);\n if (!configLiteral) {\n return {\n globals: [],\n collections: [],\n diagnostics: [\n ...diagnostics,\n 'Could not locate a buildConfig({...}) call or `export default {...}` in the config file.',\n ],\n };\n }\n\n const globals = extractSlugList(configLiteral, 'globals', diagnostics);\n const collections = extractSlugList(configLiteral, 'collections', diagnostics);\n\n return { globals, collections, diagnostics };\n}\n\nfunction findConfigLiteral(\n sourceFile: SourceFile,\n diagnostics: string[],\n): ObjectLiteralExpression | undefined {\n const defaultExport = sourceFile.getExportSymbols().find((sym) => sym.getName() === 'default');\n if (!defaultExport) {\n diagnostics.push('payload.config.ts has no default export.');\n return undefined;\n }\n const declarations = defaultExport.getDeclarations();\n for (const decl of declarations) {\n const candidate = unwrapToObjectLiteral(decl);\n if (candidate) return candidate;\n }\n // Fallback: scan the source file for the first `buildConfig({...})` call.\n for (const call of sourceFile.getDescendantsOfKind(SyntaxKind.CallExpression)) {\n const expr = call.getExpression();\n if (Node.isIdentifier(expr) && expr.getText() === 'buildConfig') {\n const arg = call.getArguments()[0];\n if (arg && Node.isObjectLiteralExpression(arg)) return arg;\n }\n }\n return undefined;\n}\n\nfunction unwrapToObjectLiteral(node: Node): ObjectLiteralExpression | undefined {\n if (Node.isExportAssignment(node)) {\n return unwrapExpression(node.getExpression());\n }\n if (Node.isVariableDeclaration(node)) {\n const initialiser = node.getInitializer();\n if (initialiser) return unwrapExpression(initialiser);\n }\n return undefined;\n}\n\nfunction unwrapExpression(node: Node | undefined): ObjectLiteralExpression | undefined {\n if (!node) return undefined;\n if (Node.isObjectLiteralExpression(node)) return node;\n if (Node.isCallExpression(node)) {\n // `buildConfig({...})` or `defineConfig({...})` — first arg.\n const arg = node.getArguments()[0];\n if (arg && Node.isObjectLiteralExpression(arg)) return arg;\n }\n if (Node.isAsExpression(node)) {\n return unwrapExpression(node.getExpression());\n }\n if (Node.isSatisfiesExpression(node)) {\n return unwrapExpression(node.getExpression());\n }\n if (Node.isIdentifier(node)) {\n return resolveIdentifierToObjectLiteral(node);\n }\n return undefined;\n}\n\nfunction resolveIdentifierToObjectLiteral(\n identifier: Identifier,\n): ObjectLiteralExpression | undefined {\n for (const decl of identifier.getDefinitionNodes()) {\n const result = unwrapToObjectLiteral(decl);\n if (result) return result;\n }\n return undefined;\n}\n\nfunction extractSlugList(\n configLiteral: ObjectLiteralExpression,\n key: 'globals' | 'collections',\n diagnostics: string[],\n): readonly ExtractedSlug[] {\n const property = configLiteral.getProperty(key);\n if (!property) return [];\n if (!Node.isPropertyAssignment(property)) return [];\n const initialiser = property.getInitializer();\n if (!initialiser) return [];\n const array = resolveToArrayLiteral(initialiser);\n if (!array) return [];\n return extractEntries(array, diagnostics);\n}\n\nfunction extractEntries(\n array: ArrayLiteralExpression,\n diagnostics: string[],\n): readonly ExtractedSlug[] {\n const out: ExtractedSlug[] = [];\n for (const element of array.getElements()) {\n // Handle `...someArray` spreads — common pattern in real Payload\n // configs that split globals/collections into named buckets.\n if (Node.isSpreadElement(element)) {\n const expandedArray = resolveToArrayLiteral(element.getExpression());\n if (!expandedArray) {\n diagnostics.push(\n `Could not resolve spread \"${element.getText().slice(0, 80)}\" to an array literal.`,\n );\n continue;\n }\n out.push(...extractEntries(expandedArray, diagnostics));\n continue;\n }\n const literal = resolveToObjectLiteral(element);\n if (!literal) {\n diagnostics.push(\n `Could not resolve config entry \"${element.getText().slice(0, 80)}\" to an object literal.`,\n );\n continue;\n }\n const slug = readStringProperty(literal, 'slug');\n if (slug === undefined) {\n diagnostics.push(`Skipping a config entry — no string \\`slug\\` field found.`);\n continue;\n }\n out.push({\n slug,\n typeName: toPascalCase(slug),\n fields: extractFieldList(literal),\n });\n }\n return out;\n}\n\nfunction extractFieldList(configEntry: ObjectLiteralExpression): readonly ExtractedField[] {\n const fieldsProperty = configEntry.getProperty('fields');\n if (!fieldsProperty || !Node.isPropertyAssignment(fieldsProperty)) return [];\n const initialiser = fieldsProperty.getInitializer();\n if (!initialiser || !Node.isArrayLiteralExpression(initialiser)) return [];\n const out: ExtractedField[] = [];\n for (const element of initialiser.getElements()) {\n // Allow spread elements for users who split fields into reusable\n // arrays (e.g., `...commonSeoFields`).\n if (Node.isSpreadElement(element)) {\n const expanded = resolveToArrayLiteral(element.getExpression());\n if (!expanded) continue;\n for (const inner of expanded.getElements()) {\n const literal = resolveToObjectLiteral(inner);\n if (!literal) continue;\n const field = extractField(literal);\n if (!field) continue;\n if (field.kind === 'group' && field.name === '__structural') {\n out.push(...field.fields);\n } else {\n out.push(field);\n }\n }\n continue;\n }\n const literal = resolveToObjectLiteral(element);\n if (!literal) continue;\n const field = extractField(literal);\n if (!field) continue;\n if (field.kind === 'group' && field.name === '__structural') {\n out.push(...field.fields);\n } else {\n out.push(field);\n }\n }\n return out;\n}\n\nfunction resolveToObjectLiteral(node: Node): ObjectLiteralExpression | undefined {\n if (Node.isObjectLiteralExpression(node)) return node;\n if (Node.isIdentifier(node)) return resolveIdentifierToObjectLiteral(node);\n if (Node.isAsExpression(node)) return resolveToObjectLiteral(node.getExpression());\n if (Node.isSatisfiesExpression(node)) return resolveToObjectLiteral(node.getExpression());\n if (Node.isCallExpression(node)) {\n const arg = node.getArguments()[0];\n if (arg) return resolveToObjectLiteral(arg);\n }\n return undefined;\n}\n\nfunction resolveToArrayLiteral(node: Node): ArrayLiteralExpression | undefined {\n if (Node.isArrayLiteralExpression(node)) return node;\n if (Node.isAsExpression(node)) return resolveToArrayLiteral(node.getExpression());\n if (Node.isSatisfiesExpression(node)) return resolveToArrayLiteral(node.getExpression());\n if (Node.isIdentifier(node)) {\n for (const decl of node.getDefinitionNodes()) {\n if (Node.isVariableDeclaration(decl)) {\n const initialiser = decl.getInitializer();\n if (initialiser) {\n const resolved = resolveToArrayLiteral(initialiser);\n if (resolved) return resolved;\n }\n }\n }\n }\n return undefined;\n}\n\nfunction readStringProperty(literal: ObjectLiteralExpression, name: string): string | undefined {\n const property = literal.getProperty(name);\n if (!property || !Node.isPropertyAssignment(property)) return undefined;\n const initialiser = property.getInitializer();\n if (initialiser && Node.isStringLiteral(initialiser)) return initialiser.getLiteralValue();\n return undefined;\n}\n","/**\n * Render `ExtractedSchema` to a TypeScript source string.\n *\n * The output is one self-contained `.ts` file that ships:\n *\n * - one `interface` per global and per collection,\n * - nested `interface` declarations for `group`/`array`/`blocks`,\n * - discriminated unions for `blocks` fields (one variant per slug),\n * - `PayloadCollections` / `PayloadGlobals` maps for slug-keyed\n * access (`PayloadCollections['posts']`), and\n * - a `PayloadSlug` alias.\n *\n * Nothing in the runtime depends on this output — consumers import\n * what they need by name.\n *\n * @module @codegen/emit/emit-types\n */\n\nimport type {\n ExtractedBlock,\n ExtractedField,\n ExtractedSchema,\n ExtractedSlug,\n} from '../parser/types';\nimport { toPascalCase } from '../parser/extract-field';\n\nexport interface EmitOptions {\n /** When true, includes a `@deprecated` JSDoc on localized fields. */\n readonly markLocalizedAsDeprecated?: boolean;\n /** Header text injected at the top of the output. Defaults sensibly. */\n readonly header?: string;\n}\n\nconst DEFAULT_HEADER =\n '// Auto-generated by payload-live-preview/codegen.\\n' +\n '// Do not edit by hand — run `pll-codegen` to regenerate.\\n' +\n '/* eslint-disable */';\n\nexport function emitTypes(schema: ExtractedSchema, options: EmitOptions = {}): string {\n const lines: string[] = [];\n lines.push(options.header ?? DEFAULT_HEADER);\n lines.push('');\n lines.push('import type { PayloadMedia, PayloadRelationship } from \"payload-live-preview\";');\n lines.push('');\n\n // Emit slug interfaces (globals + collections), each potentially\n // accompanied by nested interface declarations.\n const seenAuxNames = new Set<string>();\n for (const slug of [...schema.globals, ...schema.collections]) {\n emitSlug(slug, lines, seenAuxNames, options);\n lines.push('');\n }\n\n // Slug → type maps.\n if (schema.globals.length > 0) {\n lines.push('export type PayloadGlobals = {');\n for (const g of schema.globals) {\n lines.push(` '${g.slug}': ${g.typeName};`);\n }\n lines.push('};');\n lines.push('');\n }\n if (schema.collections.length > 0) {\n lines.push('export type PayloadCollections = {');\n for (const c of schema.collections) {\n lines.push(` '${c.slug}': ${c.typeName};`);\n }\n lines.push('};');\n lines.push('');\n }\n const slugAliases: string[] = [];\n if (schema.globals.length > 0) slugAliases.push('keyof PayloadGlobals');\n if (schema.collections.length > 0) slugAliases.push('keyof PayloadCollections');\n if (slugAliases.length > 0) {\n lines.push(`export type PayloadSlug = ${slugAliases.join(' | ')};`);\n lines.push('');\n }\n\n return lines.join('\\n').replace(/\\n{3,}/g, '\\n\\n');\n}\n\nfunction emitSlug(\n slug: ExtractedSlug,\n lines: string[],\n seenAuxNames: Set<string>,\n options: EmitOptions,\n): void {\n emitAuxiliaries(slug.typeName, slug.fields, lines, seenAuxNames, options);\n lines.push(`export interface ${slug.typeName} {`);\n for (const field of slug.fields) {\n emitFieldMember(field, slug.typeName, lines, options);\n }\n lines.push('}');\n}\n\nfunction emitAuxiliaries(\n prefix: string,\n fields: readonly ExtractedField[],\n lines: string[],\n seenAuxNames: Set<string>,\n options: EmitOptions,\n): void {\n for (const field of fields) {\n const auxName = nestedTypeName(prefix, field.name);\n if (field.kind === 'array' || field.kind === 'group') {\n if (seenAuxNames.has(auxName)) continue;\n seenAuxNames.add(auxName);\n emitAuxiliaries(auxName, field.fields, lines, seenAuxNames, options);\n lines.push(`export interface ${auxName} {`);\n for (const inner of field.fields) {\n emitFieldMember(inner, auxName, lines, options);\n }\n lines.push('}');\n lines.push('');\n } else if (field.kind === 'blocks') {\n for (const block of field.blocks) {\n const blockTypeName = nestedTypeName(auxName, block.typeName);\n if (seenAuxNames.has(blockTypeName)) continue;\n seenAuxNames.add(blockTypeName);\n emitAuxiliaries(blockTypeName, block.fields, lines, seenAuxNames, options);\n emitBlockInterface(blockTypeName, block, lines, options);\n }\n }\n }\n}\n\nfunction emitBlockInterface(\n typeName: string,\n block: ExtractedBlock,\n lines: string[],\n options: EmitOptions,\n): void {\n lines.push(`export interface ${typeName} {`);\n lines.push(` blockType: '${block.slug}';`);\n for (const field of block.fields) {\n emitFieldMember(field, typeName, lines, options);\n }\n lines.push('}');\n lines.push('');\n}\n\nfunction emitFieldMember(\n field: ExtractedField,\n parent: string,\n lines: string[],\n options: EmitOptions,\n): void {\n if (options.markLocalizedAsDeprecated && field.localized) {\n lines.push(` /** @localized */`);\n }\n const optional = field.required ? '' : '?';\n lines.push(` ${field.name}${optional}: ${renderFieldType(field, parent)};`);\n}\n\nfunction renderFieldType(field: ExtractedField, parent: string): string {\n switch (field.kind) {\n case 'scalar':\n return field.typeRef;\n case 'array':\n return `${nestedTypeName(parent, field.name)}[]`;\n case 'blocks': {\n if (field.blocks.length === 0) return 'unknown[]';\n const variants = field.blocks\n .map((b) => nestedTypeName(nestedTypeName(parent, field.name), b.typeName))\n .join(' | ');\n return `(${variants})[]`;\n }\n case 'group':\n return nestedTypeName(parent, field.name);\n case 'relationship': {\n const targetExpr: string = Array.isArray(field.target)\n ? field.target.map((t) => `'${t}'`).join(' | ')\n : `'${field.target as string}'`;\n const base = `PayloadRelationship<${targetExpr}>`;\n return field.hasMany ? `${base}[]` : base;\n }\n case 'upload':\n return 'PayloadMedia';\n case 'json':\n return 'unknown';\n case 'select': {\n if (field.options.length === 0) return field.hasMany ? 'string[]' : 'string';\n const literal = field.options.map((o) => `'${o}'`).join(' | ');\n return field.hasMany ? `(${literal})[]` : literal;\n }\n }\n}\n\nfunction nestedTypeName(parent: string, child: string): string {\n return `${parent}${toPascalCase(child)}`;\n}\n","/**\n * Programmatic codegen API.\n *\n * ```ts\n * import { generateTypes } from 'payload-live-preview/codegen';\n * const { code, diagnostics } = await generateTypes({\n * configPath: 'backend/src/payload.config.ts',\n * outFile: 'frontend/src/payload-types.ts',\n * });\n * ```\n *\n * @module @codegen\n */\n\nimport { mkdir, writeFile } from 'node:fs/promises';\nimport { dirname, isAbsolute, resolve } from 'node:path';\nimport { extractSchema, type ExtractSchemaOptions } from './parser/extract-schema';\nimport { emitTypes, type EmitOptions } from './emit/emit-types';\nimport type { ExtractedSchema } from './parser/types';\n\nexport interface GenerateTypesOptions\n extends Pick<ExtractSchemaOptions, 'configPath' | 'project' | 'tsConfigFilePath'>, EmitOptions {\n /**\n * If set, the generated code is written to this absolute or\n * cwd-relative path. The function still returns the rendered string\n * in `code` so callers can verify before writing.\n */\n readonly outFile?: string;\n /** Working directory used to resolve relative paths. Defaults to `process.cwd()`. */\n readonly cwd?: string;\n}\n\nexport interface GenerateTypesResult {\n readonly code: string;\n readonly diagnostics: readonly string[];\n readonly schema: ExtractedSchema;\n readonly outFile?: string;\n}\n\nexport async function generateTypes(options: GenerateTypesOptions): Promise<GenerateTypesResult> {\n const cwd = options.cwd ?? process.cwd();\n const configPath = isAbsolute(options.configPath)\n ? options.configPath\n : resolve(cwd, options.configPath);\n const schema = extractSchema({\n configPath,\n ...(options.project !== undefined ? { project: options.project } : {}),\n ...(options.tsConfigFilePath !== undefined\n ? { tsConfigFilePath: options.tsConfigFilePath }\n : {}),\n });\n const code = emitTypes(schema, options);\n\n const result: GenerateTypesResult = options.outFile\n ? {\n code,\n diagnostics: schema.diagnostics,\n schema,\n outFile: isAbsolute(options.outFile) ? options.outFile : resolve(cwd, options.outFile),\n }\n : { code, diagnostics: schema.diagnostics, schema };\n\n if (result.outFile) {\n await mkdir(dirname(result.outFile), { recursive: true });\n await writeFile(result.outFile, code, 'utf8');\n }\n\n return result;\n}\n\nexport { extractSchema } from './parser/extract-schema';\nexport { emitTypes } from './emit/emit-types';\nexport type { ExtractedSchema, ExtractedSlug, ExtractedField } from './parser/types';\n","/**\n * Astro integration — regenerates the types file on dev-server start\n * and (optionally) watches `payload.config.ts` for changes.\n *\n * ```ts\n * // astro.config.mjs\n * import { livePreviewCodegen } from 'payload-live-preview/codegen';\n *\n * export default defineConfig({\n * integrations: [\n * livePreviewCodegen({\n * configPath: '../backend/src/payload.config.ts',\n * outPath: 'src/payload-types.ts',\n * watch: true,\n * }),\n * ],\n * });\n * ```\n *\n * The plugin uses Node's `fs.watch` (no chokidar dependency) — Astro\n * already bundles enough watch-mode tooling that we don't need a\n * full-fat library here.\n *\n * @module @codegen/astro-plugin\n */\n\nimport { watch } from 'node:fs';\nimport { generateTypes } from './index';\n\nexport interface AstroCodegenOptions {\n /** Path to `payload.config.ts` (absolute or relative to Astro's root). */\n readonly configPath: string;\n /** Output path for generated types (absolute or relative to Astro's root). */\n readonly outPath: string;\n /** Re-run on `payload.config.ts` changes during `astro dev`. Default `true`. */\n readonly watch?: boolean;\n /** Quiet mode — only error logging. Default `false`. */\n readonly quiet?: boolean;\n}\n\ninterface AstroLogger {\n readonly info: (msg: string) => void;\n readonly warn: (msg: string) => void;\n readonly error: (msg: string) => void;\n}\n\ninterface AstroIntegration {\n readonly name: string;\n readonly hooks: Readonly<{\n readonly 'astro:config:setup'?: (params: {\n readonly command: string;\n readonly logger?: AstroLogger;\n }) => Promise<void> | void;\n readonly 'astro:server:start'?: () => void;\n readonly 'astro:build:start'?: () => Promise<void> | void;\n }>;\n}\n\nexport function livePreviewCodegen(options: AstroCodegenOptions): AstroIntegration {\n const watchEnabled = options.watch ?? true;\n let watcher: ReturnType<typeof watch> | undefined;\n let active = false;\n let queued = false;\n\n async function regenerate(logger: AstroLogger | undefined): Promise<void> {\n if (active) {\n queued = true;\n return;\n }\n active = true;\n try {\n const result = await generateTypes({\n configPath: options.configPath,\n outFile: options.outPath,\n });\n if (!options.quiet) {\n logger?.info(\n `pll-codegen: ${result.schema.globals.length} globals, ${result.schema.collections.length} collections → ${options.outPath}`,\n );\n for (const diagnostic of result.diagnostics) {\n logger?.warn(`pll-codegen: ${diagnostic}`);\n }\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n logger?.error(`pll-codegen failed: ${message}`);\n } finally {\n active = false;\n if (queued) {\n queued = false;\n void regenerate(logger);\n }\n }\n }\n\n return {\n name: 'payload-live-preview:codegen',\n hooks: {\n 'astro:config:setup': async ({ command, logger }) => {\n await regenerate(logger);\n if (watchEnabled && command === 'dev') {\n try {\n watcher = watch(options.configPath, () => {\n void regenerate(logger);\n });\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n logger?.warn(`pll-codegen watcher unavailable: ${message}`);\n }\n }\n },\n 'astro:server:start': () => {\n // No-op — watcher was set up during config:setup. Hook kept so\n // future versions can react to dev-server lifecycle events.\n },\n 'astro:build:start': () => {\n watcher?.close();\n watcher = undefined;\n },\n },\n };\n}\n"]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Astro integration — regenerates the types file on dev-server start
|
|
3
|
+
* and (optionally) watches `payload.config.ts` for changes.
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* // astro.config.mjs
|
|
7
|
+
* import { livePreviewCodegen } from 'payload-live-preview/codegen';
|
|
8
|
+
*
|
|
9
|
+
* export default defineConfig({
|
|
10
|
+
* integrations: [
|
|
11
|
+
* livePreviewCodegen({
|
|
12
|
+
* configPath: '../backend/src/payload.config.ts',
|
|
13
|
+
* outPath: 'src/payload-types.ts',
|
|
14
|
+
* watch: true,
|
|
15
|
+
* }),
|
|
16
|
+
* ],
|
|
17
|
+
* });
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* The plugin uses Node's `fs.watch` (no chokidar dependency) — Astro
|
|
21
|
+
* already bundles enough watch-mode tooling that we don't need a
|
|
22
|
+
* full-fat library here.
|
|
23
|
+
*
|
|
24
|
+
* @module @codegen/astro-plugin
|
|
25
|
+
*/
|
|
26
|
+
interface AstroCodegenOptions {
|
|
27
|
+
/** Path to `payload.config.ts` (absolute or relative to Astro's root). */
|
|
28
|
+
readonly configPath: string;
|
|
29
|
+
/** Output path for generated types (absolute or relative to Astro's root). */
|
|
30
|
+
readonly outPath: string;
|
|
31
|
+
/** Re-run on `payload.config.ts` changes during `astro dev`. Default `true`. */
|
|
32
|
+
readonly watch?: boolean;
|
|
33
|
+
/** Quiet mode — only error logging. Default `false`. */
|
|
34
|
+
readonly quiet?: boolean;
|
|
35
|
+
}
|
|
36
|
+
interface AstroLogger {
|
|
37
|
+
readonly info: (msg: string) => void;
|
|
38
|
+
readonly warn: (msg: string) => void;
|
|
39
|
+
readonly error: (msg: string) => void;
|
|
40
|
+
}
|
|
41
|
+
interface AstroIntegration {
|
|
42
|
+
readonly name: string;
|
|
43
|
+
readonly hooks: Readonly<{
|
|
44
|
+
readonly 'astro:config:setup'?: (params: {
|
|
45
|
+
readonly command: string;
|
|
46
|
+
readonly logger?: AstroLogger;
|
|
47
|
+
}) => Promise<void> | void;
|
|
48
|
+
readonly 'astro:server:start'?: () => void;
|
|
49
|
+
readonly 'astro:build:start'?: () => Promise<void> | void;
|
|
50
|
+
}>;
|
|
51
|
+
}
|
|
52
|
+
declare function livePreviewCodegen(options: AstroCodegenOptions): AstroIntegration;
|
|
53
|
+
|
|
54
|
+
export { type AstroCodegenOptions, livePreviewCodegen };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Astro integration — regenerates the types file on dev-server start
|
|
3
|
+
* and (optionally) watches `payload.config.ts` for changes.
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* // astro.config.mjs
|
|
7
|
+
* import { livePreviewCodegen } from 'payload-live-preview/codegen';
|
|
8
|
+
*
|
|
9
|
+
* export default defineConfig({
|
|
10
|
+
* integrations: [
|
|
11
|
+
* livePreviewCodegen({
|
|
12
|
+
* configPath: '../backend/src/payload.config.ts',
|
|
13
|
+
* outPath: 'src/payload-types.ts',
|
|
14
|
+
* watch: true,
|
|
15
|
+
* }),
|
|
16
|
+
* ],
|
|
17
|
+
* });
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* The plugin uses Node's `fs.watch` (no chokidar dependency) — Astro
|
|
21
|
+
* already bundles enough watch-mode tooling that we don't need a
|
|
22
|
+
* full-fat library here.
|
|
23
|
+
*
|
|
24
|
+
* @module @codegen/astro-plugin
|
|
25
|
+
*/
|
|
26
|
+
interface AstroCodegenOptions {
|
|
27
|
+
/** Path to `payload.config.ts` (absolute or relative to Astro's root). */
|
|
28
|
+
readonly configPath: string;
|
|
29
|
+
/** Output path for generated types (absolute or relative to Astro's root). */
|
|
30
|
+
readonly outPath: string;
|
|
31
|
+
/** Re-run on `payload.config.ts` changes during `astro dev`. Default `true`. */
|
|
32
|
+
readonly watch?: boolean;
|
|
33
|
+
/** Quiet mode — only error logging. Default `false`. */
|
|
34
|
+
readonly quiet?: boolean;
|
|
35
|
+
}
|
|
36
|
+
interface AstroLogger {
|
|
37
|
+
readonly info: (msg: string) => void;
|
|
38
|
+
readonly warn: (msg: string) => void;
|
|
39
|
+
readonly error: (msg: string) => void;
|
|
40
|
+
}
|
|
41
|
+
interface AstroIntegration {
|
|
42
|
+
readonly name: string;
|
|
43
|
+
readonly hooks: Readonly<{
|
|
44
|
+
readonly 'astro:config:setup'?: (params: {
|
|
45
|
+
readonly command: string;
|
|
46
|
+
readonly logger?: AstroLogger;
|
|
47
|
+
}) => Promise<void> | void;
|
|
48
|
+
readonly 'astro:server:start'?: () => void;
|
|
49
|
+
readonly 'astro:build:start'?: () => Promise<void> | void;
|
|
50
|
+
}>;
|
|
51
|
+
}
|
|
52
|
+
declare function livePreviewCodegen(options: AstroCodegenOptions): AstroIntegration;
|
|
53
|
+
|
|
54
|
+
export { type AstroCodegenOptions, livePreviewCodegen };
|