Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | 1x 1x 1x 1x 1x 1x 1x 1x 2x 1x 1x 1x 1x 16x 16x 11x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x | import { join, normalize, resolve, strings } from '@angular-devkit/core';
import { Inject, Injectable } from 'static-injector';
import { changeComponent } from '../component-template-inject/change-component';
import type { ExportLibraryComponentMeta } from '../library';
import { ResolvedDataGroup } from '../mini-program-compiler';
import { BuildPlatform } from '../platform/platform';
import {
LIBRARY_COMPONENT_METADATA_SUFFIX,
LIBRARY_OUTPUT_ROOTDIR,
} from './const';
import { getComponentOutputPath } from './get-library-path';
import { getUseComponents } from './merge-using-component-path';
import { OutputTemplateMetadataService } from './output-template-metadata.service';
import { CustomStyleSheetProcessor } from './stylesheet-processor';
import { ENTRY_POINT_TOKEN, RESOLVED_DATA_GROUP_TOKEN } from './token';
@Injectable()
export class SetupComponentDataService {
constructor(
@Inject(RESOLVED_DATA_GROUP_TOKEN)
private dataGroup: ResolvedDataGroup,
@Inject(ENTRY_POINT_TOKEN) private entryPoint: string,
private addGlobalTemplateService: OutputTemplateMetadataService,
private buildPlatform: BuildPlatform
) {}
run(
data: string,
originFileName: string,
customStyleSheetProcessor: CustomStyleSheetProcessor
) {
const changedData = changeComponent(data);
if (!changedData) {
return data;
}
const useComponentPath =
this.dataGroup.useComponentPath.get(originFileName)!;
const componentClassName = changedData.componentName;
const componentDirName = strings.dasherize(
strings.camelize(componentClassName)
);
const libraryPath = getComponentOutputPath(
this.entryPoint,
componentClassName
);
const styleUrlList = this.dataGroup.style.get(originFileName);
const styleContentList: string[] = [];
styleUrlList?.forEach((item) => {
styleContentList.push(customStyleSheetProcessor.styleMap.get(item)!);
});
const selfTemplateImportStr = this.dataGroup.otherMetaCollectionGroup[
'$self'
]
? `<import src="${resolve(
normalize('/'),
join(
normalize(LIBRARY_OUTPUT_ROOTDIR),
this.entryPoint,
'self' + this.buildPlatform.fileExtname.contentTemplate
)
)}"/>`
: '';
const insertComponentData: ExportLibraryComponentMeta = {
id:
strings.classify(this.entryPoint) +
strings.classify(strings.camelize(componentDirName)),
className: componentClassName,
content:
selfTemplateImportStr +
this.dataGroup.outputContent.get(originFileName)!,
libraryPath: libraryPath,
useComponents: {
...getUseComponents(
useComponentPath.libraryPath,
useComponentPath.localPath,
this.entryPoint
),
...this.addGlobalTemplateService.getSelfUseComponents(),
},
moduleId: this.entryPoint,
};
Eif (styleContentList.length) {
insertComponentData.style = styleContentList.join('\n');
}
const list = changedData.content.split(/\n|\r\n/g);
list.splice(
Math.max(list.length - 1, 0),
0,
`let ${componentClassName}_${LIBRARY_COMPONENT_METADATA_SUFFIX}=${JSON.stringify(
insertComponentData
)}`
);
return list.join('\n');
}
}
|