codeweaver 4.0.0 → 4.0.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeweaver",
3
- "version": "4.0.0",
3
+ "version": "4.0.1",
4
4
  "main": "src/main.ts",
5
5
  "bin": {
6
6
  "codeweaver": "command.js"
@@ -53,7 +53,7 @@ export function Memoize<Entity, MethodArgs extends any[] = any[]>(
53
53
  */
54
54
  export function Invalidate<Entity>(
55
55
  cache: AsyncCache<Entity>,
56
- shouldClearAll: boolean = true
56
+ shouldClearAll: boolean = false
57
57
  ) {
58
58
  return createMethodDecorator<
59
59
  [AsyncCache<Entity>, boolean | true],
@@ -20,7 +20,7 @@ async function invalidInputHandler(e: ResponseError) {
20
20
  throw new ResponseError(message, 400, e.message);
21
21
  }
22
22
 
23
- const ordersCache = new MapAsyncCache<OrderDto[]>(config.cacheSize);
23
+ const ordersCache = new MapAsyncCache<OrderDto[]>(1);
24
24
  const orderCache = new MapAsyncCache<OrderDto>(config.cacheSize);
25
25
 
26
26
  @Injectable()
@@ -63,7 +63,7 @@ export default class OrderController {
63
63
  return convert(newOrder, ZodOrder);
64
64
  }
65
65
 
66
- @Invalidate(ordersCache)
66
+ @Invalidate(ordersCache, true)
67
67
  @RateLimit(
68
68
  config.rateLimitTimeSpan,
69
69
  config.rateLimitAllowedCalls,
@@ -80,7 +80,7 @@ export default class OrderController {
80
80
  orders.push(order);
81
81
  }
82
82
 
83
- @Memoize(orderCache)
83
+ @Memoize(ordersCache, () => "key")
84
84
  @Timeout(config.timeout)
85
85
  @RateLimit(
86
86
  config.rateLimitTimeSpan,
@@ -91,10 +91,13 @@ export default class OrderController {
91
91
  * Retrieves all orders
92
92
  * @returns List of orders
93
93
  */
94
- public async getAll(): Promise<OrderDto[]> {
95
- return await parallelMap(
96
- orders,
97
- async (order) => await convert(order, ZodOrderDto)
94
+ public async getAll(
95
+ timeoutSignal?: AbortSignal
96
+ ): Promise<(OrderDto | null)[]> {
97
+ return await parallelMap(orders, async (order) =>
98
+ timeoutSignal?.aborted == false
99
+ ? await convert<Order, OrderDto>(order, ZodOrderDto)
100
+ : null
98
101
  );
99
102
  }
100
103
 
@@ -117,8 +120,8 @@ export default class OrderController {
117
120
  return await convert(order, ZodOrder);
118
121
  }
119
122
 
120
- @Invalidate(orderCache, false)
121
- @Invalidate(ordersCache)
123
+ @Invalidate(orderCache)
124
+ @Invalidate(ordersCache, true)
122
125
  @RateLimit(
123
126
  config.rateLimitTimeSpan,
124
127
  config.rateLimitAllowedCalls,
@@ -143,8 +146,8 @@ export default class OrderController {
143
146
  order.deliveredAt = new Date();
144
147
  }
145
148
 
146
- @Invalidate(orderCache, false)
147
- @Invalidate(ordersCache)
149
+ @Invalidate(orderCache)
150
+ @Invalidate(ordersCache, true)
148
151
  @RateLimit(
149
152
  config.rateLimitTimeSpan,
150
153
  config.rateLimitAllowedCalls,
@@ -21,7 +21,7 @@ async function invalidInputHandler(e: ResponseError) {
21
21
  throw new ResponseError(message, 400, e.message);
22
22
  }
23
23
 
24
- const productsCache = new MapAsyncCache<ProductDto[]>(config.cacheSize);
24
+ const productsCache = new MapAsyncCache<ProductDto[]>(1);
25
25
  const productCache = new MapAsyncCache<ProductDto>(config.cacheSize);
26
26
 
27
27
  @Injectable()
@@ -70,7 +70,7 @@ export default class ProductController {
70
70
  return await convert(product, ZodProduct);
71
71
  }
72
72
 
73
- @Invalidate(productsCache)
73
+ @Invalidate(productsCache, true)
74
74
  @RateLimit(config.rateLimitTimeSpan, config.rateLimitAllowedCalls)
75
75
  /**
76
76
  * Creates a new product with validated data
@@ -83,17 +83,20 @@ export default class ProductController {
83
83
  products.push(product);
84
84
  }
85
85
 
86
- @Memoize(productsCache)
86
+ @Memoize(productsCache, () => "key")
87
87
  @Timeout(config.timeout)
88
88
  @RateLimit(config.rateLimitTimeSpan, config.rateLimitAllowedCalls)
89
89
  /**
90
90
  * Retrieves all products with truncated descriptions
91
91
  * @returns List of products with summarized descriptions
92
92
  */
93
- public async getAll(): Promise<ProductDto[]> {
94
- return await parallelMap(
95
- products,
96
- async (product) => await convert(product, ZodProductDto)
93
+ public async getAll(
94
+ timeoutSignal?: AbortSignal
95
+ ): Promise<(ProductDto | null)[]> {
96
+ return await parallelMap(products, async (product) =>
97
+ timeoutSignal?.aborted == false
98
+ ? await convert<Product, ProductDto>(product, ZodProductDto)
99
+ : null
97
100
  );
98
101
  }
99
102
 
@@ -112,8 +115,8 @@ export default class ProductController {
112
115
  return await convert(product, ZodProduct);
113
116
  }
114
117
 
115
- @Invalidate(productCache, false)
116
- @Invalidate(productsCache)
118
+ @Invalidate(productCache)
119
+ @Invalidate(productsCache, true)
117
120
  @RateLimit(config.rateLimitTimeSpan, config.rateLimitAllowedCalls)
118
121
  /**
119
122
  * Updates an existing product
@@ -135,8 +138,8 @@ export default class ProductController {
135
138
  }
136
139
  }
137
140
 
138
- @Invalidate(productCache, false)
139
- @Invalidate(productsCache)
141
+ @Invalidate(productCache)
142
+ @Invalidate(productsCache, true)
140
143
  @RateLimit(config.rateLimitTimeSpan, config.rateLimitAllowedCalls)
141
144
  /**
142
145
  * Deletes a product by ID
@@ -15,7 +15,8 @@ async function invalidInputHandler(e: ResponseError) {
15
15
  throw new ResponseError(message, 400, e?.message);
16
16
  }
17
17
 
18
- const usersCache = new MapAsyncCache<UserDto[]>(config.cacheSize);
18
+ const userCache = new MapAsyncCache<UserDto>(config.cacheSize);
19
+ const usersCache = new MapAsyncCache<UserDto[]>(1);
19
20
 
20
21
  @Injectable()
21
22
  /**
@@ -48,7 +49,7 @@ export default class UserController {
48
49
  return await convert(user, ZodUser);
49
50
  }
50
51
 
51
- @Invalidate(usersCache)
52
+ @Invalidate(usersCache, true)
52
53
  @RateLimit(config.rateLimitTimeSpan, config.rateLimitAllowedCalls)
53
54
  /**
54
55
  * Create a new user
@@ -61,7 +62,7 @@ export default class UserController {
61
62
  users.push(user);
62
63
  }
63
64
 
64
- @Memoize(usersCache)
65
+ @Memoize(usersCache, () => "key")
65
66
  @Timeout(config.timeout)
66
67
  @RateLimit(config.rateLimitTimeSpan, config.rateLimitAllowedCalls)
67
68
  /**
@@ -69,15 +70,17 @@ export default class UserController {
69
70
  * @returns {Promise<UserDto[]>} List of users with hidden password fields
70
71
  * @throws {ResponseError} 500 - When rate limit exceeded
71
72
  */
72
- public async getAll(signal?: AbortSignal): Promise<(UserDto | null)[]> {
73
+ public async getAll(
74
+ timeoutSignal?: AbortSignal
75
+ ): Promise<(UserDto | null)[]> {
73
76
  return await parallelMap(users, async (user) =>
74
- signal?.aborted == false
77
+ timeoutSignal?.aborted == false
75
78
  ? await convert<User, UserDto>(user!, ZodUserDto)
76
79
  : null
77
80
  );
78
81
  }
79
82
 
80
- @Memoize(usersCache)
83
+ @Memoize(userCache)
81
84
  @RateLimit(config.rateLimitTimeSpan, config.rateLimitAllowedCalls)
82
85
  /**
83
86
  * Get user by ID