tspace-spear 1.2.8 → 1.2.9

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 (74) hide show
  1. package/README.md +253 -71
  2. package/dist/cli/generators/app/index.js.map +1 -1
  3. package/dist/cli/generators/controller/template.d.ts +1 -1
  4. package/dist/cli/generators/controller/template.js +15 -8
  5. package/dist/cli/generators/controller/template.js.map +1 -1
  6. package/dist/cli/generators/dto/index.js +5 -3
  7. package/dist/cli/generators/dto/index.js.map +1 -1
  8. package/dist/cli/generators/module/index.js +3 -3
  9. package/dist/cli/generators/service/template.d.ts +1 -1
  10. package/dist/cli/generators/service/template.js +17 -17
  11. package/dist/cli/index.js +1 -0
  12. package/dist/cli/index.js.map +1 -1
  13. package/dist/lib/core/client/index.d.ts +13 -43
  14. package/dist/lib/core/client/index.js +47 -26
  15. package/dist/lib/core/client/index.js.map +1 -1
  16. package/dist/lib/core/{compiler → client}/types.d.ts +29 -0
  17. package/dist/lib/core/client/types.js.map +1 -0
  18. package/dist/lib/core/compiler/generator.d.ts +4 -6
  19. package/dist/lib/core/compiler/generator.js +168 -39
  20. package/dist/lib/core/compiler/generator.js.map +1 -1
  21. package/dist/lib/core/compiler/index.d.ts +2 -2
  22. package/dist/lib/core/compiler/index.js +2 -2
  23. package/dist/lib/core/compiler/index.js.map +1 -1
  24. package/dist/lib/core/compiler/pre-routes.d.ts +170 -34
  25. package/dist/lib/core/compiler/pre-routes.js +45 -25
  26. package/dist/lib/core/compiler/pre-routes.js.map +1 -1
  27. package/dist/lib/core/decorators/context.js +23 -15
  28. package/dist/lib/core/decorators/context.js.map +1 -1
  29. package/dist/lib/core/decorators/statusCode.js +3 -1
  30. package/dist/lib/core/decorators/statusCode.js.map +1 -1
  31. package/dist/lib/core/server/fast-router.d.ts +2 -2
  32. package/dist/lib/core/server/fast-router.js +17 -3
  33. package/dist/lib/core/server/fast-router.js.map +1 -1
  34. package/dist/lib/core/server/index.js +2 -2
  35. package/dist/lib/core/server/index.js.map +1 -1
  36. package/dist/lib/core/server/response.js +21 -1
  37. package/dist/lib/core/server/response.js.map +1 -1
  38. package/dist/lib/core/types/index.d.ts +32 -27
  39. package/package.json +6 -3
  40. package/dist/cli/app.d.ts +0 -1
  41. package/dist/cli/app.js +0 -32
  42. package/dist/cli/app.js.map +0 -1
  43. package/dist/cli/client.d.ts +0 -1
  44. package/dist/cli/client.js +0 -30
  45. package/dist/cli/client.js.map +0 -1
  46. package/dist/cli/controller.d.ts +0 -1
  47. package/dist/cli/controller.js +0 -169
  48. package/dist/cli/controller.js.map +0 -1
  49. package/dist/cli/middleware.d.ts +0 -1
  50. package/dist/cli/middleware.js +0 -16
  51. package/dist/cli/middleware.js.map +0 -1
  52. package/dist/client.d.ts +0 -1
  53. package/dist/client.js +0 -17
  54. package/dist/client.js.map +0 -1
  55. package/dist/common/middlewares/log.middleware.d.ts +0 -2
  56. package/dist/common/middlewares/log.middleware.js +0 -12
  57. package/dist/common/middlewares/log.middleware.js.map +0 -1
  58. package/dist/index.d.ts +0 -4
  59. package/dist/index.js +0 -32
  60. package/dist/index.js.map +0 -1
  61. package/dist/lib/core/compiler/types.js.map +0 -1
  62. package/dist/modules/cats/cat.controller.d.ts +0 -58
  63. package/dist/modules/cats/cat.controller.js +0 -90
  64. package/dist/modules/cats/cat.controller.js.map +0 -1
  65. package/dist/modules/cats/cat.dto.d.ts +0 -8
  66. package/dist/modules/cats/cat.dto.js +0 -44
  67. package/dist/modules/cats/cat.dto.js.map +0 -1
  68. package/dist/modules/cats/cat.service.d.ts +0 -23
  69. package/dist/modules/cats/cat.service.js +0 -56
  70. package/dist/modules/cats/cat.service.js.map +0 -1
  71. package/dist/tests/e2e..test.d.ts +0 -1
  72. package/dist/tests/e2e..test.js +0 -16
  73. package/dist/tests/e2e..test.js.map +0 -1
  74. /package/dist/lib/core/{compiler → client}/types.js +0 -0
