create-steedos-app 3.0.2-beta.10 → 3.0.2-beta.12
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.d.ts +1 -1
- package/dist/create-app.js +28 -32
- package/dist/create-app.js.map +1 -1
- package/package.json +2 -2
- package/templates/default/.env +8 -1
- package/templates/default/README.md +74 -13
- package/templates/default/package.json +1 -1
- package/templates/default/steedos-packages/example-app/README.md +3 -0
- package/templates/default/steedos-packages/example-app/package.json +7 -0
- package/templates/default/steedos-packages/example-app/package.service.js +21 -0
- package/templates/default/steedos-packages/example-service/README.md +0 -19
- package/templates/default/steedos-packages/example-service/package.json +0 -8
- package/templates/default/steedos-packages/example-service/package.service.js +0 -88
package/dist/create-app.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PackageManager } from
|
|
1
|
+
import type { PackageManager } from "./helpers/get-pkg-manager";
|
|
2
2
|
export declare class DownloadError extends Error {
|
|
3
3
|
}
|
|
4
4
|
export declare function createApp({ appPath, packageManager, example, examplePath, typescript, }: {
|
package/dist/create-app.js
CHANGED
|
@@ -23,20 +23,20 @@ class DownloadError extends Error {
|
|
|
23
23
|
exports.DownloadError = DownloadError;
|
|
24
24
|
async function createApp({ appPath, packageManager, example, examplePath, typescript, }) {
|
|
25
25
|
let repoInfo;
|
|
26
|
-
const template =
|
|
26
|
+
const template = "default";
|
|
27
27
|
if (example) {
|
|
28
28
|
let repoUrl;
|
|
29
29
|
try {
|
|
30
30
|
repoUrl = new URL(example);
|
|
31
31
|
}
|
|
32
32
|
catch (error) {
|
|
33
|
-
if (error.code !==
|
|
33
|
+
if (error.code !== "ERR_INVALID_URL") {
|
|
34
34
|
console.error(error);
|
|
35
35
|
process.exit(1);
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
if (repoUrl) {
|
|
39
|
-
if (repoUrl.origin !==
|
|
39
|
+
if (repoUrl.origin !== "https://github.com") {
|
|
40
40
|
console.error(`Invalid URL: ${chalk_1.default.red(`"${example}"`)}. Only GitHub repositories are supported. Please use a GitHub URL and try again.`);
|
|
41
41
|
process.exit(1);
|
|
42
42
|
}
|
|
@@ -51,7 +51,7 @@ async function createApp({ appPath, packageManager, example, examplePath, typesc
|
|
|
51
51
|
process.exit(1);
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
-
else if (example !==
|
|
54
|
+
else if (example !== "__internal-testing-retry") {
|
|
55
55
|
const found = await (0, examples_1.existsInRepo)(example);
|
|
56
56
|
if (!found) {
|
|
57
57
|
console.error(`Could not locate an example named ${chalk_1.default.red(`"${example}"`)}. It could be due to the following:\n`, `1. Your spelling of example ${chalk_1.default.red(`"${example}"`)} might be incorrect.\n`, `2. You might not be connected to the internet or you are behind a proxy.`);
|
|
@@ -61,8 +61,8 @@ async function createApp({ appPath, packageManager, example, examplePath, typesc
|
|
|
61
61
|
}
|
|
62
62
|
const root = path_1.default.resolve(appPath);
|
|
63
63
|
if (!(await (0, is_writeable_1.isWriteable)(path_1.default.dirname(root)))) {
|
|
64
|
-
console.error(
|
|
65
|
-
console.error(
|
|
64
|
+
console.error("The application path is not writable, please check folder permissions and try again.");
|
|
65
|
+
console.error("It is likely you do not have write permissions for this folder.");
|
|
66
66
|
process.exit(1);
|
|
67
67
|
}
|
|
68
68
|
const appName = path_1.default.basename(root);
|
|
@@ -70,13 +70,13 @@ async function createApp({ appPath, packageManager, example, examplePath, typesc
|
|
|
70
70
|
if (!(0, is_folder_empty_1.isFolderEmpty)(root, appName)) {
|
|
71
71
|
process.exit(1);
|
|
72
72
|
}
|
|
73
|
-
const useYarn = packageManager ===
|
|
73
|
+
const useYarn = packageManager === "yarn";
|
|
74
74
|
const isOnline = !useYarn || (await (0, is_online_1.getOnline)());
|
|
75
75
|
const originalDirectory = process.cwd();
|
|
76
76
|
console.log(`Creating a new steedos app in ${chalk_1.default.green(root)}.`);
|
|
77
77
|
console.log();
|
|
78
78
|
process.chdir(root);
|
|
79
|
-
const packageJsonPath = path_1.default.join(root,
|
|
79
|
+
const packageJsonPath = path_1.default.join(root, "package.json");
|
|
80
80
|
let hasPackageJson = false;
|
|
81
81
|
if (example) {
|
|
82
82
|
try {
|
|
@@ -98,23 +98,23 @@ async function createApp({ appPath, packageManager, example, examplePath, typesc
|
|
|
98
98
|
}
|
|
99
99
|
catch (reason) {
|
|
100
100
|
function isErrorLike(err) {
|
|
101
|
-
return (typeof err ===
|
|
101
|
+
return (typeof err === "object" &&
|
|
102
102
|
err !== null &&
|
|
103
|
-
typeof err.message ===
|
|
103
|
+
typeof err.message === "string");
|
|
104
104
|
}
|
|
105
|
-
throw new DownloadError(isErrorLike(reason) ? reason.message : reason +
|
|
105
|
+
throw new DownloadError(isErrorLike(reason) ? reason.message : reason + "");
|
|
106
106
|
}
|
|
107
|
-
const ignorePath = path_1.default.join(root,
|
|
107
|
+
const ignorePath = path_1.default.join(root, ".gitignore");
|
|
108
108
|
if (!fs_1.default.existsSync(ignorePath)) {
|
|
109
|
-
fs_1.default.copyFileSync(path_1.default.join(__dirname,
|
|
109
|
+
fs_1.default.copyFileSync(path_1.default.join(__dirname, "..", "templates", template, "gitignore"), ignorePath);
|
|
110
110
|
}
|
|
111
|
-
const tsconfigPath = path_1.default.join(root,
|
|
111
|
+
const tsconfigPath = path_1.default.join(root, "tsconfig.json");
|
|
112
112
|
if (fs_1.default.existsSync(tsconfigPath)) {
|
|
113
|
-
fs_1.default.copyFileSync(path_1.default.join(__dirname,
|
|
113
|
+
fs_1.default.copyFileSync(path_1.default.join(__dirname, "..", "templates", "typescript", "next-env.d.ts"), path_1.default.join(root, "next-env.d.ts"));
|
|
114
114
|
}
|
|
115
115
|
hasPackageJson = fs_1.default.existsSync(packageJsonPath);
|
|
116
116
|
if (hasPackageJson) {
|
|
117
|
-
console.log(
|
|
117
|
+
console.log("Installing packages. This might take a couple of minutes.");
|
|
118
118
|
console.log();
|
|
119
119
|
await (0, install_1.install)(root, null, { packageManager, isOnline });
|
|
120
120
|
console.log();
|
|
@@ -124,27 +124,23 @@ async function createApp({ appPath, packageManager, example, examplePath, typesc
|
|
|
124
124
|
console.log(chalk_1.default.bold(`Using ${packageManager}.`));
|
|
125
125
|
const packageJson = {
|
|
126
126
|
name: appName,
|
|
127
|
-
version:
|
|
127
|
+
version: "0.1.0",
|
|
128
128
|
private: true,
|
|
129
129
|
scripts: {
|
|
130
130
|
start: "moleculer-runner services/*/package.service.js --hot --repl",
|
|
131
131
|
repl: "moleculer-runner --repl",
|
|
132
|
-
}
|
|
132
|
+
},
|
|
133
133
|
};
|
|
134
|
-
fs_1.default.writeFileSync(path_1.default.join(root,
|
|
134
|
+
fs_1.default.writeFileSync(path_1.default.join(root, "package.json"), JSON.stringify(packageJson, null, 2) + os_1.default.EOL);
|
|
135
135
|
const installFlags = { packageManager, isOnline };
|
|
136
|
-
const dependencies = [
|
|
137
|
-
|
|
138
|
-
];
|
|
139
|
-
const devDependencies = [
|
|
140
|
-
'moleculer-repl'
|
|
141
|
-
];
|
|
136
|
+
const dependencies = ["@steedos/server"];
|
|
137
|
+
const devDependencies = ["moleculer-repl"];
|
|
142
138
|
if (typescript) {
|
|
143
|
-
devDependencies.push(
|
|
139
|
+
devDependencies.push("typescript");
|
|
144
140
|
}
|
|
145
141
|
if (dependencies.length) {
|
|
146
142
|
console.log();
|
|
147
|
-
console.log(
|
|
143
|
+
console.log("Installing dependencies:");
|
|
148
144
|
for (const dependency of dependencies) {
|
|
149
145
|
console.log(`- ${chalk_1.default.cyan(dependency)}`);
|
|
150
146
|
}
|
|
@@ -153,7 +149,7 @@ async function createApp({ appPath, packageManager, example, examplePath, typesc
|
|
|
153
149
|
}
|
|
154
150
|
if (devDependencies.length) {
|
|
155
151
|
console.log();
|
|
156
|
-
console.log(
|
|
152
|
+
console.log("Installing devDependencies:");
|
|
157
153
|
for (const devDependency of devDependencies) {
|
|
158
154
|
console.log(`- ${chalk_1.default.cyan(devDependency)}`);
|
|
159
155
|
}
|
|
@@ -162,14 +158,14 @@ async function createApp({ appPath, packageManager, example, examplePath, typesc
|
|
|
162
158
|
await (0, install_1.install)(root, devDependencies, devInstallFlags);
|
|
163
159
|
}
|
|
164
160
|
console.log();
|
|
165
|
-
await (0, cpy_1.default)([
|
|
161
|
+
await (0, cpy_1.default)(["**"], root, {
|
|
166
162
|
dot: true,
|
|
167
163
|
parents: true,
|
|
168
|
-
cwd: path_1.default.join(__dirname,
|
|
164
|
+
cwd: path_1.default.join(__dirname, "..", "templates", template),
|
|
169
165
|
});
|
|
170
166
|
}
|
|
171
167
|
if ((0, git_1.tryGitInit)(root)) {
|
|
172
|
-
console.log(
|
|
168
|
+
console.log("Initialized a git repository.");
|
|
173
169
|
console.log();
|
|
174
170
|
}
|
|
175
171
|
let cdpath;
|
|
@@ -179,7 +175,7 @@ async function createApp({ appPath, packageManager, example, examplePath, typesc
|
|
|
179
175
|
else {
|
|
180
176
|
cdpath = appPath;
|
|
181
177
|
}
|
|
182
|
-
console.log(`${chalk_1.default.green(
|
|
178
|
+
console.log(`${chalk_1.default.green("Success!")} Created ${appName} at ${appPath}`);
|
|
183
179
|
console.log();
|
|
184
180
|
}
|
|
185
181
|
//# sourceMappingURL=create-app.js.map
|
package/dist/create-app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-app.js","sourceRoot":"","sources":["../src/create-app.ts"],"names":[],"mappings":";;;;;;AAyBA,
|
|
1
|
+
{"version":3,"file":"create-app.js","sourceRoot":"","sources":["../src/create-app.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-steedos-app",
|
|
3
|
-
"version": "3.0.2-beta.
|
|
3
|
+
"version": "3.0.2-beta.12",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"react",
|
|
6
6
|
"steedos"
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"engines": {
|
|
50
50
|
"node": ">=14"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "980c6c585aeffd2b82a100bbe6f6e7658fbe10da"
|
|
53
53
|
}
|
package/templates/default/.env
CHANGED
|
@@ -1,31 +1,92 @@
|
|
|
1
|
-
# Steedos
|
|
1
|
+
# Steedos Example App
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This is an enterprise-grade low-code/no-code application built on the [Steedos Platform](https://www.steedos.com/).
|
|
4
4
|
|
|
5
|
-
-
|
|
5
|
+
This project was scaffolded using `create-steedos-app`. It provides a foundation for rapid metadata modeling, API extensions, and business logic development.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## 🛠 Prerequisites
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Before you begin, ensure you have the following installed in your development environment:
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
- **Node.js**: v22.0 or higher
|
|
12
|
+
- **MongoDB**: v7.0 or higher
|
|
13
|
+
- **Redis**:
|
|
14
|
+
- **Yarn**
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
## 🚀 Quick Start
|
|
17
|
+
|
|
18
|
+
### 1. Start Db Services
|
|
16
19
|
|
|
20
|
+
Make sure your MongoDB and Redis services are running. You can start them using the following commands:
|
|
17
21
|
|
|
18
|
-
|
|
22
|
+
```bash
|
|
23
|
+
yarn start:db
|
|
24
|
+
```
|
|
25
|
+
### 2. Install Dependencies
|
|
19
26
|
|
|
20
|
-
|
|
27
|
+
Run the following command in the project root to install the required Node packages:
|
|
21
28
|
|
|
22
29
|
```bash
|
|
30
|
+
yarn install
|
|
23
31
|
yarn
|
|
24
|
-
yarn build
|
|
25
32
|
```
|
|
26
33
|
|
|
27
|
-
###
|
|
34
|
+
### 3. Start the Server
|
|
35
|
+
|
|
36
|
+
Start the development server. Steedos will output the access URL in the console.
|
|
28
37
|
|
|
29
38
|
```bash
|
|
30
39
|
yarn start
|
|
31
40
|
```
|
|
41
|
+
|
|
42
|
+
### 4. Access the Application
|
|
43
|
+
|
|
44
|
+
Once the server starts successfully, open your browser and visit:
|
|
45
|
+
`http://localhost:5100` (Default port)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
## 📂 Project Structure
|
|
49
|
+
|
|
50
|
+
Here is an overview of the core file structure:
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
my-project/
|
|
54
|
+
├── .env # Environment variables (Do not commit sensitive info)
|
|
55
|
+
├── .env.local # Local environment overrides
|
|
56
|
+
├── package.json # Project dependencies and scripts
|
|
57
|
+
├── steedos-config.js # Core Steedos configuration
|
|
58
|
+
├── steedos-packages/example-app/ # Core app directory
|
|
59
|
+
│ ├── main/
|
|
60
|
+
│ │ └── default/
|
|
61
|
+
│ │ ├── objects/ # Object definitions (Metadata)
|
|
62
|
+
│ │ ├── app/ # app definitions (Metadata)
|
|
63
|
+
│ └── package.json # Business package definition
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## ⚙️ Configuration
|
|
67
|
+
|
|
68
|
+
Create or modify the `.env` file in the project root to configure the database connection and service ports:
|
|
69
|
+
|
|
70
|
+
```shell
|
|
71
|
+
# Service Port
|
|
72
|
+
PORT=5100
|
|
73
|
+
|
|
74
|
+
# Database Connection (MongoDB)
|
|
75
|
+
MONGO_URL=mongodb://127.0.0.1:27017/steedos
|
|
76
|
+
|
|
77
|
+
# Root URL (Important for attachments and API callbacks)
|
|
78
|
+
ROOT_URL=http://localhost:5100
|
|
79
|
+
|
|
80
|
+
# Metadata Storage Directory
|
|
81
|
+
STEEDOS_STORAGE_DIR=./storage
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## 💻 Development Guide
|
|
85
|
+
|
|
86
|
+
### Exporting Metadata
|
|
87
|
+
|
|
88
|
+
If you modify configurations via the UI (Steedos Objects), you can sync changes back to your local code using the Steedos command line tools or the VS Code extension.
|
|
89
|
+
## 📚 Resources
|
|
90
|
+
|
|
91
|
+
- [Steedos Documentation](https://docs.steedos.com/)
|
|
92
|
+
- [Steedos GitHub Repository](https://github.com/steedos/steedos-platform)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const project = require('./package.json');
|
|
2
|
+
const packageLoader = require('@steedos/service-package-loader');
|
|
3
|
+
|
|
4
|
+
module.exports = {
|
|
5
|
+
name: "example-service",
|
|
6
|
+
|
|
7
|
+
mixins: [packageLoader],
|
|
8
|
+
|
|
9
|
+
metadata: {
|
|
10
|
+
$package: {
|
|
11
|
+
name: project.name,
|
|
12
|
+
version: project.version,
|
|
13
|
+
path: __dirname,
|
|
14
|
+
isPackage: true
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
actions: {
|
|
18
|
+
},
|
|
19
|
+
events: {
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
微服务软件包
|
|
2
|
-
===
|
|
3
|
-
|
|
4
|
-
可以使用微服务方式扩展化验魔方。
|
|
5
|
-
|
|
6
|
-
## 启动服务
|
|
7
|
-
|
|
8
|
-
```sh
|
|
9
|
-
yarn start:services
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
启动服务之后,为华炎魔方服务扩展了以下API
|
|
13
|
-
|
|
14
|
-
- hello, 获取当前登录用户: http://127.0.0.1:5000/service/api/example-service/hello/jack
|
|
15
|
-
- me, 获取当前登录用户: http://127.0.0.1:5000/service/api/example-service/me
|
|
16
|
-
|
|
17
|
-
## 参考
|
|
18
|
-
|
|
19
|
-
- [Moleculer Nodejs](https://moleculer.services/zh/)
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
const project = require('./package.json');
|
|
2
|
-
const packageLoader = require('@steedos/service-package-loader');
|
|
3
|
-
|
|
4
|
-
module.exports = {
|
|
5
|
-
name: "example-service",
|
|
6
|
-
|
|
7
|
-
mixins: [packageLoader],
|
|
8
|
-
|
|
9
|
-
metadata: {
|
|
10
|
-
$package: {
|
|
11
|
-
name: project.name,
|
|
12
|
-
version: project.version,
|
|
13
|
-
path: __dirname,
|
|
14
|
-
isPackage: true
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
|
|
18
|
-
actions: {
|
|
19
|
-
hello: {
|
|
20
|
-
// 使用微服务方式定义 API 接口。
|
|
21
|
-
// 访问地址: GET /service/api/example-service/hello/:name
|
|
22
|
-
rest: { method: 'GET', path: '/hello/:name' },
|
|
23
|
-
handler(ctx) {
|
|
24
|
-
return {
|
|
25
|
-
data: 'Welcome ' + ctx.params.name
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
},
|
|
29
|
-
me: {
|
|
30
|
-
rest: { method: 'GET', path: '/me' },
|
|
31
|
-
// 在微服务中获取当前登录的用户信息
|
|
32
|
-
async handler(ctx) {
|
|
33
|
-
return ctx.meta.user
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
// 在微服务中调用graphql查询数据库
|
|
37
|
-
graphqlQuerySpaceUsers: {
|
|
38
|
-
rest: { method: 'GET', path: '/graphql' },
|
|
39
|
-
async handler(ctx) {
|
|
40
|
-
return await this.broker.call('api.graphql', {
|
|
41
|
-
query: `
|
|
42
|
-
query {
|
|
43
|
-
space_users(filters: ["user", "=", "${ctx.meta.user.userId}"]) {
|
|
44
|
-
name
|
|
45
|
-
organization__expand {
|
|
46
|
-
name
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
`},
|
|
51
|
-
// 如果查询 GraphQL 需要带上当前用户的权限,需要传入 user 属性。
|
|
52
|
-
{
|
|
53
|
-
meta: {
|
|
54
|
-
user: ctx.meta.user
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
)
|
|
58
|
-
},
|
|
59
|
-
},
|
|
60
|
-
// 在微服务中调用objectql查询数据库, 需要 mixins: [require('@steedos/service-object-mixin')],
|
|
61
|
-
objectqlQuerySpaceUsers: {
|
|
62
|
-
rest: { method: 'GET', path: '/objectql' },
|
|
63
|
-
async handler(ctx) {
|
|
64
|
-
return await this.getObject('space_users').find(
|
|
65
|
-
{
|
|
66
|
-
filters: ['user', '=', ctx.meta.user.userId]
|
|
67
|
-
},
|
|
68
|
-
ctx.meta.user
|
|
69
|
-
)
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
// 使用微服务定义触发器
|
|
73
|
-
spaceUsersBeforeUpdate: {
|
|
74
|
-
trigger: { listenTo: 'space_users', when: ['beforeUpdate', 'beforeInsert']},
|
|
75
|
-
async handler(ctx) {
|
|
76
|
-
this.broker.logger.info('spaceUsersBeforeUpdate', ctx)
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
|
-
events: {
|
|
81
|
-
"@space_users.updated": {
|
|
82
|
-
handler(payload) {
|
|
83
|
-
// 监听人员修改事件
|
|
84
|
-
this.broker.logger.info(payload);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|