UNPKG

@hotglue/cli

Version:
33 lines 76.8 kB
#!/usr/bin/env node import e,{readFileSync as n,statSync as t,readdirSync as o,writeFile as s,existsSync as r,createWriteStream as a}from"fs";import i,{normalize as c,resolve as l,dirname as d,basename as u,extname as f,relative as p}from"path";import y,{homedir as g}from"os";import h from"yargs";import{format as m,inspect as w}from"util";import{notStrictEqual as b,strictEqual as v}from"assert";import{fileURLToPath as $}from"url";import{mkdir as k,writeFile as _,readdir as j,readFile as O,stat as x}from"fs/promises";import{cosmiconfig as E}from"cosmiconfig";import T from"chalk";import A from"aws-sdk";import S from"debug";import I from"yaml";import F from"cli-table";import U from"ora";import N from"micromatch";import K from"axios";import"progress";import{mkdir as B}from"node:fs/promises";function D(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var P,M,C,L,R,z,V,q={};function W(){if(P)return q;P=1;const n=e,t=i,o=y;function s(e){console.log(`[dotenv][DEBUG] ${e}`)}const r=/^\s*([\w.-]+)\s*=\s*("[^"]*"|'[^']*'|[^#]*)?(\s*|\s*#.*)?$/,a=/\\n/g,c=/\r\n|\n|\r/;function l(e,n){const t=Boolean(n&&n.debug),o={};return e.toString().split(c).forEach((function(e,n){const i=e.match(r);if(null!=i){const e=i[1];let n=i[2]||"";const t=n.length-1,s='"'===n[0]&&'"'===n[t];"'"===n[0]&&"'"===n[t]||s?(n=n.substring(1,t),s&&(n=n.replace(a,"\n"))):n=n.trim(),o[e]=n}else if(t){const t=e.trim();t.length&&"#"!==t[0]&&s(`Failed to match key and value when parsing line ${n+1}: ${e}`)}})),o}return q.config=function(e){let r=t.resolve(process.cwd(),".env"),a="utf8";const i=Boolean(e&&e.debug),c=Boolean(e&&e.override);var d;e&&(null!=e.path&&(r="~"===(d=e.path)[0]?t.join(o.homedir(),d.slice(1)):d),null!=e.encoding&&(a=e.encoding));try{const e=l(n.readFileSync(r,{encoding:a}),{debug:i});return Object.keys(e).forEach((function(n){Object.prototype.hasOwnProperty.call(process.env,n)?(!0===c&&(process.env[n]=e[n]),i&&s(!0===c?`"${n}" is already defined in \`process.env\` and WAS overwritten`:`"${n}" is already defined in \`process.env\` and was NOT overwritten`)):process.env[n]=e[n]})),{parsed:e}}catch(e){return i&&s(`Failed to load ${r} ${e.message}`),{error:e}}},q.parse=l,q}z||(z=1,W().config(Object.assign({},function(){if(C)return M;C=1;const e={};return null!=process.env.DOTENV_CONFIG_ENCODING&&(e.encoding=process.env.DOTENV_CONFIG_ENCODING),null!=process.env.DOTENV_CONFIG_PATH&&(e.path=process.env.DOTENV_CONFIG_PATH),null!=process.env.DOTENV_CONFIG_DEBUG&&(e.debug=process.env.DOTENV_CONFIG_DEBUG),null!=process.env.DOTENV_CONFIG_OVERRIDE&&(e.override=process.env.DOTENV_CONFIG_OVERRIDE),M=e}(),function(){if(R)return L;R=1;const e=/^dotenv_config_(encoding|path|debug|override)=(.+)$/;return L=function(n){return n.reduce((function(n,t){const o=t.match(e);return o&&(n[o[1]]=o[2]),n}),{})}}()(process.argv))));Error;function G(){return process.versions.electron&&!process.defaultApp?0:1} /** * @license * Copyright (c) 2016, Contributors * SPDX-License-Identifier: ISC */ function J(e){if(e!==e.toLowerCase()&&e!==e.toUpperCase()||(e=e.toLowerCase()),-1===e.indexOf("-")&&-1===e.indexOf("_"))return e;{let n="",t=!1;const o=e.match(/^-+/);for(let s=o?o[0].length:0;s<e.length;s++){let o=e.charAt(s);t&&(t=!1,o=o.toUpperCase()),0===s||"-"!==o&&"_"!==o?"-"!==o&&"_"!==o&&(n+=o):t=!0}return n}}function Q(e,n){const t=e.toLowerCase();n=n||"-";let o="";for(let s=0;s<e.length;s++){const r=t.charAt(s),a=e.charAt(s);o+=r!==a&&s>0?`${n}${t.charAt(s)}`:a}return o}function Y(e){return null!=e&&("number"==typeof e||(!!/^0x[0-9a-f]+$/i.test(e)||!/^0[^.]/.test(e)&&/^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(e)))} /** * @license * Copyright (c) 2016, Contributors * SPDX-License-Identifier: ISC */ /** * @license * Copyright (c) 2016, Contributors * SPDX-License-Identifier: ISC */ let H;!function(e){e.BOOLEAN="boolean",e.STRING="string",e.NUMBER="number",e.ARRAY="array"}(V||(V={}));function Z(e){return void 0!==e?e+1:1}function X(e){return"__proto__"===e?"___proto___":e} /** * @fileoverview Main entrypoint for libraries using yargs-parser in Node.js * CJS and ESM environments. * * @license * Copyright (c) 2016, Contributors * SPDX-License-Identifier: ISC */ const ee=process&&process.env&&process.env.YARGS_MIN_NODE_VERSION?Number(process.env.YARGS_MIN_NODE_VERSION):12;if(process&&process.version){if(Number(process.version.match(/v([^.]+)/)[1])<ee)throw Error(`yargs parser supports a minimum Node.js version of ${ee}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`)}const ne=process?process.env:{},te=new class{constructor(e){H=e}parse(e,n){const t=Object.assign({alias:void 0,array:void 0,boolean:void 0,config:void 0,configObjects:void 0,configuration:void 0,coerce:void 0,count:void 0,default:void 0,envPrefix:void 0,narg:void 0,normalize:void 0,string:void 0,number:void 0,__:void 0,key:void 0},n),o=function(e){if(Array.isArray(e))return e.map((e=>"string"!=typeof e?e+"":e));e=e.trim();let n=0,t=null,o=null,s=null;const r=[];for(let a=0;a<e.length;a++)t=o,o=e.charAt(a)," "!==o||s?(o===s?s=null:"'"!==o&&'"'!==o||s||(s=o),r[n]||(r[n]=""),r[n]+=o):" "!==t&&n++;return r} /** * @license * Copyright (c) 2016, Contributors * SPDX-License-Identifier: ISC */(e),s="string"==typeof e,r=function(e){const n=[],t=Object.create(null);let o=!0;Object.keys(e).forEach((function(t){n.push([].concat(e[t],t))}));for(;o;){o=!1;for(let e=0;e<n.length;e++)for(let t=e+1;t<n.length;t++){if(n[e].filter((function(e){return-1!==n[t].indexOf(e)})).length){n[e]=n[e].concat(n[t]),n.splice(t,1),o=!0;break}}}return n.forEach((function(e){const n=(e=e.filter((function(e,n,t){return t.indexOf(e)===n}))).pop();void 0!==n&&"string"==typeof n&&(t[n]=e)})),t}(Object.assign(Object.create(null),t.alias)),a=Object.assign({"boolean-negation":!0,"camel-case-expansion":!0,"combine-arrays":!1,"dot-notation":!0,"duplicate-arguments-array":!0,"flatten-duplicate-arrays":!0,"greedy-arrays":!0,"halt-at-non-option":!1,"nargs-eats-options":!1,"negation-prefix":"no-","parse-numbers":!0,"parse-positional-numbers":!0,"populate--":!1,"set-placeholder-key":!1,"short-option-groups":!0,"strip-aliased":!1,"strip-dashed":!1,"unknown-options-as-args":!1},t.configuration),i=Object.assign(Object.create(null),t.default),c=t.configObjects||[],l=t.envPrefix,d=a["populate--"],u=d?"--":"_",f=Object.create(null),p=Object.create(null),y=t.__||H.format,g={aliases:Object.create(null),arrays:Object.create(null),bools:Object.create(null),strings:Object.create(null),numbers:Object.create(null),counts:Object.create(null),normalize:Object.create(null),configs:Object.create(null),nargs:Object.create(null),coercions:Object.create(null),keys:[]},h=/^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/,m=new RegExp("^--"+a["negation-prefix"]+"(.+)");[].concat(t.array||[]).filter(Boolean).forEach((function(e){const n="object"==typeof e?e.key:e,t=Object.keys(e).map((function(e){return{boolean:"bools",string:"strings",number:"numbers"}[e]})).filter(Boolean).pop();t&&(g[t][n]=!0),g.arrays[n]=!0,g.keys.push(n)})),[].concat(t.boolean||[]).filter(Boolean).forEach((function(e){g.bools[e]=!0,g.keys.push(e)})),[].concat(t.string||[]).filter(Boolean).forEach((function(e){g.strings[e]=!0,g.keys.push(e)})),[].concat(t.number||[]).filter(Boolean).forEach((function(e){g.numbers[e]=!0,g.keys.push(e)})),[].concat(t.count||[]).filter(Boolean).forEach((function(e){g.counts[e]=!0,g.keys.push(e)})),[].concat(t.normalize||[]).filter(Boolean).forEach((function(e){g.normalize[e]=!0,g.keys.push(e)})),"object"==typeof t.narg&&Object.entries(t.narg).forEach((([e,n])=>{"number"==typeof n&&(g.nargs[e]=n,g.keys.push(e))})),"object"==typeof t.coerce&&Object.entries(t.coerce).forEach((([e,n])=>{"function"==typeof n&&(g.coercions[e]=n,g.keys.push(e))})),void 0!==t.config&&(Array.isArray(t.config)||"string"==typeof t.config?[].concat(t.config).filter(Boolean).forEach((function(e){g.configs[e]=!0})):"object"==typeof t.config&&Object.entries(t.config).forEach((([e,n])=>{"boolean"!=typeof n&&"function"!=typeof n||(g.configs[e]=n)}))),function(...e){e.forEach((function(e){Object.keys(e||{}).forEach((function(e){g.aliases[e]||(g.aliases[e]=[].concat(r[e]||[]),g.aliases[e].concat(e).forEach((function(n){if(/-/.test(n)&&a["camel-case-expansion"]){const t=J(n);t!==e&&-1===g.aliases[e].indexOf(t)&&(g.aliases[e].push(t),f[t]=!0)}})),g.aliases[e].concat(e).forEach((function(n){if(n.length>1&&/[A-Z]/.test(n)&&a["camel-case-expansion"]){const t=Q(n,"-");t!==e&&-1===g.aliases[e].indexOf(t)&&(g.aliases[e].push(t),f[t]=!0)}})),g.aliases[e].forEach((function(n){g.aliases[n]=[e].concat(g.aliases[e].filter((function(e){return n!==e})))})))}))}))}(t.key,r,t.default,g.arrays),Object.keys(i).forEach((function(e){(g.aliases[e]||[]).forEach((function(n){i[n]=i[e]}))}));let w=null;Object.keys(g.counts).find((e=>N(e,g.arrays)?(w=Error(y("Invalid configuration: %s, opts.count excludes opts.array.",e)),!0):!!N(e,g.nargs)&&(w=Error(y("Invalid configuration: %s, opts.count excludes opts.narg.",e)),!0)));let b=[];const v=Object.assign(Object.create(null),{_:[]}),$={};for(let e=0;e<o.length;e++){const n=o[e],t=n.replace(/^-{3,}/,"---");let s,r,i,c,l,d;if("--"!==n&&B(n))k(n);else{if(t.match(/---+(=|$)/)){k(n);continue}if(n.match(/^--.+=/)||!a["short-option-groups"]&&n.match(/^-.+=/))c=n.match(/^--?([^=]+)=([\s\S]*)$/),null!==c&&Array.isArray(c)&&c.length>=3&&(N(c[1],g.arrays)?e=j(e,c[1],o,c[2]):!1!==N(c[1],g.nargs)?e=_(e,c[1],o,c[2]):O(c[1],c[2],!0));else if(n.match(m)&&a["boolean-negation"])c=n.match(m),null!==c&&Array.isArray(c)&&c.length>=2&&(r=c[1],O(r,!!N(r,g.arrays)&&[!1]));else if(n.match(/^--.+/)||!a["short-option-groups"]&&n.match(/^-[^-]+/))c=n.match(/^--?(.+)/),null!==c&&Array.isArray(c)&&c.length>=2&&(r=c[1],N(r,g.arrays)?e=j(e,r,o):!1!==N(r,g.nargs)?e=_(e,r,o):(l=o[e+1],void 0===l||l.match(/^-/)&&!l.match(h)||N(r,g.bools)||N(r,g.counts)?/^(true|false)$/.test(l)?(O(r,l),e++):O(r,D(r)):(O(r,l),e++)));else if(n.match(/^-.\..+=/))c=n.match(/^-([^=]+)=([\s\S]*)$/),null!==c&&Array.isArray(c)&&c.length>=3&&O(c[1],c[2]);else if(n.match(/^-.\..+/)&&!n.match(h))l=o[e+1],c=n.match(/^-(.\..+)/),null!==c&&Array.isArray(c)&&c.length>=2&&(r=c[1],void 0===l||l.match(/^-/)||N(r,g.bools)||N(r,g.counts)?O(r,D(r)):(O(r,l),e++));else if(n.match(/^-[^-]+/)&&!n.match(h)){i=n.slice(1,-1).split(""),s=!1;for(let t=0;t<i.length;t++){if(l=n.slice(t+2),i[t+1]&&"="===i[t+1]){d=n.slice(t+3),r=i[t],N(r,g.arrays)?e=j(e,r,o,d):!1!==N(r,g.nargs)?e=_(e,r,o,d):O(r,d),s=!0;break}if("-"!==l){if(/[A-Za-z]/.test(i[t])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(l)&&!1===N(l,g.bools)){O(i[t],l),s=!0;break}if(i[t+1]&&i[t+1].match(/\W/)){O(i[t],l),s=!0;break}O(i[t],D(i[t]))}else O(i[t],l)}r=n.slice(-1)[0],s||"-"===r||(N(r,g.arrays)?e=j(e,r,o):!1!==N(r,g.nargs)?e=_(e,r,o):(l=o[e+1],void 0===l||/^(-|--)[^-]/.test(l)&&!l.match(h)||N(r,g.bools)||N(r,g.counts)?/^(true|false)$/.test(l)?(O(r,l),e++):O(r,D(r)):(O(r,l),e++)))}else if(n.match(/^-[0-9]$/)&&n.match(h)&&N(n.slice(1),g.bools))r=n.slice(1),O(r,D(r));else{if("--"===n){b=o.slice(e+1);break}if(a["halt-at-non-option"]){b=o.slice(e);break}k(n)}}}function k(e){const n=T("_",e);"string"!=typeof n&&"number"!=typeof n||v._.push(n)}function _(e,n,t,o){let s,r=N(n,g.nargs);if(r="number"!=typeof r||isNaN(r)?1:r,0===r)return P(o)||(w=Error(y("Argument unexpected for: %s",n))),O(n,D(n)),e;let i=P(o)?0:1;if(a["nargs-eats-options"])t.length-(e+1)+i<r&&(w=Error(y("Not enough arguments following: %s",n))),i=r;else{for(s=e+1;s<t.length&&(!t[s].match(/^-[^0-9]/)||t[s].match(h)||B(t[s]));s++)i++;i<r&&(w=Error(y("Not enough arguments following: %s",n)))}let c=Math.min(i,r);for(!P(o)&&c>0&&(O(n,o),c--),s=e+1;s<c+e+1;s++)O(n,t[s]);return e+c}function j(e,n,t,o){let r=[],c=o||t[e+1];const l=N(n,g.nargs);if(N(n,g.bools)&&!/^(true|false)$/.test(c))r.push(!0);else if(P(c)||P(o)&&/^-/.test(c)&&!h.test(c)&&!B(c)){if(void 0!==i[n]){const e=i[n];r=Array.isArray(e)?e:[e]}}else{P(o)||r.push(E(n,o,!0));for(let o=e+1;o<t.length&&!(!a["greedy-arrays"]&&r.length>0||l&&"number"==typeof l&&r.length>=l)&&(c=t[o],!/^-/.test(c)||h.test(c)||B(c));o++)e=o,r.push(E(n,c,s))}return"number"==typeof l&&(l&&r.length<l||isNaN(l)&&0===r.length)&&(w=Error(y("Not enough arguments following: %s",n))),O(n,r),e}function O(e,n,t=s){if(/-/.test(e)&&a["camel-case-expansion"]){const n=e.split(".").map((function(e){return J(e)})).join(".");x(e,n)}const o=E(e,n,t),r=e.split(".");if(U(v,r,o),g.aliases[e]&&g.aliases[e].forEach((function(e){const n=e.split(".");U(v,n,o)})),r.length>1&&a["dot-notation"]&&(g.aliases[r[0]]||[]).forEach((function(n){let t=n.split(".");const s=[].concat(r);s.shift(),t=t.concat(s),(g.aliases[e]||[]).includes(t.join("."))||U(v,t,o)})),N(e,g.normalize)&&!N(e,g.arrays)){[e].concat(g.aliases[e]||[]).forEach((function(e){Object.defineProperty($,e,{enumerable:!0,get:()=>n,set(e){n="string"==typeof e?H.normalize(e):e}})}))}}function x(e,n){g.aliases[e]&&g.aliases[e].length||(g.aliases[e]=[n],f[n]=!0),g.aliases[n]&&g.aliases[n].length||x(n,e)}function E(e,n,t){t&&(n=function(e){return"string"!=typeof e||"'"!==e[0]&&'"'!==e[0]||e[e.length-1]!==e[0]?e:e.substring(1,e.length-1)}(n)),(N(e,g.bools)||N(e,g.counts))&&"string"==typeof n&&(n="true"===n);let o=Array.isArray(n)?n.map((function(n){return T(e,n)})):T(e,n);return N(e,g.counts)&&(P(o)||"boolean"==typeof o)&&(o=Z()),N(e,g.normalize)&&N(e,g.arrays)&&(o=Array.isArray(n)?n.map((e=>H.normalize(e))):H.normalize(n)),o}function T(e,n){if(!a["parse-positional-numbers"]&&"_"===e)return n;if(!N(e,g.strings)&&!N(e,g.bools)&&!Array.isArray(n)){(Y(n)&&a["parse-numbers"]&&Number.isSafeInteger(Math.floor(parseFloat(`${n}`)))||!P(n)&&N(e,g.numbers))&&(n=Number(n))}return n}function A(e,n){Object.keys(e).forEach((function(t){const o=e[t],s=n?n+"."+t:t;"object"==typeof o&&null!==o&&!Array.isArray(o)&&a["dot-notation"]?A(o,s):(!F(v,s.split("."))||N(s,g.arrays)&&a["combine-arrays"])&&O(s,o)}))}function S(e,n){if(void 0===l)return;const t="string"==typeof l?l:"",o=H.env();Object.keys(o).forEach((function(s){if(""===t||0===s.lastIndexOf(t,0)){const r=s.split("__").map((function(e,n){return 0===n&&(e=e.substring(t.length)),J(e)}));(n&&g.configs[r.join(".")]||!n)&&!F(e,r)&&O(r.join("."),o[s])}}))}function I(e,n,t,o=!1){Object.keys(t).forEach((function(s){F(e,s.split("."))||(U(e,s.split("."),t[s]),o&&(p[s]=!0),(n[s]||[]).forEach((function(n){F(e,n.split("."))||U(e,n.split("."),t[s])})))}))}function F(e,n){let t=e;a["dot-notation"]||(n=[n.join(".")]),n.slice(0,-1).forEach((function(e){t=t[e]||{}}));const o=n[n.length-1];return"object"==typeof t&&o in t}function U(e,n,t){let o=e;a["dot-notation"]||(n=[n.join(".")]),n.slice(0,-1).forEach((function(e){e=X(e),"object"==typeof o&&void 0===o[e]&&(o[e]={}),"object"!=typeof o[e]||Array.isArray(o[e])?(Array.isArray(o[e])?o[e].push({}):o[e]=[o[e],{}],o=o[e][o[e].length-1]):o=o[e]}));const s=X(n[n.length-1]),r=N(n.join("."),g.arrays),i=Array.isArray(t);let c=a["duplicate-arguments-array"];!c&&N(s,g.nargs)&&(c=!0,(!P(o[s])&&1===g.nargs[s]||Array.isArray(o[s])&&o[s].length===g.nargs[s])&&(o[s]=void 0)),t===Z()?o[s]=Z(o[s]):Array.isArray(o[s])?c&&r&&i?o[s]=a["flatten-duplicate-arrays"]?o[s].concat(t):(Array.isArray(o[s][0])?o[s]:[o[s]]).concat([t]):c||Boolean(r)!==Boolean(i)?o[s]=o[s].concat([t]):o[s]=t:void 0===o[s]&&r?o[s]=i?t:[t]:!c||void 0===o[s]||N(s,g.counts)||N(s,g.bools)?o[s]=t:o[s]=[o[s],t]}function N(e,n){const t=[].concat(g.aliases[e]||[],e),o=Object.keys(n),s=t.find((e=>o.includes(e)));return!!s&&n[s]}function K(e){const n=Object.keys(g);return[].concat(n.map((e=>g[e]))).some((function(n){return Array.isArray(n)?n.includes(e):n[e]}))}function B(e){return a["unknown-options-as-args"]&&function(e){if(e=e.replace(/^-{3,}/,"--"),e.match(h))return!1;if(function(e){if(e.match(h)||!e.match(/^-[^-]+/))return!1;let n,t=!0;const o=e.slice(1).split("");for(let s=0;s<o.length;s++){if(n=e.slice(s+2),!K(o[s])){t=!1;break}if(o[s+1]&&"="===o[s+1]||"-"===n||/[A-Za-z]/.test(o[s])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(n)||o[s+1]&&o[s+1].match(/\W/))break}return t}(e))return!1;return!function(e,...n){return[].concat(...n).some((function(n){const t=e.match(n);return t&&K(t[1])}))}(e,/^-+([^=]+?)=[\s\S]*$/,m,/^-+([^=]+?)$/,/^-+([^=]+?)-$/,/^-+([^=]+?\d+)$/,/^-+([^=]+?)\W+.*$/)}(e)}function D(e){return N(e,g.bools)||N(e,g.counts)||!(`${e}`in i)?(n=function(e){let n=V.BOOLEAN;return N(e,g.strings)?n=V.STRING:N(e,g.numbers)?n=V.NUMBER:N(e,g.bools)?n=V.BOOLEAN:N(e,g.arrays)&&(n=V.ARRAY),n}(e),{[V.BOOLEAN]:!0,[V.STRING]:"",[V.NUMBER]:void 0,[V.ARRAY]:[]}[n]):i[e];var n}function P(e){return void 0===e}return S(v,!0),S(v,!1),function(e){const n=Object.create(null);I(n,g.aliases,i),Object.keys(g.configs).forEach((function(t){const o=e[t]||n[t];if(o)try{let e=null;const n=H.resolve(H.cwd(),o),s=g.configs[t];if("function"==typeof s){try{e=s(n)}catch(n){e=n}if(e instanceof Error)return void(w=e)}else e=H.require(n);A(e)}catch(n){"PermissionDenied"===n.name?w=n:e[t]&&(w=Error(y("Invalid JSON config file: %s",o)))}}))}(v),void 0!==c&&c.forEach((function(e){A(e)})),I(v,g.aliases,i,!0),function(e){let n;const t=new Set;Object.keys(e).forEach((function(o){if(!t.has(o)&&(n=N(o,g.coercions),"function"==typeof n))try{const s=T(o,n(e[o]));[].concat(g.aliases[o]||[],o).forEach((n=>{t.add(n),e[n]=s}))}catch(e){w=e}}))}(v),a["set-placeholder-key"]&&function(e){g.keys.forEach((n=>{~n.indexOf(".")||void 0===e[n]&&(e[n]=void 0)}))}(v),Object.keys(g.counts).forEach((function(e){F(v,e.split("."))||O(e,0)})),d&&b.length&&(v[u]=[]),b.forEach((function(e){v[u].push(e)})),a["camel-case-expansion"]&&a["strip-dashed"]&&Object.keys(v).filter((e=>"--"!==e&&e.includes("-"))).forEach((e=>{delete v[e]})),a["strip-aliased"]&&[].concat(...Object.keys(r).map((e=>r[e]))).forEach((e=>{a["camel-case-expansion"]&&e.includes("-")&&delete v[e.split(".").map((e=>J(e))).join(".")],delete v[e]})),{aliases:Object.assign({},g.aliases),argv:Object.assign($,v),configuration:a,defaulted:Object.assign({},p),error:w,newAliases:Object.assign({},f)}}}({cwd:process.cwd,env:()=>ne,format:m,normalize:c,resolve:l,require:e=>{if("undefined"!=typeof require)return require(e);if(e.match(/\.json$/))return JSON.parse(n(e,"utf8"));throw Error("only .json config files are supported in ESM")}}),oe=function(e,n){return te.parse(e.slice(),n).argv};oe.detailed=function(e,n){return te.parse(e.slice(),n)},oe.camelCase=J,oe.decamelize=Q,oe.looksLikeNumber=Y;new RegExp("(?:\\[(?:\\d+[ABCDEFGJKSTm]|\\d+;\\d+[Hfm]|\\d+;\\d+;\\d+m|6n|s|u|\\?25[lh])|\\w)","g");var se={fs:{readFileSync:n,writeFile:s},format:m,resolve:l,exists:e=>{try{return t(e).isFile()}catch(e){return!1}}};let re;class ae{constructor(e){e=e||{},this.directory=e.directory||"./locales",this.updateFiles="boolean"!=typeof e.updateFiles||e.updateFiles,this.locale=e.locale||"en",this.fallbackToLanguage="boolean"!=typeof e.fallbackToLanguage||e.fallbackToLanguage,this.cache=Object.create(null),this.writeQueue=[]}__(...e){if("string"!=typeof arguments[0])return this._taggedLiteral(arguments[0],...arguments);const n=e.shift();let t=function(){};return"function"==typeof e[e.length-1]&&(t=e.pop()),t=t||function(){},this.cache[this.locale]||this._readLocaleFile(),!this.cache[this.locale][n]&&this.updateFiles?(this.cache[this.locale][n]=n,this._enqueueWrite({directory:this.directory,locale:this.locale,cb:t})):t(),re.format.apply(re.format,[this.cache[this.locale][n]||n].concat(e))}__n(){const e=Array.prototype.slice.call(arguments),n=e.shift(),t=e.shift(),o=e.shift();let s=function(){};"function"==typeof e[e.length-1]&&(s=e.pop()),this.cache[this.locale]||this._readLocaleFile();let r=1===o?n:t;if(this.cache[this.locale][n]){r=this.cache[this.locale][n][1===o?"one":"other"]}!this.cache[this.locale][n]&&this.updateFiles?(this.cache[this.locale][n]={one:n,other:t},this._enqueueWrite({directory:this.directory,locale:this.locale,cb:s})):s();const a=[r];return~r.indexOf("%d")&&a.push(o),re.format.apply(re.format,a.concat(e))}setLocale(e){this.locale=e}getLocale(){return this.locale}updateLocale(e){this.cache[this.locale]||this._readLocaleFile();for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(this.cache[this.locale][n]=e[n])}_taggedLiteral(e,...n){let t="";return e.forEach((function(e,o){const s=n[o+1];t+=e,void 0!==s&&(t+="%s")})),this.__.apply(this,[t].concat([].slice.call(n,1)))}_enqueueWrite(e){this.writeQueue.push(e),1===this.writeQueue.length&&this._processWriteQueue()}_processWriteQueue(){const e=this,n=this.writeQueue[0],t=n.directory,o=n.locale,s=n.cb,r=this._resolveLocaleFile(t,o),a=JSON.stringify(this.cache[o],null,2);re.fs.writeFile(r,a,"utf-8",(function(n){e.writeQueue.shift(),e.writeQueue.length>0&&e._processWriteQueue(),s(n)}))}_readLocaleFile(){let e={};const n=this._resolveLocaleFile(this.directory,this.locale);try{re.fs.readFileSync&&(e=JSON.parse(re.fs.readFileSync(n,"utf-8")))}catch(t){if(t instanceof SyntaxError&&(t.message="syntax error in "+n),"ENOENT"!==t.code)throw t;e={}}this.cache[this.locale]=e}_resolveLocaleFile(e,n){let t=re.resolve(e,"./",n+".json");if(this.fallbackToLanguage&&!this._fileExistsSync(t)&&~n.lastIndexOf("_")){const o=re.resolve(e,"./",n.split("_")[0]+".json");this._fileExistsSync(o)&&(t=o)}return t}_fileExistsSync(e){return re.exists(e)}}let ie;try{ie=$(import.meta.url)}catch(e){ie=process.cwd()}ie.split("node_modules")[0]||process.cwd(),process.cwd,process.exit,process.nextTick,void 0!==process.stdout.columns&&process.stdout.columns,function(e,n){re=n;const t=new ae(e);t.__.bind(t),t.__n.bind(t),t.setLocale.bind(t),t.getLocale.bind(t),t.updateLocale.bind(t),t.locale}({directory:l(ie,"../../../locales"),updateFiles:!1},se);const ce={hg:{appName:"hotglue",clientApiBaseUri:process.env.HOTGLUE_CLIENT_API_BASE_URI||"https://client-api.hotglue.xyz",defaultConfigFileName:"config.yaml"}},le={},de=()=>i.resolve(g(),`.${ce.hg.appName}`,ce.hg.defaultConfigFileName),ue=async()=>{const{appName:e}=ce.hg;try{return await E(e).load(de())||{}}catch(e){return{}}},fe=async()=>{const{appName:e}=ce.hg,n=E(e,{searchPlaces:[`${e}.yaml`,`.${e}.yaml`,`.${e}rc.yaml`,`.${e}rc.yml`,`.${e}rc`,`.${e}rc.json`,`.${e}rc.js`]});try{return await n.search()||{}}catch(e){throw console.log(e),new Error(`Malformed configuration file: ${e.message}`)}},pe={primary:e=>T.whiteBright(e),secondary:e=>T.white(e),info:e=>T.green(e),warn:e=>T.yellow(e),error:e=>T.redBright(e),success:e=>T.greenBright(e)};let ye=pe,ge="primary";function he(e){return ye={...pe,...e},ke}function me(e){process.stdout.write(e)}const we=(e,n=ge)=>{if(!e)return"";if("string"==typeof e)return ye[n]?ye[n](e):ye[ge](e);const t=w(e,{colors:!0});return ye[n]?ye[n](t):t};function be(...e){return console.log(...e),ke}function ve(e,n){return me(we(e,n)),me("\n"),ke}function $e(e,n){return me(we(e,n)),ke}const ke={cl:be,pr:ve,pp:$e,setTheme:he,setDefault:function(e="primary"){return ye[e]&&(ge=e),ke}},_e=e=>{console.log(JSON.stringify(e))},je=S("hotglue-cli");function Oe(e){return je.extend(e)}const xe=Oe("commands:config:set"),Ee="set <setting> <value>";var Te=Object.freeze({__proto__:null,builder:async e=>(xe("builder",Ee,e),e.option("setting",{describe:"The configuration parameter you wish to set",type:"string"}).option("value",{describe:"The configuration parameter's value",type:"string"}),e),command:Ee,desc:"Set configuration key-value pairs",handler:async e=>{xe("handler",Ee,e);const{json:n,setting:t,value:o}=e;if(["apikey"].includes(t))try{const e=await ue();e&&e.config?!n&&$e("Updating profile config file..."):!n&&$e("Creating profile config file...");const s=e&&e.config?{...e.config,[t]:o}:{[t]:o},r=I.stringify(s),a=e&&e.filepath?e.filepath:de();await(async(e,n)=>{await k(i.dirname(e),{recursive:!0}),await _(e,n)})(a,r),n?_e({status:"success"}):$e("Done").pr()}catch(e){n?_e({status:"error",error:e}):console.log(e)}else n?_e({status:"error",error:"Invalid settings parameter"}):console.error("Invalid settings parameter")}});const Ae=[Te],Se=Oe("commands:config"),Ie="config [action]";var Fe=Object.freeze({__proto__:null,builder:async function(e){return Se("builder",Ie),e.command(Ae)},command:Ie,desc:"Configure your hotglue CLI",handler:async function(e){Se("handler",Ie,e);const{action:n}=e;if(!n)try{const e=await ue();e.config&&0!==Object.keys(e.config).length||ve("No profile configuration found. Run config set to configure the hotglue CLI.");const n=new F({head:["Setting","Value","Config File","Type"]});e.config&&Object.entries(e.config).forEach((([t,o])=>n.push([t,o,e.filepath,"Profile"])));const t=await fe();t.config&&Object.entries(t.config).forEach((([e,o])=>n.push([e,o,i.relative(process.cwd(),t.filepath),"Project"]))),n.length>0&&console.log(n.toString())}catch(e){throw console.log(e),e}}}),Ue={env:{config:{describe:"Environment Id",type:"string",alias:["e"]},demandText:'The "env" parameter (Environment Id) is required. Either pass here using `-e [env_id]` or add an env property in your rc file.'},apikey:{config:{describe:"API key",type:"string",alias:["k"]},demandText:"API key is required. Either pass here using -k [key] or configure your profile using config set."},json:{config:{describe:"Makes the output format to be JSON",type:"boolean",default:!1},demandText:""},tenant:{config:{describe:"Tenant (user) ID",type:"string",alias:["u"]},demandText:"TenantId is required. You can pass it using -u [tenantId]."},flow:{config:{describe:"Flow ID",type:"string",alias:["f"]},demandText:"FlowId is required. You can pass it using -f [flow_id]."},tap:{config:{describe:"Tap name",type:"string",alias:["t"]},demandText:"Tap name is required. You can pass it using -t <tap_name>."},connector:{config:{describe:"Connector ID",type:"string",alias:["c"]},demandText:"Connector ID is required. You can pass it using -c <connector>."},all:{config:{describe:"Run command for all taps/connectors",type:"boolean",default:!1,alias:["a"]},demandText:'This "all" flag is required. You can pass it using -a or --all.'},jobroot:{config:{describe:"Job Root (S3 prefix)",type:"string",alias:["j"]},demandText:"JobRoot key is required. You can pass it using -j [job_root]."},count:{config:{describe:"Max returned records",type:"number"}},downloadTo:{config:{describe:"Download folder",default:".",type:"string",alias:["d"]},demandText:"A destination folder is required. You can pass it using -d [folder] and can be either relative from cwd or absolute."},sourceFolder:{config:{describe:"Source folder",type:"string",default:".",alias:["s"]},demandText:""},configFilePath:{config:{describe:"Config file path",type:"string",default:"./config.json",alias:["p"]},demandText:'Local path of the config (with .json extension). Example: "/home/hotglue/config.json"'},overwrite:{config:{describe:"Overwrite existing",type:"boolean",default:!1,alias:["o"]},demandText:""},cleanup:{config:{describe:"Clean up target prior to action",type:"boolean",default:!1,alias:["c"]},demandText:""}};const Ne=Oe("base"),Ke=async e=>{Ne("builder");const n=await(async()=>{const e=await ue(),n=await fe();return{...le,...e.config,...n.config}})();return e.option("apikey",Ue.apikey.config).option("env",Ue.env.config).option("json",Ue.json.config).config(n).demandOption(["env"],Ue.env.demandText).demandOption(["apikey"],Ue.apikey.demandText)},Be=Oe("utils.js"),De=async(e,n,t=[])=>{const{includeSymLinks:o,recursive:s,filter:r}=n,{matcher:a}=r,c=i.resolve(e),l=await j(c,{withFileTypes:!0});for(const e of l){const r=i.resolve(c,e.name);e.isSymbolicLink()&&!o||(!a||a(r)?e.isFile()?t.push(i.resolve(c,e.name)):e.isDirectory()&&s&&await De(i.resolve(c,e.name),n,t):Be("skip",r))}return t},Pe=async(e,n)=>{const t={includeSymLinks:!1,recursive:!1,filter:{},...n},{pattern:o}=t.filter;return o&&(t.filter.matcher=N.matcher(o,{dot:!0})),De(e,t)},Me=(e,n)=>{Be("filter-in",e);const{pattern:t}={...n};let o=e;return t&&(o=N(o,t)),Be("filter-out",o),o};const Ce=e=>{const n=[];return new Promise(((t,o)=>{e.on("error",o),e.on("data",(e=>n.push(Buffer.from(e)))),e.on("end",(()=>t(Buffer.concat(n).toString("utf8"))))}))},Le=(e,n=10)=>{const t=[];for(let o=0;o<e.length;o+=n){const s=e.slice(o,o+n);t.push(s)}return t},Re=async({debug:e,baseUri:n,env:t,apiKey:o})=>{const s=new URL(`${n}/${t}/resetAvailableEntities`),{data:r}=await K.delete(s,{headers:{"x-api-key":o,"Content-type":"application/json"}});e({data:r})},ze=async({debug:e,baseUri:n,task:t,env:o,apikey:s,...r})=>{const a=new URL(`${n}/credentials/${t}/${o}`);r&&Object.entries(r).forEach((([e,n])=>{a.searchParams.set(e,n)}));const i=a.toString();e&&e("uri:",i);const{data:c}=await K.get(i,{headers:{"x-api-key":s}}),{accessKeyId:l,secretAccessKey:d,sessionToken:u}=c;return{accessKeyId:l,secretAccessKey:d,sessionToken:u}},Ve=async({debug:e,baseUri:n,env:t,apikey:o})=>{const s=`${n}/tenants/${t}`;e("requesting:",s);const{data:r}=await K.get(s,{headers:{"x-api-key":o}});return e("response-data",r),r},qe=async({debug:e,baseUri:n,env:t,flow:o,apikey:s})=>{const r={"x-api-key":s},a=new URL(`${n}/${t}/${o}/supportedSources`).toString();e&&e("uri:",a);const{data:i}=await K.get(a,{headers:r});return i},We=async({debug:e,baseUri:n,env:t,flow:o,apikey:s})=>{const r={"x-api-key":s},a=new URL(`${n}/v2/${t}/${o}/supportedConnectors`).toString();e&&e("uri:",a);const{data:i}=await K.get(a,{headers:r});return i},Ge=async({debug:e,baseUri:n,env:t,flow:o,tenant:s,apikey:r,config:a})=>{const i=new URL(`${n}/${t}/${o}/${s}/linkedSources`);a&&i.searchParams.set("config","true");const c={"x-api-key":r},l=i.toString();e&&e("uri:",l);const{data:d}=await K.get(l,{headers:c});return d},Je=async({debug:e,baseUri:n,env:t,flow:o,tenant:s,apikey:r,config:a})=>{const i=new URL(`${n}/v2/${t}/${o}/${s}/linkedConnectors`);a&&i.searchParams.set("config","true");const c={"x-api-key":r},l=i.toString();e&&e("uri:",l);const{data:d}=await K.get(l,{headers:c});return d},Qe=async({debug:e,baseUri:n,env:t,flow:o,tenant:s,apikey:r,connectorId:a,config:i})=>{const c={"x-api-key":r},l=new URL(`${n}/${t}/${o}/${s}/linkedSources`).toString(),d={tap:a,config:i};e&&e("uri:",l);const{data:u}=await K.patch(l,d,{headers:c});return u},Ye=async({debug:e,baseUri:n,env:t,flow:o,tenant:s,apikey:r,connectorId:a,config:i})=>{const c={"x-api-key":r},l=new URL(`${n}/v2/${t}/${o}/${s}/linkedConnectors`).toString(),d={connector_id:a,config:i};e&&e("uri:",l);const{data:u}=await K.patch(l,d,{headers:c});return u},He=async({debug:e,baseUri:n,env:t,apikey:o})=>{const s={"x-api-key":o},r=new URL(`${n}/${t}/flows/supported`).toString();e&&e("uri:",r);const{data:a}=await K.get(r,{headers:s});return a},Ze=async({debug:e,baseUri:n,env:t,flow:o,apikey:s})=>{const r={"x-api-key":s},a=new URL(`${n}/${t}/flows/${o}/supported`).toString();e&&e("uri:",a);const{data:i}=await K.get(a,{headers:r});return i},Xe=S("commands:env:validators"),en=async(e,n,t,o,s)=>{if(!Array.isArray(e))throw new Error("availableSources.json must be an array of objects");const r=(await Promise.all(o.filter((e=>1==e.version)).map((async e=>await qe({debug:Xe,baseUri:n,env:s,flow:e.id,apikey:t}))))).flat(),a=e.map((e=>{if(!e.tap)throw new Error(`Source ${JSON.stringify(e)} has no tap id`);return e.tap})),i=a.filter(((e,n)=>a.indexOf(e)!==n));if(i.length>0)throw new Error(`Duplicate source id(s) found in availableSources.json: ${i.join(", ")}. All sources must have a unique tap id.`);const c=r.filter((e=>e.isForked&&!a.includes(e.tap)));if(c.length>0)throw new Error(`Sources ${c.map((e=>e.label)).join(", ")} are linked, but missing from your availableSources.json`)},nn=async(e,n,t,o,s)=>{if(!Array.isArray(e))throw new Error("availableTargets.json must be an array of objects");const r=(await Promise.all(o.filter((e=>1==e.version)).map((async e=>{const o=await(async({debug:e,baseUri:n,env:t,flow:o,apikey:s})=>{const r={"x-api-key":s},a=new URL(`${n}/${t}/${o}/supportedTargets`).toString();e&&e("uri:",a);const{data:i}=await K.get(a,{headers:r});return i})({debug:Xe,baseUri:n,env:s,flow:e.id,apikey:t});return o})))).flat(),a=e.map((e=>{if(!e.target)throw new Error(`Target ${JSON.stringify(e)} has no target id`);return e.target})),i=a.filter(((e,n)=>a.indexOf(e)!==n));if(i.length>0)throw new Error(`Duplicate target id(s) found in availableTargets.json: ${i.join(", ")}. All targets must have a unique target id.`);const c=r.filter((e=>e.isForked&&!a.includes(e.target)));if(c.length>0)throw new Error(`Targets ${c.map((e=>e.label)).join(", ")} are linked, but missing from your availableTargets.json`)},tn=async(e,n,t,o,s)=>{if(!Array.isArray(e))throw new Error("availableConnectors.json must be an array of objects");const r=(await Promise.all(o.filter((e=>2==e.version)).map((async e=>await We({debug:Xe,baseUri:n,env:s,flow:e.id,apikey:t}))))).flat(),a=e.map((e=>{if(!e.id)throw new Error(`Connector ${JSON.stringify(e)} has no id`);return e.id})),i=a.filter(((e,n)=>a.indexOf(e)!==n));if(i.length>0)throw new Error(`Duplicate connector id(s) found in availableConnectors.json: ${i.join(", ")}. All connectors must have a unique id.`);const c=r.filter((e=>e.isForked&&!a.includes(e.id)));if(c.length>0)throw new Error(`Connectors ${c.map((e=>e.id)).join(", ")} are linked, but missing from your availableConnectors.json`)},on=Oe("commands:env:deploy"),sn="deploy";var rn=Object.freeze({__proto__:null,builder:async e=>(on("builder",sn),e.option("sourceFolder",Ue.sourceFolder.config).demandOption("sourceFolder",Ue.sourceFolder.demandText)),command:sn,desc:"Deploy Environment settings",handler:async e=>{on("handler",sn,e);const{hg:n,json:t,apikey:o,env:s,sourceFolder:r}=e,{clientApiBaseUri:a}=n,c=i.resolve(process.cwd(),r);let l,d=U();try{l=we(`Scanning ${we(c,"info")} for deployable files`),!t&&d.start(we(`In progress: ${l}...`,"secondary"));const e=await Pe(c,{filter:{pattern:"((**/requirements.txt)|(**/availableSources.json)|(**/availableTargets.json)|(**/availableConnectors.json)|(**/customTaps.json))"}});if(0===e.length)return void(t?_e({status:"error",error:"There are no files to deploy at the specified location!"}):(d.fail(we(`Error: ${l}.`,"secondary")),ve(we(`Message: ${we("There are no files to deploy at the specified location!")}`,"secondary"))));!t&&d.succeed(we(`Finished: ${l}.`,"secondary"));for(const n of e)if(n.endsWith(".json"))try{const e=await O(n,{encoding:"utf-8"});JSON.parse(e)}catch(e){throw new Error(`File ${n} is not a valid JSON: ${String(e)}`)}const n=await He({debug:on,baseUri:a,env:s,apikey:o});for(const t of e){if(t.endsWith("availableSources.json")){const e=JSON.parse(await O(t,{encoding:"utf-8"}));await en(e,a,o,n,s)}if(t.endsWith("availableTargets.json")){const e=JSON.parse(await O(t,{encoding:"utf-8"}));await nn(e,a,o,n,s)}if(t.endsWith("availableConnectors.json")){const e=JSON.parse(await O(t,{encoding:"utf-8"}));await tn(e,a,o,n,s)}}l=we("Verifying user and authorizing"),!t&&d.start(we(`In progress: ${l}...`,"secondary"));const{accessKeyId:r,secretAccessKey:u,sessionToken:f}=await ze({debug:on,baseUri:a,task:"env-deploy",env:s,apikey:o});!t&&d.succeed(we(`Finished: ${l}.`,"secondary"));const p=new A.S3({accessKeyId:r,secretAccessKey:u,sessionToken:f});l=we("Deploying environment files"),!t&&d.info(we(`Info: ${l}.`,"secondary"));const y="config/",g=new F({head:["File","Status"]});for await(const n of e){const e=i.basename(n);l=we(`Pushing file: ${we(e,"info")}`),!t&&d.start(we(`In progress: ${l}...`,"secondary"));const r={Bucket:s,Key:`${y}${e}`,Body:await O(n)},c=await p.putObject(r).promise();!t&&d.succeed(we(`Finished: ${l}.`,"secondary")),on("s3-put-res",c),g.push([e,"Deployed"]),await Re({debug:on,baseUri:a,env:s,apiKey:o})}t?_e({status:"success",deployedFiles:e}):be(g.toString())}catch(e){!t&&d.fail(we(`Error: ${l}.`,"secondary")),ve(we(`Message: ${we(e.message)}`,"secondary")),on(e),e&&e.response&&e.response.data&&on("response",e.response.data)}}});const an=Oe("commands:env:download"),cn="download";var ln=Object.freeze({__proto__:null,builder:async e=>(an("builder",cn),e.option("downloadTo",Ue.downloadTo.config)),command:cn,desc:"Download Environment settings",handler:async e=>{an("handler",cn,e);const{hg:n,json:t,apikey:o,env:s,downloadTo:r}=e,{clientApiBaseUri:a}=n,c=i.resolve(process.cwd(),r);let l,d=U();try{l=we("Verifying user and authorizing"),!t&&d.start(we(`In progress: ${l}...`,"secondary"));const{accessKeyId:e,secretAccessKey:n,sessionToken:r}=await ze({debug:an,baseUri:a,task:"env-download",env:s,apikey:o});!t&&d.succeed(we(`Finished: ${l}.`,"secondary"));const u=new A.S3({accessKeyId:e,secretAccessKey:n,sessionToken:r});l=we(`Scanning environment ${we(s,"info")}`),!t&&d.start(we(`In progress: ${l}...`,"secondary"));const f={Bucket:s,Prefix:"config/"},{Contents:p}=await u.listObjectsV2(f).promise();!t&&d.succeed(we(`Finished: ${l}.`,"secondary")),an("s3-files",p);const y=p?Me(p.map((e=>e.Key)),{pattern:"((*/requirements.txt)|(*/availableSources.json)|(*/availableTargets.json)|(*/availableConnectors.json)|(*/customTaps.json))"}):[];if(!y||0===y.length)return void(t?_e({status:"success",downloadedFiles:[]}):d.warn(we(`Warning: ${we("Nothing to download!")}`,"secondary")));l=we(`Downloading to ${we(c,"info")}`),!t&&d.info(we(`Info: ${l}.`,"secondary"));const g=new F({head:["File","Status"]});for await(const e of y){const n=i.basename(e),o=i.resolve(c,n);an("local-file",o),await k(i.dirname(o),{recursive:!0}),l=we(`Downloading file: ${we(n,"info")}`),!t&&d.start(we(`In progress: ${l}...`,"secondary"));const r=u.getObject({Bucket:s,Key:e}).createReadStream();await _(o,await Ce(r)),!t&&d.succeed(we(`Finished: ${l}.`,"secondary")),g.push([n,"Downloaded"])}t?_e({status:"success",downloadedFiles:y}):be(g.toString())}catch(e){t?_e({status:"error",error:e}):(d.fail(we(`Error: ${l}.`,"secondary")),ve(we(`Message: ${we(e.message)}`,"secondary")),an(e),e&&e.response&&e.response.data&&an("response",e.response.data))}}});const dn=[rn,ln],un=Oe("commands:env"),fn="env <action>";var pn=Object.freeze({__proto__:null,builder:async function(e){un("builder",fn);return(await Ke(e)).command(dn)},command:fn,desc:"Manage environment settings",handler:async function(e){un("handler",fn,e)}});const yn=async(e,n,t,o)=>{try{const s=e.getObject({Bucket:n,Key:`${t}/flows/${o}/flow.json`}).createReadStream(),r=await Ce(s);return 2===JSON.parse(r).version}catch(e){return!1}},gn=async(e,n,t,o,s=void 0)=>s??await yn(e,n,t,o)?"connectors":"taps",hn=Oe("commands:etl:delete"),mn="delete";var wn=Object.freeze({__proto__:null,builder:async e=>(hn("builder",mn),e.option("flow",Ue.flow.config).demandOption("flow",Ue.flow.demandText).option("tap",Ue.tap.config).demandOption("tap",Ue.tap.demandText).option("tenant",{...Ue.tenant.config}).demandOption("tenant",Ue.tenant.demandText)),command:mn,desc:"Delete ETL scripts",handler:async e=>{hn("handler",mn,e);const{hg:n,json:t,apikey:o,env:s,flow:r,tap:a,tenant:i}=e,{clientApiBaseUri:c}=n;let l,d=U();try{l=we(`Deleting ETL scripts for Tenant ${we(i,"info")} Flow ${we(r,"info")} and Tap ${we(a,"info")} to ${we(s,"info")}`),!t&&d.info(we(`Info: ${l}.`,"secondary")),l=we("Verifying user and authorizing"),!t&&d.start(we(`In progress: ${l}...`,"secondary"));const{accessKeyId:e,secretAccessKey:n,sessionToken:u}=await ze({debug:hn,baseUri:c,task:"etl-deploy",env:s,tenant:i,flow:r,tap:a,apikey:o}),f=new A.S3({accessKeyId:e,secretAccessKey:n,sessionToken:u});!t&&d.succeed(we(`Finished: ${l}.`,"secondary")),l=we("Deleting ETL scripts"),!t&&d.start(we(`In progress: ${l}...`,"secondary"));const p=`${i}/flows/${r}/${await gn(f,s,i,r)}/${a}/etl/`,y=await f.listObjectsV2({Bucket:s,Prefix:p}).promise();if(hn("s3-list-objects-res",y),y.Contents?.length>0){const e=await f.deleteObjects({Bucket:s,Delete:{Objects:y.Contents.map((e=>({Key:e.Key})))}}).promise();hn("s3-list-objects-res",e)}const g=await f.deleteObject({Bucket:s,Key:p}).promise();if(hn("s3-delete-object-res",g),!t&&d.succeed(we(`Finished: ${l}.`,"secondary")),y.Contents?.length>0){const e=new F({head:["File","Status"]});y.Contents.filter((({Key:e})=>e!==p)).forEach((({Key:n})=>{const t=n.split("/"),o=t[t.length-1];e.push([o,we("Deleted","info")])})),t?_e({status:"success",deletedObjects:(y.Contents??[]).map((({Key:e})=>e))}):be(e.toString())}else l=we("There was no file or folder to be deleted"),t?_e({status:"success",deletedObjects:[]}):d.info(we(`Info: ${l}.`,"secondary"))}catch(e){t?_e({status:"error",error:e}):(d.fail(we(`Error: ${l}.`,"secondary")),ve(we(`Message: ${we(e.message)}`,"secondary")),hn(e),e&&e.response&&e.response.data&&hn("response",e.response.data))}}});const bn=Oe("commands:etl:deploy"),vn="deploy";var $n=Object.freeze({__proto__:null,builder:async e=>(bn("builder",vn),e.option("flow",Ue.flow.config).demandOption("flow",Ue.flow.demandText).option("tap",Ue.tap.config).option("all",Ue.all.config).option("tenant",{...Ue.tenant.config,default:"default"}).option("sourceFolder",Ue.sourceFolder.config).demandOption("sourceFolder",Ue.sourceFolder.demandText)),command:vn,desc:"Deploy ETL scripts",handler:async e=>{bn("handler",vn,e);const{hg:n,json:t,apikey:o,env:s,flow:r,tap:a,all:c,tenant:l,sourceFolder:d}=e,{clientApiBaseUri:u}=n;if(!c&&!a)throw new Error(`${Ue.tap.demandText} Or you can pass the --all flag to run this command for all taps/connectors.`);let f,p=U();const y=i.resolve(process.cwd(),d);try{f=we(`Deploying script for Tenant ${we(l,"info")} Flow ${we(r,"info")}${a?` and Tap ${we(a,"info")}`:""} to ${we(s,"info")}`),!t&&p.info(we(`Info: ${f}.`,"secondary"));const e=await Pe(y,{recursive:!0,filter:{pattern:"!((**/sync-output)|(**/etl-output)|(**/snapshots))"}});if(0===e.length)return void(t?_e({status:"error",error:"There are no files to deploy at the specified location!"}):p.fail(we(`Error: ${we("There are no files to deploy at the specified location!")}.`,"secondary")));f=we("Verifying user and authorizing"),!t&&p.start(we(`In progress: ${f}...`,"secondary"));const n={debug:bn,baseUri:u,task:"etl-deploy",env:s,tenant:l,flow:r,apikey:o};a&&(n.tap=a);const{accessKeyId:c,secretAccessKey:g,sessionToken:h}=await ze(n);!t&&p.succeed(we(`Finished: ${f}.`,"secondary"));const m=new A.S3({accessKeyId:c,secretAccessKey:g,sessionToken:h}),w=await yn(m,s,l,r);f=we("Validating flow and tap location"),!t&&p.start(we(`In progress: ${f}...`,"secondary"));const b=(await He({debug:bn,baseUri:u,apikey:o,env:s})).find((({id:e})=>e===r));let v=[];try{if("default"===l||b?.type){if(v=((w?await We({debug:bn,baseUri:u,env:s,flow:r,apikey:o}):await qe({debug:bn,baseUri:u,env:s,flow:r,apikey:o}))??[]).filter((e=>!a||e[w?"id":"tap"]===a)),a&&0===v.length)throw new Error("Tap is not supported")}else{if(v=((w?await Je({debug:bn,baseUri:u,env:s,flow:r,tenant:l,apikey:o}):await Ge({debug:bn,baseUri:u,env:s,flow:r,tenant:l,apikey:o}))??[]).filter((e=>!a||e[w?"id":"tap"]===a)),a&&0===v.length)throw new Error("Tap is not linked")}}catch(e){throw bn("err",e),new Error("Target location doesn't exist. Check your tenant, flow and tap arguments.")}!t&&p.succeed(we(`Finished: ${f}.`,"secondary"));const $=new F({head:["File","Status"]});for(const n of v){const o=n[w?"id":"tap"];f=we(`Preparing ${o} deployment target`),!t&&p.start(we(`In progress: ${f}...`,"secondary"));const a=`${l}/flows/${r}/${await gn(null,null,null,null,w)}/${o}/etl/`,{Contents:c}=await m.listObjectsV2({Bucket:s,Prefix:`${a}`}).promise();!t&&p.succeed(we(`Finished: ${f}.`,"secondary")),bn("contents",c);const u=c.map((e=>({Key:e.Key})));if(u.length>0){f=we(`Removing old ${o} ETL files`),!t&&p.start(we(`In progress: ${f}...`,"secondary"));const e={Bucket:s,Delete:{Objects:u,Quiet:!0}};await m.deleteObjects(e).promise(),u.forEach((({Key:e})=>$.push([`${o}/${e.substring(a.length)}`,we("Deleted","warn")]))),!t&&p.succeed(we(`Finished: ${f}.`,"secondary"))}for await(const n of e){const e="win32"===process.platform?i.relative(d,n).replace(/\\/g,"/"):i.relative(d,n),r=`${a}${e}`;f=we(`Deploying file: ${we(`${o}/${e}`,"info")}`),!t&&p.start(we(`In progress: ${f}...`,"secondary"));const c={Bucket:s,Key:r,Body:await O(n)},l=await m.putObject(c).promise();!t&&p.succeed(we(`Finished: ${f}.`,"secondary")),bn("s3-put-res",l),$.push([`${o}/${e}`,we("Deployed","info")])}}t?_e({status:"success",deployedFiles:e}):be($.toString())}catch(e){t?_e({status:"error",error:e}):(p.fail(we(`Error: ${f}.`,"secondary")),ve(we(`Message: ${we(e.message)}`,"secondary")),bn(e),e&&e.response&&e.response.data&&bn("response",e.response.data))}}});const kn=Oe("commands:etl:download"),_n="download";var jn=Object.freeze({__proto__:null,builder:async e=>(kn("builder",_n),e.option("flow",Ue.flow.config).demandOption("flow",Ue.flow.demandText).option("tap",Ue.tap.config).demandOption("tap",Ue.tap.demandText).option("downloadTo",Ue.downloadTo.config).demandOption("downloadTo",Ue.downloadTo.demandText).option("tenant",{...Ue.tenant.config,default:"default"}).option("overwrite",Ue.overwrite.config).demandOption("overwrite",Ue.overwrite.demandText)),command:_n,desc:"Download ETL scripts",handler:async e=>{kn("handler",_n,e);const{hg:n,json:t,apikey:o,env:s,flow:a,tap:c,tenant:l,downloadTo:d,overwrite:u}=e,{clientApiBaseUri:f}=n;let p,y=U();const g=i.resolve(process.cwd(),d);try{p=we("Verifying user and authorizing"),!t&&y.start(we(`In progress: ${p}...`,"secondary"));const{accessKeyId:e,secretAccessKey:n,sessionToken:d}=await ze({debug:kn,baseUri:f,task:"etl-download",env:s,tenant:l,flow:a,tap:c,apikey:o}),h=new A.S3({accessKeyId:e,secretAccessKey:n,sessionToken:d});!t&&y.succeed(we(`Finished: ${p}.`,"secondary")),p=we("Scanning for downloadable files"),!t&&y.start(we(`In progress: ${p}...`,"secondary"));const m=`${l}/flows/${a}/${await gn(h,s,l,a)}/${c}/etl/`,w={Bucket:s,Prefix:m},{Contents:b}=await h.listObjectsV2(w).promise();!t&&y.succeed(we(`Finished: ${p}.`,"secondary")),kn("s3-list-res",b);const v=b?Me(b.map((e=>e.Key)),{pattern:"!(.ipynb_checkpoints/*)"}):[];if(!v||0===v.length)return void(t?_e({status:"success",downloadedFiles:[]}):y.warn(we(`Warning: ${we("Nothing to download!")}`,"secondary")));p=we(`Downloading script files to ${we(g,"info")}`),!t&&y.info(we(`Info: ${p}.`,"secondary"));const $=new F({head:["File","Status"]});for await(const e of v){const n=e.substring(m.length),o=i.resolve(g,n);if(kn("file",o),e.endsWith("/")){!r(o)&&await k(o,{recursive:!0});continue}if(!u)try{await x(o),kn("exists, skipping"),$.push([n,"Skipped"]);continue}catch(e){"ENOENT"!==e.code&&be(e)}p=we(`Downloading file: ${we(n,"info")}`),!t&&y.start(we(`In progress: ${p}...`,"secondary")),await k(i.dirname(o),{recursive:!0});const a=h.getObject({Bucket:s,Key:e}).createReadStream();await _(o,await Ce(a)),!t&&y.succeed(we(`Finished: ${p}.`,"secondary")),$.push([n,"Downloaded"])}t?_e({status:"success",downloadedFiles:v}):be($.toString())}catch(e){t?_e({status:"error",error:e}):(y.fail(we(`Error: ${p}.`,"secondary")),ve(we(`Message: ${we(e.message)}`,"secondary")),kn(e),e&&e.response&&e.response.data&&kn("response",e.response.data))}}});const On=[wn,$n,jn],xn=Oe("commands:etl"),En="etl <action>";var Tn=Object.freeze({__proto__:null,builder:async function(e){xn("builder",En);return(await Ke(e)).command(On)},command:En,desc:"Manage ETL scripts",handler:async function(e){xn("handler",En,e)}});const An=Oe("commands:flows:list"),Sn="list";var In=Object.freeze({__proto__:null,builder:async e=>(An("builder",Sn),e.option("tenant",{...Ue.tenant.config})),command:Sn,desc:"List flows",handler:async e=>{An("handler",Sn,e);const{hg:n,json:t,apikey:o,env:s,tenant:r}=e,{clientApiBaseUri:a}=n;let i,c=U();try{i=we(`Retrieving ${r?`${we(r,"info")} tenant's`:"the"} flows for environment: ${we(s,"info")}`);const e=`${a}/${s}/flows/${r?`linked?user_id=${r}`:"supported"}`;An("requesting:",e),!t&&c.start(we(`In progress: ${i}...`,"secondary"));const{data:n}=await K.get(e,{headers:{"x-api-key":o}});if(!t&&c.succeed(we(`Finished: ${i}.`,"secondary")),An("response-data",n),!n||0===n.length)return void(t?_e([]):c.warn(we(`Warning: ${we("No flows for specified environment and tenant")}.`,"secondary")));if(t)_e(n);else{const e=new F({head:["ID","Name","isPush","Taps","Targets"]});n.forEach((n=>e.push([n.id,n.name||"",n.type||!1,n.taps?w(n.taps):"",n.targets?w(n.targets):"none"]))),console.log(e.toString())}}catch(e){t?_e({status:"error",error:e}):(c.fail(we(`Error: ${i}.`,"secondary")),ve(we(`Message: ${we(e.message)}`,"secondary")),An(e),e&&e.response&&e.response.data&&An("response",e.response.data))}}});const Fn=[In],Un=Oe("commands:flows"),Nn="flows <action>";var Kn,Bn=Object.freeze({__proto__:null,builder:async function(e){Un("builder",Nn);return(await Ke(e)).command(Fn)},command:Nn,desc:"Manage flows",handler:async function(e){Un("handler",Nn,e)}}),Dn={exports:{}},Pn={exports:{}},Mn={exports:{}},Cn={exports:{}};var Ln,Rn={exports:{}},zn={exports:{}};var Vn,qn,Wn={exports:{}};function Gn(){return qn||(qn=1,function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){if((0,o.default)(e))return function(e){var n=-1,t=e.length;return function(){return++n<t?{value:e[n],key:n}:null}}(e);var n=(0,r.default)(e);return n?function(e){var n=-1;return function(){var t=e.next();return t.done?null:(n++,{value:t.value,key:n})}}(n):(t=e,s=t?Object.keys(t):[],a=-1,i=s.length,function e(){var n=s[++a];return"__proto__"===n?e():a<i?{value:t[n],key:n}:null});var t,s,a,i};var t=function(){return Ln||(Ln=1,e=zn,n=zn.exports,Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return e&&"number"==typeof e.length&&e.length>=0&&e.length%1==0},e.exports=n.default),zn.exports;var e,n}(),o=a(t),s=function(){return Vn||(Vn=1,e=Wn,n=Wn.exports,Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return e[Symbol.iterator]&&e[Symbol.iterator]()},e.exports=n.default),Wn.exports;var e,n}(),r=a(s);function a(e){return e&&e.__esModule?e:{default:e}}e.exports=n.default}(Rn,Rn.exports)),Rn.exports}var Jn,Qn={exports:{}};var Yn,Hn={},Zn={exports:{}},Xn={exports:{}};var et,nt,tt,ot={};function st(){return nt||(nt=1,function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){if((0,a.isAsync)(e))return function(...n){const t=n.pop();return c(e.apply(th