UNPKG

ask-cli

Version:

Alexa Skills Kit (ASK) Command Line Interfaces

60 lines (52 loc) 1.46 kB
const validUrl = require('valid-url'); const path = require('path'); const url = require('url'); module.exports = { isValidUrl, isLambdaArn, isHttpsUrl, isUrlWithGitExtension, isUrlOfficialTemplate, isUrlWithJsonExtension }; function isValidUrl(urlString) { return typeof urlString === 'string' && !!validUrl.isUri(urlString); } function isLambdaArn(urlString) { if (!isValidUrl(urlString)) { return false; } const lambdaRegex = new RegExp([ 'arn:aws:lambda:[a-z]+-[a-z]+-[0-9]:[0-9]{12}:', 'function:[a-zA-Z0-9-_]+([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})?', '(:[a-zA-Z0-9-_]+)?' ].join('')); return lambdaRegex.test(urlString); } function isHttpsUrl(urlString) { if (!isValidUrl(urlString)) { return false; } return url.parse(urlString).protocol === 'https:'; } function isUrlWithGitExtension(inputUrl) { if (!isValidUrl(inputUrl)) { return false; } const urlType = path.extname(inputUrl); return urlType === '.git'; } function isUrlOfficialTemplate(inputUrl) { if (!isValidUrl(inputUrl)) { return false; } const urlSource = url.parse(inputUrl).pathname.split('/')[1]; return urlSource === 'alexa'; } function isUrlWithJsonExtension(inputUrl) { if (!isValidUrl(inputUrl)) { return false; } const urlType = path.extname(inputUrl); return urlType === '.json'; }