@pylonts/dsl 1.1.11 → 1.1.13

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.
Files changed (50) hide show
  1. package/dist/convert.d.ts +6 -8
  2. package/dist/curd.js +1 -1
  3. package/dist/dao.d.ts +10 -7
  4. package/dist/dao.js +20 -7
  5. package/dist/dsl.d.ts +18 -1
  6. package/dist/dsl.js +40 -0
  7. package/dist/dto.d.ts +13 -8
  8. package/dist/dto.js +68 -13
  9. package/dist/entity.d.ts +4 -3
  10. package/dist/entity.js +1 -1
  11. package/dist/filter.d.ts +6 -4
  12. package/dist/filter.js +1 -1
  13. package/dist/flow-script.js +8 -2
  14. package/dist/flow.d.ts +10 -2
  15. package/dist/flow.js +44 -4
  16. package/dist/mermaid-driver.js +2 -2
  17. package/dist/project.d.ts +5 -2
  18. package/dist/project.js +21 -2
  19. package/dist/service.d.ts +13 -8
  20. package/dist/service.js +1 -1
  21. package/dist/third-service.d.ts +10 -53
  22. package/dist/third-service.js +3 -78
  23. package/dist/typebox-driver.d.ts +0 -6
  24. package/dist/typebox-driver.js +8 -36
  25. package/dist/utils.d.ts +2 -2
  26. package/docs/curd.md +55 -20
  27. package/docs/dao-generation.md +477 -477
  28. package/docs/project.md +32 -24
  29. package/docs/token.md +326 -326
  30. package/package.json +1 -1
  31. package/src/action.ts +51 -51
  32. package/src/controller.ts +53 -53
  33. package/src/convert.ts +76 -78
  34. package/src/curd.ts +104 -104
  35. package/src/dao.ts +504 -485
  36. package/src/dsl.ts +296 -257
  37. package/src/dto.ts +323 -266
  38. package/src/entity.ts +43 -42
  39. package/src/expr.ts +64 -64
  40. package/src/filter.ts +71 -69
  41. package/src/flow-script.ts +702 -695
  42. package/src/flow.ts +1272 -1226
  43. package/src/index.ts +46 -46
  44. package/src/mermaid-driver.ts +339 -339
  45. package/src/mysql-driver.ts +108 -108
  46. package/src/project.ts +138 -114
  47. package/src/service.ts +112 -107
  48. package/src/third-service.ts +68 -191
  49. package/src/typebox-driver.ts +234 -268
  50. package/src/utils.ts +74 -74
package/docs/project.md CHANGED
@@ -1,24 +1,32 @@
1
- # 项目拓扑 (Project)
2
-
3
- Project 是仓库的地图:描述有哪些前端应用、哪些后端 API,以及每个 API 服务哪些前端。
4
-
5
- ```ts
6
- import { defineProject } from '@pylonts/dsl';
7
-
8
- const webAdmin = { name: 'web-admin', type: 'admin', dir: 'web-admin/', description: '管理后台' };
9
- const miniUser = { name: 'mini-user', type: 'wxmini', dir: 'mini-user/', description: 'C端小程序' };
10
- const miniVerify = { name: 'mini-verify', type: 'wxmini', dir: 'mini-verify/',description: '核销小程序' };
11
-
12
- export const mall = defineProject('mall', {
13
- description: '合作商户权益兑换商城',
14
- apps: [webAdmin, miniUser, miniVerify],
15
- apis: [
16
- { name: 'mall-api', description: '商城主后端', dir: 'api/', contextPath: '/mall', apps: [webAdmin, miniUser, miniVerify] },
17
- ],
18
- });
19
- ```
20
-
21
- - `FrontAppSchema`:`name` / `description` / `type`(admin | wxmini)/ `dir`(相对仓库根目录的源码目录)。
22
- - `ProjectApiSchema`:`name` / `description` / `dir` / `apps`(直接引用共享的 FrontAppSchema 实例——一个 app 被多个 API 服务就定义一次、引用多次)/ `contextPath`(API 基础 URL 前缀,如 `/mall`,空串表示无前缀)。
23
- - **直接对象引用优先**:`api.apps` 与 `project.apps` 指向同一实例,不写字符串。
24
- - **contextPath 解析**:前端 app 的 API 前缀由服务它的 api 决定——`api.apps` 必须恰好包含该 app(零个或多个都报错),app 本身不声明 contextPath。
1
+ # 项目拓扑 (Project)
2
+
3
+ Project 是仓库的地图:描述有哪些前端应用、哪些后端 API,以及每个 API 服务哪些前端。
4
+
5
+ ```ts
6
+ import { defineProject, FrontAppSchema, ProjectApiSchema } from '@pylonts/dsl';
7
+
8
+ // Export-symbol rule: the export name equals the schema name kebab-camel
9
+ // (name 'admin' exports 'admin', 'mini-user' exports 'miniUser').
10
+ export const admin: FrontAppSchema = { name: 'admin', type: 'admin', dir: 'admin/', description: '管理后台' };
11
+ export const miniUser: FrontAppSchema = { name: 'mini-user', type: 'wxmini', dir: 'mini-user/', description: 'C端小程序' };
12
+ export const miniVerify: FrontAppSchema = { name: 'mini-verify', type: 'wxmini', dir: 'mini-verify/', description: '核销小程序' };
13
+
14
+ // The first api must be named 'api'; a second api may use a prefixed name
15
+ // like 'xx-api' with dir 'xx-api/'.
16
+ export const api: ProjectApiSchema = { name: 'api', description: '商城主后端', dir: 'api/', contextPath: '/mall', apps: [admin, miniUser, miniVerify] };
17
+
18
+ export const mall = defineProject('mall', {
19
+ description: '合作商户权益兑换商城',
20
+ apps: [admin, miniUser, miniVerify],
21
+ apis: [api],
22
+ });
23
+ ```
24
+
25
+ - `FrontAppSchema`:`name` / `description` / `type`(admin | wxmini)/ `dir`(相对仓库根目录的源码目录)。
26
+ - `ProjectApiSchema`:`name` / `description` / `dir` / `apps`(直接引用共享的 FrontAppSchema 实例——一个 app 被多个 API 服务就定义一次、引用多次)/ `contextPath`(API 基础 URL 前缀,如 `/mall`,空串表示无前缀)。
27
+ - **直接对象引用优先**:`api.apps` 与 `project.apps` 指向同一实例,不写字符串。
28
+ - **contextPath 解析**:前端 app 的 API 前缀由服务它的 api 决定——`api.apps` 必须恰好包含该 app(零个或多个都报错),app 本身不声明 contextPath。
29
+ - **命名约定(defineProject 运行时强制,违反即抛错)**:
30
+ - 每个 app / api / thirdApi 的 `dir` 必须等于 `name`(尾斜杠可有可无,`'api/'` == `'api'`)。
31
+ - `apis` 的第一个 api 必须命名为 `api`(导出符号即 `api`);带前缀的名字(如 `xx-api`)只允许从第二个 api 起。
32
+ - 实例导出符号 = 名字的 kebab-camel(`mini-user` → `miniUser`),loader 强制。