@goast/core 0.0.1

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 (202) hide show
  1. package/README.md +11 -0
  2. package/dist/index.cjs +7 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.ts +3 -0
  5. package/dist/index.js +4 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/codegen/config.cjs +6 -0
  8. package/dist/lib/codegen/config.cjs.map +1 -0
  9. package/dist/lib/codegen/config.d.ts +6 -0
  10. package/dist/lib/codegen/config.js +3 -0
  11. package/dist/lib/codegen/config.js.map +1 -0
  12. package/dist/lib/codegen/endpoints-generator.cjs +31 -0
  13. package/dist/lib/codegen/endpoints-generator.cjs.map +1 -0
  14. package/dist/lib/codegen/endpoints-generator.d.ts +15 -0
  15. package/dist/lib/codegen/endpoints-generator.js +27 -0
  16. package/dist/lib/codegen/endpoints-generator.js.map +1 -0
  17. package/dist/lib/codegen/generator.cjs +103 -0
  18. package/dist/lib/codegen/generator.cjs.map +1 -0
  19. package/dist/lib/codegen/generator.d.ts +36 -0
  20. package/dist/lib/codegen/generator.js +98 -0
  21. package/dist/lib/codegen/generator.js.map +1 -0
  22. package/dist/lib/codegen/index.cjs +10 -0
  23. package/dist/lib/codegen/index.cjs.map +1 -0
  24. package/dist/lib/codegen/index.d.ts +6 -0
  25. package/dist/lib/codegen/index.js +7 -0
  26. package/dist/lib/codegen/index.js.map +1 -0
  27. package/dist/lib/codegen/internal-utils.cjs +10 -0
  28. package/dist/lib/codegen/internal-utils.cjs.map +1 -0
  29. package/dist/lib/codegen/internal-utils.d.ts +1 -0
  30. package/dist/lib/codegen/internal-utils.js +6 -0
  31. package/dist/lib/codegen/internal-utils.js.map +1 -0
  32. package/dist/lib/codegen/schemas-generator.cjs +43 -0
  33. package/dist/lib/codegen/schemas-generator.cjs.map +1 -0
  34. package/dist/lib/codegen/schemas-generator.d.ts +16 -0
  35. package/dist/lib/codegen/schemas-generator.js +39 -0
  36. package/dist/lib/codegen/schemas-generator.js.map +1 -0
  37. package/dist/lib/codegen/services-generator.cjs +31 -0
  38. package/dist/lib/codegen/services-generator.cjs.map +1 -0
  39. package/dist/lib/codegen/services-generator.d.ts +15 -0
  40. package/dist/lib/codegen/services-generator.js +27 -0
  41. package/dist/lib/codegen/services-generator.js.map +1 -0
  42. package/dist/lib/codegen/types.cjs +3 -0
  43. package/dist/lib/codegen/types.cjs.map +1 -0
  44. package/dist/lib/codegen/types.d.ts +17 -0
  45. package/dist/lib/codegen/types.js +2 -0
  46. package/dist/lib/codegen/types.js.map +1 -0
  47. package/dist/lib/collect/collector.cjs +116 -0
  48. package/dist/lib/collect/collector.cjs.map +1 -0
  49. package/dist/lib/collect/collector.d.ts +3 -0
  50. package/dist/lib/collect/collector.js +112 -0
  51. package/dist/lib/collect/collector.js.map +1 -0
  52. package/dist/lib/collect/helpers.cjs +33 -0
  53. package/dist/lib/collect/helpers.cjs.map +1 -0
  54. package/dist/lib/collect/helpers.d.ts +3 -0
  55. package/dist/lib/collect/helpers.js +28 -0
  56. package/dist/lib/collect/helpers.js.map +1 -0
  57. package/dist/lib/collect/index.cjs +7 -0
  58. package/dist/lib/collect/index.cjs.map +1 -0
  59. package/dist/lib/collect/index.d.ts +3 -0
  60. package/dist/lib/collect/index.js +4 -0
  61. package/dist/lib/collect/index.js.map +1 -0
  62. package/dist/lib/collect/types.cjs +3 -0
  63. package/dist/lib/collect/types.cjs.map +1 -0
  64. package/dist/lib/collect/types.d.ts +12 -0
  65. package/dist/lib/collect/types.js +2 -0
  66. package/dist/lib/collect/types.js.map +1 -0
  67. package/dist/lib/internal-utils.cjs +8 -0
  68. package/dist/lib/internal-utils.cjs.map +1 -0
  69. package/dist/lib/internal-utils.d.ts +1 -0
  70. package/dist/lib/internal-utils.js +4 -0
  71. package/dist/lib/internal-utils.js.map +1 -0
  72. package/dist/lib/parse/deref-proxy.cjs +46 -0
  73. package/dist/lib/parse/deref-proxy.cjs.map +1 -0
  74. package/dist/lib/parse/deref-proxy.d.ts +3 -0
  75. package/dist/lib/parse/deref-proxy.js +42 -0
  76. package/dist/lib/parse/deref-proxy.js.map +1 -0
  77. package/dist/lib/parse/index.cjs +7 -0
  78. package/dist/lib/parse/index.cjs.map +1 -0
  79. package/dist/lib/parse/index.d.ts +3 -0
  80. package/dist/lib/parse/index.js +4 -0
  81. package/dist/lib/parse/index.js.map +1 -0
  82. package/dist/lib/parse/openapi-types.cjs +3 -0
  83. package/dist/lib/parse/openapi-types.cjs.map +1 -0
  84. package/dist/lib/parse/openapi-types.d.ts +897 -0
  85. package/dist/lib/parse/openapi-types.js +2 -0
  86. package/dist/lib/parse/openapi-types.js.map +1 -0
  87. package/dist/lib/parse/parser.cjs +189 -0
  88. package/dist/lib/parse/parser.cjs.map +1 -0
  89. package/dist/lib/parse/parser.d.ts +16 -0
  90. package/dist/lib/parse/parser.js +185 -0
  91. package/dist/lib/parse/parser.js.map +1 -0
  92. package/dist/lib/parse/types.cjs +3 -0
  93. package/dist/lib/parse/types.cjs.map +1 -0
  94. package/dist/lib/parse/types.d.ts +15 -0
  95. package/dist/lib/parse/types.js +2 -0
  96. package/dist/lib/parse/types.js.map +1 -0
  97. package/dist/lib/transform/api-types.cjs +3 -0
  98. package/dist/lib/transform/api-types.cjs.map +1 -0
  99. package/dist/lib/transform/api-types.d.ts +186 -0
  100. package/dist/lib/transform/api-types.js +2 -0
  101. package/dist/lib/transform/api-types.js.map +1 -0
  102. package/dist/lib/transform/helpers.cjs +121 -0
  103. package/dist/lib/transform/helpers.cjs.map +1 -0
  104. package/dist/lib/transform/helpers.d.ts +50 -0
  105. package/dist/lib/transform/helpers.js +108 -0
  106. package/dist/lib/transform/helpers.js.map +1 -0
  107. package/dist/lib/transform/index.cjs +6 -0
  108. package/dist/lib/transform/index.cjs.map +1 -0
  109. package/dist/lib/transform/index.d.ts +2 -0
  110. package/dist/lib/transform/index.js +3 -0
  111. package/dist/lib/transform/index.js.map +1 -0
  112. package/dist/lib/transform/transform-document.cjs +33 -0
  113. package/dist/lib/transform/transform-document.cjs.map +1 -0
  114. package/dist/lib/transform/transform-document.d.ts +3 -0
  115. package/dist/lib/transform/transform-document.js +29 -0
  116. package/dist/lib/transform/transform-document.js.map +1 -0
  117. package/dist/lib/transform/transform-endpoint.cjs +254 -0
  118. package/dist/lib/transform/transform-endpoint.cjs.map +1 -0
  119. package/dist/lib/transform/transform-endpoint.d.ts +4 -0
  120. package/dist/lib/transform/transform-endpoint.js +250 -0
  121. package/dist/lib/transform/transform-endpoint.js.map +1 -0
  122. package/dist/lib/transform/transform-schema.cjs +142 -0
  123. package/dist/lib/transform/transform-schema.cjs.map +1 -0
  124. package/dist/lib/transform/transform-schema.d.ts +4 -0
  125. package/dist/lib/transform/transform-schema.js +138 -0
  126. package/dist/lib/transform/transform-schema.js.map +1 -0
  127. package/dist/lib/transform/transformer.cjs +44 -0
  128. package/dist/lib/transform/transformer.cjs.map +1 -0
  129. package/dist/lib/transform/transformer.d.ts +3 -0
  130. package/dist/lib/transform/transformer.js +40 -0
  131. package/dist/lib/transform/transformer.js.map +1 -0
  132. package/dist/lib/transform/types.cjs +3 -0
  133. package/dist/lib/transform/types.cjs.map +1 -0
  134. package/dist/lib/transform/types.d.ts +23 -0
  135. package/dist/lib/transform/types.js +2 -0
  136. package/dist/lib/transform/types.js.map +1 -0
  137. package/dist/lib/utils/action-provider.cjs +35 -0
  138. package/dist/lib/utils/action-provider.cjs.map +1 -0
  139. package/dist/lib/utils/action-provider.d.ts +28 -0
  140. package/dist/lib/utils/action-provider.js +31 -0
  141. package/dist/lib/utils/action-provider.js.map +1 -0
  142. package/dist/lib/utils/common.utils.cjs +12 -0
  143. package/dist/lib/utils/common.utils.cjs.map +1 -0
  144. package/dist/lib/utils/common.utils.d.ts +3 -0
  145. package/dist/lib/utils/common.utils.js +7 -0
  146. package/dist/lib/utils/common.utils.js.map +1 -0
  147. package/dist/lib/utils/condition.cjs +9 -0
  148. package/dist/lib/utils/condition.cjs.map +1 -0
  149. package/dist/lib/utils/condition.d.ts +3 -0
  150. package/dist/lib/utils/condition.js +5 -0
  151. package/dist/lib/utils/condition.js.map +1 -0
  152. package/dist/lib/utils/endpoint.utils.cjs +13 -0
  153. package/dist/lib/utils/endpoint.utils.cjs.map +1 -0
  154. package/dist/lib/utils/endpoint.utils.d.ts +2 -0
  155. package/dist/lib/utils/endpoint.utils.js +9 -0
  156. package/dist/lib/utils/endpoint.utils.js.map +1 -0
  157. package/dist/lib/utils/factory.cjs +29 -0
  158. package/dist/lib/utils/factory.cjs.map +1 -0
  159. package/dist/lib/utils/factory.d.ts +20 -0
  160. package/dist/lib/utils/factory.js +25 -0
  161. package/dist/lib/utils/factory.js.map +1 -0
  162. package/dist/lib/utils/generator.utils.cjs +11 -0
  163. package/dist/lib/utils/generator.utils.cjs.map +1 -0
  164. package/dist/lib/utils/generator.utils.d.ts +1 -0
  165. package/dist/lib/utils/generator.utils.js +7 -0
  166. package/dist/lib/utils/generator.utils.js.map +1 -0
  167. package/dist/lib/utils/index.cjs +14 -0
  168. package/dist/lib/utils/index.cjs.map +1 -0
  169. package/dist/lib/utils/index.d.ts +10 -0
  170. package/dist/lib/utils/index.js +11 -0
  171. package/dist/lib/utils/index.js.map +1 -0
  172. package/dist/lib/utils/object.utils.cjs +21 -0
  173. package/dist/lib/utils/object.utils.cjs.map +1 -0
  174. package/dist/lib/utils/object.utils.d.ts +1 -0
  175. package/dist/lib/utils/object.utils.js +17 -0
  176. package/dist/lib/utils/object.utils.js.map +1 -0
  177. package/dist/lib/utils/schema.utils.cjs +55 -0
  178. package/dist/lib/utils/schema.utils.cjs.map +1 -0
  179. package/dist/lib/utils/schema.utils.d.ts +10 -0
  180. package/dist/lib/utils/schema.utils.js +50 -0
  181. package/dist/lib/utils/schema.utils.js.map +1 -0
  182. package/dist/lib/utils/source-builder.cjs +378 -0
  183. package/dist/lib/utils/source-builder.cjs.map +1 -0
  184. package/dist/lib/utils/source-builder.d.ts +216 -0
  185. package/dist/lib/utils/source-builder.js +374 -0
  186. package/dist/lib/utils/source-builder.js.map +1 -0
  187. package/dist/lib/utils/string.utils.cjs +337 -0
  188. package/dist/lib/utils/string.utils.cjs.map +1 -0
  189. package/dist/lib/utils/string.utils.d.ts +173 -0
  190. package/dist/lib/utils/string.utils.js +324 -0
  191. package/dist/lib/utils/string.utils.js.map +1 -0
  192. package/dist/lib/utils/string.utils.types.cjs +3 -0
  193. package/dist/lib/utils/string.utils.types.cjs.map +1 -0
  194. package/dist/lib/utils/string.utils.types.d.ts +148 -0
  195. package/dist/lib/utils/string.utils.types.js +2 -0
  196. package/dist/lib/utils/string.utils.types.js.map +1 -0
  197. package/dist/lib/utils/type.utils.cjs +3 -0
  198. package/dist/lib/utils/type.utils.cjs.map +1 -0
  199. package/dist/lib/utils/type.utils.d.ts +15 -0
  200. package/dist/lib/utils/type.utils.js +2 -0
  201. package/dist/lib/utils/type.utils.js.map +1 -0
  202. package/package.json +27 -0
