UNPKG

206 kBSource Map (JSON)View Raw
1{"version":3,"file":"bundle.js","sources":["src/config.js","src/decorators.js","src/rally-tools.js","src/providers.js","src/asset.js","src/fswrap.js","src/preset.js","src/notification.js","src/rule.js","src/supply-chain.js","src/user.js","src/tag.js","src/index.js","src/baseCode.js","src/config-create.js","src/cli.js"],"sourcesContent":["import {homedir} from \"os\";\nimport {readFileSync} from \"fs\";\n\nexport let configFile = homedir() + \"/.rallyconfig\";\n\nlet configObject;\nexport function loadConfig(file){\n if(file) configFile = file;\n\n configObject = {hasConfig: true};\n try{\n let json = readFileSync(configFile);\n configObject = JSON.parse(json);\n configObject.hasConfig = true;\n }catch(e){\n if(e.code == \"ENOENT\"){\n configObject.hasConfig = false;\n //ok, they should probably make a config\n }else{\n throw e;\n }\n }\n}\n\nexport function setConfig(obj){\n configObject = obj;\n}\n\nloadConfig();\n\nexport {configObject};\n","\n//these are the help entries for each command\nexport let helpEntries = {};\nlet helpEntry = name => helpEntries[name] ? helpEntries[name] : (helpEntries[name] = {name});\n\n//short description\nexport function helpText(text){\n return function(func, name){\n helpEntry(name).text = text;\n return func;\n }\n}\n\n//flag type argument like -f or --file\nexport function arg(long, short, desc){\n return function(func, name){\n let args = helpEntry(name).args = helpEntry(name).args || [];\n args.unshift({long, short, desc});\n return func;\n }\n}\n\n//normal argument\nexport function param(param, desc){\n return function(func, name){\n let params = helpEntry(name).params = helpEntry(name).params || [];\n params.unshift({param, desc});\n return func;\n }\n}\n\n//usage string\nexport function usage(usage){\n return function(func, name){\n usage = usage.replace(/[\\[<](\\w+)[\\]>]/g, chalk`[{blue $1}]`);\n helpEntry(name).usage = usage;\n return func;\n }\n}\n\nexport function cachedgetter(target, key, desc){\n let cachedVal;\n\n let oldget = desc.get;\n desc.get = function(){\n if(cachedVal) return cachedVal;\n return cachedVal = oldget.call(this);\n };\n desc.set = function(val){\n cachedVal = val;\n };\n}\n\nfunction findValueInCache(args, cache){\n for(let [argsKey, value] of cache){\n if(args.length !== argsKey.length) continue;\n for(let i in argsKey){\n if(args[i] !== argsKey[i]){\n continue\n }\n }\n return {found: true, value};\n }\n return {found: false};\n}\n\n//This decorator takes a function and returns a function that remembers the\n// value returned by given arguments\nexport function cached(target, key, desc){\n let oldFunc = desc.value;\n let cachedValues = [];\n function newFunc(...args){\n let {found, value} = findValueInCache(args, cachedValues);\n if(!found){\n //Call the old function to find the value, then store it in the cache\n value = oldFun(...args);\n cachedValues.push([args, value]);\n }\n return value;\n }\n newFunc.clearCache = function(){\n cachedValues = [];\n }\n newFunc.cachePush = function(args, value){\n cachedValues.push([args, value]);\n }\n newFunc.remove = function(...args){\n let {found, value} = findValueInCache(args, cachedValues);\n if(found){\n cachedValues = cachedValues.filter(([arg, item]) => item !== value);\n }\n }\n\n return {\n ...desc,\n value: newFunc,\n };\n}\n\n//Access a deep property of an object: if path is [\"a\", \"b\", \"c\"], then this\n//function retuns obj.a.b.c\nfunction deepAccess(obj, path){\n let o = obj;\n for(let key of path){\n if(!o) return [];\n o = o[key];\n }\n return o;\n}\n\n//This takes a class as the first argument, then adds a getter/setter pair that\n//corresponds to an object in this.data\nexport function defineAssoc(classname, shortname, path){\n path = path.split(\".\");\n let lastKey = path.pop();\n\n Object.defineProperty(classname.prototype, shortname, {\n get(){\n return deepAccess(this, path)[lastKey];\n },\n set(val){\n deepAccess(this, path)[lastKey] = val;\n },\n });\n}\n\nimport {spawn as cp_spawn} from \"child_process\";\nimport {performance} from \"perf_hooks\";\n\n//Spawn promise decorator, based on https://gist.github.com/Stuk/6226938\nexport function spawn(options, ...args){\n if(typeof options !== \"object\"){\n args.unshift(options);\n options = {};\n }\n //todo options\n return new Promise((resolve, reject) => {\n let start = performance.now();\n\n let stdout = \"\";\n let stderr = \"\";\n let cp = cp_spawn(...args);\n\n if(cp.stdout) cp.stdout.on(\"data\", chunk => {stdout += chunk; write(chunk)});\n if(cp.stderr) cp.stderr.on(\"data\", chunk => {stderr += chunk; write(chunk)});\n\n cp.on(\"error\", reject);\n cp.on(\"close\", code => {\n let end = performance.now();\n let time = end - start;\n let timestr = time > 1000 ? (time/100|0)/10 + \"s\" : (time|0) + \"ms\";\n resolve({stdout, stderr, exitCode: code, time, timestr});\n });\n });\n}\n","import chalk from \"chalk\";\nimport {configObject} from \"./config.js\";\nimport {cached} from \"./decorators.js\";\nconst rp = importLazy(\"request-promise\")\n\nglobal.chalk = chalk;\nglobal.log = (...text) => console.log(...text);\nglobal.write = (...text) => process.stdout.write(...text);\nglobal.elog = (...text) => console.log(...text);\nglobal.ewrite = (...text) => process.stderr.write(...text);\nglobal.errorLog = (...text) => log(...text.map(chalk.red));\n\nexport class lib{\n //This function takes 2 required arguemnts:\n // env: the enviornment you wish to use\n // and either:\n // 'path', the short path to the resource. ex '/presets/'\n // 'path_full', the full path to the resource like 'https://discovery-dev.sdvi.com/presets'\n //\n // If the method is anything but GET, either payload or body should be set.\n // payload should be a javascript object to be turned into json as the request body\n // body should be a string that is passed as the body. for example: the python code of a preset.\n //\n // qs are the querystring parameters, in a key: value object.\n // {filter: \"name=test name\"} becomes something like 'filter=name=test+name'\n //\n // headers are the headers of the request. \"Content-Type\" is already set if\n // payload is given as a parameter\n //\n // fullResponse should be true if you want to receive the request object,\n // not just the returned data.\n static async makeAPIRequest({\n env, path, path_full, fullPath,\n payload, body, method = \"GET\",\n qs, headers = {},\n fullResponse = false, timeout = configObject.timeout || 20000\n }){\n //backwards compatability from ruby script\n if(fullPath) path_full = fullPath;\n //Keys are defined in enviornment variables\n let config = configObject?.api?.[env];\n if(!config) {\n throw new UnconfiguredEnvError(env);\n };\n //Protect PROD and UAT(?) if the --no-protect flag was not set.\n if(method !== \"GET\" && !configObject.dangerModify){\n if(env === \"UAT\" && configObject.restrictUAT || env === \"PROD\"){\n throw new ProtectedEnvError(env);\n }\n }\n\n let rally_api_key = config.key;\n let rally_api = config.url;\n if(path && path.startsWith(\"/v1.0/\")){\n rally_api = rally_api.replace(\"/api/v2\", \"/api\");\n }\n\n path = path_full || rally_api + path;\n if(payload){\n body = JSON.stringify(payload, null, 4);\n }\n\n if(payload){\n headers[\"Content-Type\"] = \"application/vnd.api+json\";\n }\n\n let fullHeaders = {\n //SDVI ignores this header sometimes.\n Accept: \"application/vnd.api+json\",\n \"X-SDVI-Client-Application\": \"Discovery-rtlib-\" + (configObject.appName || \"commandline\"),\n ...headers,\n }\n\n if(configObject.vvverbose){\n log(`${method} @ ${path}`)\n log(JSON.stringify(fullHeaders, null, 4))\n\n if(body){\n log(body);\n }else{\n log(\"(No body\")\n }\n }\n\n let requestOptions = {\n method, body, qs, uri: path,\n timeout,\n auth: {bearer: rally_api_key},\n headers: fullHeaders,\n simple: false, resolveWithFullResponse: true,\n };\n\n let response;\n try{\n response = await rp(requestOptions);\n if(configObject.vverbose || configObject.vvverbose){\n log(chalk`${method} @ ${response.request.uri.href}`);\n }\n }catch(e){\n if(e?.cause.code === \"ESOCKETTIMEDOUT\"){\n throw new APIError(response || {}, requestOptions, body);\n }else{\n throw e;\n }\n }\n\n //Throw an error for any 5xx or 4xx\n if(!fullResponse && ![200, 201, 202, 203, 204].includes(response.statusCode)){\n throw new APIError(response, requestOptions, body);\n }\n let contentType = response.headers[\"content-type\"];\n let isJSONResponse = contentType === \"application/vnd.api+json\" || contentType === \"application/json\";\n\n if(configObject.vvverbose){\n log(response.body);\n }\n\n if(fullResponse){\n return response;\n }else if(isJSONResponse){\n try{\n return JSON.parse(response.body);\n }catch(e){\n log(response.body);\n throw new AbortError(\"Body is not valid json: \");\n }\n }else{\n return response.body;\n }\n }\n\n //Index a json endpoint that returns a {links} field.\n //This function returns the merged data objects as an array\n //\n //Additonal options (besides makeAPIRequest options):\n // - Observe: function to be called for each set of data from the api\n static async indexPath(env, path){\n let all = [];\n\n let opts = typeof env === \"string\" ? {env, path} : env;\n let json = await this.makeAPIRequest(opts);\n\n let [numPages, pageSize] = this.numPages(json.links.last);\n //log(`num pages: ${numPages} * ${pageSize}`);\n\n all = [...json.data];\n while(json.links.next){\n json = await this.makeAPIRequest({...opts, path_full: json.links.next});\n if(opts.observe) await opts.observe(json.data);\n all = [...all, ...json.data];\n }\n\n return all;\n }\n\n //Returns number of pages and pagination size\n static numPages(str){\n return /page=(\\d+)p(\\d+)/.exec(str).slice(1);\n }\n\n static arrayChunk(array, chunkSize){\n let newArr = [];\n for (let i = 0; i < array.length; i += chunkSize){\n newArr.push(array.slice(i, i + chunkSize));\n }\n return newArr;\n }\n\n static async doPromises(promises, result = [], cb){\n for(let promise of promises){\n let res = await promise;\n result.push(res);\n if(cb){\n cb(res.data);\n }\n }\n return result\n }\n\n static clearProgress(size = 30){\n process.stderr.write(`\\r${\" \".repeat(size + 15)}\\r`);\n }\n\n static async drawProgress(i, max, size = process.stdout.columns - 15 || 15){\n if(size > 45) size = 45;\n let pct = Number(i) / Number(max);\n //clamp between 0 and 1\n pct = pct < 0 ? 0 : pct > 1 ? 1 : pct;\n let numFilled = Math.floor(pct * size);\n let numEmpty = size - numFilled;\n\n this.clearProgress(size);\n process.stderr.write(`[${\"*\".repeat(numFilled)}${\" \".repeat(numEmpty)}] ${i} / ${max}`);\n }\n\n\n static async keepalive(func, inputData, {chunksize, observe = async _=>_} = {}){\n let total = inputData ? inputData.length : func.length;\n let i = 0;\n let createPromise = () => {\n let ret;\n if(i >= total) return [];\n if(inputData){\n ret = [i, func(inputData[i])];\n }else{\n ret = [i, func[i]()];\n }\n\n i++;\n return ret;\n }\n\n let values = [];\n let finished = 0;\n process.stderr.write(\"\\n\")\n let threads = [...this.range(20)].map(async (whichThread) => {\n while(true){\n let [i, currentPromise] = createPromise();\n if(i == undefined) break;\n values[i] = await observe(await currentPromise);\n this.drawProgress(++finished, total);\n }\n });\n await Promise.all(threads);\n process.stderr.write(\"\\n\")\n\n\n return values;\n }\n\n static *range(start, end){\n if(end === undefined){\n end = start;\n start = 0;\n }\n while(start < end) yield start++;\n }\n\n\n //Index a json endpoint that returns a {links} field.\n //\n //This function is faster than indexPath because it can guess the pages it\n //needs to retreive so that it can request all assets at once.\n //\n //This function assumes that the content from the inital request is the\n //first page, so starting on another page may cause issues. Consider\n //indexPath for that.\n //\n //Additional opts, besides default indexPath opts:\n // - chunksize[10]: How often to break apart concurrent requests\n static async indexPathFast(env, path){\n let opts = typeof env === \"string\" ? {env, path} : env;\n //Create a copy of the options in case we need to have a special first request\n let start = opts.start || 1;\n let initOpts = {...opts};\n if(opts.pageSize){\n initOpts.qs = {...opts.qs};\n initOpts.qs.page = `${start}p${opts.pageSize}`;\n }\n\n let json = await this.makeAPIRequest(initOpts);\n\n if(opts.observe && opts.start !== 1) json = await opts.observe(json);\n\n let baselink = json.links.first;\n const linkToPage = page => baselink.replace(`page=1p`, `page=${page}p`);\n\n let [numPages, pageSize] = this.numPages(json.links.last);\n\n //Construct an array of all the requests that are done simultanously.\n //Assume that the content from the inital request is the first page.\n let allResults = await this.keepalive(\n this.makeAPIRequest,\n [...this.range(start+1, Number(numPages) + 1 || opts.limit + 1)]\n .map(i => ({...opts, path_full: linkToPage(i)})),\n {chunksize: opts.chunksize, observe: opts.observe},\n );\n if(start == 1){\n allResults.unshift(json);\n }\n this.clearProgress();\n\n let all = [];\n for(let result of allResults){\n for(let item of result.data){\n all.push(item);\n }\n }\n\n return all;\n }\n static isLocalEnv(env){\n return !env || env === \"LOCAL\" || env === \"LOC\";\n }\n static envName(env){\n if(this.isLocalEnv(env)) return \"LOCAL\";\n return env;\n }\n};\n\nexport class AbortError extends Error{\n constructor(message){\n super(message);\n Error.captureStackTrace(this, this.constructor);\n this.name = \"AbortError\";\n }\n}\n\nexport class APIError extends Error{\n constructor(response, opts, body){\n super(chalk`\n{reset Request returned} {yellow ${response?.statusCode}}{\n{green ${JSON.stringify(opts, null, 4)}}\n{green ${body}}\n{reset ${response.body}}\n===============================\n{red ${response.body ? \"Request timed out\" : \"Bad response from API\"}}\n===============================\n `);\n this.response = response;\n this.opts = opts;\n this.body = body;\n\n Error.captureStackTrace(this, this.constructor);\n this.name = \"ApiError\";\n }\n}\n\nexport class UnconfiguredEnvError extends AbortError{\n constructor(env){\n super(\"Unconfigured enviornment: \" + env);\n this.name = \"Unconfigured Env Error\";\n }\n}\n\nexport class ProtectedEnvError extends AbortError{\n constructor(env){\n super(\"Protected enviornment: \" + env);\n this.name = \"Protected Env Error\";\n }\n}\n\nexport class Collection{\n constructor(arr){\n this.arr = arr;\n }\n [Symbol.iterator](){\n return this.arr[Symbol.iterator]();\n }\n findById(id){\n return this.arr.find(x => x.id == id);\n }\n findByName(name){\n return this.arr.find(x => x.name == name);\n }\n findByNameContains(name){\n return this.arr.find(x => x.name.includes(name));\n }\n log(){\n for(let d of this){\n if(d){\n log(d.chalkPrint(true));\n }else{\n log(chalk`{red (None)}`);\n }\n }\n }\n get length(){return this.arr.length;}\n}\n\nexport class RallyBase{\n static handleCaching(){\n if(!this.cache) this.cache = [];\n }\n static isLoaded(env){\n if(!this.hasLoadedAll) return;\n return this.hasLoadedAll[env];\n }\n static async getById(env, id, qs){\n this.handleCaching();\n for(let item of this.cache){\n if(item.id == id && item.remote === env || `${env}-${id}` === item.metastring) return item;\n }\n\n let data = await lib.makeAPIRequest({\n env, path: `/${this.endpoint}/${id}`,\n qs\n });\n if(data.data){\n let o = new this({data: data.data, remote: env, included: data.included});\n this.cache.push(o);\n return o;\n }\n }\n\n static async getByName(env, name, qs){\n this.handleCaching();\n for(let item of this.cache){\n if(item.name === name && item.remote === env) return item;\n }\n\n let data = await lib.makeAPIRequest({\n env, path: `/${this.endpoint}`,\n qs: {...qs, filter: `name=${name}` + (qs ? qs.filter : \"\")},\n });\n //TODO included might not wokr correctly here\n if(data.data[0]){\n let o = new this({data: data.data[0], remote: env, included: data.included});\n this.cache.push(o);\n return o;\n }\n }\n\n static async getAllPreCollect(d){return d;}\n static async getAll(env){\n this.handleCaching();\n let datas = await lib.indexPathFast({\n env, path: `/${this.endpoint}`,\n pageSize: \"50\",\n qs: {sort: \"id\"},\n });\n datas = await this.getAllPreCollect(datas);\n let all = new Collection(datas.map(data => new this({data, remote: env})));\n this.cache = [...this.cache, ...all.arr];\n return all;\n }\n static async removeCache(env){\n this.handleCaching();\n this.cache = this.cache.filter(x => x.remote !== env);\n }\n\n //Specific turns name into id based on env\n //Generic turns ids into names\n async resolveApply(type, dataObj, direction){\n let obj;\n if(direction == \"generic\"){\n obj = await type.getById(this.remote, dataObj.id);\n if(obj){\n dataObj.name = obj.name\n }\n }else if(direction == \"specific\"){\n obj = await type.getByName(this.remote, dataObj.name);\n if(obj){\n dataObj.id = obj.id\n }\n }\n return obj;\n }\n\n //Type is the baseclass you are looking for (should extend RallyBase)\n //name is the name of the field\n //isArray is true if it has multiple cardinailty, false if it is single\n //direction gets passed directly to resolveApply\n async resolveField(type, name, isArray=false, direction=\"generic\"){\n // ignore empty fields\n let field = this.relationships[name];\n if(!field?.data) return;\n\n if(isArray){\n return await Promise.all(field.data.map(o => this.resolveApply(type, o, direction)));\n }else{\n return await this.resolveApply(type, field.data, direction);\n }\n }\n\n cleanup(){\n for(let [key, val] of Object.entries(this.relationships)){\n //Remove ids from data\n if(val.data){\n if(val.data.id){\n delete val.data.id;\n }else if(val.data[0]){\n for(let x of val.data) delete x.id;\n }\n }\n delete val.links;\n }\n // organization is unused (?)\n delete this.relationships.organization;\n // id is specific to envs\n // but save source inside meta string in case we need it\n this.metastring = this.remote + \"-\" + this.data.id;\n delete this.data.id;\n // links too\n delete this.data.links;\n }\n}\n","import {cached, defineAssoc} from \"./decorators.js\";\nimport {lib, Collection, RallyBase} from \"./rally-tools.js\";\n\nclass Provider extends RallyBase{\n constructor({data, remote}){\n super();\n this.data = data;\n this.meta = {};\n this.remote = remote;\n }\n //cached\n async getEditorConfig(){\n if(this.editorConfig) return this.editorConfig;\n\n this.editorConfig = await lib.makeAPIRequest({\n env: this.remote,\n path_full: this.data.links.editorConfig\n });\n this.editorConfig.fileExt = await this.getFileExtension();\n return this.editorConfig;\n }\n static async getAllPreCollect(providers){\n return providers.sort((a, b) => {\n return a.attributes.category.localeCompare(b.attributes.category) ||\n a.attributes.name .localeCompare(b.attributes.name);\n });\n }\n\n async getFileExtension(){\n let config = await this.getEditorConfig();\n let map = {\n python: \"py\",\n text: \"txt\",\n getmap(key){\n if(this.name === \"Aurora\") return \"zip\";\n if(this[key]) return this[key];\n return key;\n }\n }\n return map.getmap(config.lang);\n }\n\n chalkPrint(pad=true){\n let id = String(this.id)\n if(pad) id = id.padStart(4);\n return chalk`{green ${id}}: {blue ${this.category}} - {green ${this.name}}`;\n }\n}\n\ndefineAssoc(Provider, \"id\", \"data.id\");\ndefineAssoc(Provider, \"name\", \"data.attributes.name\");\ndefineAssoc(Provider, \"category\", \"data.attributes.category\");\ndefineAssoc(Provider, \"remote\", \"meta.remote\");\ndefineAssoc(Provider, \"editorConfig\", \"meta.editorConfig\");\nProvider.endpoint = \"providerTypes\";\n\nexport default Provider;\n","import {cached, defineAssoc} from \"./decorators.js\";\nimport {lib, Collection, RallyBase} from \"./rally-tools.js\";\n\nclass Asset extends RallyBase{\n constructor({data, remote, included}){\n super();\n this.data = data;\n this.meta = {};\n this.remote = remote;\n if(included){\n this.meta.metadata = Asset.normalizeMetadata(included);\n }\n }\n static normalizeMetadata(payload){\n let newMetadata = {}\n for(let md of payload){\n if(md.type !== \"metadata\") continue;\n newMetadata[md.attributes.usage] = md.attributes.metadata;\n }\n return newMetadata;\n }\n\n static lite(id, remote){\n return new this({data: {id}, remote})\n }\n\n chalkPrint(pad=false){\n let id = String(\"A-\" + (this.remote && this.remote + \"-\" + this.id || \"LOCAL\"))\n if(pad) id = id.padStart(15);\n return chalk`{green ${id}}: {blue ${this.data.attributes ? this.name : \"(lite asset)\"}}`;\n }\n\n static async createNew(name, env){\n let req = await lib.makeAPIRequest({\n env, path: \"/assets\",\n method: \"POST\",\n payload: {\n data: {\n attributes: {name},\n type: \"assets\"\n }\n }\n });\n return new this({data: req.data, remote: env});\n }\n\n async delete(){\n let req = await lib.makeAPIRequest({\n env: this.remote, path: \"/assets/\" + this.id,\n method: \"DELETE\",\n });\n }\n\n async addFile(label, fileuris){\n if(!Array.isArray(fileuris)) fileuris = [fileuris];\n\n let instances = {}\n for(let i = 0; i < fileuris.length; i++){\n instances[String(i + 1)] = {uri: fileuris[i]};\n }\n\n let req = await lib.makeAPIRequest({\n env: this.remote, path: \"/files\",\n method: \"POST\",\n payload: {\n \"data\": {\n \"attributes\": {\n label, instances,\n },\n \"relationships\": {\n \"asset\": {\n \"data\": {\n id: this.id,\n \"type\": \"assets\"\n }\n }\n },\n \"type\": \"files\"\n }\n\n }\n });\n return req;\n }\n async startWorkflow(jobName, initData){\n let attributes;\n if(initData){\n //Convert init data to string\n initData = typeof initData === \"string\" ? initData : JSON.stringify(initData);\n attributes = {initData};\n }\n\n let req = await lib.makeAPIRequest({\n env: this.remote, path: \"/workflows\",\n method: \"POST\",\n payload: {\n \"data\": {\n \"type\": \"workflows\",\n attributes,\n \"relationships\": {\n \"movie\": {\n \"data\": {\n id: this.id,\n \"type\": \"movies\"\n }\n }, \"rule\": {\n \"data\": {\n \"attributes\": {\n \"name\": jobName,\n },\n \"type\": \"rules\"\n }\n }\n }\n }\n }\n });\n return req;\n }\n static async startAnonWorkflow(env, jobName, initData){\n let attributes;\n if(initData){\n //Convert init data to string\n initData = typeof initData === \"string\" ? initData : JSON.stringify(initData);\n attributes = {initData};\n }\n\n let req = await lib.makeAPIRequest({\n env, path: \"/workflows\",\n method: \"POST\",\n payload: {\n \"data\": {\n \"type\": \"workflows\",\n attributes,\n \"relationships\": {\n \"rule\": {\n \"data\": {\n \"attributes\": {\n \"name\": jobName,\n },\n \"type\": \"rules\"\n }\n }\n }\n }\n }\n });\n return req;\n\n }\n async startEvaluate(presetid){\n // Fire and forget.\n let data = await lib.makeAPIRequest({\n env: this.remote, path: \"/jobs\", method: \"POST\",\n payload: {\n data: {\n type: \"jobs\",\n relationships: {\n movie: {\n data: {\n id: this.id,\n type: \"movies\",\n }\n }, preset: {\n data: {\n id: presetid,\n type: \"presets\",\n }\n }\n }\n }\n }\n });\n return data;\n }\n}\n\ndefineAssoc(Asset, \"id\", \"data.id\");\ndefineAssoc(Asset, \"name\", \"data.attributes.name\");\ndefineAssoc(Asset, \"remote\", \"meta.remote\");\ndefineAssoc(Asset, \"md\", \"meta.metadata\");\nAsset.endpoint = \"movies\"\n\nexport default Asset;\n","import fs from \"fs\";\nimport {dirname} from \"path\";\n\nimport {configObject} from \"./config.js\";\nimport {homedir} from \"os\";\n\n\nconst home = homedir();\nconst colon = /:/g;\nconst siloLike = /(silo\\-\\w+?)s?\\/([^\\/]+)\\.([\\w1234567890]+)$/g;\nexport function pathTransform(path){\n if(path.includes(\":\")){\n //Ignore the first colon in window-like filesystems\n path = path.slice(0, 3) + path.slice(3).replace(colon, \"--\");\n }\n if(configObject.invertedPath){\n path = path.replace(siloLike, \"$2-$1.$3\")\n }\n if(path.includes(\"\\\\342\\\\200\\\\220\")){\n path = path.replace(\"\\\\342\\\\200\\\\220\", \"‐\");\n }\n return path;\n}\n\nexport function readFileSync(path, options){\n return fs.readFileSync(pathTransform(path), options);\n}\n//Create writefilesync, with ability to create directory if it doesnt exist\nexport function writeFileSync(path, data, options, dircreated = false){\n path = pathTransform(path);\n try{\n return fs.writeFileSync(path, data, options);\n }catch(e){\n if(dircreated) throw e;\n let directory = dirname(path);\n try{\n fs.statSync(directory);\n throw e;\n }catch(nodir){\n fs.mkdirSync(directory);\n return writeFileSync(path, data, options, true);\n }\n }\n}\n","import {RallyBase, lib, AbortError, Collection} from \"./rally-tools.js\";\nimport {basename, resolve as pathResolve, dirname} from \"path\";\nimport {cached, defineAssoc} from \"./decorators.js\";\nimport {configObject} from \"./config.js\";\nimport Provider from \"./providers.js\";\nimport Asset from \"./asset.js\";\n\n// pathtransform for hotfix\nimport {writeFileSync, readFileSync, pathTransform} from \"./fswrap.js\";\nimport path from \"path\";\n\nlet exists = {};\n\nclass Preset extends RallyBase{\n constructor({path, remote, data, subProject} = {}){\n // Get full path if possible\n if(path){\n path = pathResolve(path);\n if(dirname(path).includes(\"silo-metadata\")){\n throw new AbortError(\"Constructing preset from metadata file\")\n }\n }\n\n super();\n\n\n // Cache by path\n if(path){\n if(exists[pathTransform(path)]) return exists[pathTransform(path)];\n exists[pathTransform(path)] = this;\n }\n\n this.meta = {};\n this.subproject = subProject;\n this.remote = remote\n if(lib.isLocalEnv(this.remote)){\n if(path){\n this.path = path;\n let pathspl = this.path.split(\".\");\n this.ext = pathspl[pathspl.length-1];\n try{\n this.code = this.getLocalCode();\n }catch(e){\n if(e.code === \"ENOENT\" && configObject.ignoreMissing){\n this.missing = true;\n return undefined;\n }else{\n log(chalk`{red Node Error} ${e.message}`);\n throw new AbortError(\"Could not load code of local file\");\n }\n }\n let name = this.parseFilenameForName() || this.parseCodeForName();\n try{\n this.data = this.getLocalMetadata();\n this.isGeneric = true;\n name = this.name;\n }catch(e){\n log(chalk`{yellow Warning}: ${path} does not have a readable metadata file! Looking for ${this.localmetadatapath}`);\n this.data = Preset.newShell();\n this.isGeneric = false;\n }\n this.name = name;\n }else{\n this.data = Preset.newShell();\n }\n }else{\n this.data = data;\n //this.name = data.attributes.name;\n //this.id = data.id;\n this.isGeneric = false;\n }\n this.data.attributes.rallyConfiguration = undefined;\n this.data.attributes.systemManaged = undefined;\n }\n //Given a metadata file, get its actualy file\n static async fromMetadata(path, subproject){\n let data;\n try{\n data = JSON.parse(readFileSync(path));\n }catch(e){\n if(e.code === \"ENOENT\" && configObject.ignoreMissing){\n return null;\n }else{\n throw e;\n }\n }\n let providerType = data.relationships.providerType.data.name;\n let provider = await Provider.getByName(\"DEV\", providerType);\n\n if(!provider){\n log(chalk`{red The provider type {green ${providerType}} does not exist}`);\n log(chalk`{red Skipping {green ${path}}.}`);\n return null;\n }\n\n let ext = await provider.getFileExtension();\n let name = data.attributes.name;\n\n let realpath = Preset.getLocalPath(name, ext, subproject);\n return new Preset({path: realpath, subProject: subproject});\n }\n\n static newShell(){\n return {\n \"attributes\": {\n \"providerSettings\": {\n }\n },\n \"relationships\": {},\n \"type\": \"presets\",\n };\n }\n cleanup(){\n super.cleanup();\n delete this.attributes[\"createdAt\"];\n delete this.attributes[\"updatedAt\"];\n }\n async acclimatize(env){\n if(!this.isGeneric) throw new AbortError(\"Cannot acclimatize non-generics or shells\");\n let providers = await Provider.getAll(env);\n let ptype = this.relationships[\"providerType\"];\n ptype = ptype.data;\n\n let provider = providers.findByName(ptype.name);\n ptype.id = provider.id;\n }\n get test(){\n if(!this.code) return [];\n\n const regex = /[^-]autotest:\\s?([\\w\\d_\\-. \\/]+)[\\r\\s\\n]*?/gm;\n let match\n let matches = []\n while(match = regex.exec(this.code)){\n matches.push(match[1]);\n }\n return matches\n }\n async runTest(env){\n let remote = await Preset.getByName(env, this.name);\n for(let test of this.test){\n log(\"Tests...\");\n let asset;\n\n if(test.startsWith(\"id\")){\n let match = /id:\\s*(\\d+)/g.exec(test);\n if(!match){\n log(chalk`{red Could not parse autotest} ${test}.`);\n throw new AbortError(\"Could not properly parse the preset header\");\n }\n asset = await Asset.getById(env, match[1]);\n }else{\n asset = await Asset.getByName(env, test);\n }\n\n if(!asset){\n log(chalk`{yellow No movie found}, skipping test.`);\n continue;\n }\n\n log(chalk`Starting job {green ${this.name}} on ${asset.chalkPrint(false)}... `);\n await asset.startEvaluate(remote.id);\n }\n }\n async resolve(){\n if(this.isGeneric) return;\n\n let proType = await this.resolveField(Provider, \"providerType\");\n\n this.ext = await proType.getFileExtension();\n\n this.isGeneric = true;\n\n return {proType};\n }\n async saveLocal(){\n await this.saveLocalMetadata();\n await this.saveLocalFile();\n }\n async saveLocalMetadata(){\n if(!this.isGeneric){\n await this.resolve();\n this.cleanup();\n }\n writeFileSync(this.localmetadatapath, JSON.stringify(this.data, null, 4));\n }\n async saveLocalFile(){\n writeFileSync(this.localpath, this.code);\n }\n async uploadRemote(env){\n await this.uploadCodeToEnv(env, true);\n }\n async save(env){\n this.saved = true;\n if(!this.isGeneric){\n await this.resolve();\n }\n\n this.cleanup();\n if(lib.isLocalEnv(env)){\n log(chalk`Saving preset {green ${this.name}} to {blue ${lib.envName(env)}}.`)\n await this.saveLocal();\n }else{\n await this.uploadRemote(env);\n }\n }\n\n async downloadCode(){\n if(!this.remote || this.code) return this.code;\n return this.code = await lib.makeAPIRequest({\n env: this.remote,\n path_full: this.data.links.providerData,\n json: false,\n });\n }\n\n get code(){\n if(this._code) return this._code;\n }\n set code(v){this._code = v;}\n\n chalkPrint(pad=true){\n let id = String(\"P-\" + (this.remote && this.remote + \"-\" + this.id || \"LOCAL\"))\n let sub = \"\";\n if(this.subproject){\n sub = chalk`{yellow ${this.subproject}}`;\n }\n if(pad) id = id.padStart(10);\n if(this.name == undefined){\n return chalk`{green ${id}}: ${sub}{red ${this.path}}`;\n }else if(this.meta.proType){\n return chalk`{green ${id}}: ${sub}{red ${this.meta.proType.name}} {blue ${this.name}}`;\n }else{\n return chalk`{green ${id}}: ${sub}{blue ${this.name}}`;\n }\n }\n parseFilenameForName(){\n if(this.path.endsWith(\".jinja\") || this.path.endsWith(\".json\")){\n return basename(this.path)\n .replace(\"_\", \" \")\n .replace(\"-\", \" \")\n .replace(\".json\", \"\")\n .replace(\".jinja\", \"\");\n }\n }\n\n parseCodeForName(){\n const name_regex = /name\\s?:\\s([\\w\\d. \\/]+)[\\r\\s\\n]*?/;\n const match = name_regex.exec(this.code);\n if(match) return match[1];\n }\n\n findStringsInCode(strings){\n if(!this.code) return [];\n\n return strings.filter(str => {\n let regex = new RegExp(str);\n return !!this.code.match(regex);\n });\n }\n static getLocalPath(name, ext, subproject){\n return path.join(configObject.repodir, subproject || \"\", \"silo-presets\", name + \".\" + ext);\n }\n get localpath(){return Preset.getLocalPath(this.name, this.ext, this.subproject)}\n\n get path(){\n if(this._path) return this._path;\n }\n set path(val){\n this._path = val;\n }\n get name(){\n return this._nameOuter;\n }\n set name(val){\n if(!this._nameInner) this._nameInner = val;\n this._nameOuter = val;\n }\n set providerType(value){\n this.relationships[\"providerType\"] = {\n data: {\n ...value,\n type: \"providerTypes\",\n }\n };\n }\n get localmetadatapath(){\n if(this.path){\n return this.path.replace(\"silo-presets\", \"silo-metadata\").replace(new RegExp(this.ext + \"$\"), \"json\")\n }\n return path.join(configObject.repodir, this.subproject || \"\", \"silo-metadata\", this.name + \".json\");\n }\n get immutable(){\n return this.name.includes(\"Constant\");\n }\n async uploadPresetData(env, id){\n let res = await lib.makeAPIRequest({\n env, path: `/presets/${id}/providerData`,\n body: this.code, method: \"PUT\", fullResponse: true, timeout: 5000\n });\n write(chalk`code up {yellow ${res.statusCode}}, `);\n }\n async grabMetadata(env){\n let remote = await Preset.getByName(env, this.name);\n this.isGeneric = false;\n if(!remote){\n throw new AbortError(`No file found on remote ${env} with name ${this.name}`);\n }\n this.data = remote.data;\n this.remote = env;\n }\n async uploadCodeToEnv(env, includeMetadata, shouldTest = true){\n if(!this.name){\n log(chalk`Failed uploading {red ${this.path}}. No name found.`);\n return;\n }\n\n write(chalk`Uploading preset {green ${this.name}} to {green ${env}}: `);\n\n if(this.immutable){\n log(chalk`{magenta IMMUTABLE}. Nothing to do.`);\n return;\n }\n\n //First query the api to see if this already exists.\n let remote = await Preset.getByName(env, this.name);\n\n if(remote){\n //If it exists we can replace it\n write(\"replace, \");\n if(includeMetadata){\n let res = await lib.makeAPIRequest({\n env, path: `/presets/${remote.id}`, method: \"PATCH\",\n payload: {data: {attributes: this.data.attributes, type: \"presets\"}},\n fullResponse: true,\n });\n write(chalk`metadata {yellow ${res.statusCode}}, `);\n }\n\n await this.uploadPresetData(env, remote.id);\n }else{\n write(\"create, \");\n let metadata = {data: this.data};\n if(!this.relationships[\"providerType\"]){\n throw new AbortError(\"Cannot acclimatize shelled presets. (try creating it on the env first)\");\n }\n\n await this.acclimatize(env);\n write(\"Posting to create preset... \");\n let res = await lib.makeAPIRequest({\n env, path: `/presets`, method: \"POST\",\n payload: metadata, timeout: 5000,\n });\n let id = res.data.id;\n write(chalk`Created id {green ${id}}... Uploading Code... `);\n await this.uploadPresetData(env, id);\n }\n if(this.test[0] && shouldTest){\n await this.runTest(env);\n }else{\n log(\"No tests. Done.\");\n }\n }\n\n getLocalMetadata(){\n return JSON.parse(readFileSync(this.localmetadatapath, \"utf-8\"));\n }\n getLocalCode(){\n return readFileSync(this.path, \"utf-8\");\n }\n}\n\ndefineAssoc(Preset, \"_nameInner\", \"data.attributes.providerSettings.PresetName\");\ndefineAssoc(Preset, \"_nameOuter\", \"data.attributes.name\");\ndefineAssoc(Preset, \"id\", \"data.id\");\ndefineAssoc(Preset, \"attributes\", \"data.attributes\");\ndefineAssoc(Preset, \"relationships\", \"data.relationships\");\ndefineAssoc(Preset, \"remote\", \"meta.remote\");\ndefineAssoc(Preset, \"_code\", \"meta.code\");\ndefineAssoc(Preset, \"_path\", \"meta.path\");\ndefineAssoc(Preset, \"isGeneric\", \"meta.isGeneric\");\ndefineAssoc(Preset, \"ext\", \"meta.ext\");\ndefineAssoc(Preset, \"subproject\", \"meta.project\");\ndefineAssoc(Preset, \"metastring\", \"meta.metastring\");\nPreset.endpoint = \"presets\";\n\nexport default Preset;\n","import {cached, defineAssoc} from \"./decorators.js\";\nimport {lib, Collection, RallyBase} from \"./rally-tools.js\";\n\nclass Notification extends RallyBase{\n constructor({data, remote}){\n super();\n this.data = data;\n this.meta = {};\n this.remote = remote;\n }\n\n static async getAllPreCollect(notifications){\n return notifications.sort((a, b) => {\n return a.attributes.type.localeCompare(b.attributes.type) ||\n a.attributes.name.localeCompare(b.attributes.name);\n });\n }\n\n chalkPrint(pad=false){\n let id = String(\"N-\" + this.id)\n if(pad) id = id.padStart(4);\n return chalk`{green ${id}}: {blue ${this.type}} - {green ${this.name}}`;\n }\n}\n\ndefineAssoc(Notification, \"id\", \"data.id\");\ndefineAssoc(Notification, \"name\", \"data.attributes.name\");\ndefineAssoc(Notification, \"address\", \"data.attributes.address\");\ndefineAssoc(Notification, \"type\", \"data.attributes.type\");\ndefineAssoc(Notification, \"remote\", \"meta.remote\");\nNotification.endpoint = \"notificationPresets\"\n\nexport default Notification;\n","import {cached, defineAssoc} from \"./decorators.js\";\nimport {RallyBase, lib, Collection, AbortError} from \"./rally-tools.js\";\nimport {configObject} from \"./config.js\";\nimport Preset from \"./preset.js\";\nimport Provider from \"./providers.js\";\nimport Notification from \"./notification.js\";\n\nimport {writeFileSync, readFileSync} from \"./fswrap.js\";\nimport {join, resolve as pathResolve} from \"path\";\n\nclass Rule extends RallyBase{\n constructor({path, data, remote, subProject} = {}){\n super();\n if(path){\n path = pathResolve(path);\n try{\n let f = readFileSync(path, \"utf-8\")\n data = JSON.parse(readFileSync(path, \"utf-8\"));\n }catch(e){\n if(e.code === \"ENOENT\"){\n if(configObject.ignoreMissing){\n this.missing = true;\n return undefined;\n }else{\n throw new AbortError(\"Could not load code of local file\");\n }\n }else{\n throw new AbortError(`Unreadable JSON in ${path}. ${e}`);\n }\n }\n }\n this.meta = {};\n this.subproject = subProject;\n if(!data){\n data = Rule.newShell();\n }\n this.data = data;\n this.remote = remote;\n this.isGeneric = !this.remote;\n }\n\n static newShell(){\n return {\n \"attributes\": {\n \"description\": \"-\",\n \"priority\": \"PriorityNorm\",\n \"starred\": false,\n },\n \"relationships\": {},\n \"type\": \"workflowRules\",\n };\n }\n\n async acclimatize(env){\n this.remote = env;\n\n let preset = await this.resolveField(Preset, \"preset\", false, \"specific\");\n let pNext = await this.resolveField(Rule, \"passNext\", false, \"specific\");\n let eNext = await this.resolveField(Rule, \"errorNext\", false, \"specific\");\n let proType = await this.resolveField(Provider, \"providerType\", false, \"specific\");\n\n let dynamicNexts = await this.resolveField(Rule, \"dynamicNexts\", true, \"specific\");\n\n let enterNotif = await this.resolveField(Notification, \"enterNotifications\", true, \"specific\");\n let errorNotif = await this.resolveField(Notification, \"errorNotifications\", true, \"specific\");\n let passNotif = await this.resolveField(Notification, \"passNotifications\", true, \"specific\");\n }\n async saveA(env){\n if(lib.isLocalEnv(env)) return;\n return await this.createIfNotExist(env);\n }\n async saveB(env){\n if(!this.isGeneric){\n await this.resolve();\n }\n this.cleanup();\n if(lib.isLocalEnv(env)){\n log(chalk`Saving rule {green ${this.name}} to {blue ${lib.envName(env)}}.`)\n writeFileSync(this.localpath, JSON.stringify(this.data, null, 4));\n }else{\n await this.acclimatize(env);\n await this.uploadRemote(env);\n }\n }\n get immutable(){\n return false;\n }\n async createIfNotExist(env){\n write(chalk`First pass rule {green ${this.name}} to {green ${env}}: `);\n\n if(this.immutable){\n log(chalk`{magenta IMMUTABLE}. Nothing to do.`);\n return;\n }\n\n //First query the api to see if this already exists.\n let remote = await Rule.getByName(env, this.name);\n\n this.idMap = this.idMap || {};\n\n if(remote){\n this.idMap[env] = remote.id;\n log(chalk`exists ${remote.chalkPrint(false)}`);\n return;\n }\n\n //If it exists we can replace it\n write(\"create, \");\n let res = await lib.makeAPIRequest({\n env, path: `/workflowRules`, method: \"POST\",\n payload: {data: {attributes: {name: this.name}, type: \"workflowRules\"}},\n });\n this.idMap = this.idMap || {};\n this.idMap[env] = res.data.id;\n write(\"id \");\n log(this.idMap[env]);\n }\n\n async patchStrip(){\n delete this.data.attributes.createdAt;\n delete this.data.attributes.starred;\n delete this.data.attributes.updatedAt;\n\n // TEMP FIX FOR BUG IN SDVI\n if(this.relationships.passMetadata && this.relationships.passMetadata[0]){\n log(\"HAS PASS\");\n log(this.name);\n log(\"HAS PASS\");\n }\n delete this.relationships.passMetadata;\n\n if(this.relationships.errorMetadata && this.relationships.errorMetadata[0]){\n log(\"HAS PASS\");\n log(this.name);\n log(\"HAS PASS\");\n }\n delete this.relationships.errorMetadata;\n\n // This is commented out because it was fixed.\n //for(let key in this.relationships){\n //let relationship = this.relationships[key];\n //if(!relationship.data || relationship.data instanceof Array && !relationship.data[0]){\n //delete this.relationships[key];\n //}\n //}\n }\n\n async uploadRemote(env){\n write(chalk`Uploading rule {green ${this.name}} to {green ${env}}: `);\n\n if(this.immutable){\n log(chalk`{magenta IMMUTABLE}. Nothing to do.`);\n return;\n }\n\n if(this.idMap[env]){\n this.remote = env;\n\n await this.patchStrip();\n this.data.id = this.idMap[env];\n //If it exists we can replace it\n write(\"replace, \");\n let res = await lib.makeAPIRequest({\n env, path: `/workflowRules/${this.idMap[env]}`, method: \"PATCH\",\n payload: {data: this.data}, fullResponse: true,\n });\n\n log(chalk`response {yellow ${res.statusCode}}`);\n if(res.statusCode !== 200){\n log(res.body)\n log(JSON.stringify(this.data, null, 4));\n }\n }else{\n throw Error(\"Bad idmap!\");\n }\n }\n\n get localpath(){\n return join(configObject.repodir, this.subproject || \"\", \"silo-rules\", this.name + \".json\");\n }\n\n async resolve(){\n let preset = await this.resolveField(Preset, \"preset\", false);\n //log(preset);\n let pNext = await this.resolveField(Rule, \"passNext\", false);\n let eNext = await this.resolveField(Rule, \"errorNext\", false);\n let proType = await this.resolveField(Provider, \"providerType\", false);\n\n //log(\"Dynamic nexts\")\n let dynamicNexts = await this.resolveField(Rule, \"dynamicNexts\", true);\n //log(dynamicNexts);\n\n let enterNotif = await this.resolveField(Notification, \"enterNotifications\", true);\n let errorNotif = await this.resolveField(Notification, \"errorNotifications\", true);\n let passNotif = await this.resolveField(Notification, \"passNotifications\", true);\n\n //TODO Unsupported\n delete this.relationships[\"enterMetadata\"]\n delete this.relationships[\"errorMetadata\"]\n\n this.isGeneric = true;\n\n return {\n preset, proType,\n pNext, eNext,\n dynamicNexts,\n errorNotif, enterNotif, passNotif,\n };\n }\n\n chalkPrint(pad=true){\n let id = String(\"R-\" + (this.remote && this.remote + \"-\" + this.id || \"LOCAL\"))\n let sub = \"\";\n if(this.subproject){\n sub = chalk`{yellow ${this.subproject}}`;\n }\n if(pad) id = id.padStart(10);\n try{\n return chalk`{green ${id}}: ${sub}{blue ${this.name}}`;\n }catch(e){\n return this.data;\n }\n }\n}\n\ndefineAssoc(Rule, \"name\", \"data.attributes.name\");\ndefineAssoc(Rule, \"description\", \"data.attributes.description\");\ndefineAssoc(Rule, \"id\", \"data.id\");\ndefineAssoc(Rule, \"relationships\", \"data.relationships\");\ndefineAssoc(Rule, \"isGeneric\", \"meta.isGeneric\");\ndefineAssoc(Rule, \"remote\", \"meta.remote\");\ndefineAssoc(Rule, \"subproject\", \"meta.project\");\ndefineAssoc(Rule, \"idMap\", \"meta.idMap\");\nRule.endpoint = \"workflowRules\";\n\nexport default Rule;\n","import Rule from \"./rule.js\";\nimport Preset from \"./preset.js\";\nimport Provider from \"./providers.js\";\nimport Notification from \"./notification.js\";\nimport {Collection, lib} from \"./rally-tools.js\";\nimport {configObject} from \"./config.js\";\n\n\n//TODO\n//Move project into silo metadata\n//move autotest into silo metadata\n//\n\nexport default class SupplyChain{\n constructor(startingRule, stopRule){\n if(startingRule){\n this.startingRule = startingRule;\n this.stopRule = stopRule\n this.remote = startingRule.remote;\n }\n }\n async downloadPresetCode(objs = this.allPresets){\n log(\"Downloading code... \");\n await lib.keepalive(objs.arr.map(x => () => x.downloadCode()));\n }\n async calculate(){\n log(\"Getting rules... \");\n this.allRules = await Rule.getAll(this.remote);\n log(this.allRules.length);\n\n log(\"Getting presets... \");\n this.allPresets = await Preset.getAll(this.remote);\n log(this.allPresets.length);\n\n log(\"Getting providers... \");\n this.allProviders = await Provider.getAll(this.remote);\n log(this.allProviders.length);\n\n log(\"Getting notifications... \");\n this.allNotifications = await Notification.getAll(this.remote);\n log(this.allNotifications.length);\n\n if(!this.startingRule){\n this.rules = this.allRules;\n this.presets = this.allPresets;\n this.notifications = new Collection([]);\n\n await this.downloadPresetCode();\n return\n }else{\n await this.downloadPresetCode();\n }\n\n log(\"Done!\");\n\n //Now we have everything we need to find a whole supply chain\n\n write(\"Calculating Supply chain... \");\n log(this.startingRule.chalkPrint());\n\n let allRuleNames = this.allRules.arr.map(x => x.name).filter(x => x.length >= 4);\n let allPresetNames = this.allPresets.arr.map(x => x.name).filter(x => x.length >= 4);\n let allNotifNames = this.allNotifications.arr.map(x => x.name).filter(x => x.length >= 4);\n let requiredNotifications = new Set();\n\n let ruleQueue = [this.startingRule];\n let presetQueue = [];\n for(let currentRule of ruleQueue){\n if(currentRule === this.stopRule) continue;\n let {\n eNext, pNext, preset,\n passNotif, errorNotif, enterNotif\n } = await currentRule.resolve();\n\n\n passNotif .forEach(n => requiredNotifications.add(n));\n enterNotif.forEach(n => requiredNotifications.add(n));\n errorNotif.forEach(n => requiredNotifications.add(n));\n\n if(eNext && !ruleQueue.includes(eNext)) ruleQueue.push(eNext);\n if(pNext && !ruleQueue.includes(eNext)) ruleQueue.push(pNext);\n\n let neededPresets = preset.findStringsInCode(allPresetNames);\n neededPresets = neededPresets.map(x => this.allPresets.findByName(x));\n\n let neededRules = preset.findStringsInCode(allRuleNames);\n neededRules = neededRules.map(x => this.allRules.findByName(x));\n\n preset\n .findStringsInCode(allNotifNames)\n .map(str => this.allNotifications.findByName(str))\n .forEach(notif => requiredNotifications.add(notif));\n\n neededPresets.push(preset);\n\n for(let p of neededPresets) if(!presetQueue.includes(p)) presetQueue.push(p);\n for(let p of neededRules) if(!ruleQueue .includes(p)) ruleQueue .push(p);\n\n if(configObject.verbose){\n write(currentRule.chalkPrint(false));\n log(\":\");\n write(\" \");\n write(preset.chalkPrint(false));\n log(\":\");\n write(\" Pass Next: \"); if(pNext) write(pNext.chalkPrint(false)); else write(\"None\");\n log(\"\");\n write(\" Err Next: \"); if(eNext) write(eNext.chalkPrint(false)); else write(\"None\");\n log(\"\");\n log(\" Rules:\");\n\n for(let p of neededRules) log(\" \" + p.chalkPrint(true));\n\n log(\" Presets:\");\n for(let p of neededPresets) log(\" \" + p.chalkPrint(true));\n\n log(\"\\n\");\n }\n }\n\n log(\"Done!\")\n\n this.rules = new Collection(ruleQueue);\n this.presets = new Collection(presetQueue);\n requiredNotifications.delete(undefined);\n this.notifications = new Collection([...requiredNotifications]);\n }\n async log(){\n if(this.notifications.arr.length > 0){\n log(\"Required notifications: \");\n this.notifications.log();\n }\n\n if(this.rules.arr.length > 0){\n write(\"Required rules: \");\n log(this.rules.arr.length);\n this.rules.log();\n }\n\n if(this.presets.arr.length > 0){\n write(\"Required presets: \");\n log(this.presets.arr.length);\n this.presets.log();\n }\n\n if(configObject.rawOutput){\n return {presets: this.presets.arr, rules: this.rules.arr, notifications: this.notifications.arr};\n }\n }\n async syncTo(env){\n for(let preset of this.presets){\n try{\n await preset.save(env);\n }catch(e){log(e);}\n }\n if(this.rules.arr[0]){\n log(\"Starting create phase for rules\")\n for(let rule of this.rules){\n try{\n await rule.saveA(env);\n }catch(e){log(e);}\n }\n\n log(\"OK\")\n log(\"Starting link phase for rules\");\n Rule.removeCache(env);\n\n for(let rule of this.rules){\n try{\n await rule.saveB(env);\n }catch(e){log(e);}\n }\n }\n }\n}\n","import {cached, defineAssoc} from \"./decorators.js\";\nimport {lib, Collection, RallyBase} from \"./rally-tools.js\";\n\nclass User extends RallyBase{\n constructor({data, remote}){\n super();\n this.data = data;\n this.meta = {};\n this.remote = remote;\n }\n chalkPrint(pad=false){\n let id = String(\"U-\" + this.id)\n if(pad) id = id.padStart(7);\n return chalk`{green ${id}}: {blue ${this.name}}`;\n }\n}\n\ndefineAssoc(User, \"id\", \"data.id\");\ndefineAssoc(User, \"name\", \"data.attributes.name\");\ndefineAssoc(User, \"email\", \"data.attributes.email\");\ndefineAssoc(User, \"remote\", \"meta.remote\");\nUser.endpoint = \"users\"\n\nexport default User;\n","import {RallyBase, lib, AbortError, Collection} from \"./rally-tools.js\";\nimport {cached, defineAssoc} from \"./decorators.js\";\n\nclass Tag extends RallyBase{\n constructor({data, remote} = {}){\n super();\n\n this.meta = {};\n this.remote = remote\n this.data = data;\n\n //this.data.attributes.rallyConfiguration = undefined;\n //this.data.attributes.systemManaged = undefined;\n }\n chalkPrint(pad=true){\n let id = String(\"T-\" + this.remote + \"-\" + this.id)\n if(pad) id = id.padStart(10);\n\n let prefix = this.curated ? \"blue +\" : \"red -\";\n\n return chalk`{green ${id}}: {${prefix}${this.name}}`;\n }\n static async create(env, name, {notCurated} = {}){\n return new Tag({data: await lib.makeAPIRequest({\n env, path: `/${this.endpoint}`, method: \"POST\",\n payload: {\n data: {\n attributes: {\n name,\n curated: notCurated ? false : true,\n },\n type: \"tagNames\",\n }\n }\n }), remote: env});\n }\n}\n\ndefineAssoc(Tag, \"id\", \"data.id\");\ndefineAssoc(Tag, \"attributes\", \"data.attributes\");\ndefineAssoc(Tag, \"relationships\", \"data.relationships\");\ndefineAssoc(Tag, \"name\", \"data.attributes.name\");\ndefineAssoc(Tag, \"curated\", \"data.attributes.curated\");\ndefineAssoc(Tag, \"remote\", \"meta.remote\");\nTag.endpoint = \"tagNames\";\n\nexport default Tag;\n","require(\"source-map-support\").install();\n\nimport {lib} from \"./rally-tools.js\";\nimport {cached} from \"./decorators.js\";\n\nexport {default as SupplyChain} from \"./supply-chain.js\";\nexport {default as Preset} from \"./preset.js\";\nexport {default as Rule} from \"./rule.js\";\nexport {default as Provider} from \"./providers.js\";\nexport {default as Notification} from \"./notification.js\";\nexport {default as Asset} from \"./asset.js\";\nexport {default as User} from \"./user.js\";\nexport {default as Tag} from \"./tag.js\";\n\nexport * from \"./config.js\";\n\nexport * from \"./rally-tools.js\";\n\nexport const rallyFunctions = {\n async bestPagintation(){\n global.silentAPI = true;\n for(let i = 10; i <= 30; i+=5){\n console.time(\"test with \" + i);\n let dl = await lib.indexPathFast(\"DEV\", `/workflowRules?page=1p${i}`);\n console.timeEnd(\"test with \" + i);\n }\n },\n async uploadPresets(env, presets, createFunc = ()=>false){\n for(let preset of presets){\n await preset.uploadCodeToEnv(env, createFunc);\n }\n },\n //Dummy test access\n async testAccess(env){\n if(lib.isLocalEnv(env)){\n //TODO\n return true;\n }\n let result = await lib.makeAPIRequest({env, path: \"/providers?page=1p1\", fullResponse: true, timeout: 1000});\n return result.statusCode;\n },\n}\n","export default {\n SdviContentMover:`{\n \"tasks\": [\n {\n \"operation\": \"move\",\n \"source\": {\n \"labels\": [ \"MyLabel\" ],\n \"tags\": [ \"segmented\" ]\n \"storageSet\": [ \"*\", \"-OtherStorageBucket\" ],\n\n },\n \"destination\": {\n \"storage\": \"Archive\",\n \"newLabel\": \"myNewLabel\",\n \"overwrite\": \"always\"\n }\n }\n ]\n}`, SdviEvaluate: `'''\nname: {name}\n'''\n\n# code here`,\n};\n","import {configObject} from \"./config.js\";\nimport {join} from \"path\";\nimport Preset from \"./preset.js\";\nimport Rule from \"./rule.js\";\nexport const inquirer = importLazy(\"inquirer\");\nconst readdir = importLazy(\"recursive-readdir\");\n\nlet hasAutoCompletePrompt = false;\nexport function addAutoCompletePrompt(){\n if(hasAutoCompletePrompt) return\n hasAutoCompletePrompt = true;\n inquirer.registerPrompt(\"autocomplete\", require(\"inquirer-autocomplete-prompt\"));\n}\n\nexport async function $api(propArray){\n let q;\n q = await inquirer.prompt([{\n type: \"input\",\n name: \"company\",\n message: `What is your company?`,\n default: `discovery`,\n }]);\n\n let company = q.company;\n\n const defaults = {\n DEV: `https://${company}-dev.sdvi.com/api/v2`,\n UAT: `https://${company}-uat.sdvi.com/api/v2`,\n QA: `https://${company}-qa.sdvi.com/api/v2`,\n PROD: `https://${company}.sdvi.com/api/v2`,\n };\n\n if(propArray && propArray[1]){\n q = {envs: [propArray[1]]};\n }else{\n //Create a checkbox prompt to choose enviornments\n q = await inquirer.prompt([{\n type: \"checkbox\",\n name: \"envs\",\n message: `What enviornments would you like to configure?`,\n choices: Object.keys(defaults).map(name => ({name, checked:true})),\n }]);\n }\n\n //Each env should ask 2 for two things: The url and the key.\n let questions = q.envs.map(env => {\n let defaultKey = process.env[`rally_api_key_${env}`];\n if(configObject && configObject.api && configObject.api[env]){\n defaultKey = configObject.api[env].key;\n }\n\n return [{\n type: \"input\",\n name: `api.${env}.url`,\n message: `What is the api endpoint for ${env}?`,\n default: defaults[env],\n }, {\n type: \"input\",\n name: `api.${env}.key`,\n message: `What is your api key for ${env}?`,\n default: defaultKey,\n }];\n });\n\n //flatten and ask\n questions = [].concat(...questions);\n q = await inquirer.prompt(questions);\n if(propArray){\n q.api = {...configObject.api, ...q.api};\n }\n return q;\n}\nexport async function $chalk(propArray){\n return {chalk: await askQuestion(\"Would you like chalk enabled (Adds coloring)?\")};\n}\nexport async function $restrictUAT(propArray){\n return {restrictUAT: await askQuestion(\"Would you like to protect UAT?\")};\n}\nexport async function $repodir(propArray){\n return await inquirer.prompt([{\n type: \"input\",\n name: `repodir`,\n message: `Where is your rally repository?`,\n default: process.env[\"rally_repo_path\"],\n }]);\n}\n\nexport async function $appName(propArray){\n let defaultAppName = \"cmdline-\" + (process.env.USERNAME || process.env.LOGNAME);\n let project = await askInput(\"Application name?\", defaultAppName);\n if(project === \"none\" || project === \"-\" || project === \"\" || !project){\n project = null\n }\n return {appName: project};\n}\n\nexport async function $project(propArray){\n let project = await askInput(\"Subproject directory?\");\n if(project === \"none\" || project === \"-\" || project === \"\" || !project){\n project = null\n }\n return {project};\n}\n\nexport async function $defaultEnv(propArray){\n return await inquirer.prompt([{\n type: \"input\",\n name: `defaultEnv`,\n message: `Default enviornment?`,\n default: \"DEV\",\n }]);\n}\n\n//Internal usage/testing\nexport async function selectProvider(providers, autoDefault = false){\n addAutoCompletePrompt();\n let defaultProvider = providers.findByName(\"SdviEvaluate\");\n if(autoDefault){\n return defaultProvider;\n }else{\n let choices = providers.arr.map(x => ({\n name: x.chalkPrint(true),\n value: x,\n }))\n let q = await inquirer.prompt([{\n type: \"autocomplete\",\n name: \"provider\",\n default: defaultProvider,\n source: async (sofar, input) => {\n return choices.filter(x => input ? x.value.name.toLowerCase().includes(input.toLowerCase()) : true);\n },\n }]);\n return q.provider;\n }\n}\n\nexport async function selectLocal(path, typeName, Class){\n addAutoCompletePrompt();\n let basePath = configObject.repodir;\n let f = await readdir(basePath);\n let objs = f.filter(name => name.includes(path)).map(name => new Class({path: name}));\n let objsMap = objs.map(x => ({\n name: x.chalkPrint(true),\n value: x,\n }));\n let none = {\n name: (chalk` {red None}: {red None}`),\n value: null,\n };\n objsMap.unshift(none);\n\n let q = await inquirer.prompt([{\n type: \"autocomplete\",\n name: \"obj\",\n message: `What ${typeName} do you want?`,\n source: async (sofar, input) => {\n return objsMap.filter(x => input ? x.name.toLowerCase().includes(input.toLowerCase()) : true);\n },\n }]);\n return q.obj;\n}\n\nexport async function selectPreset(purpose = \"preset\"){\n return selectLocal(\"silo-presets\", purpose, Preset);\n}\nexport async function selectRule(purpose = \"rule\"){\n return selectLocal(\"silo-rules\", purpose, Rule);\n}\n\nexport async function askInput(question, def){\n return (await inquirer.prompt([{\n type: \"input\",\n name: \"ok\",\n message: question,\n default: def,\n }])).ok;\n}\n\nexport async function askQuestion(question){\n return (await inquirer.prompt([{\n type: \"confirm\",\n name: \"ok\",\n message: question,\n }])).ok;\n}\n","require(\"source-map-support\").install();\n\nimport argparse from \"minimist\";\nimport * as allIndexBundle from \"./index.js\"\nimport {\n rallyFunctions as funcs,\n Preset, Rule, SupplyChain, Provider, Asset, User, Tag,\n AbortError, UnconfiguredEnvError, Collection, APIError,\n} from \"./index.js\";\n\nimport {version as packageVersion} from \"../package.json\";\nimport {configFile, configObject, loadConfig} from \"./config.js\";\nimport {readFileSync, writeFileSync} from \"fs\";\n\nimport {helpText, arg, param, usage, helpEntries, spawn} from \"./decorators.js\";\n\nimport baseCode from \"./baseCode.js\";\nimport {sep as pathSeperator} from \"path\";\n\nimport moment from \"moment\";\n\nimport * as configHelpers from \"./config-create.js\";\nconst False = false; const True = true; const None = null;\n\nlet argv = argparse(process.argv.slice(2), {\n string: [\"file\", \"env\"],\n //boolean: [\"no-protect\"],\n boolean: [\"anon\"],\n default: {protect: true},\n alias: {\n f: \"file\", e: \"env\",\n }\n});\n\n//help menu helper\nfunction printHelp(help, short){\n let helpText = chalk`\n{white ${help.name}}: ${help.text}\n Usage: ${help.usage || \"<unknown>\"}\n`\n //Trim newlines\n helpText = helpText.substring(1, helpText.length-1);\n\n if(!short){\n for(let param of help.params || []){\n helpText += chalk`\\n {blue ${param.param}}: ${param.desc}`\n }\n for(let arg of help.args || []){\n helpText += chalk`\\n {blue ${arg.short}}, {blue ${arg.long}}: ${arg.desc}`\n }\n }\n\n return helpText;\n}\n\nasync function getFilesFromArgs(args){\n let lastArg = args._.shift()\n if(args.file){\n let files = args.file;\n if(typeof files === \"string\") files = [files];\n return files;\n }\n\n if(lastArg == \"-\"){\n log(\"Reading from stdin\");\n let getStdin = require(\"get-stdin\");\n let stdin = await getStdin();\n let files = stdin.split(\"\\n\");\n if(files[files.length - 1] === \"\") files.pop();\n return files;\n }else{\n args._.push(lastArg);\n }\n}\n\nlet presetsub = {\n async before(args){\n this.env = args.env;\n if(!this.env) throw new AbortError(\"No env supplied\");\n\n this.files = await getFilesFromArgs(args);\n },\n async $grab(args){\n if(!this.files){\n throw new AbortError(\"No files provided to grab (use --file argument)\");\n }\n\n log(chalk`Grabbing {green ${this.files.length}} preset(s) metadata from {green ${this.env}}.`);\n\n let presets = this.files.map(path => new Preset({path, remote: false}));\n for(let preset of presets){\n //TODO small refactor\n await preset.grabMetadata(this.env);\n await preset.saveLocalMetadata();\n\n if(args.full){\n let remo = await Preset.getByName(this.env, preset.name);\n await remo.resolve();\n await remo.downloadCode();\n await remo.saveLocalFile();\n }\n }\n },\n async $create(args){\n let provider, name, ext;\n if(args.provider){\n provider = {name: args.provider};\n ext = args.ext\n }else{\n provider = await configHelpers.selectProvider(await Provider.getAll(this.env));\n ext = (await provider.getEditorConfig()).fileExt;\n }\n if(args.name){\n name = args.name;\n }else{\n name = await configHelpers.askInput(\"Preset Name\", \"What is the preset name?\");\n }\n\n let preset = new Preset({subProject: configObject.project});\n\n preset.providerType = {name: provider.name};\n preset.isGeneric = true;\n preset.name = name;\n preset.ext = ext;\n if(baseCode[provider.name]){\n preset._code = baseCode[provider.name].replace(\"{name}\", name);\n }else{\n preset._code = \" \";\n }\n\n preset.saveLocalMetadata();\n preset.saveLocalFile();\n },\n async $list(args){\n log(\"Loading...\");\n let presets = await Preset.getAll(this.env);\n if(args.resolve){\n Provider.getAll(this.env);\n for(let preset of presets){\n let resolve = await preset.resolve(this.env);\n if(args.attach){\n let {proType} = resolve;\n proType.editorConfig.helpText = \"\";\n preset.meta = {\n ...preset.meta, proType\n };\n }\n }\n }\n if(configObject.rawOutput) return presets;\n log(chalk`{yellow ${presets.length}} presets on {green ${this.env}}.`);\n presets.arr.sort((a, b) => {\n return Number(a.attributes.updatedAt) - Number(b.attributes.updatedAt)\n });\n for(let preset of presets){\n log(preset.chalkPrint());\n }\n },\n async $upload(args){\n if(!this.files){\n throw new AbortError(\"No files provided to upload (use --file argument)\");\n }\n\n log(chalk`Uploading {green ${this.files.length}} preset(s) to {green ${this.env}}.`);\n\n let presets = this.files.map(path => new Preset({path, remote: false}));\n await funcs.uploadPresets(this.env, presets);\n },\n async $diff(args){\n let file = this.files[0];\n if(!this.files){\n throw new AbortError(\"No files provided to diff (use --file argument)\");\n }\n\n let preset = new Preset({path: file, remote: false});\n if(!preset.name){\n throw new AbortError(chalk`No preset header found. Cannot get name.`);\n }\n let preset2 = await Preset.getByName(this.env, preset.name);\n if(!preset2){\n throw new AbortError(chalk`No preset found with name {red ${preset.name}} on {blue ${this.env}}`);\n }\n await preset2.downloadCode();\n\n let tempfile = require(\"tempy\").file;\n let temp = tempfile({extension: `${this.env}.${preset.ext}`});\n writeFileSync(temp, preset2.code);\n\n let ptr = `${file},${temp}`;\n\n\n //raw output returns \"file1\" \"file2\"\n if(configObject.rawOutput){\n if(args[\"only-new\"]) return temp;\n else return ptr;\n }\n\n //standard diff\n argv.command = argv.command || \"diff\";\n await spawn(argv.command, [file, temp], {stdio: \"inherit\"});\n },\n async unknown(arg, args){\n log(chalk`Unknown action {red ${arg}} try '{white rally help preset}'`);\n },\n}\n\nlet rulesub = {\n async before(args){\n this.env = args.env;\n if(!this.env) throw new AbortError(\"No env supplied\");\n },\n async $list(args){\n log(\"Loading...\");\n let rules = await Rule.getAll(this.env);\n if(configObject.rawOutput) return rules;\n\n log(chalk`{yellow ${rules.length}} rules on {green ${this.env}}.`);\n rules.arr.sort((a, b) => {\n return Number(a.data.attributes.updatedAt) - Number(b.data.attributes.updatedAt)\n });\n for(let rule of rules) log(rule.chalkPrint());\n },\n async $create(args){\n let preset = await configHelpers.selectPreset();\n let passNext = await configHelpers.selectRule(\"'On Exit OK'\");\n let errorNext = await configHelpers.selectRule(\"'On Exit Error'\");\n let name = await configHelpers.askInput(\"Rule Name\", \"What is the rule name?\");\n name = name.replace(\"@\", preset.name);\n let desc = await configHelpers.askInput(\"Description\", \"Enter a description.\");\n\n let dynamicNexts = [];\n let next;\n while(next = await configHelpers.selectRule(\"dynamic next\")){\n let name = await configHelpers.askInput(\"Key\", \"Key name for dynamic next\");\n dynamicNexts.push({\n meta: {\n transition: name,\n },\n type: \"workflowRules\",\n name: next.name,\n });\n }\n\n let rule = new Rule({subProject: configObject.project});\n rule.name = name;\n rule.description = desc;\n rule.relationships.preset = {data: {name: preset.name, type: \"presets\"}}\n if(errorNext) rule.relationships.errorNext = {data: {name: errorNext.name, type: \"workflowRules\"}}\n if(passNext) rule.relationships.passNext = {data: {name: passNext.name, type: \"workflowRules\"}}\n if(dynamicNexts[0]){\n rule.relationships.dynamicNexts = {\n data: dynamicNexts\n };\n }\n\n rule.saveB()\n },\n async unknown(arg, args){\n log(chalk`Unknown action {red ${arg}} try '{white rally help rule}'`);\n },\n}\n\nlet jupytersub = {\n async before(args){\n this.input = args._.shift() || \"main.ipynb\";\n this.output = args._.shift() || \"main.py\";\n },\n async $build(args){\n let cmd = `jupyter nbconvert --to python ${this.input} --TagRemovePreprocessor.remove_cell_tags={\\\"remove_cell\\\"} --output ${this.output} --TemplateExporter.exclude_markdown=True --TemplateExporter.exclude_input_prompt=True --TemplateExporter.exclude_output_prompt=True`.split(\" \");\n log(chalk`Compiling GCR file {green ${this.input}} into {green ${this.output}} using jupyter...`);\n\n try{\n let {timestr} = await spawn(cmd[0], cmd.slice(1));\n log(chalk`Complete in ~{green.bold ${timestr}}.`);\n }catch(e){\n if(e.code !== \"ENOENT\") throw e;\n log(chalk`Cannot run the build command. Make sure that you have jupyter notebook installed.\\n{green pip install jupyter}`);\n return;\n }\n },\n}\n\nasync function categorizeString(str, defaultSubproject=undefined){\n str = str.trim();\n if(str.startsWith('\"')){\n str = str.slice(1, -1);\n }\n let match\n if(match = /^(\\w)-(\\w{1,10})-(\\d{1,10}):/.exec(str)){\n if(match[1] === \"P\"){\n let ret = await Preset.getById(match[2], match[3]);\n //TODO modify for subproject a bit\n return ret;\n }else if(match[1] === \"R\"){\n return await Rule.getById(match[2], match[3]);\n }else{\n return null;\n }\n }else if(match = /^([\\w \\/\\\\\\-_]*)[\\/\\\\]?silo\\-(\\w+)[\\/\\\\]/.exec(str)){\n try{\n switch(match[2]){\n case \"presets\": return new Preset({path: str, subProject: match[1]});\n case \"rules\": return new Rule({path: str, subProject: match[1]});\n case \"metadata\": return await Preset.fromMetadata(str, match[1]);\n }\n }catch(e){\n log(e);\n }\n }else{\n return null;\n }\n}\n\nlet tagsub = {\n async before(args){\n this.env = args.env;\n if(!this.env) throw new AbortError(\"No env supplied\");\n },\n async $list(args){\n log(\"Loading...\");\n let tags = await Tag.getAll(this.env);\n if(configObject.rawOutput) return tags;\n\n log(chalk`{yellow ${tags.length}} tags on {green ${this.env}}.`);\n tags.arr.sort((a, b) => {\n return Number(a.data.attributes.updatedAt) - Number(b.data.attributes.updatedAt)\n });\n for(let tag of tags) log(tag.chalkPrint());\n },\n async $create(args){\n return Tag.create(this.env, \"testTag\");\n }\n};\n\nlet supplysub = {\n async before(args){\n this.env = args.env;\n if(!this.env) throw new AbortError(\"No env supplied\");\n this.files = await getFilesFromArgs(args);\n },\n\n //Calculate a supply chain based on a starting rule at the top of the stack\n async $calc(args){\n let name = args._.shift();\n let stopName = args._.shift();\n if(!name){\n throw new AbortError(\"No starting rule or @ supplied\");\n }\n\n if(name === \"@\"){\n log(chalk`Silo clone started`);\n this.chain = new SupplyChain();\n this.chain.remote = args.env;\n }else{\n let rules = await Rule.getAll(this.env);\n let stop, start;\n start = rules.findByNameContains(name);\n if(stopName) stop = rules.findByNameContains(stopName);\n\n if(!start){\n throw new AbortError(chalk`No starting rule found by name {blue ${name}}`);\n }\n log(chalk`Analzying supply chain: ${start.chalkPrint(false)} - ${stop ? stop.chalkPrint(false) : \"(open)\"}`);\n this.chain = new SupplyChain(start, stop);\n }\n\n await this.chain.calculate();\n return await this.postAction(args);\n },\n async postAction(args){\n //Now that we ahve a supply chain object, do something with it\n if(args[\"to\"]){\n this.chain.log();\n if(this.chain.presets.arr[0]){\n await this.chain.downloadPresetCode(this.chain.presets);\n log(\"Done\");\n }\n\n if(Array.isArray(args[\"to\"])){\n for(let to of args[\"to\"]){\n await this.chain.syncTo(to);\n }\n }else{\n await this.chain.syncTo(args[\"to\"]);\n }\n }else if(args[\"diff\"]){\n //Very basic diff\n let env = args[\"diff\"];\n await Promise.all(this.chain.presets.arr.map(obj => obj.downloadCode()));\n await Promise.all(this.chain.presets.arr.map(obj => obj.resolve()));\n\n let otherPresets = await Promise.all(this.chain.presets.arr.map(obj => Preset.getByName(env, obj.name)));\n otherPresets = new Collection(otherPresets.filter(x => x));\n await Promise.all(otherPresets.arr.map(obj => obj.downloadCode()));\n await Promise.all(otherPresets.arr.map(obj => obj.resolve()));\n\n const printPresets = (preset, otherPreset) => {\n log(preset.chalkPrint(true));\n if(otherPreset.name){\n log(otherPreset.chalkPrint(true));\n }else{\n log(chalk`{red (None)}`);\n }\n }\n\n for(let preset of this.chain.presets){\n let otherPreset = otherPresets.arr.find(x => x.name === preset.name) || {};\n\n if(preset.code === otherPreset.code){\n if(!args[\"ignore-same\"]){\n printPresets(preset, otherPreset);\n log(\"Code Same\");\n }\n }else{\n printPresets(preset, otherPreset);\n if(args[\"ignore-same\"]){\n log(\"-------\");\n }else{\n log(\"Code Different\");\n }\n }\n }\n\n }else{\n return await this.chain.log();\n }\n\n },\n async $make(args){\n let set = new Set();\n let hints = args.hint ? (Array.isArray(args.hint) ? args.hint : [args.hint]) : []\n //TODO modify for better hinting, and add this elsewhere\n for(let hint of hints){\n if(hint === \"presets-uat\"){\n log(\"got hint\");\n await Preset.getAll(\"UAT\");\n }\n }\n\n for(let file of this.files){\n set.add(await categorizeString(file));\n }\n let files = [...set];\n files = files.filter(f => f && !f.missing);\n this.chain = new SupplyChain();\n\n this.chain.rules = new Collection(files.filter(f => f instanceof Rule));\n this.chain.presets = new Collection(files.filter(f => f instanceof Preset));\n this.chain.notifications = new Collection([]);\n\n return await this.postAction(args);\n },\n async unknown(arg, args){\n log(chalk`Unknown action {red ${arg}} try '{white rally help supply}'`);\n },\n}\n\nfunction subCommand(object){\n object = {\n before(){}, after(){}, unknown(){},\n ...object\n };\n return async function(args){\n //Grab the next arg on the stack, find a function tied to it, and run\n let arg = args._.shift();\n let key = \"$\" + arg;\n let ret;\n if(object[key]){\n await object.before(args);\n ret = await object[key](args);\n await object.after(args);\n }else{\n if(arg === undefined) arg = \"(None)\";\n object.unknown(arg, args);\n }\n return ret;\n }\n}\n\nlet cli = {\n @helpText(`Display the help menu`)\n @usage(`rally help [subhelp]`)\n @param(\"subhelp\", \"The name of the command to see help for\")\n async help(args){\n let arg = args._.shift();\n if(arg){\n let help = helpEntries[arg];\n if(!help){\n log(chalk`No help found for '{red ${arg}}'`);\n }else{\n log(printHelp(helpEntries[arg]));\n }\n }else{\n for(let helpArg in helpEntries){\n log(printHelp(helpEntries[helpArg], true));\n }\n }\n },\n\n @helpText(\"Rally tools jupyter interface. Requires jupyter to be installed.\")\n @usage(\"rally jupyter build [in] [out]\")\n @param(\"in/out\", \"input and output file for jupyter. By default main.ipyrb and main.py\")\n async jupyter(args){\n return subCommand(jupytersub)(args);\n },\n\n //@helpText(`Print input args, for debugging`)\n async printArgs(args){\n log(args);\n },\n\n @helpText(`Preset related actions`)\n @usage(`rally preset [action] --env <enviornment> --file [file1] --file [file2] ...`)\n @param(\"action\", \"The action to perform. Can be upload, diff, list\")\n @arg(\"-e\", \"--env\", \"The enviornment you wish to perform the action on\")\n @arg(\"-f\", \"--file\", \"A file to act on\")\n @arg(\"~\", \"--command\", \"If the action is diff, this is the command to run instead of diff\")\n async preset(args){\n return subCommand(presetsub)(args);\n },\n\n @helpText(`Rule related actions`)\n @usage(`rally rule [action] --env [enviornment]`)\n @param(\"action\", \"The action to perform. Only list is supported right now\")\n @arg(\"-e\", \"--env\", \"The enviornment you wish to perform the action on\")\n async rule(args){\n return subCommand(rulesub)(args);\n },\n\n @helpText(`supply chain related actions`)\n @usage(`rally supply [action] [identifier] --env [enviornment]`)\n @param(\"action\", \"The action to perform. Can be calc.\")\n @param(\"identifier\", \"If the action is calc, then this identifier should be the first rule in the chain.\")\n @arg(\"-e\", \"--env\", \"The enviornment you wish to perform the action on\")\n async supply(args){\n return subCommand(supplysub)(args);\n },\n\n @helpText(`tags stuff`)\n @usage(`rally tags [action]`)\n @param(\"action\", \"The action to perform. Can be list or create.\")\n @arg(\"-e\", \"--env\", \"The enviornment you wish to perform the action on\")\n async tag(args){\n return subCommand(tagsub)(args);\n },\n\n @helpText(`List all available providers, or find one by name/id`)\n @usage(`rally providers [identifier] --env [env] --raw`)\n @param(\"identifier\", \"Either the name or id of the provider\")\n @arg(\"-e\", \"--env\", \"The enviornment you wish to perform the action on\")\n @arg(\"~\", \"--raw\", \"Raw output of command. If [identifier] is given, then print editorConfig too\")\n async providers(args){\n let env = args.env;\n if(!env) return errorLog(\"No env supplied.\");\n let ident = args._.shift();\n\n let providers = await Provider.getAll(env);\n\n if(ident){\n let pro = providers.arr.find(x => x.id == ident || x.name.includes(ident));\n if(!pro){\n log(chalk`Couldn't find provider by {green ${ident}}`);\n }else{\n log(pro.chalkPrint(false));\n let econfig = await pro.getEditorConfig();\n if(args.raw){\n return pro;\n }else{\n if(econfig.helpText.length > 100){\n econfig.helpText = \"<too long to display>\";\n }\n if(econfig.completions.length > 5){\n econfig.completions = \"<too long to display>\";\n }\n log(econfig);\n }\n }\n }else{\n if(args.raw) return providers;\n for(let pro of providers) log(pro.chalkPrint());\n }\n },\n\n @helpText(`Change config for rally tools`)\n @usage(\"rally config [key] --set [value] --raw\")\n @param(\"key\", chalk`Key you want to edit. For example, {green chalk} or {green api.DEV}`)\n @arg(\"~\", \"--set\", \"If this value is given, no interactive prompt will launch and the config option will change.\")\n @arg(\"~\", \"--raw\", \"Raw output of json config\")\n async config(args){\n let prop = args._.shift();\n let propArray = prop && prop.split(\".\");\n\n //if(!await configHelpers.askQuestion(`Would you like to create a new config file in ${configFile}`)) return;\n let newConfigObject;\n\n if(!prop){\n if(configObject.rawOutput) return configObject;\n log(\"Creating new config\");\n newConfigObject = {\n ...configObject,\n };\n for(let helperName in configHelpers){\n if(helperName.startsWith(\"$\")){\n newConfigObject = {\n ...newConfigObject,\n ...(await configHelpers[helperName](false))\n }\n }\n }\n }else{\n log(chalk`Editing option {green ${prop}}`);\n if(args.set){\n newConfigObject = {\n ...configObject,\n [prop]: args.set,\n };\n }else{\n let ident = \"$\" + propArray[0];\n\n if(configHelpers[ident]){\n newConfigObject = {\n ...configObject,\n ...(await configHelpers[ident](propArray))\n };\n }else{\n log(chalk`No helper for {red ${ident}}`);\n return;\n }\n }\n }\n\n newConfigObject.hasConfig = true;\n\n //Create readable json and make sure the user is ok with it\n let newConfig = JSON.stringify(newConfigObject, null, 4);\n log(newConfig);\n\n //-y or --set will make this not prompt\n if(!args.y && !args.set && !await configHelpers.askQuestion(\"Write this config to disk?\")) return;\n writeFileSync(configFile, newConfig, {mode: 0o600});\n log(chalk`Created file {green ${configFile}}.`);\n },\n\n @helpText(`create/modify asset`)\n @usage(\"rally asset [action] [action...]\")\n @param(\"action\", chalk`Options are create, delete, launch, addfile. You can supply multiple actions to chain them`)\n @arg(`-i`, `--id`, chalk`MOVIE_ID of asset to select`)\n @arg(`-n`, `--name`, chalk`MOVIE_NAME of asset. with {white create}, '{white #}' will be replaced with a uuid. Default is '{white TEST_#}'`)\n @arg(`-j`, `--job-name`, chalk`Job name to start (used with launch)`)\n @arg(`~`, `--init-data`, chalk`Init data to use when launching job. can be string, or {white @path/to/file} for a file`)\n @arg(`~`, `--file-label`, chalk`File label (used with addfile)`)\n @arg(`~`, `--file-uri`, chalk`File s3 uri. Can use multiple uri's for the same label (used with addfile)`)\n async asset(args){\n function uuid(args){\n const digits = 16;\n return String(Math.floor(Math.random() * Math.pow(10, digits))).padStart(digits, \"0\");\n }\n\n let name = args.name || `TEST_#`;\n let env = args.env;\n\n let asset;\n let arg = args._.shift()\n if(!arg){\n throw new AbortError(chalk`Missing arguments: see {white 'rally help asset'}`);\n }\n\n if(args.anon){\n args._.unshift(arg);\n }else if(arg == \"create\"){\n name = name.replace(\"#\", uuid());\n asset = await Asset.createNew(name, env);\n }else{\n args._.unshift(arg);\n if(args.id){\n asset = Asset.lite(args.id, env);\n }else{\n asset = await Asset.getByName(env, args.name);\n }\n }\n\n if(!asset && !args.anon){\n throw new AbortError(\"No asset found/created\");\n }\n let launchArg = 0;\n let fileArg = 0;\n\n let arrayify = (obj, i) => Array.isArray(obj) ? obj[i] : (i == 0 ? obj : undefined);\n\n while(arg = args._.shift()){\n if(arg === \"launch\"){\n let initData = arrayify(args[\"init-data\"], launchArg);\n if(initData && initData.startsWith(\"@\")){\n log(chalk`Reading init data from {white ${initData.slice(1)}}`);\n initData = readFileSync(initData.slice(1), \"utf-8\");\n }\n\n let jobName = arrayify(args[\"job-name\"], launchArg);\n let p = await Rule.getByName(env, jobName);\n if(!p){\n throw new AbortError(`Cannot launch job ${jobName}, does not exist (?)`);\n }else{\n log(chalk`Launching ${p.chalkPrint(false)} on ${asset ? asset.chalkPrint(false) : \"(None)\"}`);\n }\n\n if(asset){\n await asset.startWorkflow(jobName, initData)\n }else{\n await Asset.startAnonWorkflow(env, jobName, initData)\n }\n launchArg++;\n }else if(arg === \"addfile\"){\n let label = arrayify(args[\"file-label\"], fileArg)\n let uri = arrayify(args[\"file-uri\"], fileArg)\n if(label === undefined || !uri){\n throw new AbortError(\"Number of file-label and file-uri does not match\");\n }\n await asset.addFile(label, uri);\n log(chalk`Added file ${label}`);\n fileArg++;\n }else if(arg === \"delete\"){\n await asset.delete();\n }else if(arg === \"create\"){\n throw new AbortError(`Cannot have more than 1 create/get per asset call`);\n }else if(arg === \"show\"){\n log(asset);\n }\n }\n if(configObject.rawOutput) return asset;\n },\n\n async checkSegments(args){\n let asset = args._.shift()\n let res = await allIndexBundle.lib.makeAPIRequest({\n env: args.env, path: `/movies/${asset}/metadata/Metadata`,\n });\n let segments = res.data.attributes.metadata.userMetaData.segments.segments;\n\n let r = segments.reduce((lastSegment, val, ind) => {\n let curSegment = val.startTime;\n if(curSegment < lastSegment){\n log(\"bad segment \" + (ind + 1))\n }\n return val.endTime\n }, \"00:00:00:00\");\n },\n\n async listAssets(args, tag){\n let req = await allIndexBundle.lib.indexPathFast({\n env: args.env, path: \"/assets\",\n qs: {\n noRelationships: true,\n sort: \"id\",\n },\n chunksize: 30,\n });\n for(let asset of req){\n log(asset.id);\n }\n\n return req;\n },\n\n async listSegments(args){\n let f = JSON.parse(readFileSync(args.file, \"utf-8\"));\n\n for(let asset of f){\n let r = await allIndexBundle.lib.makeAPIRequest({\n env: args.env, path: `/movies/${asset.id}/metadata/Metadata`,\n });\n\n let segs = r.data.attributes.metadata.userMetaData?.segments?.segments;\n if(segs && segs.length > 1){\n log(asset.id);\n log(asset.name);\n }\n }\n },\n async test2(args){\n let wfr = await allIndexBundle.lib.indexPath({\n env: args.env, path: \"/workflowRuleMetadata\",\n });\n log(wfr);\n\n for(let wfrm of wfr){\n try{\n wfrm.id = undefined;\n wfrm.links = undefined;\n log(wfrm);\n let req = await allIndexBundle.lib.makeAPIRequest({\n env: \"DEV\", path: \"/workflowRuleMetadata\",\n method: \"POST\",\n payload: {data: wfrm},\n })\n }catch(e){\n log(\"caught\");\n }\n //break;\n }\n },\n\n async test3(args){\n let wfr = await allIndexBundle.lib.indexPath({\n env: args.env, path: \"/workflowRuleMetadata\",\n });\n log(wfr);\n\n for(let wfrm of wfr){\n try{\n wfrm.id = undefined;\n wfrm.links = undefined;\n log(wfrm);\n let req = await allIndexBundle.lib.makeAPIRequest({\n env: \"DEV\", path: \"/workflowRuleMetadata\",\n method: \"POST\",\n payload: {data: wfrm},\n })\n }catch(e){\n log(\"caught\");\n }\n //break;\n }\n },\n\n sleep(time = 1000){\n return new Promise(resolve => setTimeout(resolve, time));\n },\n\n async audit(args){\n let supportedAudits = [\"presets\", \"rule\", \"other\"];\n await configHelpers.addAutoCompletePrompt();\n let q = await configHelpers.inquirer.prompt([{\n type: \"autocomplete\", name: \"obj\",\n message: `What audit do you want?`,\n source: async (sofar, input) => {\n return supportedAudits.filter(x => input ? x.includes(input.toLowerCase()) : true);\n },\n }]);\n let choice = q.obj;\n let resourceId = undefined\n let filterFunc = _=>_;\n if(choice === \"presets\"){\n let preset = await configHelpers.selectPreset();\n let remote = await Preset.getByName(args.env, preset.name);\n if(!remote) throw new AbortError(\"Could not find this item on remote env\");\n filterFunc = ev => ev.resource == \"Preset\";\n resourceId = remote.id;\n }else if(choice === \"rule\"){\n let preset = await configHelpers.selectRule();\n let remote = await Rule.getByName(args.env, preset.name);\n if(!remote) throw new AbortError(\"Could not find this item on remote env\");\n filterFunc = ev => ev.resource == \"Rule\";\n resourceId = remote.id;\n }else{\n resourceId = await configHelpers.askInput(null, \"What resourceID?\");\n }\n\n log(chalk`Resource ID on {blue ${args.env}} is {yellow ${resourceId}}`);\n log(`Loading audits (this might take a while)`);\n const numRows = 100;\n let r = await allIndexBundle.lib.makeAPIRequest({\n env: args.env,\n path: `/v1.0/audit?perPage=${numRows}&count=${numRows}&filter=%7B%22resourceId%22%3A%22${resourceId}%22%7D&autoload=false&pageNum=1&include=`,\n timeout: 180000,\n });\n r.data = r.data.filter(filterFunc);\n\n log(\"Data recieved, parsing users\");\n\n for(let event of r.data){\n let uid = event?.correlation?.userId;\n if(!uid) continue;\n try{\n event.user = await User.getById(args.env, uid);\n }catch(e){\n event.user = {name: \"????\"};\n }\n }\n\n if(args.raw) return r.data;\n let evCounter = 0;\n for(let event of r.data){\n let evtime = moment(event.createdAt);\n let date = evtime.format(\"ddd YYYY/MM/DD hh:mm:ssa\");\n let timedist = evtime.fromNow();\n log(chalk`${date} {yellow ${timedist}} {green ${event.user?.name}} ${event.event}`);\n\n if(++evCounter >= 30) break;\n }\n },\n\n async audit2(args){\n const numRows = 1000\n let r = await allIndexBundle.lib.makeAPIRequest({\n env: args.env,\n //path: `/v1.0/audit?perPage=${numRows}&count=${numRows}&autoload=false&pageNum=1&include=`,\n path: `/v1.0/audit?perPage=${numRows}&count=${numRows}&filter=%7B%22correlation.userId%22%3A%5B%22164%22%5D%7D&autoload=false&pageNum=1&include=`,\n timeout: 60000,\n });\n for(let event of r.data){\n log(event.event);\n }\n },\n\n async findIDs(args){\n let files = await getFilesFromArgs(args);\n for(let file of files){\n let preset = await Preset.getByName(args.env, file);\n await preset.resolve();\n log(`silo-presets/${file}.${preset.ext}`);\n }\n },\n\n async getAssets(env, name){\n if(!this.callid) this.callid = 0;\n this.callid++;\n let callid = this.callid;\n\n await this.sleep(500);\n\n if(callid != this.callid) return this.lastResult || [];\n\n let req = await allIndexBundle.lib.makeAPIRequest({\n env, path: `/assets`,\n qs: name ? {filter: `nameContains=${name}`} : undefined,\n })\n this.lastCall = Date.now();\n\n return this.lastResult = req.data;\n },\n\n async content(args){\n configHelpers.addAutoCompletePrompt();\n let q = await configHelpers.inquirer.prompt([{\n type: \"autocomplete\",\n name: \"what\",\n message: `What asset do you want?`,\n source: async (sofar, input) => {\n let assets = await this.getAssets(args.env, input);\n assets = assets.map(x => new Asset({data: x, remote: args.env}));\n return assets.map(x => ({\n name: x.chalkPrint(true) + \": \" + x.data.links.self.replace(\"/api/v2/assets/\", \"/content/\"),\n value: x,\n }));\n },\n }]);\n },\n\n async [\"@\"](args){\n args._.unshift(\"-\");\n args._.unshift(\"make\");\n return this.supply(args);\n },\n\n async test(args){\n let asset = await Asset.getByName(\"UAT\", args.name);\n log(asset);\n },\n\n //Used to test startup and teardown speed.\n noop(){\n return true;\n },\n};\nasync function unknownCommand(cmd){\n log(chalk`Unknown command {red ${cmd}}.`);\n}\n\nasync function noCommand(){\n write(chalk`\nRally Tools {yellow v${packageVersion} (alpha)} CLI\nby John Schmidt <John_Schmidt@discovery.com>\n`);\n\n //Prompt users to setup one time config.\n if(!configObject.hasConfig){\n write(chalk`\nIt looks like you haven't setup the config yet. Please run '{green rally config}'.\n`);\n return;\n }\n\n //API Access tests\n for(let env of [\"LOCAL\", \"DEV\", \"UAT\", \"QA\", \"PROD\"]){\n //Test access. Returns HTTP response code\n let resultStr;\n try{\n let result = await funcs.testAccess(env);\n\n //Create a colored display and response\n resultStr = chalk`{yellow ${result} <unknown>}`;\n if(result === 200) resultStr = chalk`{green 200 OK}`;\n else if(result === 401) resultStr = chalk`{red 401 No Access}`;\n else if(result >= 500) resultStr = chalk`{yellow ${result} API Down?}`;\n else if(result === true) resultStr = chalk`{green OK}`;\n else if(result === false) resultStr = chalk`{red BAD}`;\n }catch(e){\n if(e instanceof UnconfiguredEnvError){\n resultStr = chalk`{yellow Unconfigured}`;\n }else if(e instanceof APIError){\n if(!e.response.body){\n resultStr = chalk`{red Timeout (?)}`;\n }\n }else if(e.name == \"RequestError\"){\n resultStr = chalk`{red Low level error (check internet): ${e.error.errno}}`;\n }else{\n throw e;\n }\n }\n\n log(chalk` ${env}: ${resultStr}`);\n }\n}\n\nasync function $main(){\n //Supply --config to load a different config file\n if(argv.config) loadConfig(argv.config);\n\n // First we need to decide if the user wants color or not. If they do want\n // color, we need to make sure we use the right mode\n chalk.enabled = configObject.hasConfig ? configObject.chalk : true;\n if(chalk.level === 0 || !chalk.enabled){\n let force = argv[\"force-color\"];\n if(force){\n chalk.enabled = true;\n if(force === true && chalk.level === 0){\n chalk.level = 1;\n }else if(Number(force)){\n chalk.level = Number(force);\n }\n }\n }\n\n //This flag being true allows you to modify UAT and PROD\n if(!argv[\"protect\"]){\n configObject.dangerModify = true;\n }\n\n //This enables raw output for some functions\n if(argv[\"raw\"]){\n configObject.rawOutput = true;\n global.log = ()=>{};\n global.errorLog = ()=>{};\n global.write = ()=>{};\n }\n\n if(argv[\"ignore-missing\"]){\n configObject.ignoreMissing = true;\n }\n\n //Default enviornment should normally be from config, but it can be\n //overridden by the -e/--env flag\n if(configObject.defaultEnv){\n argv.env = argv.env || configObject.defaultEnv;\n }\n\n //Enable verbose logging in some places.\n if(argv[\"vverbose\"]){\n configObject.verbose = argv[\"vverbose\"];\n configObject.vverbose = true;\n }else if(argv[\"verbose\"]){\n configObject.verbose = argv[\"verbose\"]\n }else if(argv[\"vvverbose\"]){\n configObject.verbose = true;\n configObject.vverbose = true;\n configObject.vvverbose = true;\n }\n\n //copy argument array to new object to allow modification\n argv._old = argv._.slice();\n\n //Take first argument after `node bundle.js`\n //If there is no argument, display the default version info and API access.\n let func = argv._.shift();\n if(func){\n if(!cli[func]) return await unknownCommand(func);\n try{\n //Call the cli function\n let ret = await cli[func](argv);\n if(ret){\n write(chalk.white(\"CLI returned: \"));\n if(ret instanceof Collection) ret = ret.arr;\n\n //Directly use console.log so that --raw works as intended.\n if(typeof ret === \"object\"){\n console.log(JSON.stringify(ret, null, 4));\n }else{\n console.log(ret);\n }\n }\n }catch(e){\n if(e instanceof AbortError){\n log(chalk`{red CLI Aborted}: ${e.message}`);\n }else{\n throw e;\n }\n }\n }else{\n await noCommand();\n }\n}\n\nasync function main(...args){\n //Catch all for errors to avoid ugly default node promise catcher\n try{\n await $main(...args);\n }catch(e){\n errorLog(e.stack);\n }\n}\n\n// If this is an imported module, then we should exec the cli interface.\n// Oterwise just export everything.\nif(require.main === module){\n main();\n}else{\n module.exports = allIndexBundle;\n}\n"],"names":["configFile","homedir","configObject","loadConfig","file","hasConfig","json","readFileSync","JSON","parse","e","code","setConfig","obj","helpEntries","helpEntry","name","helpText","text","func","arg","long","short","desc","args","unshift","param","params","usage","replace","chalk","deepAccess","path","o","key","defineAssoc","classname","shortname","split","lastKey","pop","Object","defineProperty","prototype","get","set","val","spawn","options","Promise","resolve","reject","start","performance","now","stdout","stderr","cp","cp_spawn","on","chunk","write","end","time","timestr","exitCode","rp","importLazy","global","log","console","process","elog","ewrite","errorLog","map","red","lib","makeAPIRequest","env","path_full","fullPath","payload","body","method","qs","headers","fullResponse","timeout","config","api","UnconfiguredEnvError","dangerModify","restrictUAT","ProtectedEnvError","rally_api_key","rally_api","url","startsWith","stringify","fullHeaders","Accept","appName","vvverbose","requestOptions","uri","auth","bearer","simple","resolveWithFullResponse","response","vverbose","request","href","cause","APIError","includes","statusCode","contentType","isJSONResponse","AbortError","indexPath","all","opts","numPages","pageSize","links","last","data","next","observe","str","exec","slice","arrayChunk","array","chunkSize","newArr","i","length","push","doPromises","promises","result","cb","promise","res","clearProgress","size","repeat","drawProgress","max","columns","pct","Number","numFilled","Math","floor","numEmpty","keepalive","inputData","chunksize","_","total","createPromise","ret","values","finished","threads","range","whichThread","currentPromise","undefined","indexPathFast","initOpts","page","baselink","first","linkToPage","allResults","limit","item","isLocalEnv","envName","Error","constructor","message","captureStackTrace","Collection","arr","Symbol","iterator","findById","id","find","x","findByName","findByNameContains","d","chalkPrint","RallyBase","handleCaching","cache","isLoaded","hasLoadedAll","getById","remote","metastring","endpoint","included","getByName","filter","getAllPreCollect","getAll","datas","sort","removeCache","resolveApply","type","dataObj","direction","resolveField","isArray","field","relationships","cleanup","entries","organization","Provider","meta","getEditorConfig","editorConfig","fileExt","getFileExtension","providers","a","b","attributes","category","localeCompare","python","getmap","lang","pad","String","padStart","Asset","metadata","normalizeMetadata","newMetadata","md","lite","createNew","req","delete","addFile","label","fileuris","Array","instances","startWorkflow","jobName","initData","startAnonWorkflow","startEvaluate","presetid","movie","preset","home","colon","siloLike","pathTransform","invertedPath","fs","writeFileSync","dircreated","directory","dirname","statSync","nodir","mkdirSync","exists","Preset","subProject","pathResolve","subproject","pathspl","ext","getLocalCode","ignoreMissing","missing","parseFilenameForName","parseCodeForName","getLocalMetadata","isGeneric","localmetadatapath","newShell","rallyConfiguration","systemManaged","fromMetadata","providerType","provider","realpath","getLocalPath","acclimatize","ptype","test","regex","match","matches","runTest","asset","proType","saveLocal","saveLocalMetadata","saveLocalFile","localpath","uploadRemote","uploadCodeToEnv","save","saved","downloadCode","providerData","_code","v","sub","endsWith","basename","name_regex","findStringsInCode","strings","RegExp","join","repodir","_path","_nameOuter","_nameInner","value","immutable","uploadPresetData","grabMetadata","includeMetadata","shouldTest","Notification","notifications","Rule","f","pNext","eNext","dynamicNexts","enterNotif","errorNotif","passNotif","saveA","createIfNotExist","saveB","idMap","patchStrip","createdAt","starred","updatedAt","passMetadata","errorMetadata","SupplyChain","startingRule","stopRule","downloadPresetCode","objs","allPresets","calculate","allRules","allProviders","allNotifications","rules","presets","allRuleNames","allPresetNames","allNotifNames","requiredNotifications","Set","ruleQueue","presetQueue","currentRule","forEach","n","add","neededPresets","neededRules","notif","p","verbose","rawOutput","syncTo","rule","User","Tag","prefix","curated","create","notCurated","require","install","rallyFunctions","bestPagintation","silentAPI","dl","timeEnd","uploadPresets","createFunc","testAccess","SdviContentMover","SdviEvaluate","inquirer","readdir","hasAutoCompletePrompt","addAutoCompletePrompt","registerPrompt","$api","propArray","q","prompt","default","company","defaults","DEV","UAT","QA","PROD","envs","choices","keys","checked","questions","defaultKey","concat","$chalk","askQuestion","$restrictUAT","$repodir","$appName","defaultAppName","USERNAME","LOGNAME","project","askInput","$project","$defaultEnv","selectProvider","autoDefault","defaultProvider","source","sofar","input","toLowerCase","selectLocal","typeName","Class","basePath","objsMap","none","selectPreset","purpose","selectRule","question","def","ok","argv","argparse","string","boolean","protect","alias","printHelp","help","substring","getFilesFromArgs","lastArg","shift","files","getStdin","stdin","presetsub","before","$grab","full","remo","$create","configHelpers","baseCode","$list","attach","$upload","funcs","$diff","preset2","tempfile","temp","extension","ptr","command","stdio","unknown","rulesub","passNext","errorNext","transition","description","jupytersub","output","$build","cmd","categorizeString","defaultSubproject","trim","tagsub","tags","tag","supplysub","$calc","stopName","chain","stop","postAction","to","otherPresets","printPresets","otherPreset","$make","hints","hint","subCommand","object","after","cli","helpArg","jupyter","printArgs","supply","ident","pro","econfig","raw","completions","prop","newConfigObject","helperName","newConfig","y","mode","uuid","digits","random","pow","anon","launchArg","fileArg","arrayify","checkSegments","allIndexBundle","segments","userMetaData","r","reduce","lastSegment","ind","curSegment","startTime","endTime","listAssets","noRelationships","listSegments","segs","test2","wfr","wfrm","test3","sleep","setTimeout","audit","supportedAudits","choice","resourceId","filterFunc","ev","resource","numRows","event","uid","correlation","userId","user","evCounter","evtime","moment","date","format","timedist","fromNow","audit2","findIDs","getAssets","callid","lastResult","lastCall","Date","content","assets","self","noop","unknownCommand","noCommand","packageVersion","resultStr","error","errno","$main","enabled","level","force","defaultEnv","_old","white","main","stack","module","exports"],"mappings":"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"}
\No newline at end of file