@builder.io/mitosis 0.0.77 → 0.0.79

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 (103) hide show
  1. package/dist/src/generators/html.js +6 -3
  2. package/dist/src/generators/qwik/component-generator.js +51 -46
  3. package/dist/src/generators/qwik/stable-inject.d.ts +5 -0
  4. package/dist/src/generators/qwik/stable-inject.js +50 -0
  5. package/dist/src/generators/react/state.js +6 -4
  6. package/dist/src/generators/solid/state/signals.js +6 -7
  7. package/dist/src/generators/solid/state/store.js +6 -7
  8. package/dist/src/helpers/babel-transform.d.ts +0 -1
  9. package/dist/src/helpers/babel-transform.js +2 -3
  10. package/dist/src/helpers/get-state-object-string.js +1 -5
  11. package/dist/src/helpers/handle-missing-state.js +1 -1
  12. package/dist/src/helpers/plugins/process-code.js +1 -1
  13. package/dist/src/helpers/process-http-requests.js +1 -1
  14. package/dist/src/index.d.ts +1 -0
  15. package/dist/src/index.js +1 -0
  16. package/dist/src/parsers/builder/builder.d.ts +34 -0
  17. package/dist/src/parsers/{builder.js → builder/builder.js} +20 -15
  18. package/dist/src/parsers/{helpers/state.d.ts → builder/helpers.d.ts} +2 -2
  19. package/dist/src/parsers/builder/helpers.js +26 -0
  20. package/dist/src/parsers/builder/index.d.ts +1 -0
  21. package/dist/src/parsers/builder/index.js +17 -0
  22. package/dist/src/parsers/jsx/function-parser.js +56 -75
  23. package/dist/src/parsers/jsx/helpers.d.ts +1 -0
  24. package/dist/src/parsers/jsx/helpers.js +6 -2
  25. package/dist/src/parsers/jsx/{metadata.d.ts → hooks.d.ts} +1 -1
  26. package/dist/src/parsers/jsx/{metadata.js → hooks.js} +5 -5
  27. package/dist/src/parsers/jsx/index.d.ts +1 -2
  28. package/dist/src/parsers/jsx/index.js +3 -5
  29. package/dist/src/parsers/jsx/jsx.js +4 -2
  30. package/dist/src/parsers/jsx/state.d.ts +2 -4
  31. package/dist/src/parsers/jsx/state.js +50 -27
  32. package/dist/src/parsers/svelte/css/index.d.ts +3 -0
  33. package/dist/src/parsers/svelte/css/index.js +8 -0
  34. package/dist/src/parsers/svelte/helpers/bindings.d.ts +3 -0
  35. package/dist/src/parsers/svelte/helpers/bindings.js +75 -0
  36. package/dist/src/parsers/svelte/helpers/children.d.ts +5 -0
  37. package/dist/src/parsers/svelte/helpers/children.js +23 -0
  38. package/dist/src/parsers/svelte/helpers/expressions.d.ts +3 -0
  39. package/dist/src/parsers/svelte/helpers/expressions.js +22 -0
  40. package/dist/src/parsers/svelte/helpers/hooks.d.ts +2 -0
  41. package/dist/src/parsers/svelte/helpers/hooks.js +15 -0
  42. package/dist/src/parsers/svelte/helpers/mitosis-node.d.ts +2 -0
  43. package/dist/src/parsers/svelte/helpers/mitosis-node.js +15 -0
  44. package/dist/src/parsers/svelte/helpers/post-process.d.ts +9 -0
  45. package/dist/src/parsers/svelte/helpers/post-process.js +177 -0
  46. package/dist/src/parsers/svelte/helpers/string.d.ts +3 -0
  47. package/dist/src/parsers/svelte/helpers/string.js +26 -0
  48. package/dist/src/parsers/svelte/html/actions.d.ts +3 -0
  49. package/dist/src/parsers/svelte/html/actions.js +40 -0
  50. package/dist/src/parsers/svelte/html/each.d.ts +35 -0
  51. package/dist/src/parsers/svelte/html/each.js +24 -0
  52. package/dist/src/parsers/svelte/html/element.d.ts +3 -0
  53. package/dist/src/parsers/svelte/html/element.js +222 -0
  54. package/dist/src/parsers/svelte/html/fragment.d.ts +3 -0
  55. package/dist/src/parsers/svelte/html/fragment.js +16 -0
  56. package/dist/src/parsers/svelte/html/if-else.d.ts +3 -0
  57. package/dist/src/parsers/svelte/html/if-else.js +37 -0
  58. package/dist/src/parsers/svelte/html/index.d.ts +5 -0
  59. package/dist/src/parsers/svelte/html/index.js +79 -0
  60. package/dist/src/parsers/svelte/html/mustache-tag.d.ts +3 -0
  61. package/dist/src/parsers/svelte/html/mustache-tag.js +23 -0
  62. package/dist/src/parsers/svelte/html/slot.d.ts +3 -0
  63. package/dist/src/parsers/svelte/html/slot.js +25 -0
  64. package/dist/src/parsers/svelte/html/text.d.ts +30 -0
  65. package/dist/src/parsers/svelte/html/text.js +21 -0
  66. package/dist/src/parsers/svelte/index.d.ts +2 -0
  67. package/dist/src/parsers/svelte/index.js +105 -0
  68. package/dist/src/parsers/svelte/instance/context.d.ts +5 -0
  69. package/dist/src/parsers/svelte/instance/context.js +59 -0
  70. package/dist/src/parsers/svelte/instance/expressions.d.ts +3 -0
  71. package/dist/src/parsers/svelte/instance/expressions.js +11 -0
  72. package/dist/src/parsers/svelte/instance/functions.d.ts +3 -0
  73. package/dist/src/parsers/svelte/instance/functions.js +61 -0
  74. package/dist/src/parsers/svelte/instance/hooks.d.ts +5 -0
  75. package/dist/src/parsers/svelte/instance/hooks.js +33 -0
  76. package/dist/src/parsers/svelte/instance/imports.d.ts +3 -0
  77. package/dist/src/parsers/svelte/instance/imports.js +42 -0
  78. package/dist/src/parsers/svelte/instance/index.d.ts +3 -0
  79. package/dist/src/parsers/svelte/instance/index.js +125 -0
  80. package/dist/src/parsers/svelte/instance/properties.d.ts +3 -0
  81. package/dist/src/parsers/svelte/instance/properties.js +34 -0
  82. package/dist/src/parsers/svelte/instance/reactive.d.ts +3 -0
  83. package/dist/src/parsers/svelte/instance/reactive.js +24 -0
  84. package/dist/src/parsers/svelte/instance/references.d.ts +4 -0
  85. package/dist/src/parsers/svelte/instance/references.js +68 -0
  86. package/dist/src/parsers/svelte/instance/statements.d.ts +3 -0
  87. package/dist/src/parsers/svelte/instance/statements.js +10 -0
  88. package/dist/src/parsers/svelte/module/index.d.ts +3 -0
  89. package/dist/src/parsers/svelte/module/index.js +46 -0
  90. package/dist/src/parsers/svelte/types/index.d.ts +4 -0
  91. package/dist/src/parsers/svelte/types/index.js +2 -0
  92. package/dist/src/parsers/svelte/typescript/index.d.ts +7 -0
  93. package/dist/src/parsers/svelte/typescript/index.js +130 -0
  94. package/dist/src/plugins/compile-away-builder-components.d.ts +2 -5
  95. package/dist/src/types/config.d.ts +0 -5
  96. package/dist/src/types/mitosis-component.d.ts +3 -11
  97. package/dist/src/types/mitosis-component.js +0 -11
  98. package/dist/tsconfig.build.tsbuildinfo +1 -1
  99. package/package.json +14 -1
  100. package/dist/src/parsers/builder.d.ts +0 -104
  101. package/dist/src/parsers/constants/outdated-prefixes.d.ts +0 -10
  102. package/dist/src/parsers/constants/outdated-prefixes.js +0 -13
  103. package/dist/src/parsers/helpers/state.js +0 -30
