@uibit/codegen 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +35 -0
- package/bin/uibit-codegen +2 -0
- package/dist/core/parser.d.ts +6 -0
- package/dist/core/parser.d.ts.map +1 -0
- package/dist/core/parser.js +60 -0
- package/dist/core/parser.js.map +1 -0
- package/dist/core/types.d.ts +49 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/utils.d.ts +36 -0
- package/dist/core/utils.d.ts.map +1 -0
- package/dist/core/utils.js +73 -0
- package/dist/core/utils.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +125 -0
- package/dist/index.js.map +1 -0
- package/dist/templates/angular.d.ts +8 -0
- package/dist/templates/angular.d.ts.map +1 -0
- package/dist/templates/angular.js +192 -0
- package/dist/templates/angular.js.map +1 -0
- package/dist/templates/astro.d.ts +8 -0
- package/dist/templates/astro.d.ts.map +1 -0
- package/dist/templates/astro.js +32 -0
- package/dist/templates/astro.js.map +1 -0
- package/dist/templates/nuxt.d.ts +8 -0
- package/dist/templates/nuxt.d.ts.map +1 -0
- package/dist/templates/nuxt.js +27 -0
- package/dist/templates/nuxt.js.map +1 -0
- package/dist/templates/preact.d.ts +8 -0
- package/dist/templates/preact.d.ts.map +1 -0
- package/dist/templates/preact.js +32 -0
- package/dist/templates/preact.js.map +1 -0
- package/dist/templates/qwik.d.ts +8 -0
- package/dist/templates/qwik.d.ts.map +1 -0
- package/dist/templates/qwik.js +32 -0
- package/dist/templates/qwik.js.map +1 -0
- package/dist/templates/react.d.ts +8 -0
- package/dist/templates/react.d.ts.map +1 -0
- package/dist/templates/react.js +43 -0
- package/dist/templates/react.js.map +1 -0
- package/dist/templates/solid.d.ts +8 -0
- package/dist/templates/solid.d.ts.map +1 -0
- package/dist/templates/solid.js +45 -0
- package/dist/templates/solid.js.map +1 -0
- package/dist/templates/stencil.d.ts +8 -0
- package/dist/templates/stencil.d.ts.map +1 -0
- package/dist/templates/stencil.js +31 -0
- package/dist/templates/stencil.js.map +1 -0
- package/dist/templates/svelte.d.ts +8 -0
- package/dist/templates/svelte.d.ts.map +1 -0
- package/dist/templates/svelte.js +87 -0
- package/dist/templates/svelte.js.map +1 -0
- package/dist/templates/vue.d.ts +8 -0
- package/dist/templates/vue.d.ts.map +1 -0
- package/dist/templates/vue.js +57 -0
- package/dist/templates/vue.js.map +1 -0
- package/package.json +31 -0
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { SourceBuilder, mergePropertiesAndAttributes, generateTypeImports, toCamelCase } from '../core/utils.js';
|
|
2
|
+
export const angularPlugin = {
|
|
3
|
+
name: 'angular',
|
|
4
|
+
generate(component) {
|
|
5
|
+
const generator = new AngularComponentGenerator(component);
|
|
6
|
+
return {
|
|
7
|
+
'index.ts': generator.build()
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
class AngularComponentGenerator {
|
|
12
|
+
constructor(component) {
|
|
13
|
+
this.component = component;
|
|
14
|
+
this.propMap = mergePropertiesAndAttributes(component.properties, component.attributes);
|
|
15
|
+
this.isFormAssociated = component.formAssociated || false;
|
|
16
|
+
}
|
|
17
|
+
build() {
|
|
18
|
+
return new SourceBuilder()
|
|
19
|
+
.append(this.generateImports())
|
|
20
|
+
.append(this.generateClass())
|
|
21
|
+
.toString();
|
|
22
|
+
}
|
|
23
|
+
generateImports() {
|
|
24
|
+
const angularImports = [
|
|
25
|
+
'Component',
|
|
26
|
+
'ChangeDetectionStrategy',
|
|
27
|
+
'ElementRef'
|
|
28
|
+
];
|
|
29
|
+
if (this.propMap.size > 0) {
|
|
30
|
+
angularImports.push('input', 'effect');
|
|
31
|
+
}
|
|
32
|
+
if (this.component.events.length > 0) {
|
|
33
|
+
angularImports.push('output');
|
|
34
|
+
}
|
|
35
|
+
const hasBoolean = Array.from(this.propMap.values()).some(t => t.includes('boolean'));
|
|
36
|
+
const hasNumber = Array.from(this.propMap.values()).some(t => t.includes('number'));
|
|
37
|
+
if (hasBoolean) {
|
|
38
|
+
angularImports.push('booleanAttribute');
|
|
39
|
+
}
|
|
40
|
+
if (hasNumber) {
|
|
41
|
+
angularImports.push('numberAttribute');
|
|
42
|
+
}
|
|
43
|
+
if (this.isFormAssociated) {
|
|
44
|
+
angularImports.push('forwardRef');
|
|
45
|
+
}
|
|
46
|
+
const importPath = this.component.importPath || '../../index.js';
|
|
47
|
+
return [
|
|
48
|
+
`import { ${angularImports.join(', ')} } from '@angular/core';`,
|
|
49
|
+
this.isFormAssociated ? `import { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';` : '',
|
|
50
|
+
`import '${importPath}';`,
|
|
51
|
+
`import type { ${this.component.name} as HTMLElementClass } from '${importPath}';`,
|
|
52
|
+
generateTypeImports(this.component.referencedTypes, importPath)
|
|
53
|
+
].filter(Boolean).join('\n');
|
|
54
|
+
}
|
|
55
|
+
generateClass() {
|
|
56
|
+
const name = this.component.name;
|
|
57
|
+
const providers = this.generateProviders();
|
|
58
|
+
const implementsClause = this.isFormAssociated ? ' implements ControlValueAccessor' : '';
|
|
59
|
+
// Build host bindings safely without duplicate keys
|
|
60
|
+
const hostBindings = {};
|
|
61
|
+
for (const e of this.component.events) {
|
|
62
|
+
const camel = toCamelCase(e.name);
|
|
63
|
+
hostBindings[`(${e.name})`] = [`${camel}.emit($event)`];
|
|
64
|
+
}
|
|
65
|
+
if (this.isFormAssociated) {
|
|
66
|
+
hostBindings['(blur)'] = ['handleBlur()'];
|
|
67
|
+
if (!hostBindings['(change)'])
|
|
68
|
+
hostBindings['(change)'] = [];
|
|
69
|
+
hostBindings['(change)'].push('handleInput()');
|
|
70
|
+
if (!hostBindings['(input)'])
|
|
71
|
+
hostBindings['(input)'] = [];
|
|
72
|
+
hostBindings['(input)'].push('handleInput()');
|
|
73
|
+
for (const e of this.component.events) {
|
|
74
|
+
const key = `(${e.name})`;
|
|
75
|
+
const bindings = hostBindings[key] ?? [];
|
|
76
|
+
hostBindings[key] = bindings;
|
|
77
|
+
bindings.push('handleInput()');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const hostLines = Object.entries(hostBindings).map(([eventKey, actions]) => {
|
|
81
|
+
return `'${eventKey}': '${actions.join('; ')}'`;
|
|
82
|
+
});
|
|
83
|
+
const hostAttr = hostLines.length > 0 ? `,\n host: {\n ${hostLines.join(',\n ')}\n }` : '';
|
|
84
|
+
const inputsCode = this.generateInputs();
|
|
85
|
+
const outputsCode = this.generateOutputs();
|
|
86
|
+
const effectCode = this.generateEffect();
|
|
87
|
+
const formCode = this.generateFormMethods();
|
|
88
|
+
const constructorBody = [effectCode].filter(Boolean).join('\n');
|
|
89
|
+
return `@Component({
|
|
90
|
+
selector: '${this.component.tagName}',
|
|
91
|
+
template: '<ng-content></ng-content>',
|
|
92
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
93
|
+
standalone: true${providers}${hostAttr}
|
|
94
|
+
})
|
|
95
|
+
export class Ngx${name}${implementsClause} {
|
|
96
|
+
constructor(private el: ElementRef<HTMLElementClass>) {
|
|
97
|
+
${constructorBody}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
${[inputsCode, outputsCode, formCode].filter(Boolean).join('\n\n')}
|
|
101
|
+
}`;
|
|
102
|
+
}
|
|
103
|
+
generateProviders() {
|
|
104
|
+
if (!this.isFormAssociated)
|
|
105
|
+
return '';
|
|
106
|
+
return `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Ngx${this.component.name}),\n multi: true\n }\n ]`;
|
|
107
|
+
}
|
|
108
|
+
generateInputs() {
|
|
109
|
+
return Array.from(this.propMap.entries())
|
|
110
|
+
.map(([name, type]) => {
|
|
111
|
+
const originalProp = this.component.properties.find(p => p.name === name);
|
|
112
|
+
const hasDefault = originalProp && originalProp.default !== undefined;
|
|
113
|
+
let defaultVal = 'undefined';
|
|
114
|
+
if (hasDefault) {
|
|
115
|
+
defaultVal = originalProp.default;
|
|
116
|
+
}
|
|
117
|
+
else if (type.includes('boolean')) {
|
|
118
|
+
defaultVal = 'false';
|
|
119
|
+
}
|
|
120
|
+
else if (type.includes('number')) {
|
|
121
|
+
defaultVal = '0';
|
|
122
|
+
}
|
|
123
|
+
else if (type.includes('string')) {
|
|
124
|
+
defaultVal = '\'\'';
|
|
125
|
+
}
|
|
126
|
+
const isBoolean = type.includes('boolean');
|
|
127
|
+
const isNumber = type.includes('number');
|
|
128
|
+
let options = '';
|
|
129
|
+
if (isBoolean) {
|
|
130
|
+
options = `, { transform: booleanAttribute }`;
|
|
131
|
+
}
|
|
132
|
+
else if (isNumber) {
|
|
133
|
+
options = `, { transform: numberAttribute }`;
|
|
134
|
+
}
|
|
135
|
+
return ` readonly ${name} = input<${type}, any>(${defaultVal}${options});`;
|
|
136
|
+
})
|
|
137
|
+
.join('\n');
|
|
138
|
+
}
|
|
139
|
+
generateOutputs() {
|
|
140
|
+
return this.component.events
|
|
141
|
+
.map(e => {
|
|
142
|
+
const camel = toCamelCase(e.name);
|
|
143
|
+
const eventType = e.type?.text ? `CustomEvent<${e.type.text}>` : 'CustomEvent<any>';
|
|
144
|
+
return ` readonly ${camel} = output<${eventType}>();`;
|
|
145
|
+
})
|
|
146
|
+
.join('\n');
|
|
147
|
+
}
|
|
148
|
+
generateEffect() {
|
|
149
|
+
if (this.propMap.size === 0)
|
|
150
|
+
return '';
|
|
151
|
+
return Array.from(this.propMap.keys())
|
|
152
|
+
.map(name => {
|
|
153
|
+
return ` effect(() => {
|
|
154
|
+
if (this.el.nativeElement) {
|
|
155
|
+
this.el.nativeElement.${name} = this.${name}();
|
|
156
|
+
}
|
|
157
|
+
});`;
|
|
158
|
+
})
|
|
159
|
+
.join('\n');
|
|
160
|
+
}
|
|
161
|
+
generateFormMethods() {
|
|
162
|
+
if (!this.isFormAssociated)
|
|
163
|
+
return '';
|
|
164
|
+
return ` private _onChange: (value: any) => void = () => {};
|
|
165
|
+
private _onTouched: () => void = () => {};
|
|
166
|
+
|
|
167
|
+
writeValue(value: any): void {
|
|
168
|
+
this.el.nativeElement.value = value;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
registerOnChange(fn: any): void {
|
|
172
|
+
this._onChange = fn;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
registerOnTouched(fn: any): void {
|
|
176
|
+
this._onTouched = fn;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
setDisabledState(isDisabled: boolean): void {
|
|
180
|
+
this.el.nativeElement.disabled = isDisabled;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
handleInput() {
|
|
184
|
+
this._onChange(this.el.nativeElement.value);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
handleBlur() {
|
|
188
|
+
this._onTouched();
|
|
189
|
+
}`;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=angular.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"angular.js","sourceRoot":"","sources":["../../src/templates/angular.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"astro.d.ts","sourceRoot":"","sources":["../../src/templates/astro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,eAAO,MAAM,WAAW;IACtB,IAAI;IACJ,QAAQ,YAAY,iBAAiB;QAEjC,YAAY;;CAGjB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { SourceBuilder } from '../core/utils.js';
|
|
2
|
+
export const astroPlugin = {
|
|
3
|
+
name: 'astro',
|
|
4
|
+
generate(component) {
|
|
5
|
+
return {
|
|
6
|
+
'index.d.ts': buildDTS(component)
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
function renderAstroImports(name, importPath) {
|
|
11
|
+
return [
|
|
12
|
+
`import type { ${name} as HTMLElementClass } from '${importPath}';`,
|
|
13
|
+
`import '${importPath}';`
|
|
14
|
+
].join('\n');
|
|
15
|
+
}
|
|
16
|
+
function renderAstroGlobalDeclaration(tagName) {
|
|
17
|
+
return `declare global {
|
|
18
|
+
namespace astroHTML.JSX {
|
|
19
|
+
interface IntrinsicElements {
|
|
20
|
+
'${tagName}': Partial<HTMLElementClass> & astroHTML.JSX.HTMLAttributes;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}`;
|
|
24
|
+
}
|
|
25
|
+
function buildDTS(component) {
|
|
26
|
+
const importPath = component.importPath || '../../index.js';
|
|
27
|
+
return new SourceBuilder()
|
|
28
|
+
.append(renderAstroImports(component.name, importPath))
|
|
29
|
+
.append(renderAstroGlobalDeclaration(component.tagName))
|
|
30
|
+
.toString();
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=astro.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"astro.js","sourceRoot":"","sources":["../../src/templates/astro.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,OAAO;IACb,QAAQ,CAAC,SAA4B;QACnC,OAAO;YACL,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC;SAClC,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,kBAAkB,CAAC,IAAY,EAAE,UAAkB;IAC1D,OAAO;QACL,iBAAiB,IAAI,gCAAgC,UAAU,IAAI;QACnE,WAAW,UAAU,IAAI;KAC1B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,4BAA4B,CAAC,OAAe;IACnD,OAAO;;;SAGA,OAAO;;;EAGd,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,SAA4B;IAC5C,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,gBAAgB,CAAC;IAC5D,OAAO,IAAI,aAAa,EAAE;SACvB,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SACtD,MAAM,CAAC,4BAA4B,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;SACvD,QAAQ,EAAE,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nuxt.d.ts","sourceRoot":"","sources":["../../src/templates/nuxt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,eAAO,MAAM,UAAU;IACrB,IAAI;IACJ,QAAQ,YAAY,iBAAiB;QAEjC,UAAU;;CAGf,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { SourceBuilder } from '../core/utils.js';
|
|
2
|
+
export const nuxtPlugin = {
|
|
3
|
+
name: 'nuxt',
|
|
4
|
+
generate(component) {
|
|
5
|
+
return {
|
|
6
|
+
'index.ts': buildTS(component)
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
function renderNuxtImports() {
|
|
11
|
+
return `import { defineNuxtPlugin } from '#app';`;
|
|
12
|
+
}
|
|
13
|
+
function renderNuxtPlugin(importPath) {
|
|
14
|
+
return `export default defineNuxtPlugin(() => {
|
|
15
|
+
if (process.client) {
|
|
16
|
+
import('${importPath}');
|
|
17
|
+
}
|
|
18
|
+
});`;
|
|
19
|
+
}
|
|
20
|
+
function buildTS(component) {
|
|
21
|
+
const importPath = component.importPath || '../../index.js';
|
|
22
|
+
return new SourceBuilder()
|
|
23
|
+
.append(renderNuxtImports())
|
|
24
|
+
.append(renderNuxtPlugin(importPath))
|
|
25
|
+
.toString();
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=nuxt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nuxt.js","sourceRoot":"","sources":["../../src/templates/nuxt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,MAAM;IACZ,QAAQ,CAAC,SAA4B;QACnC,OAAO;YACL,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC;SAC/B,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,iBAAiB;IACxB,OAAO,0CAA0C,CAAC;AACpD,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAkB;IAC1C,OAAO;;cAEK,UAAU;;IAEpB,CAAC;AACL,CAAC;AAED,SAAS,OAAO,CAAC,SAA4B;IAC3C,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,gBAAgB,CAAC;IAC5D,OAAO,IAAI,aAAa,EAAE;SACvB,MAAM,CAAC,iBAAiB,EAAE,CAAC;SAC3B,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;SACpC,QAAQ,EAAE,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preact.d.ts","sourceRoot":"","sources":["../../src/templates/preact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,eAAO,MAAM,YAAY;IACvB,IAAI;IACJ,QAAQ,YAAY,iBAAiB;QAEjC,YAAY;;CAGjB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { SourceBuilder, mergePropertiesAndAttributes, generateTypeImports } from '../core/utils.js';
|
|
2
|
+
export const preactPlugin = {
|
|
3
|
+
name: 'preact',
|
|
4
|
+
generate(component) {
|
|
5
|
+
return {
|
|
6
|
+
'index.d.ts': buildDTS(component)
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
function buildDTS(component) {
|
|
11
|
+
const { name, tagName, properties, attributes, referencedTypes, importPath = '../../index.js' } = component;
|
|
12
|
+
const builder = new SourceBuilder();
|
|
13
|
+
builder.append(`import type { JSX } from 'preact';
|
|
14
|
+
import type { ${name} as HTMLElementClass } from '${importPath}';
|
|
15
|
+
import '${importPath}';
|
|
16
|
+
${generateTypeImports(referencedTypes, importPath)}`);
|
|
17
|
+
const propMap = mergePropertiesAndAttributes(properties, attributes);
|
|
18
|
+
const propTypes = Array.from(propMap.entries()).map(([propName, propType]) => {
|
|
19
|
+
return ` ${propName}?: ${propType};`;
|
|
20
|
+
}).join('\n');
|
|
21
|
+
builder.append(`declare module 'preact' {
|
|
22
|
+
namespace JSX {
|
|
23
|
+
interface IntrinsicElements {
|
|
24
|
+
'${tagName}': JSX.HTMLAttributes<HTMLElementClass> & {
|
|
25
|
+
${propTypes}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}`);
|
|
30
|
+
return builder.toString();
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=preact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preact.js","sourceRoot":"","sources":["../../src/templates/preact.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEpG,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,QAAQ;IACd,QAAQ,CAAC,SAA4B;QACnC,OAAO;YACL,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC;SAClC,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,QAAQ,CAAC,SAA4B;IAC5C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,GAAG,gBAAgB,EAAE,GAAG,SAAS,CAAC;IAC5G,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;IAEpC,OAAO,CAAC,MAAM,CAAC;gBACD,IAAI,gCAAgC,UAAU;UACpD,UAAU;EAClB,mBAAmB,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IAEpD,MAAM,OAAO,GAAG,4BAA4B,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE;QAC3E,OAAO,SAAS,QAAQ,MAAM,QAAQ,GAAG,CAAC;IAC5C,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,CAAC,MAAM,CAAC;;;SAGR,OAAO;EACd,SAAS;;;;EAIT,CAAC,CAAC;IAEF,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qwik.d.ts","sourceRoot":"","sources":["../../src/templates/qwik.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,eAAO,MAAM,UAAU;IACrB,IAAI;IACJ,QAAQ,YAAY,iBAAiB;QAEjC,WAAW;;CAGhB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { SourceBuilder } from '../core/utils.js';
|
|
2
|
+
export const qwikPlugin = {
|
|
3
|
+
name: 'qwik',
|
|
4
|
+
generate(component) {
|
|
5
|
+
return {
|
|
6
|
+
'index.tsx': buildTSX(component)
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
function renderQwikImports(importPath) {
|
|
11
|
+
return [
|
|
12
|
+
`import { component$, Slot } from '@builder.io/qwik';`,
|
|
13
|
+
`import '${importPath}';`
|
|
14
|
+
].join('\n');
|
|
15
|
+
}
|
|
16
|
+
function renderQwikComponent(name, tagName) {
|
|
17
|
+
return `export const ${name} = component$<any>((props) => {
|
|
18
|
+
return (
|
|
19
|
+
<${tagName} {...props}>
|
|
20
|
+
<Slot />
|
|
21
|
+
</${tagName}>
|
|
22
|
+
);
|
|
23
|
+
});`;
|
|
24
|
+
}
|
|
25
|
+
function buildTSX(component) {
|
|
26
|
+
const importPath = component.importPath || '../../index.js';
|
|
27
|
+
return new SourceBuilder()
|
|
28
|
+
.append(renderQwikImports(importPath))
|
|
29
|
+
.append(renderQwikComponent(component.name, component.tagName))
|
|
30
|
+
.toString();
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=qwik.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qwik.js","sourceRoot":"","sources":["../../src/templates/qwik.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,MAAM;IACZ,QAAQ,CAAC,SAA4B;QACnC,OAAO;YACL,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC;SACjC,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,iBAAiB,CAAC,UAAkB;IAC3C,OAAO;QACL,sDAAsD;QACtD,WAAW,UAAU,IAAI;KAC1B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,OAAe;IACxD,OAAO,gBAAgB,IAAI;;OAEtB,OAAO;;QAEN,OAAO;;IAEX,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,SAA4B;IAC5C,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,gBAAgB,CAAC;IAC5D,OAAO,IAAI,aAAa,EAAE;SACvB,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;SACrC,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;SAC9D,QAAQ,EAAE,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/templates/react.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,eAAO,MAAM,WAAW;IACtB,IAAI;IACJ,QAAQ,YAAY,iBAAiB;QAEjC,YAAY;;CAGjB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { SourceBuilder, mergePropertiesAndAttributes, generateTypeImports, toReactEventName } from '../core/utils.js';
|
|
2
|
+
export const reactPlugin = {
|
|
3
|
+
name: 'react',
|
|
4
|
+
generate(component) {
|
|
5
|
+
return {
|
|
6
|
+
'index.d.ts': buildDTS(component)
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
function buildDTS(component) {
|
|
11
|
+
const { name, tagName, properties, attributes, events = [], referencedTypes, importPath = '../../index.js' } = component;
|
|
12
|
+
const builder = new SourceBuilder();
|
|
13
|
+
builder.append(`import type { HTMLAttributes, ClassAttributes } from 'react';
|
|
14
|
+
import type { ${name} as HTMLElementClass } from '${importPath}';
|
|
15
|
+
import '${importPath}';
|
|
16
|
+
${generateTypeImports(referencedTypes, importPath)}`);
|
|
17
|
+
const propMap = mergePropertiesAndAttributes(properties, attributes);
|
|
18
|
+
let propTypes = Array.from(propMap.entries()).map(([propName, propType]) => {
|
|
19
|
+
return ` ${propName}?: ${propType};`;
|
|
20
|
+
}).join('\n');
|
|
21
|
+
if (events.length > 0) {
|
|
22
|
+
const eventTypes = events.map(e => {
|
|
23
|
+
const reactEventName = toReactEventName(e.name);
|
|
24
|
+
return ` ${reactEventName}?: (event: any) => void;`;
|
|
25
|
+
}).join('\n');
|
|
26
|
+
propTypes = propTypes + '\n' + eventTypes;
|
|
27
|
+
}
|
|
28
|
+
builder.append(`declare global {
|
|
29
|
+
namespace React {
|
|
30
|
+
namespace JSX {
|
|
31
|
+
interface IntrinsicElements {
|
|
32
|
+
'${tagName}': ClassAttributes<HTMLElementClass> & HTMLAttributes<HTMLElementClass> & {
|
|
33
|
+
children?: React.ReactNode;
|
|
34
|
+
class?: string;
|
|
35
|
+
${propTypes}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}`);
|
|
41
|
+
return builder.toString();
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=react.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../src/templates/react.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEtH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,OAAO;IACb,QAAQ,CAAC,SAA4B;QACnC,OAAO;YACL,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC;SAClC,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,QAAQ,CAAC,SAA4B;IAC5C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,EAAE,EAAE,eAAe,EAAE,UAAU,GAAG,gBAAgB,EAAE,GAAG,SAAS,CAAC;IACzH,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;IAEpC,OAAO,CAAC,MAAM,CAAC;gBACD,IAAI,gCAAgC,UAAU;UACpD,UAAU;EAClB,mBAAmB,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IAEpD,MAAM,OAAO,GAAG,4BAA4B,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACrE,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE;QACzE,OAAO,SAAS,QAAQ,MAAM,QAAQ,GAAG,CAAC;IAC5C,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAChC,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAChD,OAAO,SAAS,cAAc,0BAA0B,CAAC;QAC3D,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,SAAS,GAAG,SAAS,GAAG,IAAI,GAAG,UAAU,CAAC;IAC5C,CAAC;IAED,OAAO,CAAC,MAAM,CAAC;;;;WAIN,OAAO;;;EAGhB,SAAS;;;;;EAKT,CAAC,CAAC;IAEF,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solid.d.ts","sourceRoot":"","sources":["../../src/templates/solid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,eAAO,MAAM,WAAW;IACtB,IAAI;IACJ,QAAQ,YAAY,iBAAiB;QAEjC,YAAY;;CAGjB,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { SourceBuilder, mergePropertiesAndAttributes, generateTypeImports } from '../core/utils.js';
|
|
2
|
+
export const solidPlugin = {
|
|
3
|
+
name: 'solid',
|
|
4
|
+
generate(component) {
|
|
5
|
+
return {
|
|
6
|
+
'index.d.ts': buildDTS(component)
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
function renderSolidImports(name, referencedTypes, importPath) {
|
|
11
|
+
return [
|
|
12
|
+
`import type { JSX } from 'solid-js';`,
|
|
13
|
+
`import type { ${name} as HTMLElementClass } from '${importPath}';`,
|
|
14
|
+
`import '${importPath}';`,
|
|
15
|
+
generateTypeImports(referencedTypes, importPath)
|
|
16
|
+
].filter(Boolean).join('\n');
|
|
17
|
+
}
|
|
18
|
+
function renderSolidModuleDeclaration(component) {
|
|
19
|
+
const { tagName, properties, attributes, events } = component;
|
|
20
|
+
const propMap = mergePropertiesAndAttributes(properties, attributes);
|
|
21
|
+
const propTypes = Array.from(propMap.entries())
|
|
22
|
+
.map(([propName, propType]) => ` ${propName}?: ${propType};`)
|
|
23
|
+
.join('\n');
|
|
24
|
+
const eventTypes = events
|
|
25
|
+
.map(e => ` "on:${e.name}"?: (event: CustomEvent) => void;`)
|
|
26
|
+
.join('\n');
|
|
27
|
+
return `declare module 'solid-js' {
|
|
28
|
+
namespace JSX {
|
|
29
|
+
interface IntrinsicElements {
|
|
30
|
+
'${tagName}': Partial<HTMLElementClass> & JSX.HTMLAttributes<HTMLElementClass> & {
|
|
31
|
+
${propTypes}
|
|
32
|
+
${eventTypes}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}`;
|
|
37
|
+
}
|
|
38
|
+
function buildDTS(component) {
|
|
39
|
+
const importPath = component.importPath || '../../index.js';
|
|
40
|
+
return new SourceBuilder()
|
|
41
|
+
.append(renderSolidImports(component.name, component.referencedTypes, importPath))
|
|
42
|
+
.append(renderSolidModuleDeclaration(component))
|
|
43
|
+
.toString();
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=solid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solid.js","sourceRoot":"","sources":["../../src/templates/solid.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEpG,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,OAAO;IACb,QAAQ,CAAC,SAA4B;QACnC,OAAO;YACL,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC;SAClC,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,kBAAkB,CAAC,IAAY,EAAE,eAAyB,EAAE,UAAkB;IACrF,OAAO;QACL,sCAAsC;QACtC,iBAAiB,IAAI,gCAAgC,UAAU,IAAI;QACnE,WAAW,UAAU,IAAI;QACzB,mBAAmB,CAAC,eAAe,EAAE,UAAU,CAAC;KACjD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,4BAA4B,CAAC,SAA4B;IAChE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC9D,MAAM,OAAO,GAAG,4BAA4B,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAErE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;SAC5C,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,SAAS,QAAQ,MAAM,QAAQ,GAAG,CAAC;SACjE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,UAAU,GAAG,MAAM;SACtB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,mCAAmC,CAAC;SAChE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;;;SAGA,OAAO;UACN,SAAS;EACjB,UAAU;;;;EAIV,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,SAA4B;IAC5C,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,gBAAgB,CAAC;IAC5D,OAAO,IAAI,aAAa,EAAE;SACvB,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;SACjF,MAAM,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC;SAC/C,QAAQ,EAAE,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stencil.d.ts","sourceRoot":"","sources":["../../src/templates/stencil.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,eAAO,MAAM,aAAa;IACxB,IAAI;IACJ,QAAQ,YAAY,iBAAiB;QAEjC,YAAY;;CAGjB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { SourceBuilder, mergePropertiesAndAttributes, generateTypeImports } from '../core/utils.js';
|
|
2
|
+
export const stencilPlugin = {
|
|
3
|
+
name: 'stencil',
|
|
4
|
+
generate(component) {
|
|
5
|
+
return {
|
|
6
|
+
'index.d.ts': buildDTS(component)
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
function buildDTS(component) {
|
|
11
|
+
const { name, tagName, properties, attributes, referencedTypes, importPath = '../../index.js' } = component;
|
|
12
|
+
const builder = new SourceBuilder();
|
|
13
|
+
builder.append(`import type { ${name} as HTMLElementClass } from '${importPath}';
|
|
14
|
+
import '${importPath}';
|
|
15
|
+
${generateTypeImports(referencedTypes, importPath)}`);
|
|
16
|
+
const propMap = mergePropertiesAndAttributes(properties, attributes);
|
|
17
|
+
const propTypes = Array.from(propMap.entries()).map(([propName, propType]) => {
|
|
18
|
+
return ` ${propName}?: ${propType};`;
|
|
19
|
+
}).join('\n');
|
|
20
|
+
builder.append(`declare module '@stencil/core' {
|
|
21
|
+
export namespace JSX {
|
|
22
|
+
interface IntrinsicElements {
|
|
23
|
+
'${tagName}': HTMLElementClass & {
|
|
24
|
+
${propTypes}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}`);
|
|
29
|
+
return builder.toString();
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=stencil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stencil.js","sourceRoot":"","sources":["../../src/templates/stencil.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEpG,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,SAAS;IACf,QAAQ,CAAC,SAA4B;QACnC,OAAO;YACL,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC;SAClC,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,QAAQ,CAAC,SAA4B;IAC5C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,GAAG,gBAAgB,EAAE,GAAG,SAAS,CAAC;IAC5G,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;IAEpC,OAAO,CAAC,MAAM,CAAC,iBAAiB,IAAI,gCAAgC,UAAU;UACtE,UAAU;EAClB,mBAAmB,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IAEpD,MAAM,OAAO,GAAG,4BAA4B,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE;QAC3E,OAAO,OAAO,QAAQ,MAAM,QAAQ,GAAG,CAAC;IAC1C,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,CAAC,MAAM,CAAC;;;SAGR,OAAO;EACd,SAAS;;;;EAIT,CAAC,CAAC;IAEF,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svelte.d.ts","sourceRoot":"","sources":["../../src/templates/svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,eAAO,MAAM,YAAY;IACvB,IAAI;IACJ,QAAQ,YAAY,iBAAiB;QAEjC,cAAc;;CAGnB,CAAC"}
|