@slingr/cli 0.0.2 → 0.0.4

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 (251) hide show
  1. package/LICENSE.txt +202 -0
  2. package/README.md +490 -319
  3. package/bin/dev.cmd +2 -2
  4. package/bin/dev.js +5 -5
  5. package/bin/run.cmd +2 -2
  6. package/bin/run.js +4 -4
  7. package/bin/slingr +1 -0
  8. package/dist/commands/build.d.ts +20 -0
  9. package/dist/commands/build.d.ts.map +1 -0
  10. package/dist/commands/build.js +206 -0
  11. package/dist/commands/build.js.map +1 -0
  12. package/dist/commands/create-app.d.ts +0 -1
  13. package/dist/commands/create-app.d.ts.map +1 -1
  14. package/dist/commands/create-app.js +38 -57
  15. package/dist/commands/create-app.js.map +1 -1
  16. package/dist/commands/debug.d.ts +28 -0
  17. package/dist/commands/debug.d.ts.map +1 -0
  18. package/dist/commands/debug.js +474 -0
  19. package/dist/commands/debug.js.map +1 -0
  20. package/dist/commands/ds.d.ts +14 -1
  21. package/dist/commands/ds.d.ts.map +1 -1
  22. package/dist/commands/ds.js +450 -121
  23. package/dist/commands/ds.js.map +1 -1
  24. package/dist/commands/gql.d.ts +1 -1
  25. package/dist/commands/gql.d.ts.map +1 -1
  26. package/dist/commands/gql.js +190 -184
  27. package/dist/commands/gql.js.map +1 -1
  28. package/dist/commands/infra/down.d.ts.map +1 -1
  29. package/dist/commands/infra/down.js +8 -7
  30. package/dist/commands/infra/down.js.map +1 -1
  31. package/dist/commands/infra/up.d.ts.map +1 -1
  32. package/dist/commands/infra/up.js +8 -7
  33. package/dist/commands/infra/up.js.map +1 -1
  34. package/dist/commands/infra/update.d.ts +1 -0
  35. package/dist/commands/infra/update.d.ts.map +1 -1
  36. package/dist/commands/infra/update.js +33 -69
  37. package/dist/commands/infra/update.js.map +1 -1
  38. package/dist/commands/run.d.ts +29 -2
  39. package/dist/commands/run.d.ts.map +1 -1
  40. package/dist/commands/run.js +628 -130
  41. package/dist/commands/run.js.map +1 -1
  42. package/dist/commands/setup.d.ts +1 -1
  43. package/dist/commands/setup.d.ts.map +1 -1
  44. package/dist/commands/setup.js +34 -71
  45. package/dist/commands/setup.js.map +1 -1
  46. package/dist/commands/sync-metadata.d.ts +15 -0
  47. package/dist/commands/sync-metadata.d.ts.map +1 -0
  48. package/dist/commands/sync-metadata.js +225 -0
  49. package/dist/commands/sync-metadata.js.map +1 -0
  50. package/dist/commands/users.d.ts +30 -0
  51. package/dist/commands/users.d.ts.map +1 -0
  52. package/dist/commands/users.js +472 -0
  53. package/dist/commands/users.js.map +1 -0
  54. package/dist/commands/views.d.ts +11 -0
  55. package/dist/commands/views.d.ts.map +1 -0
  56. package/dist/commands/views.js +73 -0
  57. package/dist/commands/views.js.map +1 -0
  58. package/dist/projectStructure.d.ts +2 -2
  59. package/dist/projectStructure.d.ts.map +1 -1
  60. package/dist/projectStructure.js +281 -69
  61. package/dist/projectStructure.js.map +1 -1
  62. package/dist/scripts/generate-metadata.d.ts +13 -0
  63. package/dist/scripts/generate-metadata.d.ts.map +1 -0
  64. package/dist/scripts/generate-metadata.js +412 -0
  65. package/dist/scripts/generate-metadata.js.map +1 -0
  66. package/dist/scripts/generate-metadata.ts +498 -0
  67. package/dist/scripts/generate-schema.d.ts +1 -1
  68. package/dist/scripts/generate-schema.js +168 -74
  69. package/dist/scripts/generate-schema.js.map +1 -1
  70. package/dist/scripts/generate-schema.ts +258 -143
  71. package/dist/templates/.env.template +23 -0
  72. package/dist/templates/.firebaserc.template +5 -0
  73. package/dist/templates/.github/copilot-instructions.md.template +652 -17
  74. package/dist/templates/backend/Dockerfile.template +30 -0
  75. package/dist/templates/config/datasource.ts.template +12 -9
  76. package/dist/templates/config/jest.config.ts +30 -30
  77. package/dist/templates/config/jest.setup.ts +1 -1
  78. package/dist/templates/config/tsconfig.json.template +50 -29
  79. package/dist/templates/dataSources/mysql.ts.template +16 -13
  80. package/dist/templates/dataSources/postgres.ts.template +15 -13
  81. package/dist/templates/dataset-generator-script.ts.template +139 -139
  82. package/dist/templates/datasets/mysql-default/.slingr-schema.json.template +5 -0
  83. package/dist/templates/datasets/mysql-default/Address.jsonl.template +3 -3
  84. package/dist/templates/datasets/mysql-default/App.jsonl.template +4 -4
  85. package/dist/templates/datasets/mysql-default/Company.jsonl.template +3 -3
  86. package/dist/templates/datasets/mysql-default/Person.jsonl.template +2 -2
  87. package/dist/templates/datasets/mysql-default/User.jsonl.template +1 -0
  88. package/dist/templates/datasets/mysql-default/instructions.md.template +1 -0
  89. package/dist/templates/datasets/postgres-default/.slingr-schema.json.template +5 -0
  90. package/dist/templates/datasets/postgres-default/Address.jsonl.template +3 -3
  91. package/dist/templates/datasets/postgres-default/App.jsonl.template +4 -4
  92. package/dist/templates/datasets/postgres-default/Company.jsonl.template +3 -3
  93. package/dist/templates/datasets/postgres-default/Person.jsonl.template +2 -2
  94. package/dist/templates/datasets/postgres-default/User.jsonl.template +1 -0
  95. package/dist/templates/datasets/postgres-default/instructions.md.template +1 -0
  96. package/dist/templates/docker-compose.prod-test.yml.template +32 -0
  97. package/dist/templates/docker-compose.yml.template +24 -0
  98. package/dist/templates/docs/app-description.md.template +33 -33
  99. package/dist/templates/firebase.json.template +68 -0
  100. package/dist/templates/frontend/.umirc.ts.template +23 -0
  101. package/dist/templates/frontend/package.json.template +45 -0
  102. package/dist/templates/frontend/public/config.json +6 -0
  103. package/dist/templates/frontend/public/logo.svg +6 -0
  104. package/dist/templates/frontend/src/app.tsx.template +44 -0
  105. package/dist/templates/frontend/src/global.less.template +117 -0
  106. package/dist/templates/frontend/src/layouts/MainLayout.tsx.template +75 -0
  107. package/dist/templates/frontend/src/types/graphql-augmentation.d.ts.template +44 -0
  108. package/dist/templates/frontend/src/views/customViews/user/UserCreateView.tsx.template +18 -0
  109. package/dist/templates/frontend/src/views/customViews/user/UserEditView.tsx.template +29 -0
  110. package/dist/templates/frontend/src/views/customViews/user/UserReadView.tsx.template +24 -0
  111. package/dist/templates/frontend/src/views/customViews/user/UserTableView.tsx.template +38 -0
  112. package/dist/templates/frontend/src/views/customViews/welcome.tsx.template +34 -0
  113. package/dist/templates/frontend/tsconfig.json.template +50 -0
  114. package/dist/templates/gql/codegen.yml.template +25 -25
  115. package/dist/templates/gql/index.ts.template +17 -24
  116. package/dist/templates/gql/operations.graphql.template +30 -30
  117. package/dist/templates/ops/README.md.template +1045 -0
  118. package/dist/templates/ops/cloudbuild.yaml.template +161 -0
  119. package/dist/templates/ops/scripts/_utils.js.template +217 -0
  120. package/dist/templates/ops/scripts/deploy.js.template +145 -0
  121. package/dist/templates/ops/scripts/setup-gcp.js.template +330 -0
  122. package/dist/templates/ops/scripts/setup-secrets.js.template +76 -0
  123. package/dist/templates/ops/scripts/test-prod-local.js.template +49 -0
  124. package/dist/templates/package.json.template +50 -38
  125. package/dist/templates/pnpm-workspace.yaml.template +3 -0
  126. package/dist/templates/prompt-analysis.md.template +110 -110
  127. package/dist/templates/prompt-script-generation.md.template +258 -258
  128. package/dist/templates/src/Address.ts.template +28 -31
  129. package/dist/templates/src/App.ts.template +17 -61
  130. package/dist/templates/src/Company.ts.template +41 -47
  131. package/dist/templates/src/Models.test.ts.template +654 -654
  132. package/dist/templates/src/Person.test.ts.template +289 -289
  133. package/dist/templates/src/Person.ts.template +90 -105
  134. package/dist/templates/src/actions/index.ts.template +11 -11
  135. package/dist/templates/src/auth/permissions.ts.template +34 -0
  136. package/dist/templates/src/data/App.ts.template +48 -0
  137. package/dist/templates/src/data/User.ts.template +35 -0
  138. package/dist/templates/src/types/gql.d.ts.template +17 -17
  139. package/dist/templates/vscode/extensions.json +4 -3
  140. package/dist/templates/vscode/settings.json +17 -11
  141. package/dist/templates/workspace-package.json.template +21 -0
  142. package/dist/utils/buildCache.d.ts +12 -0
  143. package/dist/utils/buildCache.d.ts.map +1 -0
  144. package/dist/utils/buildCache.js +102 -0
  145. package/dist/utils/buildCache.js.map +1 -0
  146. package/dist/utils/checkFramework.d.ts +27 -0
  147. package/dist/utils/checkFramework.d.ts.map +1 -0
  148. package/dist/utils/checkFramework.js +104 -0
  149. package/dist/utils/checkFramework.js.map +1 -0
  150. package/dist/utils/datasourceParser.d.ts +11 -0
  151. package/dist/utils/datasourceParser.d.ts.map +1 -1
  152. package/dist/utils/datasourceParser.js +154 -56
  153. package/dist/utils/datasourceParser.js.map +1 -1
  154. package/dist/utils/dockerManager.d.ts +25 -0
  155. package/dist/utils/dockerManager.d.ts.map +1 -0
  156. package/dist/utils/dockerManager.js +281 -0
  157. package/dist/utils/dockerManager.js.map +1 -0
  158. package/dist/utils/infraFileParser.d.ts +26 -0
  159. package/dist/utils/infraFileParser.d.ts.map +1 -0
  160. package/dist/utils/infraFileParser.js +75 -0
  161. package/dist/utils/infraFileParser.js.map +1 -0
  162. package/dist/utils/jsonlLoader.d.ts +91 -12
  163. package/dist/utils/jsonlLoader.d.ts.map +1 -1
  164. package/dist/utils/jsonlLoader.js +674 -63
  165. package/dist/utils/jsonlLoader.js.map +1 -1
  166. package/dist/utils/model-analyzer.d.ts.map +1 -1
  167. package/dist/utils/model-analyzer.js +67 -13
  168. package/dist/utils/model-analyzer.js.map +1 -1
  169. package/dist/utils/userManagement.d.ts +57 -0
  170. package/dist/utils/userManagement.d.ts.map +1 -0
  171. package/dist/utils/userManagement.js +288 -0
  172. package/dist/utils/userManagement.js.map +1 -0
  173. package/dist/utils/viewsGenerator.d.ts +15 -0
  174. package/dist/utils/viewsGenerator.d.ts.map +1 -0
  175. package/dist/utils/viewsGenerator.js +311 -0
  176. package/dist/utils/viewsGenerator.js.map +1 -0
  177. package/oclif.manifest.json +445 -20
  178. package/package.json +29 -27
  179. package/src/templates/.env.template +23 -0
  180. package/src/templates/.firebaserc.template +5 -0
  181. package/src/templates/.github/copilot-instructions.md.template +652 -17
  182. package/src/templates/backend/Dockerfile.template +30 -0
  183. package/src/templates/config/datasource.ts.template +12 -9
  184. package/src/templates/config/jest.config.ts +30 -30
  185. package/src/templates/config/jest.setup.ts +1 -1
  186. package/src/templates/config/tsconfig.json.template +50 -29
  187. package/src/templates/dataSources/mysql.ts.template +16 -13
  188. package/src/templates/dataSources/postgres.ts.template +15 -13
  189. package/src/templates/dataset-generator-script.ts.template +139 -139
  190. package/src/templates/datasets/mysql-default/.slingr-schema.json.template +5 -0
  191. package/src/templates/datasets/mysql-default/Address.jsonl.template +3 -3
  192. package/src/templates/datasets/mysql-default/App.jsonl.template +4 -4
  193. package/src/templates/datasets/mysql-default/Company.jsonl.template +3 -3
  194. package/src/templates/datasets/mysql-default/Person.jsonl.template +2 -2
  195. package/src/templates/datasets/mysql-default/User.jsonl.template +1 -0
  196. package/src/templates/datasets/mysql-default/instructions.md.template +1 -0
  197. package/src/templates/datasets/postgres-default/.slingr-schema.json.template +5 -0
  198. package/src/templates/datasets/postgres-default/Address.jsonl.template +3 -3
  199. package/src/templates/datasets/postgres-default/App.jsonl.template +4 -4
  200. package/src/templates/datasets/postgres-default/Company.jsonl.template +3 -3
  201. package/src/templates/datasets/postgres-default/Person.jsonl.template +2 -2
  202. package/src/templates/datasets/postgres-default/User.jsonl.template +1 -0
  203. package/src/templates/datasets/postgres-default/instructions.md.template +1 -0
  204. package/src/templates/docker-compose.prod-test.yml.template +32 -0
  205. package/src/templates/docker-compose.yml.template +24 -0
  206. package/src/templates/docs/app-description.md.template +33 -33
  207. package/src/templates/firebase.json.template +68 -0
  208. package/src/templates/frontend/.umirc.ts.template +23 -0
  209. package/src/templates/frontend/package.json.template +45 -0
  210. package/src/templates/frontend/public/config.json +6 -0
  211. package/src/templates/frontend/public/logo.svg +6 -0
  212. package/src/templates/frontend/src/app.tsx.template +44 -0
  213. package/src/templates/frontend/src/global.less.template +117 -0
  214. package/src/templates/frontend/src/layouts/MainLayout.tsx.template +75 -0
  215. package/src/templates/frontend/src/types/graphql-augmentation.d.ts.template +44 -0
  216. package/src/templates/frontend/src/views/customViews/user/UserCreateView.tsx.template +18 -0
  217. package/src/templates/frontend/src/views/customViews/user/UserEditView.tsx.template +29 -0
  218. package/src/templates/frontend/src/views/customViews/user/UserReadView.tsx.template +24 -0
  219. package/src/templates/frontend/src/views/customViews/user/UserTableView.tsx.template +38 -0
  220. package/src/templates/frontend/src/views/customViews/welcome.tsx.template +34 -0
  221. package/src/templates/frontend/tsconfig.json.template +50 -0
  222. package/src/templates/gql/codegen.yml.template +25 -25
  223. package/src/templates/gql/index.ts.template +17 -24
  224. package/src/templates/gql/operations.graphql.template +30 -30
  225. package/src/templates/ops/README.md.template +1045 -0
  226. package/src/templates/ops/cloudbuild.yaml.template +161 -0
  227. package/src/templates/ops/scripts/_utils.js.template +217 -0
  228. package/src/templates/ops/scripts/deploy.js.template +145 -0
  229. package/src/templates/ops/scripts/setup-gcp.js.template +330 -0
  230. package/src/templates/ops/scripts/setup-secrets.js.template +76 -0
  231. package/src/templates/ops/scripts/test-prod-local.js.template +49 -0
  232. package/src/templates/package.json.template +50 -38
  233. package/src/templates/pnpm-workspace.yaml.template +3 -0
  234. package/src/templates/prompt-analysis.md.template +110 -110
  235. package/src/templates/prompt-script-generation.md.template +258 -258
  236. package/src/templates/src/Address.ts.template +28 -31
  237. package/src/templates/src/App.ts.template +17 -61
  238. package/src/templates/src/Company.ts.template +41 -47
  239. package/src/templates/src/Models.test.ts.template +654 -654
  240. package/src/templates/src/Person.test.ts.template +289 -289
  241. package/src/templates/src/Person.ts.template +90 -105
  242. package/src/templates/src/actions/index.ts.template +11 -11
  243. package/src/templates/src/auth/permissions.ts.template +34 -0
  244. package/src/templates/src/data/App.ts.template +48 -0
  245. package/src/templates/src/data/User.ts.template +35 -0
  246. package/src/templates/src/types/gql.d.ts.template +17 -17
  247. package/src/templates/vscode/extensions.json +4 -3
  248. package/src/templates/vscode/settings.json +17 -11
  249. package/src/templates/workspace-package.json.template +21 -0
  250. package/dist/templates/src/index.ts +0 -66
  251. package/src/templates/src/index.ts +0 -66
