@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.
- package/dist/auth/index.d.ts +14 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +19 -5
- package/dist/bins/cedar.js +14 -0
- package/dist/bins/cfw.js +14 -0
- package/dist/bins/redwood.js +14 -0
- package/dist/bins/tsc.js +8 -0
- package/dist/cache/clients/RedisClient.d.ts.map +1 -1
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +8 -4
- package/dist/errors.d.ts +9 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +9 -2
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -19
- package/dist/logger/index.d.ts +7 -5
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +1 -1
- package/dist/runtime.d.ts +48 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +131 -0
- package/dist/signedTokens/index.d.ts +2 -0
- package/dist/signedTokens/index.d.ts.map +1 -0
- package/dist/signedTokens/index.js +1 -0
- package/dist/signedTokens/signedTokens.d.ts +99 -0
- package/dist/signedTokens/signedTokens.d.ts.map +1 -0
- package/dist/signedTokens/signedTokens.js +100 -0
- package/dist/transforms.d.ts +1 -0
- package/dist/transforms.d.ts.map +1 -1
- package/dist/transforms.js +82 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/validations/validations.d.ts +21 -8
- package/dist/validations/validations.d.ts.map +1 -1
- package/dist/validations/validations.js +16 -14
- package/package.json +35 -46
- package/LICENSE +0 -21
- package/dist/cjs/auth/index.d.ts +0 -51
- package/dist/cjs/auth/index.d.ts.map +0 -1
- package/dist/cjs/auth/index.js +0 -129
- package/dist/cjs/auth/parseJWT.d.ts +0 -6
- package/dist/cjs/auth/parseJWT.d.ts.map +0 -1
- package/dist/cjs/auth/parseJWT.js +0 -57
- package/dist/cjs/auth/verifiers/base64Sha1Verifier.d.ts +0 -18
- package/dist/cjs/auth/verifiers/base64Sha1Verifier.d.ts.map +0 -1
- package/dist/cjs/auth/verifiers/base64Sha1Verifier.js +0 -77
- package/dist/cjs/auth/verifiers/base64Sha256Verifier.d.ts +0 -18
- package/dist/cjs/auth/verifiers/base64Sha256Verifier.d.ts.map +0 -1
- package/dist/cjs/auth/verifiers/base64Sha256Verifier.js +0 -77
- package/dist/cjs/auth/verifiers/common.d.ts +0 -112
- package/dist/cjs/auth/verifiers/common.d.ts.map +0 -1
- package/dist/cjs/auth/verifiers/common.js +0 -89
- package/dist/cjs/auth/verifiers/index.d.ts +0 -8
- package/dist/cjs/auth/verifiers/index.d.ts.map +0 -1
- package/dist/cjs/auth/verifiers/index.js +0 -39
- package/dist/cjs/auth/verifiers/jwtVerifier.d.ts +0 -18
- package/dist/cjs/auth/verifiers/jwtVerifier.d.ts.map +0 -1
- package/dist/cjs/auth/verifiers/jwtVerifier.js +0 -84
- package/dist/cjs/auth/verifiers/secretKeyVerifier.d.ts +0 -11
- package/dist/cjs/auth/verifiers/secretKeyVerifier.d.ts.map +0 -1
- package/dist/cjs/auth/verifiers/secretKeyVerifier.js +0 -43
- package/dist/cjs/auth/verifiers/sha1Verifier.d.ts +0 -17
- package/dist/cjs/auth/verifiers/sha1Verifier.d.ts.map +0 -1
- package/dist/cjs/auth/verifiers/sha1Verifier.js +0 -85
- package/dist/cjs/auth/verifiers/sha256Verifier.d.ts +0 -17
- package/dist/cjs/auth/verifiers/sha256Verifier.d.ts.map +0 -1
- package/dist/cjs/auth/verifiers/sha256Verifier.js +0 -85
- package/dist/cjs/auth/verifiers/skipVerifier.d.ts +0 -11
- package/dist/cjs/auth/verifiers/skipVerifier.d.ts.map +0 -1
- package/dist/cjs/auth/verifiers/skipVerifier.js +0 -40
- package/dist/cjs/auth/verifiers/timestampSchemeVerifier.d.ts +0 -14
- package/dist/cjs/auth/verifiers/timestampSchemeVerifier.d.ts.map +0 -1
- package/dist/cjs/auth/verifiers/timestampSchemeVerifier.js +0 -86
- package/dist/cjs/bins/cedar.d.ts +0 -9
- package/dist/cjs/bins/cedar.d.ts.map +0 -1
- package/dist/cjs/bins/cedar.js +0 -36
- package/dist/cjs/bins/cfw.d.ts +0 -3
- package/dist/cjs/bins/cfw.d.ts.map +0 -1
- package/dist/cjs/bins/cfw.js +0 -36
- package/dist/cjs/bins/redwood.d.ts +0 -9
- package/dist/cjs/bins/redwood.d.ts.map +0 -1
- package/dist/cjs/bins/redwood.js +0 -36
- package/dist/cjs/bins/tsc.d.ts +0 -3
- package/dist/cjs/bins/tsc.d.ts.map +0 -1
- package/dist/cjs/bins/tsc.js +0 -30
- package/dist/cjs/cache/clients/BaseClient.d.ts +0 -11
- package/dist/cjs/cache/clients/BaseClient.d.ts.map +0 -1
- package/dist/cjs/cache/clients/BaseClient.js +0 -31
- package/dist/cjs/cache/clients/InMemoryClient.d.ts +0 -31
- package/dist/cjs/cache/clients/InMemoryClient.d.ts.map +0 -1
- package/dist/cjs/cache/clients/InMemoryClient.js +0 -94
- package/dist/cjs/cache/clients/MemcachedClient.d.ts +0 -16
- package/dist/cjs/cache/clients/MemcachedClient.d.ts.map +0 -1
- package/dist/cjs/cache/clients/MemcachedClient.js +0 -79
- package/dist/cjs/cache/clients/RedisClient.d.ts +0 -20
- package/dist/cjs/cache/clients/RedisClient.d.ts.map +0 -1
- package/dist/cjs/cache/clients/RedisClient.js +0 -83
- package/dist/cjs/cache/errors.d.ts +0 -4
- package/dist/cjs/cache/errors.d.ts.map +0 -1
- package/dist/cjs/cache/errors.js +0 -33
- package/dist/cjs/cache/index.d.ts +0 -35
- package/dist/cjs/cache/index.d.ts.map +0 -1
- package/dist/cjs/cache/index.js +0 -171
- package/dist/cjs/cors.d.ts +0 -16
- package/dist/cjs/cors.d.ts.map +0 -1
- package/dist/cjs/cors.js +0 -93
- package/dist/cjs/errors.d.ts +0 -5
- package/dist/cjs/errors.d.ts.map +0 -1
- package/dist/cjs/errors.js +0 -38
- package/dist/cjs/event.d.ts +0 -3
- package/dist/cjs/event.d.ts.map +0 -1
- package/dist/cjs/event.js +0 -34
- package/dist/cjs/functions/fixtures/apiGatewayProxyEvent.fixture.d.ts +0 -4
- package/dist/cjs/functions/fixtures/apiGatewayProxyEvent.fixture.d.ts.map +0 -1
- package/dist/cjs/functions/fixtures/apiGatewayProxyEvent.fixture.js +0 -72
- package/dist/cjs/index.d.ts +0 -15
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/index.js +0 -70
- package/dist/cjs/logger/index.d.ts +0 -179
- package/dist/cjs/logger/index.d.ts.map +0 -1
- package/dist/cjs/logger/index.js +0 -195
- package/dist/cjs/package.json +0 -1
- package/dist/cjs/transforms.d.ts +0 -35
- package/dist/cjs/transforms.d.ts.map +0 -1
- package/dist/cjs/transforms.js +0 -98
- package/dist/cjs/types.d.ts +0 -25
- package/dist/cjs/types.d.ts.map +0 -1
- package/dist/cjs/types.js +0 -16
- package/dist/cjs/validations/errors.d.ts +0 -101
- package/dist/cjs/validations/errors.d.ts.map +0 -1
- package/dist/cjs/validations/errors.js +0 -298
- package/dist/cjs/validations/validations.d.ts +0 -222
- package/dist/cjs/validations/validations.d.ts.map +0 -1
- package/dist/cjs/validations/validations.js +0 -351
- package/dist/cjs/webhooks/index.d.ts +0 -77
- package/dist/cjs/webhooks/index.d.ts.map +0 -1
- package/dist/cjs/webhooks/index.js +0 -102
package/dist/auth/index.d.ts
CHANGED
|
@@ -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 |
|
|
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
|
/**
|
package/dist/auth/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/auth/index.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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
|
-
|
|
76
|
-
|
|
81
|
+
event: normalizedEvent,
|
|
82
|
+
request: underlyingRequest,
|
|
77
83
|
context
|
|
78
84
|
});
|
|
79
85
|
i++;
|
|
80
86
|
}
|
|
81
|
-
return [
|
|
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());
|
package/dist/bins/cfw.js
ADDED
|
@@ -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());
|
package/dist/bins/tsc.js
ADDED
|
@@ -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;
|
|
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;
|
|
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"}
|
package/dist/cache/index.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
|
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
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,
|
|
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
|
|
1
|
+
class CedarError extends Error {
|
|
2
2
|
extensions;
|
|
3
3
|
constructor(message, extensions) {
|
|
4
4
|
super(message);
|
|
5
|
-
this.name = "
|
|
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
|
|
9
|
+
export * from './signedTokens/index.js';
|
|
10
|
+
export declare const prismaVersion: string | undefined;
|
|
10
11
|
/** @deprecated - use `cedarVersion` instead */
|
|
11
|
-
export declare const redwoodVersion:
|
|
12
|
+
export declare const redwoodVersion: string;
|
|
12
13
|
/** @deprecated - use `cedarVersion` instead */
|
|
13
|
-
export declare const cedarjsVersion:
|
|
14
|
-
export declare const cedarVersion:
|
|
14
|
+
export declare const cedarjsVersion: string;
|
|
15
|
+
export declare const cedarVersion: string;
|
|
15
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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,
|
package/dist/logger/index.d.ts
CHANGED
|
@@ -90,24 +90,26 @@ export declare const defaultLoggerOptions: {
|
|
|
90
90
|
redact: string[];
|
|
91
91
|
};
|
|
92
92
|
/**
|
|
93
|
-
*
|
|
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}
|
|
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
|
|
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 {
|
|
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, }:
|
|
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,
|
|
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"}
|
package/dist/logger/index.js
CHANGED
|
@@ -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"}
|
package/dist/runtime.js
ADDED
|
@@ -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 @@
|
|
|
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";
|