scribe-cms 0.0.1
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 +150 -0
- package/dist/cli/index.cjs +2303 -0
- package/dist/cli/index.cjs.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +2289 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.cjs +2268 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.js +2238 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime.cjs +1216 -0
- package/dist/runtime.cjs.map +1 -0
- package/dist/runtime.js +1207 -0
- package/dist/runtime.js.map +1 -0
- package/dist/src/config/load-config.d.ts +10 -0
- package/dist/src/config/load-config.d.ts.map +1 -0
- package/dist/src/config/load-env.d.ts +3 -0
- package/dist/src/config/load-env.d.ts.map +1 -0
- package/dist/src/config/resolve-config.d.ts +13 -0
- package/dist/src/config/resolve-config.d.ts.map +1 -0
- package/dist/src/core/alias-helpers.d.ts +7 -0
- package/dist/src/core/alias-helpers.d.ts.map +1 -0
- package/dist/src/core/builtin-fields.d.ts +38 -0
- package/dist/src/core/builtin-fields.d.ts.map +1 -0
- package/dist/src/core/field.d.ts +60 -0
- package/dist/src/core/field.d.ts.map +1 -0
- package/dist/src/core/introspect-schema.d.ts +20 -0
- package/dist/src/core/introspect-schema.d.ts.map +1 -0
- package/dist/src/core/slug-aliases.d.ts +27 -0
- package/dist/src/core/slug-aliases.d.ts.map +1 -0
- package/dist/src/core/types.d.ts +261 -0
- package/dist/src/core/types.d.ts.map +1 -0
- package/dist/src/create-project.d.ts +10 -0
- package/dist/src/create-project.d.ts.map +1 -0
- package/dist/src/create-scribe.d.ts +11 -0
- package/dist/src/create-scribe.d.ts.map +1 -0
- package/dist/src/hash/page-hash.d.ts +7 -0
- package/dist/src/hash/page-hash.d.ts.map +1 -0
- package/dist/src/history/record-revision.d.ts +12 -0
- package/dist/src/history/record-revision.d.ts.map +1 -0
- package/dist/src/i18n/build-url.d.ts +14 -0
- package/dist/src/i18n/build-url.d.ts.map +1 -0
- package/dist/src/i18n/resolve-document.d.ts +12 -0
- package/dist/src/i18n/resolve-document.d.ts.map +1 -0
- package/dist/src/i18n/translation-index.d.ts +7 -0
- package/dist/src/i18n/translation-index.d.ts.map +1 -0
- package/dist/src/index.d.ts +18 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/loader/create-loader.d.ts +17 -0
- package/dist/src/loader/create-loader.d.ts.map +1 -0
- package/dist/src/loader/normalize-en.d.ts +3 -0
- package/dist/src/loader/normalize-en.d.ts.map +1 -0
- package/dist/src/loader/parse-mdx.d.ts +7 -0
- package/dist/src/loader/parse-mdx.d.ts.map +1 -0
- package/dist/src/redirects/build-redirects.d.ts +17 -0
- package/dist/src/redirects/build-redirects.d.ts.map +1 -0
- package/dist/src/redirects/translation-index.d.ts +4 -0
- package/dist/src/redirects/translation-index.d.ts.map +1 -0
- package/dist/src/redirects/types.d.ts +6 -0
- package/dist/src/redirects/types.d.ts.map +1 -0
- package/dist/src/runtime.d.ts +5 -0
- package/dist/src/runtime.d.ts.map +1 -0
- package/dist/src/sitemap/generate-sitemap.d.ts +5 -0
- package/dist/src/sitemap/generate-sitemap.d.ts.map +1 -0
- package/dist/src/sitemap/join-base-url.d.ts +3 -0
- package/dist/src/sitemap/join-base-url.d.ts.map +1 -0
- package/dist/src/sitemap/types.d.ts +39 -0
- package/dist/src/sitemap/types.d.ts.map +1 -0
- package/dist/src/storage/sqlite.d.ts +9 -0
- package/dist/src/storage/sqlite.d.ts.map +1 -0
- package/dist/src/storage/translations.d.ts +58 -0
- package/dist/src/storage/translations.d.ts.map +1 -0
- package/dist/src/translate/gemini-client.d.ts +15 -0
- package/dist/src/translate/gemini-client.d.ts.map +1 -0
- package/dist/src/translate/page-translator.d.ts +24 -0
- package/dist/src/translate/page-translator.d.ts.map +1 -0
- package/dist/src/translate/prompts/translation-prompt.d.ts +14 -0
- package/dist/src/translate/prompts/translation-prompt.d.ts.map +1 -0
- package/dist/src/translate/resolve-translate-config.d.ts +10 -0
- package/dist/src/translate/resolve-translate-config.d.ts.map +1 -0
- package/dist/src/translate/worklist.d.ts +19 -0
- package/dist/src/translate/worklist.d.ts.map +1 -0
- package/dist/src/validate/validate-project.d.ts +16 -0
- package/dist/src/validate/validate-project.d.ts.map +1 -0
- package/dist/src/validate/validate-relations.d.ts +19 -0
- package/dist/src/validate/validate-relations.d.ts.map +1 -0
- package/dist/src/validate/validate-slug-suffix.d.ts +12 -0
- package/dist/src/validate/validate-slug-suffix.d.ts.map +1 -0
- package/dist/studio/server.cjs +673 -0
- package/dist/studio/server.cjs.map +1 -0
- package/dist/studio/server.d.ts +7 -0
- package/dist/studio/server.d.ts.map +1 -0
- package/dist/studio/server.js +664 -0
- package/dist/studio/server.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type Database from "better-sqlite3";
|
|
2
|
+
export interface TranslationRow {
|
|
3
|
+
content_type: string;
|
|
4
|
+
en_slug: string;
|
|
5
|
+
locale: string;
|
|
6
|
+
slug: string;
|
|
7
|
+
frontmatter_json: string;
|
|
8
|
+
body: string;
|
|
9
|
+
en_hash: string;
|
|
10
|
+
translated_at: string;
|
|
11
|
+
model: string;
|
|
12
|
+
}
|
|
13
|
+
export interface TranslationInput {
|
|
14
|
+
contentType: string;
|
|
15
|
+
enSlug: string;
|
|
16
|
+
locale: string;
|
|
17
|
+
slug: string;
|
|
18
|
+
frontmatter: Record<string, unknown>;
|
|
19
|
+
body: string;
|
|
20
|
+
enHash: string;
|
|
21
|
+
translatedAt: string;
|
|
22
|
+
model: string;
|
|
23
|
+
}
|
|
24
|
+
export interface RevisionInput {
|
|
25
|
+
contentType: string;
|
|
26
|
+
enSlug: string;
|
|
27
|
+
locale: string | null;
|
|
28
|
+
revisionKind: "translation" | "en_edit_detected" | "snapshot";
|
|
29
|
+
enHash: string;
|
|
30
|
+
bodyHash: string;
|
|
31
|
+
createdAt: string;
|
|
32
|
+
model?: string;
|
|
33
|
+
bodyPreview?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface RevisionRow {
|
|
36
|
+
id: number;
|
|
37
|
+
content_type: string;
|
|
38
|
+
en_slug: string;
|
|
39
|
+
locale: string | null;
|
|
40
|
+
revision_kind: string;
|
|
41
|
+
en_hash: string;
|
|
42
|
+
body_hash: string;
|
|
43
|
+
created_at: string;
|
|
44
|
+
model: string | null;
|
|
45
|
+
body_preview: string | null;
|
|
46
|
+
}
|
|
47
|
+
export declare function upsertTranslation(db: Database.Database, input: TranslationInput): void;
|
|
48
|
+
export declare function getTranslation(db: Database.Database, contentType: string, enSlug: string, locale: string): TranslationRow | undefined;
|
|
49
|
+
export declare function listTranslationsForType(db: Database.Database, contentType: string): TranslationRow[];
|
|
50
|
+
export declare function listTranslationsForEnSlug(db: Database.Database, contentType: string, enSlug: string): TranslationRow[];
|
|
51
|
+
export declare function listTranslationsForLocale(db: Database.Database, contentType: string, locale: string): TranslationRow[];
|
|
52
|
+
export declare function bulkLoadTranslations(db: Database.Database): TranslationRow[];
|
|
53
|
+
export declare function appendRevision(db: Database.Database, input: RevisionInput): number;
|
|
54
|
+
/** List revision history for an EN slug, optionally filtered by locale. */
|
|
55
|
+
export declare function listRevisions(db: Database.Database, contentType: string, enSlug: string, locale?: string): RevisionRow[];
|
|
56
|
+
export declare function countTranslations(db: Database.Database): number;
|
|
57
|
+
export declare function countStaleTranslations(db: Database.Database, contentType: string, enSlug: string, currentEnHash: string): number;
|
|
58
|
+
//# sourceMappingURL=translations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../src/storage/translations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface GeminiTranslationResult {
|
|
2
|
+
model: string;
|
|
3
|
+
raw: string;
|
|
4
|
+
parsed: {
|
|
5
|
+
frontmatter: Record<string, unknown>;
|
|
6
|
+
body: string;
|
|
7
|
+
slug?: string;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export declare function translatePageWithGemini(input: {
|
|
11
|
+
prompt: string;
|
|
12
|
+
model?: string;
|
|
13
|
+
apiKey?: string;
|
|
14
|
+
}): Promise<GeminiTranslationResult>;
|
|
15
|
+
//# sourceMappingURL=gemini-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-client.d.ts","sourceRoot":"","sources":["../../../src/translate/gemini-client.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAWD,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA4BnC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ScribeConfig } from "../core/types.js";
|
|
2
|
+
import type { TranslationWorkItem } from "./worklist.js";
|
|
3
|
+
export interface TranslatePageResult {
|
|
4
|
+
contentType: string;
|
|
5
|
+
enSlug: string;
|
|
6
|
+
locale: string;
|
|
7
|
+
skipped: boolean;
|
|
8
|
+
reason?: "fresh";
|
|
9
|
+
model?: string;
|
|
10
|
+
}
|
|
11
|
+
/** Translate one locale page via Gemini and upsert into SQLite. */
|
|
12
|
+
export declare function translatePage(config: ScribeConfig, item: TranslationWorkItem, options?: {
|
|
13
|
+
model?: string;
|
|
14
|
+
dryRun?: boolean;
|
|
15
|
+
force?: boolean;
|
|
16
|
+
}): Promise<TranslatePageResult>;
|
|
17
|
+
/** Translate a batch of worklist items sequentially. */
|
|
18
|
+
export declare function translateWorklist(config: ScribeConfig, items: TranslationWorkItem[], options?: {
|
|
19
|
+
model?: string;
|
|
20
|
+
dryRun?: boolean;
|
|
21
|
+
force?: boolean;
|
|
22
|
+
concurrency?: number;
|
|
23
|
+
}): Promise<TranslatePageResult[]>;
|
|
24
|
+
//# sourceMappingURL=page-translator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-translator.d.ts","sourceRoot":"","sources":["../../../src/translate/page-translator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AASrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mEAAmE;AACnE,wBAAsB,aAAa,CACjC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,mBAAmB,EACzB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAClE,OAAO,CAAC,mBAAmB,CAAC,CAsF9B;AAED,wDAAwD;AACxD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,mBAAmB,EAAE,EAC5B,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACxF,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAMhC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ResolvedTranslateConfig } from "../resolve-translate-config.js";
|
|
2
|
+
import type { SlugStrategy } from "../../core/types.js";
|
|
3
|
+
export declare const LOCALE_NAMES: Record<string, string>;
|
|
4
|
+
export declare function defaultLocalizationPrompt(localeName: string, locale: string): string;
|
|
5
|
+
export declare function buildPageTranslationPrompt(input: {
|
|
6
|
+
resolved: ResolvedTranslateConfig;
|
|
7
|
+
targetLocale: string;
|
|
8
|
+
enTitle: string;
|
|
9
|
+
enDescription: string;
|
|
10
|
+
translatableFrontmatter: Record<string, unknown>;
|
|
11
|
+
enBody: string;
|
|
12
|
+
slugStrategy: SlugStrategy;
|
|
13
|
+
}): string;
|
|
14
|
+
//# sourceMappingURL=translation-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translation-prompt.d.ts","sourceRoot":"","sources":["../../../../src/translate/prompts/translation-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAgB/C,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAOpF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,QAAQ,EAAE,uBAAuB,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,YAAY,CAAC;CAC5B,GAAG,MAAM,CA+BT"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ContentTypeConfig, ScribeConfig } from "../core/types.js";
|
|
2
|
+
export interface ResolvedTranslateConfig {
|
|
3
|
+
promptOverride?: string;
|
|
4
|
+
context?: string;
|
|
5
|
+
rules: string[];
|
|
6
|
+
model?: string;
|
|
7
|
+
}
|
|
8
|
+
/** Merge project and content-type translation settings. */
|
|
9
|
+
export declare function resolveTranslateConfig(config: ScribeConfig, type: ContentTypeConfig): ResolvedTranslateConfig;
|
|
10
|
+
//# sourceMappingURL=resolve-translate-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-translate-config.d.ts","sourceRoot":"","sources":["../../../src/translate/resolve-translate-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EAIb,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,uBAAuB;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAiDD,2DAA2D;AAC3D,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,iBAAiB,GACtB,uBAAuB,CAEzB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ScribeConfig } from "../core/types.js";
|
|
2
|
+
export interface TranslationWorkItem {
|
|
3
|
+
contentType: string;
|
|
4
|
+
enSlug: string;
|
|
5
|
+
locale: string;
|
|
6
|
+
reason: "missing" | "stale";
|
|
7
|
+
currentEnHash: string;
|
|
8
|
+
storedEnHash?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface WorklistOptions {
|
|
11
|
+
contentType?: string;
|
|
12
|
+
locales?: string[];
|
|
13
|
+
enSlug?: string;
|
|
14
|
+
}
|
|
15
|
+
/** List locale pages that are missing or stale vs current EN content. */
|
|
16
|
+
export declare function buildWorklist(config: ScribeConfig, options?: WorklistOptions): TranslationWorkItem[];
|
|
17
|
+
/** Resolve target locales from CLI flags or a named preset. */
|
|
18
|
+
export declare function resolveLocalesFromPreset(config: ScribeConfig, preset?: string, explicitLocales?: string[]): string[];
|
|
19
|
+
//# sourceMappingURL=worklist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worklist.d.ts","sourceRoot":"","sources":["../../../src/translate/worklist.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOrD,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAWD,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE,eAAoB,GAAG,mBAAmB,EAAE,CA8CxG;AAED,+DAA+D;AAC/D,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,MAAM,EAAE,GACzB,MAAM,EAAE,CAMV"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ScribeConfig } from "../core/types.js";
|
|
2
|
+
export interface ValidateIssue {
|
|
3
|
+
level: "error" | "warning" | "info";
|
|
4
|
+
contentType?: string;
|
|
5
|
+
enSlug?: string;
|
|
6
|
+
locale?: string;
|
|
7
|
+
field?: string;
|
|
8
|
+
message: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ValidateResult {
|
|
11
|
+
ok: boolean;
|
|
12
|
+
issues: ValidateIssue[];
|
|
13
|
+
}
|
|
14
|
+
/** Validate EN files, SQLite consistency, relations, aliases, and slug rules. */
|
|
15
|
+
export declare function validateProject(config: ScribeConfig): ValidateResult;
|
|
16
|
+
//# sourceMappingURL=validate-project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-project.d.ts","sourceRoot":"","sources":["../../../src/validate/validate-project.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAkBrD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAWD,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,cAAc,CAwKpE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ScribeProject } from "../core/types.js";
|
|
2
|
+
export interface RelationValidateIssue {
|
|
3
|
+
contentTypeId: string;
|
|
4
|
+
enSlug: string;
|
|
5
|
+
locale?: string;
|
|
6
|
+
field: string;
|
|
7
|
+
message: string;
|
|
8
|
+
/**
|
|
9
|
+
* Dangling required single relations are errors (`related()` would throw at
|
|
10
|
+
* render); dangling optional/multiple relations degrade gracefully to
|
|
11
|
+
* null/dropped items, so they only warn.
|
|
12
|
+
*/
|
|
13
|
+
level: "error" | "warning";
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Warn when a relation field references a slug that does not exist in the target type.
|
|
17
|
+
*/
|
|
18
|
+
export declare function validateRelations(project: ScribeProject): RelationValidateIssue[];
|
|
19
|
+
//# sourceMappingURL=validate-relations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-relations.d.ts","sourceRoot":"","sources":["../../../src/validate/validate-relations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMpE,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;CAC5B;AA6BD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,qBAAqB,EAAE,CAkEjF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type Database from "better-sqlite3";
|
|
2
|
+
import type { ScribeConfig } from "../core/types.js";
|
|
3
|
+
export interface SlugSuffixIssue {
|
|
4
|
+
contentTypeId: string;
|
|
5
|
+
enSlug: string;
|
|
6
|
+
locale: string;
|
|
7
|
+
slug: string;
|
|
8
|
+
message: string;
|
|
9
|
+
}
|
|
10
|
+
/** GEN-241: translated slugs must not end with a locale code suffix. */
|
|
11
|
+
export declare function validateTranslationSlugSuffixes(config: ScribeConfig, db: Database.Database): SlugSuffixIssue[];
|
|
12
|
+
//# sourceMappingURL=validate-slug-suffix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-slug-suffix.d.ts","sourceRoot":"","sources":["../../../src/validate/validate-slug-suffix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wEAAwE;AACxE,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,YAAY,EACpB,EAAE,EAAE,QAAQ,CAAC,QAAQ,GACpB,eAAe,EAAE,CAsBnB"}
|