flow-parser 0.317.0 → 0.319.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 (102) hide show
  1. package/oxidized/FlowParser.js +249 -0
  2. package/oxidized/FlowParser.js.flow +457 -0
  3. package/oxidized/FlowParserDeserializer.js +209 -0
  4. package/oxidized/FlowParserDeserializer.js.flow +323 -0
  5. package/oxidized/FlowParserNodeDeserializers.js +1767 -0
  6. package/oxidized/FlowParserNodeDeserializers.js.flow +18 -0
  7. package/oxidized/FlowParserWASM.js +1 -0
  8. package/oxidized/FlowParserWASM.js.flow +119 -0
  9. package/oxidized/HermesAST.js.flow +57 -0
  10. package/oxidized/HermesParserDecodeUTF8String.js +45 -0
  11. package/oxidized/HermesParserDecodeUTF8String.js.flow +65 -0
  12. package/oxidized/ParserOptions.js +8 -0
  13. package/oxidized/ParserOptions.js.flow +55 -0
  14. package/oxidized/babel/TransformESTreeToBabel.js +1055 -0
  15. package/oxidized/babel/TransformESTreeToBabel.js.flow +1349 -0
  16. package/oxidized/estree/StripFlowTypes.js +158 -0
  17. package/oxidized/estree/StripFlowTypes.js.flow +158 -0
  18. package/oxidized/estree/StripFlowTypesForBabel.js +176 -0
  19. package/oxidized/estree/StripFlowTypesForBabel.js.flow +216 -0
  20. package/oxidized/estree/TransformComponentSyntax.js +751 -0
  21. package/oxidized/estree/TransformComponentSyntax.js.flow +864 -0
  22. package/oxidized/estree/TransformEnumSyntax.js +92 -0
  23. package/oxidized/estree/TransformEnumSyntax.js.flow +125 -0
  24. package/oxidized/estree/TransformMatchSyntax.js +990 -0
  25. package/oxidized/estree/TransformMatchSyntax.js.flow +991 -0
  26. package/oxidized/estree/TransformRecordSyntax.js +283 -0
  27. package/oxidized/estree/TransformRecordSyntax.js.flow +310 -0
  28. package/oxidized/generated/ESTreeVisitorKeys.js +234 -0
  29. package/oxidized/generated/ESTreeVisitorKeys.js.flow +22 -0
  30. package/oxidized/getModuleDocblock.js +87 -0
  31. package/oxidized/getModuleDocblock.js.flow +119 -0
  32. package/oxidized/index.js +220 -0
  33. package/oxidized/index.js.flow +183 -0
  34. package/oxidized/oxidized-src/FlowParser.js +249 -0
  35. package/oxidized/oxidized-src/FlowParserDeserializer.js +209 -0
  36. package/oxidized/oxidized-src/FlowParserNodeDeserializers.js +1767 -0
  37. package/oxidized/oxidized-src/HermesParserDecodeUTF8String.js +45 -0
  38. package/oxidized/oxidized-src/ParserOptions.js +8 -0
  39. package/oxidized/oxidized-src/babel/TransformESTreeToBabel.js +1055 -0
  40. package/oxidized/oxidized-src/estree/StripFlowTypes.js +158 -0
  41. package/oxidized/oxidized-src/estree/StripFlowTypesForBabel.js +176 -0
  42. package/oxidized/oxidized-src/estree/TransformComponentSyntax.js +751 -0
  43. package/oxidized/oxidized-src/estree/TransformEnumSyntax.js +92 -0
  44. package/oxidized/oxidized-src/estree/TransformMatchSyntax.js +990 -0
  45. package/oxidized/oxidized-src/estree/TransformRecordSyntax.js +283 -0
  46. package/oxidized/oxidized-src/generated/ESTreeVisitorKeys.js +234 -0
  47. package/oxidized/oxidized-src/getModuleDocblock.js +87 -0
  48. package/oxidized/oxidized-src/index.js +220 -0
  49. package/oxidized/oxidized-src/transform/SimpleTransform.js +95 -0
  50. package/oxidized/oxidized-src/transform/astArrayMutationHelpers.js +52 -0
  51. package/oxidized/oxidized-src/transform/astNodeMutationHelpers.js +142 -0
  52. package/oxidized/oxidized-src/transform/print/comments/comments.js +245 -0
  53. package/oxidized/oxidized-src/transform/print/comments/prettier/common/util.js +235 -0
  54. package/oxidized/oxidized-src/transform/print/comments/prettier/language-js/comments.js +663 -0
  55. package/oxidized/oxidized-src/transform/print/comments/prettier/language-js/loc.js +30 -0
  56. package/oxidized/oxidized-src/transform/print/comments/prettier/language-js/printer-estree.js +23 -0
  57. package/oxidized/oxidized-src/transform/print/comments/prettier/language-js/utils.js +89 -0
  58. package/oxidized/oxidized-src/transform/print/comments/prettier/main/comments.js +374 -0
  59. package/oxidized/oxidized-src/transform/print/comments/prettier/utils/get-last.js +5 -0
  60. package/oxidized/oxidized-src/transform/print/detachedNodeTypes.js +1 -0
  61. package/oxidized/oxidized-src/transform/print/print.js +68 -0
  62. package/oxidized/oxidized-src/traverse/SimpleTraverser.js +90 -0
  63. package/oxidized/oxidized-src/traverse/getVisitorKeys.js +29 -0
  64. package/oxidized/oxidized-src/utils/Builders.js +181 -0
  65. package/oxidized/oxidized-src/utils/GenID.js +37 -0
  66. package/oxidized/oxidized-src/utils/createSyntaxError.js +15 -0
  67. package/oxidized/oxidized-src/utils/isReservedWord.js +53 -0
  68. package/oxidized/oxidized-src/utils/mutateESTreeASTForPrettier.js +85 -0
  69. package/oxidized/transform/SimpleTransform.js +95 -0
  70. package/oxidized/transform/SimpleTransform.js.flow +168 -0
  71. package/oxidized/transform/astArrayMutationHelpers.js +52 -0
  72. package/oxidized/transform/astArrayMutationHelpers.js.flow +71 -0
  73. package/oxidized/transform/astNodeMutationHelpers.js +142 -0
  74. package/oxidized/transform/astNodeMutationHelpers.js.flow +252 -0
  75. package/oxidized/transform/print/comments/comments.js +245 -0
  76. package/oxidized/transform/print/comments/comments.js.flow +330 -0
  77. package/oxidized/transform/print/comments/prettier/common/util.js +235 -0
  78. package/oxidized/transform/print/comments/prettier/language-js/comments.js +663 -0
  79. package/oxidized/transform/print/comments/prettier/language-js/loc.js +30 -0
  80. package/oxidized/transform/print/comments/prettier/language-js/printer-estree.js +23 -0
  81. package/oxidized/transform/print/comments/prettier/language-js/utils.js +89 -0
  82. package/oxidized/transform/print/comments/prettier/main/comments.js +374 -0
  83. package/oxidized/transform/print/comments/prettier/utils/get-last.js +5 -0
  84. package/oxidized/transform/print/detachedNodeTypes.js +1 -0
  85. package/oxidized/transform/print/detachedNodeTypes.js.flow +24 -0
  86. package/oxidized/transform/print/print.js +68 -0
  87. package/oxidized/transform/print/print.js.flow +87 -0
  88. package/oxidized/traverse/SimpleTraverser.js +90 -0
  89. package/oxidized/traverse/SimpleTraverser.js.flow +133 -0
  90. package/oxidized/traverse/getVisitorKeys.js +29 -0
  91. package/oxidized/traverse/getVisitorKeys.js.flow +36 -0
  92. package/oxidized/utils/Builders.js +181 -0
  93. package/oxidized/utils/Builders.js.flow +218 -0
  94. package/oxidized/utils/GenID.js +37 -0
  95. package/oxidized/utils/GenID.js.flow +39 -0
  96. package/oxidized/utils/createSyntaxError.js +15 -0
  97. package/oxidized/utils/createSyntaxError.js.flow +24 -0
  98. package/oxidized/utils/isReservedWord.js +53 -0
  99. package/oxidized/utils/isReservedWord.js.flow +57 -0
  100. package/oxidized/utils/mutateESTreeASTForPrettier.js +85 -0
  101. package/oxidized/utils/mutateESTreeASTForPrettier.js.flow +130 -0
  102. package/package.json +16 -6
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ * @format
9
+ */
10
+
11
+ type INTENTIONAL_ANY = $FlowFixMe;
12
+ type JSType = 'number' | 'string' | 'array' | 'boolean';
13
+ type CBoolean = ?(number | boolean);
14
+
15
+ type WASMModuleOverrides = Readonly<{
16
+ quit(status: number, toThrow: Error): void,
17
+ }>;
18
+
19
+ // Flow Rust WASM parser exports the same C ABI as Hermes
20
+ export type FlowParserWASM = Readonly<{
21
+ HEAP8: Int8Array,
22
+ HEAP16: Int16Array,
23
+ HEAP32: Int32Array,
24
+ HEAPU8: Uint8Array,
25
+ HEAPU16: Uint16Array,
26
+ HEAPU32: Uint32Array,
27
+ HEAPF32: Float32Array,
28
+ HEAPF64: Float64Array,
29
+
30
+ _malloc(size: number): number,
31
+ _free(ptr: number): void,
32
+
33
+ ccall(
34
+ ident: string,
35
+ returnType: JSType | null,
36
+ argTypes: ReadonlyArray<JSType>,
37
+ args: ReadonlyArray<
38
+ number | string | ReadonlyArray<INTENTIONAL_ANY> | boolean,
39
+ >,
40
+ opts?: Readonly<{
41
+ async?: boolean | void,
42
+ }>,
43
+ ): INTENTIONAL_ANY,
44
+ cwrap: {
45
+ (
46
+ 'hermesParse',
47
+ 'number',
48
+ [
49
+ 'number',
50
+ 'number',
51
+ 'number',
52
+ 'number',
53
+ 'number',
54
+ 'number',
55
+ 'number',
56
+ 'number',
57
+ 'number',
58
+ 'number',
59
+ 'number',
60
+ 'number',
61
+ 'number',
62
+ 'number',
63
+ 'number',
64
+ 'number',
65
+ ],
66
+ ): (
67
+ number,
68
+ number,
69
+ number,
70
+ number,
71
+ CBoolean,
72
+ CBoolean,
73
+ CBoolean,
74
+ CBoolean,
75
+ CBoolean,
76
+ CBoolean,
77
+ CBoolean,
78
+ CBoolean,
79
+ CBoolean,
80
+ number,
81
+ CBoolean,
82
+ CBoolean,
83
+ ) => number,
84
+ ('hermesParseResult_free', 'void', ['number']): number => void,
85
+ ('hermesParseResult_getError', 'string', ['number']): number => string,
86
+ ('hermesParseResult_getErrorLine', 'number', ['number']): number => number,
87
+ (
88
+ 'hermesParseResult_getErrorColumn',
89
+ 'number',
90
+ ['number'],
91
+ ): number => number,
92
+ (
93
+ 'hermesParseResult_getProgramBuffer',
94
+ 'number',
95
+ ['number'],
96
+ ): number => number,
97
+ (
98
+ 'hermesParseResult_getPositionBuffer',
99
+ 'number',
100
+ ['number'],
101
+ ): number => number,
102
+ (
103
+ 'hermesParseResult_getPositionBufferSize',
104
+ 'number',
105
+ ['number'],
106
+ ): number => number,
107
+ (
108
+ 'hermesParseResult_getStringBuffer',
109
+ 'number',
110
+ ['number'],
111
+ ): number => number,
112
+ },
113
+
114
+ stackAlloc(size: number): number,
115
+ stackSave(): number,
116
+ stackRestore(ptr: number): void,
117
+ }>;
118
+
119
+ declare module.exports: WASMModuleOverrides => FlowParserWASM;
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ * @format
9
+ */
10
+
11
+ // flowlint unclear-type:off
12
+
13
+ export type HermesPosition = {
14
+ /** >= 1 */
15
+ +line: number,
16
+ /** >= 0 */
17
+ +column: number,
18
+ };
19
+ export type HermesSourceLocation = {
20
+ start?: HermesPosition,
21
+ end?: HermesPosition,
22
+ rangeStart?: number,
23
+ rangeEnd?: number,
24
+ };
25
+ export type HermesNode = {
26
+ type: string,
27
+ [string]: any,
28
+ };
29
+ export type HermesToken = {
30
+ type:
31
+ | 'Boolean'
32
+ | 'Identifier'
33
+ | 'Keyword'
34
+ | 'Null'
35
+ | 'Numeric'
36
+ | 'BigInt'
37
+ | 'Punctuator'
38
+ | 'String'
39
+ | 'RegularExpression'
40
+ | 'Template'
41
+ | 'JSXText',
42
+ loc: HermesSourceLocation,
43
+ value: ?string,
44
+ };
45
+ export type HermesComment = {
46
+ type: 'CommentLine' | 'CommentBlock' | 'InterpreterDirective',
47
+ loc: HermesSourceLocation,
48
+ value: ?string,
49
+ };
50
+ export type HermesProgram = {
51
+ type: 'Program',
52
+ loc: HermesSourceLocation,
53
+ body: Array<?HermesNode>,
54
+ comments: Array<HermesComment>,
55
+ tokens?: Array<HermesToken>,
56
+ interpreter?: ?HermesComment,
57
+ };
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = HermesParserDecodeUTF8String;
7
+
8
+ function HermesParserDecodeUTF8String(ptrIn, length, heap) {
9
+ let ptr = ptrIn;
10
+ const endPtr = ptr + length;
11
+ let str = '';
12
+
13
+ while (ptr < endPtr) {
14
+ let u0 = heap[ptr++];
15
+
16
+ if (!(u0 & 0x80)) {
17
+ str += String.fromCharCode(u0);
18
+ continue;
19
+ }
20
+
21
+ const u1 = heap[ptr++] & 0x3f;
22
+
23
+ if ((u0 & 0xe0) === 0xc0) {
24
+ str += String.fromCharCode((u0 & 0x1f) << 6 | u1);
25
+ continue;
26
+ }
27
+
28
+ const u2 = heap[ptr++] & 0x3f;
29
+
30
+ if ((u0 & 0xf0) === 0xe0) {
31
+ u0 = (u0 & 0x0f) << 12 | u1 << 6 | u2;
32
+ } else {
33
+ u0 = (u0 & 0x07) << 18 | u1 << 12 | u2 << 6 | heap[ptr++] & 0x3f;
34
+ }
35
+
36
+ if (u0 < 0x10000) {
37
+ str += String.fromCharCode(u0);
38
+ } else {
39
+ u0 -= 0x10000;
40
+ str += String.fromCharCode(0xd800 | u0 >> 10, 0xdc00 | u0 & 0x3ff);
41
+ }
42
+ }
43
+
44
+ return str;
45
+ }
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ * @format
9
+ */
10
+
11
+ 'use strict';
12
+
13
+ /**
14
+ * Decode a UTF-8 encoded string from Hermes with a known length.
15
+ * Based on Emscripten's UTF8ToString with the following differences:
16
+ * - Always reads all bytes up to the given length, including null bytes. This
17
+ * means that we can decode strings that contain null bytes in the middle.
18
+ * - Allow UTF-8 encoded code points that are part of a surrogate pair, even though
19
+ * this is technically invalid UTF-8 that UTF8ToString would convert to 0xfffd.
20
+ */
21
+ export default function HermesParserDecodeUTF8String(
22
+ ptrIn: number,
23
+ length: number,
24
+ heap: Uint8Array,
25
+ ): string {
26
+ let ptr = ptrIn;
27
+ const endPtr = ptr + length;
28
+ let str = '';
29
+
30
+ while (ptr < endPtr) {
31
+ // ASCII characters fit in single byte code point
32
+ let u0 = heap[ptr++];
33
+ if (!(u0 & 0x80)) {
34
+ str += String.fromCharCode(u0);
35
+ continue;
36
+ }
37
+
38
+ // Two byte code point
39
+ const u1 = heap[ptr++] & 0x3f;
40
+ if ((u0 & 0xe0) === 0xc0) {
41
+ str += String.fromCharCode(((u0 & 0x1f) << 6) | u1);
42
+ continue;
43
+ }
44
+
45
+ const u2 = heap[ptr++] & 0x3f;
46
+ if ((u0 & 0xf0) === 0xe0) {
47
+ // Three byte code point
48
+ u0 = ((u0 & 0x0f) << 12) | (u1 << 6) | u2;
49
+ } else {
50
+ // Four byte code point
51
+ u0 = ((u0 & 0x07) << 18) | (u1 << 12) | (u2 << 6) | (heap[ptr++] & 0x3f);
52
+ }
53
+
54
+ if (u0 < 0x10000) {
55
+ // Code point fits into a single UTF-16 code unit
56
+ str += String.fromCharCode(u0);
57
+ } else {
58
+ // Code point does not fit into single UTF-16 code unit so convert to surrogate pair
59
+ u0 -= 0x10000;
60
+ str += String.fromCharCode(0xd800 | (u0 >> 10), 0xdc00 | (u0 & 0x3ff));
61
+ }
62
+ }
63
+
64
+ return str;
65
+ }
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ParserOptionsKeys = void 0;
7
+ const ParserOptionsKeys = new Set(['allowReturnOutsideFunction', 'assertOperator', 'babel', 'flow', 'enableExperimentalComponentSyntax', 'enableExperimentalFlowMatchSyntax', 'enableExperimentalFlowRecordSyntax', 'reactRuntimeTarget', 'sourceFilename', 'sourceType', 'throwOnParseErrors', 'tokens', 'transformOptions']);
8
+ exports.ParserOptionsKeys = ParserOptionsKeys;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ * @noformat
9
+ */
10
+
11
+ 'use strict';
12
+
13
+ import type {Expression} from 'flow-estree';
14
+
15
+ export type ParserOptions = {
16
+ allowReturnOutsideFunction?: boolean,
17
+ assertOperator?: boolean,
18
+ babel?: boolean,
19
+ flow?: 'all' | 'detect',
20
+ enableExperimentalComponentSyntax?: boolean,
21
+ enableExperimentalDecorators?: boolean,
22
+ enableExperimentalFlowMatchSyntax?: boolean,
23
+ enableExperimentalFlowRecordSyntax?: boolean,
24
+ enableEnums?: boolean,
25
+ enableRecords?: boolean,
26
+ enableTypes?: boolean,
27
+ enableTypesPragmaDetection?: boolean,
28
+ reactRuntimeTarget?: '18' | '19',
29
+ sourceFilename?: string,
30
+ sourceType?: 'module' | 'script' | 'unambiguous',
31
+ throwOnParseErrors?: boolean,
32
+ tokens?: boolean,
33
+ transformOptions?: {
34
+ +TransformEnumSyntax?: {
35
+ +enable: boolean,
36
+ +getRuntime?: () => Expression,
37
+ },
38
+ },
39
+ };
40
+
41
+ export const ParserOptionsKeys /*: ReadonlySet<keyof ParserOptions> */ = new Set([
42
+ 'allowReturnOutsideFunction',
43
+ 'assertOperator',
44
+ 'babel',
45
+ 'flow',
46
+ 'enableExperimentalComponentSyntax',
47
+ 'enableExperimentalFlowMatchSyntax',
48
+ 'enableExperimentalFlowRecordSyntax',
49
+ 'reactRuntimeTarget',
50
+ 'sourceFilename',
51
+ 'sourceType',
52
+ 'throwOnParseErrors',
53
+ 'tokens',
54
+ 'transformOptions',
55
+ ]);