cerber-core 1.0.4 → 1.1.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.
Files changed (42) hide show
  1. package/CHANGELOG.md +158 -68
  2. package/README.md +198 -5
  3. package/USAGE_GUIDE.md +254 -0
  4. package/bin/cerber +120 -104
  5. package/dev/templates/BACKEND_SCHEMA.ts.tpl +48 -0
  6. package/dev/templates/cerber-guardian.mjs.tpl +44 -0
  7. package/dev/templates/cerber.yml.tpl +53 -0
  8. package/dev/templates/health-checks.ts.tpl +11 -0
  9. package/dev/templates/health-route.ts.tpl +50 -0
  10. package/dev/templates/pre-commit.tpl +4 -0
  11. package/dist/cli/contract-parser.d.ts +13 -0
  12. package/dist/cli/contract-parser.d.ts.map +1 -0
  13. package/dist/cli/contract-parser.js +265 -0
  14. package/dist/cli/contract-parser.js.map +1 -0
  15. package/dist/cli/init.d.ts +11 -0
  16. package/dist/cli/init.d.ts.map +1 -0
  17. package/dist/cli/init.js +292 -0
  18. package/dist/cli/init.js.map +1 -0
  19. package/dist/cli/template-generator.d.ts +29 -0
  20. package/dist/cli/template-generator.d.ts.map +1 -0
  21. package/dist/cli/template-generator.js +252 -0
  22. package/dist/cli/template-generator.js.map +1 -0
  23. package/dist/cli/types.d.ts +79 -0
  24. package/dist/cli/types.d.ts.map +1 -0
  25. package/dist/cli/types.js +8 -0
  26. package/dist/cli/types.js.map +1 -0
  27. package/examples/backend-schema.ts +9 -2
  28. package/examples/frontend-schema.ts +9 -2
  29. package/package.json +106 -104
  30. package/solo/templates/BACKEND_SCHEMA.ts.tpl +48 -0
  31. package/solo/templates/cerber-guardian.mjs.tpl +44 -0
  32. package/solo/templates/cerber.yml.tpl +53 -0
  33. package/solo/templates/health-checks.ts.tpl +29 -0
  34. package/solo/templates/health-route.ts.tpl +50 -0
  35. package/solo/templates/pre-commit.tpl +4 -0
  36. package/team/templates/BACKEND_SCHEMA.ts.tpl +48 -0
  37. package/team/templates/CODEOWNERS.tpl +6 -0
  38. package/team/templates/cerber-guardian.mjs.tpl +44 -0
  39. package/team/templates/cerber.yml.tpl +53 -0
  40. package/team/templates/health-checks.ts.tpl +10 -0
  41. package/team/templates/health-route.ts.tpl +50 -0
  42. package/team/templates/pre-commit.tpl +4 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Template generator for Cerber init
