@tslite/checker 1.6.0 → 1.8.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/dist/index.d.cts CHANGED
@@ -1,12 +1,52 @@
1
1
  import { VarSchema, Schema, Schemes, TypeScheme, ObjectSchema, Completion } from './types/index.cjs';
2
- export { AnySchema, ApplySchema, ArraySchema, Bindings, DEFAULT_TYPE_LIMITS, Discovery, ElementFlag, FnSchema, GuardSig, INSTANTIATION_COUNT_LIMIT, INSTANTIATION_DEPTH_LIMIT, Incompatibility, IncompatibilityKind, IndexSchema, Instantiation, InstantiationLimitError, KeyofSchema, LiteralSchema, MappedSchema, OverloadSchema, Param, PathSegment, Prop, ScalarSchema, TYPE_EVAL_DEPTH_LIMIT, TupleSchema, TypeEvalLimitError, TypeEvalLimits, TypeForm, TypePosition, UnionSchema, UnionTooComplexError, UnknownSchema, VarCandidates, WriteKey, apparentType, asLiteralOrigin, baseLiteralType, bindTypeParams, comparable, configureTypeLimits, contravariantInference, covariantInference, discover, equals, erasedSignature, expand1, flagAt, format, formatTypeArgs, formatTypeDiff, freeVars, groundVars, inferFromCandidates, inferredTypes, instantiate, instantiateInContextOf, instantiateLoose, isMissingType, isNumericLiteralName, isObjectOrArrayLiteral, isScheme, isSerializable, isVariadicTuple, join, joinAll, missingType, normalizeUnion, ownProp, readonlyMember, renameTypeParams, resetInstantiationCount, resetTypeLimits, resolveConditional, resolveOp, resolveTypeOp, restIndex, restTypeAtPosition, s, sampleValue, silentNever, substitute, subtype, typeAtPosition, typeDiff, typeFeatures, typeLimits, typeNeedsParens, typeParamArity, unify, version, widen, widenInferred, widenLiteral, widenOrigin, widenType, withUndefined, withoutUndefined } from './types/index.cjs';
3
- import { Scope as Scope$1, BaseNode, Node, types, SourceLocation, Expression } from '@tslite/ast';
2
+ export { AnySchema, ApplySchema, ArraySchema, Bindings, Candidates, DEFAULT_TYPE_LIMITS, Discovery, ElementFlag, FnSchema, GuardSig, INSTANTIATION_COUNT_LIMIT, INSTANTIATION_DEPTH_LIMIT, Incompatibility, IncompatibilityKind, IndexSchema, InferencePriority, Instantiation, InstantiationLimitError, KeyofSchema, LiteralSchema, MappedSchema, OverloadSchema, Param, PathSegment, Prop, ScalarSchema, TYPE_EVAL_DEPTH_LIMIT, TupleSchema, TypeEvalLimitError, TypeEvalLimits, TypeForm, TypePosition, UnionSchema, UnionTooComplexError, UnknownSchema, VarCandidates, WriteKey, apparentType, asLiteralOrigin, baseLiteralType, bindTypeParams, comparable, configureTypeLimits, contravariantInference, covariantInference, createInferences, discover, equals, erasedSignature, expand1, flagAt, format, formatTypeArgs, formatTypeDiff, freeVars, groundVars, inferFromCandidates, inferTypes, inferredBindings, inferredTypes, instantiateInContextOf, instantiateLoose, isMissingType, isNumericLiteralName, isObjectOrArrayLiteral, isScheme, isSerializable, isVariadicTuple, join, joinAll, missingType, normalizeUnion, ownProp, readonlyMember, renameTypeParams, resetInstantiationCount, resetTypeLimits, resolveConditional, resolveOp, resolveTypeOp, restIndex, restTypeAtPosition, s, sampleValue, silentNever, substitute, subtype, typeAtPosition, typeDiff, typeFeatures, typeLimits, typeNameOf, typeNeedsParens, typeParamArity, version, widen, widenInferred, widenLiteral, widenOrigin, widenType, withUndefined, withoutUndefined } from './types/index.cjs';
3
+ import { BaseNode, Scope as Scope$1, Node, types, SourceLocation, Expression } from '@tslite/ast';
4
4
  import { CapabilityProfile, CompiledProfile } from '@tslite/capability';
5
5
  import { Span } from '@tslite/language-service';
6
6
 
7
7
  /** As declarações de tipo nominal: o nome e os type params, em ordem. */
8
8
  type Nominals = Readonly<Record<string, readonly VarSchema[]>>;
9
9
 
10
+ /** O que uma declaração de namespace declara com um nome. */
11
+ interface NamespaceMember {
12
+ /** Visível de fora: tem `export`, ou está num contexto ambiente que exporta tudo. */
13
+ readonly exported: boolean;
14
+ /** O nome, onde o diagnóstico sobre a declaração pousa; `null` num membro do ambiente,
15
+ * que não tem texto. */
16
+ readonly id: BaseNode | null;
17
+ /** A chave do tipo no catálogo, quando não é o nome qualificado (`path.nome`): a de um
18
+ * tipo que outra declaração do mesmo namespace também declara (checker D88). */
19
+ readonly key?: string;
20
+ }
21
+ /** Uma declaração de namespace — um bloco. `namespace A.B { … }` são duas: o `A` e o `B`. */
22
+ interface NamespaceDeclaration {
23
+ /** O `TSModuleDeclaration`; `null` num namespace do ambiente, que vem das chaves do
24
+ * catálogo e não de texto. */
25
+ readonly node: BaseNode | null;
26
+ /** O caminho qualificado (`app.router`). */
27
+ readonly path: string;
28
+ /** A declaração de fora, ou `null` no topo. */
29
+ readonly parent: NamespaceDeclaration | null;
30
+ /** No contexto ambiente (`declare namespace`, e o que está dentro dele). */
31
+ readonly ambient: boolean;
32
+ /** O bloco tem valores (o `Instantiated` do `getModuleInstanceState`). */
33
+ readonly instantiated: boolean;
34
+ /** Os tipos que ESTE bloco declara (os locais do tsc, com o sentido de tipo). Um tipo e
35
+ * um namespace com o mesmo nome convivem, por isso as duas tabelas. */
36
+ readonly types: ReadonlyMap<string, NamespaceMember>;
37
+ /** Os namespaces que ESTE bloco declara. */
38
+ readonly namespaces: ReadonlyMap<string, NamespaceMember>;
39
+ }
40
+ /** As declarações de namespace de uma raiz — o programa, ou o ambiente. */
41
+ interface Namespaces {
42
+ /** As declarações de cada namespace, pelo caminho, na ordem. */
43
+ readonly byPath: ReadonlyMap<string, readonly NamespaceDeclaration[]>;
44
+ /** A declaração de cada nó `TSModuleDeclaration` que está num lugar permitido. */
45
+ readonly byNode: WeakMap<BaseNode, NamespaceDeclaration>;
46
+ /** Os aliases escritos num namespace: o nó da declaração do alias → a do namespace. */
47
+ readonly aliasOwner: WeakMap<BaseNode, NamespaceDeclaration>;
48
+ }
49
+
10
50
  /**
11
51
  * Um nível de escopo léxico (nome → `Schema`), sobre o `Scope<T>` genérico do
12
52
  * `ast` — a mesma cadeia que o `behavior` usa, com o payload do eixo de tipos.
@@ -25,8 +65,21 @@ declare const lookup: (scope: Scope, name: string) => Schema | undefined;
25
65
  * estreitado por guard (`narrow`, D13), e a que termina em `#` é o tipo
26
66
  * DECLARADO de um binding mutável (D63) — nenhum identificador tem esses
27
67
  * caracteres.
68
+ *
69
+ * Um binding do programa tem a chave do SÍMBOLO (`nome@id`, D87), e dois símbolos com
70
+ * o mesmo nome são chaves diferentes: o nome visível é o de fora do `@`, e vale o mais
71
+ * interno. A cadeia vem de dentro para fora, e um refinamento de um símbolo só existe
72
+ * onde o nome dele não está sombreado — então a primeira chave de cada nome é a que ele
73
+ * denota ali.
28
74
  */
