legacy-direct-bundle.mjs 1.4 KB

12345678910111213141516
  1. import {readFileSync} from 'node:fs';
  2. import {specs} from './legacy-direct-specs.mjs';
  3. import {legacyAddonFields} from './legacy-direct-projection.mjs';
  4. export function buildDirectBundle(columns,windows=[],company='7pIbDBJmKx') {
  5. const definitions=structuredClone(specs);
  6. for(const [m,s] of Object.entries(definitions)){
  7. s.fields=legacyAddonFields[m]||(m==='52'?['sy','yb','lj','yp']:['content','synopsis','mp4','ico','author','source']);
  8. s.addonColumns=columns.filter(c=>c.table_name===s.className).map(c=>c.column_name);
  9. s.commonColumns=columns.filter(c=>c.table_name==='CommonModel').map(c=>c.column_name);
  10. if(!s.addonColumns.includes('id')||!s.commonColumns.includes('generalId'))throw Error('Unexpected physical schema');
  11. }
  12. const userSource=readFileSync(new URL('../backfill-legacy-users.mjs',import.meta.url),'utf8');
  13. const userProjection=userSource.slice(userSource.indexOf('function text(value)'),userSource.indexOf('function requestGroups('));
  14. const prefix='const company={__type:"Pointer",className:"Company",objectId:'+JSON.stringify(company)+'};\n'+userProjection;
  15. 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));
  16. }