@shohaghinfo/aerojs 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +181 -7
  2. package/dist/cli/runner.d.ts.map +1 -1
  3. package/dist/cli/runner.js +16 -2
  4. package/dist/cli/runner.js.map +1 -1
  5. package/dist/http/http.d.ts +44 -0
  6. package/dist/http/http.d.ts.map +1 -0
  7. package/dist/http/http.js +132 -0
  8. package/dist/http/http.js.map +1 -0
  9. package/dist/http/index.d.ts +8 -0
  10. package/dist/http/index.d.ts.map +1 -0
  11. package/dist/http/index.js +8 -0
  12. package/dist/http/index.js.map +1 -0
  13. package/dist/http/request-builder.d.ts +48 -0
  14. package/dist/http/request-builder.d.ts.map +1 -0
  15. package/dist/http/request-builder.js +186 -0
  16. package/dist/http/request-builder.js.map +1 -0
  17. package/dist/http/response.d.ts +34 -0
  18. package/dist/http/response.d.ts.map +1 -0
  19. package/dist/http/response.js +77 -0
  20. package/dist/http/response.js.map +1 -0
  21. package/dist/index.d.ts +3 -2
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +3 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/mail/drivers/smtp-mail-driver.d.ts +39 -0
  26. package/dist/mail/drivers/smtp-mail-driver.d.ts.map +1 -0
  27. package/dist/mail/drivers/smtp-mail-driver.js +318 -0
  28. package/dist/mail/drivers/smtp-mail-driver.js.map +1 -0
  29. package/dist/mail/index.d.ts +1 -0
  30. package/dist/mail/index.d.ts.map +1 -1
  31. package/dist/mail/index.js +1 -0
  32. package/dist/mail/index.js.map +1 -1
  33. package/dist/mail/mailer.d.ts +20 -3
  34. package/dist/mail/mailer.d.ts.map +1 -1
  35. package/dist/mail/mailer.js +28 -1
  36. package/dist/mail/mailer.js.map +1 -1
  37. package/dist/queue/drivers/redis-queue-driver.d.ts +20 -0
  38. package/dist/queue/drivers/redis-queue-driver.d.ts.map +1 -1
  39. package/dist/queue/drivers/redis-queue-driver.js +92 -33
  40. package/dist/queue/drivers/redis-queue-driver.js.map +1 -1
  41. package/dist/queue/queue-manager.d.ts +4 -1
  42. package/dist/queue/queue-manager.d.ts.map +1 -1
  43. package/dist/queue/queue-manager.js +8 -1
  44. package/dist/queue/queue-manager.js.map +1 -1
  45. package/dist/security/index.d.ts +1 -1
  46. package/dist/security/index.d.ts.map +1 -1
  47. package/dist/security/index.js +1 -1
  48. package/dist/security/index.js.map +1 -1
  49. package/dist/security/rate-limiter.d.ts +20 -0
  50. package/dist/security/rate-limiter.d.ts.map +1 -1
  51. package/dist/security/rate-limiter.js +85 -0
  52. package/dist/security/rate-limiter.js.map +1 -1
  53. package/package.json +6 -2
@@ -1,3 +1,9 @@
1
+ /**
2
+ * @file redis-queue-driver.ts
3
+ * @description Production-grade Redis Queue Driver for AeroJS.
4
+ * Supports FIFO queueing (LPUSH/RPOP), delayed dispatch (ZADD/ZRANGEBYSCORE),
5
+ * job reservation tracking (HSET), release with backoff retry, and DLQ (Dead Letter Queue).
6
+ */
1
7
  import { RedisClient } from '../../redis/redis-client.js';
2
8
  import * as crypto from 'node:crypto';
