@cedarjs/api 9.0.0-canary.1784 → 9.0.0-canary.3124

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 (137) hide show
  1. package/dist/auth/index.d.ts +14 -1
  2. package/dist/auth/index.d.ts.map +1 -1
  3. package/dist/auth/index.js +19 -5
  4. package/dist/bins/cedar.js +14 -0
  5. package/dist/bins/cfw.js +14 -0
  6. package/dist/bins/redwood.js +14 -0
  7. package/dist/bins/tsc.js +8 -0
  8. package/dist/cache/clients/RedisClient.d.ts.map +1 -1
  9. package/dist/cache/index.d.ts.map +1 -1
  10. package/dist/cache/index.js +8 -4
  11. package/dist/errors.d.ts +9 -1
  12. package/dist/errors.d.ts.map +1 -1
  13. package/dist/errors.js +9 -2
  14. package/dist/index.d.ts +5 -4
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +5 -19
  17. package/dist/logger/index.d.ts +7 -5
  18. package/dist/logger/index.d.ts.map +1 -1
  19. package/dist/logger/index.js +1 -1
  20. package/dist/runtime.d.ts +48 -0
  21. package/dist/runtime.d.ts.map +1 -0
  22. package/dist/runtime.js +131 -0
  23. package/dist/signedTokens/index.d.ts +2 -0
  24. package/dist/signedTokens/index.d.ts.map +1 -0
  25. package/dist/signedTokens/index.js +1 -0
  26. package/dist/signedTokens/signedTokens.d.ts +99 -0
  27. package/dist/signedTokens/signedTokens.d.ts.map +1 -0
  28. package/dist/signedTokens/signedTokens.js +100 -0
  29. package/dist/transforms.d.ts +1 -0
  30. package/dist/transforms.d.ts.map +1 -1
  31. package/dist/transforms.js +82 -1
  32. package/dist/types.d.ts.map +1 -1
  33. package/dist/validations/validations.d.ts +21 -8
  34. package/dist/validations/validations.d.ts.map +1 -1
  35. package/dist/validations/validations.js +16 -14
  36. package/package.json +35 -46
  37. package/LICENSE +0 -21
  38. package/dist/cjs/auth/index.d.ts +0 -51
  39. package/dist/cjs/auth/index.d.ts.map +0 -1
  40. package/dist/cjs/auth/index.js +0 -129
  41. package/dist/cjs/auth/parseJWT.d.ts +0 -6
  42. package/dist/cjs/auth/parseJWT.d.ts.map +0 -1
  43. package/dist/cjs/auth/parseJWT.js +0 -57
  44. package/dist/cjs/auth/verifiers/base64Sha1Verifier.d.ts +0 -18
  45. package/dist/cjs/auth/verifiers/base64Sha1Verifier.d.ts.map +0 -1
  46. package/dist/cjs/auth/verifiers/base64Sha1Verifier.js +0 -77
  47. package/dist/cjs/auth/verifiers/base64Sha256Verifier.d.ts +0 -18
  48. package/dist/cjs/auth/verifiers/base64Sha256Verifier.d.ts.map +0 -1
  49. package/dist/cjs/auth/verifiers/base64Sha256Verifier.js +0 -77
  50. package/dist/cjs/auth/verifiers/common.d.ts +0 -112
  51. package/dist/cjs/auth/verifiers/common.d.ts.map +0 -1
  52. package/dist/cjs/auth/verifiers/common.js +0 -89
  53. package/dist/cjs/auth/verifiers/index.d.ts +0 -8
  54. package/dist/cjs/auth/verifiers/index.d.ts.map +0 -1
  55. package/dist/cjs/auth/verifiers/index.js +0 -39
  56. package/dist/cjs/auth/verifiers/jwtVerifier.d.ts +0 -18
  57. package/dist/cjs/auth/verifiers/jwtVerifier.d.ts.map +0 -1
  58. package/dist/cjs/auth/verifiers/jwtVerifier.js +0 -84
  59. package/dist/cjs/auth/verifiers/secretKeyVerifier.d.ts +0 -11
  60. package/dist/cjs/auth/verifiers/secretKeyVerifier.d.ts.map +0 -1
  61. package/dist/cjs/auth/verifiers/secretKeyVerifier.js +0 -43
  62. package/dist/cjs/auth/verifiers/sha1Verifier.d.ts +0 -17
  63. package/dist/cjs/auth/verifiers/sha1Verifier.d.ts.map +0 -1
  64. package/dist/cjs/auth/verifiers/sha1Verifier.js +0 -85
  65. package/dist/cjs/auth/verifiers/sha256Verifier.d.ts +0 -17
  66. package/dist/cjs/auth/verifiers/sha256Verifier.d.ts.map +0 -1
  67. package/dist/cjs/auth/verifiers/sha256Verifier.js +0 -85
  68. package/dist/cjs/auth/verifiers/skipVerifier.d.ts +0 -11
  69. package/dist/cjs/auth/verifiers/skipVerifier.d.ts.map +0 -1
  70. package/dist/cjs/auth/verifiers/skipVerifier.js +0 -40
  71. package/dist/cjs/auth/verifiers/timestampSchemeVerifier.d.ts +0 -14
  72. package/dist/cjs/auth/verifiers/timestampSchemeVerifier.d.ts.map +0 -1
  73. package/dist/cjs/auth/verifiers/timestampSchemeVerifier.js +0 -86
  74. package/dist/cjs/bins/cedar.d.ts +0 -9
  75. package/dist/cjs/bins/cedar.d.ts.map +0 -1
  76. package/dist/cjs/bins/cedar.js +0 -36
  77. package/dist/cjs/bins/cfw.d.ts +0 -3
  78. package/dist/cjs/bins/cfw.d.ts.map +0 -1
  79. package/dist/cjs/bins/cfw.js +0 -36
  80. package/dist/cjs/bins/redwood.d.ts +0 -9
  81. package/dist/cjs/bins/redwood.d.ts.map +0 -1
  82. package/dist/cjs/bins/redwood.js +0 -36
  83. package/dist/cjs/bins/tsc.d.ts +0 -3
  84. package/dist/cjs/bins/tsc.d.ts.map +0 -1
  85. package/dist/cjs/bins/tsc.js +0 -30
  86. package/dist/cjs/cache/clients/BaseClient.d.ts +0 -11
  87. package/dist/cjs/cache/clients/BaseClient.d.ts.map +0 -1
  88. package/dist/cjs/cache/clients/BaseClient.js +0 -31
  89. package/dist/cjs/cache/clients/InMemoryClient.d.ts +0 -31
  90. package/dist/cjs/cache/clients/InMemoryClient.d.ts.map +0 -1
  91. package/dist/cjs/cache/clients/InMemoryClient.js +0 -94
  92. package/dist/cjs/cache/clients/MemcachedClient.d.ts +0 -16
  93. package/dist/cjs/cache/clients/MemcachedClient.d.ts.map +0 -1
  94. package/dist/cjs/cache/clients/MemcachedClient.js +0 -79
  95. package/dist/cjs/cache/clients/RedisClient.d.ts +0 -20
  96. package/dist/cjs/cache/clients/RedisClient.d.ts.map +0 -1
  97. package/dist/cjs/cache/clients/RedisClient.js +0 -83
  98. package/dist/cjs/cache/errors.d.ts +0 -4
  99. package/dist/cjs/cache/errors.d.ts.map +0 -1
  100. package/dist/cjs/cache/errors.js +0 -33
  101. package/dist/cjs/cache/index.d.ts +0 -35
  102. package/dist/cjs/cache/index.d.ts.map +0 -1
  103. package/dist/cjs/cache/index.js +0 -171
  104. package/dist/cjs/cors.d.ts +0 -16
  105. package/dist/cjs/cors.d.ts.map +0 -1
  106. package/dist/cjs/cors.js +0 -93
  107. package/dist/cjs/errors.d.ts +0 -5
  108. package/dist/cjs/errors.d.ts.map +0 -1
  109. package/dist/cjs/errors.js +0 -38
  110. package/dist/cjs/event.d.ts +0 -3
  111. package/dist/cjs/event.d.ts.map +0 -1
  112. package/dist/cjs/event.js +0 -34
  113. package/dist/cjs/functions/fixtures/apiGatewayProxyEvent.fixture.d.ts +0 -4
  114. package/dist/cjs/functions/fixtures/apiGatewayProxyEvent.fixture.d.ts.map +0 -1
  115. package/dist/cjs/functions/fixtures/apiGatewayProxyEvent.fixture.js +0 -72
  116. package/dist/cjs/index.d.ts +0 -15
  117. package/dist/cjs/index.d.ts.map +0 -1
  118. package/dist/cjs/index.js +0 -70
  119. package/dist/cjs/logger/index.d.ts +0 -179
  120. package/dist/cjs/logger/index.d.ts.map +0 -1
  121. package/dist/cjs/logger/index.js +0 -195
  122. package/dist/cjs/package.json +0 -1
  123. package/dist/cjs/transforms.d.ts +0 -35
  124. package/dist/cjs/transforms.d.ts.map +0 -1
  125. package/dist/cjs/transforms.js +0 -98
  126. package/dist/cjs/types.d.ts +0 -25
  127. package/dist/cjs/types.d.ts.map +0 -1
  128. package/dist/cjs/types.js +0 -16
  129. package/dist/cjs/validations/errors.d.ts +0 -101
  130. package/dist/cjs/validations/errors.d.ts.map +0 -1
  131. package/dist/cjs/validations/errors.js +0 -298
  132. package/dist/cjs/validations/validations.d.ts +0 -222
  133. package/dist/cjs/validations/validations.d.ts.map +0 -1
  134. package/dist/cjs/validations/validations.js +0 -351
  135. package/dist/cjs/webhooks/index.d.ts +0 -77
  136. package/dist/cjs/webhooks/index.d.ts.map +0 -1
  137. package/dist/cjs/webhooks/index.js +0 -102
