@proxygate/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/LICENSE +17 -0
  2. package/README.md +311 -0
  3. package/dist/commands/apis.d.ts +3 -0
  4. package/dist/commands/apis.d.ts.map +1 -0
  5. package/dist/commands/apis.js +68 -0
  6. package/dist/commands/apis.js.map +1 -0
  7. package/dist/commands/apis.test.d.ts +2 -0
  8. package/dist/commands/apis.test.d.ts.map +1 -0
  9. package/dist/commands/apis.test.js +103 -0
  10. package/dist/commands/apis.test.js.map +1 -0
  11. package/dist/commands/balance.d.ts +9 -0
  12. package/dist/commands/balance.d.ts.map +1 -0
  13. package/dist/commands/balance.js +50 -0
  14. package/dist/commands/balance.js.map +1 -0
  15. package/dist/commands/balance.test.d.ts +2 -0
  16. package/dist/commands/balance.test.d.ts.map +1 -0
  17. package/dist/commands/balance.test.js +106 -0
  18. package/dist/commands/balance.test.js.map +1 -0
  19. package/dist/commands/categories.d.ts +3 -0
  20. package/dist/commands/categories.d.ts.map +1 -0
  21. package/dist/commands/categories.js +45 -0
  22. package/dist/commands/categories.js.map +1 -0
  23. package/dist/commands/categories.test.d.ts +2 -0
  24. package/dist/commands/categories.test.d.ts.map +1 -0
  25. package/dist/commands/categories.test.js +84 -0
  26. package/dist/commands/categories.test.js.map +1 -0
  27. package/dist/commands/create.d.ts +3 -0
  28. package/dist/commands/create.d.ts.map +1 -0
  29. package/dist/commands/create.js +136 -0
  30. package/dist/commands/create.js.map +1 -0
  31. package/dist/commands/create.test.d.ts +2 -0
  32. package/dist/commands/create.test.d.ts.map +1 -0
  33. package/dist/commands/create.test.js +95 -0
  34. package/dist/commands/create.test.js.map +1 -0
  35. package/dist/commands/deposit.d.ts +9 -0
  36. package/dist/commands/deposit.d.ts.map +1 -0
  37. package/dist/commands/deposit.js +78 -0
  38. package/dist/commands/deposit.js.map +1 -0
  39. package/dist/commands/deposit.test.d.ts +2 -0
  40. package/dist/commands/deposit.test.d.ts.map +1 -0
  41. package/dist/commands/deposit.test.js +93 -0
  42. package/dist/commands/deposit.test.js.map +1 -0
  43. package/dist/commands/dev.d.ts +3 -0
  44. package/dist/commands/dev.d.ts.map +1 -0
  45. package/dist/commands/dev.js +188 -0
  46. package/dist/commands/dev.js.map +1 -0
  47. package/dist/commands/dev.test.d.ts +2 -0
  48. package/dist/commands/dev.test.d.ts.map +1 -0
  49. package/dist/commands/dev.test.js +89 -0
  50. package/dist/commands/dev.test.js.map +1 -0
  51. package/dist/commands/getting-started-steps.d.ts +12 -0
  52. package/dist/commands/getting-started-steps.d.ts.map +1 -0
  53. package/dist/commands/getting-started-steps.js +163 -0
  54. package/dist/commands/getting-started-steps.js.map +1 -0
  55. package/dist/commands/getting-started.d.ts +9 -0
  56. package/dist/commands/getting-started.d.ts.map +1 -0
  57. package/dist/commands/getting-started.js +44 -0
  58. package/dist/commands/getting-started.js.map +1 -0
  59. package/dist/commands/init.d.ts +9 -0
  60. package/dist/commands/init.d.ts.map +1 -0
  61. package/dist/commands/init.js +74 -0
  62. package/dist/commands/init.js.map +1 -0
  63. package/dist/commands/init.test.d.ts +2 -0
  64. package/dist/commands/init.test.d.ts.map +1 -0
  65. package/dist/commands/init.test.js +115 -0
  66. package/dist/commands/init.test.js.map +1 -0
  67. package/dist/commands/jobs.d.ts +11 -0
  68. package/dist/commands/jobs.d.ts.map +1 -0
  69. package/dist/commands/jobs.js +370 -0
  70. package/dist/commands/jobs.js.map +1 -0
  71. package/dist/commands/listings/create.d.ts +4 -0
  72. package/dist/commands/listings/create.d.ts.map +1 -0
  73. package/dist/commands/listings/create.js +133 -0
  74. package/dist/commands/listings/create.js.map +1 -0
  75. package/dist/commands/listings/delete.d.ts +4 -0
  76. package/dist/commands/listings/delete.d.ts.map +1 -0
  77. package/dist/commands/listings/delete.js +32 -0
  78. package/dist/commands/listings/delete.js.map +1 -0
  79. package/dist/commands/listings/docs.d.ts +4 -0
  80. package/dist/commands/listings/docs.d.ts.map +1 -0
  81. package/dist/commands/listings/docs.js +48 -0
  82. package/dist/commands/listings/docs.js.map +1 -0
  83. package/dist/commands/listings/headers.d.ts +4 -0
  84. package/dist/commands/listings/headers.d.ts.map +1 -0
  85. package/dist/commands/listings/headers.js +78 -0
  86. package/dist/commands/listings/headers.js.map +1 -0
  87. package/dist/commands/listings/helpers.d.ts +10 -0
  88. package/dist/commands/listings/helpers.d.ts.map +1 -0
  89. package/dist/commands/listings/helpers.js +64 -0
  90. package/dist/commands/listings/helpers.js.map +1 -0
  91. package/dist/commands/listings/index.d.ts +11 -0
  92. package/dist/commands/listings/index.d.ts.map +1 -0
  93. package/dist/commands/listings/index.js +46 -0
  94. package/dist/commands/listings/index.js.map +1 -0
  95. package/dist/commands/listings/list.d.ts +4 -0
  96. package/dist/commands/listings/list.d.ts.map +1 -0
  97. package/dist/commands/listings/list.js +42 -0
  98. package/dist/commands/listings/list.js.map +1 -0
  99. package/dist/commands/listings/pause-unpause.d.ts +6 -0
  100. package/dist/commands/listings/pause-unpause.d.ts.map +1 -0
  101. package/dist/commands/listings/pause-unpause.js +37 -0
  102. package/dist/commands/listings/pause-unpause.js.map +1 -0
  103. package/dist/commands/listings/rotate-key.d.ts +4 -0
  104. package/dist/commands/listings/rotate-key.d.ts.map +1 -0
  105. package/dist/commands/listings/rotate-key.js +62 -0
  106. package/dist/commands/listings/rotate-key.js.map +1 -0
  107. package/dist/commands/listings/update.d.ts +4 -0
  108. package/dist/commands/listings/update.d.ts.map +1 -0
  109. package/dist/commands/listings/update.js +57 -0
  110. package/dist/commands/listings/update.js.map +1 -0
  111. package/dist/commands/listings.d.ts +2 -0
  112. package/dist/commands/listings.d.ts.map +1 -0
  113. package/dist/commands/listings.js +3 -0
  114. package/dist/commands/listings.js.map +1 -0
  115. package/dist/commands/listings.test.d.ts +2 -0
  116. package/dist/commands/listings.test.d.ts.map +1 -0
  117. package/dist/commands/listings.test.js +166 -0
  118. package/dist/commands/listings.test.js.map +1 -0
  119. package/dist/commands/pricing.d.ts +9 -0
  120. package/dist/commands/pricing.d.ts.map +1 -0
  121. package/dist/commands/pricing.js +67 -0
  122. package/dist/commands/pricing.js.map +1 -0
  123. package/dist/commands/pricing.test.d.ts +2 -0
  124. package/dist/commands/pricing.test.d.ts.map +1 -0
  125. package/dist/commands/pricing.test.js +87 -0
  126. package/dist/commands/pricing.test.js.map +1 -0
  127. package/dist/commands/proxy.d.ts +14 -0
  128. package/dist/commands/proxy.d.ts.map +1 -0
  129. package/dist/commands/proxy.js +138 -0
  130. package/dist/commands/proxy.js.map +1 -0
  131. package/dist/commands/proxy.test.d.ts +2 -0
  132. package/dist/commands/proxy.test.d.ts.map +1 -0
  133. package/dist/commands/proxy.test.js +235 -0
  134. package/dist/commands/proxy.test.js.map +1 -0
  135. package/dist/commands/rate.d.ts +3 -0
  136. package/dist/commands/rate.d.ts.map +1 -0
  137. package/dist/commands/rate.js +46 -0
  138. package/dist/commands/rate.js.map +1 -0
  139. package/dist/commands/rate.test.d.ts +2 -0
  140. package/dist/commands/rate.test.d.ts.map +1 -0
  141. package/dist/commands/rate.test.js +74 -0
  142. package/dist/commands/rate.test.js.map +1 -0
  143. package/dist/commands/services.d.ts +3 -0
  144. package/dist/commands/services.d.ts.map +1 -0
  145. package/dist/commands/services.js +48 -0
  146. package/dist/commands/services.js.map +1 -0
  147. package/dist/commands/services.test.d.ts +2 -0
  148. package/dist/commands/services.test.d.ts.map +1 -0
  149. package/dist/commands/services.test.js +87 -0
  150. package/dist/commands/services.test.js.map +1 -0
  151. package/dist/commands/settlements.d.ts +3 -0
  152. package/dist/commands/settlements.d.ts.map +1 -0
  153. package/dist/commands/settlements.js +79 -0
  154. package/dist/commands/settlements.js.map +1 -0
  155. package/dist/commands/settlements.test.d.ts +2 -0
  156. package/dist/commands/settlements.test.d.ts.map +1 -0
  157. package/dist/commands/settlements.test.js +98 -0
  158. package/dist/commands/settlements.test.js.map +1 -0
  159. package/dist/commands/skills.d.ts +3 -0
  160. package/dist/commands/skills.d.ts.map +1 -0
  161. package/dist/commands/skills.js +96 -0
  162. package/dist/commands/skills.js.map +1 -0
  163. package/dist/commands/skills.test.d.ts +2 -0
  164. package/dist/commands/skills.test.d.ts.map +1 -0
  165. package/dist/commands/skills.test.js +89 -0
  166. package/dist/commands/skills.test.js.map +1 -0
  167. package/dist/commands/test-service.d.ts +3 -0
  168. package/dist/commands/test-service.d.ts.map +1 -0
  169. package/dist/commands/test-service.js +200 -0
  170. package/dist/commands/test-service.js.map +1 -0
  171. package/dist/commands/test-service.test.d.ts +2 -0
  172. package/dist/commands/test-service.test.d.ts.map +1 -0
  173. package/dist/commands/test-service.test.js +119 -0
  174. package/dist/commands/test-service.test.js.map +1 -0
  175. package/dist/commands/tunnel-handlers.d.ts +19 -0
  176. package/dist/commands/tunnel-handlers.d.ts.map +1 -0
  177. package/dist/commands/tunnel-handlers.js +103 -0
  178. package/dist/commands/tunnel-handlers.js.map +1 -0
  179. package/dist/commands/tunnel.d.ts +7 -0
  180. package/dist/commands/tunnel.d.ts.map +1 -0
  181. package/dist/commands/tunnel.js +184 -0
  182. package/dist/commands/tunnel.js.map +1 -0
  183. package/dist/commands/usage.d.ts +9 -0
  184. package/dist/commands/usage.d.ts.map +1 -0
  185. package/dist/commands/usage.js +78 -0
  186. package/dist/commands/usage.js.map +1 -0
  187. package/dist/commands/usage.test.d.ts +2 -0
  188. package/dist/commands/usage.test.d.ts.map +1 -0
  189. package/dist/commands/usage.test.js +102 -0
  190. package/dist/commands/usage.test.js.map +1 -0
  191. package/dist/commands/withdraw-confirm.d.ts +10 -0
  192. package/dist/commands/withdraw-confirm.d.ts.map +1 -0
  193. package/dist/commands/withdraw-confirm.js +51 -0
  194. package/dist/commands/withdraw-confirm.js.map +1 -0
  195. package/dist/commands/withdraw-confirm.test.d.ts +2 -0
  196. package/dist/commands/withdraw-confirm.test.d.ts.map +1 -0
  197. package/dist/commands/withdraw-confirm.test.js +75 -0
  198. package/dist/commands/withdraw-confirm.test.js.map +1 -0
  199. package/dist/commands/withdraw.d.ts +9 -0
  200. package/dist/commands/withdraw.d.ts.map +1 -0
  201. package/dist/commands/withdraw.js +78 -0
  202. package/dist/commands/withdraw.js.map +1 -0
  203. package/dist/commands/withdraw.test.d.ts +2 -0
  204. package/dist/commands/withdraw.test.d.ts.map +1 -0
  205. package/dist/commands/withdraw.test.js +96 -0
  206. package/dist/commands/withdraw.test.js.map +1 -0
  207. package/dist/config.d.ts +20 -0
  208. package/dist/config.d.ts.map +1 -0
  209. package/dist/config.js +38 -0
  210. package/dist/config.js.map +1 -0
  211. package/dist/config.test.d.ts +2 -0
  212. package/dist/config.test.d.ts.map +1 -0
  213. package/dist/config.test.js +54 -0
  214. package/dist/config.test.js.map +1 -0
  215. package/dist/format.d.ts +46 -0
  216. package/dist/format.d.ts.map +1 -0
  217. package/dist/format.js +101 -0
  218. package/dist/format.js.map +1 -0
  219. package/dist/format.test.d.ts +2 -0
  220. package/dist/format.test.d.ts.map +1 -0
  221. package/dist/format.test.js +85 -0
  222. package/dist/format.test.js.map +1 -0
  223. package/dist/generated/skills.d.ts +2 -0
  224. package/dist/generated/skills.d.ts.map +1 -0
  225. package/dist/generated/skills.js +23 -0
  226. package/dist/generated/skills.js.map +1 -0
  227. package/dist/helpers.d.ts +12 -0
  228. package/dist/helpers.d.ts.map +1 -0
  229. package/dist/helpers.js +21 -0
  230. package/dist/helpers.js.map +1 -0
  231. package/dist/helpers.test.d.ts +2 -0
  232. package/dist/helpers.test.d.ts.map +1 -0
  233. package/dist/helpers.test.js +59 -0
  234. package/dist/helpers.test.js.map +1 -0
  235. package/dist/index.d.ts +3 -0
  236. package/dist/index.d.ts.map +1 -0
  237. package/dist/index.js +70 -0
  238. package/dist/index.js.map +1 -0
  239. package/package.json +61 -0
  240. package/templates/http-api/README.md +20 -0
  241. package/templates/http-api/package.json +21 -0
  242. package/templates/http-api/proxygate.tunnel.yaml +9 -0
  243. package/templates/http-api/src/index.ts +77 -0
  244. package/templates/http-api/tsconfig.json +14 -0
  245. package/templates/llm-agent/README.md +23 -0
  246. package/templates/llm-agent/package.json +22 -0
  247. package/templates/llm-agent/proxygate.tunnel.yaml +13 -0
  248. package/templates/llm-agent/src/index.ts +142 -0
  249. package/templates/llm-agent/tsconfig.json +14 -0
