@casual-simulation/aux-common 3.2.6 → 3.2.7-alpha.6227012901

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 (212) hide show
  1. package/Errors.d.ts +29 -0
  2. package/Errors.js +2 -0
  3. package/Errors.js.map +1 -0
  4. package/{aux-format-2 → bots}/AuxStateHelpers.d.ts +2 -33
  5. package/{aux-format-2 → bots}/AuxStateHelpers.js +1 -116
  6. package/bots/AuxStateHelpers.js.map +1 -0
  7. package/bots/Bot.d.ts +1 -1
  8. package/bots/BotCalculations.d.ts +4 -1
  9. package/bots/BotCalculations.js +62 -0
  10. package/bots/BotCalculations.js.map +1 -1
  11. package/bots/BotEvents.d.ts +859 -3401
  12. package/bots/BotEvents.js +133 -1529
  13. package/bots/BotEvents.js.map +1 -1
  14. package/bots/StateUpdatedEvent.d.ts +1 -1
  15. package/bots/StateUpdatedEvent.js +1 -1
  16. package/bots/StateUpdatedEvent.js.map +1 -1
  17. package/bots/index.d.ts +1 -0
  18. package/bots/index.js +1 -0
  19. package/bots/index.js.map +1 -1
  20. package/common/Action.d.ts +17 -0
  21. package/common/Action.js +2 -0
  22. package/common/Action.js.map +1 -0
  23. package/common/ConnectionIndicator.d.ts +29 -0
  24. package/common/ConnectionIndicator.js +23 -0
  25. package/common/ConnectionIndicator.js.map +1 -0
  26. package/common/ConnectionInfo.d.ts +30 -0
  27. package/common/ConnectionInfo.js +14 -0
  28. package/common/ConnectionInfo.js.map +1 -0
  29. package/common/ConnectionToken.d.ts +37 -0
  30. package/common/ConnectionToken.js +93 -0
  31. package/common/ConnectionToken.js.map +1 -0
  32. package/common/CurrentVersion.d.ts +26 -0
  33. package/common/CurrentVersion.js +2 -0
  34. package/common/CurrentVersion.js.map +1 -0
  35. package/common/Iterators.d.ts +19 -0
  36. package/common/Iterators.js +39 -0
  37. package/common/Iterators.js.map +1 -0
  38. package/common/LoadingProgress.d.ts +26 -0
  39. package/common/LoadingProgress.js +2 -0
  40. package/common/LoadingProgress.js.map +1 -0
  41. package/common/RemoteActions.d.ts +558 -0
  42. package/common/RemoteActions.js +128 -0
  43. package/common/RemoteActions.js.map +1 -0
  44. package/common/StatusUpdate.d.ts +108 -0
  45. package/common/StatusUpdate.js +2 -0
  46. package/common/StatusUpdate.js.map +1 -0
  47. package/common/StatusUpdateUtils.d.ts +3 -0
  48. package/common/StatusUpdateUtils.js +11 -0
  49. package/common/StatusUpdateUtils.js.map +1 -0
  50. package/common/index.d.ts +11 -0
  51. package/common/index.js +11 -0
  52. package/common/index.js.map +1 -0
  53. package/index.d.ts +4 -1
  54. package/index.js +4 -1
  55. package/index.js.map +1 -1
  56. package/package.json +3 -4
  57. package/partitions/AuxPartition.d.ts +1 -11
  58. package/partitions/AuxPartition.js.map +1 -1
  59. package/partitions/AuxPartitionConfig.d.ts +39 -123
  60. package/partitions/MemoryPartition.d.ts +2 -2
  61. package/partitions/MemoryPartition.js +2 -2
  62. package/partitions/MemoryPartition.js.map +1 -1
  63. package/partitions/OtherPlayersPartition.d.ts +6 -7
  64. package/partitions/OtherPlayersPartition.js +40 -54
  65. package/partitions/OtherPlayersPartition.js.map +1 -1
  66. package/partitions/PartitionUtils.d.ts +28 -1
  67. package/partitions/PartitionUtils.js +174 -1
  68. package/partitions/PartitionUtils.js.map +1 -1
  69. package/partitions/ProxyBridgePartition.d.ts +1 -3
  70. package/partitions/ProxyBridgePartition.js +0 -14
  71. package/partitions/ProxyBridgePartition.js.map +1 -1
  72. package/partitions/RemoteYjsPartition.d.ts +7 -6
  73. package/partitions/RemoteYjsPartition.js +55 -75
  74. package/partitions/RemoteYjsPartition.js.map +1 -1
  75. package/partitions/YjsPartition.d.ts +1 -2
  76. package/partitions/YjsPartition.js +3 -6
  77. package/partitions/YjsPartition.js.map +1 -1
  78. package/partitions/index.d.ts +1 -7
  79. package/partitions/index.js +1 -7
  80. package/partitions/index.js.map +1 -1
  81. package/test/FuzzingHelpers.d.ts +1 -1
  82. package/test/FuzzingHelpers.js +1 -1
  83. package/test/FuzzingHelpers.js.map +1 -1
  84. package/test/TestHelpers.d.ts +8 -0
  85. package/test/TestHelpers.js +23 -0
  86. package/test/TestHelpers.js.map +1 -1
  87. package/utils.d.ts +10 -5
  88. package/utils.js +19 -7
  89. package/utils.js.map +1 -1
  90. package/websockets/AuthenticatedConnectionClient.d.ts +26 -0
  91. package/websockets/AuthenticatedConnectionClient.js +61 -0
  92. package/websockets/AuthenticatedConnectionClient.js.map +1 -0
  93. package/websockets/ConnectionClient.d.ts +59 -0
  94. package/websockets/ConnectionClient.js +2 -0
  95. package/websockets/ConnectionClient.js.map +1 -0
  96. package/websockets/InstRecordsClient.d.ts +118 -0
  97. package/websockets/InstRecordsClient.js +387 -0
  98. package/websockets/InstRecordsClient.js.map +1 -0
  99. package/websockets/InstRecordsClientTimeSyncConnection.d.ts +13 -0
  100. package/websockets/InstRecordsClientTimeSyncConnection.js +16 -0
  101. package/websockets/InstRecordsClientTimeSyncConnection.js.map +1 -0
  102. package/websockets/MemoryConnectionClient.d.ts +19 -0
  103. package/websockets/MemoryConnectionClient.js +41 -0
  104. package/websockets/MemoryConnectionClient.js.map +1 -0
  105. package/websockets/WebsocketEvents.d.ts +2670 -0
  106. package/websockets/WebsocketEvents.js +189 -0
  107. package/websockets/WebsocketEvents.js.map +1 -0
  108. package/websockets/index.d.ts +7 -0
  109. package/websockets/index.js +7 -0
  110. package/websockets/index.js.map +1 -0
  111. package/yjs/YjsHelpers.d.ts +1 -1
  112. package/LoadingProgress.d.ts +0 -54
  113. package/LoadingProgress.js +0 -105
  114. package/LoadingProgress.js.map +0 -1
  115. package/aux-format-2/AuxCausalTree2.d.ts +0 -98
  116. package/aux-format-2/AuxCausalTree2.js +0 -616
  117. package/aux-format-2/AuxCausalTree2.js.map +0 -1
  118. package/aux-format-2/AuxOpTypes.d.ts +0 -268
  119. package/aux-format-2/AuxOpTypes.js +0 -240
  120. package/aux-format-2/AuxOpTypes.js.map +0 -1
  121. package/aux-format-2/AuxStateHelpers.js.map +0 -1
  122. package/aux-format-2/AuxWeaveHelpers.d.ts +0 -132
  123. package/aux-format-2/AuxWeaveHelpers.js +0 -335
  124. package/aux-format-2/AuxWeaveHelpers.js.map +0 -1
  125. package/aux-format-2/AuxWeaveReducer.d.ts +0 -37
  126. package/aux-format-2/AuxWeaveReducer.js +0 -980
  127. package/aux-format-2/AuxWeaveReducer.js.map +0 -1
  128. package/aux-format-2/index.d.ts +0 -7
  129. package/aux-format-2/index.js +0 -7
  130. package/aux-format-2/index.js.map +0 -1
  131. package/partitions/AuxPartitionRealtimeEditModeProvider.d.ts +0 -9
  132. package/partitions/AuxPartitionRealtimeEditModeProvider.js +0 -21
  133. package/partitions/AuxPartitionRealtimeEditModeProvider.js.map +0 -1
  134. package/partitions/BotClient.d.ts +0 -24
  135. package/partitions/BotClient.js +0 -2
  136. package/partitions/BotClient.js.map +0 -1
  137. package/partitions/BotPartition.d.ts +0 -45
  138. package/partitions/BotPartition.js +0 -186
  139. package/partitions/BotPartition.js.map +0 -1
  140. package/partitions/CausalRepoPartition.d.ts +0 -45
  141. package/partitions/CausalRepoPartition.js +0 -157
  142. package/partitions/CausalRepoPartition.js.map +0 -1
  143. package/partitions/MemoryBotClient.d.ts +0 -11
  144. package/partitions/MemoryBotClient.js +0 -41
  145. package/partitions/MemoryBotClient.js.map +0 -1
  146. package/partitions/RemoteCausalRepoHistoryPartition.d.ts +0 -53
  147. package/partitions/RemoteCausalRepoHistoryPartition.js +0 -206
  148. package/partitions/RemoteCausalRepoHistoryPartition.js.map +0 -1
  149. package/partitions/RemoteCausalRepoPartition.d.ts +0 -72
  150. package/partitions/RemoteCausalRepoPartition.js +0 -468
  151. package/partitions/RemoteCausalRepoPartition.js.map +0 -1
  152. package/runtime/AuxCompiler.d.ts +0 -258
  153. package/runtime/AuxCompiler.js +0 -722
  154. package/runtime/AuxCompiler.js.map +0 -1
  155. package/runtime/AuxDevice.d.ts +0 -28
  156. package/runtime/AuxDevice.js +0 -2
  157. package/runtime/AuxDevice.js.map +0 -1
  158. package/runtime/AuxGlobalContext.d.ts +0 -571
  159. package/runtime/AuxGlobalContext.js +0 -606
  160. package/runtime/AuxGlobalContext.js.map +0 -1
  161. package/runtime/AuxLibrary.d.ts +0 -2702
  162. package/runtime/AuxLibrary.js +0 -11046
  163. package/runtime/AuxLibrary.js.map +0 -1
  164. package/runtime/AuxLibraryDefinitions.def +0 -13139
  165. package/runtime/AuxRealtimeEditModeProvider.d.ts +0 -35
  166. package/runtime/AuxRealtimeEditModeProvider.js +0 -34
  167. package/runtime/AuxRealtimeEditModeProvider.js.map +0 -1
  168. package/runtime/AuxResults.d.ts +0 -77
  169. package/runtime/AuxResults.js +0 -6
  170. package/runtime/AuxResults.js.map +0 -1
  171. package/runtime/AuxRuntime.d.ts +0 -253
  172. package/runtime/AuxRuntime.js +0 -2700
  173. package/runtime/AuxRuntime.js.map +0 -1
  174. package/runtime/AuxRuntimeDynamicImports.d.ts +0 -14
  175. package/runtime/AuxRuntimeDynamicImports.js +0 -24
  176. package/runtime/AuxRuntimeDynamicImports.js.map +0 -1
  177. package/runtime/AuxVersion.d.ts +0 -39
  178. package/runtime/AuxVersion.js +0 -2
  179. package/runtime/AuxVersion.js.map +0 -1
  180. package/runtime/CasualOSError.d.ts +0 -37
  181. package/runtime/CasualOSError.js +0 -25
  182. package/runtime/CasualOSError.js.map +0 -1
  183. package/runtime/CompiledBot.d.ts +0 -106
  184. package/runtime/CompiledBot.js +0 -44
  185. package/runtime/CompiledBot.js.map +0 -1
  186. package/runtime/PerformanceNowPolyfill.d.ts +0 -1
  187. package/runtime/PerformanceNowPolyfill.js +0 -8
  188. package/runtime/PerformanceNowPolyfill.js.map +0 -1
  189. package/runtime/RuntimeBot.d.ts +0 -176
  190. package/runtime/RuntimeBot.js +0 -732
  191. package/runtime/RuntimeBot.js.map +0 -1
  192. package/runtime/RuntimeStateVersion.d.ts +0 -23
  193. package/runtime/RuntimeStateVersion.js +0 -22
  194. package/runtime/RuntimeStateVersion.js.map +0 -1
  195. package/runtime/Transpiler.d.ts +0 -174
  196. package/runtime/Transpiler.js +0 -611
  197. package/runtime/Transpiler.js.map +0 -1
  198. package/runtime/Utils.d.ts +0 -74
  199. package/runtime/Utils.js +0 -488
  200. package/runtime/Utils.js.map +0 -1
  201. package/runtime/index.d.ts +0 -9
  202. package/runtime/index.js +0 -9
  203. package/runtime/index.js.map +0 -1
  204. package/runtime/test/RuntimeTestHelpers.d.ts +0 -11
  205. package/runtime/test/RuntimeTestHelpers.js +0 -26
  206. package/runtime/test/RuntimeTestHelpers.js.map +0 -1
  207. package/runtime/test/TestScriptBotFactory.d.ts +0 -16
  208. package/runtime/test/TestScriptBotFactory.js +0 -107
  209. package/runtime/test/TestScriptBotFactory.js.map +0 -1
  210. /package/{runtime/BlobPolyfill.d.ts → BlobPolyfill.d.ts} +0 -0
  211. /package/{runtime/BlobPolyfill.js → BlobPolyfill.js} +0 -0
  212. /package/{runtime/BlobPolyfill.js.map → BlobPolyfill.js.map} +0 -0