29
75
  declare const visibleNames: (scope: Scope) => Map<string, Schema>;
76
+ /**
77
+ * `name`, visto de `scope`, denota um nome do AMBIENTE (a DI, a lib) — e não um símbolo
78
+ * do programa? É o que o tsc responde olhando a declaração do símbolo resolvido (o
79
+ * `defaultLibrary` do `classifier2020`). A primeira ligação do nome, de dentro para fora, é
80
+ * a que ele denota ali (ver `visibleNames`); `false` quando nada o liga.
81
+ */
82
+ declare function resolvesToEnvironment(scope: Scope, name: string): boolean;
30
83
  /**
31
84
  * O ambiente injetado pela aplicação — a fronteira de tipos do sistema.
32
85
  * `scope` é a raiz da DI; `types` resolve tipos nomeados em anotações.
@@ -91,6 +144,14 @@ interface Env {
91
144
  * mesmo tipo, e a aridade é cobrada como a de um alias.
92
145
  */
93
146
  readonly nominals?: Nominals;
147
+ /**
148
+ * Os namespaces do ambiente (D83), lidos das chaves de `types` e `schemes`: um tipo com o
149
+ * nome qualificado (`state.Config`) é o membro `Config` do namespace `state`, como num
150
+ * `.d.ts` com `declare namespace state { … }`. Os corpos já chegam com os nomes
151
+ * resolvidos a partir do namespace de cada um — um `Config` no corpo de `state.Result` é
152
+ * o `state.Config` —, sem o host reescrever nada.
153
+ */
154
+ readonly namespaces?: Namespaces;
94
155
  }
95
156
  /**
96
157
  * O que um `Env` tem além das variáveis. Cada campo espelha o de {@link Env}, e
@@ -139,7 +200,7 @@ declare const resolveNamed: (env: Env, name: string) => Schema | undefined;
139
200
  declare const resolveScheme: (env: Env, name: string) => TypeScheme | undefined;
140
201
 
141
202
  type Severity = "error" | "warning";
142
- type DiagnosticCode = "not-assignable" | "unknown-name" | "not-callable" | "no-such-member" | "not-object" | "possibly-nullish" | "unknown-value" | "const-needs-init" | "cannot-redeclare" | "circular-type-alias" | "circular-type-annotation" | "unknown-module" | "not-a-schema" | "type-as-value" | "asserter-needs-name" | "shadows-schema" | "missing-argument" | "excess-argument" | "excess-property" | "spread-argument" | "required-after-optional" | "not-iterable" | "not-spreadable" | "overwritten-property" | "implicit-any" | "props-mismatch" | "no-matching-overload" | "constraint-violation" | "wrong-type-argument-count" | "unsupported" | "unused-name" | "assign-to-const" | "for-in-destructuring" | "readonly-write" | "cast-unsound" | "unprovable-value" | "not-arithmetic-operand" | "operator-not-applicable" | "implicit-coercion" | "node-not-allowed" | "name-not-allowed" | "type-feature-not-allowed" | "any-not-allowed" | "narrowing-cast-not-allowed" | "too-deep" | "too-complex-union" | "too-large" | "wrong-result-type";
203
+ type DiagnosticCode = "not-assignable" | "unknown-name" | "not-callable" | "no-such-member" | "not-object" | "possibly-nullish" | "unknown-value" | "const-needs-init" | "cannot-redeclare" | "circular-type-alias" | "circular-type-annotation" | "unknown-module" | "not-a-schema" | "type-as-value" | "asserter-needs-name" | "shadows-schema" | "missing-argument" | "excess-argument" | "excess-property" | "spread-argument" | "required-after-optional" | "not-iterable" | "not-spreadable" | "overwritten-property" | "implicit-any" | "props-mismatch" | "no-matching-overload" | "constraint-violation" | "wrong-type-argument-count" | "unsupported" | "unused-name" | "assign-to-const" | "for-in-destructuring" | "for-in-not-object" | "readonly-write" | "cast-unsound" | "unprovable-value" | "not-arithmetic-operand" | "operator-not-applicable" | "no-overlap" | "uncalled-function-check" | "not-comparable" | "misplaced-namespace" | "ambient-initializer" | "ambient-statement" | "used-before-assigned" | "used-before-declaration" | "implicit-coercion" | "node-not-allowed" | "name-not-allowed" | "type-feature-not-allowed" | "any-not-allowed" | "narrowing-cast-not-allowed" | "too-deep" | "too-complex-union" | "too-large" | "wrong-result-type";
143
204
  /**
144
205
  * A **classe** do diagnóstico — espelha a divisão de passes do `tsc` (que nós
145
206
  * fundimos num walk só): `semantic` é o que o **binder** do tsc pega (validade do
@@ -256,7 +317,28 @@ declare const diag: {
256
317
  asserterNeedsName: (node: BaseNode, asserter: string) => Diagnostic;
257
318
  shadowsSchema: (node: BaseNode, name: string) => Diagnostic;
258
319
  unknownModule: (node: BaseNode, source: string) => Diagnostic;
259
- cannotRedeclare: (node: BaseNode, name: string) => Diagnostic;
320
+ /**
321
+ * O mesmo nome declarado de novo onde não pode, com o texto de cada mecanismo do tsc
322
+ * 3.9.10. O conceito é um só, o do `cannot-redeclare` (D2), e o nó é o NOME de cada
323
+ * declaração acusada.
324
+ */
325
+ redeclaration: {
326
+ /** TS2451: o que está na tabela é variável de escopo de bloco (o `declareSymbol` do
327
+ * binder, `binder.ts:476`), em cada declaração. */
328
+ blockScoped: (node: BaseNode, name: string) => Diagnostic;
329
+ /** TS2300: o que está na tabela é outra coisa (um parâmetro, um import, um alias, um
330
+ * namespace), em cada declaração. */
331
+ duplicate: (node: BaseNode, name: string) => Diagnostic;
332
+ /** TS2440: o import fundido com uma declaração local que ocupa o significado do alvo
333
+ * dele (o `checkAliasSymbol`, `checker.ts:34279`), no especificador. */
334
+ importConflict: (node: BaseNode, name: string) => Diagnostic;
335
+ /** TS2492: o bloco do `catch` declara de novo o binding dele (o `checkTryStatement`,
336
+ * `checker.ts:33056`), na declaração do bloco. */
337
+ catchClause: (node: BaseNode, name: string) => Diagnostic;
338
+ /** TS2395: declarações do mesmo símbolo, umas exportadas e outras locais, no mesmo
339
+ * espaço (o `checkExportsOnMergedDeclarations`, `checker.ts:30401`), em cada uma. */
340
+ mixedExport: (node: BaseNode, name: string) => Diagnostic;
341
+ };
260
342
  circularTypeAlias: (node: BaseNode, name: string) => Diagnostic;
