noodl-loader
Version:
Loader for noodl applications
129 lines • 4.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.url = exports.yaml = exports.stringInArray = exports.promise = exports.file = exports.video = exports.text = exports.script = exports.pdf = exports.json = exports.image = exports.typeOf = exports.fileSystemHost = exports.equalFileKey = void 0;
const tslib_1 = require("tslib");
const noodl_core_1 = require("noodl-core");
const noodl_core_2 = require("noodl-core");
const regex_1 = tslib_1.__importDefault(require("../internal/regex"));
const constants_1 = require("../constants");
/**
* Returns true if two names are equivalent when comparing for existence in lists with/without the `.yml` extension
*
* @example
* ```js
* isEqualFileKey('www', 'www.yml') // true
* isEqualFileKey('www', 'www') // true
* isEqualFileKey('.yml', '') // true
* isEqualFileKey('', '') // true
* isEqualFileKey('www', 'wwww.yml') // false
* isEqualFileKey('www', 'www.ymll') // false
* isEqualFileKey('www', 'wwww') // false
* isEqualFileKey('www', '') // false
* isEqualFileKey('www.yml', '') // false
* ```
*/
function equalFileKey(v1, v2) {
if (!noodl_core_2.is.str(v1) || !noodl_core_2.is.str(v2))
return false;
if (v1 === v2)
return true;
if (!v1.endsWith('.yml'))
v1 += '.yml';
if (!v2.endsWith('.yml'))
v2 += '.yml';
return v1.replace(/_en/, '') === v2.replace(/_en/, '');
}
exports.equalFileKey = equalFileKey;
function fileSystemHost(value) {
return (value !== null &&
typeof value === 'object' &&
(value === null || value === void 0 ? void 0 : value[constants_1.idKey]) === constants_1._id.fileSystemHost);
}
exports.fileSystemHost = fileSystemHost;
function typeOf(value) {
if (Array.isArray(value))
return 'array';
if (value === null)
return 'null';
return typeof value;
}
exports.typeOf = typeOf;
function image(value) {
return noodl_core_1.is.str(value) && regex_1.default.image.test(value);
}
exports.image = image;
function json(value) {
return /\.json/i.test(value);
}
exports.json = json;
function pdf(value) {
return /\.pdf/i.test(value);
}
exports.pdf = pdf;
function script(value) {
return regex_1.default.script.test(value);
}
exports.script = script;
function text(value) {
return regex_1.default.text.test(value);
}
exports.text = text;
function video(value) {
return regex_1.default.video.test(value);
}
exports.video = video;
function file(value) {
if (!noodl_core_1.is.str(value))
return false;
if (value.startsWith('file:'))
return true;
if (value.startsWith('http'))
return false;
try {
new URL(value);
return false;
}
catch (error) { }
if (!value.includes('.') && !value.includes('/'))
return false;
if (value.startsWith('/') && value.length > 1)
return true;
if (value.startsWith('./'))
return true;
if (/\.(com|cn|co|de|dev|edu|gov|in|io|ly|me|net|org|uk|us)/i.test(value)) {
return false;
}
return /^[a-zA-Z]/i.test(value) || regex_1.default.file.test(value);
}
exports.file = file;
function promise(value) {
return value !== null && typeof value === 'object' && 'then' in value;
}
exports.promise = promise;
function stringInArray(arr, value) {
if (Array.isArray(arr) && typeof value === 'string') {
return arr.some((item) => item === value);
}
return false;
}
exports.stringInArray = stringInArray;
function yaml(value) {
if (!noodl_core_1.is.str(value))
return false;
return value.endsWith('.yml');
}
exports.yaml = yaml;
function url(value) {
if (typeof value !== 'string' && !(value instanceof URL))
return false;
let url;
try {
url = new URL(value);
}
catch (_) {
return false;
}
return url.protocol === 'http:' || url.protocol === 'https:';
}
exports.url = url;
//# sourceMappingURL=is.js.map