fhirpath-ts 0.2.1 → 0.2.2
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/README.md +12 -5
- package/dist/analyzer/analyze-dto.d.ts.map +1 -1
- package/dist/analyzer/analyze-dto.js +14 -8
- package/dist/analyzer/analyze-dto.js.map +1 -1
- package/dist/analyzer/analyze.d.ts +23 -12
- package/dist/analyzer/analyze.d.ts.map +1 -1
- package/dist/analyzer/analyze.js +138 -46
- package/dist/analyzer/analyze.js.map +1 -1
- package/dist/analyzer/declarations.d.ts +6 -0
- package/dist/analyzer/declarations.d.ts.map +1 -1
- package/dist/analyzer/declarations.js +7 -0
- package/dist/analyzer/declarations.js.map +1 -1
- package/dist/analyzer/expression-policy.d.ts +88 -14
- package/dist/analyzer/expression-policy.d.ts.map +1 -1
- package/dist/analyzer/expression-policy.js +296 -41
- package/dist/analyzer/expression-policy.js.map +1 -1
- package/dist/analyzer/operator-rules.d.ts.map +1 -1
- package/dist/analyzer/operator-rules.js +7 -6
- package/dist/analyzer/operator-rules.js.map +1 -1
- package/dist/analyzer/signatures.d.ts +49 -0
- package/dist/analyzer/signatures.d.ts.map +1 -1
- package/dist/analyzer/signatures.js +76 -31
- package/dist/analyzer/signatures.js.map +1 -1
- package/dist/analyzer/source-options.d.ts +17 -0
- package/dist/analyzer/source-options.d.ts.map +1 -0
- package/dist/analyzer/source-options.js +3 -0
- package/dist/analyzer/source-options.js.map +1 -0
- package/dist/api/dto.d.ts +9 -4
- package/dist/api/dto.d.ts.map +1 -1
- package/dist/api/dto.js +14 -3
- package/dist/api/dto.js.map +1 -1
- package/dist/api/strict.d.ts.map +1 -1
- package/dist/api/strict.js +8 -3
- package/dist/api/strict.js.map +1 -1
- package/dist/cli/dto-check.d.ts +9 -0
- package/dist/cli/dto-check.d.ts.map +1 -1
- package/dist/cli/dto-check.js +49 -6
- package/dist/cli/dto-check.js.map +1 -1
- package/dist/cli/fhirpath-check.js +161 -31
- package/dist/cli/fhirpath-check.js.map +1 -1
- package/dist/eslint/index.d.ts.map +1 -1
- package/dist/eslint/index.js +13 -8
- package/dist/eslint/index.js.map +1 -1
- package/dist/sites/index.d.ts +31 -2
- package/dist/sites/index.d.ts.map +1 -1
- package/dist/sites/index.js +351 -30
- package/dist/sites/index.js.map +1 -1
- package/dist/typed/infer.d.ts +2 -0
- package/dist/typed/infer.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/analyzer/analyze-dto.ts +19 -9
- package/src/analyzer/analyze.ts +186 -54
- package/src/analyzer/declarations.ts +12 -0
- package/src/analyzer/expression-policy.ts +423 -47
- package/src/analyzer/operator-rules.ts +7 -6
- package/src/analyzer/signatures.ts +100 -36
- package/src/analyzer/source-options.ts +19 -0
- package/src/api/dto.ts +35 -9
- package/src/api/strict.ts +8 -3
- package/src/cli/dto-check.ts +56 -6
- package/src/cli/fhirpath-check.ts +180 -34
- package/src/eslint/index.ts +15 -12
- package/src/sites/index.ts +428 -40
- package/src/typed/infer.ts +2 -2
package/dist/api/dto.js
CHANGED
|
@@ -5,7 +5,7 @@ import { functions as builtinFunctions } from "../functions/registry.js";
|
|
|
5
5
|
import { canonicalFocusType, typesOverlap } from "../values/type-compat.js";
|
|
6
6
|
import { toSubjects } from "./bundle.js";
|
|
7
7
|
import { columnSignature, criteriaSignature } from "./column-signature.js";
|
|
8
|
-
/** The
|
|
8
|
+
/** The normalized options a `defineDto()` base was created with. */
|
|
9
9
|
const bases = new WeakMap();
|
|
10
10
|
/**
|
|
11
11
|
* Columns by the class that declared them. A field decorator runs before its
|
|
@@ -33,9 +33,19 @@ export function defineDto(fhirType, options = {}) {
|
|
|
33
33
|
// A readable name for project()/registration errors; a subclass replaces it.
|
|
34
34
|
Object.defineProperty(base, 'name', { value: `${fhirType}Dto` });
|
|
35
35
|
Object.defineProperty(base, 'fhirType', { value: fhirType, enumerable: true });
|
|
36
|
-
|
|
36
|
+
const callerEnv = options.callerEnv;
|
|
37
|
+
const callerEnvIsNames = isCallerEnvNames(callerEnv);
|
|
38
|
+
bases.set(base, {
|
|
39
|
+
fhirType,
|
|
40
|
+
vars: options.vars,
|
|
41
|
+
callerEnvNames: callerEnvIsNames ? callerEnv : Object.keys(callerEnv ?? {}),
|
|
42
|
+
callerEnvTypes: callerEnvIsNames ? undefined : callerEnv,
|
|
43
|
+
});
|
|
37
44
|
return base;
|
|
38
45
|
}
|
|
46
|
+
function isCallerEnvNames(callerEnv) {
|
|
47
|
+
return Array.isArray(callerEnv);
|
|
48
|
+
}
|
|
39
49
|
/** Records one column against the class being collected, and does nothing at any other time. */
|
|
40
50
|
function recordColumn(instance, name, spec) {
|
|
41
51
|
const cls = instance.constructor;
|
|
@@ -160,7 +170,8 @@ export function dtoDefinition(cls) {
|
|
|
160
170
|
columns,
|
|
161
171
|
env: declaredEnv(cls),
|
|
162
172
|
vars: base.vars,
|
|
163
|
-
|
|
173
|
+
callerEnvNames: base.callerEnvNames,
|
|
174
|
+
callerEnvTypes: base.callerEnvTypes,
|
|
164
175
|
};
|
|
165
176
|
definitions.set(cls, definition);
|
|
166
177
|
return definition;
|
package/dist/api/dto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dto.js","sourceRoot":"","sources":["../../src/api/dto.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA;AAEhC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAGxE,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE3E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"dto.js","sourceRoot":"","sources":["../../src/api/dto.ts"],"names":[],"mappings":"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"}
|
package/dist/api/strict.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strict.d.ts","sourceRoot":"","sources":["../../src/api/strict.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAAiB,eAAe,EAAE,MAAM,cAAc,CAAA;AAOlE,oFAAoF;AACpF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"strict.d.ts","sourceRoot":"","sources":["../../src/api/strict.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAAiB,eAAe,EAAE,MAAM,cAAc,CAAA;AAOlE,oFAAoF;AACpF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,CAqDnH"}
|
package/dist/api/strict.js
CHANGED
|
@@ -23,13 +23,17 @@ export function assertStrictExpression(ast, root, options) {
|
|
|
23
23
|
findings.push(...details.diagnostics
|
|
24
24
|
.filter(diagnostic => diagnostic.severity === 'error')
|
|
25
25
|
.map(diagnostic => ({ diagnostic, subject: `vars.${name}` })));
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
// A declaration overrides the inferred types and cardinality, but ordering
|
|
27
|
+
// always comes from the analyzed expression — declarations cannot state it.
|
|
28
|
+
variables[name] = {
|
|
29
|
+
...(declaration === undefined
|
|
28
30
|
? {
|
|
29
31
|
...(details.result.types !== undefined && { types: details.result.types }),
|
|
30
32
|
...(details.result.single !== undefined && { single: details.result.single }),
|
|
31
33
|
}
|
|
32
|
-
: analyzerVariable(declaration)
|
|
34
|
+
: analyzerVariable(declaration)),
|
|
35
|
+
...(details.result.ordered !== undefined && { ordered: details.result.ordered }),
|
|
36
|
+
};
|
|
33
37
|
}
|
|
34
38
|
for (const [name, declaration] of Object.entries(declarations)) {
|
|
35
39
|
variables[name] ??= analyzerVariable(declaration);
|
|
@@ -52,6 +56,7 @@ function runtimeRoot(root, model) {
|
|
|
52
56
|
return {
|
|
53
57
|
types: variable.types,
|
|
54
58
|
single: variable.single,
|
|
59
|
+
ordered: variable.ordered,
|
|
55
60
|
exactTypes: variable.exactTypes,
|
|
56
61
|
};
|
|
57
62
|
}
|
package/dist/api/strict.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strict.js","sourceRoot":"","sources":["../../src/api/strict.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,yBAAyB,GAE1B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,gBAAgB,EAEhB,mCAAmC,EACnC,uBAAuB,GACxB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAGhD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAS3C,oFAAoF;AACpF,MAAM,UAAU,sBAAsB,CAAC,GAAY,EAAE,IAAkB,EAAE,OAAoC;IAC3G,IAAI,OAAO,EAAE,MAAM,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAM;IACR,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;IAC3B,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC7C,MAAM,SAAS,GAA0C,mCAAmC,CAC1F,OAAO,CAAC,GAAG,EACX,OAAO,CAAC,QAAQ,EAChB,KAAK,CACN,CAAA;IACD,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACvD,MAAM,QAAQ,GAAoB,EAAE,CAAA;IAEpC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,SAAS,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;YACpE,SAAQ;QACV,CAAC;QAED,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,CAAA;QAC1G,QAAQ,CAAC,IAAI,CACX,GAAG,OAAO,CAAC,WAAW;aACnB,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,OAAO,CAAC;aACrD,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC,CAChE,CAAA;QACD,SAAS,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"strict.js","sourceRoot":"","sources":["../../src/api/strict.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/dto-check.d.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
+
import type { AnalyzeOptions } from '../analyzer/analyze.ts';
|
|
1
2
|
import { type DtoDiagnostic } from '../analyzer/analyze-dto.ts';
|
|
2
3
|
/** Where DTO classes live unless `--dtos` says otherwise. */
|
|
3
4
|
export declare const DEFAULT_DTO_GLOB = "**/*.dto.ts";
|
|
5
|
+
/**
|
|
6
|
+
* A checker configuration problem, not an expression finding: the imported
|
|
7
|
+
* modules constructed engines whose contexts cannot be merged.
|
|
8
|
+
*/
|
|
9
|
+
export declare class EngineMergeError extends Error {
|
|
10
|
+
}
|
|
4
11
|
/** One finding, with the DTO and file it belongs to and the expression that produced it. */
|
|
5
12
|
export interface DtoFinding extends DtoDiagnostic {
|
|
6
13
|
/** The DTO class name. */
|
|
@@ -19,6 +26,8 @@ export interface DtoCheckResult {
|
|
|
19
26
|
file: string;
|
|
20
27
|
dto: string;
|
|
21
28
|
}[];
|
|
29
|
+
/** Merged engine declarations that make ordinary source-site checks complete. */
|
|
30
|
+
sourceOptions: AnalyzeOptions | undefined;
|
|
22
31
|
}
|
|
23
32
|
/** Imports matching modules and checks their exported DTOs against recorded engines. */
|
|
24
33
|
export declare function checkDtoModules(patterns: readonly string[], cwd: string): Promise<DtoCheckResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dto-check.d.ts","sourceRoot":"","sources":["../../src/cli/dto-check.ts"],"names":[],"mappings":"AAWA,OAAO,EAAoC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"dto-check.d.ts","sourceRoot":"","sources":["../../src/cli/dto-check.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAoC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAMjG,6DAA6D;AAC7D,eAAO,MAAM,gBAAgB,gBAAgB,CAAA;AAE7C;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;CAAG;AAI9C,4FAA4F;AAC5F,MAAM,WAAW,UAAW,SAAQ,aAAa;IAC/C,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,UAAU,EAAE,CAAA;IACtB,iFAAiF;IACjF,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAA;IACf,qCAAqC;IACrC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACrC,iFAAiF;IACjF,aAAa,EAAE,cAAc,GAAG,SAAS,CAAA;CAC1C;AAED,wFAAwF;AACxF,wBAAsB,eAAe,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA2BvG"}
|
package/dist/cli/dto-check.js
CHANGED
|
@@ -17,10 +17,18 @@ import { register } from 'node:module';
|
|
|
17
17
|
import { relative } from 'node:path';
|
|
18
18
|
import { pathToFileURL } from 'node:url';
|
|
19
19
|
import { analyzeDto } from "../analyzer/analyze-dto.js";
|
|
20
|
+
import { analyzerEnvironmentVariables, analyzerVariables } from "../analyzer/declarations.js";
|
|
21
|
+
import { SOURCE_VARIABLE_DEFAULTS } from "../analyzer/source-options.js";
|
|
20
22
|
import { isDtoClass } from "../api/dto.js";
|
|
21
23
|
import { recordEngines } from "../api/engine.js";
|
|
22
24
|
/** Where DTO classes live unless `--dtos` says otherwise. */
|
|
23
25
|
export const DEFAULT_DTO_GLOB = '**/*.dto.ts';
|
|
26
|
+
/**
|
|
27
|
+
* A checker configuration problem, not an expression finding: the imported
|
|
28
|
+
* modules constructed engines whose contexts cannot be merged.
|
|
29
|
+
*/
|
|
30
|
+
export class EngineMergeError extends Error {
|
|
31
|
+
}
|
|
24
32
|
const IGNORED = ['**/node_modules/**', '**/dist/**', '**/build/**', '**/coverage/**'];
|
|
25
33
|
/** Imports matching modules and checks their exported DTOs against recorded engines. */
|
|
26
34
|
export async function checkDtoModules(patterns, cwd) {
|
|
@@ -39,8 +47,15 @@ export async function checkDtoModules(patterns, cwd) {
|
|
|
39
47
|
}
|
|
40
48
|
}
|
|
41
49
|
const engines = recorded();
|
|
50
|
+
assertSharedModel(engines);
|
|
42
51
|
const findings = dtos.flatMap(({ file, dto, cls }) => analyzeFor(cls, engines).map(finding => ({ ...finding, dto, file })));
|
|
43
|
-
return {
|
|
52
|
+
return {
|
|
53
|
+
findings,
|
|
54
|
+
files,
|
|
55
|
+
engines: engines.length,
|
|
56
|
+
dtos: dtos.map(({ file, dto }) => ({ file, dto })),
|
|
57
|
+
sourceOptions: engines.length === 0 ? undefined : optionsForSource(merged(engines)),
|
|
58
|
+
};
|
|
44
59
|
}
|
|
45
60
|
/**
|
|
46
61
|
* A DTO against the engine that registered it, or — when no engine claims it, as
|
|
@@ -53,18 +68,32 @@ export async function checkDtoModules(patterns, cwd) {
|
|
|
53
68
|
function analyzeFor(dto, engines) {
|
|
54
69
|
const owner = engines.find(engine => engine.dtos.includes(dto));
|
|
55
70
|
if (owner !== undefined) {
|
|
56
|
-
return analyzeDto(dto, { engine: owner });
|
|
71
|
+
return analyzeDto(dto, { engine: owner, reportUnchecked: true });
|
|
57
72
|
}
|
|
58
73
|
if (engines.length === 0) {
|
|
59
|
-
return analyzeDto(dto);
|
|
74
|
+
return analyzeDto(dto, { reportUnchecked: true });
|
|
75
|
+
}
|
|
76
|
+
return analyzeDto(dto, { engine: merged(engines), reportUnchecked: true });
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Merged analysis (unregistered DTOs, `sourceOptions`) uses the first engine's
|
|
80
|
+
* model for every declaration, so all engines must share one `ModelProvider`
|
|
81
|
+
* instance — a declaration analyzed under another engine's type hierarchy would
|
|
82
|
+
* produce wrong element, subtype, and Reference-target findings. Identity is
|
|
83
|
+
* the only equivalence a `ModelProvider` offers, so two wrappers around the
|
|
84
|
+
* same logical model are still rejected; check such projects in separate runs.
|
|
85
|
+
*/
|
|
86
|
+
function assertSharedModel(engines) {
|
|
87
|
+
const model = engines[0]?.defaults.model;
|
|
88
|
+
if (engines.some(engine => engine.defaults.model !== model)) {
|
|
89
|
+
throw new EngineMergeError('the imported modules constructed engines with different ModelProvider instances; ' +
|
|
90
|
+
'source and unregistered-DTO analysis needs one shared model — check projects with different models in separate runs');
|
|
60
91
|
}
|
|
61
|
-
return analyzeDto(dto, { engine: merged(engines) });
|
|
62
92
|
}
|
|
63
93
|
/**
|
|
64
94
|
* Every engine's context as one: the union of their registered functions,
|
|
65
95
|
* environment declarations, and vars. The first engine's `model` stands for
|
|
66
|
-
* all of them —
|
|
67
|
-
* no engine that could pick another.
|
|
96
|
+
* all of them — `assertSharedModel` has proven they all carry the same one.
|
|
68
97
|
*/
|
|
69
98
|
function merged(engines) {
|
|
70
99
|
return {
|
|
@@ -78,4 +107,18 @@ function merged(engines) {
|
|
|
78
107
|
},
|
|
79
108
|
};
|
|
80
109
|
}
|
|
110
|
+
/** Turn merged engine runtime defaults into the declarations accepted by analyzeSite(). */
|
|
111
|
+
function optionsForSource(engine) {
|
|
112
|
+
const { model, functions, env, envTypes, vars, varTypes } = engine.defaults;
|
|
113
|
+
const options = {
|
|
114
|
+
...(model !== undefined && { model }),
|
|
115
|
+
...(functions !== undefined && { functions }),
|
|
116
|
+
variables: analyzerEnvironmentVariables(env, envTypes, model),
|
|
117
|
+
[SOURCE_VARIABLE_DEFAULTS]: {
|
|
118
|
+
values: Object.keys(analyzerVariables(vars, undefined)),
|
|
119
|
+
declarations: analyzerVariables(undefined, varTypes),
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
return options;
|
|
123
|
+
}
|
|
81
124
|
//# sourceMappingURL=dto-check.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dto-check.js","sourceRoot":"","sources":["../../src/cli/dto-check.ts"],"names":[],"mappings":";;;;;;;;AAAA;;;;GAIG;AACH,+KAA+K;AAC/K,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"dto-check.js","sourceRoot":"","sources":["../../src/cli/dto-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,23 +5,29 @@
|
|
|
5
5
|
* exit status. Use `--no-import` for source only and `--dtos` to change the DTO
|
|
6
6
|
* module glob.
|
|
7
7
|
*
|
|
8
|
-
* Usage: fhirpath-check [--dtos <glob>]... [--no-import] <file...>
|
|
8
|
+
* Usage: fhirpath-check [--dtos <glob>]... [--no-import] [--local-imports] [--strict] <file...>
|
|
9
9
|
*/
|
|
10
10
|
/* v8 ignore file -- covered end-to-end as a subprocess in fhirpath-check.test.ts */
|
|
11
11
|
import { readFileSync } from 'node:fs';
|
|
12
|
+
import { dirname, resolve } from 'node:path';
|
|
12
13
|
import ts from 'typescript';
|
|
13
14
|
import { analyzeSite } from "../analyzer/analyze.js";
|
|
14
15
|
import { r4Model } from "../r4/index.js";
|
|
15
|
-
import {
|
|
16
|
-
import { checkDtoModules, DEFAULT_DTO_GLOB } from "./dto-check.js";
|
|
17
|
-
const findExpressionSites = createSiteFinder(ts);
|
|
16
|
+
import { createSiteScanner } from "../sites/index.js";
|
|
17
|
+
import { checkDtoModules, DEFAULT_DTO_GLOB, EngineMergeError, } from "./dto-check.js";
|
|
18
18
|
function parseArgs(argv) {
|
|
19
|
-
const args = { files: [], dtoGlobs: [], imports: true };
|
|
19
|
+
const args = { files: [], dtoGlobs: [], imports: true, localImports: false, strict: false };
|
|
20
20
|
for (let index = 0; index < argv.length; index++) {
|
|
21
21
|
const arg = argv[index];
|
|
22
22
|
if (arg === '--no-import') {
|
|
23
23
|
args.imports = false;
|
|
24
24
|
}
|
|
25
|
+
else if (arg === '--local-imports') {
|
|
26
|
+
args.localImports = true;
|
|
27
|
+
}
|
|
28
|
+
else if (arg === '--strict') {
|
|
29
|
+
args.strict = true;
|
|
30
|
+
}
|
|
25
31
|
else if (arg === '--dtos') {
|
|
26
32
|
const glob = argv[++index];
|
|
27
33
|
if (glob === undefined) {
|
|
@@ -38,15 +44,79 @@ function parseArgs(argv) {
|
|
|
38
44
|
}
|
|
39
45
|
const args = parseArgs(process.argv.slice(2));
|
|
40
46
|
if (args.files.length === 0 && !args.imports) {
|
|
41
|
-
console.error('usage: fhirpath-check [--dtos <glob>]... [--no-import] <file...>');
|
|
47
|
+
console.error('usage: fhirpath-check [--dtos <glob>]... [--no-import] [--local-imports] [--strict] <file...>');
|
|
42
48
|
process.exit(2);
|
|
43
49
|
}
|
|
50
|
+
const dtoGlobs = args.dtoGlobs.length > 0 ? args.dtoGlobs : [DEFAULT_DTO_GLOB];
|
|
51
|
+
/** A type-aware program lets the site finder follow imported and aliased engine receivers. */
|
|
52
|
+
function sourceProgram(files, configPath) {
|
|
53
|
+
const defaults = {
|
|
54
|
+
allowJs: true,
|
|
55
|
+
skipLibCheck: true,
|
|
56
|
+
target: ts.ScriptTarget.Latest,
|
|
57
|
+
};
|
|
58
|
+
const nodeNext = {
|
|
59
|
+
module: ts.ModuleKind.NodeNext,
|
|
60
|
+
moduleResolution: ts.ModuleResolutionKind.NodeNext,
|
|
61
|
+
};
|
|
62
|
+
let options = { ...defaults, ...nodeNext };
|
|
63
|
+
if (configPath !== undefined) {
|
|
64
|
+
const config = ts.readConfigFile(configPath, ts.sys.readFile);
|
|
65
|
+
if (config.error === undefined) {
|
|
66
|
+
// Resolve `extends`/`paths` from the config's own directory, and layer
|
|
67
|
+
// the declared options over the defaults instead of replacing them —
|
|
68
|
+
// a `strict`-only tsconfig must not lose the module resolution the
|
|
69
|
+
// checker needs to follow package exports. The NodeNext pair applies
|
|
70
|
+
// only when the config declares neither half, so an explicit
|
|
71
|
+
// module/moduleResolution keeps TypeScript's own pairing rules.
|
|
72
|
+
const declared = ts.parseJsonConfigFileContent(config.config, ts.sys, dirname(configPath), undefined, configPath).options;
|
|
73
|
+
const resolution = declared.module === undefined && declared.moduleResolution === undefined ? nodeNext : {};
|
|
74
|
+
options = { ...defaults, ...resolution, ...declared };
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return ts.createProgram({ rootNames: files.map(file => resolve(file)), options });
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* One semantic scanner per tsconfig project. A monorepo command may select
|
|
81
|
+
* files from packages whose aliases and module settings differ, so each file
|
|
82
|
+
* starts its config search in its own directory. Files sharing a config share
|
|
83
|
+
* one Program and TypeChecker.
|
|
84
|
+
*/
|
|
85
|
+
function sourceScanners(files) {
|
|
86
|
+
const filesByConfig = new Map();
|
|
87
|
+
for (const file of files) {
|
|
88
|
+
const absolute = resolve(file);
|
|
89
|
+
const configPath = ts.findConfigFile(dirname(absolute), ts.sys.fileExists);
|
|
90
|
+
const grouped = filesByConfig.get(configPath);
|
|
91
|
+
if (grouped === undefined) {
|
|
92
|
+
filesByConfig.set(configPath, [absolute]);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
grouped.push(absolute);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const scannersByFile = new Map();
|
|
99
|
+
for (const [configPath, groupedFiles] of filesByConfig) {
|
|
100
|
+
const scanner = createSiteScanner(ts, sourceProgram(groupedFiles, configPath));
|
|
101
|
+
for (const file of groupedFiles) {
|
|
102
|
+
scannersByFile.set(file, scanner);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return scannersByFile;
|
|
106
|
+
}
|
|
107
|
+
const syntaxScanner = createSiteScanner(ts);
|
|
108
|
+
let semanticScannersByFile = new Map();
|
|
44
109
|
let failures = 0;
|
|
110
|
+
let warnings = 0;
|
|
45
111
|
function report(location, diagnostic) {
|
|
46
|
-
|
|
112
|
+
const severity = args.strict && diagnostic.severity === 'warning' ? 'error' : diagnostic.severity;
|
|
113
|
+
if (severity === 'error') {
|
|
47
114
|
failures += 1;
|
|
48
115
|
}
|
|
49
|
-
|
|
116
|
+
else {
|
|
117
|
+
warnings += 1;
|
|
118
|
+
}
|
|
119
|
+
const prefix = severity === 'warning' ? 'warning:' : '';
|
|
50
120
|
console.error(`${location} [${prefix}${diagnostic.code}] ${diagnostic.message}`);
|
|
51
121
|
}
|
|
52
122
|
/**
|
|
@@ -60,32 +130,81 @@ function positionIn(site, span) {
|
|
|
60
130
|
const column = span.line === 1 ? site.column + span.column - 1 : span.column;
|
|
61
131
|
return `${line}:${column}`;
|
|
62
132
|
}
|
|
63
|
-
/**
|
|
64
|
-
const
|
|
65
|
-
function
|
|
66
|
-
const cached =
|
|
133
|
+
/** Source scans cached so each file is read once. */
|
|
134
|
+
const scansByFile = new Map();
|
|
135
|
+
function scanOf(file) {
|
|
136
|
+
const cached = scansByFile.get(file);
|
|
67
137
|
if (cached !== undefined) {
|
|
68
138
|
return cached;
|
|
69
139
|
}
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
140
|
+
const absolute = resolve(file);
|
|
141
|
+
const scanner = semanticScannersByFile.get(absolute) ?? syntaxScanner;
|
|
142
|
+
const scan = scanner(readFileSync(file, 'utf8'), absolute, {
|
|
143
|
+
...(args.localImports && { localImports: true }),
|
|
144
|
+
});
|
|
145
|
+
scansByFile.set(file, scan);
|
|
146
|
+
return scan;
|
|
73
147
|
}
|
|
74
|
-
|
|
148
|
+
function sitesOf(file) {
|
|
149
|
+
return scanOf(file).sites;
|
|
150
|
+
}
|
|
151
|
+
// Extract source sites before executing project modules. Analysis waits until
|
|
152
|
+
// after the import pass so those sites can use the engines' real environment.
|
|
75
153
|
for (const file of args.files) {
|
|
76
|
-
let sites;
|
|
77
154
|
try {
|
|
78
|
-
|
|
155
|
+
scanOf(file);
|
|
79
156
|
}
|
|
80
157
|
catch (error) {
|
|
81
158
|
console.error(`fhirpath-check: cannot read ${file}: ${error instanceof Error ? error.message : String(error)}`);
|
|
82
159
|
process.exit(2);
|
|
83
160
|
}
|
|
161
|
+
}
|
|
162
|
+
const unresolvedFiles = args.localImports
|
|
163
|
+
? []
|
|
164
|
+
: args.files.filter(file => scanOf(file).skipped.some(skipped => skipped.reason === 'unrecognized-receiver'));
|
|
165
|
+
if (unresolvedFiles.length > 0) {
|
|
166
|
+
// Pay the Program/TypeChecker cost only when the syntax-only pass found a
|
|
167
|
+
// receiver it could not prove. Most source files need no compiler graph.
|
|
168
|
+
semanticScannersByFile = sourceScanners(unresolvedFiles);
|
|
169
|
+
scansByFile.clear();
|
|
170
|
+
for (const file of args.files) {
|
|
171
|
+
scanOf(file);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
let dtoResult;
|
|
175
|
+
if (args.imports) {
|
|
176
|
+
try {
|
|
177
|
+
dtoResult = await checkDtoModules(dtoGlobs, process.cwd());
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
if (error instanceof EngineMergeError) {
|
|
181
|
+
console.error(`fhirpath-check: ${error.message}`);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
console.error(`fhirpath-check: cannot import DTO modules (${dtoGlobs.join(', ')}): ${error instanceof Error ? error.message : String(error)}`);
|
|
185
|
+
}
|
|
186
|
+
process.exit(2);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// Check source literals first.
|
|
190
|
+
for (const file of args.files) {
|
|
191
|
+
const sites = sitesOf(file);
|
|
84
192
|
for (const site of sites) {
|
|
85
|
-
for (const diagnostic of analyzeSite(site, {
|
|
193
|
+
for (const diagnostic of analyzeSite(site, {
|
|
194
|
+
model: r4Model,
|
|
195
|
+
...dtoResult?.sourceOptions,
|
|
196
|
+
reportUnchecked: true,
|
|
197
|
+
})) {
|
|
86
198
|
report(`${file}:${positionIn(site, diagnostic.span)}`, diagnostic);
|
|
87
199
|
}
|
|
88
200
|
}
|
|
201
|
+
for (const skipped of scanOf(file).skipped) {
|
|
202
|
+
report(`${file}:${skipped.line}:${skipped.column}`, {
|
|
203
|
+
severity: 'warning',
|
|
204
|
+
code: 'skipped',
|
|
205
|
+
message: skipped.message,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
89
208
|
}
|
|
90
209
|
/**
|
|
91
210
|
* A DTO finding's position in source: `analyzeDto` knows the member and the
|
|
@@ -109,24 +228,35 @@ function locate(finding) {
|
|
|
109
228
|
: `${finding.file}:${positionIn(site, finding.span)} ${member}`;
|
|
110
229
|
}
|
|
111
230
|
// --- 2. the project's DTO modules, imported ---
|
|
112
|
-
if (
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
231
|
+
if (dtoResult !== undefined) {
|
|
232
|
+
const result = dtoResult;
|
|
233
|
+
for (const file of result.files) {
|
|
234
|
+
let scan;
|
|
235
|
+
try {
|
|
236
|
+
scan = scanOf(file);
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
for (const dto of scan.dtoDeclarations) {
|
|
242
|
+
if (!dto.loadable) {
|
|
243
|
+
report(`${file}:${dto.line}:${dto.column}`, {
|
|
244
|
+
severity: 'warning',
|
|
245
|
+
code: 'unloaded-dto',
|
|
246
|
+
message: `DTO ${dto.name} is module-local and was not loaded for full analysis; export it or an extending class`,
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
}
|
|
121
250
|
}
|
|
122
251
|
for (const finding of result.findings) {
|
|
123
252
|
// With no engine in reach, an unresolved column call is unresolvable rather
|
|
124
253
|
// than wrong, so it is reported without failing the run.
|
|
125
254
|
const unresolvable = result.engines === 0 && finding.code === 'unknown-function';
|
|
126
|
-
|
|
255
|
+
const reported = unresolvable ? { ...finding, severity: 'warning' } : finding;
|
|
256
|
+
report(locate(finding), reported);
|
|
127
257
|
}
|
|
128
258
|
if (result.files.length === 0) {
|
|
129
|
-
console.error(`fhirpath-check: no DTO modules matched ${
|
|
259
|
+
console.error(`fhirpath-check: no DTO modules matched ${dtoGlobs.join(', ')} — DTOs live in *.dto.ts, or pass --dtos <glob>`);
|
|
130
260
|
}
|
|
131
261
|
else if (result.dtos.length === 0) {
|
|
132
262
|
console.error(`fhirpath-check: ${result.files.length} DTO module(s) matched but export no DTO class`);
|
|
@@ -145,5 +275,5 @@ if (failures > 0) {
|
|
|
145
275
|
console.error(`fhirpath-check: ${failures} problem(s) found`);
|
|
146
276
|
process.exit(1);
|
|
147
277
|
}
|
|
148
|
-
console.log('fhirpath-check: no problems found');
|
|
278
|
+
console.log(warnings > 0 ? `fhirpath-check: ${warnings} warning(s), no errors found` : 'fhirpath-check: no problems found');
|
|
149
279
|
//# sourceMappingURL=fhirpath-check.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fhirpath-check.js","sourceRoot":"","sources":["../../src/cli/fhirpath-check.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AACH,oFAAoF;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"fhirpath-check.js","sourceRoot":"","sources":["../../src/cli/fhirpath-check.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AACH,oFAAoF;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAE5C,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAA8D,MAAM,mBAAmB,CAAA;AACjH,OAAO,EACL,eAAe,EACf,gBAAgB,EAGhB,gBAAgB,GACjB,MAAM,gBAAgB,CAAA;AAUvB,SAAS,SAAS,CAAC,IAAuB;IACxC,MAAM,IAAI,GAAS,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IACjG,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAE,CAAA;QACxB,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACtB,CAAC;aAAM,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;YACrC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QAC1B,CAAC;aAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QACpB,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAA;YAC1B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;gBACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,+FAA+F,CAAC,CAAA;IAC9G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAA;AAE9E,8FAA8F;AAC9F,SAAS,aAAa,CAAC,KAAwB,EAAE,UAA8B;IAC7E,MAAM,QAAQ,GAAuB;QACnC,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM;KAC/B,CAAA;IACD,MAAM,QAAQ,GAAuB;QACnC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ;QAC9B,gBAAgB,EAAE,EAAE,CAAC,oBAAoB,CAAC,QAAQ;KACnD,CAAA;IACD,IAAI,OAAO,GAAuB,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAA;IAC9D,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC7D,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,uEAAuE;YACvE,qEAAqE;YACrE,mEAAmE;YACnE,qEAAqE;YACrE,6DAA6D;YAC7D,gEAAgE;YAChE,MAAM,QAAQ,GAAG,EAAE,CAAC,0BAA0B,CAC5C,MAAM,CAAC,MAAM,EACb,EAAE,CAAC,GAAG,EACN,OAAO,CAAC,UAAU,CAAC,EACnB,SAAS,EACT,UAAU,CACX,CAAC,OAAO,CAAA;YACT,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;YAC3G,OAAO,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,UAAU,EAAE,GAAG,QAAQ,EAAE,CAAA;QACvD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;AACnF,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,KAAwB;IAC9C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAgC,CAAA;IAC7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QAC9B,MAAM,UAAU,GAAG,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAC1E,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAC7C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC3C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,EAAuB,CAAA;IACrD,KAAK,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,aAAa,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG,iBAAiB,CAAC,EAAE,EAAE,aAAa,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAA;QAC9E,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;IACD,OAAO,cAAc,CAAA;AACvB,CAAC;AAED,MAAM,aAAa,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAA;AAC3C,IAAI,sBAAsB,GAAqC,IAAI,GAAG,EAAE,CAAA;AAExE,IAAI,QAAQ,GAAG,CAAC,CAAA;AAChB,IAAI,QAAQ,GAAG,CAAC,CAAA;AAEhB,SAAS,MAAM,CAAC,QAAgB,EAAE,UAA4E;IAC5G,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAA;IACjG,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,QAAQ,IAAI,CAAC,CAAA;IACf,CAAC;SAAM,CAAC;QACN,QAAQ,IAAI,CAAC,CAAA;IACf,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;IACvD,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,KAAK,MAAM,GAAG,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC,CAAA;AAClF,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,IAAsC,EAAE,IAAsC;IAChG,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA;IAC5E,OAAO,GAAG,IAAI,IAAI,MAAM,EAAE,CAAA;AAC5B,CAAC;AAED,qDAAqD;AACrD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA0B,CAAA;AAErD,SAAS,MAAM,CAAC,IAAY;IAC1B,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACpC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,CAAA;IACf,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,MAAM,OAAO,GAAG,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAA;IACrE,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE;QACzD,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KACjD,CAAC,CAAA;IACF,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC3B,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAA;AAC3B,CAAC;AAED,8EAA8E;AAC9E,8EAA8E;AAC9E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,CAAA;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC/G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AACD,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY;IACvC,CAAC,CAAC,EAAE;IACJ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,uBAAuB,CAAC,CAAC,CAAA;AAC/G,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAC/B,0EAA0E;IAC1E,yEAAyE;IACzE,sBAAsB,GAAG,cAAc,CAAC,eAAe,CAAC,CAAA;IACxD,WAAW,CAAC,KAAK,EAAE,CAAA;IACnB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,CAAA;IACd,CAAC;AACH,CAAC;AAED,IAAI,SAAqC,CAAA;AACzC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,mBAAmB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QACnD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CACX,8CAA8C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAChI,CAAA;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AAED,+BAA+B;AAC/B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,IAAI,EAAE;YACzC,KAAK,EAAE,OAAO;YACd,GAAG,SAAS,EAAE,aAAa;YAC3B,eAAe,EAAE,IAAI;SACtB,CAAC,EAAE,CAAC;YACH,MAAM,CAAC,GAAG,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;QACpE,CAAC;IACH,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE;YAClD,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,MAAM,CAAC,OAAmB;IACjC,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAA;IACjD,IAAI,IAAgC,CAAA;IACpC,IAAI,CAAC;QACH,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;IAC7F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,EAAE,CAAA;IACpC,CAAC;IACD,OAAO,IAAI,KAAK,SAAS;QACvB,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,EAAE;QAC7B,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAA;AACnE,CAAC;AAED,iDAAiD;AACjD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,SAAS,CAAA;IACxB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAoB,CAAA;QACxB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,SAAQ;QACV,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE;oBAC1C,QAAQ,EAAE,SAAS;oBACnB,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,OAAO,GAAG,CAAC,IAAI,wFAAwF;iBACjH,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,4EAA4E;QAC5E,yDAAyD;QACzD,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAkB,CAAA;QAChF,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,SAAkB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;QACtF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAA;IACnC,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CACX,0CAA0C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,iDAAiD,CAC/G,CAAA;IACH,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,KAAK,CAAC,MAAM,gDAAgD,CAAC,CAAA;IACvG,CAAC;SAAM,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QAChC,6EAA6E;QAC7E,uEAAuE;QACvE,OAAO,CAAC,KAAK,CACX,gHAAgH;YAC9G,4DAA4D,CAC/D,CAAA;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CACT,4BAA4B,MAAM,CAAC,IAAI,CAAC,MAAM,gBAAgB,MAAM,CAAC,KAAK,CAAC,MAAM,sBAAsB,MAAM,CAAC,OAAO,YAAY,CAClI,CAAA;IACH,CAAC;AACH,CAAC;AAED,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;IACjB,OAAO,CAAC,KAAK,CAAC,mBAAmB,QAAQ,mBAAmB,CAAC,CAAA;IAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AACD,OAAO,CAAC,GAAG,CACT,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,8BAA8B,CAAC,CAAC,CAAC,mCAAmC,CAC/G,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eslint/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eslint/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AA6XlC,QAAA,MAAM,MAAM;;;;;;;;CAKX,CAAA;AAED,eAAe,MAAM,CAAA"}
|