@@ -1,611 +0,0 @@
1
- import * as Acorn from 'acorn';
2
- import AcornJSX from 'acorn-jsx';
3
- import { generate, GENERATOR } from 'astring';
4
- import LRUCache from 'lru-cache';
5
- import { traverse } from 'estraverse';
6
- import { createAbsolutePositionFromRelativePosition, createRelativePositionFromTypeIndex, getItem, Doc, } from 'yjs';
7
- import { createAbsolutePositionFromStateVector, createRelativePositionFromStateVector, getClock, } from '../yjs/YjsHelpers';
8
- /**
9
- * The symbol that is used in script dependencies to represent any argument.
10
- */
11
- export const anyArgument = Symbol('anyArgument');
12
- const exJsGenerator = Object.assign({}, GENERATOR, {
13
- ImportExpression: function (node, state) {
14
- state.write('import(');
15
- this[node.source.type](node.source, state);
16
- state.write(')');
17
- },
18
- });
19
- /**
20
- * The list of macros that the sandbox uses on the input code before transpiling it.
21
- */
22
- const MACROS = [
23
- {
24
- test: /^(?:\🧬)/g,
25
- replacement: (val) => '',
26
- },
27
- {
28
- test: /(?:[“”])/g,
29
- replacement: (val) => '"',
30
- },
31
- {
32
- test: /(?:[‘’])/g,
33
- replacement: (val) => "'",
34
- },
35
- ];
36
- /**
37
- * Replaces macros in the given text.
38
- * @param text The text that the macros should be replaced in.
39
- */
40
- export function replaceMacros(text) {
41
- if (!text) {
42
- return text;
43
- }
44
- for (let m of MACROS) {
45
- text = text.replace(m.test, m.replacement);
46
- }
47
- return text;
48
- }
49
- /**
50
- * Defines a class that is able to compile code from AUX's custom JavaScript dialect
51
- * into pure ES6 JavaScript. Does not preserve spacing or comments.
52
- *
53
- * See https://docs.google.com/document/d/1WQXQPjdXxyx_lau15WPpwTTYvt66_wPCu3x-08rpLoY/edit?usp=sharing
54
- */
55
- export class Transpiler {
56
- get forceSync() {
57
- return this._forceSync;
58
- }
59
- set forceSync(value) {
60
- this._forceSync = value;
61
- }
62
- constructor(options) {
63
- var _a, _b, _c;
64
- this._cache = new LRUCache({
65
- max: 1000,
66
- });
67
- this._parser = Acorn.Parser.extend(AcornJSX());
68
- this._jsxFactory = (_a = options === null || options === void 0 ? void 0 : options.jsxFactory) !== null && _a !== void 0 ? _a : 'h';
69
- this._jsxFragment = (_b = options === null || options === void 0 ? void 0 : options.jsxFragment) !== null && _b !== void 0 ? _b : 'Fragment';
70
- this._forceSync = (_c = options === null || options === void 0 ? void 0 : options.forceSync) !== null && _c !== void 0 ? _c : false;
71
- }
72
- parse(code) {
73
- const macroed = replaceMacros(code);
74
- const node = this._parse(macroed);
75
- return node;
76
- }
77
- /**
78
- * Transpiles the given code into ES6 JavaScript Code.
79
- */
80
- transpile(code) {
81
- const result = this._transpile(code);
82
- return result.code;
83
- }
84
- /**
85
- * Transpiles the given code and returns the result with the generated metadata.
86
- * @param code The code that should be transpiled.
87
- */
88
- transpileWithMetadata(code) {
89
- return this._transpile(code);
90
- }
91
- /**
92
- * Transpiles the given code into ES6 JavaScript Code.
93
- */
94
- _transpile(code) {
95
- const cached = this._cache.get(code);
96
- if (cached) {
97
- return cached;
98
- }
99
- const macroed = replaceMacros(code);
100
- const node = this._parse(macroed);
101
- // we create a YJS document to track
102
- // text changes. This lets us use a separate client ID for each change
103
- // which makes the calculations for indexes much simpler.
104
- // This is because we can use a separate client ID for every required
105
- // change and ignore other changes when looking for the right edit position.
106
- const doc = new Doc();
107
- doc.clientID = 0;
108
- const text = doc.getText();
109
- text.insert(0, code);
110
- this._replace(node, doc, text);
111
- const finalCode = text.toString();
112
- const result = {
113
- code: finalCode,
114
- original: macroed,
115
- metadata: {
116
- doc,
117
- text,
118
- },
119
- };
120
- this._cache.set(code, result);
121
- return result;
122
- }
123
- /**
124
- * Parses the given code into a syntax tree.
125
- * @param code
126
- */
127
- _parse(code) {
128
- const node = this._parser.parse(code, {
129
- ecmaVersion: 11,
130
- locations: true,
131
- });
132
- return node;
133
- }
134
- getTagNodeValues(n) {
135
- let currentNode = n.identifier;
136
- let identifier;
137
- let args = [];
138
- let nodes = [];
139
- while (currentNode.type === 'MemberExpression') {
140
- currentNode = currentNode.object;
141
- }
142
- if (currentNode.type === 'CallExpression') {
143
- identifier = currentNode.callee;
144
- args = currentNode.arguments;
145
- currentNode = n.identifier;
146
- while (currentNode.type === 'MemberExpression') {
147
- nodes.unshift(currentNode);
148
- currentNode = currentNode.object;
149
- }
150
- }
151
- else {
152
- identifier = n.identifier;
153
- }
154
- let tag;
155
- if (identifier.type === 'MemberExpression') {
156
- tag = this.toJs(identifier);
157
- }
158
- else {
159
- tag = identifier.name || identifier.value;
160
- }
161
- return { tag, args, nodes };
162
- }
163
- toJs(node) {
164
- return generate(node, {
165
- generator: exJsGenerator,
166
- });
167
- }
168
- _replace(node, doc, text) {
169
- if (!node) {
170
- return;
171
- }
172
- traverse(node, {
173
- enter: ((n, parent) => {
174
- if (n.type === 'WhileStatement') {
175
- this._replaceWhileStatement(n, doc, text);
176
- }
177
- else if (n.type === 'DoWhileStatement') {
178
- this._replaceDoWhileStatement(n, doc, text);
179
- }
180
- else if (n.type === 'ForStatement') {
181
- this._replaceForStatement(n, doc, text);
182
- }
183
- else if (n.type === 'ForInStatement') {
184
- this._replaceForInStatement(n, doc, text);
185
- }
186
- else if (n.type === 'ForOfStatement') {
187
- this._replaceForOfStatement(n, doc, text);
188
- }
189
- else if (n.type === 'JSXElement') {
190
- this._replaceJSXElement(n, doc, text);
191
- }
192
- else if (n.type === 'JSXText') {
193
- this._replaceJSXText(n, doc, text);
194
- }
195
- else if (n.type === 'JSXExpressionContainer') {
196
- this._replaceJSXExpressionContainer(n, doc, text);
197
- }
198
- else if (n.type === 'JSXFragment') {
199
- this._replaceJSXFragment(n, doc, text);
200
- }
201
- else if (n.type === 'JSXEmptyExpression') {
202
- this._replaceJSXEmptyExpression(n, doc, text);
203
- }
204
- else if (this._forceSync &&
205
- n.type === 'FunctionDeclaration' &&
206
- n.async) {
207
- this._replaceAsyncFunction(n, doc, text);
208
- }
209
- else if (this._forceSync &&
210
- n.type === 'ArrowFunctionExpression' &&
211
- n.async) {
212
- this._replaceAsyncFunction(n, doc, text);
213
- }
214
- else if (this._forceSync &&
215
- n.type === 'FunctionExpression' &&
216
- n.async) {
217
- if (parent.type === 'Property' && parent.method) {
218
- this._replaceAsyncFunction(parent, doc, text);
219
- }
220
- else {
221
- this._replaceAsyncFunction(n, doc, text);
222
- }
223
- }
224
- else if (this._forceSync && n.type === 'AwaitExpression') {
225
- this._replaceAwaitExpression(n, doc, text);
226
- }
227
- }),
228
- keys: {
229
- JSXElement: [],
230
- JSXFragment: [],
231
- JSXOpeningElement: [],
232
- JSXClosingElement: [],
233
- JSXText: [],
234
- JSXExpressionContainer: ['expression'],
235
- JSXEmptyExpression: [],
236
- },
237
- });
238
- }
239
- _replaceWhileStatement(node, doc, text) {
240
- this._insertEnergyCheckIntoStatement(doc, text, node.body);
241
- }
242
- _replaceDoWhileStatement(node, doc, text) {
243
- this._insertEnergyCheckIntoStatement(doc, text, node.body);
244
- }
245
- _replaceForStatement(node, doc, text) {
246
- this._insertEnergyCheckIntoStatement(doc, text, node.body);
247
- }
248
- _replaceForInStatement(node, doc, text) {
249
- this._insertEnergyCheckIntoStatement(doc, text, node.body);
250
- }
251
- _replaceForOfStatement(node, doc, text) {
252
- this._insertEnergyCheckIntoStatement(doc, text, node.body);
253
- }
254
- _replaceJSXElement(node, doc, text) {
255
- this._insertJSXFactoryCall(node, node.openingElement, node.closingElement, doc, text);
256
- this._removeTag(node, node.openingElement, node.closingElement, doc, text);
257
- }
258
- _replaceJSXFragment(node, doc, text) {
259
- this._insertJSXFactoryCall(node, node.openingFragment, node.closingFragment, doc, text);
260
- this._removeTag(node, node.openingFragment, node.closingFragment, doc, text);
261
- }
262
- _replaceJSXEmptyExpression(node, doc, text) {
263
- const version = { '0': getClock(doc, 0) };
264
- // Position for the opening "{"
265
- const valueStartBegin = createRelativePositionFromStateVector(text, version, node.start, undefined, true);
266
- // Position for the closing "}"
267
- const valueEndEnd = createRelativePositionFromStateVector(text, version, node.end + 1, -1, true);
268
- // Delete the expression
269
- const absoluteValueStartBegin = createAbsolutePositionFromRelativePosition(valueStartBegin, doc);
270
- const absoluteValueEndEnd = createAbsolutePositionFromRelativePosition(valueEndEnd, doc);
271
- const length = absoluteValueEndEnd.index - absoluteValueStartBegin.index;
272
- text.delete(absoluteValueStartBegin.index, length);
273
- text.insert(absoluteValueEndEnd.index, "''");
274
- }
275
- _insertJSXFactoryCall(node, openElement, closeElement, doc, text) {
276
- doc.clientID += 1;
277
- const version = { '0': getClock(doc, 0) };
278
- const openingFunctionCall = `${this._jsxFactory}(`;
279
- const absoluteStart = createAbsolutePositionFromStateVector(doc, text, version, node.start, undefined, true);
280
- const end = createRelativePositionFromStateVector(text, version, !!closeElement ? closeElement.end : node.end, -1, true);
281
- const nameStart = node.type === 'JSXElement'
282
- ? createRelativePositionFromStateVector(text, version, openElement.name.start, undefined, true)
283
- : null;
284
- const nameEnd = node.type == 'JSXElement'
285
- ? createRelativePositionFromStateVector(text, version, openElement.name.end, -1, true)
286
- : null;
287
- let currentIndex = absoluteStart.index;
288
- text.insert(currentIndex, openingFunctionCall);
289
- currentIndex += openingFunctionCall.length;
290
- if (node.type === 'JSXElement') {
291
- const nameElement = openElement.name;
292
- let addQuotes = false;
293
- if (nameElement.type === 'JSXIdentifier') {
294
- const name = openElement.name.name;
295
- if (/^[a-z]/.test(name)) {
296
- addQuotes = true;
297
- }
298
- }
299
- // Add quotes around builtin component names
300
- if (addQuotes) {
301
- const startIndex = createAbsolutePositionFromRelativePosition(nameStart, doc);
302
- text.insert(startIndex.index, '"');
303
- const endIndex = createAbsolutePositionFromRelativePosition(nameEnd, doc);
304
- text.insert(endIndex.index, '",');
305
- currentIndex = endIndex.index + 2;
306
- }
307
- else {
308
- // Add the comma after variable reference names
309
- const endIndex = createAbsolutePositionFromRelativePosition(nameEnd, doc);
310
- text.insert(endIndex.index, ',');
311
- currentIndex = endIndex.index + 1;
312
- }
313
- }
314
- else {
315
- // make string literal
316
- const nodeName = this._jsxFragment + ',';
317
- text.insert(currentIndex, nodeName);
318
- currentIndex += nodeName.length;
319
- }
320
- if (openElement.attributes.length > 0) {
321
- this._replaceJSXElementAttributes(node, openElement, openElement.attributes, doc, text);
322
- }
323
- else {
324
- const props = `null,`;
325
- text.insert(currentIndex, props);
326
- }
327
- this._replaceJSXElementChildren(node, node.children, doc, text);
328
- const absoluteEnd = createAbsolutePositionFromRelativePosition(end, doc);
329
- doc.clientID += 1;
330
- text.insert(absoluteEnd.index, ')');
331
- }
332
- _replaceJSXElementAttributes(node, openElement, attributes, doc, text) {
333
- var _a, _b;
334
- // doc.clientID += 1;
335
- const version = { '0': getClock(doc, 0) };
336
- const start = createRelativePositionFromStateVector(text, version, (_b = (_a = openElement.name) === null || _a === void 0 ? void 0 : _a.end) !== null && _b !== void 0 ? _b : openElement.start + 1, undefined, true);
337
- const end = createRelativePositionFromStateVector(text, version, openElement.selfClosing ? openElement.end - 2 : openElement.end, -1, true);
338
- let attrs = [];
339
- for (let attr of attributes) {
340
- const attrStart = createRelativePositionFromStateVector(text, version, attr.start, undefined, true);
341
- if (attr.type === 'JSXSpreadAttribute') {
342
- attrs.push([attr, attrStart]);
343
- }
344
- else {
345
- const attrName = attr.name.name;
346
- attrs.push([attr, attrStart, attrName]);
347
- }
348
- }
349
- let index = 0;
350
- for (let [attr, start, name] of attrs) {
351
- const pos = createAbsolutePositionFromRelativePosition(start, doc);
352
- let val = '';
353
- if (index > 0) {
354
- val = ',';
355
- }
356
- if (attr.type !== 'JSXSpreadAttribute') {
357
- val += `"${name}":`;
358
- if (!attr.value) {
359
- val += 'true';
360
- }
361
- }
362
- text.insert(pos.index, val);
363
- index++;
364
- if (attr.type === 'JSXSpreadAttribute') {
365
- this._replace(attr.argument, doc, text);
366
- }
367
- else {
368
- this._replace(attr.value, doc, text);
369
- }
370
- }
371
- const startAbsolute = createAbsolutePositionFromRelativePosition(start, doc);
372
- text.insert(startAbsolute.index, '{');
373
- const endAbsolute = createAbsolutePositionFromRelativePosition(end, doc);
374
- text.insert(endAbsolute.index, '},');
375
- }
376
- _replaceJSXElementChildren(node, children, doc, text) {
377
- const version = { '0': getClock(doc, 0) };
378
- for (let child of children) {
379
- const pos = createRelativePositionFromStateVector(text, version, child.end, undefined, true);
380
- this._replace(child, doc, text);
381
- doc.clientID += 1;
382
- const absoluteEnd = createAbsolutePositionFromRelativePosition(pos, doc);
383
- text.insert(absoluteEnd.index, ',');
384
- }
385
- }
386
- _replaceJSXText(node, doc, text) {
387
- doc.clientID += 1;
388
- const version = { '0': getClock(doc, 0) };
389
- const startIndex = node.start;
390
- const endIndex = node.end;
391
- const absoluteStart = createAbsolutePositionFromStateVector(doc, text, version, startIndex, undefined, true);
392
- text.insert(absoluteStart.index, '`');
393
- const absoluteEnd = createAbsolutePositionFromStateVector(doc, text, version, endIndex, undefined, true);
394
- text.insert(absoluteEnd.index, '`');
395
- }
396
- _replaceJSXExpressionContainer(node, doc, text) {
397
- const version = { '0': getClock(doc, 0) };
398
- // Positions for the opening "{"
399
- const valueStartBegin = createRelativePositionFromStateVector(text, version, node.start, undefined, true);
400
- const valueStartEnd = createRelativePositionFromStateVector(text, version, node.start + 1, -1, true);
401
- // Positions for the closing "}"
402
- const valueEndBegin = createRelativePositionFromStateVector(text, version, node.end - 1, undefined, true);
403
- const valueEndEnd = createRelativePositionFromStateVector(text, version, node.end + 1, -1, true);
404
- // Delete the opening "{"
405
- const absoluteValueStartBegin = createAbsolutePositionFromRelativePosition(valueStartBegin, doc);
406
- const absoluteValueStartEnd = createAbsolutePositionFromRelativePosition(valueStartEnd, doc);
407
- text.delete(absoluteValueStartBegin.index, 1);
408
- // Delete the closing "}"
409
- const absoluteValueEndBegin = createAbsolutePositionFromRelativePosition(valueEndBegin, doc);
410
- const absoluteValueEndEnd = createAbsolutePositionFromRelativePosition(valueEndEnd, doc);
411
- text.delete(absoluteValueEndBegin.index, 1);
412
- }
413
- _removeTag(node, openElement, closeElement, doc, text) {
414
- var _a, _b;
415
- doc.clientID += 1;
416
- const version = { '0': getClock(doc, 0) };
417
- // Save relative positions here
418
- const openStart = createRelativePositionFromStateVector(text, version, openElement.start, undefined, true);
419
- const openNameEnd = createRelativePositionFromStateVector(text, version, (_b = (_a = openElement.name) === null || _a === void 0 ? void 0 : _a.end) !== null && _b !== void 0 ? _b : openElement.start + 1, -1, true);
420
- const openEnd = createRelativePositionFromStateVector(text, version, openElement.end - (closeElement ? 1 : 2), undefined, true);
421
- const closingStart = !!closeElement
422
- ? createRelativePositionFromStateVector(text, version, closeElement.start, undefined, true)
423
- : null;
424
- const closingEnd = !!closeElement
425
- ? createRelativePositionFromStateVector(text, version, closeElement.end, -1, true)
426
- : null;
427
- let attributePositions = [];
428
- for (let attribute of openElement.attributes) {
429
- if (attribute.type !== 'JSXSpreadAttribute') {
430
- const nameStart = createRelativePositionFromStateVector(text, version, attribute.name.start, undefined, true);
431
- const nameEnd = createRelativePositionFromStateVector(text, version, !!attribute.value
432
- ? attribute.name.end + 1
433
- : attribute.name.end, -1, true);
434
- attributePositions.push([nameStart, nameEnd]);
435
- }
436
- else {
437
- const openBraceStart = createRelativePositionFromStateVector(text, version, attribute.start, undefined, true);
438
- const openBraceEnd = createRelativePositionFromStateVector(text, version, attribute.start + 1, undefined, true);
439
- const closeBraceStart = createRelativePositionFromStateVector(text, version, attribute.end - 1, -1, true);
440
- const closeBraceEnd = createRelativePositionFromStateVector(text, version, attribute.end, -1, true);
441
- attributePositions.push([openBraceStart, openBraceEnd]);
442
- attributePositions.push([closeBraceStart, closeBraceEnd]);
443
- }
444
- }
445
- for (let [start, end] of attributePositions) {
446
- // remove attribute name
447
- const nameStart = createAbsolutePositionFromRelativePosition(start, doc);
448
- const nameEnd = createAbsolutePositionFromRelativePosition(end, doc);
449
- // remove name + "="
450
- text.delete(nameStart.index, nameEnd.index - nameStart.index);
451
- }
452
- // remove open tag <
453
- const openStartAbsolute = createAbsolutePositionFromRelativePosition(openStart, doc);
454
- text.delete(openStartAbsolute.index, 1);
455
- // remove open tag >
456
- const openEndAbsolute = createAbsolutePositionFromRelativePosition(openEnd, doc);
457
- text.delete(openEndAbsolute.index, closeElement ? 1 : 2);
458
- if (closeElement) {
459
- // remove closing tag
460
- const closingStartAbsolute = createAbsolutePositionFromRelativePosition(closingStart, doc);
461
- const closingEndAbsolute = createAbsolutePositionFromRelativePosition(closingEnd, doc);
462
- text.delete(closingStartAbsolute.index, closingEndAbsolute.index - closingStartAbsolute.index);
463
- }
464
- }
465
- _insertEnergyCheckIntoStatement(doc, text, statement) {
466
- doc.clientID += 1;
467
- const version = { '0': getClock(doc, 0) };
468
- let startIndex;
469
- let postfix = '';
470
- let wrapWithBraces = false;
471
- if (statement.type === 'BlockStatement') {
472
- // Block statements look like this:
473
- // while(true) { }
474
- // Block statements are wrapped with curly braces
475
- // so we should use a full statement "__energyCheck();"
476
- startIndex = statement.start + 1;
477
- postfix = ';';
478
- }
479
- else if (statement.type === 'ExpressionStatement') {
480
- // Expression statements look like this:
481
- // while(true) abc();
482
- // therefore, we can find the start of the expression and use a comma
483
- // between our call and the other code to make it a sequence expression.
484
- startIndex = statement.start;
485
- postfix = ';';
486
- wrapWithBraces = true;
487
- }
488
- else if (statement.type === 'EmptyStatement') {
489
- // Empty statements look like this:
490
- // while(true) ;
491
- // as a result, we only need to insert the call to convert the expression from empty to
492
- // an expression statement containing a single function call.
493
- startIndex = statement.start;
494
- }
495
- else {
496
- // Other statements (like "if", "try", "throw" and other loops)
497
- // should be wrapped in curly braces
498
- startIndex = statement.start;
499
- postfix = ';';
500
- wrapWithBraces = true;
501
- }
502
- this._insertEnergyCheck(doc, text, version, startIndex, statement.end, postfix, wrapWithBraces);
503
- }
504
- _insertEnergyCheck(doc, text, version, startIndex, endIndex, postfix, wrapWithBraces) {
505
- if (wrapWithBraces) {
506
- const absolute = createAbsolutePositionFromStateVector(doc, text, version, startIndex, undefined, true);
507
- text.insert(absolute.index, '{');
508
- }
509
- const absolute = createAbsolutePositionFromStateVector(doc, text, version, startIndex, undefined, true);
510
- text.insert(absolute.index, ENERGY_CHECK_CALL + postfix);
511
- if (wrapWithBraces) {
512
- const absolute = createAbsolutePositionFromStateVector(doc, text, version, endIndex, undefined, true);
513
- text.insert(absolute.index, '}');
514
- }
515
- }
516
- _replaceAsyncFunction(node, doc, text) {
517
- doc.clientID += 1;
518
- const version = { '0': getClock(doc, 0) };
519
- const functionStart = createRelativePositionFromStateVector(text, version, node.start, undefined, true);
520
- const functionStartAbsolute = createAbsolutePositionFromRelativePosition(functionStart, doc);
521
- text.delete(functionStartAbsolute.index, 'async '.length);
522
- }
523
- _replaceAwaitExpression(node, doc, text) {
524
- doc.clientID += 1;
525
- const version = { '0': getClock(doc, 0) };
526
- const keywordStart = createRelativePositionFromStateVector(text, version, node.start, undefined, true);
527
- const keywordStartAbsolute = createAbsolutePositionFromRelativePosition(keywordStart, doc);
528
- text.delete(keywordStartAbsolute.index, 'await '.length);
529
- }
530
- }
531
- const ENERGY_CHECK_CALL = '__energyCheck()';
532
- /**
533
- * Calculates the original location that the given line and column numbers occurred at in the given transpiler result.
534
- * @param result The transpiler result.
535
- * @param location The location that should be converted from the transpiler output space to the transpiler input space.
536
- */
537
- export function calculateOriginalLineLocation(result, location) {
538
- const index = calculateIndexFromLocation(result.code, location);
539
- const relative = createRelativePositionFromTypeIndex(result.metadata.text, index);
540
- if (relative.item.client === 0) {
541
- return calculateLocationFromIndex(result.original, relative.item.clock);
542
- }
543
- let item = getItem(result.metadata.doc.store, relative.item);
544
- while (item && item.id.client !== 0) {
545
- item = item.left;
546
- }
547
- return calculateLocationFromIndex(result.original, item.id.clock + item.length);
548
- }
549
- /**
550
- * Calculates the final location that the given line and column numbers occurr at in the given transpiler result.
551
- * @param result The transpiler result.
552
- * @param location The location that should be converted from the transpiler input space to the output space.
553
- */
554
- export function calculateFinalLineLocation(result, location) {
555
- const originalVersion = { '0': getClock(result.metadata.doc, 0) };
556
- const originalIndex = calculateIndexFromLocation(result.original, location);
557
- const relative = createRelativePositionFromStateVector(result.metadata.text, originalVersion, originalIndex);
558
- const absolute = createAbsolutePositionFromRelativePosition(relative, result.metadata.doc);
559
- return calculateLocationFromIndex(result.code, absolute.index);
560
- }
561
- /**
562
- * Calculates the character index that the given location occurrs at in the given string.
563
- * @param code The string.
564
- * @param location The location to get the index of. LIne and column numbers are zero-based.
565
- */
566
- export function calculateIndexFromLocation(code, location) {
567
- let line = location.lineNumber;
568
- let column = location.column;
569
- let index = 0;
570
- for (; index < code.length; index++) {
571
- const char = code[index];
572
- if (line > 0) {
573
- if (char === '\n') {
574
- line -= 1;
575
- }
576
- }
577
- else if (column > 0) {
578
- column -= 1;
579
- if (char === '\n') {
580
- index++;
581
- break;
582
- }
583
- }
584
- else {
585
- break;
586
- }
587
- }
588
- return index;
589
- }
590
- /**
591
- * Calculates the line and column number that the given index occurrs at in the given string.
592
- * @param code The code.
593
- * @param index The index.
594
- */
595
- export function calculateLocationFromIndex(code, index) {
596
- let line = 0;
597
- let lastLineIndex = 0;
598
- for (let counter = 0; counter < code.length && counter < index; counter++) {
599
- const char = code[counter];
600
- if (char === '\n') {
601
- line += 1;
602
- lastLineIndex = counter + 1;
603
- }
604
- }
605
- let column = index - lastLineIndex;
606
- return {
607
- lineNumber: line,
608
- column,
609
- };
610
- }
611
- //# sourceMappingURL=Transpiler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Transpiler.js","sourceRoot":"","sources":["Transpiler.ts"],"names":[],"mappings":"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"}