@celljs/cli 3.0.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.
Files changed (384) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/bin/cell +2 -0
  4. package/lib/build/build-manager.d.ts +9 -0
  5. package/lib/build/build-manager.d.ts.map +1 -0
  6. package/lib/build/build-manager.js +41 -0
  7. package/lib/build/build-manager.js.map +1 -0
  8. package/lib/build/build.d.ts +6 -0
  9. package/lib/build/build.d.ts.map +1 -0
  10. package/lib/build/build.js +16 -0
  11. package/lib/build/build.js.map +1 -0
  12. package/lib/cell-main.d.ts +2 -0
  13. package/lib/cell-main.d.ts.map +1 -0
  14. package/lib/cell-main.js +110 -0
  15. package/lib/cell-main.js.map +1 -0
  16. package/lib/cell.d.ts +2 -0
  17. package/lib/cell.d.ts.map +1 -0
  18. package/lib/cell.js +190 -0
  19. package/lib/cell.js.map +1 -0
  20. package/lib/config/config.d.ts +12 -0
  21. package/lib/config/config.d.ts.map +1 -0
  22. package/lib/config/config.js +48 -0
  23. package/lib/config/config.js.map +1 -0
  24. package/lib/deploy/deploy.d.ts +7 -0
  25. package/lib/deploy/deploy.d.ts.map +1 -0
  26. package/lib/deploy/deploy.js +27 -0
  27. package/lib/deploy/deploy.js.map +1 -0
  28. package/lib/index.d.ts +1 -0
  29. package/lib/index.d.ts.map +1 -0
  30. package/lib/index.js +1 -0
  31. package/lib/index.js.map +1 -0
  32. package/lib/info/info.d.ts +6 -0
  33. package/lib/info/info.d.ts.map +1 -0
  34. package/lib/info/info.js +21 -0
  35. package/lib/info/info.js.map +1 -0
  36. package/lib/init/init-manager.d.ts +33 -0
  37. package/lib/init/init-manager.d.ts.map +1 -0
  38. package/lib/init/init-manager.js +138 -0
  39. package/lib/init/init-manager.js.map +1 -0
  40. package/lib/init/init.d.ts +4 -0
  41. package/lib/init/init.d.ts.map +1 -0
  42. package/lib/init/init.js +17 -0
  43. package/lib/init/init.js.map +1 -0
  44. package/lib/init/templates.d.ts +2 -0
  45. package/lib/init/templates.d.ts.map +1 -0
  46. package/lib/init/templates.js +25 -0
  47. package/lib/init/templates.js.map +1 -0
  48. package/lib/malagu-main.d.ts +2 -0
  49. package/lib/malagu-main.d.ts.map +1 -0
  50. package/lib/malagu-main.js +110 -0
  51. package/lib/malagu-main.js.map +1 -0
  52. package/lib/malagu.d.ts +2 -0
  53. package/lib/malagu.d.ts.map +1 -0
  54. package/lib/malagu.js +190 -0
  55. package/lib/malagu.js.map +1 -0
  56. package/lib/package.spec.d.ts +1 -0
  57. package/lib/package.spec.d.ts.map +1 -0
  58. package/lib/package.spec.js +4 -0
  59. package/lib/package.spec.js.map +1 -0
  60. package/lib/props/props.d.ts +9 -0
  61. package/lib/props/props.d.ts.map +1 -0
  62. package/lib/props/props.js +46 -0
  63. package/lib/props/props.js.map +1 -0
  64. package/lib/serve/serve-manager.d.ts +8 -0
  65. package/lib/serve/serve-manager.d.ts.map +1 -0
  66. package/lib/serve/serve-manager.js +44 -0
  67. package/lib/serve/serve-manager.js.map +1 -0
  68. package/lib/serve/serve.d.ts +7 -0
  69. package/lib/serve/serve.d.ts.map +1 -0
  70. package/lib/serve/serve.js +16 -0
  71. package/lib/serve/serve.js.map +1 -0
  72. package/lib/update/update.d.ts +9 -0
  73. package/lib/update/update.d.ts.map +1 -0
  74. package/lib/update/update.js +56 -0
  75. package/lib/update/update.js.map +1 -0
  76. package/lib/utils/banner-util.d.ts +6 -0
  77. package/lib/utils/banner-util.d.ts.map +1 -0
  78. package/lib/utils/banner-util.js +44 -0
  79. package/lib/utils/banner-util.js.map +1 -0
  80. package/lib/utils/index.d.ts +2 -0
  81. package/lib/utils/index.d.ts.map +1 -0
  82. package/lib/utils/index.js +18 -0
  83. package/lib/utils/index.js.map +1 -0
  84. package/package.json +63 -0
  85. package/src/build/build-manager.ts +50 -0
  86. package/src/build/build.ts +17 -0
  87. package/src/cell-main.ts +125 -0
  88. package/src/cell.ts +214 -0
  89. package/src/config/config.ts +56 -0
  90. package/src/deploy/deploy.ts +31 -0
  91. package/src/index.ts +0 -0
  92. package/src/info/info.ts +23 -0
  93. package/src/init/init-manager.ts +163 -0
  94. package/src/init/init.ts +15 -0
  95. package/src/init/templates.ts +21 -0
  96. package/src/package.spec.ts +4 -0
  97. package/src/props/props.ts +48 -0
  98. package/src/serve/serve-manager.ts +51 -0
  99. package/src/serve/serve.ts +19 -0
  100. package/src/update/update.ts +61 -0
  101. package/src/utils/banner-util.ts +41 -0
  102. package/src/utils/index.ts +1 -0
  103. package/templates/accounts/README.md +92 -0
  104. package/templates/accounts/cell-database.yml +17 -0
  105. package/templates/accounts/cell-locale.yml +17 -0
  106. package/templates/accounts/cell-oauth2.0.yml +8 -0
  107. package/templates/accounts/cell-theme.yml +9 -0
  108. package/templates/accounts/cell.yml +10 -0
  109. package/templates/accounts/favicon.ico +0 -0
  110. package/templates/accounts/package.json +48 -0
  111. package/templates/accounts/src/browser/home.view.tsx +86 -0
  112. package/templates/accounts/src/browser/index.ts +3 -0
  113. package/templates/accounts/src/browser/login.view.tsx +78 -0
  114. package/templates/accounts/src/browser/module.ts +3 -0
  115. package/templates/accounts/src/common/entity-protocol.ts +7 -0
  116. package/templates/accounts/src/common/index.ts +1 -0
  117. package/templates/accounts/src/node/authentication/authentication-success-handler.ts +69 -0
  118. package/templates/accounts/src/node/authentication/index.ts +1 -0
  119. package/templates/accounts/src/node/entity/base-entity.ts +13 -0
  120. package/templates/accounts/src/node/entity/connection.ts +52 -0
  121. package/templates/accounts/src/node/entity/index.ts +1 -0
  122. package/templates/accounts/src/node/entity/user.ts +73 -0
  123. package/templates/accounts/src/node/error/error.ts +14 -0
  124. package/templates/accounts/src/node/error/index.ts +1 -0
  125. package/templates/accounts/src/node/index.ts +2 -0
  126. package/templates/accounts/src/node/module.ts +9 -0
  127. package/templates/accounts/src/node/user/index.ts +4 -0
  128. package/templates/accounts/src/node/user/user-protocol.ts +19 -0
  129. package/templates/accounts/src/node/user/user-repository.ts +72 -0
  130. package/templates/accounts/src/node/user/user-service.ts +36 -0
  131. package/templates/accounts/tsconfig.json +29 -0
  132. package/templates/admin-app/.github/workflows/deploy.yml +25 -0
  133. package/templates/admin-app/.vscode/launch.json +23 -0
  134. package/templates/admin-app/README.md +92 -0
  135. package/templates/admin-app/cell-database.yml +7 -0
  136. package/templates/admin-app/cell.yml +93 -0
  137. package/templates/admin-app/package.json +37 -0
  138. package/templates/admin-app/src/browser/module.ts +3 -0
  139. package/templates/admin-app/src/browser/user.view.tsx +40 -0
  140. package/templates/admin-app/src/common/index.ts +1 -0
  141. package/templates/admin-app/src/common/user-protocol.ts +23 -0
  142. package/templates/admin-app/src/node/entity/index.ts +1 -0
  143. package/templates/admin-app/src/node/entity/user.ts +15 -0
  144. package/templates/admin-app/src/node/module.ts +8 -0
  145. package/templates/admin-app/src/node/user-service.ts +41 -0
  146. package/templates/admin-app/tsconfig.json +29 -0
  147. package/templates/backend-app/.github/workflows/deploy.yml +25 -0
  148. package/templates/backend-app/.vscode/launch.json +23 -0
  149. package/templates/backend-app/README.md +92 -0
  150. package/templates/backend-app/cell.yml +0 -0
  151. package/templates/backend-app/package.json +33 -0
  152. package/templates/backend-app/src/home-controller.ts +11 -0
  153. package/templates/backend-app/src/module.ts +4 -0
  154. package/templates/backend-app/src/user-controller.ts +48 -0
  155. package/templates/backend-app/test/home-controller.spec.ts +16 -0
  156. package/templates/backend-app/tsconfig.json +29 -0
  157. package/templates/cell-component/.eslintrc.js +10 -0
  158. package/templates/cell-component/README.md +36 -0
  159. package/templates/cell-component/cell.yml +0 -0
  160. package/templates/cell-component/package.json +29 -0
  161. package/templates/cell-component/src/echo-service.ts +16 -0
  162. package/templates/cell-component/src/index.ts +1 -0
  163. package/templates/cell-component/src/module.ts +4 -0
  164. package/templates/cell-component/src/package.spec.ts +4 -0
  165. package/templates/cell-component/tsconfig.json +11 -0
  166. package/templates/database-app/.github/workflows/deploy.yml +25 -0
  167. package/templates/database-app/.vscode/launch.json +23 -0
  168. package/templates/database-app/README.md +92 -0
  169. package/templates/database-app/cell.yml +17 -0
  170. package/templates/database-app/package.json +31 -0
  171. package/templates/database-app/src/entity/index.ts +1 -0
  172. package/templates/database-app/src/entity/user.ts +13 -0
  173. package/templates/database-app/src/home-controller.ts +11 -0
  174. package/templates/database-app/src/module.ts +8 -0
  175. package/templates/database-app/src/user-controller.ts +43 -0
  176. package/templates/database-app/tsconfig.json +29 -0
  177. package/templates/docker-app/.github/workflows/deploy.yml +25 -0
  178. package/templates/docker-app/.vscode/launch.json +23 -0
  179. package/templates/docker-app/Dockerfile +27 -0
  180. package/templates/docker-app/README.md +93 -0
  181. package/templates/docker-app/cell.yml +0 -0
  182. package/templates/docker-app/package.json +31 -0
  183. package/templates/docker-app/src/browser/assets/logo.png +0 -0
  184. package/templates/docker-app/src/browser/css-shims.d.ts +30 -0
  185. package/templates/docker-app/src/browser/hello.view.tsx +31 -0
  186. package/templates/docker-app/src/browser/module.ts +3 -0
  187. package/templates/docker-app/src/browser/style/hello.module.scss +4 -0
  188. package/templates/docker-app/src/common/welcome-protocol.ts +5 -0
  189. package/templates/docker-app/src/node/module.ts +3 -0
  190. package/templates/docker-app/src/node/welcome-server.ts +9 -0
  191. package/templates/docker-app/tsconfig.json +30 -0
  192. package/templates/file-service/.github/workflows/deploy.yml +25 -0
  193. package/templates/file-service/.vscode/launch.json +23 -0
  194. package/templates/file-service/README.md +92 -0
  195. package/templates/file-service/cell.yml +12 -0
  196. package/templates/file-service/package.json +34 -0
  197. package/templates/file-service/src/file-controller.ts +47 -0
  198. package/templates/file-service/src/home-controller.ts +11 -0
  199. package/templates/file-service/src/module.ts +5 -0
  200. package/templates/file-service/tsconfig.json +29 -0
  201. package/templates/jwt-app/.github/workflows/deploy.yml +25 -0
  202. package/templates/jwt-app/.vscode/launch.json +23 -0
  203. package/templates/jwt-app/README.md +92 -0
  204. package/templates/jwt-app/cell.yml +4 -0
  205. package/templates/jwt-app/package.json +36 -0
  206. package/templates/jwt-app/src/context.ts +16 -0
  207. package/templates/jwt-app/src/error-handler.ts +30 -0
  208. package/templates/jwt-app/src/error.ts +4 -0
  209. package/templates/jwt-app/src/home-controller.ts +23 -0
  210. package/templates/jwt-app/src/index.ts +5 -0
  211. package/templates/jwt-app/src/jwt-middleware.ts +36 -0
  212. package/templates/jwt-app/src/module.ts +3 -0
  213. package/templates/jwt-app/test/home-controller.spec.ts +16 -0
  214. package/templates/jwt-app/tsconfig.json +29 -0
  215. package/templates/koa-app/app.js +8 -0
  216. package/templates/koa-app/package.json +9 -0
  217. package/templates/microservice/.github/workflows/deploy.yml +28 -0
  218. package/templates/microservice/.vscode/launch.json +24 -0
  219. package/templates/microservice/README.md +92 -0
  220. package/templates/microservice/examples/backend-app/README.md +92 -0
  221. package/templates/microservice/examples/backend-app/cell-remote.yml +4 -0
  222. package/templates/microservice/examples/backend-app/cell.yml +3 -0
  223. package/templates/microservice/examples/backend-app/package.json +32 -0
  224. package/templates/microservice/examples/backend-app/src/api-controller.ts +31 -0
  225. package/templates/microservice/examples/backend-app/src/module.ts +3 -0
  226. package/templates/microservice/examples/backend-app/tsconfig.json +29 -0
  227. package/templates/microservice/lerna.json +19 -0
  228. package/templates/microservice/package.json +23 -0
  229. package/templates/microservice/packages/api/README.md +92 -0
  230. package/templates/microservice/packages/api/cell.yml +0 -0
  231. package/templates/microservice/packages/api/package.json +25 -0
  232. package/templates/microservice/packages/api/src/common/api-protocol.ts +10 -0
  233. package/templates/microservice/packages/api/src/common/index.ts +1 -0
  234. package/templates/microservice/packages/api/tsconfig.json +27 -0
  235. package/templates/microservice/packages/serviceA/.vscode/launch.json +23 -0
  236. package/templates/microservice/packages/serviceA/README.md +92 -0
  237. package/templates/microservice/packages/serviceA/cell.yml +6 -0
  238. package/templates/microservice/packages/serviceA/package.json +29 -0
  239. package/templates/microservice/packages/serviceA/src/node/module.ts +3 -0
  240. package/templates/microservice/packages/serviceA/src/node/service-a.ts +9 -0
  241. package/templates/microservice/packages/serviceA/tsconfig.json +27 -0
  242. package/templates/microservice/packages/serviceB/README.md +92 -0
  243. package/templates/microservice/packages/serviceB/cell.yml +5 -0
  244. package/templates/microservice/packages/serviceB/package.json +29 -0
  245. package/templates/microservice/packages/serviceB/src/node/module.ts +3 -0
  246. package/templates/microservice/packages/serviceB/src/node/service-b.ts +9 -0
  247. package/templates/microservice/packages/serviceB/tsconfig.json +27 -0
  248. package/templates/microservice/tsconfig.json +29 -0
  249. package/templates/monorepo/.editorconfig +12 -0
  250. package/templates/monorepo/.eslintrc.js +18 -0
  251. package/templates/monorepo/.yarnrc +1 -0
  252. package/templates/monorepo/CHANGELOG.md +5 -0
  253. package/templates/monorepo/README.md +0 -0
  254. package/templates/monorepo/apps/sample-app/cell.yml +0 -0
  255. package/templates/monorepo/apps/sample-app/package.json +33 -0
  256. package/templates/monorepo/apps/sample-app/src/browser/assets/logo.png +0 -0
  257. package/templates/monorepo/apps/sample-app/src/browser/css-shims.d.ts +30 -0
  258. package/templates/monorepo/apps/sample-app/src/browser/hello.view.tsx +31 -0
  259. package/templates/monorepo/apps/sample-app/src/browser/module.ts +3 -0
  260. package/templates/monorepo/apps/sample-app/src/browser/style/hello.module.scss +4 -0
  261. package/templates/monorepo/apps/sample-app/src/common/welcome-protocol.ts +5 -0
  262. package/templates/monorepo/apps/sample-app/src/node/module.ts +3 -0
  263. package/templates/monorepo/apps/sample-app/src/node/welcome-server.ts +9 -0
  264. package/templates/monorepo/apps/sample-app/tsconfig.json +30 -0
  265. package/templates/monorepo/configs/root-compilation.tsconfig.json +14 -0
  266. package/templates/monorepo/configs/typedoc-tsconfig.json +6 -0
  267. package/templates/monorepo/configs/typedoc.json +23 -0
  268. package/templates/monorepo/lerna.json +17 -0
  269. package/templates/monorepo/package.json +46 -0
  270. package/templates/monorepo/packages/core/.eslintrc.js +10 -0
  271. package/templates/monorepo/packages/core/README.md +1 -0
  272. package/templates/monorepo/packages/core/cell.yml +0 -0
  273. package/templates/monorepo/packages/core/compile.tsconfig.json +13 -0
  274. package/templates/monorepo/packages/core/package.json +40 -0
  275. package/templates/monorepo/packages/core/src/browser/index.ts +0 -0
  276. package/templates/monorepo/packages/core/src/browser/module.ts +4 -0
  277. package/templates/monorepo/packages/core/src/common/index.ts +0 -0
  278. package/templates/monorepo/packages/core/src/common/module.ts +4 -0
  279. package/templates/monorepo/packages/core/src/node/index.ts +0 -0
  280. package/templates/monorepo/packages/core/src/node/module.ts +4 -0
  281. package/templates/monorepo/packages/core/src/package.spec.ts +4 -0
  282. package/templates/monorepo/scripts/check-publish.js +40 -0
  283. package/templates/monorepo/scripts/compile-references.js +286 -0
  284. package/templates/monorepo/tsconfig.json +20 -0
  285. package/templates/monorepo/tsfmt.json +3 -0
  286. package/templates/mycli/.vscode/launch.json +33 -0
  287. package/templates/mycli/bin/mycli +2 -0
  288. package/templates/mycli/bin/mycli-deploy +2 -0
  289. package/templates/mycli/bin/mycli-init +2 -0
  290. package/templates/mycli/package.json +33 -0
  291. package/templates/mycli/src/bootstrap.ts +7 -0
  292. package/templates/mycli/src/constants.ts +1 -0
  293. package/templates/mycli/src/deploy/deploy-manager.ts +12 -0
  294. package/templates/mycli/src/deploy/deploy.ts +16 -0
  295. package/templates/mycli/src/deploy/index.ts +1 -0
  296. package/templates/mycli/src/index.ts +2 -0
  297. package/templates/mycli/src/init/index.ts +1 -0
  298. package/templates/mycli/src/init/init-manager.ts +85 -0
  299. package/templates/mycli/src/init/init.ts +25 -0
  300. package/templates/mycli/src/init/templates.ts +3 -0
  301. package/templates/mycli/src/module.ts +3 -0
  302. package/templates/mycli/src/mycli.ts +13 -0
  303. package/templates/mycli/templates/application-template/README.md +0 -0
  304. package/templates/mycli/tsconfig.json +29 -0
  305. package/templates/nest-app/.eslintrc.js +25 -0
  306. package/templates/nest-app/.prettierrc +4 -0
  307. package/templates/nest-app/README.md +73 -0
  308. package/templates/nest-app/nest-cli.json +8 -0
  309. package/templates/nest-app/package.json +69 -0
  310. package/templates/nest-app/src/app.controller.spec.ts +22 -0
  311. package/templates/nest-app/src/app.controller.ts +12 -0
  312. package/templates/nest-app/src/app.module.ts +10 -0
  313. package/templates/nest-app/src/app.service.ts +8 -0
  314. package/templates/nest-app/src/main.ts +8 -0
  315. package/templates/nest-app/test/app.e2e-spec.ts +24 -0
  316. package/templates/nest-app/test/jest-e2e.json +9 -0
  317. package/templates/nest-app/tsconfig.build.json +4 -0
  318. package/templates/nest-app/tsconfig.json +21 -0
  319. package/templates/nextjs-app/.eslintrc.json +3 -0
  320. package/templates/nextjs-app/README.md +34 -0
  321. package/templates/nextjs-app/next.config.js +6 -0
  322. package/templates/nextjs-app/package.json +20 -0
  323. package/templates/nextjs-app/pages/_app.js +7 -0
  324. package/templates/nextjs-app/pages/api/hello.js +5 -0
  325. package/templates/nextjs-app/pages/index.js +69 -0
  326. package/templates/nextjs-app/public/favicon.ico +0 -0
  327. package/templates/nextjs-app/public/vercel.svg +4 -0
  328. package/templates/nextjs-app/styles/Home.module.css +116 -0
  329. package/templates/nextjs-app/styles/globals.css +16 -0
  330. package/templates/puppeteer/.github/workflows/deploy.yml +25 -0
  331. package/templates/puppeteer/.vscode/launch.json +23 -0
  332. package/templates/puppeteer/README.md +92 -0
  333. package/templates/puppeteer/cell.yml +11 -0
  334. package/templates/puppeteer/package.json +31 -0
  335. package/templates/puppeteer/src/home-controller.ts +11 -0
  336. package/templates/puppeteer/src/module.ts +5 -0
  337. package/templates/puppeteer/src/puppeteer-controller.ts +26 -0
  338. package/templates/puppeteer/tsconfig.json +29 -0
  339. package/templates/sample-app/.github/workflows/deploy.yml +25 -0
  340. package/templates/sample-app/.vscode/launch.json +23 -0
  341. package/templates/sample-app/README.md +92 -0
  342. package/templates/sample-app/cell.yml +0 -0
  343. package/templates/sample-app/package.json +31 -0
  344. package/templates/sample-app/src/browser/assets/logo.png +0 -0
  345. package/templates/sample-app/src/browser/css-shims.d.ts +30 -0
  346. package/templates/sample-app/src/browser/hello.view.tsx +31 -0
  347. package/templates/sample-app/src/browser/module.ts +3 -0
  348. package/templates/sample-app/src/browser/style/hello.module.scss +4 -0
  349. package/templates/sample-app/src/common/welcome-protocol.ts +5 -0
  350. package/templates/sample-app/src/node/module.ts +3 -0
  351. package/templates/sample-app/src/node/welcome-server.ts +9 -0
  352. package/templates/sample-app/tsconfig.json +29 -0
  353. package/templates/schedule/.github/workflows/deploy.yml +25 -0
  354. package/templates/schedule/.vscode/launch.json +23 -0
  355. package/templates/schedule/README.md +92 -0
  356. package/templates/schedule/cell.yml +1 -0
  357. package/templates/schedule/package.json +29 -0
  358. package/templates/schedule/src/module.ts +3 -0
  359. package/templates/schedule/src/scheduler.ts +10 -0
  360. package/templates/schedule/tsconfig.json +29 -0
  361. package/templates/standalone-app/package.json +17 -0
  362. package/templates/standalone-app/src/app.service.ts +10 -0
  363. package/templates/standalone-app/src/main.ts +14 -0
  364. package/templates/standalone-app/src/module.ts +3 -0
  365. package/templates/standalone-app/tsconfig.json +27 -0
  366. package/templates/vue-app/.github/workflows/deploy.yml +25 -0
  367. package/templates/vue-app/.vscode/launch.json +23 -0
  368. package/templates/vue-app/README.md +92 -0
  369. package/templates/vue-app/cell.yml +0 -0
  370. package/templates/vue-app/package.json +32 -0
  371. package/templates/vue-app/src/browser/App.vue +32 -0
  372. package/templates/vue-app/src/browser/app.ts +7 -0
  373. package/templates/vue-app/src/browser/components/HelloWorld.vue +42 -0
  374. package/templates/vue-app/src/browser/declare.d.ts +7 -0
  375. package/templates/vue-app/src/browser/images/logo.png +0 -0
  376. package/templates/vue-app/src/browser/module.ts +3 -0
  377. package/templates/vue-app/src/browser/router.ts +13 -0
  378. package/templates/vue-app/src/browser/shims-vue.d.ts +5 -0
  379. package/templates/vue-app/src/browser/views/About.vue +5 -0
  380. package/templates/vue-app/src/browser/views/Root.vue +37 -0
  381. package/templates/vue-app/src/common/welcome-protocol.ts +5 -0
  382. package/templates/vue-app/src/node/module.ts +3 -0
  383. package/templates/vue-app/src/node/welcome-server.ts +9 -0
  384. package/templates/vue-app/tsconfig.json +30 -0
