@cogenta/core 0.4.0 → 0.7.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.
- package/CHANGELOG.md +3532 -0
- package/dist/config/env.d.ts +21 -0
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +72 -0
- package/dist/config/env.js.map +1 -1
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/load-config.d.ts +9 -0
- package/dist/config/load-config.d.ts.map +1 -1
- package/dist/config/load-config.js +39 -15
- package/dist/config/load-config.js.map +1 -1
- package/dist/config/resolve-config.d.ts.map +1 -1
- package/dist/config/resolve-config.js +39 -0
- package/dist/config/resolve-config.js.map +1 -1
- package/dist/config/schema.d.ts +49 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +149 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/config/secret-hygiene.d.ts +55 -0
- package/dist/config/secret-hygiene.d.ts.map +1 -0
- package/dist/config/secret-hygiene.js +94 -0
- package/dist/config/secret-hygiene.js.map +1 -0
- package/dist/config/types.d.ts +166 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +4 -0
- package/dist/config/types.js.map +1 -1
- package/dist/drivers/index.d.ts +1 -1
- package/dist/drivers/index.d.ts.map +1 -1
- package/dist/drivers/index.js.map +1 -1
- package/dist/drivers/registry.d.ts.map +1 -1
- package/dist/drivers/registry.js +15 -8
- package/dist/drivers/registry.js.map +1 -1
- package/dist/drivers/types.d.ts +23 -0
- package/dist/drivers/types.d.ts.map +1 -1
- package/dist/errors/codes.d.ts +1 -1
- package/dist/errors/codes.d.ts.map +1 -1
- package/dist/errors/codes.js +244 -0
- package/dist/errors/codes.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/logger/error-log.d.ts +48 -0
- package/dist/logger/error-log.d.ts.map +1 -0
- package/dist/logger/error-log.js +57 -0
- package/dist/logger/error-log.js.map +1 -0
- package/dist/logger/index.d.ts +2 -0
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +1 -0
- package/dist/logger/index.js.map +1 -1
- package/dist/media/exif.d.ts +46 -0
- package/dist/media/exif.d.ts.map +1 -0
- package/dist/media/exif.js +291 -0
- package/dist/media/exif.js.map +1 -0
- package/dist/media/folder-path.d.ts +16 -0
- package/dist/media/folder-path.d.ts.map +1 -0
- package/dist/media/folder-path.js +51 -0
- package/dist/media/folder-path.js.map +1 -0
- package/dist/media/folder-store.d.ts +26 -0
- package/dist/media/folder-store.d.ts.map +1 -0
- package/dist/media/folder-store.js +361 -0
- package/dist/media/folder-store.js.map +1 -0
- package/dist/media/index.d.ts +5 -2
- package/dist/media/index.d.ts.map +1 -1
- package/dist/media/index.js +4 -1
- package/dist/media/index.js.map +1 -1
- package/dist/media/sql-fragments.d.ts +19 -0
- package/dist/media/sql-fragments.d.ts.map +1 -0
- package/dist/media/sql-fragments.js +29 -0
- package/dist/media/sql-fragments.js.map +1 -0
- package/dist/media/store.d.ts +1 -0
- package/dist/media/store.d.ts.map +1 -1
- package/dist/media/store.js +175 -20
- package/dist/media/store.js.map +1 -1
- package/dist/media/types.d.ts +148 -0
- package/dist/media/types.d.ts.map +1 -1
- package/dist/queue/bullmq.d.ts +4 -0
- package/dist/queue/bullmq.d.ts.map +1 -1
- package/dist/queue/bullmq.js +53 -10
- package/dist/queue/bullmq.js.map +1 -1
- package/dist/queue/database.d.ts.map +1 -1
- package/dist/queue/database.js +32 -11
- package/dist/queue/database.js.map +1 -1
- package/dist/queue/types.d.ts +19 -0
- package/dist/queue/types.d.ts.map +1 -1
- package/dist/rate-limit/index.d.ts +21 -0
- package/dist/rate-limit/index.d.ts.map +1 -0
- package/dist/rate-limit/index.js +25 -0
- package/dist/rate-limit/index.js.map +1 -0
- package/dist/rate-limit/memory.d.ts +17 -0
- package/dist/rate-limit/memory.d.ts.map +1 -0
- package/dist/rate-limit/memory.js +61 -0
- package/dist/rate-limit/memory.js.map +1 -0
- package/dist/rate-limit/redis.d.ts +55 -0
- package/dist/rate-limit/redis.d.ts.map +1 -0
- package/dist/rate-limit/redis.js +134 -0
- package/dist/rate-limit/redis.js.map +1 -0
- package/dist/rate-limit/types.d.ts +52 -0
- package/dist/rate-limit/types.d.ts.map +1 -0
- package/dist/rate-limit/types.js +2 -0
- package/dist/rate-limit/types.js.map +1 -0
- package/dist/version.d.ts +39 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +84 -0
- package/dist/version.js.map +1 -0
- package/package.json +3 -2
package/dist/queue/bullmq.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bullmq.js","sourceRoot":"","sources":["../../src/queue/bullmq.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bullmq.js","sourceRoot":"","sources":["../../src/queue/bullmq.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAmG9D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAA4B,CAAA;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,cAAc,GAAG,eAAe,CAAA;AACtC,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AACtC,MAAM,kBAAkB,GAAG,EAAE,CAAA;AAC7B,MAAM,kBAAkB,GAAG,IAAI,CAAA;AAC/B,MAAM,2BAA2B,GAAG,MAAM,CAAA;AAC1C,MAAM,oBAAoB,GAAG,CAAC,CAAA;AAC9B,MAAM,gBAAgB,GAAG,IAAI,CAAA;AAE7B,8EAA8E;AAC9E,MAAM,aAAa,GAAG,mBAAmB,CAAA;AAEzC;;;;;;GAMG;AACH,MAAM,eAAe,GAAG,SAAS,CAAA;AACjC,MAAM,mBAAmB,GAAG,SAAS,CAAA;AAErC,SAAS,gBAAgB,CAAC,QAAgB;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAA;AAC3F,CAAC;AAED,MAAM,IAAI,GAAG,gEAAgE,CAAA;AAE7E;;;;GAIG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,KAAa;IAC9C,OAAO,GAAG,IAAI,IAAI,KAAK,EAAE,CAAA;AAC3B,CAAC;AAED,SAAS,WAAW,CAAC,EAAS;IAC5B,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAExB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;IAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAElC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAA;AACzC,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,WAAW;YACd,OAAO,WAAW,CAAA;QACpB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAA;QACjB,KAAK,QAAQ;YACX,OAAO,SAAS,CAAA;QAClB,0EAA0E;QAC1E;YACE,OAAO,SAAS,CAAA;IACpB,CAAC;AACH,CAAC;AAED,kMAAkM;AAClM,SAAS,aAAa,CAAC,MAAiB;IACtC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,WAAW;YACd,OAAO,WAAW,CAAA;QACpB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAA;QACjB,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAA;QACjB;YACE,OAAO,SAAS,CAAA;IACpB,CAAC;AACH,CAAC;AAOD,KAAK,UAAU,UAAU,CAAC,GAAkB;IAC1C,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAA;IACrC,OAAO;QACL,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;QACvC,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;QACzC,OAAO,EAAE,GAAG,CAAC,YAAY;QACzB,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,oBAAoB;QACtD,KAAK,EAAE,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,KAAK;QAChC,SAAS,EAAE,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY;KACxF,CAAA;AACH,CAAC;AAoBD;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAA;IACnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,cAAc,CAAA;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAA;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAA;IACzD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAA;IACzD,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,IAAI,2BAA2B,CAAA;IAChF,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;IAE/E,MAAM,UAAU,GAAyB,EAAE,GAAG,EAAE,CAAA;IAChD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAA;IACrD,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAA;IACjD,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAA;IAEnD,gFAAgF;IAChF,MAAM,YAAY,GAAG,GAAG,MAAM,YAAY,CAAA;IAE1C,SAAS,QAAQ,CAAC,IAAY;QAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACjC,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAA;QAE3C,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAA;QAC9D,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACzB,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,KAAK,UAAU,KAAK;QAClB,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAC,MAAM,CAAA;IACpD,CAAC;IAED,KAAK,UAAU,SAAS,CAAC,IAAY;QACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAClC,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAA;QAE3C,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE;YAC5C,UAAU;YACV,MAAM;YACN,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,OAAO;YACrB,eAAe;YACf,sEAAsE;YACtE,wEAAwE;YACxE,8CAA8C;YAC9C,eAAe,EAAE,IAAI;SACtB,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAE1B,2EAA2E;QAC3E,wEAAwE;QACxE,gBAAgB;QAChB,MAAM,OAAO,CAAC,sBAAsB,EAAE,CAAA;QACtC,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,GAAkB,EAAE,KAAa;QACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACtC,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QAC9C,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,oBAAoB,CAAA;QAE7D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,uEAAuE;YACvE,0EAA0E;YAC1E,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,8BAA8B,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;YAC3F,OAAM;QACR,CAAC;QAED,MAAM,OAAO,GAAQ;YACnB,EAAE;YACF,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAG,GAAG,CAAC,IAAoB,CAAC,OAAO;YAC1C,+DAA+D;YAC/D,OAAO,EAAE,GAAG,CAAC,YAAY,GAAG,CAAC;YAC7B,WAAW;SACZ,CAAA;QAED,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,OAAgB,CAAC,CAAA;YAC/B,MAAM,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YACzE,MAAM,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;YAE7C,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,IAAI,WAAW,CAAA;YAChD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,wBAAwB,EAAE;gBACxE,EAAE;gBACF,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,WAAW;aACZ,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,KAAK,EAAE,cAA8B,EAAkB,EAAE;YAChE,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,YAAY,CAAC;oBACrB,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,yBAAyB;oBAClC,IAAI,EAAE,yEAAyE;iBAChF,CAAC,CAAA;YACJ,CAAC;YAED,MAAM,KAAK,GAAG,UAAU,EAAE,CAAA;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;YAElE,MAAM,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,CACrC,cAAc,CAAC,IAAI,EACnB,EAAE,OAAO,EAAE,cAAc,CAAC,OAAO,IAAI,IAAI,EAAwB,EACjE;gBACE,KAAK;gBACL,QAAQ,EAAE,gBAAgB,CAAC,cAAc,CAAC,QAAQ,IAAI,CAAC,CAAC;gBACxD,QAAQ,EAAE,cAAc,CAAC,WAAW,IAAI,oBAAoB;gBAC5D,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE;gBAClD,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChC,CACF,CAAA;YAED,OAAO,WAAW,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAChD,CAAC;QAED,OAAO,EAAE,CAAW,IAAY,EAAE,OAA6B,EAAQ,EAAE;YACvE,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,YAAY,CAAC;oBACrB,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,mDAAmD,IAAI,IAAI;oBACpE,IAAI,EAAE,8FAA8F;iBACrG,CAAC,CAAA;YACJ,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAA4B,CAAC,CAAA;QAClD,CAAC;QAED,IAAI,EAAE,KAAK,IAAqB,EAAE;YAChC,IAAI,OAAO,GAAG,CAAC,CAAA;YAEf,sEAAsE;YACtE,sEAAsE;YACtE,+BAA+B;YAC/B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;gBAEpC,OAAO,OAAO,GAAG,SAAS,EAAE,CAAC;oBAC3B,kEAAkE;oBAClE,yCAAyC;oBACzC,MAAM,KAAK,GAAG,UAAU,EAAE,CAAA;oBAC1B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;oBAC5D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;wBAAE,MAAK;oBAE5C,OAAO,IAAI,CAAC,CAAA;oBACZ,MAAM,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;gBAC1B,CAAC;gBAED,IAAI,OAAO,IAAI,SAAS;oBAAE,MAAK;YACjC,CAAC;YAED,OAAO,OAAO,CAAA;QAChB,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,EAAS,EAAiB,EAAE;YACzC,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAA;YAC9B,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAM;YAE3B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC5D,IAAI,GAAG,KAAK,SAAS;gBAAE,OAAM;YAE7B,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC/C,2EAA2E;YAC3E,mDAAmD;YACnD,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAM;YAE/B,MAAM,SAAS,GAAa;gBAC1B,EAAE;gBACF,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE,GAAG,CAAC,YAAY;gBACzB,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,oBAAoB;gBACtD,KAAK,EAAE,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,KAAK;gBAChC,SAAS,EAAE,SAAS;aACrB,CAAA;YAED,wEAAwE;YACxE,4EAA4E;YAC5E,MAAM,MAAM,GAAG,MAAM,KAAK,EAAE,CAAA;YAC5B,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA;YAC9D,MAAM,GAAG,CAAC,MAAM,EAAE,CAAA;QACpB,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,EAAS,EAA4B,EAAE;YACpD,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAA;YAC9B,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAA;YAEhC,MAAM,MAAM,GAAG,MAAM,KAAK,EAAE,CAAA;YAC5B,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;YACrD,IAAI,SAAS,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAa,CAAA;YAEhE,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC5D,IAAI,GAAG,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAA;YAElC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAA;QACxB,CAAC;QAED,qEAAqE;QACrE,sEAAsE;QACtE,mEAAmE;QACnE,kEAAkE;QAClE,gDAAgD;QAChD,IAAI,EAAE,KAAK,EAAE,WAAW,GAAoB,EAAE,EAAgC,EAAE;YAC9E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YACrE,MAAM,KAAK,GACT,WAAW,CAAC,MAAM,KAAK,SAAS;gBAC9B,CAAC,CAAE,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAW;gBACpE,CAAC,CAAE,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAW,CAAA;YAEpD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CACrE,CAAA;YAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAE/E,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;YACxC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;QACjD,CAAC;QAED,KAAK,EAAE,KAAK,EAAE,EAAS,EAAoB,EAAE;YAC3C,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAA;YAC9B,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAA;YAEjC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC5D,IAAI,GAAG,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAA;YACnC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAA;YAEhE,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YACzB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,KAAK,EAAE,KAAK,IAAmB,EAAE;YAC/B,QAAQ,CAAC,KAAK,EAAE,CAAA;YAChB,0EAA0E;YAC1E,yEAAyE;YACzE,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;gBAAE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YAC3D,OAAO,CAAC,KAAK,EAAE,CAAA;YACf,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;gBAAE,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;YACxD,MAAM,CAAC,KAAK,EAAE,CAAA;QAChB,CAAC;KACF,CAAA;AACH,CAAC;AAED,iFAAiF;AACjF,SAAS,UAAU,CAAC,OAAe;IACjC,OAAO,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAA;AAC5D,CAAC;AAED,KAAK,UAAU,YAAY,CAAI,IAAgB,EAAE,EAAU;IACzD,IAAI,KAAiC,CAAA;IACrC,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC;YACxB,IAAI;YACJ,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBAC/B,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAClF,CAAC,CAAC;SACH,CAAC,CAAA;IACJ,CAAC;YAAS,CAAC;QACT,IAAI,KAAK,KAAK,SAAS;YAAE,YAAY,CAAC,KAAK,CAAC,CAAA;IAC9C,CAAC;AACH,CAAC;AAID,MAAM,UAAU,iBAAiB,CAC/B,OAAO,GAA6B,EAAE;IAEtC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,cAAc,CAAA;IAC/C,IAAI,QAAiC,CAAA;IACrC,IAAI,KAAkC,CAAA;IAEtC,KAAK,UAAU,WAAW;QACxB,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAA;QACvC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,YAAY,CAAC;gBACrB,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,oDAAoD;gBAC7D,IAAI,EAAE,+EAA+E;aACtF,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,SAAS;QAEf,6EAA6E;QAC7E,uDAAuD;QACvD,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC1B,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAA;YAE1C,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAA;YACvC,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAA;YAEjC,qEAAqE;YACrE,wEAAwE;YACxE,8DAA8D;YAC9D,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE;gBAC9C,UAAU,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE;gBAC1D,MAAM;aACP,CAAC,CAAA;YACF,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;gBAChF,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,gBAAgB,CAAC,CAAA;gBACnD,OAAO,IAAI,CAAA;YACb,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAA;YACd,CAAC;oBAAS,CAAC;gBACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;YAC9C,CAAC;QACH,CAAC;QAED,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACrB,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAA;YAClC,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAA;YACtB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,MAAM,IAAI,YAAY,CAAC;oBACrB,IAAI,EAAE,oBAAoB;oBAC1B,OAAO,EAAE,gDAAgD;oBACzD,IAAI,EAAE,sFAAsF;iBAC7F,CAAC,CAAA;YACJ,CAAC;YAED,KAAK,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;YAC1E,QAAQ,KAAK,iBAAiB,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YAC3D,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC;gBACH,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAA;gBACvB,MAAM,KAAK,EAAE,KAAK,EAAE,CAAA;YACtB,CAAC;YAAC,MAAM,CAAC;gBACP,iEAAiE;YACnE,CAAC;YACD,QAAQ,GAAG,SAAS,CAAA;YACpB,KAAK,GAAG,SAAS,CAAA;QACnB,CAAC;QAED,MAAM,EAAE,KAAK,IAA2B,EAAE;YACxC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAA;YACzF,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAC5B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;gBAC9E,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,gBAAgB,CAAC,CAAA;gBACnD,OAAO;oBACL,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,QAAQ;oBAChB,IAAI,EAAE,SAAS;oBACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;oBACjC,4DAA4D;oBAC5D,OAAO,EAAE,YAAY;iBACtB,CAAA;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,QAAQ;oBAChB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,UAAU,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC;iBACtF,CAAA;YACH,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/queue/database.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAMpB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/queue/database.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAMpB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,KAAK,EAOV,WAAW,EACX,kBAAkB,EACnB,MAAM,YAAY,CAAA;AAOnB,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAwDD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,WAAW,CAwP9E"}
|
package/dist/queue/database.js
CHANGED
|
@@ -7,6 +7,17 @@ const TABLE = 'cogenta_jobs';
|
|
|
7
7
|
const DEFAULT_LEASE_MS = 5 * 60 * 1000;
|
|
8
8
|
const DEFAULT_BATCH_SIZE = 10;
|
|
9
9
|
const MAX_BACKOFF_MS = 60_000;
|
|
10
|
+
function toJobState(row) {
|
|
11
|
+
return {
|
|
12
|
+
id: row.id,
|
|
13
|
+
name: row.name,
|
|
14
|
+
status: row.status,
|
|
15
|
+
attempt: Number(row.attempt),
|
|
16
|
+
maxAttempts: Number(row.max_attempts),
|
|
17
|
+
runAt: Number(row.run_at),
|
|
18
|
+
lastError: row.last_error ?? undefined,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
10
21
|
/** Exponential, capped. A failing job must not retry in a tight loop. */
|
|
11
22
|
function backoffMs(attempt) {
|
|
12
23
|
return Math.min(2 ** attempt * 1000, MAX_BACKOFF_MS);
|
|
@@ -222,17 +233,27 @@ export function createDatabaseQueue(options) {
|
|
|
222
233
|
select id, name, status, attempt, max_attempts, run_at, last_error
|
|
223
234
|
from ${table} where id = ${id}`);
|
|
224
235
|
const row = result.rows[0];
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
+
return row === undefined ? null : toJobState(row);
|
|
237
|
+
},
|
|
238
|
+
list: async (listOptions = {}) => {
|
|
239
|
+
await ensureTable();
|
|
240
|
+
const statusFilter = listOptions.status === undefined ? sql `1 = 1` : sql `status = ${listOptions.status}`;
|
|
241
|
+
const result = await db.query(sql `
|
|
242
|
+
select id, name, status, attempt, max_attempts, run_at, last_error
|
|
243
|
+
from ${table}
|
|
244
|
+
where ${statusFilter}
|
|
245
|
+
order by run_at desc
|
|
246
|
+
limit ${limit(listOptions.limit ?? 50)}`);
|
|
247
|
+
return result.rows.map(toJobState);
|
|
248
|
+
},
|
|
249
|
+
retry: async (id) => {
|
|
250
|
+
await ensureTable();
|
|
251
|
+
const result = await db.query(sql `
|
|
252
|
+
update ${table}
|
|
253
|
+
set status = ${'pending'}, attempt = ${0}, run_at = ${now()}, last_error = ${null},
|
|
254
|
+
locked_by = ${null}, locked_until = ${null}
|
|
255
|
+
where id = ${id} and status = ${'failed'}`);
|
|
256
|
+
return result.rowsAffected > 0;
|
|
236
257
|
},
|
|
237
258
|
close: async () => {
|
|
238
259
|
handlers.clear();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/queue/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,EAEL,UAAU,EACV,KAAK,EAEL,GAAG,EACH,SAAS,GACV,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/queue/database.ts"],"names":[],"mappings":"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"}
|
package/dist/queue/types.d.ts
CHANGED
|
@@ -27,6 +27,12 @@ export interface JobState {
|
|
|
27
27
|
readonly lastError: string | undefined;
|
|
28
28
|
}
|
|
29
29
|
export type JobHandler<TPayload = unknown> = (job: Job<TPayload>) => Promise<void>;
|
|
30
|
+
export interface ListJobsOptions {
|
|
31
|
+
/** Narrows to one status. Absent lists every status. */
|
|
32
|
+
readonly status?: JobStatus;
|
|
33
|
+
/** Most recently touched first. Defaults to 50. */
|
|
34
|
+
readonly limit?: number;
|
|
35
|
+
}
|
|
30
36
|
export interface QueueDriver {
|
|
31
37
|
enqueue(options: EnqueueOptions): Promise<JobId>;
|
|
32
38
|
/** Registers the handler for a job name. One handler per name. */
|
|
@@ -41,6 +47,19 @@ export interface QueueDriver {
|
|
|
41
47
|
tick(): Promise<number>;
|
|
42
48
|
cancel(id: JobId): Promise<void>;
|
|
43
49
|
status(id: JobId): Promise<JobState | null>;
|
|
50
|
+
/**
|
|
51
|
+
* Lists jobs, most recently touched first — what fiche 28's admin screen
|
|
52
|
+
* shows as "pending / running / failed" in its queue section.
|
|
53
|
+
*/
|
|
54
|
+
list(options?: ListJobsOptions): Promise<readonly JobState[]>;
|
|
55
|
+
/**
|
|
56
|
+
* Puts a `failed` job back to `pending` so the next `tick()` picks it up
|
|
57
|
+
* again, with its attempt counter reset. `false` for a job that is not
|
|
58
|
+
* `failed` (already retried, already gone, still running) — a no-op, not
|
|
59
|
+
* an error, since two admins clicking "retry" on the same job at once must
|
|
60
|
+
* not throw for the one who lost the race.
|
|
61
|
+
*/
|
|
62
|
+
retry(id: JobId): Promise<boolean>;
|
|
44
63
|
close(): Promise<void>;
|
|
45
64
|
}
|
|
46
65
|
export interface QueueConfig {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/queue/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG,MAAM,CAAA;AAE1B,eAAO,MAAM,YAAY,YAAI,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAA;AAE/F,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AAErD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,yDAAyD;IACzD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,GAAG,CAAC,QAAQ,GAAG,OAAO;IACrC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;CACvC;AAED,MAAM,MAAM,UAAU,CAAC,QAAQ,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAElF,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IAChD,kEAAkE;IAClE,OAAO,CAAC,QAAQ,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAA;IAC9E;;;;;;OAMG;IACH,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACvB,MAAM,CAAC,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,MAAM,CAAC,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAA;IAC3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAC3B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,+BAA+B;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/queue/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type DriverRegistry } from '../drivers/index.js';
|
|
2
|
+
import type { Logger } from '../logger/index.js';
|
|
3
|
+
import type { RateLimitConfig, RateLimitDriver, RateLimitDriverOptions } from './types.js';
|
|
4
|
+
export { createMemoryRateLimiter, memoryRateLimitDriver } from './memory.js';
|
|
5
|
+
export type { RedisRateLimitOptions } from './redis.js';
|
|
6
|
+
export { createRedisRateLimiter, loadRateLimitRedisModule, redisRateLimitDriver } from './redis.js';
|
|
7
|
+
export type { RateLimitConfig, RateLimitConsumeOptions, RateLimitDriver, RateLimitDriverOptions, RateLimitResult, } from './types.js';
|
|
8
|
+
export interface RateLimitRegistryOptions extends RateLimitDriverOptions {
|
|
9
|
+
readonly logger?: Logger;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The request-quota drivers Cogenta ships, in tier order (fiche 20 task 3).
|
|
13
|
+
*
|
|
14
|
+
* `redis` before `memory`: both work with no configuration, but only Redis
|
|
15
|
+
* keeps one true count across every process a site runs — the whole reason
|
|
16
|
+
* a multi-process deployment would want it. R1 still holds: `memory` is
|
|
17
|
+
* always available, so a site with no Redis loses nothing but that
|
|
18
|
+
* cross-process precision.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createRateLimitRegistry(options?: RateLimitRegistryOptions): DriverRegistry<RateLimitDriver, RateLimitConfig>;
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rate-limit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGhD,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAE1F,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAC5E,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACnG,YAAY,EACV,eAAe,EACf,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,eAAe,GAChB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,wBAAyB,SAAQ,sBAAsB;IACtE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,wBAA6B,GACrC,cAAc,CAAC,eAAe,EAAE,eAAe,CAAC,CAWlD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { createDriverRegistry } from '../drivers/index.js';
|
|
2
|
+
import { memoryRateLimitDriver } from './memory.js';
|
|
3
|
+
import { redisRateLimitDriver } from './redis.js';
|
|
4
|
+
export { createMemoryRateLimiter, memoryRateLimitDriver } from './memory.js';
|
|
5
|
+
export { createRedisRateLimiter, loadRateLimitRedisModule, redisRateLimitDriver } from './redis.js';
|
|
6
|
+
/**
|
|
7
|
+
* The request-quota drivers Cogenta ships, in tier order (fiche 20 task 3).
|
|
8
|
+
*
|
|
9
|
+
* `redis` before `memory`: both work with no configuration, but only Redis
|
|
10
|
+
* keeps one true count across every process a site runs — the whole reason
|
|
11
|
+
* a multi-process deployment would want it. R1 still holds: `memory` is
|
|
12
|
+
* always available, so a site with no Redis loses nothing but that
|
|
13
|
+
* cross-process precision.
|
|
14
|
+
*/
|
|
15
|
+
export function createRateLimitRegistry(options = {}) {
|
|
16
|
+
const { logger, ...driverOptions } = options;
|
|
17
|
+
const registry = createDriverRegistry({
|
|
18
|
+
need: 'rateLimit',
|
|
19
|
+
...(logger === undefined ? {} : { logger }),
|
|
20
|
+
});
|
|
21
|
+
registry.register(redisRateLimitDriver(driverOptions));
|
|
22
|
+
registry.register(memoryRateLimitDriver(driverOptions));
|
|
23
|
+
return registry;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rate-limit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAuB,MAAM,qBAAqB,CAAA;AAE/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAGjD,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAE5E,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAanG;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAO,GAA6B,EAAE;IAEtC,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAA;IAC5C,MAAM,QAAQ,GAAG,oBAAoB,CAAmC;QACtE,IAAI,EAAE,WAAW;QACjB,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5C,CAAC,CAAA;IAEF,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAA;IACtD,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAA;IAEvD,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Driver } from '../drivers/index.js';
|
|
2
|
+
import type { RateLimitConfig, RateLimitDriver, RateLimitDriverOptions } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* In-process fixed-window counter. Needs nothing at all, so it is what a
|
|
5
|
+
* single-process site falls back to when there is no Redis — exactly the
|
|
6
|
+
* degraded half of R1, and the one that must work by default, since
|
|
7
|
+
* `npm create cogenta` produces a site with nothing else installed.
|
|
8
|
+
*
|
|
9
|
+
* Its counters die with the process, which only matters for a multi-process
|
|
10
|
+
* deployment: each process enforces its own quota independently, so the
|
|
11
|
+
* effective ceiling is `limit * processCount` rather than `limit`. That is
|
|
12
|
+
* the documented trade a site accepts by not running Redis, the same one
|
|
13
|
+
* `memoryCacheDriver` makes for caching.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createMemoryRateLimiter(options?: RateLimitDriverOptions): RateLimitDriver;
|
|
16
|
+
export declare function memoryRateLimitDriver(options?: RateLimitDriverOptions): Driver<RateLimitDriver, RateLimitConfig>;
|
|
17
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/rate-limit/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,sBAAsB,EAEvB,MAAM,YAAY,CAAA;AAOnB;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,sBAA2B,GAAG,eAAe,CA+B7F;AAED,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,sBAA2B,GACnC,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,CAsB1C"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-process fixed-window counter. Needs nothing at all, so it is what a
|
|
3
|
+
* single-process site falls back to when there is no Redis — exactly the
|
|
4
|
+
* degraded half of R1, and the one that must work by default, since
|
|
5
|
+
* `npm create cogenta` produces a site with nothing else installed.
|
|
6
|
+
*
|
|
7
|
+
* Its counters die with the process, which only matters for a multi-process
|
|
8
|
+
* deployment: each process enforces its own quota independently, so the
|
|
9
|
+
* effective ceiling is `limit * processCount` rather than `limit`. That is
|
|
10
|
+
* the documented trade a site accepts by not running Redis, the same one
|
|
11
|
+
* `memoryCacheDriver` makes for caching.
|
|
12
|
+
*/
|
|
13
|
+
export function createMemoryRateLimiter(options = {}) {
|
|
14
|
+
const now = options.now ?? Date.now;
|
|
15
|
+
const buckets = new Map();
|
|
16
|
+
return {
|
|
17
|
+
consume: async (key, { limit, windowMs }) => {
|
|
18
|
+
const current = now();
|
|
19
|
+
const existing = buckets.get(key);
|
|
20
|
+
const bucket = existing !== undefined && existing.resetAt > current
|
|
21
|
+
? existing
|
|
22
|
+
: { count: 0, resetAt: current + windowMs };
|
|
23
|
+
bucket.count += 1;
|
|
24
|
+
buckets.set(key, bucket);
|
|
25
|
+
return {
|
|
26
|
+
allowed: bucket.count <= limit,
|
|
27
|
+
limit,
|
|
28
|
+
remaining: Math.max(0, limit - bucket.count),
|
|
29
|
+
resetAt: bucket.resetAt,
|
|
30
|
+
};
|
|
31
|
+
},
|
|
32
|
+
// `windowMs` is unused here: this driver stores one bucket per raw key,
|
|
33
|
+
// carrying its own `resetAt`, so it never needs the window length to
|
|
34
|
+
// find it — unlike Redis, which names the bucket by window.
|
|
35
|
+
reset: async (key, _windowMs) => {
|
|
36
|
+
buckets.delete(key);
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export function memoryRateLimitDriver(options = {}) {
|
|
41
|
+
let instance;
|
|
42
|
+
return {
|
|
43
|
+
name: 'memory',
|
|
44
|
+
tier: 'degraded',
|
|
45
|
+
available: async () => true,
|
|
46
|
+
init: async () => {
|
|
47
|
+
instance ??= createMemoryRateLimiter(options);
|
|
48
|
+
return instance;
|
|
49
|
+
},
|
|
50
|
+
dispose: async () => {
|
|
51
|
+
instance = undefined;
|
|
52
|
+
},
|
|
53
|
+
health: async () => ({
|
|
54
|
+
status: 'degraded',
|
|
55
|
+
driver: 'memory',
|
|
56
|
+
tier: 'degraded',
|
|
57
|
+
message: 'In-process request counter. Each server process enforces its own quota independently.',
|
|
58
|
+
}),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/rate-limit/memory.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAO,GAA2B,EAAE;IAC1E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAA;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;IAEzC,OAAO;QACL,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAA4B,EAAE;YACpE,MAAM,OAAO,GAAG,GAAG,EAAE,CAAA;YACrB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAEjC,MAAM,MAAM,GACV,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,OAAO,GAAG,OAAO;gBAClD,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,EAAE,CAAA;YAC/C,MAAM,CAAC,KAAK,IAAI,CAAC,CAAA;YACjB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YAExB,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK;gBAC9B,KAAK;gBACL,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC5C,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAA;QACH,CAAC;QAED,wEAAwE;QACxE,qEAAqE;QACrE,4DAA4D;QAC5D,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;YAC9B,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACrB,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAAO,GAA2B,EAAE;IAEpC,IAAI,QAAqC,CAAA;IAEzC,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;QAC3B,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,QAAQ,KAAK,uBAAuB,CAAC,OAAO,CAAC,CAAA;YAC7C,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,QAAQ,GAAG,SAAS,CAAA;QACtB,CAAC;QACD,MAAM,EAAE,KAAK,IAA2B,EAAE,CAAC,CAAC;YAC1C,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,UAAU;YAChB,OAAO,EACL,uFAAuF;SAC1F,CAAC;KACH,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { Driver } from '../drivers/index.js';
|
|
2
|
+
import type { RateLimitConfig, RateLimitDriver, RateLimitDriverOptions } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Only what this driver calls, described structurally — the same reasoning as
|
|
5
|
+
* `@cogenta/core`'s cache driver: importing `@redis/client`'s own types would
|
|
6
|
+
* put an optional peer dependency in the published type declarations, and a
|
|
7
|
+
* site with no Redis must not need it installed just to typecheck.
|
|
8
|
+
*/
|
|
9
|
+
interface RedisClientLike {
|
|
10
|
+
connect(): Promise<unknown>;
|
|
11
|
+
quit(): Promise<unknown>;
|
|
12
|
+
ping(): Promise<string>;
|
|
13
|
+
incr(key: string): Promise<number>;
|
|
14
|
+
pExpire(key: string, milliseconds: number): Promise<unknown>;
|
|
15
|
+
del(keys: string[]): Promise<number>;
|
|
16
|
+
}
|
|
17
|
+
interface RedisModuleLike {
|
|
18
|
+
createClient(options: {
|
|
19
|
+
url?: string;
|
|
20
|
+
}): RedisClientLike;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Loads the client if the host application installed it. Absent is a normal
|
|
24
|
+
* outcome, not an error: it is what makes the registry fall through to the
|
|
25
|
+
* memory driver, and what lets `pnpm install` stay dependency-free (R1).
|
|
26
|
+
*
|
|
27
|
+
* A second, independent loader from the cache driver's own `loadRedisModule`
|
|
28
|
+
* rather than a shared one: the two needs are unrelated infrastructure
|
|
29
|
+
* (`need: 'cache'` vs `need: 'rateLimit'`), and each keeps its own narrow
|
|
30
|
+
* structural type for exactly the methods it calls, instead of coupling
|
|
31
|
+
* through a shared "everything Redis" interface neither of them wants.
|
|
32
|
+
*/
|
|
33
|
+
export declare function loadRateLimitRedisModule(): Promise<RedisModuleLike | null>;
|
|
34
|
+
export interface RedisRateLimitOptions extends RateLimitDriverOptions {
|
|
35
|
+
readonly client: RedisClientLike;
|
|
36
|
+
/** Namespace for every key this driver writes. A Redis instance is often shared. */
|
|
37
|
+
readonly prefix?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* A fixed-window counter kept in Redis, so every server process sharing that
|
|
41
|
+
* Redis enforces the *same* quota for a key — the property the in-process
|
|
42
|
+
* driver cannot offer.
|
|
43
|
+
*
|
|
44
|
+
* The window is the bucket's identity, not a value read back and compared:
|
|
45
|
+
* `key:{windowIndex}` names a fresh counter every `windowMs`, `INCR` creates
|
|
46
|
+
* and increments it atomically in one round trip, and `PEXPIRE` is set only
|
|
47
|
+
* once — on the call that creates the bucket — so Redis reclaims it on its
|
|
48
|
+
* own clock without this driver ever having to sweep for expired keys.
|
|
49
|
+
*/
|
|
50
|
+
export declare function createRedisRateLimiter(options: RedisRateLimitOptions): RateLimitDriver;
|
|
51
|
+
export declare function redisRateLimitDriver(options?: RateLimitDriverOptions & {
|
|
52
|
+
prefix?: string;
|
|
53
|
+
}): Driver<RateLimitDriver, RateLimitConfig>;
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=redis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/rate-limit/redis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,qBAAqB,CAAA;AAE/D,OAAO,KAAK,EACV,eAAe,EAEf,eAAe,EACf,sBAAsB,EAEvB,MAAM,YAAY,CAAA;AAEnB;;;;;GAKG;AACH,UAAU,eAAe;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3B,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IACxB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACvB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAClC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC5D,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACrC;AAED,UAAU,eAAe;IACvB,YAAY,CAAC,OAAO,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,eAAe,CAAA;CACzD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAMhF;AAED,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB;IACnE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;IAChC,oFAAoF;IACpF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,qBAAqB,GAAG,eAAe,CAmCtF;AAED,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,sBAAsB,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GACzD,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,CA4E1C"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { CogentaError } from '../errors/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Loads the client if the host application installed it. Absent is a normal
|
|
4
|
+
* outcome, not an error: it is what makes the registry fall through to the
|
|
5
|
+
* memory driver, and what lets `pnpm install` stay dependency-free (R1).
|
|
6
|
+
*
|
|
7
|
+
* A second, independent loader from the cache driver's own `loadRedisModule`
|
|
8
|
+
* rather than a shared one: the two needs are unrelated infrastructure
|
|
9
|
+
* (`need: 'cache'` vs `need: 'rateLimit'`), and each keeps its own narrow
|
|
10
|
+
* structural type for exactly the methods it calls, instead of coupling
|
|
11
|
+
* through a shared "everything Redis" interface neither of them wants.
|
|
12
|
+
*/
|
|
13
|
+
export async function loadRateLimitRedisModule() {
|
|
14
|
+
try {
|
|
15
|
+
return (await import('@redis/client'));
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A fixed-window counter kept in Redis, so every server process sharing that
|
|
23
|
+
* Redis enforces the *same* quota for a key — the property the in-process
|
|
24
|
+
* driver cannot offer.
|
|
25
|
+
*
|
|
26
|
+
* The window is the bucket's identity, not a value read back and compared:
|
|
27
|
+
* `key:{windowIndex}` names a fresh counter every `windowMs`, `INCR` creates
|
|
28
|
+
* and increments it atomically in one round trip, and `PEXPIRE` is set only
|
|
29
|
+
* once — on the call that creates the bucket — so Redis reclaims it on its
|
|
30
|
+
* own clock without this driver ever having to sweep for expired keys.
|
|
31
|
+
*/
|
|
32
|
+
export function createRedisRateLimiter(options) {
|
|
33
|
+
const now = options.now ?? Date.now;
|
|
34
|
+
const prefix = options.prefix ?? 'cogenta:ratelimit:';
|
|
35
|
+
const { client } = options;
|
|
36
|
+
return {
|
|
37
|
+
consume: async (key, { limit, windowMs }) => {
|
|
38
|
+
const windowIndex = Math.floor(now() / windowMs);
|
|
39
|
+
const bucketKey = `${prefix}${key}:${windowIndex}`;
|
|
40
|
+
const resetAt = (windowIndex + 1) * windowMs;
|
|
41
|
+
const count = await client.incr(bucketKey);
|
|
42
|
+
if (count === 1) {
|
|
43
|
+
// First hit in this window: set the bucket to expire with the window,
|
|
44
|
+
// rather than lingering in memory forever once the site stops
|
|
45
|
+
// calling it.
|
|
46
|
+
await client.pExpire(bucketKey, windowMs);
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
allowed: count <= limit,
|
|
50
|
+
limit,
|
|
51
|
+
remaining: Math.max(0, limit - count),
|
|
52
|
+
resetAt,
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
reset: async (key, windowMs) => {
|
|
56
|
+
const windowIndex = Math.floor(now() / windowMs);
|
|
57
|
+
await client.del([`${prefix}${key}:${windowIndex}`]);
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export function redisRateLimitDriver(options = {}) {
|
|
62
|
+
let client;
|
|
63
|
+
async function open(config) {
|
|
64
|
+
const module = await loadRateLimitRedisModule();
|
|
65
|
+
if (module === null) {
|
|
66
|
+
throw new CogentaError({
|
|
67
|
+
code: 'DRIVER_INIT_FAILED',
|
|
68
|
+
message: 'The Redis rate limit driver needs the "@redis/client" package.',
|
|
69
|
+
hint: 'Run `pnpm add @redis/client`, or leave rateLimit.driver unset to use the in-process counter.',
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
const created = module.createClient(config.url === undefined ? {} : { url: config.url });
|
|
73
|
+
await created.connect();
|
|
74
|
+
return created;
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
name: 'redis',
|
|
78
|
+
tier: 'optimal',
|
|
79
|
+
// Does Redis actually answer? Not "is a URL configured?" — the difference
|
|
80
|
+
// is what turns a graceful fallback into a startup crash.
|
|
81
|
+
available: async (config) => {
|
|
82
|
+
if (config.url === undefined)
|
|
83
|
+
return false;
|
|
84
|
+
try {
|
|
85
|
+
const probe = await open(config);
|
|
86
|
+
await probe.ping();
|
|
87
|
+
await probe.quit();
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
init: async (config) => {
|
|
95
|
+
client ??= await open(config);
|
|
96
|
+
return createRedisRateLimiter({ ...options, client });
|
|
97
|
+
},
|
|
98
|
+
dispose: async () => {
|
|
99
|
+
try {
|
|
100
|
+
await client?.quit();
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// Shutdown must not fail because the connection already dropped.
|
|
104
|
+
}
|
|
105
|
+
client = undefined;
|
|
106
|
+
},
|
|
107
|
+
health: async () => {
|
|
108
|
+
if (client === undefined) {
|
|
109
|
+
return { status: 'down', driver: 'redis', tier: 'optimal', message: 'Not connected.' };
|
|
110
|
+
}
|
|
111
|
+
const startedAt = Date.now();
|
|
112
|
+
try {
|
|
113
|
+
await client.ping();
|
|
114
|
+
return {
|
|
115
|
+
status: 'ok',
|
|
116
|
+
driver: 'redis',
|
|
117
|
+
tier: 'optimal',
|
|
118
|
+
latencyMs: Date.now() - startedAt,
|
|
119
|
+
// The URL is not reported: it routinely carries a password.
|
|
120
|
+
message: 'Connected.',
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
return {
|
|
125
|
+
status: 'down',
|
|
126
|
+
driver: 'redis',
|
|
127
|
+
tier: 'optimal',
|
|
128
|
+
message: error instanceof Error ? error.message : 'Redis did not answer.',
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=redis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/rate-limit/redis.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A per-key request quota (fiche 20, task 3: "Limitation de débit par clé").
|
|
3
|
+
*
|
|
4
|
+
* Drawn from the driver with the least — a single Node process, no external
|
|
5
|
+
* service — the same way `CacheDriver` was: a fixed window counter needs
|
|
6
|
+
* nothing but an atomic increment and an expiry, and that is exactly what
|
|
7
|
+
* both an in-process `Map` and Redis's `INCR`/`PEXPIRE` give for free. A
|
|
8
|
+
* sliding-window or token-bucket algorithm would read nicer but cannot be
|
|
9
|
+
* expressed in one round trip against Redis without a Lua script — a
|
|
10
|
+
* dependency this driver does not need to take (rule R9).
|
|
11
|
+
*/
|
|
12
|
+
export interface RateLimitConsumeOptions {
|
|
13
|
+
/** Maximum requests allowed inside one window. */
|
|
14
|
+
readonly limit: number;
|
|
15
|
+
/** Window length, in milliseconds. */
|
|
16
|
+
readonly windowMs: number;
|
|
17
|
+
}
|
|
18
|
+
export interface RateLimitResult {
|
|
19
|
+
/** `count <= limit` for this call. */
|
|
20
|
+
readonly allowed: boolean;
|
|
21
|
+
readonly limit: number;
|
|
22
|
+
/** `max(0, limit - count)`, after this call was counted. */
|
|
23
|
+
readonly remaining: number;
|
|
24
|
+
/** Unix milliseconds when the current window ends and the count resets. */
|
|
25
|
+
readonly resetAt: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* A counter, keyed by an arbitrary string, that answers "has this key stayed
|
|
29
|
+
* under its quota during the current window?" — nothing else. It is
|
|
30
|
+
* deliberately not a cache: there is no `get` that returns a stored value,
|
|
31
|
+
* only `consume`, which always counts the call it is answering for.
|
|
32
|
+
*/
|
|
33
|
+
export interface RateLimitDriver {
|
|
34
|
+
consume(key: string, options: RateLimitConsumeOptions): Promise<RateLimitResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Clears one key's counter for the window it would currently be counted
|
|
37
|
+
* in — a revoked or rotated credential should not inherit a stale count.
|
|
38
|
+
* `windowMs` must match the value `consume` is called with for this key,
|
|
39
|
+
* since it is part of how a windowed driver (Redis) names the bucket.
|
|
40
|
+
*/
|
|
41
|
+
reset(key: string, windowMs: number): Promise<void>;
|
|
42
|
+
}
|
|
43
|
+
/** The resolved `rateLimit` section of the configuration. */
|
|
44
|
+
export interface RateLimitConfig {
|
|
45
|
+
readonly driver?: string;
|
|
46
|
+
readonly url?: string | undefined;
|
|
47
|
+
}
|
|
48
|
+
export interface RateLimitDriverOptions {
|
|
49
|
+
/** Injected so tests can move the window without waiting. Milliseconds. */
|
|
50
|
+
readonly now?: () => number;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/rate-limit/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,uBAAuB;IACtC,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,4DAA4D;IAC5D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IAChF;;;;;OAKG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACpD;AAED,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAClC;AAED,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/rate-limit/types.ts"],"names":[],"mappings":""}
|