@builder.io/mitosis 0.0.45 → 0.0.46
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/src/__tests__/builder.test.js +71 -68
- package/dist/src/__tests__/context.test.js +13 -10
- package/dist/src/__tests__/data/basic.raw.jsx +1 -1
- package/dist/src/__tests__/data/blocks/button-with-metadata.raw.jsx +1 -1
- package/dist/src/__tests__/data/blocks/columns.raw.jsx +2 -2
- package/dist/src/__tests__/data/blocks/custom-code.raw.jsx +3 -3
- package/dist/src/__tests__/data/blocks/embed.raw.jsx +3 -3
- package/dist/src/__tests__/data/blocks/form.raw.jsx +5 -5
- package/dist/src/__tests__/data/blocks/image.raw.jsx +4 -4
- package/dist/src/__tests__/data/blocks/stamped-io.raw.jsx +4 -4
- package/dist/src/__tests__/data/context/component-with-context.lite.jsx +2 -2
- package/dist/src/__tests__/data/context/simple.context.lite.js +1 -1
- package/dist/src/__tests__/html.test.js +2 -2
- package/dist/src/__tests__/liquid.test.js +34 -34
- package/dist/src/__tests__/parse-jsx.test.js +1 -1
- package/dist/src/__tests__/qwik.test.js +36 -36
- package/dist/src/__tests__/react-native.test.js +35 -35
- package/dist/src/__tests__/react.test.js +35 -35
- package/dist/src/__tests__/solid.test.js +32 -32
- package/dist/src/__tests__/vue.test.js +35 -34
- package/dist/src/generators/angular.d.ts +4 -7
- package/dist/src/generators/angular.js +77 -81
- package/dist/src/generators/builder.d.ts +4 -4
- package/dist/src/generators/builder.js +57 -57
- package/dist/src/generators/context/react.d.ts +3 -1
- package/dist/src/generators/context/react.js +20 -17
- package/dist/src/generators/html.d.ts +5 -9
- package/dist/src/generators/html.js +205 -199
- package/dist/src/generators/liquid.d.ts +5 -9
- package/dist/src/generators/liquid.js +62 -59
- package/dist/src/generators/mitosis.d.ts +6 -7
- package/dist/src/generators/mitosis.js +61 -63
- package/dist/src/generators/qwik/component.js +13 -13
- package/dist/src/generators/qwik/handlers.js +12 -8
- package/dist/src/generators/qwik/jsx.js +13 -9
- package/dist/src/generators/qwik/styles.js +11 -7
- package/dist/src/generators/react-native.d.ts +4 -7
- package/dist/src/generators/react-native.js +25 -22
- package/dist/src/generators/react.d.ts +4 -8
- package/dist/src/generators/react.js +103 -112
- package/dist/src/generators/solid.d.ts +4 -8
- package/dist/src/generators/solid.js +55 -54
- package/dist/src/generators/svelte.d.ts +4 -7
- package/dist/src/generators/svelte.js +120 -123
- package/dist/src/generators/swift-ui.d.ts +2 -2
- package/dist/src/generators/swift-ui.js +62 -62
- package/dist/src/generators/template.d.ts +4 -8
- package/dist/src/generators/template.js +48 -45
- package/dist/src/generators/vue.d.ts +9 -9
- package/dist/src/generators/vue.js +169 -169
- package/dist/src/helpers/babel-transform.js +9 -9
- package/dist/src/helpers/collect-styles.js +39 -39
- package/dist/src/helpers/dash-case.js +1 -1
- package/dist/src/helpers/generic-format.test.js +2 -2
- package/dist/src/helpers/get-components-used.js +2 -2
- package/dist/src/helpers/get-components.js +3 -3
- package/dist/src/helpers/get-props.js +1 -1
- package/dist/src/helpers/get-refs.js +2 -2
- package/dist/src/helpers/get-state-object-string.js +5 -5
- package/dist/src/helpers/get-state-used.js +1 -1
- package/dist/src/helpers/get-styles.js +1 -1
- package/dist/src/helpers/getters-to-functions.js +4 -4
- package/dist/src/helpers/handle-missing-state.js +1 -1
- package/dist/src/helpers/has-component.js +2 -2
- package/dist/src/helpers/has-props.js +1 -1
- package/dist/src/helpers/is-children.js +1 -1
- package/dist/src/helpers/json.d.ts +1 -0
- package/dist/src/helpers/json.js +17 -0
- package/dist/src/helpers/map-refs.js +4 -4
- package/dist/src/helpers/map-to-attributes.js +4 -4
- package/dist/src/helpers/map-to-css.js +2 -2
- package/dist/src/helpers/parse-node.js +2 -2
- package/dist/src/helpers/parse-reactive-script.js +4 -4
- package/dist/src/helpers/process-http-requests.js +1 -1
- package/dist/src/helpers/process-tag-references.js +4 -4
- package/dist/src/helpers/remove-surrounding-block.test.js +1 -1
- package/dist/src/helpers/render-imports.js +7 -7
- package/dist/src/helpers/replace-idenifiers.js +1 -1
- package/dist/src/helpers/strip-meta-properties.js +2 -2
- package/dist/src/helpers/trace-reference-to-module-path.js +1 -1
- package/dist/src/helpers/traverse-nodes.js +2 -2
- package/dist/src/helpers/try-prettier-format.js +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +2 -0
- package/dist/src/modules/plugins.d.ts +2 -10
- package/dist/src/parsers/angular.js +13 -13
- package/dist/src/parsers/builder.js +54 -58
- package/dist/src/parsers/context.js +2 -2
- package/dist/src/parsers/jsx.js +59 -87
- package/dist/src/parsers/liquid.js +191 -194
- package/dist/src/plugins/compile-away-builder-components.js +49 -45
- package/dist/src/plugins/compile-away-components.js +3 -3
- package/dist/src/plugins/map-styles.js +3 -3
- package/dist/src/targets.d.ts +24 -0
- package/dist/src/targets.js +30 -0
- package/dist/src/types/config.d.ts +31 -0
- package/dist/src/types/{jsx-lite-component.js → config.js} +0 -0
- package/dist/{test/qwik/Todo/Todo.js/low.js → src/types/generators.d.ts} +0 -0
- package/dist/src/types/generators.js +1 -0
- package/dist/src/types/plugins.d.ts +11 -0
- package/dist/src/types/{jsx-lite-context.js → plugins.js} +0 -0
- package/dist/test/qwik/{Todo → todo}/Todo.cjs/high.cjs +0 -0
- package/dist/test/qwik/{Todo → todo}/Todo.cjs/low.cjs +0 -0
- package/dist/test/qwik/{Todo → todo}/Todo.cjs/med.cjs +0 -0
- package/dist/test/qwik/{Todo → todo}/Todo.js/high.js +0 -0
- package/dist/test/qwik/{qwik/todo → todo}/Todo.js/low.js +0 -0
- package/dist/test/qwik/{Todo → todo}/Todo.js/med.js +0 -0
- package/dist/test/qwik/{Todo → todo}/Todo.tsx/high.tsx +0 -0
- package/dist/test/qwik/{Todo → todo}/Todo.tsx/low.tsx +0 -0
- package/dist/test/qwik/{Todo → todo}/Todo.tsx/med.tsx +0 -0
- package/dist/test/qwik/{Todos → todos}/Todo.tsx/high.tsx +0 -0
- package/dist/test/qwik/{Todos → todos}/Todo.tsx/low.tsx +0 -0
- package/dist/test/qwik/{Todos → todos}/Todo.tsx/med.tsx +0 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/dist/src/__tests__/data/blocks/tabs.raw.d.ts +0 -11
- package/dist/src/__tests__/data/blocks/tabs.raw.jsx +0 -24
- package/dist/src/__tests__/qoot.test.d.ts +0 -1
- package/dist/src/__tests__/qoot.test.js +0 -115
- package/dist/src/generators/jsx-lite.d.ts +0 -10
- package/dist/src/generators/jsx-lite.js +0 -176
- package/dist/src/generators/qoot.d.ts +0 -21
- package/dist/src/generators/qoot.js +0 -442
- package/dist/src/generators/qwik.d.ts +0 -21
- package/dist/src/generators/qwik.js +0 -458
- package/dist/src/helpers/create-jsx-lite-component.d.ts +0 -2
- package/dist/src/helpers/create-jsx-lite-component.js +0 -16
- package/dist/src/helpers/create-jsx-lite-context.d.ts +0 -4
- package/dist/src/helpers/create-jsx-lite-context.js +0 -18
- package/dist/src/helpers/create-jsx-lite-node.d.ts +0 -2
- package/dist/src/helpers/create-jsx-lite-node.js +0 -16
- package/dist/src/helpers/is-jsx-lite-node.d.ts +0 -2
- package/dist/src/helpers/is-jsx-lite-node.js +0 -7
- package/dist/src/types/jsx-lite-component.d.ts +0 -63
- package/dist/src/types/jsx-lite-context.d.ts +0 -6
- package/dist/src/types/jsx-lite-node.d.ts +0 -13
- package/dist/src/types/jsx-lite-node.js +0 -2
- package/dist/src/types/jsx-lite-styles.d.ts +0 -1
- package/dist/src/types/jsx-lite-styles.js +0 -2
- package/dist/test/qoot/Todo/bundle.js +0 -88
- package/dist/test/qoot/Todo/component.ts +0 -17
- package/dist/test/qoot/Todo/onButtonClick.ts +0 -13
- package/dist/test/qoot/Todo/onInput2Blur.ts +0 -11
- package/dist/test/qoot/Todo/onInput2KeyUp.ts +0 -10
- package/dist/test/qoot/Todo/onInputClick.ts +0 -10
- package/dist/test/qoot/Todo/onLabelDblClick.ts +0 -11
- package/dist/test/qoot/Todo/public.ts +0 -4
- package/dist/test/qoot/Todo/template.tsx +0 -46
- package/dist/test/qoot/Todos/component.ts +0 -9
- package/dist/test/qoot/Todos/onInputClick.ts +0 -14
- package/dist/test/qoot/Todos/public.ts +0 -3
- package/dist/test/qoot/Todos/template.tsx +0 -30
- package/dist/test/qwik/Todo/bundle.js +0 -46
- package/dist/test/qwik/Todo/component.ts +0 -17
- package/dist/test/qwik/Todo/onButtonClick.ts +0 -10
- package/dist/test/qwik/Todo/onInput2Blur.ts +0 -14
- package/dist/test/qwik/Todo/onInput2KeyUp.ts +0 -10
- package/dist/test/qwik/Todo/onInputClick.ts +0 -13
- package/dist/test/qwik/Todo/onLabelDblClick.ts +0 -11
- package/dist/test/qwik/Todo/public.ts +0 -3
- package/dist/test/qwik/Todo/template.tsx +0 -46
- package/dist/test/qwik/Todo.ts +0 -4
- package/dist/test/qwik/Todo_component.ts +0 -17
- package/dist/test/qwik/Todo_onButtonClick.ts +0 -13
- package/dist/test/qwik/Todo_onInput2Blur.ts +0 -14
- package/dist/test/qwik/Todo_onInput2KeyUp.ts +0 -10
- package/dist/test/qwik/Todo_onInputClick.ts +0 -13
- package/dist/test/qwik/Todo_onLabelDblClick.ts +0 -14
- package/dist/test/qwik/Todo_template.tsx +0 -46
- package/dist/test/qwik/Todos/component.ts +0 -9
- package/dist/test/qwik/Todos/onInputClick.ts +0 -14
- package/dist/test/qwik/Todos/public.ts +0 -3
- package/dist/test/qwik/Todos/template.tsx +0 -30
- package/dist/test/qwik/Todos.ts +0 -3
- package/dist/test/qwik/Todos_component.ts +0 -9
- package/dist/test/qwik/Todos_onInputClick.ts +0 -14
- package/dist/test/qwik/Todos_template.tsx +0 -30
- package/dist/test/qwik/qwik/Image/high.js +0 -1
- package/dist/test/qwik/qwik/Image/low.js +0 -75
- package/dist/test/qwik/qwik/Image/med.js +0 -9
- package/dist/test/qwik/qwik/Image.slow/high.js +0 -1
- package/dist/test/qwik/qwik/Image.slow/low.js +0 -75
- package/dist/test/qwik/qwik/Image.slow/med.js +0 -9
- package/dist/test/qwik/qwik/button/high.js +0 -8
- package/dist/test/qwik/qwik/button/low.js +0 -34
- package/dist/test/qwik/qwik/button/med.js +0 -9
- package/dist/test/qwik/qwik/hello_world/stylesheet/high.jsx +0 -1
- package/dist/test/qwik/qwik/hello_world/stylesheet/low.jsx +0 -24
- package/dist/test/qwik/qwik/hello_world/stylesheet/med.jsx +0 -9
- package/dist/test/qwik/qwik/page-with-symbol/high.js +0 -1
- package/dist/test/qwik/qwik/page-with-symbol/low.js +0 -49
- package/dist/test/qwik/qwik/page-with-symbol/med.js +0 -9
- package/dist/test/qwik/qwik/svg/high.js +0 -1
- package/dist/test/qwik/qwik/svg/low.js +0 -30
- package/dist/test/qwik/qwik/svg/med.js +0 -9
- package/dist/test/qwik/qwik/todo/Todo.cjs/high.cjs +0 -31
- package/dist/test/qwik/qwik/todo/Todo.cjs/low.cjs +0 -1
- package/dist/test/qwik/qwik/todo/Todo.cjs/med.cjs +0 -59
- package/dist/test/qwik/qwik/todo/Todo.js/high.js +0 -5
- package/dist/test/qwik/qwik/todo/Todo.js/med.js +0 -1
- package/dist/test/qwik/qwik/todo/Todo.tsx/high.tsx +0 -30
- package/dist/test/qwik/qwik/todo/Todo.tsx/low.tsx +0 -1
- package/dist/test/qwik/qwik/todo/Todo.tsx/med.tsx +0 -34
- package/dist/test/qwik/qwik/todos/Todo.tsx/high.tsx +0 -12
- package/dist/test/qwik/qwik/todos/Todo.tsx/low.tsx +0 -24
- package/dist/test/qwik/qwik/todos/Todo.tsx/med.tsx +0 -8
package/dist/src/parsers/jsx.js
CHANGED
|
@@ -36,7 +36,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.parseJsx = exports.METADATA_HOOK_NAME = exports.parseStateObject = exports.createFunctionStringLiteralObjectProperty = exports.createFunctionStringLiteral = exports.selfClosingTags = void 0;
|
|
37
37
|
var babel = __importStar(require("@babel/core"));
|
|
38
38
|
var generator_1 = __importDefault(require("@babel/generator"));
|
|
39
|
-
var JSON5 = __importStar(require("json5"));
|
|
40
39
|
var trace_reference_to_module_path_1 = require("../helpers/trace-reference-to-module-path");
|
|
41
40
|
var traverse_1 = __importDefault(require("traverse"));
|
|
42
41
|
var function_literal_prefix_1 = require("../constants/function-literal-prefix");
|
|
@@ -48,6 +47,7 @@ var create_mitosis_node_1 = require("../helpers/create-mitosis-node");
|
|
|
48
47
|
var is_mitosis_node_1 = require("../helpers/is-mitosis-node");
|
|
49
48
|
var replace_idenifiers_1 = require("../helpers/replace-idenifiers");
|
|
50
49
|
var replace_new_lines_in_strings_1 = require("../helpers/replace-new-lines-in-strings");
|
|
50
|
+
var json_1 = require("../helpers/json");
|
|
51
51
|
var jsxPlugin = require('@babel/plugin-syntax-jsx');
|
|
52
52
|
var tsPreset = require('@babel/preset-typescript');
|
|
53
53
|
exports.selfClosingTags = new Set([
|
|
@@ -114,11 +114,11 @@ var jsonObjectToAst = function (json) {
|
|
|
114
114
|
return newNode;
|
|
115
115
|
};
|
|
116
116
|
var createFunctionStringLiteral = function (node) {
|
|
117
|
-
return types.stringLiteral(""
|
|
117
|
+
return types.stringLiteral("".concat(function_literal_prefix_1.functionLiteralPrefix).concat((0, generator_1.default)(node).code));
|
|
118
118
|
};
|
|
119
119
|
exports.createFunctionStringLiteral = createFunctionStringLiteral;
|
|
120
120
|
var createFunctionStringLiteralObjectProperty = function (key, node) {
|
|
121
|
-
return types.objectProperty(key, exports.createFunctionStringLiteral(node));
|
|
121
|
+
return types.objectProperty(key, (0, exports.createFunctionStringLiteral)(node));
|
|
122
122
|
};
|
|
123
123
|
exports.createFunctionStringLiteralObjectProperty = createFunctionStringLiteralObjectProperty;
|
|
124
124
|
var uncapitalize = function (str) {
|
|
@@ -133,11 +133,11 @@ var parseStateObject = function (object) {
|
|
|
133
133
|
if (types.isObjectProperty(item)) {
|
|
134
134
|
if (types.isFunctionExpression(item.value) ||
|
|
135
135
|
types.isArrowFunctionExpression(item.value)) {
|
|
136
|
-
return exports.createFunctionStringLiteralObjectProperty(item.key, item.value);
|
|
136
|
+
return (0, exports.createFunctionStringLiteralObjectProperty)(item.key, item.value);
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
if (types.isObjectMethod(item)) {
|
|
140
|
-
return types.objectProperty(item.key, types.stringLiteral(""
|
|
140
|
+
return types.objectProperty(item.key, types.stringLiteral("".concat(method_literal_prefix_1.methodLiteralPrefix).concat((0, generator_1.default)(__assign(__assign({}, item), { returnType: null })).code)));
|
|
141
141
|
}
|
|
142
142
|
// Remove typescript types, e.g. from
|
|
143
143
|
// { foo: ('string' as SomeType) }
|
|
@@ -151,29 +151,13 @@ var parseStateObject = function (object) {
|
|
|
151
151
|
return item;
|
|
152
152
|
});
|
|
153
153
|
var newObject = types.objectExpression(useProperties);
|
|
154
|
-
var
|
|
155
|
-
var obj;
|
|
156
|
-
try {
|
|
157
|
-
code = generator_1.default(newObject).code;
|
|
158
|
-
obj = JSON5.parse(code);
|
|
159
|
-
}
|
|
160
|
-
catch (err) {
|
|
161
|
-
console.error('Could not JSON5 parse object:\n', code);
|
|
162
|
-
throw err;
|
|
163
|
-
}
|
|
154
|
+
var obj = parseCodeJson(newObject);
|
|
164
155
|
return obj;
|
|
165
156
|
};
|
|
166
157
|
exports.parseStateObject = parseStateObject;
|
|
167
|
-
var
|
|
168
|
-
var code;
|
|
169
|
-
|
|
170
|
-
code = generator_1.default(node).code;
|
|
171
|
-
return JSON5.parse(code);
|
|
172
|
-
}
|
|
173
|
-
catch (err) {
|
|
174
|
-
console.error('Could not JSON5 parse object:\n', code);
|
|
175
|
-
throw err;
|
|
176
|
-
}
|
|
158
|
+
var parseCodeJson = function (node) {
|
|
159
|
+
var code = (0, generator_1.default)(node).code;
|
|
160
|
+
return (0, json_1.tryParseJson)(code);
|
|
177
161
|
};
|
|
178
162
|
var componentFunctionToJson = function (node, context) {
|
|
179
163
|
var _a;
|
|
@@ -192,12 +176,12 @@ var componentFunctionToJson = function (node, context) {
|
|
|
192
176
|
var keyNode = expression.arguments[0];
|
|
193
177
|
if (types.isIdentifier(keyNode)) {
|
|
194
178
|
var key = keyNode.name;
|
|
195
|
-
var keyPath = trace_reference_to_module_path_1.traceReferenceToModulePath(context.builder.component.imports, key);
|
|
179
|
+
var keyPath = (0, trace_reference_to_module_path_1.traceReferenceToModulePath)(context.builder.component.imports, key);
|
|
196
180
|
var valueNode = expression.arguments[1];
|
|
197
181
|
setContext[keyPath] = {
|
|
198
182
|
name: keyNode.name,
|
|
199
183
|
value: valueNode && types.isObjectExpression(valueNode)
|
|
200
|
-
? exports.parseStateObject(valueNode)
|
|
184
|
+
? (0, exports.parseStateObject)(valueNode)
|
|
201
185
|
: undefined,
|
|
202
186
|
};
|
|
203
187
|
}
|
|
@@ -207,7 +191,7 @@ var componentFunctionToJson = function (node, context) {
|
|
|
207
191
|
var firstArg = expression.arguments[0];
|
|
208
192
|
if (types.isFunctionExpression(firstArg) ||
|
|
209
193
|
types.isArrowFunctionExpression(firstArg)) {
|
|
210
|
-
hooks.onMount = generator_1.default(firstArg.body)
|
|
194
|
+
hooks.onMount = (0, generator_1.default)(firstArg.body)
|
|
211
195
|
.code.trim()
|
|
212
196
|
// Remove abtrary block wrapping if any
|
|
213
197
|
// AKA
|
|
@@ -221,7 +205,7 @@ var componentFunctionToJson = function (node, context) {
|
|
|
221
205
|
}
|
|
222
206
|
if (types.isFunctionDeclaration(item)) {
|
|
223
207
|
if (types.isIdentifier(item.id)) {
|
|
224
|
-
state[item.id.name] = ""
|
|
208
|
+
state[item.id.name] = "".concat(function_literal_prefix_1.functionLiteralPrefix).concat((0, generator_1.default)(item).code);
|
|
225
209
|
}
|
|
226
210
|
}
|
|
227
211
|
if (types.isVariableDeclaration(item)) {
|
|
@@ -238,12 +222,12 @@ var componentFunctionToJson = function (node, context) {
|
|
|
238
222
|
// Function as init, like:
|
|
239
223
|
// useState(() => true)
|
|
240
224
|
if (types.isArrowFunctionExpression(value)) {
|
|
241
|
-
state[varName] =
|
|
225
|
+
state[varName] = parseCodeJson(value.body);
|
|
242
226
|
}
|
|
243
227
|
else {
|
|
244
228
|
// Value as init, like:
|
|
245
229
|
// useState(true)
|
|
246
|
-
state[varName] =
|
|
230
|
+
state[varName] = parseCodeJson(value);
|
|
247
231
|
}
|
|
248
232
|
}
|
|
249
233
|
}
|
|
@@ -253,7 +237,7 @@ var componentFunctionToJson = function (node, context) {
|
|
|
253
237
|
if (init.callee.name === 'useState') {
|
|
254
238
|
var firstArg = init.arguments[0];
|
|
255
239
|
if (types.isObjectExpression(firstArg)) {
|
|
256
|
-
state = exports.parseStateObject(firstArg);
|
|
240
|
+
state = (0, exports.parseStateObject)(firstArg);
|
|
257
241
|
}
|
|
258
242
|
}
|
|
259
243
|
else if (init.callee.name === 'useContext') {
|
|
@@ -265,7 +249,7 @@ var componentFunctionToJson = function (node, context) {
|
|
|
265
249
|
var name_1 = firstArg.name;
|
|
266
250
|
accessedContext[varName] = {
|
|
267
251
|
name: name_1,
|
|
268
|
-
path: trace_reference_to_module_path_1.traceReferenceToModulePath(context.builder.component.imports, name_1),
|
|
252
|
+
path: (0, trace_reference_to_module_path_1.traceReferenceToModulePath)(context.builder.component.imports, name_1),
|
|
269
253
|
};
|
|
270
254
|
}
|
|
271
255
|
}
|
|
@@ -284,16 +268,14 @@ var componentFunctionToJson = function (node, context) {
|
|
|
284
268
|
children.push(jsxElementToJson(value));
|
|
285
269
|
}
|
|
286
270
|
}
|
|
287
|
-
return create_mitosis_component_1.createMitosisComponent(__assign(__assign({}, context.builder.component), { name: (_a = node.id) === null || _a === void 0 ? void 0 : _a.name, state: state,
|
|
288
|
-
children: children,
|
|
289
|
-
hooks: hooks, context: {
|
|
271
|
+
return (0, create_mitosis_component_1.createMitosisComponent)(__assign(__assign({}, context.builder.component), { name: (_a = node.id) === null || _a === void 0 ? void 0 : _a.name, state: state, children: children, hooks: hooks, context: {
|
|
290
272
|
get: accessedContext,
|
|
291
273
|
set: setContext,
|
|
292
274
|
} }));
|
|
293
275
|
};
|
|
294
276
|
var jsxElementToJson = function (node) {
|
|
295
277
|
if (types.isJSXText(node)) {
|
|
296
|
-
return create_mitosis_node_1.createMitosisNode({
|
|
278
|
+
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
297
279
|
properties: {
|
|
298
280
|
_text: node.value,
|
|
299
281
|
},
|
|
@@ -310,10 +292,10 @@ var jsxElementToJson = function (node) {
|
|
|
310
292
|
if (types.isArrowFunctionExpression(callback)) {
|
|
311
293
|
if (types.isIdentifier(callback.params[0])) {
|
|
312
294
|
var forName = callback.params[0].name;
|
|
313
|
-
return create_mitosis_node_1.createMitosisNode({
|
|
295
|
+
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
314
296
|
name: 'For',
|
|
315
297
|
bindings: {
|
|
316
|
-
each: generator_1.default(node.expression.callee)
|
|
298
|
+
each: (0, generator_1.default)(node.expression.callee)
|
|
317
299
|
.code // Remove .map or potentially ?.map
|
|
318
300
|
.replace(/\??\.map$/, ''),
|
|
319
301
|
},
|
|
@@ -328,10 +310,10 @@ var jsxElementToJson = function (node) {
|
|
|
328
310
|
// {foo && <div />} -> <Show when={foo}>...</Show>
|
|
329
311
|
if (types.isLogicalExpression(node.expression)) {
|
|
330
312
|
if (node.expression.operator === '&&') {
|
|
331
|
-
return create_mitosis_node_1.createMitosisNode({
|
|
313
|
+
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
332
314
|
name: 'Show',
|
|
333
315
|
bindings: {
|
|
334
|
-
when: generator_1.default(node.expression.left).code,
|
|
316
|
+
when: (0, generator_1.default)(node.expression.left).code,
|
|
335
317
|
},
|
|
336
318
|
children: [jsxElementToJson(node.expression.right)],
|
|
337
319
|
});
|
|
@@ -342,43 +324,43 @@ var jsxElementToJson = function (node) {
|
|
|
342
324
|
}
|
|
343
325
|
// {foo ? <div /> : <span />} -> <Show when={foo} else={<span />}>...</Show>
|
|
344
326
|
if (types.isConditionalExpression(node.expression)) {
|
|
345
|
-
return create_mitosis_node_1.createMitosisNode({
|
|
327
|
+
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
346
328
|
name: 'Show',
|
|
347
329
|
meta: {
|
|
348
330
|
else: jsxElementToJson(node.expression.alternate),
|
|
349
331
|
},
|
|
350
332
|
bindings: {
|
|
351
|
-
when: generator_1.default(node.expression.test).code,
|
|
333
|
+
when: (0, generator_1.default)(node.expression.test).code,
|
|
352
334
|
},
|
|
353
335
|
children: [jsxElementToJson(node.expression.consequent)],
|
|
354
336
|
});
|
|
355
337
|
}
|
|
356
338
|
// TODO: support {foo ? bar : baz}
|
|
357
|
-
return create_mitosis_node_1.createMitosisNode({
|
|
339
|
+
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
358
340
|
bindings: {
|
|
359
|
-
_text: generator_1.default(node.expression).code,
|
|
341
|
+
_text: (0, generator_1.default)(node.expression).code,
|
|
360
342
|
},
|
|
361
343
|
});
|
|
362
344
|
}
|
|
363
345
|
if (types.isJSXFragment(node)) {
|
|
364
|
-
return create_mitosis_node_1.createMitosisNode({
|
|
346
|
+
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
365
347
|
name: 'Fragment',
|
|
366
348
|
children: node.children
|
|
367
349
|
.map(function (item) { return jsxElementToJson(item); })
|
|
368
350
|
.filter(Boolean),
|
|
369
351
|
});
|
|
370
352
|
}
|
|
371
|
-
var nodeName = generator_1.default(node.openingElement.name).code;
|
|
353
|
+
var nodeName = (0, generator_1.default)(node.openingElement.name).code;
|
|
372
354
|
if (nodeName === 'Show') {
|
|
373
355
|
var whenAttr = node.openingElement.attributes.find(function (item) { return types.isJSXAttribute(item) && item.name.name === 'when'; });
|
|
374
356
|
var elseAttr = node.openingElement.attributes.find(function (item) { return types.isJSXAttribute(item) && item.name.name === 'else'; });
|
|
375
357
|
var whenValue = whenAttr &&
|
|
376
358
|
types.isJSXExpressionContainer(whenAttr.value) &&
|
|
377
|
-
generator_1.default(whenAttr.value.expression).code;
|
|
359
|
+
(0, generator_1.default)(whenAttr.value.expression).code;
|
|
378
360
|
var elseValue = elseAttr &&
|
|
379
361
|
types.isJSXExpressionContainer(elseAttr.value) &&
|
|
380
362
|
jsxElementToJson(elseAttr.value.expression);
|
|
381
|
-
return create_mitosis_node_1.createMitosisNode({
|
|
363
|
+
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
382
364
|
name: 'Show',
|
|
383
365
|
meta: {
|
|
384
366
|
else: elseValue || undefined,
|
|
@@ -401,10 +383,10 @@ var jsxElementToJson = function (node) {
|
|
|
401
383
|
if (types.isArrowFunctionExpression(childExpression)) {
|
|
402
384
|
var argName = childExpression.params[0]
|
|
403
385
|
.name;
|
|
404
|
-
return create_mitosis_node_1.createMitosisNode({
|
|
386
|
+
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
405
387
|
name: 'For',
|
|
406
388
|
bindings: {
|
|
407
|
-
each: generator_1.default(node.openingElement.attributes[0]
|
|
389
|
+
each: (0, generator_1.default)(node.openingElement.attributes[0]
|
|
408
390
|
.value.expression).code,
|
|
409
391
|
},
|
|
410
392
|
properties: {
|
|
@@ -415,7 +397,7 @@ var jsxElementToJson = function (node) {
|
|
|
415
397
|
}
|
|
416
398
|
}
|
|
417
399
|
}
|
|
418
|
-
return create_mitosis_node_1.createMitosisNode({
|
|
400
|
+
return (0, create_mitosis_node_1.createMitosisNode)({
|
|
419
401
|
name: nodeName,
|
|
420
402
|
properties: node.openingElement.attributes.reduce(function (memo, item) {
|
|
421
403
|
if (types.isJSXAttribute(item)) {
|
|
@@ -435,10 +417,10 @@ var jsxElementToJson = function (node) {
|
|
|
435
417
|
if (types.isJSXExpressionContainer(value)) {
|
|
436
418
|
var expression = value.expression;
|
|
437
419
|
if (types.isArrowFunctionExpression(expression)) {
|
|
438
|
-
memo[key] = generator_1.default(expression.body).code;
|
|
420
|
+
memo[key] = (0, generator_1.default)(expression.body).code;
|
|
439
421
|
}
|
|
440
422
|
else {
|
|
441
|
-
memo[key] = generator_1.default(expression).code;
|
|
423
|
+
memo[key] = (0, generator_1.default)(expression).code;
|
|
442
424
|
}
|
|
443
425
|
return memo;
|
|
444
426
|
}
|
|
@@ -447,7 +429,7 @@ var jsxElementToJson = function (node) {
|
|
|
447
429
|
// TODO: potentially like Vue store bindings and properties as array of key value pairs
|
|
448
430
|
// too so can do this accurately when order matters. Also tempting to not support spread,
|
|
449
431
|
// as some frameworks do not support it (e.g. Angular) tho Angular may be the only one
|
|
450
|
-
memo._spread = types.stringLiteral(generator_1.default(item.argument).code);
|
|
432
|
+
memo._spread = types.stringLiteral((0, generator_1.default)(item.argument).code);
|
|
451
433
|
}
|
|
452
434
|
return memo;
|
|
453
435
|
}, {}),
|
|
@@ -484,13 +466,12 @@ var collectMetadata = function (nodes, component, options) {
|
|
|
484
466
|
return true;
|
|
485
467
|
}
|
|
486
468
|
if (types.isIdentifier(hook.callee) && hookNames.has(hook.callee.name)) {
|
|
487
|
-
var code = generator_1.default(hook.arguments[0]).code;
|
|
488
469
|
try {
|
|
489
|
-
component.meta[hook.callee.name] =
|
|
470
|
+
component.meta[hook.callee.name] = parseCodeJson(hook.arguments[0]);
|
|
490
471
|
return false;
|
|
491
472
|
}
|
|
492
473
|
catch (e) {
|
|
493
|
-
console.error("Error parsing metadata hook "
|
|
474
|
+
console.error("Error parsing metadata hook ".concat(hook.callee.name));
|
|
494
475
|
throw e;
|
|
495
476
|
}
|
|
496
477
|
}
|
|
@@ -498,17 +479,17 @@ var collectMetadata = function (nodes, component, options) {
|
|
|
498
479
|
});
|
|
499
480
|
};
|
|
500
481
|
function mapReactIdentifiersInExpression(expression, stateProperties) {
|
|
501
|
-
var setExpressions = stateProperties.map(function (propertyName) { return "set"
|
|
502
|
-
return babel_transform_1.babelTransformExpression(
|
|
482
|
+
var setExpressions = stateProperties.map(function (propertyName) { return "set".concat((0, capitalize_1.capitalize)(propertyName)); });
|
|
483
|
+
return (0, babel_transform_1.babelTransformExpression)(
|
|
503
484
|
// foo -> state.foo
|
|
504
|
-
replace_idenifiers_1.replaceIdentifiers(expression, stateProperties, function (name) { return "state."
|
|
485
|
+
(0, replace_idenifiers_1.replaceIdentifiers)(expression, stateProperties, function (name) { return "state.".concat(name); }), {
|
|
505
486
|
CallExpression: function (path) {
|
|
506
487
|
if (types.isIdentifier(path.node.callee)) {
|
|
507
488
|
if (setExpressions.includes(path.node.callee.name)) {
|
|
508
489
|
// setFoo -> foo
|
|
509
490
|
var statePropertyName = uncapitalize(path.node.callee.name.slice(3));
|
|
510
491
|
// setFoo(...) -> state.foo = ...
|
|
511
|
-
path.replaceWith(types.assignmentExpression('=', types.identifier("state."
|
|
492
|
+
path.replaceWith(types.assignmentExpression('=', types.identifier("state.".concat(statePropertyName)), path.node.arguments[0]));
|
|
512
493
|
}
|
|
513
494
|
}
|
|
514
495
|
},
|
|
@@ -530,8 +511,8 @@ function mapReactIdentifiers(json) {
|
|
|
530
511
|
mapReactIdentifiersInExpression(value.replace(function_literal_prefix_1.functionLiteralPrefix, ''), stateProperties);
|
|
531
512
|
}
|
|
532
513
|
}
|
|
533
|
-
traverse_1.default(json).forEach(function (item) {
|
|
534
|
-
if (is_mitosis_node_1.isMitosisNode(item)) {
|
|
514
|
+
(0, traverse_1.default)(json).forEach(function (item) {
|
|
515
|
+
if ((0, is_mitosis_node_1.isMitosisNode)(item)) {
|
|
535
516
|
for (var key in item.bindings) {
|
|
536
517
|
var value = item.bindings[key];
|
|
537
518
|
if (value) {
|
|
@@ -554,7 +535,7 @@ function mapReactIdentifiers(json) {
|
|
|
554
535
|
});
|
|
555
536
|
}
|
|
556
537
|
var expressionToNode = function (str) {
|
|
557
|
-
var code = "export default "
|
|
538
|
+
var code = "export default ".concat(str);
|
|
558
539
|
return babel.parse(code).program
|
|
559
540
|
.body[0].declaration;
|
|
560
541
|
};
|
|
@@ -563,19 +544,19 @@ var expressionToNode = function (str) {
|
|
|
563
544
|
* MitosisComponent tree
|
|
564
545
|
*/
|
|
565
546
|
function extractContextComponents(json) {
|
|
566
|
-
traverse_1.default(json).forEach(function (item) {
|
|
567
|
-
if (is_mitosis_node_1.isMitosisNode(item)) {
|
|
547
|
+
(0, traverse_1.default)(json).forEach(function (item) {
|
|
548
|
+
if ((0, is_mitosis_node_1.isMitosisNode)(item)) {
|
|
568
549
|
if (item.name.endsWith('.Provider')) {
|
|
569
550
|
var value = item.bindings.value;
|
|
570
551
|
var name_2 = item.name.split('.')[0];
|
|
571
|
-
var refPath = trace_reference_to_module_path_1.traceReferenceToModulePath(json.imports, name_2);
|
|
552
|
+
var refPath = (0, trace_reference_to_module_path_1.traceReferenceToModulePath)(json.imports, name_2);
|
|
572
553
|
json.context.set[refPath] = {
|
|
573
554
|
name: name_2,
|
|
574
555
|
value: value
|
|
575
|
-
? exports.parseStateObject(expressionToNode(value))
|
|
556
|
+
? (0, exports.parseStateObject)(expressionToNode(value))
|
|
576
557
|
: undefined,
|
|
577
558
|
};
|
|
578
|
-
this.update(create_mitosis_node_1.createMitosisNode({
|
|
559
|
+
this.update((0, create_mitosis_node_1.createMitosisNode)({
|
|
579
560
|
name: 'Fragment',
|
|
580
561
|
children: item.children,
|
|
581
562
|
}));
|
|
@@ -585,6 +566,9 @@ function extractContextComponents(json) {
|
|
|
585
566
|
}
|
|
586
567
|
});
|
|
587
568
|
}
|
|
569
|
+
var isImportOrDefaultExport = function (node) {
|
|
570
|
+
return types.isExportDefaultDeclaration(node) || types.isImportDeclaration(node);
|
|
571
|
+
};
|
|
588
572
|
function parseJsx(jsx, options) {
|
|
589
573
|
if (options === void 0) { options = {}; }
|
|
590
574
|
var useOptions = __assign({ format: 'react' }, options);
|
|
@@ -607,11 +591,7 @@ function parseJsx(jsx, options) {
|
|
|
607
591
|
return;
|
|
608
592
|
}
|
|
609
593
|
context.builder = {
|
|
610
|
-
component: create_mitosis_component_1.createMitosisComponent(),
|
|
611
|
-
};
|
|
612
|
-
var isImportOrDefaultExport = function (node) {
|
|
613
|
-
return types.isExportDefaultDeclaration(node) ||
|
|
614
|
-
types.isImportDeclaration(node);
|
|
594
|
+
component: (0, create_mitosis_component_1.createMitosisComponent)(),
|
|
615
595
|
};
|
|
616
596
|
var keepStatements = path.node.body.filter(function (statement) {
|
|
617
597
|
return isImportOrDefaultExport(statement);
|
|
@@ -622,10 +602,10 @@ function parseJsx(jsx, options) {
|
|
|
622
602
|
return !types.isExportDefaultDeclaration(node) &&
|
|
623
603
|
types.isFunctionDeclaration(node);
|
|
624
604
|
})
|
|
625
|
-
.map(function (node) { return "export default "
|
|
605
|
+
.map(function (node) { return "export default ".concat((0, generator_1.default)(node).code); });
|
|
626
606
|
cutStatements = collectMetadata(cutStatements, context.builder.component, useOptions);
|
|
627
607
|
// TODO: support multiple? e.g. for others to add imports?
|
|
628
|
-
context.builder.component.hooks.preComponent = generator_1.default(types.program(cutStatements)).code;
|
|
608
|
+
context.builder.component.hooks.preComponent = (0, generator_1.default)(types.program(cutStatements)).code;
|
|
629
609
|
path.replaceWith(types.program(keepStatements));
|
|
630
610
|
},
|
|
631
611
|
FunctionDeclaration: function (path, context) {
|
|
@@ -673,7 +653,7 @@ function parseJsx(jsx, options) {
|
|
|
673
653
|
}); },
|
|
674
654
|
],
|
|
675
655
|
});
|
|
676
|
-
var toParse = replace_new_lines_in_strings_1.stripNewlinesInStrings(output
|
|
656
|
+
var toParse = (0, replace_new_lines_in_strings_1.stripNewlinesInStrings)(output
|
|
677
657
|
.code.trim()
|
|
678
658
|
// Occasional issues where comments get kicked to the top. Full fix should strip these sooner
|
|
679
659
|
.replace(/^\/\*[\s\S]*?\*\/\s*/, '')
|
|
@@ -682,15 +662,7 @@ function parseJsx(jsx, options) {
|
|
|
682
662
|
.replace(/\n"/g, '"')
|
|
683
663
|
.replace(/^\({/, '{')
|
|
684
664
|
.replace(/}\);$/, '}'));
|
|
685
|
-
var parsed;
|
|
686
|
-
try {
|
|
687
|
-
parsed = JSON5.parse(toParse);
|
|
688
|
-
}
|
|
689
|
-
catch (err) {
|
|
690
|
-
debugger;
|
|
691
|
-
console.error('Could not parse code', toParse);
|
|
692
|
-
throw err;
|
|
693
|
-
}
|
|
665
|
+
var parsed = (0, json_1.tryParseJson)(toParse);
|
|
694
666
|
mapReactIdentifiers(parsed);
|
|
695
667
|
extractContextComponents(parsed);
|
|
696
668
|
parsed.subComponents = subComponentFunctions.map(function (item) {
|