@redmix/api 9.0.0-canary.580 → 9.0.0-canary.582

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 (167) hide show
  1. package/dist/auth/index.d.ts +2 -2
  2. package/dist/auth/index.d.ts.map +1 -1
  3. package/dist/auth/index.js +10 -49
  4. package/dist/auth/parseJWT.js +3 -26
  5. package/dist/auth/verifiers/base64Sha1Verifier.d.ts +1 -1
  6. package/dist/auth/verifiers/base64Sha1Verifier.d.ts.map +1 -1
  7. package/dist/auth/verifiers/base64Sha1Verifier.js +18 -37
  8. package/dist/auth/verifiers/base64Sha256Verifier.d.ts +1 -1
  9. package/dist/auth/verifiers/base64Sha256Verifier.d.ts.map +1 -1
  10. package/dist/auth/verifiers/base64Sha256Verifier.js +18 -37
  11. package/dist/auth/verifiers/common.d.ts +8 -8
  12. package/dist/auth/verifiers/common.d.ts.map +1 -1
  13. package/dist/auth/verifiers/common.js +19 -58
  14. package/dist/auth/verifiers/index.d.ts +2 -2
  15. package/dist/auth/verifiers/index.d.ts.map +1 -1
  16. package/dist/auth/verifiers/index.js +8 -33
  17. package/dist/auth/verifiers/jwtVerifier.d.ts +1 -1
  18. package/dist/auth/verifiers/jwtVerifier.d.ts.map +1 -1
  19. package/dist/auth/verifiers/jwtVerifier.js +17 -47
  20. package/dist/auth/verifiers/secretKeyVerifier.d.ts +1 -1
  21. package/dist/auth/verifiers/secretKeyVerifier.d.ts.map +1 -1
  22. package/dist/auth/verifiers/secretKeyVerifier.js +7 -26
  23. package/dist/auth/verifiers/sha1Verifier.d.ts +1 -1
  24. package/dist/auth/verifiers/sha1Verifier.d.ts.map +1 -1
  25. package/dist/auth/verifiers/sha1Verifier.js +18 -37
  26. package/dist/auth/verifiers/sha256Verifier.d.ts +1 -1
  27. package/dist/auth/verifiers/sha256Verifier.d.ts.map +1 -1
  28. package/dist/auth/verifiers/sha256Verifier.js +18 -37
  29. package/dist/auth/verifiers/skipVerifier.d.ts +1 -1
  30. package/dist/auth/verifiers/skipVerifier.d.ts.map +1 -1
  31. package/dist/auth/verifiers/skipVerifier.js +4 -23
  32. package/dist/auth/verifiers/timestampSchemeVerifier.d.ts +1 -1
  33. package/dist/auth/verifiers/timestampSchemeVerifier.d.ts.map +1 -1
  34. package/dist/auth/verifiers/timestampSchemeVerifier.js +18 -33
  35. package/dist/cache/clients/BaseClient.js +4 -23
  36. package/dist/cache/clients/InMemoryClient.d.ts +1 -1
  37. package/dist/cache/clients/InMemoryClient.d.ts.map +1 -1
  38. package/dist/cache/clients/InMemoryClient.js +6 -35
  39. package/dist/cache/clients/MemcachedClient.d.ts +1 -1
  40. package/dist/cache/clients/MemcachedClient.d.ts.map +1 -1
  41. package/dist/cache/clients/MemcachedClient.js +6 -35
  42. package/dist/cache/clients/RedisClient.d.ts +2 -2
  43. package/dist/cache/clients/RedisClient.d.ts.map +1 -1
  44. package/dist/cache/clients/RedisClient.js +6 -35
  45. package/dist/cache/errors.js +3 -26
  46. package/dist/cache/index.d.ts +5 -5
  47. package/dist/cache/index.d.ts.map +1 -1
  48. package/dist/cache/index.js +14 -52
  49. package/dist/cjs/auth/index.d.ts +51 -0
  50. package/dist/cjs/auth/index.d.ts.map +1 -0
  51. package/dist/cjs/auth/index.js +129 -0
  52. package/dist/cjs/auth/parseJWT.d.ts +6 -0
  53. package/dist/cjs/auth/parseJWT.d.ts.map +1 -0
  54. package/dist/cjs/auth/parseJWT.js +57 -0
  55. package/dist/cjs/auth/verifiers/base64Sha1Verifier.d.ts +19 -0
  56. package/dist/cjs/auth/verifiers/base64Sha1Verifier.d.ts.map +1 -0
  57. package/dist/cjs/auth/verifiers/base64Sha1Verifier.js +77 -0
  58. package/dist/cjs/auth/verifiers/base64Sha256Verifier.d.ts +19 -0
  59. package/dist/cjs/auth/verifiers/base64Sha256Verifier.d.ts.map +1 -0
  60. package/dist/cjs/auth/verifiers/base64Sha256Verifier.js +77 -0
  61. package/dist/cjs/auth/verifiers/common.d.ts +104 -0
  62. package/dist/cjs/auth/verifiers/common.d.ts.map +1 -0
  63. package/dist/cjs/auth/verifiers/common.js +99 -0
  64. package/dist/cjs/auth/verifiers/index.d.ts +8 -0
  65. package/dist/cjs/auth/verifiers/index.d.ts.map +1 -0
  66. package/dist/cjs/auth/verifiers/index.js +38 -0
  67. package/dist/cjs/auth/verifiers/jwtVerifier.d.ts +26 -0
  68. package/dist/cjs/auth/verifiers/jwtVerifier.d.ts.map +1 -0
  69. package/dist/cjs/auth/verifiers/jwtVerifier.js +86 -0
  70. package/dist/cjs/auth/verifiers/secretKeyVerifier.d.ts +14 -0
  71. package/dist/cjs/auth/verifiers/secretKeyVerifier.d.ts.map +1 -0
  72. package/dist/cjs/auth/verifiers/secretKeyVerifier.js +40 -0
  73. package/dist/cjs/auth/verifiers/sha1Verifier.d.ts +25 -0
  74. package/dist/cjs/auth/verifiers/sha1Verifier.d.ts.map +1 -0
  75. package/dist/cjs/auth/verifiers/sha1Verifier.js +85 -0
  76. package/dist/cjs/auth/verifiers/sha256Verifier.d.ts +25 -0
  77. package/dist/cjs/auth/verifiers/sha256Verifier.d.ts.map +1 -0
  78. package/dist/cjs/auth/verifiers/sha256Verifier.js +85 -0
  79. package/dist/cjs/auth/verifiers/skipVerifier.d.ts +13 -0
  80. package/dist/cjs/auth/verifiers/skipVerifier.d.ts.map +1 -0
  81. package/dist/cjs/auth/verifiers/skipVerifier.js +37 -0
  82. package/dist/cjs/auth/verifiers/timestampSchemeVerifier.d.ts +16 -0
  83. package/dist/cjs/auth/verifiers/timestampSchemeVerifier.d.ts.map +1 -0
  84. package/dist/cjs/auth/verifiers/timestampSchemeVerifier.js +81 -0
  85. package/dist/cjs/bins/redwood.d.ts +9 -0
  86. package/dist/cjs/bins/redwood.d.ts.map +1 -0
  87. package/dist/cjs/bins/rwfw.d.ts +3 -0
  88. package/dist/cjs/bins/rwfw.d.ts.map +1 -0
  89. package/dist/cjs/bins/tsc.d.ts +3 -0
  90. package/dist/cjs/bins/tsc.d.ts.map +1 -0
  91. package/dist/{bins → cjs/bins}/tsc.js +2 -2
  92. package/dist/cjs/cache/clients/BaseClient.d.ts +11 -0
  93. package/dist/cjs/cache/clients/BaseClient.d.ts.map +1 -0
  94. package/dist/cjs/cache/clients/BaseClient.js +27 -0
  95. package/dist/cjs/cache/clients/InMemoryClient.d.ts +31 -0
  96. package/dist/cjs/cache/clients/InMemoryClient.d.ts.map +1 -0
  97. package/dist/cjs/cache/clients/InMemoryClient.js +100 -0
  98. package/dist/cjs/cache/clients/MemcachedClient.d.ts +16 -0
  99. package/dist/cjs/cache/clients/MemcachedClient.d.ts.map +1 -0
  100. package/dist/cjs/cache/clients/MemcachedClient.js +75 -0
  101. package/dist/cjs/cache/clients/RedisClient.d.ts +20 -0
  102. package/dist/cjs/cache/clients/RedisClient.d.ts.map +1 -0
  103. package/dist/cjs/cache/clients/RedisClient.js +79 -0
  104. package/dist/cjs/cache/errors.d.ts +4 -0
  105. package/dist/cjs/cache/errors.d.ts.map +1 -0
  106. package/dist/cjs/cache/errors.js +33 -0
  107. package/dist/cjs/cache/index.d.ts +35 -0
  108. package/dist/cjs/cache/index.d.ts.map +1 -0
  109. package/dist/cjs/cache/index.js +171 -0
  110. package/dist/cjs/cors.d.ts +16 -0
  111. package/dist/cjs/cors.d.ts.map +1 -0
  112. package/dist/cjs/cors.js +93 -0
  113. package/dist/cjs/errors.d.ts +5 -0
  114. package/dist/cjs/errors.d.ts.map +1 -0
  115. package/dist/cjs/errors.js +38 -0
  116. package/dist/cjs/event.d.ts +3 -0
  117. package/dist/cjs/event.d.ts.map +1 -0
  118. package/dist/cjs/event.js +34 -0
  119. package/dist/cjs/functions/fixtures/apiGatewayProxyEvent.fixture.d.ts +4 -0
  120. package/dist/cjs/functions/fixtures/apiGatewayProxyEvent.fixture.d.ts.map +1 -0
  121. package/dist/cjs/functions/fixtures/apiGatewayProxyEvent.fixture.js +72 -0
  122. package/dist/cjs/index.d.ts +11 -0
  123. package/dist/cjs/index.d.ts.map +1 -0
  124. package/dist/cjs/index.js +63 -0
  125. package/dist/cjs/logger/index.d.ts +179 -0
  126. package/dist/cjs/logger/index.d.ts.map +1 -0
  127. package/dist/cjs/logger/index.js +195 -0
  128. package/dist/cjs/package.json +1 -0
  129. package/dist/cjs/transforms.d.ts +35 -0
  130. package/dist/cjs/transforms.d.ts.map +1 -0
  131. package/dist/cjs/transforms.js +98 -0
  132. package/dist/cjs/types.d.ts +25 -0
  133. package/dist/cjs/types.d.ts.map +1 -0
  134. package/dist/cjs/types.js +16 -0
  135. package/dist/cjs/validations/errors.d.ts +101 -0
  136. package/dist/cjs/validations/errors.d.ts.map +1 -0
  137. package/dist/cjs/validations/errors.js +298 -0
  138. package/dist/cjs/validations/validations.d.ts +222 -0
  139. package/dist/cjs/validations/validations.d.ts.map +1 -0
  140. package/dist/cjs/validations/validations.js +351 -0
  141. package/dist/cjs/webhooks/index.d.ts +76 -0
  142. package/dist/cjs/webhooks/index.d.ts.map +1 -0
  143. package/dist/cjs/webhooks/index.js +107 -0
  144. package/dist/cors.d.ts +1 -1
  145. package/dist/cors.d.ts.map +1 -1
  146. package/dist/cors.js +7 -30
  147. package/dist/errors.js +3 -26
  148. package/dist/event.js +5 -28
  149. package/dist/functions/fixtures/apiGatewayProxyEvent.fixture.js +4 -27
  150. package/dist/index.d.ts +8 -8
  151. package/dist/index.d.ts.map +1 -1
  152. package/dist/index.js +17 -46
  153. package/dist/logger/index.d.ts.map +1 -1
  154. package/dist/logger/index.js +6 -48
  155. package/dist/package.json +1 -0
  156. package/dist/transforms.js +6 -33
  157. package/dist/types.js +1 -16
  158. package/dist/validations/errors.d.ts +1 -1
  159. package/dist/validations/errors.d.ts.map +1 -1
  160. package/dist/validations/errors.js +8 -66
  161. package/dist/validations/validations.js +8 -44
  162. package/dist/webhooks/index.d.ts +3 -3
  163. package/dist/webhooks/index.d.ts.map +1 -1
  164. package/dist/webhooks/index.js +25 -46
  165. package/package.json +53 -18
  166. /package/dist/{bins → cjs/bins}/redwood.js +0 -0
  167. /package/dist/{bins → cjs/bins}/rwfw.js +0 -0
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var sha256Verifier_exports = {};
20
+ __export(sha256Verifier_exports, {
21
+ default: () => sha256Verifier_default,
22
+ verifySignature: () => verifySignature
23
+ });
24
+ module.exports = __toCommonJS(sha256Verifier_exports);
25
+ var import_crypto = require("crypto");
26
+ var import_common = require("./common.js");
27
+ function toNormalizedJsonString(payload) {
28
+ return JSON.stringify(payload).replace(/[^\\]\\u[\da-f]{4}/g, (s) => {
29
+ return s.substr(0, 3) + s.substr(3).toUpperCase();
30
+ });
31
+ }
32
+ const createSignature = ({
33
+ payload,
34
+ secret = import_common.DEFAULT_WEBHOOK_SECRET
35
+ }) => {
36
+ const algorithm = "sha256";
37
+ const hmac = (0, import_crypto.createHmac)(algorithm, secret);
38
+ payload = typeof payload === "string" ? payload : toNormalizedJsonString(payload);
39
+ const digest = Buffer.from(
40
+ algorithm + "=" + hmac.update(payload).digest("hex"),
41
+ "utf8"
42
+ );
43
+ return digest.toString();
44
+ };
45
+ const verifySignature = ({
46
+ payload,
47
+ secret = import_common.DEFAULT_WEBHOOK_SECRET,
48
+ signature
49
+ }) => {
50
+ try {
51
+ const algorithm = signature.split("=")[0];
52
+ const webhookSignature = Buffer.from(signature || "", "utf8");
53
+ const hmac = (0, import_crypto.createHmac)(algorithm, secret);
54
+ payload = typeof payload === "string" ? payload : toNormalizedJsonString(payload);
55
+ const digest = Buffer.from(
56
+ algorithm + "=" + hmac.update(payload).digest("hex"),
57
+ "utf8"
58
+ );
59
+ const verified = webhookSignature.length === digest.length && (0, import_crypto.timingSafeEqual)(digest, webhookSignature);
60
+ if (verified) {
61
+ return verified;
62
+ }
63
+ throw new import_common.WebhookVerificationError();
64
+ } catch (error) {
65
+ throw new import_common.WebhookVerificationError(
66
+ `${import_common.VERIFICATION_ERROR_MESSAGE}: ${error.message}`
67
+ );
68
+ }
69
+ };
70
+ const sha256Verifier = (_options) => {
71
+ return {
72
+ sign: ({ payload, secret }) => {
73
+ return createSignature({ payload, secret });
74
+ },
75
+ verify: ({ payload, secret, signature }) => {
76
+ return verifySignature({ payload, secret, signature });
77
+ },
78
+ type: "sha256Verifier"
79
+ };
80
+ };
81
+ var sha256Verifier_default = sha256Verifier;
82
+ // Annotate the CommonJS export names for ESM import in node:
83
+ 0 && (module.exports = {
84
+ verifySignature
85
+ });
@@ -0,0 +1,13 @@
1
+ import type { VerifyOptions, WebhookVerifier } from './common.js';
2
+ export interface SkipVerifier extends WebhookVerifier {
3
+ type: 'skipVerifier';
4
+ }
5
+ /**
6
+ * skipVerifier skips webhook signature verification.
7
+ * Use when there is no signature provided or the webhook is
8
+ * entirely public.
9
+ *
10
+ */
11
+ declare const skipVerifier: (_options?: VerifyOptions) => SkipVerifier;
12
+ export default skipVerifier;
13
+ //# sourceMappingURL=skipVerifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skipVerifier.d.ts","sourceRoot":"","sources":["../../../../src/auth/verifiers/skipVerifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAEjE,MAAM,WAAW,YAAa,SAAQ,eAAe;IACnD,IAAI,EAAE,cAAc,CAAA;CACrB;AACD;;;;;GAKG;AACH,QAAA,MAAM,YAAY,cAAe,aAAa,KAAG,YAYhD,CAAA;AAED,eAAe,YAAY,CAAA"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var skipVerifier_exports = {};
20
+ __export(skipVerifier_exports, {
21
+ default: () => skipVerifier_default
22
+ });
23
+ module.exports = __toCommonJS(skipVerifier_exports);
24
+ const skipVerifier = (_options) => {
25
+ return {
26
+ sign: () => {
27
+ console.warn(`No signature is created for the skipVerifier verifier`);
28
+ return "";
29
+ },
30
+ verify: () => {
31
+ console.warn(`The skipVerifier verifier considers all signatures valid`);
32
+ return true;
33
+ },
34
+ type: "skipVerifier"
35
+ };
36
+ };
37
+ var skipVerifier_default = skipVerifier;
@@ -0,0 +1,16 @@
1
+ import type { WebhookVerifier, VerifyOptions } from './common.js';
2
+ export interface TimestampSchemeVerifier extends WebhookVerifier {
3
+ type: 'timestampSchemeVerifier';
4
+ }
5
+ /**
6
+ *
7
+ * Timestamp & Scheme Verifier
8
+ *
9
+ * Based on Stripe's secure webhook implementation
10
+ *
11
+ * @see https://stripe.com/docs/webhooks/signatures
12
+ *
13
+ */
14
+ declare const timestampSchemeVerifier: (options?: VerifyOptions) => TimestampSchemeVerifier;
15
+ export default timestampSchemeVerifier;
16
+ //# sourceMappingURL=timestampSchemeVerifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timestampSchemeVerifier.d.ts","sourceRoot":"","sources":["../../../../src/auth/verifiers/timestampSchemeVerifier.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEjE,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAC9D,IAAI,EAAE,yBAAyB,CAAA;CAChC;AAwHD;;;;;;;;GAQG;AACH,QAAA,MAAM,uBAAuB,aACjB,aAAa,KACtB,uBAcF,CAAA;AAED,eAAe,uBAAuB,CAAA"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var timestampSchemeVerifier_exports = {};
20
+ __export(timestampSchemeVerifier_exports, {
21
+ default: () => timestampSchemeVerifier_default
22
+ });
23
+ module.exports = __toCommonJS(timestampSchemeVerifier_exports);
24
+ var import_crypto = require("crypto");
25
+ var import_common = require("./common.js");
26
+ const getHmac = ({ secret }) => {
27
+ if (typeof secret === "undefined" || secret === "") {
28
+ throw new import_common.WebhookVerificationError();
29
+ }
30
+ return (0, import_crypto.createHmac)("sha256", secret);
31
+ };
32
+ const createSignature = ({
33
+ payload,
34
+ secret = import_common.DEFAULT_WEBHOOK_SECRET,
35
+ timestamp = Date.now()
36
+ }) => {
37
+ const hmac = getHmac({ secret });
38
+ hmac.update(timestamp + "." + payload);
39
+ return `t=${timestamp},v1=${hmac.digest("hex")}`;
40
+ };
41
+ const verifySignature = ({
42
+ payload,
43
+ secret = import_common.DEFAULT_WEBHOOK_SECRET,
44
+ signature,
45
+ options
46
+ }) => {
47
+ const match = /t=(\d+),v1=([\da-f]+)/.exec(signature);
48
+ if (!match) {
49
+ throw new import_common.WebhookVerificationError();
50
+ }
51
+ const signedStamp = Number(match[1]);
52
+ const signedPayload = match[2];
53
+ const timestamp = options?.currentTimestampOverride ?? Date.now();
54
+ const tolerance = options?.tolerance ?? import_common.DEFAULT_TOLERANCE;
55
+ const difference = Math.abs(timestamp - signedStamp);
56
+ if (difference > tolerance) {
57
+ throw new import_common.WebhookVerificationError();
58
+ }
59
+ const hmac = getHmac({ secret });
60
+ hmac.update(signedStamp + "." + payload);
61
+ if (hmac.digest("hex") === signedPayload) {
62
+ return true;
63
+ }
64
+ throw new import_common.WebhookVerificationError();
65
+ };
66
+ const timestampSchemeVerifier = (options) => {
67
+ return {
68
+ sign: ({ payload, secret }) => {
69
+ return createSignature({
70
+ payload,
71
+ secret,
72
+ timestamp: options?.currentTimestampOverride
73
+ });
74
+ },
75
+ verify: ({ payload, secret, signature }) => {
76
+ return verifySignature({ payload, secret, signature, options });
77
+ },
78
+ type: "timestampSchemeVerifier"
79
+ };
80
+ };
81
+ var timestampSchemeVerifier_default = timestampSchemeVerifier;
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * This file lets users run the Redmix CLI commands inside the /api directory
4
+ * in their projects.
5
+ * This works because of the "bin" field in the @redmix/api package.json file
6
+ * that points to this file.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=redwood.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redwood.d.ts","sourceRoot":"","sources":["../../../src/bins/redwood.ts"],"names":[],"mappings":";AAEA;;;;;GAKG"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=rwfw.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rwfw.d.ts","sourceRoot":"","sources":["../../../src/bins/rwfw.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=tsc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsc.d.ts","sourceRoot":"","sources":["../../../src/bins/tsc.ts"],"names":[],"mappings":""}
@@ -22,8 +22,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
22
22
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
23
23
  mod
