@savvy-web/silk 3.15.3 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/savvy-mcp.js +20 -0
- package/bin/savvy.js +20 -0
- package/changesets-changelog.cjs +711 -644
- package/changesets-changelog.d.cts +183 -111
- package/changesets-changelog.d.ts +183 -111
- package/changesets-changelog.js +712 -648
- package/changesets-markdownlint.cjs +686 -632
- package/changesets-markdownlint.d.cts +7 -9237
- package/changesets-markdownlint.d.ts +7 -9237
- package/changesets-markdownlint.js +698 -644
- package/lint.js +1 -1
- package/package.json +9 -5
package/changesets-changelog.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { builtinModules, createRequire } from "node:module";
|
|
2
|
-
import { CommentStyle, SectionId } from "@effected/templates";
|
|
3
2
|
import { Context, Data, Effect, FileSystem, Layer, Option, Path, Result, Schema, SchemaIssue, SchemaTransformation } from "effect";
|
|
3
|
+
import { CommentStyle, SectionId } from "@effected/templates";
|
|
4
|
+
import { PublishTarget, PublishabilityDetector, WorkspaceDiscovery, WorkspaceSnapshots, WorkspaceStateSnapshot, Workspaces } from "@effected/workspaces";
|
|
4
5
|
import * as path$1 from "node:path";
|
|
5
6
|
import { basename, delimiter, dirname, isAbsolute, join, normalize, relative, resolve, sep } from "node:path";
|
|
6
|
-
import { PublishTarget, PublishabilityDetector, WorkspaceDiscovery, WorkspaceSnapshots, WorkspaceStateSnapshot, Workspaces } from "@effected/workspaces";
|
|
7
7
|
import * as fs$1 from "node:fs/promises";
|
|
8
8
|
import * as util from "node:util";
|
|
9
9
|
import { format, inspect, styleText } from "node:util";
|
|
@@ -75,7 +75,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
75
75
|
var __require$1 = /* #__PURE__ */ (() => createRequire(import.meta.url))();
|
|
76
76
|
|
|
77
77
|
//#endregion
|
|
78
|
-
//#region ../silk-
|
|
78
|
+
//#region ../silk-core/dist/dev/pkg/errors/ChangesetConfigError.js
|
|
79
79
|
/**
|
|
80
80
|
* Raised when the `.changeset/config.json` file cannot be read or decoded.
|
|
81
81
|
*
|
|
@@ -93,7 +93,451 @@ var ChangesetConfigError = class extends Data.TaggedError("ChangesetConfigError"
|
|
|
93
93
|
};
|
|
94
94
|
|
|
95
95
|
//#endregion
|
|
96
|
-
//#region ../silk-
|
|
96
|
+
//#region ../silk-core/dist/dev/pkg/errors/PublishTargetBindingError.js
|
|
97
|
+
/**
|
|
98
|
+
* Raised when publishability detection selects a directory that the package's
|
|
99
|
+
* `dist/prod/targets.json` binding does not describe.
|
|
100
|
+
*
|
|
101
|
+
* @remarks
|
|
102
|
+
* The bundler's prod build writes `targets.json` naming every byte-group
|
|
103
|
+
* directory it produced. Once that binding exists it is authoritative: the only
|
|
104
|
+
* directories whose bytes may be published are the ones it lists. A detector
|
|
105
|
+
* that returns anything else — most often `publishConfig.directory` pointing at
|
|
106
|
+
* a **dev** build, because silk mode was misdetected — is about to pack an
|
|
107
|
+
* unresolved workspace manifest and ship it to a registry.
|
|
108
|
+
*
|
|
109
|
+
* That is the `yaml-effect@0.7.1` failure: detection picked `dist/dev/pkg`, the
|
|
110
|
+
* dev manifest still carried `catalog:` specifiers, and the published package
|
|
111
|
+
* was uninstallable (`EUNSUPPORTEDPROTOCOL`).
|
|
112
|
+
*
|
|
113
|
+
* @since 3.1.0
|
|
114
|
+
* @public
|
|
115
|
+
*/
|
|
116
|
+
var PublishTargetBindingError = class extends Data.TaggedError("PublishTargetBindingError") {
|
|
117
|
+
get message() {
|
|
118
|
+
return `Package ${this.pkg} resolved publish directory "${this.directory}", which is not one of the directories bound by dist/prod/targets.json (${this.boundDirectories.join(", ")}). This means publishability detection did not select the prod build output — refusing to publish before packing an unresolved manifest.`;
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
//#endregion
|
|
123
|
+
//#region ../../node_modules/.pnpm/@effected+github-references@0.3.0_effect@4.0.0-rc.115/node_modules/@effected/github-references/IssueReferences.js
|
|
124
|
+
/**
|
|
125
|
+
* GitHub's closing-keyword issue-reference grammar, as pure functions.
|
|
126
|
+
*
|
|
127
|
+
* @remarks
|
|
128
|
+
* GitHub links an issue to a pull request when the PR's description carries
|
|
129
|
+
* `<keyword> #<number>` for one of nine documented keywords. Consumers speak
|
|
130
|
+
* that grammar in two distinct dialects, and this module models exactly those
|
|
131
|
+
* two — no service, no layer, nothing but strings in and values out:
|
|
132
|
+
*
|
|
133
|
+
* - **Inline-in-prose** ({@link harvestIssueReferences}): a reference may appear anywhere in
|
|
134
|
+
* running text — `"fixes #12 and closes #13"` — with mandatory whitespace
|
|
135
|
+
* and **no colon**, because that is the spelling GitHub itself scans PR
|
|
136
|
+
* bodies for. This is the dialect a release pipeline harvests from commit
|
|
137
|
+
* subjects and PR descriptions.
|
|
138
|
+
* - **Bare-line** ({@link parseBareLineReference}): the whole line, after trimming, *is*
|
|
139
|
+
* the reference — `"Closes: #12"` — with an **optional colon**, because a
|
|
140
|
+
* generated references region writes one reference per line and a colon
|
|
141
|
+
* reads better there. GitHub does not require the colon; the region format
|
|
142
|
+
* allows it, so the parser must too. The dialects differ because their
|
|
143
|
+
* producers do: prose is written by humans for GitHub's scanner, the region
|
|
144
|
+
* is written by tooling for humans.
|
|
145
|
+
*
|
|
146
|
+
* Deliberately out of scope this round: cross-repo references
|
|
147
|
+
* (`owner/repo#N`) and full-URL references
|
|
148
|
+
* (`https://github.com/owner/repo/issues/N`). Both are real GitHub spellings;
|
|
149
|
+
* neither dialect's consumers emit them yet, and guessing at their shape here
|
|
150
|
+
* would freeze an API nobody has driven.
|
|
151
|
+
*/
|
|
152
|
+
/**
|
|
153
|
+
* The nine closing keywords GitHub documents, lowercased.
|
|
154
|
+
*
|
|
155
|
+
* @public
|
|
156
|
+
*/
|
|
157
|
+
const CLOSING_KEYWORDS = [
|
|
158
|
+
"close",
|
|
159
|
+
"closes",
|
|
160
|
+
"closed",
|
|
161
|
+
"fix",
|
|
162
|
+
"fixes",
|
|
163
|
+
"fixed",
|
|
164
|
+
"resolve",
|
|
165
|
+
"resolves",
|
|
166
|
+
"resolved"
|
|
167
|
+
];
|
|
168
|
+
/**
|
|
169
|
+
* Both patterns derive from {@link CLOSING_KEYWORDS} so the constant and the
|
|
170
|
+
* grammar cannot drift. Alternation order is safe: the regex engine backtracks
|
|
171
|
+
* through alternatives, so `close` matching inside `closes` fails at the
|
|
172
|
+
* mandatory `#`-introducer and retries the longer keyword.
|
|
173
|
+
*/
|
|
174
|
+
const KEYWORDS = CLOSING_KEYWORDS.join("|");
|
|
175
|
+
/** Inline-in-prose: mandatory whitespace, no colon. */
|
|
176
|
+
const INLINE_PATTERN = new RegExp(`\\b(${KEYWORDS})\\s+#(\\d+)`, "gi");
|
|
177
|
+
/**
|
|
178
|
+
* Bare-line: optional colon, then mandatory same-line whitespace. `[ \t]`
|
|
179
|
+
* rather than `\s`, so an embedded newline cannot smuggle two lines past a
|
|
180
|
+
* parser whose contract is one.
|
|
181
|
+
*/
|
|
182
|
+
const BARE_LINE_PATTERN = new RegExp(`^(${KEYWORDS}):?[ \\t]+#(\\d+)$`, "i");
|
|
183
|
+
|
|
184
|
+
//#endregion
|
|
185
|
+
//#region ../../node_modules/.pnpm/@effected+github-references@0.3.0_effect@4.0.0-rc.115/node_modules/@effected/github-references/ClosingList.js
|
|
186
|
+
/**
|
|
187
|
+
* The closing-list dialect: one whole line naming several issues at once.
|
|
188
|
+
*
|
|
189
|
+
* @remarks
|
|
190
|
+
* The third dialect, alongside the two in `IssueReferences`: after trimming,
|
|
191
|
+
* the **entire** line must be `<keyword>[:] <list>` — keyword
|
|
192
|
+
* case-insensitive (lowercased to canonical form in the result), colon
|
|
193
|
+
* optional, and the list one or more `#<digits>` items separated by `,`,
|
|
194
|
+
* `and`, or the Oxford `, and`. Whitespace inside the line is `[ \t]` only,
|
|
195
|
+
* so an embedded newline cannot smuggle two lines past a parser whose
|
|
196
|
+
* contract is one — the same posture as the bare-line pattern. Any trailing
|
|
197
|
+
* content after the list rejects the line; duplicates are preserved in order,
|
|
198
|
+
* because whether `#1, #1` means one issue or two is the caller's business.
|
|
199
|
+
*
|
|
200
|
+
* Two keyword sets play here. {@link parseClosingList} accepts only the nine
|
|
201
|
+
* closing keywords and yields a {@link ClosingList}; {@link parseReferenceList}
|
|
202
|
+
* additionally accepts the non-closing {@link REFERENCE_KEYWORDS} (`ref`,
|
|
203
|
+
* `refs`, `references`) and reports which set matched via
|
|
204
|
+
* {@link ReferenceList}'s `closing` flag.
|
|
205
|
+
*
|
|
206
|
+
* An item whose digits exceed `Number.MAX_SAFE_INTEGER` rejects the **whole
|
|
207
|
+
* line**, where `harvestIssueReferences` merely skips the one match. The
|
|
208
|
+
* asymmetry is deliberate: a harvest drops one reference out of running
|
|
209
|
+
* prose, but a list line is a single claim about a set of issues, and
|
|
210
|
+
* returning the parseable subset would misrepresent the line as claiming
|
|
211
|
+
* less than it does.
|
|
212
|
+
*
|
|
213
|
+
* Complexity posture: parsing is a single left-to-right character scan —
|
|
214
|
+
* this module contains **no regular expressions at all** — so worst-case
|
|
215
|
+
* time is linear in the line length by construction. There is no
|
|
216
|
+
* backtracking engine to feed, no polynomial blow-up for a scanner to flag,
|
|
217
|
+
* and therefore no input truncation.
|
|
218
|
+
*
|
|
219
|
+
* Beyond the whole-line parsers, {@link harvestReferenceLists} generalizes
|
|
220
|
+
* the same list grammar to the inline-in-prose posture — several lists on
|
|
221
|
+
* one line of running text — and {@link parseClosingLists} /
|
|
222
|
+
* {@link parseReferenceLists} apply the whole-line parsers per line of a
|
|
223
|
+
* multi-line text. All of them ride the same character scan; the no-regex
|
|
224
|
+
* promise above covers every export here.
|
|
225
|
+
*/
|
|
226
|
+
/**
|
|
227
|
+
* The non-closing reference keywords the list dialect accepts, lowercased.
|
|
228
|
+
*
|
|
229
|
+
* @remarks
|
|
230
|
+
* GitHub does not act on these — they associate without closing — but a
|
|
231
|
+
* references region writes them, so the parser must read them.
|
|
232
|
+
*
|
|
233
|
+
* @public
|
|
234
|
+
*/
|
|
235
|
+
const REFERENCE_KEYWORDS = [
|
|
236
|
+
"ref",
|
|
237
|
+
"refs",
|
|
238
|
+
"references"
|
|
239
|
+
];
|
|
240
|
+
/**
|
|
241
|
+
* Both keyword tables ARE the exported constants — membership sets built from
|
|
242
|
+
* them once — so the constants and the grammar cannot drift.
|
|
243
|
+
*/
|
|
244
|
+
const ALL_KEYWORDS = /* @__PURE__ */ new Set([...CLOSING_KEYWORDS, ...REFERENCE_KEYWORDS]);
|
|
245
|
+
/** Membership test for reporting `closing`, widened once so no call casts. */
|
|
246
|
+
const CLOSING_SET = new Set(CLOSING_KEYWORDS);
|
|
247
|
+
const HASH = 35;
|
|
248
|
+
const COLON = 58;
|
|
249
|
+
const COMMA = 44;
|
|
250
|
+
/** `[ \t]` — the only whitespace the dialect admits, per the module remarks. */
|
|
251
|
+
const isSpaceTab = (code) => code === 32 || code === 9;
|
|
252
|
+
const isDigit$2 = (code) => code >= 48 && code <= 57;
|
|
253
|
+
const isAsciiLetter = (code) => code >= 65 && code <= 90 || code >= 97 && code <= 122;
|
|
254
|
+
/** The index after the run of `[ \t]` starting at `from` (possibly `from` itself). */
|
|
255
|
+
const skipSpaceTab = (line, from) => {
|
|
256
|
+
let index = from;
|
|
257
|
+
while (index < line.length && isSpaceTab(line.charCodeAt(index))) index += 1;
|
|
258
|
+
return index;
|
|
259
|
+
};
|
|
260
|
+
/**
|
|
261
|
+
* One list item at exactly `from`: `#<digits>` and the index one past it.
|
|
262
|
+
* Digits exceeding `Number.MAX_SAFE_INTEGER` report `"unsafe"` rather than a
|
|
263
|
+
* silently rounded issue number, still carrying the index one past the digit
|
|
264
|
+
* run so a caller can skip the item's extent; the whole-line parsers reject
|
|
265
|
+
* on it and {@link harvestReferenceLists} abandons the entire candidate —
|
|
266
|
+
* see the module remarks for why a list never yields a partial reading.
|
|
267
|
+
* Anything that is not `#<digits>` at all is `undefined`.
|
|
268
|
+
*/
|
|
269
|
+
const readItem = (line, from) => {
|
|
270
|
+
if (line.charCodeAt(from) !== HASH) return void 0;
|
|
271
|
+
const start = from + 1;
|
|
272
|
+
let index = start;
|
|
273
|
+
while (index < line.length && isDigit$2(line.charCodeAt(index))) index += 1;
|
|
274
|
+
if (index === start) return void 0;
|
|
275
|
+
const value = Number(line.slice(start, index));
|
|
276
|
+
return Number.isSafeInteger(value) ? {
|
|
277
|
+
kind: "item",
|
|
278
|
+
value,
|
|
279
|
+
next: index
|
|
280
|
+
} : {
|
|
281
|
+
kind: "unsafe",
|
|
282
|
+
next: index
|
|
283
|
+
};
|
|
284
|
+
};
|
|
285
|
+
/**
|
|
286
|
+
* One separator at exactly `from`: a comma with optional surrounding `[ \t]`
|
|
287
|
+
* and an optional Oxford `and` (consumed only when its own trailing `[ \t]+`
|
|
288
|
+
* is present), or a bare `and` requiring `[ \t]+` on both sides. `and` is
|
|
289
|
+
* lowercase-only — the keyword head is case-insensitive, the separator is
|
|
290
|
+
* not. Returns the index where the next item must start, or `undefined` when
|
|
291
|
+
* no separator is present.
|
|
292
|
+
*/
|
|
293
|
+
const scanSeparator = (line, from) => {
|
|
294
|
+
const afterLeading = skipSpaceTab(line, from);
|
|
295
|
+
if (line.charCodeAt(afterLeading) === COMMA) {
|
|
296
|
+
const afterComma = skipSpaceTab(line, afterLeading + 1);
|
|
297
|
+
if (line.startsWith("and", afterComma)) {
|
|
298
|
+
const afterAnd = skipSpaceTab(line, afterComma + 3);
|
|
299
|
+
if (afterAnd > afterComma + 3) return afterAnd;
|
|
300
|
+
}
|
|
301
|
+
return afterComma;
|
|
302
|
+
}
|
|
303
|
+
if (afterLeading > from && line.startsWith("and", afterLeading)) {
|
|
304
|
+
const afterAnd = skipSpaceTab(line, afterLeading + 3);
|
|
305
|
+
if (afterAnd > afterLeading + 3) return afterAnd;
|
|
306
|
+
}
|
|
307
|
+
};
|
|
308
|
+
/**
|
|
309
|
+
* The scan walk: item, then separator, then item, until the cursor stands
|
|
310
|
+
* exactly at the end of the string. Anything else — a malformed item, an
|
|
311
|
+
* unknown separator, trailing content, an unsafe issue number — is
|
|
312
|
+
* `undefined`, and the caller rejects the whole line.
|
|
313
|
+
*/
|
|
314
|
+
const parseItems = (line, from) => {
|
|
315
|
+
const issueNumbers = [];
|
|
316
|
+
let cursor = from;
|
|
317
|
+
for (;;) {
|
|
318
|
+
const item = readItem(line, cursor);
|
|
319
|
+
if (item === void 0 || item.kind === "unsafe") return void 0;
|
|
320
|
+
issueNumbers.push(item.value);
|
|
321
|
+
cursor = item.next;
|
|
322
|
+
if (cursor === line.length) return issueNumbers;
|
|
323
|
+
const next = scanSeparator(line, cursor);
|
|
324
|
+
if (next === void 0) return void 0;
|
|
325
|
+
cursor = next;
|
|
326
|
+
}
|
|
327
|
+
};
|
|
328
|
+
/**
|
|
329
|
+
* The list a whole line carries under either keyword set, or `Option.none()`.
|
|
330
|
+
*
|
|
331
|
+
* @remarks
|
|
332
|
+
* Accepts the nine closing keywords plus {@link REFERENCE_KEYWORDS}, and
|
|
333
|
+
* reports which set matched in the result's `closing` flag. Grammar,
|
|
334
|
+
* whole-line posture and the whole-line rejection of unsafe issue numbers
|
|
335
|
+
* are in the module remarks.
|
|
336
|
+
*
|
|
337
|
+
* @public
|
|
338
|
+
*/
|
|
339
|
+
const parseReferenceList = (line) => {
|
|
340
|
+
const trimmed = line.trim();
|
|
341
|
+
let letters = 0;
|
|
342
|
+
while (letters < trimmed.length && isAsciiLetter(trimmed.charCodeAt(letters))) letters += 1;
|
|
343
|
+
if (letters === 0) return Option.none();
|
|
344
|
+
const keyword = trimmed.slice(0, letters).toLowerCase();
|
|
345
|
+
if (!ALL_KEYWORDS.has(keyword)) return Option.none();
|
|
346
|
+
let cursor = letters;
|
|
347
|
+
if (trimmed.charCodeAt(cursor) === COLON) cursor += 1;
|
|
348
|
+
const afterWhitespace = skipSpaceTab(trimmed, cursor);
|
|
349
|
+
if (afterWhitespace === cursor) return Option.none();
|
|
350
|
+
const issueNumbers = parseItems(trimmed, afterWhitespace);
|
|
351
|
+
if (issueNumbers === void 0) return Option.none();
|
|
352
|
+
return Option.some({
|
|
353
|
+
keyword,
|
|
354
|
+
closing: CLOSING_SET.has(keyword),
|
|
355
|
+
issueNumbers
|
|
356
|
+
});
|
|
357
|
+
};
|
|
358
|
+
/**
|
|
359
|
+
* Every reference list a text carries, line by line, across both postures.
|
|
360
|
+
*
|
|
361
|
+
* @remarks
|
|
362
|
+
* The trailer/prose interleave consumers otherwise hand-roll: each line is
|
|
363
|
+
* tried as a whole-line reference list first ({@link parseReferenceList} —
|
|
364
|
+
* colon-tolerant, per the line dialect), and only a line that is not one is
|
|
365
|
+
* harvested inline ({@link harvestReferenceLists} — no colon, per the inline
|
|
366
|
+
* dialect). The preference means a colon-less trailer line contributes its
|
|
367
|
+
* list exactly once, never once per posture.
|
|
368
|
+
*
|
|
369
|
+
* Results carry no offsets, deliberately: this is the line-granular
|
|
370
|
+
* composition, and a consumer that needs spans uses
|
|
371
|
+
* {@link harvestReferenceLists} directly. Duplicates are preserved, in
|
|
372
|
+
* document order.
|
|
373
|
+
*
|
|
374
|
+
* @public
|
|
375
|
+
*/
|
|
376
|
+
const collectReferenceLists = (text) => {
|
|
377
|
+
const lists = [];
|
|
378
|
+
for (const line of text.split("\n")) {
|
|
379
|
+
const whole = parseReferenceList(line);
|
|
380
|
+
if (Option.isSome(whole)) {
|
|
381
|
+
lists.push(whole.value);
|
|
382
|
+
continue;
|
|
383
|
+
}
|
|
384
|
+
for (const harvested of harvestReferenceLists(line)) lists.push({
|
|
385
|
+
keyword: harvested.keyword,
|
|
386
|
+
closing: harvested.closing,
|
|
387
|
+
issueNumbers: harvested.issueNumbers
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
return lists;
|
|
391
|
+
};
|
|
392
|
+
/** `[A-Za-z0-9_]` — the word-boundary alphabet the inline dialects use. */
|
|
393
|
+
const isWordChar = (code) => isAsciiLetter(code) || isDigit$2(code) || code === 95;
|
|
394
|
+
/**
|
|
395
|
+
* The full JavaScript `\s` set, spelled as a predicate so the module keeps
|
|
396
|
+
* its no-regex promise: ASCII whitespace, NEL-adjacent controls, and the
|
|
397
|
+
* Unicode space separators. Only the keyword→first-item gap of
|
|
398
|
+
* {@link harvestReferenceLists} admits this set — everything inside a list
|
|
399
|
+
* stays `[ \t]`, per the module remarks.
|
|
400
|
+
*/
|
|
401
|
+
const isAnyWhitespace = (code) => code === 32 || code >= 9 && code <= 13 || code === 160 || code === 5760 || code >= 8192 && code <= 8202 || code === 8232 || code === 8233 || code === 8239 || code === 8287 || code === 12288 || code === 65279;
|
|
402
|
+
/**
|
|
403
|
+
* Every reference list found inline in `text`, in document order.
|
|
404
|
+
*
|
|
405
|
+
* @remarks
|
|
406
|
+
* The inline-in-prose posture generalized to lists:
|
|
407
|
+
* `Closes #123, Fixes #456` in one line of a commit body yields two
|
|
408
|
+
* single-item lists, where
|
|
409
|
+
* `harvestIssueReferences` reads only the first reference of each and the
|
|
410
|
+
* whole-line parsers read neither. The grammar per candidate:
|
|
411
|
+
*
|
|
412
|
+
* - The keyword is case-insensitive, drawn from either keyword set,
|
|
413
|
+
* lowercased to canonical form in the result, with `closing` reported by
|
|
414
|
+
* set membership. Word boundaries hold on both sides: the characters
|
|
415
|
+
* immediately before and after the keyword's letter run must not be
|
|
416
|
+
* `[A-Za-z0-9_]`, so `recloses #1` and `1closes #1` do not match.
|
|
417
|
+
* - **No colon** — exactly like `harvestIssueReferences`, the colon spelling
|
|
418
|
+
* belongs to the line dialects ({@link parseReferenceList} and the
|
|
419
|
+
* bare-line parser), so `closes: #1` inline yields nothing.
|
|
420
|
+
* - The keyword→first-item gap is any run of whitespace **including
|
|
421
|
+
* newlines**, mirroring the inline dialect's `\s+`.
|
|
422
|
+
* - List continuation uses the `,` / `and` / Oxford separators with `[ \t]`
|
|
423
|
+
* whitespace only, so a list cannot continue past a newline — a later
|
|
424
|
+
* line makes its own claims.
|
|
425
|
+
* - Items are `#<digits>`; duplicates are preserved in order.
|
|
426
|
+
*
|
|
427
|
+
* A list ends at its last valid item: in `closes #1 and fixes #2` the
|
|
428
|
+
* ` and ` before `fixes` fails as a separator because what follows is not
|
|
429
|
+
* `#`, so the text yields `closes: [1]` then `fixes: [2]`. An item past
|
|
430
|
+
* `Number.MAX_SAFE_INTEGER` anywhere in a candidate skips the **entire**
|
|
431
|
+
* candidate — never a partial list, for the same reason
|
|
432
|
+
* {@link parseReferenceList} rejects the whole line — and scanning resumes
|
|
433
|
+
* after the candidate's scanned extent.
|
|
434
|
+
*
|
|
435
|
+
* Like everything in this module, the harvest is a single left-to-right
|
|
436
|
+
* character scan with no regular expressions, so time stays linear in the
|
|
437
|
+
* text length and no input is truncated.
|
|
438
|
+
*
|
|
439
|
+
* @public
|
|
440
|
+
*/
|
|
441
|
+
const harvestReferenceLists = (text) => {
|
|
442
|
+
const lists = [];
|
|
443
|
+
let index = 0;
|
|
444
|
+
while (index < text.length) {
|
|
445
|
+
if (!isAsciiLetter(text.charCodeAt(index))) {
|
|
446
|
+
index += 1;
|
|
447
|
+
continue;
|
|
448
|
+
}
|
|
449
|
+
const runStart = index;
|
|
450
|
+
let runEnd = index + 1;
|
|
451
|
+
while (runEnd < text.length && isAsciiLetter(text.charCodeAt(runEnd))) runEnd += 1;
|
|
452
|
+
if (runStart > 0 && isWordChar(text.charCodeAt(runStart - 1)) || runEnd < text.length && isWordChar(text.charCodeAt(runEnd))) {
|
|
453
|
+
index = runEnd;
|
|
454
|
+
continue;
|
|
455
|
+
}
|
|
456
|
+
const keyword = text.slice(runStart, runEnd).toLowerCase();
|
|
457
|
+
if (!ALL_KEYWORDS.has(keyword)) {
|
|
458
|
+
index = runEnd;
|
|
459
|
+
continue;
|
|
460
|
+
}
|
|
461
|
+
let cursor = runEnd;
|
|
462
|
+
while (cursor < text.length && isAnyWhitespace(text.charCodeAt(cursor))) cursor += 1;
|
|
463
|
+
const first = cursor === runEnd ? void 0 : readItem(text, cursor);
|
|
464
|
+
if (first === void 0) {
|
|
465
|
+
index = runEnd;
|
|
466
|
+
continue;
|
|
467
|
+
}
|
|
468
|
+
if (first.kind === "unsafe") {
|
|
469
|
+
index = first.next;
|
|
470
|
+
continue;
|
|
471
|
+
}
|
|
472
|
+
const issueNumbers = [first.value];
|
|
473
|
+
let end = first.next;
|
|
474
|
+
let unsafeNext;
|
|
475
|
+
for (;;) {
|
|
476
|
+
const next = scanSeparator(text, end);
|
|
477
|
+
if (next === void 0) break;
|
|
478
|
+
const item = readItem(text, next);
|
|
479
|
+
if (item === void 0) break;
|
|
480
|
+
if (item.kind === "unsafe") {
|
|
481
|
+
unsafeNext = item.next;
|
|
482
|
+
break;
|
|
483
|
+
}
|
|
484
|
+
issueNumbers.push(item.value);
|
|
485
|
+
end = item.next;
|
|
486
|
+
}
|
|
487
|
+
if (unsafeNext !== void 0) {
|
|
488
|
+
index = unsafeNext;
|
|
489
|
+
continue;
|
|
490
|
+
}
|
|
491
|
+
lists.push({
|
|
492
|
+
keyword,
|
|
493
|
+
closing: CLOSING_SET.has(keyword),
|
|
494
|
+
issueNumbers,
|
|
495
|
+
start: runStart,
|
|
496
|
+
end
|
|
497
|
+
});
|
|
498
|
+
index = end;
|
|
499
|
+
}
|
|
500
|
+
return lists;
|
|
501
|
+
};
|
|
502
|
+
|
|
503
|
+
//#endregion
|
|
504
|
+
//#region ../../node_modules/.pnpm/@effected+github-references@0.3.0_effect@4.0.0-rc.115/node_modules/@effected/github-references/KeywordFamily.js
|
|
505
|
+
/**
|
|
506
|
+
* The projection table IS the totality proof: `Record` over the union of
|
|
507
|
+
* both keyword types makes a keyword added to either constant without an
|
|
508
|
+
* entry here fail to compile.
|
|
509
|
+
*/
|
|
510
|
+
const FAMILIES = {
|
|
511
|
+
close: "close",
|
|
512
|
+
closes: "close",
|
|
513
|
+
closed: "close",
|
|
514
|
+
fix: "fix",
|
|
515
|
+
fixes: "fix",
|
|
516
|
+
fixed: "fix",
|
|
517
|
+
resolve: "resolve",
|
|
518
|
+
resolves: "resolve",
|
|
519
|
+
resolved: "resolve",
|
|
520
|
+
ref: "ref",
|
|
521
|
+
refs: "ref",
|
|
522
|
+
references: "ref"
|
|
523
|
+
};
|
|
524
|
+
/**
|
|
525
|
+
* The family a keyword belongs to.
|
|
526
|
+
*
|
|
527
|
+
* @remarks
|
|
528
|
+
* Total over both keyword sets by construction — see the module remarks for
|
|
529
|
+
* why an explicit record beats a `startsWith` heuristic. `close`, `closes`
|
|
530
|
+
* and `closed` map to `"close"`; the `fix` and `resolve` conjugations
|
|
531
|
+
* likewise; `ref`, `refs` and `references` map to `"ref"`. The evidence for
|
|
532
|
+
* the projection is downstream: categorized harvesters key maps by family,
|
|
533
|
+
* and each was hand-rolling this collapse.
|
|
534
|
+
*
|
|
535
|
+
* @public
|
|
536
|
+
*/
|
|
537
|
+
const keywordFamily = (keyword) => FAMILIES[keyword];
|
|
538
|
+
|
|
539
|
+
//#endregion
|
|
540
|
+
//#region ../silk-core/dist/dev/pkg/schemas/VersioningSchemas.js
|
|
97
541
|
/**
|
|
98
542
|
* Configuration for how private packages are handled during versioning.
|
|
99
543
|
*
|
|
@@ -165,7 +609,7 @@ const ChangesetConfigFile = Schema.Struct({
|
|
|
165
609
|
*
|
|
166
610
|
* @remarks
|
|
167
611
|
* Extends {@link (ChangesetConfigFile:type)} with a `_isSilk` marker flag that is automatically
|
|
168
|
-
* set to `true`. Detected by
|
|
612
|
+
* set to `true`. Detected by `ChangesetConfigReader` when the `changelog` field
|
|
169
613
|
* references `@savvy-web/changesets`.
|
|
170
614
|
*
|
|
171
615
|
* @since 0.1.0
|
|
@@ -176,6 +620,26 @@ const SilkChangesetConfigFile = Schema.Struct({
|
|
|
176
620
|
_isSilk: Schema.Boolean.pipe(Schema.withDecodingDefaultType(Effect.succeed(true)), Schema.withConstructorDefault(Effect.succeed(true)))
|
|
177
621
|
});
|
|
178
622
|
|
|
623
|
+
//#endregion
|
|
624
|
+
//#region ../silk-core/dist/dev/pkg/utils/TrailingSlash.js
|
|
625
|
+
/**
|
|
626
|
+
* Trim trailing slashes from a string.
|
|
627
|
+
*
|
|
628
|
+
* @remarks
|
|
629
|
+
* Trims trailing slashes with an index scan rather than `/\/+$/`. That regex is
|
|
630
|
+
* unanchored at the start, so the engine retries the match from every position
|
|
631
|
+
* and degrades to O(n²) on a string of many slashes (CodeQL `js/polynomial-redos`).
|
|
632
|
+
* Only a trailing run of slashes is removed; interior slash runs are untouched.
|
|
633
|
+
*
|
|
634
|
+
* @since 0.1.0
|
|
635
|
+
* @public
|
|
636
|
+
*/
|
|
637
|
+
const trimTrailingSlashes = (s) => {
|
|
638
|
+
let end = s.length;
|
|
639
|
+
while (end > 0 && s[end - 1] === "/") end -= 1;
|
|
640
|
+
return s.slice(0, end);
|
|
641
|
+
};
|
|
642
|
+
|
|
179
643
|
//#endregion
|
|
180
644
|
//#region ../silk-effects/dist/dev/pkg/services/ChangesetConfigReader.js
|
|
181
645
|
/**
|
|
@@ -206,8 +670,8 @@ function isSilkChangelog(changelog) {
|
|
|
206
670
|
*
|
|
207
671
|
* @remarks
|
|
208
672
|
* Automatically detects whether the config uses the Silk changelog adapter
|
|
209
|
-
* (`@savvy-web/changesets`) and decodes as
|
|
210
|
-
* standard
|
|
673
|
+
* (`@savvy-web/changesets`) and decodes as `SilkChangesetConfigFile` or the
|
|
674
|
+
* standard `ChangesetConfigFile` accordingly.
|
|
211
675
|
*
|
|
212
676
|
* @example
|
|
213
677
|
* ```typescript
|
|
@@ -285,33 +749,6 @@ var ChangesetConfigReader = class extends Context.Service()("@savvy-web/silk-eff
|
|
|
285
749
|
}));
|
|
286
750
|
};
|
|
287
751
|
|
|
288
|
-
//#endregion
|
|
289
|
-
//#region ../silk-effects/dist/dev/pkg/errors/PublishTargetBindingError.js
|
|
290
|
-
/**
|
|
291
|
-
* Raised when publishability detection selects a directory that the package's
|
|
292
|
-
* `dist/prod/targets.json` binding does not describe.
|
|
293
|
-
*
|
|
294
|
-
* @remarks
|
|
295
|
-
* The bundler's prod build writes `targets.json` naming every byte-group
|
|
296
|
-
* directory it produced. Once that binding exists it is authoritative: the only
|
|
297
|
-
* directories whose bytes may be published are the ones it lists. A detector
|
|
298
|
-
* that returns anything else — most often `publishConfig.directory` pointing at
|
|
299
|
-
* a **dev** build, because silk mode was misdetected — is about to pack an
|
|
300
|
-
* unresolved workspace manifest and ship it to a registry.
|
|
301
|
-
*
|
|
302
|
-
* That is the `yaml-effect@0.7.1` failure: detection picked `dist/dev/pkg`, the
|
|
303
|
-
* dev manifest still carried `catalog:` specifiers, and the published package
|
|
304
|
-
* was uninstallable (`EUNSUPPORTEDPROTOCOL`).
|
|
305
|
-
*
|
|
306
|
-
* @since 3.1.0
|
|
307
|
-
* @public
|
|
308
|
-
*/
|
|
309
|
-
var PublishTargetBindingError = class extends Data.TaggedError("PublishTargetBindingError") {
|
|
310
|
-
get message() {
|
|
311
|
-
return `Package ${this.pkg} resolved publish directory "${this.directory}", which is not one of the directories bound by dist/prod/targets.json (${this.boundDirectories.join(", ")}). This means publishability detection did not select the prod build output — refusing to publish before packing an unresolved manifest.`;
|
|
312
|
-
}
|
|
313
|
-
};
|
|
314
|
-
|
|
315
752
|
//#endregion
|
|
316
753
|
//#region ../silk-effects/dist/dev/pkg/services/ChangesetConfig.js
|
|
317
754
|
const isSilk = (cfg) => "_isSilk" in cfg && cfg._isSilk === true;
|
|
@@ -389,23 +826,6 @@ var ChangesetConfig = class ChangesetConfig extends Context.Service()("@savvy-we
|
|
|
389
826
|
}));
|
|
390
827
|
};
|
|
391
828
|
|
|
392
|
-
//#endregion
|
|
393
|
-
//#region ../silk-effects/dist/dev/pkg/utils/TrailingSlash.js
|
|
394
|
-
/**
|
|
395
|
-
* Trim trailing slashes from a string.
|
|
396
|
-
*
|
|
397
|
-
* @remarks
|
|
398
|
-
* Trims trailing slashes with an index scan rather than `/\/+$/`. That regex is
|
|
399
|
-
* unanchored at the start, so the engine retries the match from every position
|
|
400
|
-
* and degrades to O(n²) on a string of many slashes (CodeQL `js/polynomial-redos`).
|
|
401
|
-
* Only a trailing run of slashes is removed; interior slash runs are untouched.
|
|
402
|
-
*/
|
|
403
|
-
const trimTrailingSlashes = (s) => {
|
|
404
|
-
let end = s.length;
|
|
405
|
-
while (end > 0 && s[end - 1] === "/") end -= 1;
|
|
406
|
-
return s.slice(0, end);
|
|
407
|
-
};
|
|
408
|
-
|
|
409
829
|
//#endregion
|
|
410
830
|
//#region ../silk-effects/dist/dev/pkg/services/SilkPublishability.js
|
|
411
831
|
const NPM_DEFAULT = "https://registry.npmjs.org/";
|
|
@@ -529,7 +949,7 @@ var SilkPublishability = class SilkPublishability {
|
|
|
529
949
|
* directories it names. A directory outside the binding means detection did
|
|
530
950
|
* not select the prod output — the `yaml-effect@0.7.1` shape, where a dev
|
|
531
951
|
* manifest carrying `catalog:` specifiers was packed and published. Rather
|
|
532
|
-
* than ship those bytes, fail with
|
|
952
|
+
* than ship those bytes, fail with `PublishTargetBindingError`.
|
|
533
953
|
*
|
|
534
954
|
* Before the prod build runs there is no binding, and the detector's
|
|
535
955
|
* placeholder directories are left alone.
|
|
@@ -2671,6 +3091,67 @@ function makeGitHubTest(responses) {
|
|
|
2671
3091
|
} });
|
|
2672
3092
|
}
|
|
2673
3093
|
|
|
3094
|
+
//#endregion
|
|
3095
|
+
//#region ../silk-effects/dist/dev/pkg/changesets/utils/logger.js
|
|
3096
|
+
/**
|
|
3097
|
+
* Warning output for changelog generation, parameterised by a
|
|
3098
|
+
* {@link ChangesetLogMode} reference instead of an ambient environment read.
|
|
3099
|
+
*
|
|
3100
|
+
* @remarks
|
|
3101
|
+
* This module is engine code shared by every front end, so it must not read
|
|
3102
|
+
* `process` — a `process.env` read here would bake one host's environment
|
|
3103
|
+
* into every other. The mode is a `Context.Reference` with a default of
|
|
3104
|
+
* `"stderr"`; a front end that knows it runs under GitHub Actions or a test
|
|
3105
|
+
* runner provides `"github"` or `"silent"` from its own `process.env` read.
|
|
3106
|
+
*
|
|
3107
|
+
* @packageDocumentation
|
|
3108
|
+
*/
|
|
3109
|
+
/**
|
|
3110
|
+
* The reference that selects the {@link ChangesetLogModeValue}.
|
|
3111
|
+
*
|
|
3112
|
+
* @remarks
|
|
3113
|
+
* Defaults to `"stderr"` when no front end provides it, so a program that
|
|
3114
|
+
* never touches the reference still reports. Provide with
|
|
3115
|
+
* `Layer.succeed(ChangesetLogMode, "github")` or
|
|
3116
|
+
* `Effect.provideService(ChangesetLogMode, "silent")`.
|
|
3117
|
+
*
|
|
3118
|
+
* @example
|
|
3119
|
+
* ```typescript
|
|
3120
|
+
* import { Effect } from "effect";
|
|
3121
|
+
* import { Changesets } from "\@savvy-web/silk-effects";
|
|
3122
|
+
*
|
|
3123
|
+
* const mode = process.env.GITHUB_ACTIONS === "true" ? "github" : "stderr";
|
|
3124
|
+
* program.pipe(Effect.provideService(Changesets.ChangesetLogMode, mode));
|
|
3125
|
+
* ```
|
|
3126
|
+
*
|
|
3127
|
+
* @public
|
|
3128
|
+
*/
|
|
3129
|
+
const ChangesetLogMode = Context.Reference("@savvy-web/silk-effects/Changesets/ChangesetLogMode", { defaultValue: () => "stderr" });
|
|
3130
|
+
/**
|
|
3131
|
+
* Log a warning message according to the {@link ChangesetLogMode} in context.
|
|
3132
|
+
*
|
|
3133
|
+
* @param message - The warning message
|
|
3134
|
+
* @param args - Additional arguments (concatenated with a space in `"github"` mode)
|
|
3135
|
+
* @returns An `Effect` that never fails
|
|
3136
|
+
*
|
|
3137
|
+
* @internal
|
|
3138
|
+
*/
|
|
3139
|
+
function logWarning(message, ...args) {
|
|
3140
|
+
return Effect.gen(function* () {
|
|
3141
|
+
switch (yield* ChangesetLogMode) {
|
|
3142
|
+
case "silent": return;
|
|
3143
|
+
case "github": {
|
|
3144
|
+
const text = args.length > 0 ? `${message} ${args.join(" ")}` : message;
|
|
3145
|
+
console.warn(`::warning::${text}`);
|
|
3146
|
+
return;
|
|
3147
|
+
}
|
|
3148
|
+
case "stderr":
|
|
3149
|
+
console.warn(message, ...args);
|
|
3150
|
+
return;
|
|
3151
|
+
}
|
|
3152
|
+
});
|
|
3153
|
+
}
|
|
3154
|
+
|
|
2674
3155
|
//#endregion
|
|
2675
3156
|
//#region ../silk-effects/dist/dev/pkg/changesets/schemas/primitives.js
|
|
2676
3157
|
/**
|
|
@@ -3994,7 +4475,7 @@ function evaluateNode(node, depth) {
|
|
|
3994
4475
|
//#region ../../node_modules/.pnpm/@effected+jsonc@0.11.0_effect@4.0.0-rc.115/node_modules/@effected/jsonc/internal/scanner.js
|
|
3995
4476
|
const isWhitespace = (ch) => ch === 32 || ch === 9 || ch === 11 || ch === 12 || ch === 160 || ch === 65279;
|
|
3996
4477
|
const isLineBreak$1 = (ch) => ch === 10 || ch === 13 || ch === 8232 || ch === 8233;
|
|
3997
|
-
const isDigit$
|
|
4478
|
+
const isDigit$1 = (ch) => ch >= 48 && ch <= 57;
|
|
3998
4479
|
/**
|
|
3999
4480
|
* Create a stateful {@link Scanner} for the given JSONC string.
|
|
4000
4481
|
*
|
|
@@ -4099,31 +4580,31 @@ const createScanner$1 = (text, ignoreTrivia = false) => {
|
|
|
4099
4580
|
if (text.charCodeAt(pos) === 45) pos++;
|
|
4100
4581
|
if (text.charCodeAt(pos) === 48) pos++;
|
|
4101
4582
|
else {
|
|
4102
|
-
if (!isDigit$
|
|
4583
|
+
if (!isDigit$1(text.charCodeAt(pos))) {
|
|
4103
4584
|
tokenError = "UnexpectedEndOfNumber";
|
|
4104
4585
|
return text.substring(start, pos);
|
|
4105
4586
|
}
|
|
4106
4587
|
pos++;
|
|
4107
|
-
while (pos < len && isDigit$
|
|
4588
|
+
while (pos < len && isDigit$1(text.charCodeAt(pos))) pos++;
|
|
4108
4589
|
}
|
|
4109
4590
|
if (pos < len && text.charCodeAt(pos) === 46) {
|
|
4110
4591
|
pos++;
|
|
4111
|
-
if (!isDigit$
|
|
4592
|
+
if (!isDigit$1(text.charCodeAt(pos))) {
|
|
4112
4593
|
tokenError = "UnexpectedEndOfNumber";
|
|
4113
4594
|
return text.substring(start, pos);
|
|
4114
4595
|
}
|
|
4115
4596
|
pos++;
|
|
4116
|
-
while (pos < len && isDigit$
|
|
4597
|
+
while (pos < len && isDigit$1(text.charCodeAt(pos))) pos++;
|
|
4117
4598
|
}
|
|
4118
4599
|
if (pos < len && (text.charCodeAt(pos) === 69 || text.charCodeAt(pos) === 101)) {
|
|
4119
4600
|
pos++;
|
|
4120
4601
|
if (pos < len && (text.charCodeAt(pos) === 43 || text.charCodeAt(pos) === 45)) pos++;
|
|
4121
|
-
if (!isDigit$
|
|
4602
|
+
if (!isDigit$1(text.charCodeAt(pos))) {
|
|
4122
4603
|
tokenError = "UnexpectedEndOfNumber";
|
|
4123
4604
|
return text.substring(start, pos);
|
|
4124
4605
|
}
|
|
4125
4606
|
pos++;
|
|
4126
|
-
while (pos < len && isDigit$
|
|
4607
|
+
while (pos < len && isDigit$1(text.charCodeAt(pos))) pos++;
|
|
4127
4608
|
}
|
|
4128
4609
|
return text.substring(start, pos);
|
|
4129
4610
|
};
|
|
@@ -4229,7 +4710,7 @@ const createScanner$1 = (text, ignoreTrivia = false) => {
|
|
|
4229
4710
|
return token;
|
|
4230
4711
|
}
|
|
4231
4712
|
case 45:
|
|
4232
|
-
if (pos + 1 < len && isDigit$
|
|
4713
|
+
if (pos + 1 < len && isDigit$1(text.charCodeAt(pos + 1))) {
|
|
4233
4714
|
tokenValue = scanNumber();
|
|
4234
4715
|
token = "Number";
|
|
4235
4716
|
return token;
|
|
@@ -4240,7 +4721,7 @@ const createScanner$1 = (text, ignoreTrivia = false) => {
|
|
|
4240
4721
|
tokenError = "InvalidSymbol";
|
|
4241
4722
|
return token;
|
|
4242
4723
|
default:
|
|
4243
|
-
if (isDigit$
|
|
4724
|
+
if (isDigit$1(ch)) {
|
|
4244
4725
|
tokenValue = scanNumber();
|
|
4245
4726
|
token = "Number";
|
|
4246
4727
|
return token;
|
|
@@ -31296,423 +31777,6 @@ function parseCommitMessage(message) {
|
|
|
31296
31777
|
return { description: message };
|
|
31297
31778
|
}
|
|
31298
31779
|
|
|
31299
|
-
//#endregion
|
|
31300
|
-
//#region ../../node_modules/.pnpm/@effected+github-references@0.3.0_effect@4.0.0-rc.115/node_modules/@effected/github-references/IssueReferences.js
|
|
31301
|
-
/**
|
|
31302
|
-
* GitHub's closing-keyword issue-reference grammar, as pure functions.
|
|
31303
|
-
*
|
|
31304
|
-
* @remarks
|
|
31305
|
-
* GitHub links an issue to a pull request when the PR's description carries
|
|
31306
|
-
* `<keyword> #<number>` for one of nine documented keywords. Consumers speak
|
|
31307
|
-
* that grammar in two distinct dialects, and this module models exactly those
|
|
31308
|
-
* two — no service, no layer, nothing but strings in and values out:
|
|
31309
|
-
*
|
|
31310
|
-
* - **Inline-in-prose** ({@link harvestIssueReferences}): a reference may appear anywhere in
|
|
31311
|
-
* running text — `"fixes #12 and closes #13"` — with mandatory whitespace
|
|
31312
|
-
* and **no colon**, because that is the spelling GitHub itself scans PR
|
|
31313
|
-
* bodies for. This is the dialect a release pipeline harvests from commit
|
|
31314
|
-
* subjects and PR descriptions.
|
|
31315
|
-
* - **Bare-line** ({@link parseBareLineReference}): the whole line, after trimming, *is*
|
|
31316
|
-
* the reference — `"Closes: #12"` — with an **optional colon**, because a
|
|
31317
|
-
* generated references region writes one reference per line and a colon
|
|
31318
|
-
* reads better there. GitHub does not require the colon; the region format
|
|
31319
|
-
* allows it, so the parser must too. The dialects differ because their
|
|
31320
|
-
* producers do: prose is written by humans for GitHub's scanner, the region
|
|
31321
|
-
* is written by tooling for humans.
|
|
31322
|
-
*
|
|
31323
|
-
* Deliberately out of scope this round: cross-repo references
|
|
31324
|
-
* (`owner/repo#N`) and full-URL references
|
|
31325
|
-
* (`https://github.com/owner/repo/issues/N`). Both are real GitHub spellings;
|
|
31326
|
-
* neither dialect's consumers emit them yet, and guessing at their shape here
|
|
31327
|
-
* would freeze an API nobody has driven.
|
|
31328
|
-
*/
|
|
31329
|
-
/**
|
|
31330
|
-
* The nine closing keywords GitHub documents, lowercased.
|
|
31331
|
-
*
|
|
31332
|
-
* @public
|
|
31333
|
-
*/
|
|
31334
|
-
const CLOSING_KEYWORDS = [
|
|
31335
|
-
"close",
|
|
31336
|
-
"closes",
|
|
31337
|
-
"closed",
|
|
31338
|
-
"fix",
|
|
31339
|
-
"fixes",
|
|
31340
|
-
"fixed",
|
|
31341
|
-
"resolve",
|
|
31342
|
-
"resolves",
|
|
31343
|
-
"resolved"
|
|
31344
|
-
];
|
|
31345
|
-
/**
|
|
31346
|
-
* Both patterns derive from {@link CLOSING_KEYWORDS} so the constant and the
|
|
31347
|
-
* grammar cannot drift. Alternation order is safe: the regex engine backtracks
|
|
31348
|
-
* through alternatives, so `close` matching inside `closes` fails at the
|
|
31349
|
-
* mandatory `#`-introducer and retries the longer keyword.
|
|
31350
|
-
*/
|
|
31351
|
-
const KEYWORDS = CLOSING_KEYWORDS.join("|");
|
|
31352
|
-
/** Inline-in-prose: mandatory whitespace, no colon. */
|
|
31353
|
-
const INLINE_PATTERN = new RegExp(`\\b(${KEYWORDS})\\s+#(\\d+)`, "gi");
|
|
31354
|
-
/**
|
|
31355
|
-
* Bare-line: optional colon, then mandatory same-line whitespace. `[ \t]`
|
|
31356
|
-
* rather than `\s`, so an embedded newline cannot smuggle two lines past a
|
|
31357
|
-
* parser whose contract is one.
|
|
31358
|
-
*/
|
|
31359
|
-
const BARE_LINE_PATTERN = new RegExp(`^(${KEYWORDS}):?[ \\t]+#(\\d+)$`, "i");
|
|
31360
|
-
|
|
31361
|
-
//#endregion
|
|
31362
|
-
//#region ../../node_modules/.pnpm/@effected+github-references@0.3.0_effect@4.0.0-rc.115/node_modules/@effected/github-references/ClosingList.js
|
|
31363
|
-
/**
|
|
31364
|
-
* The closing-list dialect: one whole line naming several issues at once.
|
|
31365
|
-
*
|
|
31366
|
-
* @remarks
|
|
31367
|
-
* The third dialect, alongside the two in `IssueReferences`: after trimming,
|
|
31368
|
-
* the **entire** line must be `<keyword>[:] <list>` — keyword
|
|
31369
|
-
* case-insensitive (lowercased to canonical form in the result), colon
|
|
31370
|
-
* optional, and the list one or more `#<digits>` items separated by `,`,
|
|
31371
|
-
* `and`, or the Oxford `, and`. Whitespace inside the line is `[ \t]` only,
|
|
31372
|
-
* so an embedded newline cannot smuggle two lines past a parser whose
|
|
31373
|
-
* contract is one — the same posture as the bare-line pattern. Any trailing
|
|
31374
|
-
* content after the list rejects the line; duplicates are preserved in order,
|
|
31375
|
-
* because whether `#1, #1` means one issue or two is the caller's business.
|
|
31376
|
-
*
|
|
31377
|
-
* Two keyword sets play here. {@link parseClosingList} accepts only the nine
|
|
31378
|
-
* closing keywords and yields a {@link ClosingList}; {@link parseReferenceList}
|
|
31379
|
-
* additionally accepts the non-closing {@link REFERENCE_KEYWORDS} (`ref`,
|
|
31380
|
-
* `refs`, `references`) and reports which set matched via
|
|
31381
|
-
* {@link ReferenceList}'s `closing` flag.
|
|
31382
|
-
*
|
|
31383
|
-
* An item whose digits exceed `Number.MAX_SAFE_INTEGER` rejects the **whole
|
|
31384
|
-
* line**, where `harvestIssueReferences` merely skips the one match. The
|
|
31385
|
-
* asymmetry is deliberate: a harvest drops one reference out of running
|
|
31386
|
-
* prose, but a list line is a single claim about a set of issues, and
|
|
31387
|
-
* returning the parseable subset would misrepresent the line as claiming
|
|
31388
|
-
* less than it does.
|
|
31389
|
-
*
|
|
31390
|
-
* Complexity posture: parsing is a single left-to-right character scan —
|
|
31391
|
-
* this module contains **no regular expressions at all** — so worst-case
|
|
31392
|
-
* time is linear in the line length by construction. There is no
|
|
31393
|
-
* backtracking engine to feed, no polynomial blow-up for a scanner to flag,
|
|
31394
|
-
* and therefore no input truncation.
|
|
31395
|
-
*
|
|
31396
|
-
* Beyond the whole-line parsers, {@link harvestReferenceLists} generalizes
|
|
31397
|
-
* the same list grammar to the inline-in-prose posture — several lists on
|
|
31398
|
-
* one line of running text — and {@link parseClosingLists} /
|
|
31399
|
-
* {@link parseReferenceLists} apply the whole-line parsers per line of a
|
|
31400
|
-
* multi-line text. All of them ride the same character scan; the no-regex
|
|
31401
|
-
* promise above covers every export here.
|
|
31402
|
-
*/
|
|
31403
|
-
/**
|
|
31404
|
-
* The non-closing reference keywords the list dialect accepts, lowercased.
|
|
31405
|
-
*
|
|
31406
|
-
* @remarks
|
|
31407
|
-
* GitHub does not act on these — they associate without closing — but a
|
|
31408
|
-
* references region writes them, so the parser must read them.
|
|
31409
|
-
*
|
|
31410
|
-
* @public
|
|
31411
|
-
*/
|
|
31412
|
-
const REFERENCE_KEYWORDS = [
|
|
31413
|
-
"ref",
|
|
31414
|
-
"refs",
|
|
31415
|
-
"references"
|
|
31416
|
-
];
|
|
31417
|
-
/**
|
|
31418
|
-
* Both keyword tables ARE the exported constants — membership sets built from
|
|
31419
|
-
* them once — so the constants and the grammar cannot drift.
|
|
31420
|
-
*/
|
|
31421
|
-
const ALL_KEYWORDS = /* @__PURE__ */ new Set([...CLOSING_KEYWORDS, ...REFERENCE_KEYWORDS]);
|
|
31422
|
-
/** Membership test for reporting `closing`, widened once so no call casts. */
|
|
31423
|
-
const CLOSING_SET = new Set(CLOSING_KEYWORDS);
|
|
31424
|
-
const HASH = 35;
|
|
31425
|
-
const COLON = 58;
|
|
31426
|
-
const COMMA = 44;
|
|
31427
|
-
/** `[ \t]` — the only whitespace the dialect admits, per the module remarks. */
|
|
31428
|
-
const isSpaceTab = (code) => code === 32 || code === 9;
|
|
31429
|
-
const isDigit$1 = (code) => code >= 48 && code <= 57;
|
|
31430
|
-
const isAsciiLetter = (code) => code >= 65 && code <= 90 || code >= 97 && code <= 122;
|
|
31431
|
-
/** The index after the run of `[ \t]` starting at `from` (possibly `from` itself). */
|
|
31432
|
-
const skipSpaceTab = (line, from) => {
|
|
31433
|
-
let index = from;
|
|
31434
|
-
while (index < line.length && isSpaceTab(line.charCodeAt(index))) index += 1;
|
|
31435
|
-
return index;
|
|
31436
|
-
};
|
|
31437
|
-
/**
|
|
31438
|
-
* One list item at exactly `from`: `#<digits>` and the index one past it.
|
|
31439
|
-
* Digits exceeding `Number.MAX_SAFE_INTEGER` report `"unsafe"` rather than a
|
|
31440
|
-
* silently rounded issue number, still carrying the index one past the digit
|
|
31441
|
-
* run so a caller can skip the item's extent; the whole-line parsers reject
|
|
31442
|
-
* on it and {@link harvestReferenceLists} abandons the entire candidate —
|
|
31443
|
-
* see the module remarks for why a list never yields a partial reading.
|
|
31444
|
-
* Anything that is not `#<digits>` at all is `undefined`.
|
|
31445
|
-
*/
|
|
31446
|
-
const readItem = (line, from) => {
|
|
31447
|
-
if (line.charCodeAt(from) !== HASH) return void 0;
|
|
31448
|
-
const start = from + 1;
|
|
31449
|
-
let index = start;
|
|
31450
|
-
while (index < line.length && isDigit$1(line.charCodeAt(index))) index += 1;
|
|
31451
|
-
if (index === start) return void 0;
|
|
31452
|
-
const value = Number(line.slice(start, index));
|
|
31453
|
-
return Number.isSafeInteger(value) ? {
|
|
31454
|
-
kind: "item",
|
|
31455
|
-
value,
|
|
31456
|
-
next: index
|
|
31457
|
-
} : {
|
|
31458
|
-
kind: "unsafe",
|
|
31459
|
-
next: index
|
|
31460
|
-
};
|
|
31461
|
-
};
|
|
31462
|
-
/**
|
|
31463
|
-
* One separator at exactly `from`: a comma with optional surrounding `[ \t]`
|
|
31464
|
-
* and an optional Oxford `and` (consumed only when its own trailing `[ \t]+`
|
|
31465
|
-
* is present), or a bare `and` requiring `[ \t]+` on both sides. `and` is
|
|
31466
|
-
* lowercase-only — the keyword head is case-insensitive, the separator is
|
|
31467
|
-
* not. Returns the index where the next item must start, or `undefined` when
|
|
31468
|
-
* no separator is present.
|
|
31469
|
-
*/
|
|
31470
|
-
const scanSeparator = (line, from) => {
|
|
31471
|
-
const afterLeading = skipSpaceTab(line, from);
|
|
31472
|
-
if (line.charCodeAt(afterLeading) === COMMA) {
|
|
31473
|
-
const afterComma = skipSpaceTab(line, afterLeading + 1);
|
|
31474
|
-
if (line.startsWith("and", afterComma)) {
|
|
31475
|
-
const afterAnd = skipSpaceTab(line, afterComma + 3);
|
|
31476
|
-
if (afterAnd > afterComma + 3) return afterAnd;
|
|
31477
|
-
}
|
|
31478
|
-
return afterComma;
|
|
31479
|
-
}
|
|
31480
|
-
if (afterLeading > from && line.startsWith("and", afterLeading)) {
|
|
31481
|
-
const afterAnd = skipSpaceTab(line, afterLeading + 3);
|
|
31482
|
-
if (afterAnd > afterLeading + 3) return afterAnd;
|
|
31483
|
-
}
|
|
31484
|
-
};
|
|
31485
|
-
/**
|
|
31486
|
-
* The scan walk: item, then separator, then item, until the cursor stands
|
|
31487
|
-
* exactly at the end of the string. Anything else — a malformed item, an
|
|
31488
|
-
* unknown separator, trailing content, an unsafe issue number — is
|
|
31489
|
-
* `undefined`, and the caller rejects the whole line.
|
|
31490
|
-
*/
|
|
31491
|
-
const parseItems = (line, from) => {
|
|
31492
|
-
const issueNumbers = [];
|
|
31493
|
-
let cursor = from;
|
|
31494
|
-
for (;;) {
|
|
31495
|
-
const item = readItem(line, cursor);
|
|
31496
|
-
if (item === void 0 || item.kind === "unsafe") return void 0;
|
|
31497
|
-
issueNumbers.push(item.value);
|
|
31498
|
-
cursor = item.next;
|
|
31499
|
-
if (cursor === line.length) return issueNumbers;
|
|
31500
|
-
const next = scanSeparator(line, cursor);
|
|
31501
|
-
if (next === void 0) return void 0;
|
|
31502
|
-
cursor = next;
|
|
31503
|
-
}
|
|
31504
|
-
};
|
|
31505
|
-
/**
|
|
31506
|
-
* The list a whole line carries under either keyword set, or `Option.none()`.
|
|
31507
|
-
*
|
|
31508
|
-
* @remarks
|
|
31509
|
-
* Accepts the nine closing keywords plus {@link REFERENCE_KEYWORDS}, and
|
|
31510
|
-
* reports which set matched in the result's `closing` flag. Grammar,
|
|
31511
|
-
* whole-line posture and the whole-line rejection of unsafe issue numbers
|
|
31512
|
-
* are in the module remarks.
|
|
31513
|
-
*
|
|
31514
|
-
* @public
|
|
31515
|
-
*/
|
|
31516
|
-
const parseReferenceList = (line) => {
|
|
31517
|
-
const trimmed = line.trim();
|
|
31518
|
-
let letters = 0;
|
|
31519
|
-
while (letters < trimmed.length && isAsciiLetter(trimmed.charCodeAt(letters))) letters += 1;
|
|
31520
|
-
if (letters === 0) return Option.none();
|
|
31521
|
-
const keyword = trimmed.slice(0, letters).toLowerCase();
|
|
31522
|
-
if (!ALL_KEYWORDS.has(keyword)) return Option.none();
|
|
31523
|
-
let cursor = letters;
|
|
31524
|
-
if (trimmed.charCodeAt(cursor) === COLON) cursor += 1;
|
|
31525
|
-
const afterWhitespace = skipSpaceTab(trimmed, cursor);
|
|
31526
|
-
if (afterWhitespace === cursor) return Option.none();
|
|
31527
|
-
const issueNumbers = parseItems(trimmed, afterWhitespace);
|
|
31528
|
-
if (issueNumbers === void 0) return Option.none();
|
|
31529
|
-
return Option.some({
|
|
31530
|
-
keyword,
|
|
31531
|
-
closing: CLOSING_SET.has(keyword),
|
|
31532
|
-
issueNumbers
|
|
31533
|
-
});
|
|
31534
|
-
};
|
|
31535
|
-
/**
|
|
31536
|
-
* Every reference list a text carries, line by line, across both postures.
|
|
31537
|
-
*
|
|
31538
|
-
* @remarks
|
|
31539
|
-
* The trailer/prose interleave consumers otherwise hand-roll: each line is
|
|
31540
|
-
* tried as a whole-line reference list first ({@link parseReferenceList} —
|
|
31541
|
-
* colon-tolerant, per the line dialect), and only a line that is not one is
|
|
31542
|
-
* harvested inline ({@link harvestReferenceLists} — no colon, per the inline
|
|
31543
|
-
* dialect). The preference means a colon-less trailer line contributes its
|
|
31544
|
-
* list exactly once, never once per posture.
|
|
31545
|
-
*
|
|
31546
|
-
* Results carry no offsets, deliberately: this is the line-granular
|
|
31547
|
-
* composition, and a consumer that needs spans uses
|
|
31548
|
-
* {@link harvestReferenceLists} directly. Duplicates are preserved, in
|
|
31549
|
-
* document order.
|
|
31550
|
-
*
|
|
31551
|
-
* @public
|
|
31552
|
-
*/
|
|
31553
|
-
const collectReferenceLists = (text) => {
|
|
31554
|
-
const lists = [];
|
|
31555
|
-
for (const line of text.split("\n")) {
|
|
31556
|
-
const whole = parseReferenceList(line);
|
|
31557
|
-
if (Option.isSome(whole)) {
|
|
31558
|
-
lists.push(whole.value);
|
|
31559
|
-
continue;
|
|
31560
|
-
}
|
|
31561
|
-
for (const harvested of harvestReferenceLists(line)) lists.push({
|
|
31562
|
-
keyword: harvested.keyword,
|
|
31563
|
-
closing: harvested.closing,
|
|
31564
|
-
issueNumbers: harvested.issueNumbers
|
|
31565
|
-
});
|
|
31566
|
-
}
|
|
31567
|
-
return lists;
|
|
31568
|
-
};
|
|
31569
|
-
/** `[A-Za-z0-9_]` — the word-boundary alphabet the inline dialects use. */
|
|
31570
|
-
const isWordChar = (code) => isAsciiLetter(code) || isDigit$1(code) || code === 95;
|
|
31571
|
-
/**
|
|
31572
|
-
* The full JavaScript `\s` set, spelled as a predicate so the module keeps
|
|
31573
|
-
* its no-regex promise: ASCII whitespace, NEL-adjacent controls, and the
|
|
31574
|
-
* Unicode space separators. Only the keyword→first-item gap of
|
|
31575
|
-
* {@link harvestReferenceLists} admits this set — everything inside a list
|
|
31576
|
-
* stays `[ \t]`, per the module remarks.
|
|
31577
|
-
*/
|
|
31578
|
-
const isAnyWhitespace = (code) => code === 32 || code >= 9 && code <= 13 || code === 160 || code === 5760 || code >= 8192 && code <= 8202 || code === 8232 || code === 8233 || code === 8239 || code === 8287 || code === 12288 || code === 65279;
|
|
31579
|
-
/**
|
|
31580
|
-
* Every reference list found inline in `text`, in document order.
|
|
31581
|
-
*
|
|
31582
|
-
* @remarks
|
|
31583
|
-
* The inline-in-prose posture generalized to lists:
|
|
31584
|
-
* `Closes #123, Fixes #456` in one line of a commit body yields two
|
|
31585
|
-
* single-item lists, where
|
|
31586
|
-
* `harvestIssueReferences` reads only the first reference of each and the
|
|
31587
|
-
* whole-line parsers read neither. The grammar per candidate:
|
|
31588
|
-
*
|
|
31589
|
-
* - The keyword is case-insensitive, drawn from either keyword set,
|
|
31590
|
-
* lowercased to canonical form in the result, with `closing` reported by
|
|
31591
|
-
* set membership. Word boundaries hold on both sides: the characters
|
|
31592
|
-
* immediately before and after the keyword's letter run must not be
|
|
31593
|
-
* `[A-Za-z0-9_]`, so `recloses #1` and `1closes #1` do not match.
|
|
31594
|
-
* - **No colon** — exactly like `harvestIssueReferences`, the colon spelling
|
|
31595
|
-
* belongs to the line dialects ({@link parseReferenceList} and the
|
|
31596
|
-
* bare-line parser), so `closes: #1` inline yields nothing.
|
|
31597
|
-
* - The keyword→first-item gap is any run of whitespace **including
|
|
31598
|
-
* newlines**, mirroring the inline dialect's `\s+`.
|
|
31599
|
-
* - List continuation uses the `,` / `and` / Oxford separators with `[ \t]`
|
|
31600
|
-
* whitespace only, so a list cannot continue past a newline — a later
|
|
31601
|
-
* line makes its own claims.
|
|
31602
|
-
* - Items are `#<digits>`; duplicates are preserved in order.
|
|
31603
|
-
*
|
|
31604
|
-
* A list ends at its last valid item: in `closes #1 and fixes #2` the
|
|
31605
|
-
* ` and ` before `fixes` fails as a separator because what follows is not
|
|
31606
|
-
* `#`, so the text yields `closes: [1]` then `fixes: [2]`. An item past
|
|
31607
|
-
* `Number.MAX_SAFE_INTEGER` anywhere in a candidate skips the **entire**
|
|
31608
|
-
* candidate — never a partial list, for the same reason
|
|
31609
|
-
* {@link parseReferenceList} rejects the whole line — and scanning resumes
|
|
31610
|
-
* after the candidate's scanned extent.
|
|
31611
|
-
*
|
|
31612
|
-
* Like everything in this module, the harvest is a single left-to-right
|
|
31613
|
-
* character scan with no regular expressions, so time stays linear in the
|
|
31614
|
-
* text length and no input is truncated.
|
|
31615
|
-
*
|
|
31616
|
-
* @public
|
|
31617
|
-
*/
|
|
31618
|
-
const harvestReferenceLists = (text) => {
|
|
31619
|
-
const lists = [];
|
|
31620
|
-
let index = 0;
|
|
31621
|
-
while (index < text.length) {
|
|
31622
|
-
if (!isAsciiLetter(text.charCodeAt(index))) {
|
|
31623
|
-
index += 1;
|
|
31624
|
-
continue;
|
|
31625
|
-
}
|
|
31626
|
-
const runStart = index;
|
|
31627
|
-
let runEnd = index + 1;
|
|
31628
|
-
while (runEnd < text.length && isAsciiLetter(text.charCodeAt(runEnd))) runEnd += 1;
|
|
31629
|
-
if (runStart > 0 && isWordChar(text.charCodeAt(runStart - 1)) || runEnd < text.length && isWordChar(text.charCodeAt(runEnd))) {
|
|
31630
|
-
index = runEnd;
|
|
31631
|
-
continue;
|
|
31632
|
-
}
|
|
31633
|
-
const keyword = text.slice(runStart, runEnd).toLowerCase();
|
|
31634
|
-
if (!ALL_KEYWORDS.has(keyword)) {
|
|
31635
|
-
index = runEnd;
|
|
31636
|
-
continue;
|
|
31637
|
-
}
|
|
31638
|
-
let cursor = runEnd;
|
|
31639
|
-
while (cursor < text.length && isAnyWhitespace(text.charCodeAt(cursor))) cursor += 1;
|
|
31640
|
-
const first = cursor === runEnd ? void 0 : readItem(text, cursor);
|
|
31641
|
-
if (first === void 0) {
|
|
31642
|
-
index = runEnd;
|
|
31643
|
-
continue;
|
|
31644
|
-
}
|
|
31645
|
-
if (first.kind === "unsafe") {
|
|
31646
|
-
index = first.next;
|
|
31647
|
-
continue;
|
|
31648
|
-
}
|
|
31649
|
-
const issueNumbers = [first.value];
|
|
31650
|
-
let end = first.next;
|
|
31651
|
-
let unsafeNext;
|
|
31652
|
-
for (;;) {
|
|
31653
|
-
const next = scanSeparator(text, end);
|
|
31654
|
-
if (next === void 0) break;
|
|
31655
|
-
const item = readItem(text, next);
|
|
31656
|
-
if (item === void 0) break;
|
|
31657
|
-
if (item.kind === "unsafe") {
|
|
31658
|
-
unsafeNext = item.next;
|
|
31659
|
-
break;
|
|
31660
|
-
}
|
|
31661
|
-
issueNumbers.push(item.value);
|
|
31662
|
-
end = item.next;
|
|
31663
|
-
}
|
|
31664
|
-
if (unsafeNext !== void 0) {
|
|
31665
|
-
index = unsafeNext;
|
|
31666
|
-
continue;
|
|
31667
|
-
}
|
|
31668
|
-
lists.push({
|
|
31669
|
-
keyword,
|
|
31670
|
-
closing: CLOSING_SET.has(keyword),
|
|
31671
|
-
issueNumbers,
|
|
31672
|
-
start: runStart,
|
|
31673
|
-
end
|
|
31674
|
-
});
|
|
31675
|
-
index = end;
|
|
31676
|
-
}
|
|
31677
|
-
return lists;
|
|
31678
|
-
};
|
|
31679
|
-
|
|
31680
|
-
//#endregion
|
|
31681
|
-
//#region ../../node_modules/.pnpm/@effected+github-references@0.3.0_effect@4.0.0-rc.115/node_modules/@effected/github-references/KeywordFamily.js
|
|
31682
|
-
/**
|
|
31683
|
-
* The projection table IS the totality proof: `Record` over the union of
|
|
31684
|
-
* both keyword types makes a keyword added to either constant without an
|
|
31685
|
-
* entry here fail to compile.
|
|
31686
|
-
*/
|
|
31687
|
-
const FAMILIES = {
|
|
31688
|
-
close: "close",
|
|
31689
|
-
closes: "close",
|
|
31690
|
-
closed: "close",
|
|
31691
|
-
fix: "fix",
|
|
31692
|
-
fixes: "fix",
|
|
31693
|
-
fixed: "fix",
|
|
31694
|
-
resolve: "resolve",
|
|
31695
|
-
resolves: "resolve",
|
|
31696
|
-
resolved: "resolve",
|
|
31697
|
-
ref: "ref",
|
|
31698
|
-
refs: "ref",
|
|
31699
|
-
references: "ref"
|
|
31700
|
-
};
|
|
31701
|
-
/**
|
|
31702
|
-
* The family a keyword belongs to.
|
|
31703
|
-
*
|
|
31704
|
-
* @remarks
|
|
31705
|
-
* Total over both keyword sets by construction — see the module remarks for
|
|
31706
|
-
* why an explicit record beats a `startsWith` heuristic. `close`, `closes`
|
|
31707
|
-
* and `closed` map to `"close"`; the `fix` and `resolve` conjugations
|
|
31708
|
-
* likewise; `ref`, `refs` and `references` map to `"ref"`. The evidence for
|
|
31709
|
-
* the projection is downstream: categorized harvesters key maps by family,
|
|
31710
|
-
* and each was hand-rolling this collapse.
|
|
31711
|
-
*
|
|
31712
|
-
* @public
|
|
31713
|
-
*/
|
|
31714
|
-
const keywordFamily = (keyword) => FAMILIES[keyword];
|
|
31715
|
-
|
|
31716
31780
|
//#endregion
|
|
31717
31781
|
//#region ../silk-effects/dist/dev/pkg/changesets/utils/issue-refs.js
|
|
31718
31782
|
/**
|
|
@@ -31780,42 +31844,6 @@ function parseIssueReferences(commitMessage) {
|
|
|
31780
31844
|
return references;
|
|
31781
31845
|
}
|
|
31782
31846
|
|
|
31783
|
-
//#endregion
|
|
31784
|
-
//#region ../silk-effects/dist/dev/pkg/changesets/utils/logger.js
|
|
31785
|
-
/**
|
|
31786
|
-
* Log a warning message.
|
|
31787
|
-
*
|
|
31788
|
-
* @remarks
|
|
31789
|
-
* Detection order:
|
|
31790
|
-
* 1. If `process.env.VITEST` is set, the message is silently discarded.
|
|
31791
|
-
* 2. If `process.env.GITHUB_ACTIONS === "true"`, the message is emitted
|
|
31792
|
-
* as a `::warning::` annotation.
|
|
31793
|
-
* 3. Otherwise, `console.warn` is used.
|
|
31794
|
-
*
|
|
31795
|
-
* @param message - The warning message
|
|
31796
|
-
* @param args - Additional arguments (concatenated with a space in CI mode)
|
|
31797
|
-
*
|
|
31798
|
-
* @example
|
|
31799
|
-
* ```typescript
|
|
31800
|
-
* import { logWarning } from "../utils/logger.js";
|
|
31801
|
-
*
|
|
31802
|
-
* logWarning("Duplicate dependency entry", "effect@3.19.0");
|
|
31803
|
-
* // In CI: "::warning::Duplicate dependency entry effect@3.19.0"
|
|
31804
|
-
* // Locally: console.warn("Duplicate dependency entry", "effect@3.19.0")
|
|
31805
|
-
* ```
|
|
31806
|
-
*
|
|
31807
|
-
* @internal
|
|
31808
|
-
*/
|
|
31809
|
-
function logWarning(message, ...args) {
|
|
31810
|
-
/* v8 ignore start — environment-specific */
|
|
31811
|
-
if (typeof process !== "undefined" && process.env.VITEST) return;
|
|
31812
|
-
if (typeof process !== "undefined" && process.env.GITHUB_ACTIONS === "true") {
|
|
31813
|
-
const text = args.length > 0 ? `${message} ${args.join(" ")}` : message;
|
|
31814
|
-
console.warn(`::warning::${text}`);
|
|
31815
|
-
} else console.warn(message, ...args);
|
|
31816
|
-
/* v8 ignore stop */
|
|
31817
|
-
}
|
|
31818
|
-
|
|
31819
31847
|
//#endregion
|
|
31820
31848
|
//#region ../silk-effects/dist/dev/pkg/changesets/utils/section-parser.js
|
|
31821
31849
|
/**
|
|
@@ -32188,10 +32216,7 @@ function getReleaseLine(changeset, versionType, options) {
|
|
|
32188
32216
|
if (changeset.commit) commitInfo = yield* (yield* GitHubService).getInfo({
|
|
32189
32217
|
commit: changeset.commit,
|
|
32190
32218
|
repo: options.repo
|
|
32191
|
-
}).pipe(Effect.flatMap((raw) => Schema.decodeUnknownEffect(GitHubInfoSchema)(raw).pipe(Effect.map(() => raw), Effect.catch(() => Effect.succeed(raw)))), Effect.catch((error) =>
|
|
32192
|
-
logWarning("Could not fetch GitHub info for commit:", changeset.commit ?? "", String(error));
|
|
32193
|
-
return Effect.succeed(null);
|
|
32194
|
-
}));
|
|
32219
|
+
}).pipe(Effect.flatMap((raw) => Schema.decodeUnknownEffect(GitHubInfoSchema)(raw).pipe(Effect.map(() => raw), Effect.catch(() => Effect.succeed(raw)))), Effect.catch((error) => logWarning("Could not fetch GitHub info for commit:", changeset.commit ?? "", String(error)).pipe(Effect.as(null))));
|
|
32195
32220
|
const parsed = parseChangesetSections(changeset.summary);
|
|
32196
32221
|
const firstLine = changeset.summary.split("\n")[0];
|
|
32197
32222
|
const commitMsg = parseCommitMessage(firstLine);
|
|
@@ -32290,31 +32315,50 @@ function getReleaseLine(changeset, versionType, options) {
|
|
|
32290
32315
|
*/
|
|
32291
32316
|
const MainLayer = GitHubService.layer;
|
|
32292
32317
|
/**
|
|
32293
|
-
* Changesets
|
|
32318
|
+
* Build a Changesets `ChangelogFunctions` implementation bound to a warning
|
|
32319
|
+
* mode.
|
|
32294
32320
|
*
|
|
32295
|
-
*
|
|
32296
|
-
*
|
|
32297
|
-
*
|
|
32298
|
-
*
|
|
32321
|
+
* @remarks
|
|
32322
|
+
* This module is engine code and reads no environment; the host that installs
|
|
32323
|
+
* the functions (the `\@savvy-web/changelog` package under the changesets CLI)
|
|
32324
|
+
* decides the mode from its own `process.env` and passes it here. Each method
|
|
32325
|
+
* validates options, runs the corresponding Effect program with the merged
|
|
32326
|
+
* service layer and the chosen {@link ChangesetLogMode}, and returns a
|
|
32327
|
+
* `Promise<string>`.
|
|
32299
32328
|
*
|
|
32300
|
-
* @
|
|
32329
|
+
* @param options - The warning mode to provide
|
|
32330
|
+
* @returns A `ChangelogFunctions` object for `.changeset/config.json`
|
|
32331
|
+
*
|
|
32332
|
+
* @public
|
|
32301
32333
|
*/
|
|
32302
|
-
|
|
32303
|
-
|
|
32304
|
-
const
|
|
32334
|
+
function makeChangelogFunctions(options = {}) {
|
|
32335
|
+
const run = (program) => {
|
|
32336
|
+
const provided = program.pipe(Effect.provide(MainLayer));
|
|
32337
|
+
return Effect.runPromise(options.logMode === void 0 ? provided : provided.pipe(Effect.provideService(ChangesetLogMode, options.logMode)));
|
|
32338
|
+
};
|
|
32339
|
+
return {
|
|
32340
|
+
getReleaseLine: async (changeset, versionType, options) => run(Effect.gen(function* () {
|
|
32305
32341
|
const opts = yield* validateChangesetOptions(options);
|
|
32306
32342
|
return yield* getReleaseLine(changeset, versionType, opts);
|
|
32307
|
-
})
|
|
32308
|
-
|
|
32309
|
-
},
|
|
32310
|
-
getDependencyReleaseLine: async (changesets, dependenciesUpdated, options) => {
|
|
32311
|
-
const program = Effect.gen(function* () {
|
|
32343
|
+
})),
|
|
32344
|
+
getDependencyReleaseLine: async (changesets, dependenciesUpdated, options) => run(Effect.gen(function* () {
|
|
32312
32345
|
const opts = yield* validateChangesetOptions(options);
|
|
32313
32346
|
return yield* getDependencyReleaseLine(changesets, dependenciesUpdated, opts);
|
|
32314
|
-
})
|
|
32315
|
-
|
|
32316
|
-
|
|
32317
|
-
|
|
32347
|
+
}))
|
|
32348
|
+
};
|
|
32349
|
+
}
|
|
32350
|
+
/**
|
|
32351
|
+
* Changesets API `ChangelogFunctions` implementation with the default warning
|
|
32352
|
+
* mode (`"stderr"`).
|
|
32353
|
+
*
|
|
32354
|
+
* @remarks
|
|
32355
|
+
* Equivalent to `makeChangelogFunctions()`. A host that runs under GitHub
|
|
32356
|
+
* Actions or a test runner should call {@link makeChangelogFunctions} with the
|
|
32357
|
+
* mode it detects instead.
|
|
32358
|
+
*
|
|
32359
|
+
* @internal
|
|
32360
|
+
*/
|
|
32361
|
+
const changelogFunctions$2 = makeChangelogFunctions();
|
|
32318
32362
|
|
|
32319
32363
|
//#endregion
|
|
32320
32364
|
//#region ../silk-effects/dist/dev/pkg/changesets/api/changelog.js
|
|
@@ -32420,10 +32464,13 @@ var Changelog = class {
|
|
|
32420
32464
|
* @param versionType - The semantic version bump type (`"major"`, `"minor"`, or `"patch"`)
|
|
32421
32465
|
* @param options - Configuration object; must include `repo` in `"owner/repo"` format.
|
|
32422
32466
|
* Pass `null` to use defaults (no GitHub link resolution).
|
|
32467
|
+
* @param logMode - How a failed GitHub lookup is reported (`"stderr"` when omitted);
|
|
32468
|
+
* the host reads its own environment and passes `"github"` / `"silent"` — this
|
|
32469
|
+
* engine never does. See `ChangesetLogMode`.
|
|
32423
32470
|
* @returns A promise resolving to the formatted markdown string
|
|
32424
32471
|
*/
|
|
32425
|
-
static async formatReleaseLine(changeset, versionType, options) {
|
|
32426
|
-
return
|
|
32472
|
+
static async formatReleaseLine(changeset, versionType, options, logMode) {
|
|
32473
|
+
return makeChangelogFunctions(logMode === void 0 ? {} : { logMode }).getReleaseLine(changeset, versionType, options);
|
|
32427
32474
|
}
|
|
32428
32475
|
/**
|
|
32429
32476
|
* Format dependency update release lines into a markdown table.
|
|
@@ -32438,11 +32485,13 @@ var Changelog = class {
|
|
|
32438
32485
|
* old/new versions and package metadata
|
|
32439
32486
|
* @param options - Configuration object; must include `repo` in `"owner/repo"` format.
|
|
32440
32487
|
* Pass `null` to use defaults.
|
|
32488
|
+
* @param logMode - How a failed GitHub lookup is reported (`"stderr"` when omitted);
|
|
32489
|
+
* see {@link Changelog.formatReleaseLine}.
|
|
32441
32490
|
* @returns A promise resolving to the formatted markdown string containing
|
|
32442
32491
|
* the dependency update table
|
|
32443
32492
|
*/
|
|
32444
|
-
static async formatDependencyReleaseLine(changesets, dependenciesUpdated, options) {
|
|
32445
|
-
return
|
|
32493
|
+
static async formatDependencyReleaseLine(changesets, dependenciesUpdated, options, logMode) {
|
|
32494
|
+
return makeChangelogFunctions(logMode === void 0 ? {} : { logMode }).getDependencyReleaseLine(changesets, dependenciesUpdated, options);
|
|
32446
32495
|
}
|
|
32447
32496
|
};
|
|
32448
32497
|
|
|
@@ -41171,7 +41220,7 @@ function globSync(globInput, options) {
|
|
|
41171
41220
|
}
|
|
41172
41221
|
|
|
41173
41222
|
//#endregion
|
|
41174
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
41223
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/identity.js
|
|
41175
41224
|
var require_identity = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
41176
41225
|
const ALIAS = Symbol.for("yaml.alias");
|
|
41177
41226
|
const DOC = Symbol.for("yaml.document");
|
|
@@ -41222,7 +41271,7 @@ var require_identity = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
41222
41271
|
}));
|
|
41223
41272
|
|
|
41224
41273
|
//#endregion
|
|
41225
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
41274
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/visit.js
|
|
41226
41275
|
var require_visit = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
41227
41276
|
var identity = require_identity();
|
|
41228
41277
|
const BREAK = Symbol("break visit");
|
|
@@ -41414,7 +41463,7 @@ var require_visit = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
41414
41463
|
}));
|
|
41415
41464
|
|
|
41416
41465
|
//#endregion
|
|
41417
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
41466
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/doc/directives.js
|
|
41418
41467
|
var require_directives = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
41419
41468
|
var identity = require_identity();
|
|
41420
41469
|
var visit = require_visit();
|
|
@@ -41579,7 +41628,7 @@ var require_directives = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
41579
41628
|
}));
|
|
41580
41629
|
|
|
41581
41630
|
//#endregion
|
|
41582
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
41631
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/doc/anchors.js
|
|
41583
41632
|
var require_anchors = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
41584
41633
|
var identity = require_identity();
|
|
41585
41634
|
var visit = require_visit();
|
|
@@ -41647,7 +41696,7 @@ var require_anchors = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
41647
41696
|
}));
|
|
41648
41697
|
|
|
41649
41698
|
//#endregion
|
|
41650
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
41699
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/doc/applyReviver.js
|
|
41651
41700
|
var require_applyReviver = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
41652
41701
|
/**
|
|
41653
41702
|
* Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,
|
|
@@ -41690,7 +41739,7 @@ var require_applyReviver = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
41690
41739
|
}));
|
|
41691
41740
|
|
|
41692
41741
|
//#endregion
|
|
41693
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
41742
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/toJS.js
|
|
41694
41743
|
var require_toJS = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
41695
41744
|
var identity = require_identity();
|
|
41696
41745
|
/**
|
|
@@ -41728,7 +41777,7 @@ var require_toJS = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
41728
41777
|
}));
|
|
41729
41778
|
|
|
41730
41779
|
//#endregion
|
|
41731
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
41780
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/Node.js
|
|
41732
41781
|
var require_Node = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
41733
41782
|
var applyReviver = require_applyReviver();
|
|
41734
41783
|
var identity = require_identity();
|
|
@@ -41763,7 +41812,7 @@ var require_Node = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
41763
41812
|
}));
|
|
41764
41813
|
|
|
41765
41814
|
//#endregion
|
|
41766
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
41815
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/Alias.js
|
|
41767
41816
|
var require_Alias = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
41768
41817
|
var anchors = require_anchors();
|
|
41769
41818
|
var visit = require_visit();
|
|
@@ -41798,29 +41847,31 @@ var require_Alias = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
41798
41847
|
if (node === this) break;
|
|
41799
41848
|
if (node.anchor === this.source) found = node;
|
|
41800
41849
|
}
|
|
41850
|
+
if (found && ctx) {
|
|
41851
|
+
const { anchors, doc, maxAliasCount } = ctx;
|
|
41852
|
+
let data = anchors.get(found);
|
|
41853
|
+
if (!data) {
|
|
41854
|
+
toJS.toJS(found, null, ctx);
|
|
41855
|
+
data = anchors.get(found);
|
|
41856
|
+
}
|
|
41857
|
+
/* istanbul ignore if */
|
|
41858
|
+
if (data?.res === void 0) throw new ReferenceError("This should not happen: Alias anchor was not resolved?");
|
|
41859
|
+
if (maxAliasCount >= 0) {
|
|
41860
|
+
data.count += 1;
|
|
41861
|
+
if (data.aliasCount === 0) data.aliasCount = getAliasCount(doc, found, anchors);
|
|
41862
|
+
if (data.count * data.aliasCount > maxAliasCount) throw new ReferenceError("Excessive alias count indicates a resource exhaustion attack");
|
|
41863
|
+
}
|
|
41864
|
+
}
|
|
41801
41865
|
return found;
|
|
41802
41866
|
}
|
|
41803
41867
|
toJSON(_arg, ctx) {
|
|
41804
41868
|
if (!ctx) return { source: this.source };
|
|
41805
|
-
const
|
|
41806
|
-
const source = this.resolve(doc, ctx);
|
|
41869
|
+
const source = this.resolve(ctx.doc, ctx);
|
|
41807
41870
|
if (!source) {
|
|
41808
41871
|
const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;
|
|
41809
41872
|
throw new ReferenceError(msg);
|
|
41810
41873
|
}
|
|
41811
|
-
|
|
41812
|
-
if (!data) {
|
|
41813
|
-
toJS.toJS(source, null, ctx);
|
|
41814
|
-
data = anchors.get(source);
|
|
41815
|
-
}
|
|
41816
|
-
/* istanbul ignore if */
|
|
41817
|
-
if (data?.res === void 0) throw new ReferenceError("This should not happen: Alias anchor was not resolved?");
|
|
41818
|
-
if (maxAliasCount >= 0) {
|
|
41819
|
-
data.count += 1;
|
|
41820
|
-
if (data.aliasCount === 0) data.aliasCount = getAliasCount(doc, source, anchors);
|
|
41821
|
-
if (data.count * data.aliasCount > maxAliasCount) throw new ReferenceError("Excessive alias count indicates a resource exhaustion attack");
|
|
41822
|
-
}
|
|
41823
|
-
return data.res;
|
|
41874
|
+
return ctx.anchors.get(source).res;
|
|
41824
41875
|
}
|
|
41825
41876
|
toString(ctx, _onComment, _onChompKeep) {
|
|
41826
41877
|
const src = `*${this.source}`;
|
|
@@ -41858,7 +41909,7 @@ var require_Alias = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
41858
41909
|
}));
|
|
41859
41910
|
|
|
41860
41911
|
//#endregion
|
|
41861
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
41912
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/Scalar.js
|
|
41862
41913
|
var require_Scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
41863
41914
|
var identity = require_identity();
|
|
41864
41915
|
var Node = require_Node();
|
|
@@ -41886,7 +41937,7 @@ var require_Scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
41886
41937
|
}));
|
|
41887
41938
|
|
|
41888
41939
|
//#endregion
|
|
41889
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
41940
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/doc/createNode.js
|
|
41890
41941
|
var require_createNode = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
41891
41942
|
var Alias = require_Alias();
|
|
41892
41943
|
var identity = require_identity();
|
|
@@ -41950,7 +42001,7 @@ var require_createNode = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
41950
42001
|
}));
|
|
41951
42002
|
|
|
41952
42003
|
//#endregion
|
|
41953
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
42004
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/Collection.js
|
|
41954
42005
|
var require_Collection = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
41955
42006
|
var createNode = require_createNode();
|
|
41956
42007
|
var identity = require_identity();
|
|
@@ -42072,7 +42123,7 @@ var require_Collection = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
42072
42123
|
}));
|
|
42073
42124
|
|
|
42074
42125
|
//#endregion
|
|
42075
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
42126
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/stringify/stringifyComment.js
|
|
42076
42127
|
var require_stringifyComment = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
42077
42128
|
/**
|
|
42078
42129
|
* Stringifies a comment.
|
|
@@ -42093,7 +42144,7 @@ var require_stringifyComment = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
42093
42144
|
}));
|
|
42094
42145
|
|
|
42095
42146
|
//#endregion
|
|
42096
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
42147
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/stringify/foldFlowLines.js
|
|
42097
42148
|
var require_foldFlowLines = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
42098
42149
|
const FOLD_FLOW = "flow";
|
|
42099
42150
|
const FOLD_BLOCK = "block";
|
|
@@ -42214,7 +42265,7 @@ var require_foldFlowLines = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
42214
42265
|
}));
|
|
42215
42266
|
|
|
42216
42267
|
//#endregion
|
|
42217
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
42268
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/stringify/stringifyString.js
|
|
42218
42269
|
var require_stringifyString = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
42219
42270
|
var Scalar = require_Scalar();
|
|
42220
42271
|
var foldFlowLines = require_foldFlowLines();
|
|
@@ -42439,7 +42490,7 @@ var require_stringifyString = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
42439
42490
|
}));
|
|
42440
42491
|
|
|
42441
42492
|
//#endregion
|
|
42442
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
42493
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/stringify/stringify.js
|
|
42443
42494
|
var require_stringify$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
42444
42495
|
var anchors = require_anchors();
|
|
42445
42496
|
var identity = require_identity();
|
|
@@ -42548,7 +42599,7 @@ var require_stringify$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
42548
42599
|
}));
|
|
42549
42600
|
|
|
42550
42601
|
//#endregion
|
|
42551
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
42602
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/stringify/stringifyPair.js
|
|
42552
42603
|
var require_stringifyPair = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
42553
42604
|
var identity = require_identity();
|
|
42554
42605
|
var Scalar = require_Scalar();
|
|
@@ -42646,7 +42697,7 @@ var require_stringifyPair = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
42646
42697
|
}));
|
|
42647
42698
|
|
|
42648
42699
|
//#endregion
|
|
42649
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
42700
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/log.js
|
|
42650
42701
|
var require_log = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
42651
42702
|
var node_process$2 = __require$1("process");
|
|
42652
42703
|
function debug(logLevel, ...messages) {
|
|
@@ -42663,7 +42714,7 @@ var require_log = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
42663
42714
|
}));
|
|
42664
42715
|
|
|
42665
42716
|
//#endregion
|
|
42666
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
42717
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/merge.js
|
|
42667
42718
|
var require_merge = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
42668
42719
|
var identity = require_identity();
|
|
42669
42720
|
var Scalar = require_Scalar();
|
|
@@ -42707,7 +42758,7 @@ var require_merge = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
42707
42758
|
}));
|
|
42708
42759
|
|
|
42709
42760
|
//#endregion
|
|
42710
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
42761
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/addPairToJSMap.js
|
|
42711
42762
|
var require_addPairToJSMap = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
42712
42763
|
var log = require_log();
|
|
42713
42764
|
var merge = require_merge();
|
|
@@ -42759,7 +42810,7 @@ var require_addPairToJSMap = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
42759
42810
|
}));
|
|
42760
42811
|
|
|
42761
42812
|
//#endregion
|
|
42762
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
42813
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/Pair.js
|
|
42763
42814
|
var require_Pair = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
42764
42815
|
var createNode = require_createNode();
|
|
42765
42816
|
var stringifyPair = require_stringifyPair();
|
|
@@ -42795,7 +42846,7 @@ var require_Pair = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
42795
42846
|
}));
|
|
42796
42847
|
|
|
42797
42848
|
//#endregion
|
|
42798
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
42849
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/stringify/stringifyCollection.js
|
|
42799
42850
|
var require_stringifyCollection = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
42800
42851
|
var identity = require_identity();
|
|
42801
42852
|
var stringify = require_stringify$1();
|
|
@@ -42914,7 +42965,7 @@ var require_stringifyCollection = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
42914
42965
|
}));
|
|
42915
42966
|
|
|
42916
42967
|
//#endregion
|
|
42917
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
42968
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/YAMLMap.js
|
|
42918
42969
|
var require_YAMLMap = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
42919
42970
|
var stringifyCollection = require_stringifyCollection();
|
|
42920
42971
|
var addPairToJSMap = require_addPairToJSMap();
|
|
@@ -43024,7 +43075,7 @@ var require_YAMLMap = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43024
43075
|
}));
|
|
43025
43076
|
|
|
43026
43077
|
//#endregion
|
|
43027
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43078
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/common/map.js
|
|
43028
43079
|
var require_map = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43029
43080
|
var identity = require_identity();
|
|
43030
43081
|
var YAMLMap = require_YAMLMap();
|
|
@@ -43043,7 +43094,7 @@ var require_map = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43043
43094
|
}));
|
|
43044
43095
|
|
|
43045
43096
|
//#endregion
|
|
43046
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43097
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/YAMLSeq.js
|
|
43047
43098
|
var require_YAMLSeq = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43048
43099
|
var createNode = require_createNode();
|
|
43049
43100
|
var stringifyCollection = require_stringifyCollection();
|
|
@@ -43150,7 +43201,7 @@ var require_YAMLSeq = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43150
43201
|
}));
|
|
43151
43202
|
|
|
43152
43203
|
//#endregion
|
|
43153
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43204
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/common/seq.js
|
|
43154
43205
|
var require_seq = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43155
43206
|
var identity = require_identity();
|
|
43156
43207
|
var YAMLSeq = require_YAMLSeq();
|
|
@@ -43169,7 +43220,7 @@ var require_seq = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43169
43220
|
}));
|
|
43170
43221
|
|
|
43171
43222
|
//#endregion
|
|
43172
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43223
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/common/string.js
|
|
43173
43224
|
var require_string = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43174
43225
|
var stringifyString = require_stringifyString();
|
|
43175
43226
|
const string = {
|
|
@@ -43186,7 +43237,7 @@ var require_string = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43186
43237
|
}));
|
|
43187
43238
|
|
|
43188
43239
|
//#endregion
|
|
43189
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43240
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/common/null.js
|
|
43190
43241
|
var require_null = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43191
43242
|
var Scalar = require_Scalar();
|
|
43192
43243
|
const nullTag = {
|
|
@@ -43202,7 +43253,7 @@ var require_null = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43202
43253
|
}));
|
|
43203
43254
|
|
|
43204
43255
|
//#endregion
|
|
43205
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43256
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/core/bool.js
|
|
43206
43257
|
var require_bool$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43207
43258
|
var Scalar = require_Scalar();
|
|
43208
43259
|
const boolTag = {
|
|
@@ -43222,7 +43273,7 @@ var require_bool$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43222
43273
|
}));
|
|
43223
43274
|
|
|
43224
43275
|
//#endregion
|
|
43225
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43276
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/stringify/stringifyNumber.js
|
|
43226
43277
|
var require_stringifyNumber = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43227
43278
|
function stringifyNumber({ format, minFractionDigits, tag, value }) {
|
|
43228
43279
|
if (typeof value === "bigint") return String(value);
|
|
@@ -43244,7 +43295,7 @@ var require_stringifyNumber = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43244
43295
|
}));
|
|
43245
43296
|
|
|
43246
43297
|
//#endregion
|
|
43247
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43298
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/core/float.js
|
|
43248
43299
|
var require_float$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43249
43300
|
var Scalar = require_Scalar();
|
|
43250
43301
|
var stringifyNumber = require_stringifyNumber();
|
|
@@ -43287,7 +43338,7 @@ var require_float$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43287
43338
|
}));
|
|
43288
43339
|
|
|
43289
43340
|
//#endregion
|
|
43290
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43341
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/core/int.js
|
|
43291
43342
|
var require_int$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43292
43343
|
var stringifyNumber = require_stringifyNumber();
|
|
43293
43344
|
const intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
|
|
@@ -43329,7 +43380,7 @@ var require_int$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43329
43380
|
}));
|
|
43330
43381
|
|
|
43331
43382
|
//#endregion
|
|
43332
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43383
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/core/schema.js
|
|
43333
43384
|
var require_schema$2 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43334
43385
|
var map = require_map();
|
|
43335
43386
|
var _null = require_null();
|
|
@@ -43355,7 +43406,7 @@ var require_schema$2 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43355
43406
|
}));
|
|
43356
43407
|
|
|
43357
43408
|
//#endregion
|
|
43358
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43409
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/json/schema.js
|
|
43359
43410
|
var require_schema$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43360
43411
|
var Scalar = require_Scalar();
|
|
43361
43412
|
var map = require_map();
|
|
@@ -43419,7 +43470,7 @@ var require_schema$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43419
43470
|
}));
|
|
43420
43471
|
|
|
43421
43472
|
//#endregion
|
|
43422
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43473
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/binary.js
|
|
43423
43474
|
var require_binary = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43424
43475
|
var node_buffer = __require$1("buffer");
|
|
43425
43476
|
var Scalar = require_Scalar();
|
|
@@ -43477,7 +43528,7 @@ var require_binary = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43477
43528
|
}));
|
|
43478
43529
|
|
|
43479
43530
|
//#endregion
|
|
43480
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43531
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/pairs.js
|
|
43481
43532
|
var require_pairs = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43482
43533
|
var identity = require_identity();
|
|
43483
43534
|
var Pair = require_Pair();
|
|
@@ -43539,7 +43590,7 @@ var require_pairs = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43539
43590
|
}));
|
|
43540
43591
|
|
|
43541
43592
|
//#endregion
|
|
43542
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43593
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/omap.js
|
|
43543
43594
|
var require_omap = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43544
43595
|
var identity = require_identity();
|
|
43545
43596
|
var toJS = require_toJS();
|
|
@@ -43605,7 +43656,7 @@ var require_omap = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43605
43656
|
}));
|
|
43606
43657
|
|
|
43607
43658
|
//#endregion
|
|
43608
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43659
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/bool.js
|
|
43609
43660
|
var require_bool = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43610
43661
|
var Scalar = require_Scalar();
|
|
43611
43662
|
function boolStringify({ value, source }, ctx) {
|
|
@@ -43633,7 +43684,7 @@ var require_bool = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43633
43684
|
}));
|
|
43634
43685
|
|
|
43635
43686
|
//#endregion
|
|
43636
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43687
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/float.js
|
|
43637
43688
|
var require_float = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43638
43689
|
var Scalar = require_Scalar();
|
|
43639
43690
|
var stringifyNumber = require_stringifyNumber();
|
|
@@ -43679,7 +43730,7 @@ var require_float = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43679
43730
|
}));
|
|
43680
43731
|
|
|
43681
43732
|
//#endregion
|
|
43682
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43733
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/int.js
|
|
43683
43734
|
var require_int = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43684
43735
|
var stringifyNumber = require_stringifyNumber();
|
|
43685
43736
|
const intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
|
|
@@ -43753,7 +43804,7 @@ var require_int = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43753
43804
|
}));
|
|
43754
43805
|
|
|
43755
43806
|
//#endregion
|
|
43756
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43807
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/set.js
|
|
43757
43808
|
var require_set = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43758
43809
|
var identity = require_identity();
|
|
43759
43810
|
var Pair = require_Pair();
|
|
@@ -43823,7 +43874,7 @@ var require_set = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43823
43874
|
}));
|
|
43824
43875
|
|
|
43825
43876
|
//#endregion
|
|
43826
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43877
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
|
|
43827
43878
|
var require_timestamp = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43828
43879
|
var stringifyNumber = require_stringifyNumber();
|
|
43829
43880
|
/** Internal types handle bigint as number, because TS can't figure it out. */
|
|
@@ -43907,7 +43958,7 @@ var require_timestamp = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43907
43958
|
}));
|
|
43908
43959
|
|
|
43909
43960
|
//#endregion
|
|
43910
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
43961
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/schema.js
|
|
43911
43962
|
var require_schema = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43912
43963
|
var map = require_map();
|
|
43913
43964
|
var _null = require_null();
|
|
@@ -43949,7 +44000,7 @@ var require_schema = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
43949
44000
|
}));
|
|
43950
44001
|
|
|
43951
44002
|
//#endregion
|
|
43952
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
44003
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/tags.js
|
|
43953
44004
|
var require_tags = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
43954
44005
|
var map = require_map();
|
|
43955
44006
|
var _null = require_null();
|
|
@@ -44036,7 +44087,7 @@ var require_tags = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
44036
44087
|
}));
|
|
44037
44088
|
|
|
44038
44089
|
//#endregion
|
|
44039
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
44090
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/Schema.js
|
|
44040
44091
|
var require_Schema = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
44041
44092
|
var identity = require_identity();
|
|
44042
44093
|
var map = require_map();
|
|
@@ -44066,7 +44117,7 @@ var require_Schema = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
44066
44117
|
}));
|
|
44067
44118
|
|
|
44068
44119
|
//#endregion
|
|
44069
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
44120
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/stringify/stringifyDocument.js
|
|
44070
44121
|
var require_stringifyDocument = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
44071
44122
|
var identity = require_identity();
|
|
44072
44123
|
var stringify = require_stringify$1();
|
|
@@ -44129,7 +44180,7 @@ var require_stringifyDocument = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
44129
44180
|
}));
|
|
44130
44181
|
|
|
44131
44182
|
//#endregion
|
|
44132
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
44183
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/doc/Document.js
|
|
44133
44184
|
var require_Document = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
44134
44185
|
var Alias = require_Alias();
|
|
44135
44186
|
var Collection = require_Collection();
|
|
@@ -44411,7 +44462,7 @@ var require_Document = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
44411
44462
|
}));
|
|
44412
44463
|
|
|
44413
44464
|
//#endregion
|
|
44414
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
44465
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/errors.js
|
|
44415
44466
|
var require_errors = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
44416
44467
|
var YAMLError = class extends Error {
|
|
44417
44468
|
constructor(name, pos, code, message) {
|
|
@@ -44465,7 +44516,7 @@ var require_errors = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
44465
44516
|
}));
|
|
44466
44517
|
|
|
44467
44518
|
//#endregion
|
|
44468
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
44519
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/resolve-props.js
|
|
44469
44520
|
var require_resolve_props = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
44470
44521
|
function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {
|
|
44471
44522
|
let spaceBefore = false;
|
|
@@ -44573,7 +44624,7 @@ var require_resolve_props = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
44573
44624
|
}));
|
|
44574
44625
|
|
|
44575
44626
|
//#endregion
|
|
44576
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
44627
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/util-contains-newline.js
|
|
44577
44628
|
var require_util_contains_newline = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
44578
44629
|
function containsNewline(key) {
|
|
44579
44630
|
if (!key) return null;
|
|
@@ -44603,7 +44654,7 @@ var require_util_contains_newline = /* @__PURE__ */ __commonJSMin(((exports) =>
|
|
|
44603
44654
|
}));
|
|
44604
44655
|
|
|
44605
44656
|
//#endregion
|
|
44606
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
44657
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/util-flow-indent-check.js
|
|
44607
44658
|
var require_util_flow_indent_check = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
44608
44659
|
var utilContainsNewline = require_util_contains_newline();
|
|
44609
44660
|
function flowIndentCheck(indent, fc, onError) {
|
|
@@ -44616,7 +44667,7 @@ var require_util_flow_indent_check = /* @__PURE__ */ __commonJSMin(((exports) =>
|
|
|
44616
44667
|
}));
|
|
44617
44668
|
|
|
44618
44669
|
//#endregion
|
|
44619
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
44670
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/util-map-includes.js
|
|
44620
44671
|
var require_util_map_includes = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
44621
44672
|
var identity = require_identity();
|
|
44622
44673
|
function mapIncludes(ctx, items, search) {
|
|
@@ -44629,7 +44680,7 @@ var require_util_map_includes = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
44629
44680
|
}));
|
|
44630
44681
|
|
|
44631
44682
|
//#endregion
|
|
44632
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
44683
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/resolve-block-map.js
|
|
44633
44684
|
var require_resolve_block_map = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
44634
44685
|
var Pair = require_Pair();
|
|
44635
44686
|
var YAMLMap = require_YAMLMap();
|
|
@@ -44718,7 +44769,7 @@ var require_resolve_block_map = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
44718
44769
|
}));
|
|
44719
44770
|
|
|
44720
44771
|
//#endregion
|
|
44721
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
44772
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/resolve-block-seq.js
|
|
44722
44773
|
var require_resolve_block_seq = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
44723
44774
|
var YAMLSeq = require_YAMLSeq();
|
|
44724
44775
|
var resolveProps = require_resolve_props();
|
|
@@ -44764,7 +44815,7 @@ var require_resolve_block_seq = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
44764
44815
|
}));
|
|
44765
44816
|
|
|
44766
44817
|
//#endregion
|
|
44767
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
44818
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/resolve-end.js
|
|
44768
44819
|
var require_resolve_end = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
44769
44820
|
function resolveEnd(end, offset, reqSpace, onError) {
|
|
44770
44821
|
let comment = "";
|
|
@@ -44803,7 +44854,7 @@ var require_resolve_end = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
44803
44854
|
}));
|
|
44804
44855
|
|
|
44805
44856
|
//#endregion
|
|
44806
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
44857
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/resolve-flow-collection.js
|
|
44807
44858
|
var require_resolve_flow_collection = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
44808
44859
|
var identity = require_identity();
|
|
44809
44860
|
var Pair = require_Pair();
|
|
@@ -44967,7 +45018,7 @@ var require_resolve_flow_collection = /* @__PURE__ */ __commonJSMin(((exports) =
|
|
|
44967
45018
|
}));
|
|
44968
45019
|
|
|
44969
45020
|
//#endregion
|
|
44970
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
45021
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/compose-collection.js
|
|
44971
45022
|
var require_compose_collection = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
44972
45023
|
var identity = require_identity();
|
|
44973
45024
|
var Scalar = require_Scalar();
|
|
@@ -45020,7 +45071,7 @@ var require_compose_collection = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
45020
45071
|
}));
|
|
45021
45072
|
|
|
45022
45073
|
//#endregion
|
|
45023
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
45074
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/resolve-block-scalar.js
|
|
45024
45075
|
var require_resolve_block_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
45025
45076
|
var Scalar = require_Scalar();
|
|
45026
45077
|
function resolveBlockScalar(ctx, scalar, onError) {
|
|
@@ -45198,7 +45249,7 @@ var require_resolve_block_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
45198
45249
|
}));
|
|
45199
45250
|
|
|
45200
45251
|
//#endregion
|
|
45201
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
45252
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/resolve-flow-scalar.js
|
|
45202
45253
|
var require_resolve_flow_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
45203
45254
|
var Scalar = require_Scalar();
|
|
45204
45255
|
var resolveEnd = require_resolve_end();
|
|
@@ -45268,40 +45319,41 @@ var require_resolve_flow_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
45268
45319
|
case "`": badChar = `reserved character ${source[0]}`;
|
|
45269
45320
|
}
|
|
45270
45321
|
if (badChar) onError(0, "BAD_SCALAR_START", `Plain value cannot start with ${badChar}`);
|
|
45271
|
-
return
|
|
45322
|
+
return unfoldLines(source);
|
|
45272
45323
|
}
|
|
45273
45324
|
function singleQuotedValue(source, onError) {
|
|
45274
45325
|
if (source[source.length - 1] !== "'" || source.length === 1) onError(source.length, "MISSING_CHAR", "Missing closing 'quote");
|
|
45275
|
-
return
|
|
45326
|
+
return unfoldLines(source.slice(1, -1)).replace(/''/g, "'");
|
|
45276
45327
|
}
|
|
45277
|
-
function
|
|
45328
|
+
function unfoldLines(source) {
|
|
45329
|
+
const line = /(.*?)\r?\n/sy;
|
|
45330
|
+
let match = line.exec(source);
|
|
45331
|
+
if (!match) return source;
|
|
45278
45332
|
/**
|
|
45279
|
-
* The negative
|
|
45333
|
+
* The negative lookbehinds in these RegExps are to
|
|
45280
45334
|
* prevent causing a polynomial search time in certain cases.
|
|
45281
45335
|
*
|
|
45282
|
-
* The try-catch is for Safari
|
|
45336
|
+
* The try-catch is for Safari < 16.4 and other old browsers:
|
|
45283
45337
|
* https://caniuse.com/js-regexp-lookbehind
|
|
45284
45338
|
*/
|
|
45285
|
-
let
|
|
45339
|
+
let trimEnd, trimBoth;
|
|
45286
45340
|
try {
|
|
45287
|
-
|
|
45288
|
-
|
|
45341
|
+
trimEnd = new RegExp("(?<![ ])[ ]+$");
|
|
45342
|
+
trimBoth = new RegExp("^[ ]+|(?<![ ])[ ]+$", "g");
|
|
45289
45343
|
} catch {
|
|
45290
|
-
|
|
45291
|
-
|
|
45344
|
+
trimEnd = /[ \t]+$/;
|
|
45345
|
+
trimBoth = /^[ \t]+|[ \t]+$/g;
|
|
45292
45346
|
}
|
|
45293
|
-
let
|
|
45294
|
-
if (!match) return source;
|
|
45295
|
-
let res = match[1];
|
|
45347
|
+
let res = match[1].replace(trimEnd, "");
|
|
45296
45348
|
let sep = " ";
|
|
45297
|
-
let pos =
|
|
45298
|
-
line.lastIndex = pos;
|
|
45349
|
+
let pos = line.lastIndex;
|
|
45299
45350
|
while (match = line.exec(source)) {
|
|
45300
|
-
|
|
45351
|
+
const lm = match[1].replace(trimBoth, "");
|
|
45352
|
+
if (lm === "") {
|
|
45301
45353
|
if (sep === "\n") res += sep;
|
|
45302
45354
|
else sep = "\n";
|
|
45303
45355
|
} else {
|
|
45304
|
-
res += sep +
|
|
45356
|
+
res += sep + lm;
|
|
45305
45357
|
sep = " ";
|
|
45306
45358
|
}
|
|
45307
45359
|
pos = line.lastIndex;
|
|
@@ -45403,7 +45455,7 @@ var require_resolve_flow_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
45403
45455
|
}));
|
|
45404
45456
|
|
|
45405
45457
|
//#endregion
|
|
45406
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
45458
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/compose-scalar.js
|
|
45407
45459
|
var require_compose_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
45408
45460
|
var identity = require_identity();
|
|
45409
45461
|
var Scalar = require_Scalar();
|
|
@@ -45465,7 +45517,7 @@ var require_compose_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
45465
45517
|
}));
|
|
45466
45518
|
|
|
45467
45519
|
//#endregion
|
|
45468
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
45520
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/util-empty-scalar-position.js
|
|
45469
45521
|
var require_util_empty_scalar_position = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
45470
45522
|
function emptyScalarPosition(offset, before, pos) {
|
|
45471
45523
|
if (before) {
|
|
@@ -45493,7 +45545,7 @@ var require_util_empty_scalar_position = /* @__PURE__ */ __commonJSMin(((exports
|
|
|
45493
45545
|
}));
|
|
45494
45546
|
|
|
45495
45547
|
//#endregion
|
|
45496
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
45548
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/compose-node.js
|
|
45497
45549
|
var require_compose_node = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
45498
45550
|
var Alias = require_Alias();
|
|
45499
45551
|
var identity = require_identity();
|
|
@@ -45585,7 +45637,7 @@ var require_compose_node = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
45585
45637
|
}));
|
|
45586
45638
|
|
|
45587
45639
|
//#endregion
|
|
45588
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
45640
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/compose-doc.js
|
|
45589
45641
|
var require_compose_doc = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
45590
45642
|
var Document = require_Document();
|
|
45591
45643
|
var composeNode = require_compose_node();
|
|
@@ -45628,7 +45680,7 @@ var require_compose_doc = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
45628
45680
|
}));
|
|
45629
45681
|
|
|
45630
45682
|
//#endregion
|
|
45631
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
45683
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/composer.js
|
|
45632
45684
|
var require_composer = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
45633
45685
|
var node_process$1 = __require$1("process");
|
|
45634
45686
|
var directives = require_directives();
|
|
@@ -45827,7 +45879,7 @@ var require_composer = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
45827
45879
|
}));
|
|
45828
45880
|
|
|
45829
45881
|
//#endregion
|
|
45830
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
45882
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/parse/cst-scalar.js
|
|
45831
45883
|
var require_cst_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
45832
45884
|
var resolveBlockScalar = require_resolve_block_scalar();
|
|
45833
45885
|
var resolveFlowScalar = require_resolve_flow_scalar();
|
|
@@ -46095,7 +46147,7 @@ var require_cst_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
46095
46147
|
}));
|
|
46096
46148
|
|
|
46097
46149
|
//#endregion
|
|
46098
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
46150
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/parse/cst-stringify.js
|
|
46099
46151
|
var require_cst_stringify = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
46100
46152
|
/**
|
|
46101
46153
|
* Stringify a CST document, token, or collection item
|
|
@@ -46147,7 +46199,7 @@ var require_cst_stringify = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
46147
46199
|
}));
|
|
46148
46200
|
|
|
46149
46201
|
//#endregion
|
|
46150
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
46202
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/parse/cst-visit.js
|
|
46151
46203
|
var require_cst_visit = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
46152
46204
|
const BREAK = Symbol("break visit");
|
|
46153
46205
|
const SKIP = Symbol("skip children");
|
|
@@ -46239,7 +46291,7 @@ var require_cst_visit = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
46239
46291
|
}));
|
|
46240
46292
|
|
|
46241
46293
|
//#endregion
|
|
46242
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
46294
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/parse/cst.js
|
|
46243
46295
|
var require_cst = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
46244
46296
|
var cstScalar = require_cst_scalar();
|
|
46245
46297
|
var cstStringify = require_cst_stringify();
|
|
@@ -46319,7 +46371,7 @@ var require_cst = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
46319
46371
|
}));
|
|
46320
46372
|
|
|
46321
46373
|
//#endregion
|
|
46322
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
46374
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/parse/lexer.js
|
|
46323
46375
|
var require_lexer = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
46324
46376
|
var cst = require_cst();
|
|
46325
46377
|
function isEmpty(ch) {
|
|
@@ -46853,7 +46905,7 @@ var require_lexer = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
46853
46905
|
}));
|
|
46854
46906
|
|
|
46855
46907
|
//#endregion
|
|
46856
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
46908
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/parse/line-counter.js
|
|
46857
46909
|
var require_line_counter = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
46858
46910
|
/**
|
|
46859
46911
|
* Tracks newlines during parsing in order to provide an efficient API for
|
|
@@ -46901,7 +46953,7 @@ var require_line_counter = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
46901
46953
|
}));
|
|
46902
46954
|
|
|
46903
46955
|
//#endregion
|
|
46904
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
46956
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/parse/parser.js
|
|
46905
46957
|
var require_parser = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
46906
46958
|
var node_process = __require$1("process");
|
|
46907
46959
|
var cst = require_cst();
|
|
@@ -47768,7 +47820,7 @@ var require_parser = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
47768
47820
|
}));
|
|
47769
47821
|
|
|
47770
47822
|
//#endregion
|
|
47771
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
47823
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/public-api.js
|
|
47772
47824
|
var require_public_api = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
47773
47825
|
var composer = require_composer();
|
|
47774
47826
|
var Document = require_Document();
|
|
@@ -47858,7 +47910,7 @@ var require_public_api = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
47858
47910
|
}));
|
|
47859
47911
|
|
|
47860
47912
|
//#endregion
|
|
47861
|
-
//#region ../../node_modules/.pnpm/yaml@2.9.
|
|
47913
|
+
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/index.js
|
|
47862
47914
|
var require_dist = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
47863
47915
|
var composer = require_composer();
|
|
47864
47916
|
var Document = require_Document();
|
|
@@ -56317,6 +56369,7 @@ var changesets_exports = /* @__PURE__ */ __exportAll({
|
|
|
56317
56369
|
ChangelogTransformer: () => ChangelogTransformer,
|
|
56318
56370
|
ChangesetIOError: () => ChangesetIOError,
|
|
56319
56371
|
ChangesetLinter: () => ChangesetLinter,
|
|
56372
|
+
ChangesetLogMode: () => ChangesetLogMode,
|
|
56320
56373
|
ChangesetOptionsSchema: () => ChangesetOptionsSchema,
|
|
56321
56374
|
ChangesetPreviewSchema: () => ChangesetPreviewSchema,
|
|
56322
56375
|
ChangesetSchema: () => ChangesetSchema,
|
|
@@ -56403,6 +56456,7 @@ var changesets_exports = /* @__PURE__ */ __exportAll({
|
|
|
56403
56456
|
isPureDependencyChangeset: () => isPureDependencyChangeset,
|
|
56404
56457
|
listPublishablePackageNames: () => listPublishablePackageNames,
|
|
56405
56458
|
makeBranchAnalyzerTest: () => makeBranchAnalyzerTest,
|
|
56459
|
+
makeChangelogFunctions: () => makeChangelogFunctions,
|
|
56406
56460
|
makeConfigInspectorTest: () => makeConfigInspectorTest,
|
|
56407
56461
|
makeDepsRegenDefault: () => makeDepsRegenDefault,
|
|
56408
56462
|
makeGitHubTest: () => makeGitHubTest,
|
|
@@ -56417,13 +56471,23 @@ var changesets_exports = /* @__PURE__ */ __exportAll({
|
|
|
56417
56471
|
/**
|
|
56418
56472
|
* Changesets API changelog formatter shim for \@savvy-web/silk.
|
|
56419
56473
|
*
|
|
56420
|
-
* Drop-in replacement for \@savvy-web/changesets/changelog
|
|
56421
|
-
*
|
|
56422
|
-
*
|
|
56474
|
+
* Drop-in replacement for \@savvy-web/changesets/changelog (superseded by
|
|
56475
|
+
* \@savvy-web/changelog, which this mirrors exactly). The default export is
|
|
56476
|
+
* the ChangelogFunctions object consumed by the Changesets CLI via the
|
|
56477
|
+
* changelog field in .changeset/config.json.
|
|
56478
|
+
*
|
|
56479
|
+
* This shim is the host adapter for the changesets CLI, a foreign process
|
|
56480
|
+
* that supplies no context of its own, so the warning mode is read from
|
|
56481
|
+
* `process.env` HERE and handed to the engine, which never reads it.
|
|
56423
56482
|
*
|
|
56424
56483
|
* @packageDocumentation
|
|
56425
56484
|
*/
|
|
56426
|
-
const
|
|
56485
|
+
const logMode = () => {
|
|
56486
|
+
if (process.env.VITEST) return "silent";
|
|
56487
|
+
if (process.env.GITHUB_ACTIONS === "true") return "github";
|
|
56488
|
+
return "stderr";
|
|
56489
|
+
};
|
|
56490
|
+
const changelogFunctions = changesets_exports.makeChangelogFunctions({ logMode: logMode() });
|
|
56427
56491
|
|
|
56428
56492
|
//#endregion
|
|
56429
56493
|
export { changelogFunctions as default };
|