gitlab-catalog-browser 0.2.6 → 0.2.7

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.
@@ -1,38 +1,84 @@
1
1
  /**
2
2
  * Catalog API methods for GitLab CI/CD Catalog.
3
3
  *
4
- * Provides typed methods for listing, searching, and fetching component details.
4
+ * Provides typed methods for listing, searching, and fetching component details
5
+ * using GitLab's GraphQL API. Does NOT require authentication for public resources.
6
+ *
7
+ * Pagination uses GitLab's cursor-based pagination internally, but exposes
8
+ * a page/perPage interface. When no pagination params are given, ALL matching
9
+ * resources are fetched (multi-page) and returned.
5
10
  */
6
- import { GitLabApiClient } from './gitlab.js';
11
+ import { GraphQLApiClient } from './graphql.js';
7
12
  import type { PaginationParams } from '../types/api.js';
8
13
  import type { CatalogComponent, CatalogComponentDetail } from '../types/catalog.js';
9
14
  export declare class CatalogApi {
10
15
  private readonly client;
11
- constructor(client: GitLabApiClient);
16
+ constructor(client: GraphQLApiClient);
12
17
  /**
13
18
  * List all catalog components for a given namespace/org.
14
- * Uses a namespace search to find the group, then fetches its catalog components.
19
+ *
20
+ * Uses group(fullPath:) { projects { nodes } } to fetch ONLY the projects
21
+ * under the given namespace, then filters by isCatalogResource.
22
+ * Much faster than fetching the global catalog and filtering by prefix.
15
23
  *
16
24
  * @param namespace - GitLab namespace (e.g. "to-be-continuous")
17
- * @param pagination - Optional page/perPage parameters
25
+ * @param pagination - Optional page/perPage parameters (omit for all results)
18
26
  */
19
27
  listComponents(namespace: string, pagination?: PaginationParams): Promise<CatalogComponent[]>;
20
28
  /**
21
29
  * Search catalog components by keyword across namespaces.
22
30
  *
31
+ * Fetches ALL matching pages from GraphQL (cursor-based with search),
32
+ * then applies offset-based pagination if requested.
33
+ *
23
34
  * @param query - Search keyword
24
- * @param pagination - Optional page/perPage parameters
35
+ * @param pagination - Optional page/perPage parameters (omit for all results)
25
36
  */
26
37
  searchComponents(query: string, pagination?: PaginationParams): Promise<CatalogComponent[]>;
27
38
  /**
28
39
  * Get detailed info for a specific component.
29
40
  *
30
- * @param fullPath - Full component path, e.g. "to-be-continuous/docker-build"
41
+ * Uses GraphQL ciCatalogResource with versions and components.
42
+ *
43
+ * @param fullPath - Full component path, e.g. "to-be-continuous/docker"
31
44
  */
32
45
  getComponentInfo(fullPath: string): Promise<CatalogComponentDetail>;
33
46
  /**
34
- * Resolve a namespace string to a GitLab group/project ID.
47
+ * Fetch ALL pages of ciCatalogResources using cursor-based pagination.
48
+ * Keeps requesting the next page while hasNextPage is true.
49
+ *
50
+ * @param search - Optional search term passed to GraphQL
51
+ * @returns Flat array of all resource nodes from all pages
52
+ */
53
+ private fetchAllResources;
54
+ /**
55
+ * Fetch all catalog resources under a specific group/namespace.
56
+ *
57
+ * Uses group(fullPath:) { projects { nodes } } which returns ONLY the
58
+ * projects within that namespace — far more efficient than fetching the
59
+ * entire global catalog and filtering client-side.
60
+ *
61
+ * Filters projects by isCatalogResource === true.
62
+ *
63
+ * @param namespace - GitLab group/namespace path (e.g. "to-be-continuous")
64
+ * @returns Flat array of all catalog resource nodes in the group
65
+ */
66
+ private fetchGroupResources;
67
+ /**
68
+ * Apply offset-based pagination to a complete result set.
69
+ * When no pagination params are given, returns all items.
70
+ */
71
+ private applyOffsetPagination;
72
+ private mapToCatalogComponent;
73
+ private mapToCatalogComponentDetail;
74
+ /**
75
+ * Map GraphQL input type string to our normalized type.
76
+ */
77
+ private mapInputType;
78
+ /**
79
+ * Extract numeric ID from global GraphQL ID.
80
+ * e.g. "gid://gitlab/Ci::Catalog::Resource/1001971" → 1001971
35
81
  */
36
- private resolveNamespace;
82
+ private extractNumericId;
37
83
  }
38
84
  //# sourceMappingURL=catalog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/api/catalog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,qBAAqB,CAAC;AAM7B,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,eAAe;IAEpD;;;;;;OAMG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAgB9B;;;;;OAKG;IACG,gBAAgB,CACpB,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAW9B;;;;OAIG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAUzE;;OAEG;YACW,gBAAgB;CAgB/B"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/api/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EAIvB,MAAM,qBAAqB,CAAC;AAwM7B,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAErD;;;;;;;;;OASG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAK9B;;;;;;;;OAQG;IACG,gBAAgB,CACpB,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAM9B;;;;;;OAMG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAkBzE;;;;;;OAMG;YACW,iBAAiB;IAsC/B;;;;;;;;;;;OAWG;YACW,mBAAmB;IAqDjC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAqB7B,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,2BAA2B;IAmDnC;;OAEG;IACH,OAAO,CAAC,YAAY;IAWpB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;CAKzB"}
