@mbc-cqrs-serverless/cli 1.0.16 → 1.0.18

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/README.md CHANGED
@@ -1,134 +1,297 @@
1
1
  ![MBC CQRS serverless framework](https://mbc-cqrs-serverless.mbc-net.com/img/mbc-cqrs-serverless.png)
2
2
 
3
- # MBC CQRS serverless framework CLI package
3
+ # @mbc-cqrs-serverless/cli
4
4
 
5
- ## Description
5
+ [![npm version](https://badge.fury.io/js/@mbc-cqrs-serverless%2Fcli.svg)](https://www.npmjs.com/package/@mbc-cqrs-serverless/cli)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
7
 
7
- The MBC CLI is a command-line interface tool that helps you initialize and manage MBC CQRS Serverless applications. It provides commands for project creation, version management, and development workflow automation.
8
+ A command-line interface for the MBC CQRS Serverless framework. Quickly scaffold new projects, generate code, and manage your serverless CQRS applications.
9
+
10
+ ![Quick Start Demo](https://mbc-cqrs-serverless.mbc-net.com/demo/quick-start.gif)
11
+
12
+ ## Features
13
+
14
+ - **Project Scaffolding**: Create production-ready CQRS applications with a single command
15
+ - **Code Generation**: Generate modules, controllers, services, entities, and DTOs
16
+ - **Version Management**: Install specific framework versions or use the latest
17
+ - **Local Development**: Built-in commands for starting local development servers
8
18
 
9
19
  ## Installation
10
20
 
11
- To install the `mbc` command globally, run:
21
+ ### Global Installation (Recommended)
12
22
 
13
23
  ```bash
14
24
  npm install -g @mbc-cqrs-serverless/cli
15
25
  ```
16
26
 
17
- ## Usage
27
+ ### Version-Specific Installation
28
+
29
+ ```bash
30
+ # Latest stable release
31
+ npm install -g @mbc-cqrs-serverless/cli
32
+
33
+ # Beta release
34
+ npm install -g @mbc-cqrs-serverless/cli@beta
35
+
36
+ # Specific version
37
+ npm install -g @mbc-cqrs-serverless/cli@1.0.16
38
+ ```
39
+
40
+ Verify installation:
18
41
 
19
- ### Project Creation
42
+ ```bash
43
+ mbc --version
44
+ ```
20
45
 
21
- The CLI provides flexible options for creating new projects:
46
+ ## Quick Start
47
+
48
+ Create and run a new CQRS application in minutes:
22
49
 
23
50
  ```bash
24
- mbc new [projectName[@version]]
51
+ # Create a new project
52
+ mbc new my-cqrs-app
53
+
54
+ # Navigate to project
55
+ cd my-cqrs-app
56
+
57
+ # Install dependencies
58
+ npm install
59
+
60
+ # Start local development (run in separate terminals)
61
+ npm run offline:docker # Terminal 1: Start Docker services
62
+ npm run migrate # Terminal 2: Run database migrations
63
+ npm run offline:sls # Terminal 3: Start serverless offline
25
64
  ```
26
65
 
27
- #### Basic Usage Examples
66
+ ## Commands
67
+
68
+ ### `mbc new [name[@version]]`
69
+
70
+ Generate a new CQRS application.
71
+
72
+ **Alias**: `n`
73
+
74
+ **Examples**:
28
75
 
29
- 1. Create a new project in the current directory:
30
76
  ```bash
77
+ # Create project in current directory (prompts for name)
31
78
  mbc new
79
+
80
+ # Create project with a specific name
81
+ mbc new my-app
82
+
83
+ # Create project with a specific framework version
84
+ mbc new my-app@1.0.16
85
+
86
+ # Use alias
87
+ mbc n my-app
32
88
  ```
33
89
 
34
- 2. Create a project with a specific name:
90
+ ### `mbc generate <schematic> [name]`
91
+
92
+ Generate code elements using schematics.
93
+
94
+ **Alias**: `g`
95
+
96
+ **Options**:
97
+ - `-d, --dry-run` - Report actions without writing files
98
+ - `--mode <mode>` - Operation mode: sync or async (default: async)
99
+ - `--schema` / `--no-schema` - Enable/disable schema generation
100
+
101
+ **Available Schematics**:
102
+
103
+ | Name | Alias | Description |
104
+ |------|-------|-------------|
105
+ | `module` | `mo` | Create a module |
106
+ | `controller` | `co` | Create a controller |
107
+ | `service` | `se` | Create a service |
108
+ | `entity` | `en` | Create an entity |
109
+ | `dto` | `dto` | Create a DTO |
110
+
111
+ **Examples**:
112
+
35
113
  ```bash
36
- mbc new my-cqrs-app
114
+ # Generate a new module
115
+ mbc generate module todo
116
+
117
+ # Generate a controller (using alias)
118
+ mbc g co todo
119
+
120
+ # Generate a service with async mode
121
+ mbc g service todo --mode async
122
+
123
+ # Dry run to preview changes
124
+ mbc g module order --dry-run
37
125
  ```
38
126
 
39
- 3. Create a project with a specific version:
127
+ ### `mbc start`
128
+
129
+ Start the application with Serverless Framework.
130
+
131
+ **Alias**: `s`
132
+
133
+ ```bash
134
+ mbc start
135
+ # or
136
+ mbc s
137
+ ```
138
+
139
+ ### `mbc ui-common`
140
+
141
+ Add MBC CQRS UI common components to your project.
142
+
143
+ **Alias**: `ui`
144
+
145
+ **Options**:
146
+ - `-p, --pathDir <string>` - Path for common-ui (required)
147
+ - `-b, --branch <string>` - Branch name (default: main)
148
+ - `--auth <string>` - Auth method: HTTPS or SSH (default: SSH)
149
+ - `--token <string>` - Token for HTTPS auth (format: tokenId:tokenPassword)
150
+ - `-c, --component <string>` - Component to install: all, appsync, or component (default: all)
151
+ - `--alias` - Alias to common-ui
152
+
153
+ **Example**:
154
+
40
155
  ```bash
41
- mbc new my-cqrs-app@0.1.45
156
+ mbc ui-common -p ./src/common-ui -c all
42
157
  ```
43
158
 
44
- ### Project Structure
159
+ ## Project Structure
45
160
 
46
- The CLI creates a standardized project structure:
161
+ The CLI creates a standardized project structure optimized for CQRS:
47
162
 
48
163
  ```
49
164
  my-cqrs-app/
50
165
  ├── src/
51
- │ ├── commands/ # Command handlers
52
- │ ├── events/ # Event handlers
53
- │ ├── interfaces/ # TypeScript interfaces
54
- └── services/ # Business logic services
166
+ │ ├── app.module.ts # Root application module
167
+ │ ├── main.ts # Application entry point
168
+ │ ├── todo/ # Example module (optional)
169
+ │ ├── todo.module.ts # Module definition
170
+ │ │ ├── todo.controller.ts # REST controller
171
+ │ │ ├── todo.service.ts # Business logic
172
+ │ │ ├── dto/ # Data transfer objects
173
+ │ │ │ ├── create-todo.dto.ts
174
+ │ │ │ └── update-todo.dto.ts
175
+ │ │ └── entity/ # Entity definitions
176
+ │ │ └── todo.entity.ts
177
+ │ ├── prisma/ # Prisma ORM configuration
178
+ │ │ ├── schema.prisma # Database schema
179
+ │ │ └── prisma.service.ts # Prisma service
180
+ │ └── helpers/ # Utility functions
181
+ ├── infra-local/ # Local infrastructure config
182
+ │ └── cognito-local/ # Local Cognito setup
55
183
  ├── test/
56
- │ ├── e2e/ # End-to-end tests
57
- │ └── unit/ # Unit tests
58
- ├── package.json
59
- └── serverless.yml # Serverless Framework configuration
184
+ │ ├── e2e/ # End-to-end tests
185
+ │ └── unit/ # Unit tests
186
+ ├── .env.example # Environment template
187
+ ├── docker-compose.yml # Docker services
188
+ ├── package.json # Dependencies
189
+ ├── serverless.yml # Serverless Framework config
190
+ └── tsconfig.json # TypeScript configuration
60
191
  ```
61
192
 
62
- ### Development Workflow
193
+ ## Development Workflow
194
+
195
+ ### 1. Create Project
63
196
 
64
- 1. After creating a project, install dependencies:
65
197
  ```bash
198
+ mbc new my-cqrs-app
66
199
  cd my-cqrs-app
67
200
  npm install
68
201
  ```
69
202
 
70
- 2. Build the project:
203
+ ### 2. Configure Environment
204
+
71
205
  ```bash
72
- npm run build
206
+ cp .env.example .env
207
+ # Edit .env with your settings
73
208
  ```
74
209
 
75
- 3. Start local development environment:
210
+ ### 3. Start Local Infrastructure
211
+
76
212
  ```bash
77
- npm run offline:docker # Start local infrastructure
78
- npm run migrate # Run database migrations
79
- npm run offline:sls # Start serverless offline
213
+ # Start Docker services (DynamoDB Local, LocalStack, etc.)
214
+ npm run offline:docker
80
215
  ```
81
216
 
82
- ### Available Commands
217
+ ### 4. Initialize Database
83
218
 
84
- - `mbc new`: Create a new project
85
- - `mbc version`: Display CLI version
86
- - `mbc help`: Show command help
87
- - `mbc list`: List available project templates
219
+ ```bash
220
+ # Run Prisma migrations
221
+ npm run migrate
222
+ ```
88
223
 
89
- ### Configuration
224
+ ### 5. Start Development Server
90
225
 
91
- The CLI supports configuration through:
92
- - Command line arguments
93
- - Environment variables
94
- - Configuration files
226
+ ```bash
227
+ # Start Serverless Offline
228
+ npm run offline:sls
229
+ ```
230
+
231
+ ### 6. Generate New Components
95
232
 
96
- Example configuration file (`.mbcrc.json`):
97
- ```json
98
- {
99
- "defaultTemplate": "basic",
100
- "region": "ap-northeast-1",
101
- "stage": "dev"
102
- }
233
+ ```bash
234
+ # Add a new module
235
+ mbc g module order
236
+
237
+ # Add related components
238
+ mbc g controller order
239
+ mbc g service order
240
+ mbc g entity order
241
+ mbc g dto order
103
242
  ```
104
243
 
244
+ ## Related Packages
245
+
246
+ | Package | Description |
247
+ |---------|-------------|
248
+ | [@mbc-cqrs-serverless/core](https://www.npmjs.com/package/@mbc-cqrs-serverless/core) | Core CQRS framework |
249
+ | [@mbc-cqrs-serverless/sequence](https://www.npmjs.com/package/@mbc-cqrs-serverless/sequence) | Sequence number generation |
250
+ | [@mbc-cqrs-serverless/task](https://www.npmjs.com/package/@mbc-cqrs-serverless/task) | Async task processing |
251
+ | [@mbc-cqrs-serverless/master](https://www.npmjs.com/package/@mbc-cqrs-serverless/master) | Master data management |
252
+ | [@mbc-cqrs-serverless/tenant](https://www.npmjs.com/package/@mbc-cqrs-serverless/tenant) | Multi-tenancy support |
253
+ | [@mbc-cqrs-serverless/import](https://www.npmjs.com/package/@mbc-cqrs-serverless/import) | Data import utilities |
254
+ | [@mbc-cqrs-serverless/ui-setting](https://www.npmjs.com/package/@mbc-cqrs-serverless/ui-setting) | UI configuration |
255
+
105
256
  ## Documentation
106
257
 
107
- Visit https://mbc-cqrs-serverless.mbc-net.com/ to view the full documentation, including:
108
- - Detailed CLI commands and options
109
- - Project setup and configuration
110
- - Development server setup
111
- - Available endpoints and services
258
+ Full documentation is available at [https://mbc-cqrs-serverless.mbc-net.com/](https://mbc-cqrs-serverless.mbc-net.com/)
259
+
260
+ - [Getting Started](https://mbc-cqrs-serverless.mbc-net.com/docs/introduction)
261
+ - [CLI Reference](https://mbc-cqrs-serverless.mbc-net.com/docs/cli)
262
+ - [Build a Todo App Tutorial](https://mbc-cqrs-serverless.mbc-net.com/docs/build-todo-app)
112
263
 
113
264
  ## Troubleshooting
114
265
 
115
- Common issues and solutions:
266
+ ### Version Not Found
116
267
 
117
- 1. Version not found:
118
268
  ```bash
119
269
  mbc new myapp@999.999.999
120
- # Error: Version not found. Available versions: [0.1.45, 0.1.44, ...]
270
+ # Error: Version not found
121
271
  ```
122
- Solution: Use `mbc list versions` to see available versions.
123
272
 
124
- 2. Project creation fails:
273
+ **Solution**: Check available versions on [npm](https://www.npmjs.com/package/@mbc-cqrs-serverless/cli?activeTab=versions).
274
+
275
+ ### Project Creation Fails
276
+
125
277
  ```bash
126
278
  mbc new my-project
127
279
  # Error: Directory not empty
128
280
  ```
129
- Solution: Use a new directory or remove existing files.
281
+
282
+ **Solution**: Use a new directory or remove existing files first.
283
+
284
+ ### Permission Denied
285
+
286
+ ```bash
287
+ npm install -g @mbc-cqrs-serverless/cli
288
+ # EACCES: permission denied
289
+ ```
290
+
291
+ **Solution**: Fix npm permissions or use a Node version manager like nvm.
130
292
 
131
293
  ## License
132
294
 
133
- Copyright &copy; 2024, Murakami Business Consulting, Inc. https://www.mbc-net.com/
134
- This project and sub projects are under the MIT License.
295
+ Copyright © 2024-2025, Murakami Business Consulting, Inc. [https://www.mbc-net.com/](https://www.mbc-net.com/)
296
+
297
+ This project is under the [MIT License](../../LICENSE.txt).
@@ -19,27 +19,21 @@ describe('Abstract Runner', () => {
19
19
  it('should execute command successfully with default options', async () => {
20
20
  const runner = new abstract_runner_1.AbstractRunner('npm', ['--version']);
21
21
  const runPromise = runner.run('install');
22
- setTimeout(() => {
23
- mockChildProcess.emit('close', 0);
24
- }, 10);
22
+ mockChildProcess.emit('close', 0);
25
23
  await expect(runPromise).resolves.toBeNull();
26
24
  expect(mockSpawn).toHaveBeenCalledWith('npm', ['--version', 'install'], expect.any(Object));
27
25
  });
28
26
  it('should execute command with custom arguments', async () => {
29
27
  const runner = new abstract_runner_1.AbstractRunner('node', ['-v']);
30
28
  const runPromise = runner.run('--help');
31
- setTimeout(() => {
32
- mockChildProcess.emit('close', 0);
33
- }, 10);
29
+ mockChildProcess.emit('close', 0);
34
30
  await expect(runPromise).resolves.toBeNull();
35
31
  expect(mockSpawn).toHaveBeenCalledWith('node', ['-v', '--help'], expect.any(Object));
36
32
  });
37
33
  it('should collect output when collectResult is true', async () => {
38
34
  const runner = new abstract_runner_1.AbstractRunner('echo', ['hello']);
39
35
  const runPromise = runner.run('world', true);
40
- setTimeout(() => {
41
- mockChildProcess.stdout.emit('data', Buffer.from('hello\n'));
42
- }, 10);
36
+ mockChildProcess.stdout.emit('data', Buffer.from('hello\n'));
43
37
  const result = await runPromise;
44
38
  expect(result).toBe('hello');
45
39
  });
@@ -48,25 +42,19 @@ describe('Abstract Runner', () => {
48
42
  it('should handle command execution failure', async () => {
49
43
  const runner = new abstract_runner_1.AbstractRunner('invalid-command', []);
50
44
  const runPromise = runner.run('test');
51
- setTimeout(() => {
52
- mockChildProcess.emit('close', 1);
53
- }, 10);
45
+ mockChildProcess.emit('close', 1);
54
46
  await expect(runPromise).rejects.toBeUndefined();
55
47
  });
56
48
  it('should handle spawn errors', async () => {
57
49
  const runner = new abstract_runner_1.AbstractRunner('invalid-command', []);
58
50
  const runPromise = runner.run('test');
59
- setTimeout(() => {
60
- mockChildProcess.emit('close', 1);
61
- }, 10);
51
+ mockChildProcess.emit('close', 1);
62
52
  await expect(runPromise).rejects.toBeUndefined();
63
53
  });
64
54
  it('should handle stderr output as error', async () => {
65
55
  const runner = new abstract_runner_1.AbstractRunner('test-command', []);
66
56
  const runPromise = runner.run('test');
67
- setTimeout(() => {
68
- mockChildProcess.emit('close', 1);
69
- }, 10);
57
+ mockChildProcess.emit('close', 1);
70
58
  await expect(runPromise).rejects.toBeUndefined();
71
59
  });
72
60
  });
@@ -91,27 +79,21 @@ describe('Abstract Runner', () => {
91
79
  it('should collect stdout when collectResult is enabled', async () => {
92
80
  const runner = new abstract_runner_1.AbstractRunner('cat', ['file.txt']);
93
81
  const runPromise = runner.run('test', true);
94
- setTimeout(() => {
95
- mockChildProcess.stdout.emit('data', Buffer.from('line 1\n'));
96
- }, 10);
82
+ mockChildProcess.stdout.emit('data', Buffer.from('line 1\n'));
97
83
  const result = await runPromise;
98
84
  expect(result).toBe('line 1');
99
85
  });
100
86
  it('should not collect output when collectResult is false', async () => {
101
87
  const runner = new abstract_runner_1.AbstractRunner('echo', ['test']);
102
88
  const runPromise = runner.run('command', false);
103
- setTimeout(() => {
104
- mockChildProcess.emit('close', 0);
105
- }, 10);
89
+ mockChildProcess.emit('close', 0);
106
90
  const result = await runPromise;
107
91
  expect(result).toBeNull();
108
92
  });
109
93
  it('should handle empty stdout output', async () => {
110
94
  const runner = new abstract_runner_1.AbstractRunner('true', []);
111
95
  const runPromise = runner.run('test', false);
112
- setTimeout(() => {
113
- mockChildProcess.emit('close', 0);
114
- }, 10);
96
+ mockChildProcess.emit('close', 0);
115
97
  const result = await runPromise;
116
98
  expect(result).toBeNull();
117
99
  });
@@ -120,17 +102,13 @@ describe('Abstract Runner', () => {
120
102
  it('should handle process exit with signal', async () => {
121
103
  const runner = new abstract_runner_1.AbstractRunner('test-command', []);
122
104
  const runPromise = runner.run('test');
123
- setTimeout(() => {
124
- mockChildProcess.emit('close', null, 'SIGTERM');
125
- }, 10);
105
+ mockChildProcess.emit('close', null, 'SIGTERM');
126
106
  await expect(runPromise).rejects.toBeUndefined();
127
107
  });
128
108
  it('should handle multiple stderr chunks', async () => {
129
109
  const runner = new abstract_runner_1.AbstractRunner('test-command', []);
130
110
  const runPromise = runner.run('test');
131
- setTimeout(() => {
132
- mockChildProcess.emit('close', 1);
133
- }, 10);
111
+ mockChildProcess.emit('close', 1);
134
112
  await expect(runPromise).rejects.toBeUndefined();
135
113
  });
136
114
  it('should handle very long command arguments', async () => {
@@ -147,21 +125,18 @@ describe('Abstract Runner', () => {
147
125
  const runner2 = new abstract_runner_1.AbstractRunner('echo', ['test2']);
148
126
  const promise1 = runner1.run('command1');
149
127
  const promise2 = runner2.run('command2');
150
- setTimeout(() => {
151
- mockChildProcess.emit('close', 0);
152
- }, 10);
128
+ mockChildProcess.emit('close', 0);
153
129
  const results = await Promise.all([promise1, promise2]);
154
130
  expect(results).toEqual([null, null]);
155
131
  });
156
132
  it('should handle rapid successive runs', async () => {
157
133
  const runner = new abstract_runner_1.AbstractRunner('echo', ['test']);
158
- const promises = Array(5).fill(null).map((_, i) => {
159
- const promise = runner.run(`command${i}`);
160
- setTimeout(() => {
161
- mockChildProcess.emit('close', 0);
162
- }, 10 + i);
163
- return promise;
134
+ const promises = Array(5)
135
+ .fill(null)
136
+ .map((_, i) => {
137
+ return runner.run(`command${i}`);
164
138
  });
139
+ mockChildProcess.emit('close', 0);
165
140
  const results = await Promise.all(promises);
166
141
  expect(results).toEqual([null, null, null, null, null]);
167
142
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mbc-cqrs-serverless/cli",
3
- "version": "1.0.16",
3
+ "version": "1.0.18",
4
4
  "description": "a CLI to get started with MBC CQRS serverless framework",
5
5
  "keywords": [
6
6
  "mbc",
@@ -58,5 +58,5 @@
58
58
  "@faker-js/faker": "^8.3.1",
59
59
  "copyfiles": "^2.4.1"
60
60
  },
61
- "gitHead": "4ab967474160873735b8cb816272a7012b8940d5"
61
+ "gitHead": "f94a747c55ac4b09a643a5201dc89e4edda19c76"
62
62
  }
@@ -312,21 +312,6 @@
312
312
  "url": "https://github.com/sponsors/jonschlinkert"
313
313
  }
314
314
  },
315
- "node_modules/@angular-devkit/schematics-cli/node_modules/readdirp": {
316
- "version": "4.1.2",
317
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
318
- "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
319
- "dev": true,
320
- "license": "MIT",
321
- "optional": true,
322
- "engines": {
323
- "node": ">= 14.18.0"
324
- },
325
- "funding": {
326
- "type": "individual",
327
- "url": "https://paulmillr.com/funding/"
328
- }
329
- },
330
315
  "node_modules/@aws-crypto/crc32": {
331
316
  "version": "5.2.0",
332
317
  "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz",
@@ -689,7 +674,6 @@
689
674
  "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.665.0.tgz",
690
675
  "integrity": "sha512-W1idOmV4bDzUxZhkYbDGzmNwJ5Lf61UIOGUUAva5A2CpfVm2qTGRhEnowj6PEv5I06O/gMTsJpJVJxypzKdLQQ==",
691
676
  "devOptional": true,
692
- "peer": true,
693
677
  "dependencies": {
694
678
  "@aws-crypto/sha256-browser": "5.2.0",
695
679
  "@aws-crypto/sha256-js": "5.2.0",
@@ -908,7 +892,6 @@
908
892
  "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.665.0.tgz",
909
893
  "integrity": "sha512-jlXlF/YiCZyieSmYSU5R0kViU+pKJSKlGHaz+L1uXlpuoMiyNsSC3CGRzvtijBdgMU/vacVcAuj/tC/iov4usg==",
910
894
  "devOptional": true,
911
- "peer": true,
912
895
  "dependencies": {
913
896
  "@aws-crypto/sha1-browser": "5.2.0",
914
897
  "@aws-crypto/sha256-browser": "5.2.0",
@@ -2355,7 +2338,6 @@
2355
2338
  "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.665.0.tgz",
2356
2339
  "integrity": "sha512-FQ2YyM9/6y3clWkf3d60/W4c/HZy61hbfIsR4KIh8aGOifwfIx/UpZQ61pCr/TXTNqbaAVU2/sK+J1zFkGEoLw==",
2357
2340
  "devOptional": true,
2358
- "peer": true,
2359
2341
  "dependencies": {
2360
2342
  "@aws-crypto/sha256-browser": "5.2.0",
2361
2343
  "@aws-crypto/sha256-js": "5.2.0",
@@ -2409,7 +2391,6 @@
2409
2391
  "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.665.0.tgz",
2410
2392
  "integrity": "sha512-/OQEaWB1euXhZ/hV+wetDw1tynlrkNKzirzoiFuJ1EQsiIb9Ih/qjUF9KLdF1+/bXbnGu5YvIaAx80YReUchjg==",
2411
2393
  "devOptional": true,
2412
- "peer": true,
2413
2394
  "dependencies": {
2414
2395
  "@aws-crypto/sha256-browser": "5.2.0",
2415
2396
  "@aws-crypto/sha256-js": "5.2.0",
@@ -4187,7 +4168,6 @@
4187
4168
  "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.7.tgz",
4188
4169
  "integrity": "sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==",
4189
4170
  "dev": true,
4190
- "peer": true,
4191
4171
  "dependencies": {
4192
4172
  "@ampproject/remapping": "^2.2.0",
4193
4173
  "@babel/code-frame": "^7.25.7",
@@ -6628,7 +6608,6 @@
6628
6608
  "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
6629
6609
  "dev": true,
6630
6610
  "license": "MIT",
6631
- "peer": true,
6632
6611
  "dependencies": {
6633
6612
  "readdirp": "^4.0.1"
6634
6613
  },
@@ -6796,7 +6775,6 @@
6796
6775
  "version": "10.4.4",
6797
6776
  "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-10.4.4.tgz",
6798
6777
  "integrity": "sha512-0j2/zqRw9nvHV1GKTktER8B/hIC/Z8CYFjN/ZqUuvwayCH+jZZBhCR2oRyuvLTXdnlSmtCAg2xvQ0ULqQvzqhA==",
6799
- "peer": true,
6800
6778
  "dependencies": {
6801
6779
  "iterare": "1.2.1",
6802
6780
  "tslib": "2.7.0",
@@ -8298,7 +8276,6 @@
8298
8276
  "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
8299
8277
  "dev": true,
8300
8278
  "license": "MIT",
8301
- "peer": true,
8302
8279
  "dependencies": {
8303
8280
  "@types/estree": "*",
8304
8281
  "@types/json-schema": "*"
@@ -8461,7 +8438,6 @@
8461
8438
  "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.10.tgz",
8462
8439
  "integrity": "sha512-vQUKgWTjEIRFCvK6CyriPH3MZYiYlNy0fKiEYHWbcoWLEgs4opurGGKlebrTLqdSMIbXImH6XExNiIyNUv3WpA==",
8463
8440
  "dev": true,
8464
- "peer": true,
8465
8441
  "dependencies": {
8466
8442
  "undici-types": "~6.19.2"
8467
8443
  }
@@ -8625,7 +8601,6 @@
8625
8601
  "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz",
8626
8602
  "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==",
8627
8603
  "dev": true,
8628
- "peer": true,
8629
8604
  "dependencies": {
8630
8605
  "@typescript-eslint/scope-manager": "6.21.0",
8631
8606
  "@typescript-eslint/types": "6.21.0",
@@ -9034,7 +9009,6 @@
9034
9009
  "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
9035
9010
  "dev": true,
9036
9011
  "license": "MIT",
9037
- "peer": true,
9038
9012
  "bin": {
9039
9013
  "acorn": "bin/acorn"
9040
9014
  },
@@ -9161,7 +9135,6 @@
9161
9135
  "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
9162
9136
  "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
9163
9137
  "dev": true,
9164
- "peer": true,
9165
9138
  "dependencies": {
9166
9139
  "fast-deep-equal": "^3.1.1",
9167
9140
  "json-schema-traverse": "^1.0.0",
@@ -10265,7 +10238,6 @@
10265
10238
  "url": "https://github.com/sponsors/ai"
10266
10239
  }
10267
10240
  ],
10268
- "peer": true,
10269
10241
  "dependencies": {
10270
10242
  "caniuse-lite": "^1.0.30001663",
10271
10243
  "electron-to-chromium": "^1.5.28",
@@ -10752,7 +10724,6 @@
10752
10724
  "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
10753
10725
  "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
10754
10726
  "dev": true,
10755
- "peer": true,
10756
10727
  "dependencies": {
10757
10728
  "anymatch": "~3.1.2",
10758
10729
  "braces": "~3.0.2",
@@ -12785,7 +12756,6 @@
12785
12756
  "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
12786
12757
  "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
12787
12758
  "dev": true,
12788
- "peer": true,
12789
12759
  "dependencies": {
12790
12760
  "@eslint-community/eslint-utils": "^4.2.0",
12791
12761
  "@eslint-community/regexpp": "^4.6.1",
@@ -12841,7 +12811,6 @@
12841
12811
  "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz",
12842
12812
  "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==",
12843
12813
  "dev": true,
12844
- "peer": true,
12845
12814
  "bin": {
12846
12815
  "eslint-config-prettier": "bin/cli.js"
12847
12816
  },
@@ -15943,7 +15912,6 @@
15943
15912
  "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
15944
15913
  "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
15945
15914
  "dev": true,
15946
- "peer": true,
15947
15915
  "dependencies": {
15948
15916
  "@jest/core": "^29.7.0",
15949
15917
  "@jest/types": "^29.6.3",
@@ -16737,7 +16705,6 @@
16737
16705
  "resolved": "https://registry.npmjs.org/jsep/-/jsep-1.3.9.tgz",
16738
16706
  "integrity": "sha512-i1rBX5N7VPl0eYb6+mHNp52sEuaS2Wi8CDYx1X5sn9naevL78+265XJqy1qENEk7mRKwS06NHpUqiBwR7qeodw==",
16739
16707
  "dev": true,
16740
- "peer": true,
16741
16708
  "engines": {
16742
16709
  "node": ">= 10.16.0"
16743
16710
  }
@@ -17520,7 +17487,6 @@
17520
17487
  "resolved": "https://registry.npmjs.org/log/-/log-6.3.2.tgz",
17521
17488
  "integrity": "sha512-ek8NRg/OPvS9ISOJNWNAz5vZcpYacWNFDWNJjj5OXsc6YuKacfey6wF04cXz/tOJIVrZ2nGSkHpAY5qKtF6ISg==",
17522
17489
  "dev": true,
17523
- "peer": true,
17524
17490
  "dependencies": {
17525
17491
  "d": "^1.0.2",
17526
17492
  "duration": "^0.2.2",
@@ -19360,7 +19326,6 @@
19360
19326
  "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
19361
19327
  "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
19362
19328
  "dev": true,
19363
- "peer": true,
19364
19329
  "bin": {
19365
19330
  "prettier": "bin/prettier.cjs"
19366
19331
  },
@@ -19414,7 +19379,6 @@
19414
19379
  "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.20.0.tgz",
19415
19380
  "integrity": "sha512-6obb3ucKgAnsGS9x9gLOe8qa51XxvJ3vLQtmyf52CTey1Qcez3A6W6ROH5HIz5Q5bW+0VpmZb8WBohieMFGpig==",
19416
19381
  "hasInstallScript": true,
19417
- "peer": true,
19418
19382
  "dependencies": {
19419
19383
  "@prisma/engines": "5.20.0"
19420
19384
  },
@@ -20014,7 +19978,6 @@
20014
19978
  "version": "7.8.1",
20015
19979
  "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
20016
19980
  "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
20017
- "peer": true,
20018
19981
  "dependencies": {
20019
19982
  "tslib": "^2.1.0"
20020
19983
  }
@@ -20222,7 +20185,6 @@
20222
20185
  "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
20223
20186
  "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
20224
20187
  "dev": true,
20225
- "peer": true,
20226
20188
  "dependencies": {
20227
20189
  "fast-deep-equal": "^3.1.1",
20228
20190
  "fast-json-stable-stringify": "^2.0.0",
@@ -20366,7 +20328,6 @@
20366
20328
  "dev": true,
20367
20329
  "hasInstallScript": true,
20368
20330
  "license": "MIT",
20369
- "peer": true,
20370
20331
  "dependencies": {
20371
20332
  "@aws-sdk/client-api-gateway": "^3.588.0",
20372
20333
  "@aws-sdk/client-cognito-identity-provider": "^3.588.0",
@@ -20466,7 +20427,6 @@
20466
20427
  "resolved": "https://registry.npmjs.org/serverless-offline/-/serverless-offline-13.8.1.tgz",
20467
20428
  "integrity": "sha512-7G/ohXl1qtPIAUHSt3K8mVXWWNdCyQnyIgAixEwBKHllAsbeCjv0/bkz/d0vqIkTGpyfVxnQ5MIhn6u3gZCQbg==",
20468
20429
  "dev": true,
20469
- "peer": true,
20470
20430
  "dependencies": {
20471
20431
  "@aws-sdk/client-lambda": "^3.636.0",
20472
20432
  "@hapi/boom": "^10.0.1",
@@ -22955,7 +22915,6 @@
22955
22915
  "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
22956
22916
  "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
22957
22917
  "dev": true,
22958
- "peer": true,
22959
22918
  "dependencies": {
22960
22919
  "@cspotcode/source-map-support": "^0.8.0",
22961
22920
  "@tsconfig/node10": "^1.0.7",
@@ -23202,7 +23161,6 @@
23202
23161
  "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
23203
23162
  "dev": true,
23204
23163
  "license": "Apache-2.0",
23205
- "peer": true,
23206
23164
  "bin": {
23207
23165
  "tsc": "bin/tsc",
23208
23166
  "tsserver": "bin/tsserver"
@@ -23448,9 +23406,9 @@
23448
23406
  }
23449
23407
  },
23450
23408
  "node_modules/validator": {
23451
- "version": "13.15.20",
23452
- "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.20.tgz",
23453
- "integrity": "sha512-KxPOq3V2LmfQPP4eqf3Mq/zrT0Dqp2Vmx2Bn285LwVahLc+CsxOM0crBHczm8ijlcjZ0Q5Xd6LW3z3odTPnlrw==",
23409
+ "version": "13.15.26",
23410
+ "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.26.tgz",
23411
+ "integrity": "sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA==",
23454
23412
  "license": "MIT",
23455
23413
  "engines": {
23456
23414
  "node": ">= 0.10"
@@ -23553,7 +23511,6 @@
23553
23511
  "integrity": "sha512-QaNKAvGCDRh3wW1dsDjeMdDXwZm2vqq3zn6Pvq4rHOEOGSaUMgOOjG2Y9ZbIGzpfkJk9ZYTHpDqgDfeBDcnLaw==",
23554
23512
  "dev": true,
23555
23513
  "license": "MIT",
23556
- "peer": true,
23557
23514
  "dependencies": {
23558
23515
  "@types/eslint-scope": "^3.7.7",
23559
23516
  "@types/estree": "^1.0.8",
@@ -23998,7 +23955,6 @@
23998
23955
  "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
23999
23956
  "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
24000
23957
  "dev": true,
24001
- "peer": true,
24002
23958
  "engines": {
24003
23959
  "node": ">=8.3.0"
24004
23960
  },