package/README.md CHANGED
@@ -12,12 +12,19 @@ It is designed with a strong focus on developer experience and provides end-to-e
12
12
  ## Features
13
13
 
14
14
  - ⚡ High-performance core built on native Node.js HTTP
15
- - 🚀 Optional uWebSockets.js support via adapter for ultra-low latency and maximum throughput
16
- - 🧠 End-to-end (E2E) type safety across request → response lifecycle
17
- - 🧪 Built-in testing support for E2E validation
15
+ - 🚀 Optional [uWebSockets.js](#adapter) adapter support for ultra-low latency and maximum throughput
16
+ - 🧠 End-to-end [E2E](#e2e) type safety across the entire request → response lifecycle
17
+ - 🎮 Built-in support for [Controllers](#controller) and route-based architecture
18
+ - 🏷️ Powerful Decorator system for routes, middleware, validation, and metadata
19
+ - 📦 [DTO](#dto) (Data Transfer Object) support for structured and type-safe request handling
20
+ - 📂 Built-in [File Upload](#file-upload) support via `useFileUpload()` with zero configuration required
21
+ - 🔌 Native [WebSocket](#web-socket) support for real-time applications and event-driven systems
22
+ - ⚛️ [GraphQL](#graphql) support with flexible schema integration and HTTP adapters
23
+ - 🖥️ Built-in [cluster mode](#cluster) support for multi-core scalability and higher throughput
24
+ - 🧪 Built-in testing utilities for [E2E](#e2e) validation
18
25
  - 🧩 Simple and intuitive developer experience
19
- - 🔌 Flexible architecture for plugins and extensions
20
- - 📘 Auto-generated Swagger documentation via `app.useSwagger()` (zero manual configuration required)
26
+ - 📘 Auto-generated [Swagger](#swagger) documentation via `app.useSwagger()` with zero manual configuration
27
+ - 🔥 Lightweight and optimized for high-performance APIs and microservices
21
28
 
22
29
  ---
23
30
 
@@ -36,7 +43,7 @@ See the [`docs`](https://thanathip41.github.io/tspace-spear) directory for full
36
43
 
37
44
  ## Basic Usage
38
45
  - [Getting Started](#getting-started)
39
- - [Cli](#cli)
46
+ - [Quick Started](#quick-started)
40
47
  - [Adapter](#adapter)
41
48
  - [Cluster](#cluster)
42
49
  - [Global Prefix](#global-prefix)
@@ -55,8 +62,8 @@ See the [`docs`](https://thanathip41.github.io/tspace-spear) directory for full
55
62
  - [Router](#router)
56
63
  - [Swagger](#swagger)
57
64
  - [WebSocket](#websocket)
65
+ - [Graphql](#graphql)
58
66
  - [E2E](#e2e)
59
- - [Example CRUD](#example-crud)
60
67
 
61
68
  ## Getting Started
62
69
  ```js
@@ -72,7 +79,7 @@ new Spear()
72
79
  .listen(8000 , () => console.log(`Server is now listening http://localhost:8000`))
73
80
  ```
74
81
 
75
- ## Cli
82
+ ## Quick Started
76
83
  Generate applications, modules, controllers, services, and middleware with the Spear CLI.
77
84
  ```sh
78
85
  # Install CLI globally
@@ -1083,6 +1090,244 @@ new Spear()
1083
1090
 
1084
1091
  ```
1085
1092
 
1093
+ ## Graphql
1094
+ GraphQL CRUD Example with graphql-http + tspace-spear
1095
+
1096
+ This example shows how to build a simple GraphQL CRUD API using graphql-http and tspace-spear.
1097
+
1098
+ It includes:
1099
+
1100
+ - GraphQL schema setup
1101
+ - Query and Mutation examples
1102
+ - Create / Read / Update / Delete operations
1103
+ - HTTP integration with graphql-http
1104
+ - cURL testing examples
1105
+
1106
+ The server uses an in-memory array as a fake database for simplicity.
1107
+
1108
+ Features
1109
+ - High performance HTTP server with tspace-spear
1110
+ - Native GraphQL schema definitions
1111
+ - Full CRUD operations
1112
+ - Simple and dependency-light setup
1113
+ - Works with standard GraphQL clients and tools
1114
+
1115
+ ```sh
1116
+ npm install graphql graphql-http
1117
+ ```
1118
+
1119
+ ```js
1120
+
1121
+ import {
1122
+ GraphQLSchema,
1123
+ GraphQLObjectType,
1124
+ GraphQLString,
1125
+ GraphQLList,
1126
+ GraphQLNonNull,
1127
+ GraphQLID,
1128
+ } from 'graphql';
1129
+
1130
+ import { createHandler } from 'graphql-http/lib/use/http';
1131
+ import { type T, Spear } from "tspace-spear";
1132
+
1133
+ /**
1134
+ * Fake database
1135
+ */
1136
+ const users : {
1137
+ id : string;
1138
+ name : string;
1139
+ email :string
1140
+ }[] = [];
1141
+
1142
+ /**
1143
+ * User Type
1144
+ */
1145
+ const UserType = new GraphQLObjectType({
1146
+ name: 'User',
1147
+
1148
+ fields: {
1149
+ id: { type: GraphQLID },
1150
+ name: { type: GraphQLString },
1151
+ email: { type: GraphQLString },
1152
+ },
1153
+ });
1154
+
1155
+ /**
1156
+ * Queries (READ)
1157
+ */
1158
+ const QueryType = new GraphQLObjectType({
1159
+ name: 'Query',
1160
+
1161
+ fields: {
1162
+ users: {
1163
+ type: new GraphQLList(UserType),
1164
+
1165
+ resolve: () => {
1166
+ return users;
1167
+ },
1168
+ },
1169
+
1170
+ user: {
1171
+ type: UserType,
1172
+
1173
+ args: {
1174
+ id: { type: new GraphQLNonNull(GraphQLID) },
1175
+ },
1176
+
1177
+ resolve: (_, args) => {
1178
+ return users.find((v) => v.id === args.id);
1179
+ },
1180
+ },
1181
+ },
1182
+ });
1183
+
1184
+ /**
1185
+ * Mutations (CREATE UPDATE DELETE)
1186
+ */
1187
+ const MutationType = new GraphQLObjectType({
1188
+ name: 'Mutation',
1189
+
1190
+ fields: {
1191
+ /**
1192
+ * CREATE
1193
+ */
1194
+ createUser: {
1195
+ type: UserType,
1196
+
1197
+ args: {
1198
+ name: { type: new GraphQLNonNull(GraphQLString) },
1199
+ email: { type: new GraphQLNonNull(GraphQLString) },
1200
+ },
1201
+
1202
+ resolve: (_, args) => {
1203
+ const user = {
1204
+ id: String(users.length + 1),
1205
+ name: args.name,
1206
+ email: args.email,
1207
+ };
1208
+
1209
+ users.push(user);
1210
+
1211
+ return user;
1212
+ },
1213
+ },
1214
+
1215
+ /**
1216
+ * UPDATE
1217
+ */
1218
+ updateUser: {
1219
+ type: UserType,
1220
+
1221
+ args: {
1222
+ id: { type: new GraphQLNonNull(GraphQLID) },
1223
+ name: { type: GraphQLString },
1224
+ email: { type: GraphQLString },
1225
+ },
1226
+
1227
+ resolve: (_, args) => {
1228
+ const user = users.find((v) => v.id === args.id);
1229
+
1230
+ if (!user) {
1231
+ throw new Error('User not found');
1232
+ }
1233
+
1234
+ if (args.name !== undefined) {
1235
+ user.name = args.name;
1236
+ }
1237
+
1238
+ if (args.email !== undefined) {
1239
+ user.email = args.email;
1240
+ }
1241
+
1242
+ return user;
1243
+ },
1244
+ },
1245
+
1246
+ /**
1247
+ * DELETE
1248
+ */
1249
+ deleteUser: {
1250
+ type: GraphQLString,
1251
+
1252
+ args: {
1253
+ id: { type: new GraphQLNonNull(GraphQLID) },
1254
+ },
1255
+
1256
+ resolve: (_, args) => {
1257
+ const index = users.findIndex((v) => v.id === args.id);
1258
+
1259
+ if (index === -1) {
1260
+ throw new Error('User not found');
1261
+ }
1262
+
1263
+ users.splice(index, 1);
1264
+
1265
+ return 'Deleted';
1266
+ },
1267
+ },
1268
+ },
1269
+ });
1270
+
1271
+ /**
1272
+ * Schema
1273
+ */
1274
+ const schema = new GraphQLSchema({
1275
+ query: QueryType,
1276
+ mutation: MutationType,
1277
+ });
1278
+
1279
+ /**
1280
+ * Handler
1281
+ */
1282
+ const graphqlHandler = createHandler({
1283
+ schema,
1284
+ });
1285
+
1286
+ const app = new Spear()
1287
+ .post('/graphql',({ req , res }) => graphqlHandler(req , res))
1288
+
1289
+ app.listen(4000 , ({ port , server }) => {
1290
+ console.log(`server listening on : http://localhost:${port}/graphql`)
1291
+ })
1292
+ ```
1293
+
1294
+ ```sh
1295
+ ## Create
1296
+ curl -X POST http://localhost:4000/graphql \
1297
+ -H "Content-Type: application/json" \
1298
+ -d '{
1299
+ "query": "mutation { createUser(name:\"John\", email:\"john@example.com\") { id name email } }"
1300
+ }'
1301
+
1302
+ ## Read all
1303
+ curl -X POST http://localhost:4000/graphql \
1304
+ -H "Content-Type: application/json" \
1305
+ -d '{
1306
+ "query": "query { users { id name email } }"
1307
+ }'
1308
+
1309
+ ## Read one
1310
+ curl -X POST http://localhost:4000/graphql \
1311
+ -H "Content-Type: application/json" \
1312
+ -d '{
1313
+ "query": "query { user(id:\"1\") { id name email } }"
1314
+ }'
1315
+
1316
+ ## Update
1317
+ curl -X POST http://localhost:4000/graphql \
1318
+ -H "Content-Type: application/json" \
1319
+ -d '{
1320
+ "query": "mutation { updateUser(id:\"1\", name:\"Johnny\") { id name email } }"
1321
+ }'
1322
+
1323
+ ## Delete
1324
+ curl -X POST http://localhost:4000/graphql \
1325
+ -H "Content-Type: application/json" \
1326
+ -d '{
1327
+ "query": "mutation { deleteUser(id:\"1\") }"
1328
+ }'
1329
+ ```
1330
+
1086
1331
  ## E2E
1087
1332
  Provides end-to-end type safety and testing support across the full request lifecycle, from request input to
1088
1333
  response output. It allows you to:
@@ -1264,66 +1509,3 @@ const res = await client.get("/cats");
1264
1509
 
1265
1510
  ```
1266
1511
 
1267
- ## Example CRUD
1268
- ```js
1269
- import { Spear } from "tspace-spear";
1270
-
1271
- const spears = [
1272
- {
1273
- id : 1,
1274
- damage : 100
1275
- },
1276
- {
1277
- id : 2,
1278
- damage : 75
1279
- },
1280
- {
1281
- id : 3,
1282
- damage : 50
1283
- }
1284
- ]
1285
-
1286
- new Spear()
1287
- // enable body payload
1288
- .useBodyParser()
1289
- .get('/' , () => spears)
1290
- .get('/:id' , ({ params }) => spears.find(spear => spear.id === Number(params.id ?? 0)))
1291
- .post('/' , ({ body }) => {
1292
- // please validation the your body
1293
- const damage = Number(body.damage ?? (Math.random() * 100).toFixed(0))
1294
-
1295
- const id = spears.reduce((max, spear) => spear.id > max ? spear.id : max, 0) + 1
1296
-
1297
- spears.push({ id , damage })
1298
-
1299
- return spears.find(spear => spear.id === id)
1300
- })
1301
- .patch('/:id' , ({ params , body , res }) => {
1302
-
1303
- const damage = Number(body.damage ?? (Math.random() * 100).toFixed(0))
1304
-
1305
- const id = Number(params.id)
1306
-
1307
- const spear = spears.find(spear => spear.id === id)
1308
-
1309
- if (spear == null) return res.status(404).json({ message : 'Spear not found'})
1310
-
1311
- spear.damage = damage;
1312
-
1313
- return spears.find(spear => spear.id === id)
1314
- })
1315
- .delete('/:id', ({ params , res }) => {
1316
-
1317
- const id = Number(params.id)
1318
-
1319
- const spear = spears.find(spear => spear.id === id)
1320
-
1321
- if (spear == null) return res.status(404).json({ message : 'Spear not found'})
1322
-
1323
- spears.splice(spears.findIndex(spear => spear.id === Number(params.id ?? 0)), 1)
1324
-
1325
- return res.status(204).json()
1326
- })
1327
- .listen(8000 , () => console.log(`Server is now listening http://localhost:8000`))
1328
-
1329
- ```
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/generators/app/index.ts"],"names":[],"mappings":";;;;;AAsBA,8BAsJC;AA5KD,4CAAoB;AACpB,gDAAwB;AACxB,iDAAsD;AACtD,yCAAyC;AACzC,iDAAoD;AACpD,qDAA4D;AAC5D,qDAA4D;AAC5D,kDAAsD;AACtD,8CAA8C;AAG9C,MAAM,CAAC,GAAG;IACR,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,IAAI,SAAS;IAC/C,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,IAAI,SAAS;IAC9C,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,IAAI,SAAS;IACjD,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,IAAI,SAAS;IAChD,SAAS,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,IAAI,SAAS;IACpD,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,IAAI,SAAS;IAChD,KAAK,EAAE,SAAS;CACjB,CAAC;AAGK,KAAK,UAAU,SAAS,CAAC,SAAkB;IAChD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IAEpD,YAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CACzB,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAC/B,IAAI,CAAC,SAAS,CACZ;QACE,IAAI,EAAE,cAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACzB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE;YACP,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,oBAAoB;YAC3B,GAAG,EAAE,sBAAsB;SAC5B;QACD,YAAY,EAAE;YACZ,cAAc,EAAE,QAAQ;YACxB,mBAAmB,EAAE,OAAO;YAC5B,iBAAiB,EAAE,QAAQ;SAC5B;QACD,eAAe,EAAE;YACf,YAAY,EAAE,OAAO;YACrB,SAAS,EAAE,QAAQ;YACnB,aAAa,EAAE,WAAW;SAC3B;KACF,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IAEF,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CACzB,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,EAChC,IAAI,CAAC,SAAS,CACZ;QACE,eAAe,EAAE;YACf,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,CAAC,QAAQ,EAAC,KAAK,CAAC;YACvB,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAI;YACd,iBAAiB,EAAE,IAAI;YACvB,cAAc,EAAE,IAAI;YACpB,kCAAkC,EAAE,IAAI;YACxC,uBAAuB,EAAE,IAAI;YAC7B,wBAAwB,EAAE,IAAI;SAC/B;KACF,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IAEF,MAAM,GAAG,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEnC,MAAM,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAElD,MAAM,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtF,MAAM,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhF,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,sBAAW,CAAC,CAAC;IACrE,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,yBAAc,CAAC,CAAC;IAEzE,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CACzB,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,mBAAmB,CAAC,EAC5D,6BAAkB,CACnB,CAAC;IAEF,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CACzB,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,CAAC,EACtD,6BAAkB,CACnB,CAAC;IAEF,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CACzB,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,CAAC,EACnD,0BAAe,CAChB,CAAC;IAEF,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CACzB,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAC/C,sBAAW,CACZ,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAE9C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAClE,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC;QAC5E,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,IAAA,oBAAI,EAAC,aAAa,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE;YAC3C,IAAI,KAAK;gBAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;YAChC,OAAO,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAEzD,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACxD,IAAI,qBAAqB,GAAG,CAAC,CAAC;IAE9B,IAAI,YAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,YAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACtF,qBAAqB,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC1C,CAAC;IAED,aAAa,CAAC,OAAO,CAAC,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAEjC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,cAAc,GAAG,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAEjE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAE9B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAEpF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,qBAAqB,qBAAqB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5G,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,cAAc,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAE5D,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IACzB,OAAO,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC;IACpG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,oCAAoC,CAAC,IAAI,CAAC,CAAC;IAElE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,UAAU,SAAS,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/generators/app/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export declare const ControllerTemplate = "\nimport {\n type T,\n Controller,\n Middleware,\n Get,\n Post,\n Put,\n Delete,\n ValidateDto\n} from \"tspace-spear\";\nimport { CatService } from \"./cat.service\";\nimport { CreateCatDto , UpdateCatDto } from \"./cat.dto\";\nimport { LogMiddleware } from \"../../common/middlewares/log.middleware\";\n\n@Controller(\"/cats\")\nclass CatController {\n\n constructor(\n private catService: CatService = new CatService()\n ) {}\n\n @Get(\"/\")\n @Middleware(LogMiddleware)\n async index() {\n return this.catService.index();\n }\n\n @Get(\"/:id\")\n @Middleware(LogMiddleware)\n async show({\n params\n }: T.Context<{\n params: {\n id: number;\n };\n }>) {\n\n return this.catService.show(params.id);\n }\n\n @Post(\"/\")\n @ValidateDto(CreateCatDto)\n @Middleware(LogMiddleware)\n async create({\n body\n }: T.Context<{\n body: CreateCatDto;\n }>) {\n\n return this.catService\n .create({ \n name: body.name, \n age: body.age \n });\n }\n\n @Put(\"/:id\")\n @ValidateDto(UpdateCatDto)\n @Middleware(LogMiddleware)\n async update({\n params,\n body\n }: T.Context<{\n params: {\n id: number;\n };\n body: UpdateCatDto;\n }>) {\n\n return this.catService\n .update(params.id, { \n name: body.name, \n age: body.age \n });\n }\n\n @Delete(\"/:id\")\n @Middleware(LogMiddleware)\n async remove({\n params\n }: T.Context<{\n params: {\n id: number;\n };\n }>) {\n\n return this.catService\n .remove(params.id);\n }\n}\n\nexport { CatController };\nexport default CatController;\n";
1
+ export declare const ControllerTemplate = "\nimport {\n type T,\n Controller,\n Middleware,\n Get,\n Post,\n Put,\n Delete,\n ValidateDto\n} from \"tspace-spear\";\nimport { CatService } from \"./cat.service\";\nimport { CreateCatDto , UpdateCatDto } from \"./cat.dto\";\nimport { LogMiddleware } from \"../../common/middlewares/log.middleware\";\n\n@Controller(\"/cats\")\nclass CatController {\n\n constructor(\n private catService: CatService = new CatService()\n ) {}\n\n @Get(\"/\")\n @Middleware(LogMiddleware)\n async index() {\n const cats = this.catService.index();\n return { cats };\n }\n\n @Get(\"/:id\")\n @Middleware(LogMiddleware)\n async show({\n params\n }: T.Context<{\n params: {\n id: number;\n };\n }>) {\n const cat = this.catService.show(+params.id);\n return { cat }\n }\n\n @Post(\"/\")\n @ValidateDto(CreateCatDto)\n @Middleware(LogMiddleware)\n async create({\n body\n }: T.Context<{\n body: CreateCatDto;\n }>) {\n\n const cat = this.catService\n .create({ \n name: body.name, \n age: body.age \n });\n\n return { cat };\n }\n\n @Put(\"/:id\")\n @ValidateDto(UpdateCatDto)\n @Middleware(LogMiddleware)\n async update({\n params,\n body\n }: T.Context<{\n params: {\n id: number;\n };\n body: UpdateCatDto;\n }>) {\n\n const cat = this.catService\n .update(+params.id, { \n name: body.name, \n age: body.age \n });\n\n return { cat }\n }\n\n @Delete(\"/:id\")\n @Middleware(LogMiddleware)\n async remove({\n params\n }: T.Context<{\n params: {\n id: number;\n };\n }>) {\n\n const deleted = this.catService\n .remove(+params.id);\n\n return deleted;\n }\n}\n\nexport { CatController };\nexport default CatController;\n";
@@ -26,7 +26,8 @@ class CatController {
26
26
  @Get("/")
27
27
  @Middleware(LogMiddleware)
28
28
  async index() {
29
- return this.catService.index();
29
+ const cats = this.catService.index();
30
+ return { cats };
30
31
  }
31
32
 
32
33
  @Get("/:id")
@@ -38,8 +39,8 @@ class CatController {
38
39
  id: number;
39
40
  };
40
41
  }>) {
41
-
42
- return this.catService.show(params.id);
42
+ const cat = this.catService.show(+params.id);
43
+ return { cat }
43
44
  }
44
45
 
45
46
  @Post("/")
@@ -51,11 +52,13 @@ class CatController {
51
52
  body: CreateCatDto;
52
53
  }>) {
53
54
 
54
- return this.catService
55
+ const cat = this.catService
55
56
  .create({
56
57
  name: body.name,
57
58
  age: body.age
58
59
  });
60
+
61
+ return { cat };
59
62
  }
60
63
 
61
64
  @Put("/:id")
@@ -71,11 +74,13 @@ class CatController {
71
74
  body: UpdateCatDto;
72
75
  }>) {
73
76
 
74
- return this.catService
75
- .update(params.id, {
77
+ const cat = this.catService
78
+ .update(+params.id, {
76
79
  name: body.name,
77
80
  age: body.age
78
81
  });
82
+
83
+ return { cat }
79
84
  }
80
85
 
81
86
  @Delete("/:id")
@@ -88,8 +93,10 @@ class CatController {
88
93
  };
89
94
  }>) {
90
95
 
91
- return this.catService
92
- .remove(params.id);
96
+ const deleted = this.catService
97
+ .remove(+params.id);
98
+
99
+ return deleted;
93
100
  }
94
101
  }
95
102
 
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/cli/generators/controller/template.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8FjC,CAAC"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/cli/generators/controller/template.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqGjC,CAAC"}
@@ -23,6 +23,7 @@ import {
23
23
  Min,
24
24
  IsNotEmpty,
25
25
  IsNumber,
26
+ IsOptional
26
27
  } from "class-validator";
27
28
 
28
29
  export class Create${className} {
@@ -36,13 +37,14 @@ export class Create${className} {
36
37
  }
37
38
 
38
39
  export class Update${className} {
40
+ @IsOptional()
39
41
  @IsString()
40
- @IsNotEmpty()
41
- name!: string;
42
+ name?: string;
42
43
 
44
+ @IsOptional()
43
45
  @IsNumber()
44
46
  @Min(0.1)
45
- age!: number;
47
+ age?: number;
46
48
  }
47
49
  `);
48
50
  console.log(`
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/generators/dto/index.ts"],"names":[],"mappings":";;;;;AAQA,8BAsDC;AA9DD,4CAAoB;AACpB,gDAAwB;AACxB,sCAImB;AAEnB,SAAgB,SAAS,CAAC,IAAa,EAAC,IAAa;IACjD,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAEH,MAAM,YAAY,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAG,SAAS,EAAE,IAAA,iBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC;IAEnF,MAAM,QAAQ,GAAG,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,SAAS,CAAC;IAE9C,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAEjD,YAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,MAAM,SAAS,GAAG,IAAA,mBAAU,EAAC,IAAA,mBAAU,EAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;IAEvD,YAAE,CAAC,aAAa,CACd,MAAM,EACN;;;;;;;;qBAQiB,SAAS;;;;;;;;;;qBAUT,SAAS;;;;;;;;;CAS7B,CACE,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC;WACF,MAAM;;gCAEe,IAAI;;CAEnC,CAAC,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/generators/dto/index.ts"],"names":[],"mappings":";;;;;AAQA,8BAwDC;AAhED,4CAAoB;AACpB,gDAAwB;AACxB,sCAImB;AAEnB,SAAgB,SAAS,CAAC,IAAa,EAAC,IAAa;IACjD,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAEH,MAAM,YAAY,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAG,SAAS,EAAE,IAAA,iBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC;IAEnF,MAAM,QAAQ,GAAG,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,SAAS,CAAC;IAE9C,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAEjD,YAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,MAAM,SAAS,GAAG,IAAA,mBAAU,EAAC,IAAA,mBAAU,EAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;IAEvD,YAAE,CAAC,aAAa,CACd,MAAM,EACN;;;;;;;;;qBASiB,SAAS;;;;;;;;;;qBAUT,SAAS;;;;;;;;;;CAU7B,CACE,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC;WACF,MAAM;;gCAEe,IAAI;;CAEnC,CAAC,CAAA;AACF,CAAC"}
@@ -54,7 +54,7 @@ class ${controllerName} {
54
54
  async show({
55
55
  params
56
56
  }: T.Context<{ params: { id: number } }>) {
57
- return this.${(0, shared_1.toSingular)(name)}Service.show(params.id);
57
+ return this.${(0, shared_1.toSingular)(name)}Service.show(+params.id);
58
58
  }
59
59
 
60
60
  @Post("/")
@@ -81,7 +81,7 @@ class ${controllerName} {
81
81
  }>) {
82
82
 
83
83
  return this.${(0, shared_1.toSingular)(name)}Service
84
- .update(params.id, {
84
+ .update(+params.id, {
85
85
  name: body.name,
86
86
  age: body.age
87
87
  });
@@ -92,7 +92,7 @@ class ${controllerName} {
92
92
  params
93
93
  }: T.Context<{ params: { id: number } }>) {
94
94
  return this.${(0, shared_1.toSingular)(name)}Service
95
- .remove(params.id);
95
+ .remove(+params.id);
96
96
  }
97
97
  }
98
98
 
@@ -1 +1 @@
1
- export declare const ServiceTemplate = "\ntype Cat = {\n id: number;\n name: string;\n age: number;\n}\n\nexport class CatService {\n private cats: Cat[] = [\n { id: 1, name: 'cat1', age: 1.6 },\n { id: 2, name: 'cat2', age: 1.8 },\n ];\n public async index() {\n return this.cats;\n };\n\n public async show(id: number) {\n return this.cats.find(cat => cat.id === id);\n };\n\n public async create({ name, age }: Omit<Cat, \"id\">) {\n\n const cat: Cat = {\n id: this.cats.length + 1,\n name: name,\n age: age\n };\n\n this.cats.push(cat);\n\n return {\n message: \"Created\",\n cat\n };\n }\n \n public async update(id: number, { name, age }: Omit<Cat, \"id\">) {\n const index = this.cats.findIndex(d => d.id === id);\n\n if (index === -1) {\n throw new Error(\"Cat not found\");\n }\n\n this.cats[index] = {\n ...this.cats[index],\n ...{ name, age } \n };\n\n return {\n message: \"Updated\",\n cat: this.cats[index]\n };\n }\n\n public async remove(id: number) {\n const index = this.cats.findIndex(d => d.id === id);\n\n if (index === -1) {\n throw new Error(\"Cat not found\");\n }\n\n const [removedCat] = this.cats.splice(index, 1);\n\n return {\n message: \"Deleted\",\n cat: removedCat\n };\n }\n}\n";
1
+ export declare const ServiceTemplate = "\nimport { \n CreateCatDto, \n UpdateCatDto \n} from \"./cat.dto\";\n\ntype Cat = {\n id: number;\n name: string;\n age: number;\n}\n\nexport class CatService {\n private cats: Cat[] = [\n { id: 1, name: 'cat1', age: 1.6 },\n { id: 2, name: 'cat2', age: 1.8 },\n ];\n public async index() {\n return this.cats;\n };\n\n public async show(id: number) {\n const cat = this.cats.find(cat => cat.id === id);\n if(cat == null) return null;\n return cat;\n };\n\n public async create({ name, age }: CreateCatDto) {\n\n const cat = {\n id: this.cats.length + 1,\n name: name,\n age: age\n };\n\n this.cats.push(cat);\n\n return cat;\n }\n \n public async update(id: number, { name, age }: UpdateCatDto) {\n const index = this.cats.findIndex(d => d.id === id);\n\n if (index === -1) {\n throw new Error(\"Cat not found\");\n }\n\n this.cats[index] = {\n ...this.cats[index],\n ...{ name, age } \n };\n\n const cat = this.cats[index];\n\n return cat;\n }\n\n public async remove(id: number) {\n const index = this.cats.findIndex(d => d.id === id);\n\n if (index === -1) {\n throw new Error(\"Cat not found\");\n }\n\n this.cats.splice(index, 1);\n\n return true;\n }\n}\n";
@@ -2,6 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ServiceTemplate = void 0;
4
4
  exports.ServiceTemplate = `
5
+ import {
6
+ CreateCatDto,
7
+ UpdateCatDto
8
+ } from "./cat.dto";
9
+
5
10
  type Cat = {
6
11
  id: number;
7
12
  name: string;
@@ -18,12 +23,14 @@ export class CatService {
18
23
  };
19
24
 
20
25
  public async show(id: number) {
21
- return this.cats.find(cat => cat.id === id);
26
+ const cat = this.cats.find(cat => cat.id === id);
27
+ if(cat == null) return null;
28
+ return cat;
22
29
  };
23
30
 
24
- public async create({ name, age }: Omit<Cat, "id">) {
31
+ public async create({ name, age }: CreateCatDto) {
25
32
 
26
- const cat: Cat = {
33
+ const cat = {
27
34
  id: this.cats.length + 1,
28
35
  name: name,
29
36
  age: age
@@ -31,13 +38,10 @@ export class CatService {
31
38
 
32
39
  this.cats.push(cat);
33
40
 
34
- return {
35
- message: "Created",
36
- cat
37
- };
41
+ return cat;
38
42
  }
39
43
 
40
- public async update(id: number, { name, age }: Omit<Cat, "id">) {
44
+ public async update(id: number, { name, age }: UpdateCatDto) {
41
45
  const index = this.cats.findIndex(d => d.id === id);
42
46
 
43
47
  if (index === -1) {
@@ -49,10 +53,9 @@ export class CatService {
49
53
  ...{ name, age }
50
54
  };
51
55
 
52
- return {
53
- message: "Updated",
54
- cat: this.cats[index]
55
- };
56
+ const cat = this.cats[index];
57
+
58
+ return cat;
56
59
  }
57
60
 
58
61
  public async remove(id: number) {
@@ -62,12 +65,9 @@ export class CatService {
62
65
  throw new Error("Cat not found");
63
66
  }
64
67
 
65
- const [removedCat] = this.cats.splice(index, 1);
68
+ this.cats.splice(index, 1);
66
69
 
67
- return {
68
- message: "Deleted",
69
- cat: removedCat
70
- };
70
+ return true;
71
71
  }
72
72
  }
73
73
  `;
package/dist/cli/index.js CHANGED
@@ -47,6 +47,7 @@ if (command === "g") {
47
47
  }
48
48
  process.exit(0);
49
49
  }
50
+ printUsage();
50
51
  function printUsage() {
51
52
  console.log(`
52
53
  Usage:
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;AAEA,0CAA6C;AAC7C,gDAAmD;AACnD,wDAA2D;AAC3D,kDAAqD;AACrD,wDAA2D;AAC3D,0CAA6C;AAE7C,MAAM,CAAC,EAAE,AAAD,EAAG,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAE/C;;;;;;GAMG;AAEH,IAAI,OAAO,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;IAC3C,IAAA,eAAS,EAAC,IAAI,CAAC;SACd,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC1B,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9B,CAAC;AAED,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;IACpB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC;IAEnB,QAAQ,IAAI,EAAE,CAAC;QAEb,KAAK,QAAQ;YACX,IAAA,qBAAY,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC;YACxB,MAAM;QAER,KAAK,YAAY;YACf,IAAA,6BAAgB,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC;YAC5B,MAAM;QAER,KAAK,SAAS;YACZ,IAAA,uBAAa,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC;YACzB,MAAM;QAER,KAAK,KAAK;YACR,IAAA,eAAS,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC;YACrB,MAAM;QAER,KAAK,YAAY;YACf,IAAA,6BAAgB,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC;YAC5B,MAAM;QAER;YACE,UAAU,EAAE,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;CAYb,CAAC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;AAEA,0CAA6C;AAC7C,gDAAmD;AACnD,wDAA2D;AAC3D,kDAAqD;AACrD,wDAA2D;AAC3D,0CAA6C;AAE7C,MAAM,CAAC,EAAE,AAAD,EAAG,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAE/C;;;;;;GAMG;AAEH,IAAI,OAAO,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;IAC3C,IAAA,eAAS,EAAC,IAAI,CAAC;SACd,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC1B,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9B,CAAC;AAED,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;IACpB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC;IAEnB,QAAQ,IAAI,EAAE,CAAC;QAEb,KAAK,QAAQ;YACX,IAAA,qBAAY,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC;YACxB,MAAM;QAER,KAAK,YAAY;YACf,IAAA,6BAAgB,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC;YAC5B,MAAM;QAER,KAAK,SAAS;YACZ,IAAA,uBAAa,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC;YACzB,MAAM;QAER,KAAK,KAAK;YACR,IAAA,eAAS,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC;YACrB,MAAM;QAER,KAAK,YAAY;YACf,IAAA,6BAAgB,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC;YAC5B,MAAM;QAER;YACE,UAAU,EAAE,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,UAAU,EAAE,CAAC;AAEb,SAAS,UAAU;IACjB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;CAYb,CAAC,CAAC;AACH,CAAC"}