@@ -1,8 +1,115 @@
1
1
  /**
2
2
  * Catalog API methods for GitLab CI/CD Catalog.
3
3
  *
4
- * Provides typed methods for listing, searching, and fetching component details.
4
+ * Provides typed methods for listing, searching, and fetching component details
5
+ * using GitLab's GraphQL API. Does NOT require authentication for public resources.
6
+ *
7
+ * Pagination uses GitLab's cursor-based pagination internally, but exposes
8
+ * a page/perPage interface. When no pagination params are given, ALL matching
9
+ * resources are fetched (multi-page) and returned.
5
10
  */
11
+ import { NotFoundError } from '../types/api.js';
12
+ // ──────────────────────────────────────────────
13
+ // Constants
14
+ // ──────────────────────────────────────────────
15
+ /** Max items per GraphQL page — prevents overly large payloads. */
16
+ const GRAPHQL_PAGE_SIZE = 100;
17
+ /** Max pages to fetch (5 pages × 100 = 500 resources). Covers the largest orgs
18
+ * without unbounded requests that could timeout. */
19
+ const MAX_PAGES = 5;
20
+ /** Default items per logical page when user does not specify --per-page. */
21
+ const DEFAULT_PER_PAGE = 50;
22
+ // ──────────────────────────────────────────────
23
+ // GraphQL Queries
24
+ // ──────────────────────────────────────────────
25
+ const RESOURCES_PAGE_QUERY = `
26
+ query catalogResourcesPage($first: Int, $after: String, $search: String) {
27
+ ciCatalogResources(first: $first, after: $after, search: $search) {
28
+ nodes {
29
+ id
30
+ name
31
+ fullPath
32
+ description
33
+ webPath
34
+ latestReleasedAt
35
+ versions(first: 1) {
36
+ nodes {
37
+ name
38
+ }
39
+ }
40
+ }
41
+ pageInfo {
42
+ hasNextPage
43
+ endCursor
44
+ }
45
+ }
46
+ }
47
+ `;
48
+ const GROUP_RESOURCES_QUERY = `
49
+ query groupCatalogResources($groupPath: ID!, $first: Int, $after: String) {
50
+ group(fullPath: $groupPath) {
51
+ name
52
+ fullPath
53
+ projects(first: $first, after: $after) {
54
+ pageInfo {
55
+ hasNextPage
56
+ endCursor
57
+ }
58
+ nodes {
59
+ id
60
+ name
61
+ path
62
+ description
63
+ starCount
64
+ isCatalogResource
65
+ }
66
+ }
67
+ }
68
+ }
69
+ `;
70
+ const RESOURCE_DETAIL_QUERY = `
71
+ query catalogResource($fullPath: ID!) {
72
+ ciCatalogResource(fullPath: $fullPath) {
73
+ id
74
+ name
75
+ fullPath
76
+ description
77
+ webPath
78
+ starCount
79
+ topics
80
+ verificationLevel
81
+ latestReleasedAt
82
+ versions(first: 1) {
83
+ nodes {
84
+ name
85
+ path
86
+ semver {
87
+ major
88
+ minor
89
+ patch
90
+ }
91
+ components {
92
+ nodes {
93
+ id
94
+ name
95
+ includePath
96
+ description
97
+ inputs {
98
+ name
99
+ type
100
+ required
101
+ default
102
+ description
103
+ options
104
+ regex
105
+ }
106
+ }
107
+ }
108
+ }
109
+ }
110
+ }
111
+ }
112
+ `;
6
113
  // ──────────────────────────────────────────────
7
114
  // CatalogApi
8
115
  // ──────────────────────────────────────────────
@@ -13,60 +120,227 @@ export class CatalogApi {
13
120
  }
14
121
  /**
15
122
  * List all catalog components for a given namespace/org.
16
- * Uses a namespace search to find the group, then fetches its catalog components.
123
+ *
124
+ * Uses group(fullPath:) { projects { nodes } } to fetch ONLY the projects
125
+ * under the given namespace, then filters by isCatalogResource.
126
+ * Much faster than fetching the global catalog and filtering by prefix.
17
127
  *
18
128
  * @param namespace - GitLab namespace (e.g. "to-be-continuous")
19
- * @param pagination - Optional page/perPage parameters
129
+ * @param pagination - Optional page/perPage parameters (omit for all results)
20
130
  */
21
131
  async listComponents(namespace, pagination) {
22
- // GitLab Catalog API: GET /projects/:id/ci/catalog/components
23
- // First, find the namespace's project/group ID via search
24
- const groupId = await this.resolveNamespace(namespace);
25
- return this.client.get(`/projects/${groupId}/ci/catalog/components`, {
26
- params: {
27
- page: pagination?.page ?? 1,
28
- per_page: pagination?.perPage ?? 20,
29
- },
30
- });
132
+ const allNodes = await this.fetchGroupResources(namespace);
133
+ return this.applyOffsetPagination(allNodes, pagination);
31
134
  }
32
135
  /**
33
136
  * Search catalog components by keyword across namespaces.
34
137
  *
138
+ * Fetches ALL matching pages from GraphQL (cursor-based with search),
139
+ * then applies offset-based pagination if requested.
140
+ *
35
141
  * @param query - Search keyword
36
- * @param pagination - Optional page/perPage parameters
142
+ * @param pagination - Optional page/perPage parameters (omit for all results)
37
143
  */
