@typespec/compiler 0.46.0-dev.8 → 0.46.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.
Files changed (113) hide show
  1. package/dist/manifest.js +2 -2
  2. package/dist/src/config/config-loader.d.ts.map +1 -1
  3. package/dist/src/config/config-loader.js +1 -0
  4. package/dist/src/config/config-loader.js.map +1 -1
  5. package/dist/src/config/config-schema.d.ts.map +1 -1
  6. package/dist/src/config/config-schema.js +24 -0
  7. package/dist/src/config/config-schema.js.map +1 -1
  8. package/dist/src/config/types.d.ts +8 -1
  9. package/dist/src/config/types.d.ts.map +1 -1
  10. package/dist/src/core/checker.d.ts.map +1 -1
  11. package/dist/src/core/checker.js +13 -8
  12. package/dist/src/core/checker.js.map +1 -1
  13. package/dist/src/core/cli/args.d.ts.map +1 -1
  14. package/dist/src/core/cli/args.js +1 -0
  15. package/dist/src/core/cli/args.js.map +1 -1
  16. package/dist/src/core/helpers/index.d.ts +1 -0
  17. package/dist/src/core/helpers/index.d.ts.map +1 -1
  18. package/dist/src/core/helpers/index.js +1 -0
  19. package/dist/src/core/helpers/index.js.map +1 -1
  20. package/dist/src/core/helpers/location-context.d.ts +4 -0
  21. package/dist/src/core/helpers/location-context.d.ts.map +1 -0
  22. package/dist/src/core/helpers/location-context.js +9 -0
  23. package/dist/src/core/helpers/location-context.js.map +1 -0
  24. package/dist/src/core/helpers/type-name-utils.d.ts.map +1 -1
  25. package/dist/src/core/helpers/type-name-utils.js +8 -3
  26. package/dist/src/core/helpers/type-name-utils.js.map +1 -1
  27. package/dist/src/core/index.d.ts +1 -1
  28. package/dist/src/core/index.d.ts.map +1 -1
  29. package/dist/src/core/index.js +1 -1
  30. package/dist/src/core/index.js.map +1 -1
  31. package/dist/src/core/library.d.ts +3 -1
  32. package/dist/src/core/library.d.ts.map +1 -1
  33. package/dist/src/core/library.js +6 -1
  34. package/dist/src/core/library.js.map +1 -1
  35. package/dist/src/core/linter.d.ts +10 -0
  36. package/dist/src/core/linter.d.ts.map +1 -0
  37. package/dist/src/core/linter.js +166 -0
  38. package/dist/src/core/linter.js.map +1 -0
  39. package/dist/src/core/messages.d.ts +77 -2
  40. package/dist/src/core/messages.d.ts.map +1 -1
  41. package/dist/src/core/messages.js +27 -0
  42. package/dist/src/core/messages.js.map +1 -1
  43. package/dist/src/core/node-host.d.ts +3 -0
  44. package/dist/src/core/node-host.d.ts.map +1 -1
  45. package/dist/src/core/node-host.js +22 -1
  46. package/dist/src/core/node-host.js.map +1 -1
  47. package/dist/src/core/options.d.ts +3 -1
  48. package/dist/src/core/options.d.ts.map +1 -1
  49. package/dist/src/core/parser.d.ts.map +1 -1
  50. package/dist/src/core/parser.js +56 -29
  51. package/dist/src/core/parser.js.map +1 -1
  52. package/dist/src/core/program.d.ts +3 -17
  53. package/dist/src/core/program.d.ts.map +1 -1
  54. package/dist/src/core/program.js +90 -46
  55. package/dist/src/core/program.js.map +1 -1
  56. package/dist/src/core/schema-validator.d.ts +1 -0
  57. package/dist/src/core/schema-validator.d.ts.map +1 -1
  58. package/dist/src/core/schema-validator.js +2 -2
  59. package/dist/src/core/schema-validator.js.map +1 -1
  60. package/dist/src/core/types.d.ts +110 -11
  61. package/dist/src/core/types.d.ts.map +1 -1
  62. package/dist/src/core/types.js.map +1 -1
  63. package/dist/src/emitter-framework/asset-emitter.d.ts.map +1 -1
  64. package/dist/src/emitter-framework/asset-emitter.js +89 -45
  65. package/dist/src/emitter-framework/asset-emitter.js.map +1 -1
  66. package/dist/src/emitter-framework/type-emitter.d.ts +43 -22
  67. package/dist/src/emitter-framework/type-emitter.d.ts.map +1 -1
  68. package/dist/src/emitter-framework/type-emitter.js +90 -23
  69. package/dist/src/emitter-framework/type-emitter.js.map +1 -1
  70. package/dist/src/emitter-framework/types.d.ts +14 -4
  71. package/dist/src/emitter-framework/types.d.ts.map +1 -1
  72. package/dist/src/emitter-framework/types.js +1 -0
  73. package/dist/src/emitter-framework/types.js.map +1 -1
  74. package/dist/src/formatter/parser.d.ts.map +1 -1
  75. package/dist/src/formatter/parser.js +28 -2
  76. package/dist/src/formatter/parser.js.map +1 -1
  77. package/dist/src/formatter/print/comment-handler.d.ts +1 -1
  78. package/dist/src/formatter/print/comment-handler.d.ts.map +1 -1
  79. package/dist/src/formatter/print/comment-handler.js +37 -5
  80. package/dist/src/formatter/print/comment-handler.js.map +1 -1
  81. package/dist/src/formatter/print/needs-parens.d.ts +1 -1
  82. package/dist/src/formatter/print/needs-parens.js +1 -1
  83. package/dist/src/formatter/print/printer.d.ts +6 -3
  84. package/dist/src/formatter/print/printer.d.ts.map +1 -1
  85. package/dist/src/formatter/print/printer.js +130 -53
  86. package/dist/src/formatter/print/printer.js.map +1 -1
  87. package/dist/src/formatter/types.d.ts +9 -0
  88. package/dist/src/formatter/types.d.ts.map +1 -0
  89. package/dist/src/formatter/types.js +2 -0
  90. package/dist/src/formatter/types.js.map +1 -0
  91. package/dist/src/init/init-template.d.ts +3 -1
  92. package/dist/src/init/init-template.d.ts.map +1 -1
  93. package/dist/src/init/init-template.js +3 -6
  94. package/dist/src/init/init-template.js.map +1 -1
  95. package/dist/src/init/init.d.ts.map +1 -1
  96. package/dist/src/init/init.js +96 -16
  97. package/dist/src/init/init.js.map +1 -1
  98. package/dist/src/lib/decorators.d.ts +9 -0
  99. package/dist/src/lib/decorators.d.ts.map +1 -1
  100. package/dist/src/lib/decorators.js +9 -0
  101. package/dist/src/lib/decorators.js.map +1 -1
  102. package/dist/src/testing/index.d.ts +1 -0
  103. package/dist/src/testing/index.d.ts.map +1 -1
  104. package/dist/src/testing/index.js +1 -0
  105. package/dist/src/testing/index.js.map +1 -1
  106. package/dist/src/testing/rule-tester.d.ts +12 -0
  107. package/dist/src/testing/rule-tester.d.ts.map +1 -0
  108. package/dist/src/testing/rule-tester.js +34 -0
  109. package/dist/src/testing/rule-tester.js.map +1 -0
  110. package/entrypoints/cli.js +5 -0
  111. package/entrypoints/server.js +5 -0
  112. package/lib/decorators.tsp +8 -0
  113. package/package.json +12 -10
