@fedify/init 2.0.0-dev.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/LICENSE +20 -0
- package/README.md +93 -0
- package/dist/action/configs.mjs +89 -0
- package/dist/action/const.mjs +7 -0
- package/dist/action/deps.mjs +50 -0
- package/dist/action/dir.mjs +13 -0
- package/dist/action/env.mjs +10 -0
- package/dist/action/install.mjs +17 -0
- package/dist/action/mod.d.mts +23 -0
- package/dist/action/mod.mjs +38 -0
- package/dist/action/notice.mjs +52 -0
- package/dist/action/patch.mjs +143 -0
- package/dist/action/precommand.mjs +25 -0
- package/dist/action/recommend.mjs +21 -0
- package/dist/action/set.mjs +28 -0
- package/dist/action/templates.mjs +55 -0
- package/dist/action/utils.mjs +47 -0
- package/dist/ask/dir.mjs +79 -0
- package/dist/ask/kv.mjs +41 -0
- package/dist/ask/mod.mjs +13 -0
- package/dist/ask/mq.mjs +43 -0
- package/dist/ask/pm.mjs +49 -0
- package/dist/ask/wf.mjs +26 -0
- package/dist/command.d.mts +41 -0
- package/dist/command.mjs +44 -0
- package/dist/const.d.mts +4 -0
- package/dist/const.mjs +34 -0
- package/dist/deno.mjs +5 -0
- package/dist/json/biome.json +14 -0
- package/dist/json/biome.mjs +14 -0
- package/dist/json/db-to-check.json +17 -0
- package/dist/json/db-to-check.mjs +21 -0
- package/dist/json/kv.json +39 -0
- package/dist/json/kv.mjs +47 -0
- package/dist/json/mq.json +95 -0
- package/dist/json/mq.mjs +65 -0
- package/dist/json/pm.json +47 -0
- package/dist/json/pm.mjs +36 -0
- package/dist/json/rt.json +42 -0
- package/dist/json/rt.mjs +31 -0
- package/dist/json/vscode-settings-for-deno.json +43 -0
- package/dist/json/vscode-settings-for-deno.mjs +39 -0
- package/dist/json/vscode-settings.json +41 -0
- package/dist/json/vscode-settings.mjs +37 -0
- package/dist/lib.mjs +129 -0
- package/dist/mod.d.mts +3 -0
- package/dist/mod.mjs +4 -0
- package/dist/templates/defaults/eslint.config.ts.tpl +3 -0
- package/dist/templates/defaults/federation.ts.tpl +24 -0
- package/dist/templates/defaults/logging.ts.tpl +23 -0
- package/dist/templates/elysia/index/bun.ts.tpl +13 -0
- package/dist/templates/elysia/index/deno.ts.tpl +19 -0
- package/dist/templates/elysia/index/node.ts.tpl +14 -0
- package/dist/templates/express/app.ts.tpl +16 -0
- package/dist/templates/express/index.ts.tpl +6 -0
- package/dist/templates/hono/app.tsx.tpl +14 -0
- package/dist/templates/hono/index/bun.ts.tpl +10 -0
- package/dist/templates/hono/index/deno.ts.tpl +13 -0
- package/dist/templates/hono/index/node.ts.tpl +14 -0
- package/dist/templates/next/middleware.ts.tpl +45 -0
- package/dist/templates/nitro/.env.test.tpl +1 -0
- package/dist/templates/nitro/nitro.config.ts.tpl +14 -0
- package/dist/templates/nitro/server/error.ts.tpl +3 -0
- package/dist/templates/nitro/server/middleware/federation.ts.tpl +8 -0
- package/dist/test/action.mjs +15 -0
- package/dist/test/create.mjs +92 -0
- package/dist/test/db.mjs +42 -0
- package/dist/test/fill.mjs +29 -0
- package/dist/test/lookup.mjs +183 -0
- package/dist/test/mod.d.mts +1 -0
- package/dist/test/mod.mjs +16 -0
- package/dist/test/run.mjs +22 -0
- package/dist/test/utils.mjs +15 -0
- package/dist/types.d.mts +50 -0
- package/dist/utils.d.mts +9 -0
- package/dist/utils.mjs +102 -0
- package/dist/webframeworks.mjs +220 -0
- package/package.json +66 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
{
|
|
2
|
+
"redis": {
|
|
3
|
+
"label": "Redis",
|
|
4
|
+
"packageManagers": [
|
|
5
|
+
"deno",
|
|
6
|
+
"bun",
|
|
7
|
+
"npm",
|
|
8
|
+
"yarn",
|
|
9
|
+
"pnpm"
|
|
10
|
+
],
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"npm:ioredis": "^5.4.1"
|
|
13
|
+
},
|
|
14
|
+
"imports": {
|
|
15
|
+
"@fedify/redis": {
|
|
16
|
+
"RedisMessageQueue": "RedisMessageQueue"
|
|
17
|
+
},
|
|
18
|
+
"ioredis": {
|
|
19
|
+
"Redis": "Redis"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"object": "new RedisMessageQueue(() => new Redis(process.env.REDIS_URL))",
|
|
23
|
+
"env": {
|
|
24
|
+
"REDIS_URL": "redis://localhost:6379"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"postgres": {
|
|
28
|
+
"label": "PostgreSQL",
|
|
29
|
+
"packageManagers": [
|
|
30
|
+
"deno",
|
|
31
|
+
"bun",
|
|
32
|
+
"npm",
|
|
33
|
+
"yarn",
|
|
34
|
+
"pnpm"
|
|
35
|
+
],
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"npm:postgres": "^3.4.5"
|
|
38
|
+
},
|
|
39
|
+
"imports": {
|
|
40
|
+
"@fedify/postgres": {
|
|
41
|
+
"PostgresMessageQueue": "PostgresMessageQueue"
|
|
42
|
+
},
|
|
43
|
+
"postgres": {
|
|
44
|
+
"default": "postgres"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"object": "new PostgresMessageQueue(postgres(process.env.POSTGRES_URL))",
|
|
48
|
+
"env": {
|
|
49
|
+
"POSTGRES_URL": "postgres://postgres@localhost:5432/postgres"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"amqp": {
|
|
53
|
+
"label": "AMQP (e.g., RabbitMQ)",
|
|
54
|
+
"packageManagers": [
|
|
55
|
+
"deno",
|
|
56
|
+
"bun",
|
|
57
|
+
"npm",
|
|
58
|
+
"yarn",
|
|
59
|
+
"pnpm"
|
|
60
|
+
],
|
|
61
|
+
"dependencies": {
|
|
62
|
+
"npm:amqplib": "^0.10.4"
|
|
63
|
+
},
|
|
64
|
+
"devDependencies": {
|
|
65
|
+
"npm:@types/amqplib": "^0.10.5"
|
|
66
|
+
},
|
|
67
|
+
"imports": {
|
|
68
|
+
"@fedify/amqp": {
|
|
69
|
+
"AmqpMessageQueue": "AmqpMessageQueue"
|
|
70
|
+
},
|
|
71
|
+
"amqplib": {
|
|
72
|
+
"connect": "connect"
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"object": "new AmqpMessageQueue(await connect(process.env.AMQP_URL))",
|
|
76
|
+
"env": {
|
|
77
|
+
"AMQP_URL": "amqp://localhost"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"denokv": {
|
|
81
|
+
"label": "Deno KV",
|
|
82
|
+
"packageManagers": [
|
|
83
|
+
"deno"
|
|
84
|
+
],
|
|
85
|
+
"imports": {
|
|
86
|
+
"@fedify/denokv": {
|
|
87
|
+
"DenoKvMessageQueue": "DenoKvMessageQueue"
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"object": "new DenoKvMessageQueue(await Deno.openKv())",
|
|
91
|
+
"denoUnstable": [
|
|
92
|
+
"kv"
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
}
|
package/dist/json/mq.mjs
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
//#region src/json/mq.json
|
|
2
|
+
var mq_default = {
|
|
3
|
+
redis: {
|
|
4
|
+
"label": "Redis",
|
|
5
|
+
"packageManagers": [
|
|
6
|
+
"deno",
|
|
7
|
+
"bun",
|
|
8
|
+
"npm",
|
|
9
|
+
"yarn",
|
|
10
|
+
"pnpm"
|
|
11
|
+
],
|
|
12
|
+
"dependencies": { "npm:ioredis": "^5.4.1" },
|
|
13
|
+
"imports": {
|
|
14
|
+
"@fedify/redis": { "RedisMessageQueue": "RedisMessageQueue" },
|
|
15
|
+
"ioredis": { "Redis": "Redis" }
|
|
16
|
+
},
|
|
17
|
+
"object": "new RedisMessageQueue(() => new Redis(process.env.REDIS_URL))",
|
|
18
|
+
"env": { "REDIS_URL": "redis://localhost:6379" }
|
|
19
|
+
},
|
|
20
|
+
postgres: {
|
|
21
|
+
"label": "PostgreSQL",
|
|
22
|
+
"packageManagers": [
|
|
23
|
+
"deno",
|
|
24
|
+
"bun",
|
|
25
|
+
"npm",
|
|
26
|
+
"yarn",
|
|
27
|
+
"pnpm"
|
|
28
|
+
],
|
|
29
|
+
"dependencies": { "npm:postgres": "^3.4.5" },
|
|
30
|
+
"imports": {
|
|
31
|
+
"@fedify/postgres": { "PostgresMessageQueue": "PostgresMessageQueue" },
|
|
32
|
+
"postgres": { "default": "postgres" }
|
|
33
|
+
},
|
|
34
|
+
"object": "new PostgresMessageQueue(postgres(process.env.POSTGRES_URL))",
|
|
35
|
+
"env": { "POSTGRES_URL": "postgres://postgres@localhost:5432/postgres" }
|
|
36
|
+
},
|
|
37
|
+
amqp: {
|
|
38
|
+
"label": "AMQP (e.g., RabbitMQ)",
|
|
39
|
+
"packageManagers": [
|
|
40
|
+
"deno",
|
|
41
|
+
"bun",
|
|
42
|
+
"npm",
|
|
43
|
+
"yarn",
|
|
44
|
+
"pnpm"
|
|
45
|
+
],
|
|
46
|
+
"dependencies": { "npm:amqplib": "^0.10.4" },
|
|
47
|
+
"devDependencies": { "npm:@types/amqplib": "^0.10.5" },
|
|
48
|
+
"imports": {
|
|
49
|
+
"@fedify/amqp": { "AmqpMessageQueue": "AmqpMessageQueue" },
|
|
50
|
+
"amqplib": { "connect": "connect" }
|
|
51
|
+
},
|
|
52
|
+
"object": "new AmqpMessageQueue(await connect(process.env.AMQP_URL))",
|
|
53
|
+
"env": { "AMQP_URL": "amqp://localhost" }
|
|
54
|
+
},
|
|
55
|
+
denokv: {
|
|
56
|
+
"label": "Deno KV",
|
|
57
|
+
"packageManagers": ["deno"],
|
|
58
|
+
"imports": { "@fedify/denokv": { "DenoKvMessageQueue": "DenoKvMessageQueue" } },
|
|
59
|
+
"object": "new DenoKvMessageQueue(await Deno.openKv())",
|
|
60
|
+
"denoUnstable": ["kv"]
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
//#endregion
|
|
65
|
+
export { mq_default as default };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"deno": {
|
|
3
|
+
"label": "deno",
|
|
4
|
+
"checkCommand": [
|
|
5
|
+
"deno",
|
|
6
|
+
"--version"
|
|
7
|
+
],
|
|
8
|
+
"outputPattern": "^deno\\s+\\d+\\.\\d+\\.\\d+\\b",
|
|
9
|
+
"installUrl": "https://docs.deno.com/runtime/getting_started/installation"
|
|
10
|
+
},
|
|
11
|
+
"bun": {
|
|
12
|
+
"label": "bun",
|
|
13
|
+
"checkCommand": [
|
|
14
|
+
"bun",
|
|
15
|
+
"--version"
|
|
16
|
+
],
|
|
17
|
+
"outputPattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
18
|
+
"installUrl": "https://bun.sh/docs/installation"
|
|
19
|
+
},
|
|
20
|
+
"npm": {
|
|
21
|
+
"label": "npm",
|
|
22
|
+
"checkCommand": [
|
|
23
|
+
"npm",
|
|
24
|
+
"--version"
|
|
25
|
+
],
|
|
26
|
+
"outputPattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
27
|
+
"installUrl": "https://docs.npmjs.com/downloading-and-installing-node-js-and-npm"
|
|
28
|
+
},
|
|
29
|
+
"yarn": {
|
|
30
|
+
"label": "Yarn",
|
|
31
|
+
"checkCommand": [
|
|
32
|
+
"yarn",
|
|
33
|
+
"--version"
|
|
34
|
+
],
|
|
35
|
+
"outputPattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
36
|
+
"installUrl": "https://classic.yarnpkg.com/en/docs/install/#windows-stable"
|
|
37
|
+
},
|
|
38
|
+
"pnpm": {
|
|
39
|
+
"label": "pnpm",
|
|
40
|
+
"checkCommand": [
|
|
41
|
+
"pnpm",
|
|
42
|
+
"--version"
|
|
43
|
+
],
|
|
44
|
+
"outputPattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
45
|
+
"installUrl": "https://pnpm.io/installation"
|
|
46
|
+
}
|
|
47
|
+
}
|
package/dist/json/pm.mjs
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
//#region src/json/pm.json
|
|
2
|
+
var pm_default = {
|
|
3
|
+
deno: {
|
|
4
|
+
"label": "deno",
|
|
5
|
+
"checkCommand": ["deno", "--version"],
|
|
6
|
+
"outputPattern": "^deno\\s+\\d+\\.\\d+\\.\\d+\\b",
|
|
7
|
+
"installUrl": "https://docs.deno.com/runtime/getting_started/installation"
|
|
8
|
+
},
|
|
9
|
+
bun: {
|
|
10
|
+
"label": "bun",
|
|
11
|
+
"checkCommand": ["bun", "--version"],
|
|
12
|
+
"outputPattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
13
|
+
"installUrl": "https://bun.sh/docs/installation"
|
|
14
|
+
},
|
|
15
|
+
npm: {
|
|
16
|
+
"label": "npm",
|
|
17
|
+
"checkCommand": ["npm", "--version"],
|
|
18
|
+
"outputPattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
19
|
+
"installUrl": "https://docs.npmjs.com/downloading-and-installing-node-js-and-npm"
|
|
20
|
+
},
|
|
21
|
+
yarn: {
|
|
22
|
+
"label": "Yarn",
|
|
23
|
+
"checkCommand": ["yarn", "--version"],
|
|
24
|
+
"outputPattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
25
|
+
"installUrl": "https://classic.yarnpkg.com/en/docs/install/#windows-stable"
|
|
26
|
+
},
|
|
27
|
+
pnpm: {
|
|
28
|
+
"label": "pnpm",
|
|
29
|
+
"checkCommand": ["pnpm", "--version"],
|
|
30
|
+
"outputPattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
31
|
+
"installUrl": "https://pnpm.io/installation"
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
//#endregion
|
|
36
|
+
export { pm_default as default };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"deno": {
|
|
3
|
+
"label": "Deno",
|
|
4
|
+
"checkCommand": [
|
|
5
|
+
"deno",
|
|
6
|
+
"--version"
|
|
7
|
+
],
|
|
8
|
+
"outputPattern": "^deno\\s+\\d+\\.\\d+\\.\\d+\\b"
|
|
9
|
+
},
|
|
10
|
+
"bun": {
|
|
11
|
+
"label": "Bun",
|
|
12
|
+
"checkCommand": [
|
|
13
|
+
"bun",
|
|
14
|
+
"--version"
|
|
15
|
+
],
|
|
16
|
+
"outputPattern": "^\\d+\\.\\d+\\.\\d+$"
|
|
17
|
+
},
|
|
18
|
+
"pnpm": {
|
|
19
|
+
"label": "Node.js",
|
|
20
|
+
"checkCommand": [
|
|
21
|
+
"node",
|
|
22
|
+
"--version"
|
|
23
|
+
],
|
|
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+$"
|
|
41
|
+
}
|
|
42
|
+
}
|
package/dist/json/rt.mjs
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//#region src/json/rt.json
|
|
2
|
+
var rt_default = {
|
|
3
|
+
deno: {
|
|
4
|
+
"label": "Deno",
|
|
5
|
+
"checkCommand": ["deno", "--version"],
|
|
6
|
+
"outputPattern": "^deno\\s+\\d+\\.\\d+\\.\\d+\\b"
|
|
7
|
+
},
|
|
8
|
+
bun: {
|
|
9
|
+
"label": "Bun",
|
|
10
|
+
"checkCommand": ["bun", "--version"],
|
|
11
|
+
"outputPattern": "^\\d+\\.\\d+\\.\\d+$"
|
|
12
|
+
},
|
|
13
|
+
pnpm: {
|
|
14
|
+
"label": "Node.js",
|
|
15
|
+
"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+$"
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
//#endregion
|
|
31
|
+
export { rt_default as default };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"deno.enable": true,
|
|
3
|
+
"deno.unstable": true,
|
|
4
|
+
"editor.detectIndentation": false,
|
|
5
|
+
"editor.indentSize": 2,
|
|
6
|
+
"editor.insertSpaces": true,
|
|
7
|
+
"[javascript]": {
|
|
8
|
+
"editor.defaultFormatter": "denoland.vscode-deno",
|
|
9
|
+
"editor.formatOnSave": true,
|
|
10
|
+
"editor.codeActionsOnSave": {
|
|
11
|
+
"source.sortImports": "always"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"[javascriptreact]": {
|
|
15
|
+
"editor.defaultFormatter": "denoland.vscode-deno",
|
|
16
|
+
"editor.formatOnSave": true,
|
|
17
|
+
"editor.codeActionsOnSave": {
|
|
18
|
+
"source.sortImports": "always"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"[json]": {
|
|
22
|
+
"editor.defaultFormatter": "vscode.json-language-features",
|
|
23
|
+
"editor.formatOnSave": true
|
|
24
|
+
},
|
|
25
|
+
"[jsonc]": {
|
|
26
|
+
"editor.defaultFormatter": "vscode.json-language-features",
|
|
27
|
+
"editor.formatOnSave": true
|
|
28
|
+
},
|
|
29
|
+
"[typescript]": {
|
|
30
|
+
"editor.defaultFormatter": "denoland.vscode-deno",
|
|
31
|
+
"editor.formatOnSave": true,
|
|
32
|
+
"editor.codeActionsOnSave": {
|
|
33
|
+
"source.sortImports": "always"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"[typescriptreact]": {
|
|
37
|
+
"editor.defaultFormatter": "denoland.vscode-deno",
|
|
38
|
+
"editor.formatOnSave": true,
|
|
39
|
+
"editor.codeActionsOnSave": {
|
|
40
|
+
"source.sortImports": "always"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
//#region src/json/vscode-settings-for-deno.json
|
|
2
|
+
var vscode_settings_for_deno_default = {
|
|
3
|
+
"deno.enable": true,
|
|
4
|
+
"deno.unstable": true,
|
|
5
|
+
"editor.detectIndentation": false,
|
|
6
|
+
"editor.indentSize": 2,
|
|
7
|
+
"editor.insertSpaces": true,
|
|
8
|
+
"[javascript]": {
|
|
9
|
+
"editor.defaultFormatter": "denoland.vscode-deno",
|
|
10
|
+
"editor.formatOnSave": true,
|
|
11
|
+
"editor.codeActionsOnSave": { "source.sortImports": "always" }
|
|
12
|
+
},
|
|
13
|
+
"[javascriptreact]": {
|
|
14
|
+
"editor.defaultFormatter": "denoland.vscode-deno",
|
|
15
|
+
"editor.formatOnSave": true,
|
|
16
|
+
"editor.codeActionsOnSave": { "source.sortImports": "always" }
|
|
17
|
+
},
|
|
18
|
+
"[json]": {
|
|
19
|
+
"editor.defaultFormatter": "vscode.json-language-features",
|
|
20
|
+
"editor.formatOnSave": true
|
|
21
|
+
},
|
|
22
|
+
"[jsonc]": {
|
|
23
|
+
"editor.defaultFormatter": "vscode.json-language-features",
|
|
24
|
+
"editor.formatOnSave": true
|
|
25
|
+
},
|
|
26
|
+
"[typescript]": {
|
|
27
|
+
"editor.defaultFormatter": "denoland.vscode-deno",
|
|
28
|
+
"editor.formatOnSave": true,
|
|
29
|
+
"editor.codeActionsOnSave": { "source.sortImports": "always" }
|
|
30
|
+
},
|
|
31
|
+
"[typescriptreact]": {
|
|
32
|
+
"editor.defaultFormatter": "denoland.vscode-deno",
|
|
33
|
+
"editor.formatOnSave": true,
|
|
34
|
+
"editor.codeActionsOnSave": { "source.sortImports": "always" }
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
//#endregion
|
|
39
|
+
export { vscode_settings_for_deno_default as default };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"editor.detectIndentation": false,
|
|
3
|
+
"editor.indentSize": 2,
|
|
4
|
+
"editor.insertSpaces": true,
|
|
5
|
+
"[javascript]": {
|
|
6
|
+
"editor.defaultFormatter": "biomejs.biome",
|
|
7
|
+
"editor.formatOnSave": true,
|
|
8
|
+
"editor.codeActionsOnSave": {
|
|
9
|
+
"source.organizeImports.biome": "always"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"[javascriptreact]": {
|
|
13
|
+
"editor.defaultFormatter": "biomejs.biome",
|
|
14
|
+
"editor.formatOnSave": true,
|
|
15
|
+
"editor.codeActionsOnSave": {
|
|
16
|
+
"source.organizeImports.biome": "always"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"[json]": {
|
|
20
|
+
"editor.defaultFormatter": "biomejs.biome",
|
|
21
|
+
"editor.formatOnSave": true
|
|
22
|
+
},
|
|
23
|
+
"[jsonc]": {
|
|
24
|
+
"editor.defaultFormatter": "biomejs.biome",
|
|
25
|
+
"editor.formatOnSave": true
|
|
26
|
+
},
|
|
27
|
+
"[typescript]": {
|
|
28
|
+
"editor.defaultFormatter": "biomejs.biome",
|
|
29
|
+
"editor.formatOnSave": true,
|
|
30
|
+
"editor.codeActionsOnSave": {
|
|
31
|
+
"source.organizeImports.biome": "always"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"[typescriptreact]": {
|
|
35
|
+
"editor.defaultFormatter": "biomejs.biome",
|
|
36
|
+
"editor.formatOnSave": true,
|
|
37
|
+
"editor.codeActionsOnSave": {
|
|
38
|
+
"source.organizeImports.biome": "always"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
//#region src/json/vscode-settings.json
|
|
2
|
+
var vscode_settings_default = {
|
|
3
|
+
"editor.detectIndentation": false,
|
|
4
|
+
"editor.indentSize": 2,
|
|
5
|
+
"editor.insertSpaces": true,
|
|
6
|
+
"[javascript]": {
|
|
7
|
+
"editor.defaultFormatter": "biomejs.biome",
|
|
8
|
+
"editor.formatOnSave": true,
|
|
9
|
+
"editor.codeActionsOnSave": { "source.organizeImports.biome": "always" }
|
|
10
|
+
},
|
|
11
|
+
"[javascriptreact]": {
|
|
12
|
+
"editor.defaultFormatter": "biomejs.biome",
|
|
13
|
+
"editor.formatOnSave": true,
|
|
14
|
+
"editor.codeActionsOnSave": { "source.organizeImports.biome": "always" }
|
|
15
|
+
},
|
|
16
|
+
"[json]": {
|
|
17
|
+
"editor.defaultFormatter": "biomejs.biome",
|
|
18
|
+
"editor.formatOnSave": true
|
|
19
|
+
},
|
|
20
|
+
"[jsonc]": {
|
|
21
|
+
"editor.defaultFormatter": "biomejs.biome",
|
|
22
|
+
"editor.formatOnSave": true
|
|
23
|
+
},
|
|
24
|
+
"[typescript]": {
|
|
25
|
+
"editor.defaultFormatter": "biomejs.biome",
|
|
26
|
+
"editor.formatOnSave": true,
|
|
27
|
+
"editor.codeActionsOnSave": { "source.organizeImports.biome": "always" }
|
|
28
|
+
},
|
|
29
|
+
"[typescriptreact]": {
|
|
30
|
+
"editor.defaultFormatter": "biomejs.biome",
|
|
31
|
+
"editor.formatOnSave": true,
|
|
32
|
+
"editor.codeActionsOnSave": { "source.organizeImports.biome": "always" }
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
//#endregion
|
|
37
|
+
export { vscode_settings_default as default };
|
package/dist/lib.mjs
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { isNotFoundError, runSubCommand } from "./utils.mjs";
|
|
2
|
+
import { version } from "./deno.mjs";
|
|
3
|
+
import kv_default from "./json/kv.mjs";
|
|
4
|
+
import mq_default from "./json/mq.mjs";
|
|
5
|
+
import pm_default from "./json/pm.mjs";
|
|
6
|
+
import rt_default from "./json/rt.mjs";
|
|
7
|
+
import { entries, evolve, fromEntries, isObject, map, negate, pipe, throwIf } from "@fxts/core";
|
|
8
|
+
import process from "node:process";
|
|
9
|
+
import { commandLine, message } from "@optique/core/message";
|
|
10
|
+
import { toMerged } from "es-toolkit";
|
|
11
|
+
import { getLogger } from "@logtape/logtape";
|
|
12
|
+
import { readFileSync } from "node:fs";
|
|
13
|
+
import { mkdir, readdir, writeFile } from "node:fs/promises";
|
|
14
|
+
import { dirname, join as join$1 } from "node:path";
|
|
15
|
+
|
|
16
|
+
//#region src/lib.ts
|
|
17
|
+
const PACKAGE_VERSION = version;
|
|
18
|
+
const logger = getLogger([
|
|
19
|
+
"fedify",
|
|
20
|
+
"cli",
|
|
21
|
+
"init"
|
|
22
|
+
]);
|
|
23
|
+
const addFedifyDeps = (json) => Object.fromEntries(Object.entries(json).map(([key, value]) => [key, toMerged(value, { dependencies: { [`@fedify/${key}`]: PACKAGE_VERSION } })]));
|
|
24
|
+
const kvStores = addFedifyDeps(kv_default);
|
|
25
|
+
const messageQueues = addFedifyDeps(mq_default);
|
|
26
|
+
const toRegExp = (str) => new RegExp(str);
|
|
27
|
+
const convertPattern = (obj) => pipe(obj, entries, map(([key, value]) => [key, evolve({ outputPattern: toRegExp })(value)]), fromEntries);
|
|
28
|
+
const packageManagers = convertPattern(pm_default);
|
|
29
|
+
const runtimes = convertPattern(rt_default);
|
|
30
|
+
const getInstallUrl = (pm) => packageManagers[pm].installUrl;
|
|
31
|
+
async function isPackageManagerAvailable(pm) {
|
|
32
|
+
if (await isCommandAvailable(packageManagers[pm])) return true;
|
|
33
|
+
if (process.platform !== "win32") return false;
|
|
34
|
+
const cmd = [packageManagers[pm].checkCommand[0] + ".cmd", ...packageManagers[pm].checkCommand.slice(1)];
|
|
35
|
+
if (await isCommandAvailable({
|
|
36
|
+
...packageManagers[pm],
|
|
37
|
+
checkCommand: cmd
|
|
38
|
+
})) return true;
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
const readTemplate = (templatePath) => readFileSync(join$1(import.meta.dirname, "templates", ...(templatePath + ".tpl").split("/")), "utf8");
|
|
42
|
+
const getInstruction = (pm, port) => message`
|
|
43
|
+
To start the server, run the following command:
|
|
44
|
+
|
|
45
|
+
${commandLine(getDevCommand(pm))}
|
|
46
|
+
|
|
47
|
+
Then, try look up an actor from your server:
|
|
48
|
+
|
|
49
|
+
${commandLine(`fedify lookup http://localhost:${port}/users/john`)}
|
|
50
|
+
|
|
51
|
+
`;
|
|
52
|
+
const getDevCommand = (pm) => pm === "deno" ? "deno task dev" : pm === "bun" ? "bun dev" : `${pm} run dev`;
|
|
53
|
+
async function isCommandAvailable({ checkCommand, outputPattern }) {
|
|
54
|
+
try {
|
|
55
|
+
const { stdout } = await runSubCommand(checkCommand, { stdio: [
|
|
56
|
+
null,
|
|
57
|
+
"pipe",
|
|
58
|
+
null
|
|
59
|
+
] });
|
|
60
|
+
logger.debug("The stdout of the command {command} is: {stdout}", {
|
|
61
|
+
command: checkCommand,
|
|
62
|
+
stdout
|
|
63
|
+
});
|
|
64
|
+
return outputPattern.exec(stdout.trim()) ? true : false;
|
|
65
|
+
} catch (error) {
|
|
66
|
+
if (isNotFoundError(error)) return false;
|
|
67
|
+
logger.debug("The command {command} failed with the error: {error}", {
|
|
68
|
+
command: checkCommand,
|
|
69
|
+
error
|
|
70
|
+
});
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
async function createFile(path, content) {
|
|
75
|
+
await mkdir(dirname(path), { recursive: true });
|
|
76
|
+
await writeFile(path, content);
|
|
77
|
+
}
|
|
78
|
+
const isNotExistsError = (e) => isObject(e) && "code" in e && e.code === "ENOENT";
|
|
79
|
+
const throwUnlessNotExists = throwIf(negate(isNotExistsError));
|
|
80
|
+
const isDirectoryEmpty = async (path) => {
|
|
81
|
+
try {
|
|
82
|
+
return (await readdir(path)).length === 0;
|
|
83
|
+
} catch (e) {
|
|
84
|
+
throwUnlessNotExists(e);
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Converts a package manager to its corresponding runtime.
|
|
90
|
+
* @param pm - The package manager (deno, bun, npm, yarn, pnpm)
|
|
91
|
+
* @returns The runtime name (deno, bun, or node)
|
|
92
|
+
*/
|
|
93
|
+
const packageManagerToRuntime = (pm) => pm === "deno" ? "deno" : pm === "bun" ? "bun" : "node";
|
|
94
|
+
const getNextInitCommand = (pm) => [
|
|
95
|
+
...createNextAppCommand(pm),
|
|
96
|
+
".",
|
|
97
|
+
"--yes"
|
|
98
|
+
];
|
|
99
|
+
const createNextAppCommand = (pm) => pm === "deno" ? [
|
|
100
|
+
"deno",
|
|
101
|
+
"-Ar",
|
|
102
|
+
"npm:create-next-app@latest"
|
|
103
|
+
] : pm === "bun" ? [
|
|
104
|
+
"bun",
|
|
105
|
+
"create",
|
|
106
|
+
"next-app"
|
|
107
|
+
] : pm === "npm" ? ["npx", "create-next-app"] : [
|
|
108
|
+
pm,
|
|
109
|
+
"dlx",
|
|
110
|
+
"create-next-app"
|
|
111
|
+
];
|
|
112
|
+
const getNitroInitCommand = (pm) => [
|
|
113
|
+
...createNitroAppCommand(pm),
|
|
114
|
+
pm === "deno" ? "npm:giget@latest" : "giget@latest",
|
|
115
|
+
"nitro",
|
|
116
|
+
".",
|
|
117
|
+
"&&",
|
|
118
|
+
"rm",
|
|
119
|
+
"nitro.config.ts"
|
|
120
|
+
];
|
|
121
|
+
const createNitroAppCommand = (pm) => pm === "deno" ? [
|
|
122
|
+
"deno",
|
|
123
|
+
"run",
|
|
124
|
+
"-A"
|
|
125
|
+
] : pm === "bun" ? ["bunx"] : pm === "npm" ? ["npx"] : [pm, "dlx"];
|
|
126
|
+
const isTest = ({ testMode }) => testMode;
|
|
127
|
+
|
|
128
|
+
//#endregion
|
|
129
|
+
export { PACKAGE_VERSION, createFile, getDevCommand, getInstallUrl, getInstruction, getNextInitCommand, getNitroInitCommand, isDirectoryEmpty, isPackageManagerAvailable, isTest, kvStores, logger, messageQueues, packageManagerToRuntime, packageManagers, readTemplate, runtimes, throwUnlessNotExists };
|
package/dist/mod.d.mts
ADDED
package/dist/mod.mjs
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createFederation } from "@fedify/fedify";
|
|
2
|
+
import { Person } from "@fedify/vocab";
|
|
3
|
+
import { getLogger } from "@logtape/logtape";
|
|
4
|
+
/* imports */
|
|
5
|
+
|
|
6
|
+
const logger = getLogger(/* logger */);
|
|
7
|
+
|
|
8
|
+
const federation = createFederation({
|
|
9
|
+
kv: /* kv */,
|
|
10
|
+
queue: /* queue */,
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
federation.setActorDispatcher(
|
|
14
|
+
"/users/{identifier}",
|
|
15
|
+
async (ctx, identifier) => {
|
|
16
|
+
return new Person({
|
|
17
|
+
id: ctx.getActorUri(identifier),
|
|
18
|
+
preferredUsername: identifier,
|
|
19
|
+
name: identifier,
|
|
20
|
+
});
|
|
21
|
+
},
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
export default federation;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { configure, getConsoleSink } from "@logtape/logtape";
|
|
2
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
3
|
+
|
|
4
|
+
await configure({
|
|
5
|
+
contextLocalStorage: new AsyncLocalStorage(),
|
|
6
|
+
sinks: {
|
|
7
|
+
console: getConsoleSink(),
|
|
8
|
+
},
|
|
9
|
+
filters: {},
|
|
10
|
+
loggers: [
|
|
11
|
+
{
|
|
12
|
+
category: /* project name */,
|
|
13
|
+
lowestLevel: "debug",
|
|
14
|
+
sinks: ["console"],
|
|
15
|
+
},
|
|
16
|
+
{ category: "fedify", lowestLevel: "info", sinks: ["console"] },
|
|
17
|
+
{
|
|
18
|
+
category: ["logtape", "meta"],
|
|
19
|
+
lowestLevel: "warning",
|
|
20
|
+
sinks: ["console"],
|
|
21
|
+
},
|
|
22
|
+
],
|
|
23
|
+
});
|