视频会议上传文件

This commit is contained in:
gyj
2024-04-08 16:23:29 +08:00
parent c098116879
commit a551f33a6e
1272 changed files with 84366 additions and 63430 deletions
+248 -248
View File
@@ -1,248 +1,248 @@
// Generated by dts-bundle v0.7.3
declare module 'regexpp' {
import * as AST from "regexpp/ast";
import { RegExpParser } from "regexpp/parser";
import { RegExpValidator } from "regexpp/validator";
import { RegExpVisitor } from "regexpp/visitor";
export { AST, RegExpParser, RegExpValidator };
export function parseRegExpLiteral(source: string | RegExp, options?: RegExpParser.Options): AST.RegExpLiteral;
export function validateRegExpLiteral(source: string, options?: RegExpValidator.Options): void;
export function visitRegExpAST(node: AST.Node, handlers: RegExpVisitor.Handlers): void;
}
declare module 'regexpp/ast' {
export type Node = BranchNode | LeafNode;
export type BranchNode = RegExpLiteral | Pattern | Alternative | Group | CapturingGroup | Quantifier | CharacterClass | LookaroundAssertion | CharacterClassRange;
export type LeafNode = BoundaryAssertion | CharacterSet | Character | Backreference | Flags;
export type Element = Assertion | Quantifier | QuantifiableElement;
export type QuantifiableElement = Group | CapturingGroup | CharacterClass | CharacterSet | Character | Backreference | LookaheadAssertion;
export type CharacterClassElement = EscapeCharacterSet | UnicodePropertyCharacterSet | Character | CharacterClassRange;
export interface NodeBase {
type: Node["type"];
parent: Node["parent"];
start: number;
end: number;
raw: string;
}
export interface RegExpLiteral extends NodeBase {
type: "RegExpLiteral";
parent: null;
pattern: Pattern;
flags: Flags;
}
export interface Pattern extends NodeBase {
type: "Pattern";
parent: RegExpLiteral | null;
alternatives: Alternative[];
}
export interface Alternative extends NodeBase {
type: "Alternative";
parent: Pattern | Group | CapturingGroup | LookaroundAssertion;
elements: Element[];
}
export interface Group extends NodeBase {
type: "Group";
parent: Alternative | Quantifier;
alternatives: Alternative[];
}
export interface CapturingGroup extends NodeBase {
type: "CapturingGroup";
parent: Alternative | Quantifier;
name: string | null;
alternatives: Alternative[];
references: Backreference[];
}
export type LookaroundAssertion = LookaheadAssertion | LookbehindAssertion;
export interface LookaheadAssertion extends NodeBase {
type: "Assertion";
parent: Alternative | Quantifier;
kind: "lookahead";
negate: boolean;
alternatives: Alternative[];
}
export interface LookbehindAssertion extends NodeBase {
type: "Assertion";
parent: Alternative;
kind: "lookbehind";
negate: boolean;
alternatives: Alternative[];
}
export interface Quantifier extends NodeBase {
type: "Quantifier";
parent: Alternative;
min: number;
max: number;
greedy: boolean;
element: QuantifiableElement;
}
export interface CharacterClass extends NodeBase {
type: "CharacterClass";
parent: Alternative | Quantifier;
negate: boolean;
elements: CharacterClassElement[];
}
export interface CharacterClassRange extends NodeBase {
type: "CharacterClassRange";
parent: CharacterClass;
min: Character;
max: Character;
}
export type Assertion = BoundaryAssertion | LookaroundAssertion;
export type BoundaryAssertion = EdgeAssertion | WordBoundaryAssertion;
export interface EdgeAssertion extends NodeBase {
type: "Assertion";
parent: Alternative | Quantifier;
kind: "start" | "end";
}
export interface WordBoundaryAssertion extends NodeBase {
type: "Assertion";
parent: Alternative | Quantifier;
kind: "word";
negate: boolean;
}
export type CharacterSet = AnyCharacterSet | EscapeCharacterSet | UnicodePropertyCharacterSet;
export interface AnyCharacterSet extends NodeBase {
type: "CharacterSet";
parent: Alternative | Quantifier;
kind: "any";
}
export interface EscapeCharacterSet extends NodeBase {
type: "CharacterSet";
parent: Alternative | Quantifier | CharacterClass;
kind: "digit" | "space" | "word";
negate: boolean;
}
export interface UnicodePropertyCharacterSet extends NodeBase {
type: "CharacterSet";
parent: Alternative | Quantifier | CharacterClass;
kind: "property";
key: string;
value: string | null;
negate: boolean;
}
export interface Character extends NodeBase {
type: "Character";
parent: Alternative | Quantifier | CharacterClass | CharacterClassRange;
value: number;
}
export interface Backreference extends NodeBase {
type: "Backreference";
parent: Alternative | Quantifier;
ref: number | string;
resolved: CapturingGroup;
}
export interface Flags extends NodeBase {
type: "Flags";
parent: RegExpLiteral | null;
dotAll: boolean;
global: boolean;
hasIndices: boolean;
ignoreCase: boolean;
multiline: boolean;
sticky: boolean;
unicode: boolean;
}
}
declare module 'regexpp/parser' {
import { Flags, RegExpLiteral, Pattern } from "regexpp/ast";
import { EcmaVersion } from "regexpp/ecma-versions";
export namespace RegExpParser {
interface Options {
strict?: boolean;
ecmaVersion?: EcmaVersion;
}
}
export class RegExpParser {
constructor(options?: RegExpParser.Options);
parseLiteral(source: string, start?: number, end?: number): RegExpLiteral;
parseFlags(source: string, start?: number, end?: number): Flags;
parsePattern(source: string, start?: number, end?: number, uFlag?: boolean): Pattern;
}
}
declare module 'regexpp/validator' {
import { EcmaVersion } from "regexpp/ecma-versions";
export namespace RegExpValidator {
interface Options {
strict?: boolean;
ecmaVersion?: EcmaVersion;
onLiteralEnter?(start: number): void;
onLiteralLeave?(start: number, end: number): void;
onFlags?(start: number, end: number, global: boolean, ignoreCase: boolean, multiline: boolean, unicode: boolean, sticky: boolean, dotAll: boolean, hasIndices: boolean): void;
onPatternEnter?(start: number): void;
onPatternLeave?(start: number, end: number): void;
onDisjunctionEnter?(start: number): void;
onDisjunctionLeave?(start: number, end: number): void;
onAlternativeEnter?(start: number, index: number): void;
onAlternativeLeave?(start: number, end: number, index: number): void;
onGroupEnter?(start: number): void;
onGroupLeave?(start: number, end: number): void;
onCapturingGroupEnter?(start: number, name: string | null): void;
onCapturingGroupLeave?(start: number, end: number, name: string | null): void;
onQuantifier?(start: number, end: number, min: number, max: number, greedy: boolean): void;
onLookaroundAssertionEnter?(start: number, kind: "lookahead" | "lookbehind", negate: boolean): void;
onLookaroundAssertionLeave?(start: number, end: number, kind: "lookahead" | "lookbehind", negate: boolean): void;
onEdgeAssertion?(start: number, end: number, kind: "start" | "end"): void;
onWordBoundaryAssertion?(start: number, end: number, kind: "word", negate: boolean): void;
onAnyCharacterSet?(start: number, end: number, kind: "any"): void;
onEscapeCharacterSet?(start: number, end: number, kind: "digit" | "space" | "word", negate: boolean): void;
onUnicodePropertyCharacterSet?(start: number, end: number, kind: "property", key: string, value: string | null, negate: boolean): void;
onCharacter?(start: number, end: number, value: number): void;
onBackreference?(start: number, end: number, ref: number | string): void;
onCharacterClassEnter?(start: number, negate: boolean): void;
onCharacterClassLeave?(start: number, end: number, negate: boolean): void;
onCharacterClassRange?(start: number, end: number, min: number, max: number): void;
}
}
export class RegExpValidator {
constructor(options?: RegExpValidator.Options);
validateLiteral(source: string, start?: number, end?: number): void;
validateFlags(source: string, start?: number, end?: number): void;
validatePattern(source: string, start?: number, end?: number, uFlag?: boolean): void;
}
}
declare module 'regexpp/visitor' {
import { Alternative, Assertion, Backreference, CapturingGroup, Character, CharacterClass, CharacterClassRange, CharacterSet, Flags, Group, Node, Pattern, Quantifier, RegExpLiteral } from "regexpp/ast";
export class RegExpVisitor {
constructor(handlers: RegExpVisitor.Handlers);
visit(node: Node): void;
}
export namespace RegExpVisitor {
interface Handlers {
onAlternativeEnter?(node: Alternative): void;
onAlternativeLeave?(node: Alternative): void;
onAssertionEnter?(node: Assertion): void;
onAssertionLeave?(node: Assertion): void;
onBackreferenceEnter?(node: Backreference): void;
onBackreferenceLeave?(node: Backreference): void;
onCapturingGroupEnter?(node: CapturingGroup): void;
onCapturingGroupLeave?(node: CapturingGroup): void;
onCharacterEnter?(node: Character): void;
onCharacterLeave?(node: Character): void;
onCharacterClassEnter?(node: CharacterClass): void;
onCharacterClassLeave?(node: CharacterClass): void;
onCharacterClassRangeEnter?(node: CharacterClassRange): void;
onCharacterClassRangeLeave?(node: CharacterClassRange): void;
onCharacterSetEnter?(node: CharacterSet): void;
onCharacterSetLeave?(node: CharacterSet): void;
onFlagsEnter?(node: Flags): void;
onFlagsLeave?(node: Flags): void;
onGroupEnter?(node: Group): void;
onGroupLeave?(node: Group): void;
onPatternEnter?(node: Pattern): void;
onPatternLeave?(node: Pattern): void;
onQuantifierEnter?(node: Quantifier): void;
onQuantifierLeave?(node: Quantifier): void;
onRegExpLiteralEnter?(node: RegExpLiteral): void;
onRegExpLiteralLeave?(node: RegExpLiteral): void;
}
}
}
declare module 'regexpp/ecma-versions' {
export type EcmaVersion = 5 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022;
}
// Generated by dts-bundle v0.7.3
declare module 'regexpp' {
import * as AST from "regexpp/ast";
import { RegExpParser } from "regexpp/parser";
import { RegExpValidator } from "regexpp/validator";
import { RegExpVisitor } from "regexpp/visitor";
export { AST, RegExpParser, RegExpValidator };
export function parseRegExpLiteral(source: string | RegExp, options?: RegExpParser.Options): AST.RegExpLiteral;
export function validateRegExpLiteral(source: string, options?: RegExpValidator.Options): void;
export function visitRegExpAST(node: AST.Node, handlers: RegExpVisitor.Handlers): void;
}
declare module 'regexpp/ast' {
export type Node = BranchNode | LeafNode;
export type BranchNode = RegExpLiteral | Pattern | Alternative | Group | CapturingGroup | Quantifier | CharacterClass | LookaroundAssertion | CharacterClassRange;
export type LeafNode = BoundaryAssertion | CharacterSet | Character | Backreference | Flags;
export type Element = Assertion | Quantifier | QuantifiableElement;
export type QuantifiableElement = Group | CapturingGroup | CharacterClass | CharacterSet | Character | Backreference | LookaheadAssertion;
export type CharacterClassElement = EscapeCharacterSet | UnicodePropertyCharacterSet | Character | CharacterClassRange;
export interface NodeBase {
type: Node["type"];
parent: Node["parent"];
start: number;
end: number;
raw: string;
}
export interface RegExpLiteral extends NodeBase {
type: "RegExpLiteral";
parent: null;
pattern: Pattern;
flags: Flags;
}
export interface Pattern extends NodeBase {
type: "Pattern";
parent: RegExpLiteral | null;
alternatives: Alternative[];
}
export interface Alternative extends NodeBase {
type: "Alternative";
parent: Pattern | Group | CapturingGroup | LookaroundAssertion;
elements: Element[];
}
export interface Group extends NodeBase {
type: "Group";
parent: Alternative | Quantifier;
alternatives: Alternative[];
}
export interface CapturingGroup extends NodeBase {
type: "CapturingGroup";
parent: Alternative | Quantifier;
name: string | null;
alternatives: Alternative[];
references: Backreference[];
}
export type LookaroundAssertion = LookaheadAssertion | LookbehindAssertion;
export interface LookaheadAssertion extends NodeBase {
type: "Assertion";
parent: Alternative | Quantifier;
kind: "lookahead";
negate: boolean;
alternatives: Alternative[];
}
export interface LookbehindAssertion extends NodeBase {
type: "Assertion";
parent: Alternative;
kind: "lookbehind";
negate: boolean;
alternatives: Alternative[];
}
export interface Quantifier extends NodeBase {
type: "Quantifier";
parent: Alternative;
min: number;
max: number;
greedy: boolean;
element: QuantifiableElement;
}
export interface CharacterClass extends NodeBase {
type: "CharacterClass";
parent: Alternative | Quantifier;
negate: boolean;
elements: CharacterClassElement[];
}
export interface CharacterClassRange extends NodeBase {
type: "CharacterClassRange";
parent: CharacterClass;
min: Character;
max: Character;
}
export type Assertion = BoundaryAssertion | LookaroundAssertion;
export type BoundaryAssertion = EdgeAssertion | WordBoundaryAssertion;
export interface EdgeAssertion extends NodeBase {
type: "Assertion";
parent: Alternative | Quantifier;
kind: "start" | "end";
}
export interface WordBoundaryAssertion extends NodeBase {
type: "Assertion";
parent: Alternative | Quantifier;
kind: "word";
negate: boolean;
}
export type CharacterSet = AnyCharacterSet | EscapeCharacterSet | UnicodePropertyCharacterSet;
export interface AnyCharacterSet extends NodeBase {
type: "CharacterSet";
parent: Alternative | Quantifier;
kind: "any";
}
export interface EscapeCharacterSet extends NodeBase {
type: "CharacterSet";
parent: Alternative | Quantifier | CharacterClass;
kind: "digit" | "space" | "word";
negate: boolean;
}
export interface UnicodePropertyCharacterSet extends NodeBase {
type: "CharacterSet";
parent: Alternative | Quantifier | CharacterClass;
kind: "property";
key: string;
value: string | null;
negate: boolean;
}
export interface Character extends NodeBase {
type: "Character";
parent: Alternative | Quantifier | CharacterClass | CharacterClassRange;
value: number;
}
export interface Backreference extends NodeBase {
type: "Backreference";
parent: Alternative | Quantifier;
ref: number | string;
resolved: CapturingGroup;
}
export interface Flags extends NodeBase {
type: "Flags";
parent: RegExpLiteral | null;
dotAll: boolean;
global: boolean;
hasIndices: boolean;
ignoreCase: boolean;
multiline: boolean;
sticky: boolean;
unicode: boolean;
}
}
declare module 'regexpp/parser' {
import { Flags, RegExpLiteral, Pattern } from "regexpp/ast";
import { EcmaVersion } from "regexpp/ecma-versions";
export namespace RegExpParser {
interface Options {
strict?: boolean;
ecmaVersion?: EcmaVersion;
}
}
export class RegExpParser {
constructor(options?: RegExpParser.Options);
parseLiteral(source: string, start?: number, end?: number): RegExpLiteral;
parseFlags(source: string, start?: number, end?: number): Flags;
parsePattern(source: string, start?: number, end?: number, uFlag?: boolean): Pattern;
}
}
declare module 'regexpp/validator' {
import { EcmaVersion } from "regexpp/ecma-versions";
export namespace RegExpValidator {
interface Options {
strict?: boolean;
ecmaVersion?: EcmaVersion;
onLiteralEnter?(start: number): void;
onLiteralLeave?(start: number, end: number): void;
onFlags?(start: number, end: number, global: boolean, ignoreCase: boolean, multiline: boolean, unicode: boolean, sticky: boolean, dotAll: boolean, hasIndices: boolean): void;
onPatternEnter?(start: number): void;
onPatternLeave?(start: number, end: number): void;
onDisjunctionEnter?(start: number): void;
onDisjunctionLeave?(start: number, end: number): void;
onAlternativeEnter?(start: number, index: number): void;
onAlternativeLeave?(start: number, end: number, index: number): void;
onGroupEnter?(start: number): void;
onGroupLeave?(start: number, end: number): void;
onCapturingGroupEnter?(start: number, name: string | null): void;
onCapturingGroupLeave?(start: number, end: number, name: string | null): void;
onQuantifier?(start: number, end: number, min: number, max: number, greedy: boolean): void;
onLookaroundAssertionEnter?(start: number, kind: "lookahead" | "lookbehind", negate: boolean): void;
onLookaroundAssertionLeave?(start: number, end: number, kind: "lookahead" | "lookbehind", negate: boolean): void;
onEdgeAssertion?(start: number, end: number, kind: "start" | "end"): void;
onWordBoundaryAssertion?(start: number, end: number, kind: "word", negate: boolean): void;
onAnyCharacterSet?(start: number, end: number, kind: "any"): void;
onEscapeCharacterSet?(start: number, end: number, kind: "digit" | "space" | "word", negate: boolean): void;
onUnicodePropertyCharacterSet?(start: number, end: number, kind: "property", key: string, value: string | null, negate: boolean): void;
onCharacter?(start: number, end: number, value: number): void;
onBackreference?(start: number, end: number, ref: number | string): void;
onCharacterClassEnter?(start: number, negate: boolean): void;
onCharacterClassLeave?(start: number, end: number, negate: boolean): void;
onCharacterClassRange?(start: number, end: number, min: number, max: number): void;
}
}
export class RegExpValidator {
constructor(options?: RegExpValidator.Options);
validateLiteral(source: string, start?: number, end?: number): void;
validateFlags(source: string, start?: number, end?: number): void;
validatePattern(source: string, start?: number, end?: number, uFlag?: boolean): void;
}
}
declare module 'regexpp/visitor' {
import { Alternative, Assertion, Backreference, CapturingGroup, Character, CharacterClass, CharacterClassRange, CharacterSet, Flags, Group, Node, Pattern, Quantifier, RegExpLiteral } from "regexpp/ast";
export class RegExpVisitor {
constructor(handlers: RegExpVisitor.Handlers);
visit(node: Node): void;
}
export namespace RegExpVisitor {
interface Handlers {
onAlternativeEnter?(node: Alternative): void;
onAlternativeLeave?(node: Alternative): void;
onAssertionEnter?(node: Assertion): void;
onAssertionLeave?(node: Assertion): void;
onBackreferenceEnter?(node: Backreference): void;
onBackreferenceLeave?(node: Backreference): void;
onCapturingGroupEnter?(node: CapturingGroup): void;
onCapturingGroupLeave?(node: CapturingGroup): void;
onCharacterEnter?(node: Character): void;
onCharacterLeave?(node: Character): void;
onCharacterClassEnter?(node: CharacterClass): void;
onCharacterClassLeave?(node: CharacterClass): void;
onCharacterClassRangeEnter?(node: CharacterClassRange): void;
onCharacterClassRangeLeave?(node: CharacterClassRange): void;
onCharacterSetEnter?(node: CharacterSet): void;
onCharacterSetLeave?(node: CharacterSet): void;
onFlagsEnter?(node: Flags): void;
onFlagsLeave?(node: Flags): void;
onGroupEnter?(node: Group): void;
onGroupLeave?(node: Group): void;
onPatternEnter?(node: Pattern): void;
onPatternLeave?(node: Pattern): void;
onQuantifierEnter?(node: Quantifier): void;
onQuantifierLeave?(node: Quantifier): void;
onRegExpLiteralEnter?(node: RegExpLiteral): void;
onRegExpLiteralLeave?(node: RegExpLiteral): void;
}
}
}
declare module 'regexpp/ecma-versions' {
export type EcmaVersion = 5 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022;
}
+75 -43
View File
@@ -1,22 +1,42 @@
{
"name": "regexpp",
"version": "3.2.0",
"description": "Regular expression parser for ECMAScript.",
"engines": {
"node": ">=8"
},
"main": "index",
"files": [
"index.*"
"_args": [
[
"regexpp@3.2.0",
"D:\\韩超勃\\视频会议\\Arbitrate-FrontendH5"
]
],
"exports": {
".": {
"import": "./index.mjs",
"default": "./index.js"
},
"./package.json": "./package.json"
"_development": true,
"_from": "regexpp@3.2.0",
"_id": "regexpp@3.2.0",
"_inBundle": false,
"_integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
"_location": "/regexpp",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "regexpp@3.2.0",
"name": "regexpp",
"escapedName": "regexpp",
"rawSpec": "3.2.0",
"saveSpec": null,
"fetchSpec": "3.2.0"
},
"_requiredBy": [
"/eslint"
],
"_resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
"_spec": "3.2.0",
"_where": "D:\\韩超勃\\视频会议\\Arbitrate-FrontendH5",
"author": {
"name": "Toru Nagashima",
"url": "https://github.com/mysticatea"
},
"bugs": {
"url": "https://github.com/mysticatea/regexpp/issues"
},
"dependencies": {},
"description": "Regular expression parser for ECMAScript.",
"devDependencies": {
"@mysticatea/eslint-plugin": "^11.0.0",
"@types/eslint": "^4.16.2",
@@ -37,31 +57,21 @@
"ts-node": "^8.3.0",
"typescript": "^3.5.3"
},
"scripts": {
"prebuild": "npm run -s clean",
"build": "run-s build:*",
"build:tsc": "tsc --module es2015",
"build:rollup": "rollup -c",
"build:dts": "dts-bundle --name regexpp --main .temp/index.d.ts --out ../index.d.ts",
"clean": "rimraf .temp index.*",
"codecov": "nyc report -r lcovonly && codecov -t ${CODECOV_TOKEN} --disable=gcov",
"lint": "eslint scripts src test --ext .ts",
"pretest": "run-s build lint",
"test": "nyc _mocha \"test/*.ts\" --reporter dot --timeout 10000",
"update:test": "ts-node scripts/update-fixtures.ts",
"update:unicode": "run-s update:unicode:*",
"update:unicode:ids": "ts-node scripts/update-unicode-ids.ts",
"update:unicode:props": "ts-node scripts/update-unicode-properties.ts",
"preversion": "npm test",
"version": "npm run -s build",
"postversion": "git push && git push --tags",
"prewatch": "npm run -s clean",
"watch": "_mocha \"test/*.ts\" --require ts-node/register --reporter dot --timeout 10000 --watch-extensions ts --watch --growl"
"engines": {
"node": ">=8"
},
"repository": {
"type": "git",
"url": "git+https://github.com/mysticatea/regexpp.git"
"exports": {
".": {
"import": "./index.mjs",
"default": "./index.js"
},
"./package.json": "./package.json"
},
"files": [
"index.*"
],
"funding": "https://github.com/sponsors/mysticatea",
"homepage": "https://github.com/mysticatea/regexpp#readme",
"keywords": [
"regexp",
"regular",
@@ -81,11 +91,33 @@
"es2020",
"annexB"
],
"author": "Toru Nagashima (https://github.com/mysticatea)",
"license": "MIT",
"bugs": {
"url": "https://github.com/mysticatea/regexpp/issues"
"main": "index",
"name": "regexpp",
"repository": {
"type": "git",
"url": "git+https://github.com/mysticatea/regexpp.git"
},
"homepage": "https://github.com/mysticatea/regexpp#readme",
"funding": "https://github.com/sponsors/mysticatea"
"scripts": {
"build": "run-s build:*",
"build:dts": "dts-bundle --name regexpp --main .temp/index.d.ts --out ../index.d.ts",
"build:rollup": "rollup -c",
"build:tsc": "tsc --module es2015",
"clean": "rimraf .temp index.*",
"codecov": "nyc report -r lcovonly && codecov -t ${CODECOV_TOKEN} --disable=gcov",
"lint": "eslint scripts src test --ext .ts",
"postversion": "git push && git push --tags",
"prebuild": "npm run -s clean",
"pretest": "run-s build lint",
"preversion": "npm test",
"prewatch": "npm run -s clean",
"test": "nyc _mocha \"test/*.ts\" --reporter dot --timeout 10000",
"update:test": "ts-node scripts/update-fixtures.ts",
"update:unicode": "run-s update:unicode:*",
"update:unicode:ids": "ts-node scripts/update-unicode-ids.ts",
"update:unicode:props": "ts-node scripts/update-unicode-properties.ts",
"version": "npm run -s build",
"watch": "_mocha \"test/*.ts\" --require ts-node/register --reporter dot --timeout 10000 --watch-extensions ts --watch --growl"
},
"version": "3.2.0"
}