@checkdigit/eslint-plugin 7.18.0-PR.143-e2e9 → 7.18.0-PR.143-cf9d

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,18 +1,18 @@
1
1
  // src/athena/visitor.ts
2
- import debug from "debug";
3
- var log = debug("athena:visitor");
2
+ function hasNodeType(node, type) {
3
+ return typeof node === "object" && node !== null && node.type === type;
4
+ }
4
5
  function isUnnestFrom(node) {
5
- return typeof node === "object" && node !== null && node.type === "unnest";
6
+ return hasNodeType(node, "unnest");
6
7
  }
7
8
  function isDual(node) {
8
- return typeof node === "object" && node !== null && node.type === "dual";
9
+ return hasNodeType(node, "dual");
9
10
  }
10
11
  function isValuesFrom(node) {
11
12
  if (typeof node !== "object" || node === null) {
12
13
  return false;
13
14
  }
14
- const expr = node.expr;
15
- return typeof expr === "object" && expr !== null && expr.type === "values";
15
+ return hasNodeType(node.expr, "values");
16
16
  }
17
17
  function isTableExpr(node) {
18
18
  if (typeof node !== "object" || node === null) {
@@ -21,11 +21,14 @@ function isTableExpr(node) {
21
21
  const expr = node.expr;
22
22
  return typeof expr === "object" && expr !== null && "ast" in expr;
23
23
  }
24
+ function isRegularFromItem(node) {
25
+ return typeof node === "object" && node !== null && !isUnnestFrom(node) && !isDual(node) && !isTableExpr(node);
26
+ }
24
27
  function isJoin(node) {
25
- return !isUnnestFrom(node) && !isDual(node) && !isTableExpr(node) && typeof node === "object" && node !== null && "join" in node;
28
+ return isRegularFromItem(node) && "join" in node;
26
29
  }
27
30
  function isBaseFrom(node) {
28
- return !isUnnestFrom(node) && !isDual(node) && !isTableExpr(node) && !isJoin(node) && typeof node === "object" && node !== null && "table" in node;
31
+ return isRegularFromItem(node) && !isJoin(node) && "table" in node;
29
32
  }
30
33
  function hasArrayIndex(node) {
31
34
  const typed = node;
@@ -134,6 +137,15 @@ function walkFrom(node, visitor) {
134
137
  }
135
138
  visitor.visitBaseFrom?.(node);
136
139
  }
140
+ function fromClauseItems(select) {
141
+ if (Array.isArray(select.from)) {
142
+ return select.from;
143
+ }
144
+ if (select.from !== null) {
145
+ return [select.from];
146
+ }
147
+ return [];
148
+ }
137
149
  function walk(node, visitor) {
138
150
  if (typeof node !== "object" || node === null) {
139
151
  return;
@@ -146,15 +158,7 @@ function walk(node, visitor) {
146
158
  visitor.visitWith?.(withItem);
147
159
  walk(withItem.stmt.ast, visitor);
148
160
  }
149
- let fromItems;
150
- if (Array.isArray(sel.from)) {
151
- fromItems = sel.from;
152
- } else if (sel.from !== null) {
153
- fromItems = [sel.from];
154
- } else {
155
- fromItems = [];
156
- }
157
- for (const fromItem of fromItems) {
161
+ for (const fromItem of fromClauseItems(sel)) {
158
162
  walkFrom(fromItem, visitor);
159
163
  }
160
164
  for (const col of sel.columns) {
@@ -190,28 +194,6 @@ function extractColumnRefs(expr) {
190
194
  });
191
195
  return refs;
192
196
  }
193
- function extractJsonExtractPath(expr) {
194
- let path;
195
- walkExpr(expr, {
196
- visitFunction(node) {
197
- if (path !== void 0) {
198
- return;
199
- }
200
- const fnName = node.name.name[0]?.value;
201
- if (fnName === "json_extract_scalar" || fnName === "json_extract") {
202
- const pathArg = node.args?.value[1];
203
- if (pathArg !== void 0) {
204
- const val = pathArg.value;
205
- if (typeof val === "string") {
206
- path = val;
207
- }
208
- }
209
- log("extractJsonExtractPath, function:", fnName, path);
210
- }
211
- }
212
- });
213
- return path;
214
- }
215
197
  function extractJsonExtractCalls(expr) {
216
198
  const calls = [];
217
199
  walkExpr(expr, {
@@ -239,6 +221,9 @@ function extractJsonExtractCalls(expr) {
239
221
  });
240
222
  return calls;
241
223
  }
224
+ function extractJsonExtractPath(expr) {
225
+ return extractJsonExtractCalls(expr)[0]?.path;
226
+ }
242
227
  function extractBracketAccessorPath(expr) {
243
228
  let path;
244
229
  walkExpr(expr, {
@@ -266,29 +251,23 @@ function hasFunctionCalls(expr) {
266
251
  });
267
252
  return found;
268
253
  }
269
- function containsCastToArray(expr) {
254
+ function containsCastToType(expr, dataType) {
270
255
  let found = false;
271
256
  walkExpr(expr, {
272
257
  visitCast(node) {
273
258
  const target = node.target?.[0];
274
- if (target?.dataType === "ARRAY") {
259
+ if (target?.dataType === dataType) {
275
260
  found = true;
276
261
  }
277
262
  }
278
263
  });
279
264
  return found;
280
265
  }
266
+ function containsCastToArray(expr) {
267
+ return containsCastToType(expr, "ARRAY");
268
+ }
281
269
  function containsCastToMap(expr) {
282
- let found = false;
283
- walkExpr(expr, {
284
- visitCast(node) {
285
- const target = node.target?.[0];
286
- if (target?.dataType === "MAP") {
287
- found = true;
288
- }
289
- }
290
- });
291
- return found;
270
+ return containsCastToType(expr, "MAP");
292
271
  }
293
272
  export {
294
273
  containsCastToArray,
@@ -298,6 +277,7 @@ export {
298
277
  extractColumnRefs,
299
278
  extractJsonExtractCalls,
300
279
  extractJsonExtractPath,
280
+ fromClauseItems,
301
281
  hasArrayIndex,
302
282
  hasFunctionCalls,
303
283
  isBaseFrom,
@@ -308,4 +288,4 @@ export {
308
288
  isValuesFrom,
309
289
  walk
310
290
  };
311
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2F0aGVuYS92aXNpdG9yLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQUVBLE9BQU8sV0FBVztBQUVsQixJQUFNLE1BQU0sTUFBTSxnQkFBZ0I7QUFvRTNCLFNBQVMsYUFBYSxNQUFtQztBQUM5RCxTQUFPLE9BQU8sU0FBUyxZQUFZLFNBQVMsUUFBUyxLQUE0QixTQUFTO0FBQzVGO0FBRU8sU0FBUyxPQUFPLE1BQTZCO0FBQ2xELFNBQU8sT0FBTyxTQUFTLFlBQVksU0FBUyxRQUFTLEtBQTRCLFNBQVM7QUFDNUY7QUFFTyxTQUFTLGFBQWEsTUFBbUM7QUFDOUQsTUFBSSxPQUFPLFNBQVMsWUFBWSxTQUFTLE1BQU07QUFDN0MsV0FBTztBQUFBLEVBQ1Q7QUFDQSxRQUFNLE9BQVEsS0FBNEI7QUFDMUMsU0FBTyxPQUFPLFNBQVMsWUFBWSxTQUFTLFFBQVMsS0FBNEIsU0FBUztBQUM1RjtBQUVPLFNBQVMsWUFBWSxNQUFrQztBQUM1RCxNQUFJLE9BQU8sU0FBUyxZQUFZLFNBQVMsTUFBTTtBQUM3QyxXQUFPO0FBQUEsRUFDVDtBQUNBLFFBQU0sT0FBUSxLQUE0QjtBQUMxQyxTQUFPLE9BQU8sU0FBUyxZQUFZLFNBQVMsUUFBUSxTQUFTO0FBQy9EO0FBRU8sU0FBUyxPQUFPLE1BQTZCO0FBQ2xELFNBQ0UsQ0FBQyxhQUFhLElBQUksS0FDbEIsQ0FBQyxPQUFPLElBQUksS0FDWixDQUFDLFlBQVksSUFBSSxLQUNqQixPQUFPLFNBQVMsWUFDaEIsU0FBUyxRQUNULFVBQVU7QUFFZDtBQUVPLFNBQVMsV0FBVyxNQUFpQztBQUMxRCxTQUNFLENBQUMsYUFBYSxJQUFJLEtBQ2xCLENBQUMsT0FBTyxJQUFJLEtBQ1osQ0FBQyxZQUFZLElBQUksS0FDakIsQ0FBQyxPQUFPLElBQUksS0FDWixPQUFPLFNBQVMsWUFDaEIsU0FBUyxRQUNULFdBQVc7QUFFZjtBQUVPLFNBQVMsY0FBYyxNQUFpRDtBQUM3RSxRQUFNLFFBQVE7QUFDZCxTQUFPLE1B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
291
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2F0aGVuYS92aXNpdG9yLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQW9FQSxTQUFTLFlBQVksTUFBZSxNQUF1QjtBQUN6RCxTQUFPLE9BQU8sU0FBUyxZQUFZLFNBQVMsUUFBUyxLQUE0QixTQUFTO0FBQzVGO0FBRU8sU0FBUyxhQUFhLE1BQW1DO0FBQzlELFNBQU8sWUFBWSxNQUFNLFFBQVE7QUFDbkM7QUFFTyxTQUFTLE9BQU8sTUFBNkI7QUFDbEQsU0FBTyxZQUFZLE1BQU0sTUFBTTtBQUNqQztBQUVPLFNBQVMsYUFBYSxNQUFtQztBQUM5RCxNQUFJLE9BQU8sU0FBUyxZQUFZLFNBQVMsTUFBTTtBQUM3QyxXQUFPO0FBQUEsRUFDVDtBQUNBLFNBQU8sWUFBYSxLQUE0QixNQUFNLFFBQVE7QUFDaEU7QUFFTyxTQUFTLFlBQVksTUFBa0M7QUFDNUQsTUFBSSxPQUFPLFNBQVMsWUFBWSxTQUFTLE1BQU07QUFDN0MsV0FBTztBQUFBLEVBQ1Q7QUFDQSxRQUFNLE9BQVEsS0FBNEI7QUFDMUMsU0FBTyxPQUFPLFNBQVMsWUFBWSxTQUFTLFFBQVEsU0FBUztBQUMvRDtBQUVBLFNBQVMsa0JBQWtCLE1BQXdCO0FBQ2pELFNBQU8sT0FBTyxTQUFTLFlBQVksU0FBUyxRQUFRLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSTtBQUMvRztBQUVPLFNBQVMsT0FBTyxNQUE2QjtBQUNsRCxTQUFPLGtCQUFrQixJQUFJLEtBQUssVUFBVztBQUMvQztBQUVPLFNBQVMsV0FBVyxNQUFpQztBQUMxRCxTQUFPLGtCQUFrQixJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxXQUFZO0FBQ2pFO0FBRU8sU0FBUyxjQUFjLE1BQWlEO0FBQzdFLFFBQU0sUUFBUTtBQUNkLFNBQU8sTUFBTSxRQUFRLE1BQU0sV0FBVyxLQUFLLE1BQU0sWUFBWSxTQUFTO0FBQ3hFO0FBT0EsU0FBUyxTQUFTLE1BQWUs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
@@ -33,15 +33,15 @@ function getRequestParametersSchema(operation, parameterType, document) {
33
33
  if (operation.parameters === void 0) {
34
34
  return;
35
35
  }
36
- let parameters = getParameters(operation.parameters, document);
37
- parameters = parameters.filter((parameter) => parameter.in === parameterType);
36
+ const parameters = getParameters(operation.parameters, document).filter(
37
+ (parameter) => parameter.in === parameterType
38
+ );
38
39
  if (parameters.length === 0) {
39
40
  return;
40
41
  }
41
42
  const parametersSchema = Object.fromEntries(
42
43
  parameters.map((parameter) => [
43
44
  parameterType === "header" ? parameter.name.toLowerCase() : parameter.name,
44
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
45
45
  parameter.schema ?? { type: "string" }
46
46
  ])
47
47
  );
@@ -56,14 +56,8 @@ function getRequestParametersSchema(operation, parameterType, document) {
56
56
  return schema;
57
57
  }
58
58
  function getBodySchema(contents) {
59
- if (contents === void 0) {
60
- return void 0;
61
- }
62
- const schema = Object.values(contents)[0]?.schema;
63
- if (schema !== void 0 && Object.keys(schema).length === 0) {
64
- return void 0;
65
- }
66
- return schema;
59
+ const schema = Object.values(contents ?? {})[0]?.schema;
60
+ return schema !== void 0 && Object.keys(schema).length > 0 ? schema : void 0;
67
61
  }
68
62
  function getRequestBodySchema(operation, document) {
69
63
  if (!Object.hasOwn(operation, "requestBody")) {
@@ -121,13 +115,9 @@ function getResponseHeadersSchema(headers, document) {
121
115
  Object.entries(headers).map(([name, header]) => [name.toLowerCase(), resolve(document, header)])
122
116
  );
123
117
  const resolvedHeaderSchemas = Object.fromEntries(
124
- Object.entries(resolvedHeaders).map(([name, header]) => [
125
- name,
126
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
127
- header.schema ?? { type: "string" }
128
- ])
118
+ Object.entries(resolvedHeaders).map(([name, header]) => [name, header.schema ?? { type: "string" }])
129
119
  );
130
- const requiredHeaderNames = Object.entries(resolvedHeaders).filter(([_name, header]) => header.required === true).map(([name]) => name);
120
+ const requiredHeaderNames = Object.entries(resolvedHeaders).filter(([, header]) => header.required === true).map(([name]) => name);
131
121
  return {
132
122
  type: "object",
133
123
  properties: resolvedHeaderSchemas,
@@ -171,10 +161,10 @@ function getOperationId(path, method, operation, operationIds) {
171
161
  return operationId;
172
162
  }
173
163
  let operationIdIndex = 1;
174
- while (operationIds.has(`${operationId}${operationIdIndex}`)) {
164
+ while (operationIds.has(`${operationId}${operationIdIndex.toString()}`)) {
175
165
  operationIdIndex += 1;
176
166
  }
177
- return `${operationId}${operationIdIndex}`;
167
+ return `${operationId}${operationIdIndex.toString()}`;
178
168
  }
179
169
  function updateOpenapiSchemaDefinitionsReferences(value, relativeSchemaDefinitionReferenceUri, key) {
180
170
  if (typeof value === "string" && key === "$ref" && value.startsWith(OPENAPI_SCHEMA_DEFINITIONS_REFERENCE_URI_BASE)) {
@@ -193,6 +183,10 @@ function updateOpenapiSchemaDefinitionsReferences(value, relativeSchemaDefinitio
193
183
  }
194
184
  return value;
195
185
  }
186
+ function getFirehoseLoggedExtension(obj) {
187
+ const record = obj;
188
+ return record["x-firehose-logged"] ?? record["x-firehoseLogged"];
189
+ }
196
190
  function buildApiSchemaFromDocument(document, organization, serviceName) {
197
191
  if (document.paths === void 0) {
198
192
  return null;
@@ -207,16 +201,16 @@ function buildApiSchemaFromDocument(document, organization, serviceName) {
207
201
  const apiSchemas = {};
208
202
  const allSchemas = { apis: apiSchemas };
209
203
  const operationIds = /* @__PURE__ */ new Set();
210
- const documentFirehoseLogged = document["x-firehose-logged"] ?? document["x-firehoseLogged"];
204
+ const documentFirehoseLogged = getFirehoseLoggedExtension(document);
211
205
  log("document firehose logged value", documentFirehoseLogged);
212
206
  for (const [path, pathItems] of Object.entries(document.paths)) {
213
- const koaPath = path.replaceAll(/\{([^}]+)\}/gu, ":$1");
207
+ const koaPath = path.replaceAll(/\{(?<param>[^}]+)\}/gu, ":$<param>");
214
208
  const pathSchemas = {};
215
209
  apiSchemas[`${serverPathname}${koaPath}`] = pathSchemas;
216
210
  for (const method of ALL_OPERATION_METHODS) {
217
211
  const operation = pathItems?.[method];
218
212
  if (operation !== void 0) {
219
- const operationFirehoseLogged = operation["x-firehose-logged"] ?? operation["x-firehoseLogged"];
213
+ const operationFirehoseLogged = getFirehoseLoggedExtension(operation);
220
214
  log("operation firehose logged value", operationFirehoseLogged);
221
215
  const effectiveFirehoseLogged = operationFirehoseLogged ?? documentFirehoseLogged;
222
216
  if (effectiveFirehoseLogged !== true) {
@@ -278,4 +272,4 @@ export {
278
272
  generateSchemas,
279
273
  generateSchemasForService
280
274
  };
281
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL29wZW5hcGkvZ2VuZXJhdGUtc2NoZW1hLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQUVBLFNBQVMsVUFBVSxjQUFjO0FBQ2pDLFNBQVMsWUFBWSxVQUFVO0FBRS9CLE9BQU8sV0FBVztBQUNsQixTQUFTLHVCQUF1QjtBQUNoQyxPQUFPLGFBQWE7QUFDcEIsT0FBTyxZQUFZO0FBS25CLFNBQVMsaUNBQWlDO0FBRG5DLElBQU0sY0FBYztBQUczQixJQUFNLE1BQU0sTUFBTSw2QkFBNkI7QUFFL0MsSUFBTSx3QkFBd0IsQ0FBQyxPQUFPLE9BQU8sUUFBUSxRQUFRLFNBQVMsU0FBUyxVQUFVLFNBQVM7QUFDbEcsSUFBTSw0QkFBNEI7QUFDbEMsSUFBTSxnREFBZ0Q7QUFDL0MsSUFBTSwwQkFBMEI7QUFrQ3ZDLFNBQVMscUJBQXFCLFFBQXlCO0FBQ3JELFNBQU8sQ0FBQyxRQUFRLE9BQU8sT0FBTyxFQUFFLFNBQVMsTUFBTTtBQUNqRDtBQUVBLFNBQVMsa0JBQWtCLFFBQWdEO0FBQ3pFLFNBQU8sT0FBTyxPQUFPLFFBQStCLE1BQU07QUFDNUQ7QUFFQSxTQUFTLFFBQVcsVUFBd0IsV0FBdUM7QUFDakYsTUFBSSxDQUFDLGtCQUFrQixTQUFTLEdBQUc7QUFDakMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLG1CQUFtQixVQUFVLEtBQUssTUFBTSxDQUFDO0FBQy9DLFFBQU0sb0JBQW9CLFFBQVEsSUFBSSxVQUFVLGdCQUFnQjtBQUNoRSxTQUFPLFFBQVEsVUFBVSxpQkFBaUI7QUFDNUM7QUFFQSxTQUFTLGNBQ1AsWUFDQSxVQUN1QjtBQUN2QixTQUFPLFdBQVcsSUFBSSxDQUFDLGNBQWMsUUFBUSxVQUFVLFNBQVMsQ0FBQztBQUNuRTtBQUVBLFNBQVMsMkJBQ1AsV0FDQSxlQUNBLFVBQzhCO0FBQzlCLE1BQUksVUFBVSxlQUFlLFFBQVc7QUFDdEM7QUFBQSxFQUNGO0FBRUEsTUFBSSxhQUFhLGNBQWMsVUFBVSxZQUFZLFFBQVE7QUFD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
275
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL29wZW5hcGkvZ2VuZXJhdGUtc2NoZW1hLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQUVBLFNBQVMsVUFBVSxjQUFjO0FBQ2pDLFNBQVMsWUFBWSxVQUFVO0FBRS9CLE9BQU8sV0FBVztBQUNsQixTQUFTLHVCQUF1QjtBQUNoQyxPQUFPLGFBQWE7QUFDcEIsT0FBTyxZQUFZO0FBS25CLFNBQVMsaUNBQWlDO0FBRG5DLElBQU0sY0FBYztBQUczQixJQUFNLE1BQU0sTUFBTSw2QkFBNkI7QUFFL0MsSUFBTSx3QkFBd0IsQ0FBQyxPQUFPLE9BQU8sUUFBUSxRQUFRLFNBQVMsU0FBUyxVQUFVLFNBQVM7QUFDbEcsSUFBTSw0QkFBNEI7QUFDbEMsSUFBTSxnREFBZ0Q7QUFDL0MsSUFBTSwwQkFBMEI7QUFrQ3ZDLFNBQVMscUJBQXFCLFFBQXlCO0FBQ3JELFNBQU8sQ0FBQyxRQUFRLE9BQU8sT0FBTyxFQUFFLFNBQVMsTUFBTTtBQUNqRDtBQUVBLFNBQVMsa0JBQWtCLFFBQWdEO0FBQ3pFLFNBQU8sT0FBTyxPQUFPLFFBQStCLE1BQU07QUFDNUQ7QUFFQSxTQUFTLFFBQVcsVUFBd0IsV0FBdUM7QUFDakYsTUFBSSxDQUFDLGtCQUFrQixTQUFTLEdBQUc7QUFDakMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLG1CQUFtQixVQUFVLEtBQUssTUFBTSxDQUFDO0FBQy9DLFFBQU0sb0JBQW9CLFFBQVEsSUFBSSxVQUFVLGdCQUFnQjtBQUNoRSxTQUFPLFFBQVEsVUFBVSxpQkFBaUI7QUFDNUM7QUFFQSxTQUFTLGNBQ1AsWUFDQSxVQUN1QjtBQUN2QixTQUFPLFdBQVcsSUFBSSxDQUFDLGNBQWMsUUFBUSxVQUFVLFNBQVMsQ0FBQztBQUNuRTtBQUVBLFNBQVMsMkJBQ1AsV0FDQSxlQUNBLFVBQzhCO0FBQzlCLE1BQUksVUFBVSxlQUFlLFFBQVc7QUFDdEM7QUFBQSxFQUNGO0FBRUEsUUFBTSxhQUFhLGNBQWMsVUFBVSxZQUFZLFFBQVEsRUFBRTtBQUFBLElBQy9ELENBQUMsY0FBYyxVQUFVLE9BQU87QUFBQSxFQUNsQztBQUNBLE1BQUksV0FBVyxXQUFXLEdBQUc7QUFDM0I7QUFBQSxFQUNGO0FBRUEsUUFBTSxtQkFBbUIsT0FBTztBQUFBLElBQzlCLFdBQVcsSUFBSSxDQUFDLGNBQWM7QUFBQSxNQUM1QixrQkFBa0IsV0FBVyxVQUFVLEtBQUssWUFBWSxJQUFJLFVBQVU7QUFBQSxNQUN0RSxVQUFVLFVBQVUsRUFBRSxNQUFNLFNBQWtCO0FBQUEsSUFDaEQsQ0FBQztBQUFBLEVBQ0g7QUFDQSxRQUFNLHlCQUF5QixXQUM1QixPQUFPLENBQUMsY0FBYyxVQUFVLGFBQWEsSUFBSSxFQUNqRCxJQUFJLENBQUMsY0FBYyxVQUFVLElBQUk7QUFDcEMsUUFBTSxTQUEyQjtBQUFBLElBQy9CLE1BQU07QUFBQTtBQUFBLElBRU4sc0JBQXNCLGtCQUFrQjtBQUFBLElBQ3hDLFlBQVk7QUFBQSxJQUNaLEdBQUksdUJBQXVCLFNBQVMsSUFBSSxFQUFFLFVBQVUsdUJBQXVCLElBQUksQ0FBQztBQUFBLEVBQ2xGO0FBQ0EsU0FBTztBQUNUO0FBRUEsU0FBUyxjQUFjLFVBQXlGO0FBQzlHLFFBQU0sU0FBUyxPQUFPLE9BQU8sWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUc7QUFDakQsU0FBTyxXQUFXLFVBQWEsT0FBTyxLQUFLLE1BQU0sRUFBRSxTQUFTLElBQUksU0FBUztBQUMzRTtBQUVBLFNBQVMscUJBQXFCLFdBQWdDLFVBQXdCO0FBQ3BGLE1BQUksQ0FBQyxPQUFPLE9BQU8sV0FBVyxhQUFhLEdBQUc7QUFDNUMsV0FBTztBQUFBLE1BQ0wsdUJBQXVCO0FBQUEsTUFDdkIsbUJBQW1CO0FBQUEsSUFDckI7QUFBQSxFQUNGO0FBRUEsUUFBTSxjQUFjLFFBQVEsVUFBVSxVQUFVLFdBQVc7QUFDM0QsU0FBTztBQUFBLElBQ0wsdUJBQXVCLGFBQWE7QUFBQSxJQUNwQyxtQkFBbUIsY0FBYyxhQUFhLE9BQU87QUFBQSxFQUN2RDtBQUNGO0FBRUEsU0FBUyx3QkFDUCxRQUNBLFdBQ0EsYUFDQSxVQUNBLG1CQUNBO0FBQ0EsUUFBTSw4QkFBOEIsMkJBQTJCLFdBQVcsUUFBUSxRQUFRO0FBQzFGLFFBQU0sK0JBQStCLDJCQUEyQixXQUFXLFNBQVMsUUFBUTtBQUM1RixRQUFNLHVCQUF1QiwyQkFBMkIsV0FBVyxVQUFVLFFBQVE7QUFFckYsUUFBTSxFQUFFLG1CQUFtQixzQkFBc0IsSUFBSSxxQkFBcUIsV0FBVyxRQUFRO0FBQzdGLE1BQUksc0JBQXNCLFVBQWEsQ0FBQyxxQkFBcUIsTUFBTSxHQUFHO0FBQ3BFLFVBQU0sSUFBSSxNQUFNLG1DQUFtQyxNQUFNLFNBQVM7QUFBQSxFQUNwRTtBQUVBLFFBQU0sNEJBQTRCLEdBQUcsV0FBVztBQUVoRCxRQUFNLHVCQUF1QjtBQUFBLElBQzNCLFNBQVM7QUFBQSxJQUNULEtBQUssR0FBRyxpQkFBaUIsSUFBSSx5QkFBeUI7QUFBQSxJQUN0RCxNQUFNO0FBQUEsSUFDTixZQUFZO0FBQUEsTUFDVixHQUFJLDhCQUE4QixFQUFFLFFBQVEsNEJBQTRCLElBQUksQ0FBQztBQUFBLE1BQzdFLEdBQUksK0JBQStCLEVBQUUsUUFBUSw2QkFBNkIsSUFBSSxDQUFDO0FBQUEsTUFDL0UsU0FBUyx3QkFBd0IsRUFBRSxNQUFNLFVBQVUsc0JBQXNCLEtBQUs7QUFBQSxNQUM5RSxHQUFJLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLElBQUksQ0FBQztBQUFBLElBQ3pEO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixHQUFJLDZCQUE2QixXQUFXLENBQUMsUUFBUSxJQUFJLENBQUM7QUFBQSxNQUMxRCxHQUFJLDhCQUE4QixXQUFXLENBQUMsT0FBTyxJQUFJLENBQUM7QUFBQSxNQUMxRCxHQUFJLHNCQUFzQixXQUFXLENBQUMsU0FBUyxJQUFJLENBQUM7QUFBQSxNQUNwRCxHQUFJLDBCQUEwQixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUM7QUFBQSxJQUNuRDtBQUFBLElBQ0Esc0JBQXNCO0FBQUEsRUFDeEI7QUFFQSxTQUFPO0FBQ1Q7QUFFQSxTQUFTLGtCQUFrQixRQUF3QjtBQUNqRCxTQUFPLFdBQVcsWUFBWSxZQUFZLGdCQUFnQixNQUFNLEVBQUUsV0FBVyxRQUFRLEVBQUU7QUFDekY7QUFFQSxTQUFTLHNCQUFzQixVQUE4QjtBQUMzRCxTQUFPLGNBQWMsU0FBUyxPQUFPO0FBQ3ZDO0FBRUEsU0FBUyx5QkFDUCxTQUNBLFVBQzhCO0FBQzlCLE1BQUksWUFBWSxVQUFhLE9BQU8sS0FBSyxPQUFPLEVBQUUsV0FBVyxHQUFHO0FBQzlELFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxrQkFBa0IsT0FBTztBQUFBLElBQzdCLE9BQU8sUUFBUSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxNQUFNLE1BQU0sQ0FBQyxLQUFLLFlBQVksR0FBRyxRQUFRLFVBQVUsTUFBTSxDQUFDLENBQUM7QUFBQSxFQUNqRztBQUNBLFFBQU0sd0JBQXdCLE9BQU87QUFBQSxJQUNuQyxPQUFPLFFBQVEsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sTUFBTSxNQUFNLENBQUMsTUFBTSxPQUFPLFVBQVUsRUFBRSxNQUFNLFNBQWtCLENBQUMsQ0FBQztBQUFBLEVBQzlHO0FBQ0EsUUFBTSxzQkFBc0IsT0FBTyxRQUFRLGVBQWUsRUFDdkQsT0FBTyxDQUFDLENBQUMsRUFBRSxNQUFNLE1BQU0sT0FBTyxhQUFhLElBQUksRUFDL0MsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLElBQUk7QUFDdkIsU0FBTztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sWUFBWTtBQUFBLElBQ1osR0FBSSxvQkFBb0IsV0FBVyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsb0JBQW9CO0FBQUEsRUFDOUU7QUFDRjtBQUVBLFNBQVMsa0JBQ1AsUUFDQSxVQUNBLFVBQ0EsbUJBQ0EsYUFDQTtBQUNBLFFBQU0sbUJBQW1CLFFBQVEsVUFBVSxRQUFRO0FBQ25ELFFBQU0scUJBQXFCLHNCQUFzQixnQkFBZ0I7QUFDakUsUUFBTSx3QkFBd0IseUJBQXlCLGlCQUFpQixTQUFTLFFBQVE7QUFFekYsUUFBTSxhQUFhLEdBQUcsV0FBVyxXQUFXLGtCQUFrQixNQUFNLENBQUM7QUFDckUsU0FBTztBQUFBLElBQ0wsU0FBUztBQUFBLElBQ1QsS0FBSyxHQUFHLGlCQUFpQixJQUFJLFVBQVU7QUFBQSxJQUN2QyxNQUFNO0FBQUEsSUFDTixZQUFZO0FBQUEsTUFDVixTQUFTLHlCQUF5QixFQUFFLE1BQU0sVUFBVSxzQkFBc0IsS0FBSztBQUFBLE1BQy9FLEdBQUkscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsSUFBSSxDQUFDO0FBQUEsSUFDM0Q7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLEdBQUksdUJBQXVCLGFBQWEsVUFBYSxzQkFBc0IsU0FBUyxTQUFTLElBQ3pGLENBQUMsU0FBUyxJQUNWLENBQUM7QUFBQSxNQUNMLEdBQUkscUJBQXFCLENBQUMsTUFBTSxJQUFJLENBQUM7QUFBQSxJQUN2QztBQUFBLElBQ0Esc0JBQXNCO0FBQUEsRUFDeEI7QUFDRjtBQUVBLFNBQVMsMEJBQ1AsV0FDQSxhQUNBLFVBQ0EsbUJBQ0E7QUFDQSxTQUFPLEdBQUcsVUFBVSxjQUFjLFFBQVcscUNBQXFDO0FBQ2xGLFNBQU8sT0FBTztBQUFBLElBQ1osT0FBTyxRQUFRLFVBQVUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsUUFBUSxNQUFNO0FBQUEsTUFDOUQsT0FBTyxZQUFZO0FBQUEsTUFDbkIsa0JBQWtCLE9BQU8sWUFBWSxHQUFHLFVBQVUsVUFBVSxtQkFBbUIsV0FBVztBQUFBLElBQzVGLENBQUM7QUFBQSxFQUNIO0FBQ0Y7QUFFQSxTQUFTLGVBQ1AsTUFDQSxRQUNBLFdBQ0EsY0FDUTtBQUNSLFFBQU0sa0JBQWtCLFVBQVUsZUFBZSxHQUFHLElBQUksSUFBSSxNQUFNO0FBQ2xFLFFBQU0sUUFBUSxnQkFBZ0IsTUFBTSxRQUFRO0FBRTVDLFFBQU0sY0FBYyxNQUNqQixPQUFPLENBQUMsU0FBUyxLQUFLLEtBQUssTUFBTSxNQUFNLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxFQUM1RCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxHQUFHLFlBQVksS0FBSyxFQUFFLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQy9ELEtBQUssRUFBRTtBQUNWLE1BQUksQ0FBQyxhQUFhLElBQUksV0FBVyxHQUFHO0FBQ2xDLFdBQU87QUFBQSxFQUNUO0FBR0EsTUFBSSxtQkFBbUI7QUFDdkIsU0FBTyxhQUFhLElBQUksR0FBRyxXQUFXLEdBQUcsaUJBQWlCLFNBQVMsQ0FBQyxFQUFFLEdBQUc7QUFDdkUsd0JBQW9CO0FBQUEsRUFDdEI7QUFDQSxTQUFPLEdBQUcsV0FBVyxHQUFHLGlCQUFpQixTQUFTLENBQUM7QUFDckQ7QUFFQSxTQUFTLHlDQUNQLE9BQ0Esc0NBQ0EsS0FDUztBQUNULE1BQUksT0FBTyxVQUFVLFlBQVksUUFBUSxVQUFVLE1BQU0sV0FBVyw2Q0FBNkMsR0FBRztBQUNsSCxXQUFPLE1BQU0sUUFBUSwrQ0FBK0Msb0NBQW9DO0FBQUEsRUFDMUc7QUFFQSxNQUFJLE1BQU0sUUFBUSxLQUFLLEdBQUc7QUFDeEIsV0FBTyxNQUFNLElBQUksQ0FBQyxTQUFTLHlDQUF5QyxNQUFNLG9DQUFvQyxDQUFDO0FBQUEsRUFDakg7QUFFQSxNQUFJLE9BQU8sVUFBVSxZQUFZLFVBQVUsTUFBTTtBQUMvQyxXQUFPLE9BQU87QUFBQSxNQUNaLE9BQU8sUUFBUSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsVUFBVSxVQUFVLE1BQU07QUFBQSxRQUNwRDtBQUFBLFFBQ0EseUNBQXlDLFlBQVksc0NBQXNDLFFBQVE7QUFBQSxNQUNyRyxDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFFQSxTQUFTLDJCQUEyQixLQUFzQjtBQUN4RCxRQUFNLFNBQVM7QUFDZixTQUFPLE9BQU8sbUJBQW1CLEtBQUssT0FBTyxrQkFBa0I7QUFDakU7QUFFQSxTQUFTLDJCQUNQLFVBQ0EsY0FDQSxhQUNtQjtBQUNuQixNQUFJLFNBQVMsVUFBVSxRQUFXO0FBQ2hDLFdBQU87QUFBQSxFQUNUO0FBQ0EsUUFBTSxZQUFZLFNBQVMsVUFBVSxDQUFDLEdBQUc7QUFDekMsTUFBSSxjQUFjLFFBQVc7QUFDM0IsV0FBTztBQUFBLEVBQ1Q7QUFDQSxRQUFNLGlCQUFpQixVQUFVLFdBQVcsTUFBTSxJQUFJLElBQUksSUFBSSxTQUFTLEVBQUUsV0FBVztBQUNwRixRQUFNLHlCQUF5QixXQUFXLFdBQVcsSUFBSSxZQUFZLEdBQUcsY0FBYztBQUN0RixRQUFNLG9CQUFvQixHQUFHLHNCQUFzQjtBQUNuRCxRQUFNLGFBQStELENBQUM7QUFDdEUsUUFBTSxhQUF5QixFQUFFLE1BQU0sV0FBVztBQUNsRCxRQUFNLGVBQWUsb0JBQUksSUFBWTtBQUNyQyxRQUFNLHlCQUF5QiwyQkFBMkIsUUFBUTtBQUNsRSxNQUFJLGtDQUFrQyxzQkFBc0I7QUFFNUQsYUFBVyxDQUFDLE1BQU0sU0FBUyxLQUFLLE9BQU8sUUFBUSxTQUFTLEtBQUssR0FBRztBQUU5RCxVQUFNLFVBQVUsS0FBSyxXQUFXLHlCQUF5QixXQUFXO0FBQ3BFLFVBQU0sY0FBZ0QsQ0FBQztBQUN2RCxlQUFXLEdBQUcsY0FBYyxHQUFHLE9BQU8sRUFBRSxJQUFJO0FBRTVDLGVBQVcsVUFBVSx1QkFBdUI7QUFDMUMsWUFBTSxZQUFZLFlBQVksTUFBTTtBQUNwQyxVQUFJLGNBQWMsUUFBVztBQUMzQixjQUFNLDBCQUEwQiwyQkFBMkIsU0FBUztBQUNwRSxZQUFJLG1DQUFtQyx1QkFBdUI7QUFDOUQsY0FBTSwwQkFBMEIsMkJBQTJCO0FBQzNELFlBQUksNEJBQTRCLE1BQU07QUFDcEM7QUFBQSxRQUNGO0FBQ0EsY0FBTSxjQUFjLGVBQWUsTUFBTSxRQUFRLFdBQVcsWUFBWTtBQUN4RSxxQkFBYSxJQUFJLFdBQVc7QUFDNUIsb0JBQVksTUFBTSxJQUFJO0FBQUEsVUFDcEIsU0FBUyx3QkFBd0IsUUFBUSxXQUFXLGFBQWEsVUFBVSxpQkFBaUI7QUFBQSxVQUM1RixXQUFXLDBCQUEwQixXQUFXLGFBQWEsVUFBVSxpQkFBaUI7QUFBQSxRQUMxRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLE1BQUksU0FBUyxZQUFZLFlBQVksUUFBVztBQUM5QyxlQUFXLGNBQWMsT0FBTztBQUFBLE1BQzlCLE9BQU8sUUFBUSxTQUFTLFdBQVcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sTUFBTSxNQUFNO0FBQUEsUUFDbEU7QUFBQSxRQUNBLEVBQUUsU0FBUywyQkFBMkIsS0FBSyxHQUFHLHNCQUFzQixnQkFBZ0IsSUFBSSxJQUFJLEdBQUcsT0FBTztBQUFBLE1BQ3hHLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUVBLFFBQU0sdUNBQXVDLEdBQUcsY0FBYztBQUM5RCxTQUFPO0FBQUEsSUFDTCxnQkFBZ0IsVUFBVTtBQUFBLElBQzFCO0FBQUEsRUFDRjtBQUNGO0FBRU8sU0FBUyx1QkFDZCxhQUNBLGNBQ0EsYUFDbUI7QUFFbkIsUUFBTSxXQUFXLE9BQU8sS0FBSyxXQUFXO0FBQ3hDLFNBQU8sMkJBQTJCLFVBQVUsY0FBYyxXQUFXO0FBQ3ZFO0FBRUEsZUFBZSx3QkFDYixjQUNBLGFBQ0EsTUFDQSxVQUNlO0FBQ2YsUUFBTSxtQkFBbUIsTUFBTSxHQUFHLFNBQVMsR0FBRyxJQUFJLElBQUksUUFBUSxnQkFBZ0IsTUFBTTtBQUVwRixRQUFNLFdBQVksTUFBTSxPQUFPLEtBQUssZ0JBQWdCO0FBQ3BELFFBQU0sdUJBQXVCLDJCQUEyQixVQUFVLGNBQWMsV0FBVztBQUMzRixNQUFJLHlCQUF5QixNQUFNO0FBQ2pDO0FBQUEsRUFDRjtBQUNBLFFBQU0sd0JBQXdCLEdBQUcsSUFBSSxJQUFJLFFBQVEsSUFBSSx1QkFBdUI7QUFDNUUsUUFBTSxHQUFHLFVBQVUsdUJBQXVCLEtBQUssVUFBVSxzQkFBc0IsUUFBVyxDQUFDLENBQUM7QUFDNUYsTUFBSSxvQkFBb0IscUJBQXFCLEVBQUU7QUFDakQ7QUFFQSxlQUFzQixrQkFBaUM7QUFDckQsUUFBTSx5QkFBeUIsTUFBTSxHQUFHLFNBQVMsa0JBQWtCLE1BQU07QUFDekUsUUFBTSxjQUFjLEtBQUssTUFBTSxzQkFBc0I7QUFXckQsUUFBTSxDQUFDLGNBQWMsV0FBVyxJQUFJLFlBQVksS0FBSyxNQUFNLENBQUMsRUFBRSxNQUFNLEdBQUc7QUFDdkUsU0FBTyxHQUFHLGlCQUFpQixVQUFhLGdCQUFnQixRQUFXLHNCQUFzQjtBQUV6RixRQUFNLFFBQVE7QUFBQSxJQUNaLFlBQVksUUFBUSxJQUFJLFVBQVU7QUFBQSxNQUFJLENBQUMsYUFDckMsd0JBQXdCLGNBQWMsYUFBYSxZQUFZLFFBQVEsSUFBSSxNQUFNLFFBQVE7QUFBQSxJQUMzRjtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -5,6 +5,9 @@ import { buildApiSchemaFromYaml } from "./generate-schema.mjs";
5
5
  var log = debug("eslint-plugin:athena:service-schema-generator");
6
6
  var GITHUB_ORGANIZATIONS = ["checkdigit", "rebolt-checkdigit"];
7
7
  var SWAGGER_SCHEMA_DEREF_FILENAME = "swagger.schema.deref.json";
8
+ function errorMessageFromError(error) {
9
+ return error instanceof Error ? error.message : String(error);
10
+ }
8
11
  function derefApiSchemas(schemas) {
9
12
  const definitions = schemas.definitions ?? {};
10
13
  function derefValue(value, resolving = /* @__PURE__ */ new Set()) {
@@ -39,8 +42,7 @@ function readServiceConfig(packageJsonContent, org, serviceName) {
39
42
  if (apiRoot === void 0 || apiEndpoints === void 0 || apiEndpoints.length === 0) {
40
43
  return null;
41
44
  }
42
- const pkgOrg = packageJson.name?.slice(1).split("/")[0] ?? org;
43
- const pkgServiceName = packageJson.name?.slice(1).split("/")[1] ?? serviceName;
45
+ const [pkgOrg = org, pkgServiceName = serviceName] = packageJson.name?.slice(1).split("/") ?? [];
44
46
  return { organization: pkgOrg, serviceName: pkgServiceName, apiRoot, endpoints: apiEndpoints };
45
47
  }
46
48
  function findServiceLocally(serviceFolder, org, serviceName) {
@@ -84,9 +86,7 @@ function findServiceInNodeModules(serviceName) {
84
86
  }
85
87
  log(`[schema-generator] no swagger schema inside node_modules/@${org}/${serviceName}`);
86
88
  } catch (error) {
87
- log(
88
- `[schema-generator] error reading node_modules/@${org}/${serviceName}: ${error instanceof Error ? error.message : String(error)}`
89
- );
89
+ log(`[schema-generator] error reading node_modules/@${org}/${serviceName}: ${errorMessageFromError(error)}`);
90
90
  }
91
91
  }
92
92
  return null;
@@ -118,9 +118,7 @@ function generateSchemasForService(serviceName, outputDir) {
118
118
  log(`[schema-generator] cached schema to ${dir}/${SWAGGER_SCHEMA_DEREF_FILENAME}`);
119
119
  }
120
120
  } catch (error) {
121
- log(
122
- `[schema-generator] error processing endpoint ${endpoint}: ${error instanceof Error ? error.message : String(error)}`
123
- );
121
+ log(`[schema-generator] error processing endpoint ${endpoint}: ${errorMessageFromError(error)}`);
124
122
  }
125
123
  }
126
124
  return results;
@@ -128,4 +126,4 @@ function generateSchemasForService(serviceName, outputDir) {
128
126
  export {
129
127
  generateSchemasForService
130
128
  };
131
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL29wZW5hcGkvc2VydmljZS1zY2hlbWEtZ2VuZXJhdG9yLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQUVBLFNBQVMsWUFBWSxXQUFXLGNBQWMscUJBQXFCO0FBRW5FLE9BQU8sV0FBVztBQUVsQixTQUEwQiw4QkFBOEI7QUFFeEQsSUFBTSxNQUFNLE1BQU0sK0NBQStDO0FBRWpFLElBQU0sdUJBQXVCLENBQUMsY0FBYyxtQkFBbUI7QUFDL0QsSUFBTSxnQ0FBZ0M7QUFhdEMsU0FBUyxnQkFBZ0IsU0FBaUM7QUFDeEQsUUFBTSxjQUFjLFFBQVEsZUFBZSxDQUFDO0FBRTVDLFdBQVMsV0FBVyxPQUFnQixZQUF5QixvQkFBSSxJQUFZLEdBQVk7QUFDdkYsUUFBSSxVQUFVLFFBQVEsT0FBTyxVQUFVLFVBQVU7QUFDL0MsYUFBTztBQUFBLElBQ1Q7QUFDQSxRQUFJLE1BQU0sUUFBUSxLQUFLLEdBQUc7QUFDeEIsYUFBTyxNQUFNLElBQUksQ0FBQyxTQUFTLFdBQVcsTUFBTSxTQUFTLENBQUM7QUFBQSxJQUN4RDtBQUNBLFVBQU0sTUFBTTtBQUNaLFFBQUksT0FBTyxJQUFJLE1BQU0sTUFBTSxVQUFVO0FBQ25DLFlBQU0sVUFBVSxrQ0FBa0MsS0FBSyxJQUFJLE1BQU0sQ0FBQyxHQUFHLFNBQVMsTUFBTTtBQUNwRixVQUFJLFlBQVksVUFBYSxDQUFDLFVBQVUsSUFBSSxPQUFPLEdBQUc7QUFDcEQsZUFBTyxXQUFXLFlBQVksT0FBTyxHQUFHLG9CQUFJLElBQVksQ0FBQyxHQUFHLFdBQVcsT0FBTyxDQUFDLENBQUM7QUFBQSxNQUNsRjtBQUFBLElBQ0Y7QUFDQSxXQUFPLE9BQU8sWUFBWSxPQUFPLFFBQVEsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxXQUFXLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztBQUFBLEVBQ3RHO0FBRUEsUUFBTSxlQUFlLFdBQVcsUUFBUSxJQUFJO0FBQzVDLE1B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
129
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL29wZW5hcGkvc2VydmljZS1zY2hlbWEtZ2VuZXJhdG9yLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQUVBLFNBQVMsWUFBWSxXQUFXLGNBQWMscUJBQXFCO0FBRW5FLE9BQU8sV0FBVztBQUVsQixTQUEwQiw4QkFBOEI7QUFFeEQsSUFBTSxNQUFNLE1BQU0sK0NBQStDO0FBRWpFLElBQU0sdUJBQXVCLENBQUMsY0FBYyxtQkFBbUI7QUFDL0QsSUFBTSxnQ0FBZ0M7QUFFdEMsU0FBUyxzQkFBc0IsT0FBd0I7QUFDckQsU0FBTyxpQkFBaUIsUUFBUSxNQUFNLFVBQVUsT0FBTyxLQUFLO0FBQzlEO0FBYUEsU0FBUyxnQkFBZ0IsU0FBaUM7QUFDeEQsUUFBTSxjQUFjLFFBQVEsZUFBZSxDQUFDO0FBRTVDLFdBQVMsV0FBVyxPQUFnQixZQUF5QixvQkFBSSxJQUFZLEdBQVk7QUFDdkYsUUFBSSxVQUFVLFFBQVEsT0FBTyxVQUFVLFVBQVU7QUFDL0MsYUFBTztBQUFBLElBQ1Q7QUFDQSxRQUFJLE1BQU0sUUFBUSxLQUFLLEdBQUc7QUFDeEIsYUFBTyxNQUFNLElBQUksQ0FBQyxTQUFTLFdBQVcsTUFBTSxTQUFTLENBQUM7QUFBQSxJQUN4RDtBQUNBLFVBQU0sTUFBTTtBQUNaLFFBQUksT0FBTyxJQUFJLE1BQU0sTUFBTSxVQUFVO0FBQ25DLFlBQU0sVUFBVSxrQ0FBa0MsS0FBSyxJQUFJLE1BQU0sQ0FBQyxHQUFHLFNBQVMsTUFBTTtBQUNwRixVQUFJLFlBQVksVUFBYSxDQUFDLFVBQVUsSUFBSSxPQUFPLEdBQUc7QUFDcEQsZUFBTyxXQUFXLFlBQVksT0FBTyxHQUFHLG9CQUFJLElBQVksQ0FBQyxHQUFHLFdBQVcsT0FBTyxDQUFDLENBQUM7QUFBQSxNQUNsRjtBQUFBLElBQ0Y7QUFDQSxXQUFPLE9BQU8sWUFBWSxPQUFPLFFBQVEsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxXQUFXLEtB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
@@ -1,4 +1,4 @@
1
- import type { AggrFunc, BaseFrom, Binary, Case, Cast, Column, ColumnRefItem, Dual, ExpressionValue, ExprList, Function, Join, Select, TableExpr, ValuesFrom, With } from './types';
1
+ import type { AggrFunc, BaseFrom, Binary, Case, Cast, Column, ColumnRefItem, Dual, ExpressionValue, ExprList, From, Function, Join, Select, TableExpr, ValuesFrom, With } from './types';
2
2
  export interface UnnestFrom {
3
3
  type: 'unnest';
4
4
  expr: ColumnRefItem | {
@@ -49,13 +49,13 @@ export declare function isTableExpr(node: unknown): node is TableExpr;
49
49
  export declare function isJoin(node: unknown): node is Join;
50
50
  export declare function isBaseFrom(node: unknown): node is BaseFrom;
51
51
  export declare function hasArrayIndex(node: ColumnRefItem): node is ColumnRefWithIndex;
52
+ /** Normalise select.from (null / single item / array) to a From[]. */
53
+ export declare function fromClauseItems(select: Select): From[];
52
54
  export declare function walk(node: unknown, visitor: VisitorMap): void;
53
55
  /** Return true if the expression contains a lambda (`->`) subexpression. */
54
56
  export declare function containsLambda(expr: unknown): boolean;
55
57
  /** Collect all column_ref nodes within an expression subtree. */
56
58
  export declare function extractColumnRefs(expr: unknown): ColumnRefItem[];
57
- /** Return the path string from the first json_extract_scalar / json_extract call found. */
58
- export declare function extractJsonExtractPath(expr: unknown): string | undefined;
59
59
  export interface JsonExtractCall {
60
60
  ref: ColumnRefItem;
61
61
  path: string;
@@ -63,6 +63,8 @@ export interface JsonExtractCall {
63
63
  }
64
64
  /** Collect ALL json_extract / json_extract_scalar calls as (source column_ref, path) pairs. */
65
65
  export declare function extractJsonExtractCalls(expr: unknown): JsonExtractCall[];
66
+ /** Return the path string from the first json_extract_scalar / json_extract call found. */
67
+ export declare function extractJsonExtractPath(expr: unknown): string | undefined;
66
68
  /** Return the JSONPath-style string from a bracket accessor (col['key']), or undefined. */
67
69
  export declare function extractBracketAccessorPath(expr: unknown): string | undefined;
68
70
  /** Return true if the expression tree contains any function or aggregate call. */
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@checkdigit/eslint-plugin","version":"7.18.0-PR.143-e2e9","description":"Check Digit eslint plugins","keywords":["eslint","eslintplugin"],"homepage":"https://github.com/checkdigit/eslint-plugin#readme","bugs":{"url":"https://github.com/checkdigit/eslint-plugin/issues"},"repository":{"type":"git","url":"https://github.com/checkdigit/eslint-plugin"},"license":"MIT","author":"Check Digit, LLC","sideEffects":false,"type":"module","exports":{".":{"types":"./dist-types/index.d.ts","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"files":["src","dist-types","dist-mjs","!src/**/test/**","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/test/**","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-mjs/**/test/**","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"],"scripts":{"build:dist-mjs":"rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs","build:dist-types":"rimraf dist-types && npx builder --type=types --outDir=dist-types","ci:compile":"tsc --noEmit","ci:coverage":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=true","ci:lint":"npm run lint","ci:style":"npm run prettier","ci:test":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false","lint":"eslint --max-warnings 0 .","lint:fix":"eslint --max-warnings 0 --fix .","peggy":"for file in ./src/peggy/*.peggy; do peggy \"$file\" --format es --output \"${file%.peggy}-peggy.ts\"; done","peggy-watch":"for file in ./src/peggy/*.peggy; do peggy \"$file\" --format=es --watch --output=\"${file%.peggy}-peggy.ts\"; done","prepare":"","prepublishOnly":"npm run build:dist-types && npm run build:dist-mjs","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style"},"prettier":"@checkdigit/prettier-config","jest":{"preset":"@checkdigit/jest-config"},"dependencies":{"@apidevtools/json-schema-ref-parser":"^15.3.5","@typescript-eslint/type-utils":"^8.60.1","@typescript-eslint/utils":"^8.60.1","ajv":"^8.20.0","debug":"^4.4.3","glob":"^13.0.6","http-status-codes":"^2.3.0","js-yaml":"^4.2.0","json-pointer":"^0.6.2","jsonpath-plus":"^10.4.0","ts-api-utils":"^2.5.0"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^6.1.0","@checkdigit/typescript-config":"10.0.0","@eslint/js":"^9.37.0","@types/debug":"^4.1.13","@types/eslint":"^9.6.1","@types/eslint-config-prettier":"^6.11.3","@types/js-yaml":"^4.0.9","@types/json-pointer":"^1.0.34","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/rule-tester":"^8.60.1","eslint":"^9.37.0","eslint-config-prettier":"^10.1.8","eslint-import-resolver-typescript":"^4.4.5","eslint-plugin-eslint-plugin":"^6.4.0","eslint-plugin-import":"^2.32.0","eslint-plugin-no-only-tests":"^3.4.0","eslint-plugin-no-secrets":"^2.3.3","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"^1.0.4","openapi-types":"^12.1.3","peggy":"^4.2.0","rimraf":"^6.1.3","typescript-eslint":"^8.60.1"},"peerDependencies":{"eslint":">=9 <10"},"engines":{"node":">=24.14.1"},"service":{"api":{"root":"src","endpoints":["api/v1"]}}}
1
+ {"name":"@checkdigit/eslint-plugin","version":"7.18.0-PR.143-cf9d","description":"Check Digit eslint plugins","keywords":["eslint","eslintplugin"],"homepage":"https://github.com/checkdigit/eslint-plugin#readme","bugs":{"url":"https://github.com/checkdigit/eslint-plugin/issues"},"repository":{"type":"git","url":"https://github.com/checkdigit/eslint-plugin"},"license":"MIT","author":"Check Digit, LLC","sideEffects":false,"type":"module","exports":{".":{"types":"./dist-types/index.d.ts","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"files":["src","dist-types","dist-mjs","!src/**/test/**","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/test/**","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-mjs/**/test/**","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"],"scripts":{"build:dist-mjs":"rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs","build:dist-types":"rimraf dist-types && npx builder --type=types --outDir=dist-types","ci:compile":"tsc --noEmit","ci:coverage":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=true","ci:lint":"npm run lint","ci:style":"npm run prettier","ci:test":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false","lint":"eslint --max-warnings 0 .","lint:fix":"eslint --max-warnings 0 --fix .","peggy":"for file in ./src/peggy/*.peggy; do peggy \"$file\" --format es --output \"${file%.peggy}-peggy.ts\"; done","peggy-watch":"for file in ./src/peggy/*.peggy; do peggy \"$file\" --format=es --watch --output=\"${file%.peggy}-peggy.ts\"; done","prepare":"","prepublishOnly":"npm run build:dist-types && npm run build:dist-mjs","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style"},"prettier":"@checkdigit/prettier-config","jest":{"preset":"@checkdigit/jest-config"},"dependencies":{"@apidevtools/json-schema-ref-parser":"^15.3.5","@typescript-eslint/type-utils":"^8.60.1","@typescript-eslint/utils":"^8.60.1","ajv":"^8.20.0","debug":"^4.4.3","glob":"^13.0.6","http-status-codes":"^2.3.0","js-yaml":"^4.2.0","json-pointer":"^0.6.2","jsonpath-plus":"^10.4.0","ts-api-utils":"^2.5.0"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^6.1.0","@checkdigit/typescript-config":"10.0.0","@eslint/js":"^9.37.0","@types/debug":"^4.1.13","@types/eslint":"^9.6.1","@types/eslint-config-prettier":"^6.11.3","@types/js-yaml":"^4.0.9","@types/json-pointer":"^1.0.34","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/rule-tester":"^8.60.1","eslint":"^9.37.0","eslint-config-prettier":"^10.1.8","eslint-import-resolver-typescript":"^4.4.5","eslint-plugin-eslint-plugin":"^6.4.0","eslint-plugin-import":"^2.32.0","eslint-plugin-no-only-tests":"^3.4.0","eslint-plugin-no-secrets":"^2.3.3","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"^1.0.4","openapi-types":"^12.1.3","peggy":"^4.2.0","rimraf":"^6.1.3","typescript-eslint":"^8.60.1"},"peerDependencies":{"eslint":">=9 <10"},"engines":{"node":">=24.14.1"},"service":{"api":{"root":"src","endpoints":["api/v1"]}}}
@@ -10,11 +10,8 @@ const log = debug('eslint-plugin:athena:api-locator');
10
10
 
11
11
  const SERVICES_ROOT_FOLDER = 'src/services';
12
12
  const LEGACY_TABLE_SUFFIX = '_logs';
13
-
14
- function upperCaseFirstCharacter(value: string): string {
15
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
16
- return `${value[0]?.toUpperCase()}${value.slice(1)}`;
17
- }
13
+ // eslint-disable-next-line no-magic-numbers
14
+ const SCHEMA_MAX_AGE_MS = 60 * 60 * 1000; // 1 hour
18
15
 
19
16
  export function locateApi(originalServiceName: string): ApiSchemas[] {
20
17
  log('locating API for service', originalServiceName);
@@ -25,22 +22,33 @@ export function locateApi(originalServiceName: string): ApiSchemas[] {
25
22
  serviceName = serviceName.slice(0, -LEGACY_TABLE_SUFFIX.length);
26
23
  }
27
24
 
28
- const serviceNameParts = serviceName.split('-');
29
- const camelCaseServiceName = [serviceNameParts[0], ...serviceNameParts.slice(1).map(upperCaseFirstCharacter)].join(
30
- '',
31
- );
25
+ const camelCaseServiceName = serviceName.replace(/-(?<letter>[a-z])/gu, (_, letter: string) => letter.toUpperCase());
32
26
 
33
27
  const allSchemaFilenames = fs.globSync(`${SERVICES_ROOT_FOLDER}/${camelCaseServiceName}/*/swagger.schema.deref.json`);
34
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
35
- log(`${allSchemaFilenames.length} versions of API schemas located for service ${serviceName}`, allSchemaFilenames);
28
+ log(
29
+ `${allSchemaFilenames.length.toString()} versions of API schemas located for service ${serviceName}`,
30
+ allSchemaFilenames,
31
+ );
32
+
33
+ const outputDir = `${SERVICES_ROOT_FOLDER}/${camelCaseServiceName}`;
36
34
 
37
35
  if (allSchemaFilenames.length > 0) {
36
+ const hasStaleSchema = allSchemaFilenames.some(
37
+ (schemaFilename) => Date.now() - fs.statSync(schemaFilename).mtimeMs > SCHEMA_MAX_AGE_MS,
38
+ );
39
+ if (hasStaleSchema) {
40
+ log('cached schema(s) are stale (older than 1 hour), regenerating for service', serviceName);
41
+ const regenerated = generateSchemasForService(serviceName, outputDir);
42
+ if (regenerated.length > 0) {
43
+ return regenerated.map(({ schema }) => schema);
44
+ }
45
+ log('regeneration failed, falling back to stale cached schemas for service', serviceName);
46
+ }
38
47
  return allSchemaFilenames.map(
39
48
  (schemaFilename) => JSON.parse(fs.readFileSync(schemaFilename, 'utf-8')) as ApiSchemas,
40
49
  );
41
50
  }
42
51
 
43
52
  log('no pre-generated schemas found, attempting on-demand generation for service', serviceName);
44
- const outputDir = `${SERVICES_ROOT_FOLDER}/${camelCaseServiceName}`;
45
53
  return generateSchemasForService(serviceName, outputDir).map(({ schema }) => schema);
46
54
  }