@snap/camera-kit
Version:
Camera Kit Web
34 lines • 1.4 kB
JavaScript
import { Injectable } from "@snap/ts-inject";
import { isArrayBuffer, isArrayOfType, isFunction, isNumber, isRecord, isString, isTypedArray, isUndefined, predicateRecordValues, } from "../common/typeguards";
const SEPARATOR = "://";
export function extractSchemeAndRoute(uri) {
const separatorIndex = uri.indexOf(SEPARATOR);
const scheme = uri.slice(0, separatorIndex);
const route = uri.slice(separatorIndex + SEPARATOR.length);
return { scheme, route };
}
function isUri(value) {
return isString(value) && value.includes(SEPARATOR);
}
function isUriHandler(value) {
return (isRecord(value) &&
(isUri(value.uri) || isArrayOfType(isUri, value.uri)) &&
isFunction(value.handleRequest) &&
(isUndefined(value.cancelRequest) || isFunction(value.cancelRequest)));
}
export function isUriHandlers(value) {
return isArrayOfType(isUriHandler, value);
}
export function isUriResponse(value) {
return (isRecord(value) &&
isNumber(value.code) &&
isString(value.description) &&
isString(value.contentType) &&
(isArrayBuffer(value.data) || isTypedArray(value.data)) &&
(isUndefined(value.metadata) || predicateRecordValues(isString)(value.metadata)));
}
export const uriHandlersFactory = Injectable("UriHandlers", () => {
const uriHandlers = [];
return uriHandlers;
});
//# sourceMappingURL=UriHandlers.js.map