@@ -3,7 +3,7 @@ import type { APIGatewayProxyEvent, Context as LambdaContext } from 'aws-lambda'
3
3
  import type { Decoded } from './parseJWT.js';
4
4
  export type { Decoded };
5
5
  export declare const AUTH_PROVIDER_HEADER = "auth-provider";
6
- export declare const getAuthProviderHeader: (event: APIGatewayProxyEvent | Request) => string | null | undefined;
6
+ export declare const getAuthProviderHeader: (event: APIGatewayProxyEvent | Request) => string | undefined;
7
7
  export interface AuthorizationHeader {
8
8
  schema: 'Bearer' | 'Basic' | string;
9
9
  token: string;
@@ -31,12 +31,25 @@ export type AuthContextPayload = [
31
31
  type: string;
32
32
  } & AuthorizationHeader,
33
33
  {
34
+ /**
35
+ * The Lambda-style event. On serverless deploys this is the canonical
36
+ * request object; on fetch-native paths a synthetic one is provided for
37
+ * backwards compatibility with existing `event.headers['key']` access.
38
+ */
34
39
  event: APIGatewayProxyEvent | Request;
40
+ /**
41
+ * The native fetch `Request`, available on fetch-native paths. Prefer
42
+ * this when available.
43
+ * Do `request.headers.get('key')` to access headers
44
+ */
45
+ request?: Request;
35
46
  context?: LambdaContext;
36
47
  }
37
48
  ];