38
144
  async searchComponents(query, pagination) {
39
- // GitLab Catalog API: GET /ci/catalog/components with search param
40
- return this.client.get('/ci/catalog/components', {
41
- params: {
42
- search: query,
43
- page: pagination?.page ?? 1,
44
- per_page: pagination?.perPage ?? 20,
45
- },
46
- });
145
+ const allNodes = await this.fetchAllResources(query);
146
+ return this.applyOffsetPagination(allNodes, pagination);
47
147
  }
48
148
  /**
49
149
  * Get detailed info for a specific component.
50
150
  *
51
- * @param fullPath - Full component path, e.g. "to-be-continuous/docker-build"
151
+ * Uses GraphQL ciCatalogResource with versions and components.
152
+ *
153
+ * @param fullPath - Full component path, e.g. "to-be-continuous/docker"
52
154
  */
53
155
  async getComponentInfo(fullPath) {
54
- return this.client.get(`/ci/catalog/components/${fullPath}`);
156
+ const data = await this.client.query(RESOURCE_DETAIL_QUERY, { fullPath });
157
+ const resource = data.ciCatalogResource;
158
+ if (!resource) {
159
+ throw new NotFoundError(fullPath);
160
+ }
161
+ return this.mapToCatalogComponentDetail(resource);
55
162
  }
56
163
  // ────────────────────────────────────────────
57
- // Private helpers
164
+ // Pagination helpers
58
165
  // ────────────────────────────────────────────
59
166
  /**
60
- * Resolve a namespace string to a GitLab group/project ID.
167
+ * Fetch ALL pages of ciCatalogResources using cursor-based pagination.
168
+ * Keeps requesting the next page while hasNextPage is true.
169
+ *
170
+ * @param search - Optional search term passed to GraphQL
171
+ * @returns Flat array of all resource nodes from all pages
61
172
  */