24
24
  ));
25
- var import_module = require("module");
26
- const requireFromTypeScript = (0, import_module.createRequire)(
25
+ var import_node_module = require("node:module");
26
+ const requireFromTypeScript = (0, import_node_module.createRequire)(
27
27
  require.resolve("typescript/package.json")
28
28
  );
29
29
  const bins = requireFromTypeScript("./package.json")["bin"];
@@ -0,0 +1,11 @@
1
+ export default abstract class BaseClient {
2
+ constructor();
3
+ disconnect?(): void | Promise<void>;
4
+ abstract connect(): void | Promise<void>;
5
+ abstract get(key: string): any;
6
+ abstract set(key: string, value: unknown, options: {
7
+ expires?: number;
8
+ }): Promise<any> | any;
9
+ abstract del(key: string): Promise<boolean> | any;
10
+ }
11
+ //# sourceMappingURL=BaseClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseClient.d.ts","sourceRoot":"","sources":["../../../../src/cache/clients/BaseClient.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,UAAU;;IAKtC,UAAU,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEnC,QAAQ,CAAC,OAAO,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAGxC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAG9B,QAAQ,CAAC,GAAG,CACV,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,EACd,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5B,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG;IAGrB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG;CAClD"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var BaseClient_exports = {};
20
+ __export(BaseClient_exports, {
21
+ default: () => BaseClient
22
+ });
23
+ module.exports = __toCommonJS(BaseClient_exports);
24
+ class BaseClient {
25
+ constructor() {
26
+ }
27
+ }
@@ -0,0 +1,31 @@
1
+ import BaseClient from './BaseClient.js';
2
+ type CacheOptions = {
3
+ expires?: number;
4
+ };
5
+ export default class InMemoryClient extends BaseClient {
6
+ storage: Record<string, {
7
+ expires: number;
8
+ value: string;
9
+ }>;
10
+ constructor(data?: {});
11
+ /**
12
+ * Special function for testing, only available in InMemoryClient
13
+ *
14
+ * Returns deserialized content of cache as an array of values (without cache keys)
15
+ *
16
+ */
17
+ get contents(): any[];
18
+ disconnect(): Promise<void>;
19
+ connect(): Promise<void>;
20
+ get(key: string): Promise<any>;
21
+ set(key: string, value: unknown, options?: CacheOptions): Promise<boolean>;
22
+ del(key: string): Promise<boolean>;
23
+ /**
24
+ * Special functions for testing, only available in InMemoryClient
25
+ */
26
+ clear(): Promise<void>;
27
+ cacheKeyForValue(value: any): string | null;
28
+ isCached(value: any): boolean;
29
+ }
30
+ export {};
31
+ //# sourceMappingURL=InMemoryClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryClient.d.ts","sourceRoot":"","sources":["../../../../src/cache/clients/InMemoryClient.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,iBAAiB,CAAA;AAExC,KAAK,YAAY,GAAG;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,UAAU;IACpD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;gBAG/C,IAAI,KAAK;IAKrB;;;;;OAKG;IACH,IAAI,QAAQ,UAIX;IAGK,UAAU;IACV,OAAO;IAEP,GAAG,CAAC,GAAG,EAAE,MAAM;IAWf,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,YAAiB;IAU3D,GAAG,CAAC,GAAG,EAAE,MAAM;IASrB;;OAEG;IACG,KAAK;IAIX,gBAAgB,CAAC,KAAK,EAAE,GAAG;IAU3B,QAAQ,CAAC,KAAK,EAAE,GAAG;CAGpB"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var InMemoryClient_exports = {};
30
+ __export(InMemoryClient_exports, {
31
+ default: () => InMemoryClient
32
+ });
33
+ module.exports = __toCommonJS(InMemoryClient_exports);
34
+ var import_BaseClient = __toESM(require("./BaseClient.js"), 1);
35
+ class InMemoryClient extends import_BaseClient.default {
36
+ storage;
37
+ // initialize with pre-cached data if needed
38
+ constructor(data = {}) {
39
+ super();
40
+ this.storage = data;
41
+ }
42
+ /**
43
+ * Special function for testing, only available in InMemoryClient
44
+ *
45
+ * Returns deserialized content of cache as an array of values (without cache keys)
46
+ *
47
+ */
48
+ get contents() {
49
+ return Object.values(this.storage).map(
50
+ (cacheObj) => JSON.parse(cacheObj.value)
51
+ );
52
+ }
53
+ // Not needed for InMemoryClient
54
+ async disconnect() {
55
+ }
56
+ async connect() {
57
+ }
58
+ async get(key) {
59
+ const now = /* @__PURE__ */ new Date();
60
+ if (this.storage[key] && this.storage[key].expires > now.getTime()) {
61
+ return JSON.parse(this.storage[key].value);
62
+ } else {
63
+ delete this.storage[key];
64
+ return null;
65
+ }
66
+ }
67
+ // stores expiration dates as epoch
68
+ async set(key, value, options = {}) {
69
+ const now = /* @__PURE__ */ new Date();
70
+ now.setSeconds(now.getSeconds() + (options?.expires || 31536e4));
71
+ const data = { expires: now.getTime(), value: JSON.stringify(value) };
72
+ this.storage[key] = data;
73
+ return true;
74
+ }
75
+ async del(key) {
76
+ if (this.storage[key]) {
77
+ delete this.storage[key];
78
+ return true;
79
+ } else {
80
+ return false;
81
+ }
82
+ }
83
+ /**
84
+ * Special functions for testing, only available in InMemoryClient
85
+ */
86
+ async clear() {
87
+ this.storage = {};
88
+ }
89
+ cacheKeyForValue(value) {
90
+ for (const [cacheKey, cacheObj] of Object.entries(this.storage)) {
91
+ if (cacheObj.value === JSON.stringify(value)) {
92
+ return cacheKey;
93
+ }
94
+ }
95
+ return null;
96
+ }
97
+ isCached(value) {
98
+ return !!this.cacheKeyForValue(value);
99
+ }
100
+ }
@@ -0,0 +1,16 @@
1
+ import type { Client as ClientType, ClientOptions, ServerOptions } from 'memjs';
2
+ import BaseClient from './BaseClient.js';
3
+ export default class MemcachedClient extends BaseClient {
4
+ client?: ClientType | null;
5
+ servers: string;
6
+ options: (ClientOptions<string | Buffer, Buffer | null> & ServerOptions) | undefined;
7
+ constructor(servers: string, options?: ClientOptions & ServerOptions);
8
+ connect(): Promise<void>;
9
+ disconnect(): Promise<void>;
10
+ get(key: string): Promise<any>;
11
+ set(key: string, value: unknown, options: {
12
+ expires?: number;
13
+ }): Promise<boolean | undefined>;
14
+ del(key: string): Promise<boolean | undefined>;
15
+ }
16
+ //# sourceMappingURL=MemcachedClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemcachedClient.d.ts","sourceRoot":"","sources":["../../../../src/cache/clients/MemcachedClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAE/E,OAAO,UAAU,MAAM,iBAAiB,CAAA;AAExC,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,UAAU;IACrD,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IAC1B,OAAO,SAAA;IACP,OAAO,8EAAA;gBAEK,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,aAAa;IAM9D,OAAO;IAKP,UAAU;IAKV,GAAG,CAAC,GAAG,EAAE,MAAM;IAcf,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAQ9D,GAAG,CAAC,GAAG,EAAE,MAAM;CAQtB"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var MemcachedClient_exports = {};
30
+ __export(MemcachedClient_exports, {
31
+ default: () => MemcachedClient
32
+ });
33
+ module.exports = __toCommonJS(MemcachedClient_exports);
34
+ var import_BaseClient = __toESM(require("./BaseClient.js"), 1);
35
+ class MemcachedClient extends import_BaseClient.default {
36
+ client;
37
+ servers;
38
+ options;
39
+ constructor(servers, options) {
40
+ super();
41
+ this.servers = servers;
42
+ this.options = options;
43
+ }
44
+ async connect() {
45
+ const { Client: MemCachedClient } = await import("memjs");
46
+ this.client = MemCachedClient.create(this.servers, this.options);
47
+ }
48
+ async disconnect() {
49
+ this.client?.close();
50
+ this.client = null;
51
+ }
52
+ async get(key) {
53
+ if (!this.client) {
54
+ await this.connect();
55
+ }
56
+ const result = await this.client?.get(key);
57
+ if (result?.value) {
58
+ return JSON.parse(result.value.toString());
59
+ } else {
60
+ return result?.value;
61
+ }
62
+ }
63
+ async set(key, value, options) {
64
+ if (!this.client) {
65
+ await this.connect();
66
+ }
67
+ return this.client?.set(key, JSON.stringify(value), options);
68
+ }
69
+ async del(key) {
70
+ if (!this.client) {
71
+ await this.connect();
72
+ }
73
+ return this.client?.delete(key);
74
+ }
75
+ }
@@ -0,0 +1,20 @@
1
+ import type { RedisClientType, RedisClientOptions } from 'redis';
2
+ import type { Logger } from '../../logger/index.js';
3
+ import BaseClient from './BaseClient.js';
4
+ type LoggerOptions = {
5
+ logger?: Logger;
6
+ };
7
+ export default class RedisClient extends BaseClient {
8
+ client?: RedisClientType | null;
9
+ logger?: Logger;
10
+ redisOptions?: RedisClientOptions;
11
+ constructor(options: RedisClientOptions & LoggerOptions);
12
+ connect(): Promise<void>;
13
+ get(key: string): Promise<any>;
14
+ set(key: string, value: unknown, options: {
15
+ expires?: number;
16
+ }): Promise<string | null | undefined>;
17
+ del(key: string): Promise<boolean>;
18
+ }
19
+ export {};
20
+ //# sourceMappingURL=RedisClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RedisClient.d.ts","sourceRoot":"","sources":["../../../../src/cache/clients/RedisClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAA;AAEhE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAEnD,OAAO,UAAU,MAAM,iBAAiB,CAAA;AAMxC,KAAK,aAAa,GAAG;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,UAAU;IACjD,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,kBAAkB,CAAA;gBAErB,OAAO,EAAE,kBAAkB,GAAG,aAAa;IAQjD,OAAO;IAiBP,GAAG,CAAC,GAAG,EAAE,MAAM;IAUf,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAc9D,GAAG,CAAC,GAAG,EAAE,MAAM;CAQtB"}