@builder.io/mitosis 0.4.0 → 0.4.2

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 (196) hide show
  1. package/dist/src/constants/media-sizes.js +4 -5
  2. package/dist/src/generators/alpine/generate.js +114 -132
  3. package/dist/src/generators/alpine/render-mount-hook.js +8 -5
  4. package/dist/src/generators/alpine/render-update-hooks.js +13 -13
  5. package/dist/src/generators/angular/helpers.js +19 -9
  6. package/dist/src/generators/angular/index.js +599 -584
  7. package/dist/src/generators/builder.js +200 -165
  8. package/dist/src/generators/context/angular.js +32 -26
  9. package/dist/src/generators/context/helpers/context-with-symbol-key.js +25 -21
  10. package/dist/src/generators/context/qwik.js +21 -21
  11. package/dist/src/generators/context/react.js +22 -22
  12. package/dist/src/generators/context/rsc.js +20 -22
  13. package/dist/src/generators/context/solid.js +22 -22
  14. package/dist/src/generators/context/svelte.js +33 -28
  15. package/dist/src/generators/context/vue.js +1 -1
  16. package/dist/src/generators/helpers/context.js +6 -13
  17. package/dist/src/generators/helpers/functions.js +8 -8
  18. package/dist/src/generators/helpers/on-mount.js +9 -5
  19. package/dist/src/generators/helpers/rsc.js +7 -9
  20. package/dist/src/generators/html.js +995 -534
  21. package/dist/src/generators/liquid.js +81 -79
  22. package/dist/src/generators/lit/collect-class-string.js +10 -12
  23. package/dist/src/generators/lit/generate.js +204 -159
  24. package/dist/src/generators/marko/generate.js +193 -183
  25. package/dist/src/generators/minify.js +5 -9
  26. package/dist/src/generators/mitosis.js +135 -134
  27. package/dist/src/generators/qwik/component-generator.js +159 -154
  28. package/dist/src/generators/qwik/component.js +51 -81
  29. package/dist/src/generators/qwik/directives.js +68 -84
  30. package/dist/src/generators/qwik/helpers/add-prevent-default.js +6 -7
  31. package/dist/src/generators/qwik/helpers/convert-method-to-function.js +38 -38
  32. package/dist/src/generators/qwik/helpers/handlers.js +16 -25
  33. package/dist/src/generators/qwik/helpers/stable-inject.js +7 -8
  34. package/dist/src/generators/qwik/helpers/stable-serialize.js +7 -8
  35. package/dist/src/generators/qwik/helpers/state.js +36 -43
  36. package/dist/src/generators/qwik/helpers/styles.js +19 -40
  37. package/dist/src/generators/qwik/jsx.js +63 -75
  38. package/dist/src/generators/qwik/src-generator.js +134 -167
  39. package/dist/src/generators/react/blocks.js +122 -127
  40. package/dist/src/generators/react/generator.js +314 -259
  41. package/dist/src/generators/react/helpers.js +23 -28
  42. package/dist/src/generators/react/state.js +34 -51
  43. package/dist/src/generators/react-native/index.js +72 -84
  44. package/dist/src/generators/react-native/sanitize-react-native-block-styles.js +14 -26
  45. package/dist/src/generators/rsc.js +30 -36
  46. package/dist/src/generators/solid/blocks.js +46 -43
  47. package/dist/src/generators/solid/helpers/styles.js +11 -11
  48. package/dist/src/generators/solid/index.js +199 -190
  49. package/dist/src/generators/solid/state/helpers.js +76 -90
  50. package/dist/src/generators/solid/state/signals.js +30 -37
  51. package/dist/src/generators/solid/state/state.js +35 -48
  52. package/dist/src/generators/solid/state/store.js +40 -46
  53. package/dist/src/generators/stencil/collect-class-string.js +10 -12
  54. package/dist/src/generators/stencil/generate.js +158 -145
  55. package/dist/src/generators/svelte/blocks.js +146 -144
  56. package/dist/src/generators/svelte/helpers.js +10 -17
  57. package/dist/src/generators/svelte/svelte.js +321 -287
  58. package/dist/src/generators/swift-ui.js +162 -101
  59. package/dist/src/generators/taro.js +32 -36
  60. package/dist/src/generators/template.js +71 -74
  61. package/dist/src/generators/vue/blocks.js +116 -107
  62. package/dist/src/generators/vue/compositionApi.js +67 -50
  63. package/dist/src/generators/vue/helpers.js +71 -96
  64. package/dist/src/generators/vue/optionsApi.js +134 -105
  65. package/dist/src/generators/vue/vue.js +210 -207
  66. package/dist/src/helpers/babel-transform.js +40 -63
  67. package/dist/src/helpers/bindings.js +4 -12
  68. package/dist/src/helpers/camel-case.js +4 -5
  69. package/dist/src/helpers/capitalize.js +1 -1
  70. package/dist/src/helpers/component-file-extensions.js +23 -35
  71. package/dist/src/helpers/create-mitosis-component.js +22 -26
  72. package/dist/src/helpers/create-mitosis-context.js +5 -12
  73. package/dist/src/helpers/create-mitosis-node.js +10 -12
  74. package/dist/src/helpers/dash-case.js +2 -2
  75. package/dist/src/helpers/dedent.js +18 -22
  76. package/dist/src/helpers/event-handlers.js +1 -1
  77. package/dist/src/helpers/fast-clone.js +1 -1
  78. package/dist/src/helpers/filter-empty-text-nodes.js +2 -2
  79. package/dist/src/helpers/generic-format.js +7 -8
  80. package/dist/src/helpers/get-bindings.js +4 -4
  81. package/dist/src/helpers/get-components-used.js +3 -3
  82. package/dist/src/helpers/get-components.js +4 -4
  83. package/dist/src/helpers/get-custom-imports.js +10 -12
  84. package/dist/src/helpers/get-prop-functions.js +7 -8
  85. package/dist/src/helpers/get-props-ref.js +8 -8
  86. package/dist/src/helpers/get-props.js +12 -13
  87. package/dist/src/helpers/get-refs.js +4 -4
  88. package/dist/src/helpers/get-state-object-string.js +42 -61
  89. package/dist/src/helpers/get-state-used.js +7 -8
  90. package/dist/src/helpers/get-styles.js +6 -6
  91. package/dist/src/helpers/getters-to-functions.js +8 -12
  92. package/dist/src/helpers/handle-missing-state.js +3 -3
  93. package/dist/src/helpers/has-bindings-text.js +6 -6
  94. package/dist/src/helpers/has-component.js +4 -4
  95. package/dist/src/helpers/has-props.js +3 -3
  96. package/dist/src/helpers/has-stateful-dom.js +4 -4
  97. package/dist/src/helpers/has.js +3 -3
  98. package/dist/src/helpers/indent.js +2 -3
  99. package/dist/src/helpers/is-children.js +4 -5
  100. package/dist/src/helpers/is-component.js +1 -1
  101. package/dist/src/helpers/is-html-attribute.js +2 -11
  102. package/dist/src/helpers/is-mitosis-node.js +1 -1
  103. package/dist/src/helpers/is-root-text-node.js +1 -1
  104. package/dist/src/helpers/is-upper-case.js +1 -1
  105. package/dist/src/helpers/is-valid-attribute-name.js +1 -1
  106. package/dist/src/helpers/json.js +2 -2
  107. package/dist/src/helpers/map-refs.js +29 -40
  108. package/dist/src/helpers/merge-options.js +20 -31
  109. package/dist/src/helpers/mitosis-imports.js +5 -6
  110. package/dist/src/helpers/nodes/for.js +2 -3
  111. package/dist/src/helpers/nullable.js +1 -3
  112. package/dist/src/helpers/on-event.js +32 -36
  113. package/dist/src/helpers/output.js +4 -5
  114. package/dist/src/helpers/parse-node.js +13 -5
  115. package/dist/src/helpers/parsers.js +10 -14
  116. package/dist/src/helpers/patterns.js +6 -8
  117. package/dist/src/helpers/plugins/process-code/index.js +114 -120
  118. package/dist/src/helpers/plugins/process-signals.js +114 -125
  119. package/dist/src/helpers/plugins/process-target-blocks.js +18 -20
  120. package/dist/src/helpers/process-http-requests.js +8 -4
  121. package/dist/src/helpers/remove-surrounding-block.js +2 -2
  122. package/dist/src/helpers/render-imports.js +99 -111
  123. package/dist/src/helpers/replace-identifiers.js +40 -49
  124. package/dist/src/helpers/replace-new-lines-in-strings.js +3 -3
  125. package/dist/src/helpers/signals/signals.js +27 -35
  126. package/dist/src/helpers/slots.js +11 -20
  127. package/dist/src/helpers/state.js +1 -3
  128. package/dist/src/helpers/strip-meta-properties.js +6 -6
  129. package/dist/src/helpers/strip-state-and-props-refs.js +21 -32
  130. package/dist/src/helpers/styles/collect-css.js +39 -44
  131. package/dist/src/helpers/styles/collect-styled-components.js +30 -28
  132. package/dist/src/helpers/styles/helpers.js +23 -29
  133. package/dist/src/helpers/trace-reference-to-module-path.js +3 -4
  134. package/dist/src/helpers/transform-state-setters.js +16 -19
  135. package/dist/src/helpers/traverse-nodes.js +2 -2
  136. package/dist/src/helpers/try-prettier-format.js +3 -3
  137. package/dist/src/helpers/typescript-project.js +25 -25
  138. package/dist/src/helpers/typescript.js +1 -3
  139. package/dist/src/modules/plugins.js +20 -28
  140. package/dist/src/parsers/angular.js +49 -57
  141. package/dist/src/parsers/builder/builder.js +448 -343
  142. package/dist/src/parsers/builder/helpers.js +10 -10
  143. package/dist/src/parsers/context.js +15 -17
  144. package/dist/src/parsers/jsx/ast.js +11 -11
  145. package/dist/src/parsers/jsx/component-types.js +22 -32
  146. package/dist/src/parsers/jsx/context.js +12 -12
  147. package/dist/src/parsers/jsx/element-parser.js +43 -54
  148. package/dist/src/parsers/jsx/exports.js +12 -14
  149. package/dist/src/parsers/jsx/function-parser.js +108 -119
  150. package/dist/src/parsers/jsx/helpers.js +11 -13
  151. package/dist/src/parsers/jsx/hooks/helpers.js +14 -16
  152. package/dist/src/parsers/jsx/hooks/index.js +34 -44
  153. package/dist/src/parsers/jsx/hooks/use-target.js +27 -27
  154. package/dist/src/parsers/jsx/imports.js +7 -17
  155. package/dist/src/parsers/jsx/jsx.js +92 -91
  156. package/dist/src/parsers/jsx/props-types.js +8 -10
  157. package/dist/src/parsers/jsx/props.js +15 -23
  158. package/dist/src/parsers/jsx/signals.js +28 -29
  159. package/dist/src/parsers/jsx/state.d.ts +2 -4
  160. package/dist/src/parsers/jsx/state.js +59 -93
  161. package/dist/src/parsers/svelte/css/index.js +1 -1
  162. package/dist/src/parsers/svelte/helpers/bindings.js +18 -19
  163. package/dist/src/parsers/svelte/helpers/children.js +5 -6
  164. package/dist/src/parsers/svelte/helpers/expressions.js +7 -9
  165. package/dist/src/parsers/svelte/helpers/hooks.js +2 -2
  166. package/dist/src/parsers/svelte/helpers/post-process.js +49 -70
  167. package/dist/src/parsers/svelte/helpers/string.js +5 -5
  168. package/dist/src/parsers/svelte/html/actions.js +17 -10
  169. package/dist/src/parsers/svelte/html/each.js +11 -16
  170. package/dist/src/parsers/svelte/html/element.js +68 -78
  171. package/dist/src/parsers/svelte/html/fragment.js +3 -3
  172. package/dist/src/parsers/svelte/html/if-else.js +11 -18
  173. package/dist/src/parsers/svelte/html/index.js +14 -14
  174. package/dist/src/parsers/svelte/html/mustache-tag.js +5 -5
  175. package/dist/src/parsers/svelte/html/slot.js +5 -5
  176. package/dist/src/parsers/svelte/html/text.js +7 -14
  177. package/dist/src/parsers/svelte/index.js +23 -72
  178. package/dist/src/parsers/svelte/instance/context.js +17 -17
  179. package/dist/src/parsers/svelte/instance/expressions.js +2 -2
  180. package/dist/src/parsers/svelte/instance/functions.js +35 -30
  181. package/dist/src/parsers/svelte/instance/hooks.js +4 -5
  182. package/dist/src/parsers/svelte/instance/imports.js +11 -21
  183. package/dist/src/parsers/svelte/instance/index.js +22 -22
  184. package/dist/src/parsers/svelte/instance/properties.js +11 -23
  185. package/dist/src/parsers/svelte/instance/reactive.js +11 -11
  186. package/dist/src/parsers/svelte/instance/references.js +13 -13
  187. package/dist/src/parsers/svelte/instance/statements.js +3 -3
  188. package/dist/src/parsers/svelte/module/index.js +14 -26
  189. package/dist/src/parsers/svelte/typescript/index.js +27 -36
  190. package/dist/src/plugins/compile-away-builder-components.js +223 -156
  191. package/dist/src/plugins/compile-away-components.js +13 -21
  192. package/dist/src/plugins/map-styles.js +7 -7
  193. package/dist/src/symbols/symbol-processor.js +44 -62
  194. package/dist/src/targets.js +19 -19
  195. package/dist/src/types/mitosis-node.js +1 -1
  196. package/package.json +1 -1
