@zzzen/pyright-internal 1.2.0-dev.20260913 → 1.2.0-dev.20260920
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/analyzer/checker.js +2 -3
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/program.js +1 -0
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/typeCacheUtils.d.ts +1 -0
- package/dist/analyzer/typeCacheUtils.js +28 -1
- package/dist/analyzer/typeCacheUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.d.ts +1 -1
- package/dist/analyzer/typeEvaluator.js +7 -10
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +1 -0
- package/dist/analyzer/typedDicts.js +3 -7
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.js +7 -0
- package/dist/analyzer/types.js.map +1 -1
- package/dist/common/configOptions.d.ts +1 -0
- package/dist/common/configOptions.js +16 -0
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/envVarUtils.js +3 -3
- package/dist/common/envVarUtils.js.map +1 -1
- package/dist/tests/envVarUtils.test.js +16 -0
- package/dist/tests/envVarUtils.test.js.map +1 -1
- package/dist/tests/evaluationTrace.integration.test.d.ts +1 -0
- package/dist/tests/evaluationTrace.integration.test.js +266 -0
- package/dist/tests/evaluationTrace.integration.test.js.map +1 -0
- package/dist/tests/evaluationTrace.test.d.ts +1 -0
- package/dist/tests/evaluationTrace.test.js +422 -0
- package/dist/tests/evaluationTrace.test.js.map +1 -0
- package/dist/tests/evaluationTrace.viewer.test.d.ts +1 -0
- package/dist/tests/evaluationTrace.viewer.test.js +529 -0
- package/dist/tests/evaluationTrace.viewer.test.js.map +1 -0
- package/dist/tests/mypyPrimerAnalysis.test.js +1193 -47
- package/dist/tests/mypyPrimerAnalysis.test.js.map +1 -1
- package/dist/tests/mypyPrimerMcp.test.d.ts +1 -0
- package/dist/tests/mypyPrimerMcp.test.js +186 -0
- package/dist/tests/mypyPrimerMcp.test.js.map +1 -0
- package/dist/tests/typeCacheUtils.test.js +15 -0
- package/dist/tests/typeCacheUtils.test.js.map +1 -1
- package/dist/tests/typeEvaluator7.test.js +4 -0
- package/dist/tests/typeEvaluator7.test.js.map +1 -1
- package/dist/trace/capture.d.ts +31 -0
- package/dist/trace/capture.js +272 -0
- package/dist/trace/capture.js.map +1 -0
- package/dist/trace/cli.d.ts +1 -0
- package/dist/trace/cli.js +196 -0
- package/dist/trace/cli.js.map +1 -0
- package/dist/trace/nativeAdapter.d.ts +16 -0
- package/dist/trace/nativeAdapter.js +422 -0
- package/dist/trace/nativeAdapter.js.map +1 -0
- package/dist/trace/nativeBridge.d.ts +46 -0
- package/dist/trace/nativeBridge.js +416 -0
- package/dist/trace/nativeBridge.js.map +1 -0
- package/dist/trace/reader.d.ts +83 -0
- package/dist/trace/reader.js +296 -0
- package/dist/trace/reader.js.map +1 -0
- package/dist/trace/recorder.d.ts +59 -0
- package/dist/trace/recorder.js +303 -0
- package/dist/trace/recorder.js.map +1 -0
- package/dist/trace/runtimeLoader.d.ts +23 -0
- package/dist/trace/runtimeLoader.js +172 -0
- package/dist/trace/runtimeLoader.js.map +1 -0
- package/dist/trace/viewerAssets.d.ts +2 -0
- package/dist/trace/viewerAssets.js +76 -0
- package/dist/trace/viewerAssets.js.map +1 -0
- package/dist/trace/viewerClient.d.ts +1 -0
- package/dist/trace/viewerClient.js +485 -0
- package/dist/trace/viewerClient.js.map +1 -0
- package/dist/trace/viewerModel.d.ts +308 -0
- package/dist/trace/viewerModel.js +524 -0
- package/dist/trace/viewerModel.js.map +1 -0
- package/dist/trace/viewerServer.d.ts +7 -0
- package/dist/trace/viewerServer.js +185 -0
- package/dist/trace/viewerServer.js.map +1 -0
- package/package.json +4 -2
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* viewerServer.ts
|
|
4
|
+
* Copyright (c) Microsoft Corporation.
|
|
5
|
+
* Licensed under the MIT license.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.loadViewerModel = loadViewerModel;
|
|
9
|
+
exports.startViewer = startViewer;
|
|
10
|
+
const crypto_1 = require("crypto");
|
|
11
|
+
const fs_1 = require("fs");
|
|
12
|
+
const http_1 = require("http");
|
|
13
|
+
const path_1 = require("path");
|
|
14
|
+
const reader_1 = require("./reader");
|
|
15
|
+
const viewerAssets_1 = require("./viewerAssets");
|
|
16
|
+
const viewerClient_1 = require("./viewerClient");
|
|
17
|
+
const viewerModel_1 = require("./viewerModel");
|
|
18
|
+
function loadViewerModel(path) {
|
|
19
|
+
if ((0, fs_1.statSync)(path).size > 128 * 1024 * 1024) {
|
|
20
|
+
throw new viewerModel_1.ViewerInputError('Artifact exceeds 128 MiB viewer reader limit');
|
|
21
|
+
}
|
|
22
|
+
return new viewerModel_1.ViewerModel(new reader_1.TraceReader((0, reader_1.readTrace)((0, fs_1.readFileSync)(path, 'utf8'))), (0, path_1.basename)(path));
|
|
23
|
+
}
|
|
24
|
+
async function startViewer(model, port = 0) {
|
|
25
|
+
if (!Number.isSafeInteger(port) || port < 0 || port > 65535) {
|
|
26
|
+
throw new viewerModel_1.ViewerInputError('Viewer port must be 0..65535 (0 selects a free port)');
|
|
27
|
+
}
|
|
28
|
+
const token = (0, crypto_1.randomBytes)(24).toString('hex');
|
|
29
|
+
const prefix = `/${token}/`;
|
|
30
|
+
let origin = '';
|
|
31
|
+
const assets = new Map([
|
|
32
|
+
['', { type: 'text/html; charset=utf-8', content: viewerAssets_1.viewerHtml }],
|
|
33
|
+
['style.css', { type: 'text/css; charset=utf-8', content: viewerAssets_1.viewerCss }],
|
|
34
|
+
['client.js', { type: 'text/javascript; charset=utf-8', content: `(${viewerClient_1.viewerMain.toString()})();` }],
|
|
35
|
+
]);
|
|
36
|
+
const respond = (response, status, body, type = 'application/json; charset=utf-8') => {
|
|
37
|
+
response.writeHead(status, {
|
|
38
|
+
'Content-Type': type,
|
|
39
|
+
'Content-Length': Buffer.byteLength(body),
|
|
40
|
+
'Cache-Control': 'no-store',
|
|
41
|
+
'X-Content-Type-Options': 'nosniff',
|
|
42
|
+
'Referrer-Policy': 'no-referrer',
|
|
43
|
+
'Content-Security-Policy': "default-src 'none'; script-src 'self'; style-src 'self'; connect-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'none'",
|
|
44
|
+
'Cross-Origin-Resource-Policy': 'same-origin',
|
|
45
|
+
});
|
|
46
|
+
response.end(body);
|
|
47
|
+
};
|
|
48
|
+
const server = (0, http_1.createServer)({ maxHeaderSize: 8192 }, (request, response) => {
|
|
49
|
+
try {
|
|
50
|
+
if (request.headers.host !== origin.slice('http://'.length) ||
|
|
51
|
+
(request.headers.origin && request.headers.origin !== origin) ||
|
|
52
|
+
(request.headers['sec-fetch-site'] &&
|
|
53
|
+
!['same-origin', 'none'].includes(String(request.headers['sec-fetch-site'])))) {
|
|
54
|
+
throw new viewerModel_1.ViewerInputError('Only same-origin loopback requests are allowed', 403);
|
|
55
|
+
}
|
|
56
|
+
if (request.method !== 'GET') {
|
|
57
|
+
throw new viewerModel_1.ViewerInputError('Read-only viewer: GET required', 405);
|
|
58
|
+
}
|
|
59
|
+
if (!request.url || request.url.length > 4096) {
|
|
60
|
+
throw new viewerModel_1.ViewerInputError('Invalid or oversized request URL');
|
|
61
|
+
}
|
|
62
|
+
const url = new URL(request.url, origin);
|
|
63
|
+
if (url.origin !== origin || !url.pathname.startsWith(prefix)) {
|
|
64
|
+
throw new viewerModel_1.ViewerInputError('Unknown viewer route', 404);
|
|
65
|
+
}
|
|
66
|
+
const route = url.pathname.slice(prefix.length);
|
|
67
|
+
const asset = assets.get(route);
|
|
68
|
+
if (asset) {
|
|
69
|
+
if (url.search) {
|
|
70
|
+
throw new viewerModel_1.ViewerInputError('Asset query parameters are not supported');
|
|
71
|
+
}
|
|
72
|
+
respond(response, 200, asset.content, asset.type);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (request.headers['x-pyright-trace-viewer'] !== '1') {
|
|
76
|
+
throw new viewerModel_1.ViewerInputError('Viewer API request header required', 403);
|
|
77
|
+
}
|
|
78
|
+
const allowed = {
|
|
79
|
+
'api/summary': [],
|
|
80
|
+
'api/timeline': ['offset', 'limit', 'kind', 'query', 'span', 'role'],
|
|
81
|
+
'api/event': ['seq'],
|
|
82
|
+
'api/entity': ['id', 'at', 'historyOffset', 'fieldOffset'],
|
|
83
|
+
'api/graph': ['id', 'at', 'relation', 'hops'],
|
|
84
|
+
'api/pairs': ['offset'],
|
|
85
|
+
'api/comparison': ['index', 'offset'],
|
|
86
|
+
};
|
|
87
|
+
if (!Object.prototype.hasOwnProperty.call(allowed, route)) {
|
|
88
|
+
throw new viewerModel_1.ViewerInputError('Unknown viewer API route', 404);
|
|
89
|
+
}
|
|
90
|
+
for (const key of url.searchParams.keys()) {
|
|
91
|
+
if (!allowed[route].includes(key) || url.searchParams.getAll(key).length !== 1) {
|
|
92
|
+
throw new viewerModel_1.ViewerInputError(`Unknown or repeated parameter: ${key.slice(0, 80)}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const text = (name) => url.searchParams.get(name) ?? undefined;
|
|
96
|
+
const required = (name) => {
|
|
97
|
+
const value = text(name);
|
|
98
|
+
if (!value || value.length > 256) {
|
|
99
|
+
throw new viewerModel_1.ViewerInputError(`A ${name} of 1..256 characters is required`);
|
|
100
|
+
}
|
|
101
|
+
return value;
|
|
102
|
+
};
|
|
103
|
+
const number = (name, fallback) => {
|
|
104
|
+
const value = text(name);
|
|
105
|
+
if (value === undefined && fallback !== undefined) {
|
|
106
|
+
return fallback;
|
|
107
|
+
}
|
|
108
|
+
if (!value || !/^\d+$/.test(value) || !Number.isSafeInteger(Number(value))) {
|
|
109
|
+
throw new viewerModel_1.ViewerInputError(`Invalid integer parameter: ${name}`);
|
|
110
|
+
}
|
|
111
|
+
return Number(value);
|
|
112
|
+
};
|
|
113
|
+
let result;
|
|
114
|
+
switch (route) {
|
|
115
|
+
case 'api/summary':
|
|
116
|
+
result = model.summary();
|
|
117
|
+
break;
|
|
118
|
+
case 'api/timeline':
|
|
119
|
+
result = model.timeline({
|
|
120
|
+
offset: number('offset', 0),
|
|
121
|
+
limit: number('limit', 40),
|
|
122
|
+
kind: text('kind'),
|
|
123
|
+
query: text('query'),
|
|
124
|
+
span: text('span'),
|
|
125
|
+
role: text('role'),
|
|
126
|
+
});
|
|
127
|
+
break;
|
|
128
|
+
case 'api/event':
|
|
129
|
+
result = model.event(number('seq'));
|
|
130
|
+
break;
|
|
131
|
+
case 'api/entity':
|
|
132
|
+
result = model.entity(required('id'), number('at'), number('historyOffset', 0), number('fieldOffset', 0));
|
|
133
|
+
break;
|
|
134
|
+
case 'api/graph':
|
|
135
|
+
result = model.graph(required('id'), number('at'), text('relation'), number('hops', 1));
|
|
136
|
+
break;
|
|
137
|
+
case 'api/pairs':
|
|
138
|
+
result = model.pairs(number('offset', 0));
|
|
139
|
+
break;
|
|
140
|
+
case 'api/comparison':
|
|
141
|
+
result = model.comparison(number('index'), number('offset', 0));
|
|
142
|
+
break;
|
|
143
|
+
default:
|
|
144
|
+
throw new viewerModel_1.ViewerInputError('Unknown route', 404);
|
|
145
|
+
}
|
|
146
|
+
const body = JSON.stringify(result);
|
|
147
|
+
if (Buffer.byteLength(body) > 2 * 1024 * 1024) {
|
|
148
|
+
throw new viewerModel_1.ViewerInputError('Viewer response exceeds 2 MiB; narrow the selection or use the CLI', 413);
|
|
149
|
+
}
|
|
150
|
+
respond(response, 200, body);
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
if (error instanceof viewerModel_1.ViewerInputError) {
|
|
154
|
+
respond(response, error.status, JSON.stringify({ error: error.message }));
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
console.error('Trace viewer request failed:', error);
|
|
158
|
+
respond(response, 500, JSON.stringify({ error: 'Artifact could not be presented; see the local server error' }));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
server.requestTimeout = 10000;
|
|
163
|
+
server.headersTimeout = 10000;
|
|
164
|
+
await new Promise((resolve, reject) => {
|
|
165
|
+
server.once('error', reject);
|
|
166
|
+
server.listen(port, '127.0.0.1', () => {
|
|
167
|
+
server.removeListener('error', reject);
|
|
168
|
+
resolve();
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
const address = server.address();
|
|
172
|
+
if (!address || typeof address === 'string') {
|
|
173
|
+
server.close();
|
|
174
|
+
throw new Error('Viewer did not acquire a loopback TCP address');
|
|
175
|
+
}
|
|
176
|
+
origin = `http://127.0.0.1:${address.port}`;
|
|
177
|
+
return {
|
|
178
|
+
url: origin + prefix,
|
|
179
|
+
close: () => new Promise((resolve, reject) => {
|
|
180
|
+
server.close((error) => (error ? reject(error) : resolve()));
|
|
181
|
+
server.closeAllConnections();
|
|
182
|
+
}),
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=viewerServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewerServer.js","sourceRoot":"","sources":["../../../../../src/trace/viewerServer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@zzzen/pyright-internal",
|
|
3
3
|
"displayName": "pyright",
|
|
4
4
|
"description": "Type checker for the Python language",
|
|
5
|
-
"version": "1.2.0-dev.
|
|
5
|
+
"version": "1.2.0-dev.20260920",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"private": false,
|
|
8
8
|
"files": [
|
|
@@ -17,7 +17,9 @@
|
|
|
17
17
|
"test:norebuild": "node --max-old-space-size=8192 --expose-gc ./node_modules/jest/bin/jest --forceExit --testPathIgnorePatterns src/tests/benchmarks",
|
|
18
18
|
"test:benchmark": "cross-env PYRIGHT_RUN_BENCHMARKS=1 node --max-old-space-size=8192 --expose-gc ./node_modules/jest/bin/jest --forceExit --testTimeout=300000 --runInBand --detectOpenHandles src/tests/benchmarks",
|
|
19
19
|
"test:coverage": "node --max-old-space-size=8192 --expose-gc ./node_modules/jest/bin/jest --forceExit --testPathIgnorePatterns src/tests/benchmarks --reporters=jest-junit --reporters=default --coverage --coverageReporters=cobertura --coverageReporters=html --coverageReporters=json",
|
|
20
|
-
"test:imports": "node --max-old-space-size=8192 --expose-gc ./node_modules/jest/bin/jest importResolver.test --forceExit --runInBand"
|
|
20
|
+
"test:imports": "node --max-old-space-size=8192 --expose-gc ./node_modules/jest/bin/jest importResolver.test --forceExit --runInBand",
|
|
21
|
+
"trace": "node ./out/packages/pyright-internal/src/trace/cli.js",
|
|
22
|
+
"test:trace": "pnpm run build && cross-env PYRIGHT_RUN_TRACE_TESTS=1 jest evaluationTrace --runInBand --forceExit"
|
|
21
23
|
},
|
|
22
24
|
"dependencies": {
|
|
23
25
|
"@yarnpkg/fslib": "2.10.4",
|