flow-parser 0.321.0 → 0.323.0

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.
Files changed (41) hide show
  1. package/README.md +25 -32
  2. package/dist/FlowParser.js +3 -53
  3. package/dist/FlowParserDeserializer.js +3 -41
  4. package/dist/FlowParserNodeDeserializers.js +0 -7
  5. package/dist/FlowParserWASM.js +1 -1
  6. package/dist/HermesParserDecodeUTF8String.js +0 -9
  7. package/dist/ParserOptions.js +1 -2
  8. package/dist/babel/TransformESTreeToBabel.js +9 -157
  9. package/dist/estree/StripFlowTypes.js +0 -26
  10. package/dist/estree/StripFlowTypesForBabel.js +0 -24
  11. package/dist/estree/TransformComponentSyntax.js +1 -87
  12. package/dist/estree/TransformComponentSyntax.js.flow +1 -0
  13. package/dist/estree/TransformEnumSyntax.js +0 -12
  14. package/dist/estree/TransformMatchSyntax.js +3 -99
  15. package/dist/estree/TransformRecordSyntax.js +3 -31
  16. package/dist/getModuleDocblock.js +0 -21
  17. package/dist/index.js +25 -99
  18. package/dist/transform/SimpleTransform.js +0 -21
  19. package/dist/transform/astArrayMutationHelpers.js +0 -9
  20. package/dist/transform/astNodeMutationHelpers.js +4 -26
  21. package/dist/traverse/SimpleTraverser.js +2 -22
  22. package/dist/traverse/getVisitorKeys.js +3 -9
  23. package/dist/utils/Builders.js +1 -17
  24. package/dist/utils/GenID.js +0 -7
  25. package/dist/utils/createSyntaxError.js +0 -1
  26. package/dist/utils/isReservedWord.js +0 -2
  27. package/dist/utils/mutateESTreeASTForPrettier.js +6 -21
  28. package/package.json +2 -2
  29. package/dist/transform/print/comments/comments.js +0 -245
  30. package/dist/transform/print/comments/comments.js.flow +0 -330
  31. package/dist/transform/print/comments/prettier/common/util.js +0 -235
  32. package/dist/transform/print/comments/prettier/language-js/comments.js +0 -663
  33. package/dist/transform/print/comments/prettier/language-js/loc.js +0 -30
  34. package/dist/transform/print/comments/prettier/language-js/printer-estree.js +0 -23
  35. package/dist/transform/print/comments/prettier/language-js/utils.js +0 -89
  36. package/dist/transform/print/comments/prettier/main/comments.js +0 -374
  37. package/dist/transform/print/comments/prettier/utils/get-last.js +0 -5
  38. package/dist/transform/print/detachedNodeTypes.js +0 -1
  39. package/dist/transform/print/detachedNodeTypes.js.flow +0 -24
  40. package/dist/transform/print/print.js +0 -68
  41. package/dist/transform/print/print.js.flow +0 -87
@@ -10,18 +10,13 @@ exports.replaceNodeOnParent = replaceNodeOnParent;
10
10
  exports.setParentPointersInDirectChildren = setParentPointersInDirectChildren;
11
11
  exports.shallowCloneNode = shallowCloneNode;
12
12
  exports.updateAllParentPointers = updateAllParentPointers;
13
-
14
13
  var _astArrayMutationHelpers = require("./astArrayMutationHelpers");
15
-
16
14
  var _getVisitorKeys = require("../traverse/getVisitorKeys");
17
-
18
15
  var _SimpleTraverser = require("../traverse/SimpleTraverser");
