-
Notifications
You must be signed in to change notification settings - Fork 771
/
add-component-meta-static.ts
39 lines (31 loc) · 1.26 KB
/
add-component-meta-static.ts
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
import * as d from '../../declarations';
import { convertValueToLiteral, createStaticGetter } from './transform-utils';
import ts from 'typescript';
export const addComponentMetaStatic = (cmpNode: ts.ClassDeclaration, cmpMeta: d.ComponentCompilerMeta) => {
const publicCompilerMeta = getPublicCompilerMeta(cmpMeta);
const cmpMetaStaticProp = createStaticGetter('COMPILER_META', convertValueToLiteral(publicCompilerMeta));
const classMembers = [...cmpNode.members, cmpMetaStaticProp];
return ts.updateClassDeclaration(
cmpNode,
cmpNode.decorators,
cmpNode.modifiers,
cmpNode.name,
cmpNode.typeParameters,
cmpNode.heritageClauses,
classMembers
);
};
export const getPublicCompilerMeta = (cmpMeta: d.ComponentCompilerMeta) => {
const publicCompilerMeta = Object.assign({}, cmpMeta);
// no need to copy all compiler meta data
delete publicCompilerMeta.assetsDirs;
delete publicCompilerMeta.dependencies;
delete publicCompilerMeta.excludeFromCollection;
delete publicCompilerMeta.isCollectionDependency;
delete publicCompilerMeta.docs;
delete publicCompilerMeta.jsFilePath;
delete publicCompilerMeta.potentialCmpRefs;
delete publicCompilerMeta.styleDocs;
delete publicCompilerMeta.sourceFilePath;
return publicCompilerMeta;
};