cors-whitelist-ip 1.0.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 (122) hide show
  1. package/README.md +284 -0
  2. package/dist/cjs/adapters/cache/InMemoryCacheAdapter.d.ts +19 -0
  3. package/dist/cjs/adapters/cache/InMemoryCacheAdapter.d.ts.map +1 -0
  4. package/dist/cjs/adapters/cache/InMemoryCacheAdapter.js +69 -0
  5. package/dist/cjs/adapters/cache/InMemoryCacheAdapter.js.map +1 -0
  6. package/dist/cjs/adapters/cache/NoCacheAdapter.d.ts +14 -0
  7. package/dist/cjs/adapters/cache/NoCacheAdapter.d.ts.map +1 -0
  8. package/dist/cjs/adapters/cache/NoCacheAdapter.js +29 -0
  9. package/dist/cjs/adapters/cache/NoCacheAdapter.js.map +1 -0
  10. package/dist/cjs/adapters/cache/index.d.ts +3 -0
  11. package/dist/cjs/adapters/cache/index.d.ts.map +1 -0
  12. package/dist/cjs/adapters/cache/index.js +8 -0
  13. package/dist/cjs/adapters/cache/index.js.map +1 -0
  14. package/dist/cjs/adapters/storage/InMemoryStorageAdapter.d.ts +30 -0
  15. package/dist/cjs/adapters/storage/InMemoryStorageAdapter.d.ts.map +1 -0
  16. package/dist/cjs/adapters/storage/InMemoryStorageAdapter.js +70 -0
  17. package/dist/cjs/adapters/storage/InMemoryStorageAdapter.js.map +1 -0
  18. package/dist/cjs/adapters/storage/index.d.ts +3 -0
  19. package/dist/cjs/adapters/storage/index.d.ts.map +1 -0
  20. package/dist/cjs/adapters/storage/index.js +6 -0
  21. package/dist/cjs/adapters/storage/index.js.map +1 -0
  22. package/dist/cjs/core/CorsWhitelist.d.ts +60 -0
  23. package/dist/cjs/core/CorsWhitelist.d.ts.map +1 -0
  24. package/dist/cjs/core/CorsWhitelist.js +273 -0
  25. package/dist/cjs/core/CorsWhitelist.js.map +1 -0
  26. package/dist/cjs/core/index.d.ts +4 -0
  27. package/dist/cjs/core/index.d.ts.map +1 -0
  28. package/dist/cjs/core/index.js +22 -0
  29. package/dist/cjs/core/index.js.map +1 -0
  30. package/dist/cjs/core/types.d.ts +201 -0
  31. package/dist/cjs/core/types.d.ts.map +1 -0
  32. package/dist/cjs/core/types.js +3 -0
  33. package/dist/cjs/core/types.js.map +1 -0
  34. package/dist/cjs/core/utils.d.ts +31 -0
  35. package/dist/cjs/core/utils.d.ts.map +1 -0
  36. package/dist/cjs/core/utils.js +82 -0
  37. package/dist/cjs/core/utils.js.map +1 -0
  38. package/dist/cjs/frameworks/express.d.ts +15 -0
  39. package/dist/cjs/frameworks/express.d.ts.map +1 -0
  40. package/dist/cjs/frameworks/express.js +49 -0
  41. package/dist/cjs/frameworks/express.js.map +1 -0
  42. package/dist/cjs/frameworks/fastify.d.ts +18 -0
  43. package/dist/cjs/frameworks/fastify.d.ts.map +1 -0
  44. package/dist/cjs/frameworks/fastify.js +49 -0
  45. package/dist/cjs/frameworks/fastify.js.map +1 -0
  46. package/dist/cjs/frameworks/index.d.ts +5 -0
  47. package/dist/cjs/frameworks/index.d.ts.map +1 -0
  48. package/dist/cjs/frameworks/index.js +15 -0
  49. package/dist/cjs/frameworks/index.js.map +1 -0
  50. package/dist/cjs/frameworks/koa.d.ts +15 -0
  51. package/dist/cjs/frameworks/koa.d.ts.map +1 -0
  52. package/dist/cjs/frameworks/koa.js +48 -0
  53. package/dist/cjs/frameworks/koa.js.map +1 -0
  54. package/dist/cjs/frameworks/node-http.d.ts +16 -0
  55. package/dist/cjs/frameworks/node-http.d.ts.map +1 -0
  56. package/dist/cjs/frameworks/node-http.js +46 -0
  57. package/dist/cjs/frameworks/node-http.js.map +1 -0
  58. package/dist/cjs/index.d.ts +12 -0
  59. package/dist/cjs/index.d.ts.map +1 -0
  60. package/dist/cjs/index.js +43 -0
  61. package/dist/cjs/index.js.map +1 -0
  62. package/dist/esm/adapters/cache/InMemoryCacheAdapter.d.ts +19 -0
  63. package/dist/esm/adapters/cache/InMemoryCacheAdapter.d.ts.map +1 -0
  64. package/dist/esm/adapters/cache/InMemoryCacheAdapter.js +69 -0
  65. package/dist/esm/adapters/cache/InMemoryCacheAdapter.js.map +1 -0
  66. package/dist/esm/adapters/cache/NoCacheAdapter.d.ts +14 -0
  67. package/dist/esm/adapters/cache/NoCacheAdapter.d.ts.map +1 -0
  68. package/dist/esm/adapters/cache/NoCacheAdapter.js +29 -0
  69. package/dist/esm/adapters/cache/NoCacheAdapter.js.map +1 -0
  70. package/dist/esm/adapters/cache/index.d.ts +3 -0
  71. package/dist/esm/adapters/cache/index.d.ts.map +1 -0
  72. package/dist/esm/adapters/cache/index.js +8 -0
  73. package/dist/esm/adapters/cache/index.js.map +1 -0
  74. package/dist/esm/adapters/storage/InMemoryStorageAdapter.d.ts +30 -0
  75. package/dist/esm/adapters/storage/InMemoryStorageAdapter.d.ts.map +1 -0
  76. package/dist/esm/adapters/storage/InMemoryStorageAdapter.js +70 -0
  77. package/dist/esm/adapters/storage/InMemoryStorageAdapter.js.map +1 -0
  78. package/dist/esm/adapters/storage/index.d.ts +3 -0
  79. package/dist/esm/adapters/storage/index.d.ts.map +1 -0
  80. package/dist/esm/adapters/storage/index.js +6 -0
  81. package/dist/esm/adapters/storage/index.js.map +1 -0
  82. package/dist/esm/core/CorsWhitelist.d.ts +60 -0
  83. package/dist/esm/core/CorsWhitelist.d.ts.map +1 -0
  84. package/dist/esm/core/CorsWhitelist.js +273 -0
  85. package/dist/esm/core/CorsWhitelist.js.map +1 -0
  86. package/dist/esm/core/index.d.ts +4 -0
  87. package/dist/esm/core/index.d.ts.map +1 -0
  88. package/dist/esm/core/index.js +22 -0
  89. package/dist/esm/core/index.js.map +1 -0
  90. package/dist/esm/core/types.d.ts +201 -0
  91. package/dist/esm/core/types.d.ts.map +1 -0
  92. package/dist/esm/core/types.js +3 -0
  93. package/dist/esm/core/types.js.map +1 -0
  94. package/dist/esm/core/utils.d.ts +31 -0
  95. package/dist/esm/core/utils.d.ts.map +1 -0
  96. package/dist/esm/core/utils.js +82 -0
  97. package/dist/esm/core/utils.js.map +1 -0
  98. package/dist/esm/frameworks/express.d.ts +15 -0
  99. package/dist/esm/frameworks/express.d.ts.map +1 -0
  100. package/dist/esm/frameworks/express.js +49 -0
  101. package/dist/esm/frameworks/express.js.map +1 -0
  102. package/dist/esm/frameworks/fastify.d.ts +18 -0
  103. package/dist/esm/frameworks/fastify.d.ts.map +1 -0
  104. package/dist/esm/frameworks/fastify.js +49 -0
  105. package/dist/esm/frameworks/fastify.js.map +1 -0
  106. package/dist/esm/frameworks/index.d.ts +5 -0
  107. package/dist/esm/frameworks/index.d.ts.map +1 -0
  108. package/dist/esm/frameworks/index.js +15 -0
  109. package/dist/esm/frameworks/index.js.map +1 -0
  110. package/dist/esm/frameworks/koa.d.ts +15 -0
  111. package/dist/esm/frameworks/koa.d.ts.map +1 -0
  112. package/dist/esm/frameworks/koa.js +48 -0
  113. package/dist/esm/frameworks/koa.js.map +1 -0
  114. package/dist/esm/frameworks/node-http.d.ts +16 -0
  115. package/dist/esm/frameworks/node-http.d.ts.map +1 -0
  116. package/dist/esm/frameworks/node-http.js +46 -0
  117. package/dist/esm/frameworks/node-http.js.map +1 -0
  118. package/dist/esm/index.d.ts +12 -0
  119. package/dist/esm/index.d.ts.map +1 -0
  120. package/dist/esm/index.js +43 -0
  121. package/dist/esm/index.js.map +1 -0
  122. package/package.json +147 -0
