/
opt
/
canhelp
/
node_modules
/
sucrase
/
dist
/
esm
/
parser
/
plugins
/
/opt/canhelp/node_modules/sucrase/dist/esm/parser/plugins
mkdir
upload
Name
Size
Mode
Actions
jsx/
-
0755
rm
flow.js
26886
0644
edit
dl
rm
types.js
1389
0644
edit
dl
rm
typescript.js
46712
0644
edit
dl
rm
Edit:
/opt/canhelp/node_modules/sucrase/dist/esm/parser/plugins/types.js
(1389B)
import {eatTypeToken, lookaheadType, match} from "../tokenizer/index"; import {TokenType as tt} from "../tokenizer/types"; import {isFlowEnabled, isTypeScriptEnabled} from "../traverser/base"; import {baseParseConditional} from "../traverser/expression"; import {flowParseTypeAnnotation} from "./flow"; import {tsParseTypeAnnotation} from "./typescript"; /** * Common parser code for TypeScript and Flow. */ // An apparent conditional expression could actually be an optional parameter in an arrow function. export function typedParseConditional(noIn) { // If we see ?:, this can't possibly be a valid conditional. typedParseParenItem will be called // later to finish off the arrow parameter. We also need to handle bare ? tokens for optional // parameters without type annotations, i.e. ?, and ?) . if (match(tt.question)) { const nextType = lookaheadType(); if (nextType === tt.colon || nextType === tt.comma || nextType === tt.parenR) { return; } } baseParseConditional(noIn); } // Note: These "type casts" are *not* valid TS expressions. // But we parse them here and change them when completing the arrow function. export function typedParseParenItem() { eatTypeToken(tt.question); if (match(tt.colon)) { if (isTypeScriptEnabled) { tsParseTypeAnnotation(); } else if (isFlowEnabled) { flowParseTypeAnnotation(); } } }
Save
cmd:
run