MCPcopy Index your code
hub / github.com/payloadcms/payload / create

Function create

packages/typescript-plugin/src/index.ts:10–118  ·  view source on GitHub ↗
(info: tslib.server.PluginCreateInfo)

Source from the content-addressed store, hash-verified

8 const ts = modules.typescript
9
10 function create(info: tslib.server.PluginCreateInfo): tslib.LanguageService {
11 const log = (msg: string) =>
12 info.project.projectService.logger.info(`[@payloadcms/typescript-plugin] ${msg}`)
13
14 log('Plugin initializing')
15
16 const baseDirConfig: string | undefined = info.config?.baseDir
17 const baseDirCache = new Map<string, string | undefined>()
18 const sys = info.serverHost || ts.sys
19
20 const proxy: tslib.LanguageService = Object.create(null)
21
22 for (const k of Object.keys(info.languageService) as Array<keyof tslib.LanguageService>) {
23 const x = info.languageService[k]!
24 // @ts-expect-error - decorator pattern for language service proxy
25 proxy[k] = (...args: Array<{}>) => x.apply(info.languageService, args)
26 }
27
28 function getBaseDir(fileName: string): string | undefined {
29 if (baseDirConfig) {
30 const projectDir = info.project.getCurrentDirectory()
31 return ts.sys.resolvePath(projectDir + '/' + baseDirConfig)
32 }
33
34 const cached = baseDirCache.get(fileName)
35 if (cached !== undefined) {
36 return cached
37 }
38
39 const detected = findPayloadConfigDir(sys, fileName)
40 baseDirCache.set(fileName, detected)
41
42 if (detected) {
43 log(`Detected baseDir: ${detected} (from payload config near ${fileName})`)
44 }
45
46 return detected
47 }
48
49 proxy.getSemanticDiagnostics = (fileName) => {
50 const prior = info.languageService.getSemanticDiagnostics(fileName)
51
52 const program = info.languageService.getProgram()
53 if (!program) {
54 return prior
55 }
56
57 const sourceFile = program.getSourceFile(fileName)
58 if (!sourceFile) {
59 return prior
60 }
61
62 const checker = program.getTypeChecker()
63 const baseDir = getBaseDir(fileName)
64 const additional = getPayloadDiagnostics(ts, sourceFile, checker, program, baseDir)
65
66 return [...prior, ...additional]
67 }

Callers

nothing calls this directly

Calls 8

getBaseDirFunction · 0.85
getPayloadDiagnosticsFunction · 0.85
findNodeAtPositionFunction · 0.85
getPayloadCompletionsFunction · 0.85
getPayloadDefinitionFunction · 0.85
logFunction · 0.70
keysMethod · 0.65
createMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…