import { LazyConfig } from 'lazyrepo' export function generateSharedScripts(bublic: '' | '/bublic') { return { build: { baseCommand: 'exit 0', runsAfter: { prebuild: {}, 'refresh-assets': {} }, workspaceOverrides: { '{bublic/,}apps/docs': { runsAfter: { 'docs-content': {} } }, '{bublic/,}apps/vscode/*': { runsAfter: { 'refresh-assets': {} } }, '{bublic/,}packages/*': { runsAfter: { 'build-api': { in: 'self-only' }, prebuild: { in: 'self-only' } }, cache: { inputs: ['api/**/*', 'src/**/*'], }, }, }, }, dev: { execution: 'independent', runsAfter: { 'refresh-assets': {} }, cache: 'none', workspaceOverrides: { '{bublic/,}apps/docs': { runsAfter: { 'docs-content': { in: 'self-only' } } }, '{bublic/,}apps/vscode/*': { runsAfter: { build: { in: 'self-only' } } }, '{bublic/,}apps/webdriver': { runsAfter: { 'refresh-assets': {}, prebuild: {} }, cache: 'none', }, }, }, test: { baseCommand: 'yarn run -T jest', runsAfter: { 'refresh-assets': {} }, cache: { inputs: { exclude: ['*.tsbuildinfo'], }, }, }, 'test-coverage': { baseCommand: 'yarn run -T jest --coverage', runsAfter: { 'refresh-assets': {} }, }, lint: { execution: 'independent', runsAfter: { 'build-types': {} }, cache: { inputs: { exclude: ['*.tsbuildinfo'], }, }, }, 'pack-tarball': { parallel: false, }, 'refresh-assets': { execution: 'top-level', baseCommand: `tsx ${bublic}/scripts/refresh-assets.ts`, cache: { inputs: ['package.json', `${bublic}/scripts/refresh-assets.ts`, `${bublic}/assets/**/*`], }, }, 'build-types': { execution: 'top-level', baseCommand: `tsx ${bublic}/scripts/typecheck.ts`, cache: { inputs: { include: ['/**/*.{ts,tsx}', '/tsconfig.json'], exclude: ['/dist*/**/*', '/api/**/*'], }, outputs: ['/*.tsbuildinfo', '/.tsbuild/**/*'], }, runsAfter: { 'refresh-assets': {}, 'maybe-clean-tsbuildinfo': {}, }, }, 'build-api': { execution: 'independent', cache: { inputs: ['.tsbuild/**/*.d.ts', 'tsconfig.json'], outputs: ['api/**/*'], }, runsAfter: { 'build-types': { // Because build-types is top level, if usesOutput were set to true every // build-api task would depend on all the .tsbuild files in the whole // repo. So we set this to false and configure it to use only the // local .tsbuild files usesOutput: false, }, }, }, 'docs-content': { runsAfter: { 'build-api': {} }, cache: { inputs: [ 'content/**', 'scripts/**', `${bublic}/packages/*/api/api.json`, `${bublic}/packages/*/package.json`, ], }, }, 'api-check': { execution: 'top-level', baseCommand: `tsx ${bublic}/scripts/api-check.ts`, runsAfter: { 'build-api': {} }, cache: { inputs: [`${bublic}/packages/*/api/public.d.ts`], }, }, } satisfies LazyConfig['scripts'] } const config = { baseCacheConfig: { include: [ '/{,bublic/}package.json', '/{,bublic/}public-yarn.lock', '/{,bublic/}lazy.config.ts', '/{,bublic/}config/**/*', '/{,bublic/}scripts/**/*', ], exclude: [ '/coverage/**/*', '/dist*/**/*', '**/*.tsbuildinfo', '/{,bublic/}apps/docs/content/gen/**/*', ], }, scripts: { ...generateSharedScripts(''), }, } satisfies LazyConfig export default config