@payloadcms/typescript-plugin 3.78.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.md +22 -0
- package/dist/__tests__/fixtures/components/MyField.d.ts +3 -0
- package/dist/__tests__/fixtures/components/MyField.d.ts.map +1 -0
- package/dist/__tests__/fixtures/components/MyField.js +22 -0
- package/dist/__tests__/fixtures/components/MyField.js.map +1 -0
- package/dist/__tests__/fixtures/components/icons/Icon/index.d.ts +3 -0
- package/dist/__tests__/fixtures/components/icons/Icon/index.d.ts.map +1 -0
- package/dist/__tests__/fixtures/components/icons/Icon/index.js +22 -0
- package/dist/__tests__/fixtures/components/icons/Icon/index.js.map +1 -0
- package/dist/__tests__/fixtures/components/views/CustomView/index.d.ts +3 -0
- package/dist/__tests__/fixtures/components/views/CustomView/index.d.ts.map +1 -0
- package/dist/__tests__/fixtures/components/views/CustomView/index.js +22 -0
- package/dist/__tests__/fixtures/components/views/CustomView/index.js.map +1 -0
- package/dist/__tests__/fixtures/payload-types.d.js +3 -0
- package/dist/__tests__/fixtures/payload-types.d.js.map +1 -0
- package/dist/__tests__/fixtures/payload.config.d.ts +3 -0
- package/dist/__tests__/fixtures/payload.config.d.ts.map +1 -0
- package/dist/__tests__/fixtures/payload.config.js +13 -0
- package/dist/__tests__/fixtures/payload.config.js.map +1 -0
- package/dist/__tests__/fixtures/src/components/NavIcon.d.ts +3 -0
- package/dist/__tests__/fixtures/src/components/NavIcon.d.ts.map +1 -0
- package/dist/__tests__/fixtures/src/components/NavIcon.js +22 -0
- package/dist/__tests__/fixtures/src/components/NavIcon.js.map +1 -0
- package/dist/__tests__/fixtures/src/components/ui/Badge.d.ts +4 -0
- package/dist/__tests__/fixtures/src/components/ui/Badge.d.ts.map +1 -0
- package/dist/__tests__/fixtures/src/components/ui/Badge.js +26 -0
- package/dist/__tests__/fixtures/src/components/ui/Badge.js.map +1 -0
- package/dist/__tests__/fixtures/test-config.d.ts +2 -0
- package/dist/__tests__/fixtures/test-config.d.ts.map +1 -0
- package/dist/__tests__/fixtures/test-config.js +146 -0
- package/dist/__tests__/fixtures/test-config.js.map +1 -0
- package/dist/__tests__/fixtures/test-paths.d.ts +2 -0
- package/dist/__tests__/fixtures/test-paths.d.ts.map +1 -0
- package/dist/__tests__/fixtures/test-paths.js +115 -0
- package/dist/__tests__/fixtures/test-paths.js.map +1 -0
- package/dist/helpers.d.ts +26 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +118 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +474 -0
- package/dist/index.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type tslib from 'typescript/lib/tsserverlibrary'\n\nimport type { PayloadComponentContext } from './helpers.js'\n\nimport { findNodeAtPosition, getPayloadComponentContext } from './helpers.js'\n\nfunction init(modules: { typescript: typeof tslib }) {\n const ts = modules.typescript\n\n function create(info: tslib.server.PluginCreateInfo): tslib.LanguageService {\n const log = (msg: string) =>\n info.project.projectService.logger.info(`[@payloadcms/typescript-plugin] ${msg}`)\n\n log('Plugin initializing')\n\n const baseDirConfig: string | undefined = info.config?.baseDir\n const baseDirCache = new Map<string, string | undefined>()\n const sys = info.serverHost || ts.sys\n\n const proxy: tslib.LanguageService = Object.create(null)\n\n for (const k of Object.keys(info.languageService) as Array<keyof tslib.LanguageService>) {\n const x = info.languageService[k]!\n // @ts-expect-error - decorator pattern for language service proxy\n proxy[k] = (...args: Array<{}>) => x.apply(info.languageService, args)\n }\n\n function getBaseDir(fileName: string): string | undefined {\n if (baseDirConfig) {\n const projectDir = info.project.getCurrentDirectory()\n return ts.sys.resolvePath(projectDir + '/' + baseDirConfig)\n }\n\n const cached = baseDirCache.get(fileName)\n if (cached !== undefined) {\n return cached\n }\n\n const detected = findPayloadConfigDir(sys, fileName)\n baseDirCache.set(fileName, detected)\n\n if (detected) {\n log(`Detected baseDir: ${detected} (from payload config near ${fileName})`)\n }\n\n return detected\n }\n\n proxy.getSemanticDiagnostics = (fileName) => {\n const prior = info.languageService.getSemanticDiagnostics(fileName)\n\n const program = info.languageService.getProgram()\n if (!program) {\n return prior\n }\n\n const sourceFile = program.getSourceFile(fileName)\n if (!sourceFile) {\n return prior\n }\n\n const checker = program.getTypeChecker()\n const baseDir = getBaseDir(fileName)\n const additional = getPayloadDiagnostics(ts, sourceFile, checker, program, baseDir)\n\n return [...prior, ...additional]\n }\n\n proxy.getCompletionsAtPosition = (fileName, position, options, formattingSettings) => {\n const program = info.languageService.getProgram()\n if (program) {\n const sourceFile = program.getSourceFile(fileName)\n if (sourceFile) {\n const checker = program.getTypeChecker()\n const node = findNodeAtPosition(ts, sourceFile, position)\n\n if (node && ts.isStringLiteral(node)) {\n const baseDir = getBaseDir(fileName)\n const result = getPayloadCompletions(ts, node, position, checker, program, baseDir, sys)\n if (result) {\n return result\n }\n }\n }\n }\n\n return info.languageService.getCompletionsAtPosition(\n fileName,\n position,\n options,\n formattingSettings,\n )\n }\n\n proxy.getDefinitionAndBoundSpan = (fileName, position) => {\n const program = info.languageService.getProgram()\n if (program) {\n const sourceFile = program.getSourceFile(fileName)\n if (sourceFile) {\n const checker = program.getTypeChecker()\n const node = findNodeAtPosition(ts, sourceFile, position)\n\n if (node && ts.isStringLiteral(node)) {\n const baseDir = getBaseDir(fileName)\n const result = getPayloadDefinition(ts, node, checker, program, baseDir)\n if (result) {\n return result\n }\n }\n }\n }\n\n return info.languageService.getDefinitionAndBoundSpan(fileName, position)\n }\n\n log('Plugin initialized successfully')\n return proxy\n }\n\n return { create }\n}\n\n// -------------------------------------------------------------------\n// Shared utilities\n// -------------------------------------------------------------------\n\n/**\n * Extracts the module path and export name from any PayloadComponent context.\n * Mirrors the logic of `parsePayloadComponent` in payload core:\n * splits `#` for the export name, and respects sibling `exportName`/`path` overrides.\n */\nfunction parsePayloadComponent(\n context: PayloadComponentContext,\n nodeText: string,\n): { exportName: string; path: string } | undefined {\n let pathAndMaybeExport: string\n let exportNameOverride: string | undefined\n\n if (context.type === 'string' || context.type === 'path') {\n pathAndMaybeExport = nodeText\n exportNameOverride = context.type === 'path' ? context.exportNameValue : undefined\n } else if (context.type === 'exportName' && context.pathValue) {\n pathAndMaybeExport = context.pathValue\n exportNameOverride = nodeText\n } else {\n return undefined\n }\n\n let path: string\n let exportName: string\n\n if (pathAndMaybeExport.includes('#')) {\n ;[path, exportName] = pathAndMaybeExport.split('#', 2) as [string, string]\n exportName = exportName || 'default'\n } else {\n path = pathAndMaybeExport\n exportName = 'default'\n }\n\n if (exportNameOverride) {\n exportName = exportNameOverride\n }\n\n return { exportName, path }\n}\n\nfunction resolveModulePath(\n ts: typeof tslib,\n modulePath: string,\n containingFile: string,\n program: tslib.Program,\n baseDir: string | undefined,\n): tslib.ResolvedModuleFull | undefined {\n const compilerOptions = program.getCompilerOptions()\n\n let pathToResolve = modulePath\n let resolveFrom = containingFile\n\n // Payload convention: '/' and './' paths are relative to baseDir.\n // Resolve from a synthetic file inside baseDir so TypeScript uses it as the base.\n if (modulePath.startsWith('/') || modulePath.startsWith('./')) {\n if (baseDir) {\n resolveFrom = baseDir + '/_.ts'\n }\n\n if (modulePath.startsWith('/')) {\n pathToResolve = '.' + modulePath\n }\n }\n\n // Delegate entirely to TypeScript's module resolution -- respects the project's\n // moduleResolution, paths, allowImportingTsExtensions, etc.\n const result = ts.resolveModuleName(pathToResolve, resolveFrom, compilerOptions, ts.sys)\n return result.resolvedModule\n}\n\nfunction getModuleExports(\n resolvedModule: tslib.ResolvedModuleFull,\n program: tslib.Program,\n): string[] {\n const sourceFile = program.getSourceFile(resolvedModule.resolvedFileName)\n if (!sourceFile) {\n return []\n }\n\n const checker = program.getTypeChecker()\n const moduleSymbol = checker.getSymbolAtLocation(sourceFile)\n if (!moduleSymbol) {\n return []\n }\n\n return checker.getExportsOfModule(moduleSymbol).map((e) => e.name)\n}\n\n// -------------------------------------------------------------------\n// Diagnostics\n// -------------------------------------------------------------------\n\nfunction getPayloadDiagnostics(\n ts: typeof tslib,\n sourceFile: tslib.SourceFile,\n checker: tslib.TypeChecker,\n program: tslib.Program,\n baseDir: string | undefined,\n): tslib.Diagnostic[] {\n const diagnostics: tslib.Diagnostic[] = []\n\n function visit(node: tslib.Node) {\n if (ts.isStringLiteral(node) && node.text.length > 0) {\n const context = getPayloadComponentContext(ts, node, checker)\n if (!context) {\n ts.forEachChild(node, visit)\n return\n }\n\n const component = parsePayloadComponent(context, node.text)\n if (!component?.path) {\n ts.forEachChild(node, visit)\n return\n }\n\n const { exportName, path: modulePath } = component\n\n const resolved = resolveModulePath(ts, modulePath, sourceFile.fileName, program, baseDir)\n\n if (!resolved) {\n diagnostics.push({\n category: ts.DiagnosticCategory.Error,\n code: 71001,\n file: sourceFile,\n length: node.text.length,\n messageText: `Cannot find module '${modulePath}'. Ensure the file exists and the path is correct.`,\n start: node.getStart() + 1,\n })\n } else {\n const exports = getModuleExports(resolved, program)\n if (!exports.includes(exportName)) {\n let message = `Module '${modulePath}' has no exported member '${exportName}'.`\n\n const getSpellingSuggestion = (\n ts as unknown as {\n getSpellingSuggestion: (\n name: string,\n candidates: string[],\n getName: (c: string) => string,\n ) => string | undefined\n }\n ).getSpellingSuggestion\n const suggestion = getSpellingSuggestion?.(exportName, exports, (e) => e)\n if (suggestion) {\n message += ` Did you mean '${suggestion}'?`\n } else if (exports.length > 0) {\n message += ` Available exports: ${exports.join(', ')}.`\n }\n\n diagnostics.push({\n category: ts.DiagnosticCategory.Error,\n code: 71002,\n file: sourceFile,\n length: node.text.length,\n messageText: message,\n start: node.getStart() + 1,\n })\n }\n }\n }\n\n ts.forEachChild(node, visit)\n }\n\n visit(sourceFile)\n return diagnostics\n}\n\n// -------------------------------------------------------------------\n// Completions\n// -------------------------------------------------------------------\n\nfunction getPayloadCompletions(\n ts: typeof tslib,\n node: tslib.StringLiteral,\n position: number,\n checker: tslib.TypeChecker,\n program: tslib.Program,\n baseDir: string | undefined,\n sys: tslib.System,\n): tslib.CompletionInfo | undefined {\n const context = getPayloadComponentContext(ts, node, checker)\n if (!context) {\n return undefined\n }\n\n if (context.type === 'exportName') {\n const component = parsePayloadComponent(context, node.text)\n if (!component) {\n return undefined\n }\n return buildExportCompletions(ts, node, component.path, node.text.length, program, baseDir)\n }\n\n // Both 'string' and 'path' contexts: check if cursor is after #\n const text = node.text\n const offsetInString = position - node.getStart() - 1\n const hashIndex = text.indexOf('#')\n\n if (hashIndex !== -1 && offsetInString > hashIndex) {\n const modulePath = text.substring(0, hashIndex)\n return buildExportCompletions(\n ts,\n node,\n modulePath,\n text.length - hashIndex - 1,\n program,\n baseDir,\n node.getStart() + 1 + hashIndex + 1,\n )\n }\n\n return getPathCompletions(ts, sys, node, position, baseDir, program)\n}\n\nfunction buildExportCompletions(\n ts: typeof tslib,\n node: tslib.StringLiteral,\n modulePath: string,\n replacementLength: number,\n program: tslib.Program,\n baseDir: string | undefined,\n replacementStart?: number,\n): tslib.CompletionInfo | undefined {\n const resolved = resolveModulePath(\n ts,\n modulePath,\n node.getSourceFile().fileName,\n program,\n baseDir,\n )\n if (!resolved) {\n return undefined\n }\n\n const exports = getModuleExports(resolved, program)\n\n return {\n entries: exports.map((name) => ({\n name,\n kind: ts.ScriptElementKind.constElement,\n replacementSpan: {\n length: replacementLength,\n start: replacementStart ?? node.getStart() + 1,\n },\n sortText: name,\n })),\n isGlobalCompletion: false,\n isMemberCompletion: true,\n isNewIdentifierLocation: false,\n }\n}\n\nconst COMPONENT_EXTENSIONS = ['.tsx', '.ts', '.jsx', '.js']\n\nfunction getPathCompletions(\n ts: typeof tslib,\n sys: tslib.System,\n node: tslib.StringLiteral,\n position: number,\n baseDir: string | undefined,\n program?: tslib.Program,\n): tslib.CompletionInfo | undefined {\n const text = node.text\n const offsetInString = position - node.getStart() - 1\n const hashIndex = text.indexOf('#')\n\n const endOffset = hashIndex !== -1 ? Math.min(offsetInString, hashIndex) : offsetInString\n const pathPortion = text.substring(0, endOffset)\n const lastSlash = pathPortion.lastIndexOf('/')\n\n let dirPath: string | undefined\n let prefix: string\n let replacementStart: number\n\n if (lastSlash === -1) {\n dirPath = baseDir\n prefix = pathPortion\n replacementStart = node.getStart() + 1\n } else {\n const dirPortion = pathPortion.substring(0, lastSlash)\n prefix = pathPortion.substring(lastSlash + 1)\n replacementStart = node.getStart() + 1 + lastSlash + 1\n\n if (\n (dirPortion.startsWith('/') || (dirPortion === '' && pathPortion.startsWith('/'))) &&\n baseDir\n ) {\n dirPath = baseDir + dirPortion\n } else if (\n (dirPortion.startsWith('./') || (dirPortion === '' && pathPortion.startsWith('./'))) &&\n baseDir\n ) {\n dirPath = baseDir + '/' + dirPortion.substring(2)\n } else if (program) {\n dirPath = resolveToDir(\n ts,\n dirPortion,\n node.getSourceFile().fileName,\n program.getCompilerOptions(),\n )\n }\n }\n\n if (!dirPath) {\n return undefined\n }\n\n if (!sys.directoryExists(dirPath)) {\n return undefined\n }\n\n const entries: tslib.CompletionEntry[] = []\n const prefixLower = prefix.toLowerCase()\n\n for (const dir of sys.getDirectories(dirPath)) {\n if (dir.startsWith('.') || dir === 'node_modules') {\n continue\n }\n if (prefix && !dir.toLowerCase().startsWith(prefixLower)) {\n continue\n }\n entries.push({\n name: dir,\n kind: 'directory' as tslib.ScriptElementKind,\n replacementSpan: { length: prefix.length, start: replacementStart },\n sortText: '0' + dir,\n })\n }\n\n const files = sys.readDirectory(dirPath, COMPONENT_EXTENSIONS, undefined, undefined, 1)\n for (const file of files) {\n const fileName = file.substring(file.lastIndexOf('/') + 1)\n const nameWithoutExt = fileName.replace(/\\.(?:tsx?|jsx?)$/, '')\n\n if (prefix && !fileName.toLowerCase().startsWith(prefixLower)) {\n continue\n }\n\n entries.push({\n name: fileName,\n kind: 'script' as tslib.ScriptElementKind,\n replacementSpan: { length: prefix.length, start: replacementStart },\n sortText: '1' + fileName,\n })\n\n if (nameWithoutExt !== fileName) {\n entries.push({\n name: nameWithoutExt,\n kind: 'script' as tslib.ScriptElementKind,\n replacementSpan: { length: prefix.length, start: replacementStart },\n sortText: '1' + nameWithoutExt,\n })\n }\n }\n\n if (entries.length === 0) {\n return undefined\n }\n\n return {\n entries,\n isGlobalCompletion: false,\n isMemberCompletion: false,\n isNewIdentifierLocation: true,\n }\n}\n\n// -------------------------------------------------------------------\n// Go-to-definition\n// -------------------------------------------------------------------\n\nfunction getPayloadDefinition(\n ts: typeof tslib,\n node: tslib.StringLiteral,\n checker: tslib.TypeChecker,\n program: tslib.Program,\n baseDir: string | undefined,\n): tslib.DefinitionInfoAndBoundSpan | undefined {\n const context = getPayloadComponentContext(ts, node, checker)\n if (!context) {\n return undefined\n }\n\n const component = parsePayloadComponent(context, node.text)\n if (!component?.path) {\n return undefined\n }\n\n const { exportName, path: modulePath } = component\n\n const resolved = resolveModulePath(\n ts,\n modulePath,\n node.getSourceFile().fileName,\n program,\n baseDir,\n )\n if (!resolved) {\n return undefined\n }\n\n const targetSourceFile = program.getSourceFile(resolved.resolvedFileName)\n if (!targetSourceFile) {\n return undefined\n }\n\n const textSpan: tslib.TextSpan = {\n length: node.text.length,\n start: node.getStart() + 1,\n }\n\n const moduleSymbol = checker.getSymbolAtLocation(targetSourceFile)\n if (moduleSymbol) {\n const moduleExports = checker.getExportsOfModule(moduleSymbol)\n const targetExport = moduleExports.find((e) => e.name === exportName)\n\n if (targetExport) {\n const declarations = targetExport.getDeclarations()\n if (declarations && declarations.length > 0) {\n const decl = declarations[0]!\n const declSourceFile = decl.getSourceFile()\n\n return {\n definitions: [\n {\n name: exportName,\n containerKind: ts.ScriptElementKind.moduleElement,\n containerName: modulePath,\n contextSpan: { length: decl.getWidth(), start: decl.getStart() },\n fileName: declSourceFile.fileName,\n kind: ts.ScriptElementKind.alias,\n textSpan: { length: decl.getWidth(), start: decl.getStart() },\n },\n ],\n textSpan,\n }\n }\n }\n }\n\n return {\n definitions: [\n {\n name: modulePath,\n containerKind: ts.ScriptElementKind.unknown,\n containerName: '',\n fileName: resolved.resolvedFileName,\n kind: ts.ScriptElementKind.moduleElement,\n textSpan: { length: 0, start: 0 },\n },\n ],\n textSpan,\n }\n}\n\n/**\n * Uses TypeScript's module resolution to determine the absolute directory a\n * module specifier maps to. Works for tsconfig `paths`, `node_modules`, or\n * any other resolution strategy TypeScript supports.\n */\nfunction resolveToDir(\n ts: typeof tslib,\n modulePath: string,\n containingFile: string,\n compilerOptions: tslib.CompilerOptions,\n): string | undefined {\n const sentinel = '__payload_resolve_dir'\n const result = ts.resolveModuleName(\n modulePath + '/' + sentinel,\n containingFile,\n compilerOptions,\n ts.sys,\n ) as { failedLookupLocations?: string[] }\n\n for (const loc of result.failedLookupLocations ?? []) {\n const idx = loc.indexOf(sentinel)\n if (idx > 0) {\n return loc.substring(0, idx - 1)\n }\n }\n\n return undefined\n}\n\n// -------------------------------------------------------------------\n// baseDir detection\n// -------------------------------------------------------------------\n\nconst PAYLOAD_CONFIG_NAMES = ['payload.config.ts', 'payload.config.js', 'config.ts']\n\nfunction findPayloadConfigDir(sys: tslib.System, fromFile: string): string | undefined {\n let dir = fromFile.includes('/') ? fromFile.substring(0, fromFile.lastIndexOf('/')) : fromFile\n const root = dir.startsWith('/') ? '/' : ''\n\n for (let i = 0; i < 50; i++) {\n for (const name of PAYLOAD_CONFIG_NAMES) {\n if (sys.fileExists(dir + '/' + name)) {\n return dir\n }\n }\n\n const parent = dir.substring(0, dir.lastIndexOf('/')) || root\n if (parent === dir) {\n break\n }\n dir = parent\n }\n\n return undefined\n}\n\nexport = init\n"],"names":["init","modules","ts","typescript","create","info","log","msg","project","projectService","logger","baseDirConfig","config","baseDir","baseDirCache","Map","sys","serverHost","proxy","Object","k","keys","languageService","x","args","apply","getBaseDir","fileName","projectDir","getCurrentDirectory","resolvePath","cached","get","undefined","detected","findPayloadConfigDir","set","getSemanticDiagnostics","prior","program","getProgram","sourceFile","getSourceFile","checker","getTypeChecker","additional","getPayloadDiagnostics","getCompletionsAtPosition","position","options","formattingSettings","node","findNodeAtPosition","isStringLiteral","result","getPayloadCompletions","getDefinitionAndBoundSpan","getPayloadDefinition","parsePayloadComponent","context","nodeText","pathAndMaybeExport","exportNameOverride","type","exportNameValue","pathValue","path","exportName","includes","split","resolveModulePath","modulePath","containingFile","compilerOptions","getCompilerOptions","pathToResolve","resolveFrom","startsWith","resolveModuleName","resolvedModule","getModuleExports","resolvedFileName","moduleSymbol","getSymbolAtLocation","getExportsOfModule","map","e","name","diagnostics","visit","text","length","getPayloadComponentContext","forEachChild","component","resolved","push","category","DiagnosticCategory","Error","code","file","messageText","start","getStart","exports","message","getSpellingSuggestion","suggestion","join","buildExportCompletions","offsetInString","hashIndex","indexOf","substring","getPathCompletions","replacementLength","replacementStart","entries","kind","ScriptElementKind","constElement","replacementSpan","sortText","isGlobalCompletion","isMemberCompletion","isNewIdentifierLocation","COMPONENT_EXTENSIONS","endOffset","Math","min","pathPortion","lastSlash","lastIndexOf","dirPath","prefix","dirPortion","resolveToDir","directoryExists","prefixLower","toLowerCase","dir","getDirectories","files","readDirectory","nameWithoutExt","replace","targetSourceFile","textSpan","moduleExports","targetExport","find","declarations","getDeclarations","decl","declSourceFile","definitions","containerKind","moduleElement","containerName","contextSpan","getWidth","alias","unknown","sentinel","loc","failedLookupLocations","idx","PAYLOAD_CONFIG_NAMES","fromFile","root","i","fileExists","parent"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@payloadcms/typescript-plugin",
|
|
3
|
+
"version": "3.78.0",
|
|
4
|
+
"description": "TypeScript Language Service Plugin for Payload CMS - validates PayloadComponent import paths and provides autocomplete",
|
|
5
|
+
"homepage": "https://payloadcms.com",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/payloadcms/payload.git",
|
|
9
|
+
"directory": "packages/typescript-plugin"
|
|
10
|
+
},
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"author": "Payload <dev@payloadcms.com> (https://payloadcms.com)",
|
|
13
|
+
"maintainers": [
|
|
14
|
+
{
|
|
15
|
+
"name": "Payload",
|
|
16
|
+
"email": "info@payloadcms.com",
|
|
17
|
+
"url": "https://payloadcms.com"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"sideEffects": false,
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"default": "./dist/index.js"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"main": "./dist/index.js",
|
|
28
|
+
"types": "./dist/index.d.ts",
|
|
29
|
+
"files": [
|
|
30
|
+
"dist"
|
|
31
|
+
],
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"typescript": "5.7.3"
|
|
34
|
+
},
|
|
35
|
+
"engines": {
|
|
36
|
+
"node": "^18.20.2 || >=20.9.0"
|
|
37
|
+
},
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"registry": "https://registry.npmjs.org/"
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "rimraf tsconfig.tsbuildinfo && pnpm build:types && pnpm build:swc",
|
|
43
|
+
"build:debug": "pnpm build",
|
|
44
|
+
"build:swc": "swc ./src -d ./dist --config-file .swcrc-build --strip-leading-paths",
|
|
45
|
+
"build:types": "tsc --emitDeclarationOnly --outDir dist",
|
|
46
|
+
"clean": "rimraf -g {dist,*.tsbuildinfo}",
|
|
47
|
+
"lint": "eslint .",
|
|
48
|
+
"lint:fix": "eslint . --fix"
|
|
49
|
+
}
|
|
50
|
+
}
|