@fedify/init 2.4.0-dev.1794 → 2.4.0-dev.1805

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/ask/kv.js CHANGED
@@ -1,6 +1,6 @@
1
+ import { KV_STORE } from "../const.js";
1
2
  import { printErrorMessage } from "../utils.js";
2
3
  import { isTest, kvStores } from "../lib.js";
3
- import { KV_STORE } from "../const.js";
4
4
  import { select } from "@inquirer/prompts";
5
5
  import { pipe, tap, throwError, unless, when } from "@fxts/core/index.js";
6
6
  //#region src/ask/kv.ts
package/dist/ask/mq.js CHANGED
@@ -1,6 +1,6 @@
1
+ import { MESSAGE_QUEUE } from "../const.js";
1
2
  import { printErrorMessage } from "../utils.js";
2
3
  import { isTest, messageQueues } from "../lib.js";
3
- import { MESSAGE_QUEUE } from "../const.js";
4
4
  import { select } from "@inquirer/prompts";
5
5
  import { pipe, tap, throwError, unless, when } from "@fxts/core/index.js";
6
6
  //#region src/ask/mq.ts
package/dist/ask/pm.js CHANGED
@@ -1,46 +1,64 @@
1
- import { getInstallUrl, isPackageManagerAvailable, kvStores, messageQueues, packageManagers, runtimes } from "../lib.js";
2
1
  import { PACKAGE_MANAGER } from "../const.js";
2
+ import { printErrorMessage } from "../utils.js";
3
+ import { checkAllRuntimes, getInstallUrl, isPackageManagerAvailable, isTest, runtimes } from "../lib.js";
4
+ import { pmToRt } from "../webframeworks/utils.js";
3
5
  import webFrameworks from "../webframeworks/mod.js";
4
- import { pipe, when } from "@fxts/core";
6
+ import process from "node:process";
5
7
  import { select } from "@inquirer/prompts";
6
- import { message } from "@optique/core/message";
8
+ import { message, optionName, text } from "@optique/core/message";
7
9
  import { print } from "@optique/run";
8
10
  //#region src/ask/pm.ts
9
11
  /**
10
12
  * Fills in the package manager by prompting the user if not provided.
11
- * Ensures the selected package manager is compatible with the chosen web framework.
12
- * If the selected package manager is not installed, informs the user and prompts again.
13
+ * Ensures the selected package manager is compatible with the chosen web
14
+ * framework and installed on the system. When an explicitly requested package
15
+ * manager is unavailable, informs the user and prompts again.
13
16
  *
14
17
  * @param options - Initialization options possibly containing a packageManager and webFramework
15
18
  * @returns A promise resolving to options with a guaranteed packageManager
16
19
  */
