import {readFileSync} from 'node:fs'; import {specs} from './legacy-direct-specs.mjs'; import {legacyAddonFields} from './legacy-direct-projection.mjs'; export function buildDirectBundle(columns,windows=[],company='7pIbDBJmKx') { const definitions=structuredClone(specs); for(const [m,s] of Object.entries(definitions)){ s.fields=legacyAddonFields[m]||(m==='52'?['sy','yb','lj','yp']:['content','synopsis','mp4','ico','author','source']); s.addonColumns=columns.filter(c=>c.table_name===s.className).map(c=>c.column_name); s.commonColumns=columns.filter(c=>c.table_name==='CommonModel').map(c=>c.column_name); if(!s.addonColumns.includes('id')||!s.commonColumns.includes('generalId'))throw Error('Unexpected physical schema'); } const userSource=readFileSync(new URL('../backfill-legacy-users.mjs',import.meta.url),'utf8'); const userProjection=userSource.slice(userSource.indexOf('function text(value)'),userSource.indexOf('function requestGroups(')); const prefix='const company={__type:"Pointer",className:"Company",objectId:'+JSON.stringify(company)+'};\n'+userProjection; return (prefix+['legacy-direct-supplement','legacy-direct-control','legacy-direct-sync'].map(n=>readFileSync(new URL('../cloud/'+n+'.js',import.meta.url),'utf8')).join('\n')).replaceAll('__SPECS__',JSON.stringify(definitions)).replaceAll('__WINDOWS__',JSON.stringify(windows)).replaceAll('__COMPANY_ID__',JSON.stringify(company)); }