@1nder-labs/schemalint 1.0.1

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 (46) hide show
  1. package/LICENSE-APACHE +176 -0
  2. package/LICENSE-MIT +19 -0
  3. package/README.md +52 -0
  4. package/bin/schemalint-zod.js +6 -0
  5. package/dist/discover.d.ts +43 -0
  6. package/dist/discover.d.ts.map +1 -0
  7. package/dist/discover.js +145 -0
  8. package/dist/discover.js.map +1 -0
  9. package/dist/discover_ast.d.ts +30 -0
  10. package/dist/discover_ast.d.ts.map +1 -0
  11. package/dist/discover_ast.js +202 -0
  12. package/dist/discover_ast.js.map +1 -0
  13. package/dist/evaluate.d.ts +18 -0
  14. package/dist/evaluate.d.ts.map +1 -0
  15. package/dist/evaluate.js +112 -0
  16. package/dist/evaluate.js.map +1 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +2 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/main.d.ts +2 -0
  22. package/dist/main.d.ts.map +1 -0
  23. package/dist/main.js +3 -0
  24. package/dist/main.js.map +1 -0
  25. package/dist/server.d.ts +2 -0
  26. package/dist/server.d.ts.map +1 -0
  27. package/dist/server.js +82 -0
  28. package/dist/server.js.map +1 -0
  29. package/dist/target_emit.d.ts +12 -0
  30. package/dist/target_emit.d.ts.map +1 -0
  31. package/dist/target_emit.js +111 -0
  32. package/dist/target_emit.js.map +1 -0
  33. package/dist/target_imports.d.ts +19 -0
  34. package/dist/target_imports.d.ts.map +1 -0
  35. package/dist/target_imports.js +79 -0
  36. package/dist/target_imports.js.map +1 -0
  37. package/dist/target_resolution.d.ts +20 -0
  38. package/dist/target_resolution.d.ts.map +1 -0
  39. package/dist/target_resolution.js +174 -0
  40. package/dist/target_resolution.js.map +1 -0
  41. package/dist/targets.d.ts +5 -0
  42. package/dist/targets.d.ts.map +1 -0
  43. package/dist/targets.js +116 -0
  44. package/dist/targets.js.map +1 -0
  45. package/index.cjs +504 -0
  46. package/package.json +34 -0