261
343
  circularTypeAnnotation: (node: BaseNode, name: string) => Diagnostic;
262
344
  excessArgument: (node: BaseNode, expected: number, got: number) => Diagnostic;
@@ -346,6 +428,43 @@ declare const diag: {
346
428
  * lugar do `{1}`. */
347
429
  constraintViolation: (node: BaseNode, actual: Schema, bound: Schema) => Diagnostic;
348
430
  unsupported: (node: BaseNode, what: string) => Diagnostic;
431
+ /**
432
+ * O nome usado antes da declaração dele, com o texto de cada mecanismo do tsc 3.9.10. O
433
+ * conceito é um só (D2), e o nó é o USO.
434
+ */
435
+ usedBeforeDeclaration: {
436
+ /** TS2448: a variável de escopo de bloco (o `checkResolvedBlockScopedVariable`,
437
+ * `checker.ts:2259`), com a declaração na informação relacionada (TS2728). */
438
+ blockScoped: (node: BaseNode, name: string, declaration: BaseNode) => Diagnostic;
439
+ /** TS2372: o default de um parâmetro cita o próprio parâmetro (`checker.ts:2009`). */
440
+ parameterSelf: (node: BaseNode, parameter: string) => Diagnostic;
441
+ /** TS2373: o default de um parâmetro cita um declarado depois dele (`checker.ts:2013`). */
442
+ parameterAfter: (node: BaseNode, parameter: string, name: string) => Diagnostic;
443
+ };
444
+ /** TS2454: a leitura de uma variável que, por algum caminho, ainda não recebeu valor. */
445
+ usedBeforeAssigned: (node: BaseNode, name: string) => Diagnostic;
446
+ /** O namespace (D83), com o texto do tsc em cada um. */
447
+ namespace: {
448
+ /** TS2503: o primeiro segmento de um nome qualificado não é namespace nenhum. O
449
+ * código é o do nome que não existe, como o TS2304. */
450
+ notFound: (node: BaseNode, name: string) => Diagnostic;
451
+ /** TS2694: o namespace não exporta o membro, no segmento do membro. */
452
+ noExportedMember: (node: BaseNode, namespace: string, member: string) => Diagnostic;
453
+ /** TS2708: um namespace só de tipos numa posição de valor — o par do TS2693. */
454
+ asValue: (node: BaseNode, name: string) => Diagnostic;
455
+ /** TS1235: a declaração fora do topo e de outro namespace, no primeiro token. */
456
+ misplaced: (node: BaseNode) => Diagnostic;
457
+ };
458
+ /** O contexto ambiente (`declare namespace`) só declara — o `checkAmbientInitializer` e o
459
+ * `checkGrammarStatementInAmbientContext` do tsc, no nó de lá. */
460
+ ambient: {
461
+ /** TS1039: o inicializador que o contexto ambiente não aceita, nele. */
462
+ initializer: (node: BaseNode) => Diagnostic;
463
+ /** TS1254: o `const` sem anotação com um inicializador que não é literal, nele. */
464
+ constInitializer: (node: BaseNode) => Diagnostic;
465
+ /** TS1036: o statement que não é declaração, uma vez por bloco, no primeiro token. */
466
+ statement: (node: BaseNode) => Diagnostic;
467
+ };
349
468
  /**
350
469
  * Argumento de tipo explícito com aridade errada. Assinatura **sem** type params
351
470
  * declarados conta como `expected: 0` — é o que o tsc faz quando
@@ -370,7 +489,7 @@ declare const diag: {
370
489
  * a resposta é sempre não (D9 — o piso é `const`). Mensagem no texto do TS2588 /
371
490
  * TS2632 (import). Ver `mutation.ts`.
372
491
  */
373
- assignToConst: (node: BaseNode, name: string, kind: "const" | "import") => Diagnostic;
492
+ assignToConst: (node: BaseNode, name: string, kind: "const" | "import" | "not-a-variable") => Diagnostic;
374
493
  /**
375
494
  * As chaves de um `for…in` não cabem no alvo dele (`let n: number; for (n in o)`). É a
376
495
  * relação que falha — o tipo das chaves contra o tipo declarado do alvo —, e por isso
@@ -379,6 +498,10 @@ declare const diag: {
379
498
  forInTarget: (node: BaseNode) => Diagnostic;
380
499
  /** `for ([a] in o)` — o alvo de um `for…in` é uma chave, não se desestrutura. TS2491. */
381
500
  forInDestructuring: (node: BaseNode) => Diagnostic;
501
+ /** `for (k in n)` com `n` que não é objeto, `any` nem type param — o TS2407 do
502
+ * `checkForInStatement` do tsc (`checker.ts:32148`), no que se percorre, com o tipo sem o
503
+ * nulo. */
504
+ forInNotObject: (node: BaseNode, type: Schema) => Diagnostic;
382
505
  /**
383
506
  * Escrita por um ÍNDICE readonly — `readonly T[]` ou `{ readonly [k: string]: V }`. É
384
507
  * a outra metade do modificador: a relação (TC29) diz quem pode ser ATRIBUÍDO a quem;
@@ -418,6 +541,29 @@ declare const diag: {
418
541
  * entre tipos incompatíveis. Espelha TS2365.
419
542
  */
420
543
  operatorNotApplicable: (node: BaseNode, op: string, left: Schema, right: Schema) => Diagnostic;
544
+ /**
545
+ * TS2678: o `case` de um `switch` que não é comparável ao discriminante, no `case` — o
546
+ * `checkTypeComparableTo` do `checkSwitchStatement` do tsc (`checker.ts:32977`). Os tipos
547
+ * chegam como a comparação os viu: alargados até a base, a menos que os dois sejam
548
+ * literais. O tsc elabora a relação num objeto (TS2741, TS2740); aqui a mensagem é a do
549
+ * TS2678, e o código é o contrato (D2).
550
+ */
551
+ notComparable: (node: BaseNode, source: Schema, target: Schema) => Diagnostic;
552
+ /**
553
+ * TS2774: a condição de um `if` ou de um `?:` é uma função que nunca é falsy, e o ramo
554
+ * verdadeiro não a usa — o `checkTestingKnownTruthyCallableType` do tsc
555
+ * (`checker.ts:31963`), na condição.
556
+ */
557
+ uncalledFunctionCheck: (node: BaseNode) => Diagnostic;
558
+ /**
559
+ * TS2367: uma igualdade entre tipos sem sobreposição, cujo resultado já é sabido — o
560
+ * `tryGiveBetterPrimaryError` do tsc (`checker.ts`, no `reportOperatorError`): `'false'`
561
+ * para `===`/`==`, `'true'` para `!==`/`!=`. Os tipos chegam como a mensagem os mostra
562
+ * (as bases, quando os literais também não se relacionam). Com `missingAwait`, os dois
563
+ * lados se relacionariam desembrulhando o `Promise`, e a informação relacionada é o
564
+ * TS2773 (o `errorAndMaybeSuggestAwait`).
565
+ */
566
+ noOverlap: (node: BaseNode, op: string, left: Schema, right: Schema, missingAwait: boolean) => Diagnostic;
421
567
  /**
422
568
  * `"x" + n` — o `+` não converte para texto (Proposal 009).
423
569
  *
@@ -507,7 +653,8 @@ interface CheckResult {
507
653
  * forma de scheme. Publicado porque QUEM CONSULTA precisa dele: `discover`
508
654
  * (completions, navegação de membro) só expande um `apply` se receber este
509
655
  * catálogo. Sem publicar, cada consumidor re-derivaria a união — e derivações
510
- * paralelas divergem.
656
+ * paralelas divergem. Num programa sem alias é o catálogo do `Env`, o mesmo objeto em
657
+ * toda checagem, e congelado (D87).
511
658
  */
512
659
  readonly schemes: Schemes;
513
660
  /**
@@ -621,6 +768,15 @@ declare const FUNCTION_KINDS: readonly ["ArrowFunctionExpression", "FunctionExpr
621
768
  * nó proibido por `compiled` — via `nodeViolation`, a **fonte única** de gating
622
769
  * compartilhada com o interpret e o codegen. É o que `fromCapability` monta (+ o
623
770
  * host allowlist). Garante que os 3 consumidores concordam por construção.
771
+ *
772
+ * Cada nó vai com o pai: é ele que separa o `export` de um membro de namespace
773
+ * (a visibilidade, como o modificador do tsc) do `export` de módulo do teto
774
+ * (capability CP1).
775
+ *
776
+ * O profile diz o que um lugar da aplicação pode EXECUTAR, e o corpo de um namespace que não
777
+ * vira código não executa: o nó do namespace é gateado, e o corpo dele não
778
+ * (`bodyDoesNotRun`). Os guards de autoria de tipo, abaixo, julgam o texto escrito e descem
779
+ * nele.
624
780
  */
625
781
  declare function capabilityNodes(compiled: CompiledProfile, severity?: Severity): Guard;
626
782
  /**
@@ -919,4 +1075,4 @@ declare function anchorDiagnostics<A>(root: object, diagnostics: readonly Diagno
919
1075
  */
920
1076
  declare function spanOf(text: string, loc: SourceLocation | null | undefined): Span | undefined;
921
1077
 
922
- export { type AnchorDiagnosticsOptions, type AnchoredDiagnostic, type Anchors, BINARY_OP, BINARY_OPS, type BinaryOpCategory, type BinaryOpSpec, type BindingMap, type CheckOptions, type CheckResult, type CheckerErrorCode, Completion, type Diagnostic, type DiagnosticCode, type DiagnosticData, type DiagnosticKind, type DiagnosticRelatedInformation, type DiagnosticSink, type Env, type EnvOptions, FUNCTION_KINDS, type Guard, type GuardContext, LOGICAL_OPS, type LogicalOpSpec, type LowerValueOptions, type MissingProperty, type Nominals, ObjectSchema, type Occurrence, type OpResult, type Profile, type ReferenceSymbol, Schema, Schemes, type Scope, type Severity, type Shorthand, type TypeOverlay, type TypeRefSite, TypeScheme, UNARY_OPS, type UnaryOpSpec, type UnusedOptions, VarSchema, anchorDiagnostics, annotate, annotateReturn, asExpression, binaryOpsProducing, calleeAllowlist, capabilityNodes, check, childScope, collectBindings, collectMutations, collectReferences, collectUnused, componentProps, componentPropsOf, contextualTypeAt, createAnchors, createEnv, createSink, diag, diagnosticsAt, extractModuleType, fromCapability, guard, guardsFromCompiled, lookup, lowerValue, makeDiagnostic, maxArgs, maxCallNesting, maxDepth, maxFunctionNesting, maxNestingOf, maxNodes, memberCompletions, memberDepth, opResultSchema, resolveNamed, resolveScheme, resultType, rootScope, sameSymbol, scopeAt, scopeCompletions, spanOf, typeAt, unaryOpsProducing, visibleNames };
1078
+ export { type AnchorDiagnosticsOptions, type AnchoredDiagnostic, type Anchors, BINARY_OP, BINARY_OPS, type BinaryOpCategory, type BinaryOpSpec, type BindingMap, type CheckOptions, type CheckResult, type CheckerErrorCode, Completion, type Diagnostic, type DiagnosticCode, type DiagnosticData, type DiagnosticKind, type DiagnosticRelatedInformation, type DiagnosticSink, type Env, type EnvOptions, FUNCTION_KINDS, type Guard, type GuardContext, LOGICAL_OPS, type LogicalOpSpec, type LowerValueOptions, type MissingProperty, type Nominals, ObjectSchema, type Occurrence, type OpResult, type Profile, type ReferenceSymbol, Schema, Schemes, type Scope, type Severity, type Shorthand, type TypeOverlay, type TypeRefSite, TypeScheme, UNARY_OPS, type UnaryOpSpec, type UnusedOptions, VarSchema, anchorDiagnostics, annotate, annotateReturn, asExpression, binaryOpsProducing, calleeAllowlist, capabilityNodes, check, childScope, collectBindings, collectMutations, collectReferences, collectUnused, componentProps, componentPropsOf, contextualTypeAt, createAnchors, createEnv, createSink, diag, diagnosticsAt, extractModuleType, fromCapability, guard, guardsFromCompiled, lookup, lowerValue, makeDiagnostic, maxArgs, maxCallNesting, maxDepth, maxFunctionNesting, maxNestingOf, maxNodes, memberCompletions, memberDepth, opResultSchema, resolveNamed, resolveScheme, resolvesToEnvironment, resultType, rootScope, sameSymbol, scopeAt, scopeCompletions, spanOf, typeAt, unaryOpsProducing, visibleNames };
package/dist/index.d.ts CHANGED
@@ -1,12 +1,52 @@
1
1
  import { VarSchema, Schema, Schemes, TypeScheme, ObjectSchema, Completion } from './types/index.js';
2
- export { AnySchema, ApplySchema, ArraySchema, Bindings, DEFAULT_TYPE_LIMITS, Discovery, ElementFlag, FnSchema, GuardSig, INSTANTIATION_COUNT_LIMIT, INSTANTIATION_DEPTH_LIMIT, Incompatibility, IncompatibilityKind, IndexSchema, Instantiation, InstantiationLimitError, KeyofSchema, LiteralSchema, MappedSchema, OverloadSchema, Param, PathSegment, Prop, ScalarSchema, TYPE_EVAL_DEPTH_LIMIT, TupleSchema, TypeEvalLimitError, TypeEvalLimits, TypeForm, TypePosition, UnionSchema, UnionTooComplexError, UnknownSchema, VarCandidates, WriteKey, apparentType, asLiteralOrigin, baseLiteralType, bindTypeParams, comparable, configureTypeLimits, contravariantInference, covariantInference, discover, equals, erasedSignature, expand1, flagAt, format, formatTypeArgs, formatTypeDiff, freeVars, groundVars, inferFromCandidates, inferredTypes, instantiate, instantiateInContextOf, instantiateLoose, isMissingType, isNumericLiteralName, isObjectOrArrayLiteral, isScheme, isSerializable, isVariadicTuple, join, joinAll, missingType, normalizeUnion, ownProp, readonlyMember, renameTypeParams, resetInstantiationCount, resetTypeLimits, resolveConditional, resolveOp, resolveTypeOp, restIndex, restTypeAtPosition, s, sampleValue, silentNever, substitute, subtype, typeAtPosition, typeDiff, typeFeatures, typeLimits, typeNeedsParens, typeParamArity, unify, version, widen, widenInferred, widenLiteral, widenOrigin, widenType, withUndefined, withoutUndefined } from './types/index.js';
3
- import { Scope as Scope$1, BaseNode, Node, types, SourceLocation, Expression } from '@tslite/ast';
2
+ export { AnySchema, ApplySchema, ArraySchema, Bindings, Candidates, DEFAULT_TYPE_LIMITS, Discovery, ElementFlag, FnSchema, GuardSig, INSTANTIATION_COUNT_LIMIT, INSTANTIATION_DEPTH_LIMIT, Incompatibility, IncompatibilityKind, IndexSchema, InferencePriority, Instantiation, InstantiationLimitError, KeyofSchema, LiteralSchema, MappedSchema, OverloadSchema, Param, PathSegment, Prop, ScalarSchema, TYPE_EVAL_DEPTH_LIMIT, TupleSchema, TypeEvalLimitError, TypeEvalLimits, TypeForm, TypePosition, UnionSchema, UnionTooComplexError, UnknownSchema, VarCandidates, WriteKey, apparentType, asLiteralOrigin, baseLiteralType, bindTypeParams, comparable, configureTypeLimits, contravariantInference, covariantInference, createInferences, discover, equals, erasedSignature, expand1, flagAt, format, formatTypeArgs, formatTypeDiff, freeVars, groundVars, inferFromCandidates, inferTypes, inferredBindings, inferredTypes, instantiateInContextOf, instantiateLoose, isMissingType, isNumericLiteralName, isObjectOrArrayLiteral, isScheme, isSerializable, isVariadicTuple, join, joinAll, missingType, normalizeUnion, ownProp, readonlyMember, renameTypeParams, resetInstantiationCount, resetTypeLimits, resolveConditional, resolveOp, resolveTypeOp, restIndex, restTypeAtPosition, s, sampleValue, silentNever, substitute, subtype, typeAtPosition, typeDiff, typeFeatures, typeLimits, typeNameOf, typeNeedsParens, typeParamArity, version, widen, widenInferred, widenLiteral, widenOrigin, widenType, withUndefined, withoutUndefined } from './types/index.js';
3
+ import { BaseNode, Scope as Scope$1, Node, types, SourceLocation, Expression } from '@tslite/ast';
4
4
  import { CapabilityProfile, CompiledProfile } from '@tslite/capability';
5
5
  import { Span } from '@tslite/language-service';
6
6
 
7
7
  /** As declarações de tipo nominal: o nome e os type params, em ordem. */
8
8
  type Nominals = Readonly<Record<string, readonly VarSchema[]>>;
9
9
 
10
+ /** O que uma declaração de namespace declara com um nome. */
11
+ interface NamespaceMember {
12
+ /** Visível de fora: tem `export`, ou está num contexto ambiente que exporta tudo. */
13
+ readonly exported: boolean;
14
+ /** O nome, onde o diagnóstico sobre a declaração pousa; `null` num membro do ambiente,
15
+ * que não tem texto. */
16
+ readonly id: BaseNode | null;
17
+ /** A chave do tipo no catálogo, quando não é o nome qualificado (`path.nome`): a de um
18
+ * tipo que outra declaração do mesmo namespace também declara (checker D88). */
19
+ readonly key?: string;
20
+ }
21
+ /** Uma declaração de namespace — um bloco. `namespace A.B { … }` são duas: o `A` e o `B`. */
22
+ interface NamespaceDeclaration {
23
+ /** O `TSModuleDeclaration`; `null` num namespace do ambiente, que vem das chaves do
24
+ * catálogo e não de texto. */
25
+ readonly node: BaseNode | null;
26
+ /** O caminho qualificado (`app.router`). */
27
+ readonly path: string;
28
+ /** A declaração de fora, ou `null` no topo. */
29
+ readonly parent: NamespaceDeclaration | null;
30
+ /** No contexto ambiente (`declare namespace`, e o que está dentro dele). */
31
+ readonly ambient: boolean;
32
+ /** O bloco tem valores (o `Instantiated` do `getModuleInstanceState`). */
33
+ readonly instantiated: boolean;
34
+ /** Os tipos que ESTE bloco declara (os locais do tsc, com o sentido de tipo). Um tipo e
35
+ * um namespace com o mesmo nome convivem, por isso as duas tabelas. */
36
+ readonly types: ReadonlyMap<string, NamespaceMember>;
37
+ /** Os namespaces que ESTE bloco declara. */
38
+ readonly namespaces: ReadonlyMap<string, NamespaceMember>;
39
+ }
40
+ /** As declarações de namespace de uma raiz — o programa, ou o ambiente. */
41
+ interface Namespaces {
42
+ /** As declarações de cada namespace, pelo caminho, na ordem. */
43
+ readonly byPath: ReadonlyMap<string, readonly NamespaceDeclaration[]>;
44
+ /** A declaração de cada nó `TSModuleDeclaration` que está num lugar permitido. */
45
+ readonly byNode: WeakMap<BaseNode, NamespaceDeclaration>;
46
+ /** Os aliases escritos num namespace: o nó da declaração do alias → a do namespace. */
47
+ readonly aliasOwner: WeakMap<BaseNode, NamespaceDeclaration>;
48
+ }
49
+
10
50
  /**
11
51
  * Um nível de escopo léxico (nome → `Schema`), sobre o `Scope<T>` genérico do
12
52
  * `ast` — a mesma cadeia que o `behavior` usa, com o payload do eixo de tipos.
@@ -25,8 +65,21 @@ declare const lookup: (scope: Scope, name: string) => Schema | undefined;
25
65
  * estreitado por guard (`narrow`, D13), e a que termina em `#` é o tipo
26
66
  * DECLARADO de um binding mutável (D63) — nenhum identificador tem esses
27
67
  * caracteres.
68
+ *
69
+ * Um binding do programa tem a chave do SÍMBOLO (`nome@id`, D87), e dois símbolos com
70
+ * o mesmo nome são chaves diferentes: o nome visível é o de fora do `@`, e vale o mais
71
+ * interno. A cadeia vem de dentro para fora, e um refinamento de um símbolo só existe
72
+ * onde o nome dele não está sombreado — então a primeira chave de cada nome é a que ele
73
+ * denota ali.
28
74
  */
29
75
  declare const visibleNames: (scope: Scope) => Map<string, Schema>;
76
+ /**
77
+ * `name`, visto de `scope`, denota um nome do AMBIENTE (a DI, a lib) — e não um símbolo
78
+ * do programa? É o que o tsc responde olhando a declaração do símbolo resolvido (o
79
+ * `defaultLibrary` do `classifier2020`). A primeira ligação do nome, de dentro para fora, é
80
+ * a que ele denota ali (ver `visibleNames`); `false` quando nada o liga.
81
+ */
82
+ declare function resolvesToEnvironment(scope: Scope, name: string): boolean;
30
83
  /**
31
84
  * O ambiente injetado pela aplicação — a fronteira de tipos do sistema.
32
85
  * `scope` é a raiz da DI; `types` resolve tipos nomeados em anotações.
@@ -91,6 +144,14 @@ interface Env {
91
144
  * mesmo tipo, e a aridade é cobrada como a de um alias.
92
145
  */
93
146
  readonly nominals?: Nominals;
147
+ /**
148
+ * Os namespaces do ambiente (D83), lidos das chaves de `types` e `schemes`: um tipo com o
149
+ * nome qualificado (`state.Config`) é o membro `Config` do namespace `state`, como num
150
+ * `.d.ts` com `declare namespace state { … }`. Os corpos já chegam com os nomes
151
+ * resolvidos a partir do namespace de cada um — um `Config` no corpo de `state.Result` é
152
+ * o `state.Config` —, sem o host reescrever nada.
153
+ */
154
+ readonly namespaces?: Namespaces;
94
155
  }
