diff --git a/.gitignore b/.gitignore index 5d5e250..d2036a4 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ node_modules .idea oclif.manifest.json .DS_STORE +.nyc_output \ No newline at end of file diff --git a/.nyc_output/200f92d7-854c-4821-bec7-69fd7a0e8618.json b/.nyc_output/200f92d7-854c-4821-bec7-69fd7a0e8618.json deleted file mode 100644 index 1cfc958..0000000 --- a/.nyc_output/200f92d7-854c-4821-bec7-69fd7a0e8618.json +++ /dev/null @@ -1 +0,0 @@ -{"/Users/katy.bowman/Projects/heroku-api-plugin/src/commands/api.ts":{"path":"/Users/katy.bowman/Projects/heroku-api-plugin/src/commands/api.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":16},"end":{"line":3,"column":44}},"2":{"start":{"line":4,"column":18},"end":{"line":4,"column":48}},"3":{"start":{"line":5,"column":15},"end":{"line":5,"column":37}},"4":{"start":{"line":6,"column":20},"end":{"line":6,"column":40}},"5":{"start":{"line":7,"column":14},"end":{"line":7,"column":28}},"6":{"start":{"line":8,"column":15},"end":{"line":8,"column":30}},"7":{"start":{"line":9,"column":17},"end":{"line":9,"column":37}},"8":{"start":{"line":10,"column":13},"end":{"line":10,"column":35}},"9":{"start":{"line":13,"column":32},"end":{"line":13,"column":53}},"10":{"start":{"line":14,"column":24},"end":{"line":33,"column":9}},"11":{"start":{"line":15,"column":25},"end":{"line":15,"column":55}},"12":{"start":{"line":16,"column":12},"end":{"line":19,"column":13}},"13":{"start":{"line":17,"column":16},"end":{"line":17,"column":47}},"14":{"start":{"line":18,"column":16},"end":{"line":18,"column":23}},"15":{"start":{"line":20,"column":12},"end":{"line":32,"column":13}},"16":{"start":{"line":21,"column":16},"end":{"line":21,"column":40}},"17":{"start":{"line":24,"column":28},"end":{"line":26,"column":32}},"18":{"start":{"line":27,"column":16},"end":{"line":30,"column":17}},"19":{"start":{"line":28,"column":20},"end":{"line":28,"column":35}},"20":{"start":{"line":29,"column":20},"end":{"line":29,"column":78}},"21":{"start":{"line":31,"column":16},"end":{"line":31,"column":26}},"22":{"start":{"line":34,"column":24},"end":{"line":34,"column":39}},"23":{"start":{"line":35,"column":31},"end":{"line":35,"column":35}},"24":{"start":{"line":36,"column":8},"end":{"line":36,"column":32}},"25":{"start":{"line":37,"column":8},"end":{"line":40,"column":9}},"26":{"start":{"line":38,"column":12},"end":{"line":38,"column":34}},"27":{"start":{"line":39,"column":12},"end":{"line":39,"column":35}},"28":{"start":{"line":41,"column":8},"end":{"line":41,"column":54}},"29":{"start":{"line":42,"column":20},"end":{"line":42,"column":39}},"30":{"start":{"line":43,"column":24},"end":{"line":43,"column":44}},"31":{"start":{"line":44,"column":8},"end":{"line":44,"column":83}},"32":{"start":{"line":45,"column":8},"end":{"line":47,"column":9}},"33":{"start":{"line":46,"column":12},"end":{"line":46,"column":76}},"34":{"start":{"line":48,"column":8},"end":{"line":50,"column":9}},"35":{"start":{"line":49,"column":12},"end":{"line":49,"column":43}},"36":{"start":{"line":51,"column":22},"end":{"line":72,"column":9}},"37":{"start":{"line":52,"column":12},"end":{"line":52,"column":115}},"38":{"start":{"line":54,"column":12},"end":{"line":62,"column":13}},"39":{"start":{"line":55,"column":16},"end":{"line":55,"column":78}},"40":{"start":{"line":58,"column":16},"end":{"line":59,"column":32}},"41":{"start":{"line":59,"column":20},"end":{"line":59,"column":32}},"42":{"start":{"line":60,"column":16},"end":{"line":60,"column":97}},"43":{"start":{"line":61,"column":16},"end":{"line":61,"column":28}},"44":{"start":{"line":63,"column":22},"end":{"line":63,"column":99}},"45":{"start":{"line":64,"column":12},"end":{"line":65,"column":70}},"46":{"start":{"line":65,"column":16},"end":{"line":65,"column":70}},"47":{"start":{"line":66,"column":12},"end":{"line":66,"column":39}},"48":{"start":{"line":67,"column":12},"end":{"line":70,"column":13}},"49":{"start":{"line":68,"column":16},"end":{"line":68,"column":80}},"50":{"start":{"line":69,"column":16},"end":{"line":69,"column":58}},"51":{"start":{"line":71,"column":12},"end":{"line":71,"column":94}},"52":{"start":{"line":73,"column":21},"end":{"line":73,"column":34}},"53":{"start":{"line":74,"column":8},"end":{"line":79,"column":9}},"54":{"start":{"line":75,"column":12},"end":{"line":75,"column":32}},"55":{"start":{"line":78,"column":12},"end":{"line":78,"column":39}},"56":{"start":{"line":82,"column":8},"end":{"line":90,"column":9}},"57":{"start":{"line":83,"column":12},"end":{"line":83,"column":39}},"58":{"start":{"line":86,"column":35},"end":{"line":86,"column":75}},"59":{"start":{"line":87,"column":29},"end":{"line":87,"column":70}},"60":{"start":{"line":88,"column":34},"end":{"line":88,"column":94}},"61":{"start":{"line":89,"column":12},"end":{"line":89,"column":48}},"62":{"start":{"line":93,"column":0},"end":{"line":93,"column":22}},"63":{"start":{"line":94,"column":0},"end":{"line":102,"column":2}},"64":{"start":{"line":103,"column":0},"end":{"line":113,"column":44}},"65":{"start":{"line":114,"column":0},"end":{"line":142,"column":7}},"66":{"start":{"line":143,"column":0},"end":{"line":147,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":12,"column":4},"end":{"line":12,"column":5}},"loc":{"start":{"line":12,"column":16},"end":{"line":80,"column":5}},"line":12},"1":{"name":"(anonymous_1)","decl":{"start":{"line":14,"column":24},"end":{"line":14,"column":25}},"loc":{"start":{"line":14,"column":36},"end":{"line":33,"column":9}},"line":14},"2":{"name":"(anonymous_2)","decl":{"start":{"line":51,"column":22},"end":{"line":51,"column":23}},"loc":{"start":{"line":51,"column":43},"end":{"line":72,"column":9}},"line":51},"3":{"name":"(anonymous_3)","decl":{"start":{"line":81,"column":4},"end":{"line":81,"column":5}},"loc":{"start":{"line":81,"column":19},"end":{"line":91,"column":5}},"line":81}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":25},"end":{"line":15,"column":55}},"type":"binary-expr","locations":[{"start":{"line":15,"column":25},"end":{"line":15,"column":35}},{"start":{"line":15,"column":39},"end":{"line":15,"column":55}}],"line":15},"1":{"loc":{"start":{"line":16,"column":12},"end":{"line":19,"column":13}},"type":"if","locations":[{"start":{"line":16,"column":12},"end":{"line":19,"column":13}},{"start":{"line":16,"column":12},"end":{"line":19,"column":13}}],"line":16},"2":{"loc":{"start":{"line":27,"column":16},"end":{"line":30,"column":17}},"type":"if","locations":[{"start":{"line":27,"column":16},"end":{"line":30,"column":17}},{"start":{"line":27,"column":16},"end":{"line":30,"column":17}}],"line":27},"3":{"loc":{"start":{"line":37,"column":8},"end":{"line":40,"column":9}},"type":"if","locations":[{"start":{"line":37,"column":8},"end":{"line":40,"column":9}},{"start":{"line":37,"column":8},"end":{"line":40,"column":9}}],"line":37},"4":{"loc":{"start":{"line":43,"column":24},"end":{"line":43,"column":44}},"type":"binary-expr","locations":[{"start":{"line":43,"column":24},"end":{"line":43,"column":37}},{"start":{"line":43,"column":41},"end":{"line":43,"column":44}}],"line":43},"5":{"loc":{"start":{"line":45,"column":8},"end":{"line":47,"column":9}},"type":"if","locations":[{"start":{"line":45,"column":8},"end":{"line":47,"column":9}},{"start":{"line":45,"column":8},"end":{"line":47,"column":9}}],"line":45},"6":{"loc":{"start":{"line":48,"column":8},"end":{"line":50,"column":9}},"type":"if","locations":[{"start":{"line":48,"column":8},"end":{"line":50,"column":9}},{"start":{"line":48,"column":8},"end":{"line":50,"column":9}}],"line":48},"7":{"loc":{"start":{"line":48,"column":12},"end":{"line":48,"column":95}},"type":"binary-expr","locations":[{"start":{"line":48,"column":12},"end":{"line":48,"column":38}},{"start":{"line":48,"column":42},"end":{"line":48,"column":66}},{"start":{"line":48,"column":70},"end":{"line":48,"column":95}}],"line":48},"8":{"loc":{"start":{"line":51,"column":29},"end":{"line":51,"column":38}},"type":"default-arg","locations":[{"start":{"line":51,"column":36},"end":{"line":51,"column":38}}],"line":51},"9":{"loc":{"start":{"line":58,"column":16},"end":{"line":59,"column":32}},"type":"if","locations":[{"start":{"line":58,"column":16},"end":{"line":59,"column":32}},{"start":{"line":58,"column":16},"end":{"line":59,"column":32}}],"line":58},"10":{"loc":{"start":{"line":58,"column":20},"end":{"line":58,"column":57}},"type":"binary-expr","locations":[{"start":{"line":58,"column":20},"end":{"line":58,"column":31}},{"start":{"line":58,"column":35},"end":{"line":58,"column":57}}],"line":58},"11":{"loc":{"start":{"line":64,"column":12},"end":{"line":65,"column":70}},"type":"if","locations":[{"start":{"line":64,"column":12},"end":{"line":65,"column":70}},{"start":{"line":64,"column":12},"end":{"line":65,"column":70}}],"line":64},"12":{"loc":{"start":{"line":67,"column":12},"end":{"line":70,"column":13}},"type":"if","locations":[{"start":{"line":67,"column":12},"end":{"line":70,"column":13}},{"start":{"line":67,"column":12},"end":{"line":70,"column":13}}],"line":67},"13":{"loc":{"start":{"line":67,"column":16},"end":{"line":67,"column":87}},"type":"binary-expr","locations":[{"start":{"line":67,"column":16},"end":{"line":67,"column":44}},{"start":{"line":67,"column":48},"end":{"line":67,"column":87}}],"line":67},"14":{"loc":{"start":{"line":71,"column":19},"end":{"line":71,"column":93}},"type":"cond-expr","locations":[{"start":{"line":71,"column":50},"end":{"line":71,"column":77}},{"start":{"line":71,"column":80},"end":{"line":71,"column":93}}],"line":71},"15":{"loc":{"start":{"line":74,"column":8},"end":{"line":79,"column":9}},"type":"if","locations":[{"start":{"line":74,"column":8},"end":{"line":79,"column":9}},{"start":{"line":74,"column":8},"end":{"line":79,"column":9}}],"line":74},"16":{"loc":{"start":{"line":86,"column":35},"end":{"line":86,"column":75}},"type":"cond-expr","locations":[{"start":{"line":86,"column":58},"end":{"line":86,"column":62}},{"start":{"line":86,"column":65},"end":{"line":86,"column":75}}],"line":86},"17":{"loc":{"start":{"line":87,"column":29},"end":{"line":87,"column":70}},"type":"binary-expr","locations":[{"start":{"line":87,"column":29},"end":{"line":87,"column":58}},{"start":{"line":87,"column":62},"end":{"line":87,"column":70}}],"line":87}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":6,"10":6,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":6,"23":6,"24":6,"25":6,"26":6,"27":6,"28":6,"29":6,"30":6,"31":6,"32":6,"33":1,"34":6,"35":0,"36":6,"37":6,"38":6,"39":6,"40":1,"41":0,"42":1,"43":1,"44":5,"45":5,"46":1,"47":5,"48":5,"49":0,"50":0,"51":5,"52":6,"53":5,"54":4,"55":1,"56":6,"57":6,"58":6,"59":6,"60":6,"61":6,"62":1,"63":1,"64":1,"65":1,"66":1},"f":{"0":6,"1":0,"2":6,"3":6},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[6,0],"4":[6,5],"5":[1,5],"6":[0,6],"7":[6,6,6],"8":[6],"9":[0,1],"10":[1,1],"11":[1,4],"12":[0,5],"13":[5,1],"14":[1,4],"15":[4,1],"16":[5,1],"17":[6,0]},"inputSourceMap":{"version":3,"file":"/Users/katy.bowman/Projects/heroku-api-plugin/src/commands/api.ts","sources":["/Users/katy.bowman/Projects/heroku-api-plugin/src/commands/api.ts"],"names":[],"mappings":"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","sourcesContent":["import {color} from '@heroku-cli/color'\nimport {Command, flags} from '@heroku-cli/command'\nimport {Args, ux} from '@oclif/core'\nimport {HTTPRequestOptions} from 'http-call'\nimport heredoc from 'tsheredoc'\nimport {URL} from 'url'\nimport {inspect} from 'util'\n\nimport getStdin = require('get-stdin')\nconst edit = require('edit-string')\n\nexport default class API extends Command {\n static args = {\n method: Args.string({\n description: 'GET, POST, PUT, PATCH, or DELETE',\n required: true,\n }),\n path: Args.string({\n description: 'endpoint to call',\n }),\n }\n\n static description = `make a manual API request\nThe api command is a convenient but low-level way to send requests\nto the Heroku API. It sends an HTTP request to the Heroku API\nusing the given method on the given path. For methods PUT, PATCH,\nand POST, it uses stdin unmodified as the request body. It prints\nthe response unmodified on stdout.\n\nIt is essentially like curl for the Heroku API.\n\nMethod name input will be upcased, so both 'heroku api GET /apps' and\n'heroku api get /apps' are valid commands.`\n\n static examples = [heredoc`\n $ heroku api GET /apps/myapp\n {\n created_at: \"2011-11-11T04:17:13-00:00\",\n id: \"12345678-9abc-def0-1234-456789012345\",\n name: \"myapp\",\n …\n }\n `, heredoc`\n $ heroku api PATCH /apps/myapp/config-vars --body '{\"FOO\": \"bar\"}'\n {\n FOO: \"bar\"\n …\n }\n `, heredoc`\n $ printf '{\"updates\":[{\"type\":\"web\", \"quantity\":2}]}' | heroku api POST /apps/myapp/formation\n [\n {\n \"app\": {\n \"name\": \"myapp\",\n \"id\": \"01234567-89ab-cdef-0123-456789abcdef\"\n },\n \"quantity\": 2,\n \"type\": \"web\",\n \"updated_at\": \"2012-01-01T12:00:00Z\"\n ...\n }\n ]\n `]\n\n static flags = {\n 'accept-inclusion': flags.string({char: 'a', description: 'Accept-Inclusion header to use'}),\n body: flags.string({char: 'b', description: 'JSON input body'}),\n version: flags.string({char: 'v', description: 'version to use (e.g. 2, 3, or 3.variant)'}),\n }\n\n async run() {\n const {args, flags} = await this.parse(API)\n const getBody = async (): Promise => {\n const body = flags.body || await getStdin()\n if (!body) {\n this.warn('no stdin provided')\n return\n }\n\n try {\n return JSON.parse(body as string)\n } catch {\n const err = new Error(`Request body must be valid JSON\n Received:\n ${inspect(body)}`)\n if (process.stdin.isTTY) {\n this.warn(err)\n return JSON.parse(await edit(body, {postfix: '.json'}))\n }\n\n throw err\n }\n }\n\n const request: HTTPRequestOptions = {headers: {}}\n let {method, path} = args\n request.method = method\n if (!path) {\n path = request.method\n request.method = 'GET'\n }\n\n request.method = request.method!.toUpperCase()\n const uri = this.parseURL(path)\n const version = flags.version || '3'\n request.headers!.accept = `application/vnd.heroku+json; version=${version}`\n if (flags['accept-inclusion']) {\n request.headers!['Accept-Inclusion'] = flags['accept-inclusion']\n }\n\n if (request.method === 'PATCH' || request.method === 'PUT' || request.method === 'POST') {\n request.body = await getBody()\n }\n\n const fetch = async (body: unknown[] = []): Promise => {\n ux.action.start(color`{cyanBright ${request.method!}} ${uri.host!}${uri.pathname}`)\n let response\n try {\n response = await this.heroku.request(uri.toString(), request)\n } catch (error) {\n if (!error.http || !error.http.statusCode) throw error\n ux.action.stop(color`{redBright ${error.http.statusCode}}`)\n throw error\n }\n\n let msg = color`{greenBright ${response.response!.statusCode!.toString()}}`\n if (Array.isArray(response.body)) msg += ` ${response.body.length + body.length} items`\n ux.action.stop(msg)\n if (Array.isArray(response.body) && response.response.headers['next-range']) {\n request.headers!.range = response.response.headers['next-range'] as string\n return fetch([...body, ...response.body])\n }\n\n return Array.isArray(response.body) ? [...body, ...response.body] : response.body\n }\n\n const body = await fetch()\n if (typeof body === 'string') {\n ux.log(body)\n } else {\n ux.styledJSON(body)\n }\n }\n\n private parseURL(path: string): URL {\n try {\n return new URL(path)\n } catch {\n const normalizedPath = path.startsWith('/') ? path : `/${path}`\n const protocol = this.heroku.defaults.protocol || 'https:'\n const normalizedURL = `${protocol}//${this.heroku.defaults.host!}${normalizedPath}`\n return new URL(normalizedURL)\n }\n }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"9d5a109df3decfb326c45fac6cea8686ccd176bd","contentHash":"825e35bed76c5441fd0a298fbb7de6eedb032763b940adfc28a6e76f29c31be9"}} \ No newline at end of file diff --git a/.nyc_output/processinfo/200f92d7-854c-4821-bec7-69fd7a0e8618.json b/.nyc_output/processinfo/200f92d7-854c-4821-bec7-69fd7a0e8618.json deleted file mode 100644 index 6701c03..0000000 --- a/.nyc_output/processinfo/200f92d7-854c-4821-bec7-69fd7a0e8618.json +++ /dev/null @@ -1 +0,0 @@ -{"parent":null,"pid":8445,"argv":["/Users/katy.bowman/.asdf/installs/nodejs/20.17.0/bin/node","/Users/katy.bowman/Projects/heroku-api-plugin/node_modules/.bin/mocha","test/**/*.test.ts"],"execArgv":[],"cwd":"/Users/katy.bowman/Projects/heroku-api-plugin","time":1737583142422,"ppid":8442,"coverageFilename":"/Users/katy.bowman/Projects/heroku-api-plugin/.nyc_output/200f92d7-854c-4821-bec7-69fd7a0e8618.json","externalId":"","uuid":"200f92d7-854c-4821-bec7-69fd7a0e8618","files":["/Users/katy.bowman/Projects/heroku-api-plugin/src/commands/api.ts"]} \ No newline at end of file diff --git a/.nyc_output/processinfo/index.json b/.nyc_output/processinfo/index.json deleted file mode 100644 index 01f2c32..0000000 --- a/.nyc_output/processinfo/index.json +++ /dev/null @@ -1 +0,0 @@ -{"processes":{"200f92d7-854c-4821-bec7-69fd7a0e8618":{"parent":null,"children":[]}},"files":{"/Users/katy.bowman/Projects/heroku-api-plugin/src/commands/api.ts":["200f92d7-854c-4821-bec7-69fd7a0e8618"]},"externalIds":{}} \ No newline at end of file