17
20
  const fillPackageManager = async ({ packageManager, ...options }) => {
18
- const pm = packageManager ?? await askPackageManager(options.webFramework);
19
- if (await isPackageManagerAvailable(pm)) return {
21
+ const choices = await calculateChoices(options.webFramework);
22
+ if (packageManager != null) {
23
+ const choice = choices.find(({ value }) => value === packageManager);
24
+ if (choice.disabled == null) return {
25
+ ...options,
26
+ packageManager
27
+ };
28
+ print(message`${optionName(choice.name)} ${text(choice.disabled)}`);
29
+ if (isTest(options)) process.exit(1);
30
+ }
31
+ return {
20
32
  ...options,
21
- packageManager: pm
33
+ packageManager: await askPackageManager(choices)
22
34
  };
23
- noticeInstallUrl(pm);
24
- return await fillPackageManager(options);
25
35
  };
26
- const askPackageManager = (wf) => select({
36
+ const calculateChoices = async (wf) => {
37
+ const runtimeChecks = await checkAllRuntimes(webFrameworks[wf].minRuntimeVersions);
38
+ const choices = await Promise.all(PACKAGE_MANAGER.map(choicePackageManager(wf, runtimeChecks)));
39
+ if (choices.every((choice) => choice.disabled)) {
40
+ printErrorMessage`No package manager with a supported runtime is available for ${webFrameworks[wf].label}.`;
41
+ process.exit(1);
42
+ }
43
+ return choices;
44
+ };
45
+ const askPackageManager = (choices) => select({
27
46
  message: "Choose the package manager to use",
28
- choices: PACKAGE_MANAGER.map(choicePackageManager(wf))
29
- });
30
- const choicePackageManager = (wf) => (value) => ({
31
- name: isWfSupportsPm(wf, value) ? value : `${value} (not supported with ${webFrameworks[wf].label})`,
32
- value,
33
- disabled: !isWfSupportsPm(wf, value)
47
+ choices
34
48
  });
35
- const isWfSupportsPm = (wf, pm) => webFrameworks[wf].packageManagers.includes(pm);
36
- const noticeInstallUrl = (pm) => {
37
- const label = getLabel(pm);
38
- const url = getInstallUrl(pm);
39
- print(message` Package manager ${label} is not installed.`);
40
- print(message` You can install it from following link: ${url}`);
41
- print(message` or choose another package manager:`);
49
+ const choicePackageManager = (wf, runtimeChecks) => async (value) => {
50
+ const check = runtimeChecks[pmToRt(value)];
51
+ const label = runtimes[pmToRt(value)].label;
52
+ const disabled = !isWfSupportsPm(wf, value) ? `not supported with ${webFrameworks[wf].label}` : check.status === "unsupported" ? `requires ${label} ${check.required} or later (detected: ${check.detected})` : check.status === "missing" ? `requires ${label} which is not installed` : check.status === "malformed" ? `could not detect ${label} version` : pmToRt(value) === "node" && !await isPackageManagerAvailable(value) ? `is not installed; install it from ${getInstallUrl(value)}` : "";
53
+ return disabled === "" ? {
54
+ name: value,
55
+ value
56
+ } : {
57
+ name: value,
58
+ value,
59
+ disabled
60
+ };
42
61
  };
43
- const getLabel = (name) => pipe(name, whenHasLabel(webFrameworks), whenHasLabel(packageManagers), whenHasLabel(messageQueues), whenHasLabel(kvStores), whenHasLabel(runtimes));
44
- const whenHasLabel = (desc) => when((name) => name in desc, (name) => desc[name].label);
62
+ const isWfSupportsPm = (wf, pm) => webFrameworks[wf].packageManagers.includes(pm);
45
63
  //#endregion
46
64
  export { fillPackageManager as default };
package/dist/const.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import kv_default from "./json/kv.js";
2
2
  import mq_default from "./json/mq.js";
3
+ import rt_default from "./json/rt.js";
3
4
  //#region src/const.ts
4
5
  /** All supported package manager identifiers, in display order. */
5
6
  const PACKAGE_MANAGER = [
@@ -26,6 +27,8 @@ const WEB_FRAMEWORK = [
26
27
  const MESSAGE_QUEUE = Object.keys(mq_default);
27
28
  /** All supported key-value store backend identifiers. */
28
29
  const KV_STORE = Object.keys(kv_default);
30
+ /** All supported runtime identifiers. */
31
+ const RUNTIME = Object.keys(rt_default);
29
32
  /**
30
33
  * External database services that need to be running for integration tests.
31
34
  * Used by the test suite to check service availability before running tests.
@@ -37,4 +40,4 @@ const DB_TO_CHECK = [
37
40
  "amqp"
38
41
  ];
39
42
  //#endregion
40
- export { DB_TO_CHECK, KV_STORE, MESSAGE_QUEUE, PACKAGE_MANAGER, WEB_FRAMEWORK };
43
+ export { DB_TO_CHECK, KV_STORE, MESSAGE_QUEUE, PACKAGE_MANAGER, RUNTIME, WEB_FRAMEWORK };
package/dist/deno.js CHANGED
@@ -1,4 +1,4 @@
1
1
  //#region deno.json
2
- var version = "2.4.0-dev.1794+c3923792";
2
+ var version = "2.4.0-dev.1805+bf6d5258";
3
3
  //#endregion
4
4
  export { version };
package/dist/json/rt.js CHANGED
@@ -3,27 +3,20 @@ var rt_default = {
3
3
  deno: {
4
4
  "label": "Deno",
5
5
  "checkCommand": ["deno", "--version"],
6
- "outputPattern": "^deno\\s+\\d+\\.\\d+\\.\\d+\\b"
6
+ "outputPattern": "^deno\\s+(\\d+\\.\\d+\\.\\d+\\b)",
7
+ "minVersion": "2.0.0"
7
8
  },
8
9
  bun: {
9
10
  "label": "Bun",
10
11
  "checkCommand": ["bun", "--version"],
11
- "outputPattern": "^\\d+\\.\\d+\\.\\d+$"
12
+ "outputPattern": "^(\\d+\\.\\d+\\.\\d+\\b)",
13
+ "minVersion": "1.1.0"
12
14
  },
13
- pnpm: {
15
+ node: {
14
16
  "label": "Node.js",
15
17
  "checkCommand": ["node", "--version"],
16
- "outputPattern": "^v\\d+\\.\\d+\\.\\d+$"
17
- },
18
- yarn: {
19
- "label": "Node.js",
20
- "checkCommand": ["node", "--version"],
21
- "outputPattern": "^v\\d+\\.\\d+\\.\\d+$"
22
- },
23
- npm: {
24
- "label": "Node.js",
25
- "checkCommand": ["node", "--version"],
26
- "outputPattern": "^v\\d+\\.\\d+\\.\\d+$"
18
+ "outputPattern": "^v(\\d+\\.\\d+\\.\\d+\\b)",
19
+ "minVersion": "22.0.0"
27
20
  }
28
21
  };
29
22
  //#endregion
package/dist/json/rt.json CHANGED
@@ -5,7 +5,8 @@
5
5
  "deno",
6
6
  "--version"
7
7
  ],
8
- "outputPattern": "^deno\\s+\\d+\\.\\d+\\.\\d+\\b"
8
+ "outputPattern": "^deno\\s+(\\d+\\.\\d+\\.\\d+\\b)",
9
+ "minVersion": "2.0.0"
9
10
  },
10
11
  "bun": {
11
12
  "label": "Bun",
@@ -13,30 +14,16 @@
13
14
  "bun",
14
15
  "--version"
15
16
  ],
16
- "outputPattern": "^\\d+\\.\\d+\\.\\d+$"
17
+ "outputPattern": "^(\\d+\\.\\d+\\.\\d+\\b)",
18
+ "minVersion": "1.1.0"
17
19
  },
18
- "pnpm": {
20
+ "node": {
19
21
  "label": "Node.js",
20
22
  "checkCommand": [
21
23
  "node",
22
24
  "--version"
23
25
  ],
24
- "outputPattern": "^v\\d+\\.\\d+\\.\\d+$"
25
- },
26
- "yarn": {
27
- "label": "Node.js",
28
- "checkCommand": [
29
- "node",
30
- "--version"
31
- ],
32
- "outputPattern": "^v\\d+\\.\\d+\\.\\d+$"
33
- },
34
- "npm": {
35
- "label": "Node.js",
36
- "checkCommand": [
37
- "node",
38
- "--version"
39
- ],
40
- "outputPattern": "^v\\d+\\.\\d+\\.\\d+$"
26
+ "outputPattern": "^v(\\d+\\.\\d+\\.\\d+\\b)",
27
+ "minVersion": "22.0.0"
41
28
  }
42
29
  }
package/dist/lib.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import { version } from "./deno.js";
2
2
  import kv_default from "./json/kv.js";
3
3
  import mq_default from "./json/mq.js";
4
- import pm_default from "./json/pm.js";
5
4
  import rt_default from "./json/rt.js";
5
+ import { RUNTIME } from "./const.js";
6
+ import pm_default from "./json/pm.js";
6
7
  import { CommandError, isNotFoundError, runSubCommand } from "./utils.js";
7
8
  import { entries, evolve, fromEntries, isObject, map, negate, pipe, throwIf } from "@fxts/core";
8
9
  import process from "node:process";
@@ -119,6 +120,81 @@ async function isCommandAvailable({ checkCommand, outputPattern }) {
119
120
  }
120
121
  }
121
122
  /**
123
+ * Compares two dotted version strings segment by segment and returns whether
124
+ * `detected` is higher than or equal to `required`.
125
+ */
126
+ function verifyRuntimeVersion(detected, required) {
127
+ const detectedParts = detected.split(".").map(Number);
128
+ const requiredParts = required.split(".").map(Number);
129
+ for (let i = 0; i < Math.max(detectedParts.length, requiredParts.length); i++) {
130
+ const detectedPart = detectedParts[i] ?? 0;
131
+ const requiredPart = requiredParts[i] ?? 0;
132
+ if (detectedPart > requiredPart) return true;
133
+ if (detectedPart < requiredPart) return false;
134
+ }
135
+ return true;
136
+ }
137
+ /**
138
+ * Runs a runtime's version command and classifies the result as `"ok"`,
139
+ * `"unsupported"`, `"missing"`, or `"malformed"` against its `minVersion`.
140
+ */
141
+ async function checkRuntimeVersion({ checkCommand, outputPattern, minVersion }) {
142
+ try {
143
+ const { stdout } = await $`${checkCommand}`.stdout("piped").spawn();
144
+ logger.debug("The stdout of the command {command} is: {stdout}", {
145
+ command: checkCommand,
146
+ stdout
147
+ });
148
+ const detected = outputPattern.exec(stdout.trim())?.[1] ?? null;
149
+ if (detected == null) return {
150
+ status: "malformed",
151
+ detected: null,
152
+ required: minVersion
153
+ };
154
+ if (!verifyRuntimeVersion(detected, minVersion)) return {
155
+ status: "unsupported",
156
+ detected,
157
+ required: minVersion
158
+ };
159
+ return {
160
+ status: "ok",
161
+ detected,
162
+ required: minVersion
163
+ };
164
+ } catch (error) {
165
+ if (isNotFoundError(error)) return {
166
+ status: "missing",
167
+ detected: null,
168
+ required: minVersion
169
+ };
170
+ logger.debug("The command {command} failed with the error: {error}", {
171
+ command: checkCommand,
172
+ error
173
+ });
174
+ throw error;
175
+ }
176
+ }
177
+ /**
178
+ * Resolves the required version for `runtime` as the higher of its base minimum
179
+ * and an optional framework `override`.
180
+ */
181
+ function resolveRequiredVersion(runtime, override) {
182
+ const base = runtimes[runtime].minVersion;
183
+ return override != null && verifyRuntimeVersion(override, base) ? override : base;
184
+ }
185
+ /**
186
+ * Checks every supported runtime once and returns a map from each runtime
187
+ * identifier to its version-check result, applying framework `overrides` on
188
+ * top of each runtime's base minimum.
189
+ */
190
+ async function checkAllRuntimes(overrides = {}) {
191
+ const checked = await Promise.all(RUNTIME.map(async (runtime) => [runtime, await checkRuntimeVersion({
192
+ ...runtimes[runtime],
193
+ minVersion: resolveRequiredVersion(runtime, overrides[runtime])
194
+ })]));
195
+ return Object.fromEntries(checked);
196
+ }
197
+ /**
122
198
  * Creates a file at the given path with the given content, creating
123
199
  * any necessary parent directories along the way.
124
200
  */
@@ -291,4 +367,4 @@ const isDirectory = async (path) => {
291
367
  /** Returns `true` if the current run is in test mode. */
292
368
  const isTest = ({ testMode }) => testMode;
293
369
  //#endregion
294
- export { PACKAGE_VERSION, createFile, getBuildCommand, getDevCommand, getInstallUrl, isDirectoryEmpty, isPackageManagerAvailable, isTest, kvStores, logger, messageQueues, packageManagers, readTemplate, runtimes, throwUnlessNotExists };
370
+ export { PACKAGE_VERSION, checkAllRuntimes, createFile, getBuildCommand, getDevCommand, getInstallUrl, isDirectoryEmpty, isPackageManagerAvailable, isTest, kvStores, logger, messageQueues, packageManagers, readTemplate, resolveRequiredVersion, runtimes, throwUnlessNotExists, verifyRuntimeVersion };
package/dist/test/db.js CHANGED
@@ -1,5 +1,5 @@
1
- import { printErrorMessage, printMessage } from "../utils.js";
2
1
  import { DB_TO_CHECK } from "../const.js";
2
+ import { printErrorMessage, printMessage } from "../utils.js";
3
3
  import db_to_check_default from "../json/db-to-check.js";
4
4
  import { concat, filter, pipe, toArray, uniq } from "@fxts/core";
5
5
  import { createConnection } from "node:net";
package/dist/utils.js CHANGED
@@ -65,7 +65,7 @@ const createJsonDepthGuard = () => {
65
65
  /** Checks whether a string or array-like value has a length greater than zero. */
66
66
  const notEmpty = (s) => s.length > 0;
67
67
  /** Type guard that checks whether an error is a "file not found" (`ENOENT`) error. */
68
- const isNotFoundError = (e) => isObject(e) && "code" in e && e.code === "ENOENT";
68
+ const isNotFoundError = (e) => isObject(e) && ("code" in e && e.code === "ENOENT" || "exitCode" in e && e.exitCode === 127);
69
69
  /**
70
70
  * Error thrown when a spawned shell command exits with a non-zero code.
71
71
  * Captures stdout, stderr, exit code, and the original command array.
@@ -1,5 +1,5 @@
1
- import { PACKAGE_VERSION, readTemplate } from "../lib.js";
2
1
  import { PACKAGE_MANAGER } from "../const.js";
2
+ import { PACKAGE_VERSION, readTemplate } from "../lib.js";
3
3
  import { "@logtape/logtape" as _logtape_logtape, "npm:@astrojs/node" as npm__astrojs_node, "npm:@deno/astro-adapter" as npm__deno_astro_adapter, "npm:@dotenvx/dotenvx" as npm__dotenvx_dotenvx, "npm:@types/node@22" as npm__types_node_22, "npm:astro" as npm_astro, "npm:create-astro" as npm_create_astro, "npm:oxlint" as npm_oxlint, "npm:prettier" as npm_prettier, "npm:prettier-plugin-astro" as npm_prettier_plugin_astro, "npm:typescript" as npm_typescript } from "../json/deps.js";
4
4
  import { defaultDenoDependencies } from "./const.js";
5
5
  import { getInstruction, pmToRt } from "./utils.js";
@@ -27,6 +27,7 @@ const astroDescription = {
27
27
  label: "Astro",
28
28
  packageManagers: PACKAGE_MANAGER,
29
29
  defaultPort: 4321,
30
+ minRuntimeVersions: { node: "22.12.0" },
30
31
  init: async ({ packageManager: pm }) => {
31
32
  const dependencies = pm === "deno" ? {
32
33
  ...defaultDenoDependencies,
@@ -1,5 +1,5 @@
1
- import { readTemplate } from "../lib.js";
2
1
  import { PACKAGE_MANAGER } from "../const.js";
2
+ import { readTemplate } from "../lib.js";
3
3
  import { "@hongminhee/x-forwarded-fetch" as _hongminhee_x_forwarded_fetch, "npm:@dotenvx/dotenvx" as npm__dotenvx_dotenvx, "npm:@hono/node-server" as npm__hono_node_server, "npm:@types/bun" as npm__types_bun, "npm:@types/node@25" as npm__types_node_25, "npm:tsx" as npm_tsx, "npm:x-forwarded-fetch" as npm_x_forwarded_fetch } from "../json/deps.js";
4
4
  import { defaultDenoDependencies, defaultDevDependencies } from "./const.js";
5
5
  import { getInstruction, nodeBunDevToolTasks, pmToRt } from "./utils.js";
@@ -1,5 +1,5 @@
1
- import { PACKAGE_VERSION, readTemplate } from "../lib.js";
2
1
  import { PACKAGE_MANAGER } from "../const.js";
2
+ import { PACKAGE_VERSION, readTemplate } from "../lib.js";
3
3
  import { "npm:@dotenvx/dotenvx" as npm__dotenvx_dotenvx, "npm:@elysiajs/node" as npm__elysiajs_node, "npm:@sinclair/typebox" as npm__sinclair_typebox, "npm:@types/bun" as npm__types_bun, "npm:@types/node@25" as npm__types_node_25, "npm:elysia" as npm_elysia, "npm:openapi-types" as npm_openapi_types, "npm:tsx" as npm_tsx, "npm:typescript" as npm_typescript } from "../json/deps.js";
4
4
  import { defaultDenoDependencies, defaultDevDependencies } from "./const.js";
5
5
  import { getInstruction, nodeBunDevToolTasks, pmToRt } from "./utils.js";
@@ -1,5 +1,5 @@
1
- import { PACKAGE_VERSION, readTemplate } from "../lib.js";
2
1
  import { PACKAGE_MANAGER } from "../const.js";
2
+ import { PACKAGE_VERSION, readTemplate } from "../lib.js";
3
3
  import { "npm:@dotenvx/dotenvx" as npm__dotenvx_dotenvx, "npm:@types/bun" as npm__types_bun, "npm:@types/express" as npm__types_express, "npm:express" as npm_express, "npm:tsx" as npm_tsx } from "../json/deps.js";
4
4
  import { defaultDenoDependencies, defaultDevDependencies } from "./const.js";
5
5
  import { getInstruction, nodeBunDevToolTasks, pmToRt } from "./utils.js";
@@ -1,6 +1,6 @@
1
+ import { PACKAGE_MANAGER } from "../const.js";
1
2
  import { replace } from "../utils.js";
2
3
  import { PACKAGE_VERSION, readTemplate } from "../lib.js";
3
- import { PACKAGE_MANAGER } from "../const.js";
4
4
  import { "@hongminhee/x-forwarded-fetch" as _hongminhee_x_forwarded_fetch, "@hono/hono" as _hono_hono, "npm:@dotenvx/dotenvx" as npm__dotenvx_dotenvx, "npm:@hono/node-server" as npm__hono_node_server, "npm:@types/bun" as npm__types_bun, "npm:hono" as npm_hono, "npm:tsx" as npm_tsx, "npm:x-forwarded-fetch" as npm_x_forwarded_fetch } from "../json/deps.js";
5
5
  import { defaultDenoDependencies, defaultDevDependencies } from "./const.js";
6
6
  import { getInstruction, nodeBunDevToolTasks, pmToRt } from "./utils.js";
@@ -1,5 +1,5 @@
1
- import { PACKAGE_VERSION, readTemplate } from "../lib.js";
2
1
  import { PACKAGE_MANAGER } from "../const.js";
2
+ import { PACKAGE_VERSION, readTemplate } from "../lib.js";
3
3
  import { "npm:@types/node@20" as npm__types_node_20 } from "../json/deps.js";
4
4
  import { defaultDenoDependencies, defaultDevDependencies } from "./const.js";
5
5
  import { getInstruction, getNodeBunDevToolTasks } from "./utils.js";
@@ -1,5 +1,5 @@
1
- import { PACKAGE_VERSION, readTemplate } from "../lib.js";
2
1
  import { PACKAGE_MANAGER } from "../const.js";
2
+ import { PACKAGE_VERSION, readTemplate } from "../lib.js";
3
3
  import { defaultDenoDependencies, defaultDevDependencies } from "./const.js";
4
4
  import { getInstruction, getNodeBunDevToolTasks } from "./utils.js";
5
5
  //#region src/webframeworks/nitro.ts
@@ -1,5 +1,5 @@
1
- import { PACKAGE_VERSION, readTemplate } from "../lib.js";
2
1
  import { PACKAGE_MANAGER } from "../const.js";
2
+ import { PACKAGE_VERSION, readTemplate } from "../lib.js";
3
3
  import { "npm:@types/node@25" as npm__types_node_25, "npm:typescript" as npm_typescript } from "../json/deps.js";
4
4
  import { defaultDenoDependencies, defaultDevDependencies } from "./const.js";
5
5
  import { getInstruction, getNodeBunDevToolTasks } from "./utils.js";
@@ -1,5 +1,5 @@
1
- import { PACKAGE_VERSION, readTemplate } from "../lib.js";
2
1
  import { PACKAGE_MANAGER } from "../const.js";
2
+ import { PACKAGE_VERSION, readTemplate } from "../lib.js";
3
3
  import { "npm:@dotenvx/dotenvx" as npm__dotenvx_dotenvx, "npm:@solidjs/router" as npm__solidjs_router, "npm:@solidjs/start" as npm__solidjs_start, "npm:@types/node@22" as npm__types_node_22, "npm:solid-js" as npm_solid_js, "npm:typescript" as npm_typescript, "npm:vinxi" as npm_vinxi } from "../json/deps.js";
4
4
  import { defaultDenoDependencies, defaultDevDependencies } from "./const.js";
5
5
  import { getInstruction, nodeBunDevToolTasks, pmToRt } from "./utils.js";
@@ -1,5 +1,5 @@
1
- import { PACKAGE_VERSION, readTemplate } from "../lib.js";
2
1
  import { PACKAGE_MANAGER } from "../const.js";
2
+ import { PACKAGE_VERSION, readTemplate } from "../lib.js";
3
3
  import { "npm:@dotenvx/dotenvx" as npm__dotenvx_dotenvx, "npm:@types/node@25" as npm__types_node_25, "npm:typescript" as npm_typescript } from "../json/deps.js";
4
4
  import { defaultDenoDependencies, defaultDevDependencies } from "./const.js";
5
5
  import { getInstruction, nodeBunDevToolTasks, pmToRt } from "./utils.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fedify/init",
3
- "version": "2.4.0-dev.1794+c3923792",
3
+ "version": "2.4.0-dev.1805+bf6d5258",
4
4
  "description": "Project initializer for Fedify",
5
5
  "keywords": [
6
6
  "fedify",