19
-
20
16
  function getParentKey(target, parent, visitorKeys) {
21
17
  if (parent == null) {
22
18
  throw new Error(`Expected parent node to be set on "${target.type}"`);
23
19
  }
24
-
25
20
  for (const key of (0, _getVisitorKeys.getVisitorKeys)(parent, visitorKeys)) {
26
21
  if ((0, _getVisitorKeys.isNode)(parent[key])) {
27
22
  if (parent[key] === target) {
@@ -34,7 +29,6 @@ function getParentKey(target, parent, visitorKeys) {
34
29
  } else if (Array.isArray(parent[key])) {
35
30
  for (let i = 0; i < parent[key].length; i += 1) {
36
31
  const current = parent[key][i];
37
-
38
32
  if (current === target) {
39
33
  return {
40
34
  type: 'array',
@@ -46,36 +40,29 @@ function getParentKey(target, parent, visitorKeys) {
46
40
  }
47
41
  }
48
42
  }
49
-
50
43
  throw new Error(`Expected to find the ${target.type} as a direct child of the ${parent.type}.`);
51
44
  }
52
-
53
45
  function replaceNodeOnParent(originalNode, originalNodeParent, nodeToReplaceWith, visitorKeys) {
54
46
  const replacementParent = getParentKey(originalNode, originalNodeParent, visitorKeys);
55
47
  const parent = replacementParent.node;
56
-
57
48
  if (replacementParent.type === 'array') {
58
49
  parent[replacementParent.key] = (0, _astArrayMutationHelpers.replaceInArray)(parent[replacementParent.key], replacementParent.targetIndex, Array.isArray(nodeToReplaceWith) ? nodeToReplaceWith : [nodeToReplaceWith]);
59
50
  } else {
60
51
  if (Array.isArray(nodeToReplaceWith)) {
61
52
  throw new Error(`Cannot insert array into non-array parent type: ${parent.type}`);
62
53
  }
63
-
64
54
  parent[replacementParent.key] = nodeToReplaceWith;
65
55
  }
66
56
  }
67
-
68
57
  function removeNodeOnParent(originalNode, originalNodeParent, visitorKeys) {
69
58
  const replacementParent = getParentKey(originalNode, originalNodeParent, visitorKeys);
70
59
  const parent = replacementParent.node;
71
-
72
60
  if (replacementParent.type === 'array') {
73
61
  parent[replacementParent.key] = (0, _astArrayMutationHelpers.removeFromArray)(parent[replacementParent.key], replacementParent.targetIndex);
74
62
  } else {
75
63
  parent[replacementParent.key] = null;
76
64
  }
77
65
  }
78
-
79
66
  function setParentPointersInDirectChildren(node, visitorKeys) {
80
67
  for (const key of (0, _getVisitorKeys.getVisitorKeys)(node, visitorKeys)) {
81
68
  if ((0, _getVisitorKeys.isNode)(node[key])) {
@@ -87,54 +74,45 @@ function setParentPointersInDirectChildren(node, visitorKeys) {
87
74
  }
88
75
  }
89
76
  }
90
-
91
77
  function updateAllParentPointers(node, visitorKeys) {
92
78
  _SimpleTraverser.SimpleTraverser.traverse(node, {
93
79
  enter(node, parent) {
94
80
  node.parent = parent;
95
81
  },
96
-
97
82
  leave() {},
98
-
99
83
  visitorKeys
100
84
  });
101
85
  }
102
-
103
86
  function nodeWith(node, overrideProps, visitorKeys) {
104
87
  const willBeUnchanged = Object.entries(overrideProps).every(([key, value]) => {
105
88
  const node_ = node;
106
-
107
89
  if (Array.isArray(value)) {
108
90
  return Array.isArray(node_[key]) ? (0, _astArrayMutationHelpers.arrayIsEqual)(node_[key], value) : false;
109
91
  }
110
-
111
92
  return node_[key] === value;
112
93
  });
113
-
114
94
  if (willBeUnchanged) {
115
95
  return node;
116
96
  }
117
-
118
- const newNode = { ...node,
97
+ const newNode = {
98
+ ...node,
119
99
  ...overrideProps
120
100
  };
121
101
  setParentPointersInDirectChildren(newNode, visitorKeys);
122
102
  return newNode;
123
103
  }
124
-
125
104
  function shallowCloneNode(node, visitorKeys) {
126
- const newNode = { ...node
105
+ const newNode = {
106
+ ...node
127
107
  };
128
108
  setParentPointersInDirectChildren(newNode, visitorKeys);
129
109
  return newNode;
130
110
  }
131
-
132
111
  function deepCloneNode(node, visitorKeys) {
133
112
  const clone = JSON.parse(JSON.stringify(node, (key, value) => {
134
113
  if (key === 'parent') {
135
114
  return undefined;
136
115
  }
137
-
138
116
  return value;
139
117
  }));
140
118
  updateAllParentPointers(clone, visitorKeys);
@@ -4,14 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.SimpleTraverserSkip = exports.SimpleTraverserBreak = exports.SimpleTraverser = void 0;
7
-
8
7
  var _getVisitorKeys = require("./getVisitorKeys");
9
-
10
- const SimpleTraverserSkip = new Error();
11
- exports.SimpleTraverserSkip = SimpleTraverserSkip;
12
- const SimpleTraverserBreak = new Error();
13
- exports.SimpleTraverserBreak = SimpleTraverserBreak;
14
-
8
+ const SimpleTraverserSkip = exports.SimpleTraverserSkip = new Error();
9
+ const SimpleTraverserBreak = exports.SimpleTraverserBreak = new Error();
15
10
  class SimpleTraverser {
16
11
  traverse(node, options) {
17
12
  try {
@@ -20,35 +15,27 @@ class SimpleTraverser {
20
15
  if (ex === SimpleTraverserBreak) {
21
16
  return;
22
17
  }
23
-
24
18
  throw ex;
25
19
  }
26
20
  }
27
-
28
21
  _traverse(node, parent, options) {
29
22
  if (!(0, _getVisitorKeys.isNode)(node)) {
30
23
  return;
31
24
  }
32
-
33
25
  try {
34
26
  options.enter(node, parent);
35
27
  } catch (ex) {
36
28
  if (ex === SimpleTraverserSkip) {
37
29
  return;
38
30
  }
39
-
40
31
  this._setErrorContext(ex, node);
41
-
42
32
  throw ex;
43
33
  }
44
-
45
34
  const keys = (0, _getVisitorKeys.getVisitorKeys)(node, options.visitorKeys);
46
-
47
35
  for (const key of keys) {
48
36
  const lookupKey = key;
49
37
  const childAny = node[lookupKey];
50
38
  const child = childAny;
51
-
52
39
  if (Array.isArray(child)) {
53
40
  for (let j = 0; j < child.length; ++j) {
54
41
  this._traverse(child[j], node, options);
@@ -57,20 +44,16 @@ class SimpleTraverser {
57
44
  this._traverse(child, node, options);
58
45
  }
59
46
  }
60
-
61
47
  try {
62
48
  options.leave(node, parent);
63
49
  } catch (ex) {
64
50
  if (ex === SimpleTraverserSkip) {
65
51
  return;
66
52
  }
67
-
68
53
  this._setErrorContext(ex, node);
69
-
70
54
  throw ex;
71
55
  }
72
56
  }
73
-
74
57
  _setErrorContext(ex, node) {
75
58
  ex.currentNode = {
76
59
  type: node.type,
@@ -78,13 +61,10 @@ class SimpleTraverser {
78
61
  loc: node.loc
79
62
  };
80
63
  }
81
-
82
64
  static traverse(node, options) {
83
65
  new SimpleTraverser().traverse(node, options);
84
66
  }
85
-
86
67
  }
87
-
88
68
  exports.SimpleTraverser = SimpleTraverser;
89
69
  SimpleTraverser.Break = SimpleTraverserBreak;
90
70
  SimpleTraverser.Skip = SimpleTraverserSkip;
@@ -5,25 +5,19 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getVisitorKeys = getVisitorKeys;
7
7
  exports.isNode = isNode;
8
-
9
8
  var _ESTreeVisitorKeys = _interopRequireDefault(require("../generated/ESTreeVisitorKeys"));
10
-
11
- function _interopRequireDefault(obj) {
12
- return obj && obj.__esModule ? obj : {
13
- default: obj
9
+ function _interopRequireDefault(e) {
10
+ return e && e.__esModule ? e : {
11
+ default: e
14
12
  };
15
13
  }
16
-
17
14
  function isNode(thing) {
18
15
  return typeof thing === 'object' && thing != null && typeof thing.type === 'string';
19
16
  }
20
-
21
17
  function getVisitorKeys(node, visitorKeys) {
22
18
  const keys = (visitorKeys != null ? visitorKeys : _ESTreeVisitorKeys.default)[node.type];
23
-
24
19
  if (keys == null) {
25
20
  throw new Error(`No visitor keys found for node type "${node.type}".`);
26
21
  }
27
-
28
22
  return keys;
29
23
  }
@@ -17,16 +17,13 @@ exports.stringLiteral = stringLiteral;
17
17
  exports.throwStatement = throwStatement;
18
18
  exports.typeofExpression = typeofExpression;
19
19
  exports.variableDeclaration = variableDeclaration;
20
- const EMPTY_PARENT = null;
21
- exports.EMPTY_PARENT = EMPTY_PARENT;
22
-
20
+ const EMPTY_PARENT = exports.EMPTY_PARENT = null;
23
21
  function createDefaultPosition() {
24
22
  return {
25
23
  line: 1,
26
24
  column: 0
27
25
  };
28
26
  }
29
-
30
27
  function etc({
31
28
  loc,
32
29
  range,
@@ -41,7 +38,6 @@ function etc({
41
38
  parent: parent != null ? parent : EMPTY_PARENT
42
39
  };
43
40
  }
44
-
45
41
  function ident(name, info) {
46
42
  return {
47
43
  type: 'Identifier',
@@ -51,7 +47,6 @@ function ident(name, info) {
51
47
  ...etc(info)
52
48
  };
53
49
  }
54
-
55
50
  function stringLiteral(value, info) {
56
51
  return {
57
52
  type: 'Literal',
@@ -61,7 +56,6 @@ function stringLiteral(value, info) {
61
56
  ...etc(info)
62
57
  };
63
58
  }
64
-
65
59
  function numberLiteral(value, info) {
66
60
  return {
67
61
  type: 'Literal',
@@ -71,7 +65,6 @@ function numberLiteral(value, info) {
71
65
  ...etc(info)
72
66
  };
73
67
  }
74
-
75
68
  function nullLiteral(info) {
76
69
  return {
77
70
  type: 'Literal',
@@ -81,12 +74,10 @@ function nullLiteral(info) {
81
74
  ...etc(info)
82
75
  };
83
76
  }
84
-
85
77
  function conjunction(tests) {
86
78
  if (tests.length === 0) {
87
79
  throw new Error('Must have at least one test.');
88
80
  }
89
-
90
81
  return tests.reduce((acc, test) => ({
91
82
  type: 'LogicalExpression',
92
83
  left: acc,
@@ -95,12 +86,10 @@ function conjunction(tests) {
95
86
  ...etc()
96
87
  }));
97
88
  }
98
-
99
89
  function disjunction(tests) {
100
90
  if (tests.length === 0) {
101
91
  throw new Error('Must have at least one test.');
102
92
  }
103
-
104
93
  return tests.reduce((acc, test) => ({
105
94
  type: 'LogicalExpression',
106
95
  left: acc,
@@ -109,7 +98,6 @@ function disjunction(tests) {
109
98
  ...etc()
110
99
  }));
111
100
  }
112
-
113
101
  function variableDeclaration(kind, id, init, info) {
114
102
  return {
115
103
  type: 'VariableDeclaration',
@@ -124,7 +112,6 @@ function variableDeclaration(kind, id, init, info) {
124
112
  ...etc(info)
125
113
  };
126
114
  }
127
-
128
115
  function callExpression(callee, args, info) {
129
116
  return {
130
117
  type: 'CallExpression',
@@ -135,7 +122,6 @@ function callExpression(callee, args, info) {
135
122
  ...etc(info)
136
123
  };
137
124
  }
138
-
139
125
  function throwStatement(arg, info) {
140
126
  return {
141
127
  type: 'ThrowStatement',
@@ -143,7 +129,6 @@ function throwStatement(arg, info) {
143
129
  ...etc(info)
144
130
  };
145
131
  }
146
-
147
132
  function iife(statements, params = [], args = []) {
148
133
  const callee = {
149
134
  type: 'ArrowFunctionExpression',
@@ -163,7 +148,6 @@ function iife(statements, params = [], args = []) {
163
148
  };
164
149
  return callExpression(callee, args);
165
150
  }
166
-
167
151
  function typeofExpression(arg, kind) {
168
152
  return {
169
153
  type: 'BinaryExpression',
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  const genPrefix = '$$gen$';
8
-
9
8
  class GenID {
10
9
  constructor(uniqueTransformPrefix) {
11
10
  this.genN = 0;
@@ -13,25 +12,19 @@ class GenID {
13
12
  this.prefix = void 0;
14
13
  this.prefix = `${genPrefix}${uniqueTransformPrefix}`;
15
14
  }
16
-
17
15
  id() {
18
16
  let name;
19
-
20
17
  do {
21
18
  name = `${this.prefix}${this.genN}`;
22
19
  this.genN++;
23
20
  } while (this.used.has(name));
24
-
25
21
  this.used.add(name);
26
22
  return name;
27
23
  }
28
-
29
24
  addUsage(name) {
30
25
  if (name.startsWith(this.prefix)) {
31
26
  this.used.add(name);
32
27
  }
33
28
  }
34
-
35
29
  }
36
-
37
30
  exports.default = GenID;
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createSyntaxError = createSyntaxError;
7
-
8
7
  function createSyntaxError(node, err) {
9
8
  const syntaxError = new SyntaxError(err);
10
9
  syntaxError.loc = {
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = isReservedWord;
7
-
8
7
  function isReservedWord(name) {
9
8
  switch (name) {
10
9
  case 'await':
@@ -46,7 +45,6 @@ function isReservedWord(name) {
46
45
  case 'with':
47
46
  case 'yield':
48
47
  return true;
49
-
50
48
  default:
51
49
  return false;
52
50
  }
@@ -4,82 +4,67 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = mutate;
7
-
8
7
  var _SimpleTransform = require("../transform/SimpleTransform");
9
-
10
8
  function transformChainExpression(node, comments) {
11
9
  if (comments != null) {
12
10
  var _node$comments;
13
-
14
11
  const joinedComments = comments.concat((_node$comments = node.comments) != null ? _node$comments : []);
15
12
  node.comments = joinedComments;
16
13
  }
17
-
18
14
  switch (node.type) {
19
15
  case 'CallExpression':
20
- return { ...node,
16
+ return {
17
+ ...node,
21
18
  type: 'OptionalCallExpression',
22
19
  callee: transformChainExpression(node.callee)
23
20
  };
24
-
25
21
  case 'MemberExpression':
26
- return { ...node,
22
+ return {
23
+ ...node,
27
24
  type: 'OptionalMemberExpression',
28
25
  object: transformChainExpression(node.object)
29
26
  };
30
27
  }
31
-
32
28
  return node;
33
29
  }
34
-
35
30
  function mutate(rootNode, visitorKeys) {
36
31
  _SimpleTransform.SimpleTransform.transform(rootNode, {
37
32
  transform(node) {
38
33
  if (node.parent) {
39
34
  delete node.parent;
40
35
  }
41
-
42
36
  if (node.type === 'ChainExpression') {
43
37
  return transformChainExpression(node.expression, node == null ? void 0 : node.comments);
44
38
  }
45
-
46
39
  if (node.type === 'ObjectTypeProperty') {
47
40
  if (node.method === false && node.kind === 'init' && node.range[0] === 1 && node.value.range[0] === 1) {
48
- node.value = { ...node.value,
41
+ node.value = {
42
+ ...node.value,
49
43
  range: [2, node.value.range[1]]
50
44
  };
51
45
  }
52
-
53
46
  return node;
54
47
  }
55
-
56
48
  if (node.type === 'ImportSpecifier') {
57
49
  if (node.local.name === node.imported.name) {
58
50
  if (node.local.range == null) {
59
51
  node.local.range = [0, 0];
60
52
  }
61
-
62
53
  node.imported.range = [...node.local.range];
63
54
  }
64
-
65
55
  return node;
66
56
  }
67
-
68
57
  if (node.type === 'ExportSpecifier') {
69
58
  if (node.local.name === node.exported.name) {
70
59
  if (node.local.range == null) {
71
60
  node.local.range = [0, 0];
72
61
  }
73
-
74
62
  node.exported.range = [...node.local.range];
75
63
  }
76
-
77
64
  return node;
78
65
  }
79
-
80
66
  return node;
81
67
  },
82
-
83
68
  visitorKeys
84
69
  });
85
70
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flow-parser",
3
- "version": "0.321.0",
3
+ "version": "0.323.0",
4
4
  "description": "JavaScript parser written in OCaml. Produces ESTree AST",
5
5
  "homepage": "https://flow.org",
6
6
  "license": "MIT",
@@ -22,7 +22,7 @@
22
22
  "test": "node test/run_tests.js"
23
23
  },
24
24
  "dependencies": {
25
- "flow-estree": "0.321.0"
25
+ "flow-estree": "0.323.0"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@babel/generator": "7.7.4",