← Задача 009 — все материалы · оригинал на GitHub

SCRIPT-task-009-validate-gbrain-schema-pack-file-and-merge-with-base-v2.ts

// Проверка файла пакета схемы задачи 009 загрузчиком gbrain и слияние с gbrain-base-v2.
// Только читает файлы; базу gbrain не открывает. Запуск: bun run <этот файл>
import { loadPackFromFile } from '/Users/ws/.bun/install/global/node_modules/gbrain/src/core/schema-pack/loader.ts';
import { mergeInheritedManifest } from '/Users/ws/.bun/install/global/node_modules/gbrain/src/core/schema-pack/merge.ts';
const here = new URL('.', import.meta.url).pathname;
const child = loadPackFromFile(here + 'EXAMPLE-task-009-gbrain-schema-pack-cons-base-v2-plus-places-and-properties.yaml');
console.log('manifest OK:', child.name, child.version, 'extends', child.extends);
const base = loadPackFromFile('/Users/ws/.bun/install/global/node_modules/gbrain/src/core/schema-pack/base/gbrain-base-v2.yaml');
const m = mergeInheritedManifest([base], child, { page_types: [], link_types: [] } as any);
console.log('types', m.page_types.length + ':', m.page_types.map(p => p.name).join(', '));
const deal = m.page_types.find(p => p.name === 'deal');
console.log('deal subtypes', JSON.stringify(deal?.subtypes?.map(s => s.name)));
console.log('links', m.link_types.length, '| works_at', !!m.link_types.find(l => l.name === 'works_at'), '| located_in', !!m.link_types.find(l => l.name === 'located_in'));
console.log('mapping_rules inherited:', (m as any).mapping_rules?.length ?? 0);