@@ -0,0 +1,48 @@
1
+ import { getClient } from '../../helpers.js';
2
+ import { bold, dim, formatTable } from '../../format.js';
3
+ import { truncate, handleError } from './helpers.js';
4
+ /** Register the `listings docs` subcommand. */
5
+ export function registerDocsSubcommand(listings, program) {
6
+ listings
7
+ .command('docs <id>')
8
+ .description('View API documentation for a listing')
9
+ .option('--raw', 'Output raw content (OpenAPI spec or markdown)')
10
+ .action(async (id, opts) => {
11
+ const parentOpts = program.opts();
12
+ try {
13
+ const client = await getClient(parentOpts);
14
+ const docs = await client.docs(id);
15
+ if (!docs) {
16
+ console.log(dim('No documentation found for this listing.'));
17
+ return;
18
+ }
19
+ if (opts.raw) {
20
+ console.log(docs.content);
21
+ return;
22
+ }
23
+ // Structured output
24
+ console.log(bold(`Documentation (${docs.doc_type})`));
25
+ console.log(dim(`Listing: ${docs.listing_id}`));
26
+ console.log(dim(`Updated: ${docs.updated_at}`));
27
+ console.log();
28
+ if (docs.doc_type === 'openapi' && docs.parsed_endpoints) {
29
+ console.log(bold('Endpoints:'));
30
+ console.log();
31
+ const headers = ['Method', 'Path', 'Summary'];
32
+ const rows = docs.parsed_endpoints.map((ep) => [
33
+ ep.method ?? '',
34
+ ep.path ?? '',
35
+ truncate(ep.summary ?? '', 50),
36
+ ]);
37
+ console.log(formatTable(headers, rows));
38
+ }
39
+ else {
40
+ console.log(docs.content);
41
+ }
42
+ }
43
+ catch (err) {
44
+ handleError(err);
45
+ }
46
+ });
47
+ }
48
+ //# sourceMappingURL=docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../src/commands/listings/docs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAErD,+CAA+C;AAC/C,MAAM,UAAU,sBAAsB,CAAC,QAAiB,EAAE,OAAgB;IACxE,QAAQ;SACL,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,OAAO,EAAE,+CAA+C,CAAC;SAChE,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,IAAuB,EAAE,EAAE;QACpD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAA0D,CAAC;QAE1F,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEnC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAC;gBAC7D,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1B,OAAO;YACT,CAAC;YAED,oBAAoB;YACpB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACzD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;gBAChC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC9C,MAAM,IAAI,GAAI,IAAI,CAAC,gBAAgF,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;oBAC9G,EAAE,CAAC,MAAM,IAAI,EAAE;oBACf,EAAE,CAAC,IAAI,IAAI,EAAE;oBACb,QAAQ,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,CAAC;iBAC/B,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Command } from 'commander';
2
+ /** Register the `listings headers` subcommand group. */
3
+ export declare function registerHeadersSubcommand(listings: Command, program: Command): void;
4
+ //# sourceMappingURL=headers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers.d.ts","sourceRoot":"","sources":["../../../src/commands/listings/headers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wDAAwD;AACxD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAyEnF"}
@@ -0,0 +1,78 @@
1
+ import { getClient } from '../../helpers.js';
2
+ import { bold, dim, red } from '../../format.js';
3
+ import { handleError } from './helpers.js';
4
+ /** Register the `listings headers` subcommand group. */
5
+ export function registerHeadersSubcommand(listings, program) {
6
+ const headers = listings
7
+ .command('headers <listing-id>')
8
+ .description('Manage upstream headers for a listing');
9
+ headers
10
+ .command('list')
11
+ .description('List upstream headers')
12
+ .action(async () => {
13
+ const listingId = headers.args[0];
14
+ const parentOpts = program.opts();
15
+ try {
16
+ const client = await getClient(parentOpts);
17
+ const listing = await client.listings.get(listingId);
18
+ const entries = Object.entries(listing.upstream_headers ?? {});
19
+ if (parentOpts.json) {
20
+ console.log(JSON.stringify({ upstream_headers: Object.fromEntries(entries) }, null, 2));
21
+ }
22
+ else if (entries.length === 0) {
23
+ console.log(dim('No upstream headers configured.'));
24
+ }
25
+ else {
26
+ console.log(bold('Upstream Headers:'));
27
+ for (const [name, value] of entries) {
28
+ console.log(` ${bold(name)}: ${value}`);
29
+ }
30
+ }
31
+ }
32
+ catch (err) {
33
+ handleError(err);
34
+ }
35
+ });
36
+ headers
37
+ .command('set <name> <value>')
38
+ .description('Set an upstream header (template vars: {{wallet}}, {{listing_id}}, {{request_id}}, {{service}})')
39
+ .action(async (name, value) => {
40
+ const listingId = headers.args[0];
41
+ const parentOpts = program.opts();
42
+ try {
43
+ const client = await getClient(parentOpts);
44
+ const listing = await client.listings.get(listingId);
45
+ const current = listing.upstream_headers ?? {};
46
+ const updated = { ...current, [name]: value };
47
+ await client.listings.update(listingId, { upstream_headers: updated });
48
+ console.log(`${bold('Set')} ${name}: ${value}`);
49
+ }
50
+ catch (err) {
51
+ handleError(err);
52
+ }
53
+ });
54
+ headers
55
+ .command('unset <name>')
56
+ .description('Remove an upstream header')
57
+ .action(async (name) => {
58
+ const listingId = headers.args[0];
59
+ const parentOpts = program.opts();
60
+ try {
61
+ const client = await getClient(parentOpts);
62
+ const listing = await client.listings.get(listingId);
63
+ const current = listing.upstream_headers ?? {};
64
+ if (!(name in current)) {
65
+ console.error(red(`Header "${name}" not found`));
66
+ process.exit(1);
67
+ }
68
+ const updated = { ...current };
69
+ delete updated[name];
70
+ await client.listings.update(listingId, { upstream_headers: updated });
71
+ console.log(`${bold('Removed')} ${name}`);
72
+ }
73
+ catch (err) {
74
+ handleError(err);
75
+ }
76
+ });
77
+ }
78
+ //# sourceMappingURL=headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers.js","sourceRoot":"","sources":["../../../src/commands/listings/headers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { CreateListingOptions, ListingAuthPattern } from '@proxygate/sdk';
2
+ /** Truncate a string to N chars, adding "..." if truncated. */
3
+ export declare function truncate(str: string, n: number): string;
4
+ /** Standard error handler matching existing CLI pattern. */
5
+ export declare function handleError(err: unknown): never;
6
+ /** Lazy-load @inquirer/prompts to avoid import overhead for non-interactive use. */
7
+ export declare function loadPrompts(): Promise<typeof import('@inquirer/prompts')>;
8
+ /** Prompt for auth credentials based on auth pattern. */
9
+ export declare function promptCredentials(authPattern: ListingAuthPattern): Promise<Partial<Pick<CreateListingOptions, 'api_key' | 'header_name' | 'query_param' | 'basic_user' | 'oauth2_flow_type' | 'oauth2_token_url' | 'oauth2_scopes' | 'oauth2_client_id' | 'oauth2_client_secret' | 'oauth2_service_account_json'>>>;
10
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/listings/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAI/E,+DAA+D;AAC/D,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAW/C;AAED,oFAAoF;AACpF,wBAAsB,WAAW,IAAI,OAAO,CAAC,cAAc,mBAAmB,CAAC,CAAC,CAE/E;AAED,yDAAyD;AACzD,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,kBAAkB,GAAG,OAAO,CAC/E,OAAO,CACL,IAAI,CACF,oBAAoB,EAClB,SAAS,GACT,aAAa,GACb,aAAa,GACb,YAAY,GACZ,kBAAkB,GAClB,kBAAkB,GAClB,eAAe,GACf,kBAAkB,GAClB,sBAAsB,GACtB,6BAA6B,CAChC,CACF,CACF,CA2CA"}
@@ -0,0 +1,64 @@
1
+ import { ProxyGateError } from '@proxygate/sdk';
2
+ import { red, dim } from '../../format.js';
3
+ /** Truncate a string to N chars, adding "..." if truncated. */
4
+ export function truncate(str, n) {
5
+ return str.length > n ? str.slice(0, n - 3) + '...' : str;
6
+ }
7
+ /** Standard error handler matching existing CLI pattern. */
8
+ export function handleError(err) {
9
+ if (err instanceof ProxyGateError) {
10
+ console.error(red(`Error [${err.code}]: ${err.message}`));
11
+ if (err.action)
12
+ console.error(dim(`Suggestion: ${err.action}`));
13
+ process.exit(1);
14
+ }
15
+ if (err instanceof Error) {
16
+ console.error(red(`Error: ${err.message}`));
17
+ process.exit(1);
18
+ }
19
+ throw err;
20
+ }
21
+ /** Lazy-load @inquirer/prompts to avoid import overhead for non-interactive use. */
22
+ export async function loadPrompts() {
23
+ return import('@inquirer/prompts');
24
+ }
25
+ /** Prompt for auth credentials based on auth pattern. */
26
+ export async function promptCredentials(authPattern) {
27
+ const { input, password, select } = await loadPrompts();
28
+ if (authPattern === 'bearer' || authPattern === 'header' || authPattern === 'query' || authPattern === 'basic') {
29
+ const result = {};
30
+ if (authPattern === 'header') {
31
+ result.header_name = await input({ message: 'Header name (e.g. X-Api-Key):' });
32
+ }
33
+ if (authPattern === 'query') {
34
+ result.query_param = await input({ message: 'Query parameter name (e.g. api_key):' });
35
+ }
36
+ if (authPattern === 'basic') {
37
+ result.basic_user = await input({ message: 'Basic auth username:' });
38
+ }
39
+ result.api_key = await password({ message: 'API key:' });
40
+ return result;
41
+ }
42
+ // oauth2_cc
43
+ const flowType = await select({
44
+ message: 'OAuth2 flow type:',
45
+ choices: [
46
+ { value: 'standard', name: 'Standard (client_credentials)' },
47
+ { value: 'google_jwt', name: 'Google JWT (service account)' },
48
+ ],
49
+ });
50
+ const result = { oauth2_flow_type: flowType };
51
+ if (flowType === 'standard') {
52
+ result.oauth2_token_url = await input({ message: 'Token URL:' });
53
+ result.oauth2_scopes = await input({ message: 'Scopes (space-separated):' });
54
+ result.oauth2_client_id = await password({ message: 'Client ID:' });
55
+ result.oauth2_client_secret = await password({ message: 'Client secret:' });
56
+ }
57
+ else {
58
+ result.oauth2_service_account_json = await input({
59
+ message: 'Path to service account JSON:',
60
+ });
61
+ }
62
+ return result;
63
+ }
64
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/listings/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAE3C,+DAA+D;AAC/D,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,CAAS;IAC7C,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5D,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1D,IAAI,GAAG,CAAC,MAAM;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,GAAG,CAAC;AACZ,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,OAAO,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACrC,CAAC;AAED,yDAAyD;AACzD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,WAA+B;IAiBrE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;IAExD,IAAI,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,OAAO,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;QAC/G,MAAM,MAAM,GAAkC,EAAE,CAAC;QAEjD,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,WAAW,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;YAC5B,MAAM,CAAC,WAAW,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;YAC5B,MAAM,CAAC,UAAU,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,CAAC,OAAO,GAAG,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QACzD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,YAAY;IACZ,MAAM,QAAQ,GAAG,MAAM,MAAM,CAA4B;QACvD,OAAO,EAAE,mBAAmB;QAC5B,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC5D,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE;SAC9D;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,GAAkC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC;IAE7E,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,gBAAgB,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,aAAa,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC;QAC7E,MAAM,CAAC,gBAAgB,GAAG,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,oBAAoB,GAAG,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,2BAA2B,GAAG,MAAM,KAAK,CAAC;YAC/C,OAAO,EAAE,+BAA+B;SACzC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Command } from 'commander';
2
+ /**
3
+ * Register the `proxygate listings` command group.
4
+ *
5
+ * Provides 8 subcommands for seller listing management:
6
+ * list, create, update, pause, unpause, delete, rotate-key, docs.
7
+ *
8
+ * JSON output by default; use --table for human-readable output.
9
+ */
10
+ export declare function registerListingsCommand(program: Command): void;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/listings/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgC9D"}
@@ -0,0 +1,46 @@
1
+ import { registerListSubcommand } from './list.js';
2
+ import { registerCreateSubcommand } from './create.js';
3
+ import { registerUpdateSubcommand } from './update.js';
4
+ import { registerPauseSubcommand, registerUnpauseSubcommand } from './pause-unpause.js';
5
+ import { registerDeleteSubcommand } from './delete.js';
6
+ import { registerRotateKeySubcommand } from './rotate-key.js';
7
+ import { registerDocsSubcommand } from './docs.js';
8
+ import { registerHeadersSubcommand } from './headers.js';
9
+ /**
10
+ * Register the `proxygate listings` command group.
11
+ *
12
+ * Provides 8 subcommands for seller listing management:
13
+ * list, create, update, pause, unpause, delete, rotate-key, docs.
14
+ *
15
+ * JSON output by default; use --table for human-readable output.
16
+ */
17
+ export function registerListingsCommand(program) {
18
+ const listings = program
19
+ .command('listings')
20
+ .description('Manage your seller listings (create, update, pause, delete, rotate keys)')
21
+ .addHelpText('after', '\nSubcommands:\n' +
22
+ ' list List your seller listings\n' +
23
+ ' create Create a new listing (interactive)\n' +
24
+ ' update <id> Update a listing\n' +
25
+ ' pause <id> Pause a listing\n' +
26
+ ' unpause <id> Unpause a listing\n' +
27
+ ' delete <id> Delete a listing\n' +
28
+ ' rotate-key <id> Rotate API key or OAuth2 credentials\n' +
29
+ ' docs <id> View API documentation for a listing\n' +
30
+ ' headers <id> Manage upstream headers\n\n' +
31
+ 'Examples:\n' +
32
+ ' $ proxygate listings list JSON output (default)\n' +
33
+ ' $ proxygate listings list --table Table format\n' +
34
+ ' $ proxygate listings create Interactive mode\n' +
35
+ ' $ proxygate listings create --non-interactive --service-name my-api ...\n');
36
+ registerListSubcommand(listings, program);
37
+ registerCreateSubcommand(listings, program);
38
+ registerUpdateSubcommand(listings, program);
39
+ registerPauseSubcommand(listings, program);
40
+ registerUnpauseSubcommand(listings, program);
41
+ registerDeleteSubcommand(listings, program);
42
+ registerRotateKeySubcommand(listings, program);
43
+ registerDocsSubcommand(listings, program);
44
+ registerHeadersSubcommand(listings, program);
45
+ }
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/listings/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,QAAQ,GAAG,OAAO;SACrB,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,0EAA0E,CAAC;SACvF,WAAW,CACV,OAAO,EACP,kBAAkB;QAChB,4DAA4D;QAC5D,qEAAqE;QACrE,mDAAmD;QACnD,kDAAkD;QAClD,oDAAoD;QACpD,mDAAmD;QACnD,uEAAuE;QACvE,uEAAuE;QACvE,4DAA4D;QAC5D,aAAa;QACb,sEAAsE;QACtE,6DAA6D;QAC7D,iEAAiE;QACjE,6EAA6E,CAChF,CAAC;IAEJ,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1C,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,yBAAyB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7C,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,2BAA2B,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1C,yBAAyB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Command } from 'commander';
2
+ /** Register the `listings list` subcommand. */
3
+ export declare function registerListSubcommand(listings: Command, program: Command): void;
4
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/listings/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,+CAA+C;AAC/C,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAwChF"}
@@ -0,0 +1,42 @@
1
+ import { getClient } from '../../helpers.js';
2
+ import { bold, green, yellow, dim, formatTable } from '../../format.js';
3
+ import { handleError } from './helpers.js';
4
+ /** Register the `listings list` subcommand. */
5
+ export function registerListSubcommand(listings, program) {
6
+ listings
7
+ .command('list')
8
+ .description('List all your seller listings')
9
+ .option('--table', 'Display in human-readable table format')
10
+ .action(async (opts) => {
11
+ const parentOpts = program.opts();
12
+ try {
13
+ const client = await getClient(parentOpts);
14
+ const result = await client.listings.list();
15
+ if (opts.table) {
16
+ if (result.listings.length === 0) {
17
+ console.log(dim('No listings found. Create one with: proxygate listings create'));
18
+ return;
19
+ }
20
+ console.log(bold(`Seller Listings (${result.listings.length})`));
21
+ console.log();
22
+ const headers = ['ID', 'Service', 'Status', 'RPM', 'Price', 'Shield'];
23
+ const rows = result.listings.map((l) => [
24
+ l.id.slice(0, 8),
25
+ l.service_catalog?.name ?? 'unknown',
26
+ l.is_active ? green('active') : yellow('paused'),
27
+ `${l.total_rpm - (l.reserved_rpm ?? 0)}/${l.total_rpm}`,
28
+ String(l.price_per_request),
29
+ l.shield_enabled ? green('on') : dim('off'),
30
+ ]);
31
+ console.log(formatTable(headers, rows));
32
+ return;
33
+ }
34
+ // JSON output (default)
35
+ console.log(JSON.stringify(result, null, 2));
36
+ }
37
+ catch (err) {
38
+ handleError(err);
39
+ }
40
+ });
41
+ }
42
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/listings/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,+CAA+C;AAC/C,MAAM,UAAU,sBAAsB,CAAC,QAAiB,EAAE,OAAgB;IACxE,QAAQ;SACL,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,SAAS,EAAE,wCAAwC,CAAC;SAC3D,MAAM,CAAC,KAAK,EAAE,IAAyB,EAAE,EAAE;QAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAA0D,CAAC;QAE1F,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE5C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC,CAAC;oBAClF,OAAO;gBACT,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACjE,OAAO,CAAC,GAAG,EAAE,CAAC;gBAEd,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACtE,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBACtC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;oBAChB,CAAC,CAAC,eAAe,EAAE,IAAI,IAAI,SAAS;oBACpC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;oBAChD,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE;oBACvD,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC;oBAC3B,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;iBAC5C,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;gBACxC,OAAO;YACT,CAAC;YAED,wBAAwB;YACxB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Command } from 'commander';
2
+ /** Register the `listings pause` subcommand. */
3
+ export declare function registerPauseSubcommand(listings: Command, program: Command): void;
4
+ /** Register the `listings unpause` subcommand. */
5
+ export declare function registerUnpauseSubcommand(listings: Command, program: Command): void;
6
+ //# sourceMappingURL=pause-unpause.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pause-unpause.d.ts","sourceRoot":"","sources":["../../../src/commands/listings/pause-unpause.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,gDAAgD;AAChD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAejF;AAED,kDAAkD;AAClD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAenF"}
@@ -0,0 +1,37 @@
1
+ import { getClient } from '../../helpers.js';
2
+ import { handleError } from './helpers.js';
3
+ /** Register the `listings pause` subcommand. */
4
+ export function registerPauseSubcommand(listings, program) {
5
+ listings
6
+ .command('pause <id>')
7
+ .description('Pause a listing (removes from marketplace routing)')
8
+ .action(async (id) => {
9
+ const parentOpts = program.opts();
10
+ try {
11
+ const client = await getClient(parentOpts);
12
+ const result = await client.listings.pause(id);
13
+ console.log(JSON.stringify(result, null, 2));
14
+ }
15
+ catch (err) {
16
+ handleError(err);
17
+ }
18
+ });
19
+ }
20
+ /** Register the `listings unpause` subcommand. */
21
+ export function registerUnpauseSubcommand(listings, program) {
22
+ listings
23
+ .command('unpause <id>')
24
+ .description('Unpause a listing (re-enables marketplace routing)')
25
+ .action(async (id) => {
26
+ const parentOpts = program.opts();
27
+ try {
28
+ const client = await getClient(parentOpts);
29
+ const result = await client.listings.unpause(id);
30
+ console.log(JSON.stringify(result, null, 2));
31
+ }
32
+ catch (err) {
33
+ handleError(err);
34
+ }
35
+ });
36
+ }
37
+ //# sourceMappingURL=pause-unpause.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pause-unpause.js","sourceRoot":"","sources":["../../../src/commands/listings/pause-unpause.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,gDAAgD;AAChD,MAAM,UAAU,uBAAuB,CAAC,QAAiB,EAAE,OAAgB;IACzE,QAAQ;SACL,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE;QAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAA0D,CAAC;QAE1F,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,yBAAyB,CAAC,QAAiB,EAAE,OAAgB;IAC3E,QAAQ;SACL,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE;QAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAA0D,CAAC;QAE1F,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Command } from 'commander';
2
+ /** Register the `listings rotate-key` subcommand. */
3
+ export declare function registerRotateKeySubcommand(listings: Command, program: Command): void;
4
+ //# sourceMappingURL=rotate-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotate-key.d.ts","sourceRoot":"","sources":["../../../src/commands/listings/rotate-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,qDAAqD;AACrD,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAmErF"}
@@ -0,0 +1,62 @@
1
+ import { getClient } from '../../helpers.js';
2
+ import { handleError, loadPrompts, promptCredentials } from './helpers.js';
3
+ /** Register the `listings rotate-key` subcommand. */
4
+ export function registerRotateKeySubcommand(listings, program) {
5
+ listings
6
+ .command('rotate-key <id>')
7
+ .description('Rotate API key or OAuth2 credentials for a listing')
8
+ .option('--non-interactive', 'Use CLI flags instead of interactive prompts')
9
+ .option('--api-key <key>', 'New API key')
10
+ .option('--oauth2-flow-type <type>', 'OAuth2 flow: standard, google_jwt')
11
+ .option('--oauth2-client-id <id>', 'OAuth2 client ID')
12
+ .option('--oauth2-client-secret <secret>', 'OAuth2 client secret')
13
+ .option('--oauth2-service-account-json <path>', 'Google service account JSON path')
14
+ .option('--validation-endpoint <path>', 'Validation endpoint path')
15
+ .action(async (id, opts) => {
16
+ const parentOpts = program.opts();
17
+ try {
18
+ const client = await getClient(parentOpts);
19
+ let rotateOpts;
20
+ if (opts.nonInteractive) {
21
+ rotateOpts = {
22
+ ...(opts.apiKey ? { api_key: opts.apiKey } : {}),
23
+ ...(opts.oauth2FlowType ? { oauth2_flow_type: opts.oauth2FlowType } : {}),
24
+ ...(opts.oauth2ClientId ? { oauth2_client_id: opts.oauth2ClientId } : {}),
25
+ ...(opts.oauth2ClientSecret ? { oauth2_client_secret: opts.oauth2ClientSecret } : {}),
26
+ ...(opts.oauth2ServiceAccountJson ? { oauth2_service_account_json: opts.oauth2ServiceAccountJson } : {}),
27
+ ...(opts.validationEndpoint ? { validation_endpoint: opts.validationEndpoint } : {}),
28
+ };
29
+ }
30
+ else {
31
+ const listing = await client.listings.get(id);
32
+ const { select, password } = await loadPrompts();
33
+ const credType = await select({
34
+ message: `Current auth: ${listing.auth_pattern}. Rotate:`,
35
+ choices: [
36
+ { value: 'api_key', name: 'API key' },
37
+ { value: 'oauth2', name: 'OAuth2 credentials' },
38
+ ],
39
+ });
40
+ if (credType === 'api_key') {
41
+ const apiKey = await password({ message: 'New API key:' });
42
+ rotateOpts = { api_key: apiKey };
43
+ }
44
+ else {
45
+ const creds = await promptCredentials('oauth2_cc');
46
+ rotateOpts = {
47
+ ...(creds.oauth2_flow_type ? { oauth2_flow_type: creds.oauth2_flow_type } : {}),
48
+ ...(creds.oauth2_client_id ? { oauth2_client_id: creds.oauth2_client_id } : {}),
49
+ ...(creds.oauth2_client_secret ? { oauth2_client_secret: creds.oauth2_client_secret } : {}),
50
+ ...(creds.oauth2_service_account_json ? { oauth2_service_account_json: creds.oauth2_service_account_json } : {}),
51
+ };
52
+ }
53
+ }
54
+ const result = await client.listings.rotateKey(id, rotateOpts);
55
+ console.log(JSON.stringify(result, null, 2));
56
+ }
57
+ catch (err) {
58
+ handleError(err);
59
+ }
60
+ });
61
+ }
62
+ //# sourceMappingURL=rotate-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotate-key.js","sourceRoot":"","sources":["../../../src/commands/listings/rotate-key.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE3E,qDAAqD;AACrD,MAAM,UAAU,2BAA2B,CAAC,QAAiB,EAAE,OAAgB;IAC7E,QAAQ;SACL,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,mBAAmB,EAAE,8CAA8C,CAAC;SAC3E,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;SACxC,MAAM,CAAC,2BAA2B,EAAE,mCAAmC,CAAC;SACxE,MAAM,CAAC,yBAAyB,EAAE,kBAAkB,CAAC;SACrD,MAAM,CAAC,iCAAiC,EAAE,sBAAsB,CAAC;SACjE,MAAM,CAAC,sCAAsC,EAAE,kCAAkC,CAAC;SAClF,MAAM,CAAC,8BAA8B,EAAE,0BAA0B,CAAC;SAClE,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,IAQ1B,EAAE,EAAE;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAA0D,CAAC;QAE1F,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,UAA4B,CAAC;YAEjC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,UAAU,GAAG;oBACX,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChD,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,cAA2C,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtG,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzE,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrF,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,2BAA2B,EAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxG,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACrF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC9C,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;gBAEjD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAuB;oBAClD,OAAO,EAAE,iBAAiB,OAAO,CAAC,YAAY,WAAW;oBACzD,OAAO,EAAE;wBACP,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;wBACrC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB,EAAE;qBAChD;iBACF,CAAC,CAAC;gBAEH,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;oBAC3D,UAAU,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;oBACnD,UAAU,GAAG;wBACX,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC/E,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC/E,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC3F,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,2BAA2B,EAAE,KAAK,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACjH,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Command } from 'commander';
2
+ /** Register the `listings update` subcommand. */
3
+ export declare function registerUpdateSubcommand(listings: Command, program: Command): void;
4
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/listings/update.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,iDAAiD;AACjD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAsDlF"}
@@ -0,0 +1,57 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { getClient } from '../../helpers.js';
3
+ import { red, dim } from '../../format.js';
4
+ import { handleError } from './helpers.js';
5
+ /** Register the `listings update` subcommand. */
6
+ export function registerUpdateSubcommand(listings, program) {
7
+ listings
8
+ .command('update <id>')
9
+ .description('Update a listing (capacity, pricing, categories, description, paths)')
10
+ .option('--total-rpm <n>', 'Total RPM capacity')
11
+ .option('--reserved-rpm <n>', 'Reserved RPM')
12
+ .option('--price <n>', 'Price per request in micro-cents')
13
+ .option('--categories <slugs>', 'Category slugs (comma-separated)')
14
+ .option('--description <text>', 'Listing description')
15
+ .option('--allowed-paths <paths>', 'Allowed paths (comma-separated)')
16
+ .option('--endpoints <file>', 'Path to JSON file containing EndpointSpec[]')
17
+ .option('--shield <on|off>', 'Enable or disable Shield request scanning (protects your API from malicious input)')
18
+ .action(async (id, opts) => {
19
+ const parentOpts = program.opts();
20
+ try {
21
+ const updates = {};
22
+ if (opts.totalRpm !== undefined)
23
+ updates.total_rpm = parseInt(opts.totalRpm, 10);
24
+ if (opts.reservedRpm !== undefined)
25
+ updates.reserved_rpm = parseInt(opts.reservedRpm, 10);
26
+ if (opts.price !== undefined)
27
+ updates.price_per_request = parseInt(opts.price, 10);
28
+ if (opts.categories !== undefined)
29
+ updates.category_slugs = opts.categories.split(',').map((s) => s.trim());
30
+ if (opts.description !== undefined)
31
+ updates.description = opts.description;
32
+ if (opts.allowedPaths !== undefined)
33
+ updates.allowed_paths = opts.allowedPaths.split(',').map((s) => s.trim());
34
+ if (opts.endpoints !== undefined)
35
+ updates.endpoints = JSON.parse(await readFile(opts.endpoints, 'utf-8'));
36
+ if (opts.shield !== undefined) {
37
+ if (opts.shield !== 'on' && opts.shield !== 'off') {
38
+ console.error(red('Error: --shield must be "on" or "off"'));
39
+ process.exit(1);
40
+ }
41
+ updates.shield_enabled = opts.shield === 'on';
42
+ }
43
+ if (Object.keys(updates).length === 0) {
44
+ console.error(red('Error: at least one update flag is required'));
45
+ console.error(dim('Available: --total-rpm, --reserved-rpm, --price, --categories, --description, --allowed-paths, --shield'));
46
+ process.exit(1);
47
+ }
48
+ const client = await getClient(parentOpts);
49
+ const result = await client.listings.update(id, updates);
50
+ console.log(JSON.stringify(result, null, 2));
51
+ }
52
+ catch (err) {
53
+ handleError(err);
54
+ }
55
+ });
56
+ }
57
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/listings/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,iDAAiD;AACjD,MAAM,UAAU,wBAAwB,CAAC,QAAiB,EAAE,OAAgB;IAC1E,QAAQ;SACL,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,sEAAsE,CAAC;SACnF,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;SAC/C,MAAM,CAAC,oBAAoB,EAAE,cAAc,CAAC;SAC5C,MAAM,CAAC,aAAa,EAAE,kCAAkC,CAAC;SACzD,MAAM,CAAC,sBAAsB,EAAE,kCAAkC,CAAC;SAClE,MAAM,CAAC,sBAAsB,EAAE,qBAAqB,CAAC;SACrD,MAAM,CAAC,yBAAyB,EAAE,iCAAiC,CAAC;SACpE,MAAM,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;SAC3E,MAAM,CAAC,mBAAmB,EAAE,oFAAoF,CAAC;SACjH,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,IAS1B,EAAE,EAAE;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAA0D,CAAC;QAE1F,IAAI,CAAC;YACH,MAAM,OAAO,GAA4B,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;gBAAE,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACjF,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;gBAAE,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC1F,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,CAAC,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnF,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;gBAAE,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5G,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;gBAAE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAC3E,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;gBAAE,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/G,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;gBAAE,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1G,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;oBAClD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;oBAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;YAChD,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAC;gBAClE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,yGAAyG,CAAC,CAAC,CAAC;gBAC9H,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { registerListingsCommand } from './listings/index.js';
2
+ //# sourceMappingURL=listings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listings.d.ts","sourceRoot":"","sources":["../../src/commands/listings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Re-export from listings/ directory for backward compatibility.
2
+ export { registerListingsCommand } from './listings/index.js';
3
+ //# sourceMappingURL=listings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listings.js","sourceRoot":"","sources":["../../src/commands/listings.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=listings.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listings.test.d.ts","sourceRoot":"","sources":["../../src/commands/listings.test.ts"],"names":[],"mappings":""}