@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.
Files changed (80) hide show
  1. package/README.md +1 -1
  2. package/dist/core/components/output.cjs +17 -10
  3. package/dist/core/components/output.mjs +17 -10
  4. package/dist/core/components/output.mjs.map +1 -1
  5. package/dist/core/components/single-line-comment.cjs +6 -4
  6. package/dist/core/components/single-line-comment.mjs +6 -4
  7. package/dist/core/components/single-line-comment.mjs.map +1 -1
  8. package/dist/core/components/source-file.cjs +10 -6
  9. package/dist/core/components/source-file.mjs +10 -6
  10. package/dist/core/components/source-file.mjs.map +1 -1
  11. package/dist/core/components/spacing.cjs +6 -4
  12. package/dist/core/components/spacing.mjs +6 -4
  13. package/dist/core/components/spacing.mjs.map +1 -1
  14. package/dist/index.cjs +13 -18
  15. package/dist/index.d.cts.map +1 -1
  16. package/dist/index.d.mts.map +1 -1
  17. package/dist/index.mjs +12 -17
  18. package/dist/index.mjs.map +1 -1
  19. package/dist/markdown/components/front-matter.cjs +9 -7
  20. package/dist/markdown/components/front-matter.mjs +9 -7
  21. package/dist/markdown/components/front-matter.mjs.map +1 -1
  22. package/dist/markdown/components/markdown-file.cjs +76 -44
  23. package/dist/markdown/components/markdown-file.mjs +76 -44
  24. package/dist/markdown/components/markdown-file.mjs.map +1 -1
  25. package/dist/markdown/components/markdown-table.cjs +49 -28
  26. package/dist/markdown/components/markdown-table.mjs +49 -28
  27. package/dist/markdown/components/markdown-table.mjs.map +1 -1
  28. package/dist/render.cjs +3 -3
  29. package/dist/render.mjs +4 -4
  30. package/dist/render.mjs.map +1 -1
  31. package/dist/typescript/components/builtin-file.cjs +29 -19
  32. package/dist/typescript/components/builtin-file.mjs +30 -20
  33. package/dist/typescript/components/builtin-file.mjs.map +1 -1
  34. package/dist/typescript/components/class-declaration.cjs +165 -100
  35. package/dist/typescript/components/class-declaration.mjs +165 -100
  36. package/dist/typescript/components/class-declaration.mjs.map +1 -1
  37. package/dist/typescript/components/dynamic-import-statement.cjs +2 -6
  38. package/dist/typescript/components/dynamic-import-statement.mjs +2 -6
  39. package/dist/typescript/components/dynamic-import-statement.mjs.map +1 -1
  40. package/dist/typescript/components/entry-file.cjs +9 -6
  41. package/dist/typescript/components/entry-file.mjs +10 -7
  42. package/dist/typescript/components/entry-file.mjs.map +1 -1
  43. package/dist/typescript/components/infrastructure-file.cjs +9 -6
  44. package/dist/typescript/components/infrastructure-file.mjs +10 -7
  45. package/dist/typescript/components/infrastructure-file.mjs.map +1 -1
  46. package/dist/typescript/components/interface-declaration.cjs +121 -70
  47. package/dist/typescript/components/interface-declaration.mjs +121 -70
  48. package/dist/typescript/components/interface-declaration.mjs.map +1 -1
  49. package/dist/typescript/components/object-declaration.cjs +76 -44
  50. package/dist/typescript/components/object-declaration.mjs +76 -44
  51. package/dist/typescript/components/object-declaration.mjs.map +1 -1
  52. package/dist/typescript/components/property-name.cjs +3 -3
  53. package/dist/typescript/components/property-name.mjs +3 -3
  54. package/dist/typescript/components/property-name.mjs.map +1 -1
  55. package/dist/typescript/components/record-expression.mjs.map +1 -1
  56. package/dist/typescript/components/tsdoc-reflection.cjs +225 -104
  57. package/dist/typescript/components/tsdoc-reflection.mjs +225 -104
  58. package/dist/typescript/components/tsdoc-reflection.mjs.map +1 -1
  59. package/dist/typescript/components/tsdoc.cjs +255 -160
  60. package/dist/typescript/components/tsdoc.mjs +255 -160
  61. package/dist/typescript/components/tsdoc.mjs.map +1 -1
  62. package/dist/typescript/components/type-declaration.cjs +20 -15
  63. package/dist/typescript/components/type-declaration.mjs +20 -15
  64. package/dist/typescript/components/type-declaration.mjs.map +1 -1
  65. package/dist/typescript/components/type-parameters.cjs +55 -29
  66. package/dist/typescript/components/type-parameters.mjs +55 -29
  67. package/dist/typescript/components/type-parameters.mjs.map +1 -1
  68. package/dist/typescript/components/typescript-file.cjs +145 -80
  69. package/dist/typescript/components/typescript-file.mjs +145 -80
  70. package/dist/typescript/components/typescript-file.mjs.map +1 -1
  71. package/dist/typescript/contexts/lexical-scope.cjs +5 -3
  72. package/dist/typescript/contexts/lexical-scope.mjs +5 -3
  73. package/dist/typescript/contexts/lexical-scope.mjs.map +1 -1
  74. package/dist/typescript/contexts/member-scope.cjs +5 -3
  75. package/dist/typescript/contexts/member-scope.mjs +5 -3
  76. package/dist/typescript/contexts/member-scope.mjs.map +1 -1
  77. package/dist/yaml/components/yaml-file.cjs +92 -47
  78. package/dist/yaml/components/yaml-file.mjs +92 -47
  79. package/dist/yaml/components/yaml-file.mjs.map +1 -1
  80. 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 /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)(_alloy_js_typescript.SourceFileContext.Provider, {
45
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.SourceFileContext.Provider, {
46
46
  value: { scope },
47
- children: /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)(_alloy_js_core.Scope, {
48
- value: scope,
49
- children: /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)(require_core_components_source_file.SourceFile, {
50
- ...rest,
51
- path: modulePath,
52
- header: header ?? /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)(TypescriptFileHeader, {
53
- hashbang,
54
- children: /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)(TypescriptFileHeaderImports, {
55
- imports,
56
- builtinImports,
57
- scope
58
- })
59
- }),
60
- filetype: tsx ? "tsx" : "typescript",
61
- children
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 /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsxs)(_alloy_js_core_jsx_runtime.Fragment, { children: [
76
- /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsxs)(_alloy_js_core.Show, {
77
- when: Boolean(hashbang),
78
- children: [hashbang === true ? require_core_helpers_code.code`#!/usr/bin/env ${context?.config.mode === "development" ? "-S NODE_OPTIONS=--enable-source-maps" : ""} node` : hashbang, /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)("hbr", {})]
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
- /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsxs)(_alloy_js_core.Show, {
81
- when: Boolean(header),
82
- children: [header, /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)("hbr", {})]
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
- /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)("hbr", {}),
85
- /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsxs)(_alloy_js_core.Show, {
86
- when: Boolean(disableEslint),
87
- children: [/* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)(require_core_components_single_line_comment.SingleLineComment, {
88
- variant: "slash-star",
89
- children: "eslint-disable"
90
- }), /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)("hbr", {})]
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
- /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsxs)(_alloy_js_core.Show, {
93
- when: Boolean(disablePrettier),
94
- children: [/* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)(require_core_components_single_line_comment.SingleLineComment, {
95
- variant: "slash-star",
96
- children: "prettier-ignore"
97
- }), /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)("hbr", {})]
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
- /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsxs)(_alloy_js_core.Show, {
100
- when: Boolean(disableBiome),
101
- children: [/* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)(require_core_components_single_line_comment.SingleLineComment, { children: "biome-ignore lint: disable" }), /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)("hbr", {})]
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
- /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)(_alloy_js_core.Show, {
104
- when: Boolean(disableEslint) || Boolean(disablePrettier) || Boolean(disableBiome),
105
- children: /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)("hbr", {})
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
- /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsxs)(_alloy_js_core.Show, {
108
- when: Boolean(children),
109
- children: [children, /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)("hbr", {})]
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
- /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)(require_core_components_single_line_comment.SingleLineComment, { children: `Generated by ${(0, _stryke_string_format_title_case.titleCase)(context?.config?.framework) || "Powerlines"}` }),
112
- /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)("hbr", {}),
113
- /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)(require_core_components_single_line_comment.SingleLineComment, { children: (0, powerlines_utils.getFileHeaderWarning)(context) }),
114
- /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)("hbr", {})
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 /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsxs)(_alloy_js_core.Show, {
135
- when: scope.importedModules.size > 0 || !!imports.value && Object.keys(imports.value).length > 0 || !!builtinImports.value && Object.keys(builtinImports.value).length > 0,
136
- children: [
137
- /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)(_alloy_js_core.Show, {
138
- when: !!imports.value && Object.keys(imports.value).length > 0,
139
- children: /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)(_alloy_js_core.For, {
140
- each: Object.entries(imports.value ?? {}),
141
- hardline: true,
142
- ender: /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)("hbr", {}),
143
- 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}";`
144
- })
145
- }),
146
- /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)(_alloy_js_core.Show, {
147
- when: builtinImports.value && Object.keys(builtinImports.value).length > 0,
148
- children: /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)(_alloy_js_core.For, {
149
- each: Object.entries(builtinImports.value ?? {}),
150
- hardline: true,
151
- ender: /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)("hbr", {}),
152
- 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}`}";`
153
- })
154
- }),
155
- /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)(_alloy_js_core.Show, {
156
- when: scope.importedModules.size > 0,
157
- children: /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)(_alloy_js_typescript.ImportStatements, { records: scope.importedModules })
158
- }),
159
- /* @__PURE__ */ (0, _alloy_js_core_jsx_runtime.jsx)("hbr", {})
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 /* @__PURE__ */ jsx(SourceFileContext$1.Provider, {
43
+ return createComponent(SourceFileContext$1.Provider, {
44
44
  value: { scope },
45
- children: /* @__PURE__ */ jsx(Scope, {
46
- value: scope,
47
- children: /* @__PURE__ */ jsx(SourceFile, {
48
- ...rest,
49
- path: modulePath,
50
- header: header ?? /* @__PURE__ */ jsx(TypescriptFileHeader, {
51
- hashbang,
52
- children: /* @__PURE__ */ jsx(TypescriptFileHeaderImports, {
53
- imports,
54
- builtinImports,
55
- scope
56
- })
57
- }),
58
- filetype: tsx ? "tsx" : "typescript",
59
- children
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 /* @__PURE__ */ jsxs(Fragment, { children: [
74
- /* @__PURE__ */ jsxs(Show, {
75
- when: Boolean(hashbang),
76
- children: [hashbang === true ? code$1`#!/usr/bin/env ${context?.config.mode === "development" ? "-S NODE_OPTIONS=--enable-source-maps" : ""} node` : hashbang, /* @__PURE__ */ jsx("hbr", {})]
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
- /* @__PURE__ */ jsxs(Show, {
79
- when: Boolean(header),
80
- children: [header, /* @__PURE__ */ jsx("hbr", {})]
89
+ createComponent(Show, {
90
+ get when() {
91
+ return Boolean(header);
92
+ },
93
+ get children() {
94
+ return [header, createIntrinsic("hbr", {})];
95
+ }
81
96
  }),
82
- /* @__PURE__ */ jsx("hbr", {}),
83
- /* @__PURE__ */ jsxs(Show, {
84
- when: Boolean(disableEslint),
85
- children: [/* @__PURE__ */ jsx(SingleLineComment, {
86
- variant: "slash-star",
87
- children: "eslint-disable"
88
- }), /* @__PURE__ */ jsx("hbr", {})]
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
- /* @__PURE__ */ jsxs(Show, {
91
- when: Boolean(disablePrettier),
92
- children: [/* @__PURE__ */ jsx(SingleLineComment, {
93
- variant: "slash-star",
94
- children: "prettier-ignore"
95
- }), /* @__PURE__ */ jsx("hbr", {})]
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
- /* @__PURE__ */ jsxs(Show, {
98
- when: Boolean(disableBiome),
99
- children: [/* @__PURE__ */ jsx(SingleLineComment, { children: "biome-ignore lint: disable" }), /* @__PURE__ */ jsx("hbr", {})]
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
- /* @__PURE__ */ jsx(Show, {
102
- when: Boolean(disableEslint) || Boolean(disablePrettier) || Boolean(disableBiome),
103
- children: /* @__PURE__ */ jsx("hbr", {})
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
- /* @__PURE__ */ jsxs(Show, {
106
- when: Boolean(children),
107
- children: [children, /* @__PURE__ */ jsx("hbr", {})]
136
+ createComponent(Show, {
137
+ get when() {
138
+ return Boolean(children);
139
+ },
140
+ get children() {
141
+ return [children, createIntrinsic("hbr", {})];
142
+ }
108
143
  }),
109
- /* @__PURE__ */ jsx(SingleLineComment, { children: `Generated by ${titleCase(context?.config?.framework) || "Powerlines"}` }),
110
- /* @__PURE__ */ jsx("hbr", {}),
111
- /* @__PURE__ */ jsx(SingleLineComment, { children: getFileHeaderWarning(context) }),
112
- /* @__PURE__ */ jsx("hbr", {})
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 /* @__PURE__ */ jsxs(Show, {
133
- when: scope.importedModules.size > 0 || !!imports.value && Object.keys(imports.value).length > 0 || !!builtinImports.value && Object.keys(builtinImports.value).length > 0,
134
- children: [
135
- /* @__PURE__ */ jsx(Show, {
136
- when: !!imports.value && Object.keys(imports.value).length > 0,
137
- children: /* @__PURE__ */ jsx(For, {
138
- each: Object.entries(imports.value ?? {}),
139
- hardline: true,
140
- ender: /* @__PURE__ */ jsx("hbr", {}),
141
- 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}";`
142
- })
143
- }),
144
- /* @__PURE__ */ jsx(Show, {
145
- when: builtinImports.value && Object.keys(builtinImports.value).length > 0,
146
- children: /* @__PURE__ */ jsx(For, {
147
- each: Object.entries(builtinImports.value ?? {}),
148
- hardline: true,
149
- ender: /* @__PURE__ */ jsx("hbr", {}),
150
- 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}`}";`
151
- })
152
- }),
153
- /* @__PURE__ */ jsx(Show, {
154
- when: scope.importedModules.size > 0,
155
- children: /* @__PURE__ */ jsx(ImportStatements, { records: scope.importedModules })
156
- }),
157
- /* @__PURE__ */ jsx("hbr", {})
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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"}