vue-recaptcha
Version:
ReCAPTCHA vue component
66 lines (65 loc) • 2.19 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.checkRecaptchaLoad = checkRecaptchaLoad;
exports.defineScriptLoader = defineScriptLoader;
exports.normalizeParams = normalizeParams;
exports.normalizeScriptLoaderOptions = normalizeScriptLoaderOptions;
exports.recaptchaLoaded = void 0;
exports.toQueryString = toQueryString;
exports.toStringPair = toStringPair;
var _pDefer = _interopRequireDefault(require("p-defer"));
var _defu = _interopRequireDefault(require("defu"));
var _utils = require("../utils.cjs");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function defineScriptLoader(fn) {
return options => {
return fn(normalizeScriptLoaderOptions(options));
};
}
function normalizeScriptLoaderOptions(options) {
return {
...options,
recaptchaApiURL: options.recaptchaApiURL ?? (options.useRecaptchaNet ? "https://www.recaptcha.net/recaptcha/api.js" : "https://www.google.com/recaptcha/api.js")
};
}
const recaptchaLoaded = (0, _pDefer.default)();
exports.recaptchaLoaded = recaptchaLoaded;
const ONLOAD_KEY = "__vueRecaptchaLoaded";
if (typeof window !== "undefined") {
window[ONLOAD_KEY] = () => {
recaptchaLoaded.resolve();
};
}
function toQueryString(params) {
return new URLSearchParams(normalizeParams(params)).toString();
}
function normalizeParams(raw) {
const params = (0, _defu.default)(raw, {
onload: ONLOAD_KEY,
render: "explicit"
});
if (params.render === "onload") {
(0, _utils.warn)("passing `onload` as `render` param is not allowed");
params.render = "explicit";
}
if (params.onload !== ONLOAD_KEY) {
(0, _utils.warn)("passing `onload` param with other value is not allowed");
params.onload = ONLOAD_KEY;
}
return toStringPair(params);
}
function toStringPair(params) {
return Object.entries(params).filter(pair => typeof pair[1] === "string");
}
function checkRecaptchaLoad() {
if (typeof window === "undefined") {
return false;
}
const isLoaded = Object.hasOwn(window, "grecaptcha") && Object.hasOwn(window.grecaptcha, "execute");
if (isLoaded) {
recaptchaLoaded.resolve();
}
return isLoaded;
}
;