@intentius/sql-yodeler 0.3.0 → 0.4.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 +1 -1
- package/dist/apply-steps/index.d.ts +65 -0
- package/dist/apply-steps/index.js +106 -0
- package/dist/apply-steps/index.js.map +1 -0
- package/dist/approval-mode/index.d.ts +78 -0
- package/dist/approval-mode/index.js +105 -0
- package/dist/approval-mode/index.js.map +1 -0
- package/dist/chant/access.d.ts +87 -0
- package/dist/chant/access.js +169 -0
- package/dist/chant/access.js.map +1 -0
- package/dist/chant/drift.d.ts +17 -1
- package/dist/chant/drift.js +55 -2
- package/dist/chant/drift.js.map +1 -1
- package/dist/chant/plan.d.ts +18 -2
- package/dist/chant/plan.js +21 -3
- package/dist/chant/plan.js.map +1 -1
- package/dist/ci/render.d.ts +54 -10
- package/dist/ci/render.js +249 -52
- package/dist/ci/render.js.map +1 -1
- package/dist/cleanup/index.d.ts +86 -0
- package/dist/cleanup/index.js +207 -0
- package/dist/cleanup/index.js.map +1 -0
- package/dist/commands/apply.js +153 -20
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/approve.d.ts +13 -0
- package/dist/commands/approve.js +206 -24
- package/dist/commands/approve.js.map +1 -1
- package/dist/commands/ci.js +12 -0
- package/dist/commands/ci.js.map +1 -1
- package/dist/commands/cleanup.d.ts +13 -0
- package/dist/commands/cleanup.js +138 -0
- package/dist/commands/cleanup.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.js +136 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/drift.js +34 -3
- package/dist/commands/drift.js.map +1 -1
- package/dist/commands/index.js +6 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/lint.js +30 -6
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/new.js +133 -34
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/plan.js +42 -5
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/test.d.ts +3 -0
- package/dist/commands/test.js +164 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/config/define.d.ts +117 -2
- package/dist/config/define.js +2 -0
- package/dist/config/define.js.map +1 -1
- package/dist/config/load.js +74 -10
- package/dist/config/load.js.map +1 -1
- package/dist/config/settings.d.ts +18 -0
- package/dist/config/settings.js +26 -0
- package/dist/config/settings.js.map +1 -1
- package/dist/credentials.d.ts +119 -0
- package/dist/credentials.js +119 -0
- package/dist/credentials.js.map +1 -0
- package/dist/exit.js +1 -1
- package/dist/exit.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/init/adopt.js +1 -1
- package/dist/init/adopt.js.map +1 -1
- package/dist/init/clickhouse-access.d.ts +64 -0
- package/dist/init/clickhouse-access.js +211 -0
- package/dist/init/clickhouse-access.js.map +1 -0
- package/dist/init/live.d.ts +4 -0
- package/dist/init/live.js +16 -0
- package/dist/init/live.js.map +1 -1
- package/dist/lint/access.d.ts +18 -0
- package/dist/lint/access.js +34 -0
- package/dist/lint/access.js.map +1 -0
- package/dist/lint/check.js +23 -6
- package/dist/lint/check.js.map +1 -1
- package/dist/lint/config.d.ts +7 -1
- package/dist/lint/config.js +11 -5
- package/dist/lint/config.js.map +1 -1
- package/dist/lint/index.d.ts +2 -0
- package/dist/lint/index.js +2 -0
- package/dist/lint/index.js.map +1 -1
- package/dist/lint/naming.d.ts +62 -0
- package/dist/lint/naming.js +138 -0
- package/dist/lint/naming.js.map +1 -0
- package/dist/lint/rules.d.ts +37 -4
- package/dist/lint/rules.js +16 -4
- package/dist/lint/rules.js.map +1 -1
- package/dist/lint/schema-checks.d.ts +63 -0
- package/dist/lint/schema-checks.js +128 -0
- package/dist/lint/schema-checks.js.map +1 -0
- package/dist/lint/statements.d.ts +22 -1
- package/dist/lint/statements.js +40 -1
- package/dist/lint/statements.js.map +1 -1
- package/dist/mcp/tools.d.ts +1 -1
- package/dist/mcp/tools.js +1 -1
- package/dist/mcp/tools.js.map +1 -1
- package/dist/migrations/checkpoint.js +0 -2
- package/dist/migrations/checkpoint.js.map +1 -1
- package/dist/migrations/checks.d.ts +19 -1
- package/dist/migrations/checks.js +15 -0
- package/dist/migrations/checks.js.map +1 -1
- package/dist/migrations/create.d.ts +13 -4
- package/dist/migrations/create.js +24 -9
- package/dist/migrations/create.js.map +1 -1
- package/dist/migrations/routines.d.ts +5 -15
- package/dist/migrations/routines.js +5 -30
- package/dist/migrations/routines.js.map +1 -1
- package/dist/pr/model.d.ts +4 -1
- package/dist/pr/model.js +13 -5
- package/dist/pr/model.js.map +1 -1
- package/dist/pr/render.d.ts +4 -1
- package/dist/pr/render.js +22 -8
- package/dist/pr/render.js.map +1 -1
- package/dist/pr/tenants.d.ts +37 -0
- package/dist/pr/tenants.js +138 -0
- package/dist/pr/tenants.js.map +1 -0
- package/dist/probe.d.ts +27 -0
- package/dist/probe.js +106 -0
- package/dist/probe.js.map +1 -0
- package/dist/project.d.ts +16 -0
- package/dist/project.js +29 -1
- package/dist/project.js.map +1 -1
- package/dist/replay/clickhouse.d.ts +31 -0
- package/dist/replay/clickhouse.js +103 -6
- package/dist/replay/clickhouse.js.map +1 -1
- package/dist/replay/replay.d.ts +5 -2
- package/dist/replay/replay.js.map +1 -1
- package/dist/report/audit.d.ts +1 -1
- package/dist/report/audit.js +20 -3
- package/dist/report/audit.js.map +1 -1
- package/dist/schemas.d.ts +3 -1
- package/dist/schemas.js +2 -0
- package/dist/schemas.js.map +1 -1
- package/dist/sources/ddl.d.ts +15 -20
- package/dist/sources/ddl.js +34 -328
- package/dist/sources/ddl.js.map +1 -1
- package/dist/sources/index.js +2 -2
- package/dist/sources/index.js.map +1 -1
- package/dist/steps/backfill.d.ts +40 -5
- package/dist/steps/backfill.js +128 -8
- package/dist/steps/backfill.js.map +1 -1
- package/dist/steps/index.d.ts +19 -1
- package/dist/steps/index.js +34 -7
- package/dist/steps/index.js.map +1 -1
- package/dist/steps/kinds.d.ts +42 -4
- package/dist/steps/kinds.js +88 -14
- package/dist/steps/kinds.js.map +1 -1
- package/dist/steps/postgres-migration.d.ts +3 -0
- package/dist/steps/postgres-migration.js +7 -3
- package/dist/steps/postgres-migration.js.map +1 -1
- package/dist/steps/rebuild.d.ts +15 -6
- package/dist/steps/rebuild.js +12 -9
- package/dist/steps/rebuild.js.map +1 -1
- package/dist/tenants/index.d.ts +2 -1
- package/dist/tenants/index.js +3 -4
- package/dist/tenants/index.js.map +1 -1
- package/dist/tenants/wave.d.ts +128 -0
- package/dist/tenants/wave.js +254 -0
- package/dist/tenants/wave.js.map +1 -0
- package/dist/testing/define.d.ts +62 -0
- package/dist/testing/define.js +32 -0
- package/dist/testing/define.js.map +1 -0
- package/dist/testing/files.d.ts +5 -0
- package/dist/testing/files.js +18 -0
- package/dist/testing/files.js.map +1 -0
- package/dist/testing/report.d.ts +14 -0
- package/dist/testing/report.js +83 -0
- package/dist/testing/report.js.map +1 -0
- package/dist/testing/run.d.ts +104 -0
- package/dist/testing/run.js +328 -0
- package/dist/testing/run.js.map +1 -0
- package/dist/versioned/approval.d.ts +6 -0
- package/dist/versioned/approval.js +11 -5
- package/dist/versioned/approval.js.map +1 -1
- package/dist/versioned/checks.d.ts +8 -2
- package/dist/versioned/checks.js +34 -13
- package/dist/versioned/checks.js.map +1 -1
- package/dist/versioned/driver.d.ts +2 -2
- package/dist/versioned/engine.d.ts +10 -0
- package/dist/versioned/engine.js +8 -4
- package/dist/versioned/engine.js.map +1 -1
- package/dist/versioned/explain.d.ts +2 -0
- package/dist/versioned/explain.js +3 -1
- package/dist/versioned/explain.js.map +1 -1
- package/dist/versioned/state.js +1 -1
- package/dist/versioned/state.js.map +1 -1
- package/dist/waves/index.d.ts +58 -13
- package/dist/waves/index.js +109 -24
- package/dist/waves/index.js.map +1 -1
- package/dist/waves/record.d.ts +10 -0
- package/dist/waves/record.js.map +1 -1
- package/package.json +7 -7
- package/schemas/apply.schema.json +1 -1
- package/schemas/cleanup.schema.json +40 -0
- package/schemas/lint-rules.schema.json +4 -0
- package/schemas/new.schema.json +41 -3
- package/schemas/plan.schema.json +39 -0
- package/schemas/report.schema.json +1 -1
- package/schemas/test.schema.json +41 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clickhouse-access.js","sourceRoot":"","sources":["../../src/init/clickhouse-access.ts"],"names":[],"mappings":"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"}
|
package/dist/init/live.d.ts
CHANGED
|
@@ -20,6 +20,8 @@ export interface LiveImport {
|
|
|
20
20
|
warnings: string[];
|
|
21
21
|
/** Live objects left out as another tool's (`<database>.<name>`), which a plan then shows as undeclared. */
|
|
22
22
|
leftOut: string[];
|
|
23
|
+
/** ClickHouse, where the environment manages access (#46): the users, roles, row policies and grants adopted into `access.ts`, as `<kind> <name>`. */
|
|
24
|
+
access?: string[];
|
|
23
25
|
}
|
|
24
26
|
/** The objects an import read, as `<type> <name>` lines for people. */
|
|
25
27
|
export declare function describeImported(ir: TemplateIR): string[];
|
|
@@ -37,3 +39,5 @@ export declare function importLive(project: Project, env: Environment, processEn
|
|
|
37
39
|
* list, `FOREIGN_TABLES`.
|
|
38
40
|
*/
|
|
39
41
|
export declare function withoutRunnerTables(resources: TemplateIR["resources"], warnings: string[], leftOut?: string[]): Promise<TemplateIR["resources"]>;
|
|
42
|
+
/** Whether environment `name` manages access: yodel.config.ts's `environments.<env>.access`, then the profile's, then off. */
|
|
43
|
+
export declare function accessManaged(project: Pick<Project, "yodel" | "profileAccess">, name: string): boolean;
|
package/dist/init/live.js
CHANGED
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
* carries no marker (one made by hand) reads the same as one chant made.
|
|
10
10
|
*/
|
|
11
11
|
import { YodelError } from "../project.js";
|
|
12
|
+
import { environmentAccess } from "../config/settings.js";
|
|
13
|
+
import { clickhouseAccessDeclarations } from "./clickhouse-access.js";
|
|
12
14
|
/** The objects an import read, as `<type> <name>` lines for people. */
|
|
13
15
|
export function describeImported(ir) {
|
|
14
16
|
return ir.resources.map((r) => {
|
|
@@ -43,6 +45,15 @@ export async function importLive(project, env, processEnv = process.env) {
|
|
|
43
45
|
const ir = { resources, parameters: exported.parameters ?? [] };
|
|
44
46
|
const { sqlTemplateGenerator } = await import("@intentius/chant-lexicon-sql/import-generator");
|
|
45
47
|
const files = ir.resources.length === 0 ? [] : sqlTemplateGenerator.generate(ir);
|
|
48
|
+
if (project.dialect === "clickhouse" && accessManaged(project, env.name)) {
|
|
49
|
+
const adopted = await clickhouseAccessDeclarations(project, env, ir, processEnv).catch((e) => {
|
|
50
|
+
throw new YodelError(`reading ${env.name}'s users, roles, row policies and grants failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
51
|
+
});
|
|
52
|
+
warnings.push(...adopted.warnings);
|
|
53
|
+
if (adopted.file)
|
|
54
|
+
files.push(adopted.file);
|
|
55
|
+
return { ir, files, warnings, leftOut, access: adopted.objects };
|
|
56
|
+
}
|
|
46
57
|
return { ir, files, warnings, leftOut };
|
|
47
58
|
}
|
|
48
59
|
/**
|
|
@@ -65,4 +76,9 @@ export async function withoutRunnerTables(resources, warnings, leftOut = []) {
|
|
|
65
76
|
return false;
|
|
66
77
|
});
|
|
67
78
|
}
|
|
79
|
+
/** Whether environment `name` manages access: yodel.config.ts's `environments.<env>.access`, then the profile's, then off. */
|
|
80
|
+
export function accessManaged(project, name) {
|
|
81
|
+
const chant = project.profileAccess?.[name];
|
|
82
|
+
return environmentAccess(project.yodel?.config.environments?.[name], chant !== undefined ? { access: chant } : undefined, name).access;
|
|
83
|
+
}
|
|
68
84
|
//# sourceMappingURL=live.js.map
|
package/dist/init/live.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.js","sourceRoot":"","sources":["../../src/init/live.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,UAAU,EAAkC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"live.js","sourceRoot":"","sources":["../../src/init/live.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `pg-rls-not-forced` (#45): a migration that turns row-level security on
|
|
3
|
+
* for a table its recorded schema does not also force it on. Postgres does
|
|
4
|
+
* not apply a table's policies to the table's owner unless the table has
|
|
5
|
+
* `FORCE ROW LEVEL SECURITY`, and the owner is usually the role that
|
|
6
|
+
* applies the migrations, so a query run as that role sees every row.
|
|
7
|
+
*
|
|
8
|
+
* Read from the migration's steps and its recorded schema, no server. Each
|
|
9
|
+
* table is reported once, at the step that enables its row-level security.
|
|
10
|
+
*/
|
|
11
|
+
import type { MigrationDocument } from "../migrations/index.js";
|
|
12
|
+
export interface AccessFinding {
|
|
13
|
+
rule: "pg-rls-not-forced";
|
|
14
|
+
step: number;
|
|
15
|
+
message: string;
|
|
16
|
+
}
|
|
17
|
+
/** The row-level-security findings of one Postgres migration. */
|
|
18
|
+
export declare function accessFindings(doc: Pick<MigrationDocument, "steps" | "schema" | "defaultSchema">): AccessFinding[];
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `pg-rls-not-forced` (#45): a migration that turns row-level security on
|
|
3
|
+
* for a table its recorded schema does not also force it on. Postgres does
|
|
4
|
+
* not apply a table's policies to the table's owner unless the table has
|
|
5
|
+
* `FORCE ROW LEVEL SECURITY`, and the owner is usually the role that
|
|
6
|
+
* applies the migrations, so a query run as that role sees every row.
|
|
7
|
+
*
|
|
8
|
+
* Read from the migration's steps and its recorded schema, no server. Each
|
|
9
|
+
* table is reported once, at the step that enables its row-level security.
|
|
10
|
+
*/
|
|
11
|
+
import { pgObjects } from "../migrations/routines.js";
|
|
12
|
+
const ENABLE = /\bENABLE\s+ROW\s+LEVEL\s+SECURITY\b/i;
|
|
13
|
+
/** The row-level-security findings of one Postgres migration. */
|
|
14
|
+
export function accessFindings(doc) {
|
|
15
|
+
const out = [];
|
|
16
|
+
let tables;
|
|
17
|
+
const seen = new Set();
|
|
18
|
+
doc.steps.forEach((s, i) => {
|
|
19
|
+
if (s.kind !== "statement" || s.type !== "Postgres::Table" || !ENABLE.test(s.sql) || seen.has(s.name))
|
|
20
|
+
return;
|
|
21
|
+
seen.add(s.name);
|
|
22
|
+
tables ??= new Map(pgObjects(doc.schema, doc.defaultSchema).filter((o) => o.kind === "table").map((o) => [o.qualified, o.fields]));
|
|
23
|
+
const fields = tables.get(s.name);
|
|
24
|
+
if (fields === undefined || fields.forceRowSecurity === true)
|
|
25
|
+
return;
|
|
26
|
+
out.push({
|
|
27
|
+
rule: "pg-rls-not-forced",
|
|
28
|
+
step: i,
|
|
29
|
+
message: `step ${String(i)}: ${s.name} has row-level security enabled but not forced, so its owner (often the role that applies) is not held to its policies; add ALTER TABLE ... FORCE ROW LEVEL SECURITY to its declaration`,
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
return out;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=access.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access.js","sourceRoot":"","sources":["../../src/lint/access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAQtD,MAAM,MAAM,GAAG,sCAAsC,CAAC;AAEtD,iEAAiE;AACjE,MAAM,UAAU,cAAc,CAAC,GAAkE;IAC/F,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,IAAI,MAAwD,CAAC;IAC7D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAgB,EAAE,CAAC,EAAE,EAAE;QACxC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO;QAC9G,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,KAAK,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnI,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,gBAAgB,KAAK,IAAI;YAAE,OAAO;QACrE,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,yLAAyL;SAC/N,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/lint/check.js
CHANGED
|
@@ -12,8 +12,11 @@ import { checkpointProblems, computeChecksum, emptyBuild, scanMigrations } from
|
|
|
12
12
|
import { levelOf } from "./config.js";
|
|
13
13
|
import { LINT_RULES } from "./rules.js";
|
|
14
14
|
import { mapMigrationSql } from "./silences.js";
|
|
15
|
-
import { refusedStep, stepFindings, unreadableStep } from "./statements.js";
|
|
15
|
+
import { createdObjects, refusedStep, stepFindings, unreadableStep } from "./statements.js";
|
|
16
16
|
import { routineFindings } from "./routines.js";
|
|
17
|
+
import { accessFindings } from "./access.js";
|
|
18
|
+
import { namingFindings } from "./naming.js";
|
|
19
|
+
import { SCHEMA_RULES, schemaFindings } from "./schema-checks.js";
|
|
17
20
|
const message = (e) => (e instanceof Error ? e.message : String(e)).split("\n")[0] ?? "";
|
|
18
21
|
const UPDATE = "if it is not applied in any environment, record its new checksum with yodel lint --update-checksum <id>; if it is, undo the edit, or record it with yodel repair <id> --reason ... <env>";
|
|
19
22
|
/** The `-- yodel:allow` lines silences.ts reads. */
|
|
@@ -98,7 +101,7 @@ function unreadableObjects(schema, options) {
|
|
|
98
101
|
* object it cannot read is reported once, in the first migration that
|
|
99
102
|
* records it; a failure no single object explains is reported whole.
|
|
100
103
|
*/
|
|
101
|
-
function
|
|
104
|
+
function recordedSchemaFindings(migrations, dialect) {
|
|
102
105
|
const out = [];
|
|
103
106
|
const byId = new Map(migrations.map((m) => [m.id, m]));
|
|
104
107
|
const reported = new Set();
|
|
@@ -153,9 +156,16 @@ const stepName = (s) => (typeof s.name === "string" ? s.name : undefined);
|
|
|
153
156
|
export async function lintMigrations(dir, options = {}) {
|
|
154
157
|
const scan = scanMigrations(dir);
|
|
155
158
|
const extra = options.rules ?? [];
|
|
156
|
-
const rules = { ...LINT_RULES, ...Object.fromEntries(extra.map((r) => [r.rule.id, r.rule])) };
|
|
159
|
+
const rules = { ...LINT_RULES, ...SCHEMA_RULES, ...Object.fromEntries(extra.map((r) => [r.rule.id, r.rule])) };
|
|
157
160
|
const dialect = options.dialect;
|
|
158
|
-
const raw = [...directoryFindings(scan.problems, options.history, scan.migrations), ...
|
|
161
|
+
const raw = [...directoryFindings(scan.problems, options.history, scan.migrations), ...recordedSchemaFindings(scan.migrations, dialect), ...checkpointFindings(scan.migrations)];
|
|
162
|
+
// Over the recorded schemas (#51): the lexicon's schema checks and the naming rules, each at a step a silence can name.
|
|
163
|
+
const chantRules = options.project?.config?.lint?.rules;
|
|
164
|
+
const configured = new Set(Object.keys(options.settings?.levels ?? {}));
|
|
165
|
+
const bySchema = new Map();
|
|
166
|
+
for (const f of [...schemaFindings(scan.migrations, { dialect, configured, chantRules }), ...namingFindings(scan.migrations, options.settings?.naming ?? {})]) {
|
|
167
|
+
bySchema.set(f.migration, [...(bySchema.get(f.migration) ?? []), f]);
|
|
168
|
+
}
|
|
159
169
|
const silenceable = new Set(Object.values(rules).filter((r) => r.silenceable).map((r) => r.id));
|
|
160
170
|
const silences = {};
|
|
161
171
|
const used = new Set();
|
|
@@ -169,6 +179,7 @@ export async function lintMigrations(dir, options = {}) {
|
|
|
169
179
|
silences[m.id] = map.silences;
|
|
170
180
|
for (const p of map.problems)
|
|
171
181
|
raw.push({ rule: p.rule, migration: m.id, message: p.message, ...(p.step !== undefined ? { step: p.step } : {}), ...(p.line !== undefined ? { line: p.line } : {}) });
|
|
182
|
+
const created = d === "postgres" ? createdObjects(steps) : undefined;
|
|
172
183
|
steps.forEach((step, i) => {
|
|
173
184
|
const name = stepName(step);
|
|
174
185
|
const where = { migration: m.id, step: i, ...(name !== undefined ? { object: name } : {}) };
|
|
@@ -180,7 +191,7 @@ export async function lintMigrations(dir, options = {}) {
|
|
|
180
191
|
const refused = refusedStep(step);
|
|
181
192
|
if (refused)
|
|
182
193
|
raw.push({ rule: "refused-step", ...where, message: `step ${String(i)}: yodel apply refuses ${refused}` });
|
|
183
|
-
for (const f of stepFindings(d, step)) {
|
|
194
|
+
for (const f of stepFindings(d, step, created ? { created } : {})) {
|
|
184
195
|
const rule = rules[f.rule];
|
|
185
196
|
if (rule?.dialect !== undefined && rule.dialect !== d)
|
|
186
197
|
continue;
|
|
@@ -191,7 +202,7 @@ export async function lintMigrations(dir, options = {}) {
|
|
|
191
202
|
}
|
|
192
203
|
});
|
|
193
204
|
if (d === "postgres") {
|
|
194
|
-
for (const f of routineFindings(m.document)) {
|
|
205
|
+
for (const f of [...routineFindings(m.document), ...accessFindings(m.document)]) {
|
|
195
206
|
const name = stepName(steps[f.step]);
|
|
196
207
|
const silence = map.silences.find((s) => s.step === f.step && s.rule === f.rule);
|
|
197
208
|
if (silence)
|
|
@@ -199,6 +210,12 @@ export async function lintMigrations(dir, options = {}) {
|
|
|
199
210
|
statementRaw.push({ rule: f.rule, migration: m.id, step: f.step, ...(name !== undefined ? { object: name } : {}), message: f.message, ...(silence ? { silence } : {}) });
|
|
200
211
|
}
|
|
201
212
|
}
|
|
213
|
+
for (const f of bySchema.get(m.id) ?? []) {
|
|
214
|
+
const silence = f.step === undefined ? undefined : map.silences.find((s) => s.step === f.step && s.rule === f.rule);
|
|
215
|
+
if (silence)
|
|
216
|
+
used.add(silence);
|
|
217
|
+
statementRaw.push({ ...f, ...(silence ? { silence } : {}) });
|
|
218
|
+
}
|
|
202
219
|
for (const s of map.silences) {
|
|
203
220
|
if (used.has(s))
|
|
204
221
|
continue;
|
package/dist/lint/check.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/lint/check.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/lint/check.ts"],"names":[],"mappings":"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"}
|
package/dist/lint/config.d.ts
CHANGED
|
@@ -9,11 +9,17 @@
|
|
|
9
9
|
*
|
|
10
10
|
* A level is `error` (fails the run), `warning` (reported, does not fail)
|
|
11
11
|
* or `off`. The integrity rules (`fork`, `directory`, `checksum`,
|
|
12
|
-
* `unreadable-object`) are always errors and cannot be set.
|
|
12
|
+
* `unreadable-object`) are always errors and cannot be set. A schema
|
|
13
|
+
* check's id (`SQLPG101`) is a rule like any other.
|
|
14
|
+
*
|
|
15
|
+
* `lint.naming` sets the naming rules (`./naming.ts`).
|
|
13
16
|
*/
|
|
17
|
+
import { type NamingSettings } from "./naming.js";
|
|
14
18
|
import type { LevelSetting, LintRule } from "./rules.js";
|
|
15
19
|
export interface LintSettings {
|
|
16
20
|
levels: Record<string, LevelSetting>;
|
|
21
|
+
/** `lint.naming`, compiled; absent when it sets none. */
|
|
22
|
+
naming?: NamingSettings;
|
|
17
23
|
}
|
|
18
24
|
/** Checks `lint` from `yodel.config.ts` against the rules there are. `where` names the file in errors. */
|
|
19
25
|
export declare function lintSettings(raw: Record<string, unknown> | undefined, rules: Readonly<Record<string, LintRule>>, where?: string): LintSettings;
|
package/dist/lint/config.js
CHANGED
|
@@ -9,9 +9,13 @@
|
|
|
9
9
|
*
|
|
10
10
|
* A level is `error` (fails the run), `warning` (reported, does not fail)
|
|
11
11
|
* or `off`. The integrity rules (`fork`, `directory`, `checksum`,
|
|
12
|
-
* `unreadable-object`) are always errors and cannot be set.
|
|
12
|
+
* `unreadable-object`) are always errors and cannot be set. A schema
|
|
13
|
+
* check's id (`SQLPG101`) is a rule like any other.
|
|
14
|
+
*
|
|
15
|
+
* `lint.naming` sets the naming rules (`./naming.ts`).
|
|
13
16
|
*/
|
|
14
17
|
import { YodelError } from "../project.js";
|
|
18
|
+
import { namingSettings } from "./naming.js";
|
|
15
19
|
const isRecord = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
16
20
|
const LEVELS = ["error", "warning", "off"];
|
|
17
21
|
/** Checks `lint` from `yodel.config.ts` against the rules there are. `where` names the file in errors. */
|
|
@@ -20,10 +24,12 @@ export function lintSettings(raw, rules, where = "yodel.config.ts") {
|
|
|
20
24
|
if (raw === undefined)
|
|
21
25
|
return { levels };
|
|
22
26
|
for (const k of Object.keys(raw))
|
|
23
|
-
if (k !== "rules")
|
|
24
|
-
throw new YodelError(`${where}: lint.${k}: unknown setting (expected rules)`);
|
|
27
|
+
if (k !== "rules" && k !== "naming")
|
|
28
|
+
throw new YodelError(`${where}: lint.${k}: unknown setting (expected rules, naming)`);
|
|
29
|
+
const naming = namingSettings(raw.naming, where);
|
|
30
|
+
const withNaming = (s) => (Object.keys(naming).length > 0 ? { ...s, naming } : s);
|
|
25
31
|
if (raw.rules === undefined)
|
|
26
|
-
return { levels };
|
|
32
|
+
return withNaming({ levels });
|
|
27
33
|
if (!isRecord(raw.rules))
|
|
28
34
|
throw new YodelError(`${where}: lint.rules: expected an object of rule: "error" | "warning" | "off"`);
|
|
29
35
|
for (const [id, level] of Object.entries(raw.rules)) {
|
|
@@ -36,7 +42,7 @@ export function lintSettings(raw, rules, where = "yodel.config.ts") {
|
|
|
36
42
|
throw new YodelError(`${where}: lint.rules.${id}: ${id} is an integrity rule and is always an error`);
|
|
37
43
|
levels[id] = level;
|
|
38
44
|
}
|
|
39
|
-
return { levels };
|
|
45
|
+
return withNaming({ levels });
|
|
40
46
|
}
|
|
41
47
|
/** The level a rule runs at. */
|
|
42
48
|
export const levelOf = (rule, settings) => settings?.levels[rule.id] ?? rule.level;
|
package/dist/lint/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lint/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lint/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAuB,MAAM,aAAa,CAAC;AASlE,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAgC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxH,MAAM,MAAM,GAAsB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAE9D,0GAA0G;AAC1G,MAAM,UAAU,YAAY,CAAC,GAAwC,EAAE,KAAyC,EAAE,KAAK,GAAG,iBAAiB;IACzI,MAAM,MAAM,GAAiC,EAAE,CAAC;IAChD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,QAAQ;YAAE,MAAM,IAAI,UAAU,CAAC,GAAG,KAAK,UAAU,CAAC,4CAA4C,CAAC,CAAC;IAC7J,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,CAAC,CAAe,EAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9G,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,GAAG,KAAK,uEAAuE,CAAC,CAAC;IAChI,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,UAAU,CAAC,GAAG,KAAK,gBAAgB,EAAE,8BAA8B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1H,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,GAAG,KAAK,gBAAgB,EAAE,wCAAwC,CAAC,CAAC;QACnJ,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,KAAK,OAAO;YAAE,MAAM,IAAI,UAAU,CAAC,GAAG,KAAK,gBAAgB,EAAE,KAAK,EAAE,8CAA8C,CAAC,CAAC;QACnJ,MAAM,CAAC,EAAE,CAAC,GAAG,KAAqB,CAAC;IACrC,CAAC;IACD,OAAO,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,gCAAgC;AAChC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAc,EAAE,QAAkC,EAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC"}
|
package/dist/lint/index.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export * from "./report.js";
|
|
|
16
16
|
export * from "./rules.js";
|
|
17
17
|
export * from "./silences.js";
|
|
18
18
|
export * from "./statements.js";
|
|
19
|
+
export * from "./naming.js";
|
|
20
|
+
export { SCHEMA_RULES, isSchemaRule, schemaDiagnostics, chantLevel, type SchemaDiagnostic } from "./schema-checks.js";
|
|
19
21
|
/** The well-formed `-- yodel:allow` lines of a migration, each with the step it is above. */
|
|
20
22
|
export declare function silencesOf(m: Pick<Migration, "files" | "document">): Silence[];
|
|
21
23
|
/** {@link silencesOf} as the history's `silences` field holds it: a JSON array of `{ step, rule, reason }`. */
|
package/dist/lint/index.js
CHANGED
|
@@ -19,6 +19,8 @@ export * from "./report.js";
|
|
|
19
19
|
export * from "./rules.js";
|
|
20
20
|
export * from "./silences.js";
|
|
21
21
|
export * from "./statements.js";
|
|
22
|
+
export * from "./naming.js";
|
|
23
|
+
export { SCHEMA_RULES, isSchemaRule, schemaDiagnostics, chantLevel } from "./schema-checks.js";
|
|
22
24
|
/** The well-formed `-- yodel:allow` lines of a migration, each with the step it is above. */
|
|
23
25
|
export function silencesOf(m) {
|
|
24
26
|
return mapMigrationSql(m.files.sql, m.document.steps, new Set(silenceableRules())).silences;
|
package/dist/lint/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lint/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAkB,MAAM,wBAAwB,CAAC;AAC3G,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAgB,MAAM,eAAe,CAAC;AAE5E,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lint/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAkB,MAAM,wBAAwB,CAAC;AAC3G,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAgB,MAAM,eAAe,CAAC;AAE5E,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAyB,MAAM,oBAAoB,CAAC;AAEtH,6FAA6F;AAC7F,MAAM,UAAU,UAAU,CAAC,CAAwC;IACjE,OAAO,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,CAAS,gBAAgB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtG,CAAC;AAED,+GAA+G;AAC/G,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAwC,EAAU,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnH;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,CAAY;IACzC,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,KAAK,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,cAAc,WAAW,CAAC,CAAC;IACvD,aAAa,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,GAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAA6B,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5H,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACtB,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `naming` (#51): names a migration gives that break the project's naming
|
|
3
|
+
* rules, set per kind of object in `yodel.config.ts`:
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* export default defineConfig({
|
|
7
|
+
* lint: { naming: { table: "snake_case", column: "snake_case", index: "[a-z_]+_idx", constraint: "[a-z_]+_(pkey|key|fkey|check)" } },
|
|
8
|
+
* });
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* A rule is a preset (`snake_case`, `camelCase`, `PascalCase`) or a regular
|
|
12
|
+
* expression the whole name must match. Only the names a migration adds are
|
|
13
|
+
* checked: a table, column, index or named constraint in its recorded schema
|
|
14
|
+
* that its parent's does not have. A name already there is not reported
|
|
15
|
+
* again, so turning a rule on does not fail the migrations already written.
|
|
16
|
+
* An unnamed constraint (the server names it) is not checked.
|
|
17
|
+
*
|
|
18
|
+
* Read from the recorded schemas with the lexicon's own parser: the names
|
|
19
|
+
* are the server's (Postgres folds an unquoted name to lower case). Each
|
|
20
|
+
* finding is at the migration's first step on the object, so a
|
|
21
|
+
* `-- yodel:allow naming <reason>` line above it silences it.
|
|
22
|
+
*/
|
|
23
|
+
import type { BuildOutput } from "../chant/build.js";
|
|
24
|
+
import type { Migration } from "../migrations/index.js";
|
|
25
|
+
export declare const NAMING_KINDS: readonly ["table", "column", "index", "constraint"];
|
|
26
|
+
export type NamingKind = (typeof NAMING_KINDS)[number];
|
|
27
|
+
export declare const NAMING_PRESETS: Readonly<Record<string, string>>;
|
|
28
|
+
/** One kind's rule, as `yodel.config.ts` gives it and compiled. */
|
|
29
|
+
export interface NamingRule {
|
|
30
|
+
/** As written: a preset name or a regular expression. */
|
|
31
|
+
rule: string;
|
|
32
|
+
pattern: RegExp;
|
|
33
|
+
}
|
|
34
|
+
export type NamingSettings = Partial<Record<NamingKind, NamingRule>>;
|
|
35
|
+
/** Reads `lint.naming`; a key that is not a kind, or a rule that is not a preset or a valid expression, is an error naming `where`. */
|
|
36
|
+
export declare function namingSettings(raw: unknown, where?: string): NamingSettings;
|
|
37
|
+
/** A name a recorded schema gives. */
|
|
38
|
+
interface Named {
|
|
39
|
+
kind: NamingKind;
|
|
40
|
+
/** Unique within the schema: the object, and for a column, index or constraint its table. */
|
|
41
|
+
key: string;
|
|
42
|
+
name: string;
|
|
43
|
+
/** The declaration's export, which a step on the object names. */
|
|
44
|
+
export: string;
|
|
45
|
+
/** How a message names it: `table shop.orders`, `column note of shop.orders`. */
|
|
46
|
+
label: string;
|
|
47
|
+
}
|
|
48
|
+
/** The names of a recorded schema, by kind; `[]` for one the lexicon cannot read (lint reports that on its own). */
|
|
49
|
+
export declare function schemaNames(build: BuildOutput, options?: {
|
|
50
|
+
defaultDatabase?: string | undefined;
|
|
51
|
+
defaultSchema?: string | undefined;
|
|
52
|
+
}): Named[];
|
|
53
|
+
export interface NamingFinding {
|
|
54
|
+
rule: "naming";
|
|
55
|
+
migration: string;
|
|
56
|
+
step?: number;
|
|
57
|
+
object?: string;
|
|
58
|
+
message: string;
|
|
59
|
+
}
|
|
60
|
+
/** The names each migration adds that break `settings`. */
|
|
61
|
+
export declare function namingFindings(migrations: readonly Migration[], settings: NamingSettings): NamingFinding[];
|
|
62
|
+
export {};
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `naming` (#51): names a migration gives that break the project's naming
|
|
3
|
+
* rules, set per kind of object in `yodel.config.ts`:
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* export default defineConfig({
|
|
7
|
+
* lint: { naming: { table: "snake_case", column: "snake_case", index: "[a-z_]+_idx", constraint: "[a-z_]+_(pkey|key|fkey|check)" } },
|
|
8
|
+
* });
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* A rule is a preset (`snake_case`, `camelCase`, `PascalCase`) or a regular
|
|
12
|
+
* expression the whole name must match. Only the names a migration adds are
|
|
13
|
+
* checked: a table, column, index or named constraint in its recorded schema
|
|
14
|
+
* that its parent's does not have. A name already there is not reported
|
|
15
|
+
* again, so turning a rule on does not fail the migrations already written.
|
|
16
|
+
* An unnamed constraint (the server names it) is not checked.
|
|
17
|
+
*
|
|
18
|
+
* Read from the recorded schemas with the lexicon's own parser: the names
|
|
19
|
+
* are the server's (Postgres folds an unquoted name to lower case). Each
|
|
20
|
+
* finding is at the migration's first step on the object, so a
|
|
21
|
+
* `-- yodel:allow naming <reason>` line above it silences it.
|
|
22
|
+
*/
|
|
23
|
+
import { schemaFromBuildOutput } from "@intentius/chant-lexicon-sql/clickhouse/plan/schema";
|
|
24
|
+
import { pgSchemaFromBuildOutput } from "@intentius/chant-lexicon-sql/postgres/plan/schema";
|
|
25
|
+
import { YodelError } from "../project.js";
|
|
26
|
+
export const NAMING_KINDS = ["table", "column", "index", "constraint"];
|
|
27
|
+
export const NAMING_PRESETS = {
|
|
28
|
+
snake_case: "[a-z][a-z0-9]*(_[a-z0-9]+)*",
|
|
29
|
+
camelCase: "[a-z][a-zA-Z0-9]*",
|
|
30
|
+
PascalCase: "[A-Z][a-zA-Z0-9]*",
|
|
31
|
+
};
|
|
32
|
+
const isRecord = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
33
|
+
/** Reads `lint.naming`; a key that is not a kind, or a rule that is not a preset or a valid expression, is an error naming `where`. */
|
|
34
|
+
export function namingSettings(raw, where = "yodel.config.ts") {
|
|
35
|
+
if (raw === undefined)
|
|
36
|
+
return {};
|
|
37
|
+
if (!isRecord(raw))
|
|
38
|
+
throw new YodelError(`${where}: lint.naming: expected an object of ${NAMING_KINDS.join(", ")}: a preset (${Object.keys(NAMING_PRESETS).join(", ")}) or a regular expression`);
|
|
39
|
+
const out = {};
|
|
40
|
+
for (const [kind, rule] of Object.entries(raw)) {
|
|
41
|
+
if (!NAMING_KINDS.includes(kind))
|
|
42
|
+
throw new YodelError(`${where}: lint.naming.${kind}: not a kind of object (the kinds: ${NAMING_KINDS.join(", ")})`);
|
|
43
|
+
if (typeof rule !== "string" || rule === "")
|
|
44
|
+
throw new YodelError(`${where}: lint.naming.${kind}: expected a preset (${Object.keys(NAMING_PRESETS).join(", ")}) or a regular expression`);
|
|
45
|
+
const source = NAMING_PRESETS[rule] ?? rule;
|
|
46
|
+
let pattern;
|
|
47
|
+
try {
|
|
48
|
+
pattern = new RegExp(`^(?:${source})$`, "u");
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
throw new YodelError(`${where}: lint.naming.${kind}: ${JSON.stringify(rule)} is not a preset or a valid regular expression: ${e instanceof Error ? e.message : String(e)}`);
|
|
52
|
+
}
|
|
53
|
+
out[kind] = { rule, pattern };
|
|
54
|
+
}
|
|
55
|
+
return out;
|
|
56
|
+
}
|
|
57
|
+
/** The names of a recorded schema, by kind; `[]` for one the lexicon cannot read (lint reports that on its own). */
|
|
58
|
+
export function schemaNames(build, options = {}) {
|
|
59
|
+
if (!Array.isArray(build.objects))
|
|
60
|
+
return [];
|
|
61
|
+
const out = [];
|
|
62
|
+
try {
|
|
63
|
+
if (build.dialect === "postgres") {
|
|
64
|
+
for (const o of pgSchemaFromBuildOutput(JSON.stringify(build), options.defaultSchema ?? "public")) {
|
|
65
|
+
const c = o.canonical;
|
|
66
|
+
const qualified = c.schema ? `${c.schema}.${c.name}` : c.name;
|
|
67
|
+
const exp = c.exportName ?? o.key;
|
|
68
|
+
if (c.kind === "table") {
|
|
69
|
+
out.push({ kind: "table", key: qualified, name: c.name, export: exp, label: `table ${qualified}` });
|
|
70
|
+
for (const col of c.columns)
|
|
71
|
+
out.push({ kind: "column", key: `${qualified}.${col.name}`, name: col.name, export: exp, label: `column ${col.name} of ${qualified}` });
|
|
72
|
+
for (const k of c.constraints)
|
|
73
|
+
if (k.name)
|
|
74
|
+
out.push({ kind: "constraint", key: `${qualified}.${k.name}`, name: k.name, export: exp, label: `constraint ${k.name} on ${qualified}` });
|
|
75
|
+
}
|
|
76
|
+
else if (c.kind === "index") {
|
|
77
|
+
out.push({ kind: "index", key: qualified, name: c.name, export: exp, label: `index ${qualified}` });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
for (const o of schemaFromBuildOutput(JSON.stringify(build), options.defaultDatabase ?? "default")) {
|
|
83
|
+
const c = o.canonical;
|
|
84
|
+
if (c.kind !== "table")
|
|
85
|
+
continue;
|
|
86
|
+
const qualified = c.database ? `${c.database}.${c.name}` : c.name;
|
|
87
|
+
out.push({ kind: "table", key: qualified, name: c.name, export: o.key, label: `table ${qualified}` });
|
|
88
|
+
for (const col of c.columns)
|
|
89
|
+
out.push({ kind: "column", key: `${qualified}.${col.name}`, name: col.name, export: o.key, label: `column ${col.name} of ${qualified}` });
|
|
90
|
+
for (const name of Object.keys(c.indexes))
|
|
91
|
+
out.push({ kind: "index", key: `${qualified}.${name}`, name, export: o.key, label: `index ${name} on ${qualified}` });
|
|
92
|
+
for (const name of Object.keys(c.constraints))
|
|
93
|
+
out.push({ kind: "constraint", key: `${qualified}.${name}`, name, export: o.key, label: `constraint ${name} on ${qualified}` });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return [];
|
|
99
|
+
}
|
|
100
|
+
return out;
|
|
101
|
+
}
|
|
102
|
+
const PLURAL = { table: "tables", column: "columns", index: "indexes", constraint: "constraints" };
|
|
103
|
+
/** The names each migration adds that break `settings`. */
|
|
104
|
+
export function namingFindings(migrations, settings) {
|
|
105
|
+
if (Object.keys(settings).length === 0)
|
|
106
|
+
return [];
|
|
107
|
+
const byId = new Map(migrations.map((m) => [m.id, m]));
|
|
108
|
+
const cache = new Map();
|
|
109
|
+
const names = (m) => {
|
|
110
|
+
let n = cache.get(m.id);
|
|
111
|
+
if (!n) {
|
|
112
|
+
n = schemaNames(m.document.schema, { defaultDatabase: m.document.defaultDatabase, defaultSchema: m.document.defaultSchema });
|
|
113
|
+
cache.set(m.id, n);
|
|
114
|
+
}
|
|
115
|
+
return n;
|
|
116
|
+
};
|
|
117
|
+
const out = [];
|
|
118
|
+
for (const m of migrations) {
|
|
119
|
+
const parent = m.parent === null ? undefined : byId.get(m.parent);
|
|
120
|
+
const had = new Set((parent ? names(parent) : []).map((n) => `${n.kind}\u0000${n.key}`));
|
|
121
|
+
for (const n of names(m)) {
|
|
122
|
+
const rule = settings[n.kind];
|
|
123
|
+
if (!rule || had.has(`${n.kind}\u0000${n.key}`) || rule.pattern.test(n.name))
|
|
124
|
+
continue;
|
|
125
|
+
const step = m.document.steps.findIndex((s) => s.object === n.export);
|
|
126
|
+
const at = step >= 0 ? m.document.steps[step] : undefined;
|
|
127
|
+
out.push({
|
|
128
|
+
rule: "naming",
|
|
129
|
+
migration: m.id,
|
|
130
|
+
message: `${step >= 0 ? `step ${String(step)}: ` : ""}${n.label}: ${JSON.stringify(n.name)} does not match the naming rule for ${PLURAL[n.kind]} (${NAMING_PRESETS[rule.rule] ? `${rule.rule}, ` : ""}${NAMING_PRESETS[rule.rule] ?? rule.rule})`,
|
|
131
|
+
...(step >= 0 ? { step } : {}),
|
|
132
|
+
...(at ? { object: at.name } : {}),
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return out;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=naming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming.js","sourceRoot":"","sources":["../../src/lint/naming.ts"],"names":[],"mappings":"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"}
|