@checkdigit/eslint-athena-plugin 1.0.0-PR.2-026e → 1.0.0-PR.2-e574
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,9 +1,9 @@
|
|
|
1
1
|
// src/openapi/service-schema-generator.ts
|
|
2
2
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { strict as assert } from "node:assert";
|
|
3
4
|
import debug from "debug";
|
|
4
5
|
import { buildApiSchemaFromYaml } from "./generate-schema.mjs";
|
|
5
6
|
var log = debug("eslint-athena-plugin:athena:service-schema-generator");
|
|
6
|
-
var ORGANIZATIONS = ["checkdigit"];
|
|
7
7
|
var SWAGGER_SCHEMA_DEREF_FILENAME = "swagger.schema.deref.json";
|
|
8
8
|
function errorMessageFromError(error) {
|
|
9
9
|
return error instanceof Error ? error.message : String(error);
|
|
@@ -98,28 +98,45 @@ function findServiceInProject(serviceName) {
|
|
|
98
98
|
return findServiceLocally(".", org, serviceName);
|
|
99
99
|
}
|
|
100
100
|
function findServiceInNodeModules(serviceName) {
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
const projectPackageJson = JSON.parse(
|
|
102
|
+
readFileSync("./package.json", "utf-8")
|
|
103
|
+
);
|
|
104
|
+
const allDependencies = {
|
|
105
|
+
...projectPackageJson.dependencies,
|
|
106
|
+
...projectPackageJson.devDependencies,
|
|
107
|
+
...projectPackageJson.peerDependencies,
|
|
108
|
+
...projectPackageJson.optionalDependencies
|
|
109
|
+
};
|
|
110
|
+
const matchingPackages = [
|
|
111
|
+
...new Set(
|
|
112
|
+
Object.keys(allDependencies).filter((packageName) => {
|
|
113
|
+
const match = /^@(?<org>[^/]+)\/(?<name>.+)$/u.exec(packageName);
|
|
114
|
+
return match?.groups?.["name"] === serviceName;
|
|
115
|
+
})
|
|
116
|
+
)
|
|
117
|
+
];
|
|
118
|
+
for (const scopedPackageName of matchingPackages) {
|
|
119
|
+
const serviceFolder = `node_modules/${scopedPackageName}`;
|
|
120
|
+
const org = scopedPackageName.slice(1).split("/")[0];
|
|
121
|
+
assert.ok(org !== void 0, "organization must be defined");
|
|
103
122
|
if (!existsSync(serviceFolder)) {
|
|
104
|
-
log(
|
|
105
|
-
`[schema-generator] not found in node_modules: @${org}/${serviceName}`
|
|
106
|
-
);
|
|
123
|
+
log(`[schema-generator] not found in node_modules: ${scopedPackageName}`);
|
|
107
124
|
continue;
|
|
108
125
|
}
|
|
109
126
|
try {
|
|
110
127
|
log(
|
|
111
|
-
`[schema-generator] found in node_modules:
|
|
128
|
+
`[schema-generator] found in node_modules: ${scopedPackageName}, reading swagger files`
|
|
112
129
|
);
|
|
113
130
|
const source = findServiceLocally(serviceFolder, org, serviceName);
|
|
114
131
|
if (source !== void 0) {
|
|
115
132
|
return source;
|
|
116
133
|
}
|
|
117
134
|
log(
|
|
118
|
-
`[schema-generator] no swagger schema inside node_modules
|
|
135
|
+
`[schema-generator] no swagger schema inside node_modules/${scopedPackageName}`
|
|
119
136
|
);
|
|
120
137
|
} catch (error) {
|
|
121
138
|
log(
|
|
122
|
-
`[schema-generator] error reading node_modules
|
|
139
|
+
`[schema-generator] error reading node_modules/${scopedPackageName}: ${errorMessageFromError(error)}`
|
|
123
140
|
);
|
|
124
141
|
}
|
|
125
142
|
}
|
|
@@ -173,4 +190,4 @@ function generateSchemasForService(serviceName, outputDir) {
|
|
|
173
190
|
export {
|
|
174
191
|
generateSchemasForService
|
|
175
192
|
};
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL29wZW5hcGkvc2VydmljZS1zY2hlbWEtZ2VuZXJhdG9yLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQUVBLFNBQVMsWUFBWSxXQUFXLGNBQWMscUJBQXFCO0FBQ25FLFNBQVMsVUFBVSxjQUFjO0FBRWpDLE9BQU8sV0FBVztBQUVsQixTQUEwQiw4QkFBOEI7QUFFeEQsSUFBTSxNQUFNLE1BQU0sc0RBQXNEO0FBRXhFLElBQU0sZ0NBQWdDO0FBRXRDLFNBQVMsc0JBQXNCLE9BQXdCO0FBQ3JELFNBQU8saUJBQWlCLFFBQVEsTUFBTSxVQUFVLE9BQU8sS0FBSztBQUM5RDtBQWFBLFNBQVMsZ0JBQWdCLFNBQWlDO0FBQ3hELFFBQU0sY0FBYyxRQUFRLGVBQWUsQ0FBQztBQUU1QyxXQUFTLFdBQ1AsT0FDQSxZQUF5QixvQkFBSSxJQUFZLEdBQ2hDO0FBQ1QsUUFBSSxVQUFVLFFBQVEsT0FBTyxVQUFVLFVBQVU7QUFDL0MsYUFBTztBQUFBLElBQ1Q7QUFDQSxRQUFJLE1BQU0sUUFBUSxLQUFLLEdBQUc7QUFDeEIsYUFBTyxNQUFNLElBQUksQ0FBQyxTQUFTLFdBQVcsTUFBTSxTQUFTLENBQUM7QUFBQSxJQUN4RDtBQUNBLFVBQU0sTUFBTTtBQUNaLFFBQUksT0FBTyxJQUFJLE1BQU0sTUFBTSxVQUFVO0FBQ25DLFlBQU0sVUFBVSxrQ0FBa0MsS0FBSyxJQUFJLE1BQU0sQ0FBQyxHQUM5RCxTQUFTLE1BQU07QUFDbkIsVUFBSSxZQUFZLFVBQWEsQ0FBQyxVQUFVLElBQUksT0FBTyxHQUFHO0FBQ3BELGVBQU87QUFBQSxVQUNMLFlBQVksT0FBTztBQUFBLFVBQ25CLG9CQUFJLElBQVksQ0FBQyxHQUFHLFdBQVcsT0FBTyxDQUFDO0FBQUEsUUFDekM7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUNBLFdBQU8sT0FBTztBQUFBLE1BQ1osT0FBTyxRQUFRLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsTUFBTTtBQUFBLFFBQ3RD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
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@checkdigit/eslint-athena-plugin","version":"1.0.0-PR.2-
|
|
1
|
+
{"name":"@checkdigit/eslint-athena-plugin","version":"1.0.0-PR.2-e574","private":false,"description":"Check Digit eslint plugins to enforce best practices for projects using Athena SQL.","keywords":["eslint","athena"],"homepage":"https://github.com/checkdigit/eslint-athena-plugin#readme","bugs":{"url":"https://github.com/checkdigit/eslint-athena-plugin/issues"},"repository":{"type":"git","url":"https://github.com/checkdigit/eslint-athena-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 --ignore-path .prettierignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --ignore-path .prettierignore --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.4.0","@typescript-eslint/type-utils":"^8.61.1","@typescript-eslint/utils":"^8.61.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":"^8.0.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.61.1","@typescript-eslint/rule-tester":"^8.61.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.61.1"},"peerDependencies":{"eslint":">=9 <10"},"engines":{"node":">=24.14.1"},"service":{"api":{"root":"src","endpoints":["api/v1","api/v2"]}}}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// openapi/service-schema-generator.ts
|
|
2
2
|
|
|
3
3
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
4
|
+
import { strict as assert } from 'node:assert';
|
|
4
5
|
|
|
5
6
|
import debug from 'debug';
|
|
6
7
|
|
|
@@ -8,7 +9,6 @@ import { type ApiSchemas, buildApiSchemaFromYaml } from './generate-schema.ts';
|
|
|
8
9
|
|
|
9
10
|
const log = debug('eslint-athena-plugin:athena:service-schema-generator');
|
|
10
11
|
|
|
11
|
-
const ORGANIZATIONS = ['checkdigit'] as const;
|
|
12
12
|
const SWAGGER_SCHEMA_DEREF_FILENAME = 'swagger.schema.deref.json';
|
|
13
13
|
|
|
14
14
|
function errorMessageFromError(error: unknown): string {
|
|
@@ -157,28 +157,53 @@ function findServiceInProject(serviceName: string): ServiceSource | undefined {
|
|
|
157
157
|
function findServiceInNodeModules(
|
|
158
158
|
serviceName: string,
|
|
159
159
|
): ServiceSource | undefined {
|
|
160
|
-
|
|
161
|
-
|
|
160
|
+
const projectPackageJson = JSON.parse(
|
|
161
|
+
readFileSync('./package.json', 'utf-8'),
|
|
162
|
+
) as {
|
|
163
|
+
dependencies?: Record<string, string>;
|
|
164
|
+
devDependencies?: Record<string, string>;
|
|
165
|
+
peerDependencies?: Record<string, string>;
|
|
166
|
+
optionalDependencies?: Record<string, string>;
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
const allDependencies = {
|
|
170
|
+
...projectPackageJson.dependencies,
|
|
171
|
+
...projectPackageJson.devDependencies,
|
|
172
|
+
...projectPackageJson.peerDependencies,
|
|
173
|
+
...projectPackageJson.optionalDependencies,
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
const matchingPackages = [
|
|
177
|
+
...new Set(
|
|
178
|
+
Object.keys(allDependencies).filter((packageName) => {
|
|
179
|
+
const match = /^@(?<org>[^/]+)\/(?<name>.+)$/u.exec(packageName);
|
|
180
|
+
return match?.groups?.['name'] === serviceName;
|
|
181
|
+
}),
|
|
182
|
+
),
|
|
183
|
+
];
|
|
184
|
+
|
|
185
|
+
for (const scopedPackageName of matchingPackages) {
|
|
186
|
+
const serviceFolder = `node_modules/${scopedPackageName}`;
|
|
187
|
+
const org = scopedPackageName.slice(1).split('/')[0];
|
|
188
|
+
assert.ok(org !== undefined, 'organization must be defined');
|
|
162
189
|
if (!existsSync(serviceFolder)) {
|
|
163
|
-
log(
|
|
164
|
-
`[schema-generator] not found in node_modules: @${org}/${serviceName}`,
|
|
165
|
-
);
|
|
190
|
+
log(`[schema-generator] not found in node_modules: ${scopedPackageName}`);
|
|
166
191
|
continue;
|
|
167
192
|
}
|
|
168
193
|
try {
|
|
169
194
|
log(
|
|
170
|
-
`[schema-generator] found in node_modules:
|
|
195
|
+
`[schema-generator] found in node_modules: ${scopedPackageName}, reading swagger files`,
|
|
171
196
|
);
|
|
172
197
|
const source = findServiceLocally(serviceFolder, org, serviceName);
|
|
173
198
|
if (source !== undefined) {
|
|
174
199
|
return source;
|
|
175
200
|
}
|
|
176
201
|
log(
|
|
177
|
-
`[schema-generator] no swagger schema inside node_modules
|
|
202
|
+
`[schema-generator] no swagger schema inside node_modules/${scopedPackageName}`,
|
|
178
203
|
);
|
|
179
204
|
} catch (error) {
|
|
180
205
|
log(
|
|
181
|
-
`[schema-generator] error reading node_modules
|
|
206
|
+
`[schema-generator] error reading node_modules/${scopedPackageName}: ${errorMessageFromError(error)}`,
|
|
182
207
|
);
|
|
183
208
|
}
|
|
184
209
|
}
|