@@ -0,0 +1,79 @@
1
+ export const OUTPUT_CALLS = new Set(['generateObject', 'streamObject']);
2
+ export const TOOL_CALLS = new Set(['tool', 'betaZodTool', 'zodFunction']);
3
+ export const FORMAT_CALLS = new Set(['zodTextFormat', 'zodResponseFormat']);
4
+ export function collectTargetImports(sourceFile, tsModule) {
5
+ const imports = {
6
+ outputCalls: new Set(),
7
+ toolCalls: new Set(),
8
+ formatCalls: new Set(),
9
+ outputObjects: new Set(),
10
+ aiNamespaces: new Set(),
11
+ helperNamespaces: new Set(),
12
+ };
13
+ for (const stmt of sourceFile.statements) {
14
+ if (!tsModule.isImportDeclaration(stmt))
15
+ continue;
16
+ const spec = stmt.moduleSpecifier;
17
+ if (!tsModule.isStringLiteral(spec))
18
+ continue;
19
+ const clause = stmt.importClause;
20
+ if (!clause)
21
+ continue;
22
+ const mod = spec.text;
23
+ const isAiModule = mod === 'ai';
24
+ const isOpenAiHelper = mod === 'openai/helpers/zod';
25
+ const isAnthropicHelper = mod === '@anthropic-ai/sdk/helpers/zod';
26
+ if (!isAiModule && !isOpenAiHelper && !isAnthropicHelper)
27
+ continue;
28
+ const bindings = clause.namedBindings;
29
+ if (bindings && tsModule.isNamespaceImport(bindings)) {
30
+ if (isAiModule)
31
+ imports.aiNamespaces.add(bindings.name.text);
32
+ if (isOpenAiHelper || isAnthropicHelper) {
33
+ imports.helperNamespaces.add(bindings.name.text);
34
+ }
35
+ continue;
36
+ }
37
+ if (!bindings || !tsModule.isNamedImports(bindings))
38
+ continue;
39
+ for (const element of bindings.elements) {
40
+ const importedName = element.propertyName?.text ?? element.name.text;
41
+ const localName = element.name.text;
42
+ if (isAiModule)
43
+ addAiImport(imports, importedName, localName);
44
+ if (isOpenAiHelper || isAnthropicHelper) {
45
+ addHelperImport(imports, importedName, localName);
46
+ }
47
+ }
48
+ }
49
+ return imports;
50
+ }
51
+ export function isProviderCall(ref, imports) {
52
+ if (ref.receiver) {
53
+ if (imports.aiNamespaces.has(ref.receiver)) {
54
+ return OUTPUT_CALLS.has(ref.name) || ref.name === 'tool';
55
+ }
56
+ if (imports.helperNamespaces.has(ref.receiver)) {
57
+ return FORMAT_CALLS.has(ref.name) || TOOL_CALLS.has(ref.name);
58
+ }
59
+ return ref.name === 'object' && imports.outputObjects.has(ref.receiver);
60
+ }
61
+ return (imports.outputCalls.has(ref.name) ||
62
+ imports.toolCalls.has(ref.name) ||
63
+ imports.formatCalls.has(ref.name));
64
+ }
65
+ function addAiImport(imports, importedName, localName) {
66
+ if (OUTPUT_CALLS.has(importedName))
67
+ imports.outputCalls.add(localName);
68
+ if (importedName === 'tool')
69
+ imports.toolCalls.add(localName);
70
+ if (importedName === 'Output')
71
+ imports.outputObjects.add(localName);
72
+ }
73
+ function addHelperImport(imports, importedName, localName) {
74
+ if (FORMAT_CALLS.has(importedName))
75
+ imports.formatCalls.add(localName);
76
+ if (TOOL_CALLS.has(importedName))
77
+ imports.toolCalls.add(localName);
78
+ }
79
+ //# sourceMappingURL=target_imports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target_imports.js","sourceRoot":"","sources":["../src/target_imports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type * as ts from 'typescript';
2
+ export interface TargetExpression {
3
+ name: string;
4
+ sourceFile: ts.SourceFile;
5
+ expression: ts.Expression;
6
+ }
7
+ export interface CarrierExpression {
8
+ api: string;
9
+ fn: ts.FunctionLikeDeclaration;
10
+ paramName: string;
11
+ propertyName: string;
12
+ explicitName?: string;
13
+ }
14
+ export declare function pushExpressionOrCarrier(targets: TargetExpression[], carriers: CarrierExpression[], api: string, expression: ts.Expression, sourceFile: ts.SourceFile, tsModule: typeof ts, explicitName?: string): void;
15
+ export declare function collectCarrierTargets(program: ts.Program, fileSet: ReadonlySet<string>, checker: ts.TypeChecker, tsModule: typeof ts, carriers: CarrierExpression[]): TargetExpression[];
16
+ export declare function objectExpression(expr: ts.Expression | undefined, checker: ts.TypeChecker, tsModule: typeof ts): ts.ObjectLiteralExpression | undefined;
17
+ export declare function propertyFromExpression(expr: ts.Expression | undefined, name: string, checker: ts.TypeChecker, tsModule: typeof ts): ts.Expression | undefined;
18
+ export declare function stringPropertyFromExpression(expr: ts.Expression | undefined, name: string, checker: ts.TypeChecker, tsModule: typeof ts): string | undefined;
19
+ export declare function resolveVariableDeclaration(id: ts.Identifier, checker: ts.TypeChecker, tsModule: typeof ts): ts.VariableDeclaration | undefined;
20
+ //# sourceMappingURL=target_resolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target_resolution.d.ts","sourceRoot":"","sources":["../src/target_resolution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;IAC1B,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,EAAE,CAAC,uBAAuB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,gBAAgB,EAAE,EAC3B,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,CAAC,EAAE,MAAM,GACpB,IAAI,CAaN;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,EAAE,CAAC,OAAO,EACnB,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,EAC5B,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,QAAQ,EAAE,OAAO,EAAE,EACnB,QAAQ,EAAE,iBAAiB,EAAE,GAC5B,gBAAgB,EAAE,CAiCpB;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,SAAS,EAC/B,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,QAAQ,EAAE,OAAO,EAAE,GAClB,EAAE,CAAC,uBAAuB,GAAG,SAAS,CAoBxC;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,SAAS,EAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,QAAQ,EAAE,OAAO,EAAE,GAClB,EAAE,CAAC,UAAU,GAAG,SAAS,CAqB3B;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,SAAS,EAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,QAAQ,EAAE,OAAO,EAAE,GAClB,MAAM,GAAG,SAAS,CAGpB;AAED,wBAAgB,0BAA0B,CACxC,EAAE,EAAE,EAAE,CAAC,UAAU,EACjB,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,QAAQ,EAAE,OAAO,EAAE,GAClB,EAAE,CAAC,mBAAmB,GAAG,SAAS,CAQpC"}
@@ -0,0 +1,174 @@
1
+ export function pushExpressionOrCarrier(targets, carriers, api, expression, sourceFile, tsModule, explicitName) {
2
+ const carrier = carrierExpression(api, expression, tsModule, explicitName);
3
+ if (carrier) {
4
+ carriers.push(carrier);
5
+ return;
6
+ }
7
+ targets.push(namedTarget(api, expression, sourceFile, tsModule, explicitName));
8
+ }
9
+ export function collectCarrierTargets(program, fileSet, checker, tsModule, carriers) {
10
+ if (carriers.length === 0)
11
+ return [];
12
+ const targets = [];
13
+ for (const sourceFile of program.getSourceFiles()) {
14
+ if (sourceFile.isDeclarationFile ||
15
+ sourceFile.fileName.includes('node_modules') ||
16
+ !fileSet.has(sourceFile.fileName)) {
17
+ continue;
18
+ }
19
+ function walk(node) {
20
+ if (tsModule.isCallExpression(node)) {
21
+ for (const carrier of carriers) {
22
+ const target = carrierTargetFromCall(node, sourceFile, checker, tsModule, carrier);
23
+ if (target)
24
+ targets.push(target);
25
+ }
26
+ }
27
+ tsModule.forEachChild(node, walk);
28
+ }
29
+ tsModule.forEachChild(sourceFile, walk);
30
+ }
31
+ return targets;
32
+ }
33
+ export function objectExpression(expr, checker, tsModule) {
34
+ if (!expr)
35
+ return undefined;
36
+ const unwrapped = skipParens(expr, tsModule);
37
+ if (tsModule.isObjectLiteralExpression(unwrapped))
38
+ return unwrapped;
39
+ if (tsModule.isIdentifier(unwrapped)) {
40
+ const decl = resolveVariableDeclaration(unwrapped, checker, tsModule);
41
+ if (decl?.initializer) {
42
+ return objectExpression(decl.initializer, checker, tsModule);
43
+ }
44
+ }
45
+ if (tsModule.isConditionalExpression(unwrapped)) {
46
+ return (objectExpression(unwrapped.whenTrue, checker, tsModule) ??
47
+ objectExpression(unwrapped.whenFalse, checker, tsModule));
48
+ }
49
+ return undefined;
50
+ }
51
+ export function propertyFromExpression(expr, name, checker, tsModule) {
52
+ if (!expr)
53
+ return undefined;
54
+ const unwrapped = skipParens(expr, tsModule);
55
+ if (tsModule.isObjectLiteralExpression(unwrapped)) {
56
+ return propertyFromObject(unwrapped, name, checker, tsModule);
57
+ }
58
+ if (tsModule.isIdentifier(unwrapped)) {
59
+ const decl = resolveVariableDeclaration(unwrapped, checker, tsModule);
60
+ return propertyFromExpression(decl?.initializer, name, checker, tsModule);
61
+ }
62
+ if (tsModule.isConditionalExpression(unwrapped)) {
63
+ return (propertyFromExpression(unwrapped.whenTrue, name, checker, tsModule) ??
64
+ propertyFromExpression(unwrapped.whenFalse, name, checker, tsModule));
65
+ }
66
+ return undefined;
67
+ }
68
+ export function stringPropertyFromExpression(expr, name, checker, tsModule) {
69
+ const value = propertyFromExpression(expr, name, checker, tsModule);
70
+ return stringLiteralText(value, tsModule);
71
+ }
72
+ export function resolveVariableDeclaration(id, checker, tsModule) {
73
+ const symbol = checker.getSymbolAtLocation(id);
74
+ const aliased = symbol && (symbol.flags & tsModule.SymbolFlags.Alias)
75
+ ? checker.getAliasedSymbol(symbol)
76
+ : symbol;
77
+ const decl = aliased?.valueDeclaration ?? aliased?.declarations?.[0];
78
+ return decl && tsModule.isVariableDeclaration(decl) ? decl : undefined;
79
+ }
80
+ function carrierExpression(api, expression, tsModule, explicitName) {
81
+ const expr = skipParens(expression, tsModule);
82
+ if (!tsModule.isPropertyAccessExpression(expr))
83
+ return undefined;
84
+ if (!tsModule.isIdentifier(expr.expression))
85
+ return undefined;
86
+ const paramName = expr.expression.text;
87
+ const fn = enclosingCarrierFunction(expr, paramName, tsModule);
88
+ if (!fn)
89
+ return undefined;
90
+ return {
91
+ api,
92
+ fn,
93
+ paramName,
94
+ propertyName: expr.name.text,
95
+ explicitName,
96
+ };
97
+ }
98
+ function enclosingCarrierFunction(node, paramName, tsModule) {
99
+ let current = node.parent;
100
+ while (current) {
101
+ if (tsModule.isFunctionDeclaration(current) ||
102
+ tsModule.isFunctionExpression(current) ||
103
+ tsModule.isArrowFunction(current) ||
104
+ tsModule.isMethodDeclaration(current)) {
105
+ const hasParam = current.parameters.some((param) => tsModule.isIdentifier(param.name) && param.name.text === paramName);
106
+ if (hasParam)
107
+ return current;
108
+ }
109
+ current = current.parent;
110
+ }
111
+ return undefined;
112
+ }
113
+ function carrierTargetFromCall(call, sourceFile, checker, tsModule, carrier) {
114
+ if (!sameSymbol(call.expression, carrier.fn, checker, tsModule)) {
115
+ return undefined;
116
+ }
117
+ const paramIndex = carrier.fn.parameters.findIndex((param) => tsModule.isIdentifier(param.name) && param.name.text === carrier.paramName);
118
+ if (paramIndex === -1)
119
+ return undefined;
120
+ const schema = propertyFromExpression(call.arguments[paramIndex], carrier.propertyName, checker, tsModule);
121
+ if (!schema)
122
+ return undefined;
123
+ const name = carrier.explicitName ??
124
+ stringPropertyFromExpression(call.arguments[paramIndex], 'name', checker, tsModule);
125
+ return namedTarget(carrier.api, schema, sourceFile, tsModule, name);
126
+ }
127
+ function sameSymbol(expression, fn, checker, tsModule) {
128
+ const symbol = checker.getSymbolAtLocation(expression);
129
+ const aliased = symbol && (symbol.flags & tsModule.SymbolFlags.Alias)
130
+ ? checker.getAliasedSymbol(symbol)
131
+ : symbol;
132
+ return aliased?.declarations?.some((decl) => decl === fn) ?? false;
133
+ }
134
+ function propertyFromObject(obj, name, checker, tsModule) {
135
+ for (const prop of [...obj.properties].reverse()) {
136
+ if (tsModule.isPropertyAssignment(prop)) {
137
+ if (propertyName(prop.name, tsModule) === name)
138
+ return prop.initializer;
139
+ continue;
140
+ }
141
+ if (tsModule.isSpreadAssignment(prop)) {
142
+ const fromSpread = propertyFromExpression(prop.expression, name, checker, tsModule);
143
+ if (fromSpread)
144
+ return fromSpread;
145
+ }
146
+ }
147
+ return undefined;
148
+ }
149
+ function namedTarget(api, expression, sourceFile, tsModule, explicitName) {
150
+ const { line } = sourceFile.getLineAndCharacterOfPosition(expression.getStart(sourceFile));
151
+ const expr = skipParens(expression, tsModule);
152
+ const suffix = explicitName ??
153
+ (tsModule.isIdentifier(expr) ? expr.text : `inline:${line + 1}`);
154
+ return {
155
+ name: `${api}:${suffix}`,
156
+ sourceFile,
157
+ expression,
158
+ };
159
+ }
160
+ function stringLiteralText(expr, tsModule) {
161
+ return expr && tsModule.isStringLiteralLike(expr) ? expr.text : undefined;
162
+ }
163
+ function propertyName(name, tsModule) {
164
+ if (tsModule.isIdentifier(name) || tsModule.isStringLiteral(name)) {
165
+ return name.text;
166
+ }
167
+ return undefined;
168
+ }
169
+ function skipParens(node, tsModule) {
170
+ while (tsModule.isParenthesizedExpression(node))
171
+ node = node.expression;
172
+ return node;
173
+ }
174
+ //# sourceMappingURL=target_resolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target_resolution.js","sourceRoot":"","sources":["../src/target_resolution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type * as ts from 'typescript';
2
+ import { type SchemaTarget } from './target_emit.js';
3
+ export type { SchemaTarget } from './target_emit.js';
4
+ export declare function findSchemaTargets(program: ts.Program, fileSet: ReadonlySet<string>, tsModule: typeof ts, compilerOptions: ts.CompilerOptions): SchemaTarget[];
5
+ //# sourceMappingURL=targets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../src/targets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAmBpE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,EAAE,CAAC,OAAO,EACnB,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,EAC5B,QAAQ,EAAE,OAAO,EAAE,EACnB,eAAe,EAAE,EAAE,CAAC,eAAe,GAClC,YAAY,EAAE,CA6ChB"}
@@ -0,0 +1,116 @@
1
+ import { resolveTarget } from './target_emit.js';
2
+ import { collectTargetImports, FORMAT_CALLS, isProviderCall, OUTPUT_CALLS, TOOL_CALLS, } from './target_imports.js';
3
+ import { collectCarrierTargets, objectExpression, propertyFromExpression, pushExpressionOrCarrier, } from './target_resolution.js';
4
+ export function findSchemaTargets(program, fileSet, tsModule, compilerOptions) {
5
+ const checker = program.getTypeChecker();
6
+ const carrierExpressions = [];
7
+ const targets = [];
8
+ const seen = new Set();
9
+ for (const sourceFile of program.getSourceFiles()) {
10
+ if (sourceFile.isDeclarationFile ||
11
+ sourceFile.fileName.includes('node_modules')) {
12
+ continue;
13
+ }
14
+ if (!fileSet.has(sourceFile.fileName))
15
+ continue;
16
+ const found = collectTargetExpressions(sourceFile, checker, tsModule, carrierExpressions);
17
+ for (const target of found) {
18
+ pushTarget(targets, seen, resolveTarget(target, checker, tsModule, compilerOptions));
19
+ }
20
+ }
21
+ for (const target of collectCarrierTargets(program, fileSet, checker, tsModule, carrierExpressions)) {
22
+ pushTarget(targets, seen, resolveTarget(target, checker, tsModule, compilerOptions));
23
+ }
24
+ return targets;
25
+ }
26
+ function collectTargetExpressions(sourceFile, checker, tsModule, carrierExpressions) {
27
+ const targets = [];
28
+ const imports = collectTargetImports(sourceFile, tsModule);
29
+ function walk(node) {
30
+ if (tsModule.isCallExpression(node)) {
31
+ collectFromCall(node, sourceFile, checker, tsModule, imports, targets, carrierExpressions);
32
+ }
33
+ tsModule.forEachChild(node, walk);
34
+ }
35
+ tsModule.forEachChild(sourceFile, walk);
36
+ return targets;
37
+ }
38
+ function collectFromCall(call, sourceFile, checker, tsModule, imports, targets, carrierExpressions) {
39
+ const ref = callRef(call.expression, tsModule);
40
+ if (!ref || !isProviderCall(ref, imports))
41
+ return;
42
+ const name = ref.name;
43
+ if (OUTPUT_CALLS.has(name)) {
44
+ const schema = propertyFromExpression(call.arguments[0], 'schema', checker, tsModule);
45
+ if (schema) {
46
+ pushExpressionOrCarrier(targets, carrierExpressions, name, schema, sourceFile, tsModule);
47
+ }
48
+ return;
49
+ }
50
+ if (name === 'object' && isOutputObjectCall(call, tsModule, imports)) {
51
+ const schema = propertyFromExpression(call.arguments[0], 'schema', checker, tsModule);
52
+ if (schema) {
53
+ pushExpressionOrCarrier(targets, carrierExpressions, 'Output.object', schema, sourceFile, tsModule);
54
+ }
55
+ return;
56
+ }
57
+ if (TOOL_CALLS.has(name)) {
58
+ const arg = objectExpression(call.arguments[0], checker, tsModule);
59
+ const schema = arg &&
60
+ (propertyExpression(arg, 'inputSchema', tsModule) ??
61
+ propertyExpression(arg, 'parameters', tsModule));
62
+ if (schema) {
63
+ pushExpressionOrCarrier(targets, carrierExpressions, name, schema, sourceFile, tsModule, stringProperty(arg, 'name', tsModule));
64
+ }
65
+ return;
66
+ }
67
+ if (FORMAT_CALLS.has(name) && call.arguments[0]) {
68
+ const schemaName = stringLiteralText(call.arguments[1], tsModule);
69
+ pushExpressionOrCarrier(targets, carrierExpressions, name, call.arguments[0], sourceFile, tsModule, schemaName);
70
+ }
71
+ }
72
+ function pushTarget(targets, seen, resolved) {
73
+ const key = `${resolved.filePath}:${resolved.exportName}:${resolved.name}`;
74
+ if (seen.has(key))
75
+ return;
76
+ seen.add(key);
77
+ targets.push(resolved);
78
+ }
79
+ function propertyExpression(obj, name, tsModule) {
80
+ for (const prop of obj.properties) {
81
+ if (!tsModule.isPropertyAssignment(prop))
82
+ continue;
83
+ if (propertyName(prop.name, tsModule) === name)
84
+ return prop.initializer;
85
+ }
86
+ return undefined;
87
+ }
88
+ function stringProperty(obj, name, tsModule) {
89
+ const expr = propertyExpression(obj, name, tsModule);
90
+ return stringLiteralText(expr, tsModule);
91
+ }
92
+ function stringLiteralText(expr, tsModule) {
93
+ return expr && tsModule.isStringLiteralLike(expr) ? expr.text : undefined;
94
+ }
95
+ function propertyName(name, tsModule) {
96
+ if (tsModule.isIdentifier(name) || tsModule.isStringLiteral(name))
97
+ return name.text;
98
+ return undefined;
99
+ }
100
+ function callRef(expr, tsModule) {
101
+ if (tsModule.isIdentifier(expr))
102
+ return { name: expr.text };
103
+ if (tsModule.isPropertyAccessExpression(expr) &&
104
+ tsModule.isIdentifier(expr.expression)) {
105
+ return { name: expr.name.text, receiver: expr.expression.text };
106
+ }
107
+ return undefined;
108
+ }
109
+ function isOutputObjectCall(call, tsModule, imports) {
110
+ const expr = call.expression;
111
+ return tsModule.isPropertyAccessExpression(expr) &&
112
+ tsModule.isIdentifier(expr.expression) &&
113
+ imports.outputObjects.has(expr.expression.text) &&
114
+ expr.name.text === 'object';
115
+ }
116
+ //# sourceMappingURL=targets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"targets.js","sourceRoot":"","sources":["../src/targets.ts"],"names":[],"mappings":"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"}