38
49
  export type Decoder = (token: string, type: string, req: {
50
+ /** The Lambda-style request event */
39
51
  event: APIGatewayProxyEvent | Request;
52
+ request?: Request;
40
53
  context?: LambdaContext;
41
54
  }) => Promise<Decoded>;
42
55
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAE7B,OAAO,KAAK,EAAE,oBAAoB,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,YAAY,CAAA;AAKhF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,YAAY,EAAE,OAAO,EAAE,CAAA;AAGvB,eAAO,MAAM,oBAAoB,kBAAkB,CAAA;AAEnD,eAAO,MAAM,qBAAqB,GAChC,OAAO,oBAAoB,GAAG,OAAO,8BAStC,CAAA;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IACnC,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAChD,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CACzB,GAAG,IAAI,CAAA;AAER,eAAO,MAAM,wBAAwB,GACnC,OAAO,oBAAoB,GAAG,OAAO,KACpC,oBAiBF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,GACnC,OAAO,oBAAoB,GAAG,OAAO,KACpC,mBAUF,CAAA;AAED;;;;;;GAMG;AAEH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO;IACP;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,mBAAmB;IAEtC;QACE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAA;QACrC,OAAO,CAAC,EAAE,aAAa,CAAA;KACxB;CACF,CAAA;AAED,MAAM,MAAM,OAAO,GAAG,CACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE;IACH,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAA;IACrC,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB,KACE,OAAO,CAAC,OAAO,CAAC,CAAA;AAErB;;;IAGI;AACJ,eAAO,MAAM,wBAAwB,GAAU,kCAI5C;IACD,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAA;IACjC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAA;IACrC,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB,KAAG,OAAO,CAAC,SAAS,GAAG,kBAAkB,CA6DzC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAE7B,OAAO,KAAK,EAAE,oBAAoB,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,YAAY,CAAA;AAMhF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,YAAY,EAAE,OAAO,EAAE,CAAA;AAGvB,eAAO,MAAM,oBAAoB,kBAAkB,CAAA;AAEnD,eAAO,MAAM,qBAAqB,GAChC,OAAO,oBAAoB,GAAG,OAAO,uBAoBtC,CAAA;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IACnC,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAChD,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CACzB,GAAG,IAAI,CAAA;AAER,eAAO,MAAM,wBAAwB,GACnC,OAAO,oBAAoB,GAAG,OAAO,KACpC,oBAiBF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,GACnC,OAAO,oBAAoB,GAAG,OAAO,KACpC,mBAUF,CAAA;AAED;;;;;;GAMG;AAEH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO;IACP;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,mBAAmB;IAEtC;QACE;;;;WAIG;QACH,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAA;QACrC;;;;WAIG;QACH,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,OAAO,CAAC,EAAE,aAAa,CAAA;KACxB;CACF,CAAA;AAED,MAAM,MAAM,OAAO,GAAG,CACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE;IACH,qCAAqC;IACrC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAA;IACrC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB,KACE,OAAO,CAAC,OAAO,CAAC,CAAA;AAErB;;;IAGI;AACJ,eAAO,MAAM,wBAAwB,GAAU,kCAI5C;IACD,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAA;IACjC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAA;IACrC,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB,KAAG,OAAO,CAAC,SAAS,GAAG,kBAAkB,CA0EzC,CAAA"}
@@ -1,13 +1,17 @@
1
1
  export * from "./parseJWT.js";
2
2
  import * as cookie from "cookie";
3
3
  import { getEventHeader } from "../event.js";
4
+ import { isFetchApiRequest, requestToBaseEvent } from "../transforms.js";
4
5
  const AUTH_PROVIDER_HEADER = "auth-provider";