95
156
  /**
96
157
  * O que um `Env` tem além das variáveis. Cada campo espelha o de {@link Env}, e
@@ -139,7 +200,7 @@ declare const resolveNamed: (env: Env, name: string) => Schema | undefined;
139
200
  declare const resolveScheme: (env: Env, name: string) => TypeScheme | undefined;
140
201
 
141
202
  type Severity = "error" | "warning";
142
- type DiagnosticCode = "not-assignable" | "unknown-name" | "not-callable" | "no-such-member" | "not-object" | "possibly-nullish" | "unknown-value" | "const-needs-init" | "cannot-redeclare" | "circular-type-alias" | "circular-type-annotation" | "unknown-module" | "not-a-schema" | "type-as-value" | "asserter-needs-name" | "shadows-schema" | "missing-argument" | "excess-argument" | "excess-property" | "spread-argument" | "required-after-optional" | "not-iterable" | "not-spreadable" | "overwritten-property" | "implicit-any" | "props-mismatch" | "no-matching-overload" | "constraint-violation" | "wrong-type-argument-count" | "unsupported" | "unused-name" | "assign-to-const" | "for-in-destructuring" | "readonly-write" | "cast-unsound" | "unprovable-value" | "not-arithmetic-operand" | "operator-not-applicable" | "implicit-coercion" | "node-not-allowed" | "name-not-allowed" | "type-feature-not-allowed" | "any-not-allowed" | "narrowing-cast-not-allowed" | "too-deep" | "too-complex-union" | "too-large" | "wrong-result-type";
203
+ type DiagnosticCode = "not-assignable" | "unknown-name" | "not-callable" | "no-such-member" | "not-object" | "possibly-nullish" | "unknown-value" | "const-needs-init" | "cannot-redeclare" | "circular-type-alias" | "circular-type-annotation" | "unknown-module" | "not-a-schema" | "type-as-value" | "asserter-needs-name" | "shadows-schema" | "missing-argument" | "excess-argument" | "excess-property" | "spread-argument" | "required-after-optional" | "not-iterable" | "not-spreadable" | "overwritten-property" | "implicit-any" | "props-mismatch" | "no-matching-overload" | "constraint-violation" | "wrong-type-argument-count" | "unsupported" | "unused-name" | "assign-to-const" | "for-in-destructuring" | "for-in-not-object" | "readonly-write" | "cast-unsound" | "unprovable-value" | "not-arithmetic-operand" | "operator-not-applicable" | "no-overlap" | "uncalled-function-check" | "not-comparable" | "misplaced-namespace" | "ambient-initializer" | "ambient-statement" | "used-before-assigned" | "used-before-declaration" | "implicit-coercion" | "node-not-allowed" | "name-not-allowed" | "type-feature-not-allowed" | "any-not-allowed" | "narrowing-cast-not-allowed" | "too-deep" | "too-complex-union" | "too-large" | "wrong-result-type";
143
204
  /**
144
205
  * A **classe** do diagnóstico — espelha a divisão de passes do `tsc` (que nós
145
206
  * fundimos num walk só): `semantic` é o que o **binder** do tsc pega (validade do
@@ -256,7 +317,28 @@ declare const diag: {
256
317
  asserterNeedsName: (node: BaseNode, asserter: string) => Diagnostic;
257
318
  shadowsSchema: (node: BaseNode, name: string) => Diagnostic;
258
319
  unknownModule: (node: BaseNode, source: string) => Diagnostic;
259
- cannotRedeclare: (node: BaseNode, name: string) => Diagnostic;
320
+ /**
321
+ * O mesmo nome declarado de novo onde não pode, com o texto de cada mecanismo do tsc
322
+ * 3.9.10. O conceito é um só, o do `cannot-redeclare` (D2), e o nó é o NOME de cada
323
+ * declaração acusada.
324
+ */
325
+ redeclaration: {
326
+ /** TS2451: o que está na tabela é variável de escopo de bloco (o `declareSymbol` do
327
+ * binder, `binder.ts:476`), em cada declaração. */
328
+ blockScoped: (node: BaseNode, name: string) => Diagnostic;
329
+ /** TS2300: o que está na tabela é outra coisa (um parâmetro, um import, um alias, um
330
+ * namespace), em cada declaração. */
331
+ duplicate: (node: BaseNode, name: string) => Diagnostic;
332
+ /** TS2440: o import fundido com uma declaração local que ocupa o significado do alvo
333
+ * dele (o `checkAliasSymbol`, `checker.ts:34279`), no especificador. */
334
+ importConflict: (node: BaseNode, name: string) => Diagnostic;
335
+ /** TS2492: o bloco do `catch` declara de novo o binding dele (o `checkTryStatement`,
336
+ * `checker.ts:33056`), na declaração do bloco. */
337
+ catchClause: (node: BaseNode, name: string) => Diagnostic;
338
+ /** TS2395: declarações do mesmo símbolo, umas exportadas e outras locais, no mesmo
339
+ * espaço (o `checkExportsOnMergedDeclarations`, `checker.ts:30401`), em cada uma. */
340
+ mixedExport: (node: BaseNode, name: string) => Diagnostic;
341
+ };
260
342
  circularTypeAlias: (node: BaseNode, name: string) => Diagnostic;
