"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Functional_1 = require("../../../../../Class/Functional");
const _ids_1 = require("../../../../_ids");
class ParseUrl extends Functional_1.Functional {
    constructor(system) {
        super({
            i: ['url'],
            o: ['obj'],
        }, {}, system, _ids_1.ID_PARSE_URL);
    }
    async f({ url }, done, fail) {
        const { api: {}, } = this.__system;
        let obj;
        try {
            const urlParser = new URL(url);
            obj = {
                protocol: urlParser.protocol,
                hostname: urlParser.hostname,
                pathname: urlParser.pathname,
                search: urlParser.search,
                hash: urlParser.hash,
                host: urlParser.host,
                href: urlParser.href,
                origin: urlParser.origin,
                port: urlParser.port,
            };
        }
        catch (err) {
            fail('invalid url');
            return;
        }
        done({ obj });
    }
}
exports.default = ParseUrl;
//# sourceMappingURL=index.js.map