5
6
  const getAuthProviderHeader = (event) => {
6
- const authProviderKey = Object.keys(event?.headers ?? {}).find(
7
+ if (isFetchApiRequest(event)) {
8
+ return event.headers.get(AUTH_PROVIDER_HEADER) ?? void 0;
9
+ }
10
+ const authProviderKey = Object.keys(event.headers ?? {}).find(
7
11
  (key) => key.toLowerCase() === AUTH_PROVIDER_HEADER
8
12
  );
9
13
  if (authProviderKey) {
10
- return getEventHeader(event, authProviderKey);
14
+ return event.headers[authProviderKey];
11
15
  }
12
16
  return void 0;
13
17
  };
@@ -69,16 +73,26 @@ const getAuthenticationContext = async ({
69
73
  authDecoders = [authDecoder];
70
74
  }
71
75
  let decoded = null;
76
+ const normalizedEvent = isFetchApiRequest(event) ? await requestToBaseEvent(event) : event;
77
+ const underlyingRequest = isFetchApiRequest(event) ? event : void 0;
72
78
  let i = 0;
73
79
  while (!decoded && i < authDecoders.length) {
74
80
  decoded = await authDecoders[i](token, type, {
75
- // @MARK: When called from middleware, the decoder will pass Request, not Lambda event
76
- event,
81
+ event: normalizedEvent,
82
+ request: underlyingRequest,
77
83
  context
78
84
  });
79
85
  i++;
80
86
  }
81
- return [decoded, { type, schema, token }, { event, context }];
87
+ return [
88
+ decoded,
89
+ { type, schema, token },
90
+ {
91
+ event: normalizedEvent,
92
+ request: underlyingRequest,
93
+ context
94
+ }
95
+ ];
82
96
  };
83
97
  export {
84
98
  AUTH_PROVIDER_HEADER,
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from "node:module";
3
+ import { pathToFileURL } from "node:url";
4
+ const require2 = createRequire(import.meta.url);
5
+ const cliPackageJsonFileUrl = pathToFileURL(
6
+ require2.resolve("@cedarjs/cli/package.json")
7
+ );
8
+ const requireFromCli = createRequire(cliPackageJsonFileUrl);
9
+ const bins = requireFromCli("./package.json")["bin"];
10
+ const cliEntryPointUrl = new URL(bins["cedar"], cliPackageJsonFileUrl);
11
+ if (process.env.PROJECT_CWD) {
12
+ process.chdir(process.env.PROJECT_CWD);
13
+ }
14
+ import(cliEntryPointUrl.toString());
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from "node:module";
3
+ import { pathToFileURL } from "node:url";
4
+ const require2 = createRequire(import.meta.url);
5
+ const cliPackageJsonFileUrl = pathToFileURL(
6
+ require2.resolve("@cedarjs/cli/package.json")
7
+ );
8
+ const requireFromCli = createRequire(cliPackageJsonFileUrl);
9
+ const bins = requireFromCli("./package.json")["bin"];
10
+ const cliEntryPointUrl = new URL(bins["cfw"], cliPackageJsonFileUrl);
11
+ if (process.env.PROJECT_CWD) {
12
+ process.chdir(process.env.PROJECT_CWD);
13
+ }
14
+ import(cliEntryPointUrl.toString());
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from "node:module";
3
+ import { pathToFileURL } from "node:url";
4
+ const require2 = createRequire(import.meta.url);
5
+ const cliPackageJsonFileUrl = pathToFileURL(
6
+ require2.resolve("@cedarjs/cli/package.json")
7
+ );
8
+ const requireFromCli = createRequire(cliPackageJsonFileUrl);
9
+ const bins = requireFromCli("./package.json")["bin"];
10
+ const cliEntryPointUrl = new URL(bins["redwood"], cliPackageJsonFileUrl);
11
+ if (process.env.PROJECT_CWD) {
12
+ process.chdir(process.env.PROJECT_CWD);
13
+ }
14
+ import(cliEntryPointUrl.toString());
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from "node:module";
3
+ const require2 = createRequire(import.meta.url);
4
+ const requireFromTypeScript = createRequire(
5
+ require2.resolve("typescript/package.json")
6
+ );
7
+ const bins = requireFromTypeScript("./package.json")["bin"];
8
+ requireFromTypeScript(bins["tsc"]);
@@ -1 +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,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAM5C,KAAK,aAAa,GAAG;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,qBAAa,WAAY,SAAQ,UAAU;IACzC,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"}
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,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAM5C,KAAK,aAAa,GAAG;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,qBAAa,WAAY,SAAQ,UAAU;IACzC,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;IAgBP,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAGzD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE;QACP,EAAE,EAAE,MAAM,CAAA;QACV,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,oBAAoB,CACnC,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC7C,SAAQ,YAAY;IACpB,UAAU,CAAC,EAAE,aAAa,CAAA;CAC3B;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;AACxC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEjD,KAAK,eAAe,GAAG;IACrB,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;IAC/B,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;CACjC,CAAA;AAQD,eAAO,MAAM,iBAAiB,MAAM,CAAA;AAEpC,eAAO,MAAM,cAAc,GAAI,KAAK,QAAQ,EAAE,SAAS,MAAM,WAkB5D,CAAA;AAMD,eAAO,MAAM,WAAW,GACtB,aAAa,UAAU,EACvB,UAAU,kBAAkB;YAQP,OAAO,OACrB,QAAQ,SACN,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAC7B,YAAY,KACrB,OAAO,CAAC,GAAG,CAAC;oBAqDc,SAAS,SAAS,eAAe,OACvD,QAAQ,SACN,SAAS,YACP,oBAAoB,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;0BAgDlC,QAAQ;CA0B5C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAGzD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE;QACP,EAAE,EAAE,MAAM,CAAA;QACV,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,oBAAoB,CACnC,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC7C,SAAQ,YAAY;IACpB,UAAU,CAAC,EAAE,aAAa,CAAA;CAC3B;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;AACxC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEjD,KAAK,eAAe,GAAG;IACrB,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;IAC/B,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;CACjC,CAAA;AAmBD,eAAO,MAAM,iBAAiB,MAAM,CAAA;AAEpC,eAAO,MAAM,cAAc,GAAI,KAAK,QAAQ,EAAE,SAAS,MAAM,WAkB5D,CAAA;AAMD,eAAO,MAAM,WAAW,GACtB,aAAa,UAAU,EACvB,UAAU,kBAAkB;YAQP,OAAO,OACrB,QAAQ,SACN,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAC7B,YAAY,KACrB,OAAO,CAAC,GAAG,CAAC;oBAqDc,SAAS,SAAS,eAAe,OACvD,QAAQ,SACN,SAAS,YACP,oBAAoB,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;0BA+ClC,QAAQ;CA0B5C,CAAA"}
@@ -2,6 +2,10 @@ import { CacheTimeoutError } from "./errors.js";
2
2
  import { MemcachedClient } from "./clients/MemcachedClient.js";
3
3
  import { RedisClient } from "./clients/RedisClient.js";
4
4
  import { InMemoryClient } from "./clients/InMemoryClient.js";
5
+ const PRISMA_CLIENT_VALIDATION_ERROR_NAME = "PrismaClientValidationError";
6
+ const isPrismaClientValidationError = (error) => {
7
+ return error !== null && typeof error === "object" && "name" in error && error.name === PRISMA_CLIENT_VALIDATION_ERROR_NAME;
8
+ };
5
9
  const DEFAULT_LATEST_FIELDS = { id: "id", updatedAt: "updatedAt" };
6
10
  const wait = (ms) => {
7
11
  return new Promise((resolve) => setTimeout(resolve, ms));
@@ -71,7 +75,6 @@ const createCache = (cacheClient, options) => {
71
75
  const { conditions, ...rest } = options2;
72
76
  const cacheKey = formatCacheKey(key, prefix);
73
77
  let latest, latestCacheKey;
74
- const { PrismaClientValidationError } = await import("@prisma/client");
75
78
  try {
76
79
  latest = await model.findFirst({
77
80
  ...conditions,
@@ -79,17 +82,18 @@ const createCache = (cacheClient, options) => {
79
82
  select: { [fields.id]: true, [fields.updatedAt]: true }
80
83
  });
81
84
  } catch (e) {
82
- if (e instanceof PrismaClientValidationError) {
85
+ if (isPrismaClientValidationError(e)) {
83
86
  logger?.error(
84
87
  `[Cache] cacheFindMany error: model does not contain \`${fields.id}\` or \`${fields.updatedAt}\` fields`
85
88
  );
86
89
  } else {
87
- logger?.error(`[Cache] cacheFindMany error: ${e.message}`);
90
+ const message = e instanceof Error ? e.message : String(e ?? "Unknown error");
91
+ logger?.error(`[Cache] cacheFindMany error: ${message}`);
88
92
  }
89
93
  return serialize(await model.findMany(conditions));
90
94
  }
91
95
  if (latest) {
92
- latestCacheKey = `${cacheKey}${cacheKeySeparator}${latest.id}${cacheKeySeparator}${latest[fields.updatedAt].getTime()}`;
96
+ latestCacheKey = `${cacheKey}${cacheKeySeparator}${latest[fields.id]}${cacheKeySeparator}${latest[fields.updatedAt].getTime()}`;
93
97
  } else {
94
98
  logger?.debug(
95
99
  `[Cache] cacheFindMany: No data to cache for key \`${key}\`, skipping`
package/dist/errors.d.ts CHANGED
@@ -1,5 +1,13 @@
1
- export declare class RedwoodError extends Error {
1
+ export declare class CedarError extends Error {
2
2
  extensions: Record<string, any> | undefined;
3
3
  constructor(message: string, extensions?: Record<string, any>);
4
4
  }
5
+ /**
6
+ * @deprecated Use `CedarError` instead.
7
+ * Preserved as a distinct class to maintain backward compatibility for code that checks
8
+ * `error.name === 'RedwoodError'` or `instanceof RedwoodError`.
9
+ */
10
+ export declare class RedwoodError extends CedarError {
11
+ constructor(message: string, extensions?: Record<string, any>);
12
+ }
5
13
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;IACrC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAA;gBAC/B,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAQ9D"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAW,SAAQ,KAAK;IACnC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAA;gBAC/B,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAQ9D;AAED;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,UAAU;gBAC9B,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAI9D"}
package/dist/errors.js CHANGED
@@ -1,14 +1,21 @@
1
- class RedwoodError extends Error {
1
+ class CedarError extends Error {
2
2
  extensions;
3
3
  constructor(message, extensions) {
4
4
  super(message);
5
- this.name = "RedwoodError";
5
+ this.name = "CedarError";
6
6
  this.extensions = {
7
7
  ...extensions,
8
8
  code: extensions?.code || "REDWOODJS_ERROR"
9
9
  };
10
10
  }
11
11
  }
12
+ class RedwoodError extends CedarError {
13
+ constructor(message, extensions) {
14
+ super(message, extensions);
15
+ this.name = "RedwoodError";
16
+ }
17
+ }
12
18
  export {
19
+ CedarError,
13
20
  RedwoodError
14
21
  };
package/dist/index.d.ts CHANGED
@@ -6,10 +6,11 @@ export * from './types.js';
6
6
  export * from './transforms.js';
7
7
  export * from './cors.js';
8
8
  export * from './event.js';
9
- export declare const prismaVersion: any;
9
+ export * from './signedTokens/index.js';
10
+ export declare const prismaVersion: string | undefined;
10
11
  /** @deprecated - use `cedarVersion` instead */
11
- export declare const redwoodVersion: any;
12
+ export declare const redwoodVersion: string;
12
13
  /** @deprecated - use `cedarVersion` instead */
13
- export declare const cedarjsVersion: any;
14
- export declare const cedarVersion: any;
14
+ export declare const cedarjsVersion: string;
15
+ export declare const cedarVersion: string;
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AACvC,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AA0B1B,eAAO,MAAM,aAAa,KAA8C,CAAA;AACxE,+CAA+C;AAC/C,eAAO,MAAM,cAAc,KAAuB,CAAA;AAClD,+CAA+C;AAC/C,eAAO,MAAM,cAAc,KAAuB,CAAA;AAClD,eAAO,MAAM,YAAY,KAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AACvC,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,yBAAyB,CAAA;AAUvC,eAAO,MAAM,aAAa,EAAE,MAAM,GAAG,SAAqC,CAAA;AAC1E,+CAA+C;AAC/C,eAAO,MAAM,cAAc,QAAwB,CAAA;AACnD,+CAA+C;AAC/C,eAAO,MAAM,cAAc,QAAwB,CAAA;AACnD,eAAO,MAAM,YAAY,QAAwB,CAAA"}
package/dist/index.js CHANGED
@@ -1,4 +1,3 @@
1
- import { createRequire } from "node:module";
2
1
  export * from "./auth/index.js";
3
2
  export * from "./errors.js";
4
3
  export * from "./validations/validations.js";
@@ -7,24 +6,11 @@ export * from "./types.js";
7
6
  export * from "./transforms.js";
8
7
  export * from "./cors.js";
9
8
  export * from "./event.js";
10
- const customRequire = (
11
- // Look out for a stubbed require function (@rollup will stub it)
12
- // @ts-expect-error - Using `0, ` to work around bundler magic
13
- typeof require === "function" && !(0, require).toString().includes("@rollup") ? require : createRequire(import.meta.url)
14
- );
15
- const cedarApiPath = customRequire.resolve("@cedarjs/api");
16
- const cedarApiRequire = createRequire(cedarApiPath);
17
- let packageJson = cedarApiRequire("./package.json");
18
- if (packageJson?.name !== "@cedarjs/api") {
19
- packageJson = cedarApiRequire("../package.json");
20
- }
21
- if (packageJson?.name !== "@cedarjs/api") {
22
- packageJson = cedarApiRequire("../../package.json");
23
- }
24
- const prismaVersion = packageJson?.dependencies["@prisma/client"];
25
- const redwoodVersion = packageJson?.version;
26
- const cedarjsVersion = packageJson?.version;
27
- const cedarVersion = packageJson?.version;
9
+ export * from "./signedTokens/index.js";
10
+ const prismaVersion = "7.10.0";
11
+ const redwoodVersion = "9.0.0-canary.3124";
12
+ const cedarjsVersion = "9.0.0-canary.3124";
13
+ const cedarVersion = "9.0.0-canary.3124";
28
14
  export {
29
15
  cedarVersion,
30
16
  cedarjsVersion,
@@ -90,24 +90,26 @@ export declare const defaultLoggerOptions: {
90
90
  redact: string[];
91
91
  };
92
92
  /**
93
- * RedwoodLoggerOptions defines custom logger options that extend those available in LoggerOptions
93
+ * CedarLoggerOptions defines custom logger options that extend those available in LoggerOptions
94
94
  * and can define a destination like a file or other supported pin log transport stream
95
95
  *
96
- * @typedef {Object} RedwoodLoggerOptions
96
+ * @typedef {Object} CedarLoggerOptions
97
97
  * @extends LoggerOptions
98
98
  * @property {options} LoggerOptions - options define how to log
99
99
  * @property {string | DestinationStream} destination - destination defines where to log
100
100
  * @property {boolean} showConfig - Display logger configuration on initialization
101
101
  */
102
- export interface RedwoodLoggerOptions {
102
+ export interface CedarLoggerOptions {
103
103
  options?: LoggerOptions;
104
104
  destination?: string | DestinationStream;
105
105
  showConfig?: boolean;
106
106
  }
107
+ /** @deprecated Use `CedarLoggerOptions` instead. */
108
+ export type RedwoodLoggerOptions = CedarLoggerOptions;
107
109
  /**
108
110
  * Creates the logger
109
111
  *
110
- * @param options {RedwoodLoggerOptions} - Override the default logger configuration
112
+ * @param options {CedarLoggerOptions} - Override the default logger configuration
111
113
  * @param destination {DestinationStream} - An optional destination stream
112
114
  * @param showConfig {Boolean} - Show the logger configuration. This is off by default.
113
115
  *
@@ -121,7 +123,7 @@ export interface RedwoodLoggerOptions {
121
123
  *
122
124
  * @return {Logger} - The configured logger
123
125
  */
124
- export declare const createLogger: ({ options, destination, showConfig, }: RedwoodLoggerOptions) => Logger;
126
+ export declare const createLogger: ({ options, destination, showConfig, }: CedarLoggerOptions) => Logger;
125
127
  /**
126
128
  * Determines the type and level of logging.
127
129
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,MAAM,CAAA;AAGzB;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAA;AAC7B,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,CAAA;AACrC,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,iBAAiB,CAAA;AACnD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,eAAe,CAAA;AAC/C,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,aAAa,CAAA;AAC3C,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAA;AAI1D,KAAK,YAAY,GAAG,GAAG,CAAA;AAEvB,KAAK,aAAa,GAAG;IACnB,KAAK,EAAE,QAAQ,CAAA;IACf,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAA;CACzB,CAAA;AAgBD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,SAAyC,CAAA;AAEnE;;;;;GAKG;AACH,eAAO,MAAM,MAAM,SAAkC,CAAA;AAErD;;;;;GAKG;AACH,eAAO,MAAM,YAAY,SAA4B,CAAA;AAQrD,eAAO,MAAM,cAAc,EAAE,MAAM,EAgClC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,QAAQ,EAAE,eAAe,GAAG,MAUrC,CAAA;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,oBAAoB;;;CAGR,CAAA;AAEzB;;;;;;;;;GASG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAA;IACxC,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,YAAY,GAAI,uCAI1B,oBAAoB,KAAG,MAyCzB,CAAA;AAQD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAAQ,EAA8B,CAAA;AAErE;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,cAAc,QAAQ,EAAE,KAAG,aAAa,EAIrE,CAAA;AAED;;;;;;;;;;;GAWG;AACH,UAAU,mBAAmB;IAC3B,EAAE,EAAE,YAAY,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,mBAAmB,GAAI,QAAQ,mBAAmB,KAAG,IA8CjE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,MAAM,CAAA;AAGzB;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAA;AAC7B,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,CAAA;AACrC,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,iBAAiB,CAAA;AACnD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,eAAe,CAAA;AAC/C,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,aAAa,CAAA;AAC3C,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAA;AAI1D,KAAK,YAAY,GAAG,GAAG,CAAA;AAEvB,KAAK,aAAa,GAAG;IACnB,KAAK,EAAE,QAAQ,CAAA;IACf,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAA;CACzB,CAAA;AAgBD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,SAAyC,CAAA;AAEnE;;;;;GAKG;AACH,eAAO,MAAM,MAAM,SAAkC,CAAA;AAErD;;;;;GAKG;AACH,eAAO,MAAM,YAAY,SAA4B,CAAA;AAQrD,eAAO,MAAM,cAAc,EAAE,MAAM,EAgClC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,QAAQ,EAAE,eAAe,GAAG,MAUrC,CAAA;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,oBAAoB;;;CAGR,CAAA;AAEzB;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAA;IACxC,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,oDAAoD;AACpD,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CAAA;AAErD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,YAAY,GAAI,uCAI1B,kBAAkB,KAAG,MAuCvB,CAAA;AAQD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAAQ,EAA8B,CAAA;AAErE;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,cAAc,QAAQ,EAAE,KAAG,aAAa,EAIrE,CAAA;AAED;;;;;;;;;;;GAWG;AACH,UAAU,mBAAmB;IAC3B,EAAE,EAAE,YAAY,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,mBAAmB,GAAI,QAAQ,mBAAmB,KAAG,IA8CjE,CAAA"}
@@ -1,4 +1,4 @@
1
- import pino from "pino";
1
+ import { pino } from "pino";
2
2
  const isDevelopment = process.env.NODE_ENV === "development";
3
3
  const isTest = process.env.NODE_ENV === "test";
4
4
  const isProduction = !isDevelopment && !isTest;
@@ -0,0 +1,48 @@
1
+ import type { APIGatewayProxyEvent, APIGatewayProxyResult, Context as LambdaContext } from 'aws-lambda';
2
+ import type { AuthContextPayload } from './auth/index.js';
3
+ export interface CedarRequestContext {
4
+ params: Record<string, string>;
5
+ query: URLSearchParams;
6
+ cookies: ReadonlyMap<string, string>;
7
+ /**
8
+ * The auth state the request carries, for `getCurrentUser` to turn into a
9
+ * current user. Only GraphQL requests have one: the GraphQL server resolves
10
+ * it, through the `buildRequestContext` that `createGraphQLYoga` returns,
11
+ * because it's the only thing that reads it. `buildCedarContext` leaves it
12
+ * unset.
13
+ */
14
+ serverAuthState?: AuthContextPayload;
15
+ }
16
+ export type CedarHandler = (request: Request, ctx: CedarRequestContext) => Promise<Response> | Response;
17
+ export type CedarMiddleware = (request: Request, ctx: CedarRequestContext, next: () => Promise<Response>) => Promise<Response>;
18
+ export interface CedarRouteRecord {
19
+ /**
20
+ * Unique identifier for this route, typically the URL path (e.g. `/graphql`).
21
+ * Used to derive the UD `EntryMeta.id`.
22
+ */
23
+ id: string;
24
+ path: string;
25
+ methods: string[];
26
+ type: 'graphql' | 'auth' | 'function' | 'health';
27
+ entry: string;
28
+ }
29
+ export interface BuildCedarContextOptions {
30
+ params?: Record<string, string>;
31
+ lambdaContext?: LambdaContext;
32
+ }
33
+ export interface LegacyHandlerContext {
34
+ event: APIGatewayProxyEvent;
35
+ context: LambdaContext;
36
+ request: Request;
37
+ cedarContext: CedarRequestContext;
38
+ }
39
+ export type LegacyHandlerResult = APIGatewayProxyResult | Response;
40
+ export type LegacyHandler = (event: APIGatewayProxyEvent, context: LambdaContext) => Promise<LegacyHandlerResult> | LegacyHandlerResult;
41
+ export declare function buildCedarContext(request: Request, options?: BuildCedarContextOptions): Promise<CedarRequestContext>;
42
+ export declare function composeCedarMiddleware(handler: CedarHandler, middleware: CedarMiddleware[]): CedarHandler;
43
+ export declare function createRouteManifest(routes: CedarRouteRecord[]): CedarRouteRecord[];
44
+ export declare function routeManifestToJSON(routes: CedarRouteRecord[]): string;
45
+ export declare function wrapLegacyHandler(legacyHandler: LegacyHandler, options?: BuildCedarContextOptions): CedarHandler;
46
+ export declare function requestToLegacyEvent(request: Request, ctx: CedarRequestContext): Promise<APIGatewayProxyEvent>;
47
+ export declare function legacyResultToResponse(result: LegacyHandlerResult): Response;
48
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAEpB,qBAAqB,EACrB,OAAO,IAAI,aAAa,EACzB,MAAM,YAAY,CAAA;AAInB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAGzD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,KAAK,EAAE,eAAe,CAAA;IACtB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,kBAAkB,CAAA;CACrC;AAED,MAAM,MAAM,YAAY,GAAG,CACzB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,mBAAmB,KACrB,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAA;AAEjC,MAAM,MAAM,eAAe,GAAG,CAC5B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,KAC1B,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEtB,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAA;IAChD,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,oBAAoB,CAAA;IAC3B,OAAO,EAAE,aAAa,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,mBAAmB,CAAA;CAClC;AAED,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,GAAG,QAAQ,CAAA;AAElE,MAAM,MAAM,aAAa,GAAG,CAC1B,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,aAAa,KACnB,OAAO,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAAA;AAyBvD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,mBAAmB,CAAC,CAuB9B;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,eAAe,EAAE,GAC5B,YAAY,CAMd;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,EAAE,GACzB,gBAAgB,EAAE,CAOpB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAEtE;AAED,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,aAAa,EAC5B,OAAO,GAAE,wBAA6B,GACrC,YAAY,CAQd;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,mBAAmB,GACvB,OAAO,CAAC,oBAAoB,CAAC,CAoB/B;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,mBAAmB,GAAG,QAAQ,CAsD5E"}
@@ -0,0 +1,131 @@
1
+ import * as cookie from "cookie";
2
+ import { parse } from "picoquery";
3
+ import { requestToBaseEvent } from "./transforms.js";
4
+ const DEFAULT_LAMBDA_CONTEXT = {
5
+ callbackWaitsForEmptyEventLoop: false,
6
+ functionName: "cedar",
7
+ functionVersion: "$LATEST",
8
+ invokedFunctionArn: "cedar",
9
+ memoryLimitInMB: "0",
10
+ awsRequestId: "cedar-request",
11
+ logGroupName: "cedar",
12
+ logStreamName: "cedar",
13
+ getRemainingTimeInMillis() {
14
+ return 0;
15
+ },
16
+ done() {
17
+ return void 0;
18
+ },
19
+ fail() {
20
+ return void 0;
21
+ },
22
+ succeed() {
23
+ return void 0;
24
+ }
25
+ };
26
+ async function buildCedarContext(request, options = {}) {
27
+ const url = new URL(request.url);
28
+ const query = url.searchParams;
29
+ const cookies = new Map(
30
+ Object.entries(cookie.parse(request.headers.get("cookie") ?? "")).filter(
31
+ (entry) => {
32
+ return entry[1] !== void 0;
33
+ }
34
+ )
35
+ );
36
+ const params = options.params ?? {};
37
+ return {
38
+ params,
39
+ query,
40
+ cookies
41
+ };
42
+ }
43
+ function composeCedarMiddleware(handler, middleware) {
44
+ return middleware.reduceRight((next, current) => {
45
+ return (request, ctx) => {
46
+ return current(request, ctx, async () => next(request, ctx));
47
+ };
48
+ }, handler);
49
+ }
50
+ function createRouteManifest(routes) {
51
+ return routes.map((route) => {
52
+ return {
53
+ ...route,
54
+ methods: [...route.methods]
55
+ };
56
+ });
57
+ }
58
+ function routeManifestToJSON(routes) {
59
+ return JSON.stringify(createRouteManifest(routes), null, 2);
60
+ }
61
+ function wrapLegacyHandler(legacyHandler, options = {}) {
62
+ return async (request, ctx) => {
63
+ const lambdaContext = options.lambdaContext ?? DEFAULT_LAMBDA_CONTEXT;
64
+ const event = await requestToLegacyEvent(request, ctx);
65
+ const result = await legacyHandler(event, lambdaContext);
66
+ return legacyResultToResponse(result);
67
+ };
68
+ }
69
+ async function requestToLegacyEvent(request, ctx) {
70
+ const url = new URL(request.url);
71
+ const base = await requestToBaseEvent(request);
72
+ const queryStringParameters = parse(url.search ? url.search.slice(1) : "", {
73
+ nestingSyntax: "index",
74
+ arrayRepeat: true,
75
+ arrayRepeatSyntax: "bracket"
76
+ });
77
+ return {
78
+ ...base,
79
+ queryStringParameters,
80
+ pathParameters: Object.keys(ctx.params).length > 0 ? ctx.params : base.pathParameters
81
+ };
82
+ }
83
+ function legacyResultToResponse(result) {
84
+ if (result instanceof Response) {
85
+ return result;
86
+ }
87
+ const headers = new Headers();
88
+ if (result.headers) {
89
+ for (const [name, value] of Object.entries(result.headers)) {
90
+ if (Array.isArray(value)) {
91
+ for (const item of value) {
92
+ headers.append(name, item);
93
+ }
94
+ } else if (value !== void 0) {
95
+ headers.set(name, String(value));
96
+ }
97
+ }
98
+ }
99
+ if (result.multiValueHeaders) {
100
+ for (const [name, values] of Object.entries(result.multiValueHeaders)) {
101
+ if (!values) {
102
+ continue;
103
+ }
104
+ for (const value of values) {
105
+ headers.append(name, String(value));
106
+ }
107
+ }
108
+ }
109
+ const status = result.statusCode ?? 200;
110
+ const isNoBodyStatus = status === 204 || status === 205 || status === 304;
111
+ const body = isNoBodyStatus ? null : result.body ?? "";
112
+ if (result.isBase64Encoded && !isNoBodyStatus) {
113
+ return new Response(Buffer.from(body || "", "base64"), {
114
+ status,
115
+ headers
116
+ });
117
+ }
118
+ return new Response(body, {
119
+ status,
120
+ headers
121
+ });
122
+ }
123
+ export {
124
+ buildCedarContext,
125
+ composeCedarMiddleware,
126
+ createRouteManifest,
127
+ legacyResultToResponse,
128
+ requestToLegacyEvent,
129
+ routeManifestToJSON,
130
+ wrapLegacyHandler
131
+ };
@@ -0,0 +1,2 @@
1
+ export * from './signedTokens.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signedTokens/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1 @@
1
+ export * from "./signedTokens.js";