everything-dev 1.17.0 → 1.19.0
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/init.cjs +165 -84
- package/dist/cli/init.cjs.map +1 -1
- package/dist/cli/init.d.cts +14 -2
- package/dist/cli/init.d.cts.map +1 -1
- package/dist/cli/init.d.mts +14 -2
- package/dist/cli/init.d.mts.map +1 -1
- package/dist/cli/init.mjs +164 -85
- package/dist/cli/init.mjs.map +1 -1
- package/dist/cli/prompts.cjs +12 -14
- package/dist/cli/prompts.cjs.map +1 -1
- package/dist/cli/prompts.mjs +12 -14
- package/dist/cli/prompts.mjs.map +1 -1
- package/dist/cli/upgrade.cjs +114 -49
- package/dist/cli/upgrade.cjs.map +1 -1
- package/dist/cli/upgrade.mjs +114 -49
- package/dist/cli/upgrade.mjs.map +1 -1
- package/dist/contract.cjs +1 -4
- package/dist/contract.cjs.map +1 -1
- package/dist/contract.d.cts +6 -12
- package/dist/contract.d.cts.map +1 -1
- package/dist/contract.d.mts +6 -12
- package/dist/contract.d.mts.map +1 -1
- package/dist/contract.meta.cjs +5 -5
- package/dist/contract.meta.cjs.map +1 -1
- package/dist/contract.meta.d.cts +9 -9
- package/dist/contract.meta.d.mts +9 -9
- package/dist/contract.meta.mjs +5 -5
- package/dist/contract.meta.mjs.map +1 -1
- package/dist/contract.mjs +1 -4
- package/dist/contract.mjs.map +1 -1
- package/dist/plugin.cjs +64 -106
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.d.cts +4 -7
- package/dist/plugin.d.cts.map +1 -1
- package/dist/plugin.d.mts +4 -7
- package/dist/plugin.d.mts.map +1 -1
- package/dist/plugin.mjs +65 -107
- 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/init.ts +224 -162
- package/src/cli/prompts.ts +17 -22
- package/src/cli/upgrade.ts +173 -56
- package/src/contract.meta.ts +6 -8
- package/src/contract.ts +1 -4
- package/src/plugin.ts +118 -187
package/dist/plugin.cjs
CHANGED
|
@@ -409,58 +409,20 @@ var plugin_default = (0, every_plugin.createPlugin)({
|
|
|
409
409
|
const integrity = publishedUrl ? await require_integrity.computeSriHashForUrl(publishedUrl) : null;
|
|
410
410
|
const version = manifest?.plugin.version ?? pkgJson.version;
|
|
411
411
|
if (publishedUrl) {
|
|
412
|
-
const
|
|
413
|
-
|
|
414
|
-
const
|
|
415
|
-
if (!
|
|
416
|
-
const plugins =
|
|
412
|
+
const rootConfigPath = (0, node_path.join)(deps.configDir, "bos.config.json");
|
|
413
|
+
try {
|
|
414
|
+
const rootConfig = JSON.parse((0, node_fs.readFileSync)(rootConfigPath, "utf-8"));
|
|
415
|
+
if (!rootConfig.plugins || typeof rootConfig.plugins !== "object") rootConfig.plugins = {};
|
|
416
|
+
const plugins = rootConfig.plugins;
|
|
417
417
|
if (!plugins[input.key] || typeof plugins[input.key] !== "object") plugins[input.key] = {};
|
|
418
418
|
const entry = plugins[input.key];
|
|
419
419
|
entry.production = publishedUrl;
|
|
420
420
|
if (integrity) entry.integrity = integrity;
|
|
421
421
|
else delete entry.integrity;
|
|
422
|
-
(0, node_fs.writeFileSync)(
|
|
423
|
-
console.log(` ✅ Updated
|
|
422
|
+
(0, node_fs.writeFileSync)(rootConfigPath, `${JSON.stringify(rootConfig, null, 2)}\n`);
|
|
423
|
+
console.log(` ✅ Updated bos.config.json: plugins.${input.key}.production`);
|
|
424
424
|
} catch (err) {
|
|
425
|
-
console.error(` ❌ Failed to update
|
|
426
|
-
}
|
|
427
|
-
const account = deps.bosConfig.account;
|
|
428
|
-
const network = require_network.getNetworkIdForAccount(account);
|
|
429
|
-
let pluginDomain;
|
|
430
|
-
if ((0, node_fs.existsSync)(pluginConfigPath)) try {
|
|
431
|
-
const pluginConfig = JSON.parse((0, node_fs.readFileSync)(pluginConfigPath, "utf-8"));
|
|
432
|
-
if (typeof pluginConfig.domain === "string") pluginDomain = pluginConfig.domain;
|
|
433
|
-
} catch {}
|
|
434
|
-
if (!pluginDomain) pluginDomain = `${input.key}.${deps.bosConfig.domain ?? "everything.dev"}`;
|
|
435
|
-
try {
|
|
436
|
-
const registryEntries = {};
|
|
437
|
-
if ((0, node_fs.existsSync)(pluginConfigPath)) try {
|
|
438
|
-
const publishedPluginConfig = JSON.parse((0, node_fs.readFileSync)(pluginConfigPath, "utf-8"));
|
|
439
|
-
delete publishedPluginConfig.development;
|
|
440
|
-
registryEntries[`apps/${account}/${pluginDomain}/bos.config.json`] = JSON.stringify(publishedPluginConfig);
|
|
441
|
-
} catch {}
|
|
442
|
-
if (Object.keys(registryEntries).length > 0) {
|
|
443
|
-
const payload = JSON.stringify(registryEntries);
|
|
444
|
-
const argsBase64 = Buffer.from(payload).toString("base64");
|
|
445
|
-
const privateKey = process.env.NEAR_PRIVATE_KEY || process.env.BOS_NEAR_PRIVATE_KEY;
|
|
446
|
-
await effect.Effect.runPromise(require_near_cli.ensureNearCli);
|
|
447
|
-
try {
|
|
448
|
-
await effect.Effect.runPromise(require_near_cli.executeTransaction({
|
|
449
|
-
account,
|
|
450
|
-
contract: require_fastkv.getRegistryNamespaceForNetwork(network),
|
|
451
|
-
method: "__fastdata_kv",
|
|
452
|
-
argsBase64,
|
|
453
|
-
network,
|
|
454
|
-
privateKey,
|
|
455
|
-
gas: "50Tgas",
|
|
456
|
-
deposit: "0NEAR"
|
|
457
|
-
}));
|
|
458
|
-
} catch (registryError) {
|
|
459
|
-
if (!extractTransactionHash(registryError)) console.warn(`[publish] Plugin registry write failed: ${registryError instanceof Error ? registryError.message : registryError}`);
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
} catch (registryError) {
|
|
463
|
-
console.warn(`[publish] Plugin registry write skipped: ${registryError instanceof Error ? registryError.message : registryError}`);
|
|
425
|
+
console.error(` ❌ Failed to update bos.config.json:`, err instanceof Error ? err.message : err);
|
|
464
426
|
}
|
|
465
427
|
await generateCodeArtifacts(deps.configDir, deps.bosConfig);
|
|
466
428
|
}
|
|
@@ -728,18 +690,6 @@ var plugin_default = (0, every_plugin.createPlugin)({
|
|
|
728
690
|
}
|
|
729
691
|
}
|
|
730
692
|
const registryEntries = { [`apps/${account}/${gateway}/bos.config.json`]: JSON.stringify(publishConfig) };
|
|
731
|
-
for (const [pluginKey, pluginEntry] of Object.entries(publishConfig.plugins ?? {})) {
|
|
732
|
-
const pluginRef = getPluginRef(pluginEntry);
|
|
733
|
-
if (!pluginRef?.development?.startsWith("local:")) continue;
|
|
734
|
-
const pluginConfigPath = (0, node_path.join)((0, node_path.join)(deps.configDir, pluginRef.development.slice(6)), "bos.config.json");
|
|
735
|
-
if (!(0, node_fs.existsSync)(pluginConfigPath)) continue;
|
|
736
|
-
try {
|
|
737
|
-
const pluginConfig = JSON.parse((0, node_fs.readFileSync)(pluginConfigPath, "utf-8"));
|
|
738
|
-
const pluginDomain = typeof pluginConfig.domain === "string" ? pluginConfig.domain : `${pluginKey}.${gateway}`;
|
|
739
|
-
delete pluginConfig.development;
|
|
740
|
-
registryEntries[`apps/${account}/${pluginDomain}/bos.config.json`] = JSON.stringify(pluginConfig);
|
|
741
|
-
} catch {}
|
|
742
|
-
}
|
|
743
693
|
const payload = JSON.stringify(registryEntries);
|
|
744
694
|
const argsBase64 = Buffer.from(payload).toString("base64");
|
|
745
695
|
const privateKey = input.privateKey || process.env.NEAR_PRIVATE_KEY || process.env.BOS_NEAR_PRIVATE_KEY;
|
|
@@ -829,18 +779,18 @@ var plugin_default = (0, every_plugin.createPlugin)({
|
|
|
829
779
|
init: builder.init.handler(async ({ input }) => {
|
|
830
780
|
try {
|
|
831
781
|
const timings = [];
|
|
832
|
-
let extendsAccount =
|
|
833
|
-
let extendsGateway =
|
|
782
|
+
let extendsAccount = "";
|
|
783
|
+
let extendsGateway = "";
|
|
834
784
|
let directory = input.directory;
|
|
835
785
|
let account = input.account;
|
|
836
786
|
let domain = input.domain;
|
|
837
787
|
let withHost = input.withHost;
|
|
838
788
|
let plugins = input.plugins;
|
|
839
789
|
if (input.extends) {
|
|
840
|
-
const match = input.extends.match(/^
|
|
790
|
+
const match = (input.extends.startsWith("bos://") ? input.extends : `bos://${input.extends}`).match(/^bos:\/\/([^/]+)\/(.+)$/);
|
|
841
791
|
if (match) {
|
|
842
|
-
|
|
843
|
-
|
|
792
|
+
extendsAccount = match[1];
|
|
793
|
+
extendsGateway = match[2];
|
|
844
794
|
}
|
|
845
795
|
}
|
|
846
796
|
extendsAccount = extendsAccount || "dev.everything.near";
|
|
@@ -853,9 +803,7 @@ var plugin_default = (0, every_plugin.createPlugin)({
|
|
|
853
803
|
} catch {}
|
|
854
804
|
if (!input.noInteractive) {
|
|
855
805
|
const prompted = await require_prompts.promptInitOptions({
|
|
856
|
-
extendsAccount
|
|
857
|
-
extendsGateway,
|
|
858
|
-
extends: input.extends,
|
|
806
|
+
extends: `bos://${extendsAccount}/${extendsGateway}`,
|
|
859
807
|
directory,
|
|
860
808
|
account,
|
|
861
809
|
domain,
|
|
@@ -874,21 +822,21 @@ var plugin_default = (0, every_plugin.createPlugin)({
|
|
|
874
822
|
directory = directory || domain || extendsGateway;
|
|
875
823
|
const targetDir = (0, node_path.resolve)(directory);
|
|
876
824
|
plugins = plugins ?? [];
|
|
825
|
+
const extendsRef = `bos://${extendsAccount}/${extendsGateway}`;
|
|
877
826
|
if (!parentConfig) try {
|
|
878
827
|
parentConfig = await require_timing.timePhase(timings, "parent config", () => require_cli_init.fetchParentConfig(extendsAccount, extendsGateway));
|
|
879
828
|
} catch {
|
|
880
829
|
return {
|
|
881
830
|
status: "error",
|
|
882
831
|
directory,
|
|
883
|
-
|
|
884
|
-
extendsGateway,
|
|
832
|
+
extendsRef,
|
|
885
833
|
account,
|
|
886
834
|
domain,
|
|
887
|
-
extends:
|
|
835
|
+
extends: extendsRef,
|
|
888
836
|
plugins: plugins ?? [],
|
|
889
837
|
filesCopied: 0,
|
|
890
838
|
timings,
|
|
891
|
-
error: `No config found at
|
|
839
|
+
error: `No config found at ${extendsRef} — are you sure this is the right parent?`
|
|
892
840
|
};
|
|
893
841
|
}
|
|
894
842
|
const { sourceDir, parentConfig: resolvedParentConfig, cleanup } = await require_timing.timePhase(timings, "template source", () => require_cli_init.resolveSourceDir({
|
|
@@ -897,45 +845,56 @@ var plugin_default = (0, every_plugin.createPlugin)({
|
|
|
897
845
|
source: input.source
|
|
898
846
|
}));
|
|
899
847
|
parentConfig = resolvedParentConfig;
|
|
848
|
+
const isMinimalScaffold = sourceDir === "";
|
|
900
849
|
try {
|
|
901
|
-
const patterns = await require_cli_init.readTemplatekeep(sourceDir);
|
|
902
|
-
if (patterns.length === 0) return {
|
|
903
|
-
status: "error",
|
|
904
|
-
directory,
|
|
905
|
-
extendsAccount,
|
|
906
|
-
extendsGateway,
|
|
907
|
-
account,
|
|
908
|
-
domain,
|
|
909
|
-
extends: `bos://${extendsAccount}/${extendsGateway}`,
|
|
910
|
-
plugins: plugins ?? [],
|
|
911
|
-
filesCopied: 0,
|
|
912
|
-
error: "No .templatekeep found in template source"
|
|
913
|
-
};
|
|
914
|
-
const pluginRoutes = {};
|
|
915
|
-
const parentRuntimePlugins = await require_config.buildRuntimePluginsForConfig(parentConfig, sourceDir, "production");
|
|
916
|
-
for (const [key, plugin] of Object.entries(parentRuntimePlugins ?? {})) if (plugin.routes && plugin.routes.length > 0) pluginRoutes[key] = plugin.routes;
|
|
917
850
|
const s = _clack_prompts.spinner();
|
|
918
851
|
s.start("Setting up project");
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
plugins,
|
|
922
|
-
pluginRoutes
|
|
923
|
-
}));
|
|
924
|
-
await require_timing.timePhase(timings, "personalize config", () => require_cli_init.personalizeConfig(targetDir, {
|
|
852
|
+
let filesCopied;
|
|
853
|
+
if (isMinimalScaffold) filesCopied = await require_timing.timePhase(timings, "scaffold project", () => require_cli_init.scaffoldMinimalProject(targetDir, parentConfig, {
|
|
925
854
|
extendsAccount,
|
|
926
855
|
extendsGateway,
|
|
927
856
|
account: account || extendsAccount,
|
|
928
|
-
domain
|
|
857
|
+
domain,
|
|
929
858
|
plugins,
|
|
930
|
-
pluginRoutes,
|
|
931
|
-
workspaceOpts: { sourceDir },
|
|
932
859
|
withHost
|
|
933
860
|
}));
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
861
|
+
else {
|
|
862
|
+
const patterns = await require_cli_init.readTemplatekeep(sourceDir);
|
|
863
|
+
if (patterns.length === 0) return {
|
|
864
|
+
status: "error",
|
|
865
|
+
directory,
|
|
866
|
+
extendsRef,
|
|
867
|
+
account,
|
|
868
|
+
domain,
|
|
869
|
+
extends: extendsRef,
|
|
870
|
+
plugins: plugins ?? [],
|
|
871
|
+
filesCopied: 0,
|
|
872
|
+
error: "No .templatekeep found in template source"
|
|
873
|
+
};
|
|
874
|
+
const pluginRoutes = {};
|
|
875
|
+
const parentRuntimePlugins = await require_config.buildRuntimePluginsForConfig(parentConfig, sourceDir, "production");
|
|
876
|
+
for (const [key, plugin] of Object.entries(parentRuntimePlugins ?? {})) if (plugin.routes && plugin.routes.length > 0) pluginRoutes[key] = plugin.routes;
|
|
877
|
+
filesCopied = await require_timing.timePhase(timings, "copy files", () => require_cli_init.copyFilteredFiles(sourceDir, targetDir, patterns, {
|
|
878
|
+
withHost,
|
|
879
|
+
plugins,
|
|
880
|
+
pluginRoutes
|
|
881
|
+
}));
|
|
882
|
+
await require_timing.timePhase(timings, "personalize config", () => require_cli_init.personalizeConfig(targetDir, {
|
|
883
|
+
extendsAccount,
|
|
884
|
+
extendsGateway,
|
|
885
|
+
account: account || extendsAccount,
|
|
886
|
+
domain: domain || extendsGateway,
|
|
887
|
+
plugins,
|
|
888
|
+
pluginRoutes,
|
|
889
|
+
workspaceOpts: { sourceDir },
|
|
890
|
+
withHost
|
|
891
|
+
}));
|
|
892
|
+
await require_timing.timePhase(timings, "write snapshot", () => require_cli_init.writeInitSnapshot(targetDir, extendsAccount, extendsGateway, sourceDir, patterns, {
|
|
893
|
+
withHost,
|
|
894
|
+
plugins,
|
|
895
|
+
pluginRoutes
|
|
896
|
+
}));
|
|
897
|
+
}
|
|
939
898
|
const initConfig = await require_timing.timePhase(timings, "resolve config", () => require_config.loadConfig({ cwd: targetDir }));
|
|
940
899
|
if (initConfig?.runtime) await require_timing.timePhase(timings, "generate env/docker", async () => {
|
|
941
900
|
require_infra.writeGeneratedInfra(targetDir, initConfig.runtime);
|
|
@@ -969,11 +928,10 @@ var plugin_default = (0, every_plugin.createPlugin)({
|
|
|
969
928
|
return {
|
|
970
929
|
status: "initialized",
|
|
971
930
|
directory,
|
|
972
|
-
|
|
973
|
-
extendsGateway,
|
|
931
|
+
extendsRef,
|
|
974
932
|
account,
|
|
975
933
|
domain,
|
|
976
|
-
extends:
|
|
934
|
+
extends: extendsRef,
|
|
977
935
|
plugins,
|
|
978
936
|
filesCopied,
|
|
979
937
|
timings
|
|
@@ -982,14 +940,14 @@ var plugin_default = (0, every_plugin.createPlugin)({
|
|
|
982
940
|
await cleanup();
|
|
983
941
|
}
|
|
984
942
|
} catch (error) {
|
|
943
|
+
const extendsRef = input.extends ? input.extends.startsWith("bos://") ? input.extends : `bos://${input.extends}` : "bos://dev.everything.near/everything.dev";
|
|
985
944
|
return {
|
|
986
945
|
status: "error",
|
|
987
946
|
directory: input.directory ?? "",
|
|
988
|
-
|
|
989
|
-
extendsGateway: input.extendsGateway ?? "",
|
|
947
|
+
extendsRef,
|
|
990
948
|
account: input.account,
|
|
991
949
|
domain: input.domain,
|
|
992
|
-
extends:
|
|
950
|
+
extends: extendsRef,
|
|
993
951
|
plugins: input.plugins ?? [],
|
|
994
952
|
filesCopied: 0,
|
|
995
953
|
timings: [],
|