37 lines
1.0 KiB
JavaScript
37 lines
1.0 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import { access, readFile } from 'node:fs/promises';
|
|
import { resolve } from 'node:path';
|
|
|
|
const root = resolve(import.meta.dirname, '..');
|
|
|
|
const requiredPaths = [
|
|
'.node-version',
|
|
'.nvmrc',
|
|
'AGENTS.md',
|
|
'.env.example',
|
|
'.editorconfig',
|
|
'package.json',
|
|
'apps/client/package.json',
|
|
'docs/adr',
|
|
'docs/architecture',
|
|
'infra',
|
|
'packages',
|
|
'scripts/dev.mjs',
|
|
'scripts/bootstrap-macos.sh',
|
|
];
|
|
|
|
await Promise.all(requiredPaths.map((path) => access(resolve(root, path))));
|
|
|
|
const rootPackage = JSON.parse(await readFile(resolve(root, 'package.json'), 'utf8'));
|
|
const clientPackage = JSON.parse(
|
|
await readFile(resolve(root, 'apps/client/package.json'), 'utf8'),
|
|
);
|
|
|
|
assert.equal(rootPackage.private, true, 'the monorepo must remain private');
|
|
assert.equal(rootPackage.name, '@botsu/suite');
|
|
assert.deepEqual(rootPackage.workspaces, ['apps/*', 'packages/*']);
|
|
assert.equal(clientPackage.name, 'cinny');
|
|
assert.equal(clientPackage.version, '4.12.6');
|
|
|
|
console.log('BOTSU workspace structure: OK');
|