261
343
  circularTypeAnnotation: (node: BaseNode, name: string) => Diagnostic;
262
344
  excessArgument: (node: BaseNode, expected: number, got: number) => Diagnostic;
@@ -346,6 +428,43 @@ declare const diag: {
346
428
  * lugar do `{1}`. */
347
429
  constraintViolation: (node: BaseNode, actual: Schema, bound: Schema) => Diagnostic;
348
430
  unsupported: (node: BaseNode, what: string) => Diagnostic;
431
+ /**
432
+ * O nome usado antes da declaração dele, com o texto de cada mecanismo do tsc 3.9.10. O
433
+ * conceito é um só (D2), e o nó é o USO.
434
+ */
435
+ usedBeforeDeclaration: {
436
+ /** TS2448: a variável de escopo de bloco (o `checkResolvedBlockScopedVariable`,
437
+ * `checker.ts:2259`), com a declaração na informação relacionada (TS2728). */
438
+ blockScoped: (node: BaseNode, name: string, declaration: BaseNode) => Diagnostic;
439
+ /** TS2372: o default de um parâmetro cita o próprio parâmetro (`checker.ts:2009`). */
440
+ parameterSelf: (node: BaseNode, parameter: string) => Diagnostic;
441
+ /** TS2373: o default de um parâmetro cita um declarado depois dele (`checker.ts:2013`). */
442
+ parameterAfter: (node: BaseNode, parameter: string, name: string) => Diagnostic;
443
+ };
444
+ /** TS2454: a leitura de uma variável que, por algum caminho, ainda não recebeu valor. */
445
+ usedBeforeAssigned: (node: BaseNode, name: string) => Diagnostic;
446
+ /** O namespace (D83), com o texto do tsc em cada um. */
447
+ namespace: {
448
+ /** TS2503: o primeiro segmento de um nome qualificado não é namespace nenhum. O
449
+ * código é o do nome que não existe, como o TS2304. */
450
+ notFound: (node: BaseNode, name: string) => Diagnostic;
451
+ /** TS2694: o namespace não exporta o membro, no segmento do membro. */
452
+ noExportedMember: (node: BaseNode, namespace: string, member: string) => Diagnostic;
453
+ /** TS2708: um namespace só de tipos numa posição de valor — o par do TS2693. */
454
+ asValue: (node: BaseNode, name: string) => Diagnostic;
455
+ /** TS1235: a declaração fora do topo e de outro namespace, no primeiro token. */
456
+ misplaced: (node: BaseNode) => Diagnostic;
457
+ };
458
+ /** O contexto ambiente (`declare namespace`) só declara — o `checkAmbientInitializer` e o
459
+ * `checkGrammarStatementInAmbientContext` do tsc, no nó de lá. */
460
+ ambient: {
461
+ /** TS1039: o inicializador que o contexto ambiente não aceita, nele. */
462
+ initializer: (node: BaseNode) => Diagnostic;
463
+ /** TS1254: o `const` sem anotação com um inicializador que não é literal, nele. */
464
+ constInitializer: (node: BaseNode) => Diagnostic;
465
+ /** TS1036: o statement que não é declaração, uma vez por bloco, no primeiro token. */
466
+ statement: (node: BaseNode) => Diagnostic;
467
+ };
349
468
  /**
350
469
  * Argumento de tipo explícito com aridade errada. Assinatura **sem** type params
351
470
  * declarados conta como `expected: 0` — é o que o tsc faz quando
@@ -370,7 +489,7 @@ declare const diag: {
370
489
  * a resposta é sempre não (D9 — o piso é `const`). Mensagem no texto do TS2588 /
371
490
  * TS2632 (import). Ver `mutation.ts`.
372
491
  */
373
- assignToConst: (node: BaseNode, name: string, kind: "const" | "import") => Diagnostic;
492
+ assignToConst: (node: BaseNode, name: string, kind: "const" | "import" | "not-a-variable") => Diagnostic;
374
493
  /**
375
494
  * As chaves de um `for…in` não cabem no alvo dele (`let n: number; for (n in o)`). É a
376
495
  * relação que falha — o tipo das chaves contra o tipo declarado do alvo —, e por isso
@@ -379,6 +498,10 @@ declare const diag: {
379
498
  forInTarget: (node: BaseNode) => Diagnostic;
380
499
  /** `for ([a] in o)` — o alvo de um `for…in` é uma chave, não se desestrutura. TS2491. */
381
500
  forInDestructuring: (node: BaseNode) => Diagnostic;
501
+ /** `for (k in n)` com `n` que não é objeto, `any` nem type param — o TS2407 do
502
+ * `checkForInStatement` do tsc (`checker.ts:32148`), no que se percorre, com o tipo sem o
503
+ * nulo. */
504
+ forInNotObject: (node: BaseNode, type: Schema) => Diagnostic;
382
505
  /**
383
506
  * Escrita por um ÍNDICE readonly — `readonly T[]` ou `{ readonly [k: string]: V }`. É
384
507
  * a outra metade do modificador: a relação (TC29) diz quem pode ser ATRIBUÍDO a quem;
@@ -418,6 +541,29 @@ declare const diag: {
418
541
  * entre tipos incompatíveis. Espelha TS2365.
419
542
  */
420
543
  operatorNotApplicable: (node: BaseNode, op: string, left: Schema, right: Schema) => Diagnostic;
544
+ /**
545
+ * TS2678: o `case` de um `switch` que não é comparável ao discriminante, no `case` — o
546
+ * `checkTypeComparableTo` do `checkSwitchStatement` do tsc (`checker.ts:32977`). Os tipos
547
+ * chegam como a comparação os viu: alargados até a base, a menos que os dois sejam
548
+ * literais. O tsc elabora a relação num objeto (TS2741, TS2740); aqui a mensagem é a do
549
+ * TS2678, e o código é o contrato (D2).
550
+ */
551
+ notComparable: (node: BaseNode, source: Schema, target: Schema) => Diagnostic;
552
+ /**
553
+ * TS2774: a condição de um `if` ou de um `?:` é uma função que nunca é falsy, e o ramo
554
+ * verdadeiro não a usa — o `checkTestingKnownTruthyCallableType` do tsc
555
+ * (`checker.ts:31963`), na condição.
556
+ */
557
+ uncalledFunctionCheck: (node: BaseNode) => Diagnostic;
558
+ /**
559
+ * TS2367: uma igualdade entre tipos sem sobreposição, cujo resultado já é sabido — o
560
+ * `tryGiveBetterPrimaryError` do tsc (`checker.ts`, no `reportOperatorError`): `'false'`
561
+ * para `===`/`==`, `'true'` para `!==`/`!=`. Os tipos chegam como a mensagem os mostra
562
+ * (as bases, quando os literais também não se relacionam). Com `missingAwait`, os dois
563
+ * lados se relacionariam desembrulhando o `Promise`, e a informação relacionada é o
564
+ * TS2773 (o `errorAndMaybeSuggestAwait`).
565
+ */
566
+ noOverlap: (node: BaseNode, op: string, left: Schema, right: Schema, missingAwait: boolean) => Diagnostic;
421
567
  /**
422
568
  * `"x" + n` — o `+` não converte para texto (Proposal 009).
423
569
  *
@@ -507,7 +653,8 @@ interface CheckResult {
507
653
  * forma de scheme. Publicado porque QUEM CONSULTA precisa dele: `discover`
508
654
  * (completions, navegação de membro) só expande um `apply` se receber este
509
655
  * catálogo. Sem publicar, cada consumidor re-derivaria a união — e derivações
510
- * paralelas divergem.
656
+ * paralelas divergem. Num programa sem alias é o catálogo do `Env`, o mesmo objeto em
657
+ * toda checagem, e congelado (D87).
511
658
  */
512
659
  readonly schemes: Schemes;
513
660
  /**
@@ -621,6 +768,15 @@ declare const FUNCTION_KINDS: readonly ["ArrowFunctionExpression", "FunctionExpr
621
768
  * nó proibido por `compiled` — via `nodeViolation`, a **fonte única** de gating
622
769
  * compartilhada com o interpret e o codegen. É o que `fromCapability` monta (+ o
623
770
  * host allowlist). Garante que os 3 consumidores concordam por construção.
771
+ *
772
+ * Cada nó vai com o pai: é ele que separa o `export` de um membro de namespace
773
+ * (a visibilidade, como o modificador do tsc) do `export` de módulo do teto
774
+ * (capability CP1).
775
+ *
776
+ * O profile diz o que um lugar da aplicação pode EXECUTAR, e o corpo de um namespace que não
777
+ * vira código não executa: o nó do namespace é gateado, e o corpo dele não
778
+ * (`bodyDoesNotRun`). Os guards de autoria de tipo, abaixo, julgam o texto escrito e descem
779
+ * nele.
624
780
  */
625
781
  declare function capabilityNodes(compiled: CompiledProfile, severity?: Severity): Guard;
626
782
  /**
@@ -919,4 +1075,4 @@ declare function anchorDiagnostics<A>(root: object, diagnostics: readonly Diagno
919
1075
  */
920
1076
  declare function spanOf(text: string, loc: SourceLocation | null | undefined): Span | undefined;
921
1077
 
922
- export { type AnchorDiagnosticsOptions, type AnchoredDiagnostic, type Anchors, BINARY_OP, BINARY_OPS, type BinaryOpCategory, type BinaryOpSpec, type BindingMap, type CheckOptions, type CheckResult, type CheckerErrorCode, Completion, type Diagnostic, type DiagnosticCode, type DiagnosticData, type DiagnosticKind, type DiagnosticRelatedInformation, type DiagnosticSink, type Env, type EnvOptions, FUNCTION_KINDS, type Guard, type GuardContext, LOGICAL_OPS, type LogicalOpSpec, type LowerValueOptions, type MissingProperty, type Nominals, ObjectSchema, type Occurrence, type OpResult, type Profile, type ReferenceSymbol, Schema, Schemes, type Scope, type Severity, type Shorthand, type TypeOverlay, type TypeRefSite, TypeScheme, UNARY_OPS, type UnaryOpSpec, type UnusedOptions, VarSchema, anchorDiagnostics, annotate, annotateReturn, asExpression, binaryOpsProducing, calleeAllowlist, capabilityNodes, check, childScope, collectBindings, collectMutations, collectReferences, collectUnused, componentProps, componentPropsOf, contextualTypeAt, createAnchors, createEnv, createSink, diag, diagnosticsAt, extractModuleType, fromCapability, guard, guardsFromCompiled, lookup, lowerValue, makeDiagnostic, maxArgs, maxCallNesting, maxDepth, maxFunctionNesting, maxNestingOf, maxNodes, memberCompletions, memberDepth, opResultSchema, resolveNamed, resolveScheme, resultType, rootScope, sameSymbol, scopeAt, scopeCompletions, spanOf, typeAt, unaryOpsProducing, visibleNames };
1078
+ export { type AnchorDiagnosticsOptions, type AnchoredDiagnostic, type Anchors, BINARY_OP, BINARY_OPS, type BinaryOpCategory, type BinaryOpSpec, type BindingMap, type CheckOptions, type CheckResult, type CheckerErrorCode, Completion, type Diagnostic, type DiagnosticCode, type DiagnosticData, type DiagnosticKind, type DiagnosticRelatedInformation, type DiagnosticSink, type Env, type EnvOptions, FUNCTION_KINDS, type Guard, type GuardContext, LOGICAL_OPS, type LogicalOpSpec, type LowerValueOptions, type MissingProperty, type Nominals, ObjectSchema, type Occurrence, type OpResult, type Profile, type ReferenceSymbol, Schema, Schemes, type Scope, type Severity, type Shorthand, type TypeOverlay, type TypeRefSite, TypeScheme, UNARY_OPS, type UnaryOpSpec, type UnusedOptions, VarSchema, anchorDiagnostics, annotate, annotateReturn, asExpression, binaryOpsProducing, calleeAllowlist, capabilityNodes, check, childScope, collectBindings, collectMutations, collectReferences, collectUnused, componentProps, componentPropsOf, contextualTypeAt, createAnchors, createEnv, createSink, diag, diagnosticsAt, extractModuleType, fromCapability, guard, guardsFromCompiled, lookup, lowerValue, makeDiagnostic, maxArgs, maxCallNesting, maxDepth, maxFunctionNesting, maxNestingOf, maxNodes, memberCompletions, memberDepth, opResultSchema, resolveNamed, resolveScheme, resolvesToEnvironment, resultType, rootScope, sameSymbol, scopeAt, scopeCompletions, spanOf, typeAt, unaryOpsProducing, visibleNames };