@farm.js/integration-utils 0.1.0-beta.7 → 0.1.0-beta.70
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/cookies.d.ts.map +1 -1
- package/dist/cookies.js +16 -1
- package/dist/integration.d.ts +2 -2
- package/dist/integration.d.ts.map +1 -1
- package/dist/integration.js +1 -1
- package/dist/url.d.ts.map +1 -1
- package/dist/url.js +9 -0
- package/package.json +2 -2
package/dist/cookies.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../src/cookies.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../src/cookies.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB;AAiBD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAelF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,EAAE,CAK3E;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE5E;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,oBAAyB,GACjC,MAAM,CA4BR;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAM,GACjD,MAAM,CAKR"}
|
package/dist/cookies.js
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decode a cookie value, tolerating malformed percent-encoding. A request can
|
|
3
|
+
* carry a cookie whose value is not valid UTF-8 percent-encoding (a latin-1
|
|
4
|
+
* value from an old link, a crawler, or an attacker-planted sibling-domain
|
|
5
|
+
* cookie); `decodeURIComponent` throws `URIError` on those. Falling back to the
|
|
6
|
+
* raw value keeps a single bad cookie from turning every auth route into a 500.
|
|
7
|
+
*/
|
|
8
|
+
function decodeCookieValue(value) {
|
|
9
|
+
try {
|
|
10
|
+
return decodeURIComponent(value);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
1
16
|
export function parseCookieHeaderMap(header) {
|
|
2
17
|
if (!header) {
|
|
3
18
|
return {};
|
|
@@ -8,7 +23,7 @@ export function parseCookieHeaderMap(header) {
|
|
|
8
23
|
.filter(Boolean)
|
|
9
24
|
.map((part) => {
|
|
10
25
|
const [key, ...rest] = part.split("=");
|
|
11
|
-
return [key,
|
|
26
|
+
return [key, decodeCookieValue(rest.join("="))];
|
|
12
27
|
}));
|
|
13
28
|
}
|
|
14
29
|
export function parseCookieHeaderList(header) {
|
package/dist/integration.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type FarmIntegrationHandlerContext, type FarmIntegrationAPIOperation, type FarmIntegrationLogger, type FarmIntegrationRouteMethod } from "@farm.js/core";
|
|
1
|
+
import { type FarmIntegrationHandlerContext, type FarmIntegrationAPIOperation, type FarmIntegrationLogger, type FarmIntegrationRouteMethod } from "@farm.js/core/integrations";
|
|
2
2
|
export interface AuthRouteIntegrationConfig<TInstance> {
|
|
3
3
|
type: string;
|
|
4
4
|
instance: TInstance;
|
|
@@ -17,7 +17,7 @@ export declare function createAuthRouteIntegration<TInstance>(config: AuthRouteI
|
|
|
17
17
|
methods: FarmIntegrationRouteMethod[];
|
|
18
18
|
handler(request: Request, context: FarmIntegrationHandlerContext): Response | Promise<Response>;
|
|
19
19
|
}[];
|
|
20
|
-
}>;
|
|
20
|
+
}, import("@farm.js/core").FarmIntegrationSchema | undefined>;
|
|
21
21
|
export declare function methodNotAllowed(allow: readonly string[]): Response;
|
|
22
22
|
export interface PathInferredClientOperation<TPath extends string = string, TOperation extends FarmIntegrationAPIOperation<any, any, any, any> = FarmIntegrationAPIOperation<any, any, any, any>, TLeafName extends string | undefined = undefined> {
|
|
23
23
|
path: TPath;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../src/integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAChC,MAAM,
|
|
1
|
+
{"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../src/integration.ts"],"names":[],"mappings":"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"}
|
package/dist/integration.js
CHANGED
package/dist/url.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../src/url.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,4BAA4B;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,SAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../src/url.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,4BAA4B;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,SAAM,GAAG,MAAM,CAgBvF;AAED,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,EAChB,iBAAiB,CAAC,EAAE,MAAM,GACzB,GAAG,CAML;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,GAAG,CAUjG;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAU1F;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,4BAA4B,EACnC,iBAAiB,CAAC,EAAE,MAAM,GACzB;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,KAAK,MAAM,CAAC;CAClG,CAkCA"}
|
package/dist/url.js
CHANGED
|
@@ -2,9 +2,18 @@ export function getOrigin(request, configuredBaseUrl) {
|
|
|
2
2
|
return configuredBaseUrl || new URL(request.url).origin;
|
|
3
3
|
}
|
|
4
4
|
export function getReturnTo(rawValue, fallback = "/") {
|
|
5
|
+
// Must be a same-origin, root-relative path. A bare startsWith("/") check is
|
|
6
|
+
// not enough: "//evil.com" (protocol-relative) and "/\evil.com" (browsers
|
|
7
|
+
// and the URL parser treat "\" as "/") both begin with "/" yet resolve to a
|
|
8
|
+
// foreign origin when passed to `new URL(returnTo, origin)`, giving an open
|
|
9
|
+
// redirect after a legitimate login.
|
|
5
10
|
if (!rawValue || !rawValue.startsWith("/")) {
|
|
6
11
|
return fallback;
|
|
7
12
|
}
|
|
13
|
+
const second = rawValue[1];
|
|
14
|
+
if (second === "/" || second === "\\") {
|
|
15
|
+
return fallback;
|
|
16
|
+
}
|
|
8
17
|
return rawValue;
|
|
9
18
|
}
|
|
10
19
|
export function toAbsoluteUrl(pathOrUrl, request, configuredBaseUrl) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@farm.js/integration-utils",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.70",
|
|
4
4
|
"description": "Shared integration utilities for Farm.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"access": "public"
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@farm.js/core": "0.1.0-beta.
|
|
56
|
+
"@farm.js/core": "0.1.0-beta.70"
|
|
57
57
|
},
|
|
58
58
|
"scripts": {
|
|
59
59
|
"build": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc",
|