@@ -0,0 +1,374 @@
1
+ import { EOL } from 'os';
2
+ import { evalCondition } from './condition';
3
+ import { StringBuilder } from './string.utils';
4
+ export const defaultSourceBuilderOptions = {
5
+ indent: { type: 'spaces', count: 2 },
6
+ newLine: EOL,
7
+ charsTreatedAsEmptyLine: ['{'],
8
+ };
9
+ /**
10
+ * Represents an in-memory source file.
11
+ */
12
+ export class SourceBuilder extends StringBuilder {
13
+ /**
14
+ * Gets the options used by this instance.
15
+ */
16
+ get options() {
17
+ return this.__options;
18
+ }
19
+ /**
20
+ * Initializes a new instance of the SourceBuilder class.
21
+ * @param options The options to use for this instance.
22
+ */
23
+ constructor(options) {
24
+ super(options);
25
+ this._linePrefix = '';
26
+ this._isLineIndented = false;
27
+ this._isLastLineEmpty = true;
28
+ this._isCurrentLineEmpty = true;
29
+ /**
30
+ * Gets or sets the current indentation level.
31
+ */
32
+ this.currentIndentLevel = 0;
33
+ this.__options = Object.assign(Object.assign({}, defaultSourceBuilderOptions), options);
34
+ this._emptyLineCharRegex = new RegExp(`[\\s${this.__options.charsTreatedAsEmptyLine.join('')}]`);
35
+ this._indentString = this.__options.indent.type === 'tabs' ? '\t' : ' '.repeat(this.__options.indent.count);
36
+ }
37
+ /**
38
+ * Creates a new instance of the SourceBuilder class from a string.
39
+ * @param str The string to use as the initial content of the builder.
40
+ * @param options The options to use for this instance.
41
+ * @returns A new instance of the SourceBuilder class.
42
+ */
43
+ static fromString(str, options) {
44
+ const builder = new SourceBuilder(options);
45
+ builder.append(str);
46
+ return builder;
47
+ }
48
+ /**
49
+ * Builds a string using a callback function that receives a `SourceBuilder` instance.
50
+ * @param buildAction The callback function that receives a `SourceBuilder` instance to build the string.
51
+ * @param options The options to use for the `SourceBuilder` instance.
52
+ * @returns The string built by the `SourceBuilder` instance.
53
+ */
54
+ static build(buildAction, options) {
55
+ const builder = new SourceBuilder(options);
56
+ buildAction(builder);
57
+ return builder.toString();
58
+ }
59
+ /**
60
+ * Appends one or more strings to the end of the current SourceBuilder.
61
+ * @param value The string(s) to append.
62
+ * @returns The current SourceBuilder.
63
+ */
64
+ append(...value) {
65
+ if (value.length === 0 || !value.some((v) => v && v.length > 0)) {
66
+ return this;
67
+ }
68
+ const str = value.join('');
69
+ let lineStartIndex = 0;
70
+ for (let i = 0; i < str.length; i++) {
71
+ if (str[i] === '\r')
72
+ continue;
73
+ if (str[i] === '\n') {
74
+ let lineLength = i - lineStartIndex;
75
+ for (let j = i; j > 0 && str[j - 1] === '\r'; j--) {
76
+ lineLength--;
77
+ }
78
+ if (lineLength > 0) {
79
+ if (!this._isLineIndented) {
80
+ this.appendIndent();
81
+ }
82
+ super.append(str.substring(lineStartIndex, i).replace(/\r/g, ''));
83
+ }
84
+ this._isLastLineEmpty = this._isCurrentLineEmpty;
85
+ super.append(this.__options.newLine);
86
+ this._isCurrentLineEmpty = true;
87
+ this._isLineIndented = false;
88
+ lineStartIndex = i + 1;
89
+ }
90
+ if (!this._emptyLineCharRegex.test(str[i])) {
91
+ this._isCurrentLineEmpty = false;
92
+ }
93
+ }
94
+ if (!this._isLineIndented && lineStartIndex < str.length) {
95
+ this.appendIndent();
96
+ this._isLineIndented = true;
97
+ }
98
+ super.append(str.substring(lineStartIndex).replace(/\r/g, ''));
99
+ return this;
100
+ }
101
+ /**
102
+ * Appends one or more strings to the end of the current SourceBuilder, followed by a line terminator.
103
+ * @param value The string(s) to append.
104
+ * @returns The current SourceBuilder.
105
+ */
106
+ appendLine(...value) {
107
+ return this.append(...value, '\n');
108
+ }
109
+ /**
110
+ * Appends one or more strings to the end of the current SourceBuilder if the specified condition is true.
111
+ * @param condition The condition to check before appending the specified value.
112
+ * @param value The string(s) to append.
113
+ * @returns The current SourceBuilder.
114
+ */
115
+ appendIf(condition, ...value) {
116
+ return evalCondition(condition) ? this.append(...value) : this;
117
+ }
118
+ /**
119
+ * Appends one or more strings to the end of the current SourceBuilder, followed by a line terminator, if the specified condition is true.
120
+ * @param condition The condition to check before appending the specified value.
121
+ * @param value The string(s) to append.
122
+ * @returns The current SourceBuilder.
123
+ */
124
+ appendLineIf(condition, ...value) {
125
+ return evalCondition(condition) ? this.appendLine(...value) : this;
126
+ }
127
+ /**
128
+ * Appends the specified values to this source builder with the specified line prefix.
129
+ * @param {string} prefix - The line prefix to use.
130
+ * @param {...(string|null|undefined)} value - The values to append.
131
+ * @returns {SourceBuilder} This source builder instance.
132
+ */
133
+ appendWithLinePrefix(prefix, ...value) {
134
+ return this.applyWithLinePrefix(prefix, (builder) => builder.append(...value));
135
+ }
136
+ /**
137
+ * Appends the specified values to this source builder as a new line with the specified line prefix.
138
+ * @param {string} prefix - The line prefix to use.
139
+ * @param {...(string|null|undefined)} value - The values to append.
140
+ * @returns {SourceBuilder} This source builder instance.
141
+ */
142
+ appendLineWithLinePrefix(prefix, ...value) {
143
+ return this.applyWithLinePrefix(prefix, (builder) => builder.appendLine(...value));
144
+ }
145
+ /**
146
+ * Prepends one or more strings to the beginning of the current SourceBuilder if the specified condition is true.
147
+ * @param condition The condition to check before prepending the specified value.
148
+ * @param value The string(s) to prepend.
149
+ * @returns The current SourceBuilder.
150
+ */
151
+ prependIf(condition, ...value) {
152
+ return evalCondition(condition) ? this.prepend(...value) : this;
153
+ }
154
+ /**
155
+ * Prepends one or more strings to the beginning of the current SourceBuilder, followed by a line terminator, if the specified condition is true.
156
+ * @param condition The condition to check before appending the specified value.
157
+ * @param value The string(s) to prepend.
158
+ * @returns The current SourceBuilder.
159
+ */
160
+ prependLineIf(condition, ...value) {
161
+ return evalCondition(condition) ? this.prependLine(...value) : this;
162
+ }
163
+ /**
164
+ * Applies the provided builder function to this source builder.
165
+ * @param builderFn The builder function to apply.
166
+ * @returns This source builder instance.
167
+ */
168
+ apply(builderFn) {
169
+ builderFn(this);
170
+ return this;
171
+ }
172
+ /**
173
+ * Applies the provided builder function to this source builder with the specified line prefix.
174
+ * @param prefix The line prefix to use.
175
+ * @param builderFn The builder function to apply.
176
+ * @returns This source builder instance.
177
+ */
178
+ applyWithLinePrefix(prefix, builderFn) {
179
+ const previousLinePrefix = this._linePrefix;
180
+ this._linePrefix += prefix;
181
+ try {
182
+ builderFn(this);
183
+ }
184
+ finally {
185
+ this._linePrefix = previousLinePrefix;
186
+ }
187
+ return this;
188
+ }
189
+ /**
190
+ * Ensures that the current line is empty or consists only of whitespace characters.
191
+ * @returns A reference to this instance.
192
+ */
193
+ ensurePreviousLineEmpty() {
194
+ if (!this._isCurrentLineEmpty) {
195
+ this.appendLine();
196
+ }
197
+ if (!this._isLastLineEmpty) {
198
+ this.appendLine();
199
+ }
200
+ return this;
201
+ }
202
+ /**
203
+ * Ensures that the current line is empty or consists only of whitespace characters.
204
+ * @returns A reference to this instance.
205
+ */
206
+ ensureCurrentLineEmpty() {
207
+ if (!this._isCurrentLineEmpty) {
208
+ this.appendLine();
209
+ }
210
+ return this;
211
+ }
212
+ /**
213
+ * Inserts specified content if the specified condition is true.
214
+ * @param condition The condition to check before inserting content.
215
+ * @param builderFn The function to add content.
216
+ * @returns A reference to this instance.
217
+ */
218
+ applyIf(condition, builderFn) {
219
+ if (evalCondition(condition)) {
220
+ builderFn(this);
221
+ }
222
+ return this;
223
+ }
224
+ /**
225
+ * Inserts specified content depending on the specified condition.
226
+ * @param condition The condition to check before inserting content.
227
+ * @param builderFn The function to add content if the condition is true.
228
+ * @param elseBuilderFn The function to add content if the condition is false.
229
+ * @returns A reference to this instance.
230
+ */
231
+ applyIfElse(condition, builderFn, elseBuilderFn) {
232
+ if (evalCondition(condition)) {
233
+ builderFn(this);
234
+ }
235
+ else {
236
+ elseBuilderFn(this);
237
+ }
238
+ return this;
239
+ }
240
+ /**
241
+ * Adds one indentation level. If the current line already contains characters, only subsequent lines are affected.
242
+ * @param builderFn The function to add indented content.
243
+ * @param condition The condition to check before adding indentation.
244
+ * @returns A reference to this instance.
245
+ */
246
+ indent(builderFn, condition = true) {
247
+ const shouldIndent = evalCondition(condition);
248
+ if (shouldIndent) {
249
+ this.currentIndentLevel++;
250
+ }
251
+ try {
252
+ builderFn(this);
253
+ }
254
+ finally {
255
+ if (shouldIndent) {
256
+ this.currentIndentLevel--;
257
+ }
258
+ }
259
+ return this;
260
+ }
261
+ /**
262
+ * Adds parentheses around the specified content and adds one indentation level.
263
+ * @param brackets The brackets to use.
264
+ * @param builderFn The function to add content inside parentheses.
265
+ * @param indent Whether to indent the content inside parentheses. Defaults to `true`.
266
+ * @returns A reference to this instance.
267
+ */
268
+ parenthesize(brackets, builderFn, indent = true) {
269
+ var _a, _b;
270
+ this.append((_a = brackets[0]) !== null && _a !== void 0 ? _a : '');
271
+ this.indent(builderFn, indent);
272
+ this.append((_b = brackets[1]) !== null && _b !== void 0 ? _b : '');
273
+ return this;
274
+ }
275
+ /**
276
+ * Adds parentheses around the specified content if the specified condition is true.
277
+ * @param condition The condition to check before adding parentheses.
278
+ * @param brackets The brackets to use.
279
+ * @param builderFn The function to add content inside parentheses.
280
+ * @param indent Whether to indent the content inside parentheses. Defaults to `true`.
281
+ * @returns A reference to this instance.
282
+ */
283
+ parenthesizeIf(condition, brackets, builderFn, indent) {
284
+ if (evalCondition(condition)) {
285
+ this.parenthesize(brackets, builderFn, indent !== null && indent !== void 0 ? indent : true);
286
+ }
287
+ else {
288
+ this.indent(builderFn, indent !== null && indent !== void 0 ? indent : false);
289
+ }
290
+ return this;
291
+ }
292
+ /**
293
+ * Adds content for each item in the specified array.
294
+ * @param items The items to add content for.
295
+ * @param builderFn The function to add content for each item.
296
+ * @returns A reference to this instance.
297
+ */
298
+ forEach(items, builderFn) {
299
+ return this.forEachImpl(items, builderFn);
300
+ }
301
+ /**
302
+ * Adds content for each item in the specified array.
303
+ * @param items The items to add content for.
304
+ * @param condition The condition to check before adding content.
305
+ * @param builderFn The function to add content for each item.
306
+ * @returns A reference to this instance.
307
+ */
308
+ forEachIf(items, condition, builderFn) {
309
+ return evalCondition(condition) ? this.forEachImpl(items, builderFn) : this;
310
+ }
311
+ /**
312
+ * Adds content for each item in the specified array.
313
+ * @param items The items to add content for.
314
+ * @param condition The condition to check before adding content for each item.
315
+ * @param builderFn The function to add content for each item.
316
+ * @returns A reference to this instance.
317
+ */
318
+ forEachMatching(items, condition, builderFn) {
319
+ return this.forEachImpl(items, builderFn, undefined, condition);
320
+ }
321
+ /**
322
+ * Adds content for each item in the specified array.
323
+ * @param items The items to add content for.
324
+ * @param seperator The seperator to add between items.
325
+ * @param builderFn The function to add content for each item.
326
+ * @returns A reference to this instance.
327
+ */
328
+ forEachSeparated(items, seperator, builderFn) {
329
+ return this.forEachImpl(items, builderFn, seperator);
330
+ }
331
+ /**
332
+ * Adds content for each item in the specified array.
333
+ * @param items The items to add content for.
334
+ * @param condition The condition to check before adding content for each item.
335
+ * @param seperator The seperator to add between items.
336
+ * @param builderFn The function to add content for each item.
337
+ * @returns A reference to this instance.
338
+ */
339
+ forEachMatchingSeparated(items, condition, seperator, builderFn) {
340
+ return this.forEachImpl(items, builderFn, seperator, condition);
341
+ }
342
+ forEachImpl(items, builderFn, seperator, condition = true) {
343
+ if (condition === false)
344
+ return this;
345
+ let previousIndex = -1;
346
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
347
+ let previousItem = undefined;
348
+ let index = 0;
349
+ for (const item of items) {
350
+ if (evalCondition(condition, item)) {
351
+ if (previousIndex >= 0 && seperator) {
352
+ if (typeof seperator === 'string') {
353
+ this.append(seperator);
354
+ }
355
+ else {
356
+ seperator(this, previousItem, item, previousIndex, index);
357
+ }
358
+ }
359
+ builderFn(this, item, index);
360
+ previousIndex = index;
361
+ previousItem = item;
362
+ }
363
+ index++;
364
+ }
365
+ return this;
366
+ }
367
+ appendIndent() {
368
+ super.append(this._indentString.repeat(this.currentIndentLevel));
369
+ if (this._linePrefix) {
370
+ super.append(this._linePrefix);
371
+ }
372
+ }
373
+ }
374
+ //# sourceMappingURL=source-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-builder.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/utils/source-builder.ts"],"names":[],"mappings":"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"}