es6 compatable enums (#1229)

Summary:
I wanna repeat the constants export in `yoga-wasm-web`, to achieve

```js
import { ALIGN_CENTER } from "yoga-layout";
```

And I failed. it is impossible because `rollup` and other tools can't transform commonjs `module.exports = { WHATEVER: 1 }` into ECMAScript modules. however, they can work with separate exports like `exports.WHATEVER = 1` and this PR transforms yoga constants into this convertible format

This doesn't change anything for the yoga package, but it makes it possible to reexport constants without any modification and hacks, like this

```js
export * from "./javascript/src_js/generated/YGEnums.js";
```

[discussion in yoga-layout-wasm](https://github.com/shuding/yoga-wasm-web/pull/15)

Pull Request resolved: https://github.com/facebook/yoga/pull/1229

Reviewed By: NickGerleman

Differential Revision: D43437177

Pulled By: rshest

fbshipit-source-id: bfe1404d1b48779f404e6510f2aafadd7fd4e774
This commit is contained in:
Dmitry Ivakhnenko
2023-02-20 19:54:03 -08:00
committed by Facebook GitHub Bot
parent 220d2582c9
commit 13eacf8858
3 changed files with 69 additions and 72 deletions

View File

@@ -228,7 +228,6 @@ for name, values in sorted(ENUMS.items()):
# write out javascript file
with open(root + "/javascript/src_js/generated/YGEnums.js", "w") as f:
f.write(get_license("js"))
f.write("module.exports = {\n")
items = sorted(ENUMS.items())
for name, values in items:
base = 0
@@ -237,14 +236,13 @@ with open(root + "/javascript/src_js/generated/YGEnums.js", "w") as f:
ordinal_arg = value[1] if isinstance(value, tuple) else base
f.write(
" %s_%s: %d,\n"
"exports.%s_%s = %d;\n"
% (to_java_upper(name), to_java_upper(value_arg), ordinal_arg)
)
base = ordinal_arg + 1
if name != items[-1][0]:
f.write("\n")
f.write("};\n")
with open(root + "/javascript/src_js/generated/YGEnums.d.ts", "w") as f:
f.write(get_license("js"))

View File

@@ -1 +1,2 @@
tests/generated/
src_js/generated/

View File

@@ -7,88 +7,86 @@
// @generated by enums.py
module.exports = {
ALIGN_AUTO: 0,
ALIGN_FLEX_START: 1,
ALIGN_CENTER: 2,
ALIGN_FLEX_END: 3,
ALIGN_STRETCH: 4,
ALIGN_BASELINE: 5,
ALIGN_SPACE_BETWEEN: 6,
ALIGN_SPACE_AROUND: 7,
exports.ALIGN_AUTO = 0;
exports.ALIGN_FLEX_START = 1;
exports.ALIGN_CENTER = 2;
exports.ALIGN_FLEX_END = 3;
exports.ALIGN_STRETCH = 4;
exports.ALIGN_BASELINE = 5;
exports.ALIGN_SPACE_BETWEEN = 6;
exports.ALIGN_SPACE_AROUND = 7;
DIMENSION_WIDTH: 0,
DIMENSION_HEIGHT: 1,
exports.DIMENSION_WIDTH = 0;
exports.DIMENSION_HEIGHT = 1;
DIRECTION_INHERIT: 0,
DIRECTION_LTR: 1,
DIRECTION_RTL: 2,
exports.DIRECTION_INHERIT = 0;
exports.DIRECTION_LTR = 1;
exports.DIRECTION_RTL = 2;
DISPLAY_FLEX: 0,
DISPLAY_NONE: 1,
exports.DISPLAY_FLEX = 0;
exports.DISPLAY_NONE = 1;
EDGE_LEFT: 0,
EDGE_TOP: 1,
EDGE_RIGHT: 2,
EDGE_BOTTOM: 3,
EDGE_START: 4,
EDGE_END: 5,
EDGE_HORIZONTAL: 6,
EDGE_VERTICAL: 7,
EDGE_ALL: 8,
exports.EDGE_LEFT = 0;
exports.EDGE_TOP = 1;
exports.EDGE_RIGHT = 2;
exports.EDGE_BOTTOM = 3;
exports.EDGE_START = 4;
exports.EDGE_END = 5;
exports.EDGE_HORIZONTAL = 6;
exports.EDGE_VERTICAL = 7;
exports.EDGE_ALL = 8;
EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS: 0,
EXPERIMENTAL_FEATURE_ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE: 1,
EXPERIMENTAL_FEATURE_FIX_ABSOLUTE_TRAILING_COLUMN_MARGIN: 2,
exports.EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS = 0;
exports.EXPERIMENTAL_FEATURE_ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE = 1;
exports.EXPERIMENTAL_FEATURE_FIX_ABSOLUTE_TRAILING_COLUMN_MARGIN = 2;
FLEX_DIRECTION_COLUMN: 0,
FLEX_DIRECTION_COLUMN_REVERSE: 1,
FLEX_DIRECTION_ROW: 2,
FLEX_DIRECTION_ROW_REVERSE: 3,
exports.FLEX_DIRECTION_COLUMN = 0;
exports.FLEX_DIRECTION_COLUMN_REVERSE = 1;
exports.FLEX_DIRECTION_ROW = 2;
exports.FLEX_DIRECTION_ROW_REVERSE = 3;
GUTTER_COLUMN: 0,
GUTTER_ROW: 1,
GUTTER_ALL: 2,
exports.GUTTER_COLUMN = 0;
exports.GUTTER_ROW = 1;
exports.GUTTER_ALL = 2;
JUSTIFY_FLEX_START: 0,
JUSTIFY_CENTER: 1,
JUSTIFY_FLEX_END: 2,
JUSTIFY_SPACE_BETWEEN: 3,
JUSTIFY_SPACE_AROUND: 4,
JUSTIFY_SPACE_EVENLY: 5,
exports.JUSTIFY_FLEX_START = 0;
exports.JUSTIFY_CENTER = 1;
exports.JUSTIFY_FLEX_END = 2;
exports.JUSTIFY_SPACE_BETWEEN = 3;
exports.JUSTIFY_SPACE_AROUND = 4;
exports.JUSTIFY_SPACE_EVENLY = 5;
LOG_LEVEL_ERROR: 0,
LOG_LEVEL_WARN: 1,
LOG_LEVEL_INFO: 2,
LOG_LEVEL_DEBUG: 3,
LOG_LEVEL_VERBOSE: 4,
LOG_LEVEL_FATAL: 5,
exports.LOG_LEVEL_ERROR = 0;
exports.LOG_LEVEL_WARN = 1;
exports.LOG_LEVEL_INFO = 2;
exports.LOG_LEVEL_DEBUG = 3;
exports.LOG_LEVEL_VERBOSE = 4;
exports.LOG_LEVEL_FATAL = 5;
MEASURE_MODE_UNDEFINED: 0,
MEASURE_MODE_EXACTLY: 1,
MEASURE_MODE_AT_MOST: 2,
exports.MEASURE_MODE_UNDEFINED = 0;
exports.MEASURE_MODE_EXACTLY = 1;
exports.MEASURE_MODE_AT_MOST = 2;
NODE_TYPE_DEFAULT: 0,
NODE_TYPE_TEXT: 1,
exports.NODE_TYPE_DEFAULT = 0;
exports.NODE_TYPE_TEXT = 1;
OVERFLOW_VISIBLE: 0,
OVERFLOW_HIDDEN: 1,
OVERFLOW_SCROLL: 2,
exports.OVERFLOW_VISIBLE = 0;
exports.OVERFLOW_HIDDEN = 1;
exports.OVERFLOW_SCROLL = 2;
POSITION_TYPE_STATIC: 0,
POSITION_TYPE_RELATIVE: 1,
POSITION_TYPE_ABSOLUTE: 2,
exports.POSITION_TYPE_STATIC = 0;
exports.POSITION_TYPE_RELATIVE = 1;
exports.POSITION_TYPE_ABSOLUTE = 2;
PRINT_OPTIONS_LAYOUT: 1,
PRINT_OPTIONS_STYLE: 2,
PRINT_OPTIONS_CHILDREN: 4,
exports.PRINT_OPTIONS_LAYOUT = 1;
exports.PRINT_OPTIONS_STYLE = 2;
exports.PRINT_OPTIONS_CHILDREN = 4;
UNIT_UNDEFINED: 0,
UNIT_POINT: 1,
UNIT_PERCENT: 2,
UNIT_AUTO: 3,
exports.UNIT_UNDEFINED = 0;
exports.UNIT_POINT = 1;
exports.UNIT_PERCENT = 2;
exports.UNIT_AUTO = 3;
WRAP_NO_WRAP: 0,
WRAP_WRAP: 1,
WRAP_WRAP_REVERSE: 2,
};
exports.WRAP_NO_WRAP = 0;
exports.WRAP_WRAP = 1;
exports.WRAP_WRAP_REVERSE = 2;