@@ -4,28 +4,27 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getSignalAccessPlugin = exports.getSignalTypePlugin = exports.replaceSignalSetters = void 0;
7
- var core_1 = require("@babel/core");
8
- var generator_1 = __importDefault(require("@babel/generator"));
9
- var babel_transform_1 = require("../babel-transform");
10
- var capitalize_1 = require("../capitalize");
11
- var nullable_1 = require("../nullable");
12
- var replace_identifiers_1 = require("../replace-identifiers");
13
- var signals_1 = require("../signals");
14
- var process_code_1 = require("./process-code");
15
- var replaceSignalSetters = function (_a) {
16
- var code = _a.code, nodeMaps = _a.nodeMaps;
17
- var _loop_1 = function (from, setTo) {
7
+ const core_1 = require("@babel/core");
8
+ const generator_1 = __importDefault(require("@babel/generator"));
9
+ const babel_transform_1 = require("../babel-transform");
10
+ const capitalize_1 = require("../capitalize");
11
+ const nullable_1 = require("../nullable");
12
+ const replace_identifiers_1 = require("../replace-identifiers");
13
+ const signals_1 = require("../signals");
14
+ const process_code_1 = require("./process-code");
15
+ const replaceSignalSetters = ({ code, nodeMaps, }) => {
16
+ for (const { from, setTo } of nodeMaps) {
18
17
  code = (0, babel_transform_1.babelTransformExpression)(code, {
19
- AssignmentExpression: function (path) {
18
+ AssignmentExpression(path) {
20
19
  if (path.node.operator !== '=')
21
20
  return;
22
- var lhs = path.node.left;
23
- var rhs = path.node.right;
21
+ const lhs = path.node.left;
22
+ const rhs = path.node.right;
24
23
  if (!core_1.types.isMemberExpression(lhs))
25
24
  return;
26
25
  if (!(core_1.types.isObjectExpression(rhs) || core_1.types.isIdentifier(rhs)))
27
26
  return;
28
- var signalAccess = lhs.object;
27
+ const signalAccess = lhs.object;
29
28
  if (!core_1.types.isMemberExpression(signalAccess))
30
29
  return;
31
30
  if ((0, generator_1.default)(signalAccess).code !== (0, generator_1.default)(from).code)
@@ -37,21 +36,17 @@ var replaceSignalSetters = function (_a) {
37
36
  * to:
38
37
  * a.b.setC((PREVIOUS_VALUE) => ({ ...PREVIOUS_VALUE, d: e }))
39
38
  */
40
- var setter = core_1.types.cloneNode(setTo);
39
+ const setter = core_1.types.cloneNode(setTo);
41
40
  // TO-DO: replace all `value` references inside of the set logic with `PREVIOUS_VALUE`.
42
- var prevValueIdentifier = core_1.types.identifier('PREVIOUS_VALUE');
43
- var setFn = core_1.types.arrowFunctionExpression([prevValueIdentifier], core_1.types.objectExpression([
41
+ const prevValueIdentifier = core_1.types.identifier('PREVIOUS_VALUE');
42
+ const setFn = core_1.types.arrowFunctionExpression([prevValueIdentifier], core_1.types.objectExpression([
44
43
  core_1.types.spreadElement(prevValueIdentifier),
45
44
  core_1.types.objectProperty(lhs.property, rhs),
46
45
  ]));
47
- var setterExpression = core_1.types.callExpression(setter, [setFn]);
46
+ const setterExpression = core_1.types.callExpression(setter, [setFn]);
48
47
  path.replaceWith(setterExpression);
49
48
  },
50
49
  });
51
- };
52
- for (var _i = 0, nodeMaps_1 = nodeMaps; _i < nodeMaps_1.length; _i++) {
53
- var _b = nodeMaps_1[_i], from = _b.from, setTo = _b.setTo;
54
- _loop_1(from, setTo);
55
50
  }
56
51
  return code;
57
52
  };
@@ -59,132 +54,126 @@ exports.replaceSignalSetters = replaceSignalSetters;
59
54
  /**
60
55
  * Processes `Signal` type imports, transforming them to the target's equivalent and adding the import to the component.
61
56
  */
62
- var getSignalTypePlugin = function (_a) {
63
- var target = _a.target;
64
- return function () { return ({
65
- json: {
66
- pre: function (json) {
67
- var _a;
68
- (0, process_code_1.createCodeProcessorPlugin)(function (codeType, json) {
69
- switch (codeType) {
70
- // Skip these for now because they break for svelte: `<svelte:element>` becomes `<svelte: element>`.
71
- // Besides, fairly impossible to endup with a Signal generic there like `<MyComponent<Signal<number>> />`.
72
- case 'dynamic-jsx-elements':
73
- return function (x) { return x; };
74
- default:
75
- return function (code) {
76
- var _a;
77
- if ((_a = json.signals) === null || _a === void 0 ? void 0 : _a.signalTypeImportName) {
78
- return (0, signals_1.mapSignalType)({
79
- code: code,
80
- signalImportName: json.signals.signalTypeImportName,
81
- target: target,
82
- });
83
- }
84
- return code;
85
- };
86
- }
87
- })(json);
88
- if ((_a = json.signals) === null || _a === void 0 ? void 0 : _a.signalTypeImportName) {
89
- json.imports = json.imports || [];
90
- var signalMappedImport = (0, signals_1.getSignalMitosisImportForTarget)(target);
91
- if (signalMappedImport) {
92
- json.imports.push(signalMappedImport);
93
- }
57
+ const getSignalTypePlugin = ({ target }) => () => ({
58
+ json: {
59
+ pre: (json) => {
60
+ var _a;
61
+ (0, process_code_1.createCodeProcessorPlugin)((codeType, json) => {
62
+ switch (codeType) {
63
+ // Skip these for now because they break for svelte: `<svelte:element>` becomes `<svelte: element>`.
64
+ // Besides, fairly impossible to endup with a Signal generic there like `<MyComponent<Signal<number>> />`.
65
+ case 'dynamic-jsx-elements':
66
+ return (x) => x;
67
+ default:
68
+ return (code) => {
69
+ var _a;
70
+ if ((_a = json.signals) === null || _a === void 0 ? void 0 : _a.signalTypeImportName) {
71
+ return (0, signals_1.mapSignalType)({
72
+ code,
73
+ signalImportName: json.signals.signalTypeImportName,
74
+ target,
75
+ });
76
+ }
77
+ return code;
78
+ };
94
79
  }
95
- },
80
+ })(json);
81
+ if ((_a = json.signals) === null || _a === void 0 ? void 0 : _a.signalTypeImportName) {
82
+ json.imports = json.imports || [];
83
+ const signalMappedImport = (0, signals_1.getSignalMitosisImportForTarget)(target);
84
+ if (signalMappedImport) {
85
+ json.imports.push(signalMappedImport);
86
+ }
87
+ }
96
88
  },
97
- }); };
98
- };
89
+ },
90
+ });
99
91
  exports.getSignalTypePlugin = getSignalTypePlugin;
100
- var getSignalMapperForTarget = function (target) {
92
+ const getSignalMapperForTarget = (target) => {
101
93
  switch (target) {
102
94
  case 'svelte':
103
95
  return {
104
- getter: function (name) { return core_1.types.identifier('$' + name); },
96
+ getter: (name) => core_1.types.identifier('$' + name),
105
97
  };
106
98
  case 'preact':
107
99
  case 'reactNative':
108
100
  case 'react':
109
101
  case 'solid':
110
102
  return {
111
- getter: function (name) { return core_1.types.identifier(name); },
112
- setter: function (name) { return core_1.types.identifier('set' + (0, capitalize_1.capitalize)(name)); },
103
+ getter: (name) => core_1.types.identifier(name),
104
+ setter: (name) => core_1.types.identifier('set' + (0, capitalize_1.capitalize)(name)),
113
105
  };
114
106
  default:
115
107
  // default case: strip the `.value` accessor
116
108
  return {
117
- getter: function (name) { return core_1.types.identifier(name); },
109
+ getter: (name) => core_1.types.identifier(name),
118
110
  };
119
111
  }
120
112
  };
121
113
  /**
122
114
  * Processes `mySignal.value` accessors for props, context, and state.
123
115
  */
124
- var getSignalAccessPlugin = function (_a) {
125
- var target = _a.target;
126
- return function () { return ({
127
- json: {
128
- pre: function (x) {
129
- return (0, process_code_1.createCodeProcessorPlugin)(function (_codeType, json) { return function (code) {
130
- var _a;
131
- var mapSignal = getSignalMapperForTarget(target);
132
- var nodeMaps = [];
133
- for (var propName in json.props) {
134
- if (json.props[propName].propertyType === 'reactive') {
135
- var getter = core_1.types.memberExpression(core_1.types.identifier('props'), mapSignal.getter(propName));
136
- var setter = mapSignal.setter
137
- ? core_1.types.memberExpression(core_1.types.identifier('props'), mapSignal.setter(propName))
138
- : undefined;
139
- nodeMaps.push({
140
- from: core_1.types.memberExpression(core_1.types.memberExpression(core_1.types.identifier('props'), core_1.types.identifier(propName)), core_1.types.identifier('value')),
141
- to: getter,
142
- setTo: setter,
143
- });
144
- nodeMaps.push({
145
- from: core_1.types.optionalMemberExpression(core_1.types.memberExpression(core_1.types.identifier('props'), core_1.types.identifier(propName)), core_1.types.identifier('value'), false, true),
146
- to: getter,
147
- setTo: setter,
148
- });
149
- }
150
- }
151
- for (var propName in json.context.get) {
152
- if (json.context.get[propName].type === 'reactive') {
153
- nodeMaps.push({
154
- from: core_1.types.memberExpression(core_1.types.identifier(propName), core_1.types.identifier('value')),
155
- to: mapSignal.getter(propName),
156
- setTo: mapSignal.setter ? mapSignal.setter(propName) : undefined,
157
- });
158
- }
159
- }
160
- for (var propName in json.state) {
161
- if (((_a = json.state[propName]) === null || _a === void 0 ? void 0 : _a.propertyType) === 'reactive') {
162
- var to = core_1.types.memberExpression(core_1.types.identifier('state'), mapSignal.getter(propName));
163
- var setTO = mapSignal.setter ? mapSignal.setter(propName) : undefined;
164
- nodeMaps.push({
165
- from: core_1.types.memberExpression(core_1.types.memberExpression(core_1.types.identifier('state'), core_1.types.identifier(propName)), core_1.types.identifier('value')),
166
- to: to,
167
- setTo: setTO,
168
- });
169
- nodeMaps.push({
170
- from: core_1.types.optionalMemberExpression(core_1.types.memberExpression(core_1.types.identifier('state'), core_1.types.identifier(propName)), core_1.types.identifier('value'), false, true),
171
- to: to,
172
- setTo: setTO,
173
- });
174
- }
116
+ const getSignalAccessPlugin = ({ target }) => () => ({
117
+ json: {
118
+ pre: (x) => {
119
+ return (0, process_code_1.createCodeProcessorPlugin)((_codeType, json) => (code) => {
120
+ var _a;
121
+ const mapSignal = getSignalMapperForTarget(target);
122
+ const nodeMaps = [];
123
+ for (const propName in json.props) {
124
+ if (json.props[propName].propertyType === 'reactive') {
125
+ const getter = core_1.types.memberExpression(core_1.types.identifier('props'), mapSignal.getter(propName));
126
+ const setter = mapSignal.setter
127
+ ? core_1.types.memberExpression(core_1.types.identifier('props'), mapSignal.setter(propName))
128
+ : undefined;
129
+ nodeMaps.push({
130
+ from: core_1.types.memberExpression(core_1.types.memberExpression(core_1.types.identifier('props'), core_1.types.identifier(propName)), core_1.types.identifier('value')),
131
+ to: getter,
132
+ setTo: setter,
133
+ });
134
+ nodeMaps.push({
135
+ from: core_1.types.optionalMemberExpression(core_1.types.memberExpression(core_1.types.identifier('props'), core_1.types.identifier(propName)), core_1.types.identifier('value'), false, true),
136
+ to: getter,
137
+ setTo: setter,
138
+ });
175
139
  }
176
- var filteredNodeMaps = nodeMaps.filter(function (x) { return (0, nullable_1.checkIsDefined)(x.setTo); });
177
- // we run state-setter replacement first, because otherwise the other one will catch it.
178
- if (filteredNodeMaps.length) {
179
- code = (0, exports.replaceSignalSetters)({ code: code, nodeMaps: filteredNodeMaps });
140
+ }
141
+ for (const propName in json.context.get) {
142
+ if (json.context.get[propName].type === 'reactive') {
143
+ nodeMaps.push({
144
+ from: core_1.types.memberExpression(core_1.types.identifier(propName), core_1.types.identifier('value')),
145
+ to: mapSignal.getter(propName),
146
+ setTo: mapSignal.setter ? mapSignal.setter(propName) : undefined,
147
+ });
180
148
  }
181
- if (nodeMaps.length) {
182
- code = (0, replace_identifiers_1.replaceNodes)({ code: code, nodeMaps: nodeMaps });
149
+ }
150
+ for (const propName in json.state) {
151
+ if (((_a = json.state[propName]) === null || _a === void 0 ? void 0 : _a.propertyType) === 'reactive') {
152
+ const to = core_1.types.memberExpression(core_1.types.identifier('state'), mapSignal.getter(propName));
153
+ const setTO = mapSignal.setter ? mapSignal.setter(propName) : undefined;
154
+ nodeMaps.push({
155
+ from: core_1.types.memberExpression(core_1.types.memberExpression(core_1.types.identifier('state'), core_1.types.identifier(propName)), core_1.types.identifier('value')),
156
+ to: to,
157
+ setTo: setTO,
158
+ });
159
+ nodeMaps.push({
160
+ from: core_1.types.optionalMemberExpression(core_1.types.memberExpression(core_1.types.identifier('state'), core_1.types.identifier(propName)), core_1.types.identifier('value'), false, true),
161
+ to: to,
162
+ setTo: setTO,
163
+ });
183
164
  }
184
- return code;
185
- }; })(x);
186
- },
165
+ }
166
+ const filteredNodeMaps = nodeMaps.filter((x) => (0, nullable_1.checkIsDefined)(x.setTo));
167
+ // we run state-setter replacement first, because otherwise the other one will catch it.
168
+ if (filteredNodeMaps.length) {
169
+ code = (0, exports.replaceSignalSetters)({ code, nodeMaps: filteredNodeMaps });
170
+ }
171
+ if (nodeMaps.length) {
172
+ code = (0, replace_identifiers_1.replaceNodes)({ code, nodeMaps });
173
+ }
174
+ return code;
175
+ })(x);
187
176
  },
188
- }); };
189
- };
177
+ },
178
+ });
190
179
  exports.getSignalAccessPlugin = getSignalAccessPlugin;
@@ -1,10 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.processTargetBlocks = void 0;
4
- var use_target_1 = require("../../parsers/jsx/hooks/use-target");
5
- var process_code_1 = require("./process-code");
6
- var getBlockForTarget = function (_a) {
7
- var target = _a.target, targetBlock = _a.targetBlock;
4
+ const use_target_1 = require("../../parsers/jsx/hooks/use-target");
5
+ const process_code_1 = require("./process-code");
6
+ const getBlockForTarget = ({ target, targetBlock, }) => {
8
7
  switch (target) {
9
8
  default:
10
9
  return targetBlock[target] || targetBlock['default'];
@@ -13,40 +12,39 @@ var getBlockForTarget = function (_a) {
13
12
  /**
14
13
  * Processes `useTarget()` blocks for a given target.
15
14
  */
16
- var processTargetBlocks = function (target) {
17
- var plugin = (0, process_code_1.createCodeProcessorPlugin)(function (codeType, json, node) { return function (code, key) {
15
+ const processTargetBlocks = (target) => {
16
+ const plugin = (0, process_code_1.createCodeProcessorPlugin)((codeType, json, node) => (code, key) => {
18
17
  var _a;
19
18
  if (codeType === 'properties') {
20
- var matches_2 = code.includes(use_target_1.USE_TARGET_MAGIC_STRING);
21
- var property = node === null || node === void 0 ? void 0 : node.properties[key];
22
- if (!matches_2 || !property)
19
+ const matches = code.includes(use_target_1.USE_TARGET_MAGIC_STRING);
20
+ const property = node === null || node === void 0 ? void 0 : node.properties[key];
21
+ if (!matches || !property)
23
22
  return code;
24
23
  node.bindings[key] = {
25
24
  code: '"' + property + '"',
26
25
  type: 'single',
27
26
  };
28
- return function () {
27
+ return () => {
29
28
  delete node.properties[key];
30
29
  };
31
30
  }
32
- var matches = code.match(use_target_1.USE_TARGET_MAGIC_REGEX);
31
+ const matches = code.match(use_target_1.USE_TARGET_MAGIC_REGEX);
33
32
  if (!matches)
34
33
  return code;
35
- for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {
36
- var m = matches_1[_i];
34
+ for (const m of matches) {
37
35
  // get the captured ID of the target block
38
- var targetId = (0, use_target_1.getIdFromMatch)(m);
36
+ const targetId = (0, use_target_1.getIdFromMatch)(m);
39
37
  if (!targetId)
40
38
  continue;
41
39
  // find the target block in the component, or the default target block
42
- var targetBlock = (_a = json.targetBlocks) === null || _a === void 0 ? void 0 : _a[targetId];
40
+ const targetBlock = (_a = json.targetBlocks) === null || _a === void 0 ? void 0 : _a[targetId];
43
41
  if (!targetBlock) {
44
- throw new Error("Could not find `useTarget()` value in \"".concat(json.name, "\"."));
42
+ throw new Error(`Could not find \`useTarget()\` value in "${json.name}".`);
45
43
  }
46
- var block = getBlockForTarget({ target: target, targetBlock: targetBlock });
44
+ const block = getBlockForTarget({ target, targetBlock });
47
45
  if (!block) {
48
46
  if (targetBlock.settings.requiresDefault) {
49
- throw new Error("Could not find `useTarget()` value in \"".concat(json.name, "\" for target \"").concat(target, "\", and no default value was set."));
47
+ throw new Error(`Could not find \`useTarget()\` value in "${json.name}" for target "${target}", and no default value was set.`);
50
48
  }
51
49
  else {
52
50
  // if we don't need a default, then that means we allow for nothing to be injected, e.g. when we are in a function body.
@@ -57,7 +55,7 @@ var processTargetBlocks = function (target) {
57
55
  code = code.replaceAll(m, block.code);
58
56
  }
59
57
  return code;
60
- }; }, { processProperties: true });
61
- return function () { return ({ json: { pre: plugin } }); };
58
+ }, { processProperties: true });
59
+ return () => ({ json: { pre: plugin } });
62
60
  };
63
61
  exports.processTargetBlocks = processTargetBlocks;
@@ -3,17 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.processHttpRequests = void 0;
4
4
  function processHttpRequests(json) {
5
5
  var _a, _b;
6
- var httpRequests = (_b = (_a = json === null || json === void 0 ? void 0 : json.meta) === null || _a === void 0 ? void 0 : _a.useMetadata) === null || _b === void 0 ? void 0 : _b.httpRequests;
6
+ const httpRequests = (_b = (_a = json === null || json === void 0 ? void 0 : json.meta) === null || _a === void 0 ? void 0 : _a.useMetadata) === null || _b === void 0 ? void 0 : _b.httpRequests;
7
7
  if (httpRequests) {
8
- for (var key in httpRequests) {
8
+ for (const key in httpRequests) {
9
9
  if (!json.state[key]) {
10
10
  json.state[key] = { code: 'null', type: 'property', propertyType: 'normal' };
11
11
  }
12
- var value = httpRequests[key];
12
+ const value = httpRequests[key];
13
13
  // TODO: unravel our proxy. aka parse out methods, header, etc
14
14
  // and remove our proxy from being used anymore
15
15
  json.hooks.onMount.push({
16
- code: "\n fetch(\"".concat(value, "\").then(res => res.json()).then(result => {\n state.").concat(key, " = result;\n })\n "),
16
+ code: `
17
+ fetch("${value}").then(res => res.json()).then(result => {
18
+ state.${key} = result;
19
+ })
20
+ `,
17
21
  });
18
22
  }
19
23
  }
@@ -7,7 +7,7 @@ exports.removeSurroundingBlock = void 0;
7
7
  * `{ const foo = "bar" }` -> `const foo = "bar"`
8
8
  */
9
9
  function removeSurroundingBlock(code) {
10
- var str = code;
10
+ let str = code;
11
11
  // Object literal like { foo: ... } should not be unwrapped
12
12
  if (str.match(/^\s*{\s*[a-z0-9]+:/i)) {
13
13
  return str;
@@ -16,7 +16,7 @@ function removeSurroundingBlock(code) {
16
16
  if (str.replace(/\s+/g, '') === '{}') {
17
17
  return str;
18
18
  }
19
- var bracesRegex = /^\s*\{([\s\S]+)\}\s*$/;
19
+ const bracesRegex = /^\s*\{([\s\S]+)\}\s*$/;
20
20
  if (bracesRegex.test(str)) {
21
21
  return str.replace(bracesRegex, '$1');
22
22
  }