hermes-transform 0.10.1 → 0.11.1
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.
- package/dist/detachedNode.js +16 -0
- package/dist/detachedNode.js.flow +14 -0
- package/dist/generated/TransformCloneSignatures.js.flow +154 -0
- package/dist/generated/TransformModifySignatures.js.flow +98 -0
- package/dist/generated/TransformReplaceSignatures.js.flow +98 -0
- package/dist/generated/node-types.js +419 -481
- package/dist/generated/node-types.js.flow +554 -490
- package/dist/generated/special-case-node-types/misc.js +15 -0
- package/dist/generated/special-case-node-types/misc.js.flow +23 -0
- package/dist/index.js +2 -1
- package/dist/index.js.flow +4 -1
- package/dist/transform/comments/comments.js +22 -15
- package/dist/transform/comments/comments.js.flow +24 -13
- package/package.json +4 -4
|
@@ -7,6 +7,7 @@ exports.ArrowFunctionExpression = ArrowFunctionExpression;
|
|
|
7
7
|
exports.ClassDeclaration = ClassDeclaration;
|
|
8
8
|
exports.DeclareFunction = DeclareFunction;
|
|
9
9
|
exports.Identifier = Identifier;
|
|
10
|
+
exports.MemberExpression = MemberExpression;
|
|
10
11
|
exports.Program = Program;
|
|
11
12
|
exports.TemplateElement = TemplateElement;
|
|
12
13
|
|
|
@@ -116,4 +117,18 @@ function DeclareFunction(props) {
|
|
|
116
117
|
});
|
|
117
118
|
(0, _detachedNode.setParentPointersInDirectChildren)(node);
|
|
118
119
|
return node;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function MemberExpression(props) {
|
|
123
|
+
var _props$optional2;
|
|
124
|
+
|
|
125
|
+
const node = (0, _detachedNode.detachedProps)(props.parent, {
|
|
126
|
+
type: 'MemberExpression',
|
|
127
|
+
object: (0, _detachedNode.asDetachedNode)(props.object),
|
|
128
|
+
property: (0, _detachedNode.asDetachedNode)(props.property),
|
|
129
|
+
computed: props.computed,
|
|
130
|
+
optional: (_props$optional2 = props.optional) != null ? _props$optional2 : false
|
|
131
|
+
});
|
|
132
|
+
(0, _detachedNode.setParentPointersInDirectChildren)(node);
|
|
133
|
+
return node;
|
|
119
134
|
}
|
|
@@ -21,6 +21,7 @@ import type {
|
|
|
21
21
|
TemplateElement as TemplateElementType,
|
|
22
22
|
Program as ProgramType,
|
|
23
23
|
DocblockMetadata as DocblockMetadataType,
|
|
24
|
+
MemberExpression as MemberExpressionType,
|
|
24
25
|
} from 'hermes-estree';
|
|
25
26
|
import type {DetachedNode, MaybeDetachedNode} from '../../detachedNode';
|
|
26
27
|
|
|
@@ -203,3 +204,25 @@ export function DeclareFunction(props: {
|
|
|
203
204
|
setParentPointersInDirectChildren(node);
|
|
204
205
|
return node;
|
|
205
206
|
}
|
|
207
|
+
|
|
208
|
+
export type MemberExpressionProps = {
|
|
209
|
+
+object: MaybeDetachedNode<MemberExpressionType['object']>,
|
|
210
|
+
+property: MaybeDetachedNode<MemberExpressionType['property']>,
|
|
211
|
+
+computed: MemberExpressionType['computed'],
|
|
212
|
+
+optional?: MemberExpressionType['optional'],
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
export function MemberExpression(props: {
|
|
216
|
+
...$ReadOnly<MemberExpressionProps>,
|
|
217
|
+
+parent?: ESNode,
|
|
218
|
+
}): DetachedNode<MemberExpressionType> {
|
|
219
|
+
const node = detachedProps<MemberExpressionType>(props.parent, {
|
|
220
|
+
type: 'MemberExpression',
|
|
221
|
+
object: asDetachedNode(props.object),
|
|
222
|
+
property: asDetachedNode(props.property),
|
|
223
|
+
computed: props.computed,
|
|
224
|
+
optional: props.optional ?? false,
|
|
225
|
+
});
|
|
226
|
+
setParentPointersInDirectChildren(node);
|
|
227
|
+
return node;
|
|
228
|
+
}
|
package/dist/index.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
Object.defineProperty(exports, "__esModule", {
|
|
13
13
|
value: true
|
|
14
14
|
});
|
|
15
|
-
exports.traverseWithContext = exports.traverse = exports.transform = exports.t = exports.print = exports.parse = exports.cloneJSDocCommentsToNewNode = exports.asDetachedNode = exports.SimpleTraverser = void 0;
|
|
15
|
+
exports.traverseWithContext = exports.traverse = exports.transform = exports.t = exports.print = exports.parse = exports.makeCommentOwnLine = exports.cloneJSDocCommentsToNewNode = exports.asDetachedNode = exports.SimpleTraverser = void 0;
|
|
16
16
|
|
|
17
17
|
var _hermesParser = require("hermes-parser");
|
|
18
18
|
|
|
@@ -46,6 +46,7 @@ exports.asDetachedNode = _detachedNode.asDetachedNode;
|
|
|
46
46
|
var _comments = require("./transform/comments/comments");
|
|
47
47
|
|
|
48
48
|
exports.cloneJSDocCommentsToNewNode = _comments.cloneJSDocCommentsToNewNode;
|
|
49
|
+
exports.makeCommentOwnLine = _comments.makeCommentOwnLine;
|
|
49
50
|
|
|
50
51
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
51
52
|
|
package/dist/index.js.flow
CHANGED
|
@@ -22,4 +22,7 @@ export {parse} from './transform/parse';
|
|
|
22
22
|
export {print} from './transform/print';
|
|
23
23
|
export * as t from './generated/node-types';
|
|
24
24
|
export {asDetachedNode} from './detachedNode';
|
|
25
|
-
export {
|
|
25
|
+
export {
|
|
26
|
+
cloneJSDocCommentsToNewNode,
|
|
27
|
+
makeCommentOwnLine,
|
|
28
|
+
} from './transform/comments/comments';
|
|
@@ -16,6 +16,7 @@ exports.getLeadingCommentsForNode = getLeadingCommentsForNode;
|
|
|
16
16
|
exports.getTrailingCommentsForNode = getTrailingCommentsForNode;
|
|
17
17
|
exports.isLeadingComment = isLeadingComment;
|
|
18
18
|
exports.isTrailingComment = isTrailingComment;
|
|
19
|
+
exports.makeCommentOwnLine = makeCommentOwnLine;
|
|
19
20
|
exports.moveCommentsToNewNode = moveCommentsToNewNode;
|
|
20
21
|
exports.setCommentsOnNode = setCommentsOnNode;
|
|
21
22
|
|
|
@@ -67,7 +68,7 @@ function cloneJSDocCommentsToNewNode(oldNode, newNode) {
|
|
|
67
68
|
return (0, _hermesEstree.isBlockComment)(comment) && // JSDoc comments always start with an extra asterisk
|
|
68
69
|
comment.value.startsWith('*');
|
|
69
70
|
});
|
|
70
|
-
setCommentsOnNode(newNode, comments.map(cloneCommentWithMarkers));
|
|
71
|
+
setCommentsOnNode(newNode, [...getCommentsForNode(newNode), ...comments.map(cloneCommentWithMarkers)]);
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
function setCommentsOnNode(node, comments) {
|
|
@@ -165,6 +166,25 @@ function getFirstNonWhitespaceIndex(code) {
|
|
|
165
166
|
return code.search(/\S/);
|
|
166
167
|
}
|
|
167
168
|
|
|
169
|
+
function makeCommentOwnLine(code, comment) {
|
|
170
|
+
let newCode = code; // Since we always want a line break we need to ensure a newline is found when
|
|
171
|
+
// searching out from either side of the comment range.
|
|
172
|
+
|
|
173
|
+
let firstNewline = getFirstNewlineIndex(code);
|
|
174
|
+
|
|
175
|
+
if (firstNewline === -1) {
|
|
176
|
+
// No newline in file, lets add one.
|
|
177
|
+
newCode += _os.EOL;
|
|
178
|
+
firstNewline = newCode.length;
|
|
179
|
+
} // Prettier only uses these ranges for detecting whitespace, so this nonsensical
|
|
180
|
+
// range is safe.
|
|
181
|
+
// $FlowExpectedError[cannot-write]
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
comment.range = [firstNewline + 1, firstNewline];
|
|
185
|
+
return newCode;
|
|
186
|
+
}
|
|
187
|
+
|
|
168
188
|
function appendCommentToSource(code, comment, placement) {
|
|
169
189
|
let newCode = code;
|
|
170
190
|
|
|
@@ -180,20 +200,7 @@ function appendCommentToSource(code, comment, placement) {
|
|
|
180
200
|
case CommentPlacement.LEADING_OWN_LINE:
|
|
181
201
|
case CommentPlacement.TRAILING_OWN_LINE:
|
|
182
202
|
{
|
|
183
|
-
|
|
184
|
-
// searching out from either side of the comment range.
|
|
185
|
-
let firstNewline = getFirstNewlineIndex(code);
|
|
186
|
-
|
|
187
|
-
if (firstNewline === -1) {
|
|
188
|
-
// No newline in file, lets add one.
|
|
189
|
-
newCode += _os.EOL;
|
|
190
|
-
firstNewline = newCode.length;
|
|
191
|
-
} // Prettier only uses these ranges for detecting whitespace, so this nonsensical
|
|
192
|
-
// range is safe.
|
|
193
|
-
// $FlowExpectedError[cannot-write]
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
comment.range = [firstNewline + 1, firstNewline];
|
|
203
|
+
newCode = makeCommentOwnLine(code, comment);
|
|
197
204
|
break;
|
|
198
205
|
}
|
|
199
206
|
|
|
@@ -66,7 +66,10 @@ export function cloneJSDocCommentsToNewNode(
|
|
|
66
66
|
comment.value.startsWith('*')
|
|
67
67
|
);
|
|
68
68
|
});
|
|
69
|
-
setCommentsOnNode(newNode,
|
|
69
|
+
setCommentsOnNode(newNode, [
|
|
70
|
+
...getCommentsForNode(newNode),
|
|
71
|
+
...comments.map(cloneCommentWithMarkers),
|
|
72
|
+
]);
|
|
70
73
|
}
|
|
71
74
|
|
|
72
75
|
export function setCommentsOnNode(
|
|
@@ -172,6 +175,25 @@ function getFirstNonWhitespaceIndex(code: string): number {
|
|
|
172
175
|
return code.search(/\S/);
|
|
173
176
|
}
|
|
174
177
|
|
|
178
|
+
export function makeCommentOwnLine(code: string, comment: Comment): string {
|
|
179
|
+
let newCode = code;
|
|
180
|
+
// Since we always want a line break we need to ensure a newline is found when
|
|
181
|
+
// searching out from either side of the comment range.
|
|
182
|
+
let firstNewline = getFirstNewlineIndex(code);
|
|
183
|
+
if (firstNewline === -1) {
|
|
184
|
+
// No newline in file, lets add one.
|
|
185
|
+
newCode += EOL;
|
|
186
|
+
firstNewline = newCode.length;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Prettier only uses these ranges for detecting whitespace, so this nonsensical
|
|
190
|
+
// range is safe.
|
|
191
|
+
// $FlowExpectedError[cannot-write]
|
|
192
|
+
comment.range = [firstNewline + 1, firstNewline];
|
|
193
|
+
|
|
194
|
+
return newCode;
|
|
195
|
+
}
|
|
196
|
+
|
|
175
197
|
export function appendCommentToSource(
|
|
176
198
|
code: string,
|
|
177
199
|
comment: Comment,
|
|
@@ -188,18 +210,7 @@ export function appendCommentToSource(
|
|
|
188
210
|
switch (placement) {
|
|
189
211
|
case CommentPlacement.LEADING_OWN_LINE:
|
|
190
212
|
case CommentPlacement.TRAILING_OWN_LINE: {
|
|
191
|
-
|
|
192
|
-
// searching out from either side of the comment range.
|
|
193
|
-
let firstNewline = getFirstNewlineIndex(code);
|
|
194
|
-
if (firstNewline === -1) {
|
|
195
|
-
// No newline in file, lets add one.
|
|
196
|
-
newCode += EOL;
|
|
197
|
-
firstNewline = newCode.length;
|
|
198
|
-
}
|
|
199
|
-
// Prettier only uses these ranges for detecting whitespace, so this nonsensical
|
|
200
|
-
// range is safe.
|
|
201
|
-
// $FlowExpectedError[cannot-write]
|
|
202
|
-
comment.range = [firstNewline + 1, firstNewline];
|
|
213
|
+
newCode = makeCommentOwnLine(code, comment);
|
|
203
214
|
break;
|
|
204
215
|
}
|
|
205
216
|
case CommentPlacement.LEADING_INLINE:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hermes-transform",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.1",
|
|
4
4
|
"description": "Tools built on top of Hermes-ESTree to enable codebase transformation",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"license": "MIT",
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
"@babel/code-frame": "^7.16.0",
|
|
13
13
|
"esquery": "^1.4.0",
|
|
14
14
|
"flow-enums-runtime": "^0.0.6",
|
|
15
|
-
"hermes-eslint": "0.
|
|
16
|
-
"hermes-estree": "0.
|
|
17
|
-
"hermes-parser": "0.
|
|
15
|
+
"hermes-eslint": "0.11.1",
|
|
16
|
+
"hermes-estree": "0.11.1",
|
|
17
|
+
"hermes-parser": "0.11.1"
|
|
18
18
|
},
|
|
19
19
|
"peerDependencies": {
|
|
20
20
|
"prettier": "^2.7.1"
|