3
9
  export class RedisQueueDriver {
@@ -11,6 +17,12 @@ export class RedisQueueDriver {
11
17
  delayedKey(queue) {
12
18
  return `queue:${queue}:delayed`;
13
19
  }
20
+ reservedKey(queue) {
21
+ return `queue:${queue}:reserved`;
22
+ }
23
+ failedKey(queue) {
24
+ return `queue:${queue}:failed`;
25
+ }
14
26
  async push(payload, options) {
15
27
  const queue = options?.queue || 'default';
16
28
  const delay = options?.delay || 0;
@@ -22,14 +34,16 @@ export class RedisQueueDriver {
22
34
  attempts: 0,
23
35
  reservedAt: null,
24
36
  availableAt: new Date(Date.now() + delay * 1000),
25
- createdAt: new Date()
37
+ createdAt: new Date(),
26
38
  };
27
39
  const serialized = JSON.stringify(jobRecord);
28
40
  if (delay > 0) {
29
- // In a full implementation we'd use ZADD for delayed jobs.
30
- // Since our simple client might not have ZADD exposed yet, we'll expose a raw command wrapper or add zadd
31
- // Let's use the raw command wrapper directly:
32
- await this.client.getRawConnection().sendCommand(['ZADD', this.delayedKey(queue), jobRecord.availableAt.getTime(), serialized]);
41
+ await this.client.getRawConnection().sendCommand([
42
+ 'ZADD',
43
+ this.delayedKey(queue),
44
+ jobRecord.availableAt.getTime(),
45
+ serialized,
46
+ ]);
33
47
  }
34
48
  else {
35
49
  await this.client.lpush(this.queueKey(queue), serialized);
@@ -37,56 +51,101 @@ export class RedisQueueDriver {
37
51
  return id;
38
52
  }
39
53
  async pop(queue = 'default') {
40
- // First, migrate delayed jobs that are ready
54
+ // 1. Migrate delayed jobs that are ready to run
41
55
  await this.migrateDelayedJobs(queue);
56
+ // 2. Pop next available job
42
57
  const data = await this.client.rpop(this.queueKey(queue));
43
58
  if (!data)
44
59
  return null;
45
60
  const job = JSON.parse(data);
46
61
  job.attempts += 1;
47
62
  job.reservedAt = new Date();
63
+ // 3. Track in reserved hash while worker is processing
64
+ await this.client.hset(this.reservedKey(queue), String(job.id), JSON.stringify(job));
48
65
  return job;
49
66
  }
50
67
  async delete(id, queue = 'default') {
51
- // Since jobs are removed from the list when popped, delete is effectively a no-op
52
- // unless we were keeping them in a processing set.
53
- return true;
68
+ const deleted = await this.client.hdel(this.reservedKey(queue), String(id));
69
+ return deleted > 0;
54
70
  }
55
71
  async release(id, delaySeconds = 0, queue = 'default') {
56
- // We don't have the job payload here directly in this API signature if we just use id.
57
- // In a full implementation, the QueueManager passes the whole job or payload, but QueueDriver release only takes ID.
58
- // This implies we need to store job state, or perhaps we just return false if we can't implement it perfectly without a payload.
59
- // Assuming we can't easily release without the payload unless we fetch it, but it was already popped.
60
- // This is a common flaw in simple interfaces. We will return false for now or throw.
61
- return false;
72
+ const raw = await this.client.hget(this.reservedKey(queue), String(id));
73
+ if (!raw)
74
+ return false;
75
+ // Remove from reserved
76
+ await this.client.hdel(this.reservedKey(queue), String(id));
77
+ const job = JSON.parse(raw);
78
+ job.reservedAt = null;
79
+ job.availableAt = new Date(Date.now() + delaySeconds * 1000);
80
+ const serialized = JSON.stringify(job);
81
+ if (delaySeconds > 0) {
82
+ await this.client.getRawConnection().sendCommand([
83
+ 'ZADD',
84
+ this.delayedKey(queue),
85
+ job.availableAt.getTime(),
86
+ serialized,
87
+ ]);
88
+ }
89
+ else {
90
+ await this.client.lpush(this.queueKey(queue), serialized);
91
+ }
92
+ return true;
93
+ }
94
+ /**
95
+ * Moves a permanently failed job to Dead Letter Queue (DLQ).
96
+ */
97
+ async fail(id, error, queue = 'default') {
98
+ const raw = await this.client.hget(this.reservedKey(queue), String(id));
99
+ if (!raw)
100
+ return false;
101
+ await this.client.hdel(this.reservedKey(queue), String(id));
102
+ const job = JSON.parse(raw);
103
+ const failedRecord = {
104
+ ...job,
105
+ failedAt: new Date(),
106
+ error: error instanceof Error ? error.stack || error.message : String(error || 'Unknown error'),
107
+ };
108
+ await this.client.hset(this.failedKey(queue), String(id), JSON.stringify(failedRecord));
109
+ return true;
110
+ }
111
+ /**
112
+ * Retrieves all failed jobs from the Dead Letter Queue.
113
+ */
114
+ async getFailed(queue = 'default') {
115
+ const records = await this.client.hgetall(this.failedKey(queue));
116
+ return Object.values(records).map((r) => JSON.parse(r));
62
117
  }
63
118
  async size(queue = 'default') {
64
- return this.client.llen(this.queueKey(queue));
119
+ return await this.client.llen(this.queueKey(queue));
65
120
  }
66
121
  async clear(queue = 'default') {
67
- await this.client.del(this.queueKey(queue));
68
- await this.client.del(this.delayedKey(queue));
122
+ await this.client.del(this.queueKey(queue), this.delayedKey(queue), this.reservedKey(queue), this.failedKey(queue));
69
123
  }
70
124
  async migrateDelayedJobs(queue) {
71
125
  const now = Date.now();
72
- // Using raw commands for ZRANGEBYSCORE and ZREM
73
- // ZRANGEBYSCORE key -inf <now>
74
- const readyJobs = await this.client.getRawConnection().sendCommand([
75
- 'ZRANGEBYSCORE',
76
- this.delayedKey(queue),
77
- '-inf',
78
- now
79
- ]);
80
- if (readyJobs && readyJobs.length > 0) {
81
- for (const job of readyJobs) {
82
- // ZREM returns 1 if the element was removed, 0 if it was already removed by another worker
83
- const removed = await this.client.getRawConnection().sendCommand(['ZREM', this.delayedKey(queue), job]);
84
- if (removed === 1) {
85
- // Push only the jobs this worker successfully claimed
86
- await this.client.rpush(this.queueKey(queue), job);
126
+ try {
127
+ const readyJobs = await this.client.getRawConnection().sendCommand([
128
+ 'ZRANGEBYSCORE',
129
+ this.delayedKey(queue),
130
+ '-inf',
131
+ now,
132
+ ]);
133
+ if (readyJobs && readyJobs.length > 0) {
134
+ for (const job of readyJobs) {
135
+ const removed = await this.client.getRawConnection().sendCommand([
136
+ 'ZREM',
137
+ this.delayedKey(queue),
138
+ job,
139
+ ]);
140
+ if (removed === 1) {
141
+ await this.client.rpush(this.queueKey(queue), job);
142
+ }
87
143
  }
88
144
  }
89
145
  }
146
+ catch {
147
+ // In case sorted set does not exist yet
148
+ }
90
149
  }
91
150
  }
92
151
  //# sourceMappingURL=redis-queue-driver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"redis-queue-driver.js","sourceRoot":"","sources":["../../../src/queue/drivers/redis-queue-driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redis-queue-driver.js","sourceRoot":"","sources":["../../../src/queue/drivers/redis-queue-driver.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,13 @@
5
5
  import type { QueueDriver, PushOptions } from './drivers/queue-driver.js';
6
6
  import { QueueWorker, type WorkerOptions } from './worker.js';
7
7
  import { Job } from './job.js';
8
+ import { RedisClient } from '../redis/redis-client.js';
8
9
  export interface QueueConnectionConfig {
9
- driver: 'memory' | 'database' | string;
10
+ driver: 'memory' | 'database' | 'redis' | string;
10
11
  table?: string;
11
12
  connection?: string;
13
+ redis?: RedisClient;
14
+ redisOptions?: any;
12
15
  }
13
16
  export interface QueueConfig {
14
17
  default?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"queue-manager.d.ts","sourceRoot":"","sources":["../../src/queue/queue-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG1E,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CACrD;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,iBAAiB,CAA4C;IACrE,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,CAAC,WAAW,CAAkD;gBAEzD,MAAM,GAAE,WAAgB;IAI7B,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAYpC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI;IAKtE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW;IA2BzC;;OAEG;IACU,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAgB1F;;OAEG;IACU,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAIjD;;OAEG;IACI,YAAY,CAAC,OAAO,GAAE,aAAkB,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,WAAW;IAY/E,KAAK,IAAI,IAAI;CAKrB;AAED,eAAO,MAAM,KAAK,cAAqB,CAAC"}
1
+ {"version":3,"file":"queue-manager.d.ts","sourceRoot":"","sources":["../../src/queue/queue-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG1E,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CACrD;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,iBAAiB,CAA4C;IACrE,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,CAAC,WAAW,CAAkD;gBAEzD,MAAM,GAAE,WAAgB;IAI7B,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAYpC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI;IAKtE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW;IAgCzC;;OAEG;IACU,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAgB1F;;OAEG;IACU,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAIjD;;OAEG;IACI,YAAY,CAAC,OAAO,GAAE,aAAkB,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,WAAW;IAY/E,KAAK,IAAI,IAAI;CAKrB;AAED,eAAO,MAAM,KAAK,cAAqB,CAAC"}
@@ -6,6 +6,8 @@ import { MemoryQueueDriver } from './drivers/memory-queue-driver.js';
6
6
  import { DatabaseQueueDriver } from './drivers/database-queue-driver.js';
7
7
  import { QueueWorker } from './worker.js';
8
8
  import { Job } from './job.js';
9
+ import { RedisQueueDriver } from './drivers/redis-queue-driver.js';
10
+ import { RedisClient } from '../redis/redis-client.js';
9
11
  export class QueueManager {
10
12
  defaultConnection = 'memory';
11
13
  connectionConfigs = new Map();
@@ -34,9 +36,14 @@ export class QueueManager {
34
36
  if (this.instantiatedDrivers.has(connName)) {
35
37
  return this.instantiatedDrivers.get(connName);
36
38
  }
37
- const cfg = this.connectionConfigs.get(connName) || { driver: connName === 'database' ? 'database' : 'memory' };
39
+ const cfg = this.connectionConfigs.get(connName) || { driver: connName === 'database' ? 'database' : (connName === 'redis' ? 'redis' : 'memory') };
38
40
  let driverInstance;
39
41
  switch (cfg.driver) {
42
+ case 'redis': {
43
+ const client = cfg.redis || new RedisClient(cfg.redisOptions);
44
+ driverInstance = new RedisQueueDriver(client);
45
+ break;
46
+ }
40
47
  case 'database':
41
48
  driverInstance = new DatabaseQueueDriver({
42
49
  table: cfg.table,
@@ -1 +1 @@
1
- {"version":3,"file":"queue-manager.js","sourceRoot":"","sources":["../../src/queue/queue-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queue-manager.js","sourceRoot":"","sources":["../../src/queue/queue-manager.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * @description Security modules for Aero Web Framework: JWT, Rate Limiter, Security Headers, and CSRF.
4
4
  */
5
5
  export { jwt, sign, verify, decode, jwtAuth, parseTimespan, JsonWebTokenError, TokenExpiredError, NotBeforeError, type JwtAlgorithm, type JwtHeader, type JwtPayload, type JwtSignOptions, type JwtVerifyOptions, type JwtAuthOptions, } from './jwt.js';
6
- export { rateLimit, MemoryRateLimitStore, TooManyRequestsError, type RateLimitOptions, type RateLimitStore, type RateLimitInfo, } from './rate-limiter.js';
6
+ export { rateLimit, MemoryRateLimitStore, RedisRateLimitStore, TooManyRequestsError, type RateLimitOptions, type RateLimitStore, type RateLimitInfo, type RedisRateLimitStoreOptions, } from './rate-limiter.js';
7
7
  export { securityHeaders, type SecurityHeadersOptions, type HstsOptions, type ContentSecurityPolicyDirectives, } from './headers.js';
8
8
  export { csrf, type CsrfOptions, } from './csrf.js';
9
9
  export { Hash, hash, hashVerify, type ScryptOptions, } from './hash.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,GAAG,EACH,IAAI,EACJ,MAAM,EACN,MAAM,EACN,OAAO,EACP,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,+BAA+B,GACrC,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,IAAI,EACJ,KAAK,WAAW,GACjB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,KAAK,aAAa,GACnB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,IAAI,EACJ,KAAK,WAAW,GACjB,MAAM,uBAAuB,CAAC;AAE/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,GAAG,EACH,IAAI,EACJ,MAAM,EACN,MAAM,EACN,OAAO,EACP,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,0BAA0B,GAChC,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,+BAA+B,GACrC,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,IAAI,EACJ,KAAK,WAAW,GACjB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,KAAK,aAAa,GACnB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,IAAI,EACJ,KAAK,WAAW,GACjB,MAAM,uBAAuB,CAAC;AAE/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
@@ -3,7 +3,7 @@
3
3
  * @description Security modules for Aero Web Framework: JWT, Rate Limiter, Security Headers, and CSRF.
4
4
  */
5
5
  export { jwt, sign, verify, decode, jwtAuth, parseTimespan, JsonWebTokenError, TokenExpiredError, NotBeforeError, } from './jwt.js';
6
- export { rateLimit, MemoryRateLimitStore, TooManyRequestsError, } from './rate-limiter.js';
6
+ export { rateLimit, MemoryRateLimitStore, RedisRateLimitStore, TooManyRequestsError, } from './rate-limiter.js';
7
7
  export { securityHeaders, } from './headers.js';
8
8
  export { csrf, } from './csrf.js';
9
9
  export { Hash, hash, hashVerify, } from './hash.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,GAAG,EACH,IAAI,EACJ,MAAM,EACN,MAAM,EACN,OAAO,EACP,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,GAOf,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,oBAAoB,GAIrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,GAIhB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,IAAI,GAEL,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,UAAU,GAEX,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,IAAI,GAEL,MAAM,uBAAuB,CAAC;AAE/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,GAAG,EACH,IAAI,EACJ,MAAM,EACN,MAAM,EACN,OAAO,EACP,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,GAOf,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,GAKrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,GAIhB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,IAAI,GAEL,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,UAAU,GAEX,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,IAAI,GAEL,MAAM,uBAAuB,CAAC;AAE/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
@@ -73,6 +73,26 @@ export declare class MemoryRateLimitStore implements RateLimitStore {
73
73
  cleanup(): void;
74
74
  destroy(): void;
75
75
  }
76
+ export interface RedisRateLimitStoreOptions {
77
+ client: any;
78
+ prefix?: string;
79
+ fallbackToMemory?: boolean;
80
+ }
81
+ /**
82
+ * Distributed, multi-instance Rate Limiter Store backed by Redis.
83
+ * Uses atomic INCR and TTL expiration to synchronize rate limits across server clusters.
84
+ */
85
+ export declare class RedisRateLimitStore implements RateLimitStore {
86
+ private client;
87
+ private prefix;
88
+ private fallbackStore?;
89
+ constructor(options: RedisRateLimitStoreOptions);
90
+ increment(key: string, windowMs: number): Promise<RateLimitInfo>;
91
+ decrement(key: string): Promise<void>;
92
+ resetKey(key: string): Promise<void>;
93
+ resetAll(): Promise<void>;
94
+ destroy(): void;
95
+ }
76
96
  /**
77
97
  * Creates a Rate Limiter middleware for Aero applications.
78
98
  */
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/security/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;IACjF,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACjC,OAAO,CAAC,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB,CAAC,KAAK,GAAG,GAAG;IAC3C;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE3C;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;IAEnD;;OAEG;IACH,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/D;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEhF;;OAEG;IACH,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IACjC,IAAI,SAA0B;IACvC,UAAU,EAAE,MAAM,CAAC;gBAEd,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAInE;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,IAAI,CAA2D;IACvE,OAAO,CAAC,aAAa,CAAC,CAAiB;gBAE3B,iBAAiB,SAAS;IAY/B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa;IAcvD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAO5B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI3B,QAAQ,IAAI,IAAI;IAIhB,OAAO,IAAI,IAAI;IASf,OAAO,IAAI,IAAI;CAOvB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,GAAG,YAAY,EAAE,OAAO,GAAE,gBAAgB,CAAC,KAAK,CAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CA6DxG"}
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/security/rate-limiter.ts"],"names":[],"mappings":"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"}
@@ -66,6 +66,91 @@ export class MemoryRateLimitStore {
66
66
  this.hits.clear();
67
67
  }
68
68
  }
69
+ /**
70
+ * Distributed, multi-instance Rate Limiter Store backed by Redis.
71
+ * Uses atomic INCR and TTL expiration to synchronize rate limits across server clusters.
72
+ */
73
+ export class RedisRateLimitStore {
74
+ client;
75
+ prefix;
76
+ fallbackStore;
77
+ constructor(options) {
78
+ this.client = options.client;
79
+ this.prefix = options.prefix ?? 'rl:';
80
+ if (options.fallbackToMemory) {
81
+ this.fallbackStore = new MemoryRateLimitStore();
82
+ }
83
+ }
84
+ async increment(key, windowMs) {
85
+ const fullKey = `${this.prefix}${key}`;
86
+ try {
87
+ const hits = await this.client.incr(fullKey);
88
+ let ttl = await this.client.ttl(fullKey);
89
+ if (ttl === -1 || ttl === null) {
90
+ const sec = Math.max(1, Math.ceil(windowMs / 1000));
91
+ await this.client.expire(fullKey, sec);
92
+ ttl = sec;
93
+ }
94
+ const resetTime = Date.now() + Math.max(1, ttl) * 1000;
95
+ return { totalHits: hits, resetTime };
96
+ }
97
+ catch (err) {
98
+ if (this.fallbackStore) {
99
+ return this.fallbackStore.increment(key, windowMs);
100
+ }
101
+ throw err;
102
+ }
103
+ }
104
+ async decrement(key) {
105
+ const fullKey = `${this.prefix}${key}`;
106
+ try {
107
+ await this.client.decr(fullKey);
108
+ }
109
+ catch (err) {
110
+ if (this.fallbackStore) {
111
+ this.fallbackStore.decrement(key);
112
+ return;
113
+ }
114
+ throw err;
115
+ }
116
+ }
117
+ async resetKey(key) {
118
+ const fullKey = `${this.prefix}${key}`;
119
+ try {
120
+ await this.client.del(fullKey);
121
+ }
122
+ catch (err) {
123
+ if (this.fallbackStore) {
124
+ this.fallbackStore.resetKey(key);
125
+ return;
126
+ }
127
+ throw err;
128
+ }
129
+ }
130
+ async resetAll() {
131
+ try {
132
+ const connection = typeof this.client.getRawConnection === 'function'
133
+ ? this.client.getRawConnection()
134
+ : this.client;
135
+ const keys = await connection.sendCommand(['KEYS', `${this.prefix}*`]);
136
+ if (keys && keys.length > 0) {
137
+ await this.client.del(...keys);
138
+ }
139
+ }
140
+ catch (err) {
141
+ if (this.fallbackStore) {
142
+ this.fallbackStore.resetAll();
143
+ return;
144
+ }
145
+ throw err;
146
+ }
147
+ }
148
+ destroy() {
149
+ if (this.fallbackStore) {
150
+ this.fallbackStore.destroy();
151
+ }
152
+ }
153
+ }
69
154
  /**
70
155
  * Creates a Rate Limiter middleware for Aero applications.
71
156
  */
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/security/rate-limiter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/security/rate-limiter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shohaghinfo/aerojs",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "A minimal, blazing-fast, zero-dependency full-stack web framework for Node.js — supporting React, Vue 3, Inertia.js, and SSR monoliths.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -82,6 +82,10 @@
82
82
  "./diagnostics": {
83
83
  "types": "./dist/diagnostics/index.d.ts",
84
84
  "import": "./dist/diagnostics/index.js"
85
+ },
86
+ "./http": {
87
+ "types": "./dist/http/index.d.ts",
88
+ "import": "./dist/http/index.js"
85
89
  }
86
90
  },
87
91
  "files": [
@@ -138,4 +142,4 @@
138
142
  "dependencies": {
139
143
  "reflect-metadata": "^0.2.2"
140
144
  }
141
- }
145
+ }