create-weave-backend-app 5.2.1 → 5.2.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/{create-app-DBvewJ0W.js → create-app-DTuBvZRF.js} +103 -120
- package/dist/create-app-DTuBvZRF.js.map +1 -0
- package/dist/create-app.d.ts +0 -4
- package/dist/create-app.d.ts.map +1 -1
- package/dist/create-app.js +2 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.js +9 -94
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/template/+express+azure-web-pubsub/README.md +1 -1
- package/template/+express+websockets/README.md +1 -1
- package/dist/create-app-DBvewJ0W.js.map +0 -1
|
@@ -1,38 +1,62 @@
|
|
|
1
|
-
import path, { join } from "node:path";
|
|
2
1
|
import fs from "node:fs/promises";
|
|
2
|
+
import path, { join } from "node:path";
|
|
3
|
+
import { spawn } from "cross-spawn";
|
|
3
4
|
import { execSync } from "node:child_process";
|
|
4
5
|
import { rmSync } from "node:fs";
|
|
5
|
-
import { spawn } from "cross-spawn";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
|
-
|
|
7
|
+
//#region src/auto-install.ts
|
|
8
|
+
function getPackageManager() {
|
|
9
|
+
const userAgent = process.env.npm_config_user_agent ?? "";
|
|
10
|
+
if (userAgent.startsWith("yarn")) return "yarn";
|
|
11
|
+
if (userAgent.startsWith("pnpm")) return "pnpm";
|
|
12
|
+
if (userAgent.startsWith("bun")) return "bun";
|
|
13
|
+
return "npm";
|
|
14
|
+
}
|
|
15
|
+
function autoInstall(manager, dest) {
|
|
16
|
+
return new Promise((res, reject) => {
|
|
17
|
+
spawn(manager, ["install"], {
|
|
18
|
+
stdio: "ignore",
|
|
19
|
+
env: {
|
|
20
|
+
...process.env,
|
|
21
|
+
NODE_ENV: "development",
|
|
22
|
+
DISABLE_OPENCOLLECTIVE: "1"
|
|
23
|
+
},
|
|
24
|
+
cwd: dest
|
|
25
|
+
}).on("close", (code) => {
|
|
26
|
+
if (code !== 0) reject(/* @__PURE__ */ new Error("Install failed"));
|
|
27
|
+
else res();
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
//#endregion
|
|
8
32
|
//#region src/git.ts
|
|
9
|
-
function isInGitRepository(cwd
|
|
33
|
+
function isInGitRepository(cwd) {
|
|
10
34
|
try {
|
|
11
35
|
execSync("git rev-parse --is-inside-work-tree", {
|
|
12
36
|
stdio: "ignore",
|
|
13
|
-
cwd
|
|
37
|
+
cwd
|
|
14
38
|
});
|
|
15
39
|
return true;
|
|
16
40
|
} catch {
|
|
17
41
|
return false;
|
|
18
42
|
}
|
|
19
43
|
}
|
|
20
|
-
function isInMercurialRepository(cwd
|
|
44
|
+
function isInMercurialRepository(cwd) {
|
|
21
45
|
try {
|
|
22
46
|
execSync("hg --cwd . root", {
|
|
23
47
|
stdio: "ignore",
|
|
24
|
-
cwd
|
|
48
|
+
cwd
|
|
25
49
|
});
|
|
26
50
|
return true;
|
|
27
51
|
} catch {
|
|
28
52
|
return false;
|
|
29
53
|
}
|
|
30
54
|
}
|
|
31
|
-
function isDefaultBranchSet(cwd
|
|
55
|
+
function isDefaultBranchSet(cwd) {
|
|
32
56
|
try {
|
|
33
57
|
execSync("git config init.defaultBranch", {
|
|
34
58
|
stdio: "ignore",
|
|
35
|
-
cwd
|
|
59
|
+
cwd
|
|
36
60
|
});
|
|
37
61
|
return true;
|
|
38
62
|
} catch {
|
|
@@ -72,114 +96,75 @@ function tryGitInit(root) {
|
|
|
72
96
|
return false;
|
|
73
97
|
}
|
|
74
98
|
}
|
|
75
|
-
|
|
76
99
|
//#endregion
|
|
77
100
|
//#region src/versions.js
|
|
78
101
|
const versions = {
|
|
79
|
-
"@inditextech/weave-react": "5.2.
|
|
80
|
-
"@inditextech/weave-sdk": "5.2.
|
|
81
|
-
"@inditextech/weave-store-azure-web-pubsub": "5.2.
|
|
82
|
-
"@inditextech/weave-store-standalone": "5.2.
|
|
83
|
-
"@inditextech/weave-store-websockets": "5.2.
|
|
84
|
-
"@inditextech/weave-types": "5.2.
|
|
102
|
+
"@inditextech/weave-react": "5.2.2",
|
|
103
|
+
"@inditextech/weave-sdk": "5.2.2",
|
|
104
|
+
"@inditextech/weave-store-azure-web-pubsub": "5.2.2",
|
|
105
|
+
"@inditextech/weave-store-standalone": "5.2.2",
|
|
106
|
+
"@inditextech/weave-store-websockets": "5.2.2",
|
|
107
|
+
"@inditextech/weave-types": "5.2.2"
|
|
85
108
|
};
|
|
86
|
-
|
|
87
109
|
//#endregion
|
|
88
110
|
//#region template/package.json
|
|
89
|
-
var name = "example-versions";
|
|
90
|
-
var version = "0.0.0";
|
|
91
|
-
var private$1 = true;
|
|
92
|
-
var type = "module";
|
|
93
|
-
var description = "Used to track dependency versions in create-*-app";
|
|
94
|
-
var license = "MIT";
|
|
95
|
-
var dependencies = {
|
|
96
|
-
"@dotenvx/dotenvx": "^1.44.0",
|
|
97
|
-
"@imgly/background-removal-node": "^1.4.5",
|
|
98
|
-
"@inditextech/weave-sdk": "0.0.0",
|
|
99
|
-
"@inditextech/weave-store-azure-web-pubsub": "0.0.0",
|
|
100
|
-
"@inditextech/weave-store-standalone": "0.0.0",
|
|
101
|
-
"@inditextech/weave-store-websockets": "0.0.0",
|
|
102
|
-
"archiver": "^7.0.1",
|
|
103
|
-
"cors": "^2.8.5",
|
|
104
|
-
"dotenv": "^16.4.7",
|
|
105
|
-
"express": "^4.21.2",
|
|
106
|
-
"helmet": "^8.0.0",
|
|
107
|
-
"morgan": "^1.10.0",
|
|
108
|
-
"multer": "^2.0.2",
|
|
109
|
-
"p-queue": "^9.0.1",
|
|
110
|
-
"pino": "^9.6.0",
|
|
111
|
-
"pino-http": "^10.4.0",
|
|
112
|
-
"pino-pretty": "^13.0.0",
|
|
113
|
-
"tslib": "^2.8.1",
|
|
114
|
-
"tsx": "^4.19.3",
|
|
115
|
-
"uuid": "^11.1.1",
|
|
116
|
-
"zod": "^3.24.2"
|
|
117
|
-
};
|
|
118
|
-
var devDependencies = {
|
|
119
|
-
"@eslint/js": "^9.26.0",
|
|
120
|
-
"@types/archiver": "^7.0.0",
|
|
121
|
-
"@types/cors": "^2.8.17",
|
|
122
|
-
"@types/express": "^5.0.0",
|
|
123
|
-
"@types/morgan": "^1.9.9",
|
|
124
|
-
"@types/multer": "^1.4.12",
|
|
125
|
-
"@types/node": "^22.13.5",
|
|
126
|
-
"@typescript-eslint/eslint-plugin": "^8.25.0",
|
|
127
|
-
"@typescript-eslint/parser": "^8.25.0",
|
|
128
|
-
"cp-cli": "^2.0.0",
|
|
129
|
-
"eslint": "^9.26.0",
|
|
130
|
-
"eslint-config-prettier": "^10.1.5",
|
|
131
|
-
"globals": "^16.0.0",
|
|
132
|
-
"make-dir-cli": "^4.0.0",
|
|
133
|
-
"nodemon": "^3.1.9",
|
|
134
|
-
"prettier": "^3.5.2",
|
|
135
|
-
"tsc-alias": "^1.8.16",
|
|
136
|
-
"tsconfig-paths": "^4.2.0",
|
|
137
|
-
"typescript": "^5.7.3",
|
|
138
|
-
"typescript-eslint": "^8.25.0"
|
|
139
|
-
};
|
|
140
111
|
var package_default = {
|
|
141
|
-
name,
|
|
142
|
-
version,
|
|
143
|
-
private:
|
|
144
|
-
type,
|
|
145
|
-
description,
|
|
146
|
-
license,
|
|
147
|
-
dependencies
|
|
148
|
-
|
|
112
|
+
name: "example-versions",
|
|
113
|
+
version: "0.0.0",
|
|
114
|
+
"private": true,
|
|
115
|
+
type: "module",
|
|
116
|
+
description: "Used to track dependency versions in create-*-app",
|
|
117
|
+
license: "MIT",
|
|
118
|
+
dependencies: {
|
|
119
|
+
"@dotenvx/dotenvx": "^1.44.0",
|
|
120
|
+
"@imgly/background-removal-node": "^1.4.5",
|
|
121
|
+
"@inditextech/weave-sdk": "0.0.0",
|
|
122
|
+
"@inditextech/weave-store-azure-web-pubsub": "0.0.0",
|
|
123
|
+
"@inditextech/weave-store-standalone": "0.0.0",
|
|
124
|
+
"@inditextech/weave-store-websockets": "0.0.0",
|
|
125
|
+
"archiver": "^7.0.1",
|
|
126
|
+
"cors": "^2.8.5",
|
|
127
|
+
"dotenv": "^16.4.7",
|
|
128
|
+
"express": "^4.21.2",
|
|
129
|
+
"helmet": "^8.0.0",
|
|
130
|
+
"morgan": "^1.10.0",
|
|
131
|
+
"multer": "^2.0.2",
|
|
132
|
+
"p-queue": "^9.0.1",
|
|
133
|
+
"pino": "^9.6.0",
|
|
134
|
+
"pino-http": "^10.4.0",
|
|
135
|
+
"pino-pretty": "^13.0.0",
|
|
136
|
+
"tslib": "^2.8.1",
|
|
137
|
+
"tsx": "^4.19.3",
|
|
138
|
+
"uuid": "^11.1.1",
|
|
139
|
+
"zod": "^3.24.2"
|
|
140
|
+
},
|
|
141
|
+
devDependencies: {
|
|
142
|
+
"@eslint/js": "^9.26.0",
|
|
143
|
+
"@types/archiver": "^7.0.0",
|
|
144
|
+
"@types/cors": "^2.8.17",
|
|
145
|
+
"@types/express": "^5.0.0",
|
|
146
|
+
"@types/morgan": "^1.9.9",
|
|
147
|
+
"@types/multer": "^1.4.12",
|
|
148
|
+
"@types/node": "^22.13.5",
|
|
149
|
+
"@typescript-eslint/eslint-plugin": "^8.25.0",
|
|
150
|
+
"@typescript-eslint/parser": "^8.25.0",
|
|
151
|
+
"cp-cli": "^2.0.0",
|
|
152
|
+
"eslint": "^9.26.0",
|
|
153
|
+
"eslint-config-prettier": "^10.1.5",
|
|
154
|
+
"globals": "^16.0.0",
|
|
155
|
+
"make-dir-cli": "^4.0.0",
|
|
156
|
+
"nodemon": "^3.1.9",
|
|
157
|
+
"prettier": "^3.5.2",
|
|
158
|
+
"tsc-alias": "^1.8.16",
|
|
159
|
+
"tsconfig-paths": "^4.2.0",
|
|
160
|
+
"typescript": "^5.7.3",
|
|
161
|
+
"typescript-eslint": "^8.25.0"
|
|
162
|
+
}
|
|
149
163
|
};
|
|
150
|
-
|
|
151
|
-
//#endregion
|
|
152
|
-
//#region src/auto-install.ts
|
|
153
|
-
function getPackageManager() {
|
|
154
|
-
const userAgent = process.env.npm_config_user_agent ?? "";
|
|
155
|
-
if (userAgent.startsWith("yarn")) return "yarn";
|
|
156
|
-
if (userAgent.startsWith("pnpm")) return "pnpm";
|
|
157
|
-
if (userAgent.startsWith("bun")) return "bun";
|
|
158
|
-
return "npm";
|
|
159
|
-
}
|
|
160
|
-
function autoInstall(manager, dest) {
|
|
161
|
-
return new Promise((res, reject) => {
|
|
162
|
-
const installProcess = spawn(manager, ["install"], {
|
|
163
|
-
stdio: "ignore",
|
|
164
|
-
env: {
|
|
165
|
-
...process.env,
|
|
166
|
-
NODE_ENV: "development",
|
|
167
|
-
DISABLE_OPENCOLLECTIVE: "1"
|
|
168
|
-
},
|
|
169
|
-
cwd: dest
|
|
170
|
-
});
|
|
171
|
-
installProcess.on("close", (code) => {
|
|
172
|
-
if (code !== 0) reject(new Error("Install failed"));
|
|
173
|
-
else res();
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
|
|
178
164
|
//#endregion
|
|
179
165
|
//#region src/constants.ts
|
|
180
166
|
const sourceDir = fileURLToPath(new URL(`../`, import.meta.url).href);
|
|
181
167
|
const cwd = process.cwd();
|
|
182
|
-
|
|
183
168
|
//#endregion
|
|
184
169
|
//#region src/create-app.ts
|
|
185
170
|
async function create(options) {
|
|
@@ -208,12 +193,10 @@ async function create(options) {
|
|
|
208
193
|
if (initializeGit && tryGitInit(dest)) log("Initialized Git repository");
|
|
209
194
|
}
|
|
210
195
|
async function getReadme(dest, projectName) {
|
|
211
|
-
|
|
212
|
-
return `# ${projectName}\n\n${template}`;
|
|
196
|
+
return `# ${projectName}\n\n${await fs.readFile(path.join(dest, "README.md")).then((res) => res.toString())}`;
|
|
213
197
|
}
|
|
214
198
|
async function copy(from, to, rename = (s) => s) {
|
|
215
|
-
|
|
216
|
-
if (stats.isDirectory()) {
|
|
199
|
+
if ((await fs.stat(from)).isDirectory()) {
|
|
217
200
|
const files = await fs.readdir(from);
|
|
218
201
|
await Promise.all(files.map((file) => copy(path.join(from, file), rename(path.join(to, file)))));
|
|
219
202
|
} else {
|
|
@@ -223,7 +206,7 @@ async function copy(from, to, rename = (s) => s) {
|
|
|
223
206
|
}
|
|
224
207
|
function createPackageJson(projectName, options) {
|
|
225
208
|
if (options.template === "+express+azure-web-pubsub") {
|
|
226
|
-
const dependencies
|
|
209
|
+
const dependencies = {
|
|
227
210
|
...pick(versions, [
|
|
228
211
|
"@inditextech/weave-sdk",
|
|
229
212
|
"@inditextech/weave-store-azure-web-pubsub",
|
|
@@ -249,7 +232,7 @@ function createPackageJson(projectName, options) {
|
|
|
249
232
|
"zod"
|
|
250
233
|
])
|
|
251
234
|
};
|
|
252
|
-
const devDependencies
|
|
235
|
+
const devDependencies = { ...pick(package_default.devDependencies, [
|
|
253
236
|
"@eslint/js",
|
|
254
237
|
"@types/archiver",
|
|
255
238
|
"@types/cors",
|
|
@@ -285,11 +268,11 @@ function createPackageJson(projectName, options) {
|
|
|
285
268
|
start: "node --experimental-specifier-resolution=node --loader --env-file=.env ts-node/esm dist/server.js",
|
|
286
269
|
["start:dev"]: "cp-cli .env ./dist/.env && cd dist && NODE_ENV=development NODE_OPTIONS=\"--max-old-space-size=4096\" node --env-file=.env ./server.js"
|
|
287
270
|
},
|
|
288
|
-
dependencies: sortObjectKeys(dependencies
|
|
289
|
-
devDependencies: sortObjectKeys(devDependencies
|
|
271
|
+
dependencies: sortObjectKeys(dependencies),
|
|
272
|
+
devDependencies: sortObjectKeys(devDependencies)
|
|
290
273
|
};
|
|
291
274
|
}
|
|
292
|
-
const dependencies
|
|
275
|
+
const dependencies = {
|
|
293
276
|
...pick(package_default.dependencies, [
|
|
294
277
|
"@dotenvx/dotenvx",
|
|
295
278
|
"@imgly/background-removal-node",
|
|
@@ -315,7 +298,7 @@ function createPackageJson(projectName, options) {
|
|
|
315
298
|
"@inditextech/weave-store-standalone"
|
|
316
299
|
])
|
|
317
300
|
};
|
|
318
|
-
const devDependencies
|
|
301
|
+
const devDependencies = { ...pick(package_default.devDependencies, [
|
|
319
302
|
"@eslint/js",
|
|
320
303
|
"@types/archiver",
|
|
321
304
|
"@types/cors",
|
|
@@ -351,8 +334,8 @@ function createPackageJson(projectName, options) {
|
|
|
351
334
|
start: "node --experimental-specifier-resolution=node --loader --env-file=.env ts-node/esm dist/server.js",
|
|
352
335
|
["start:dev"]: "cp-cli .env ./dist/.env && cd dist && NODE_ENV=development NODE_OPTIONS=\"--max-old-space-size=4096\" node --env-file=.env ./server.js"
|
|
353
336
|
},
|
|
354
|
-
dependencies: sortObjectKeys(dependencies
|
|
355
|
-
devDependencies: sortObjectKeys(devDependencies
|
|
337
|
+
dependencies: sortObjectKeys(dependencies),
|
|
338
|
+
devDependencies: sortObjectKeys(devDependencies)
|
|
356
339
|
};
|
|
357
340
|
}
|
|
358
341
|
function sortObjectKeys(obj) {
|
|
@@ -364,7 +347,7 @@ function pick(obj, keys) {
|
|
|
364
347
|
for (const key of keys) if (key in obj) result[key] = obj[key];
|
|
365
348
|
return result;
|
|
366
349
|
}
|
|
367
|
-
|
|
368
350
|
//#endregion
|
|
369
|
-
export {
|
|
370
|
-
|
|
351
|
+
export { cwd as n, getPackageManager as r, create as t };
|
|
352
|
+
|
|
353
|
+
//# sourceMappingURL=create-app-DTuBvZRF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-app-DTuBvZRF.js","names":["localVersions","versionPkg"],"sources":["../src/auto-install.ts","../src/git.ts","../src/versions.js","../template/package.json","../src/constants.ts","../src/create-app.ts"],"sourcesContent":["import { spawn } from 'cross-spawn';\n\nexport type PackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun';\n\nexport function getPackageManager(): PackageManager {\n const userAgent = process.env.npm_config_user_agent ?? '';\n\n if (userAgent.startsWith('yarn')) {\n return 'yarn';\n }\n\n if (userAgent.startsWith('pnpm')) {\n return 'pnpm';\n }\n\n if (userAgent.startsWith('bun')) {\n return 'bun';\n }\n\n return 'npm';\n}\n\nexport function autoInstall(\n manager: PackageManager,\n dest: string\n): Promise<void> {\n return new Promise((res, reject) => {\n const installProcess = spawn(manager, ['install'], {\n stdio: 'ignore',\n env: {\n ...process.env,\n NODE_ENV: 'development',\n DISABLE_OPENCOLLECTIVE: '1',\n },\n cwd: dest,\n });\n\n installProcess.on('close', (code) => {\n if (code !== 0) {\n reject(new Error('Install failed'));\n } else {\n res();\n }\n });\n });\n}\n","import { execSync } from 'node:child_process';\nimport { rmSync } from 'node:fs';\nimport { join } from 'node:path';\n\n/*\nInitialize a Git repo on the project.\n\nBased on https://github.com/vercel/next.js/blob/canary/packages/create-next-app/helpers/git.ts\n*/\n\nfunction isInGitRepository(cwd: string): boolean {\n try {\n execSync('git rev-parse --is-inside-work-tree', { stdio: 'ignore', cwd });\n return true;\n } catch {\n return false;\n }\n}\n\nfunction isInMercurialRepository(cwd: string): boolean {\n try {\n execSync('hg --cwd . root', { stdio: 'ignore', cwd });\n return true;\n } catch {\n return false;\n }\n}\n\nfunction isDefaultBranchSet(cwd: string): boolean {\n try {\n execSync('git config init.defaultBranch', { stdio: 'ignore', cwd });\n return true;\n } catch {\n return false;\n }\n}\n\nexport function tryGitInit(root: string): boolean {\n let didInit = false;\n\n try {\n execSync('git --version', { stdio: 'ignore' });\n if (isInGitRepository(root) || isInMercurialRepository(root)) {\n return false;\n }\n\n execSync('git init', { stdio: 'ignore', cwd: root });\n didInit = true;\n\n if (!isDefaultBranchSet(root)) {\n execSync('git checkout -b main', { stdio: 'ignore', cwd: root });\n }\n\n execSync('git add -A', { stdio: 'ignore', cwd: root });\n execSync('git commit -m \"Initial commit from Create Fumadocs App\"', {\n stdio: 'ignore',\n cwd: root,\n });\n return true;\n } catch {\n if (didInit) {\n try {\n rmSync(join(root, '.git'), { recursive: true, force: true });\n } catch {\n // do nothing\n }\n }\n\n return false;\n }\n}\n","export const versions = {\"@inditextech/weave-react\":\"5.2.2\",\"@inditextech/weave-sdk\":\"5.2.2\",\"@inditextech/weave-store-azure-web-pubsub\":\"5.2.2\",\"@inditextech/weave-store-standalone\":\"5.2.2\",\"@inditextech/weave-store-websockets\":\"5.2.2\",\"@inditextech/weave-types\":\"5.2.2\"}","","import { fileURLToPath } from 'node:url';\n\nexport const sourceDir = fileURLToPath(new URL(`../`, import.meta.url).href);\nexport const cwd = process.cwd();\n","import path from 'node:path';\nimport fs from 'node:fs/promises';\nimport { tryGitInit } from '@/git';\nimport { versions as localVersions } from '@/versions';\nimport versionPkg from './../template/package.json' with { type: 'json' };\nimport type { PackageManager } from './auto-install';\nimport { autoInstall } from './auto-install';\nimport { cwd, sourceDir } from './constants';\n\nexport type Template = '+express+websockets' | '+express+azure-web-pubsub';\n\nexport interface Options {\n outputDir: string;\n template: Template;\n packageManager: PackageManager;\n installDeps?: boolean;\n initializeGit?: boolean;\n log?: (message: string) => void;\n}\n\nexport async function create(options: Options): Promise<void> {\n const {\n installDeps = true,\n initializeGit = true,\n log = console.log,\n } = options;\n const projectName = path.basename(options.outputDir);\n const dest = path.resolve(cwd, options.outputDir);\n\n function defaultRename(file: string): string {\n file = file.replace('example.gitignore', '.gitignore');\n file = file.replace('example.env', '.env');\n\n return file;\n }\n\n await copy(\n path.join(sourceDir, `template/${options.template}`),\n dest,\n defaultRename\n );\n\n // update tsconfig.json for src dir\n // if (isNext && options.useSrcDir) {\n const tsconfigPath = path.join(dest, 'tsconfig.json');\n const content = (await fs.readFile(tsconfigPath)).toString();\n\n const config = JSON.parse(content);\n\n if (config.compilerOptions?.paths) {\n Object.assign(config.compilerOptions.paths, {\n '@/*': ['./src/*'],\n });\n }\n\n await fs.writeFile(tsconfigPath, JSON.stringify(config, null, 2));\n // }\n\n const packageJson = createPackageJson(projectName, options);\n await fs.writeFile(\n path.join(dest, 'package.json'),\n JSON.stringify(packageJson, null, 2)\n );\n\n const readMe = await getReadme(dest, projectName);\n await fs.writeFile(path.join(dest, 'README.md'), readMe);\n\n if (installDeps) {\n await autoInstall(options.packageManager, dest);\n log('Installed dependencies');\n }\n\n if (initializeGit && tryGitInit(dest)) {\n log('Initialized Git repository');\n }\n}\n\nasync function getReadme(dest: string, projectName: string): Promise<string> {\n const template = await fs\n .readFile(path.join(dest, 'README.md'))\n .then((res) => res.toString());\n\n return `# ${projectName}\\n\\n${template}`;\n}\n\nasync function copy(\n from: string,\n to: string,\n rename: (s: string) => string = (s) => s\n): Promise<void> {\n const stats = await fs.stat(from);\n\n if (stats.isDirectory()) {\n const files = await fs.readdir(from);\n\n await Promise.all(\n files.map((file) =>\n copy(path.join(from, file), rename(path.join(to, file)))\n )\n );\n } else {\n await fs.mkdir(path.dirname(to), { recursive: true });\n await fs.copyFile(from, to);\n }\n}\n\nfunction createPackageJson(projectName: string, options: Options): object {\n if (options.template === '+express+azure-web-pubsub') {\n const dependencies = {\n ...pick(localVersions, [\n '@inditextech/weave-sdk',\n '@inditextech/weave-store-azure-web-pubsub',\n '@inditextech/weave-store-standalone',\n ]),\n ...pick(versionPkg.dependencies, [\n '@dotenvx/dotenvx',\n '@imgly/background-removal-node',\n 'archiver',\n 'cors',\n 'dotenv',\n 'express',\n 'helmet',\n 'morgan',\n 'multer',\n 'p-queue',\n 'pino',\n 'pino-http',\n 'pino-pretty',\n 'tslib',\n 'tsx',\n 'uuid',\n 'zod',\n ]),\n };\n\n const devDependencies = {\n ...pick(versionPkg.devDependencies, [\n '@eslint/js',\n '@types/archiver',\n '@types/cors',\n '@types/express',\n '@types/morgan',\n '@types/multer',\n '@types/node',\n '@typescript-eslint/eslint-plugin',\n '@typescript-eslint/parser',\n 'cp-cli',\n 'eslint',\n 'eslint-config-prettier',\n 'globals',\n 'make-dir-cli',\n 'nodemon',\n 'prettier',\n 'tsc-alias',\n 'tsconfig-paths',\n 'typescript',\n 'typescript-eslint',\n ]),\n };\n\n return {\n ...versionPkg,\n name: projectName,\n scripts: {\n build:\n 'tsc && tsc-alias -p tsconfig.json && make-dir ./dist/public && make-dir ./dist/temp && cp-cli ./public ./dist/public && cp-cli ./package.json ./dist/package.json',\n ['copy:assets']:\n 'make-dir ./public && cp-cli node_modules/@imgly/background-removal-node/dist/. public',\n ['copy:fonts']: 'cp-cli fonts/. dist/fonts',\n dev: 'nodemon',\n format: 'prettier --write \"src/**/*.{ts,tsx}\"',\n lint: 'eslint ./src',\n postinstall: 'npm run copy:assets',\n start:\n 'node --experimental-specifier-resolution=node --loader --env-file=.env ts-node/esm dist/server.js',\n ['start:dev']:\n 'cp-cli .env ./dist/.env && cd dist && NODE_ENV=development NODE_OPTIONS=\"--max-old-space-size=4096\" node --env-file=.env ./server.js',\n },\n dependencies: sortObjectKeys(dependencies),\n devDependencies: sortObjectKeys(devDependencies),\n };\n }\n\n const dependencies = {\n ...pick(versionPkg.dependencies, [\n '@dotenvx/dotenvx',\n '@imgly/background-removal-node',\n 'archiver',\n 'cors',\n 'dotenv',\n 'express',\n 'helmet',\n 'morgan',\n 'multer',\n 'p-queue',\n 'pino',\n 'pino-http',\n 'pino-pretty',\n 'tslib',\n 'tsx',\n 'uuid',\n 'zod',\n ]),\n ...pick(localVersions, [\n '@inditextech/weave-sdk',\n '@inditextech/weave-store-websockets',\n '@inditextech/weave-store-standalone',\n ]),\n };\n\n const devDependencies = {\n ...pick(versionPkg.devDependencies, [\n '@eslint/js',\n '@types/archiver',\n '@types/cors',\n '@types/express',\n '@types/morgan',\n '@types/multer',\n '@types/node',\n '@typescript-eslint/eslint-plugin',\n '@typescript-eslint/parser',\n 'cp-cli',\n 'eslint',\n 'eslint-config-prettier',\n 'globals',\n 'make-dir-cli',\n 'nodemon',\n 'prettier',\n 'tsc-alias',\n 'tsconfig-paths',\n 'typescript',\n 'typescript-eslint',\n ]),\n };\n\n return {\n ...versionPkg,\n name: projectName,\n scripts: {\n build:\n 'tsc && tsc-alias -p tsconfig.json && make-dir ./dist/public && make-dir ./dist/temp && cp-cli ./public ./dist/public && cp-cli ./package.json ./dist/package.json',\n ['copy:assets']:\n 'make-dir ./public && cp-cli node_modules/@imgly/background-removal-node/dist/. public',\n ['copy:fonts']: 'cp-cli fonts/. dist/fonts',\n dev: 'nodemon',\n format: 'prettier --write \"src/**/*.{ts,tsx}\"',\n lint: 'eslint ./src',\n postinstall: 'npm run copy:assets',\n start:\n 'node --experimental-specifier-resolution=node --loader --env-file=.env ts-node/esm dist/server.js',\n ['start:dev']:\n 'cp-cli .env ./dist/.env && cd dist && NODE_ENV=development NODE_OPTIONS=\"--max-old-space-size=4096\" node --env-file=.env ./server.js',\n },\n dependencies: sortObjectKeys(dependencies),\n devDependencies: sortObjectKeys(devDependencies),\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction sortObjectKeys<T extends Record<string, any>>(obj: T): T {\n const sortedEntries = Object.keys(obj)\n .sort()\n .map((key) => [key, obj[key]] as [keyof T, T[keyof T]]);\n\n return Object.fromEntries(sortedEntries) as T;\n}\n\nfunction pick<T extends object, K extends keyof T>(\n obj: T,\n keys: K[]\n): Pick<T, K> {\n const result: Partial<T> = {};\n\n for (const key of keys) {\n if (key in obj) {\n result[key] = obj[key];\n }\n }\n\n return result as Pick<T, K>;\n}\n"],"mappings":"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;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAAC;EACD,GAAG,KAAKD,UAAe;GACrB;GACA;GACA;EACF,CAAC;CACH;CAEA,MAAM,kBAAkB,EACtB,GAAG,KAAKC,gBAAW,iBAAiB;EAClC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,EACH;CAEA,OAAO;EACL,GAAGA;EACH,MAAM;EACN,SAAS;GACP,OACE;IACD,gBACC;IACD,eAAe;GAChB,KAAK;GACL,QAAQ;GACR,MAAM;GACN,aAAa;GACb,OACE;IACD,cACC;EACJ;EACA,cAAc,eAAe,YAAY;EACzC,iBAAiB,eAAe,eAAe;CACjD;AACF;AAGA,SAAS,eAA8C,KAAW;CAChE,MAAM,gBAAgB,OAAO,KAAK,GAAG,CAAC,CACnC,KAAK,CAAC,CACN,KAAK,QAAQ,CAAC,KAAK,IAAI,IAAI,CAA0B;CAExD,OAAO,OAAO,YAAY,aAAa;AACzC;AAEA,SAAS,KACP,KACA,MACY;CACZ,MAAM,SAAqB,CAAC;CAE5B,KAAK,MAAM,OAAO,MAChB,IAAI,OAAO,KACT,OAAO,OAAO,IAAI;CAItB,OAAO;AACT"}
|
package/dist/create-app.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
//#region src/auto-install.d.ts
|
|
2
2
|
type PackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun';
|
|
3
|
-
|
|
4
3
|
//#endregion
|
|
5
4
|
//#region src/create-app.d.ts
|
|
6
5
|
type Template = '+express+websockets' | '+express+azure-web-pubsub';
|
|
@@ -13,9 +12,6 @@ interface Options {
|
|
|
13
12
|
log?: (message: string) => void;
|
|
14
13
|
}
|
|
15
14
|
declare function create(options: Options): Promise<void>;
|
|
16
|
-
|
|
17
15
|
//#endregion
|
|
18
|
-
//# sourceMappingURL=create-app.d.ts.map
|
|
19
|
-
|
|
20
16
|
export { Options, Template, create };
|
|
21
17
|
//# sourceMappingURL=create-app.d.ts.map
|
package/dist/create-app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-app.d.ts","names":[],"sources":["../src/auto-install.ts","../src/create-app.ts"],"
|
|
1
|
+
{"version":3,"file":"create-app.d.ts","names":[],"sources":["../src/auto-install.ts","../src/create-app.ts"],"mappings":";KAEY;;;KCOA;UAEK;EACf;EACA,UAAU;EACV,gBAAgB;EAChB;EACA;EACA,OAAO;;iBAGa,OAAO,SAAS,UAAU"}
|
package/dist/create-app.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { create } from "./create-app-
|
|
2
|
-
|
|
3
|
-
export { create };
|
|
1
|
+
import { t as create } from "./create-app-DTuBvZRF.js";
|
|
2
|
+
export { create };
|
package/dist/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {}
|
package/dist/index.js
CHANGED
|
@@ -1,102 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
import path from "node:path";
|
|
2
|
+
import { n as cwd, r as getPackageManager, t as create } from "./create-app-DTuBvZRF.js";
|
|
4
3
|
import fs from "node:fs/promises";
|
|
4
|
+
import path from "node:path";
|
|
5
5
|
import { cancel, confirm, group, intro, isCancel, outro, select, spinner, text } from "@clack/prompts";
|
|
6
6
|
import pc from "picocolors";
|
|
7
|
-
|
|
8
7
|
//#region package.json
|
|
9
|
-
var
|
|
10
|
-
var version = "5.2.1";
|
|
11
|
-
var description = "Create a new backend artifact for site with Weave.js";
|
|
12
|
-
var keywords = [
|
|
13
|
-
"NextJs",
|
|
14
|
-
"next",
|
|
15
|
-
"react",
|
|
16
|
-
"Weave.js"
|
|
17
|
-
];
|
|
18
|
-
var homepage = "https://inditextech.github.io/weavejs";
|
|
19
|
-
var repository = "github:InditexTech/weavejs";
|
|
20
|
-
var license = "Apache-2.0";
|
|
21
|
-
var author = "Jesus Manuel Piñeiro Cid <jesusmpc@inditex.com>";
|
|
22
|
-
var type = "module";
|
|
23
|
-
var bin = "./dist/index.js";
|
|
24
|
-
var module = "./dist/create-app.js";
|
|
25
|
-
var types = "./dist/create-app.d.ts";
|
|
26
|
-
var files = ["template/*", "dist/*"];
|
|
27
|
-
var scripts = {
|
|
28
|
-
"bump:snapshot": "tsc --noEmit && tsdown --sourcemap",
|
|
29
|
-
"build": "tsc --noEmit && tsdown",
|
|
30
|
-
"clean": "rimraf dist",
|
|
31
|
-
"dev": "tsdown --watch",
|
|
32
|
-
"format": "prettier --write ./src ./template",
|
|
33
|
-
"link": "npm link",
|
|
34
|
-
"lint:fix": "npm run lint -- --fix",
|
|
35
|
-
"lint": "eslint ./src",
|
|
36
|
-
"pack": "npm pack",
|
|
37
|
-
"publish:snapshot": "npm publish --tag next --access public",
|
|
38
|
-
"release:perform": "npm publish --access public",
|
|
39
|
-
"release:prepare": "npm run verify",
|
|
40
|
-
"test": "echo \"No tests defined\" && exit 0",
|
|
41
|
-
"types:check": "tsc --noEmit",
|
|
42
|
-
"unpublish": "npm unpublish --force",
|
|
43
|
-
"verify": "npm run lint && npm run test && npm run build",
|
|
44
|
-
"version:development": "npm version $(npm version minor)-SNAPSHOT",
|
|
45
|
-
"version:release": "npm version $RELEASE_VERSION -m \"[npm-scripts] prepare release $RELEASE_VERSION\" --tag-version-prefix \"\""
|
|
46
|
-
};
|
|
47
|
-
var dependencies = {
|
|
48
|
-
"@clack/prompts": "^0.10.1",
|
|
49
|
-
"cross-spawn": "^7.0.6",
|
|
50
|
-
"picocolors": "^1.1.1"
|
|
51
|
-
};
|
|
52
|
-
var devDependencies = {
|
|
53
|
-
"@types/cross-spawn": "^6.0.6",
|
|
54
|
-
"@types/node": "22.14.1",
|
|
55
|
-
"fast-glob": "^3.3.3",
|
|
56
|
-
"eslint": "8.57.1",
|
|
57
|
-
"eslint-config-eslint": "11.0.0",
|
|
58
|
-
"tsdown": "^0.10.2"
|
|
59
|
-
};
|
|
60
|
-
var engines = {
|
|
61
|
-
"node": ">=18.12",
|
|
62
|
-
"npm": ">= 8.19.x"
|
|
63
|
-
};
|
|
64
|
-
var publishConfig = { "access": "public" };
|
|
65
|
-
var nx = { "implicitDependencies": [
|
|
66
|
-
"@inditextech/weave-react",
|
|
67
|
-
"@inditextech/weave-sdk",
|
|
68
|
-
"@inditextech/weave-store-azure-web-pubsub",
|
|
69
|
-
"@inditextech/weave-store-standalone",
|
|
70
|
-
"@inditextech/weave-store-websockets",
|
|
71
|
-
"@inditextech/weave-types"
|
|
72
|
-
] };
|
|
73
|
-
var package_default = {
|
|
74
|
-
name,
|
|
75
|
-
version,
|
|
76
|
-
description,
|
|
77
|
-
keywords,
|
|
78
|
-
homepage,
|
|
79
|
-
repository,
|
|
80
|
-
license,
|
|
81
|
-
author,
|
|
82
|
-
type,
|
|
83
|
-
bin,
|
|
84
|
-
module,
|
|
85
|
-
types,
|
|
86
|
-
files,
|
|
87
|
-
scripts,
|
|
88
|
-
dependencies,
|
|
89
|
-
devDependencies,
|
|
90
|
-
engines,
|
|
91
|
-
publishConfig,
|
|
92
|
-
nx
|
|
93
|
-
};
|
|
94
|
-
|
|
8
|
+
var version = "5.2.2";
|
|
95
9
|
//#endregion
|
|
96
10
|
//#region src/index.ts
|
|
97
11
|
const manager = getPackageManager();
|
|
98
12
|
async function main() {
|
|
99
|
-
intro(pc.bgCyan(pc.bold(`Create Weave.js Backend Service [${
|
|
13
|
+
intro(pc.bgCyan(pc.bold(`Create Weave.js Backend Service [${version}]`)));
|
|
100
14
|
const options = await group({
|
|
101
15
|
name: () => text({
|
|
102
16
|
message: "Project name",
|
|
@@ -130,15 +44,15 @@ async function main() {
|
|
|
130
44
|
return;
|
|
131
45
|
}
|
|
132
46
|
if (del) {
|
|
133
|
-
const info
|
|
134
|
-
info
|
|
47
|
+
const info = spinner();
|
|
48
|
+
info.start(`Deleting files in ${projectName}`);
|
|
135
49
|
await Promise.all(destDir.map((item) => {
|
|
136
50
|
return fs.rm(path.join(dest, item), {
|
|
137
51
|
recursive: true,
|
|
138
52
|
force: true
|
|
139
53
|
});
|
|
140
54
|
}));
|
|
141
|
-
info
|
|
55
|
+
info.stop(`Deleted files in ${projectName}`);
|
|
142
56
|
}
|
|
143
57
|
}
|
|
144
58
|
const info = spinner();
|
|
@@ -164,6 +78,7 @@ main().catch((e) => {
|
|
|
164
78
|
console.error(e);
|
|
165
79
|
throw e;
|
|
166
80
|
});
|
|
167
|
-
|
|
168
81
|
//#endregion
|
|
82
|
+
export {};
|
|
83
|
+
|
|
169
84
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["
|
|
1
|
+
{"version":3,"file":"index.js","names":["packageJson.version"],"sources":["../package.json","../src/index.ts"],"sourcesContent":["","#!/usr/bin/env node\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport {\n cancel,\n confirm,\n group,\n intro,\n isCancel,\n outro,\n select,\n spinner,\n text,\n} from '@clack/prompts';\nimport pc from 'picocolors';\nimport { getPackageManager } from './auto-install';\nimport { type Template, create } from './create-app';\nimport { cwd } from './constants';\nimport packageJson from '../package.json' with { type: 'json' };\n\nconst manager = getPackageManager();\n\nasync function main(): Promise<void> {\n intro(\n pc.bgCyan(\n pc.bold(`Create Weave.js Backend Service [${packageJson.version}]`)\n )\n );\n\n const options = await group(\n {\n name: () =>\n text({\n message: 'Project name',\n placeholder: 'my-service',\n defaultValue: 'my-service',\n }),\n template: () =>\n select({\n message: 'Choose a template',\n initialValue: '+express+websockets' as Template,\n options: [\n {\n value: '+express+websockets',\n label: 'Express.js: Weave.js Websockets Store',\n hint: 'recommended',\n },\n {\n value: '+express+azure-web-pubsub',\n label: 'Express.js: Weave.js Azure Web PubSub Store',\n },\n ],\n }),\n installDeps: () =>\n confirm({\n message: `Do you want to install packages automatically? (detected as ${manager})`,\n }),\n },\n {\n onCancel: () => {\n cancel('Installation Stopped.');\n process.exit(0);\n },\n }\n );\n\n const projectName = options.name.toLowerCase().replace(/\\s/, '-');\n const dest = path.resolve(cwd, projectName);\n\n const destDir = await fs.readdir(dest).catch(() => null);\n if (destDir && destDir.length > 0) {\n const del = await confirm({\n message: `directory ${projectName} already exists, do you want to delete its files?`,\n });\n\n if (isCancel(del)) {\n cancel();\n return;\n }\n\n if (del) {\n const info = spinner();\n info.start(`Deleting files in ${projectName}`);\n\n await Promise.all(\n destDir.map((item) => {\n return fs.rm(path.join(dest, item), {\n recursive: true,\n force: true,\n });\n })\n );\n\n info.stop(`Deleted files in ${projectName}`);\n }\n }\n\n const info = spinner();\n info.start(`Generating Project`);\n\n await create({\n packageManager: manager,\n template: options.template as Template,\n outputDir: dest,\n installDeps: options.installDeps,\n log: (message) => {\n info.message(message);\n },\n });\n\n info.stop('Project Generated');\n\n outro(pc.bgGreen(pc.bold('Done')));\n\n console.log(pc.bold('\\nOpen the project'));\n console.log(pc.cyan(`cd ${projectName}`));\n\n console.log(pc.bold('\\nRun Development Server'));\n console.log(pc.cyan('npm run dev | pnpm run dev | yarn dev'));\n\n process.exit(0);\n}\n\nmain().catch((e: unknown) => {\n console.error(e);\n throw e;\n});\n"],"mappings":";;;;;;;;;;ACoBA,MAAM,UAAU,kBAAkB;AAElC,eAAe,OAAsB;CACnC,MACE,GAAG,OACD,GAAG,KAAK,oCAAoCA,QAAoB,EAAE,CACpE,CACF;CAEA,MAAM,UAAU,MAAM,MACpB;EACE,YACE,KAAK;GACH,SAAS;GACT,aAAa;GACb,cAAc;EAChB,CAAC;EACH,gBACE,OAAO;GACL,SAAS;GACT,cAAc;GACd,SAAS,CACP;IACE,OAAO;IACP,OAAO;IACP,MAAM;GACR,GACA;IACE,OAAO;IACP,OAAO;GACT,CACF;EACF,CAAC;EACH,mBACE,QAAQ,EACN,SAAS,+DAA+D,QAAQ,GAClF,CAAC;CACL,GACA,EACE,gBAAgB;EACd,OAAO,uBAAuB;EAC9B,QAAQ,KAAK,CAAC;CAChB,EACF,CACF;CAEA,MAAM,cAAc,QAAQ,KAAK,YAAY,CAAC,CAAC,QAAQ,MAAM,GAAG;CAChE,MAAM,OAAO,KAAK,QAAQ,KAAK,WAAW;CAE1C,MAAM,UAAU,MAAM,GAAG,QAAQ,IAAI,CAAC,CAAC,YAAY,IAAI;CACvD,IAAI,WAAW,QAAQ,SAAS,GAAG;EACjC,MAAM,MAAM,MAAM,QAAQ,EACxB,SAAS,aAAa,YAAY,mDACpC,CAAC;EAED,IAAI,SAAS,GAAG,GAAG;GACjB,OAAO;GACP;EACF;EAEA,IAAI,KAAK;GACP,MAAM,OAAO,QAAQ;GACrB,KAAK,MAAM,qBAAqB,aAAa;GAE7C,MAAM,QAAQ,IACZ,QAAQ,KAAK,SAAS;IACpB,OAAO,GAAG,GAAG,KAAK,KAAK,MAAM,IAAI,GAAG;KAClC,WAAW;KACX,OAAO;IACT,CAAC;GACH,CAAC,CACH;GAEA,KAAK,KAAK,oBAAoB,aAAa;EAC7C;CACF;CAEA,MAAM,OAAO,QAAQ;CACrB,KAAK,MAAM,oBAAoB;CAE/B,MAAM,OAAO;EACX,gBAAgB;EAChB,UAAU,QAAQ;EAClB,WAAW;EACX,aAAa,QAAQ;EACrB,MAAM,YAAY;GAChB,KAAK,QAAQ,OAAO;EACtB;CACF,CAAC;CAED,KAAK,KAAK,mBAAmB;CAE7B,MAAM,GAAG,QAAQ,GAAG,KAAK,MAAM,CAAC,CAAC;CAEjC,QAAQ,IAAI,GAAG,KAAK,oBAAoB,CAAC;CACzC,QAAQ,IAAI,GAAG,KAAK,MAAM,aAAa,CAAC;CAExC,QAAQ,IAAI,GAAG,KAAK,0BAA0B,CAAC;CAC/C,QAAQ,IAAI,GAAG,KAAK,uCAAuC,CAAC;CAE5D,QAAQ,KAAK,CAAC;AAChB;AAEA,KAAK,CAAC,CAAC,OAAO,MAAe;CAC3B,QAAQ,MAAM,CAAC;CACf,MAAM;AACR,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-weave-backend-app",
|
|
3
|
-
"version": "5.2.
|
|
3
|
+
"version": "5.2.2",
|
|
4
4
|
"description": "Create a new backend artifact for site with Weave.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"NextJs",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"fast-glob": "^3.3.3",
|
|
52
52
|
"eslint": "8.57.1",
|
|
53
53
|
"eslint-config-eslint": "11.0.0",
|
|
54
|
-
"tsdown": "
|
|
54
|
+
"tsdown": "0.22.14"
|
|
55
55
|
},
|
|
56
56
|
"engines": {
|
|
57
57
|
"node": ">=18.12",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
This is an Express.js application that was generated with **Create Weave.js Backend**
|
|
4
4
|
|
|
5
5
|
This server setup the Weave.js
|
|
6
|
-
[Azure Web Pubsub store](https://inditextech.github.io/weavejs/
|
|
6
|
+
[Azure Web Pubsub store](https://inditextech.github.io/weavejs/latest/main/build/stores/azure-web-pubsub-store/) store. So before perform the quickstart please setup on the `.env` file the configuration for your Azure Web Pubsub instance.
|
|
7
7
|
|
|
8
8
|
## Quickstart
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
This is an Express.js application that was generated with **Create Weave.js Backend**
|
|
4
4
|
|
|
5
5
|
This server setup the Weave.js
|
|
6
|
-
[Azure WebSockets](https://inditextech.github.io/weavejs/
|
|
6
|
+
[Azure WebSockets](https://inditextech.github.io/weavejs/latest/main/build/stores/websockets-store/) store. No extra setup needed.
|
|
7
7
|
|
|
8
8
|
## Quickstart
|
|
9
9
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-app-DBvewJ0W.js","names":["cwd: string","root: string","manager: PackageManager","dest: string","options: Options","file: string","dest: string","projectName: string","from: string","to: string","rename: (s: string) => string","obj: T","keys: K[]","result: Partial<T>"],"sources":["../src/git.ts","../src/versions.js","../template/package.json","../src/auto-install.ts","../src/constants.ts","../src/create-app.ts"],"sourcesContent":["import { execSync } from 'node:child_process';\nimport { rmSync } from 'node:fs';\nimport { join } from 'node:path';\n\n/*\nInitialize a Git repo on the project.\n\nBased on https://github.com/vercel/next.js/blob/canary/packages/create-next-app/helpers/git.ts\n*/\n\nfunction isInGitRepository(cwd: string): boolean {\n try {\n execSync('git rev-parse --is-inside-work-tree', { stdio: 'ignore', cwd });\n return true;\n } catch {\n return false;\n }\n}\n\nfunction isInMercurialRepository(cwd: string): boolean {\n try {\n execSync('hg --cwd . root', { stdio: 'ignore', cwd });\n return true;\n } catch {\n return false;\n }\n}\n\nfunction isDefaultBranchSet(cwd: string): boolean {\n try {\n execSync('git config init.defaultBranch', { stdio: 'ignore', cwd });\n return true;\n } catch {\n return false;\n }\n}\n\nexport function tryGitInit(root: string): boolean {\n let didInit = false;\n\n try {\n execSync('git --version', { stdio: 'ignore' });\n if (isInGitRepository(root) || isInMercurialRepository(root)) {\n return false;\n }\n\n execSync('git init', { stdio: 'ignore', cwd: root });\n didInit = true;\n\n if (!isDefaultBranchSet(root)) {\n execSync('git checkout -b main', { stdio: 'ignore', cwd: root });\n }\n\n execSync('git add -A', { stdio: 'ignore', cwd: root });\n execSync('git commit -m \"Initial commit from Create Fumadocs App\"', {\n stdio: 'ignore',\n cwd: root,\n });\n return true;\n } catch {\n if (didInit) {\n try {\n rmSync(join(root, '.git'), { recursive: true, force: true });\n } catch {\n // do nothing\n }\n }\n\n return false;\n }\n}\n","export const versions = {\"@inditextech/weave-react\":\"5.2.1\",\"@inditextech/weave-sdk\":\"5.2.1\",\"@inditextech/weave-store-azure-web-pubsub\":\"5.2.1\",\"@inditextech/weave-store-standalone\":\"5.2.1\",\"@inditextech/weave-store-websockets\":\"5.2.1\",\"@inditextech/weave-types\":\"5.2.1\"}","{\n \"name\": \"example-versions\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"description\": \"Used to track dependency versions in create-*-app\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@dotenvx/dotenvx\": \"^1.44.0\",\n \"@imgly/background-removal-node\": \"^1.4.5\",\n \"@inditextech/weave-sdk\": \"0.0.0\",\n \"@inditextech/weave-store-azure-web-pubsub\": \"0.0.0\",\n \"@inditextech/weave-store-standalone\": \"0.0.0\",\n \"@inditextech/weave-store-websockets\": \"0.0.0\",\n \"archiver\": \"^7.0.1\",\n \"cors\": \"^2.8.5\",\n \"dotenv\": \"^16.4.7\",\n \"express\": \"^4.21.2\",\n \"helmet\": \"^8.0.0\",\n \"morgan\": \"^1.10.0\",\n \"multer\": \"^2.0.2\",\n \"p-queue\": \"^9.0.1\",\n \"pino\": \"^9.6.0\",\n \"pino-http\": \"^10.4.0\",\n \"pino-pretty\": \"^13.0.0\",\n \"tslib\": \"^2.8.1\",\n \"tsx\": \"^4.19.3\",\n \"uuid\": \"^11.1.1\",\n \"zod\": \"^3.24.2\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^9.26.0\",\n \"@types/archiver\": \"^7.0.0\",\n \"@types/cors\": \"^2.8.17\",\n \"@types/express\": \"^5.0.0\",\n \"@types/morgan\": \"^1.9.9\",\n \"@types/multer\": \"^1.4.12\",\n \"@types/node\": \"^22.13.5\",\n \"@typescript-eslint/eslint-plugin\": \"^8.25.0\",\n \"@typescript-eslint/parser\": \"^8.25.0\",\n \"cp-cli\": \"^2.0.0\",\n \"eslint\": \"^9.26.0\",\n \"eslint-config-prettier\": \"^10.1.5\",\n \"globals\": \"^16.0.0\",\n \"make-dir-cli\": \"^4.0.0\",\n \"nodemon\": \"^3.1.9\",\n \"prettier\": \"^3.5.2\",\n \"tsc-alias\": \"^1.8.16\",\n \"tsconfig-paths\": \"^4.2.0\",\n \"typescript\": \"^5.7.3\",\n \"typescript-eslint\": \"^8.25.0\"\n }\n}\n","import { spawn } from 'cross-spawn';\n\nexport type PackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun';\n\nexport function getPackageManager(): PackageManager {\n const userAgent = process.env.npm_config_user_agent ?? '';\n\n if (userAgent.startsWith('yarn')) {\n return 'yarn';\n }\n\n if (userAgent.startsWith('pnpm')) {\n return 'pnpm';\n }\n\n if (userAgent.startsWith('bun')) {\n return 'bun';\n }\n\n return 'npm';\n}\n\nexport function autoInstall(\n manager: PackageManager,\n dest: string\n): Promise<void> {\n return new Promise((res, reject) => {\n const installProcess = spawn(manager, ['install'], {\n stdio: 'ignore',\n env: {\n ...process.env,\n NODE_ENV: 'development',\n DISABLE_OPENCOLLECTIVE: '1',\n },\n cwd: dest,\n });\n\n installProcess.on('close', (code) => {\n if (code !== 0) {\n reject(new Error('Install failed'));\n } else {\n res();\n }\n });\n });\n}\n","import { fileURLToPath } from 'node:url';\n\nexport const sourceDir = fileURLToPath(new URL(`../`, import.meta.url).href);\nexport const cwd = process.cwd();\n","import path from 'node:path';\nimport fs from 'node:fs/promises';\nimport { tryGitInit } from '@/git';\nimport { versions as localVersions } from '@/versions';\nimport versionPkg from './../template/package.json' with { type: 'json' };\nimport type { PackageManager } from './auto-install';\nimport { autoInstall } from './auto-install';\nimport { cwd, sourceDir } from './constants';\n\nexport type Template = '+express+websockets' | '+express+azure-web-pubsub';\n\nexport interface Options {\n outputDir: string;\n template: Template;\n packageManager: PackageManager;\n installDeps?: boolean;\n initializeGit?: boolean;\n log?: (message: string) => void;\n}\n\nexport async function create(options: Options): Promise<void> {\n const {\n installDeps = true,\n initializeGit = true,\n log = console.log,\n } = options;\n const projectName = path.basename(options.outputDir);\n const dest = path.resolve(cwd, options.outputDir);\n\n function defaultRename(file: string): string {\n file = file.replace('example.gitignore', '.gitignore');\n file = file.replace('example.env', '.env');\n\n return file;\n }\n\n await copy(\n path.join(sourceDir, `template/${options.template}`),\n dest,\n defaultRename\n );\n\n // update tsconfig.json for src dir\n // if (isNext && options.useSrcDir) {\n const tsconfigPath = path.join(dest, 'tsconfig.json');\n const content = (await fs.readFile(tsconfigPath)).toString();\n\n const config = JSON.parse(content);\n\n if (config.compilerOptions?.paths) {\n Object.assign(config.compilerOptions.paths, {\n '@/*': ['./src/*'],\n });\n }\n\n await fs.writeFile(tsconfigPath, JSON.stringify(config, null, 2));\n // }\n\n const packageJson = createPackageJson(projectName, options);\n await fs.writeFile(\n path.join(dest, 'package.json'),\n JSON.stringify(packageJson, null, 2)\n );\n\n const readMe = await getReadme(dest, projectName);\n await fs.writeFile(path.join(dest, 'README.md'), readMe);\n\n if (installDeps) {\n await autoInstall(options.packageManager, dest);\n log('Installed dependencies');\n }\n\n if (initializeGit && tryGitInit(dest)) {\n log('Initialized Git repository');\n }\n}\n\nasync function getReadme(dest: string, projectName: string): Promise<string> {\n const template = await fs\n .readFile(path.join(dest, 'README.md'))\n .then((res) => res.toString());\n\n return `# ${projectName}\\n\\n${template}`;\n}\n\nasync function copy(\n from: string,\n to: string,\n rename: (s: string) => string = (s) => s\n): Promise<void> {\n const stats = await fs.stat(from);\n\n if (stats.isDirectory()) {\n const files = await fs.readdir(from);\n\n await Promise.all(\n files.map((file) =>\n copy(path.join(from, file), rename(path.join(to, file)))\n )\n );\n } else {\n await fs.mkdir(path.dirname(to), { recursive: true });\n await fs.copyFile(from, to);\n }\n}\n\nfunction createPackageJson(projectName: string, options: Options): object {\n if (options.template === '+express+azure-web-pubsub') {\n const dependencies = {\n ...pick(localVersions, [\n '@inditextech/weave-sdk',\n '@inditextech/weave-store-azure-web-pubsub',\n '@inditextech/weave-store-standalone',\n ]),\n ...pick(versionPkg.dependencies, [\n '@dotenvx/dotenvx',\n '@imgly/background-removal-node',\n 'archiver',\n 'cors',\n 'dotenv',\n 'express',\n 'helmet',\n 'morgan',\n 'multer',\n 'p-queue',\n 'pino',\n 'pino-http',\n 'pino-pretty',\n 'tslib',\n 'tsx',\n 'uuid',\n 'zod',\n ]),\n };\n\n const devDependencies = {\n ...pick(versionPkg.devDependencies, [\n '@eslint/js',\n '@types/archiver',\n '@types/cors',\n '@types/express',\n '@types/morgan',\n '@types/multer',\n '@types/node',\n '@typescript-eslint/eslint-plugin',\n '@typescript-eslint/parser',\n 'cp-cli',\n 'eslint',\n 'eslint-config-prettier',\n 'globals',\n 'make-dir-cli',\n 'nodemon',\n 'prettier',\n 'tsc-alias',\n 'tsconfig-paths',\n 'typescript',\n 'typescript-eslint',\n ]),\n };\n\n return {\n ...versionPkg,\n name: projectName,\n scripts: {\n build:\n 'tsc && tsc-alias -p tsconfig.json && make-dir ./dist/public && make-dir ./dist/temp && cp-cli ./public ./dist/public && cp-cli ./package.json ./dist/package.json',\n ['copy:assets']:\n 'make-dir ./public && cp-cli node_modules/@imgly/background-removal-node/dist/. public',\n ['copy:fonts']: 'cp-cli fonts/. dist/fonts',\n dev: 'nodemon',\n format: 'prettier --write \"src/**/*.{ts,tsx}\"',\n lint: 'eslint ./src',\n postinstall: 'npm run copy:assets',\n start:\n 'node --experimental-specifier-resolution=node --loader --env-file=.env ts-node/esm dist/server.js',\n ['start:dev']:\n 'cp-cli .env ./dist/.env && cd dist && NODE_ENV=development NODE_OPTIONS=\"--max-old-space-size=4096\" node --env-file=.env ./server.js',\n },\n dependencies: sortObjectKeys(dependencies),\n devDependencies: sortObjectKeys(devDependencies),\n };\n }\n\n const dependencies = {\n ...pick(versionPkg.dependencies, [\n '@dotenvx/dotenvx',\n '@imgly/background-removal-node',\n 'archiver',\n 'cors',\n 'dotenv',\n 'express',\n 'helmet',\n 'morgan',\n 'multer',\n 'p-queue',\n 'pino',\n 'pino-http',\n 'pino-pretty',\n 'tslib',\n 'tsx',\n 'uuid',\n 'zod',\n ]),\n ...pick(localVersions, [\n '@inditextech/weave-sdk',\n '@inditextech/weave-store-websockets',\n '@inditextech/weave-store-standalone',\n ]),\n };\n\n const devDependencies = {\n ...pick(versionPkg.devDependencies, [\n '@eslint/js',\n '@types/archiver',\n '@types/cors',\n '@types/express',\n '@types/morgan',\n '@types/multer',\n '@types/node',\n '@typescript-eslint/eslint-plugin',\n '@typescript-eslint/parser',\n 'cp-cli',\n 'eslint',\n 'eslint-config-prettier',\n 'globals',\n 'make-dir-cli',\n 'nodemon',\n 'prettier',\n 'tsc-alias',\n 'tsconfig-paths',\n 'typescript',\n 'typescript-eslint',\n ]),\n };\n\n return {\n ...versionPkg,\n name: projectName,\n scripts: {\n build:\n 'tsc && tsc-alias -p tsconfig.json && make-dir ./dist/public && make-dir ./dist/temp && cp-cli ./public ./dist/public && cp-cli ./package.json ./dist/package.json',\n ['copy:assets']:\n 'make-dir ./public && cp-cli node_modules/@imgly/background-removal-node/dist/. public',\n ['copy:fonts']: 'cp-cli fonts/. dist/fonts',\n dev: 'nodemon',\n format: 'prettier --write \"src/**/*.{ts,tsx}\"',\n lint: 'eslint ./src',\n postinstall: 'npm run copy:assets',\n start:\n 'node --experimental-specifier-resolution=node --loader --env-file=.env ts-node/esm dist/server.js',\n ['start:dev']:\n 'cp-cli .env ./dist/.env && cd dist && NODE_ENV=development NODE_OPTIONS=\"--max-old-space-size=4096\" node --env-file=.env ./server.js',\n },\n dependencies: sortObjectKeys(dependencies),\n devDependencies: sortObjectKeys(devDependencies),\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction sortObjectKeys<T extends Record<string, any>>(obj: T): T {\n const sortedEntries = Object.keys(obj)\n .sort()\n .map((key) => [key, obj[key]] as [keyof T, T[keyof T]]);\n\n return Object.fromEntries(sortedEntries) as T;\n}\n\nfunction pick<T extends object, K extends keyof T>(\n obj: T,\n keys: K[]\n): Pick<T, K> {\n const result: Partial<T> = {};\n\n for (const key of keys) {\n if (key in obj) {\n result[key] = obj[key];\n }\n }\n\n return result as Pick<T, K>;\n}\n"],"mappings":"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;IACA;IACA;GACD,EAAC;GACF,GAAG,KAAK,gBAAW,cAAc;IAC/B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD,EAAC;EACH;EAED,MAAM,oBAAkB,EACtB,GAAG,KAAK,gBAAW,iBAAiB;GAClC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD,EAAC,CACH;AAED,SAAO;GACL,GAAG;GACH,MAAM;GACN,SAAS;IACP,OACE;KACD,gBACC;KACD,eAAe;IAChB,KAAK;IACL,QAAQ;IACR,MAAM;IACN,aAAa;IACb,OACE;KACD,cACC;GACH;GACD,cAAc,eAAe,eAAa;GAC1C,iBAAiB,eAAe,kBAAgB;EACjD;CACF;CAED,MAAM,iBAAe;EACnB,GAAG,KAAK,gBAAW,cAAc;GAC/B;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD,EAAC;EACF,GAAG,KAAK,UAAe;GACrB;GACA;GACA;EACD,EAAC;CACH;CAED,MAAM,oBAAkB,EACtB,GAAG,KAAK,gBAAW,iBAAiB;EAClC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD,EAAC,CACH;AAED,QAAO;EACL,GAAG;EACH,MAAM;EACN,SAAS;GACP,OACE;IACD,gBACC;IACD,eAAe;GAChB,KAAK;GACL,QAAQ;GACR,MAAM;GACN,aAAa;GACb,OACE;IACD,cACC;EACH;EACD,cAAc,eAAe,eAAa;EAC1C,iBAAiB,eAAe,kBAAgB;CACjD;AACF;AAGD,SAAS,eAA8CO,KAAW;CAChE,MAAM,gBAAgB,OAAO,KAAK,IAAI,CACnC,MAAM,CACN,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAK,EAA0B;AAEzD,QAAO,OAAO,YAAY,cAAc;AACzC;AAED,SAAS,KACPA,KACAC,MACY;CACZ,MAAMC,SAAqB,CAAE;AAE7B,MAAK,MAAM,OAAO,KAChB,KAAI,OAAO,IACT,QAAO,OAAO,IAAI;AAItB,QAAO;AACR"}
|