@@ -0,0 +1,73 @@
1
+ import { Entity, Column } from 'typeorm';
2
+ import { Exclude } from 'class-transformer';
3
+ import { BaseEntity } from './base-entity';
4
+
5
+ @Entity()
6
+ export class Identity extends BaseEntity {
7
+
8
+ @Column()
9
+ userId: number;
10
+
11
+ @Column()
12
+ provider: string;
13
+
14
+ @Column()
15
+ connection: string;
16
+
17
+ @Column()
18
+ isSocial: boolean;
19
+
20
+ @Column()
21
+ identifier: string;
22
+
23
+ }
24
+
25
+ @Entity()
26
+ export class User extends BaseEntity {
27
+
28
+ @Column({ length: 256, nullable: true })
29
+ email?: string;
30
+
31
+ @Column({ default: false })
32
+ emailVerified: boolean;
33
+
34
+ @Column({ length: 128, nullable: true })
35
+ username?: string;
36
+
37
+ @Column({ length: 64, nullable: true })
38
+ phoneNumber?: string;
39
+
40
+ @Column({ default: false })
41
+ phoneVerified: boolean;
42
+
43
+ @Column({ length: 512, nullable: true })
44
+ appMetadata?: string;
45
+
46
+ @Column({ length: 512, nullable: true })
47
+ userMetadata?: string;
48
+
49
+ @Column({ length: 512, nullable: true })
50
+ picture?: string;
51
+
52
+ @Column({ length: 64, nullable: true })
53
+ nickname?: string;
54
+
55
+ @Column({ nullable: true })
56
+ multifactor?: string;
57
+
58
+ @Column({ length: 32, nullable: true })
59
+ lastIp?: string;
60
+
61
+ @Column({ nullable: true })
62
+ lastLogin?: Date;
63
+
64
+ @Column({ default: 0 })
65
+ loginsCount: number;
66
+
67
+ @Column({ default: false })
68
+ blocked: boolean;
69
+
70
+ @Column({ length: 256, nullable: true })
71
+ @Exclude()
72
+ password!: string;
73
+ }
@@ -0,0 +1,14 @@
1
+ import { CustomError } from '@celljs/core';
2
+
3
+ export class UserNotFoundError extends CustomError {
4
+ constructor(public userIdOrEmail: number | string) {
5
+ super(`No user found: ${userIdOrEmail}`);
6
+ }
7
+ }
8
+
9
+ export class IdentityNotFoundError extends CustomError {
10
+
11
+ constructor(public identity: number, public provider: string) {
12
+ super(`No identity found: ${provider}(${identity})`);
13
+ }
14
+ }
@@ -0,0 +1 @@
1
+ export * from './error';
@@ -0,0 +1,2 @@
1
+ export * from './authentication';
2
+ export * from './user';
@@ -0,0 +1,9 @@
1
+
2
+ import { autoBind } from '@celljs/core';
3
+ import { autoBindEntities } from '@celljs/typeorm';
4
+ import * as entities from './entity';
5
+ import './index';
6
+
7
+ autoBindEntities(entities);
8
+
9
+ export default autoBind();
@@ -0,0 +1,4 @@
1
+ export * from './user-service';
2
+ export * from './user-protocol';
3
+ export * from './user-repository';
4
+
@@ -0,0 +1,19 @@
1
+ import { Identity, User } from '../entity';
2
+ export const UserRepository = Symbol('UserRepository');
3
+
4
+ export interface UserRepository {
5
+
6
+ getByConnectionAndIdentifier(connection: string, identity: string): Promise<User | null>;
7
+
8
+ getByEmail(email: string): Promise<User | null>;
9
+
10
+ getByUsername(username: string): Promise<User | null>;
11
+
12
+ get(id: number): Promise<User | null>;
13
+
14
+ update(user: User): Promise<User>;
15
+
16
+ create(user: User, identity: Identity): Promise<User>;
17
+
18
+ }
19
+
@@ -0,0 +1,72 @@
1
+ import { Component } from '@celljs/core';
2
+ import { Transactional, OrmContext } from '@celljs/typeorm/lib/node';
3
+ import { Identity, User } from '../entity';
4
+ import { UserNotFoundError } from '../error';
5
+ import { plainToClassFromExist, classToPlain } from 'class-transformer';
6
+ import { UserRepository } from './user-protocol';
7
+
8
+ @Component(UserRepository)
9
+ export class UserRepositoryImpl implements UserRepository {
10
+
11
+ @Transactional({ readOnly: true })
12
+ getByConnectionAndIdentifier(connection: string, identifier: string): Promise<User | null> {
13
+ const repo = OrmContext.getRepository(User);
14
+
15
+ const identityQb = OrmContext.getRepository(Identity).createQueryBuilder('identity')
16
+ .select('identity.userId')
17
+ .where('identity.identifier = :identifier and identity.connection = :connection', { connection, identifier });
18
+ return repo.createQueryBuilder('user')
19
+ .where(`user.id IN (${identityQb.getQuery()})`)
20
+ .setParameters(identityQb.getParameters())
21
+ .getOne();
22
+
23
+ }
24
+
25
+ @Transactional({ readOnly: true })
26
+ getByEmail(email: string): Promise<User | null> {
27
+ const repo = OrmContext.getRepository(User);
28
+ return repo.createQueryBuilder('user')
29
+ .where('user.email = :email', { email })
30
+ .getOne();
31
+ }
32
+
33
+ @Transactional({ readOnly: true })
34
+ getByUsername(username: string): Promise<User | null> {
35
+ const repo = OrmContext.getRepository(User);
36
+ return repo.createQueryBuilder('user')
37
+ .where('user.username = :email', { username })
38
+ .getOne();
39
+ }
40
+
41
+ @Transactional({ readOnly: true })
42
+ async get(id: number): Promise<User> {
43
+ const repo = OrmContext.getRepository(User);
44
+ const user = await repo.findOneBy({ id });
45
+ if (user) {
46
+ return user;
47
+ }
48
+ throw new UserNotFoundError(id);
49
+ }
50
+
51
+ @Transactional()
52
+ async update(user: User): Promise<User> {
53
+ const repo = OrmContext.getRepository(User);
54
+ const oldUser = await repo.findOneBy({ id: user.id });
55
+ if (oldUser) {
56
+ const newUser = plainToClassFromExist(oldUser, classToPlain(user));
57
+ return repo.save(newUser);
58
+ }
59
+ throw new UserNotFoundError(user.id);
60
+ }
61
+
62
+ @Transactional()
63
+ async create(user: User, identity: Identity): Promise<User> {
64
+ const userRepo = OrmContext.getRepository(User);
65
+ const identityRepo = OrmContext.getRepository(Identity);
66
+ const newUser = await userRepo.save(user);
67
+ identity.userId = newUser.id;
68
+ await identityRepo.save(identity);
69
+ return newUser;
70
+ }
71
+
72
+ }
@@ -0,0 +1,36 @@
1
+ import { UserService, UsernameNotFoundError } from '@celljs/security/lib/node';
2
+ import { Value, Component, Autowired } from '@celljs/core';
3
+ import { User, UserType } from '@celljs/security';
4
+ import { UserRepository } from './user-protocol';
5
+
6
+ @Component({ id: UserService, rebind: true })
7
+ export class DatabaseUserService implements UserService<string, User> {
8
+
9
+ @Value('cell.security')
10
+ protected readonly options: any;
11
+
12
+ @Autowired(UserRepository)
13
+ protected userRepository: UserRepository;
14
+
15
+ async load(username: string): Promise<User> {
16
+ const userEntity = await this.userRepository.getByUsername(username);
17
+ if (userEntity) {
18
+ return {
19
+ type: UserType.Database,
20
+ username: userEntity.id + '',
21
+ password: userEntity.password,
22
+ login: userEntity.username,
23
+ avatar: userEntity.picture,
24
+ email: userEntity.email,
25
+ nickname: userEntity.nickname,
26
+ accountNonExpired: true,
27
+ accountNonLocked: true,
28
+ credentialsNonExpired: true,
29
+ enabled: !userEntity.blocked,
30
+ policies: []
31
+ };
32
+ }
33
+
34
+ throw new UsernameNotFoundError(`Could not find: ${username}`);
35
+ }
36
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "compilerOptions": {
3
+ "skipLibCheck": true,
4
+ "declaration": true,
5
+ "declarationMap": true,
6
+ "noImplicitAny": true,
7
+ "noEmitOnError": false,
8
+ "noImplicitThis": true,
9
+ "noUnusedLocals": true,
10
+ "strictNullChecks": true,
11
+ "experimentalDecorators": true,
12
+ "emitDecoratorMetadata": true,
13
+ "downlevelIteration": true,
14
+ "module": "commonjs",
15
+ "moduleResolution": "node",
16
+ "jsx": "react",
17
+ "target": "ES2017",
18
+ "lib": [
19
+ "ES2017",
20
+ "dom"
21
+ ],
22
+ "sourceMap": true,
23
+ "rootDir": "src",
24
+ "outDir": "lib"
25
+ },
26
+ "include": [
27
+ "src"
28
+ ]
29
+ }
@@ -0,0 +1,25 @@
1
+ name: Cell Deploy
2
+
3
+ on: push
4
+
5
+ jobs:
6
+ cell-deploy:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v2
10
+ - name: Setup node
11
+ uses: actions/setup-node@v1
12
+ with:
13
+ node-version: '12'
14
+ - uses: bahmutov/npm-install@v1
15
+ - run: npm run lint --if-present
16
+ - run: npm test
17
+ - if: ${{ github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' }}
18
+ env: ${{ secrets }}
19
+ run: npx cell deploy -m prod
20
+ - if: ${{ github.ref == 'refs/heads/pre' }}
21
+ env: ${{ secrets }}
22
+ run: npx cell deploy -m pre
23
+ - if: ${{ github.ref != 'refs/heads/master' && github.ref == 'refs/heads/main' && github.ref != 'refs/heads/pre' }}
24
+ env: ${{ secrets }}
25
+ run: npx cell deploy -m test
@@ -0,0 +1,23 @@
1
+ {
2
+ "version": "0.2.0",
3
+ "configurations": [
4
+ {
5
+ "name": "Cell Debug",
6
+ "request": "launch",
7
+ "runtimeArgs": [
8
+ "cell",
9
+ "serve"
10
+ ],
11
+ "runtimeExecutable": "npx",
12
+ "skipFiles": [
13
+ "<node_internals>/**"
14
+ ],
15
+ "env": {
16
+ "NODE_ENV": "development"
17
+ },
18
+ "internalConsoleOptions": "openOnSessionStart",
19
+ "outputCapture": "std",
20
+ "type": "pwa-node"
21
+ }
22
+ ]
23
+ }
@@ -0,0 +1,92 @@
1
+ # 开发说明
2
+
3
+ ## 安装依赖
4
+
5
+ 以下使用 yarn 工具来说明,你也可以使用 npm。
6
+
7
+ ```bash
8
+ # 通过 cell init 初始化应用的时候已经自动安装了依赖,所以你只需要安装你额外需要的依赖即可
9
+
10
+ $ yarn add xxxx
11
+ ```
12
+
13
+ ## 本地运行
14
+
15
+ ```shell
16
+ # 启动本地服务,端口默认 3000
17
+ # 在终端中会输出本地服务的 URL 链接
18
+
19
+ $ yarn start # 或者执行 cell serve 命令
20
+ ```
21
+
22
+ ## 构建部署
23
+
24
+ 模板默认提供了四套隔离环境:本地(local)、测试(test)、预发(pre)、线上(prod)。每个环境对应着一个 cell 配置文件(可选),类似 cell-test.yml。而 cell.yml 文件一般用于放所有环境的公共配置。第一次部署的时候可能会提示你填写相关云厂商 ak 信息。如果是 Vercel 云平台的模板,会提示你需要登录到 Vercel 平台。你也可以在项目通过 .env 提供云厂商的 ak 信息。
25
+
26
+ ```bash
27
+
28
+ $ cell deploy -m scf # 部署到腾讯云函数测试环境
29
+ $ cell deploy -m scf -m test # 部署到腾讯云测试环境
30
+ $ cell deploy -m scf -m pre # 部署到腾讯云预发环境
31
+ $ cell deploy -m scf -m prod # 部署到腾讯云线上环境
32
+
33
+ ```
34
+
35
+ ## 关于 Cell Framework
36
+
37
+ Cell 是基于 TypeScript 的 Serverless First、组件化、平台无关的渐进式应用框架。
38
+
39
+ ## 特征
40
+
41
+ - 约定大于配置,零配置,开箱即用
42
+ - TypeScript 版 Spring Boot
43
+ - Serverless First
44
+ - 平台不锁定
45
+ - 支持前后端一体化,前端框架不锁定
46
+ - 支持微服务
47
+ - 组件化,渐进式
48
+ - 命令行工具插件化
49
+ - 依赖注入
50
+ - 面向切面编程(AOP)
51
+ - 集成了流行的 ORM 框架,使用装饰器声明式事务管理
52
+ - 支持 OIDC 认证
53
+ - 支持 OAuth2 授权
54
+ - 使用 rxjs 管理状态
55
+ - 提供 REST 和 RPC 两种接口风格
56
+
57
+ Cell 名字由来:在我的家乡,谐音“吗啦咕”是小石头的意思,小石头堆砌起来可以建成高楼大厦、道路桥梁,而 Cell 组件编排可以实现千变万化的应用。
58
+
59
+ ## 快速开始
60
+
61
+ ```bash
62
+ # 安装命令行工具
63
+ npm install -g @celljs/cli
64
+
65
+ # 初始化
66
+ cell init -o project-name
67
+ cd project-name # 进入项目根目录
68
+
69
+ # 运行
70
+ cell serve
71
+
72
+ # 部署
73
+ cell deploy
74
+ ```
75
+
76
+ [![Quick Start](https://asciinema.org/a/474104.svg)](https://asciinema.org/a/474104?speed=2.5&autoplay=1)
77
+
78
+ ### 文档
79
+
80
+ - [介绍](https://cell.cellbang.com/guide/%E4%BB%8B%E7%BB%8D)
81
+ - [创建第一个应用](https://cell.cellbang.com/guide/%E5%88%9B%E5%BB%BA%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%BA%94%E7%94%A8)
82
+ - [命令行工具](https://cell.cellbang.com/guide/%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7)
83
+ - [控制器](https://cell.cellbang.com/guide/%E6%8E%A7%E5%88%B6%E5%99%A8)
84
+ - [数据库操作](https://cell.cellbang.com/guide/%E6%95%B0%E6%8D%AE%E5%BA%93typeorm)
85
+ - [微服务](https://cell.cellbang.com/dev/%E5%BE%AE%E6%9C%8D%E5%8A%A1)
86
+ - [认证与授权](https://cell.cellbang.com/guide/%E8%AE%A4%E8%AF%81%E4%B8%8E%E6%8E%88%E6%9D%83)
87
+ - [云平台适配](https://cell.cellbang.com/cloud/%E4%BA%91%E5%B9%B3%E5%8F%B0%E9%80%82%E9%85%8D)
88
+ - [依赖注入](https://cell.cellbang.com/guide/%E4%BE%9D%E8%B5%96%E6%B3%A8%E5%85%A5)
89
+ - [组件设计](https://cell.cellbang.com/guide/%E7%BB%84%E4%BB%B6%E8%AE%BE%E8%AE%A1)
90
+ - [前端架构](https://cell.cellbang.com/guide/%E5%89%8D%E7%AB%AF%E6%9E%B6%E6%9E%84)
91
+ - [React 开发](https://cell.cellbang.com/dev/react)
92
+ - [前后端一体化开发](https://cell.cellbang.com/dev/%E5%89%8D%E5%90%8E%E7%AB%AF%E4%B8%80%E4%BD%93%E5%8C%96%E5%BC%80%E5%8F%91)
@@ -0,0 +1,7 @@
1
+ cell:
2
+ typeorm:
3
+ ormConfig:
4
+ - type: better-sqlite3
5
+ database: mydb.sql
6
+ synchronize: true
7
+ logging: true
@@ -0,0 +1,93 @@
1
+ # 依赖的公共前端 UI 框从 CDN 上加载
2
+ # mode: cdn
3
+ mode: [ database ]
4
+ cell:
5
+ security:
6
+ loginRequired: false
7
+ shell:
8
+ categories:
9
+ appCenter:
10
+ name: 应用中心
11
+ apps:
12
+ authentication:
13
+ name: 云认证
14
+ icon: Shield
15
+ categoryId: appCenter
16
+ accessControl:
17
+ name: 云授权
18
+ icon: Validate
19
+ categoryId: appCenter
20
+ development:
21
+ name: 云开发
22
+ icon: Code
23
+ categoryId: appCenter
24
+ configuration:
25
+ name: 云配置
26
+ icon: SettingsOption
27
+ categoryId: appCenter
28
+ monitor:
29
+ name: 云监控
30
+ icon: Monitor
31
+ categoryId: appCenter
32
+ widget:
33
+ widgets:
34
+ test:
35
+ type: NavItem
36
+ area: Nav
37
+ props:
38
+ path: /users
39
+ icon: Group
40
+ label: 用户管理
41
+ test2:
42
+ type: NavItem
43
+ area: Nav
44
+ props:
45
+ path: /depts
46
+ icon: Organization
47
+ label: 部门管理
48
+ test3:
49
+ type: NavItem
50
+ area: Nav
51
+ props:
52
+ path: /dictionaries
53
+ icon: Catalog
54
+ label: 字典管理
55
+ test4:
56
+ type: NavItem
57
+ area: Nav
58
+ props:
59
+ path: /menus
60
+ icon: List
61
+ label: 菜单管理
62
+ themes:
63
+ default:
64
+ label: 黑色
65
+ props:
66
+ global:
67
+ colors:
68
+ brand: '#000000'
69
+ blue:
70
+ label: 蓝色
71
+ props:
72
+ global:
73
+ colors:
74
+ brand: '#7D4CDB'
75
+ green:
76
+ label: 绿色
77
+ props:
78
+ global:
79
+ colors:
80
+ brand: '#00C781'
81
+ yellow:
82
+ label: 黄色
83
+ props:
84
+ global:
85
+ colors:
86
+ brand: '#FFCA58'
87
+ red:
88
+ label: 红色
89
+ props:
90
+ global:
91
+ colors:
92
+ brand: '#FF4040'
93
+
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "admin-app",
3
+ "keywords": [
4
+ "cell-component"
5
+ ],
6
+ "version": "0.0.0",
7
+ "license": "MIT",
8
+ "files": [
9
+ "lib",
10
+ "src"
11
+ ],
12
+ "dependencies": {
13
+ "@celljs/core": "{{ version }}",
14
+ "@celljs/react": "{{ version }}",
15
+ "@celljs/rpc": "{{ version }}",
16
+ "@celljs/security": "{{ version }}",
17
+ "@celljs/serve-static": "{{ version }}",
18
+ "@celljs/shell": "{{ version }}",
19
+ "@celljs/typeorm": "{{ version }}",
20
+ "better-sqlite3": "^7.6.2",
21
+ "react": "^18.2.0",
22
+ "grommet": "^2.25.1",
23
+ "typeorm": "^0.3.7"
24
+ },
25
+ "devDependencies": {
26
+ "@celljs/cli": "{{ version }}"
27
+ },
28
+ "scripts": {
29
+ "clean": "rimraf lib dist .cell",
30
+ "build": "cell build",
31
+ "start": "cell serve",
32
+ "deploy": "cell deploy -m scf -m test",
33
+ "deploy:test": "cell deploy -m scf -m test",
34
+ "deploy:pre": "cell deploy -m scf -m pre",
35
+ "deploy:prod": "cell deploy -m scf -m prod"
36
+ }
37
+ }
@@ -0,0 +1,3 @@
1
+ import './user.view';
2
+ import { autoBind } from '@celljs/core';
3
+ export default autoBind();
@@ -0,0 +1,40 @@
1
+ import * as React from 'react';
2
+ import { View } from '@celljs/react';
3
+ import { RpcUtil } from '@celljs/rpc';
4
+ import { DataTable } from 'grommet';
5
+ import { UserService, User } from '../common';
6
+
7
+ function Users() {
8
+
9
+ const [ data, setData ] = React.useState<User[]>([]);
10
+
11
+ React.useEffect(() => {
12
+ const userService = RpcUtil.get<UserService>(UserService);
13
+ userService.list().then(users => setData(users))
14
+
15
+ }, [])
16
+
17
+ return (
18
+ <DataTable
19
+ margin={{ vertical: 'medium' }}
20
+ columns={[
21
+ {
22
+ property: 'name',
23
+ header: 'Name',
24
+ primary: true
25
+ },
26
+ {
27
+ property: 'age',
28
+ header: 'Age'
29
+ }
30
+ ]}
31
+ data={data}
32
+ >
33
+
34
+ </DataTable>
35
+ );
36
+ }
37
+
38
+ @View({ index: true, component: Users})
39
+ @View({ path: 'users', component: Users})
40
+ export default class {}
@@ -0,0 +1 @@
1
+ export * from './user-protocol';
@@ -0,0 +1,23 @@
1
+ export const UserService = Symbol('UserService');
2
+
3
+ export interface UserService {
4
+
5
+ list(): Promise<User[]>;
6
+
7
+ get(id: number): Promise<User | null>;
8
+
9
+ remove(id: number): Promise<void>
10
+
11
+ modify(user: User): Promise<void>;
12
+
13
+ create(user: User): Promise<User>;
14
+ }
15
+
16
+ export interface User {
17
+
18
+ id: number;
19
+
20
+ name: string;
21
+
22
+ age: number;
23
+ }
@@ -0,0 +1 @@
1
+ export * from './user';
@@ -0,0 +1,15 @@
1
+ import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
2
+ import { User as IUser } from '../../common';
3
+
4
+ @Entity()
5
+ export class User implements IUser {
6
+
7
+ @PrimaryGeneratedColumn()
8
+ id: number;
9
+
10
+ @Column()
11
+ name: string;
12
+
13
+ @Column()
14
+ age: number;
15
+ }
@@ -0,0 +1,8 @@
1
+ import './user-service';
2
+ import * as entities from './entity';
3
+ import { autoBind } from '@celljs/core';
4
+ import { autoBindEntities } from '@celljs/typeorm';
5
+
6
+ autoBindEntities(entities)
7
+
8
+ export default autoBind();