@rest-vir/define-service 0.15.1 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/util/origin.d.ts +24 -0
- package/dist/util/origin.js +50 -0
- package/package.json +1 -1
package/dist/util/origin.d.ts
CHANGED
|
@@ -56,3 +56,27 @@ export declare const originRequirementShape: import("object-shape-tester").Shape
|
|
|
56
56
|
}]>, import("object-shape-tester").ShapeClass<[RegExpConstructor]>, () => void, import("object-shape-tester").ShapeOr<[string, import("object-shape-tester").ShapeExact<readonly [{
|
|
57
57
|
anyOrigin: boolean;
|
|
58
58
|
}]>, import("object-shape-tester").ShapeClass<[RegExpConstructor]>, () => void]>[]]>, false>;
|
|
59
|
+
/**
|
|
60
|
+
* - `boolean`: the origin was explicitly checked and passed (`true`) or failed (`false`)
|
|
61
|
+
* - `undefined`: no origin checking occurred
|
|
62
|
+
* - `AnyOrigin`: requirements explicitly allow any origin.
|
|
63
|
+
*/
|
|
64
|
+
export type OriginRequirementResult = boolean | undefined | AnyOrigin;
|
|
65
|
+
/**
|
|
66
|
+
* Checks the given origin against the given origin requirement and determine if the origin matches.
|
|
67
|
+
* See {@link OriginRequirementResult} for details on what each possible return value means.
|
|
68
|
+
*
|
|
69
|
+
* @category Internal
|
|
70
|
+
* @category Package : @rest-vir/define-service
|
|
71
|
+
* @package [`@rest-vir/define-service`](https://www.npmjs.com/package/@rest-vir/define-service)
|
|
72
|
+
*/
|
|
73
|
+
export declare function checkOriginRequirement(origin: string | undefined, originRequirement: OriginRequirement): Promise<OriginRequirementResult>;
|
|
74
|
+
/**
|
|
75
|
+
* Narrower version of {@link checkOriginRequirement} that simply returns `true` if the origin
|
|
76
|
+
* matched or `false` otherwise.
|
|
77
|
+
*
|
|
78
|
+
* @category Internal
|
|
79
|
+
* @category Package : @rest-vir/define-service
|
|
80
|
+
* @package [`@rest-vir/define-service`](https://www.npmjs.com/package/@rest-vir/define-service)
|
|
81
|
+
*/
|
|
82
|
+
export declare function matchesOriginRequirement(origin: string | undefined, originRequirement: NonNullable<OriginRequirement>): Promise<boolean>;
|
package/dist/util/origin.js
CHANGED
|
@@ -31,3 +31,53 @@ export function isAnyOrigin(input) {
|
|
|
31
31
|
export const originRequirementShape = defineShape(or(undefined, '', exact(AnyOrigin), classShape(RegExp), () => { }, [
|
|
32
32
|
or('', exact(AnyOrigin), classShape(RegExp), () => { }),
|
|
33
33
|
]));
|
|
34
|
+
/**
|
|
35
|
+
* Checks the given origin against the given origin requirement and determine if the origin matches.
|
|
36
|
+
* See {@link OriginRequirementResult} for details on what each possible return value means.
|
|
37
|
+
*
|
|
38
|
+
* @category Internal
|
|
39
|
+
* @category Package : @rest-vir/define-service
|
|
40
|
+
* @package [`@rest-vir/define-service`](https://www.npmjs.com/package/@rest-vir/define-service)
|
|
41
|
+
*/
|
|
42
|
+
export async function checkOriginRequirement(origin, originRequirement) {
|
|
43
|
+
if (isAnyOrigin(originRequirement)) {
|
|
44
|
+
/** Any origin has been explicitly allowed. */
|
|
45
|
+
return AnyOrigin;
|
|
46
|
+
}
|
|
47
|
+
else if (originRequirement === undefined) {
|
|
48
|
+
/** No checking occurred. */
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
else if (!origin) {
|
|
52
|
+
/** If there is an origin requirement but no origin then the origin automatically fails. */
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
else if (check.isString(originRequirement)) {
|
|
56
|
+
return origin === originRequirement;
|
|
57
|
+
}
|
|
58
|
+
else if (check.instanceOf(originRequirement, RegExp)) {
|
|
59
|
+
return !!originRequirement.exec(origin);
|
|
60
|
+
}
|
|
61
|
+
else if (check.isArray(originRequirement)) {
|
|
62
|
+
for (const requirement of originRequirement) {
|
|
63
|
+
if (await checkOriginRequirement(origin, requirement)) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
return await originRequirement(origin);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Narrower version of {@link checkOriginRequirement} that simply returns `true` if the origin
|
|
75
|
+
* matched or `false` otherwise.
|
|
76
|
+
*
|
|
77
|
+
* @category Internal
|
|
78
|
+
* @category Package : @rest-vir/define-service
|
|
79
|
+
* @package [`@rest-vir/define-service`](https://www.npmjs.com/package/@rest-vir/define-service)
|
|
80
|
+
*/
|
|
81
|
+
export async function matchesOriginRequirement(origin, originRequirement) {
|
|
82
|
+
return !!(await checkOriginRequirement(origin, originRequirement));
|
|
83
|
+
}
|