@@ -0,0 +1,472 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const core_1 = require("@oclif/core");
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const inquirer_1 = __importDefault(require("inquirer"));
10
+ const checkFramework_js_1 = require("../utils/checkFramework.js");
11
+ const userManagement_js_1 = require("../utils/userManagement.js");
12
+ class Users extends core_1.Command {
13
+ static description = 'Manage application users';
14
+ static examples = [
15
+ '<%= config.bin %> <%= command.id %> list',
16
+ '<%= config.bin %> <%= command.id %> create',
17
+ '<%= config.bin %> <%= command.id %> create --email john@example.com --first-name John --last-name Doe --password pass123 --roles "Admin,User"',
18
+ '<%= config.bin %> <%= command.id %> set-password john@example.com',
19
+ '<%= config.bin %> <%= command.id %> set-password john@example.com --new-password newpass123',
20
+ '<%= config.bin %> <%= command.id %> reset-password john@example.com',
21
+ '<%= config.bin %> <%= command.id %> activate john@example.com',
22
+ '<%= config.bin %> <%= command.id %> deactivate john@example.com',
23
+ '<%= config.bin %> <%= command.id %> delete john@example.com --force',
24
+ ];
25
+ static args = {
26
+ action: core_1.Args.string({
27
+ description: 'Action to perform',
28
+ options: ['list', 'create', 'set-password', 'reset-password', 'activate', 'deactivate', 'delete'],
29
+ required: true,
30
+ }),
31
+ email: core_1.Args.string({
32
+ description: 'User email (required for set-password, reset-password, activate, deactivate, delete)',
33
+ required: false,
34
+ }),
35
+ };
36
+ static flags = {
37
+ help: core_1.Flags.help({ char: 'h' }),
38
+ // For create command
39
+ 'first-name': core_1.Flags.string({
40
+ description: 'User first name',
41
+ }),
42
+ 'last-name': core_1.Flags.string({
43
+ description: 'User last name',
44
+ }),
45
+ email: core_1.Flags.string({
46
+ char: 'e',
47
+ description: 'User email address',
48
+ }),
49
+ password: core_1.Flags.string({
50
+ char: 'p',
51
+ description: 'User password',
52
+ }),
53
+ roles: core_1.Flags.string({
54
+ char: 'r',
55
+ description: 'Comma-separated list of roles',
56
+ }),
57
+ // For set-password command
58
+ 'new-password': core_1.Flags.string({
59
+ description: 'New password for the user',
60
+ }),
61
+ // General flags
62
+ force: core_1.Flags.boolean({
63
+ char: 'f',
64
+ description: 'Skip confirmation prompts for destructive operations',
65
+ default: false,
66
+ }),
67
+ datasource: core_1.Flags.string({
68
+ char: 'd',
69
+ description: 'DataSource name (auto-discovered from User model if not specified)',
70
+ }),
71
+ };
72
+ async run() {
73
+ const { args, flags } = await this.parse(Users);
74
+ // Validate environment
75
+ await this.validateEnvironment();
76
+ // Validate email argument for commands that require it
77
+ if (['set-password', 'reset-password', 'activate', 'deactivate', 'delete'].includes(args.action)) {
78
+ if (!args.email) {
79
+ this.error(`Email argument is required for ${args.action} action`);
80
+ }
81
+ }
82
+ // Store datasource reference for cleanup
83
+ let dataSource = null;
84
+ // Dispatch to appropriate handler
85
+ try {
86
+ switch (args.action) {
87
+ case 'list':
88
+ dataSource = await this.listUsers(flags);
89
+ break;
90
+ case 'create':
91
+ dataSource = await this.createUser(flags);
92
+ break;
93
+ case 'set-password':
94
+ dataSource = await this.setPassword(args.email, flags);
95
+ break;
96
+ case 'reset-password':
97
+ dataSource = await this.resetPassword(args.email, flags);
98
+ break;
99
+ case 'activate':
100
+ dataSource = await this.activateUser(args.email, flags);
101
+ break;
102
+ case 'deactivate':
103
+ dataSource = await this.deactivateUser(args.email, flags);
104
+ break;
105
+ case 'delete':
106
+ dataSource = await this.deleteUser(args.email, flags);
107
+ break;
108
+ }
109
+ }
110
+ catch (error) {
111
+ // Handle common database connection errors
112
+ if (error.message?.includes('ECONNREFUSED') || error.message?.includes('Connection refused')) {
113
+ this.error(`❌ Cannot connect to database.\n\n` +
114
+ `The database infrastructure exists but is not running.\n\n` +
115
+ `To fix this, run:\n` +
116
+ ` â€ĸ slingr run\n` +
117
+ `OR\n` +
118
+ ` â€ĸ docker-compose up -d`);
119
+ }
120
+ this.error(`Failed to ${args.action} user: ${error.message}`);
121
+ }
122
+ finally {
123
+ // Clean up database connection
124
+ if (dataSource && dataSource.getTypeOrmDataSource()?.isInitialized) {
125
+ await dataSource.getTypeOrmDataSource()?.destroy();
126
+ }
127
+ }
128
+ }
129
+ async validateEnvironment() {
130
+ // Check package.json exists
131
+ const pkgPath = node_path_1.default.join(process.cwd(), 'package.json');
132
+ if (!(await fs_extra_1.default.pathExists(pkgPath))) {
133
+ this.error('❌ Not in a Slingr application directory.\n\n' + "Please run this command from your app's root directory.");
134
+ }
135
+ // Check it's a Slingr app
136
+ if (!(await (0, checkFramework_js_1.hasSlingrFramework)())) {
137
+ this.error('❌ This directory does not contain a Slingr application.');
138
+ }
139
+ // Check backend/dist directory exists (app must be built)
140
+ const backendPath = (0, checkFramework_js_1.getBackendPath)();
141
+ const distPath = node_path_1.default.join(backendPath, 'dist');
142
+ if (!(await fs_extra_1.default.pathExists(distPath))) {
143
+ this.error('❌ Application not built.\n\n' +
144
+ 'Please run "npm run build" from the backend directory before using this command.');
145
+ }
146
+ }
147
+ async listUsers(flags) {
148
+ this.log('📋 Loading users...\n');
149
+ const dataSource = await (0, userManagement_js_1.loadDataSource)(flags.datasource);
150
+ const userRepo = await (0, userManagement_js_1.getUserRepository)(dataSource);
151
+ const users = await userRepo.find();
152
+ if (users.length === 0) {
153
+ this.log('No users found in the database.\n');
154
+ return dataSource;
155
+ }
156
+ this.log('Users in application:\n');
157
+ let activeCount = 0;
158
+ let inactiveCount = 0;
159
+ for (const user of users) {
160
+ this.log(` ${(0, userManagement_js_1.formatUser)(user)}`);
161
+ if (user.status === 'active') {
162
+ activeCount++;
163
+ }
164
+ else {
165
+ inactiveCount++;
166
+ }
167
+ }
168
+ this.log('');
169
+ this.log(`Total: ${users.length} users (${activeCount} active, ${inactiveCount} inactive)`);
170
+ this.log('');
171
+ return dataSource;
172
+ }
173
+ async createUser(flags) {
174
+ this.log('👤 Creating new user...\n');
175
+ // Load framework utilities
176
+ this.log('đŸ“Ļ Loading framework utilities...');
177
+ const framework = await import('@slingr/framework-backend');
178
+ const { createUser: frameworkCreateUser } = framework;
179
+ this.log('🔍 Loading datasource...');
180
+ const dataSource = await (0, userManagement_js_1.loadDataSource)(flags.datasource);
181
+ this.log('📂 Loading User model...');
182
+ const UserModel = await (0, userManagement_js_1.loadUserModel)();
183
+ this.log('📂 Getting user repository...');
184
+ const userRepo = await (0, userManagement_js_1.getUserRepository)(dataSource);
185
+ this.log('✅ Repository loaded\n');
186
+ // Collect user data (interactive or from flags)
187
+ let firstName = flags['first-name'];
188
+ let lastName = flags['last-name'];
189
+ let email = flags.email;
190
+ let password = flags.password;
191
+ let rolesStr = flags.roles;
192
+ // Interactive mode if flags not provided
193
+ if (!firstName) {
194
+ const answer = await inquirer_1.default.prompt([
195
+ {
196
+ type: 'input',
197
+ name: 'firstName',
198
+ message: 'First name:',
199
+ validate: (input) => (input.length > 0 ? true : 'First name is required'),
200
+ },
201
+ ]);
202
+ firstName = answer.firstName;
203
+ }
204
+ if (!lastName) {
205
+ const answer = await inquirer_1.default.prompt([
206
+ {
207
+ type: 'input',
208
+ name: 'lastName',
209
+ message: 'Last name:',
210
+ validate: (input) => (input.length > 0 ? true : 'Last name is required'),
211
+ },
212
+ ]);
213
+ lastName = answer.lastName;
214
+ }
215
+ if (!email) {
216
+ const answer = await inquirer_1.default.prompt([
217
+ {
218
+ type: 'input',
219
+ name: 'email',
220
+ message: 'Email:',
221
+ validate: (input) => {
222
+ if (!(0, userManagement_js_1.validateEmail)(input)) {
223
+ return 'Please enter a valid email address';
224
+ }
225
+ return true;
226
+ },
227
+ },
228
+ ]);
229
+ email = answer.email;
230
+ }
231
+ else if (!(0, userManagement_js_1.validateEmail)(email)) {
232
+ this.error('❌ Invalid email address format');
233
+ }
234
+ // Check if user already exists
235
+ const existingUser = await (0, userManagement_js_1.findUserByEmail)(email, userRepo);
236
+ if (existingUser) {
237
+ this.error(`❌ User with email ${email} already exists\n\n` +
238
+ `To update the password, run:\n` +
239
+ ` â€ĸ slingr users set-password ${email}`);
240
+ }
241
+ if (!password) {
242
+ password = await (0, userManagement_js_1.promptPassword)('Password (min 8 characters):');
243
+ }
244
+ else if (password.length < 8) {
245
+ this.error('❌ Password must be at least 8 characters long');
246
+ }
247
+ // Get available roles
248
+ const availableRoles = await (0, userManagement_js_1.getAvailableRoles)();
249
+ if (!rolesStr) {
250
+ const answer = await inquirer_1.default.prompt([
251
+ {
252
+ type: 'input',
253
+ name: 'roles',
254
+ message: `Roles (comma-separated, available: ${availableRoles.join(', ')}):`,
255
+ default: availableRoles[0] || '',
256
+ validate: async (input) => {
257
+ if (!input) {
258
+ return true;
259
+ } // Optional
260
+ const roles = input.split(',').map(r => r.trim());
261
+ const validation = await (0, userManagement_js_1.validateRoles)(roles);
262
+ if (!validation.valid) {
263
+ return `Invalid roles: ${validation.invalidRoles.join(', ')}. Available: ${availableRoles.join(', ')}`;
264
+ }
265
+ return true;
266
+ },
267
+ },
268
+ ]);
269
+ rolesStr = answer.roles;
270
+ }
271
+ const roles = rolesStr
272
+ ? rolesStr
273
+ .split(',')
274
+ .map((r) => r.trim())
275
+ .filter((r) => r.length > 0)
276
+ : [];
277
+ // Validate roles
278
+ if (roles.length > 0) {
279
+ const validation = await (0, userManagement_js_1.validateRoles)(roles);
280
+ if (!validation.valid) {
281
+ this.error(`❌ Invalid roles: ${validation.invalidRoles.join(', ')}\n\n` +
282
+ `Available roles in your app:\n` +
283
+ availableRoles.map((r) => ` â€ĸ ${r}`).join('\n') +
284
+ `\n\nCheck src/data/User.ts to add new roles.`);
285
+ }
286
+ }
287
+ // Create user model instance
288
+ this.log('👤 Creating user instance...');
289
+ const user = new UserModel();
290
+ user.firstName = firstName;
291
+ user.lastName = lastName;
292
+ user.email = email;
293
+ user.password = password; // Plain password - framework will hash it
294
+ user.roles = roles.length > 0 ? roles : undefined;
295
+ user.status = 'active';
296
+ // Save user using framework's createUser function
297
+ // This handles password hashing, validation, and array field persistence
298
+ this.log('💾 Saving user to database...');
299
+ await frameworkCreateUser(user);
300
+ this.log('');
301
+ this.log('✅ User created successfully!');
302
+ this.log('');
303
+ this.log(`📧 Email: ${email}`);
304
+ this.log(`👤 Name: ${firstName} ${lastName}`);
305
+ if (roles.length > 0) {
306
+ this.log(`🔑 Roles: ${roles.join(', ')}`);
307
+ }
308
+ this.log('');
309
+ return dataSource;
310
+ }
311
+ async setPassword(email, flags) {
312
+ this.log(`🔐 Setting password for ${email}...\n`);
313
+ const framework = await import('@slingr/framework-backend');
314
+ const hashUserPassword = framework.hashUserPassword;
315
+ const dataSource = await (0, userManagement_js_1.loadDataSource)(flags.datasource);
316
+ const userRepo = await (0, userManagement_js_1.getUserRepository)(dataSource);
317
+ // Find user
318
+ const user = await (0, userManagement_js_1.findUserByEmail)(email, userRepo);
319
+ if (!user) {
320
+ this.error(`❌ User not found: ${email}\n\n` + `To see all users, run:\n` + ` â€ĸ slingr users list`);
321
+ }
322
+ // Get new password
323
+ let newPassword = flags['new-password'];
324
+ if (!newPassword) {
325
+ newPassword = await (0, userManagement_js_1.promptPassword)('New password (min 8 characters):');
326
+ }
327
+ else if (newPassword.length < 8) {
328
+ this.error('❌ Password must be at least 8 characters long');
329
+ }
330
+ // Hash and update password
331
+ user.password = await hashUserPassword(newPassword);
332
+ await userRepo.save(user);
333
+ this.log('');
334
+ this.log(`✅ Password updated successfully for ${email}`);
335
+ this.log('');
336
+ return dataSource;
337
+ }
338
+ async resetPassword(email, flags) {
339
+ this.log(`🔄 Resetting password for ${email}...\n`);
340
+ const { hashUserPassword } = await import('@slingr/framework-backend');
341
+ const dataSource = await (0, userManagement_js_1.loadDataSource)(flags.datasource);
342
+ const userRepo = await (0, userManagement_js_1.getUserRepository)(dataSource);
343
+ // Find user
344
+ const user = await (0, userManagement_js_1.findUserByEmail)(email, userRepo);
345
+ if (!user) {
346
+ this.error(`❌ User not found: ${email}\n\n` + `To see all users, run:\n` + ` â€ĸ slingr users list`);
347
+ }
348
+ // Confirmation (unless --force)
349
+ if (!flags.force) {
350
+ this.log(`âš ī¸ WARNING: This will reset the password for ${email}\n`);
351
+ const confirmed = await (0, userManagement_js_1.promptConfirmation)('Are you sure?', false);
352
+ if (!confirmed) {
353
+ this.log('Operation cancelled');
354
+ return;
355
+ }
356
+ this.log('');
357
+ }
358
+ // Generate random password
359
+ const newPassword = (0, userManagement_js_1.generateRandomPassword)(12);
360
+ // Hash and update password
361
+ user.password = await hashUserPassword(newPassword);
362
+ await userRepo.save(user);
363
+ this.log('🔑 Password reset successfully!');
364
+ this.log('');
365
+ this.log(`Temporary password: ${newPassword}`);
366
+ this.log('');
367
+ this.log('âš ī¸ Make sure to save this password - it will not be shown again!');
368
+ this.log('');
369
+ return dataSource;
370
+ }
371
+ async activateUser(email, flags) {
372
+ this.log(`✅ Activating user ${email}...\n`);
373
+ const { activateUser } = await import('@slingr/framework-backend');
374
+ const dataSource = await (0, userManagement_js_1.loadDataSource)(flags.datasource);
375
+ const userRepo = await (0, userManagement_js_1.getUserRepository)(dataSource);
376
+ // Find user
377
+ const user = await (0, userManagement_js_1.findUserByEmail)(email, userRepo);
378
+ if (!user) {
379
+ this.error(`❌ User not found: ${email}\n\n` + `To see all users, run:\n` + ` â€ĸ slingr users list`);
380
+ }
381
+ // Check if already active
382
+ if (user.status === 'active') {
383
+ this.log(`â„šī¸ User ${email} is already active\n`);
384
+ return dataSource;
385
+ }
386
+ // Activate user
387
+ await activateUser(user);
388
+ await userRepo.save(user);
389
+ this.log(`✅ User ${email} activated successfully\n`);
390
+ return dataSource;
391
+ }
392
+ async deactivateUser(email, flags) {
393
+ this.log(`âš ī¸ Deactivating user ${email}...\n`);
394
+ const { deactivateUser } = await import('@slingr/framework-backend');
395
+ const dataSource = await (0, userManagement_js_1.loadDataSource)(flags.datasource);
396
+ const userRepo = await (0, userManagement_js_1.getUserRepository)(dataSource);
397
+ // Find user
398
+ const user = await (0, userManagement_js_1.findUserByEmail)(email, userRepo);
399
+ if (!user) {
400
+ this.error(`❌ User not found: ${email}\n\n` + `To see all users, run:\n` + ` â€ĸ slingr users list`);
401
+ }
402
+ // Check if already inactive
403
+ if (user.status === 'inactive') {
404
+ this.log(`â„šī¸ User ${email} is already inactive\n`);
405
+ return dataSource;
406
+ }
407
+ // Warn if trying to deactivate System user
408
+ if (user.roles?.includes('System')) {
409
+ this.log(`âš ī¸ WARNING: You are about to deactivate a System user!\n`);
410
+ }
411
+ // Confirmation (unless --force)
412
+ if (!flags.force) {
413
+ const confirmed = await (0, userManagement_js_1.promptConfirmation)('Are you sure?', false);
414
+ if (!confirmed) {
415
+ this.log('Operation cancelled');
416
+ return dataSource;
417
+ }
418
+ this.log('');
419
+ }
420
+ // Deactivate user
421
+ await deactivateUser(user);
422
+ await userRepo.save(user);
423
+ this.log(`âš ī¸ User ${email} deactivated successfully\n`);
424
+ return dataSource;
425
+ }
426
+ async deleteUser(email, flags) {
427
+ this.log(`đŸ—‘ī¸ Deleting user ${email}...\n`);
428
+ const dataSource = await (0, userManagement_js_1.loadDataSource)(flags.datasource);
429
+ const userRepo = await (0, userManagement_js_1.getUserRepository)(dataSource);
430
+ // Find user
431
+ const user = await (0, userManagement_js_1.findUserByEmail)(email, userRepo);
432
+ if (!user) {
433
+ this.error(`❌ User not found: ${email}\n\n` + `To see all users, run:\n` + ` â€ĸ slingr users list`);
434
+ }
435
+ // Prevent deleting System user
436
+ if (user.roles?.includes('System')) {
437
+ this.error(`❌ Cannot delete System user!\n\n` +
438
+ `System users are critical for application management and cannot be deleted.`);
439
+ }
440
+ // Strong confirmation (unless --force)
441
+ if (!flags.force) {
442
+ this.log(`âš ī¸ WARNING: This will permanently delete the user!\n`);
443
+ this.log(`Email: ${email}`);
444
+ this.log(`Name: ${user.firstName} ${user.lastName}`);
445
+ this.log('');
446
+ const answer = await inquirer_1.default.prompt([
447
+ {
448
+ type: 'input',
449
+ name: 'confirmation',
450
+ message: 'Type "DELETE" to confirm:',
451
+ validate: (input) => {
452
+ if (input !== 'DELETE') {
453
+ return 'You must type "DELETE" to confirm';
454
+ }
455
+ return true;
456
+ },
457
+ },
458
+ ]);
459
+ if (answer.confirmation !== 'DELETE') {
460
+ this.log('Operation cancelled');
461
+ return dataSource;
462
+ }
463
+ this.log('');
464
+ }
465
+ // Delete user
466
+ await userRepo.remove(user);
467
+ this.log(`đŸ—‘ī¸ User ${email} deleted successfully\n`);
468
+ return dataSource;
469
+ }
470
+ }
471
+ exports.default = Users;
472
+ //# sourceMappingURL=users.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/commands/users.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class Views extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ action: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ run(): Promise<void>;
9
+ private generateContext;
10
+ }
11
+ //# sourceMappingURL=views.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../../src/commands/views.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAE,MAAM,aAAa,CAAC;AAO5C,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IACxC,OAAgB,WAAW,SAAqD;IAEhF,OAAgB,QAAQ,WAA4D;IAEpF,OAAgB,IAAI;;MAMlB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YA4BnB,eAAe;CA6B9B"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const core_1 = require("@oclif/core");
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const checkFramework_js_1 = require("../utils/checkFramework.js");
10
+ const viewsGenerator_js_1 = require("../utils/viewsGenerator.js");
11
+ class Views extends core_1.Command {
12
+ static description = 'Manage custom views for your Slingr application';
13
+ static examples = ['<%= config.bin %> <%= command.id %> generate-context'];
14
+ static args = {
15
+ action: core_1.Args.string({
16
+ description: 'Action to perform (generate-context)',
17
+ options: ['generate-context'],
18
+ required: true,
19
+ }),
20
+ };
21
+ async run() {
22
+ const { args } = await this.parse(Views);
23
+ const { action } = args;
24
+ // Verify we're in a Slingr app directory
25
+ const pkgPath = node_path_1.default.join(process.cwd(), 'package.json');
26
+ if (!(await fs_extra_1.default.pathExists(pkgPath))) {
27
+ this.error("Not in a Slingr application directory. Please run this command from your app's root directory.");
28
+ }
29
+ // Check if the app uses @slingr/framework-backend
30
+ if (!(await (0, checkFramework_js_1.hasSlingrFramework)())) {
31
+ this.error('This directory does not contain a Slingr application.');
32
+ }
33
+ try {
34
+ switch (action) {
35
+ case 'generate-context':
36
+ await this.generateContext();
37
+ break;
38
+ default:
39
+ this.error(`Unknown action: ${action}`);
40
+ }
41
+ }
42
+ catch (error) {
43
+ this.error(`Failed to ${action}: ${error.message}`);
44
+ }
45
+ }
46
+ async generateContext() {
47
+ this.log('🔍 Scanning for views...');
48
+ const frontendPath = node_path_1.default.join(process.cwd(), 'frontend');
49
+ if (!(await fs_extra_1.default.pathExists(frontendPath))) {
50
+ this.error('Frontend directory not found.\n\n' +
51
+ 'Expected frontend directory at: ' +
52
+ frontendPath +
53
+ '\n\n' +
54
+ 'This command requires a Slingr application with a frontend.');
55
+ }
56
+ const generated = await (0, viewsGenerator_js_1.generateViewsContext)(process.cwd());
57
+ if (generated) {
58
+ this.log('');
59
+ this.log('✅ Context file generated successfully!');
60
+ this.log('');
61
+ this.log('📍 Location: frontend/generated/context.ts');
62
+ this.log('📍 Location: frontend/generated/views.ts');
63
+ this.log('📍 Location: backend/generated/views.ts');
64
+ }
65
+ else {
66
+ this.log('');
67
+ this.log('â„šī¸ No views found or frontend directory does not exist.');
68
+ this.log(' Context file was not generated.');
69
+ }
70
+ }
71
+ }
72
+ exports.default = Views;
73
+ //# sourceMappingURL=views.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/commands/views.ts"],"names":[],"mappings":";;;;;AAAA,sCAA4C;AAC5C,wDAA0B;AAC1B,0DAA6B;AAE7B,kEAAgE;AAChE,kEAAkE;AAElE,MAAqB,KAAM,SAAQ,cAAO;IACxC,MAAM,CAAU,WAAW,GAAG,iDAAiD,CAAC;IAEhF,MAAM,CAAU,QAAQ,GAAG,CAAC,sDAAsD,CAAC,CAAC;IAEpF,MAAM,CAAU,IAAI,GAAG;QACrB,MAAM,EAAE,WAAI,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,sCAAsC;YACnD,OAAO,EAAE,CAAC,kBAAkB,CAAC;YAC7B,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAExB,yCAAyC;QACzC,MAAM,OAAO,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACzD,IAAI,CAAC,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,gGAAgG,CAAC,CAAC;QAC/G,CAAC;QAED,kDAAkD;QAClD,IAAI,CAAC,CAAC,MAAM,IAAA,sCAAkB,GAAE,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC;YACH,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,kBAAkB;oBACrB,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC7B,MAAM;gBACR;oBACE,IAAI,CAAC,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,aAAa,MAAM,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QAErC,MAAM,YAAY,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,CACR,mCAAmC;gBACjC,kCAAkC;gBAClC,YAAY;gBACZ,MAAM;gBACN,6DAA6D,CAChE,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,IAAA,wCAAoB,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAE5D,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;YACnD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YACvD,IAAI,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACrD,IAAI,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;YACrE,IAAI,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;;AArEH,wBAsEC"}
@@ -1,6 +1,6 @@
1
1
  export interface AppAnswers {
2
- appType: string;
3
- description: string;
2
+ appType?: string;
3
+ description?: string;
4
4
  hasBackend: boolean;
5
5
  hasFrontend: boolean;
6
6
  database: string;
@@ -1 +1 @@
1
- {"version":3,"file":"projectStructure.d.ts","sourceRoot":"","sources":["../src/projectStructure.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAmBD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA8NhG"}
1
+ {"version":3,"file":"projectStructure.d.ts","sourceRoot":"","sources":["../src/projectStructure.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AA0FD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA8dhG"}