@teleporthq/teleport-shared 0.43.57 → 0.43.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__tests__/utils/ast-effect-cleanup.ts +312 -0
- package/__tests__/utils/string-utils.ts +16 -0
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/utils/ast-effect-cleanup.d.ts +54 -0
- package/dist/cjs/utils/ast-effect-cleanup.d.ts.map +1 -0
- package/dist/cjs/utils/ast-effect-cleanup.js +358 -0
- package/dist/cjs/utils/ast-effect-cleanup.js.map +1 -0
- package/dist/cjs/utils/string-utils.d.ts +1 -0
- package/dist/cjs/utils/string-utils.d.ts.map +1 -1
- package/dist/cjs/utils/string-utils.js +9 -1
- package/dist/cjs/utils/string-utils.js.map +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/utils/ast-effect-cleanup.d.ts +54 -0
- package/dist/esm/utils/ast-effect-cleanup.d.ts.map +1 -0
- package/dist/esm/utils/ast-effect-cleanup.js +330 -0
- package/dist/esm/utils/ast-effect-cleanup.js.map +1 -0
- package/dist/esm/utils/string-utils.d.ts +1 -0
- package/dist/esm/utils/string-utils.d.ts.map +1 -1
- package/dist/esm/utils/string-utils.js +7 -0
- package/dist/esm/utils/string-utils.js.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +2 -0
- package/src/utils/ast-effect-cleanup.ts +370 -0
- package/src/utils/string-utils.ts +8 -0
|
@@ -0,0 +1,358 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
26
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
27
|
+
if (ar || !(i in from)) {
|
|
28
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
29
|
+
ar[i] = from[i];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.normalizeEffectCleanups = exports.isProvablyNotAFunction = exports.EFFECT_HOOK_NAMES = void 0;
|
|
36
|
+
var types = __importStar(require("@babel/types"));
|
|
37
|
+
var ast_scope_1 = require("./ast-scope");
|
|
38
|
+
/**
|
|
39
|
+
* ------------------------------------------------------------------
|
|
40
|
+
* Effect-cleanup contract for generated React components
|
|
41
|
+
* ------------------------------------------------------------------
|
|
42
|
+
*
|
|
43
|
+
* React reads the RETURN VALUE of an effect callback as that effect's cleanup
|
|
44
|
+
* function and calls it on unmount (and before every re-run). Anything else
|
|
45
|
+
* coming back is stored anyway and invoked blindly, so a callback that returns
|
|
46
|
+
* a value which is not callable does not fail where it was written — it fails
|
|
47
|
+
* later, in React's own commit phase, as
|
|
48
|
+
*
|
|
49
|
+
* TypeError: destroy is not a function
|
|
50
|
+
* at safelyCallDestroy (react-dom.development.js)
|
|
51
|
+
*
|
|
52
|
+
* with a stack made entirely of React frames and no hint of the component that
|
|
53
|
+
* caused it. The page renders fine; it dies the moment the user navigates away.
|
|
54
|
+
*
|
|
55
|
+
* The shape that produced it here was a concise arrow body:
|
|
56
|
+
*
|
|
57
|
+
* useEffect(() => import('@google/model-viewer'), [])
|
|
58
|
+
*
|
|
59
|
+
* The arrow was only meant to RUN the dynamic import, but a concise body also
|
|
60
|
+
* RETURNS it, so every product card handed React a Promise as its cleanup and
|
|
61
|
+
* paginating the product list crashed the app.
|
|
62
|
+
*
|
|
63
|
+
* Emitters are expected to build effects whose callback returns a function or
|
|
64
|
+
* nothing at all. This module is the end-of-pipeline NET that repairs the
|
|
65
|
+
* shapes which are provably in breach, no matter which plugin produced them,
|
|
66
|
+
* so the same mistake can never reach a browser again.
|
|
67
|
+
*
|
|
68
|
+
* Like `ast-statement-order`, every repair here is a no-op on healthy code: a
|
|
69
|
+
* callback that already honours the contract prints byte-identical.
|
|
70
|
+
*/
|
|
71
|
+
/** The hooks whose first argument React treats as an effect with a cleanup. */
|
|
72
|
+
exports.EFFECT_HOOK_NAMES = new Set([
|
|
73
|
+
'useEffect',
|
|
74
|
+
'useLayoutEffect',
|
|
75
|
+
'useInsertionEffect',
|
|
76
|
+
]);
|
|
77
|
+
/**
|
|
78
|
+
* Identifier used for the temporary holding an effect callback's repaired
|
|
79
|
+
* return value. Prefixed and namespaced so it cannot collide with anything the
|
|
80
|
+
* UIDL can name; {@link pickCleanupBindingName} still proves it free.
|
|
81
|
+
*/
|
|
82
|
+
var CLEANUP_BINDING_NAME = '__tqEffectCleanup';
|
|
83
|
+
/**
|
|
84
|
+
* Statement-valued node keys — the positions where a single statement can sit
|
|
85
|
+
* without an enclosing block, e.g. the `return` of `if (done) return {}`.
|
|
86
|
+
* Repairing one means replacing it with a block, which these keys allow.
|
|
87
|
+
*/
|
|
88
|
+
var SINGLE_STATEMENT_KEYS = ['consequent', 'alternate', 'body'];
|
|
89
|
+
/**
|
|
90
|
+
* The hook a call expression invokes — a bare `useEffect(…)` or the
|
|
91
|
+
* `React.useEffect(…)` spelling some plugins emit — or `null` for anything
|
|
92
|
+
* else.
|
|
93
|
+
*
|
|
94
|
+
* Only the `React` namespace is accepted on purpose: `anything.useEffect(…)`
|
|
95
|
+
* would let an unrelated API that happens to share the name inherit React's
|
|
96
|
+
* cleanup contract, and rewriting ITS return value would be a real change in
|
|
97
|
+
* behaviour rather than a repair.
|
|
98
|
+
*/
|
|
99
|
+
var getCalledHookName = function (callee) {
|
|
100
|
+
if (!callee) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
if (callee.type === 'Identifier') {
|
|
104
|
+
return callee.name;
|
|
105
|
+
}
|
|
106
|
+
if ((callee.type === 'MemberExpression' || callee.type === 'OptionalMemberExpression') &&
|
|
107
|
+
!callee.computed &&
|
|
108
|
+
callee.object.type === 'Identifier' &&
|
|
109
|
+
callee.object.name === 'React' &&
|
|
110
|
+
callee.property.type === 'Identifier') {
|
|
111
|
+
return callee.property.name;
|
|
112
|
+
}
|
|
113
|
+
return null;
|
|
114
|
+
};
|
|
115
|
+
/** True for the two node types React can actually call as a cleanup. */
|
|
116
|
+
var isFunctionExpression = function (node) {
|
|
117
|
+
return !!node && (node.type === 'ArrowFunctionExpression' || node.type === 'FunctionExpression');
|
|
118
|
+
};
|
|
119
|
+
/** True for `import('…')`, whose value is always a Promise. */
|
|
120
|
+
var isDynamicImportCall = function (node) {
|
|
121
|
+
if (node.type !== 'CallExpression' && node.type !== 'OptionalCallExpression') {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
var callee = node.callee;
|
|
125
|
+
// Babel models the dynamic import callee as its own `Import` node, but a
|
|
126
|
+
// hand-built AST may spell it as an identifier that happens to print the
|
|
127
|
+
// same. Both are the same expression once generated.
|
|
128
|
+
return callee.type === 'Import' || (callee.type === 'Identifier' && callee.name === 'import');
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* True when an expression can NEVER evaluate to something callable, so React
|
|
132
|
+
* would certainly reject it as a cleanup.
|
|
133
|
+
*
|
|
134
|
+
* Deliberately conservative — every entry is a shape whose result type is
|
|
135
|
+
* fixed by the language. `a || b`, `cond ? a : b`, `new X()` and any ordinary
|
|
136
|
+
* call are all absent because each of them CAN yield a function, and a net
|
|
137
|
+
* that rewrites code it has not proven broken is worse than the bug it hunts.
|
|
138
|
+
*/
|
|
139
|
+
var isProvablyNotAFunction = function (node) {
|
|
140
|
+
if (!node) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
switch (node.type) {
|
|
144
|
+
case 'StringLiteral':
|
|
145
|
+
case 'NumericLiteral':
|
|
146
|
+
case 'BooleanLiteral':
|
|
147
|
+
case 'NullLiteral':
|
|
148
|
+
case 'BigIntLiteral':
|
|
149
|
+
case 'DecimalLiteral':
|
|
150
|
+
case 'RegExpLiteral':
|
|
151
|
+
case 'TemplateLiteral':
|
|
152
|
+
case 'ObjectExpression':
|
|
153
|
+
case 'ArrayExpression':
|
|
154
|
+
case 'JSXElement':
|
|
155
|
+
case 'JSXFragment':
|
|
156
|
+
// `void x`, `typeof x`, `!x`, `-x`, `delete x` — each has a primitive result.
|
|
157
|
+
case 'UnaryExpression':
|
|
158
|
+
// `a + b`, `a instanceof B`, `a in b` — a number, string or boolean.
|
|
159
|
+
case 'BinaryExpression':
|
|
160
|
+
case 'UpdateExpression':
|
|
161
|
+
return true;
|
|
162
|
+
// A sequence evaluates to its last operand.
|
|
163
|
+
case 'SequenceExpression':
|
|
164
|
+
return (0, exports.isProvablyNotAFunction)(node.expressions[node.expressions.length - 1]);
|
|
165
|
+
default:
|
|
166
|
+
return isDynamicImportCall(node);
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
exports.isProvablyNotAFunction = isProvablyNotAFunction;
|
|
170
|
+
/**
|
|
171
|
+
* A binding name for the repaired return value that `expression` does not
|
|
172
|
+
* already read. Without this check the `const` introduced by the repair could
|
|
173
|
+
* shadow an outer binding the expression itself depends on, turning a cleanup
|
|
174
|
+
* bug into a ReferenceError.
|
|
175
|
+
*/
|
|
176
|
+
var pickCleanupBindingName = function (expression) {
|
|
177
|
+
var referenced = (0, ast_scope_1.collectReferencedIdentifiers)(expression, { includeDeferred: true });
|
|
178
|
+
if (!referenced.has(CLEANUP_BINDING_NAME)) {
|
|
179
|
+
return CLEANUP_BINDING_NAME;
|
|
180
|
+
}
|
|
181
|
+
var suffix = 2;
|
|
182
|
+
while (referenced.has("".concat(CLEANUP_BINDING_NAME).concat(suffix))) {
|
|
183
|
+
suffix++;
|
|
184
|
+
}
|
|
185
|
+
return "".concat(CLEANUP_BINDING_NAME).concat(suffix);
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* `<expression>; return;` — keeps the side effect and the early exit the
|
|
189
|
+
* original `return <expression>` had, and hands React nothing.
|
|
190
|
+
*/
|
|
191
|
+
var dropReturnedValue = function (statement) { return [
|
|
192
|
+
types.expressionStatement(statement.argument),
|
|
193
|
+
types.returnStatement(),
|
|
194
|
+
]; };
|
|
195
|
+
/**
|
|
196
|
+
* Turns a concise arrow body into a block that cannot leak a bad cleanup.
|
|
197
|
+
*
|
|
198
|
+
* The two branches match the two things a concise body can mean. An arrow
|
|
199
|
+
* returning an arrow (`() => () => stop()`) is a cleanup written on purpose
|
|
200
|
+
* and is left alone. Everything else returned a value only because concise
|
|
201
|
+
* arrow syntax returns whatever it evaluates — the author wrote an expression
|
|
202
|
+
* to RUN, not to hand back — so the value is either dropped (when it is
|
|
203
|
+
* provably not callable) or passed through a `typeof` gate that keeps a real
|
|
204
|
+
* cleanup and swallows anything else.
|
|
205
|
+
*/
|
|
206
|
+
var repairConciseArrowBody = function (callback) {
|
|
207
|
+
var expression = callback.body;
|
|
208
|
+
if (isFunctionExpression(expression)) {
|
|
209
|
+
return 0;
|
|
210
|
+
}
|
|
211
|
+
if ((0, exports.isProvablyNotAFunction)(expression)) {
|
|
212
|
+
callback.body = types.blockStatement([types.expressionStatement(expression)]);
|
|
213
|
+
return 1;
|
|
214
|
+
}
|
|
215
|
+
var name = pickCleanupBindingName(expression);
|
|
216
|
+
callback.body = types.blockStatement([
|
|
217
|
+
types.variableDeclaration('const', [
|
|
218
|
+
types.variableDeclarator(types.identifier(name), expression),
|
|
219
|
+
]),
|
|
220
|
+
types.ifStatement(types.binaryExpression('===', types.unaryExpression('typeof', types.identifier(name)), types.stringLiteral('function')), types.returnStatement(types.identifier(name))),
|
|
221
|
+
]);
|
|
222
|
+
return 1;
|
|
223
|
+
};
|
|
224
|
+
/**
|
|
225
|
+
* Strips values from the `return`s that belong to an effect callback's own
|
|
226
|
+
* body. Nested functions are skipped: their `return`s are answers to whoever
|
|
227
|
+
* calls them, not cleanups handed to React.
|
|
228
|
+
*/
|
|
229
|
+
var repairEffectReturns = function (body) {
|
|
230
|
+
var repaired = 0;
|
|
231
|
+
var needsRepair = function (statement) {
|
|
232
|
+
return statement.type === 'ReturnStatement' && (0, exports.isProvablyNotAFunction)(statement.argument);
|
|
233
|
+
};
|
|
234
|
+
// tslint:disable-next-line:no-any
|
|
235
|
+
var visit = function (node) {
|
|
236
|
+
if (!node || typeof node !== 'object') {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
if (Array.isArray(node)) {
|
|
240
|
+
for (var index = 0; index < node.length; index++) {
|
|
241
|
+
var entry = node[index];
|
|
242
|
+
if (entry && needsRepair(entry)) {
|
|
243
|
+
var replacement = dropReturnedValue(entry);
|
|
244
|
+
node.splice.apply(node, __spreadArray([index, 1], replacement, false));
|
|
245
|
+
// Step past the inserted `return;` — it is already compliant.
|
|
246
|
+
index += replacement.length - 1;
|
|
247
|
+
repaired++;
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
visit(entry);
|
|
251
|
+
}
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
if (typeof node.type !== 'string') {
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
// A nested function owns its own returns.
|
|
258
|
+
if (ast_scope_1.FUNCTION_NODE_TYPES.has(node.type)) {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
// `if (done) return {}` has no statement list to splice into, so the bare
|
|
262
|
+
// statement is promoted to a block holding the repaired pair.
|
|
263
|
+
SINGLE_STATEMENT_KEYS.forEach(function (key) {
|
|
264
|
+
var child = node[key];
|
|
265
|
+
if (child && child.type === 'ReturnStatement' && needsRepair(child)) {
|
|
266
|
+
node[key] = types.blockStatement(dropReturnedValue(child));
|
|
267
|
+
repaired++;
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
Object.keys(node).forEach(function (key) {
|
|
271
|
+
if (ast_scope_1.AST_METADATA_KEYS.has(key) || key.charAt(0) === '_') {
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
visit(node[key]);
|
|
275
|
+
});
|
|
276
|
+
};
|
|
277
|
+
visit(body);
|
|
278
|
+
return repaired;
|
|
279
|
+
};
|
|
280
|
+
/**
|
|
281
|
+
* Rebuilds an `async` effect callback as a synchronous one that starts the
|
|
282
|
+
* async work and returns nothing.
|
|
283
|
+
*
|
|
284
|
+
* An async function ALWAYS returns a Promise, so `useEffect(async () => …)` is
|
|
285
|
+
* broken by construction however careful its body is. Running the original
|
|
286
|
+
* function as an IIFE keeps its behaviour exactly (React passes an effect
|
|
287
|
+
* callback no arguments, so no parameter is lost) while the effect itself now
|
|
288
|
+
* hands React nothing.
|
|
289
|
+
*/
|
|
290
|
+
var wrapAsyncCallback = function (callback) {
|
|
291
|
+
return types.arrowFunctionExpression([], types.blockStatement([types.expressionStatement(types.callExpression(callback, []))]));
|
|
292
|
+
};
|
|
293
|
+
/**
|
|
294
|
+
* Brings one effect call in line with the cleanup contract. Returns how many
|
|
295
|
+
* repairs it took, so `0` means the call was already correct.
|
|
296
|
+
*/
|
|
297
|
+
var repairEffectCall = function (call) {
|
|
298
|
+
var callback = call.arguments[0];
|
|
299
|
+
if (!isFunctionExpression(callback)) {
|
|
300
|
+
// `useEffect(handler, [])` — the callback is defined elsewhere and nothing
|
|
301
|
+
// here can prove what it returns.
|
|
302
|
+
return 0;
|
|
303
|
+
}
|
|
304
|
+
// A generator called as an effect callback returns an iterator, but calling
|
|
305
|
+
// one runs NONE of its body, so there is no repair that preserves what the
|
|
306
|
+
// author wrote. Left untouched on purpose.
|
|
307
|
+
if (callback.generator) {
|
|
308
|
+
return 0;
|
|
309
|
+
}
|
|
310
|
+
if (callback.async) {
|
|
311
|
+
call.arguments[0] = wrapAsyncCallback(callback);
|
|
312
|
+
return 1;
|
|
313
|
+
}
|
|
314
|
+
if (callback.type === 'ArrowFunctionExpression' && callback.body.type !== 'BlockStatement') {
|
|
315
|
+
return repairConciseArrowBody(callback);
|
|
316
|
+
}
|
|
317
|
+
return repairEffectReturns(callback.body);
|
|
318
|
+
};
|
|
319
|
+
/**
|
|
320
|
+
* Applies the cleanup contract to every effect hook call in an AST.
|
|
321
|
+
*
|
|
322
|
+
* Returns how many callbacks were repaired, which is what a caller wanting to
|
|
323
|
+
* assert "the pipeline emitted nothing broken" checks.
|
|
324
|
+
*/
|
|
325
|
+
var normalizeEffectCleanups = function (ast) {
|
|
326
|
+
var repaired = 0;
|
|
327
|
+
// tslint:disable-next-line:no-any
|
|
328
|
+
var walk = function (node) {
|
|
329
|
+
if (!node || typeof node !== 'object') {
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
if (Array.isArray(node)) {
|
|
333
|
+
node.forEach(function (entry) { return walk(entry); });
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
if (typeof node.type !== 'string') {
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
if (node.type === 'CallExpression' || node.type === 'OptionalCallExpression') {
|
|
340
|
+
var hookName = getCalledHookName(node.callee);
|
|
341
|
+
if (hookName && exports.EFFECT_HOOK_NAMES.has(hookName)) {
|
|
342
|
+
// Repaired before descending, so the walk goes on to visit whatever
|
|
343
|
+
// replaced the callback and finds any effect nested inside it.
|
|
344
|
+
repaired += repairEffectCall(node);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
Object.keys(node).forEach(function (key) {
|
|
348
|
+
if (ast_scope_1.AST_METADATA_KEYS.has(key) || key.charAt(0) === '_') {
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
walk(node[key]);
|
|
352
|
+
});
|
|
353
|
+
};
|
|
354
|
+
walk(ast);
|
|
355
|
+
return repaired;
|
|
356
|
+
};
|
|
357
|
+
exports.normalizeEffectCleanups = normalizeEffectCleanups;
|
|
358
|
+
//# sourceMappingURL=ast-effect-cleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-effect-cleanup.js","sourceRoot":"","sources":["../../../src/utils/ast-effect-cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,5 +29,6 @@ export declare const addSpacesToEachLine: (spaces: string, str: string) => strin
|
|
|
29
29
|
export declare const removeLastEmptyLine: (str: string) => string;
|
|
30
30
|
export declare const encode: (str: string) => string;
|
|
31
31
|
export declare const generateRandomString: () => string;
|
|
32
|
+
export declare const sanitizeTranslationKey: (key: string) => string;
|
|
32
33
|
export declare const generateCSSVariableName: (name: string) => string;
|
|
33
34
|
//# sourceMappingURL=string-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string-utils.d.ts","sourceRoot":"","sources":["../../../src/utils/string-utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,QAAS,MAAM,KAAG,MACgC,CAAA;AAClF,eAAO,MAAM,mBAAmB,QAAS,MAAM,KAAG,MACqB,CAAA;AAEvE,eAAO,MAAM,UAAU,QAAS,MAAM,KAAG,MAA6C,CAAA;AACtF,eAAO,MAAM,QAAQ,QAAS,MAAM,KAAG,MAA6C,CAAA;AAEpF,eAAO,MAAM,wBAAwB,QAAS,MAAM,WAAyC,CAAA;AAE7F,eAAO,MAAM,uBAAuB,QAAS,MAAM,WAWlD,CAAA;AAED,eAAO,MAAM,OAAO,QAAS,MAAM,KAAG,MAarC,CAAA;AAED,eAAO,MAAM,6BAA6B,UAAW,MAAM,WAAyC,CAAA;AAEpG;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,UAAW,MAAM,WACqB,CAAA;AAE7E;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,SAAU,MAAM,KAAG,MACW,CAAA;AAEtE,eAAO,MAAM,mBAAmB,WAAY,MAAM,OAAO,MAAM,WAK9D,CAAA;AAED,eAAO,MAAM,mBAAmB,QAAS,MAAM,WAE9C,CAAA;AAYD,eAAO,MAAM,MAAM,QAAS,MAAM,WAQjC,CAAA;AAED,eAAO,MAAM,oBAAoB,cAAmD,CAAA;
|
|
1
|
+
{"version":3,"file":"string-utils.d.ts","sourceRoot":"","sources":["../../../src/utils/string-utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,QAAS,MAAM,KAAG,MACgC,CAAA;AAClF,eAAO,MAAM,mBAAmB,QAAS,MAAM,KAAG,MACqB,CAAA;AAEvE,eAAO,MAAM,UAAU,QAAS,MAAM,KAAG,MAA6C,CAAA;AACtF,eAAO,MAAM,QAAQ,QAAS,MAAM,KAAG,MAA6C,CAAA;AAEpF,eAAO,MAAM,wBAAwB,QAAS,MAAM,WAAyC,CAAA;AAE7F,eAAO,MAAM,uBAAuB,QAAS,MAAM,WAWlD,CAAA;AAED,eAAO,MAAM,OAAO,QAAS,MAAM,KAAG,MAarC,CAAA;AAED,eAAO,MAAM,6BAA6B,UAAW,MAAM,WAAyC,CAAA;AAEpG;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,UAAW,MAAM,WACqB,CAAA;AAE7E;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,SAAU,MAAM,KAAG,MACW,CAAA;AAEtE,eAAO,MAAM,mBAAmB,WAAY,MAAM,OAAO,MAAM,WAK9D,CAAA;AAED,eAAO,MAAM,mBAAmB,QAAS,MAAM,WAE9C,CAAA;AAYD,eAAO,MAAM,MAAM,QAAS,MAAM,WAQjC,CAAA;AAED,eAAO,MAAM,oBAAoB,cAAmD,CAAA;AAQpF,eAAO,MAAM,sBAAsB,QAAS,MAAM,KAAG,MAAiC,CAAA;AAEtF,eAAO,MAAM,uBAAuB,SAAU,MAAM,KAAG,MAEtD,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateCSSVariableName = exports.generateRandomString = exports.encode = exports.removeLastEmptyLine = exports.addSpacesToEachLine = exports.createGlobalStateSetterName = exports.createStateStoringFunction = exports.createStateOrPropStoringValue = exports.slugify = exports.removeIllegalCharacters = exports.dashCaseToUpperCamelCase = exports.camelize = exports.capitalize = exports.dashCaseToCamelCase = exports.camelCaseToDashCase = void 0;
|
|
3
|
+
exports.generateCSSVariableName = exports.sanitizeTranslationKey = exports.generateRandomString = exports.encode = exports.removeLastEmptyLine = exports.addSpacesToEachLine = exports.createGlobalStateSetterName = exports.createStateStoringFunction = exports.createStateOrPropStoringValue = exports.slugify = exports.removeIllegalCharacters = exports.dashCaseToUpperCamelCase = exports.camelize = exports.capitalize = exports.dashCaseToCamelCase = exports.camelCaseToDashCase = void 0;
|
|
4
4
|
var js_identifiers_1 = require("./js-identifiers");
|
|
5
5
|
var camelCaseToDashCase = function (str) {
|
|
6
6
|
return str.replace(/([a-z])(?=[A-Z])|([A-Z0-9])(?=[A-Z][a-z])/g, '$1$2-').toLowerCase();
|
|
@@ -101,6 +101,14 @@ var encode = function (str) {
|
|
|
101
101
|
exports.encode = encode;
|
|
102
102
|
var generateRandomString = function () { return Math.random().toString(36).substring(2, 6); };
|
|
103
103
|
exports.generateRandomString = generateRandomString;
|
|
104
|
+
// next-intl refuses to initialise when a messages-file key contains a `.` (its
|
|
105
|
+
// namespace separator), and translation keys minted from user text can contain
|
|
106
|
+
// anything. Every emitter of a translation key — the locale messages files AND
|
|
107
|
+
// each `translate.raw('<key>')` lookup — must funnel the key through this so
|
|
108
|
+
// both sides stay consistent for projects whose stored UIDL already carries
|
|
109
|
+
// dotted keys.
|
|
110
|
+
var sanitizeTranslationKey = function (key) { return key.replace(/\./g, '_'); };
|
|
111
|
+
exports.sanitizeTranslationKey = sanitizeTranslationKey;
|
|
104
112
|
var generateCSSVariableName = function (name) {
|
|
105
113
|
return name.startsWith('--') ? (0, exports.camelCaseToDashCase)(name) : (0, exports.camelCaseToDashCase)("--".concat(name));
|
|
106
114
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string-utils.js","sourceRoot":"","sources":["../../../src/utils/string-utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"string-utils.js","sourceRoot":"","sources":["../../../src/utils/string-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import * as GenericUtils from './utils/generic';
|
|
|
5
5
|
import * as JSIdentifiers from './utils/js-identifiers';
|
|
6
6
|
import * as ASTScope from './utils/ast-scope';
|
|
7
7
|
import * as ASTStatementOrder from './utils/ast-statement-order';
|
|
8
|
+
import * as ASTEffectCleanup from './utils/ast-effect-cleanup';
|
|
8
9
|
import * as RoutePaths from './utils/route-paths';
|
|
9
10
|
import * as LayoutTopology from './utils/layout-topology';
|
|
10
11
|
import * as HtmlContentModel from './utils/html-content-model';
|
|
@@ -12,5 +13,5 @@ import * as StyleDeclarations from './utils/style-declarations';
|
|
|
12
13
|
import * as StorefrontTax from './utils/storefront-tax';
|
|
13
14
|
import * as EmailDate from './utils/email-date';
|
|
14
15
|
import * as DataCache from './cache';
|
|
15
|
-
export { Constants, StringUtils, UIDLUtils, GenericUtils, JSIdentifiers, ASTScope, ASTStatementOrder, RoutePaths, LayoutTopology, HtmlContentModel, StyleDeclarations, StorefrontTax, EmailDate, DataCache, };
|
|
16
|
+
export { Constants, StringUtils, UIDLUtils, GenericUtils, JSIdentifiers, ASTScope, ASTStatementOrder, ASTEffectCleanup, RoutePaths, LayoutTopology, HtmlContentModel, StyleDeclarations, StorefrontTax, EmailDate, DataCache, };
|
|
16
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,WAAW,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAC7C,OAAO,KAAK,iBAAiB,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,cAAc,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,gBAAgB,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,iBAAiB,MAAM,4BAA4B,CAAA;AAC/D,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,SAAS,MAAM,SAAS,CAAA;AAEpC,OAAO,EACL,SAAS,EACT,WAAW,EACX,SAAS,EACT,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,SAAS,GACV,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,WAAW,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAC7C,OAAO,KAAK,iBAAiB,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,gBAAgB,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,cAAc,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,gBAAgB,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,iBAAiB,MAAM,4BAA4B,CAAA;AAC/D,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,SAAS,MAAM,SAAS,CAAA;AAEpC,OAAO,EACL,SAAS,EACT,WAAW,EACX,SAAS,EACT,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,SAAS,GACV,CAAA"}
|
package/dist/esm/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import * as GenericUtils from './utils/generic';
|
|
|
5
5
|
import * as JSIdentifiers from './utils/js-identifiers';
|
|
6
6
|
import * as ASTScope from './utils/ast-scope';
|
|
7
7
|
import * as ASTStatementOrder from './utils/ast-statement-order';
|
|
8
|
+
import * as ASTEffectCleanup from './utils/ast-effect-cleanup';
|
|
8
9
|
import * as RoutePaths from './utils/route-paths';
|
|
9
10
|
import * as LayoutTopology from './utils/layout-topology';
|
|
10
11
|
import * as HtmlContentModel from './utils/html-content-model';
|
|
@@ -12,5 +13,5 @@ import * as StyleDeclarations from './utils/style-declarations';
|
|
|
12
13
|
import * as StorefrontTax from './utils/storefront-tax';
|
|
13
14
|
import * as EmailDate from './utils/email-date';
|
|
14
15
|
import * as DataCache from './cache';
|
|
15
|
-
export { Constants, StringUtils, UIDLUtils, GenericUtils, JSIdentifiers, ASTScope, ASTStatementOrder, RoutePaths, LayoutTopology, HtmlContentModel, StyleDeclarations, StorefrontTax, EmailDate, DataCache, };
|
|
16
|
+
export { Constants, StringUtils, UIDLUtils, GenericUtils, JSIdentifiers, ASTScope, ASTStatementOrder, ASTEffectCleanup, RoutePaths, LayoutTopology, HtmlContentModel, StyleDeclarations, StorefrontTax, EmailDate, DataCache, };
|
|
16
17
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,WAAW,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAC7C,OAAO,KAAK,iBAAiB,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,cAAc,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,gBAAgB,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,iBAAiB,MAAM,4BAA4B,CAAA;AAC/D,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,SAAS,MAAM,SAAS,CAAA;AAEpC,OAAO,EACL,SAAS,EACT,WAAW,EACX,SAAS,EACT,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,SAAS,GACV,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,WAAW,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAC7C,OAAO,KAAK,iBAAiB,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,gBAAgB,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,cAAc,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,gBAAgB,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,iBAAiB,MAAM,4BAA4B,CAAA;AAC/D,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,SAAS,MAAM,SAAS,CAAA;AAEpC,OAAO,EACL,SAAS,EACT,WAAW,EACX,SAAS,EACT,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,SAAS,GACV,CAAA"}
|