| 1234567891011121314151617181920212223242526272829303132333435363738 |
- /** Installed bundle provenance for product-profile startup acceptance tests. */
- import { existsSync, mkdirSync, writeFileSync } from 'node:fs'
- import { join } from 'node:path'
- import {
- initProfile, loadOverlayPatches, PROFILE_TEMPLATES, readProfileManifest, writeProfileManifest, type ProfileLayer,
- } from '@deepseek-ai/dsh-app-boot'
- /**
- * Install a patch as a real profile dependency, preserving its module resolution anchors.
- * @param home - the scenario's isolated Harness home.
- * @param profile - the shipped profile under test.
- * @param patchFile - the fixture patch whose relative module names resolve at its source.
- * @param stage - whether this external bundle is required or optional at startup.
- */
- export function stageStartupBundle(
- home: string,
- profile: 'web' | 'sdk' | 'headless',
- patchFile: string,
- stage: ProfileLayer['stage'] = 'runtime',
- ): void {
- const dir = join(home, 'profiles', profile)
- const template = PROFILE_TEMPLATES[profile]
- if (template === undefined) throw new Error(`Missing shipped profile template: ${profile}`)
- if (!existsSync(join(dir, 'package.json'))) initProfile(dir, template.bundles, template.patchReload)
- const name = '@fixture/startup-policy'
- const bundle = join(dir, 'node_modules', name)
- mkdirSync(bundle, { recursive: true })
- writeFileSync(join(bundle, 'package.json'), JSON.stringify({
- name, version: '1.0.0', private: true, type: 'module', dsh: { bundle: { patch: './cordis.patch.json', stage } },
- }))
- writeFileSync(join(bundle, 'cordis.patch.json'), JSON.stringify(loadOverlayPatches('startup fixture', patchFile)))
- const manifest = readProfileManifest('startup fixture', dir)
- writeProfileManifest(dir, {
- ...manifest,
- dependencies: { ...manifest.dependencies, [name]: '1.0.0' },
- dsh: { ...manifest.dsh, profile: { ...manifest.dsh?.profile, bundles: [...manifest.dsh?.profile?.bundles ?? [], name] } },
- })
- }
|