arri 0.31.0 → 0.32.1
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/dist/cli.cjs +143 -62
- package/dist/cli.mjs +142 -61
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.mjs +1 -1
- package/dist/shared/{arri.7b317e03.cjs → arri.7b5179bf.cjs} +20 -6
- package/dist/shared/{arri.e9a56e75.mjs → arri.bbe2aa44.mjs} +20 -6
- package/package.json +6 -5
package/dist/cli.cjs
CHANGED
|
@@ -7,18 +7,19 @@ const fs = require('node:fs');
|
|
|
7
7
|
const fs$1 = require('node:fs/promises');
|
|
8
8
|
const arriCodegenUtils = require('arri-codegen-utils');
|
|
9
9
|
const c12 = require('c12');
|
|
10
|
-
const consola = require('consola');
|
|
11
10
|
const esbuild = require('esbuild');
|
|
12
11
|
const esbuildPluginReplace = require('esbuild-plugin-replace');
|
|
13
12
|
const path = require('pathe');
|
|
14
13
|
const prettier = require('prettier');
|
|
15
|
-
const config = require('./shared/arri.
|
|
14
|
+
const config = require('./shared/arri.7b5179bf.cjs');
|
|
15
|
+
const consola = require('consola');
|
|
16
16
|
const globby = require('globby');
|
|
17
17
|
const scule = require('scule');
|
|
18
18
|
const ofetch = require('ofetch');
|
|
19
19
|
const listhen = require('@joshmossas/listhen');
|
|
20
20
|
const chokidar = require('chokidar');
|
|
21
21
|
const Degit = require('degit');
|
|
22
|
+
const enquirer = require('enquirer');
|
|
22
23
|
require('h3');
|
|
23
24
|
require('arri-validate');
|
|
24
25
|
require('h3-sse');
|
|
@@ -39,13 +40,14 @@ function _interopNamespaceCompat(e) {
|
|
|
39
40
|
|
|
40
41
|
const fs__default$1 = /*#__PURE__*/_interopDefaultCompat(fs);
|
|
41
42
|
const fs__default = /*#__PURE__*/_interopDefaultCompat(fs$1);
|
|
42
|
-
const consola__default = /*#__PURE__*/_interopDefaultCompat(consola);
|
|
43
43
|
const esbuild__namespace = /*#__PURE__*/_interopNamespaceCompat(esbuild);
|
|
44
44
|
const path__default = /*#__PURE__*/_interopDefaultCompat(path);
|
|
45
45
|
const prettier__default = /*#__PURE__*/_interopDefaultCompat(prettier);
|
|
46
46
|
const chokidar__default = /*#__PURE__*/_interopDefaultCompat(chokidar);
|
|
47
47
|
const Degit__default = /*#__PURE__*/_interopDefaultCompat(Degit);
|
|
48
|
+
const enquirer__default = /*#__PURE__*/_interopDefaultCompat(enquirer);
|
|
48
49
|
|
|
50
|
+
const logger = consola.createConsola().withTag("arri");
|
|
49
51
|
const GEN_APP_FILE = "__arri_app.js";
|
|
50
52
|
const GEN_SERVER_ENTRY_FILE = "__arri_server.js";
|
|
51
53
|
const OUT_APP_FILE = "app.mjs";
|
|
@@ -205,9 +207,13 @@ const build = citty.defineCommand({
|
|
|
205
207
|
await startBuild(config$1, args.skipCodegen);
|
|
206
208
|
}
|
|
207
209
|
});
|
|
208
|
-
const logger$2 = consola.createConsola().withTag("arri");
|
|
209
210
|
async function startBuild(config, skipCodeGen = false) {
|
|
210
|
-
logger
|
|
211
|
+
logger.log("Bundling server....");
|
|
212
|
+
const appEntry = path__default.resolve(config.rootDir, config.srcDir, config.entry);
|
|
213
|
+
if (!fs.existsSync(path__default.resolve(config.rootDir, config.srcDir, config.entry))) {
|
|
214
|
+
logger.error(`Unabled to find entry at ${appEntry}`);
|
|
215
|
+
process.exit(1);
|
|
216
|
+
}
|
|
211
217
|
await setupWorkingDir(config);
|
|
212
218
|
await Promise.all([
|
|
213
219
|
createAppWithRoutesModule(config),
|
|
@@ -216,11 +222,11 @@ async function startBuild(config, skipCodeGen = false) {
|
|
|
216
222
|
transpileFiles(config)
|
|
217
223
|
]);
|
|
218
224
|
await bundleAppEntry(config);
|
|
219
|
-
logger
|
|
220
|
-
const clientCount = config.
|
|
225
|
+
logger.log("Finished bundling");
|
|
226
|
+
const clientCount = config.generators.length;
|
|
221
227
|
const codegenModule = path__default.resolve(config.rootDir, ".output", OUT_CODEGEN);
|
|
222
228
|
if (!skipCodeGen) {
|
|
223
|
-
logger
|
|
229
|
+
logger.log("Generating Arri app definition (__definition.json)");
|
|
224
230
|
node_child_process.execSync(`node ${codegenModule}`, { env: process.env });
|
|
225
231
|
const defJson = path__default.resolve(
|
|
226
232
|
config.rootDir,
|
|
@@ -229,22 +235,22 @@ async function startBuild(config, skipCodeGen = false) {
|
|
|
229
235
|
);
|
|
230
236
|
const def = JSON.parse(fs.readFileSync(defJson, { encoding: "utf-8" }));
|
|
231
237
|
if (arriCodegenUtils.isAppDefinition(def) && clientCount > 0) {
|
|
232
|
-
logger
|
|
238
|
+
logger.log(`Generating ${clientCount} clients`);
|
|
233
239
|
await Promise.all(
|
|
234
|
-
config.
|
|
240
|
+
config.generators.map((plugin) => plugin.generator(def))
|
|
235
241
|
);
|
|
236
|
-
logger
|
|
242
|
+
logger.log(`${clientCount} clients generated`);
|
|
237
243
|
} else {
|
|
238
|
-
logger
|
|
244
|
+
logger.warn(
|
|
239
245
|
"No client generators specified. Skipping client codegen."
|
|
240
246
|
);
|
|
241
247
|
}
|
|
242
248
|
} else {
|
|
243
|
-
logger
|
|
249
|
+
logger.log("Skipping codegen");
|
|
244
250
|
}
|
|
245
|
-
logger
|
|
251
|
+
logger.log("Cleaning up files");
|
|
246
252
|
await fs__default.rm(codegenModule);
|
|
247
|
-
logger
|
|
253
|
+
logger.success(
|
|
248
254
|
`Build finished! You can start your server by running "node .output/${OUT_SERVER_ENTRY}"`
|
|
249
255
|
);
|
|
250
256
|
}
|
|
@@ -403,13 +409,17 @@ const codegen = citty.defineCommand({
|
|
|
403
409
|
}
|
|
404
410
|
const configPath = path__default.resolve(args.config);
|
|
405
411
|
const { config: config$1 } = await c12.loadConfig({ configFile: configPath });
|
|
406
|
-
if (!config.
|
|
412
|
+
if (!config.isArriConfig(config$1)) {
|
|
407
413
|
throw new Error(`Invalid arri config at ${args.config}`);
|
|
408
414
|
}
|
|
409
|
-
|
|
415
|
+
if (!config$1.generators?.length) {
|
|
416
|
+
logger.warn(`No generators specified in ${args.config}`);
|
|
417
|
+
process.exit(1);
|
|
418
|
+
}
|
|
419
|
+
logger.info(`Generating ${config$1.generators?.length} client(s)`);
|
|
410
420
|
await Promise.allSettled(
|
|
411
421
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
412
|
-
config$1.
|
|
422
|
+
config$1.generators.map(
|
|
413
423
|
(gen) => gen.generator(
|
|
414
424
|
def ?? {
|
|
415
425
|
arriSchemaVersion: "0.0.4",
|
|
@@ -419,10 +429,10 @@ const codegen = citty.defineCommand({
|
|
|
419
429
|
)
|
|
420
430
|
)
|
|
421
431
|
);
|
|
432
|
+
process.exit(0);
|
|
422
433
|
}
|
|
423
434
|
});
|
|
424
435
|
|
|
425
|
-
const logger$1 = consola.createConsola().withTag("arri");
|
|
426
436
|
const dev = citty.defineCommand({
|
|
427
437
|
meta: {
|
|
428
438
|
name: "dev",
|
|
@@ -444,13 +454,21 @@ const dev = citty.defineCommand({
|
|
|
444
454
|
if (!config.isResolvedArriConfig(config$1)) {
|
|
445
455
|
throw new Error("Unable to find config");
|
|
446
456
|
}
|
|
457
|
+
const appEntry = path__default.resolve(
|
|
458
|
+
config$1.rootDir,
|
|
459
|
+
config$1.srcDir,
|
|
460
|
+
config$1.entry
|
|
461
|
+
);
|
|
462
|
+
if (!fs.existsSync(appEntry)) {
|
|
463
|
+
throw new Error(`Unable to find entry at ${appEntry}`);
|
|
464
|
+
}
|
|
447
465
|
await startDevServer(config$1);
|
|
448
466
|
}
|
|
449
467
|
});
|
|
450
468
|
const startListener = (config, showQr = false) => listhen.listenAndWatch(path__default.resolve(config.rootDir, ".output", OUT_SERVER_ENTRY), {
|
|
451
469
|
public: true,
|
|
452
470
|
port: config.port,
|
|
453
|
-
logger
|
|
471
|
+
logger,
|
|
454
472
|
qr: showQr,
|
|
455
473
|
https: config.https,
|
|
456
474
|
http2: config.http2
|
|
@@ -525,17 +543,17 @@ async function startDevServer(config) {
|
|
|
525
543
|
await createAppWithRoutesModule(config);
|
|
526
544
|
let bundleCreated = false;
|
|
527
545
|
try {
|
|
528
|
-
logger
|
|
546
|
+
logger.log(
|
|
529
547
|
"Change detected. Bundling files and restarting server...."
|
|
530
548
|
);
|
|
531
549
|
await transpileFiles(config);
|
|
532
550
|
await bundleFiles.rebuild();
|
|
533
551
|
bundleCreated = true;
|
|
534
552
|
} catch (err) {
|
|
535
|
-
logger
|
|
553
|
+
logger.error("ERROR", err);
|
|
536
554
|
bundleCreated = false;
|
|
537
555
|
}
|
|
538
|
-
if (bundleCreated && config.
|
|
556
|
+
if (bundleCreated && config.generators.length) {
|
|
539
557
|
setTimeout(async () => {
|
|
540
558
|
await generateClients(config);
|
|
541
559
|
bundleCreated = false;
|
|
@@ -559,14 +577,14 @@ async function generateClients(config$1) {
|
|
|
559
577
|
if (!arriCodegenUtils.isAppDefinition(result)) {
|
|
560
578
|
return;
|
|
561
579
|
}
|
|
562
|
-
logger
|
|
563
|
-
const clientCount = config$1.
|
|
580
|
+
logger.log(`Generating client code...`);
|
|
581
|
+
const clientCount = config$1.generators.length;
|
|
564
582
|
await Promise.all(
|
|
565
|
-
config$1.
|
|
566
|
-
(generator) => generator.generator(result)
|
|
583
|
+
config$1.generators.map(
|
|
584
|
+
(generator) => generator.generator(result, true)
|
|
567
585
|
)
|
|
568
586
|
);
|
|
569
|
-
logger
|
|
587
|
+
logger.success(
|
|
570
588
|
`Generated ${clientCount} client${clientCount === 1 ? "" : "s"}`
|
|
571
589
|
);
|
|
572
590
|
} catch (err) {
|
|
@@ -587,7 +605,6 @@ export default app.h3App;`;
|
|
|
587
605
|
);
|
|
588
606
|
}
|
|
589
607
|
|
|
590
|
-
const logger = consola.createConsola();
|
|
591
608
|
const init = citty.defineCommand({
|
|
592
609
|
meta: {
|
|
593
610
|
name: "Init",
|
|
@@ -604,9 +621,44 @@ const init = citty.defineCommand({
|
|
|
604
621
|
default: false,
|
|
605
622
|
alias: "f",
|
|
606
623
|
description: "Force created a project when if a directory already exists"
|
|
624
|
+
},
|
|
625
|
+
type: {
|
|
626
|
+
type: "string",
|
|
627
|
+
description: `"app" | "plugin"`
|
|
607
628
|
}
|
|
608
629
|
},
|
|
609
630
|
async run(context) {
|
|
631
|
+
let type;
|
|
632
|
+
switch (context.args.type?.toLowerCase()) {
|
|
633
|
+
case "app":
|
|
634
|
+
type = "app";
|
|
635
|
+
break;
|
|
636
|
+
case "plugin":
|
|
637
|
+
type = "plugin";
|
|
638
|
+
break;
|
|
639
|
+
}
|
|
640
|
+
if (!type) {
|
|
641
|
+
const { projectType } = await enquirer__default.prompt([
|
|
642
|
+
{
|
|
643
|
+
type: "select",
|
|
644
|
+
name: "projectType",
|
|
645
|
+
message: "What kind of project do you want to initialize?",
|
|
646
|
+
choices: ["application", "generator plugin"]
|
|
647
|
+
}
|
|
648
|
+
]);
|
|
649
|
+
switch (projectType) {
|
|
650
|
+
case "application":
|
|
651
|
+
type = "app";
|
|
652
|
+
break;
|
|
653
|
+
case "generator plugin":
|
|
654
|
+
type = "plugin";
|
|
655
|
+
break;
|
|
656
|
+
default:
|
|
657
|
+
throw new Error(
|
|
658
|
+
`Unknown project type "${projectType}"`
|
|
659
|
+
);
|
|
660
|
+
}
|
|
661
|
+
}
|
|
610
662
|
const dir = path__default.resolve(context.args.dir);
|
|
611
663
|
if (!fs__default$1.existsSync(dir)) {
|
|
612
664
|
fs__default$1.mkdirSync(dir);
|
|
@@ -618,42 +670,71 @@ const init = citty.defineCommand({
|
|
|
618
670
|
);
|
|
619
671
|
process.exit(1);
|
|
620
672
|
}
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
packageJson.description = "An RPC server created with Arri RPC";
|
|
633
|
-
packageJson.private = true;
|
|
634
|
-
delete packageJson.license;
|
|
635
|
-
delete packageJson.main;
|
|
636
|
-
delete packageJson.author;
|
|
637
|
-
delete packageJson.tags;
|
|
638
|
-
fs.writeFileSync(
|
|
639
|
-
path__default.resolve(dir, "package.json"),
|
|
640
|
-
await prettier__default.format(JSON.stringify(packageJson), {
|
|
641
|
-
parser: "json",
|
|
642
|
-
tabWidth: 4,
|
|
643
|
-
semi: true,
|
|
644
|
-
endOfLine: "lf",
|
|
645
|
-
trailingComma: "all"
|
|
646
|
-
})
|
|
647
|
-
);
|
|
648
|
-
consola__default.log(
|
|
649
|
-
`Project initialized in ${context.args.dir}. To get started:
|
|
650
|
-
cd ${context.args.dir}
|
|
651
|
-
npm install
|
|
652
|
-
npm run dev`
|
|
653
|
-
);
|
|
673
|
+
switch (type) {
|
|
674
|
+
case "app":
|
|
675
|
+
await initApp(context.args.dir, context.args.force);
|
|
676
|
+
break;
|
|
677
|
+
case "plugin":
|
|
678
|
+
await initPlugin(context.args.dir, context.args.force);
|
|
679
|
+
break;
|
|
680
|
+
default:
|
|
681
|
+
logger.error(`Unknown app type: '${type}'"`);
|
|
682
|
+
break;
|
|
683
|
+
}
|
|
654
684
|
process.exit(0);
|
|
655
685
|
}
|
|
656
686
|
});
|
|
687
|
+
async function initApp(dir, force) {
|
|
688
|
+
const degit = Degit__default("modiimedia/arri-starters/app-starter-ts", {
|
|
689
|
+
force
|
|
690
|
+
});
|
|
691
|
+
await degit.clone(dir);
|
|
692
|
+
fs.rmSync(path__default.resolve(dir, "pnpm-lock.yaml"));
|
|
693
|
+
const packageJson = JSON.parse(
|
|
694
|
+
fs.readFileSync(path__default.resolve(dir, "package.json"), {
|
|
695
|
+
encoding: "utf-8"
|
|
696
|
+
})
|
|
697
|
+
);
|
|
698
|
+
packageJson.name = scule.kebabCase(dir);
|
|
699
|
+
packageJson.description = "An RPC server created with Arri RPC";
|
|
700
|
+
packageJson.private = true;
|
|
701
|
+
delete packageJson.license;
|
|
702
|
+
delete packageJson.main;
|
|
703
|
+
delete packageJson.author;
|
|
704
|
+
delete packageJson.tags;
|
|
705
|
+
fs.writeFileSync(
|
|
706
|
+
path__default.resolve(dir, "package.json"),
|
|
707
|
+
await prettier__default.format(JSON.stringify(packageJson), {
|
|
708
|
+
parser: "json",
|
|
709
|
+
tabWidth: 4,
|
|
710
|
+
semi: true,
|
|
711
|
+
endOfLine: "lf",
|
|
712
|
+
trailingComma: "all"
|
|
713
|
+
})
|
|
714
|
+
);
|
|
715
|
+
logger.success(`Project initialized in ${dir}!`);
|
|
716
|
+
logger.info(`To get started:
|
|
717
|
+
- cd ${dir}
|
|
718
|
+
- pnpm install
|
|
719
|
+
- pnpm run dev`);
|
|
720
|
+
}
|
|
721
|
+
async function initPlugin(dir, force) {
|
|
722
|
+
const name = scule.kebabCase(dir);
|
|
723
|
+
const degit = Degit__default("modiimedia/arri-starters/generator-starter", {
|
|
724
|
+
force
|
|
725
|
+
});
|
|
726
|
+
await degit.clone(dir);
|
|
727
|
+
fs.rmSync(path__default.resolve(dir, "pnpm-lock.yaml"));
|
|
728
|
+
let packageJson = fs.readFileSync(path__default.resolve(dir, "package.json"), {
|
|
729
|
+
encoding: "utf8"
|
|
730
|
+
});
|
|
731
|
+
packageJson = packageJson.replace(`"arri-generator-name"`, `"${name}"`);
|
|
732
|
+
fs.writeFileSync(path__default.resolve(dir, "package.json"), packageJson);
|
|
733
|
+
logger.success(`Project initialized in ${dir}!`);
|
|
734
|
+
logger.info(`To get started:
|
|
735
|
+
- cd ${dir}
|
|
736
|
+
- pnpm install`);
|
|
737
|
+
}
|
|
657
738
|
|
|
658
739
|
const main = citty.defineCommand({
|
|
659
740
|
subCommands: {
|
package/dist/cli.mjs
CHANGED
|
@@ -5,23 +5,25 @@ import fs$1, { existsSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
|
|
|
5
5
|
import fs from 'node:fs/promises';
|
|
6
6
|
import { removeDisallowedChars, isAppDefinition } from 'arri-codegen-utils';
|
|
7
7
|
import { loadConfig } from 'c12';
|
|
8
|
-
import consola, { createConsola } from 'consola';
|
|
9
8
|
import * as esbuild from 'esbuild';
|
|
10
9
|
import { build as build$1 } from 'esbuild';
|
|
11
10
|
import { replace } from 'esbuild-plugin-replace';
|
|
12
11
|
import path from 'pathe';
|
|
13
12
|
import prettier from 'prettier';
|
|
14
|
-
import { o as defaultConfig, n as isResolvedArriConfig, a as DEV_DEFINITION_ENDPOINT } from './shared/arri.
|
|
13
|
+
import { o as defaultConfig, m as isArriConfig, n as isResolvedArriConfig, a as DEV_DEFINITION_ENDPOINT } from './shared/arri.bbe2aa44.mjs';
|
|
14
|
+
import { createConsola } from 'consola';
|
|
15
15
|
import { globby } from 'globby';
|
|
16
16
|
import { camelCase, kebabCase } from 'scule';
|
|
17
17
|
import { ofetch } from 'ofetch';
|
|
18
18
|
import { listenAndWatch } from '@joshmossas/listhen';
|
|
19
19
|
import chokidar from 'chokidar';
|
|
20
20
|
import Degit from 'degit';
|
|
21
|
+
import enquirer from 'enquirer';
|
|
21
22
|
import 'h3';
|
|
22
23
|
import 'arri-validate';
|
|
23
24
|
import 'h3-sse';
|
|
24
25
|
|
|
26
|
+
const logger = createConsola().withTag("arri");
|
|
25
27
|
const GEN_APP_FILE = "__arri_app.js";
|
|
26
28
|
const GEN_SERVER_ENTRY_FILE = "__arri_server.js";
|
|
27
29
|
const OUT_APP_FILE = "app.mjs";
|
|
@@ -181,9 +183,13 @@ const build = defineCommand({
|
|
|
181
183
|
await startBuild(config, args.skipCodegen);
|
|
182
184
|
}
|
|
183
185
|
});
|
|
184
|
-
const logger$2 = createConsola().withTag("arri");
|
|
185
186
|
async function startBuild(config, skipCodeGen = false) {
|
|
186
|
-
logger
|
|
187
|
+
logger.log("Bundling server....");
|
|
188
|
+
const appEntry = path.resolve(config.rootDir, config.srcDir, config.entry);
|
|
189
|
+
if (!existsSync(path.resolve(config.rootDir, config.srcDir, config.entry))) {
|
|
190
|
+
logger.error(`Unabled to find entry at ${appEntry}`);
|
|
191
|
+
process.exit(1);
|
|
192
|
+
}
|
|
187
193
|
await setupWorkingDir(config);
|
|
188
194
|
await Promise.all([
|
|
189
195
|
createAppWithRoutesModule(config),
|
|
@@ -192,11 +198,11 @@ async function startBuild(config, skipCodeGen = false) {
|
|
|
192
198
|
transpileFiles(config)
|
|
193
199
|
]);
|
|
194
200
|
await bundleAppEntry(config);
|
|
195
|
-
logger
|
|
196
|
-
const clientCount = config.
|
|
201
|
+
logger.log("Finished bundling");
|
|
202
|
+
const clientCount = config.generators.length;
|
|
197
203
|
const codegenModule = path.resolve(config.rootDir, ".output", OUT_CODEGEN);
|
|
198
204
|
if (!skipCodeGen) {
|
|
199
|
-
logger
|
|
205
|
+
logger.log("Generating Arri app definition (__definition.json)");
|
|
200
206
|
execSync(`node ${codegenModule}`, { env: process.env });
|
|
201
207
|
const defJson = path.resolve(
|
|
202
208
|
config.rootDir,
|
|
@@ -205,22 +211,22 @@ async function startBuild(config, skipCodeGen = false) {
|
|
|
205
211
|
);
|
|
206
212
|
const def = JSON.parse(readFileSync(defJson, { encoding: "utf-8" }));
|
|
207
213
|
if (isAppDefinition(def) && clientCount > 0) {
|
|
208
|
-
logger
|
|
214
|
+
logger.log(`Generating ${clientCount} clients`);
|
|
209
215
|
await Promise.all(
|
|
210
|
-
config.
|
|
216
|
+
config.generators.map((plugin) => plugin.generator(def))
|
|
211
217
|
);
|
|
212
|
-
logger
|
|
218
|
+
logger.log(`${clientCount} clients generated`);
|
|
213
219
|
} else {
|
|
214
|
-
logger
|
|
220
|
+
logger.warn(
|
|
215
221
|
"No client generators specified. Skipping client codegen."
|
|
216
222
|
);
|
|
217
223
|
}
|
|
218
224
|
} else {
|
|
219
|
-
logger
|
|
225
|
+
logger.log("Skipping codegen");
|
|
220
226
|
}
|
|
221
|
-
logger
|
|
227
|
+
logger.log("Cleaning up files");
|
|
222
228
|
await fs.rm(codegenModule);
|
|
223
|
-
logger
|
|
229
|
+
logger.success(
|
|
224
230
|
`Build finished! You can start your server by running "node .output/${OUT_SERVER_ENTRY}"`
|
|
225
231
|
);
|
|
226
232
|
}
|
|
@@ -379,13 +385,17 @@ const codegen = defineCommand({
|
|
|
379
385
|
}
|
|
380
386
|
const configPath = path.resolve(args.config);
|
|
381
387
|
const { config } = await loadConfig({ configFile: configPath });
|
|
382
|
-
if (!
|
|
388
|
+
if (!isArriConfig(config)) {
|
|
383
389
|
throw new Error(`Invalid arri config at ${args.config}`);
|
|
384
390
|
}
|
|
385
|
-
|
|
391
|
+
if (!config.generators?.length) {
|
|
392
|
+
logger.warn(`No generators specified in ${args.config}`);
|
|
393
|
+
process.exit(1);
|
|
394
|
+
}
|
|
395
|
+
logger.info(`Generating ${config.generators?.length} client(s)`);
|
|
386
396
|
await Promise.allSettled(
|
|
387
397
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
388
|
-
config.
|
|
398
|
+
config.generators.map(
|
|
389
399
|
(gen) => gen.generator(
|
|
390
400
|
def ?? {
|
|
391
401
|
arriSchemaVersion: "0.0.4",
|
|
@@ -395,10 +405,10 @@ const codegen = defineCommand({
|
|
|
395
405
|
)
|
|
396
406
|
)
|
|
397
407
|
);
|
|
408
|
+
process.exit(0);
|
|
398
409
|
}
|
|
399
410
|
});
|
|
400
411
|
|
|
401
|
-
const logger$1 = createConsola().withTag("arri");
|
|
402
412
|
const dev = defineCommand({
|
|
403
413
|
meta: {
|
|
404
414
|
name: "dev",
|
|
@@ -420,13 +430,21 @@ const dev = defineCommand({
|
|
|
420
430
|
if (!isResolvedArriConfig(config)) {
|
|
421
431
|
throw new Error("Unable to find config");
|
|
422
432
|
}
|
|
433
|
+
const appEntry = path.resolve(
|
|
434
|
+
config.rootDir,
|
|
435
|
+
config.srcDir,
|
|
436
|
+
config.entry
|
|
437
|
+
);
|
|
438
|
+
if (!existsSync(appEntry)) {
|
|
439
|
+
throw new Error(`Unable to find entry at ${appEntry}`);
|
|
440
|
+
}
|
|
423
441
|
await startDevServer(config);
|
|
424
442
|
}
|
|
425
443
|
});
|
|
426
444
|
const startListener = (config, showQr = false) => listenAndWatch(path.resolve(config.rootDir, ".output", OUT_SERVER_ENTRY), {
|
|
427
445
|
public: true,
|
|
428
446
|
port: config.port,
|
|
429
|
-
logger
|
|
447
|
+
logger,
|
|
430
448
|
qr: showQr,
|
|
431
449
|
https: config.https,
|
|
432
450
|
http2: config.http2
|
|
@@ -501,17 +519,17 @@ async function startDevServer(config) {
|
|
|
501
519
|
await createAppWithRoutesModule(config);
|
|
502
520
|
let bundleCreated = false;
|
|
503
521
|
try {
|
|
504
|
-
logger
|
|
522
|
+
logger.log(
|
|
505
523
|
"Change detected. Bundling files and restarting server...."
|
|
506
524
|
);
|
|
507
525
|
await transpileFiles(config);
|
|
508
526
|
await bundleFiles.rebuild();
|
|
509
527
|
bundleCreated = true;
|
|
510
528
|
} catch (err) {
|
|
511
|
-
logger
|
|
529
|
+
logger.error("ERROR", err);
|
|
512
530
|
bundleCreated = false;
|
|
513
531
|
}
|
|
514
|
-
if (bundleCreated && config.
|
|
532
|
+
if (bundleCreated && config.generators.length) {
|
|
515
533
|
setTimeout(async () => {
|
|
516
534
|
await generateClients(config);
|
|
517
535
|
bundleCreated = false;
|
|
@@ -535,14 +553,14 @@ async function generateClients(config) {
|
|
|
535
553
|
if (!isAppDefinition(result)) {
|
|
536
554
|
return;
|
|
537
555
|
}
|
|
538
|
-
logger
|
|
539
|
-
const clientCount = config.
|
|
556
|
+
logger.log(`Generating client code...`);
|
|
557
|
+
const clientCount = config.generators.length;
|
|
540
558
|
await Promise.all(
|
|
541
|
-
config.
|
|
542
|
-
(generator) => generator.generator(result)
|
|
559
|
+
config.generators.map(
|
|
560
|
+
(generator) => generator.generator(result, true)
|
|
543
561
|
)
|
|
544
562
|
);
|
|
545
|
-
logger
|
|
563
|
+
logger.success(
|
|
546
564
|
`Generated ${clientCount} client${clientCount === 1 ? "" : "s"}`
|
|
547
565
|
);
|
|
548
566
|
} catch (err) {
|
|
@@ -563,7 +581,6 @@ export default app.h3App;`;
|
|
|
563
581
|
);
|
|
564
582
|
}
|
|
565
583
|
|
|
566
|
-
const logger = createConsola();
|
|
567
584
|
const init = defineCommand({
|
|
568
585
|
meta: {
|
|
569
586
|
name: "Init",
|
|
@@ -580,9 +597,44 @@ const init = defineCommand({
|
|
|
580
597
|
default: false,
|
|
581
598
|
alias: "f",
|
|
582
599
|
description: "Force created a project when if a directory already exists"
|
|
600
|
+
},
|
|
601
|
+
type: {
|
|
602
|
+
type: "string",
|
|
603
|
+
description: `"app" | "plugin"`
|
|
583
604
|
}
|
|
584
605
|
},
|
|
585
606
|
async run(context) {
|
|
607
|
+
let type;
|
|
608
|
+
switch (context.args.type?.toLowerCase()) {
|
|
609
|
+
case "app":
|
|
610
|
+
type = "app";
|
|
611
|
+
break;
|
|
612
|
+
case "plugin":
|
|
613
|
+
type = "plugin";
|
|
614
|
+
break;
|
|
615
|
+
}
|
|
616
|
+
if (!type) {
|
|
617
|
+
const { projectType } = await enquirer.prompt([
|
|
618
|
+
{
|
|
619
|
+
type: "select",
|
|
620
|
+
name: "projectType",
|
|
621
|
+
message: "What kind of project do you want to initialize?",
|
|
622
|
+
choices: ["application", "generator plugin"]
|
|
623
|
+
}
|
|
624
|
+
]);
|
|
625
|
+
switch (projectType) {
|
|
626
|
+
case "application":
|
|
627
|
+
type = "app";
|
|
628
|
+
break;
|
|
629
|
+
case "generator plugin":
|
|
630
|
+
type = "plugin";
|
|
631
|
+
break;
|
|
632
|
+
default:
|
|
633
|
+
throw new Error(
|
|
634
|
+
`Unknown project type "${projectType}"`
|
|
635
|
+
);
|
|
636
|
+
}
|
|
637
|
+
}
|
|
586
638
|
const dir = path.resolve(context.args.dir);
|
|
587
639
|
if (!fs$1.existsSync(dir)) {
|
|
588
640
|
fs$1.mkdirSync(dir);
|
|
@@ -594,42 +646,71 @@ const init = defineCommand({
|
|
|
594
646
|
);
|
|
595
647
|
process.exit(1);
|
|
596
648
|
}
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
packageJson.description = "An RPC server created with Arri RPC";
|
|
609
|
-
packageJson.private = true;
|
|
610
|
-
delete packageJson.license;
|
|
611
|
-
delete packageJson.main;
|
|
612
|
-
delete packageJson.author;
|
|
613
|
-
delete packageJson.tags;
|
|
614
|
-
writeFileSync(
|
|
615
|
-
path.resolve(dir, "package.json"),
|
|
616
|
-
await prettier.format(JSON.stringify(packageJson), {
|
|
617
|
-
parser: "json",
|
|
618
|
-
tabWidth: 4,
|
|
619
|
-
semi: true,
|
|
620
|
-
endOfLine: "lf",
|
|
621
|
-
trailingComma: "all"
|
|
622
|
-
})
|
|
623
|
-
);
|
|
624
|
-
consola.log(
|
|
625
|
-
`Project initialized in ${context.args.dir}. To get started:
|
|
626
|
-
cd ${context.args.dir}
|
|
627
|
-
npm install
|
|
628
|
-
npm run dev`
|
|
629
|
-
);
|
|
649
|
+
switch (type) {
|
|
650
|
+
case "app":
|
|
651
|
+
await initApp(context.args.dir, context.args.force);
|
|
652
|
+
break;
|
|
653
|
+
case "plugin":
|
|
654
|
+
await initPlugin(context.args.dir, context.args.force);
|
|
655
|
+
break;
|
|
656
|
+
default:
|
|
657
|
+
logger.error(`Unknown app type: '${type}'"`);
|
|
658
|
+
break;
|
|
659
|
+
}
|
|
630
660
|
process.exit(0);
|
|
631
661
|
}
|
|
632
662
|
});
|
|
663
|
+
async function initApp(dir, force) {
|
|
664
|
+
const degit = Degit("modiimedia/arri-starters/app-starter-ts", {
|
|
665
|
+
force
|
|
666
|
+
});
|
|
667
|
+
await degit.clone(dir);
|
|
668
|
+
rmSync(path.resolve(dir, "pnpm-lock.yaml"));
|
|
669
|
+
const packageJson = JSON.parse(
|
|
670
|
+
readFileSync(path.resolve(dir, "package.json"), {
|
|
671
|
+
encoding: "utf-8"
|
|
672
|
+
})
|
|
673
|
+
);
|
|
674
|
+
packageJson.name = kebabCase(dir);
|
|
675
|
+
packageJson.description = "An RPC server created with Arri RPC";
|
|
676
|
+
packageJson.private = true;
|
|
677
|
+
delete packageJson.license;
|
|
678
|
+
delete packageJson.main;
|
|
679
|
+
delete packageJson.author;
|
|
680
|
+
delete packageJson.tags;
|
|
681
|
+
writeFileSync(
|
|
682
|
+
path.resolve(dir, "package.json"),
|
|
683
|
+
await prettier.format(JSON.stringify(packageJson), {
|
|
684
|
+
parser: "json",
|
|
685
|
+
tabWidth: 4,
|
|
686
|
+
semi: true,
|
|
687
|
+
endOfLine: "lf",
|
|
688
|
+
trailingComma: "all"
|
|
689
|
+
})
|
|
690
|
+
);
|
|
691
|
+
logger.success(`Project initialized in ${dir}!`);
|
|
692
|
+
logger.info(`To get started:
|
|
693
|
+
- cd ${dir}
|
|
694
|
+
- pnpm install
|
|
695
|
+
- pnpm run dev`);
|
|
696
|
+
}
|
|
697
|
+
async function initPlugin(dir, force) {
|
|
698
|
+
const name = kebabCase(dir);
|
|
699
|
+
const degit = Degit("modiimedia/arri-starters/generator-starter", {
|
|
700
|
+
force
|
|
701
|
+
});
|
|
702
|
+
await degit.clone(dir);
|
|
703
|
+
rmSync(path.resolve(dir, "pnpm-lock.yaml"));
|
|
704
|
+
let packageJson = readFileSync(path.resolve(dir, "package.json"), {
|
|
705
|
+
encoding: "utf8"
|
|
706
|
+
});
|
|
707
|
+
packageJson = packageJson.replace(`"arri-generator-name"`, `"${name}"`);
|
|
708
|
+
writeFileSync(path.resolve(dir, "package.json"), packageJson);
|
|
709
|
+
logger.success(`Project initialized in ${dir}!`);
|
|
710
|
+
logger.info(`To get started:
|
|
711
|
+
- cd ${dir}
|
|
712
|
+
- pnpm install`);
|
|
713
|
+
}
|
|
633
714
|
|
|
634
715
|
const main = defineCommand({
|
|
635
716
|
subCommands: {
|
package/dist/index.cjs
CHANGED
package/dist/index.d.cts
CHANGED
|
@@ -212,8 +212,8 @@ interface ArriOptions {
|
|
|
212
212
|
}
|
|
213
213
|
|
|
214
214
|
interface ArriConfig {
|
|
215
|
-
port
|
|
216
|
-
entry
|
|
215
|
+
port?: number;
|
|
216
|
+
entry?: string;
|
|
217
217
|
serverEntry?: string;
|
|
218
218
|
rootDir?: string;
|
|
219
219
|
srcDir?: string;
|
|
@@ -222,7 +222,7 @@ interface ArriConfig {
|
|
|
222
222
|
* this defaults to ["***\/*\*.rpc.ts"]
|
|
223
223
|
*/
|
|
224
224
|
procedureGlobPatterns?: string[];
|
|
225
|
-
|
|
225
|
+
generators?: Array<ClientGenerator<any>>;
|
|
226
226
|
buildDir?: string;
|
|
227
227
|
esbuild?: Omit<BuildOptions, "outfile" | "outdir" | "entryNames" | "entryPoints">;
|
|
228
228
|
https?: {
|
package/dist/index.d.mts
CHANGED
|
@@ -212,8 +212,8 @@ interface ArriOptions {
|
|
|
212
212
|
}
|
|
213
213
|
|
|
214
214
|
interface ArriConfig {
|
|
215
|
-
port
|
|
216
|
-
entry
|
|
215
|
+
port?: number;
|
|
216
|
+
entry?: string;
|
|
217
217
|
serverEntry?: string;
|
|
218
218
|
rootDir?: string;
|
|
219
219
|
srcDir?: string;
|
|
@@ -222,7 +222,7 @@ interface ArriConfig {
|
|
|
222
222
|
* this defaults to ["***\/*\*.rpc.ts"]
|
|
223
223
|
*/
|
|
224
224
|
procedureGlobPatterns?: string[];
|
|
225
|
-
|
|
225
|
+
generators?: Array<ClientGenerator<any>>;
|
|
226
226
|
buildDir?: string;
|
|
227
227
|
esbuild?: Omit<BuildOptions, "outfile" | "outdir" | "entryNames" | "entryPoints">;
|
|
228
228
|
https?: {
|
package/dist/index.d.ts
CHANGED
|
@@ -212,8 +212,8 @@ interface ArriOptions {
|
|
|
212
212
|
}
|
|
213
213
|
|
|
214
214
|
interface ArriConfig {
|
|
215
|
-
port
|
|
216
|
-
entry
|
|
215
|
+
port?: number;
|
|
216
|
+
entry?: string;
|
|
217
217
|
serverEntry?: string;
|
|
218
218
|
rootDir?: string;
|
|
219
219
|
srcDir?: string;
|
|
@@ -222,7 +222,7 @@ interface ArriConfig {
|
|
|
222
222
|
* this defaults to ["***\/*\*.rpc.ts"]
|
|
223
223
|
*/
|
|
224
224
|
procedureGlobPatterns?: string[];
|
|
225
|
-
|
|
225
|
+
generators?: Array<ClientGenerator<any>>;
|
|
226
226
|
buildDir?: string;
|
|
227
227
|
esbuild?: Omit<BuildOptions, "outfile" | "outdir" | "entryNames" | "entryPoints">;
|
|
228
228
|
https?: {
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as ArriApp, q as ArriRouter, a as DEV_DEFINITION_ENDPOINT, D as DEV_ENDPOINT_ROOT, E as ErrorResponse, y as EventStreamConnection, c as createAppDefinition, e as createHttpRpcDefinition, o as defaultConfig, p as defineConfig, j as defineError, w as defineEventStreamRpc, s as defineRoute, d as defineRpc, k as errorResponseFromValidationErrors, f as getRpcParamName, g as getRpcPath, h as getRpcResponseName, l as handleH3Error, u as handleRoute, m as isArriConfig, x as isEventStreamRpc, n as isResolvedArriConfig, b as isRpc, i as isRpcParamSchema, z as registerEventStreamRpc, t as registerRoute, r as registerRpc, v as validateRpcRequestInput } from './shared/arri.
|
|
1
|
+
export { A as ArriApp, q as ArriRouter, a as DEV_DEFINITION_ENDPOINT, D as DEV_ENDPOINT_ROOT, E as ErrorResponse, y as EventStreamConnection, c as createAppDefinition, e as createHttpRpcDefinition, o as defaultConfig, p as defineConfig, j as defineError, w as defineEventStreamRpc, s as defineRoute, d as defineRpc, k as errorResponseFromValidationErrors, f as getRpcParamName, g as getRpcPath, h as getRpcResponseName, l as handleH3Error, u as handleRoute, m as isArriConfig, x as isEventStreamRpc, n as isResolvedArriConfig, b as isRpc, i as isRpcParamSchema, z as registerEventStreamRpc, t as registerRoute, r as registerRpc, v as validateRpcRequestInput } from './shared/arri.bbe2aa44.mjs';
|
|
2
2
|
export * from 'h3';
|
|
3
3
|
import 'arri-codegen-utils';
|
|
4
4
|
import 'arri-validate';
|
|
@@ -951,27 +951,41 @@ class ArriApp {
|
|
|
951
951
|
}
|
|
952
952
|
|
|
953
953
|
function isArriConfig(input) {
|
|
954
|
-
if (typeof input !== "object" ||
|
|
954
|
+
if (typeof input !== "object" || input === null) {
|
|
955
955
|
return false;
|
|
956
956
|
}
|
|
957
|
-
|
|
957
|
+
if ("generators" in input) {
|
|
958
|
+
if (!Array.isArray(input)) {
|
|
959
|
+
return false;
|
|
960
|
+
}
|
|
961
|
+
}
|
|
962
|
+
if ("port" in input && typeof input.port !== "number") {
|
|
963
|
+
return false;
|
|
964
|
+
}
|
|
965
|
+
if (Number.isNaN(input.port)) {
|
|
966
|
+
return false;
|
|
967
|
+
}
|
|
968
|
+
if ("entry" in input && typeof input.entry !== "string") {
|
|
969
|
+
return false;
|
|
970
|
+
}
|
|
971
|
+
return true;
|
|
958
972
|
}
|
|
959
973
|
function isResolvedArriConfig(input) {
|
|
960
974
|
if (!isArriConfig(input)) {
|
|
961
975
|
return false;
|
|
962
976
|
}
|
|
963
|
-
return typeof input.rootDir === "string" && typeof input.srcDir === "string" && (typeof input.procedureDir === "string" || typeof input.procedureDir === "boolean") && Array.isArray(input.procedureGlobPatterns) && Array.isArray(input.
|
|
977
|
+
return typeof input.rootDir === "string" && typeof input.srcDir === "string" && (typeof input.procedureDir === "string" || typeof input.procedureDir === "boolean") && Array.isArray(input.procedureGlobPatterns) && Array.isArray(input.generators) && typeof input.buildDir === "string" && typeof input.esbuild === "object" && input.esbuild && !Array.isArray(input.esbuild);
|
|
964
978
|
}
|
|
965
979
|
const defaultConfig = {
|
|
966
980
|
port: 3e3,
|
|
967
981
|
rootDir: ".",
|
|
968
982
|
srcDir: "src",
|
|
969
983
|
entry: "app.ts",
|
|
984
|
+
serverEntry: "",
|
|
970
985
|
procedureDir: "procedures",
|
|
971
986
|
procedureGlobPatterns: ["**/*.rpc.ts"],
|
|
972
|
-
|
|
987
|
+
generators: [],
|
|
973
988
|
buildDir: ".arri",
|
|
974
|
-
serverEntry: "",
|
|
975
989
|
esbuild: {},
|
|
976
990
|
https: false,
|
|
977
991
|
http2: false
|
|
@@ -984,7 +998,7 @@ function defineConfig(config) {
|
|
|
984
998
|
entry: config.entry ?? defaultConfig.entry,
|
|
985
999
|
procedureDir: config.procedureDir ?? defaultConfig.procedureDir,
|
|
986
1000
|
procedureGlobPatterns: config.procedureGlobPatterns ?? defaultConfig.procedureGlobPatterns,
|
|
987
|
-
|
|
1001
|
+
generators: config.generators ?? defaultConfig.generators,
|
|
988
1002
|
buildDir: config.buildDir ?? defaultConfig.buildDir,
|
|
989
1003
|
esbuild: config.esbuild ?? defaultConfig.esbuild,
|
|
990
1004
|
serverEntry: config.serverEntry ?? "",
|
|
@@ -949,27 +949,41 @@ class ArriApp {
|
|
|
949
949
|
}
|
|
950
950
|
|
|
951
951
|
function isArriConfig(input) {
|
|
952
|
-
if (typeof input !== "object" ||
|
|
952
|
+
if (typeof input !== "object" || input === null) {
|
|
953
953
|
return false;
|
|
954
954
|
}
|
|
955
|
-
|
|
955
|
+
if ("generators" in input) {
|
|
956
|
+
if (!Array.isArray(input)) {
|
|
957
|
+
return false;
|
|
958
|
+
}
|
|
959
|
+
}
|
|
960
|
+
if ("port" in input && typeof input.port !== "number") {
|
|
961
|
+
return false;
|
|
962
|
+
}
|
|
963
|
+
if (Number.isNaN(input.port)) {
|
|
964
|
+
return false;
|
|
965
|
+
}
|
|
966
|
+
if ("entry" in input && typeof input.entry !== "string") {
|
|
967
|
+
return false;
|
|
968
|
+
}
|
|
969
|
+
return true;
|
|
956
970
|
}
|
|
957
971
|
function isResolvedArriConfig(input) {
|
|
958
972
|
if (!isArriConfig(input)) {
|
|
959
973
|
return false;
|
|
960
974
|
}
|
|
961
|
-
return typeof input.rootDir === "string" && typeof input.srcDir === "string" && (typeof input.procedureDir === "string" || typeof input.procedureDir === "boolean") && Array.isArray(input.procedureGlobPatterns) && Array.isArray(input.
|
|
975
|
+
return typeof input.rootDir === "string" && typeof input.srcDir === "string" && (typeof input.procedureDir === "string" || typeof input.procedureDir === "boolean") && Array.isArray(input.procedureGlobPatterns) && Array.isArray(input.generators) && typeof input.buildDir === "string" && typeof input.esbuild === "object" && input.esbuild && !Array.isArray(input.esbuild);
|
|
962
976
|
}
|
|
963
977
|
const defaultConfig = {
|
|
964
978
|
port: 3e3,
|
|
965
979
|
rootDir: ".",
|
|
966
980
|
srcDir: "src",
|
|
967
981
|
entry: "app.ts",
|
|
982
|
+
serverEntry: "",
|
|
968
983
|
procedureDir: "procedures",
|
|
969
984
|
procedureGlobPatterns: ["**/*.rpc.ts"],
|
|
970
|
-
|
|
985
|
+
generators: [],
|
|
971
986
|
buildDir: ".arri",
|
|
972
|
-
serverEntry: "",
|
|
973
987
|
esbuild: {},
|
|
974
988
|
https: false,
|
|
975
989
|
http2: false
|
|
@@ -982,7 +996,7 @@ function defineConfig(config) {
|
|
|
982
996
|
entry: config.entry ?? defaultConfig.entry,
|
|
983
997
|
procedureDir: config.procedureDir ?? defaultConfig.procedureDir,
|
|
984
998
|
procedureGlobPatterns: config.procedureGlobPatterns ?? defaultConfig.procedureGlobPatterns,
|
|
985
|
-
|
|
999
|
+
generators: config.generators ?? defaultConfig.generators,
|
|
986
1000
|
buildDir: config.buildDir ?? defaultConfig.buildDir,
|
|
987
1001
|
esbuild: config.esbuild ?? defaultConfig.esbuild,
|
|
988
1002
|
serverEntry: config.serverEntry ?? "",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "arri",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.32.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"citty": "^0.1.6",
|
|
32
32
|
"consola": "^3.2.3",
|
|
33
33
|
"degit": "^2.8.4",
|
|
34
|
+
"enquirer": "^2.4.1",
|
|
34
35
|
"esbuild": "^0.20.1",
|
|
35
36
|
"esbuild-plugin-replace": "^1.4.0",
|
|
36
37
|
"globby": "^14.0.1",
|
|
@@ -42,10 +43,10 @@
|
|
|
42
43
|
"prettier": "^3.2.5",
|
|
43
44
|
"scule": "^1.3.0",
|
|
44
45
|
"uncrypto": "^0.1.3",
|
|
45
|
-
"arri-codegen-dart": "0.
|
|
46
|
-
"arri-
|
|
47
|
-
"arri-codegen-
|
|
48
|
-
"arri-
|
|
46
|
+
"arri-codegen-dart": "0.32.1",
|
|
47
|
+
"arri-validate": "0.32.1",
|
|
48
|
+
"arri-codegen-ts": "0.32.1",
|
|
49
|
+
"arri-codegen-utils": "0.32.1"
|
|
49
50
|
},
|
|
50
51
|
"devDependencies": {
|
|
51
52
|
"@types/degit": "^2.8.6",
|