@@ -0,0 +1,15 @@
1
+ import type { RequestHandler } from 'express';
2
+ import { CorsWhitelist } from '../core/CorsWhitelist';
3
+ import { CorsWhitelistOptions } from '../core/types';
4
+ /**
5
+ * Create Express middleware for CORS whitelist validation
6
+ */
7
+ export declare function createExpressMiddleware(corsWhitelist: CorsWhitelist): RequestHandler;
8
+ /**
9
+ * Factory function to create both CorsWhitelist instance and Express middleware
10
+ */
11
+ export declare function corsWhitelistExpress(options: CorsWhitelistOptions): {
12
+ corsWhitelist: CorsWhitelist;
13
+ middleware: RequestHandler;
14
+ };
15
+ //# sourceMappingURL=express.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../../src/frameworks/express.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAmC,MAAM,SAAS,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,oBAAoB,EAGrB,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,aAAa,GAC3B,cAAc,CAoChB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,oBAAoB,GAC5B;IAAE,aAAa,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,cAAc,CAAA;CAAE,CAK9D"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createExpressMiddleware = createExpressMiddleware;
4
+ exports.corsWhitelistExpress = corsWhitelistExpress;
5
+ const CorsWhitelist_1 = require("../core/CorsWhitelist");
6
+ /**
7
+ * Create Express middleware for CORS whitelist validation
8
+ */
9
+ function createExpressMiddleware(corsWhitelist) {
10
+ return async (req, res, next) => {
11
+ const genericReq = {
12
+ headers: req.headers,
13
+ method: req.method,
14
+ url: req.url,
15
+ ip: req.ip || req.socket?.remoteAddress,
16
+ };
17
+ const genericRes = {
18
+ setHeader: (name, value) => res.setHeader(name, value),
19
+ get statusCode() {
20
+ return res.statusCode;
21
+ },
22
+ set statusCode(code) {
23
+ res.statusCode = code;
24
+ },
25
+ end: (body) => {
26
+ if (body) {
27
+ res.setHeader('Content-Type', 'application/json');
28
+ res.end(body);
29
+ }
30
+ else {
31
+ res.end();
32
+ }
33
+ },
34
+ };
35
+ const shouldContinue = await corsWhitelist.handleRequest(genericReq, genericRes);
36
+ if (shouldContinue) {
37
+ next();
38
+ }
39
+ };
40
+ }
41
+ /**
42
+ * Factory function to create both CorsWhitelist instance and Express middleware
43
+ */
44
+ function corsWhitelistExpress(options) {
45
+ const corsWhitelist = new CorsWhitelist_1.CorsWhitelist(options);
46
+ const middleware = createExpressMiddleware(corsWhitelist);
47
+ return { corsWhitelist, middleware };
48
+ }
49
+ //# sourceMappingURL=express.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express.js","sourceRoot":"","sources":["../../../src/frameworks/express.ts"],"names":[],"mappings":";;AAWA,0DAsCC;AAKD,oDAOC;AA5DD,yDAAsD;AAOtD;;GAEG;AACH,SAAgB,uBAAuB,CACrC,aAA4B;IAE5B,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAC/D,MAAM,UAAU,GAAmB;YACjC,OAAO,EAAE,GAAG,CAAC,OAAwD;YACrE,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa;SACxC,CAAC;QAEF,MAAM,UAAU,GAAoB;YAClC,SAAS,EAAE,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;YACtE,IAAI,UAAU;gBACZ,OAAO,GAAG,CAAC,UAAU,CAAC;YACxB,CAAC;YACD,IAAI,UAAU,CAAC,IAAY;gBACzB,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;YACxB,CAAC;YACD,GAAG,EAAE,CAAC,IAAa,EAAE,EAAE;gBACrB,IAAI,IAAI,EAAE,CAAC;oBACT,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;oBAClD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,GAAG,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;SACF,CAAC;QAEF,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,aAAa,CACtD,UAAU,EACV,UAAU,CACX,CAAC;QAEF,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAClC,OAA6B;IAE7B,MAAM,aAAa,GAAG,IAAI,6BAAa,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;IAE1D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AACvC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { FastifyPluginCallback } from 'fastify';
2
+ import { CorsWhitelist } from '../core/CorsWhitelist';
3
+ import { CorsWhitelistOptions } from '../core/types';
4
+ export interface FastifyCorsOptions extends CorsWhitelistOptions {
5
+ /** Hook to use for CORS check (default: 'onRequest') */
6
+ hook?: 'onRequest' | 'preValidation' | 'preHandler';
7
+ }
8
+ /**
9
+ * Fastify plugin for CORS whitelist validation
10
+ */
11
+ export declare const fastifyCorsWhitelist: FastifyPluginCallback<FastifyCorsOptions>;
12
+ export default fastifyCorsWhitelist;
13
+ declare module 'fastify' {
14
+ interface FastifyInstance {
15
+ corsWhitelist: CorsWhitelist;
16
+ }
17
+ }
18
+ //# sourceMappingURL=fastify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fastify.d.ts","sourceRoot":"","sources":["../../../src/frameworks/fastify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,qBAAqB,EAGtB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,oBAAoB,EAGrB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC9D,wDAAwD;IACxD,IAAI,CAAC,EAAE,WAAW,GAAG,eAAe,GAAG,YAAY,CAAC;CACrD;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,qBAAqB,CAAC,kBAAkB,CAiD1E,CAAC;AAGF,eAAe,oBAAoB,CAAC;AAGpC,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,eAAe;QACvB,aAAa,EAAE,aAAa,CAAC;KAC9B;CACF"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fastifyCorsWhitelist = void 0;
4
+ const CorsWhitelist_1 = require("../core/CorsWhitelist");
5
+ /**
6
+ * Fastify plugin for CORS whitelist validation
7
+ */
8
+ const fastifyCorsWhitelist = (fastify, options, done) => {
9
+ const corsWhitelist = new CorsWhitelist_1.CorsWhitelist(options);
10
+ const hook = options.hook ?? 'onRequest';
11
+ // Store the instance on fastify for access elsewhere
12
+ fastify.decorate('corsWhitelist', corsWhitelist);
13
+ fastify.addHook(hook, async (req, reply) => {
14
+ const genericReq = {
15
+ headers: req.headers,
16
+ method: req.method,
17
+ url: req.url,
18
+ ip: req.ip,
19
+ };
20
+ let responseSent = false;
21
+ const genericRes = {
22
+ setHeader: (name, value) => reply.header(name, value),
23
+ get statusCode() {
24
+ return reply.statusCode;
25
+ },
26
+ set statusCode(code) {
27
+ reply.status(code);
28
+ },
29
+ end: (body) => {
30
+ responseSent = true;
31
+ if (body) {
32
+ reply.type('application/json').send(body);
33
+ }
34
+ else {
35
+ reply.send();
36
+ }
37
+ },
38
+ };
39
+ const shouldContinue = await corsWhitelist.handleRequest(genericReq, genericRes);
40
+ if (!shouldContinue && !responseSent) {
41
+ return; // Reply already sent
42
+ }
43
+ });
44
+ done();
45
+ };
46
+ exports.fastifyCorsWhitelist = fastifyCorsWhitelist;
47
+ // For ES module default export compatibility
48
+ exports.default = exports.fastifyCorsWhitelist;
49
+ //# sourceMappingURL=fastify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fastify.js","sourceRoot":"","sources":["../../../src/frameworks/fastify.ts"],"names":[],"mappings":";;;AAMA,yDAAsD;AAYtD;;GAEG;AACI,MAAM,oBAAoB,GAA8C,CAC7E,OAAwB,EACxB,OAA2B,EAC3B,IAA2B,EAC3B,EAAE;IACF,MAAM,aAAa,GAAG,IAAI,6BAAa,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;IAEzC,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IAEjD,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,GAAmB,EAAE,KAAmB,EAAE,EAAE;QACvE,MAAM,UAAU,GAAmB;YACjC,OAAO,EAAE,GAAG,CAAC,OAAwD;YACrE,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,EAAE,EAAE,GAAG,CAAC,EAAE;SACX,CAAC;QAEF,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,MAAM,UAAU,GAAoB;YAClC,SAAS,EAAE,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;YACrE,IAAI,UAAU;gBACZ,OAAO,KAAK,CAAC,UAAU,CAAC;YAC1B,CAAC;YACD,IAAI,UAAU,CAAC,IAAY;gBACzB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;YACD,GAAG,EAAE,CAAC,IAAa,EAAE,EAAE;gBACrB,YAAY,GAAG,IAAI,CAAC;gBACpB,IAAI,IAAI,EAAE,CAAC;oBACT,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5C,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,CAAC;YACH,CAAC;SACF,CAAC;QAEF,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,aAAa,CACtD,UAAU,EACV,UAAU,CACX,CAAC;QAEF,IAAI,CAAC,cAAc,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,OAAO,CAAC,qBAAqB;QAC/B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,EAAE,CAAC;AACT,CAAC,CAAC;AAjDW,QAAA,oBAAoB,wBAiD/B;AAEF,6CAA6C;AAC7C,kBAAe,4BAAoB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { createExpressMiddleware, corsWhitelistExpress, } from './express';
2
+ export { fastifyCorsWhitelist, type FastifyCorsOptions, } from './fastify';
3
+ export { createKoaMiddleware, corsWhitelistKoa } from './koa';
4
+ export { createNodeHttpHandler, corsWhitelistHttp, type HttpHandler, } from './node-http';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/frameworks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,oBAAoB,EACpB,KAAK,kBAAkB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.corsWhitelistHttp = exports.createNodeHttpHandler = exports.corsWhitelistKoa = exports.createKoaMiddleware = exports.fastifyCorsWhitelist = exports.corsWhitelistExpress = exports.createExpressMiddleware = void 0;
4
+ var express_1 = require("./express");
5
+ Object.defineProperty(exports, "createExpressMiddleware", { enumerable: true, get: function () { return express_1.createExpressMiddleware; } });
6
+ Object.defineProperty(exports, "corsWhitelistExpress", { enumerable: true, get: function () { return express_1.corsWhitelistExpress; } });
7
+ var fastify_1 = require("./fastify");
8
+ Object.defineProperty(exports, "fastifyCorsWhitelist", { enumerable: true, get: function () { return fastify_1.fastifyCorsWhitelist; } });
9
+ var koa_1 = require("./koa");
10
+ Object.defineProperty(exports, "createKoaMiddleware", { enumerable: true, get: function () { return koa_1.createKoaMiddleware; } });
11
+ Object.defineProperty(exports, "corsWhitelistKoa", { enumerable: true, get: function () { return koa_1.corsWhitelistKoa; } });
12
+ var node_http_1 = require("./node-http");
13
+ Object.defineProperty(exports, "createNodeHttpHandler", { enumerable: true, get: function () { return node_http_1.createNodeHttpHandler; } });
14
+ Object.defineProperty(exports, "corsWhitelistHttp", { enumerable: true, get: function () { return node_http_1.corsWhitelistHttp; } });
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/frameworks/index.ts"],"names":[],"mappings":";;;AAAA,qCAGmB;AAFjB,kHAAA,uBAAuB,OAAA;AACvB,+GAAA,oBAAoB,OAAA;AAEtB,qCAGmB;AAFjB,+GAAA,oBAAoB,OAAA;AAGtB,6BAA8D;AAArD,0GAAA,mBAAmB,OAAA;AAAE,uGAAA,gBAAgB,OAAA;AAC9C,yCAIqB;AAHnB,kHAAA,qBAAqB,OAAA;AACrB,8GAAA,iBAAiB,OAAA"}
@@ -0,0 +1,15 @@
1
+ import type { Middleware } from 'koa';
2
+ import { CorsWhitelist } from '../core/CorsWhitelist';
3
+ import { CorsWhitelistOptions } from '../core/types';
4
+ /**
5
+ * Create Koa middleware for CORS whitelist validation
6
+ */
7
+ export declare function createKoaMiddleware(corsWhitelist: CorsWhitelist): Middleware;
8
+ /**
9
+ * Factory function to create both CorsWhitelist instance and Koa middleware
10
+ */
11
+ export declare function corsWhitelistKoa(options: CorsWhitelistOptions): {
12
+ corsWhitelist: CorsWhitelist;
13
+ middleware: Middleware;
14
+ };
15
+ //# sourceMappingURL=koa.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"koa.d.ts","sourceRoot":"","sources":["../../../src/frameworks/koa.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,UAAU,EAAE,MAAM,KAAK,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,oBAAoB,EAGrB,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,aAAa,GAAG,UAAU,CAoC5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,oBAAoB,GAC5B;IAAE,aAAa,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,CAK1D"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createKoaMiddleware = createKoaMiddleware;
4
+ exports.corsWhitelistKoa = corsWhitelistKoa;
5
+ const CorsWhitelist_1 = require("../core/CorsWhitelist");
6
+ /**
7
+ * Create Koa middleware for CORS whitelist validation
8
+ */
9
+ function createKoaMiddleware(corsWhitelist) {
10
+ return async (ctx, next) => {
11
+ const genericReq = {
12
+ headers: ctx.headers,
13
+ method: ctx.method,
14
+ url: ctx.url,
15
+ ip: ctx.ip,
16
+ };
17
+ let responseEnded = false;
18
+ const genericRes = {
19
+ setHeader: (name, value) => ctx.set(name, value),
20
+ get statusCode() {
21
+ return ctx.status;
22
+ },
23
+ set statusCode(code) {
24
+ ctx.status = code;
25
+ },
26
+ end: (body) => {
27
+ responseEnded = true;
28
+ if (body) {
29
+ ctx.type = 'application/json';
30
+ ctx.body = body;
31
+ }
32
+ },
33
+ };
34
+ const shouldContinue = await corsWhitelist.handleRequest(genericReq, genericRes);
35
+ if (shouldContinue && !responseEnded) {
36
+ await next();
37
+ }
38
+ };
39
+ }
40
+ /**
41
+ * Factory function to create both CorsWhitelist instance and Koa middleware
42
+ */
43
+ function corsWhitelistKoa(options) {
44
+ const corsWhitelist = new CorsWhitelist_1.CorsWhitelist(options);
45
+ const middleware = createKoaMiddleware(corsWhitelist);
46
+ return { corsWhitelist, middleware };
47
+ }
48
+ //# sourceMappingURL=koa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"koa.js","sourceRoot":"","sources":["../../../src/frameworks/koa.ts"],"names":[],"mappings":";;AAWA,kDAoCC;AAKD,4CAOC;AA1DD,yDAAsD;AAOtD;;GAEG;AACH,SAAgB,mBAAmB,CAAC,aAA4B;IAC9D,OAAO,KAAK,EAAE,GAAY,EAAE,IAAU,EAAE,EAAE;QACxC,MAAM,UAAU,GAAmB;YACjC,OAAO,EAAE,GAAG,CAAC,OAAwD;YACrE,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,EAAE,EAAE,GAAG,CAAC,EAAE;SACX,CAAC;QAEF,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,MAAM,UAAU,GAAoB;YAClC,SAAS,EAAE,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;YAChE,IAAI,UAAU;gBACZ,OAAO,GAAG,CAAC,MAAM,CAAC;YACpB,CAAC;YACD,IAAI,UAAU,CAAC,IAAY;gBACzB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,GAAG,EAAE,CAAC,IAAa,EAAE,EAAE;gBACrB,aAAa,GAAG,IAAI,CAAC;gBACrB,IAAI,IAAI,EAAE,CAAC;oBACT,GAAG,CAAC,IAAI,GAAG,kBAAkB,CAAC;oBAC9B,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;gBAClB,CAAC;YACH,CAAC;SACF,CAAC;QAEF,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,aAAa,CACtD,UAAU,EACV,UAAU,CACX,CAAC;QAEF,IAAI,cAAc,IAAI,CAAC,aAAa,EAAE,CAAC;YACrC,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAC9B,OAA6B;IAE7B,MAAM,aAAa,GAAG,IAAI,6BAAa,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAEtD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AACvC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { IncomingMessage, ServerResponse } from 'http';
2
+ import { CorsWhitelist } from '../core/CorsWhitelist';
3
+ import { CorsWhitelistOptions } from '../core/types';
4
+ export type HttpHandler = (req: IncomingMessage, res: ServerResponse) => Promise<boolean>;
5
+ /**
6
+ * Create plain Node.js HTTP handler for CORS whitelist validation
7
+ */
8
+ export declare function createNodeHttpHandler(corsWhitelist: CorsWhitelist): HttpHandler;
9
+ /**
10
+ * Factory function to create both CorsWhitelist instance and HTTP handler
11
+ */
12
+ export declare function corsWhitelistHttp(options: CorsWhitelistOptions): {
13
+ corsWhitelist: CorsWhitelist;
14
+ handler: HttpHandler;
15
+ };
16
+ //# sourceMappingURL=node-http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-http.d.ts","sourceRoot":"","sources":["../../../src/frameworks/node-http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,oBAAoB,EAGrB,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,WAAW,GAAG,CACxB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,aAAa,GAC3B,WAAW,CAgCb;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,oBAAoB,GAC5B;IAAE,aAAa,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,CAKxD"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createNodeHttpHandler = createNodeHttpHandler;
4
+ exports.corsWhitelistHttp = corsWhitelistHttp;
5
+ const CorsWhitelist_1 = require("../core/CorsWhitelist");
6
+ /**
7
+ * Create plain Node.js HTTP handler for CORS whitelist validation
8
+ */
9
+ function createNodeHttpHandler(corsWhitelist) {
10
+ return async (req, res) => {
11
+ const genericReq = {
12
+ headers: req.headers,
13
+ method: req.method || 'GET',
14
+ url: req.url || '/',
15
+ ip: req.socket.remoteAddress,
16
+ };
17
+ const genericRes = {
18
+ setHeader: (name, value) => res.setHeader(name, value),
19
+ get statusCode() {
20
+ return res.statusCode;
21
+ },
22
+ set statusCode(code) {
23
+ res.statusCode = code;
24
+ },
25
+ end: (body) => {
26
+ if (body) {
27
+ res.setHeader('Content-Type', 'application/json');
28
+ res.end(body);
29
+ }
30
+ else {
31
+ res.end();
32
+ }
33
+ },
34
+ };
35
+ return corsWhitelist.handleRequest(genericReq, genericRes);
36
+ };
37
+ }
38
+ /**
39
+ * Factory function to create both CorsWhitelist instance and HTTP handler
40
+ */
41
+ function corsWhitelistHttp(options) {
42
+ const corsWhitelist = new CorsWhitelist_1.CorsWhitelist(options);
43
+ const handler = createNodeHttpHandler(corsWhitelist);
44
+ return { corsWhitelist, handler };
45
+ }
46
+ //# sourceMappingURL=node-http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-http.js","sourceRoot":"","sources":["../../../src/frameworks/node-http.ts"],"names":[],"mappings":";;AAgBA,sDAkCC;AAKD,8CAOC;AA7DD,yDAAsD;AAYtD;;GAEG;AACH,SAAgB,qBAAqB,CACnC,aAA4B;IAE5B,OAAO,KAAK,EACV,GAAoB,EACpB,GAAmB,EACD,EAAE;QACpB,MAAM,UAAU,GAAmB;YACjC,OAAO,EAAE,GAAG,CAAC,OAAwD;YACrE,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,KAAK;YAC3B,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG;YACnB,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa;SAC7B,CAAC;QAEF,MAAM,UAAU,GAAoB;YAClC,SAAS,EAAE,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;YACtE,IAAI,UAAU;gBACZ,OAAO,GAAG,CAAC,UAAU,CAAC;YACxB,CAAC;YACD,IAAI,UAAU,CAAC,IAAY;gBACzB,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;YACxB,CAAC;YACD,GAAG,EAAE,CAAC,IAAa,EAAE,EAAE;gBACrB,IAAI,IAAI,EAAE,CAAC;oBACT,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;oBAClD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,GAAG,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;SACF,CAAC;QAEF,OAAO,aAAa,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,OAA6B;IAE7B,MAAM,aAAa,GAAG,IAAI,6BAAa,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;IAErD,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC"}
@@ -0,0 +1,12 @@
1
+ export { CorsWhitelist } from './core/CorsWhitelist';
2
+ export * from './core/types';
3
+ export * from './core/utils';
4
+ export { InMemoryStorageAdapter } from './adapters/storage/InMemoryStorageAdapter';
5
+ export type { InMemoryStorageConfig } from './adapters/storage/InMemoryStorageAdapter';
6
+ export { InMemoryCacheAdapter } from './adapters/cache/InMemoryCacheAdapter';
7
+ export { NoCacheAdapter } from './adapters/cache/NoCacheAdapter';
8
+ export { createExpressMiddleware, corsWhitelistExpress, } from './frameworks/express';
9
+ export { fastifyCorsWhitelist, type FastifyCorsOptions, } from './frameworks/fastify';
10
+ export { createKoaMiddleware, corsWhitelistKoa } from './frameworks/koa';
11
+ export { createNodeHttpHandler, corsWhitelistHttp, type HttpHandler, } from './frameworks/node-http';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,YAAY,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAGvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAGjE,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,WAAW,GACjB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.corsWhitelistHttp = exports.createNodeHttpHandler = exports.corsWhitelistKoa = exports.createKoaMiddleware = exports.fastifyCorsWhitelist = exports.corsWhitelistExpress = exports.createExpressMiddleware = exports.NoCacheAdapter = exports.InMemoryCacheAdapter = exports.InMemoryStorageAdapter = exports.CorsWhitelist = void 0;
18
+ // Core exports
19
+ var CorsWhitelist_1 = require("./core/CorsWhitelist");
20
+ Object.defineProperty(exports, "CorsWhitelist", { enumerable: true, get: function () { return CorsWhitelist_1.CorsWhitelist; } });
21
+ __exportStar(require("./core/types"), exports);
22
+ __exportStar(require("./core/utils"), exports);
23
+ // Storage adapters
24
+ var InMemoryStorageAdapter_1 = require("./adapters/storage/InMemoryStorageAdapter");
25
+ Object.defineProperty(exports, "InMemoryStorageAdapter", { enumerable: true, get: function () { return InMemoryStorageAdapter_1.InMemoryStorageAdapter; } });
26
+ // Cache adapters
27
+ var InMemoryCacheAdapter_1 = require("./adapters/cache/InMemoryCacheAdapter");
28
+ Object.defineProperty(exports, "InMemoryCacheAdapter", { enumerable: true, get: function () { return InMemoryCacheAdapter_1.InMemoryCacheAdapter; } });
29
+ var NoCacheAdapter_1 = require("./adapters/cache/NoCacheAdapter");
30
+ Object.defineProperty(exports, "NoCacheAdapter", { enumerable: true, get: function () { return NoCacheAdapter_1.NoCacheAdapter; } });
31
+ // Framework adapters (re-exported for convenience)
32
+ var express_1 = require("./frameworks/express");
33
+ Object.defineProperty(exports, "createExpressMiddleware", { enumerable: true, get: function () { return express_1.createExpressMiddleware; } });
34
+ Object.defineProperty(exports, "corsWhitelistExpress", { enumerable: true, get: function () { return express_1.corsWhitelistExpress; } });
35
+ var fastify_1 = require("./frameworks/fastify");
36
+ Object.defineProperty(exports, "fastifyCorsWhitelist", { enumerable: true, get: function () { return fastify_1.fastifyCorsWhitelist; } });
37
+ var koa_1 = require("./frameworks/koa");
38
+ Object.defineProperty(exports, "createKoaMiddleware", { enumerable: true, get: function () { return koa_1.createKoaMiddleware; } });
39
+ Object.defineProperty(exports, "corsWhitelistKoa", { enumerable: true, get: function () { return koa_1.corsWhitelistKoa; } });
40
+ var node_http_1 = require("./frameworks/node-http");
41
+ Object.defineProperty(exports, "createNodeHttpHandler", { enumerable: true, get: function () { return node_http_1.createNodeHttpHandler; } });
42
+ Object.defineProperty(exports, "corsWhitelistHttp", { enumerable: true, get: function () { return node_http_1.corsWhitelistHttp; } });
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,eAAe;AACf,sDAAqD;AAA5C,8GAAA,aAAa,OAAA;AACtB,+CAA6B;AAC7B,+CAA6B;AAE7B,mBAAmB;AACnB,oFAAmF;AAA1E,gIAAA,sBAAsB,OAAA;AAG/B,iBAAiB;AACjB,8EAA6E;AAApE,4HAAA,oBAAoB,OAAA;AAC7B,kEAAiE;AAAxD,gHAAA,cAAc,OAAA;AAEvB,mDAAmD;AACnD,gDAG8B;AAF5B,kHAAA,uBAAuB,OAAA;AACvB,+GAAA,oBAAoB,OAAA;AAEtB,gDAG8B;AAF5B,+GAAA,oBAAoB,OAAA;AAGtB,wCAAyE;AAAhE,0GAAA,mBAAmB,OAAA;AAAE,uGAAA,gBAAgB,OAAA;AAC9C,oDAIgC;AAH9B,kHAAA,qBAAqB,OAAA;AACrB,8GAAA,iBAAiB,OAAA"}
@@ -0,0 +1,19 @@
1
+ import { CacheAdapter } from '../../core/types';
2
+ /**
3
+ * In-memory cache adapter using a simple Map.
4
+ * Suitable for single-instance applications and testing.
5
+ */
6
+ export declare class InMemoryCacheAdapter implements CacheAdapter {
7
+ private cache;
8
+ private cleanupInterval;
9
+ constructor(cleanupIntervalMs?: number);
10
+ get<T = string>(key: string): Promise<T | null>;
11
+ set<T = string>(key: string, value: T, ttlSeconds: number): Promise<void>;
12
+ delete(key: string): Promise<void>;
13
+ deletePattern(pattern: string): Promise<void>;
14
+ clear(): Promise<void>;
15
+ has(key: string): Promise<boolean>;
16
+ dispose(): Promise<void>;
17
+ private cleanup;
18
+ }
19
+ //# sourceMappingURL=InMemoryCacheAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryCacheAdapter.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cache/InMemoryCacheAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOhD;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IACvD,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,eAAe,CAA+C;gBAE1D,iBAAiB,GAAE,MAAc;IAQvC,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAe/C,GAAG,CAAC,CAAC,GAAG,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IAOV,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B,OAAO,CAAC,OAAO;CAQhB"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InMemoryCacheAdapter = void 0;
4
+ /**
5
+ * In-memory cache adapter using a simple Map.
6
+ * Suitable for single-instance applications and testing.
7
+ */
8
+ class InMemoryCacheAdapter {
9
+ constructor(cleanupIntervalMs = 60000) {
10
+ this.cache = new Map();
11
+ this.cleanupInterval = null;
12
+ // Periodically clean up expired entries
13
+ this.cleanupInterval = setInterval(() => this.cleanup(), cleanupIntervalMs);
14
+ }
15
+ async get(key) {
16
+ const entry = this.cache.get(key);
17
+ if (!entry) {
18
+ return null;
19
+ }
20
+ if (Date.now() > entry.expiresAt) {
21
+ this.cache.delete(key);
22
+ return null;
23
+ }
24
+ return entry.value;
25
+ }
26
+ async set(key, value, ttlSeconds) {
27
+ this.cache.set(key, {
28
+ value,
29
+ expiresAt: Date.now() + ttlSeconds * 1000,
30
+ });
31
+ }
32
+ async delete(key) {
33
+ this.cache.delete(key);
34
+ }
35
+ async deletePattern(pattern) {
36
+ // Convert simple pattern to regex (supports * as wildcard)
37
+ const regexPattern = pattern.replace(/\*/g, '.*');
38
+ const regex = new RegExp(`^${regexPattern}$`);
39
+ for (const key of this.cache.keys()) {
40
+ if (regex.test(key)) {
41
+ this.cache.delete(key);
42
+ }
43
+ }
44
+ }
45
+ async clear() {
46
+ this.cache.clear();
47
+ }
48
+ async has(key) {
49
+ const value = await this.get(key);
50
+ return value !== null;
51
+ }
52
+ async dispose() {
53
+ if (this.cleanupInterval) {
54
+ clearInterval(this.cleanupInterval);
55
+ this.cleanupInterval = null;
56
+ }
57
+ this.cache.clear();
58
+ }
59
+ cleanup() {
60
+ const now = Date.now();
61
+ for (const [key, entry] of this.cache.entries()) {
62
+ if (now > entry.expiresAt) {
63
+ this.cache.delete(key);
64
+ }
65
+ }
66
+ }
67
+ }
68
+ exports.InMemoryCacheAdapter = InMemoryCacheAdapter;
69
+ //# sourceMappingURL=InMemoryCacheAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryCacheAdapter.js","sourceRoot":"","sources":["../../../../src/adapters/cache/InMemoryCacheAdapter.ts"],"names":[],"mappings":";;;AAOA;;;GAGG;AACH,MAAa,oBAAoB;IAI/B,YAAY,oBAA4B,KAAK;QAHrC,UAAK,GAAqC,IAAI,GAAG,EAAE,CAAC;QACpD,oBAAe,GAA0C,IAAI,CAAC;QAGpE,wCAAwC;QACxC,IAAI,CAAC,eAAe,GAAG,WAAW,CAChC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EACpB,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,GAAG,CAAa,GAAW;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC,KAAU,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,GAAG,CACP,GAAW,EACX,KAAQ,EACR,UAAkB;QAElB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,IAAI;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,2DAA2D;QAC3D,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC;QAE9C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,KAAK,KAAK,IAAI,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACpC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAEO,OAAO;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAChD,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;CACF;AA/ED,oDA+EC"}
@@ -0,0 +1,14 @@
1
+ import { CacheAdapter } from '../../core/types';
2
+ /**
3
+ * No-op cache adapter that doesn't cache anything.
4
+ * Used as the default when no cache is configured.
5
+ */
6
+ export declare class NoCacheAdapter implements CacheAdapter {
7
+ get<T = string>(_key: string): Promise<T | null>;
8
+ set<T = string>(_key: string, _value: T, _ttlSeconds: number): Promise<void>;
9
+ delete(_key: string): Promise<void>;
10
+ deletePattern(_pattern: string): Promise<void>;
11
+ clear(): Promise<void>;
12
+ has(_key: string): Promise<boolean>;
13
+ }
14
+ //# sourceMappingURL=NoCacheAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoCacheAdapter.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cache/NoCacheAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD;;;GAGG;AACH,qBAAa,cAAe,YAAW,YAAY;IAC3C,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAIhD,GAAG,CAAC,CAAC,GAAG,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,EACT,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAIV,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAG1C"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NoCacheAdapter = void 0;
4
+ /**
5
+ * No-op cache adapter that doesn't cache anything.
6
+ * Used as the default when no cache is configured.
7
+ */
8
+ class NoCacheAdapter {
9
+ async get(_key) {
10
+ return null;
11
+ }
12
+ async set(_key, _value, _ttlSeconds) {
13
+ // No-op
14
+ }
15
+ async delete(_key) {
16
+ // No-op
17
+ }
18
+ async deletePattern(_pattern) {
19
+ // No-op
20
+ }
21
+ async clear() {
22
+ // No-op
23
+ }
24
+ async has(_key) {
25
+ return false;
26
+ }
27
+ }
28
+ exports.NoCacheAdapter = NoCacheAdapter;
29
+ //# sourceMappingURL=NoCacheAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoCacheAdapter.js","sourceRoot":"","sources":["../../../../src/adapters/cache/NoCacheAdapter.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACH,MAAa,cAAc;IACzB,KAAK,CAAC,GAAG,CAAa,IAAY;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAG,CACP,IAAY,EACZ,MAAS,EACT,WAAmB;QAEnB,QAAQ;IACV,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,QAAQ;IACV,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB;QAClC,QAAQ;IACV,CAAC;IAED,KAAK,CAAC,KAAK;QACT,QAAQ;IACV,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA5BD,wCA4BC"}
@@ -0,0 +1,3 @@
1
+ export { NoCacheAdapter } from './NoCacheAdapter';
2
+ export { InMemoryCacheAdapter } from './InMemoryCacheAdapter';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InMemoryCacheAdapter = exports.NoCacheAdapter = void 0;
4
+ var NoCacheAdapter_1 = require("./NoCacheAdapter");
5
+ Object.defineProperty(exports, "NoCacheAdapter", { enumerable: true, get: function () { return NoCacheAdapter_1.NoCacheAdapter; } });
6
+ var InMemoryCacheAdapter_1 = require("./InMemoryCacheAdapter");
7
+ Object.defineProperty(exports, "InMemoryCacheAdapter", { enumerable: true, get: function () { return InMemoryCacheAdapter_1.InMemoryCacheAdapter; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapters/cache/index.ts"],"names":[],"mappings":";;;AAAA,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA"}
@@ -0,0 +1,30 @@
1
+ import { StorageAdapter, WhitelistEntry } from '../../core/types';
2
+ export interface InMemoryStorageConfig {
3
+ globalWhitelist?: string[];
4
+ whitelistEntries?: WhitelistEntry[];
5
+ apiKeys?: Map<string | number, string>;
6
+ }
7
+ /**
8
+ * In-memory storage adapter for testing and simple use cases.
9
+ * Data is stored in memory and lost when the process exits.
10
+ */
11
+ export declare class InMemoryStorageAdapter implements StorageAdapter {
12
+ private globalWhitelist;
13
+ private whitelistEntries;
14
+ private apiKeys;
15
+ constructor(config?: InMemoryStorageConfig);
16
+ getGlobalWhitelist(): Promise<string[]>;
17
+ getWhitelistEntries(): Promise<WhitelistEntry[]>;
18
+ getOrganisationWhitelist(organisationId: string | number): Promise<WhitelistEntry[]>;
19
+ findOrganisationByDomain(domain: string): Promise<string | number | null>;
20
+ getApiKey(organisationId: string | number, _type?: 'client' | 'server'): Promise<string | null>;
21
+ isIpWhitelisted(ip: string): Promise<boolean>;
22
+ isDomainWhitelisted(domain: string): Promise<boolean>;
23
+ addGlobalDomain(domain: string): void;
24
+ removeGlobalDomain(domain: string): void;
25
+ addWhitelistEntry(entry: WhitelistEntry): void;
26
+ removeWhitelistEntry(id: string | number): void;
27
+ setApiKey(organisationId: string | number, apiKey: string): void;
28
+ clear(): void;
29
+ }
30
+ //# sourceMappingURL=InMemoryStorageAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryStorageAdapter.d.ts","sourceRoot":"","sources":["../../../../src/adapters/storage/InMemoryStorageAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlE,MAAM,WAAW,qBAAqB;IACpC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,CAAC,EAAE,cAAc,EAAE,CAAC;IACpC,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,cAAc;IAC3D,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,OAAO,CAA+B;gBAElC,MAAM,GAAE,qBAA0B;IAMxC,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIvC,mBAAmB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIhD,wBAAwB,CAC5B,cAAc,EAAE,MAAM,GAAG,MAAM,GAC9B,OAAO,CAAC,cAAc,EAAE,CAAC;IAMtB,wBAAwB,CAC5B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAQ5B,SAAS,CACb,cAAc,EAAE,MAAM,GAAG,MAAM,EAC/B,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAC1B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAInB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM7C,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW3D,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMrC,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOxC,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAI9C,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAO/C,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAIhE,KAAK,IAAI,IAAI;CAKd"}