one
Version:
One is a React framework for web, iOS, and Android apps.
61 lines (59 loc) • 2.22 kB
JavaScript
const knownPresentationStyles = [
"automatic",
"currentContext",
"formSheet",
"fullScreen",
"overCurrentContext",
"overFullScreen",
"pageSheet"
];
function assertBrowserUrl(url, verb) {
if (typeof url !== "string" || url.length === 0) {
throw new Error(`${verb}: url must be a non-empty string`);
}
}
function assertRedirectUrl(redirectUrl, verb) {
if (redirectUrl !== void 0 && redirectUrl !== null && typeof redirectUrl !== "string") {
throw new Error(`${verb}: redirectUrl must be a string or null`);
}
}
function assertOptionalString(options, key, verb) {
if (options[key] !== void 0 && typeof options[key] !== "string") {
throw new Error(`${verb}: ${key} must be a string`);
}
}
function assertOptionalBoolean(options, key, verb) {
if (options[key] !== void 0 && typeof options[key] !== "boolean") {
throw new Error(`${verb}: ${key} must be a boolean`);
}
}
const knownColorSchemes = [
"system",
"light",
"dark"
];
function assertOpenOptions(options, verb) {
if (options === void 0) return;
if (!options || typeof options !== "object") {
throw new Error(`${verb}: options must be an object`);
}
const fields = options;
if (fields.presentationStyle !== void 0 && (typeof fields.presentationStyle !== "string" || !knownPresentationStyles.includes(fields.presentationStyle))) {
throw new Error(`${verb}: unknown presentationStyle ${JSON.stringify(fields.presentationStyle)}`);
}
if (fields.colorScheme !== void 0 && (typeof fields.colorScheme !== "string" || !knownColorSchemes.includes(fields.colorScheme))) {
throw new Error(`${verb}: unknown colorScheme ${JSON.stringify(fields.colorScheme)}`);
}
assertOptionalString(fields, "browserPackage", verb);
assertOptionalString(fields, "toolbarColor", verb);
assertOptionalString(fields, "secondaryToolbarColor", verb);
assertOptionalString(fields, "controlsColor", verb);
assertOptionalBoolean(fields, "showTitle", verb);
}
function assertAuthOptions(options, verb) {
assertOpenOptions(options, verb);
if (options === void 0) return;
assertOptionalBoolean(options, "preferEphemeralSession", verb);
}
export { assertAuthOptions, assertBrowserUrl, assertOpenOptions, assertRedirectUrl };
//# sourceMappingURL=validate.mjs.map