@amritk/lint 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -1
- package/dist/core/glob.d.ts +1 -1
- package/dist/core/glob.js +89 -5
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/jsonpath.d.ts +17 -1
- package/dist/core/jsonpath.js +218 -23
- package/dist/core/lint.d.ts +15 -8
- package/dist/core/lint.js +12 -3
- package/dist/core/plugin.d.ts +6 -0
- package/dist/core/plugin.js +6 -0
- package/dist/core/pointers.js +15 -15
- package/dist/core/ruleset.js +0 -0
- package/dist/core/runner.d.ts +6 -1
- package/dist/core/runner.js +127 -43
- package/dist/core/types.d.ts +17 -2
- package/dist/core/validate-ruleset.js +16 -0
- package/dist/fix/apply.d.ts +8 -2
- package/dist/fix/apply.js +68 -18
- package/dist/functions/alphabetical.js +40 -13
- package/dist/functions/casing.js +27 -5
- package/dist/functions/enumeration.d.ts +5 -3
- package/dist/functions/enumeration.js +18 -1
- package/dist/functions/index.d.ts +1 -0
- package/dist/functions/index.js +3 -0
- package/dist/functions/length.d.ts +13 -3
- package/dist/functions/length.js +11 -3
- package/dist/functions/or.d.ts +11 -0
- package/dist/functions/or.js +25 -0
- package/dist/functions/pattern.d.ts +5 -3
- package/dist/functions/pattern.js +42 -9
- package/dist/functions/schema.d.ts +13 -0
- package/dist/functions/schema.js +95 -2
- package/dist/functions/typed-enum.js +7 -1
- package/dist/functions/unreferenced-reusable-object.d.ts +7 -1
- package/dist/functions/unreferenced-reusable-object.js +18 -3
- package/dist/functions/xor.js +8 -1
- package/dist/index.js +9 -1
- package/dist/parsers/edit-model.d.ts +15 -0
- package/dist/parsers/edit-model.js +210 -41
- package/dist/parsers/types.d.ts +14 -2
- package/dist/parsers/yaml.d.ts +10 -0
- package/dist/parsers/yaml.js +174 -26
- package/dist/rules/openapi/fixers.d.ts +7 -0
- package/dist/rules/openapi/fixers.js +248 -0
- package/dist/rules/openapi/formats.d.ts +13 -0
- package/dist/rules/openapi/formats.js +30 -0
- package/dist/rules/openapi/functions/example-validation.d.ts +18 -0
- package/dist/rules/openapi/functions/example-validation.js +160 -0
- package/dist/rules/openapi/functions/helpers.d.ts +4 -0
- package/dist/rules/openapi/functions/helpers.js +10 -0
- package/dist/rules/openapi/functions/index.d.ts +26 -0
- package/dist/rules/openapi/functions/index.js +73 -0
- package/dist/rules/openapi/functions/oas-additional-operations.d.ts +8 -0
- package/dist/rules/openapi/functions/oas-additional-operations.js +25 -0
- package/dist/rules/openapi/functions/oas-discriminator.d.ts +3 -0
- package/dist/rules/openapi/functions/oas-discriminator.js +23 -0
- package/dist/rules/openapi/functions/oas-example-external-value.d.ts +11 -0
- package/dist/rules/openapi/functions/oas-example-external-value.js +23 -0
- package/dist/rules/openapi/functions/oas-example-value.d.ts +3 -0
- package/dist/rules/openapi/functions/oas-example-value.js +31 -0
- package/dist/rules/openapi/functions/oas-mutually-exclusive.d.ts +10 -0
- package/dist/rules/openapi/functions/oas-mutually-exclusive.js +20 -0
- package/dist/rules/openapi/functions/oas-no-nullable.d.ts +13 -0
- package/dist/rules/openapi/functions/oas-no-nullable.js +22 -0
- package/dist/rules/openapi/functions/oas-op-form-data-consume-check.d.ts +3 -0
- package/dist/rules/openapi/functions/oas-op-form-data-consume-check.js +21 -0
- package/dist/rules/openapi/functions/oas-op-id-unique.d.ts +3 -0
- package/dist/rules/openapi/functions/oas-op-id-unique.js +29 -0
- package/dist/rules/openapi/functions/oas-op-params.d.ts +9 -0
- package/dist/rules/openapi/functions/oas-op-params.js +46 -0
- package/dist/rules/openapi/functions/oas-op-security-defined.d.ts +5 -0
- package/dist/rules/openapi/functions/oas-op-security-defined.js +44 -0
- package/dist/rules/openapi/functions/oas-op-success-response.d.ts +3 -0
- package/dist/rules/openapi/functions/oas-op-success-response.js +16 -0
- package/dist/rules/openapi/functions/oas-path-param.d.ts +12 -0
- package/dist/rules/openapi/functions/oas-path-param.js +106 -0
- package/dist/rules/openapi/functions/oas-schema-example-deprecated.d.ts +10 -0
- package/dist/rules/openapi/functions/oas-schema-example-deprecated.js +42 -0
- package/dist/rules/openapi/functions/oas-schema.d.ts +15 -0
- package/dist/rules/openapi/functions/oas-schema.js +15 -0
- package/dist/rules/openapi/functions/oas-server-name-unique.d.ts +3 -0
- package/dist/rules/openapi/functions/oas-server-name-unique.js +20 -0
- package/dist/rules/openapi/functions/oas-server-variables.d.ts +8 -0
- package/dist/rules/openapi/functions/oas-server-variables.js +52 -0
- package/dist/rules/openapi/functions/oas-tag-defined.d.ts +3 -0
- package/dist/rules/openapi/functions/oas-tag-defined.js +21 -0
- package/dist/rules/openapi/functions/oas-tag-kind.d.ts +3 -0
- package/dist/rules/openapi/functions/oas-tag-kind.js +17 -0
- package/dist/rules/openapi/functions/oas-tag-parent-defined.d.ts +7 -0
- package/dist/rules/openapi/functions/oas-tag-parent-defined.js +45 -0
- package/dist/rules/openapi/functions/oas-tags-unique.d.ts +3 -0
- package/dist/rules/openapi/functions/oas-tags-unique.js +17 -0
- package/dist/rules/openapi/functions/oas-unused-component.d.ts +7 -0
- package/dist/rules/openapi/functions/oas-unused-component.js +65 -0
- package/dist/rules/openapi/functions/ref-siblings.d.ts +3 -0
- package/dist/rules/openapi/functions/ref-siblings.js +13 -0
- package/dist/rules/openapi/index.d.ts +25 -0
- package/dist/rules/openapi/index.js +127 -0
- package/dist/rules/openapi/oas.d.ts +3 -0
- package/dist/rules/openapi/oas.js +549 -0
- package/dist/rules/openapi/schemas/index.d.ts +8 -0
- package/dist/rules/openapi/schemas/index.js +36 -0
- package/dist/rules/openapi/schemas/oas20.json +1592 -0
- package/dist/rules/openapi/schemas/oas30.json +1651 -0
- package/dist/rules/openapi/schemas/oas31.json +1412 -0
- package/dist/rules/openapi/schemas/oas32.json +1684 -0
- package/package.json +17 -5
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** The OpenAPI versions with a bundled structural meta-schema. */
|
|
2
|
+
export type OasVersion = '2.0' | '3.0' | '3.1' | '3.2';
|
|
3
|
+
/**
|
|
4
|
+
* Lazily loads (and memoizes) the official structural meta-schema for one
|
|
5
|
+
* OpenAPI version. The returned object is stable across calls, so downstream
|
|
6
|
+
* validator caches (keyed by schema identity) stay warm.
|
|
7
|
+
*/
|
|
8
|
+
export declare const loadOasSchema: (version: OasVersion) => object;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
// The OpenAPI structural meta-schemas are the official JSON Schema documents
|
|
3
|
+
// from spec.openapis.org, kept as raw `.json` files in this directory (see
|
|
4
|
+
// `README.md` for the exact source URLs, dates, and the one adaptation the 2.0
|
|
5
|
+
// schema needs). They are loaded with `require` rather than a static JSON import
|
|
6
|
+
// so the emitted ESM stays valid without an import attribute, and the build
|
|
7
|
+
// copies the `.json` files next to the compiled output. 3.1/3.2 express Schema
|
|
8
|
+
// Objects as JSON Schema 2020-12 via a local `$dynamicRef`, which
|
|
9
|
+
// @amritk/runtime-validators resolves natively — no bundling, no dialect engine.
|
|
10
|
+
//
|
|
11
|
+
// Loading is lazy and per-version: nothing is read until `loadOasSchema` is
|
|
12
|
+
// called for a given version (which the `oasSchema` rule function only does for
|
|
13
|
+
// the document's own OpenAPI version, since each `*-schema` rule is format-gated
|
|
14
|
+
// to a single version). Linting a 3.1 document therefore never reads the 2.0 /
|
|
15
|
+
// 3.0 / 3.2 schema files.
|
|
16
|
+
const require = createRequire(import.meta.url);
|
|
17
|
+
const SCHEMA_FILES = {
|
|
18
|
+
'2.0': './oas20.json',
|
|
19
|
+
'3.0': './oas30.json',
|
|
20
|
+
'3.1': './oas31.json',
|
|
21
|
+
'3.2': './oas32.json',
|
|
22
|
+
};
|
|
23
|
+
const cache = new Map();
|
|
24
|
+
/**
|
|
25
|
+
* Lazily loads (and memoizes) the official structural meta-schema for one
|
|
26
|
+
* OpenAPI version. The returned object is stable across calls, so downstream
|
|
27
|
+
* validator caches (keyed by schema identity) stay warm.
|
|
28
|
+
*/
|
|
29
|
+
export const loadOasSchema = (version) => {
|
|
30
|
+
let schema = cache.get(version);
|
|
31
|
+
if (!schema) {
|
|
32
|
+
schema = require(SCHEMA_FILES[version]);
|
|
33
|
+
cache.set(version, schema);
|
|
34
|
+
}
|
|
35
|
+
return schema;
|
|
36
|
+
};
|