@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.
Files changed (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +35 -0
  3. package/bin/uibit-codegen +2 -0
  4. package/dist/core/parser.d.ts +6 -0
  5. package/dist/core/parser.d.ts.map +1 -0
  6. package/dist/core/parser.js +60 -0
  7. package/dist/core/parser.js.map +1 -0
  8. package/dist/core/types.d.ts +49 -0
  9. package/dist/core/types.d.ts.map +1 -0
  10. package/dist/core/types.js +2 -0
  11. package/dist/core/types.js.map +1 -0
  12. package/dist/core/utils.d.ts +36 -0
  13. package/dist/core/utils.d.ts.map +1 -0
  14. package/dist/core/utils.js +73 -0
  15. package/dist/core/utils.js.map +1 -0
  16. package/dist/index.d.ts +3 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +125 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/templates/angular.d.ts +8 -0
  21. package/dist/templates/angular.d.ts.map +1 -0
  22. package/dist/templates/angular.js +192 -0
  23. package/dist/templates/angular.js.map +1 -0
  24. package/dist/templates/astro.d.ts +8 -0
  25. package/dist/templates/astro.d.ts.map +1 -0
  26. package/dist/templates/astro.js +32 -0
  27. package/dist/templates/astro.js.map +1 -0
  28. package/dist/templates/nuxt.d.ts +8 -0
  29. package/dist/templates/nuxt.d.ts.map +1 -0
  30. package/dist/templates/nuxt.js +27 -0
  31. package/dist/templates/nuxt.js.map +1 -0
  32. package/dist/templates/preact.d.ts +8 -0
  33. package/dist/templates/preact.d.ts.map +1 -0
  34. package/dist/templates/preact.js +32 -0
  35. package/dist/templates/preact.js.map +1 -0
  36. package/dist/templates/qwik.d.ts +8 -0
  37. package/dist/templates/qwik.d.ts.map +1 -0
  38. package/dist/templates/qwik.js +32 -0
  39. package/dist/templates/qwik.js.map +1 -0
  40. package/dist/templates/react.d.ts +8 -0
  41. package/dist/templates/react.d.ts.map +1 -0
  42. package/dist/templates/react.js +43 -0
  43. package/dist/templates/react.js.map +1 -0
  44. package/dist/templates/solid.d.ts +8 -0
  45. package/dist/templates/solid.d.ts.map +1 -0
  46. package/dist/templates/solid.js +45 -0
  47. package/dist/templates/solid.js.map +1 -0
  48. package/dist/templates/stencil.d.ts +8 -0
  49. package/dist/templates/stencil.d.ts.map +1 -0
  50. package/dist/templates/stencil.js +31 -0
  51. package/dist/templates/stencil.js.map +1 -0
  52. package/dist/templates/svelte.d.ts +8 -0
  53. package/dist/templates/svelte.d.ts.map +1 -0
  54. package/dist/templates/svelte.js +87 -0
  55. package/dist/templates/svelte.js.map +1 -0
  56. package/dist/templates/vue.d.ts +8 -0
  57. package/dist/templates/vue.d.ts.map +1 -0
  58. package/dist/templates/vue.js +57 -0
  59. package/dist/templates/vue.js.map +1 -0
  60. 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,8 @@
1
+ import type { ComponentMetadata } from '../core/types.js';
2
+ export declare const astroPlugin: {
3
+ name: string;
4
+ generate(component: ComponentMetadata): {
5
+ 'index.d.ts': string;
6
+ };
7
+ };
8
+ //# sourceMappingURL=astro.d.ts.map
@@ -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,8 @@
1
+ import type { ComponentMetadata } from '../core/types.js';
2
+ export declare const nuxtPlugin: {
3
+ name: string;
4
+ generate(component: ComponentMetadata): {
5
+ 'index.ts': string;
6
+ };
7
+ };
8
+ //# sourceMappingURL=nuxt.d.ts.map
@@ -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,8 @@
1
+ import type { ComponentMetadata } from '../core/types.js';
2
+ export declare const preactPlugin: {
3
+ name: string;
4
+ generate(component: ComponentMetadata): {
5
+ 'index.d.ts': string;
6
+ };
7
+ };
8
+ //# sourceMappingURL=preact.d.ts.map
@@ -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,8 @@
1
+ import type { ComponentMetadata } from '../core/types.js';
2
+ export declare const qwikPlugin: {
3
+ name: string;
4
+ generate(component: ComponentMetadata): {
5
+ 'index.tsx': string;
6
+ };
7
+ };
8
+ //# sourceMappingURL=qwik.d.ts.map
@@ -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,8 @@
1
+ import type { ComponentMetadata } from '../core/types.js';
2
+ export declare const reactPlugin: {
3
+ name: string;
4
+ generate(component: ComponentMetadata): {
5
+ 'index.d.ts': string;
6
+ };
7
+ };
8
+ //# sourceMappingURL=react.d.ts.map
@@ -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,8 @@
1
+ import type { ComponentMetadata } from '../core/types.js';
2
+ export declare const solidPlugin: {
3
+ name: string;
4
+ generate(component: ComponentMetadata): {
5
+ 'index.d.ts': string;
6
+ };
7
+ };
8
+ //# sourceMappingURL=solid.d.ts.map
@@ -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,8 @@
1
+ import type { ComponentMetadata } from '../core/types.js';
2
+ export declare const stencilPlugin: {
3
+ name: string;
4
+ generate(component: ComponentMetadata): {
5
+ 'index.d.ts': string;
6
+ };
7
+ };
8
+ //# sourceMappingURL=stencil.d.ts.map
@@ -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,8 @@
1
+ import type { ComponentMetadata } from '../core/types.js';
2
+ export declare const sveltePlugin: {
3
+ name: string;
4
+ generate(component: ComponentMetadata): {
5
+ 'index.svelte': string;
6
+ };
7
+ };
8
+ //# sourceMappingURL=svelte.d.ts.map
@@ -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"}