@powerlines/plugin-alloy 0.25.33 → 0.25.35
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/README.md +1 -1
- package/dist/core/components/output.cjs +17 -10
- package/dist/core/components/output.mjs +17 -10
- package/dist/core/components/output.mjs.map +1 -1
- package/dist/core/components/single-line-comment.cjs +6 -4
- package/dist/core/components/single-line-comment.mjs +6 -4
- package/dist/core/components/single-line-comment.mjs.map +1 -1
- package/dist/core/components/source-file.cjs +10 -6
- package/dist/core/components/source-file.mjs +10 -6
- package/dist/core/components/source-file.mjs.map +1 -1
- package/dist/core/components/spacing.cjs +6 -4
- package/dist/core/components/spacing.mjs +6 -4
- package/dist/core/components/spacing.mjs.map +1 -1
- package/dist/index.cjs +13 -18
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +12 -17
- package/dist/index.mjs.map +1 -1
- package/dist/markdown/components/front-matter.cjs +9 -7
- package/dist/markdown/components/front-matter.mjs +9 -7
- package/dist/markdown/components/front-matter.mjs.map +1 -1
- package/dist/markdown/components/markdown-file.cjs +76 -44
- package/dist/markdown/components/markdown-file.mjs +76 -44
- package/dist/markdown/components/markdown-file.mjs.map +1 -1
- package/dist/markdown/components/markdown-table.cjs +49 -28
- package/dist/markdown/components/markdown-table.mjs +49 -28
- package/dist/markdown/components/markdown-table.mjs.map +1 -1
- package/dist/render.cjs +3 -3
- package/dist/render.mjs +4 -4
- package/dist/render.mjs.map +1 -1
- package/dist/typescript/components/builtin-file.cjs +29 -19
- package/dist/typescript/components/builtin-file.mjs +30 -20
- package/dist/typescript/components/builtin-file.mjs.map +1 -1
- package/dist/typescript/components/class-declaration.cjs +165 -100
- package/dist/typescript/components/class-declaration.mjs +165 -100
- package/dist/typescript/components/class-declaration.mjs.map +1 -1
- package/dist/typescript/components/dynamic-import-statement.cjs +2 -6
- package/dist/typescript/components/dynamic-import-statement.mjs +2 -6
- package/dist/typescript/components/dynamic-import-statement.mjs.map +1 -1
- package/dist/typescript/components/entry-file.cjs +9 -6
- package/dist/typescript/components/entry-file.mjs +10 -7
- package/dist/typescript/components/entry-file.mjs.map +1 -1
- package/dist/typescript/components/infrastructure-file.cjs +9 -6
- package/dist/typescript/components/infrastructure-file.mjs +10 -7
- package/dist/typescript/components/infrastructure-file.mjs.map +1 -1
- package/dist/typescript/components/interface-declaration.cjs +121 -70
- package/dist/typescript/components/interface-declaration.mjs +121 -70
- package/dist/typescript/components/interface-declaration.mjs.map +1 -1
- package/dist/typescript/components/object-declaration.cjs +76 -44
- package/dist/typescript/components/object-declaration.mjs +76 -44
- package/dist/typescript/components/object-declaration.mjs.map +1 -1
- package/dist/typescript/components/property-name.cjs +3 -3
- package/dist/typescript/components/property-name.mjs +3 -3
- package/dist/typescript/components/property-name.mjs.map +1 -1
- package/dist/typescript/components/record-expression.mjs.map +1 -1
- package/dist/typescript/components/tsdoc-reflection.cjs +225 -104
- package/dist/typescript/components/tsdoc-reflection.mjs +225 -104
- package/dist/typescript/components/tsdoc-reflection.mjs.map +1 -1
- package/dist/typescript/components/tsdoc.cjs +255 -160
- package/dist/typescript/components/tsdoc.mjs +255 -160
- package/dist/typescript/components/tsdoc.mjs.map +1 -1
- package/dist/typescript/components/type-declaration.cjs +20 -15
- package/dist/typescript/components/type-declaration.mjs +20 -15
- package/dist/typescript/components/type-declaration.mjs.map +1 -1
- package/dist/typescript/components/type-parameters.cjs +55 -29
- package/dist/typescript/components/type-parameters.mjs +55 -29
- package/dist/typescript/components/type-parameters.mjs.map +1 -1
- package/dist/typescript/components/typescript-file.cjs +145 -80
- package/dist/typescript/components/typescript-file.mjs +145 -80
- package/dist/typescript/components/typescript-file.mjs.map +1 -1
- package/dist/typescript/contexts/lexical-scope.cjs +5 -3
- package/dist/typescript/contexts/lexical-scope.mjs +5 -3
- package/dist/typescript/contexts/lexical-scope.mjs.map +1 -1
- package/dist/typescript/contexts/member-scope.cjs +5 -3
- package/dist/typescript/contexts/member-scope.mjs +5 -3
- package/dist/typescript/contexts/member-scope.mjs.map +1 -1
- package/dist/yaml/components/yaml-file.cjs +92 -47
- package/dist/yaml/components/yaml-file.mjs +92 -47
- package/dist/yaml/components/yaml-file.mjs.map +1 -1
- package/package.json +16 -17
|
@@ -4,8 +4,8 @@ const require_core_contexts_context = require('../../core/contexts/context.cjs')
|
|
|
4
4
|
const require_core_components_single_line_comment = require('../../core/components/single-line-comment.cjs');
|
|
5
5
|
const require_core_components_source_file = require('../../core/components/source-file.cjs');
|
|
6
6
|
const require_core_helpers_code = require('../../core/helpers/code.cjs');
|
|
7
|
-
let _alloy_js_core = require("@alloy-js/core");
|
|
8
7
|
let _alloy_js_core_jsx_runtime = require("@alloy-js/core/jsx-runtime");
|
|
8
|
+
let _alloy_js_core = require("@alloy-js/core");
|
|
9
9
|
let _stryke_path_append = require("@stryke/path/append");
|
|
10
10
|
let _stryke_string_format_title_case = require("@stryke/string-format/title-case");
|
|
11
11
|
let _stryke_helpers_get_unique = require("@stryke/helpers/get-unique");
|
|
@@ -42,25 +42,32 @@ function TypescriptFile(props) {
|
|
|
42
42
|
if (pkg) if ((0, _stryke_type_checks_is_boolean.isBoolean)(props.export)) pkg.scope.addExport(modulePath, scope);
|
|
43
43
|
else pkg.scope.addExport(props.export, scope);
|
|
44
44
|
}
|
|
45
|
-
return
|
|
45
|
+
return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.SourceFileContext.Provider, {
|
|
46
46
|
value: { scope },
|
|
47
|
-
children
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
47
|
+
get children() {
|
|
48
|
+
return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Scope, {
|
|
49
|
+
value: scope,
|
|
50
|
+
get children() {
|
|
51
|
+
return (0, _alloy_js_core_jsx_runtime.createComponent)(require_core_components_source_file.SourceFile, (0, _alloy_js_core_jsx_runtime.mergeProps)(rest, {
|
|
52
|
+
path: modulePath,
|
|
53
|
+
get header() {
|
|
54
|
+
return header ?? (0, _alloy_js_core_jsx_runtime.createComponent)(TypescriptFileHeader, {
|
|
55
|
+
hashbang,
|
|
56
|
+
get children() {
|
|
57
|
+
return (0, _alloy_js_core_jsx_runtime.createComponent)(TypescriptFileHeaderImports, {
|
|
58
|
+
imports,
|
|
59
|
+
builtinImports,
|
|
60
|
+
scope
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
},
|
|
65
|
+
filetype: tsx ? "tsx" : "typescript",
|
|
66
|
+
children
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
64
71
|
});
|
|
65
72
|
}
|
|
66
73
|
/**
|
|
@@ -72,47 +79,79 @@ function TypescriptFile(props) {
|
|
|
72
79
|
function TypescriptFileHeader(props) {
|
|
73
80
|
const { header, hashbang, disableEslint = true, disableBiome = true, disablePrettier = false, children } = props;
|
|
74
81
|
const context = require_core_contexts_context.usePowerlinesSafe();
|
|
75
|
-
return
|
|
76
|
-
|
|
77
|
-
when
|
|
78
|
-
|
|
82
|
+
return [
|
|
83
|
+
(0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
|
|
84
|
+
get when() {
|
|
85
|
+
return Boolean(hashbang);
|
|
86
|
+
},
|
|
87
|
+
get children() {
|
|
88
|
+
return [(0, _alloy_js_core_jsx_runtime.memo)(() => hashbang === true ? require_core_helpers_code.code`#!/usr/bin/env ${context?.config.mode === "development" ? "-S NODE_OPTIONS=--enable-source-maps" : ""} node` : hashbang), (0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})];
|
|
89
|
+
}
|
|
79
90
|
}),
|
|
80
|
-
|
|
81
|
-
when
|
|
82
|
-
|
|
91
|
+
(0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
|
|
92
|
+
get when() {
|
|
93
|
+
return Boolean(header);
|
|
94
|
+
},
|
|
95
|
+
get children() {
|
|
96
|
+
return [header, (0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})];
|
|
97
|
+
}
|
|
83
98
|
}),
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
when
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
99
|
+
(0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
100
|
+
(0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
|
|
101
|
+
get when() {
|
|
102
|
+
return Boolean(disableEslint);
|
|
103
|
+
},
|
|
104
|
+
get children() {
|
|
105
|
+
return [(0, _alloy_js_core_jsx_runtime.createComponent)(require_core_components_single_line_comment.SingleLineComment, {
|
|
106
|
+
variant: "slash-star",
|
|
107
|
+
children: "eslint-disable"
|
|
108
|
+
}), (0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})];
|
|
109
|
+
}
|
|
91
110
|
}),
|
|
92
|
-
|
|
93
|
-
when
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
111
|
+
(0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
|
|
112
|
+
get when() {
|
|
113
|
+
return Boolean(disablePrettier);
|
|
114
|
+
},
|
|
115
|
+
get children() {
|
|
116
|
+
return [(0, _alloy_js_core_jsx_runtime.createComponent)(require_core_components_single_line_comment.SingleLineComment, {
|
|
117
|
+
variant: "slash-star",
|
|
118
|
+
children: "prettier-ignore"
|
|
119
|
+
}), (0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})];
|
|
120
|
+
}
|
|
98
121
|
}),
|
|
99
|
-
|
|
100
|
-
when
|
|
101
|
-
|
|
122
|
+
(0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
|
|
123
|
+
get when() {
|
|
124
|
+
return Boolean(disableBiome);
|
|
125
|
+
},
|
|
126
|
+
get children() {
|
|
127
|
+
return [(0, _alloy_js_core_jsx_runtime.createComponent)(require_core_components_single_line_comment.SingleLineComment, { children: "biome-ignore lint: disable" }), (0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})];
|
|
128
|
+
}
|
|
102
129
|
}),
|
|
103
|
-
|
|
104
|
-
when
|
|
105
|
-
|
|
130
|
+
(0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
|
|
131
|
+
get when() {
|
|
132
|
+
return Boolean(disableEslint) || Boolean(disablePrettier) || Boolean(disableBiome);
|
|
133
|
+
},
|
|
134
|
+
get children() {
|
|
135
|
+
return (0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {});
|
|
136
|
+
}
|
|
106
137
|
}),
|
|
107
|
-
|
|
108
|
-
when
|
|
109
|
-
|
|
138
|
+
(0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
|
|
139
|
+
get when() {
|
|
140
|
+
return Boolean(children);
|
|
141
|
+
},
|
|
142
|
+
get children() {
|
|
143
|
+
return [children, (0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})];
|
|
144
|
+
}
|
|
110
145
|
}),
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
146
|
+
(0, _alloy_js_core_jsx_runtime.createComponent)(require_core_components_single_line_comment.SingleLineComment, { get children() {
|
|
147
|
+
return `Generated by ${(0, _stryke_string_format_title_case.titleCase)(context?.config?.framework) || "Powerlines"}`;
|
|
148
|
+
} }),
|
|
149
|
+
(0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
150
|
+
(0, _alloy_js_core_jsx_runtime.createComponent)(require_core_components_single_line_comment.SingleLineComment, { get children() {
|
|
151
|
+
return (0, powerlines_utils.getFileHeaderWarning)(context);
|
|
152
|
+
} }),
|
|
153
|
+
(0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
|
|
154
|
+
];
|
|
116
155
|
}
|
|
117
156
|
/**
|
|
118
157
|
* Renders the header for a Powerlines Typescript source file.
|
|
@@ -131,33 +170,59 @@ function TypescriptFileHeaderImports(props) {
|
|
|
131
170
|
const builtinImports = (0, _alloy_js_core.computed)(() => {
|
|
132
171
|
return Object.fromEntries(Object.entries(builtinImportsProps ?? {}).map(([module, importItem]) => [module, Array.isArray(importItem) ? (0, _stryke_helpers_get_unique.getUniqueBy)(importItem, (i) => (0, _stryke_type_checks_is_string.isString)(i) ? i : i.alias || i.name) : importItem]));
|
|
133
172
|
});
|
|
134
|
-
return
|
|
135
|
-
when
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
173
|
+
return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
|
|
174
|
+
get when() {
|
|
175
|
+
return scope.importedModules.size > 0 || !!imports.value && Object.keys(imports.value).length > 0 || !!builtinImports.value && Object.keys(builtinImports.value).length > 0;
|
|
176
|
+
},
|
|
177
|
+
get children() {
|
|
178
|
+
return [
|
|
179
|
+
(0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
|
|
180
|
+
get when() {
|
|
181
|
+
return (0, _alloy_js_core_jsx_runtime.memo)(() => !!!!imports.value)() && Object.keys(imports.value).length > 0;
|
|
182
|
+
},
|
|
183
|
+
get children() {
|
|
184
|
+
return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.For, {
|
|
185
|
+
get each() {
|
|
186
|
+
return Object.entries(imports.value ?? {});
|
|
187
|
+
},
|
|
188
|
+
hardline: true,
|
|
189
|
+
get ender() {
|
|
190
|
+
return (0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {});
|
|
191
|
+
},
|
|
192
|
+
children: ([module, importItem]) => require_core_helpers_code.code`import ${importItem === null ? "" : (0, _stryke_type_checks_is_string.isString)(importItem) ? importItem : `${importItem.filter((i) => !(0, _stryke_type_checks_is_string.isString)(i) && i.default).map((i) => i.alias ? i.alias : i.name).join(", ") + (importItem.filter((i) => !(0, _stryke_type_checks_is_string.isString)(i) && i.default).length > 0 && importItem.filter((i) => (0, _stryke_type_checks_is_string.isString)(i) || !i.default).length > 0 ? ", " : "") + (importItem.filter((i) => (0, _stryke_type_checks_is_string.isString)(i) || !i.default).length > 0 ? `{ ${importItem.filter((i) => (0, _stryke_type_checks_is_string.isString)(i) || !i.default).map((i) => (0, _stryke_type_checks_is_string.isString)(i) ? i : i.alias ? `${i.name} as ${i.alias}` : i.name).join(", ")} }` : "")}`} from "${module}";`
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
}),
|
|
196
|
+
(0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
|
|
197
|
+
get when() {
|
|
198
|
+
return (0, _alloy_js_core_jsx_runtime.memo)(() => !!builtinImports.value)() && Object.keys(builtinImports.value).length > 0;
|
|
199
|
+
},
|
|
200
|
+
get children() {
|
|
201
|
+
return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.For, {
|
|
202
|
+
get each() {
|
|
203
|
+
return Object.entries(builtinImports.value ?? {});
|
|
204
|
+
},
|
|
205
|
+
hardline: true,
|
|
206
|
+
get ender() {
|
|
207
|
+
return (0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {});
|
|
208
|
+
},
|
|
209
|
+
children: ([module, importItem]) => require_core_helpers_code.code`import ${importItem === null ? "" : (0, _stryke_type_checks_is_string.isString)(importItem) ? importItem : `${importItem.filter((i) => !(0, _stryke_type_checks_is_string.isString)(i) && i.default).map((i) => i.alias ? i.alias : i.name).join(", ") + (importItem.filter((i) => !(0, _stryke_type_checks_is_string.isString)(i) && i.default).length > 0 && importItem.filter((i) => (0, _stryke_type_checks_is_string.isString)(i) || !i.default).length > 0 ? ", " : "") + (importItem.filter((i) => (0, _stryke_type_checks_is_string.isString)(i) || !i.default).length > 0 ? `{ ${importItem.filter((i) => (0, _stryke_type_checks_is_string.isString)(i) || !i.default).map((i) => (0, _stryke_type_checks_is_string.isString)(i) ? i : i.alias ? `${i.name} as ${i.alias}` : i.name).join(", ")} }` : "")}`} from "${module.includes(":") ? module : `${context?.config?.framework || "powerlines"}:${module}`}";`
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
}),
|
|
213
|
+
(0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
|
|
214
|
+
get when() {
|
|
215
|
+
return scope.importedModules.size > 0;
|
|
216
|
+
},
|
|
217
|
+
get children() {
|
|
218
|
+
return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.ImportStatements, { get records() {
|
|
219
|
+
return scope.importedModules;
|
|
220
|
+
} });
|
|
221
|
+
}
|
|
222
|
+
}),
|
|
223
|
+
(0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
|
|
224
|
+
];
|
|
225
|
+
}
|
|
161
226
|
});
|
|
162
227
|
}
|
|
163
228
|
|
|
@@ -2,8 +2,8 @@ import { usePowerlinesSafe } from "../../core/contexts/context.mjs";
|
|
|
2
2
|
import { SingleLineComment } from "../../core/components/single-line-comment.mjs";
|
|
3
3
|
import { SourceFile } from "../../core/components/source-file.mjs";
|
|
4
4
|
import { code as code$1 } from "../../core/helpers/code.mjs";
|
|
5
|
+
import { createComponent, createIntrinsic, memo, mergeProps } from "@alloy-js/core/jsx-runtime";
|
|
5
6
|
import { For, Scope, Show, SourceDirectoryContext, computed, splitProps, useContext, useScope } from "@alloy-js/core";
|
|
6
|
-
import { Fragment, jsx, jsxs } from "@alloy-js/core/jsx-runtime";
|
|
7
7
|
import { appendPath } from "@stryke/path/append";
|
|
8
8
|
import { titleCase } from "@stryke/string-format/title-case";
|
|
9
9
|
import { getUniqueBy } from "@stryke/helpers/get-unique";
|
|
@@ -40,25 +40,32 @@ function TypescriptFile(props) {
|
|
|
40
40
|
if (pkg) if (isBoolean(props.export)) pkg.scope.addExport(modulePath, scope);
|
|
41
41
|
else pkg.scope.addExport(props.export, scope);
|
|
42
42
|
}
|
|
43
|
-
return
|
|
43
|
+
return createComponent(SourceFileContext$1.Provider, {
|
|
44
44
|
value: { scope },
|
|
45
|
-
children
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
45
|
+
get children() {
|
|
46
|
+
return createComponent(Scope, {
|
|
47
|
+
value: scope,
|
|
48
|
+
get children() {
|
|
49
|
+
return createComponent(SourceFile, mergeProps(rest, {
|
|
50
|
+
path: modulePath,
|
|
51
|
+
get header() {
|
|
52
|
+
return header ?? createComponent(TypescriptFileHeader, {
|
|
53
|
+
hashbang,
|
|
54
|
+
get children() {
|
|
55
|
+
return createComponent(TypescriptFileHeaderImports, {
|
|
56
|
+
imports,
|
|
57
|
+
builtinImports,
|
|
58
|
+
scope
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
},
|
|
63
|
+
filetype: tsx ? "tsx" : "typescript",
|
|
64
|
+
children
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
62
69
|
});
|
|
63
70
|
}
|
|
64
71
|
/**
|
|
@@ -70,47 +77,79 @@ function TypescriptFile(props) {
|
|
|
70
77
|
function TypescriptFileHeader(props) {
|
|
71
78
|
const { header, hashbang, disableEslint = true, disableBiome = true, disablePrettier = false, children } = props;
|
|
72
79
|
const context = usePowerlinesSafe();
|
|
73
|
-
return
|
|
74
|
-
|
|
75
|
-
when
|
|
76
|
-
|
|
80
|
+
return [
|
|
81
|
+
createComponent(Show, {
|
|
82
|
+
get when() {
|
|
83
|
+
return Boolean(hashbang);
|
|
84
|
+
},
|
|
85
|
+
get children() {
|
|
86
|
+
return [memo(() => hashbang === true ? code$1`#!/usr/bin/env ${context?.config.mode === "development" ? "-S NODE_OPTIONS=--enable-source-maps" : ""} node` : hashbang), createIntrinsic("hbr", {})];
|
|
87
|
+
}
|
|
77
88
|
}),
|
|
78
|
-
|
|
79
|
-
when
|
|
80
|
-
|
|
89
|
+
createComponent(Show, {
|
|
90
|
+
get when() {
|
|
91
|
+
return Boolean(header);
|
|
92
|
+
},
|
|
93
|
+
get children() {
|
|
94
|
+
return [header, createIntrinsic("hbr", {})];
|
|
95
|
+
}
|
|
81
96
|
}),
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
when
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
97
|
+
createIntrinsic("hbr", {}),
|
|
98
|
+
createComponent(Show, {
|
|
99
|
+
get when() {
|
|
100
|
+
return Boolean(disableEslint);
|
|
101
|
+
},
|
|
102
|
+
get children() {
|
|
103
|
+
return [createComponent(SingleLineComment, {
|
|
104
|
+
variant: "slash-star",
|
|
105
|
+
children: "eslint-disable"
|
|
106
|
+
}), createIntrinsic("hbr", {})];
|
|
107
|
+
}
|
|
89
108
|
}),
|
|
90
|
-
|
|
91
|
-
when
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
109
|
+
createComponent(Show, {
|
|
110
|
+
get when() {
|
|
111
|
+
return Boolean(disablePrettier);
|
|
112
|
+
},
|
|
113
|
+
get children() {
|
|
114
|
+
return [createComponent(SingleLineComment, {
|
|
115
|
+
variant: "slash-star",
|
|
116
|
+
children: "prettier-ignore"
|
|
117
|
+
}), createIntrinsic("hbr", {})];
|
|
118
|
+
}
|
|
96
119
|
}),
|
|
97
|
-
|
|
98
|
-
when
|
|
99
|
-
|
|
120
|
+
createComponent(Show, {
|
|
121
|
+
get when() {
|
|
122
|
+
return Boolean(disableBiome);
|
|
123
|
+
},
|
|
124
|
+
get children() {
|
|
125
|
+
return [createComponent(SingleLineComment, { children: "biome-ignore lint: disable" }), createIntrinsic("hbr", {})];
|
|
126
|
+
}
|
|
100
127
|
}),
|
|
101
|
-
|
|
102
|
-
when
|
|
103
|
-
|
|
128
|
+
createComponent(Show, {
|
|
129
|
+
get when() {
|
|
130
|
+
return Boolean(disableEslint) || Boolean(disablePrettier) || Boolean(disableBiome);
|
|
131
|
+
},
|
|
132
|
+
get children() {
|
|
133
|
+
return createIntrinsic("hbr", {});
|
|
134
|
+
}
|
|
104
135
|
}),
|
|
105
|
-
|
|
106
|
-
when
|
|
107
|
-
|
|
136
|
+
createComponent(Show, {
|
|
137
|
+
get when() {
|
|
138
|
+
return Boolean(children);
|
|
139
|
+
},
|
|
140
|
+
get children() {
|
|
141
|
+
return [children, createIntrinsic("hbr", {})];
|
|
142
|
+
}
|
|
108
143
|
}),
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
144
|
+
createComponent(SingleLineComment, { get children() {
|
|
145
|
+
return `Generated by ${titleCase(context?.config?.framework) || "Powerlines"}`;
|
|
146
|
+
} }),
|
|
147
|
+
createIntrinsic("hbr", {}),
|
|
148
|
+
createComponent(SingleLineComment, { get children() {
|
|
149
|
+
return getFileHeaderWarning(context);
|
|
150
|
+
} }),
|
|
151
|
+
createIntrinsic("hbr", {})
|
|
152
|
+
];
|
|
114
153
|
}
|
|
115
154
|
/**
|
|
116
155
|
* Renders the header for a Powerlines Typescript source file.
|
|
@@ -129,33 +168,59 @@ function TypescriptFileHeaderImports(props) {
|
|
|
129
168
|
const builtinImports = computed(() => {
|
|
130
169
|
return Object.fromEntries(Object.entries(builtinImportsProps ?? {}).map(([module, importItem]) => [module, Array.isArray(importItem) ? getUniqueBy(importItem, (i) => isString(i) ? i : i.alias || i.name) : importItem]));
|
|
131
170
|
});
|
|
132
|
-
return
|
|
133
|
-
when
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
171
|
+
return createComponent(Show, {
|
|
172
|
+
get when() {
|
|
173
|
+
return scope.importedModules.size > 0 || !!imports.value && Object.keys(imports.value).length > 0 || !!builtinImports.value && Object.keys(builtinImports.value).length > 0;
|
|
174
|
+
},
|
|
175
|
+
get children() {
|
|
176
|
+
return [
|
|
177
|
+
createComponent(Show, {
|
|
178
|
+
get when() {
|
|
179
|
+
return memo(() => !!!!imports.value)() && Object.keys(imports.value).length > 0;
|
|
180
|
+
},
|
|
181
|
+
get children() {
|
|
182
|
+
return createComponent(For, {
|
|
183
|
+
get each() {
|
|
184
|
+
return Object.entries(imports.value ?? {});
|
|
185
|
+
},
|
|
186
|
+
hardline: true,
|
|
187
|
+
get ender() {
|
|
188
|
+
return createIntrinsic("hbr", {});
|
|
189
|
+
},
|
|
190
|
+
children: ([module, importItem]) => code$1`import ${importItem === null ? "" : isString(importItem) ? importItem : `${importItem.filter((i) => !isString(i) && i.default).map((i) => i.alias ? i.alias : i.name).join(", ") + (importItem.filter((i) => !isString(i) && i.default).length > 0 && importItem.filter((i) => isString(i) || !i.default).length > 0 ? ", " : "") + (importItem.filter((i) => isString(i) || !i.default).length > 0 ? `{ ${importItem.filter((i) => isString(i) || !i.default).map((i) => isString(i) ? i : i.alias ? `${i.name} as ${i.alias}` : i.name).join(", ")} }` : "")}`} from "${module}";`
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
}),
|
|
194
|
+
createComponent(Show, {
|
|
195
|
+
get when() {
|
|
196
|
+
return memo(() => !!builtinImports.value)() && Object.keys(builtinImports.value).length > 0;
|
|
197
|
+
},
|
|
198
|
+
get children() {
|
|
199
|
+
return createComponent(For, {
|
|
200
|
+
get each() {
|
|
201
|
+
return Object.entries(builtinImports.value ?? {});
|
|
202
|
+
},
|
|
203
|
+
hardline: true,
|
|
204
|
+
get ender() {
|
|
205
|
+
return createIntrinsic("hbr", {});
|
|
206
|
+
},
|
|
207
|
+
children: ([module, importItem]) => code$1`import ${importItem === null ? "" : isString(importItem) ? importItem : `${importItem.filter((i) => !isString(i) && i.default).map((i) => i.alias ? i.alias : i.name).join(", ") + (importItem.filter((i) => !isString(i) && i.default).length > 0 && importItem.filter((i) => isString(i) || !i.default).length > 0 ? ", " : "") + (importItem.filter((i) => isString(i) || !i.default).length > 0 ? `{ ${importItem.filter((i) => isString(i) || !i.default).map((i) => isString(i) ? i : i.alias ? `${i.name} as ${i.alias}` : i.name).join(", ")} }` : "")}`} from "${module.includes(":") ? module : `${context?.config?.framework || "powerlines"}:${module}`}";`
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}),
|
|
211
|
+
createComponent(Show, {
|
|
212
|
+
get when() {
|
|
213
|
+
return scope.importedModules.size > 0;
|
|
214
|
+
},
|
|
215
|
+
get children() {
|
|
216
|
+
return createComponent(ImportStatements, { get records() {
|
|
217
|
+
return scope.importedModules;
|
|
218
|
+
} });
|
|
219
|
+
}
|
|
220
|
+
}),
|
|
221
|
+
createIntrinsic("hbr", {})
|
|
222
|
+
];
|
|
223
|
+
}
|
|
159
224
|
});
|
|
160
225
|
}
|
|
161
226
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript-file.mjs","names":["SourceFileContext"],"sources":["../../../src/typescript/components/typescript-file.tsx"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport type { Children } from \"@alloy-js/core\";\nimport {\n computed,\n For,\n Scope,\n Show,\n SourceDirectoryContext,\n splitProps,\n useContext,\n useScope\n} from \"@alloy-js/core\";\nimport {\n getSourceDirectoryData,\n ImportStatements,\n PackageContext,\n SourceFileContext,\n TSModuleScope,\n useSourceFile\n} from \"@alloy-js/typescript\";\nimport { getUniqueBy } from \"@stryke/helpers/get-unique\";\nimport { appendPath } from \"@stryke/path/append\";\nimport { titleCase } from \"@stryke/string-format/title-case\";\nimport { isBoolean } from \"@stryke/type-checks/is-boolean\";\nimport { isString } from \"@stryke/type-checks/is-string\";\nimport { getFileHeaderWarning } from \"powerlines/utils\";\nimport { SingleLineComment } from \"../../core/components/single-line-comment\";\nimport { SourceFile, SourceFileProps } from \"../../core/components/source-file\";\nimport { usePowerlinesSafe } from \"../../core/contexts/context\";\nimport { code } from \"../../core/helpers/code\";\nimport {\n ComponentProps,\n SourceFileHeaderProps,\n TypescriptFileImportItem,\n TypescriptFileImports\n} from \"../../types/components\";\n\nexport type TypescriptFileProps = Omit<SourceFileProps, \"filetype\"> &\n ComponentProps & {\n hashbang?: Children | true;\n header?: Children;\n imports?: TypescriptFileImports;\n builtinImports?: TypescriptFileImports;\n export?: boolean | string;\n tsx?: boolean;\n };\n\n/**\n * A base component representing a Powerlines generated Typescript source file.\n *\n * @param props - The properties for the source file.\n * @returns The rendered source file component.\n */\nexport function TypescriptFile(props: TypescriptFileProps) {\n const [\n { children, path, imports, builtinImports, tsx, header, hashbang },\n rest\n ] = splitProps(props, [\n \"children\",\n \"path\",\n \"imports\",\n \"builtinImports\",\n \"tsx\",\n \"header\",\n \"hashbang\"\n ]);\n\n const directoryContext = useContext(SourceDirectoryContext)!;\n const sdData = getSourceDirectoryData(directoryContext);\n\n const modulePath = appendPath(path, directoryContext.path);\n const scope = new TSModuleScope(modulePath, useScope());\n sdData.modules.add(scope);\n\n const pkg = useContext(PackageContext);\n if (pkg) {\n pkg.scope.addModule(scope);\n }\n\n if (props.export) {\n if (pkg) {\n if (isBoolean(props.export)) {\n pkg.scope.addExport(modulePath, scope);\n } else {\n pkg.scope.addExport(props.export, scope);\n }\n }\n }\n\n return (\n <SourceFileContext.Provider\n value={{\n scope\n }}>\n <Scope value={scope}>\n <SourceFile\n {...rest}\n path={modulePath}\n header={\n header ?? (\n <TypescriptFileHeader hashbang={hashbang}>\n <TypescriptFileHeaderImports\n imports={imports}\n builtinImports={builtinImports}\n scope={scope}\n />\n </TypescriptFileHeader>\n )\n }\n filetype={tsx ? \"tsx\" : \"typescript\"}>\n {children}\n </SourceFile>\n </Scope>\n </SourceFileContext.Provider>\n );\n}\n\nexport interface TypescriptFileHeaderProps extends SourceFileHeaderProps {\n header?: Children;\n hashbang?: Children | true;\n}\n\n/**\n * Renders the header for a Powerlines Typescript source file.\n *\n * @param props - The properties for the source file header.\n * @returns The rendered source file header.\n */\nexport function TypescriptFileHeader(props: TypescriptFileHeaderProps) {\n const {\n header,\n hashbang,\n disableEslint = true,\n disableBiome = true,\n disablePrettier = false,\n children\n } = props;\n\n const context = usePowerlinesSafe();\n\n return (\n <>\n <Show when={Boolean(hashbang)}>\n {hashbang === true\n ? code`#!/usr/bin/env ${\n context?.config.mode === \"development\"\n ? \"-S NODE_OPTIONS=--enable-source-maps\"\n : \"\"\n } node`\n : hashbang}\n <hbr />\n </Show>\n <Show when={Boolean(header)}>\n {header}\n <hbr />\n </Show>\n <hbr />\n <Show when={Boolean(disableEslint)}>\n <SingleLineComment variant=\"slash-star\">\n {\"eslint-disable\"}\n </SingleLineComment>\n <hbr />\n </Show>\n <Show when={Boolean(disablePrettier)}>\n <SingleLineComment variant=\"slash-star\">\n {\"prettier-ignore\"}\n </SingleLineComment>\n <hbr />\n </Show>\n <Show when={Boolean(disableBiome)}>\n <SingleLineComment>{\"biome-ignore lint: disable\"}</SingleLineComment>\n <hbr />\n </Show>\n <Show\n when={\n Boolean(disableEslint) ||\n Boolean(disablePrettier) ||\n Boolean(disableBiome)\n }>\n <hbr />\n </Show>\n <Show when={Boolean(children)}>\n {children}\n <hbr />\n </Show>\n <SingleLineComment>{`Generated by ${\n titleCase(context?.config?.framework) || \"Powerlines\"\n }`}</SingleLineComment>\n <hbr />\n <SingleLineComment>{getFileHeaderWarning(context!)}</SingleLineComment>\n <hbr />\n </>\n );\n}\n\nexport interface TypescriptFileHeaderImportsProps extends SourceFileHeaderProps {\n imports?: TypescriptFileImports;\n builtinImports?: TypescriptFileImports;\n scope?: TSModuleScope;\n}\n\n/**\n * Renders the header for a Powerlines Typescript source file.\n *\n * @param props - The properties for the source file header.\n * @returns The rendered source file header.\n */\nexport function TypescriptFileHeaderImports(\n props: TypescriptFileHeaderImportsProps\n) {\n const { imports: importProps, builtinImports: builtinImportsProps } = props;\n\n const context = usePowerlinesSafe();\n const sourceFile = useSourceFile();\n\n const scope = props.scope ?? sourceFile.scope;\n\n const imports = computed(() => {\n return Object.fromEntries(\n Object.entries(importProps ?? {}).map(([module, importItem]) => [\n module,\n Array.isArray(importItem)\n ? getUniqueBy(importItem, i => (isString(i) ? i : i.alias || i.name))\n : importItem\n ])\n );\n });\n const builtinImports = computed(() => {\n return Object.fromEntries(\n Object.entries(builtinImportsProps ?? {}).map(([module, importItem]) => [\n module,\n Array.isArray(importItem)\n ? getUniqueBy(importItem, i => (isString(i) ? i : i.alias || i.name))\n : importItem\n ])\n );\n });\n\n return (\n <Show\n when={\n scope.importedModules.size > 0 ||\n (!!imports.value && Object.keys(imports.value).length > 0) ||\n (!!builtinImports.value && Object.keys(builtinImports.value).length > 0)\n }>\n <Show when={!!imports.value && Object.keys(imports.value).length > 0}>\n <For\n each={Object.entries(imports.value ?? {})}\n hardline\n ender={<hbr />}>\n {([module, importItem]) =>\n code`import ${\n importItem === null\n ? \"\"\n : isString(importItem)\n ? importItem\n : `${\n (\n importItem.filter(\n i => !isString(i) && i.default\n ) as TypescriptFileImportItem[]\n )\n .map(i => (i.alias ? i.alias : i.name))\n .join(\", \") +\n (importItem.filter(i => !isString(i) && i.default)\n .length > 0 &&\n importItem.filter(i => isString(i) || !i.default).length >\n 0\n ? \", \"\n : \"\") +\n (importItem.filter(i => isString(i) || !i.default)\n .length > 0\n ? `{ ${importItem\n .filter(i => isString(i) || !i.default)\n .map(i =>\n isString(i)\n ? i\n : i.alias\n ? `${i.name} as ${i.alias}`\n : i.name\n )\n .join(\", \")} }`\n : \"\")\n }`\n } from \"${module}\";`\n }\n </For>\n </Show>\n <Show\n when={\n builtinImports.value && Object.keys(builtinImports.value).length > 0\n }>\n <For\n each={Object.entries(\n (builtinImports.value ?? {}) as Record<\n string,\n null | Array<TypescriptFileImportItem | string>\n >\n )}\n hardline\n ender={<hbr />}>\n {([module, importItem]) =>\n code`import ${\n importItem === null\n ? \"\"\n : isString(importItem)\n ? importItem\n : `${\n (\n importItem.filter(\n i => !isString(i) && i.default\n ) as TypescriptFileImportItem[]\n )\n .map(i => (i.alias ? i.alias : i.name))\n .join(\", \") +\n (importItem.filter(i => !isString(i) && i.default)\n .length > 0 &&\n importItem.filter(i => isString(i) || !i.default).length >\n 0\n ? \", \"\n : \"\") +\n (importItem.filter(i => isString(i) || !i.default)\n .length > 0\n ? `{ ${importItem\n .filter(i => isString(i) || !i.default)\n .map(i =>\n isString(i)\n ? i\n : i.alias\n ? `${i.name} as ${i.alias}`\n : i.name\n )\n .join(\", \")} }`\n : \"\")\n }`\n } from \"${\n module.includes(\":\")\n ? module\n : `${context?.config?.framework || \"powerlines\"}:${module}`\n }\";`\n }\n </For>\n </Show>\n <Show when={scope.importedModules.size > 0}>\n <ImportStatements records={scope.importedModules} />\n </Show>\n <hbr />\n </Show>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"typescript-file.mjs","names":[],"sources":["../../../src/typescript/components/typescript-file.tsx"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport type { Children } from \"@alloy-js/core\";\nimport {\n computed,\n For,\n Scope,\n Show,\n SourceDirectoryContext,\n splitProps,\n useContext,\n useScope\n} from \"@alloy-js/core\";\nimport {\n getSourceDirectoryData,\n ImportStatements,\n PackageContext,\n SourceFileContext,\n TSModuleScope,\n useSourceFile\n} from \"@alloy-js/typescript\";\nimport { getUniqueBy } from \"@stryke/helpers/get-unique\";\nimport { appendPath } from \"@stryke/path/append\";\nimport { titleCase } from \"@stryke/string-format/title-case\";\nimport { isBoolean } from \"@stryke/type-checks/is-boolean\";\nimport { isString } from \"@stryke/type-checks/is-string\";\nimport { getFileHeaderWarning } from \"powerlines/utils\";\nimport { SingleLineComment } from \"../../core/components/single-line-comment\";\nimport { SourceFile, SourceFileProps } from \"../../core/components/source-file\";\nimport { usePowerlinesSafe } from \"../../core/contexts/context\";\nimport { code } from \"../../core/helpers/code\";\nimport {\n ComponentProps,\n SourceFileHeaderProps,\n TypescriptFileImportItem,\n TypescriptFileImports\n} from \"../../types/components\";\n\nexport type TypescriptFileProps = Omit<SourceFileProps, \"filetype\"> &\n ComponentProps & {\n hashbang?: Children | true;\n header?: Children;\n imports?: TypescriptFileImports;\n builtinImports?: TypescriptFileImports;\n export?: boolean | string;\n tsx?: boolean;\n };\n\n/**\n * A base component representing a Powerlines generated Typescript source file.\n *\n * @param props - The properties for the source file.\n * @returns The rendered source file component.\n */\nexport function TypescriptFile(props: TypescriptFileProps) {\n const [\n { children, path, imports, builtinImports, tsx, header, hashbang },\n rest\n ] = splitProps(props, [\n \"children\",\n \"path\",\n \"imports\",\n \"builtinImports\",\n \"tsx\",\n \"header\",\n \"hashbang\"\n ]);\n\n const directoryContext = useContext(SourceDirectoryContext)!;\n const sdData = getSourceDirectoryData(directoryContext);\n\n const modulePath = appendPath(path, directoryContext.path);\n const scope = new TSModuleScope(modulePath, useScope());\n sdData.modules.add(scope);\n\n const pkg = useContext(PackageContext);\n if (pkg) {\n pkg.scope.addModule(scope);\n }\n\n if (props.export) {\n if (pkg) {\n if (isBoolean(props.export)) {\n pkg.scope.addExport(modulePath, scope);\n } else {\n pkg.scope.addExport(props.export, scope);\n }\n }\n }\n\n return (\n <SourceFileContext.Provider\n value={{\n scope\n }}>\n <Scope value={scope}>\n <SourceFile\n {...rest}\n path={modulePath}\n header={\n header ?? (\n <TypescriptFileHeader hashbang={hashbang}>\n <TypescriptFileHeaderImports\n imports={imports}\n builtinImports={builtinImports}\n scope={scope}\n />\n </TypescriptFileHeader>\n )\n }\n filetype={tsx ? \"tsx\" : \"typescript\"}>\n {children}\n </SourceFile>\n </Scope>\n </SourceFileContext.Provider>\n );\n}\n\nexport interface TypescriptFileHeaderProps extends SourceFileHeaderProps {\n header?: Children;\n hashbang?: Children | true;\n}\n\n/**\n * Renders the header for a Powerlines Typescript source file.\n *\n * @param props - The properties for the source file header.\n * @returns The rendered source file header.\n */\nexport function TypescriptFileHeader(props: TypescriptFileHeaderProps) {\n const {\n header,\n hashbang,\n disableEslint = true,\n disableBiome = true,\n disablePrettier = false,\n children\n } = props;\n\n const context = usePowerlinesSafe();\n\n return (\n <>\n <Show when={Boolean(hashbang)}>\n {hashbang === true\n ? code`#!/usr/bin/env ${\n context?.config.mode === \"development\"\n ? \"-S NODE_OPTIONS=--enable-source-maps\"\n : \"\"\n } node`\n : hashbang}\n <hbr />\n </Show>\n <Show when={Boolean(header)}>\n {header}\n <hbr />\n </Show>\n <hbr />\n <Show when={Boolean(disableEslint)}>\n <SingleLineComment variant=\"slash-star\">\n {\"eslint-disable\"}\n </SingleLineComment>\n <hbr />\n </Show>\n <Show when={Boolean(disablePrettier)}>\n <SingleLineComment variant=\"slash-star\">\n {\"prettier-ignore\"}\n </SingleLineComment>\n <hbr />\n </Show>\n <Show when={Boolean(disableBiome)}>\n <SingleLineComment>{\"biome-ignore lint: disable\"}</SingleLineComment>\n <hbr />\n </Show>\n <Show\n when={\n Boolean(disableEslint) ||\n Boolean(disablePrettier) ||\n Boolean(disableBiome)\n }>\n <hbr />\n </Show>\n <Show when={Boolean(children)}>\n {children}\n <hbr />\n </Show>\n <SingleLineComment>{`Generated by ${\n titleCase(context?.config?.framework) || \"Powerlines\"\n }`}</SingleLineComment>\n <hbr />\n <SingleLineComment>{getFileHeaderWarning(context!)}</SingleLineComment>\n <hbr />\n </>\n );\n}\n\nexport interface TypescriptFileHeaderImportsProps extends SourceFileHeaderProps {\n imports?: TypescriptFileImports;\n builtinImports?: TypescriptFileImports;\n scope?: TSModuleScope;\n}\n\n/**\n * Renders the header for a Powerlines Typescript source file.\n *\n * @param props - The properties for the source file header.\n * @returns The rendered source file header.\n */\nexport function TypescriptFileHeaderImports(\n props: TypescriptFileHeaderImportsProps\n) {\n const { imports: importProps, builtinImports: builtinImportsProps } = props;\n\n const context = usePowerlinesSafe();\n const sourceFile = useSourceFile();\n\n const scope = props.scope ?? sourceFile.scope;\n\n const imports = computed(() => {\n return Object.fromEntries(\n Object.entries(importProps ?? {}).map(([module, importItem]) => [\n module,\n Array.isArray(importItem)\n ? getUniqueBy(importItem, i => (isString(i) ? i : i.alias || i.name))\n : importItem\n ])\n );\n });\n const builtinImports = computed(() => {\n return Object.fromEntries(\n Object.entries(builtinImportsProps ?? {}).map(([module, importItem]) => [\n module,\n Array.isArray(importItem)\n ? getUniqueBy(importItem, i => (isString(i) ? i : i.alias || i.name))\n : importItem\n ])\n );\n });\n\n return (\n <Show\n when={\n scope.importedModules.size > 0 ||\n (!!imports.value && Object.keys(imports.value).length > 0) ||\n (!!builtinImports.value && Object.keys(builtinImports.value).length > 0)\n }>\n <Show when={!!imports.value && Object.keys(imports.value).length > 0}>\n <For\n each={Object.entries(imports.value ?? {})}\n hardline\n ender={<hbr />}>\n {([module, importItem]) =>\n code`import ${\n importItem === null\n ? \"\"\n : isString(importItem)\n ? importItem\n : `${\n (\n importItem.filter(\n i => !isString(i) && i.default\n ) as TypescriptFileImportItem[]\n )\n .map(i => (i.alias ? i.alias : i.name))\n .join(\", \") +\n (importItem.filter(i => !isString(i) && i.default)\n .length > 0 &&\n importItem.filter(i => isString(i) || !i.default).length >\n 0\n ? \", \"\n : \"\") +\n (importItem.filter(i => isString(i) || !i.default)\n .length > 0\n ? `{ ${importItem\n .filter(i => isString(i) || !i.default)\n .map(i =>\n isString(i)\n ? i\n : i.alias\n ? `${i.name} as ${i.alias}`\n : i.name\n )\n .join(\", \")} }`\n : \"\")\n }`\n } from \"${module}\";`\n }\n </For>\n </Show>\n <Show\n when={\n builtinImports.value && Object.keys(builtinImports.value).length > 0\n }>\n <For\n each={Object.entries(\n (builtinImports.value ?? {}) as Record<\n string,\n null | Array<TypescriptFileImportItem | string>\n >\n )}\n hardline\n ender={<hbr />}>\n {([module, importItem]) =>\n code`import ${\n importItem === null\n ? \"\"\n : isString(importItem)\n ? importItem\n : `${\n (\n importItem.filter(\n i => !isString(i) && i.default\n ) as TypescriptFileImportItem[]\n )\n .map(i => (i.alias ? i.alias : i.name))\n .join(\", \") +\n (importItem.filter(i => !isString(i) && i.default)\n .length > 0 &&\n importItem.filter(i => isString(i) || !i.default).length >\n 0\n ? \", \"\n : \"\") +\n (importItem.filter(i => isString(i) || !i.default)\n .length > 0\n ? `{ ${importItem\n .filter(i => isString(i) || !i.default)\n .map(i =>\n isString(i)\n ? i\n : i.alias\n ? `${i.name} as ${i.alias}`\n : i.name\n )\n .join(\", \")} }`\n : \"\")\n }`\n } from \"${\n module.includes(\":\")\n ? module\n : `${context?.config?.framework || \"powerlines\"}:${module}`\n }\";`\n }\n </For>\n </Show>\n <Show when={scope.importedModules.size > 0}>\n <ImportStatements records={scope.importedModules} />\n </Show>\n <hbr />\n </Show>\n );\n}\n"],"mappings":"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"}
|