@@ -6,6 +6,7 @@ import { createChecker } from "./checker.js";
6
6
  import { compilerAssert, createSourceFile } from "./diagnostics.js";
7
7
  import { resolveTypeSpecEntrypoint, resolveTypeSpecEntrypointForDir, } from "./entrypoint-resolution.js";
8
8
  import { getLibraryUrlsLoaded } from "./library.js";
9
+ import { createLinter } from "./linter.js";
9
10
  import { createLogger } from "./logger/index.js";
10
11
  import { createTracer } from "./logger/tracer.js";
11
12
  import { createDiagnostic } from "./messages.js";
@@ -136,6 +137,7 @@ export async function compile(host, mainFile, options = {}, oldProgram // NOTE:
136
137
  const emitters = [];
137
138
  const requireImports = new Map();
138
139
  const loadedLibraries = new Map();
140
+ const sourceFileLocationContexts = new WeakMap();
139
141
  let error = false;
140
142
  const logger = createLogger({ sink: host.logSink });
141
143
  const tracer = createTracer(logger, { filter: options.trace });
@@ -167,6 +169,7 @@ export async function compile(host, mainFile, options = {}, oldProgram // NOTE:
167
169
  },
168
170
  getGlobalNamespaceType,
169
171
  resolveTypeReference,
172
+ getSourceFileLocationContext,
170
173
  projectRoot: getDirectoryPath((_d = (_c = options.config) !== null && _c !== void 0 ? _c : resolvedMain) !== null && _d !== void 0 ? _d : ""),
171
174
  };
172
175
  trace("compiler.options", JSON.stringify(options, null, 2));
