1 parent
ca246aface
commit
ff0529ac2e
31 files changed
+1460
-128
No files matched your search
+4
-4
@@ -24,10 +24,10 @@
|
||||
"dependencies": {
|
||||
"@angular/compiler": "12.2.16",
|
||||
"@babel/code-frame": "7.16.7",
|
||||
"@babel/parser": "7.18.0",
|
||||
"@babel/parser": "7.20.1",
|
||||
"@glimmer/syntax": "0.84.2",
|
||||
"@iarna/toml": "2.2.5",
|
||||
"@typescript-eslint/typescript-estree": "5.30.0",
|
||||
"@typescript-eslint/typescript-estree": "5.36.2",
|
||||
"acorn": "8.8.0",
|
||||
"acorn-jsx": "5.3.2",
|
||||
"angular-estree-parser": "2.5.1",
|
||||
@@ -85,7 +85,7 @@
|
||||
"semver": "7.3.7",
|
||||
"string-width": "5.0.1",
|
||||
"strip-ansi": "7.0.1",
|
||||
"typescript": "4.7.2",
|
||||
"typescript": "4.8.2",
|
||||
"unicode-regex": "3.0.0",
|
||||
"unified": "9.2.1",
|
||||
"vnopts": "1.0.2",
|
||||
@@ -102,7 +102,7 @@
|
||||
"@types/file-entry-cache": "5.0.2",
|
||||
"@types/find-cache-dir": "3.2.1",
|
||||
"@types/jest": "27.4.1",
|
||||
"@typescript-eslint/eslint-plugin": "5.20.0",
|
||||
"@typescript-eslint/eslint-plugin": "5.36.2",
|
||||
"babel-jest": "27.5.1",
|
||||
"benchmark": "2.1.4",
|
||||
"browserslist-to-esbuild": "1.1.1",
|
||||
|
||||
+6
-10
@@ -6,20 +6,16 @@ const isNonEmptyArray = require("../utils/is-non-empty-array.js");
|
||||
* @typedef {import("./types/estree").Node} Node
|
||||
*/
|
||||
|
||||
function locStart(node, opts) {
|
||||
const { ignoreDecorators } = opts || {};
|
||||
function locStart(node) {
|
||||
const start = node.range ? node.range[0] : node.start;
|
||||
|
||||
// Handle nodes with decorators. They should start at the first decorator
|
||||
if (!ignoreDecorators) {
|
||||
const decorators =
|
||||
(node.declaration && node.declaration.decorators) || node.decorators;
|
||||
|
||||
if (isNonEmptyArray(decorators)) {
|
||||
return locStart(decorators[0]);
|
||||
}
|
||||
const decorators = node.declaration?.decorators ?? node.decorators;
|
||||
if (isNonEmptyArray(decorators)) {
|
||||
return Math.min(locStart(decorators[0]), start);
|
||||
}
|
||||
|
||||
return node.range ? node.range[0] : node.start;
|
||||
return start;
|
||||
}
|
||||
|
||||
function locEnd(node) {
|
||||
|
||||
@@ -15,6 +15,7 @@ const {
|
||||
isCallExpression,
|
||||
isMemberExpression,
|
||||
isObjectProperty,
|
||||
isTSTypeExpression,
|
||||
} = require("./utils/index.js");
|
||||
|
||||
function needsParens(path, options) {
|
||||
@@ -244,14 +245,16 @@ function needsParens(path, options) {
|
||||
// fallthrough
|
||||
case "TSTypeAssertion":
|
||||
case "TSAsExpression":
|
||||
case "TSSatisfiesExpression":
|
||||
case "LogicalExpression":
|
||||
switch (parent.type) {
|
||||
case "TSSatisfiesExpression":
|
||||
case "TSAsExpression":
|
||||
// example: foo as unknown as Bar
|
||||
return node.type !== "TSAsExpression";
|
||||
return !isTSTypeExpression(node);
|
||||
|
||||
case "ConditionalExpression":
|
||||
return node.type === "TSAsExpression";
|
||||
return isTSTypeExpression(node);
|
||||
|
||||
case "CallExpression":
|
||||
case "NewExpression":
|
||||
@@ -282,7 +285,7 @@ function needsParens(path, options) {
|
||||
case "AssignmentPattern":
|
||||
return (
|
||||
name === "left" &&
|
||||
(node.type === "TSTypeAssertion" || node.type === "TSAsExpression")
|
||||
(node.type === "TSTypeAssertion" || isTSTypeExpression(node))
|
||||
);
|
||||
|
||||
case "LogicalExpression":
|
||||
@@ -363,7 +366,7 @@ function needsParens(path, options) {
|
||||
if (
|
||||
parent.type === "UnaryExpression" ||
|
||||
parent.type === "AwaitExpression" ||
|
||||
parent.type === "TSAsExpression" ||
|
||||
isTSTypeExpression(parent) ||
|
||||
parent.type === "TSNonNullExpression"
|
||||
) {
|
||||
return true;
|
||||
@@ -377,6 +380,7 @@ function needsParens(path, options) {
|
||||
case "SpreadElement":
|
||||
case "SpreadProperty":
|
||||
case "TSAsExpression":
|
||||
case "TSSatisfiesExpression":
|
||||
case "TSNonNullExpression":
|
||||
case "BindExpression":
|
||||
return true;
|
||||
@@ -612,6 +616,7 @@ function needsParens(path, options) {
|
||||
case "TSTypeAssertion":
|
||||
case "TypeCastExpression":
|
||||
case "TSAsExpression":
|
||||
case "TSSatisfiesExpression":
|
||||
case "TSNonNullExpression":
|
||||
return true;
|
||||
|
||||
@@ -661,6 +666,7 @@ function needsParens(path, options) {
|
||||
return name === "object";
|
||||
|
||||
case "TSAsExpression":
|
||||
case "TSSatisfiesExpression":
|
||||
case "TSNonNullExpression":
|
||||
case "BindExpression":
|
||||
case "TaggedTemplateExpression":
|
||||
|
||||
@@ -1,33 +1,36 @@
|
||||
"use strict";
|
||||
|
||||
const isNonEmptyArray = require("../../../utils/is-non-empty-array.js");
|
||||
const visitNode = require("./visit-node.js");
|
||||
const throwSyntaxError = require("./throw-syntax-error.js");
|
||||
|
||||
// Copied from https://unpkg.com/typescript@4.8.2/lib/typescript.js
|
||||
function getSourceFileOfNode(node) {
|
||||
while (node && node.kind !== 305 /* SyntaxKind.SourceFile */) {
|
||||
node = node.parent;
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
// Invalid decorators are removed since `@typescript-eslint/typescript-estree` v4
|
||||
// https://github.com/typescript-eslint/typescript-eslint/pull/2375
|
||||
function throwErrorForInvalidDecorator(
|
||||
tsNode,
|
||||
esTreeNode,
|
||||
tsNodeToESTreeNodeMap
|
||||
) {
|
||||
const tsDecorators = tsNode.decorators;
|
||||
if (!Array.isArray(tsDecorators)) {
|
||||
// There is a `checkGrammarDecorators` in `typescript` package, consider use it directly in future
|
||||
function throwErrorForInvalidDecorator(tsNode) {
|
||||
const { illegalDecorators } = tsNode;
|
||||
if (!isNonEmptyArray(illegalDecorators)) {
|
||||
return;
|
||||
}
|
||||
const esTreeDecorators = esTreeNode.decorators;
|
||||
if (
|
||||
!Array.isArray(esTreeDecorators) ||
|
||||
esTreeDecorators.length !== tsDecorators.length ||
|
||||
tsDecorators.some((tsDecorator) => {
|
||||
const esTreeDecorator = tsNodeToESTreeNodeMap.get(tsDecorator);
|
||||
return !esTreeDecorator || !esTreeDecorators.includes(esTreeDecorator);
|
||||
})
|
||||
) {
|
||||
throwSyntaxError(
|
||||
esTreeNode,
|
||||
"Leading decorators must be attached to a class declaration"
|
||||
);
|
||||
}
|
||||
|
||||
const [{ expression }] = illegalDecorators;
|
||||
|
||||
const sourceFile = getSourceFileOfNode(expression);
|
||||
const [start, end] = [expression.pos, expression.end].map((position) => {
|
||||
const { line, character: column } =
|
||||
sourceFile.getLineAndCharacterOfPosition(position);
|
||||
return { line: line + 1, column };
|
||||
});
|
||||
|
||||
throwSyntaxError({ loc: { start, end } }, "Decorators are not valid here.");
|
||||
}
|
||||
|
||||
// Values of abstract property is removed since `@typescript-eslint/typescript-estree` v5
|
||||
@@ -66,7 +69,7 @@ function throwErrorForInvalidNodes(ast, options) {
|
||||
return;
|
||||
}
|
||||
|
||||
throwErrorForInvalidDecorator(tsNode, esTreeNode, tsNodeToESTreeNodeMap);
|
||||
throwErrorForInvalidDecorator(tsNode);
|
||||
throwErrorForInvalidAbstractProperty(tsNode, esTreeNode);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ const {
|
||||
isCallExpression,
|
||||
isStringLiteral,
|
||||
isObjectProperty,
|
||||
isTSTypeExpression,
|
||||
} = require("../utils/index.js");
|
||||
|
||||
const {
|
||||
@@ -190,7 +191,7 @@ function couldGroupArg(arg, arrowChainRecursion = false) {
|
||||
(arg.type === "ArrayExpression" &&
|
||||
(arg.elements.length > 0 || hasComment(arg))) ||
|
||||
(arg.type === "TSTypeAssertion" && couldGroupArg(arg.expression)) ||
|
||||
(arg.type === "TSAsExpression" && couldGroupArg(arg.expression)) ||
|
||||
(isTSTypeExpression(arg) && couldGroupArg(arg.expression)) ||
|
||||
arg.type === "FunctionExpression" ||
|
||||
(arg.type === "ArrowFunctionExpression" &&
|
||||
// we want to avoid breaking inside composite return types but not simple keywords
|
||||
|
||||
@@ -72,8 +72,7 @@ function hasDecoratorsBeforeExport(node) {
|
||||
const decorators = node.declaration && node.declaration.decorators;
|
||||
|
||||
return (
|
||||
isNonEmptyArray(decorators) &&
|
||||
locStart(node, { ignoreDecorators: true }) > locStart(decorators[0])
|
||||
isNonEmptyArray(decorators) && locStart(node) === locStart(decorators[0])
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ const {
|
||||
isSimpleTemplateLiteral,
|
||||
hasComment,
|
||||
isMemberExpression,
|
||||
isTSTypeExpression,
|
||||
} = require("../utils/index.js");
|
||||
|
||||
function printTemplateLiteral(path, print, options) {
|
||||
@@ -90,7 +91,7 @@ function printTemplateLiteral(path, print, options) {
|
||||
isMemberExpression(expression) ||
|
||||
expression.type === "ConditionalExpression" ||
|
||||
expression.type === "SequenceExpression" ||
|
||||
expression.type === "TSAsExpression" ||
|
||||
isTSTypeExpression(expression) ||
|
||||
isBinaryish(expression)
|
||||
) {
|
||||
printed = [indent([softline, printed]), softline];
|
||||
|
||||
@@ -6,6 +6,7 @@ const {
|
||||
getComments,
|
||||
isCallExpression,
|
||||
isMemberExpression,
|
||||
isTSTypeExpression,
|
||||
} = require("../utils/index.js");
|
||||
const { locStart, locEnd } = require("../loc.js");
|
||||
const isBlockComment = require("../utils/is-block-comment.js");
|
||||
@@ -165,7 +166,7 @@ function shouldExtraIndentForConditionalExpression(path) {
|
||||
|
||||
if (
|
||||
(node.type === "NewExpression" && node.callee === child) ||
|
||||
(node.type === "TSAsExpression" && node.expression === child)
|
||||
(isTSTypeExpression(node) && node.expression === child)
|
||||
) {
|
||||
parent = path.getParentNode(ancestorCount + 1);
|
||||
child = node;
|
||||
|
||||
@@ -148,8 +148,10 @@ function printTypescript(path, options, print) {
|
||||
return printTypeParameters(path, options, print, "params");
|
||||
case "TSTypeParameter":
|
||||
return printTypeParameter(path, options, print);
|
||||
case "TSSatisfiesExpression":
|
||||
case "TSAsExpression": {
|
||||
parts.push(print("expression"), " as ", print("typeAnnotation"));
|
||||
const operator = node.type === "TSAsExpression" ? "as" : "satisfies";
|
||||
parts.push(print("expression"), ` ${operator} `, print("typeAnnotation"));
|
||||
const parent = path.getParentNode();
|
||||
if (
|
||||
(isCallExpression(parent) && parent.callee === node) ||
|
||||
|
||||
@@ -106,7 +106,7 @@ function hasNakedLeftSide(node) {
|
||||
node.type === "TaggedTemplateExpression" ||
|
||||
node.type === "BindExpression" ||
|
||||
(node.type === "UpdateExpression" && !node.prefix) ||
|
||||
node.type === "TSAsExpression" ||
|
||||
isTSTypeExpression(node) ||
|
||||
node.type === "TSNonNullExpression"
|
||||
);
|
||||
}
|
||||
@@ -998,6 +998,8 @@ function startsWithNoLookaheadToken(node, forbidFunctionClassAndDoExpr) {
|
||||
node.expressions[0],
|
||||
forbidFunctionClassAndDoExpr
|
||||
);
|
||||
// @ts-expect-error
|
||||
case "TSSatisfiesExpression":
|
||||
case "TSAsExpression":
|
||||
case "TSNonNullExpression":
|
||||
return startsWithNoLookaheadToken(
|
||||
@@ -1305,6 +1307,12 @@ const markerForIfWithoutBlockAndSameLineComment = Symbol(
|
||||
"ifWithoutBlockAndSameLineComment"
|
||||
);
|
||||
|
||||
function isTSTypeExpression(node) {
|
||||
return (
|
||||
node.type === "TSAsExpression" || node.type === "TSSatisfiesExpression"
|
||||
);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getFunctionParameters,
|
||||
iterateFunctionParametersPath,
|
||||
@@ -1369,4 +1377,5 @@ module.exports = {
|
||||
getComments,
|
||||
CommentCheckFlags,
|
||||
markerForIfWithoutBlockAndSameLineComment,
|
||||
isTSTypeExpression,
|
||||
};
|
||||
@@ -40,6 +40,7 @@ const unstableTests = new Map(
|
||||
"typescript/prettier-ignore/mapped-types.ts",
|
||||
"js/comments/html-like/comment.js",
|
||||
"js/for/continue-and-break-comment-without-blocks.js",
|
||||
"typescript/satisfies-operators/comments-unstable.ts",
|
||||
].map((fixture) => {
|
||||
const [file, isUnstable = () => true] = Array.isArray(fixture)
|
||||
? fixture
|
||||
|
||||
+21
-36
@@ -10,13 +10,12 @@ exports[`decorator.ts [babel-ts] format 1`] = `
|
||||
`;
|
||||
|
||||
exports[`decorator.ts [typescript] format 1`] = `
|
||||
"Leading decorators must be attached to a class declaration (3:1)
|
||||
"Decorators are not valid here. (3:2)
|
||||
1 | declare function dec<T>(target: T): T;
|
||||
2 |
|
||||
> 3 | @dec
|
||||
| ^^^^
|
||||
> 4 | enum E {}
|
||||
| ^^^^^^^^^^
|
||||
| ^^^
|
||||
4 | enum E {}
|
||||
5 |"
|
||||
`;
|
||||
|
||||
@@ -32,24 +31,14 @@ exports[`enums.ts [babel-ts] format 1`] = `
|
||||
`;
|
||||
|
||||
exports[`enums.ts [typescript] format 1`] = `
|
||||
"Leading decorators must be attached to a class declaration (3:1)
|
||||
1 | // https://github.com/typescript-eslint/typescript-eslint/pull/2375
|
||||
2 |
|
||||
> 3 | @decorator()
|
||||
| ^^^^^^^^^^^^
|
||||
> 4 | enum Direction {
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
> 5 | Up = 1,
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
> 6 | Down,
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
> 7 | Left,
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
> 8 | Right
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
> 9 | }
|
||||
| ^^
|
||||
10 |"
|
||||
"Decorators are not valid here. (3:2)
|
||||
1 | // https://github.com/typescript-eslint/typescript-eslint/pull/2375
|
||||
2 |
|
||||
> 3 | @decorator()
|
||||
| ^^^^^^^^^^^
|
||||
4 | enum Direction {
|
||||
5 | Up = 1,
|
||||
6 | Down,"
|
||||
`;
|
||||
|
||||
exports[`function.ts [babel-ts] format 1`] = `
|
||||
@@ -62,13 +51,12 @@ exports[`function.ts [babel-ts] format 1`] = `
|
||||
`;
|
||||
|
||||
exports[`function.ts [typescript] format 1`] = `
|
||||
"Leading decorators must be attached to a class declaration (3:1)
|
||||
"Decorators are not valid here. (3:2)
|
||||
1 | // https://github.com/typescript-eslint/typescript-eslint/pull/2375
|
||||
2 |
|
||||
> 3 | @decorator()
|
||||
| ^^^^^^^^^^^^
|
||||
> 4 | function foo( ){}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
| ^^^^^^^^^^^
|
||||
4 | function foo( ){}
|
||||
5 |"
|
||||
`;
|
||||
|
||||
@@ -83,15 +71,13 @@ exports[`interface.ts [babel-ts] format 1`] = `
|
||||
`;
|
||||
|
||||
exports[`interface.ts [typescript] format 1`] = `
|
||||
"Leading decorators must be attached to a class declaration (4:1)
|
||||
"Decorators are not valid here. (4:2)
|
||||
2 | // #4632
|
||||
3 |
|
||||
> 4 | @hello()
|
||||
| ^^^^^^^^
|
||||
> 5 | interface MyInterface {id: string;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
> 6 | }
|
||||
| ^^
|
||||
| ^^^^^^^
|
||||
5 | interface MyInterface {id: string;
|
||||
6 | }
|
||||
7 |"
|
||||
`;
|
||||
|
||||
@@ -105,11 +91,10 @@ exports[`issue-9102.ts [babel-ts] format 1`] = `
|
||||
`;
|
||||
|
||||
exports[`issue-9102.ts [typescript] format 1`] = `
|
||||
"Leading decorators must be attached to a class declaration (1:1)
|
||||
"Decorators are not valid here. (1:2)
|
||||
> 1 | @Decorator()
|
||||
| ^^^^^^^^^^^^
|
||||
> 2 | type T = 1;
|
||||
| ^^^^^^^^^^^^
|
||||
| ^^^^^^^^^^^
|
||||
2 | type T = 1;
|
||||
3 | class C {}
|
||||
4 |"
|
||||
`;
|
||||
@@ -26,7 +26,8 @@ new A < B >
|
||||
C
|
||||
|
||||
=====================================output=====================================
|
||||
new A() < B > C;
|
||||
new A<B>();
|
||||
C;
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,19 @@
|
||||
const bar1 = [1,2,3].reduce((carry, value) => {
|
||||
return [...carry, value];
|
||||
}, ([] satisfies unknown) satisfies number[]);
|
||||
|
||||
const bar2 = [1,2,3].reduce((carry, value) => {
|
||||
return [...carry, value];
|
||||
}, ([1, 2, 3] satisfies unknown) satisfies number[]);
|
||||
|
||||
const bar3 = [1,2,3].reduce((carry, value) => {
|
||||
return {...carry, [value]: true};
|
||||
}, ({} satisfies unknown) satisfies {[key: number]: boolean});
|
||||
|
||||
const bar4 = [1,2,3].reduce((carry, value) => {
|
||||
return {...carry, [value]: true};
|
||||
}, ({1: true} satisfies unknown) satisfies {[key: number]: boolean});
|
||||
|
||||
const bar5 = [1,2,3].reduce((carry, value) => {
|
||||
return [...carry, value];
|
||||
}, [] satisfies foo);
|
||||
@@ -0,0 +1,21 @@
|
||||
const extraRendererAttrs = ((attrs.rendererAttrs &&
|
||||
this.utils.safeParseJsonString(attrs.rendererAttrs)) ||
|
||||
Object.create(null)) satisfies FieldService.RendererAttributes;
|
||||
|
||||
const annotate = (angular.injector satisfies any).$$annotate satisfies (
|
||||
fn: Function
|
||||
) => string[];
|
||||
|
||||
const originalPrototype = originalConstructor.prototype satisfies TComponent & InjectionTarget,
|
||||
propertyToServiceName = originalPrototype._inject;
|
||||
|
||||
this.previewPlayerHandle = (setInterval(async () => {
|
||||
if (this.previewIsPlaying) {
|
||||
await this.fetchNextPreviews();
|
||||
this.currentPreviewIndex++;
|
||||
}
|
||||
}, this.refreshDelay) satisfies unknown) satisfies number;
|
||||
|
||||
this.intervalID = (setInterval(() => {
|
||||
self.step();
|
||||
}, 30) satisfies unknown) satisfies number;
|
||||
@@ -0,0 +1,30 @@
|
||||
const t1 = { a: 1 } satisfies I1;
|
||||
const t2 = { a: 1, b: 1 } satisfies I1;
|
||||
const t3 = { } satisfies I1;
|
||||
const t4: T1 = { a: "a" } satisfies T1;
|
||||
const t5 = (m => m.substring(0)) satisfies T2;
|
||||
const t6 = [1, 2] satisfies [number, number];
|
||||
let t7 = { a: 'test' } satisfies A;
|
||||
let t8 = { a: 'test', b: 'test' } satisfies A;
|
||||
|
||||
const p = {
|
||||
isEven: n => n % 2 === 0,
|
||||
isOdd: n => n % 2 === 1
|
||||
} satisfies Predicates;
|
||||
|
||||
let obj: { f(s: string): void } & Record<string, unknown> = {
|
||||
f(s) { },
|
||||
g(s) { }
|
||||
} satisfies { g(s: string): void } & Record<string, unknown>;
|
||||
|
||||
({ f(x) { } }) satisfies { f(s: string): void };
|
||||
|
||||
const car = {
|
||||
start() { },
|
||||
move(d) {
|
||||
// d should be number
|
||||
},
|
||||
stop() { }
|
||||
} satisfies Movable & Record<string, unknown>;
|
||||
|
||||
var v = undefined satisfies 1;
|
||||
@@ -0,0 +1,7 @@
|
||||
const t1 = {
|
||||
prop1: 1,
|
||||
prop2: 2,
|
||||
prop3: 3
|
||||
} satisfies
|
||||
// Comment
|
||||
Record<string, number>;
|
||||
@@ -0,0 +1,3 @@
|
||||
const t2 = {} /* comment */ satisfies {};
|
||||
const t3 = {} satisfies /* comment */ {};
|
||||
const t4 = {} /* comment1 */ satisfies /* comment2 */ {};
|
||||
@@ -0,0 +1 @@
|
||||
export default (function log() {} satisfies typeof console.log)
|
||||
@@ -0,0 +1,2 @@
|
||||
x satisfies boolean <= y; // (x satisfies boolean) <= y;
|
||||
x satisfies boolean ?? y; // (x satisfies boolean) ?? y;
|
||||
@@ -0,0 +1,6 @@
|
||||
window.postMessage(
|
||||
{
|
||||
context: item.context,
|
||||
topic: item.topic
|
||||
} satisfies IActionMessage
|
||||
);
|
||||
@@ -0,0 +1,2 @@
|
||||
run_spec(__dirname, ["babel-ts"]);
|
||||
run_spec(__dirname, ["babel-ts"], { semi: false });
|
||||
@@ -0,0 +1,5 @@
|
||||
(a satisfies number) = 42;
|
||||
({ a: (b satisfies any) = 2000 } = x);
|
||||
(this.selectorElem satisfies any) = this.multiselectWidget = this.initialValues = undefined;
|
||||
(this.configuration satisfies any) = (this.editor satisfies any) = (this
|
||||
.editorBody satisfies any) = undefined;
|
||||
@@ -0,0 +1,7 @@
|
||||
const getAccountCount = async () =>
|
||||
(await
|
||||
((await (
|
||||
await focusOnSection(BOOKMARKED_PROJECTS_SECTION_NAME)
|
||||
).findItem("My bookmarks")) satisfies TreeItem
|
||||
).getChildren()
|
||||
).length
|
||||
@@ -0,0 +1,3 @@
|
||||
// the 2nd line needs ASI protection
|
||||
const el = ReactDOM.findDOMNode(ref)
|
||||
;(el satisfies HTMLElement)!.style.cursor = 'pointer'
|
||||
@@ -0,0 +1,22 @@
|
||||
({}) satisfies {};
|
||||
({}) satisfies X;
|
||||
() => ({}) satisfies X;
|
||||
this.isTabActionBar((e.target || e.srcElement) satisfies HTMLElement);
|
||||
|
||||
'current' in (props.pagination satisfies Object);
|
||||
('current' in props.pagination) satisfies Object;
|
||||
start + (yearSelectTotal satisfies number);
|
||||
(start + yearSelectTotal) satisfies number;
|
||||
scrollTop > (visibilityHeight satisfies number);
|
||||
(scrollTop > visibilityHeight) satisfies number;
|
||||
(bValue satisfies boolean) ? 0 : -1;
|
||||
|
||||
async function g1() {
|
||||
const test = (await 'foo') satisfies number;
|
||||
}
|
||||
|
||||
var x = (v => v) satisfies (x: number) => string;
|
||||
|
||||
foo satisfies unknown satisfies Bar;
|
||||
foo satisfies unknown as Bar;
|
||||
foo as unknown satisfies Bar;
|
||||
@@ -0,0 +1,5 @@
|
||||
const a = `${(foo + bar) satisfies baz}`;
|
||||
const b = `${(veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFoo + bar) satisfies baz}`;
|
||||
const b = `${(foo + veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongBar) satisfies baz}`;
|
||||
const b = `${(foo + bar) satisfies veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongBaz}`;
|
||||
const b = `${(veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFoo + veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongBar) satisfies veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongBaz}`;
|
||||
@@ -0,0 +1,40 @@
|
||||
foo = (coooooooooooooooooooooooooooooooooooooooooooooooooooond
|
||||
? baaaaaaaaaaaaaaaaaaaaar
|
||||
: baaaaaaaaaaaaaaaaaaaaaz) satisfies Fooooooooooo;
|
||||
|
||||
foo = (condition ? firstValue : secondValue) satisfies SomeType;
|
||||
|
||||
const foo = (coooooooooooooooooooooooooooooooooooooooooooooooooooond
|
||||
? baaaaaaaaaaaaaaaaaaaaar
|
||||
: baaaaaaaaaaaaaaaaaaaaaz) satisfies Fooooooooooo;
|
||||
|
||||
function foo() {
|
||||
return (coooooooooooooooooooooooooooooooooooooooooooooooooooond
|
||||
? baaaaaaaaaaaaaaaaaaaaar
|
||||
: baaaaaaaaaaaaaaaaaaaaaz) satisfies Fooooooooooo;
|
||||
}
|
||||
|
||||
function foo() {
|
||||
throw (coooooooooooooooooooooooooooooooooooooooooooooooooooond
|
||||
? baaaaaaaaaaaaaaaaaaaaar
|
||||
: baaaaaaaaaaaaaaaaaaaaaz) satisfies Fooooooooooo;
|
||||
}
|
||||
|
||||
function foo() {
|
||||
void ((coooooooooooooooooooooooooooooooooooooooooooooooooooond
|
||||
? baaaaaaaaaaaaaaaaaaaaar
|
||||
: baaaaaaaaaaaaaaaaaaaaaz) satisfies Fooooooooooo);
|
||||
}
|
||||
|
||||
bifornCringerMoshedPerplexSawder =
|
||||
askTrovenaBeenaDependsRowans +
|
||||
((glimseGlyphsHazardNoopsTieTie === 0
|
||||
? averredBathersBoxroomBuggyNurl
|
||||
: anodyneCondosMalateOverateRetinol) satisfies AnnularCooeedSplicesWalksWayWay);
|
||||
|
||||
bifornCringerMoshedPerplexSawder =
|
||||
askTrovenaBeenaDependsRowans +
|
||||
((glimseGlyphsHazardNoopsTieTie === 0 &&
|
||||
kochabCooieGameOnOboleUnweave === Math.PI
|
||||
? averredBathersBoxroomBuggyNurl
|
||||
: anodyneCondosMalateOverateRetinol) satisfies AnnularCooeedSplicesWalksWayWay);
|
||||
@@ -0,0 +1,3 @@
|
||||
(() => {
|
||||
// swallow error and fallback to using directory as path
|
||||
}) satisfies string[];
|
||||
@@ -306,10 +306,10 @@
|
||||
chalk "^2.0.0"
|
||||
js-tokens "^4.0.0"
|
||||
|
||||
"@babel/parser@7.18.0":
|
||||
version "7.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.0.tgz#10a8d4e656bc01128d299a787aa006ce1a91e112"
|
||||
integrity sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg==
|
||||
"@babel/parser@7.20.1":
|
||||
version "7.20.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.1.tgz#3e045a92f7b4623cafc2425eddcb8cf2e54f9cc5"
|
||||
integrity sha512-hp0AYxaZJhxULfM1zyp7Wgr+pSUKBcP3M+PHnSzWGdXOzg/kHWIgiUWARvubhUKGOEw3xqY4x+lyZ9ytBVcELw==
|
||||
|
||||
"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.9":
|
||||
version "7.17.9"
|
||||
@@ -1751,19 +1751,19 @@
|
||||
dependencies:
|
||||
"@types/yargs-parser" "*"
|
||||
|
||||
"@typescript-eslint/eslint-plugin@5.20.0":
|
||||
version "5.20.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.20.0.tgz#022531a639640ff3faafaf251d1ce00a2ef000a1"
|
||||
integrity sha512-fapGzoxilCn3sBtC6NtXZX6+P/Hef7VDbyfGqTTpzYydwhlkevB+0vE0EnmHPVTVSy68GUncyJ/2PcrFBeCo5Q==
|
||||
"@typescript-eslint/eslint-plugin@5.36.2":
|
||||
version "5.36.2"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.2.tgz#6df092a20e0f9ec748b27f293a12cb39d0c1fe4d"
|
||||
integrity sha512-OwwR8LRwSnI98tdc2z7mJYgY60gf7I9ZfGjN5EjCwwns9bdTuQfAXcsjSB2wSQ/TVNYSGKf4kzVXbNGaZvwiXw==
|
||||
dependencies:
|
||||
"@typescript-eslint/scope-manager" "5.20.0"
|
||||
"@typescript-eslint/type-utils" "5.20.0"
|
||||
"@typescript-eslint/utils" "5.20.0"
|
||||
debug "^4.3.2"
|
||||
"@typescript-eslint/scope-manager" "5.36.2"
|
||||
"@typescript-eslint/type-utils" "5.36.2"
|
||||
"@typescript-eslint/utils" "5.36.2"
|
||||
debug "^4.3.4"
|
||||
functional-red-black-tree "^1.0.1"
|
||||
ignore "^5.1.8"
|
||||
ignore "^5.2.0"
|
||||
regexpp "^3.2.0"
|
||||
semver "^7.3.5"
|
||||
semver "^7.3.7"
|
||||
tsutils "^3.21.0"
|
||||
|
||||
"@typescript-eslint/scope-manager@5.20.0":
|
||||
@@ -1774,13 +1774,22 @@
|
||||
"@typescript-eslint/types" "5.20.0"
|
||||
"@typescript-eslint/visitor-keys" "5.20.0"
|
||||
|
||||
"@typescript-eslint/type-utils@5.20.0":
|
||||
version "5.20.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.20.0.tgz#151c21cbe9a378a34685735036e5ddfc00223be3"
|
||||
integrity sha512-WxNrCwYB3N/m8ceyoGCgbLmuZwupvzN0rE8NBuwnl7APgjv24ZJIjkNzoFBXPRCGzLNkoU/WfanW0exvp/+3Iw==
|
||||
"@typescript-eslint/scope-manager@5.36.2":
|
||||
version "5.36.2"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.36.2.tgz#a75eb588a3879ae659514780831370642505d1cd"
|
||||
integrity sha512-cNNP51L8SkIFSfce8B1NSUBTJTu2Ts4nWeWbFrdaqjmn9yKrAaJUBHkyTZc0cL06OFHpb+JZq5AUHROS398Orw==
|
||||
dependencies:
|
||||
"@typescript-eslint/utils" "5.20.0"
|
||||
debug "^4.3.2"
|
||||
"@typescript-eslint/types" "5.36.2"
|
||||
"@typescript-eslint/visitor-keys" "5.36.2"
|
||||
|
||||
"@typescript-eslint/type-utils@5.36.2":
|
||||
version "5.36.2"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.36.2.tgz#752373f4babf05e993adf2cd543a763632826391"
|
||||
integrity sha512-rPQtS5rfijUWLouhy6UmyNquKDPhQjKsaKH0WnY6hl/07lasj8gPaH2UD8xWkePn6SC+jW2i9c2DZVDnL+Dokw==
|
||||
dependencies:
|
||||
"@typescript-eslint/typescript-estree" "5.36.2"
|
||||
"@typescript-eslint/utils" "5.36.2"
|
||||
debug "^4.3.4"
|
||||
tsutils "^3.21.0"
|
||||
|
||||
"@typescript-eslint/types@5.20.0":
|
||||
@@ -1788,10 +1797,10 @@
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.20.0.tgz#fa39c3c2aa786568302318f1cb51fcf64258c20c"
|
||||
integrity sha512-+d8wprF9GyvPwtoB4CxBAR/s0rpP25XKgnOvMf/gMXYDvlUC3rPFHupdTQ/ow9vn7UDe5rX02ovGYQbv/IUCbg==
|
||||
|
||||
"@typescript-eslint/types@5.30.0":
|
||||
version "5.30.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.0.tgz#db7d81d585a3da3801432a9c1d2fafbff125e110"
|
||||
integrity sha512-vfqcBrsRNWw/LBXyncMF/KrUTYYzzygCSsVqlZ1qGu1QtGs6vMkt3US0VNSQ05grXi5Yadp3qv5XZdYLjpp8ag==
|
||||
"@typescript-eslint/types@5.36.2":
|
||||
version "5.36.2"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.36.2.tgz#a5066e500ebcfcee36694186ccc57b955c05faf9"
|
||||
integrity sha512-9OJSvvwuF1L5eS2EQgFUbECb99F0mwq501w0H0EkYULkhFa19Qq7WFbycdw1PexAc929asupbZcgjVIe6OK/XQ==
|
||||
|
||||
"@typescript-eslint/typescript-estree@5.20.0":
|
||||
version "5.20.0"
|
||||
@@ -1806,20 +1815,32 @@
|
||||
semver "^7.3.5"
|
||||
tsutils "^3.21.0"
|
||||
|
||||
"@typescript-eslint/typescript-estree@5.30.0":
|
||||
version "5.30.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.0.tgz#4565ee8a6d2ac368996e20b2344ea0eab1a8f0bb"
|
||||
integrity sha512-hDEawogreZB4n1zoqcrrtg/wPyyiCxmhPLpZ6kmWfKF5M5G0clRLaEexpuWr31fZ42F96SlD/5xCt1bT5Qm4Nw==
|
||||
"@typescript-eslint/typescript-estree@5.36.2":
|
||||
version "5.36.2"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.2.tgz#0c93418b36c53ba0bc34c61fe9405c4d1d8fe560"
|
||||
integrity sha512-8fyH+RfbKc0mTspfuEjlfqA4YywcwQK2Amcf6TDOwaRLg7Vwdu4bZzyvBZp4bjt1RRjQ5MDnOZahxMrt2l5v9w==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "5.30.0"
|
||||
"@typescript-eslint/visitor-keys" "5.30.0"
|
||||
"@typescript-eslint/types" "5.36.2"
|
||||
"@typescript-eslint/visitor-keys" "5.36.2"
|
||||
debug "^4.3.4"
|
||||
globby "^11.1.0"
|
||||
is-glob "^4.0.3"
|
||||
semver "^7.3.7"
|
||||
tsutils "^3.21.0"
|
||||
|
||||
"@typescript-eslint/utils@5.20.0", "@typescript-eslint/utils@^5.10.0":
|
||||
"@typescript-eslint/utils@5.36.2":
|
||||
version "5.36.2"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.36.2.tgz#b01a76f0ab244404c7aefc340c5015d5ce6da74c"
|
||||
integrity sha512-uNcopWonEITX96v9pefk9DC1bWMdkweeSsewJ6GeC7L6j2t0SJywisgkr9wUTtXk90fi2Eljj90HSHm3OGdGRg==
|
||||
dependencies:
|
||||
"@types/json-schema" "^7.0.9"
|
||||
"@typescript-eslint/scope-manager" "5.36.2"
|
||||
"@typescript-eslint/types" "5.36.2"
|
||||
"@typescript-eslint/typescript-estree" "5.36.2"
|
||||
eslint-scope "^5.1.1"
|
||||
eslint-utils "^3.0.0"
|
||||
|
||||
"@typescript-eslint/utils@^5.10.0":
|
||||
version "5.20.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.20.0.tgz#b8e959ed11eca1b2d5414e12417fd94cae3517a5"
|
||||
integrity sha512-lHONGJL1LIO12Ujyx8L8xKbwWSkoUKFSO+0wDAqGXiudWB2EO7WEUT+YZLtVbmOmSllAjLb9tpoIPwpRe5Tn6w==
|
||||
@@ -1839,12 +1860,12 @@
|
||||
"@typescript-eslint/types" "5.20.0"
|
||||
eslint-visitor-keys "^3.0.0"
|
||||
|
||||
"@typescript-eslint/visitor-keys@5.30.0":
|
||||
version "5.30.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.0.tgz#07721d23daca2ec4c2da7f1e660d41cd78bacac3"
|
||||
integrity sha512-6WcIeRk2DQ3pHKxU1Ni0qMXJkjO/zLjBymlYBy/53qxe7yjEFSvzKLDToJjURUhSl2Fzhkl4SMXQoETauF74cw==
|
||||
"@typescript-eslint/visitor-keys@5.36.2":
|
||||
version "5.36.2"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.2.tgz#2f8f78da0a3bad3320d2ac24965791ac39dace5a"
|
||||
integrity sha512-BtRvSR6dEdrNt7Net2/XDjbYKU5Ml6GqJgVfXT0CxTCJlnIqK7rAGreuWKMT2t8cFUT2Msv5oxw0GMRD7T5J7A==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "5.30.0"
|
||||
"@typescript-eslint/types" "5.36.2"
|
||||
eslint-visitor-keys "^3.3.0"
|
||||
|
||||
abab@^2.0.3, abab@^2.0.5:
|
||||
@@ -2241,9 +2262,9 @@ camelcase@^5.3.1:
|
||||
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
|
||||
|
||||
caniuse-lite@^1.0.30001286, caniuse-lite@^1.0.30001304:
|
||||
version "1.0.30001341"
|
||||
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz"
|
||||
integrity sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA==
|
||||
version "1.0.30001429"
|
||||
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001429.tgz"
|
||||
integrity sha512-511ThLu1hF+5RRRt0zYCf2U2yRr9GPF6m5y90SBCWsvSoYoW7yAGlv/elyPaNfvGCkp6kj/KFZWU0BMA69Prsg==
|
||||
|
||||
ccount@^1.0.0:
|
||||
version "1.1.0"
|
||||
@@ -3768,7 +3789,7 @@ iconv-lite@0.4.24:
|
||||
dependencies:
|
||||
safer-buffer ">= 2.1.2 < 3"
|
||||
|
||||
ignore@5.2.0, ignore@^5.1.8, ignore@^5.2.0:
|
||||
ignore@5.2.0, ignore@^5.2.0:
|
||||
version "5.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
|
||||
integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
|
||||
@@ -6483,10 +6504,10 @@ typedarray-to-buffer@^3.1.5:
|
||||
dependencies:
|
||||
is-typedarray "^1.0.0"
|
||||
|
||||
typescript@4.7.2:
|
||||
version "4.7.2"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.2.tgz#1f9aa2ceb9af87cca227813b4310fff0b51593c4"
|
||||
integrity sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==
|
||||
typescript@4.8.2:
|
||||
version "4.8.2"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.2.tgz#e3b33d5ccfb5914e4eeab6699cf208adee3fd790"
|
||||
integrity sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==
|
||||
|
||||
unbox-primitive@^1.0.1:
|
||||
version "1.0.1"
|
||||
|
||||
Reference in new issue
Block a user