62
- async resolveNamespace(namespace) {
63
- // GitLab API: GET /groups?search=<namespace>
64
- const groups = await this.client.get('/groups', { params: { search: namespace } });
65
- const group = groups.find((g) => g.path === namespace || g.path === namespace.replace(/^\//, ''));
66
- if (!group) {
67
- throw new Error(`Namespace not found: ${namespace}`);
173
+ async fetchAllResources(search) {
174
+ const allNodes = [];
175
+ let after = null;
176
+ let hasMore = true;
177
+ let pageCount = 0;
178
+ while (hasMore && pageCount < MAX_PAGES) {
179
+ pageCount++;
180
+ const vars = {
181
+ first: GRAPHQL_PAGE_SIZE,
182
+ };
183
+ if (after) {
184
+ vars.after = after;
185
+ }
186
+ if (search) {
187
+ vars.search = search;
188
+ }
189
+ const data = await this.client.query(RESOURCES_PAGE_QUERY, vars);
190
+ const page = data.ciCatalogResources;
191
+ if (!page)
192
+ break;
193
+ allNodes.push(...(page.nodes ?? []));
194
+ hasMore = page.pageInfo?.hasNextPage ?? false;
195
+ after = page.pageInfo?.endCursor ?? null;
68
196
  }
69
- return group.id;
197
+ return allNodes;
198
+ }
199
+ /**
200
+ * Fetch all catalog resources under a specific group/namespace.
201
+ *
202
+ * Uses group(fullPath:) { projects { nodes } } which returns ONLY the
203
+ * projects within that namespace — far more efficient than fetching the
204
+ * entire global catalog and filtering client-side.
205
+ *
206
+ * Filters projects by isCatalogResource === true.
207
+ *
208
+ * @param namespace - GitLab group/namespace path (e.g. "to-be-continuous")
209
+ * @returns Flat array of all catalog resource nodes in the group
210
+ */
211
+ async fetchGroupResources(namespace) {
212
+ const allNodes = [];
213
+ let after = null;
214
+ let hasMore = true;
215
+ let pageCount = 0;
216
+ while (hasMore && pageCount < MAX_PAGES) {
217
+ pageCount++;
218
+ const vars = {
219
+ groupPath: namespace,
220
+ first: GRAPHQL_PAGE_SIZE,
221
+ };
222
+ if (after) {
223
+ vars.after = after;
224
+ }
225
+ const data = await this.client.query(GROUP_RESOURCES_QUERY, vars);
226
+ // Group not found or inaccessible
227
+ if (!data.group)
228
+ break;
229
+ const projects = data.group.projects;
230
+ if (!projects)
231
+ break;
232
+ for (const project of projects.nodes ?? []) {
233
+ if (project.isCatalogResource) {
234
+ // Build fullPath from group path + project path
235
+ const fullPath = `${data.group.fullPath}/${project.path}`;
236
+ allNodes.push({
237
+ id: project.id,
238
+ name: project.name,
239
+ fullPath,
240
+ description: project.description,
241
+ webPath: `/${fullPath}`,
242
+ latestReleasedAt: null,
243
+ versions: undefined,
244
+ });
245
+ }
246
+ }
247
+ hasMore = projects.pageInfo?.hasNextPage ?? false;
248
+ after = projects.pageInfo?.endCursor ?? null;
249
+ }
250
+ return allNodes;
251
+ }
252
+ /**
253
+ * Apply offset-based pagination to a complete result set.
254
+ * When no pagination params are given, returns all items.
255
+ */
256
+ applyOffsetPagination(nodes, pagination) {
257
+ if (!pagination || pagination.page === undefined) {
258
+ // No pagination requested — return ALL results
259
+ return nodes.map((n) => this.mapToCatalogComponent(n));
260
+ }
261
+ const perPage = pagination.perPage ?? DEFAULT_PER_PAGE;
262
+ const page = pagination.page;
263
+ const offset = (page - 1) * perPage;
264
+ const paged = nodes.slice(offset, offset + perPage);
265
+ return paged.map((n) => this.mapToCatalogComponent(n));
266
+ }
267
+ // ────────────────────────────────────────────
268
+ // Mapping helpers
269
+ // ────────────────────────────────────────────
270
+ mapToCatalogComponent(node) {
271
+ const latestVersion = node.versions?.nodes?.[0]?.name ?? '';
272
+ return {
273
+ id: this.extractNumericId(node.id),
274
+ name: node.name,
275
+ full_path: node.fullPath,
276
+ version: latestVersion,
277
+ description: node.description ?? '',
278
+ updated_at: node.latestReleasedAt ?? undefined,
279
+ };
280
+ }
281
+ mapToCatalogComponentDetail(node) {
282
+ const summary = this.mapToCatalogComponent(node);
283
+ const latestVersion = node.versions?.nodes?.[0];
284
+ const components = latestVersion?.components?.nodes ?? [];
285
+ // Collect all inputs from all components
286
+ const inputs = [];
287
+ const jobs = [];
288
+ const workflows = [];
289
+ for (const comp of components) {
290
+ // Map inputs
291
+ for (const input of comp.inputs ?? []) {
292
+ inputs.push({
293
+ name: input.name,
294
+ type: this.mapInputType(input.type),
295
+ required: input.required,
296
+ default: input.default,
297
+ description: input.description ?? undefined,
298
+ regex: input.regex ?? undefined,
299
+ options: input.options ?? undefined,
300
+ });
301
+ }
302
+ // Each component maps to a "job" (simplified)
303
+ jobs.push({
304
+ name: comp.name,
305
+ stage: 'deploy', // GraphQL doesn't expose stage directly
306
+ script: [], // Not available via GraphQL
307
+ });
308
+ // Each component forms a simple workflow
309
+ workflows.push({
310
+ name: comp.name,
311
+ triggers: [],
312
+ jobs: [comp.name],
313
+ });
314
+ }
315
+ return {
316
+ ...summary,
317
+ inputs: inputs.length > 0 ? inputs : undefined,
318
+ jobs: jobs.length > 0 ? jobs : undefined,
319
+ workflows: workflows.length > 0 ? workflows : undefined,
320
+ spec: undefined, // Full YAML spec not available via GraphQL
321
+ };
322
+ }
323
+ /**
324
+ * Map GraphQL input type string to our normalized type.
325
+ */
326
+ mapInputType(type) {
327
+ switch (type) {
328
+ case 'BOOLEAN':
329
+ return 'boolean';
330
+ case 'NUMBER':
331
+ return 'number';
332
+ default:
333
+ return 'string';
334
+ }
335
+ }
336
+ /**
337
+ * Extract numeric ID from global GraphQL ID.
338
+ * e.g. "gid://gitlab/Ci::Catalog::Resource/1001971" → 1001971
339
+ */
340
+ extractNumericId(gid) {
341
+ const parts = gid.split('/');
342
+ const last = parts[parts.length - 1];
343
+ return parseInt(last, 10) || 0;
70
344
  }
71
345
  }
72
346
  //# sourceMappingURL=catalog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/api/catalog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,iDAAiD;AACjD,aAAa;AACb,iDAAiD;AAEjD,MAAM,OAAO,UAAU;IACQ;IAA7B,YAA6B,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;IAAG,CAAC;IAExD;;;;;;OAMG;IACH,KAAK,CAAC,cAAc,CAClB,SAAiB,EACjB,UAA6B;QAE7B,8DAA8D;QAC9D,0DAA0D;QAC1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEvD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CACpB,aAAa,OAAO,wBAAwB,EAC5C;YACE,MAAM,EAAE;gBACN,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC;gBAC3B,QAAQ,EAAE,UAAU,EAAE,OAAO,IAAI,EAAE;aACpC;SACF,CACF,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,gBAAgB,CACpB,KAAa,EACb,UAA6B;QAE7B,mEAAmE;QACnE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAqB,wBAAwB,EAAE;YACnE,MAAM,EAAE;gBACN,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC;gBAC3B,QAAQ,EAAE,UAAU,EAAE,OAAO,IAAI,EAAE;aACpC;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CACpB,0BAA0B,QAAQ,EAAE,CACrC,CAAC;IACJ,CAAC;IAED,+CAA+C;IAC/C,kBAAkB;IAClB,+CAA+C;IAE/C;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QAC9C,6CAA6C;QAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAClC,SAAS,EACT,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAClC,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CACvB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CACvE,CAAC;QACF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,wBAAwB,SAAS,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,KAAK,CAAC,EAAE,CAAC;IAClB,CAAC;CACF"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/api/catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * GraphQL API client for GitLab.
3
+ *
4
+ * Provides unauthenticated (or optionally authenticated) access to GitLab's
5
+ * GraphQL API. Used primarily for CI/CD Catalog queries which do not require
6
+ * a token for public resources.
7
+ *
8
+ * Token is optional — when provided, it's sent as a Bearer token for queries
9
+ * that need authentication (e.g., private resources, mutations).
10
+ */
11
+ import type { GitLabCIConfig } from '../config/types.js';
12
+ export interface GraphQLResponse<T> {
13
+ data?: T;
14
+ errors?: Array<{
15
+ message: string;
16
+ locations?: Array<{
17
+ line: number;
18
+ column: number;
19
+ }>;
20
+ path?: (string | number)[];
21
+ extensions?: Record<string, unknown>;
22
+ }>;
23
+ }
24
+ export interface GraphQLQueryOptions {
25
+ /** Optional auth token */
26
+ token?: string;
27
+ /** Request timeout in ms */
28
+ timeout?: number;
29
+ /** AbortSignal for cancellation */
30
+ signal?: AbortSignal;
31
+ }
32
+ export declare class GraphQLApiClient {
33
+ private readonly baseUrl;
34
+ private readonly token;
35
+ private readonly defaultTimeout;
36
+ constructor(config?: Partial<GitLabCIConfig> & {
37
+ debug?: boolean;
38
+ });
39
+ /**
40
+ * Execute a GraphQL query against the GitLab API.
41
+ *
42
+ * @param query - The GraphQL query string
43
+ * @param variables - Optional query variables
44
+ * @param options - Optional overrides (token, timeout, signal)
45
+ * @returns The `data` field from the GraphQL response
46
+ * @throws NetworkError on connectivity issues
47
+ * @throws NotFoundError if resource not found
48
+ */
49
+ query<T>(queryStr: string, variables?: Record<string, unknown>, options?: GraphQLQueryOptions): Promise<T>;
50
+ private throwHttpError;
51
+ }
52
+ //# sourceMappingURL=graphql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../../src/api/graphql.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMzD,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,MAAM,CAAC,EAAE,KAAK,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACpD,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;QAC3B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,mBAAmB;IAClC,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAMD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAE5B,MAAM,GAAE,OAAO,CAAC,cAAc,CAAC,GAAG;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;IAMtE;;;;;;;;;OASG;IACG,KAAK,CAAC,CAAC,EACX,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,CAAC,CAAC;IA+Fb,OAAO,CAAC,cAAc;CAiBvB"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * GraphQL API client for GitLab.
3
+ *
4
+ * Provides unauthenticated (or optionally authenticated) access to GitLab's
5
+ * GraphQL API. Used primarily for CI/CD Catalog queries which do not require
6
+ * a token for public resources.
7
+ *
8
+ * Token is optional — when provided, it's sent as a Bearer token for queries
9
+ * that need authentication (e.g., private resources, mutations).
10
+ */
11
+ import { NetworkError, NotFoundError, ServerError, AuthenticationError, PermissionError, RateLimitError, } from '../types/api.js';
12
+ // ──────────────────────────────────────────────
13
+ // GraphQLApiClient
14
+ // ──────────────────────────────────────────────
15
+ export class GraphQLApiClient {
16
+ baseUrl;
17
+ token;
18
+ defaultTimeout;
19
+ constructor(config = {}) {
20
+ this.baseUrl = (config.gitlabUrl ?? 'https://gitlab.com').replace(/\/+$/, '');
21
+ this.token = config.token;
22
+ this.defaultTimeout = config.timeout ?? 30000;
23
+ }
24
+ /**
25
+ * Execute a GraphQL query against the GitLab API.
26
+ *
27
+ * @param query - The GraphQL query string
28
+ * @param variables - Optional query variables
29
+ * @param options - Optional overrides (token, timeout, signal)
30
+ * @returns The `data` field from the GraphQL response
31
+ * @throws NetworkError on connectivity issues
32
+ * @throws NotFoundError if resource not found
33
+ */
34
+ async query(queryStr, variables, options = {}) {
35
+ const url = `${this.baseUrl}/api/graphql`;
36
+ const token = options.token ?? this.token;
37
+ const timeout = options.timeout ?? this.defaultTimeout;
38
+ const headers = {
39
+ 'Content-Type': 'application/json',
40
+ Accept: 'application/json',
41
+ };
42
+ if (token) {
43
+ headers['Authorization'] = `Bearer ${token}`;
44
+ }
45
+ const controller = new AbortController();
46
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
47
+ const signal = options.signal
48
+ ? composeAbortSignals(options.signal, controller.signal)
49
+ : controller.signal;
50
+ try {
51
+ const response = await fetch(url, {
52
+ method: 'POST',
53
+ headers,
54
+ body: JSON.stringify({
55
+ query: queryStr,
56
+ variables: variables ?? undefined,
57
+ }),
58
+ signal,
59
+ });
60
+ clearTimeout(timeoutId);
61
+ // Handle HTTP-level errors
62
+ if (!response.ok) {
63
+ this.throwHttpError(response.status, response.statusText, url);
64
+ }
65
+ const json = (await response.json());
66
+ // Handle GraphQL-level errors
67
+ if (json.errors && json.errors.length > 0) {
68
+ const isNotFound = json.errors.some((e) => e.message.includes('does not exist') ||
69
+ e.message.includes("don't have permission"));
70
+ if (isNotFound) {
71
+ throw new NotFoundError(url);
72
+ }
73
+ // For other GraphQL errors, log but return partial data if available
74
+ // This matches GitLab's behavior of returning both errors and partial data
75
+ if (json.data === undefined) {
76
+ throw new Error(`GraphQL error: ${json.errors.map((e) => e.message).join('; ')}`);
77
+ }
78
+ }
79
+ if (json.data === undefined) {
80
+ throw new Error('GraphQL response contained no data');
81
+ }
82
+ return json.data;
83
+ }
84
+ catch (err) {
85
+ clearTimeout(timeoutId);
86
+ if (err instanceof NotFoundError ||
87
+ err instanceof AuthenticationError ||
88
+ err instanceof PermissionError ||
89
+ err instanceof NetworkError ||
90
+ err instanceof ServerError ||
91
+ err instanceof RateLimitError) {
92
+ throw err;
93
+ }
94
+ if (err instanceof DOMException && err.name === 'AbortError') {
95
+ throw new NetworkError(this.baseUrl, `GraphQL request timed out after ${timeout}ms`);
96
+ }
97
+ throw new NetworkError(this.baseUrl, err instanceof Error ? err.message : String(err));
98
+ }
99
+ }
100
+ throwHttpError(status, statusText, url) {
101
+ switch (status) {
102
+ case 401:
103
+ throw new AuthenticationError();
104
+ case 403:
105
+ throw new PermissionError(`Forbidden: ${statusText}`);
106
+ case 404:
107
+ throw new NotFoundError(url);
108
+ case 429:
109
+ throw new RateLimitError(`Rate limited: ${statusText}`);
110
+ default:
111
+ if (status >= 500) {
112
+ throw new ServerError(status, statusText);
113
+ }
114
+ throw new Error(`GitLab API error (${status}): ${statusText}`);
115
+ }
116
+ }
117
+ }
118
+ // ──────────────────────────────────────────────
119
+ // Helpers
120
+ // ──────────────────────────────────────────────
121
+ function composeAbortSignals(s1, s2) {
122
+ const controller = new AbortController();
123
+ const onAbort = () => controller.abort();
124
+ s1.addEventListener('abort', onAbort);
125
+ s2.addEventListener('abort', onAbort);
126
+ if (!s1.aborted && !s2.aborted) {
127
+ controller.signal.addEventListener('abort', () => {
128
+ s1.removeEventListener('abort', onAbort);
129
+ s2.removeEventListener('abort', onAbort);
130
+ });
131
+ }
132
+ return controller.signal;
133
+ }
134
+ //# sourceMappingURL=graphql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql.js","sourceRoot":"","sources":["../../src/api/graphql.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,cAAc,GACf,MAAM,iBAAiB,CAAC;AA0BzB,iDAAiD;AACjD,mBAAmB;AACnB,iDAAiD;AAEjD,MAAM,OAAO,gBAAgB;IACV,OAAO,CAAS;IAChB,KAAK,CAAqB;IAC1B,cAAc,CAAS;IAExC,YAAY,SAAwD,EAAE;QACpE,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,oBAAoB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;IAChD,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,KAAK,CACT,QAAgB,EAChB,SAAmC,EACnC,UAA+B,EAAE;QAEjC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,cAAc,CAAC;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;QAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC;QAEvD,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,kBAAkB;SAC3B,CAAC;QAEF,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;QAC/C,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QAEhE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;YAC3B,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;YACxD,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QAEtB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,QAAQ;oBACf,SAAS,EAAE,SAAS,IAAI,SAAS;iBAClC,CAAC;gBACF,MAAM;aACP,CAAC,CAAC;YAEH,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,2BAA2B;YAC3B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YACjE,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC;YAE3D,8BAA8B;YAC9B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;oBACpC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAC9C,CAAC;gBAEF,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC/B,CAAC;gBAED,qEAAqE;gBACrE,2EAA2E;gBAC3E,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC5B,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjE,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YAED,OAAO,IAAI,CAAC,IAAS,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,IACE,GAAG,YAAY,aAAa;gBAC5B,GAAG,YAAY,mBAAmB;gBAClC,GAAG,YAAY,eAAe;gBAC9B,GAAG,YAAY,YAAY;gBAC3B,GAAG,YAAY,WAAW;gBAC1B,GAAG,YAAY,cAAc,EAC7B,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;YAED,IAAI,GAAG,YAAY,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC7D,MAAM,IAAI,YAAY,CACpB,IAAI,CAAC,OAAO,EACZ,mCAAmC,OAAO,IAAI,CAC/C,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,YAAY,CACpB,IAAI,CAAC,OAAO,EACZ,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,MAAc,EAAE,UAAkB,EAAE,GAAW;QACpE,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,GAAG;gBACN,MAAM,IAAI,mBAAmB,EAAE,CAAC;YAClC,KAAK,GAAG;gBACN,MAAM,IAAI,eAAe,CAAC,cAAc,UAAU,EAAE,CAAC,CAAC;YACxD,KAAK,GAAG;gBACN,MAAM,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;YAC/B,KAAK,GAAG;gBACN,MAAM,IAAI,cAAc,CAAC,iBAAiB,UAAU,EAAE,CAAC,CAAC;YAC1D;gBACE,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;oBAClB,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBAC5C,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,MAAM,UAAU,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;CACF;AAED,iDAAiD;AACjD,UAAU;AACV,iDAAiD;AAEjD,SAAS,mBAAmB,CAAC,EAAe,EAAE,EAAe;IAC3D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IAEzC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACzC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEtC,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QAC/B,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAC/C,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACzC,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC,MAAM,CAAC;AAC3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/commands/catalog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAOzD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAeD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAoD/C;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAoD/C;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAuC/C"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/commands/catalog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAOzD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAqBD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAoD/C;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAoD/C;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAuC/C"}
@@ -5,14 +5,20 @@
5
5
  * Uses the CatalogApi client for GitLab API interactions.
6
6
  */
7
7
  import { CatalogApi } from '../api/catalog.js';
8
- import { GitLabApiClient } from '../api/gitlab.js';
8
+ import { GraphQLApiClient } from '../api/graphql.js';
9
9
  import { renderTable, renderDetail } from '../output/table.js';
10
10
  import { NotFoundError } from '../types/api.js';
11
11
  // ──────────────────────────────────────────────
12
12
  // Helpers
13
13
  // ──────────────────────────────────────────────
14
14
  function createCatalogApi(config) {
15
- const client = new GitLabApiClient(config);
15
+ // Do NOT pass config.token — Catalog API is public via GraphQL.
16
+ // An expired/invalid token would cause 401 errors even for public resources.
17
+ // Keep gitlabUrl and timeout for self-managed GitLab instances.
18
+ const client = new GraphQLApiClient({
19
+ gitlabUrl: config.gitlabUrl,
20
+ timeout: config.timeout,
21
+ });
16
22
  return new CatalogApi(client);
17
23
  }
18
24
  // ──────────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/commands/catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/commands/catalog.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/commands/component.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQzD,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAeD;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAoD/C;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA4D/C;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAC9B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAiC/C;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAiD/C"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/commands/component.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQzD,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAqBD;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAoD/C;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA4D/C;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAC9B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAiC/C;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAiD/C"}
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import { writeFileSync } from 'node:fs';
8
8
  import { CatalogApi } from '../api/catalog.js';
9
- import { GitLabApiClient } from '../api/gitlab.js';
9
+ import { GraphQLApiClient } from '../api/graphql.js';
10
10
  import { renderTable } from '../output/table.js';
11
11
  import { NotFoundError } from '../types/api.js';
12
12
  import { SchemaCache, buildComponentCacheKey } from '../cache/schema-cache.js';
@@ -14,7 +14,13 @@ import { SchemaCache, buildComponentCacheKey } from '../cache/schema-cache.js';
14
14
  // Helpers
15
15
  // ──────────────────────────────────────────────
16
16
  function createCatalogApi(config) {
17
- const client = new GitLabApiClient(config);
17
+ // Do NOT pass config.token — Catalog API is public via GraphQL.
18
+ // An expired/invalid token would cause 401 errors even for public resources.
19
+ // Keep gitlabUrl and timeout for self-managed GitLab instances.
20
+ const client = new GraphQLApiClient({
21
+ gitlabUrl: config.gitlabUrl,
22
+ timeout: config.timeout,
23
+ });
18
24
  return new CatalogApi(client);
19
25
  }
20
26
  // ──────────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sourceRoot":"","sources":["../../src/commands/component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../../src/commands/component.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAA+B,MAAM,oBAAoB,CAAC;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAgB/E,iDAAiD;AACjD,UAAU;AACV,iDAAiD;AAEjD,SAAS,gBAAgB,CAAC,MAA+B;IACvD,gEAAgE;IAChE,6EAA6E;IAC7E,gEAAgE;IAChE,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC;QAClC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;IACH,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,iDAAiD;AACjD,WAAW;AACX,iDAAiD;AAEjD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,QAAgB,EAChB,MAA+B,EAC/B,UAAkC,EAAE;IAEpC,IAAI,CAAC;QACH,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAEnE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAoB,QAAQ,CAAC,CAAC;YACtD,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,uBAAuB,CAAC;gBAChE,MAAM,MAAM,GAAG,gBAAgB,WAAW,EAAE,CAAC;gBAE7C,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;oBACvB,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;oBACxD,OAAO;wBACL,QAAQ,EAAE,CAAC;wBACX,MAAM,EAAE,mBAAmB,OAAO,CAAC,UAAU,eAAe;qBAC7D,CAAC;gBACJ,CAAC;gBAED,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;YACjC,CAAC;QACH,CAAC;QAED,+CAA+C;QAC/C,MAAM,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEvD,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,IAAI,uBAAuB,CAAC;QAE9D,+CAA+C;QAC/C,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;YAChC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YACxD,OAAO;gBACL,QAAQ,EAAE,CAAC;gBACX,MAAM,EAAE,mBAAmB,OAAO,CAAC,UAAU,EAAE;aAChD,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,GAAG,YAAY,aAAa;YAC9C,CAAC,CAAC,cAAc,QAAQ,aAAa;YACrC,CAAC,CAAC,UAAU,OAAO,EAAE,CAAC;QACxB,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAC9C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,QAAgB,EAChB,MAA+B,EAC/B,UAAkC,EAAE;IAEpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEvD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC;QAEtC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;gBACL,QAAQ,EAAE,CAAC;gBACX,MAAM,EAAE,OAAO,CAAC,IAAI;oBAClB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,cAAc,QAAQ,qBAAqB,EAAE,CAAC;oBACnG,CAAC,CAAC,cAAc,QAAQ,qBAAqB;aAChD,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO;gBACL,QAAQ,EAAE,CAAC;gBACX,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;aACjE,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAe,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC9C,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;YACvC,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG;YAClE,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;YACpC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACxC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;SACzB,CAAC,CAAC,CAAC;QAEJ,MAAM,KAAK,GAAG,WAAW,CACvB;YACE,EAAE,MAAM,EAAE,MAAM,EAAE;YAClB,EAAE,MAAM,EAAE,MAAM,EAAE;YAClB,EAAE,MAAM,EAAE,UAAU,EAAE;YACtB,EAAE,MAAM,EAAE,SAAS,EAAE;YACrB,EAAE,MAAM,EAAE,aAAa,EAAE;YACzB,EAAE,MAAM,EAAE,SAAS,EAAE;YACrB,EAAE,MAAM,EAAE,OAAO,EAAE;SACpB,EACD,IAAI,CACL,CAAC;QAEF,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,GAAG,YAAY,aAAa;YAC9C,CAAC,CAAC,cAAc,QAAQ,aAAa;YACrC,CAAC,CAAC,UAAU,OAAO,EAAE,CAAC;QACxB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO;gBACL,QAAQ,EAAE,CAAC;gBACX,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAC9C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,QAAgB,EAChB,MAA+B;IAE/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEvD,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC;QAE5C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACL,QAAQ,EAAE,CAAC;gBACX,MAAM,EAAE,cAAc,QAAQ,wBAAwB;aACvD,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChD,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;IAC7D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,GAAG,YAAY,aAAa;YAC9C,CAAC,CAAC,cAAc,QAAQ,aAAa;YACrC,CAAC,CAAC,UAAU,OAAO,EAAE,CAAC;QACxB,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAC9C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,MAA+B,EAC/B,UAAuC,EAAE;IAEzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEvD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;QAElC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO;gBACL,QAAQ,EAAE,CAAC;gBACX,MAAM,EAAE,cAAc,QAAQ,mBAAmB;aAClD,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YACrC,IAAI,GAAG,CAAC,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;qBAC1C,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;qBAC5B,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClD,CAAC;YACD,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChD,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;oBAC1B,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBACb,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACtC,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;IAC7D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,GAAG,YAAY,aAAa;YAC9C,CAAC,CAAC,cAAc,QAAQ,aAAa;YACrC,CAAC,CAAC,UAAU,OAAO,EAAE,CAAC;QACxB,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAC9C,CAAC;AACH,CAAC"}
@@ -2,6 +2,7 @@
2
2
  * Simple table formatter for CLI output.
3
3
  *
4
4
  * Renders aligned, human-readable tables without external dependencies.
5
+ * Sanitizes cell values (strips newlines) to prevent layout breaks.
5
6
  */
6
7
  export interface TableColumn {
7
8
  /** Column header text */
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/output/table.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,WAAW;IAC1B,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;AAMpF;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CA6C5E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CAMnF"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/output/table.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,WAAW;IAC1B,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;AAoBpF;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CA6C5E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CAMnF"}
@@ -2,8 +2,21 @@
2
2
  * Simple table formatter for CLI output.
3
3
  *
4
4
  * Renders aligned, human-readable tables without external dependencies.
5
+ * Sanitizes cell values (strips newlines) to prevent layout breaks.
5
6
  */
6
7
  // ──────────────────────────────────────────────
8
+ // Cell value sanitization
9
+ // ──────────────────────────────────────────────
10
+ /**
11
+ * Sanitize a cell value for table display.
12
+ *
13
+ * - Replaces newlines/CR with spaces (they break table layout)
14
+ * - Collapses consecutive whitespace into a single space
15
+ */
16
+ function sanitize(val) {
17
+ return val.replace(/[\r\n]+/g, ' ').replace(/ {2,}/g, ' ');
18
+ }
19
+ // ──────────────────────────────────────────────
7
20
  // Render
8
21
  // ──────────────────────────────────────────────
9
22
  /**
@@ -17,11 +30,11 @@ export function renderTable(columns, rows) {
17
30
  if (columns.length === 0)
18
31
  return '';
19
32
  const headers = columns.map((c) => c.header);
20
- // Calculate column widths
33
+ // Calculate column widths using sanitized string lengths
21
34
  const colWidths = columns.map((col) => {
22
35
  const headerLen = col.header.length;
23
36
  const maxDataLen = rows.reduce((max, row) => {
24
- const val = String(row[col.header] ?? '');
37
+ const val = sanitize(String(row[col.header] ?? ''));
25
38
  return Math.max(max, val.length);
26
39
  }, 0);
27
40
  return Math.max(headerLen, maxDataLen);
@@ -43,7 +56,7 @@ export function renderTable(columns, rows) {
43
56
  for (const row of rows) {
44
57
  const dataLine = columns
45
58
  .map((col, i) => {
46
- const val = String(row[col.header] ?? '');
59
+ const val = sanitize(String(row[col.header] ?? ''));
47
60
  const width = colWidths[i];
48
61
  const align = col.align ?? 'left';
49
62
  return align === 'right' ? val.padStart(width) : val.padEnd(width);
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/output/table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/output/table.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gitlab-catalog-browser",
3
- "version": "0.2.6",
3
+ "version": "0.2.7",
4
4
  "description": "CLI tool for AI agents to browse GitLab CI/CD Catalog, inspect component schemas, and validate pipeline configurations",
5
5
  "type": "module",
6
6
  "bin": {