@@ -181,22 +184,25 @@ export async function compile(host, mainFile, options = {}, oldProgram // NOTE:
181
184
  if (resolvedMain && options.additionalImports) {
182
185
  const importScript = options.additionalImports.map((i) => `import "${i}";`).join("\n");
183
186
  const sourceFile = createSourceFile(importScript, joinPaths(getDirectoryPath(resolvedMain), `__additional_imports`));
187
+ sourceFileLocationContexts.set(sourceFile, { type: "project" });
184
188
  await loadTypeSpecScript(sourceFile);
185
189
  }
186
190
  if (resolvedMain) {
187
- await loadMain(resolvedMain, options);
191
+ await loadMain(resolvedMain);
188
192
  }
189
- if (resolvedMain) {
190
- let emit = options.emit;
191
- let emitterOptions = options.options;
192
- /* eslint-disable deprecation/deprecation */
193
- if (options.emitters) {
194
- emit !== null && emit !== void 0 ? emit : (emit = Object.keys(options.emitters));
195
- emitterOptions !== null && emitterOptions !== void 0 ? emitterOptions : (emitterOptions = options.emitters);
196
- }
197
- /* eslint-enable deprecation/deprecation */
198
- await loadEmitters(resolvedMain, emit !== null && emit !== void 0 ? emit : [], emitterOptions !== null && emitterOptions !== void 0 ? emitterOptions : {});
193
+ else {
194
+ return program;
199
195
  }
196
+ const basedir = getDirectoryPath(resolvedMain);
197
+ let emit = options.emit;
198
+ let emitterOptions = options.options;
199
+ /* eslint-disable deprecation/deprecation */
200
+ if (options.emitters) {
201
+ emit !== null && emit !== void 0 ? emit : (emit = Object.keys(options.emitters));
202
+ emitterOptions !== null && emitterOptions !== void 0 ? emitterOptions : (emitterOptions = options.emitters);
203
+ }
204
+ /* eslint-enable deprecation/deprecation */
205
+ await loadEmitters(basedir, emit !== null && emit !== void 0 ? emit : [], emitterOptions !== null && emitterOptions !== void 0 ? emitterOptions : {});
200
206
  if (oldProgram &&
201
207
  mapEquals(oldProgram.sourceFiles, program.sourceFiles) &&
202
208
  deepEquals(oldProgram.compilerOptions, program.compilerOptions)) {
@@ -204,11 +210,16 @@ export async function compile(host, mainFile, options = {}, oldProgram // NOTE:
204
210
  }
205
211
  // let GC reclaim old program, we do not reuse it beyond this point.
206
212
  oldProgram = undefined;
213
+ const linter = createLinter(program, (name) => loadLibrary(basedir, name));
214
+ if (options.linterRuleSet) {
215
+ program.reportDiagnostics(await linter.extendRuleSet(options.linterRuleSet));
216
+ }
207
217
  program.checker = createChecker(program);
208
218
  program.checker.checkProgram();
209
219
  if (program.hasError()) {
210
220
  return program;
211
221
  }
222
+ // onValidate stage
212
223
  for (const cb of validateCbs) {
213
224
  try {
214
225
  await cb(program);
@@ -239,6 +250,9 @@ export async function compile(host, mainFile, options = {}, oldProgram // NOTE:
239
250
  if (program.hasError()) {
240
251
  return program;
241
252
  }
253
+ // Linter stage
254
+ program.reportDiagnostics(linter.lint());
255
+ // Emitter stage
242
256
  for (const instance of emitters) {
243
257
  await runEmitter(instance);
244
258
  }
@@ -287,16 +301,17 @@ export async function compile(host, mainFile, options = {}, oldProgram // NOTE:
287
301
  }
288
302
  }
289
303
  async function loadStandardLibrary(program) {
304
+ const locationContext = { type: "compiler" };
290
305
  for (const dir of host.getLibDirs()) {
291
- await loadDirectory(dir, NoTarget);
306
+ await loadDirectory(dir, locationContext, NoTarget);
292
307
  }
293
308
  }
294
- async function loadDirectory(dir, diagnosticTarget) {
309
+ async function loadDirectory(dir, locationContext, diagnosticTarget) {
295
310
  const mainFile = await resolveTypeSpecEntrypointForDir(host, dir, reportDiagnostic);
296
- await loadTypeSpecFile(mainFile, diagnosticTarget);
311
+ await loadTypeSpecFile(mainFile, locationContext, diagnosticTarget);
297
312
  return mainFile;
298
313
  }
299
- async function loadTypeSpecFile(path, diagnosticTarget) {
314
+ async function loadTypeSpecFile(path, locationContext, diagnosticTarget) {
300
315
  if (seenSourceFiles.has(path)) {
301
316
  return;
302
317
  }
@@ -305,15 +320,17 @@ export async function compile(host, mainFile, options = {}, oldProgram // NOTE:
305
320
  diagnosticTarget,
306
321
  });
307
322
  if (file) {
323
+ sourceFileLocationContexts.set(file, locationContext);
308
324
  await loadTypeSpecScript(file);
309
325
  }
310
326
  }
311
- async function loadJsFile(path, diagnosticTarget) {
327
+ async function loadJsFile(path, locationContext, diagnosticTarget) {
312
328
  const sourceFile = program.jsSourceFiles.get(path);
313
329
  if (sourceFile !== undefined) {
314
330
  return sourceFile;
315
331
  }
316
332
  const file = createSourceFile("", path);
333
+ sourceFileLocationContexts.set(file, locationContext);
317
334
  const exports = await doIO(host.getJsImport, path, program.reportDiagnostic, {
318
335
  diagnosticTarget,
319
336
  jsDiagnosticTarget: { file, pos: 0, end: 0 },
@@ -343,8 +360,8 @@ export async function compile(host, mainFile, options = {}, oldProgram // NOTE:
343
360
  /**
344
361
  * Import the Javascript files decorator and lifecycle hooks.
345
362
  */
346
- async function importJsFile(path, diagnosticTarget) {
347
- const file = await loadJsFile(path, diagnosticTarget);
363
+ async function importJsFile(path, locationContext, diagnosticTarget) {
364
+ const file = await loadJsFile(path, locationContext, diagnosticTarget);
348
365
  if (file !== undefined) {
349
366
  program.jsSourceFiles.set(path, file);
350
367
  binder.bindJsSourceFile(file);
@@ -376,15 +393,20 @@ export async function compile(host, mainFile, options = {}, oldProgram // NOTE:
376
393
  async function loadScriptImports(file) {
377
394
  // collect imports
378
395
  const basedir = getDirectoryPath(file.file.path);
379
- await loadImports(file.statements.filter(isImportStatement).map((x) => ({ path: x.path.value, target: x })), basedir);
396
+ await loadImports(file.statements.filter(isImportStatement).map((x) => ({ path: x.path.value, target: x })), basedir, getSourceFileLocationContext(file.file));
397
+ }
398
+ function getSourceFileLocationContext(sourcefile) {
399
+ const locationContext = sourceFileLocationContexts.get(sourcefile);
400
+ compilerAssert(locationContext, "SourceFile should have a declaration locationContext.");
401
+ return locationContext;
380
402
  }
381
- async function loadImports(imports, relativeTo) {
403
+ async function loadImports(imports, relativeTo, locationContext) {
382
404
  // collect imports
383
405
  for (const { path, target } of imports) {
384
- await loadImport(path, target, relativeTo);
406
+ await loadImport(path, target, relativeTo, locationContext);
385
407
  }
386
408
  }
387
- async function loadImport(path, target, relativeTo) {
409
+ async function loadImport(path, target, relativeTo, locationContext) {
388
410
  const library = await resolveTypeSpecLibrary(path, relativeTo, target);
389
411
  if (library === undefined) {
390
412
  return;
@@ -395,49 +417,68 @@ export async function compile(host, mainFile, options = {}, oldProgram // NOTE:
395
417
  manifest: library.manifest,
396
418
  });
397
419
  trace("import-resolution.library", `Loading library "${path}" from "${library.mainFile}"`);
420
+ const metadata = computeModuleMetadata(library);
421
+ locationContext = {
422
+ type: "library",
423
+ metadata,
424
+ };
398
425
  }
399
426
  const importFilePath = library.type === "module" ? library.mainFile : library.path;
400
427
  const isDirectory = (await host.stat(importFilePath)).isDirectory();
401
428
  if (isDirectory) {
402
- return await loadDirectory(importFilePath, target);
429
+ return await loadDirectory(importFilePath, locationContext, target);
403
430
  }
404
431
  const sourceFileKind = host.getSourceFileKind(importFilePath);
405
432
  switch (sourceFileKind) {
406
433
  case "js":
407
- return await importJsFile(importFilePath, target);
434
+ return await importJsFile(importFilePath, locationContext, target);
408
435
  case "typespec":
409
- return await loadTypeSpecFile(importFilePath, target);
436
+ return await loadTypeSpecFile(importFilePath, locationContext, target);
410
437
  default:
411
438
  program.reportDiagnostic(createDiagnostic({ code: "invalid-import", target }));
412
439
  }
413
440
  }
414
- async function loadEmitters(mainFile, emitterNameOrPaths, emitterOptions) {
441
+ async function loadEmitters(basedir, emitterNameOrPaths, emitterOptions) {
415
442
  for (const emitterNameOrPath of emitterNameOrPaths) {
416
- const emitter = await loadEmitter(mainFile, emitterNameOrPath, emitterOptions);
443
+ const emitter = await loadEmitter(basedir, emitterNameOrPath, emitterOptions);
417
444
  if (emitter) {
418
445
  emitters.push(emitter);
419
446
  }
420
447
  }
421
448
  }
422
- async function resolveEmitterModuleAndEntrypoint(mainFile, emitterNameOrPath) {
423
- const basedir = getDirectoryPath(mainFile);
449
+ async function resolveEmitterModuleAndEntrypoint(basedir, emitterNameOrPath) {
450
+ const locationContext = { type: "project" };
424
451
  // attempt to resolve a node module with this name
425
- const [module, diagnostics] = await resolveJSLibrary(emitterNameOrPath, basedir);
452
+ const [module, diagnostics] = await resolveJSLibrary(emitterNameOrPath, basedir, locationContext);
426
453
  if (!module) {
427
454
  return [undefined, diagnostics];
428
455
  }
429
456
  const entrypoint = module.type === "file" ? module.path : module.mainFile;
430
- const file = await loadJsFile(entrypoint, NoTarget);
457
+ const file = await loadJsFile(entrypoint, locationContext, NoTarget);
431
458
  return [{ module, entrypoint: file }, []];
432
459
  }
433
- async function loadEmitter(mainFile, emitterNameOrPath, emittersOptions) {
434
- var _c, _d, _e, _f;
435
- const [resolution, diagnostics] = await resolveEmitterModuleAndEntrypoint(mainFile, emitterNameOrPath);
460
+ async function loadLibrary(basedir, libraryNameOrPath) {
461
+ const [resolution, diagnostics] = await resolveEmitterModuleAndEntrypoint(basedir, libraryNameOrPath);
436
462
  if (resolution === undefined) {
437
463
  program.reportDiagnostics(diagnostics);
438
464
  return undefined;
439
465
  }
440
466
  const { module, entrypoint } = resolution;
467
+ const libDefinition = entrypoint === null || entrypoint === void 0 ? void 0 : entrypoint.esmExports.$lib;
468
+ const metadata = computeLibraryMetadata(module, libDefinition);
469
+ return {
470
+ ...resolution,
471
+ metadata,
472
+ definition: libDefinition,
473
+ };
474
+ }
475
+ async function loadEmitter(basedir, emitterNameOrPath, emittersOptions) {
476
+ var _c, _d, _e, _f;
477
+ const library = await loadLibrary(basedir, emitterNameOrPath);
478
+ if (library === undefined) {
479
+ return undefined;
480
+ }
481
+ const { entrypoint, metadata } = library;
441
482
  if (entrypoint === undefined) {
442
483
  program.reportDiagnostic(createDiagnostic({
443
484
  code: "invalid-emitter",
@@ -447,8 +488,7 @@ export async function compile(host, mainFile, options = {}, oldProgram // NOTE:
447
488
  return undefined;
448
489
  }
449
490
  const emitFunction = entrypoint.esmExports.$onEmit;
450
- const libDefinition = entrypoint.esmExports.$lib;
451
- const metadata = computeLibraryMetadata(module, libDefinition);
491
+ const libDefinition = library.definition;
452
492
  let { "emitter-output-dir": emitterOutputDir, ...emitterOptions } = (_d = emittersOptions[(_c = metadata.name) !== null && _c !== void 0 ? _c : emitterNameOrPath]) !== null && _d !== void 0 ? _d : {};
453
493
  if (emitterOutputDir === undefined) {
454
494
  emitterOutputDir = [options.outputDir, metadata.name].filter(isDefined).join("/");
@@ -484,20 +524,25 @@ export async function compile(host, mainFile, options = {}, oldProgram // NOTE:
484
524
  }
485
525
  }
486
526
  function computeLibraryMetadata(module, libDefinition) {
487
- var _c, _d, _e;
488
527
  if (module.type === "file") {
489
528
  return {
529
+ type: "file",
490
530
  name: libDefinition === null || libDefinition === void 0 ? void 0 : libDefinition.name,
491
531
  };
492
532
  }
533
+ return computeModuleMetadata(module);
534
+ }
535
+ function computeModuleMetadata(module) {
536
+ var _c, _d;
493
537
  const metadata = {
494
- name: (_c = libDefinition === null || libDefinition === void 0 ? void 0 : libDefinition.name) !== null && _c !== void 0 ? _c : module.manifest.name,
538
+ type: "module",
539
+ name: module.manifest.name,
495
540
  };
496
541
  if (module.manifest.homepage) {
497
542
  metadata.homepage = module.manifest.homepage;
498
543
  }
499
- if ((_d = module.manifest.bugs) === null || _d === void 0 ? void 0 : _d.url) {
500
- metadata.bugs = { url: (_e = module.manifest.bugs) === null || _e === void 0 ? void 0 : _e.url };
544
+ if ((_c = module.manifest.bugs) === null || _c === void 0 ? void 0 : _c.url) {
545
+ metadata.bugs = { url: (_d = module.manifest.bugs) === null || _d === void 0 ? void 0 : _d.url };
501
546
  }
502
547
  return metadata;
503
548
  }
@@ -578,7 +623,7 @@ export async function compile(host, mainFile, options = {}, oldProgram // NOTE:
578
623
  * resolves a module specifier like "myLib" to an absolute path where we can find the main of
579
624
  * that module, e.g. "/typespec/node_modules/myLib/dist/lib.js".
580
625
  */
581
- async function resolveJSLibrary(specifier, baseDir) {
626
+ async function resolveJSLibrary(specifier, baseDir, locationContext) {
582
627
  try {
583
628
  return [await resolveModule(getResolveModuleHost(), specifier, { baseDir }), []];
584
629
  }
@@ -625,17 +670,16 @@ export async function compile(host, mainFile, options = {}, oldProgram // NOTE:
625
670
  /**
626
671
  * Load the main file from the given path
627
672
  * @param mainPath Absolute path to the main file.
628
- * @param options Compiler options.
629
- * @returns
630
673
  */
631
- async function loadMain(mainPath, options) {
674
+ async function loadMain(mainPath) {
632
675
  await checkForCompilerVersionMismatch(mainPath);
633
676
  const sourceFileKind = host.getSourceFileKind(mainPath);
677
+ const locationContext = { type: "project" };
634
678
  switch (sourceFileKind) {
635
679
  case "js":
636
- return await importJsFile(mainPath, NoTarget);
680
+ return await importJsFile(mainPath, locationContext, NoTarget);
637
681
  case "typespec":
638
- return await loadTypeSpecFile(mainPath, NoTarget);
682
+ return await loadTypeSpecFile(mainPath, locationContext, NoTarget);
639
683
  default:
640
684
  program.reportDiagnostic(createDiagnostic({ code: "invalid-main", target: NoTarget }));
641
685
  }
@@ -1 +1 @@
1
- {"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/core/program.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/core/program.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { JSONSchemaType, JSONSchemaValidator } from "./types.js";
2
2
  export interface JSONSchemaValidatorOptions {
3
3
  coerceTypes?: boolean;
4
+ strict?: boolean;
4
5
  }
5
6
  export declare function createJSONSchemaValidator<T>(schema: JSONSchemaType<T>, options?: JSONSchemaValidatorOptions): JSONSchemaValidator;
6
7
  //# sourceMappingURL=schema-validator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-validator.d.ts","sourceRoot":"","sources":["../../../src/core/schema-validator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,cAAc,EAAE,mBAAmB,EAAwB,MAAM,YAAY,CAAC;AAEnG,MAAM,WAAW,0BAA0B;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EACzC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,OAAO,GAAE,0BAA+B,GACvC,mBAAmB,CAwBrB"}
1
+ {"version":3,"file":"schema-validator.d.ts","sourceRoot":"","sources":["../../../src/core/schema-validator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,cAAc,EAAE,mBAAmB,EAAwB,MAAM,YAAY,CAAC;AAEnG,MAAM,WAAW,0BAA0B;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EACzC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,OAAO,GAAE,0BAA6C,GACrD,mBAAmB,CAwBrB"}
@@ -1,9 +1,9 @@
1
1
  import Ajv from "ajv";
2
2
  import { compilerAssert } from "./diagnostics.js";
3
3
  import { NoTarget } from "./types.js";
4
- export function createJSONSchemaValidator(schema, options = {}) {
4
+ export function createJSONSchemaValidator(schema, options = { strict: true }) {
5
5
  const ajv = new Ajv({
6
- strict: true,
6
+ strict: options.strict,
7
7
  coerceTypes: options.coerceTypes,
8
8
  });
9
9
  return { validate };
@@ -1 +1 @@
1
- {"version":3,"file":"schema-validator.js","sourceRoot":"","sources":["../../../src/core/schema-validator.ts"],"names":[],"mappings":"AAAA,OAAO,GAAoB,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAmD,QAAQ,EAAc,MAAM,YAAY,CAAC;AAMnG,MAAM,UAAU,yBAAyB,CACvC,MAAyB,EACzB,UAAsC,EAAE;IAExC,MAAM,GAAG,GAAG,IAAK,GAAW,CAAC;QAC3B,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB,SAAS,QAAQ,CAAC,MAAe,EAAE,MAAoC;;QACrE,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,cAAc,CACZ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,EAC1B,6DAA6D,CAC9D,CAAC;QAEF,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,KAAK,IAAI,MAAA,QAAQ,CAAC,MAAM,mCAAI,EAAE,EAAE;YACzC,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACvD,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC9B;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEvD,SAAS,oBAAoB,CAC3B,KAAkB,EAClB,MAAoC;IAEpC,MAAM,YAAY,GAAG,CAAC,qBAAqB,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,YAAY,IAAI,GAAG,GAAG,CAAC,CAAC;IAC3F,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAC7D,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAC1C,EAAE;QACD,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACrF,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,cAAc,EAAE,CAAC,CAAC;KACnD;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,OAAO;QACP,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;KACxE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"schema-validator.js","sourceRoot":"","sources":["../../../src/core/schema-validator.ts"],"names":[],"mappings":"AAAA,OAAO,GAAoB,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAmD,QAAQ,EAAc,MAAM,YAAY,CAAC;AAOnG,MAAM,UAAU,yBAAyB,CACvC,MAAyB,EACzB,UAAsC,EAAE,MAAM,EAAE,IAAI,EAAE;IAEtD,MAAM,GAAG,GAAG,IAAK,GAAW,CAAC;QAC3B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB,SAAS,QAAQ,CAAC,MAAe,EAAE,MAAoC;;QACrE,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,cAAc,CACZ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,EAC1B,6DAA6D,CAC9D,CAAC;QAEF,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,KAAK,IAAI,MAAA,QAAQ,CAAC,MAAM,mCAAI,EAAE,EAAE;YACzC,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACvD,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC9B;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEvD,SAAS,oBAAoB,CAC3B,KAAkB,EAClB,MAAoC;IAEpC,MAAM,YAAY,GAAG,CAAC,qBAAqB,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,YAAY,IAAI,GAAG,GAAG,CAAC,CAAC;IAC3F,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAC7D,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAC1C,EAAE;QACD,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACrF,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,cAAc,EAAE,CAAC,CAAC;KACnD;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,OAAO;QACP,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;KACxE,CAAC;AACJ,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { JSONSchemaType as AjvJSONSchemaType } from "ajv";
2
2
  import { TypeEmitter } from "../emitter-framework/type-emitter.js";
3
3
  import { AssetEmitter } from "../emitter-framework/types.js";
4
+ import { ModuleResolutionResult } from "./module-resolver.js";
4
5
  import { Program } from "./program.js";
5
6
  export type MarshalledValue<Type> = Type extends StringLiteral ? string : Type extends NumericLiteral ? number : Type extends BooleanLiteral ? boolean : Type;
6
7
  /**
@@ -670,6 +671,8 @@ export interface LineComment extends TextRange {
670
671
  }
671
672
  export interface BlockComment extends TextRange {
672
673
  readonly kind: SyntaxKind.BlockComment;
674
+ /** If that comment was parsed as a doc comment. If parserOptions.docs=false this will always be false. */
675
+ readonly parsedAsDocs?: boolean;
673
676
  }
674
677
  export interface ParseOptions {
675
678
  /** When true, collect comment ranges in {@link TypeSpecScriptNode.comments}. */
@@ -1188,6 +1191,57 @@ export interface SourceFile {
1188
1191
  */
1189
1192
  getLineAndCharacterOfPosition(position: number): LineAndCharacter;
1190
1193
  }
1194
+ /**
1195
+ * Represent a location context in the mind of the compiler. This can be:
1196
+ * - the user project
1197
+ * - a library
1198
+ * - the compiler(standard library)
1199
+ * - virtual
1200
+ */
1201
+ export type LocationContext = ProjectLocationContext | CompilerLocationContext | SyntheticLocationContext | LibraryLocationContext;
1202
+ /** Defined in the user project. */
1203
+ export interface ProjectLocationContext {
1204
+ type: "project";
1205
+ }
1206
+ /** Built-in */
1207
+ export interface CompilerLocationContext {
1208
+ type: "compiler";
1209
+ }
1210
+ /** Refer to a type that was not declared in a file */
1211
+ export interface SyntheticLocationContext {
1212
+ type: "synthetic";
1213
+ }
1214
+ /** Defined in a library. */
1215
+ export interface LibraryLocationContext {
1216
+ type: "library";
1217
+ metadata: ModuleLibraryMetadata;
1218
+ }
1219
+ export interface LibraryInstance {
1220
+ module: ModuleResolutionResult;
1221
+ entrypoint: JsSourceFileNode | undefined;
1222
+ metadata: LibraryMetadata;
1223
+ definition?: TypeSpecLibrary<any>;
1224
+ }
1225
+ export type LibraryMetadata = FileLibraryMetadata | ModuleLibraryMetadata;
1226
+ interface LibraryMetadataBase {
1227
+ /** Library homepage. */
1228
+ homepage?: string;
1229
+ bugs?: {
1230
+ /** Url where to file bugs for this library. */
1231
+ url?: string;
1232
+ };
1233
+ }
1234
+ export interface FileLibraryMetadata extends LibraryMetadataBase {
1235
+ type: "file";
1236
+ /** Library name as specified in the package.json or in exported $lib. */
1237
+ name?: string;
1238
+ }
1239
+ /** Data for a library. Either loaded via a node_modules package or a standalone js file */
1240
+ export interface ModuleLibraryMetadata extends LibraryMetadataBase {
1241
+ type: "module";
1242
+ /** Library name as specified in the package.json or in exported $lib. */
1243
+ name: string;
1244
+ }
1191
1245
  export interface TextRange {
1192
1246
  /**
1193
1247
  * The starting position of the ranger measured in UTF-16 code units from the
@@ -1244,7 +1298,9 @@ export interface RmOptions {
1244
1298
  recursive?: boolean;
1245
1299
  }
1246
1300
  export interface CompilerHost {
1301
+ /** read a file at the given url. */
1247
1302
  readUrl(url: string): Promise<SourceFile>;
1303
+ /** read a utf-8 or utf-8 with bom encoded file */
1248
1304
  readFile(path: string): Promise<SourceFile>;
1249
1305
  /**
1250
1306
  * Optional cache to reuse the results of parsing and binding across programs.
@@ -1349,6 +1405,17 @@ export interface DiagnosticCreator<T extends {
1349
1405
  reportDiagnostic<C extends keyof T, M extends keyof T[C] = "default">(program: Program, diag: DiagnosticReport<T, C, M>): void;
1350
1406
  }
1351
1407
  export type TypeOfDiagnostics<T extends DiagnosticMap<any>> = T extends DiagnosticMap<infer D> ? D : never;
1408
+ export type JSONSchemaType<T> = AjvJSONSchemaType<T>;
1409
+ export interface JSONSchemaValidator {
1410
+ /**
1411
+ * Validate the configuration against its JSON Schema.
1412
+ *
1413
+ * @param config Configuration to validate.
1414
+ * @param target Source file target to use for diagnostics.
1415
+ * @returns Diagnostics produced by schema validation of the configuration.
1416
+ */
1417
+ validate(config: unknown, target: SourceFile | typeof NoTarget): Diagnostic[];
1418
+ }
1352
1419
  /** @deprecated Use TypeSpecLibraryDef */
1353
1420
  export type CadlLibraryDef<T extends {
1354
1421
  [code: string]: DiagnosticMessages;
@@ -1378,18 +1445,50 @@ export interface TypeSpecLibraryDef<T extends {
1378
1445
  readonly emitter?: {
1379
1446
  options?: JSONSchemaType<E>;
1380
1447
  };
1381
- }
1382
- export type JSONSchemaType<T> = AjvJSONSchemaType<T>;
1383
- export interface JSONSchemaValidator {
1384
1448
  /**
1385
- * Validate the configuration against its JSON Schema.
1386
- *
1387
- * @param config Configuration to validate.
1388
- * @param target Source file target to use for diagnostics.
1389
- * @returns Diagnostics produced by schema validation of the configuration.
1390
- */
1391
- validate(config: unknown, target: SourceFile | typeof NoTarget): Diagnostic[];
1392
- }
1449
+ * Configuration if library is providing linting rules/rulesets.
1450
+ */
1451
+ readonly linter?: LinterDefinition;
1452
+ }
1453
+ export interface LinterDefinition {
1454
+ rules: LinterRuleDefinition<string, DiagnosticMessages>[];
1455
+ ruleSets?: Record<string, LinterRuleSet>;
1456
+ }
1457
+ export interface LinterRuleDefinition<N extends string, DM extends DiagnosticMessages> {
1458
+ name: N;
1459
+ severity: "warning";
1460
+ description: string;
1461
+ messages: DM;
1462
+ create(context: LinterRuleContext<DM>): SemanticNodeListener;
1463
+ }
1464
+ /** Resolved instance of a linter rule that will run. */
1465
+ export interface LinterRule<N extends string, DM extends DiagnosticMessages> extends LinterRuleDefinition<N, DM> {
1466
+ /** Expanded rule id in format `<library-name>:<rule-name>` */
1467
+ id: string;
1468
+ }
1469
+ /** Reference to a rule. In this format `<library name>:<rule/ruleset name>` */
1470
+ export type RuleRef = `${string}/${string}`;
1471
+ export interface LinterRuleSet {
1472
+ /** Other ruleset this ruleset extends */
1473
+ extends?: RuleRef[];
1474
+ /** Rules to enable/configure */
1475
+ enable?: Record<RuleRef, boolean>;
1476
+ /** Rules to disable. A rule CANNOT be in enable and disable map. */
1477
+ disable?: Record<RuleRef, string>;
1478
+ }
1479
+ export interface LinterRuleContext<DM extends DiagnosticMessages> {
1480
+ readonly program: Program;
1481
+ reportDiagnostic<M extends keyof DM>(diag: LinterRuleDiagnosticReport<DM, M>): void;
1482
+ }
1483
+ export type LinterRuleDiagnosticFormat<T extends DiagnosticMessages, M extends keyof T = "default"> = T[M] extends CallableMessage<infer A> ? {
1484
+ format: Record<A[number], string>;
1485
+ } : Record<string, unknown>;
1486
+ export type LinterRuleDiagnosticReportWithoutTarget<T extends DiagnosticMessages, M extends keyof T = "default"> = {
1487
+ messageId?: M;
1488
+ } & LinterRuleDiagnosticFormat<T, M>;
1489
+ export type LinterRuleDiagnosticReport<T extends DiagnosticMessages, M extends keyof T = "default"> = LinterRuleDiagnosticReportWithoutTarget<T, M> & {
1490
+ target: DiagnosticTarget | typeof NoTarget;
1491
+ };
1393
1492
  /** @deprecated Use TypeSpecLibrary */
1394
1493
  export type CadlLibrary<T extends {
1395
1494
  [code: string]: DiagnosticMessages;