vue-component-meta 2.0.6 → 2.0.10

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/lib/base.d.ts CHANGED
@@ -24,7 +24,7 @@ export declare function createCheckerBase(ts: typeof import('typescript'), tscon
24
24
  tsLs: ts.LanguageService;
25
25
  };
26
26
  };
27
- export declare function baseCreate(ts: typeof import('typescript'), configFileName: string | undefined, host: vue.TypeScriptProjectHost, vueCompilerOptions: vue.VueCompilerOptions, checkerOptions: MetaCheckerOptions, globalComponentName: string): {
27
+ export declare function baseCreate(ts: typeof import('typescript'), host: vue.TypeScriptProjectHost, vueCompilerOptions: vue.VueCompilerOptions, checkerOptions: MetaCheckerOptions, globalComponentName: string): {
28
28
  getExportNames: (componentPath: string) => string[];
29
29
  getComponentMeta: (componentPath: string, exportName?: string) => ComponentMeta;
30
30
  __internal__: {
package/lib/base.js CHANGED
@@ -40,14 +40,15 @@ function createCheckerWorker(ts, loadParsedCommandLine, checkerOptions, rootPath
40
40
  let fileNames = parsedCommandLine.fileNames.map(path => path.replace(windowsPathReg, '/'));
41
41
  let projectVersion = 0;
42
42
  const scriptSnapshots = new Map();
43
- const resolvedVueOptions = vue.resolveVueCompilerOptions(parsedCommandLine.vueOptions);
44
- const _host = {
43
+ const projectHost = {
44
+ ...ts.sys,
45
+ configFileName,
45
46
  getCurrentDirectory: () => rootPath,
46
47
  getProjectVersion: () => projectVersion.toString(),
47
48
  getCompilationSettings: () => parsedCommandLine.options,
48
49
  getScriptFileNames: () => fileNames,
49
50
  getProjectReferences: () => parsedCommandLine.projectReferences,
50
- getScriptSnapshot: (fileName) => {
51
+ getScriptSnapshot: fileName => {
51
52
  if (!scriptSnapshots.has(fileName)) {
52
53
  const fileText = ts.sys.readFile(fileName);
53
54
  if (fileText !== undefined) {
@@ -57,14 +58,16 @@ function createCheckerWorker(ts, loadParsedCommandLine, checkerOptions, rootPath
57
58
  return scriptSnapshots.get(fileName);
58
59
  },
59
60
  getLanguageId: fileName => {
60
- if (resolvedVueOptions.extensions.some(ext => fileName.endsWith(ext))) {
61
+ if (parsedCommandLine.vueOptions.extensions.some(ext => fileName.endsWith(ext))) {
61
62
  return 'vue';
62
63
  }
63
64
  return vue.resolveCommonLanguageId(fileName);
64
65
  },
66
+ scriptIdToFileName: id => id,
67
+ fileNameToScriptId: id => id,
65
68
  };
66
69
  return {
67
- ...baseCreate(ts, configFileName, _host, resolvedVueOptions, checkerOptions, globalComponentName),
70
+ ...baseCreate(ts, projectHost, parsedCommandLine.vueOptions, checkerOptions, globalComponentName),
68
71
  updateFile(fileName, text) {
69
72
  fileName = fileName.replace(windowsPathReg, '/');
70
73
  scriptSnapshots.set(fileName, ts.ScriptSnapshot.fromString(text));
@@ -86,7 +89,7 @@ function createCheckerWorker(ts, loadParsedCommandLine, checkerOptions, rootPath
86
89
  },
87
90
  };
88
91
  }
89
- function baseCreate(ts, configFileName, host, vueCompilerOptions, checkerOptions, globalComponentName) {
92
+ function baseCreate(ts, host, vueCompilerOptions, checkerOptions, globalComponentName) {
90
93
  const globalComponentSnapshot = ts.ScriptSnapshot.fromString('<script setup lang="ts"></script>');
91
94
  const metaSnapshots = {};
92
95
  const getScriptFileNames = host.getScriptFileNames;
@@ -100,7 +103,7 @@ function baseCreate(ts, configFileName, host, vueCompilerOptions, checkerOptions
100
103
  getMetaFileName(globalComponentName),
101
104
  ];
102
105
  };
103
- host.getScriptSnapshot = (fileName) => {
106
+ host.getScriptSnapshot = fileName => {
104
107
  if (isMetaFileName(fileName)) {
105
108
  if (!metaSnapshots[fileName]) {
106
109
  metaSnapshots[fileName] = ts.ScriptSnapshot.fromString(getMetaScriptContent(fileName));
@@ -114,29 +117,13 @@ function baseCreate(ts, configFileName, host, vueCompilerOptions, checkerOptions
114
117
  return getScriptSnapshot(fileName);
115
118
  }
116
119
  };
117
- const vueLanguagePlugin = vue.createVueLanguagePlugin(ts, id => id, fileName => {
118
- if (ts.sys.useCaseSensitiveFileNames) {
119
- return host.getScriptFileNames().includes(fileName) ?? false;
120
- }
121
- else {
122
- const lowerFileName = fileName.toLowerCase();
123
- for (const rootFile of host.getScriptFileNames()) {
124
- if (rootFile.toLowerCase() === lowerFileName) {
125
- return true;
126
- }
127
- }
128
- return false;
129
- }
130
- }, host.getCompilationSettings(), vueCompilerOptions);
131
- const language = (0, typescript_1.createLanguage)(ts, ts.sys, [vueLanguagePlugin], configFileName, host, {
132
- fileIdToFileName: id => id,
133
- fileNameToFileId: id => id,
134
- });
120
+ const vueLanguagePlugin = vue.createVueLanguagePlugin(ts, id => id, ts.sys.useCaseSensitiveFileNames, () => host.getProjectVersion?.() ?? '', () => host.getScriptFileNames(), host.getCompilationSettings(), vueCompilerOptions);
121
+ const language = (0, typescript_1.createTypeScriptLanguage)(ts, [vueLanguagePlugin], host);
135
122
  const { languageServiceHost } = language.typescript;
136
123
  const tsLs = ts.createLanguageService(languageServiceHost);
137
124
  if (checkerOptions.forceUseTs) {
138
125
  const getScriptKind = languageServiceHost.getScriptKind?.bind(languageServiceHost);
139
- languageServiceHost.getScriptKind = (fileName) => {
126
+ languageServiceHost.getScriptKind = fileName => {
140
127
  if (fileName.endsWith('.vue.js')) {
141
128
  return ts.ScriptKind.TS;
142
129
  }
@@ -186,7 +173,7 @@ ${vueCompilerOptions.target < 3 ? vue2_1.code : vue_component_type_helpers_1.cod
186
173
  const program = tsLs.getProgram();
187
174
  const typeChecker = program.getTypeChecker();
188
175
  const { symbolNode, exports } = _getExports(program, typeChecker, componentPath);
189
- const _export = exports.find((property) => property.getName() === exportName);
176
+ const _export = exports.find(property => property.getName() === exportName);
190
177
  if (!_export) {
191
178
  throw `Could not find export ${exportName}`;
192
179
  }
@@ -230,11 +217,11 @@ ${vueCompilerOptions.target < 3 ? vue2_1.code : vue_component_type_helpers_1.cod
230
217
  const type = typeChecker.getTypeOfSymbolAtLocation($props, symbolNode);
231
218
  const properties = type.getProperties();
232
219
  result = properties
233
- .map((prop) => {
220
+ .map(prop => {
234
221
  const { resolveNestedProperties, } = createSchemaResolvers(typeChecker, symbolNode, checkerOptions, ts, language);
235
222
  return resolveNestedProperties(prop);
236
223
  })
237
- .filter((prop) => !prop.name.match(propEventRegex));
224
+ .filter(prop => !prop.name.match(propEventRegex));
238
225
  }
239
226
  // fill global
240
227
  if (componentPath !== globalComponentName) {
@@ -246,7 +233,7 @@ ${vueCompilerOptions.target < 3 ? vue2_1.code : vue_component_type_helpers_1.cod
246
233
  // fill defaults
247
234
  const printer = ts.createPrinter(checkerOptions.printer);
248
235
  const snapshot = host.getScriptSnapshot(componentPath);
249
- const vueFile = language.files.get(componentPath)?.generated?.code;
236
+ const vueFile = language.scripts.get(componentPath)?.generated?.root;
250
237
  const vueDefaults = vueFile && exportName === 'default'
251
238
  ? (vueFile instanceof vue.VueGeneratedCode ? readVueComponentDefaultProps(vueFile, printer, ts, vueCompilerOptions) : {})
252
239
  : {};
@@ -274,7 +261,7 @@ ${vueCompilerOptions.target < 3 ? vue2_1.code : vue_component_type_helpers_1.cod
274
261
  if ($emit) {
275
262
  const type = typeChecker.getTypeOfSymbolAtLocation($emit, symbolNode);
276
263
  const calls = type.getCallSignatures();
277
- return calls.map((call) => {
264
+ return calls.map(call => {
278
265
  const { resolveEventSignature, } = createSchemaResolvers(typeChecker, symbolNode, checkerOptions, ts, language);
279
266
  return resolveEventSignature(call);
280
267
  }).filter(event => event.name);
@@ -286,7 +273,7 @@ ${vueCompilerOptions.target < 3 ? vue2_1.code : vue_component_type_helpers_1.cod
286
273
  if ($slots) {
287
274
  const type = typeChecker.getTypeOfSymbolAtLocation($slots, symbolNode);
288
275
  const properties = type.getProperties();
289
- return properties.map((prop) => {
276
+ return properties.map(prop => {
290
277
  const { resolveSlotProperties, } = createSchemaResolvers(typeChecker, symbolNode, checkerOptions, ts, language);
291
278
  return resolveSlotProperties(prop);
292
279
  });
@@ -300,7 +287,7 @@ ${vueCompilerOptions.target < 3 ? vue2_1.code : vue_component_type_helpers_1.cod
300
287
  const properties = type.getProperties().filter(prop =>
301
288
  // only exposed props will not have a valueDeclaration
302
289
  !prop.valueDeclaration);
303
- return properties.map((prop) => {
290
+ return properties.map(prop => {
304
291
  const { resolveExposedProperties, } = createSchemaResolvers(typeChecker, symbolNode, checkerOptions, ts, language);
305
292
  return resolveExposedProperties(prop);
306
293
  });
@@ -337,7 +324,7 @@ ${vueCompilerOptions.target < 3 ? vue2_1.code : vue_component_type_helpers_1.cod
337
324
  }
338
325
  }
339
326
  exports.baseCreate = baseCreate;
340
- function createSchemaResolvers(typeChecker, symbolNode, { rawType, schema: options, noDeclarations }, ts, context) {
327
+ function createSchemaResolvers(typeChecker, symbolNode, { rawType, schema: options, noDeclarations }, ts, language) {
341
328
  const visited = new Set();
342
329
  function shouldIgnore(subtype) {
343
330
  const name = typeChecker.typeToString(subtype);
@@ -351,8 +338,9 @@ function createSchemaResolvers(typeChecker, symbolNode, { rawType, schema: optio
351
338
  for (const item of options.ignore ?? []) {
352
339
  if (typeof item === 'function') {
353
340
  const result = item(name, subtype, typeChecker);
354
- if (typeof result === 'boolean')
341
+ if (typeof result === 'boolean') {
355
342
  return result;
343
+ }
356
344
  }
357
345
  else if (name === item) {
358
346
  return true;
@@ -392,7 +380,7 @@ function createSchemaResolvers(typeChecker, symbolNode, { rawType, schema: optio
392
380
  const propType = typeChecker.getNonNullableType(typeChecker.getTypeOfSymbolAtLocation(prop, symbolNode));
393
381
  const signatures = propType.getCallSignatures();
394
382
  const paramType = signatures[0].parameters[0];
395
- const subtype = typeChecker.getTypeOfSymbolAtLocation(paramType, symbolNode);
383
+ const subtype = paramType ? typeChecker.getTypeOfSymbolAtLocation(paramType, symbolNode) : typeChecker.getAnyType();
396
384
  let schema;
397
385
  let declarations;
398
386
  return {
@@ -507,12 +495,11 @@ function createSchemaResolvers(typeChecker, symbolNode, { rawType, schema: optio
507
495
  }
508
496
  function getDeclaration(declaration) {
509
497
  const fileName = declaration.getSourceFile().fileName;
510
- const sourceFile = context.files.get(fileName);
498
+ const sourceFile = language.scripts.get(fileName);
511
499
  if (sourceFile?.generated) {
512
- const script = sourceFile.generated.languagePlugin.typescript?.getScript(sourceFile.generated.code);
500
+ const script = sourceFile.generated.languagePlugin.typescript?.getServiceScript(sourceFile.generated.root);
513
501
  if (script) {
514
- const maps = context.files.getMaps(script.code);
515
- for (const [source, [_, map]] of maps) {
502
+ for (const [source, [_, map]] of language.maps.forEach(script.code)) {
516
503
  const start = map.getSourceOffset(declaration.getStart());
517
504
  const end = map.getSourceOffset(declaration.getEnd());
518
505
  if (start && end) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue-component-meta",
3
- "version": "2.0.6",
3
+ "version": "2.0.10",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "**/*.js",
@@ -12,10 +12,10 @@
12
12
  "directory": "packages/component-meta"
13
13
  },
14
14
  "dependencies": {
15
- "@volar/typescript": "~2.1.2",
16
- "@vue/language-core": "2.0.6",
15
+ "@volar/typescript": "~2.2.0-alpha.5",
16
+ "@vue/language-core": "2.0.10",
17
17
  "path-browserify": "^1.0.1",
18
- "vue-component-type-helpers": "2.0.6"
18
+ "vue-component-type-helpers": "2.0.10"
19
19
  },
20
20
  "peerDependencies": {
21
21
  "typescript": "*"
@@ -29,5 +29,5 @@
29
29
  "@types/node": "latest",
30
30
  "@types/path-browserify": "latest"
31
31
  },
32
- "gitHead": "feb990ccec85f6330bba37c8b1d1287f0980274c"
32
+ "gitHead": "a20a2ee950b63a949660b7e8faf0faed0e5bad33"
33
33
  }