everything-dev 1.16.0 → 1.16.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/infra.cjs +127 -0
- package/dist/cli/infra.cjs.map +1 -0
- package/dist/cli/infra.mjs +124 -0
- package/dist/cli/infra.mjs.map +1 -0
- package/dist/cli/init.cjs +9 -0
- package/dist/cli/init.cjs.map +1 -1
- package/dist/cli/init.d.cts +2 -1
- package/dist/cli/init.d.cts.map +1 -1
- package/dist/cli/init.d.mts +2 -1
- package/dist/cli/init.d.mts.map +1 -1
- package/dist/cli/init.mjs +9 -1
- package/dist/cli/init.mjs.map +1 -1
- package/dist/cli/sync.cjs +6 -0
- package/dist/cli/sync.cjs.map +1 -1
- package/dist/cli/sync.mjs +6 -0
- package/dist/cli/sync.mjs.map +1 -1
- package/dist/cli/upgrade.cjs +75 -7
- package/dist/cli/upgrade.cjs.map +1 -1
- package/dist/cli/upgrade.mjs +74 -8
- package/dist/cli/upgrade.mjs.map +1 -1
- package/dist/cli.cjs +2 -0
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.mjs +2 -0
- package/dist/cli.mjs.map +1 -1
- package/dist/config.cjs +2 -24
- package/dist/config.cjs.map +1 -1
- package/dist/config.d.cts.map +1 -1
- package/dist/config.d.mts.map +1 -1
- package/dist/config.mjs +3 -25
- package/dist/config.mjs.map +1 -1
- package/dist/contract.cjs +2 -0
- package/dist/contract.cjs.map +1 -1
- package/dist/contract.d.cts +6 -2
- package/dist/contract.d.cts.map +1 -1
- package/dist/contract.d.mts +6 -2
- package/dist/contract.d.mts.map +1 -1
- package/dist/contract.meta.cjs +2 -2
- package/dist/contract.meta.cjs.map +1 -1
- package/dist/contract.meta.d.cts +2 -2
- package/dist/contract.meta.d.mts +2 -2
- package/dist/contract.meta.mjs +2 -2
- package/dist/contract.meta.mjs.map +1 -1
- package/dist/contract.mjs +2 -0
- package/dist/contract.mjs.map +1 -1
- package/dist/fastkv.cjs +0 -45
- package/dist/fastkv.cjs.map +1 -1
- package/dist/fastkv.d.cts +1 -19
- package/dist/fastkv.d.cts.map +1 -1
- package/dist/fastkv.d.mts +1 -19
- package/dist/fastkv.d.mts.map +1 -1
- package/dist/fastkv.mjs +1 -44
- package/dist/fastkv.mjs.map +1 -1
- package/dist/index.cjs +0 -2
- package/dist/index.d.cts +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +2 -2
- package/dist/merge.cjs +4 -11
- package/dist/merge.cjs.map +1 -1
- package/dist/merge.d.cts.map +1 -1
- package/dist/merge.d.mts.map +1 -1
- package/dist/merge.mjs +4 -11
- package/dist/merge.mjs.map +1 -1
- package/dist/near-cli.cjs +1 -1
- package/dist/near-cli.mjs +1 -1
- package/dist/plugin.cjs +51 -58
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.d.cts +4 -2
- package/dist/plugin.d.cts.map +1 -1
- package/dist/plugin.d.mts +4 -2
- package/dist/plugin.d.mts.map +1 -1
- package/dist/plugin.mjs +50 -57
- package/dist/plugin.mjs.map +1 -1
- package/dist/types.d.cts +2 -2
- package/dist/types.d.mts +2 -2
- package/package.json +1 -1
- package/src/cli/infra.ts +190 -0
- package/src/cli/init.ts +4 -0
- package/src/cli/sync.ts +9 -0
- package/src/cli/upgrade.ts +117 -6
- package/src/cli.ts +6 -0
- package/src/config.ts +5 -34
- package/src/contract.meta.ts +2 -2
- package/src/contract.ts +2 -0
- package/src/fastkv.ts +0 -72
- package/src/merge.ts +6 -19
- package/src/plugin.ts +51 -70
package/dist/merge.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.mjs","names":[],"sources":["../src/merge.ts"],"sourcesContent":["import { createDefu } from \"defu\";\nimport type { BosConfigInput, ExtendsConfig } from \"./types\";\n\nexport const BOS_CONFIG_ORDER = [\n \"extends\",\n \"account\",\n \"domain\",\n \"title\",\n \"description\",\n \"testnet\",\n \"staging\",\n \"repository\",\n \"app\",\n \"plugins\",\n \"shared\",\n] as const;\n\nexport type BosConfigFieldName = (typeof BOS_CONFIG_ORDER)[number];\n\nexport type BosEnv = \"development\" | \"production\" | \"staging\";\n\nexport interface ResolvedConfigMeta {\n env: BosEnv;\n resolvedAt: string;\n extendsChain: string[];\n source?: string;\n}\n\nconst ARRAY_UNION_KEYS = new Set([\"secrets\"]);\n\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction unionArrays(a: unknown, b: unknown): unknown[] | undefined {\n const aArr = Array.isArray(a) ? a : [];\n const bArr = Array.isArray(b) ? b : [];\n if (aArr.length === 0 && bArr.length === 0) return undefined;\n const seen = new Set<string>();\n const result: unknown[] = [];\n for (const item of [...aArr, ...bArr]) {\n if (typeof item === \"string\") {\n if (seen.has(item)) continue;\n seen.add(item);\n }\n result.push(item);\n }\n return result;\n}\n\nfunction cleanNullSentinels(obj: Record<string, unknown>): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n if (value === null || value === undefined) continue;\n if (isPlainObject(value)) {\n const cleaned = cleanNullSentinels(value);\n if (Object.keys(cleaned).length > 0) {\n out[key] = cleaned;\n }\n } else {\n out[key] = value;\n }\n }\n return out;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst bosConfigMerger = createDefu((obj: any, key: any, value: any): boolean | undefined => {\n if (obj[key] === null) return true;\n if (value === null) {\n obj[key] = null;\n return true;\n }\n if (Array.isArray(obj[key]) && Array.isArray(value)) {\n if (ARRAY_UNION_KEYS.has(key)) {\n obj[key] = unionArrays(obj[key], value);\n } else {\n obj[key] = value;\n }\n return true;\n }\n return false;\n});\n\nexport function resolveExtendsRef(\n extendsField: string | ExtendsConfig | undefined,\n env: BosEnv,\n): string | undefined {\n if (!extendsField) return undefined;\n if (typeof extendsField === \"string\") return extendsField;\n return extendsField[env] ?? extendsField.production ?? Object.values(extendsField).find(Boolean);\n}\n\nexport function mergeBosConfigWithExtends(\n parent: BosConfigInput,\n child: BosConfigInput,\n): BosConfigInput {\n const merged = bosConfigMerger(child,
|
|
1
|
+
{"version":3,"file":"merge.mjs","names":[],"sources":["../src/merge.ts"],"sourcesContent":["import { createDefu } from \"defu\";\nimport type { BosConfigInput, ExtendsConfig } from \"./types\";\n\nexport const BOS_CONFIG_ORDER = [\n \"extends\",\n \"account\",\n \"domain\",\n \"title\",\n \"description\",\n \"testnet\",\n \"staging\",\n \"repository\",\n \"app\",\n \"plugins\",\n \"shared\",\n] as const;\n\nexport type BosConfigFieldName = (typeof BOS_CONFIG_ORDER)[number];\n\nexport type BosEnv = \"development\" | \"production\" | \"staging\";\n\nexport interface ResolvedConfigMeta {\n env: BosEnv;\n resolvedAt: string;\n extendsChain: string[];\n source?: string;\n}\n\nconst ARRAY_UNION_KEYS = new Set([\"secrets\"]);\n\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction unionArrays(a: unknown, b: unknown): unknown[] | undefined {\n const aArr = Array.isArray(a) ? a : [];\n const bArr = Array.isArray(b) ? b : [];\n if (aArr.length === 0 && bArr.length === 0) return undefined;\n const seen = new Set<string>();\n const result: unknown[] = [];\n for (const item of [...aArr, ...bArr]) {\n if (typeof item === \"string\") {\n if (seen.has(item)) continue;\n seen.add(item);\n }\n result.push(item);\n }\n return result;\n}\n\nfunction cleanNullSentinels(obj: Record<string, unknown>): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n if (value === null || value === undefined) continue;\n if (isPlainObject(value)) {\n const cleaned = cleanNullSentinels(value);\n if (Object.keys(cleaned).length > 0) {\n out[key] = cleaned;\n }\n } else {\n out[key] = value;\n }\n }\n return out;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst bosConfigMerger = createDefu((obj: any, key: any, value: any): boolean | undefined => {\n if (obj[key] === null) return true;\n if (value === null) {\n obj[key] = null;\n return true;\n }\n if (Array.isArray(obj[key]) && Array.isArray(value)) {\n if (ARRAY_UNION_KEYS.has(key)) {\n obj[key] = unionArrays(obj[key], value);\n } else {\n obj[key] = value;\n }\n return true;\n }\n return false;\n});\n\nexport function resolveExtendsRef(\n extendsField: string | ExtendsConfig | undefined,\n env: BosEnv,\n): string | undefined {\n if (!extendsField) return undefined;\n if (typeof extendsField === \"string\") return extendsField;\n return extendsField[env] ?? extendsField.production ?? Object.values(extendsField).find(Boolean);\n}\n\nexport function mergeBosConfigWithExtends(\n parent: BosConfigInput,\n child: BosConfigInput,\n): BosConfigInput {\n const { plugins: _ignoredParentPlugins, ...parentWithoutPlugins } = parent;\n const merged = bosConfigMerger(child, parentWithoutPlugins) as BosConfigInput;\n\n if (child.plugins !== undefined && isPlainObject(child.plugins)) {\n (merged as Record<string, unknown>).plugins = cleanNullSentinels(\n child.plugins as Record<string, unknown>,\n );\n } else {\n delete (merged as Record<string, unknown>).plugins;\n }\n\n const mergedRecord = merged as Record<string, unknown>;\n\n if (isPlainObject(mergedRecord.app)) {\n for (const entryVal of Object.values(mergedRecord.app as Record<string, unknown>)) {\n if (!isPlainObject(entryVal)) continue;\n for (const secretKey of ARRAY_UNION_KEYS) {\n if (Array.isArray(entryVal[secretKey])) {\n entryVal[secretKey] =\n (unionArrays(entryVal[secretKey] as unknown[], []) as string[] | undefined)?.filter(\n Boolean,\n ) ?? entryVal[secretKey];\n }\n }\n }\n }\n\n if (isPlainObject(mergedRecord.plugins)) {\n for (const pluginVal of Object.values(mergedRecord.plugins as Record<string, unknown>)) {\n if (!isPlainObject(pluginVal)) continue;\n for (const secretKey of ARRAY_UNION_KEYS) {\n if (Array.isArray(pluginVal[secretKey])) {\n pluginVal[secretKey] =\n (unionArrays(pluginVal[secretKey] as unknown[], []) as string[] | undefined)?.filter(\n Boolean,\n ) ?? pluginVal[secretKey];\n }\n }\n }\n }\n\n return rebuildOrderedConfig(mergedRecord) as BosConfigInput;\n}\n\nexport function mergeBosConfigWithTemplate(\n local: BosConfigInput,\n template: BosConfigInput,\n): BosConfigInput {\n const merged = mergeJsonValuesPreservingLocalOrder(local, template) as BosConfigInput;\n return rebuildOrderedConfig(merged as Record<string, unknown>) as BosConfigInput;\n}\n\nfunction mergeJsonValuesPreservingLocalOrder(local: unknown, template: unknown): unknown {\n if (isPlainObject(local) && isPlainObject(template)) {\n const merged: Record<string, unknown> = {};\n for (const key of Object.keys(local)) {\n merged[key] = mergeJsonValuesPreservingLocalOrder(\n local[key],\n (template as Record<string, unknown>)[key],\n );\n }\n for (const key of Object.keys(template as Record<string, unknown>)) {\n if (!(key in merged)) {\n merged[key] = (template as Record<string, unknown>)[key];\n }\n }\n return merged;\n }\n return local ?? template;\n}\n\nexport function rebuildOrderedConfig<T extends Record<string, unknown>>(config: T): T {\n const ordered: Record<string, unknown> = {};\n\n for (const key of BOS_CONFIG_ORDER) {\n if (key in config) {\n ordered[key] = config[key];\n }\n }\n\n for (const key of Object.keys(config)) {\n if (!BOS_CONFIG_ORDER.includes(key as BosConfigFieldName)) {\n ordered[key] = config[key];\n }\n }\n\n return ordered as T;\n}\n\nexport { bosConfigMerger };\n"],"mappings":"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"}
|
package/dist/near-cli.cjs
CHANGED
package/dist/near-cli.mjs
CHANGED
package/dist/plugin.cjs
CHANGED
|
@@ -6,6 +6,7 @@ const require_config = require('./config.cjs');
|
|
|
6
6
|
const require_contract = require('./contract.cjs');
|
|
7
7
|
const require_api_contract = require('./api-contract.cjs');
|
|
8
8
|
const require_app = require('./app.cjs');
|
|
9
|
+
const require_infra = require('./cli/infra.cjs');
|
|
9
10
|
const require_save_config = require('./utils/save-config.cjs');
|
|
10
11
|
const require_cli_init = require('./cli/init.cjs');
|
|
11
12
|
const require_prompts = require('./cli/prompts.cjs');
|
|
@@ -22,7 +23,6 @@ const require_sidebar = require('./sidebar.cjs');
|
|
|
22
23
|
const require_run = require('./utils/run.cjs');
|
|
23
24
|
let node_fs = require("node:fs");
|
|
24
25
|
let node_path = require("node:path");
|
|
25
|
-
let node_crypto = require("node:crypto");
|
|
26
26
|
let _clack_prompts = require("@clack/prompts");
|
|
27
27
|
_clack_prompts = require_runtime.__toESM(_clack_prompts, 1);
|
|
28
28
|
let effect = require("effect");
|
|
@@ -30,21 +30,6 @@ let every_plugin = require("every-plugin");
|
|
|
30
30
|
let every_plugin_zod = require("every-plugin/zod");
|
|
31
31
|
|
|
32
32
|
//#region src/plugin.ts
|
|
33
|
-
function ensureEnvFile(configDir, opts) {
|
|
34
|
-
const envPath = (0, node_path.join)(configDir, ".env");
|
|
35
|
-
const examplePath = (0, node_path.join)(configDir, ".env.example");
|
|
36
|
-
if ((0, node_fs.existsSync)(envPath)) return;
|
|
37
|
-
if (!(0, node_fs.existsSync)(examplePath)) return;
|
|
38
|
-
const lines = (0, node_fs.readFileSync)(examplePath, "utf-8").split("\n");
|
|
39
|
-
const secret = (0, node_crypto.randomBytes)(32).toString("base64url");
|
|
40
|
-
const corsOrigin = opts?.domain ? `http://localhost:3000,https://${opts.domain}` : "http://localhost:3000";
|
|
41
|
-
(0, node_fs.writeFileSync)(envPath, lines.map((line) => {
|
|
42
|
-
if (/^BETTER_AUTH_SECRET=/.test(line)) return `BETTER_AUTH_SECRET=${secret}`;
|
|
43
|
-
if (/^CORS_ORIGIN=/.test(line)) return `CORS_ORIGIN=${corsOrigin}`;
|
|
44
|
-
return line;
|
|
45
|
-
}).join("\n"));
|
|
46
|
-
_clack_prompts.log.info(`Created .env from .env.example with generated BETTER_AUTH_SECRET`);
|
|
47
|
-
}
|
|
48
33
|
const buildCommands = {
|
|
49
34
|
host: {
|
|
50
35
|
cmd: "bun",
|
|
@@ -444,42 +429,32 @@ var plugin_default = (0, every_plugin.createPlugin)({
|
|
|
444
429
|
if (typeof pluginConfig.domain === "string") pluginDomain = pluginConfig.domain;
|
|
445
430
|
} catch {}
|
|
446
431
|
if (!pluginDomain) pluginDomain = `${input.key}.${deps.bosConfig.domain ?? "everything.dev"}`;
|
|
447
|
-
|
|
448
|
-
const registryEntries = {
|
|
449
|
-
[`plugins/${account}/${input.key}/manifest.json`]: JSON.stringify(manifest),
|
|
450
|
-
[`plugins/${account}/${input.key}/metadata`]: JSON.stringify({
|
|
451
|
-
title: null,
|
|
452
|
-
description: null,
|
|
453
|
-
repoUrl: deps.bosConfig.repository ?? null,
|
|
454
|
-
version,
|
|
455
|
-
publishedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
456
|
-
cdnUrl: publishedUrl,
|
|
457
|
-
integrity
|
|
458
|
-
}),
|
|
459
|
-
[`plugins/${account}/${input.key}/versions/${version}/manifest.json`]: JSON.stringify(manifest)
|
|
460
|
-
};
|
|
432
|
+
try {
|
|
433
|
+
const registryEntries = {};
|
|
461
434
|
if ((0, node_fs.existsSync)(pluginConfigPath)) try {
|
|
462
435
|
const publishedPluginConfig = JSON.parse((0, node_fs.readFileSync)(pluginConfigPath, "utf-8"));
|
|
463
436
|
delete publishedPluginConfig.development;
|
|
464
437
|
registryEntries[`apps/${account}/${pluginDomain}/bos.config.json`] = JSON.stringify(publishedPluginConfig);
|
|
465
438
|
} catch {}
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
439
|
+
if (Object.keys(registryEntries).length > 0) {
|
|
440
|
+
const payload = JSON.stringify(registryEntries);
|
|
441
|
+
const argsBase64 = Buffer.from(payload).toString("base64");
|
|
442
|
+
const privateKey = process.env.NEAR_PRIVATE_KEY || process.env.BOS_NEAR_PRIVATE_KEY;
|
|
443
|
+
await effect.Effect.runPromise(require_near_cli.ensureNearCli);
|
|
444
|
+
try {
|
|
445
|
+
await effect.Effect.runPromise(require_near_cli.executeTransaction({
|
|
446
|
+
account,
|
|
447
|
+
contract: require_fastkv.getRegistryNamespaceForNetwork(network),
|
|
448
|
+
method: "__fastdata_kv",
|
|
449
|
+
argsBase64,
|
|
450
|
+
network,
|
|
451
|
+
privateKey,
|
|
452
|
+
gas: "50Tgas",
|
|
453
|
+
deposit: "0NEAR"
|
|
454
|
+
}));
|
|
455
|
+
} catch (registryError) {
|
|
456
|
+
if (!extractTransactionHash(registryError)) console.warn(`[publish] Plugin registry write failed: ${registryError instanceof Error ? registryError.message : registryError}`);
|
|
457
|
+
}
|
|
483
458
|
}
|
|
484
459
|
} catch (registryError) {
|
|
485
460
|
console.warn(`[publish] Plugin registry write skipped: ${registryError instanceof Error ? registryError.message : registryError}`);
|
|
@@ -497,7 +472,7 @@ var plugin_default = (0, every_plugin.createPlugin)({
|
|
|
497
472
|
};
|
|
498
473
|
}),
|
|
499
474
|
dev: builder.dev.handler(async ({ input }) => {
|
|
500
|
-
ensureEnvFile(deps.configDir);
|
|
475
|
+
require_infra.ensureEnvFile(deps.configDir);
|
|
501
476
|
const localPackages = require_app.detectLocalPackages(deps.bosConfig ?? void 0, deps.runtimeConfig ?? void 0);
|
|
502
477
|
const hostSource = localPackages.includes("host") ? parseSourceMode(input.host, "local") : "remote";
|
|
503
478
|
const uiSource = localPackages.includes("ui") ? parseSourceMode(input.ui, "local") : "remote";
|
|
@@ -568,7 +543,7 @@ var plugin_default = (0, every_plugin.createPlugin)({
|
|
|
568
543
|
};
|
|
569
544
|
}),
|
|
570
545
|
start: builder.start.handler(async ({ input }) => {
|
|
571
|
-
ensureEnvFile(deps.configDir);
|
|
546
|
+
require_infra.ensureEnvFile(deps.configDir);
|
|
572
547
|
const account = input.account ?? process.env.BOS_ACCOUNT;
|
|
573
548
|
const domain = input.domain ?? process.env.BOS_GATEWAY;
|
|
574
549
|
let config = null;
|
|
@@ -890,6 +865,7 @@ var plugin_default = (0, every_plugin.createPlugin)({
|
|
|
890
865
|
plugins = prompted.plugins;
|
|
891
866
|
}
|
|
892
867
|
directory = directory || domain || extendsGateway;
|
|
868
|
+
const targetDir = (0, node_path.resolve)(directory);
|
|
893
869
|
plugins = plugins ?? [];
|
|
894
870
|
if (!parentConfig) try {
|
|
895
871
|
parentConfig = await require_cli_init.fetchParentConfig(extendsAccount, extendsGateway);
|
|
@@ -934,12 +910,12 @@ var plugin_default = (0, every_plugin.createPlugin)({
|
|
|
934
910
|
}
|
|
935
911
|
const s = _clack_prompts.spinner();
|
|
936
912
|
s.start("Setting up project");
|
|
937
|
-
const filesCopied = await require_cli_init.copyFilteredFiles(sourceDir,
|
|
913
|
+
const filesCopied = await require_cli_init.copyFilteredFiles(sourceDir, targetDir, patterns, {
|
|
938
914
|
withHost,
|
|
939
915
|
plugins,
|
|
940
916
|
pluginRoutes
|
|
941
917
|
});
|
|
942
|
-
await require_cli_init.personalizeConfig(
|
|
918
|
+
await require_cli_init.personalizeConfig(targetDir, {
|
|
943
919
|
extendsAccount,
|
|
944
920
|
extendsGateway,
|
|
945
921
|
account: account || extendsAccount,
|
|
@@ -949,20 +925,37 @@ var plugin_default = (0, every_plugin.createPlugin)({
|
|
|
949
925
|
workspaceOpts: { sourceDir },
|
|
950
926
|
withHost
|
|
951
927
|
});
|
|
952
|
-
await require_cli_init.writeInitSnapshot(
|
|
928
|
+
await require_cli_init.writeInitSnapshot(targetDir, extendsAccount, extendsGateway, sourceDir, patterns, {
|
|
953
929
|
withHost,
|
|
954
930
|
plugins,
|
|
955
931
|
pluginRoutes
|
|
956
932
|
});
|
|
957
|
-
|
|
933
|
+
const initConfig = await require_config.loadConfig({ cwd: targetDir });
|
|
934
|
+
if (initConfig?.runtime) require_infra.writeGeneratedInfra(targetDir, initConfig.runtime);
|
|
935
|
+
require_infra.ensureEnvFile(targetDir);
|
|
958
936
|
if (!input.noInstall) {
|
|
959
|
-
await require_cli_init.runBunInstall(
|
|
960
|
-
await require_cli_init.runTypesGen(
|
|
961
|
-
await require_cli_init.generateDatabaseMigrations(
|
|
937
|
+
await require_cli_init.runBunInstall(targetDir);
|
|
938
|
+
await require_cli_init.runTypesGen(targetDir);
|
|
939
|
+
await require_cli_init.generateDatabaseMigrations(targetDir);
|
|
962
940
|
}
|
|
963
|
-
|
|
964
|
-
if (initConfig?.config) await generateCodeArtifacts(directory, initConfig.config);
|
|
941
|
+
if (initConfig?.config) await generateCodeArtifacts(targetDir, initConfig.config);
|
|
965
942
|
s.stop("Project initialized");
|
|
943
|
+
if (!input.noInteractive) {
|
|
944
|
+
if (await _clack_prompts.confirm({
|
|
945
|
+
message: "Run docker compose up -d --wait?",
|
|
946
|
+
initialValue: true
|
|
947
|
+
}) === true) {
|
|
948
|
+
const dockerSpinner = _clack_prompts.spinner();
|
|
949
|
+
dockerSpinner.start("Starting Docker services");
|
|
950
|
+
try {
|
|
951
|
+
await require_cli_init.runDockerComposeUp(targetDir);
|
|
952
|
+
dockerSpinner.stop("Docker services ready");
|
|
953
|
+
} catch (error) {
|
|
954
|
+
dockerSpinner.stop("Docker services not started");
|
|
955
|
+
_clack_prompts.log.warn(`docker compose up -d --wait failed: ${error instanceof Error ? error.message : error}`);
|
|
956
|
+
}
|
|
957
|
+
}
|
|
958
|
+
}
|
|
966
959
|
return {
|
|
967
960
|
status: "initialized",
|
|
968
961
|
directory,
|