@@ -99,9 +99,11 @@ var addUpdateAfterSet = function (json, options) {
99
99
  if ((0, is_mitosis_node_1.isMitosisNode)(item)) {
100
100
  for (var key in item.bindings) {
101
101
  var value = (_a = item.bindings[key]) === null || _a === void 0 ? void 0 : _a.code;
102
- var newValue = addUpdateAfterSetInCode(value, options);
103
- if (newValue !== value) {
104
- item.bindings[key].code = newValue;
102
+ if (value) {
103
+ var newValue = addUpdateAfterSetInCode(value, options);
104
+ if (newValue !== value) {
105
+ item.bindings[key].code = newValue;
106
+ }
105
107
  }
106
108
  }
107
109
  }
@@ -351,6 +353,7 @@ var blockToHtml = function (json, options, blockOptions) {
351
353
  return str;
352
354
  };
353
355
  function addUpdateAfterSetInCode(code, options, useString) {
356
+ if (code === void 0) { code = ''; }
354
357
  if (useString === void 0) { useString = options.format === 'class' ? 'this.update' : 'update'; }
355
358
  var updates = 0;
356
359
  return (0, babel_transform_1.babelTransformExpression)(code, {
@@ -16,7 +16,6 @@ exports.componentToQwik = void 0;
16
16
  var babel_transform_1 = require("../../helpers/babel-transform");
17
17
  var fast_clone_1 = require("../../helpers/fast-clone");
18
18
  var collect_css_1 = require("../../helpers/styles/collect-css");
19
- var mitosis_component_1 = require("../../types/mitosis-component");
20
19
  var state_1 = require("../../helpers/state");
21
20
  var add_prevent_default_1 = require("./add-prevent-default");
22
21
  var convert_method_to_function_1 = require("./convert-method-to-function");
@@ -24,7 +23,7 @@ var jsx_1 = require("./jsx");
24
23
  var src_generator_1 = require("./src-generator");
25
24
  var plugins_1 = require("../../modules/plugins");
26
25
  var traverse_1 = __importDefault(require("traverse"));
27
- var stable_serialize_1 = require("./stable-serialize");
26
+ var stable_inject_1 = require("./stable-inject");
28
27
  Error.stackTraceLimit = 9999;
29
28
  // TODO(misko): styles are not processed.
30
29
  var DEBUG = false;
@@ -84,7 +83,7 @@ var componentToQwik = function (userOptions) {
84
83
  : (0, src_generator_1.invoke)(file.import(file.qwikModule, 'component$'), [componentFn]), true, true);
85
84
  file.exportDefault(component.name);
86
85
  emitStyles(file, css_1);
87
- DEBUG && file.exportConst('COMPONENT', (0, stable_serialize_1.stableJSONserialize)(component));
86
+ DEBUG && file.exportConst('COMPONENT', JSON.stringify(component));
88
87
  var sourceFile = '// GENERATED BY MITOSIS\n\n' + file.toString();
89
88
  if (userOptions.plugins) {
90
89
  sourceFile = (0, plugins_1.runPreCodePlugins)(sourceFile, userOptions.plugins);
@@ -108,7 +107,7 @@ function emitExports(file, component) {
108
107
  }
109
108
  function emitTagNameHack(file, component, metadataValue) {
110
109
  if (typeof metadataValue === 'string' && metadataValue) {
111
- file.src.emit(metadataValue, '=', (0, convert_method_to_function_1.convertMethodToFunction)(metadataValue, stateToMethodOrGetter(component.state), getLexicalScopeVars(component)), ';');
110
+ file.src.emit(metadataValue, '=', (0, convert_method_to_function_1.convertMethodToFunction)(metadataValue, getStateMethodsAndGetters(component.state), getLexicalScopeVars(component)), ';');
112
111
  }
113
112
  }
114
113
  function emitUseClientEffect(file, component) {
@@ -165,20 +164,22 @@ function emitUseContextProvider(file, component) {
165
164
  Object.keys(component.context.set).forEach(function (ctxKey) {
166
165
  var context = component.context.set[ctxKey];
167
166
  file.src.emit(file.import(file.qwikModule, 'useContextProvider').localName, '(', context.name, ',', file.import(file.qwikModule, 'useStore').localName, '({');
168
- context.value &&
169
- Object.keys(context.value).forEach(function (prop) {
170
- var propValue = context.value[prop];
171
- file.src.emit(prop, ':');
172
- if ((propValue === null || propValue === void 0 ? void 0 : propValue.type) === 'getter') {
167
+ for (var _i = 0, _a = Object.keys(context.value || {}); _i < _a.length; _i++) {
168
+ var prop = _a[_i];
169
+ var propValue = context.value[prop];
170
+ file.src.emit(prop, ':');
171
+ switch (propValue === null || propValue === void 0 ? void 0 : propValue.type) {
172
+ case 'getter':
173
173
  file.src.emit('(()=>{', extractGetterBody(propValue.code), '})(),');
174
- }
175
- else if (typeof propValue == 'function') {
174
+ continue;
175
+ case 'function':
176
+ case 'method':
176
177
  throw new Error('Qwik: Functions are not supported in context');
177
- }
178
- else {
179
- file.src.emit((0, stable_serialize_1.stableJSONserialize)(propValue));
180
- }
181
- });
178
+ case 'property':
179
+ file.src.emit((0, stable_inject_1.stableInject)(propValue.code), ',');
180
+ continue;
181
+ }
182
+ }
182
183
  file.src.emit('})', ');');
183
184
  });
184
185
  }
@@ -218,7 +219,7 @@ function emitUseStore(file, stateInit) {
218
219
  file.src.emit('<any>');
219
220
  }
220
221
  file.src.emit('(');
221
- file.src.emit((0, stable_serialize_1.stableJSONserialize)(state));
222
+ file.src.emit((0, stable_inject_1.stableInject)(state));
222
223
  file.src.emit(');');
223
224
  }
224
225
  else {
@@ -236,7 +237,7 @@ function emitStateMethodsAndRewriteBindings(file, component, metadata) {
236
237
  var _a;
237
238
  var lexicalArgs = getLexicalScopeVars(component);
238
239
  var state = emitStateMethods(file, component.state, lexicalArgs);
239
- var methodMap = stateToMethodOrGetter(component.state);
240
+ var methodMap = getStateMethodsAndGetters(component.state);
240
241
  rewriteCodeExpr(component, methodMap, lexicalArgs, (_a = metadata.qwik) === null || _a === void 0 ? void 0 : _a.replace);
241
242
  return state;
242
243
  }
@@ -246,7 +247,7 @@ var checkIsObjectWithCodeBlock = function (obj) {
246
247
  function rewriteCodeExpr(component, methodMap, lexicalArgs, replace) {
247
248
  if (replace === void 0) { replace = {}; }
248
249
  (0, traverse_1.default)(component).forEach(function (item) {
249
- if (!((0, mitosis_component_1.checkIsCodeValue)(item) || checkIsObjectWithCodeBlock(item))) {
250
+ if (!checkIsObjectWithCodeBlock(item)) {
250
251
  return;
251
252
  }
252
253
  var code = (0, convert_method_to_function_1.convertMethodToFunction)(item.code, methodMap, lexicalArgs);
@@ -273,34 +274,38 @@ function emitImports(file, component) {
273
274
  function emitStateMethods(file, componentState, lexicalArgs) {
274
275
  var stateValues = {};
275
276
  var stateInit = [stateValues];
276
- var methodMap = stateToMethodOrGetter(componentState);
277
- Object.keys(componentState).forEach(function (key) {
277
+ var methodMap = getStateMethodsAndGetters(componentState);
278
+ for (var key in componentState) {
278
279
  var stateValue = componentState[key];
279
- if ((0, mitosis_component_1.checkIsCodeValue)(stateValue)) {
280
- var code = stateValue.code;
281
- var prefixIdx = 0;
282
- if (stateValue.type === 'getter') {
283
- prefixIdx += 'get '.length;
284
- }
285
- else if (stateValue.type === 'function') {
286
- prefixIdx += 'function '.length;
287
- }
288
- code = code.substring(prefixIdx);
289
- code = (0, convert_method_to_function_1.convertMethodToFunction)(code, methodMap, lexicalArgs).replace('(', "(".concat(lexicalArgs.join(','), ","));
290
- var functionName = code.split(/\(/)[0];
291
- if (stateValue.type === 'getter') {
292
- stateInit.push("state.".concat(key, "=").concat(functionName, "(").concat(lexicalArgs.join(','), ")"));
293
- }
294
- if (!file.options.isTypeScript) {
295
- // Erase type information
296
- code = convertTypeScriptToJS(code);
297
- }
298
- file.exportConst(functionName, 'function ' + code, true);
299
- }
300
- else {
301
- stateValues[key] = stateValue === null || stateValue === void 0 ? void 0 : stateValue.code;
280
+ switch (stateValue === null || stateValue === void 0 ? void 0 : stateValue.type) {
281
+ case 'method':
282
+ case 'getter':
283
+ case 'function':
284
+ var code = stateValue.code;
285
+ var prefixIdx = 0;
286
+ if (stateValue.type === 'getter') {
287
+ prefixIdx += 'get '.length;
288
+ }
289
+ else if (stateValue.type === 'function') {
290
+ prefixIdx += 'function '.length;
291
+ }
292
+ code = code.substring(prefixIdx);
293
+ code = (0, convert_method_to_function_1.convertMethodToFunction)(code, methodMap, lexicalArgs).replace('(', "(".concat(lexicalArgs.join(','), ","));
294
+ var functionName = code.split(/\(/)[0];
295
+ if (stateValue.type === 'getter') {
296
+ stateInit.push("state.".concat(key, "=").concat(functionName, "(").concat(lexicalArgs.join(','), ")"));
297
+ }
298
+ if (!file.options.isTypeScript) {
299
+ // Erase type information
300
+ code = convertTypeScriptToJS(code);
301
+ }
302
+ file.exportConst(functionName, 'function ' + code, true);
303
+ continue;
304
+ case 'property':
305
+ stateValues[key] = stateValue.code;
306
+ continue;
302
307
  }
303
- });
308
+ }
304
309
  return stateInit;
305
310
  }
306
311
  function convertTypeScriptToJS(code) {
@@ -311,7 +316,7 @@ function extractGetterBody(code) {
311
316
  var end = code.lastIndexOf('}');
312
317
  return code.substring(start + 1, end).trim();
313
318
  }
314
- function stateToMethodOrGetter(state) {
319
+ function getStateMethodsAndGetters(state) {
315
320
  var methodMap = {};
316
321
  Object.keys(state).forEach(function (key) {
317
322
  var stateVal = state[key];
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Similar to our `stableJSONSerialize` function, except that it does not stringify the values: it injects them as-is.
3
+ * This is needed for our `MitosisState` values which are JS expressions stored as strings.
4
+ */
5
+ export declare function stableInject(obj: any): string;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stableInject = void 0;
4
+ /**
5
+ * Similar to our `stableJSONSerialize` function, except that it does not stringify the values: it injects them as-is.
6
+ * This is needed for our `MitosisState` values which are JS expressions stored as strings.
7
+ */
8
+ function stableInject(obj) {
9
+ var output = [];
10
+ _serialize(output, obj);
11
+ return output.join('');
12
+ }
13
+ exports.stableInject = stableInject;
14
+ function _serialize(output, obj) {
15
+ if (obj == null) {
16
+ output.push('null');
17
+ }
18
+ else if (typeof obj === 'object') {
19
+ if (Array.isArray(obj)) {
20
+ output.push('[');
21
+ var sep = '';
22
+ for (var i = 0; i < obj.length; i++) {
23
+ output.push(sep);
24
+ _serialize(output, obj[i]);
25
+ sep = ',';
26
+ }
27
+ output.push(']');
28
+ }
29
+ else {
30
+ var keys = Object.keys(obj).sort();
31
+ output.push('{');
32
+ var sep = '';
33
+ for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
34
+ var key = keys_1[_i];
35
+ var value = obj[key];
36
+ if (value !== undefined) {
37
+ output.push(sep);
38
+ output.push(JSON.stringify(key));
39
+ output.push(':');
40
+ _serialize(output, value);
41
+ sep = ',';
42
+ }
43
+ }
44
+ output.push('}');
45
+ }
46
+ }
47
+ else {
48
+ output.push(obj);
49
+ }
50
+ }
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.updateStateSettersInCode = exports.updateStateSetters = exports.getUseStateCode = exports.processHookCode = void 0;
7
7
  var core_1 = require("@babel/core");
8
- var json5_1 = __importDefault(require("json5"));
9
8
  var traverse_1 = __importDefault(require("traverse"));
10
9
  var capitalize_1 = require("../../helpers/capitalize");
11
10
  var is_mitosis_node_1 = require("../../helpers/is-mitosis-node");
@@ -36,11 +35,14 @@ var processStateValue = function (options) {
36
35
  var mapValue = valueMapper(options);
37
36
  return function (_a) {
38
37
  var key = _a[0], stateVal = _a[1];
38
+ if (!stateVal) {
39
+ return '';
40
+ }
39
41
  var getDefaultCase = function () {
40
- return (0, function_1.pipe)(value, json5_1.default.stringify, mapValue, function (x) { return "const [".concat(key, ", ").concat(getSetStateFnName(key), "] = useState(() => (").concat(x, "))"); });
42
+ return (0, function_1.pipe)(value, mapValue, function (x) { return "const [".concat(key, ", ").concat(getSetStateFnName(key), "] = useState(() => (").concat(x, "))"); });
41
43
  };
42
- var value = stateVal === null || stateVal === void 0 ? void 0 : stateVal.code;
43
- var type = stateVal === null || stateVal === void 0 ? void 0 : stateVal.type;
44
+ var value = stateVal.code || '';
45
+ var type = stateVal.type;
44
46
  if (typeof value === 'string') {
45
47
  switch (type) {
46
48
  case 'getter':
@@ -1,10 +1,6 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.getSignalsCode = void 0;
7
- var json5_1 = __importDefault(require("json5"));
8
4
  var function_1 = require("fp-ts/lib/function");
9
5
  var patterns_1 = require("../../../helpers/patterns");
10
6
  var helpers_1 = require("./helpers");
@@ -13,11 +9,14 @@ var processSignalStateValue = function (_a) {
13
9
  var mapValue = (0, helpers_1.updateStateCode)({ options: options, component: component });
14
10
  return function (_a) {
15
11
  var key = _a[0], stateVal = _a[1];
12
+ if (!stateVal) {
13
+ return '';
14
+ }
16
15
  var getDefaultCase = function () {
17
- return (0, function_1.pipe)(value, json5_1.default.stringify, mapValue, function (x) { return "const [".concat(key, ", ").concat((0, helpers_1.getStateSetterName)(key), "] = createSignal(").concat(x, ")"); });
16
+ return (0, function_1.pipe)(value, mapValue, function (x) { return "const [".concat(key, ", ").concat((0, helpers_1.getStateSetterName)(key), "] = createSignal(").concat(x, ")"); });
18
17
  };
19
- var value = stateVal === null || stateVal === void 0 ? void 0 : stateVal.code;
20
- var type = stateVal === null || stateVal === void 0 ? void 0 : stateVal.type;
18
+ var value = stateVal.code;
19
+ var type = stateVal.type;
21
20
  if (typeof value === 'string') {
22
21
  switch (type) {
23
22
  case 'getter':
@@ -8,13 +8,9 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
8
8
  }
9
9
  return to.concat(ar || Array.prototype.slice.call(from));
10
10
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
11
  Object.defineProperty(exports, "__esModule", { value: true });
15
12
  exports.getStoreCode = void 0;
16
13
  var core_1 = require("@babel/core");
17
- var json5_1 = __importDefault(require("json5"));
18
14
  var babel_transform_1 = require("../../../helpers/babel-transform");
19
15
  var capitalize_1 = require("../../../helpers/capitalize");
20
16
  var function_1 = require("fp-ts/lib/function");
@@ -45,12 +41,15 @@ var getStoreCode = function (_a) {
45
41
  var mapValue = (0, helpers_1.updateStateCode)({ options: options, component: component });
46
42
  var stateUpdater = function (_a) {
47
43
  var key = _a[0], stateVal = _a[1];
44
+ if (!stateVal) {
45
+ return '';
46
+ }
48
47
  var getCreateStoreStr = function (initialValue) {
49
48
  return "const [".concat(key, ", ").concat((0, helpers_1.getStateSetterName)(key), "] = createStore(").concat(initialValue, ")");
50
49
  };
51
- var getDefaultCase = function () { return (0, function_1.pipe)(value, json5_1.default.stringify, mapValue, getCreateStoreStr); };
52
- var value = stateVal === null || stateVal === void 0 ? void 0 : stateVal.code;
53
- var type = stateVal === null || stateVal === void 0 ? void 0 : stateVal.type;
50
+ var getDefaultCase = function () { return (0, function_1.pipe)(value, mapValue, getCreateStoreStr); };
51
+ var value = stateVal.code;
52
+ var type = stateVal.type;
54
53
  if (typeof value === 'string') {
55
54
  switch (type) {
56
55
  case 'getter':
@@ -3,6 +3,5 @@ import type { Visitor } from '@babel/traverse';
3
3
  export declare const babelTransform: <VisitorContextType = any>(code: string, visitor?: babel.Visitor<VisitorContextType> | undefined) => babel.BabelFileResult | null;
4
4
  export declare const babelTransformCode: <VisitorContextType = any>(code: string, visitor?: babel.Visitor<VisitorContextType> | undefined) => string;
5
5
  declare type ExpressionType = 'expression' | 'unknown' | 'block' | 'functionBody';
6
- export declare const getType: (code: string, initialType: ExpressionType) => ExpressionType;
7
6
  export declare const babelTransformExpression: <VisitorContextType = any>(code: string, visitor: babel.Visitor<VisitorContextType>, initialType?: ExpressionType) => string;
8
7
  export {};
@@ -32,7 +32,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
32
32
  return to.concat(ar || Array.prototype.slice.call(from));
33
33
  };
34
34
  Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.babelTransformExpression = exports.getType = exports.babelTransformCode = exports.babelTransform = void 0;
35
+ exports.babelTransformExpression = exports.babelTransformCode = exports.babelTransform = void 0;
36
36
  var babel = __importStar(require("@babel/core"));
37
37
  var jsxPlugin = require('@babel/plugin-syntax-jsx');
38
38
  var tsPreset = require('@babel/preset-typescript');
@@ -104,13 +104,12 @@ var getType = function (code, initialType) {
104
104
  }
105
105
  return initialType;
106
106
  };
107
- exports.getType = getType;
108
107
  var babelTransformExpression = function (code, visitor, initialType) {
109
108
  if (initialType === void 0) { initialType = 'unknown'; }
110
109
  if (!code) {
111
110
  return '';
112
111
  }
113
- var type = (0, exports.getType)(code, initialType);
112
+ var type = getType(code, initialType);
114
113
  var useCode = type === 'functionBody' ? "function(){".concat(code, "}") : code;
115
114
  if (type !== 'expression') {
116
115
  try {
@@ -10,12 +10,8 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
- var __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
13
  Object.defineProperty(exports, "__esModule", { value: true });
17
14
  exports.getStateObjectStringFromComponent = exports.stringifyContextValue = exports.getMemberObjectString = void 0;
18
- var json5_1 = __importDefault(require("json5"));
19
15
  var DEFAULT_OPTIONS = {
20
16
  format: 'object',
21
17
  keyPrefix: '',
@@ -56,7 +52,7 @@ var convertStateMemberToString = function (_a) {
56
52
  if (data === false) {
57
53
  return undefined;
58
54
  }
59
- return "".concat(keyPrefix, " ").concat(key).concat(keyValueDelimiter, " ").concat(valueMapper(json5_1.default.stringify(code), 'data', typeParameter));
55
+ return "".concat(keyPrefix, " ").concat(key).concat(keyValueDelimiter, " ").concat(valueMapper(code, 'data', typeParameter));
60
56
  }
61
57
  default:
62
58
  break;
@@ -6,7 +6,7 @@ function handleMissingState(json) {
6
6
  var stateUsed = (0, get_state_used_1.getStateUsed)(json);
7
7
  Array.from(stateUsed).forEach(function (property) {
8
8
  if (!(property in json.state)) {
9
- json.state[property] = { code: null, type: 'property' };
9
+ json.state[property] = { code: 'null', type: 'property' };
10
10
  }
11
11
  });
12
12
  }
@@ -55,7 +55,7 @@ var CODE_PROCESSOR_PLUGIN = function (codeProcessor) {
55
55
  }
56
56
  for (var key in json.state) {
57
57
  var state = json.state[key];
58
- if (state && state.type !== 'property') {
58
+ if (state) {
59
59
  state.code = codeProcessor('state')(state.code);
60
60
  }
61
61
  }
@@ -8,7 +8,7 @@ function processHttpRequests(json) {
8
8
  if (httpRequests) {
9
9
  for (var key in httpRequests) {
10
10
  if (!json.state[key]) {
11
- json.state[key] = { code: null, type: 'property' };
11
+ json.state[key] = { code: 'null', type: 'property' };
12
12
  }
13
13
  var value = httpRequests[key];
14
14
  // TODO: unravel our proxy. aka parse out methods, header, etc
@@ -31,6 +31,7 @@ export declare const useDefaultProps: <T = {
31
31
  }>(value: T) => T;
32
32
  export declare const useStyle: (value: string) => any;
33
33
  export * from './parsers/jsx';
34
+ export * from './parsers/svelte';
34
35
  export * from './parsers/builder';
35
36
  export * from './parsers/angular';
36
37
  export * from './parsers/context';
package/dist/src/index.js CHANGED
@@ -68,6 +68,7 @@ exports.useDefaultProps = useDefaultProps;
68
68
  var useStyle = function (value) { return null; };
69
69
  exports.useStyle = useStyle;
70
70
  __exportStar(require("./parsers/jsx"), exports);
71
+ __exportStar(require("./parsers/svelte"), exports);
71
72
  __exportStar(require("./parsers/builder"), exports);
72
73
  __exportStar(require("./parsers/angular"), exports);
73
74
  __exportStar(require("./parsers/context"), exports);
@@ -0,0 +1,34 @@
1
+ import { BuilderContent, BuilderElement } from '@builder.io/sdk';
2
+ import { MitosisNode } from '../../types/mitosis-node';
3
+ import { MitosisComponent, MitosisState } from '../..';
4
+ declare type InternalOptions = {
5
+ skipMapper?: boolean;
6
+ };
7
+ export declare const symbolBlocksAsChildren = false;
8
+ export declare type BuilderToMitosisOptions = {
9
+ context?: {
10
+ [key: string]: any;
11
+ };
12
+ includeBuilderExtras?: boolean;
13
+ preserveTextBlocks?: boolean;
14
+ };
15
+ export declare type InternalBuilderToMitosisOptions = BuilderToMitosisOptions & {
16
+ context: {
17
+ [key: string]: any;
18
+ };
19
+ };
20
+ export declare const builderElementToMitosisNode: (block: BuilderElement, options: BuilderToMitosisOptions, _internalOptions?: InternalOptions) => MitosisNode;
21
+ /**
22
+ * Take Builder custom jsCode and extract the contents of the useState hook
23
+ * and return it as a JS object along with the inputted code with the hook
24
+ * code extracted
25
+ */
26
+ export declare function extractStateHook(code: string): {
27
+ code: string;
28
+ state: MitosisState;
29
+ };
30
+ export declare function convertExportDefaultToReturn(code: string): string;
31
+ export declare const createBuilderElement: (options?: Partial<BuilderElement>) => BuilderElement;
32
+ export declare const isBuilderElement: (el: unknown) => el is BuilderElement;
33
+ export declare const builderContentToMitosisComponent: (builderContent: BuilderContent, options?: BuilderToMitosisOptions) => MitosisComponent;
34
+ export {};
@@ -42,16 +42,17 @@ var babel = __importStar(require("@babel/core"));
42
42
  var generator_1 = __importDefault(require("@babel/generator"));
43
43
  var json5_1 = __importDefault(require("json5"));
44
44
  var lodash_1 = require("lodash");
45
- var fast_clone_1 = require("../helpers/fast-clone");
45
+ var fast_clone_1 = require("../../helpers/fast-clone");
46
46
  var traverse_1 = __importDefault(require("traverse"));
47
- var media_sizes_1 = require("../constants/media-sizes");
48
- var capitalize_1 = require("../helpers/capitalize");
49
- var create_mitosis_component_1 = require("../helpers/create-mitosis-component");
50
- var create_mitosis_node_1 = require("../helpers/create-mitosis-node");
51
- var jsx_1 = require("./jsx");
52
- var parsers_1 = require("../helpers/parsers");
53
- var __1 = require("..");
54
- var state_1 = require("./helpers/state");
47
+ var media_sizes_1 = require("../../constants/media-sizes");
48
+ var capitalize_1 = require("../../helpers/capitalize");
49
+ var create_mitosis_component_1 = require("../../helpers/create-mitosis-component");
50
+ var create_mitosis_node_1 = require("../../helpers/create-mitosis-node");
51
+ var jsx_1 = require("../jsx");
52
+ var parsers_1 = require("../../helpers/parsers");
53
+ var __1 = require("../..");
54
+ var helpers_1 = require("./helpers");
55
+ var state_1 = require("../jsx/state");
55
56
  // Omit some superflous styles that can come from Builder's web importer
56
57
  var styleOmitList = [
57
58
  'backgroundRepeatX',
@@ -573,7 +574,7 @@ function extractStateHook(code) {
573
574
  if (types.isIdentifier(expression.callee) && expression.callee.name === 'useState') {
574
575
  var arg = expression.arguments[0];
575
576
  if (types.isObjectExpression(arg)) {
576
- state = (0, jsx_1.parseStateObject)(arg);
577
+ state = (0, state_1.parseStateObjectToMitosisState)(arg);
577
578
  newBody.splice(i, 1);
578
579
  }
579
580
  }
@@ -584,7 +585,7 @@ function extractStateHook(code) {
584
585
  expression.callee.property.name === 'assign') {
585
586
  var arg = expression.arguments[1];
586
587
  if (types.isObjectExpression(arg)) {
587
- state = (0, jsx_1.parseStateObject)(arg);
588
+ state = (0, state_1.parseStateObjectToMitosisState)(arg);
588
589
  newBody.splice(i, 1);
589
590
  }
590
591
  }
@@ -702,15 +703,19 @@ var builderContentPartToMitosisComponent = function (builderContent, options) {
702
703
  var _k = extractStateHook(((_a = builderContent === null || builderContent === void 0 ? void 0 : builderContent.data) === null || _a === void 0 ? void 0 : _a.tsCode) || ((_b = builderContent === null || builderContent === void 0 ? void 0 : builderContent.data) === null || _b === void 0 ? void 0 : _b.jsCode) || ''), state = _k.state, code = _k.code;
703
704
  var customCode = convertExportDefaultToReturn(code);
704
705
  var parsed = getHooks(builderContent);
706
+ var parsedState = (parsed === null || parsed === void 0 ? void 0 : parsed.state) || {};
707
+ var mitosisState = Object.keys(parsedState).length > 0
708
+ ? parsedState
709
+ : __assign(__assign({}, state), (0, helpers_1.mapBuilderContentStateToMitosisState)(((_c = builderContent.data) === null || _c === void 0 ? void 0 : _c.state) || {}));
705
710
  var componentJson = (0, create_mitosis_component_1.createMitosisComponent)({
706
711
  meta: __assign({ useMetadata: {
707
- httpRequests: (_c = builderContent.data) === null || _c === void 0 ? void 0 : _c.httpRequests,
708
- } }, (((_d = builderContent.data) === null || _d === void 0 ? void 0 : _d.cssCode) && { cssCode: builderContent.data.cssCode })),
709
- inputs: (_f = (_e = builderContent.data) === null || _e === void 0 ? void 0 : _e.inputs) === null || _f === void 0 ? void 0 : _f.map(function (input) { return ({
712
+ httpRequests: (_d = builderContent.data) === null || _d === void 0 ? void 0 : _d.httpRequests,
713
+ } }, (((_e = builderContent.data) === null || _e === void 0 ? void 0 : _e.cssCode) && { cssCode: builderContent.data.cssCode })),
714
+ inputs: (_g = (_f = builderContent.data) === null || _f === void 0 ? void 0 : _f.inputs) === null || _g === void 0 ? void 0 : _g.map(function (input) { return ({
710
715
  name: input.name,
711
716
  defaultValue: input.defaultValue,
712
717
  }); }),
713
- state: (parsed === null || parsed === void 0 ? void 0 : parsed.state) || __assign(__assign({}, state), (0, state_1.mapJsonObjectToStateValue)((_g = builderContent.data) === null || _g === void 0 ? void 0 : _g.state)),
718
+ state: mitosisState,
714
719
  hooks: __assign({}, ((((_h = parsed === null || parsed === void 0 ? void 0 : parsed.hooks.onMount) === null || _h === void 0 ? void 0 : _h.code) || (customCode && { code: customCode })) && {
715
720
  onMount: (parsed === null || parsed === void 0 ? void 0 : parsed.hooks.onMount) || { code: customCode },
716
721
  })),
@@ -1,3 +1,3 @@
1
- import { JSONObject } from '../../types/json';
2
1
  import { MitosisComponent } from '../../types/mitosis-component';
3
- export declare const mapJsonObjectToStateValue: (value: JSONObject) => MitosisComponent['state'];
2
+ import { JSONObject } from '../../types/json';
3
+ export declare const mapBuilderContentStateToMitosisState: (value: JSONObject) => MitosisComponent['state'];
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapBuilderContentStateToMitosisState = void 0;
4
+ var patterns_1 = require("../../helpers/patterns");
5
+ var lodash_1 = require("lodash");
6
+ var __DO_NOT_USE_FUNCTION_LITERAL_PREFIX = "@builder.io/mitosis/function:";
7
+ var __DO_NOT_USE_METHOD_LITERAL_PREFIX = "@builder.io/mitosis/method:";
8
+ /**
9
+ * Maps the Builder State format to the Mitosis State format.
10
+ */
11
+ var mapJsonToStateValue = function (value) {
12
+ if (typeof value === 'string') {
13
+ if (value.startsWith(__DO_NOT_USE_FUNCTION_LITERAL_PREFIX)) {
14
+ return { type: 'function', code: value.replace(__DO_NOT_USE_FUNCTION_LITERAL_PREFIX, '') };
15
+ }
16
+ else if (value.startsWith(__DO_NOT_USE_METHOD_LITERAL_PREFIX)) {
17
+ var strippedValue = value.replace(__DO_NOT_USE_METHOD_LITERAL_PREFIX, '');
18
+ var isGet = Boolean(strippedValue.match(patterns_1.GETTER));
19
+ var type = isGet ? 'getter' : 'method';
20
+ return { type: type, code: strippedValue };
21
+ }
22
+ }
23
+ return { type: 'property', code: JSON.stringify(value) };
24
+ };
25
+ var mapBuilderContentStateToMitosisState = function (value) { return (0, lodash_1.mapValues)(value, mapJsonToStateValue); };
26
+ exports.mapBuilderContentStateToMitosisState = mapBuilderContentStateToMitosisState;
@@ -0,0 +1 @@
1
+ export * from './builder';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./builder"), exports);