@swipt/cli 0.1.0-nightly.42 → 0.1.0-nightly.44
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/client.mjs +103 -30
- package/connection.mjs +86 -26
- package/device.mjs +268 -90
- package/ignore.mjs +17 -5
- package/metro.mjs +235 -65
- package/output.mjs +32 -7
- package/package.json +3 -2
- package/project.mjs +442 -103
- package/swipt.mjs +300 -54
package/metro.mjs
CHANGED
|
@@ -12,21 +12,72 @@ const cliDirectory = path.dirname(fileURLToPath(import.meta.url));
|
|
|
12
12
|
|
|
13
13
|
const sourceExtensions = ["js", "jsx", "json", "ts", "tsx", "cjs", "mjs"];
|
|
14
14
|
const assetExtensions = [
|
|
15
|
-
"bmp",
|
|
16
|
-
"
|
|
15
|
+
"bmp",
|
|
16
|
+
"gif",
|
|
17
|
+
"jpg",
|
|
18
|
+
"jpeg",
|
|
19
|
+
"png",
|
|
20
|
+
"psd",
|
|
21
|
+
"svg",
|
|
22
|
+
"webp",
|
|
23
|
+
"xml",
|
|
24
|
+
"m4v",
|
|
25
|
+
"mov",
|
|
26
|
+
"mp4",
|
|
27
|
+
"mpeg",
|
|
28
|
+
"mpg",
|
|
29
|
+
"webm",
|
|
30
|
+
"aac",
|
|
31
|
+
"aiff",
|
|
32
|
+
"caf",
|
|
33
|
+
"m4a",
|
|
34
|
+
"mp3",
|
|
35
|
+
"wav",
|
|
36
|
+
"html",
|
|
37
|
+
"pdf",
|
|
38
|
+
"yaml",
|
|
39
|
+
"yml",
|
|
40
|
+
"otf",
|
|
41
|
+
"ttf",
|
|
42
|
+
"zip",
|
|
43
|
+
"db",
|
|
44
|
+
"sqlite",
|
|
45
|
+
"sqlite3",
|
|
17
46
|
];
|
|
18
|
-
const imageExtensions = new Set([
|
|
47
|
+
const imageExtensions = new Set([
|
|
48
|
+
"png",
|
|
49
|
+
"jpg",
|
|
50
|
+
"jpeg",
|
|
51
|
+
"bmp",
|
|
52
|
+
"gif",
|
|
53
|
+
"webp",
|
|
54
|
+
"psd",
|
|
55
|
+
"svg",
|
|
56
|
+
"tiff",
|
|
57
|
+
"ktx",
|
|
58
|
+
]);
|
|
19
59
|
const babelConfigNames = [
|
|
20
|
-
".babelrc",
|
|
21
|
-
"
|
|
60
|
+
".babelrc",
|
|
61
|
+
".babelrc.js",
|
|
62
|
+
".babelrc.cjs",
|
|
63
|
+
".babelrc.mjs",
|
|
64
|
+
".babelrc.json",
|
|
65
|
+
".babelrc.cts",
|
|
66
|
+
"babel.config.js",
|
|
67
|
+
"babel.config.cjs",
|
|
68
|
+
"babel.config.mjs",
|
|
69
|
+
"babel.config.json",
|
|
70
|
+
"babel.config.cts",
|
|
71
|
+
"babel.config.ts",
|
|
72
|
+
"babel.config.mts",
|
|
22
73
|
];
|
|
23
74
|
const contextModes = ["sync", "eager", "lazy", "lazy-once"];
|
|
24
75
|
const scaleSuffixes = ["", "@1x", "@1.5x", "@2x", "@3x", "@4x"];
|
|
25
76
|
const platformSuffixes = ["", ".ios", ".native"];
|
|
26
77
|
const platformRank = { ios: 2, native: 1 };
|
|
27
78
|
|
|
28
|
-
const posix = file => file.split(path.sep).join("/");
|
|
29
|
-
const escape = text => text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
79
|
+
const posix = (file) => file.split(path.sep).join("/");
|
|
80
|
+
const escape = (text) => text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
30
81
|
|
|
31
82
|
export function loadEnvironment(root) {
|
|
32
83
|
loadProjectEnv(root, { mode: "production", silent: true });
|
|
@@ -35,7 +86,9 @@ export function loadEnvironment(root) {
|
|
|
35
86
|
|
|
36
87
|
function defaultPreset(root) {
|
|
37
88
|
try {
|
|
38
|
-
return createRequire(path.join(root, "package.json")).resolve(
|
|
89
|
+
return createRequire(path.join(root, "package.json")).resolve(
|
|
90
|
+
"expo/internal/babel-preset",
|
|
91
|
+
);
|
|
39
92
|
} catch {
|
|
40
93
|
return require.resolve("babel-preset-expo");
|
|
41
94
|
}
|
|
@@ -46,9 +99,14 @@ function contextFiles(directory, recursive) {
|
|
|
46
99
|
return [];
|
|
47
100
|
}
|
|
48
101
|
const extensions = new Set([...sourceExtensions, ...assetExtensions]);
|
|
49
|
-
return fs
|
|
102
|
+
return fs
|
|
103
|
+
.readdirSync(directory, { recursive })
|
|
50
104
|
.map(posix)
|
|
51
|
-
.filter(
|
|
105
|
+
.filter(
|
|
106
|
+
(file) =>
|
|
107
|
+
extensions.has(path.extname(file).slice(1)) &&
|
|
108
|
+
fs.statSync(path.join(directory, file)).isFile(),
|
|
109
|
+
)
|
|
52
110
|
.sort();
|
|
53
111
|
}
|
|
54
112
|
|
|
@@ -64,7 +122,9 @@ function requireContext({ types: t, template }) {
|
|
|
64
122
|
return value;
|
|
65
123
|
}
|
|
66
124
|
}
|
|
67
|
-
throw call.buildCodeFrameError(
|
|
125
|
+
throw call.buildCodeFrameError(
|
|
126
|
+
`argument ${index + 1} of require.context must be ${expected}`,
|
|
127
|
+
);
|
|
68
128
|
};
|
|
69
129
|
const pattern = (call, index) => {
|
|
70
130
|
const node = call.node.arguments[index];
|
|
@@ -72,7 +132,9 @@ function requireContext({ types: t, template }) {
|
|
|
72
132
|
return /^\.\/.*$/;
|
|
73
133
|
}
|
|
74
134
|
if (!t.isRegExpLiteral(node)) {
|
|
75
|
-
throw call.buildCodeFrameError(
|
|
135
|
+
throw call.buildCodeFrameError(
|
|
136
|
+
`argument ${index + 1} of require.context must be a regular expression literal`,
|
|
137
|
+
);
|
|
76
138
|
}
|
|
77
139
|
return new RegExp(node.pattern, node.flags.replace(/[gy]/g, ""));
|
|
78
140
|
};
|
|
@@ -82,24 +144,52 @@ function requireContext({ types: t, template }) {
|
|
|
82
144
|
CallExpression(call, state) {
|
|
83
145
|
const { callee } = call.node;
|
|
84
146
|
if (
|
|
85
|
-
!t.isMemberExpression(callee) ||
|
|
86
|
-
|
|
147
|
+
!t.isMemberExpression(callee) ||
|
|
148
|
+
!t.isIdentifier(callee.object, { name: "require" }) ||
|
|
149
|
+
call.scope.hasBinding("require") ||
|
|
150
|
+
!(callee.computed
|
|
151
|
+
? t.isStringLiteral(callee.property, { value: "context" })
|
|
152
|
+
: t.isIdentifier(callee.property, { name: "context" }))
|
|
87
153
|
) {
|
|
88
154
|
return;
|
|
89
155
|
}
|
|
90
156
|
const from = path.dirname(state.filename);
|
|
91
|
-
const directory = path.resolve(
|
|
92
|
-
|
|
157
|
+
const directory = path.resolve(
|
|
158
|
+
from,
|
|
159
|
+
argument(
|
|
160
|
+
call,
|
|
161
|
+
0,
|
|
162
|
+
undefined,
|
|
163
|
+
"a string",
|
|
164
|
+
(value) => typeof value === "string",
|
|
165
|
+
),
|
|
166
|
+
);
|
|
167
|
+
const recursive = argument(
|
|
168
|
+
call,
|
|
169
|
+
1,
|
|
170
|
+
true,
|
|
171
|
+
"a boolean",
|
|
172
|
+
(value) => typeof value === "boolean",
|
|
173
|
+
);
|
|
93
174
|
const filter = pattern(call, 2);
|
|
94
|
-
const mode = argument(
|
|
175
|
+
const mode = argument(
|
|
176
|
+
call,
|
|
177
|
+
3,
|
|
178
|
+
"sync",
|
|
179
|
+
`one of ${contextModes.join(", ")}`,
|
|
180
|
+
(value) => contextModes.includes(value),
|
|
181
|
+
);
|
|
95
182
|
const entries = contextFiles(directory, recursive)
|
|
96
|
-
.map(file => `./${file}`)
|
|
97
|
-
.filter(key => filter.test(key))
|
|
98
|
-
.map(key => {
|
|
99
|
-
const target = posix(
|
|
183
|
+
.map((file) => `./${file}`)
|
|
184
|
+
.filter((key) => filter.test(key))
|
|
185
|
+
.map((key) => {
|
|
186
|
+
const target = posix(
|
|
187
|
+
path.relative(from, path.join(directory, key)),
|
|
188
|
+
);
|
|
100
189
|
return `${JSON.stringify(key)}: () => require(${JSON.stringify(target.startsWith(".") ? target : `./${target}`)})`;
|
|
101
190
|
});
|
|
102
|
-
call.replaceWith(
|
|
191
|
+
call.replaceWith(
|
|
192
|
+
template.expression.ast(`(() => {
|
|
103
193
|
const modules = { ${entries.join(", ")} };
|
|
104
194
|
const context = key => {
|
|
105
195
|
if (!Object.prototype.hasOwnProperty.call(modules, key)) {
|
|
@@ -111,27 +201,42 @@ function requireContext({ types: t, template }) {
|
|
|
111
201
|
context.resolve = key => key;
|
|
112
202
|
context.id = ${JSON.stringify(posix(path.relative(state.cwd, directory)) || ".")};
|
|
113
203
|
return context;
|
|
114
|
-
})()`)
|
|
204
|
+
})()`),
|
|
205
|
+
);
|
|
115
206
|
},
|
|
116
207
|
},
|
|
117
208
|
};
|
|
118
209
|
}
|
|
119
210
|
|
|
120
|
-
const loaderOf = file => {
|
|
211
|
+
const loaderOf = (file) => {
|
|
121
212
|
const extension = path.extname(file);
|
|
122
|
-
return extension === ".tsx"
|
|
213
|
+
return extension === ".tsx"
|
|
214
|
+
? "tsx"
|
|
215
|
+
: [".ts", ".mts", ".cts"].includes(extension)
|
|
216
|
+
? "ts"
|
|
217
|
+
: "jsx";
|
|
123
218
|
};
|
|
124
219
|
|
|
125
220
|
function archivedAsset(root, file) {
|
|
126
221
|
const relative = path.relative(root, file).split(path.sep);
|
|
127
|
-
return relative[0] === "assets"
|
|
222
|
+
return relative[0] === "assets"
|
|
223
|
+
? { path: relative.slice(1).join("/"), bundled: false }
|
|
224
|
+
: {
|
|
225
|
+
path: relative.map((part) => (part === ".." ? "__" : part)).join("/"),
|
|
226
|
+
bundled: true,
|
|
227
|
+
};
|
|
128
228
|
}
|
|
129
229
|
|
|
130
230
|
function assetVariants(resolved) {
|
|
131
231
|
const directory = path.dirname(resolved);
|
|
132
232
|
const extension = path.extname(resolved);
|
|
133
|
-
const stem = path
|
|
134
|
-
|
|
233
|
+
const stem = path
|
|
234
|
+
.basename(resolved, extension)
|
|
235
|
+
.replace(/(\.(ios|native))$/, "")
|
|
236
|
+
.replace(/@[\d.]+x$/, "");
|
|
237
|
+
const pattern = new RegExp(
|
|
238
|
+
`^${escape(stem)}(?:@([\\d.]+)x)?(?:\\.(ios|native))?${escape(extension)}$`,
|
|
239
|
+
);
|
|
135
240
|
const scales = new Map();
|
|
136
241
|
for (const name of fs.readdirSync(directory)) {
|
|
137
242
|
const match = pattern.exec(name);
|
|
@@ -144,13 +249,17 @@ function assetVariants(resolved) {
|
|
|
144
249
|
scales.set(scale, { rank, file: path.join(directory, name) });
|
|
145
250
|
}
|
|
146
251
|
}
|
|
147
|
-
return [...scales]
|
|
252
|
+
return [...scales]
|
|
253
|
+
.sort(([a], [b]) => a - b)
|
|
254
|
+
.map(([scale, { file }]) => ({ scale, file }));
|
|
148
255
|
}
|
|
149
256
|
|
|
150
257
|
function assetModule(root, variants, assets) {
|
|
151
258
|
const [first] = variants;
|
|
152
259
|
const extension = path.extname(first.file).slice(1);
|
|
153
|
-
const size = imageExtensions.has(extension)
|
|
260
|
+
const size = imageExtensions.has(extension)
|
|
261
|
+
? imageSize(fs.readFileSync(first.file))
|
|
262
|
+
: undefined;
|
|
154
263
|
const files = variants.map(({ scale, file }) => {
|
|
155
264
|
const archived = archivedAsset(root, file);
|
|
156
265
|
if (archived.bundled) {
|
|
@@ -174,16 +283,25 @@ function checkWorklets(root) {
|
|
|
174
283
|
} catch {
|
|
175
284
|
return;
|
|
176
285
|
}
|
|
177
|
-
const { version } = JSON.parse(
|
|
286
|
+
const { version } = JSON.parse(
|
|
287
|
+
fs.readFileSync(
|
|
288
|
+
path.join(path.dirname(plugin), "..", "package.json"),
|
|
289
|
+
"utf8",
|
|
290
|
+
),
|
|
291
|
+
);
|
|
178
292
|
const { version: expected } = require("react-native-worklets/package.json");
|
|
179
293
|
if (version !== expected) {
|
|
180
|
-
throw new Error(
|
|
294
|
+
throw new Error(
|
|
295
|
+
`the project has react-native-worklets ${version}, but Swipt runs ${expected}; install react-native-worklets@${expected} or remove it`,
|
|
296
|
+
);
|
|
181
297
|
}
|
|
182
298
|
}
|
|
183
299
|
|
|
184
300
|
export function metro(root, { assets, sourcemap }) {
|
|
185
301
|
checkWorklets(root);
|
|
186
|
-
const configName = babelConfigNames.find(name =>
|
|
302
|
+
const configName = babelConfigNames.find((name) =>
|
|
303
|
+
fs.existsSync(path.join(root, name)),
|
|
304
|
+
);
|
|
187
305
|
const babel = {
|
|
188
306
|
cwd: root,
|
|
189
307
|
root,
|
|
@@ -194,58 +312,110 @@ export function metro(root, { assets, sourcemap }) {
|
|
|
194
312
|
compact: false,
|
|
195
313
|
retainLines: true,
|
|
196
314
|
sourceMaps: sourcemap ? "inline" : false,
|
|
197
|
-
...(configName
|
|
315
|
+
...(configName
|
|
316
|
+
? { extends: path.join(root, configName) }
|
|
317
|
+
: { presets: [defaultPreset(root)] }),
|
|
198
318
|
plugins: [requireContext],
|
|
199
319
|
};
|
|
200
320
|
const caller = {
|
|
201
|
-
name: "metro",
|
|
202
|
-
|
|
321
|
+
name: "metro",
|
|
322
|
+
bundler: "metro",
|
|
323
|
+
platform: "ios",
|
|
324
|
+
engine: "hermes",
|
|
325
|
+
isDev: false,
|
|
326
|
+
isServer: false,
|
|
327
|
+
isReactServer: false,
|
|
328
|
+
baseUrl: "",
|
|
329
|
+
routerRoot: "app",
|
|
330
|
+
projectRoot: root,
|
|
331
|
+
isHMREnabled: true,
|
|
332
|
+
metroSourceType: "module",
|
|
333
|
+
supportsStaticESM: true,
|
|
203
334
|
};
|
|
204
335
|
const internal = Symbol("internal");
|
|
205
336
|
return {
|
|
206
337
|
name: "swiplet-metro",
|
|
207
338
|
setup(build) {
|
|
208
|
-
build.onResolve({ filter: /^@babel\/runtime\// }, async args => {
|
|
339
|
+
build.onResolve({ filter: /^@babel\/runtime\// }, async (args) => {
|
|
209
340
|
if (args.pluginData === internal) {
|
|
210
341
|
return undefined;
|
|
211
342
|
}
|
|
212
|
-
const options = {
|
|
213
|
-
|
|
214
|
-
|
|
343
|
+
const options = {
|
|
344
|
+
kind: args.kind,
|
|
345
|
+
importer: args.importer,
|
|
346
|
+
pluginData: internal,
|
|
347
|
+
};
|
|
348
|
+
const found = await build.resolve(args.path, {
|
|
349
|
+
...options,
|
|
350
|
+
resolveDir: args.resolveDir,
|
|
351
|
+
});
|
|
352
|
+
return found.errors.length === 0
|
|
353
|
+
? found
|
|
354
|
+
: build.resolve(args.path, { ...options, resolveDir: cliDirectory });
|
|
215
355
|
});
|
|
216
356
|
if (assets) {
|
|
217
|
-
build.onResolve(
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
357
|
+
build.onResolve(
|
|
358
|
+
{ filter: new RegExp(`\\.(${assetExtensions.join("|")})$`) },
|
|
359
|
+
async (args) => {
|
|
360
|
+
if (args.pluginData === internal) {
|
|
361
|
+
return undefined;
|
|
362
|
+
}
|
|
363
|
+
const extension = path.extname(args.path);
|
|
364
|
+
const stem = args.path.slice(0, -extension.length);
|
|
365
|
+
let first;
|
|
366
|
+
for (const scale of scaleSuffixes) {
|
|
367
|
+
for (const platform of platformSuffixes) {
|
|
368
|
+
const found = await build.resolve(
|
|
369
|
+
`${stem}${scale}${platform}${extension}`,
|
|
370
|
+
{
|
|
371
|
+
kind: args.kind,
|
|
372
|
+
importer: args.importer,
|
|
373
|
+
resolveDir: args.resolveDir,
|
|
374
|
+
pluginData: internal,
|
|
375
|
+
},
|
|
376
|
+
);
|
|
377
|
+
if (found.errors.length === 0) {
|
|
378
|
+
return {
|
|
379
|
+
path: found.path,
|
|
380
|
+
namespace: "swiplet-asset",
|
|
381
|
+
pluginData: assetVariants(found.path),
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
first ??= found;
|
|
229
385
|
}
|
|
230
|
-
first ??= found;
|
|
231
386
|
}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
build.onLoad({ filter: /.*/, namespace: "swiplet-asset" }, args => ({
|
|
387
|
+
return { errors: first.errors };
|
|
388
|
+
},
|
|
389
|
+
);
|
|
390
|
+
build.onLoad({ filter: /.*/, namespace: "swiplet-asset" }, (args) => ({
|
|
236
391
|
contents: assetModule(root, args.pluginData, assets),
|
|
237
392
|
loader: "js",
|
|
238
393
|
resolveDir: root,
|
|
239
394
|
}));
|
|
240
395
|
}
|
|
241
|
-
build.onLoad(
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
396
|
+
build.onLoad(
|
|
397
|
+
{ filter: /\.[cm]?[jt]sx?$/, namespace: "file" },
|
|
398
|
+
async (args) => {
|
|
399
|
+
const result = await transformAsync(
|
|
400
|
+
await fs.promises.readFile(args.path, "utf8"),
|
|
401
|
+
{
|
|
402
|
+
...babel,
|
|
403
|
+
filename: args.path,
|
|
404
|
+
caller: {
|
|
405
|
+
...caller,
|
|
406
|
+
isNodeModule: args.path.includes("node_modules"),
|
|
407
|
+
},
|
|
408
|
+
},
|
|
409
|
+
);
|
|
410
|
+
return result === null
|
|
411
|
+
? undefined
|
|
412
|
+
: {
|
|
413
|
+
contents: result.code,
|
|
414
|
+
loader: loaderOf(args.path),
|
|
415
|
+
resolveDir: path.dirname(args.path),
|
|
416
|
+
};
|
|
417
|
+
},
|
|
418
|
+
);
|
|
249
419
|
},
|
|
250
420
|
};
|
|
251
421
|
}
|
package/output.mjs
CHANGED
|
@@ -5,9 +5,16 @@ import { ServiceStatus, ServiceStatusSchema } from "./proto/swiplets_pb.js";
|
|
|
5
5
|
|
|
6
6
|
export class FalseResult extends Error {}
|
|
7
7
|
|
|
8
|
-
export const enumText = (schema, value, prefix) =>
|
|
8
|
+
export const enumText = (schema, value, prefix) =>
|
|
9
|
+
schema.value[value].name
|
|
10
|
+
.slice(prefix.length)
|
|
11
|
+
.toLowerCase()
|
|
12
|
+
.replaceAll("_", " ");
|
|
9
13
|
|
|
10
|
-
const levelName = level =>
|
|
14
|
+
const levelName = (level) =>
|
|
15
|
+
level === LogLevel.UNSPECIFIED
|
|
16
|
+
? "info"
|
|
17
|
+
: enumText(LogLevelSchema, level, "LOG_LEVEL_");
|
|
11
18
|
|
|
12
19
|
const pad = (value, width) => String(value).padStart(width, "0");
|
|
13
20
|
|
|
@@ -28,15 +35,28 @@ export function columns(rows) {
|
|
|
28
35
|
widths[index] = Math.max(widths[index] ?? 0, cell.length);
|
|
29
36
|
});
|
|
30
37
|
}
|
|
31
|
-
return rows
|
|
38
|
+
return rows
|
|
39
|
+
.map((row) =>
|
|
40
|
+
row
|
|
41
|
+
.map((cell, index) =>
|
|
42
|
+
index === row.length - 1 ? cell : cell.padEnd(widths[index] + 2),
|
|
43
|
+
)
|
|
44
|
+
.join("")
|
|
45
|
+
.trimEnd(),
|
|
46
|
+
)
|
|
47
|
+
.join("\n");
|
|
32
48
|
}
|
|
33
49
|
|
|
34
|
-
const frameText = frame => {
|
|
50
|
+
const frameText = (frame) => {
|
|
35
51
|
const position = `${frame.file}:${frame.line}:${frame.column}`;
|
|
36
52
|
return frame.function === "" ? position : `${frame.function} (${position})`;
|
|
37
53
|
};
|
|
38
54
|
|
|
39
|
-
export const failureText = failure =>
|
|
55
|
+
export const failureText = (failure) =>
|
|
56
|
+
[
|
|
57
|
+
`${failure.name}: ${failure.message}`,
|
|
58
|
+
...failure.stack.map((frame) => ` at ${frameText(frame)}`),
|
|
59
|
+
].join("\n");
|
|
40
60
|
|
|
41
61
|
export function printScriptError(failure) {
|
|
42
62
|
console.error(`error: ${failureText(failure)}`);
|
|
@@ -44,8 +64,13 @@ export function printScriptError(failure) {
|
|
|
44
64
|
}
|
|
45
65
|
|
|
46
66
|
export function printLog(entry, toStdout) {
|
|
47
|
-
const message =
|
|
48
|
-
|
|
67
|
+
const message =
|
|
68
|
+
entry.tag === "" ? entry.message : `${entry.tag}: ${entry.message}`;
|
|
69
|
+
(toStdout ? console.log : console.error)(
|
|
70
|
+
clockTime(entry.time),
|
|
71
|
+
levelName(entry.level).toUpperCase(),
|
|
72
|
+
message,
|
|
73
|
+
);
|
|
49
74
|
}
|
|
50
75
|
|
|
51
76
|
export function serviceText(id, state) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@swipt/cli",
|
|
3
|
-
"version": "0.1.0-nightly.
|
|
3
|
+
"version": "0.1.0-nightly.44",
|
|
4
4
|
"license": "GPL-3.0-or-later",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@babel/core": "^7.29.7",
|
|
23
|
+
"@babel/plugin-transform-block-scoping": "^7.29.12",
|
|
23
24
|
"@babel/runtime": "^7.29.10",
|
|
24
25
|
"@bufbuild/protobuf": "^2.16.0",
|
|
25
26
|
"@expo/env": "^2.5.3",
|
|
@@ -30,7 +31,7 @@
|
|
|
30
31
|
"react-native-worklets": "0.13.0"
|
|
31
32
|
},
|
|
32
33
|
"peerDependencies": {
|
|
33
|
-
"@swipt/api": "0.1.0-nightly.
|
|
34
|
+
"@swipt/api": "0.1.0-nightly.44"
|
|
34
35
|
},
|
|
35
36
|
"devDependencies": {
|
|
36
37
|
"@bufbuild/protoc-gen-es": "^2.16.0"
|