3
+ *
4
+ * Generates files based on CERBER_CONTRACT and mode
5
+ *
6
+ * @author Stefan Pitek
7
+ * @license MIT
8
+ */
9
+ import { CerberContract, GeneratedFile, InitOptions } from './types.js';
10
+ export declare class TemplateGenerator {
11
+ private projectRoot;
12
+ private contract;
13
+ private options;
14
+ private templateRoot;
15
+ constructor(projectRoot: string, contract: CerberContract, options?: InitOptions);
16
+ generateAll(): Promise<GeneratedFile[]>;
17
+ private generateGuardianFiles;
18
+ private generateHealthFiles;
19
+ private generateCIFiles;
20
+ private generateTeamFiles;
21
+ writeFiles(files: GeneratedFile[]): Promise<void>;
22
+ private renderTemplate;
23
+ private loadTemplate;
24
+ private applyReplacements;
25
+ private fileExists;
26
+ private getPostDeployBlock;
27
+ private ensureExecutable;
28
+ }
29
+ //# sourceMappingURL=template-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-generator.d.ts","sourceRoot":"","sources":["../../src/cli/template-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAKxE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,YAAY,CAAS;gBAEjB,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,GAAE,WAAgB;IAO9E,WAAW,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YA0B/B,qBAAqB;YA8CrB,mBAAmB;YAwBnB,eAAe;YAsBf,iBAAiB;IAkBzB,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAgCzC,cAAc;YAKd,YAAY;IAU1B,OAAO,CAAC,iBAAiB;YASX,UAAU;IASxB,OAAO,CAAC,kBAAkB;YAiBZ,gBAAgB;CAkC/B"}
@@ -0,0 +1,252 @@
1
+ /**
2
+ * Template generator for Cerber init
3
+ *
4
+ * Generates files based on CERBER_CONTRACT and mode
5
+ *
6
+ * @author Stefan Pitek
7
+ * @license MIT
8
+ */
9
+ import { exec } from 'child_process';
10
+ import fs from 'fs/promises';
11
+ import path from 'path';
12
+ import { fileURLToPath } from 'url';
13
+ const __filename = fileURLToPath(import.meta.url);
14
+ const __dirname = path.dirname(__filename);
15
+ export class TemplateGenerator {
16
+ projectRoot;
17
+ contract;
18
+ options;
19
+ templateRoot;
20
+ constructor(projectRoot, contract, options = {}) {
21
+ this.projectRoot = projectRoot;
22
+ this.contract = contract;
23
+ this.options = options;
24
+ this.templateRoot = path.resolve(__dirname, '..', '..');
25
+ }
26
+ async generateAll() {
27
+ const files = [];
28
+ // Guardian files
29
+ if (this.contract.guardian.enabled && !this.options.noHusky) {
30
+ files.push(...await this.generateGuardianFiles());
31
+ }
32
+ // Health files
33
+ if (this.contract.health.enabled && !this.options.noHealth) {
34
+ files.push(...await this.generateHealthFiles());
35
+ }
36
+ // CI workflow
37
+ if (this.contract.ci.provider === 'github' && !this.options.noWorkflow) {
38
+ files.push(...await this.generateCIFiles());
39
+ }
40
+ // Team mode extras
41
+ if (this.contract.mode === 'team') {
42
+ files.push(...await this.generateTeamFiles());
43
+ }
44
+ return files;
45
+ }
46
+ async generateGuardianFiles() {
47
+ const files = [];
48
+ const guardianScript = await this.renderTemplate('cerber-guardian.mjs.tpl', {
49
+ SCHEMA_FILE: this.contract.guardian.schemaFile,
50
+ APPROVALS_TAG: this.contract.guardian.approvalsTag
51
+ });
52
+ files.push({
53
+ path: path.join(this.projectRoot, 'scripts', 'cerber-guardian.mjs'),
54
+ content: guardianScript,
55
+ generated: true
56
+ });
57
+ // Generate schema file ONLY if schema.enabled AND mode is template_only AND file doesn't exist
58
+ if (this.contract.schema && this.contract.schema.enabled) {
59
+ const schemaPath = path.join(this.projectRoot, this.contract.schema.file);
60
+ const schemaExists = await this.fileExists(schemaPath);
61
+ if (!schemaExists && this.contract.schema.mode === 'template_only') {
62
+ const projectName = path.basename(this.projectRoot);
63
+ const schemaContent = await this.renderTemplate('BACKEND_SCHEMA.ts.tpl', {
64
+ PROJECT_NAME: projectName
65
+ });
66
+ files.push({
67
+ path: schemaPath,
68
+ content: schemaContent,
69
+ generated: true
70
+ });
71
+ }
72
+ }
73
+ // .husky/pre-commit
74
+ if (this.contract.guardian.hook === 'husky') {
75
+ const preCommitHook = await this.renderTemplate('pre-commit.tpl', {
76
+ GUARDIAN_COMMAND: 'npm run cerber:guardian'
77
+ });
78
+ files.push({
79
+ path: path.join(this.projectRoot, '.husky', 'pre-commit'),
80
+ content: preCommitHook,
81
+ generated: true
82
+ });
83
+ }
84
+ return files;
85
+ }
86
+ async generateHealthFiles() {
87
+ const files = [];
88
+ // src/cerber/health-checks.ts
89
+ const healthChecks = await this.renderTemplate('health-checks.ts.tpl', {});
90
+ files.push({
91
+ path: path.join(this.projectRoot, 'src', 'cerber', 'health-checks.ts'),
92
+ content: healthChecks,
93
+ generated: true
94
+ });
95
+ // src/cerber/health-route.ts
96
+ const healthRoute = await this.renderTemplate('health-route.ts.tpl', {
97
+ HEALTH_ENDPOINT: this.contract.health.endpoint
98
+ });
99
+ files.push({
100
+ path: path.join(this.projectRoot, 'src', 'cerber', 'health-route.ts'),
101
+ content: healthRoute,
102
+ generated: true
103
+ });
104
+ return files;
105
+ }
106
+ async generateCIFiles() {
107
+ const files = [];
108
+ // .github/workflows/cerber.yml
109
+ const postDeployEnabled = this.contract.ci.postDeploy.enabled;
110
+ const workflow = await this.renderTemplate('cerber.yml.tpl', {
111
+ CI_BRANCHES: JSON.stringify(this.contract.ci.branches),
112
+ HEALTH_URL_VAR: this.contract.ci.postDeploy.healthUrlVar,
113
+ WAIT_SECONDS: String(this.contract.ci.postDeploy.waitSeconds),
114
+ FAIL_ON_ERROR: String(this.contract.health.failOn.error),
115
+ FAIL_ON_WARNING: String(this.contract.health.failOn.warning),
116
+ POST_DEPLOY_BLOCK: postDeployEnabled ? this.getPostDeployBlock() : ''
117
+ });
118
+ files.push({
119
+ path: path.join(this.projectRoot, '.github', 'workflows', 'cerber.yml'),
120
+ content: workflow,
121
+ generated: true
122
+ });
123
+ return files;
124
+ }
125
+ async generateTeamFiles() {
126
+ const files = [];
127
+ // .github/CODEOWNERS
128
+ const owners = this.contract.team?.schemaOwners?.join(' ') || '@OWNER_USERNAME';
129
+ const codeowners = await this.renderTemplate('CODEOWNERS.tpl', {
130
+ SCHEMA_FILE: this.contract.guardian.schemaFile,
131
+ OWNERS: owners
132
+ });
133
+ files.push({
134
+ path: path.join(this.projectRoot, '.github', 'CODEOWNERS'),
135
+ content: codeowners,
136
+ generated: true
137
+ });
138
+ return files;
139
+ }
140
+ async writeFiles(files) {
141
+ for (const file of files) {
142
+ if (this.options.dryRun) {
143
+ console.log(`[DRY RUN] Would create: ${file.path}`);
144
+ continue;
145
+ }
146
+ // Check if file exists
147
+ const exists = await fs.access(file.path).then(() => true).catch(() => false);
148
+ if (exists && !this.options.force) {
149
+ console.log(`⚠️ Skipping (already exists): ${path.relative(this.projectRoot, file.path)}`);
150
+ continue;
151
+ }
152
+ // Create directory if needed
153
+ await fs.mkdir(path.dirname(file.path), { recursive: true });
154
+ // Write file
155
+ await fs.writeFile(file.path, file.content, 'utf-8');
156
+ console.log(`✅ Generated: ${path.relative(this.projectRoot, file.path)}`);
157
+ // Ensure husky hook is executable when applicable
158
+ if (file.path.endsWith('.husky/pre-commit')) {
159
+ const success = await this.ensureExecutable(file.path);
160
+ if (!success) {
161
+ console.log(` ℹ️ If hook doesn't run, execute: git add ${path.relative(this.projectRoot, file.path)} && git update-index --chmod=+x ${path.relative(this.projectRoot, file.path)}`);
162
+ }
163
+ }
164
+ }
165
+ }
166
+ async renderTemplate(templateName, replacements) {
167
+ const templateContent = await this.loadTemplate(templateName);
168
+ return this.applyReplacements(templateContent, replacements);
169
+ }
170
+ async loadTemplate(templateName) {
171
+ // Prefer mode-specific template, fallback to solo
172
+ const modeDir = path.join(this.templateRoot, this.contract.mode, 'templates');
173
+ const soloDir = path.join(this.templateRoot, 'solo', 'templates');
174
+ const modePath = path.join(modeDir, templateName);
175
+ const fallbackPath = path.join(soloDir, templateName);
176
+ const chosenPath = await fs.access(modePath).then(() => modePath).catch(() => fallbackPath);
177
+ return fs.readFile(chosenPath, 'utf-8');
178
+ }
179
+ applyReplacements(template, replacements) {
180
+ let result = template;
181
+ for (const [key, value] of Object.entries(replacements)) {
182
+ const token = new RegExp(`{{${key}}}`, 'g');
183
+ result = result.replace(token, value);
184
+ }
185
+ return result;
186
+ }
187
+ async fileExists(filePath) {
188
+ try {
189
+ await fs.access(filePath);
190
+ return true;
191
+ }
192
+ catch {
193
+ return false;
194
+ }
195
+ }
196
+ getPostDeployBlock() {
197
+ return ` cerber-postdeploy:
198
+ name: Post-Deploy Health Gate
199
+ runs-on: ubuntu-latest
200
+ needs: []
201
+ env:
202
+ CERBER_HEALTH_URL: \${{ vars.${this.contract.ci.postDeploy.healthUrlVar} }}
203
+ CERBER_AUTH_HEADER: \${{ secrets.${this.contract.ci.postDeploy.authHeaderSecret || 'CERBER_HEALTH_AUTH_HEADER'} }}
204
+ steps:
205
+ - name: Wait for deployment
206
+ run: sleep ${this.contract.ci.postDeploy.waitSeconds}
207
+
208
+ - name: Verify production health
209
+ run: |
210
+ node -e "const wait=${this.contract.ci.postDeploy.waitSeconds}; const url=process.env.CERBER_HEALTH_URL; const auth=process.env.CERBER_AUTH_HEADER; if(!url){console.error('CERBER_HEALTH_URL not set'); process.exit(1);} const opts=auth?{headers:{Authorization:auth}}:{}; (async()=>{await new Promise(r=>setTimeout(r,wait*1000)); const res=await fetch(url,opts); const json=await res.json(); const s=json.summary||{}; const crit=s.criticalIssues||0; const err=s.errorIssues||0; const warn=s.warningIssues||0; console.log('Health summary', s); if(crit>0){console.error('Critical issues detected'); process.exit(1);} if(${this.contract.health.failOn.error} && err>0){console.error('Error issues detected'); process.exit(1);} if(${this.contract.health.failOn.warning} && warn>0){console.error('Warning issues detected'); process.exit(1);} console.log('✅ Production health check passed');})();"`;
211
+ }
212
+ async ensureExecutable(filePath) {
213
+ try {
214
+ await fs.chmod(filePath, 0o755);
215
+ }
216
+ catch (err) {
217
+ // ignore chmod issues on Windows
218
+ }
219
+ // Try to make it executable in git (only works if file is already staged)
220
+ try {
221
+ // First, try to add to git if in a git repo
222
+ await new Promise((resolve, reject) => {
223
+ exec('git rev-parse --git-dir', (err) => {
224
+ if (err) {
225
+ reject(err);
226
+ }
227
+ else {
228
+ exec(`git add "${filePath}"`, (addErr) => {
229
+ if (addErr) {
230
+ reject(addErr);
231
+ }
232
+ else {
233
+ exec(`git update-index --chmod=+x "${filePath}"`, (chmodErr) => {
234
+ if (chmodErr)
235
+ reject(chmodErr);
236
+ else
237
+ resolve();
238
+ });
239
+ }
240
+ });
241
+ }
242
+ });
243
+ });
244
+ return true;
245
+ }
246
+ catch (err) {
247
+ // git not available or failed - return false to show manual instruction
248
+ return false;
249
+ }
250
+ }
251
+ }
252
+ //# sourceMappingURL=template-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-generator.js","sourceRoot":"","sources":["../../src/cli/template-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * CLI types for Cerber init command
3
+ *
4
+ * @author Stefan Pitek
5
+ * @license MIT
6
+ */
7
+ export type CerberMode = 'solo' | 'dev' | 'team';
8
+ export interface CerberContract {
9
+ version: number;
10
+ mode: CerberMode;
11
+ guardian: GuardianConfig;
12
+ health: HealthConfig;
13
+ ci: CIConfig;
14
+ schema: SchemaConfig;
15
+ team?: TeamConfig;
16
+ }
17
+ export interface GuardianConfig {
18
+ enabled: boolean;
19
+ schemaFile: string;
20
+ hook: 'husky' | 'manual';
21
+ approvalsTag: string;
22
+ }
23
+ export interface HealthConfig {
24
+ enabled: boolean;
25
+ endpoint: string;
26
+ failOn: {
27
+ critical: boolean;
28
+ error: boolean;
29
+ warning: boolean;
30
+ };
31
+ }
32
+ export interface CIConfig {
33
+ provider: 'github' | 'gitlab' | 'manual';
34
+ branches: string[];
35
+ requiredOnPR: boolean;
36
+ postDeploy: {
37
+ enabled: boolean;
38
+ waitSeconds: number;
39
+ healthUrlVar: string;
40
+ authHeaderSecret?: string;
41
+ };
42
+ }
43
+ export interface TeamConfig {
44
+ schemaOwners?: string[];
45
+ reviewRequired?: boolean;
46
+ }
47
+ export interface SchemaConfig {
48
+ enabled: boolean;
49
+ file: string;
50
+ mode: 'strict' | 'template_only';
51
+ owners?: string[];
52
+ description?: string;
53
+ }
54
+ export interface ContractParseResult {
55
+ success: boolean;
56
+ contract?: CerberContract;
57
+ error?: {
58
+ message: string;
59
+ line?: number;
60
+ context?: string;
61
+ };
62
+ }
63
+ export interface InitOptions {
64
+ mode?: CerberMode;
65
+ force?: boolean;
66
+ dryRun?: boolean;
67
+ printTemplate?: boolean;
68
+ printSchemaTemplate?: boolean;
69
+ noHusky?: boolean;
70
+ noWorkflow?: boolean;
71
+ noHealth?: boolean;
72
+ writeContract?: boolean;
73
+ }
74
+ export interface GeneratedFile {
75
+ path: string;
76
+ content: string;
77
+ generated: boolean;
78
+ }
79
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,EAAE,EAAE,QAAQ,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE;QACN,QAAQ,EAAE,OAAO,CAAC;QAClB,KAAK,EAAE,OAAO,CAAC;QACf,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACzC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,eAAe,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * CLI types for Cerber init command
3
+ *
4
+ * @author Stefan Pitek
5
+ * @license MIT
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1,6 +1,13 @@
1
1
  /**
2
- * Example Backend Schema for Guardian
3
- * Shows typical architecture rules for Node.js/Express backends
2
+ * ⚠️ EXAMPLE PATTERN (NOT SOURCE OF TRUTH)
3
+ *
4
+ * This shows common Node.js/Express architecture patterns.
5
+ * DO NOT copy blindly - customize to YOUR project structure.
6
+ *
7
+ * The source of truth is CERBER.md.
8
+ * This file is a template showing possible rules - YOU decide which fit YOUR architecture.
9
+ *
10
+ * See: https://github.com/Agaslez/cerber-core#one-source-of-truth
4
11
  */
5
12
 
6
13
  import type { GuardianSchema } from '../src/types';
@@ -1,6 +1,13 @@
1
1
  /**
2
- * Example Frontend Schema for Guardian
3
- * Shows typical architecture rules for React/Vue frontends
2
+ * ⚠️ EXAMPLE PATTERN (NOT SOURCE OF TRUTH)
3
+ *
4
+ * This shows common React/Vue architecture patterns.
5
+ * DO NOT copy blindly - customize to YOUR project structure.
6
+ *
7
+ * The source of truth is CERBER.md.
8
+ * This file is a template showing possible rules - YOU decide which fit YOUR architecture.
9
+ *
10
+ * See: https://github.com/Agaslez/cerber-core#one-source-of-truth
4
11
  */
5
12
 
6
13
  import type { GuardianSchema } from '../src/types';