@savvy-web/silk 2.0.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -5
- package/changesets-changelog.cjs +109 -61
- package/changesets-changelog.d.cts +1 -1
- package/changesets-changelog.d.ts +1 -1
- package/changesets-changelog.js +54099 -1
- package/changesets-markdownlint.cjs +109 -61
- package/changesets-markdownlint.d.cts +1 -1
- package/changesets-markdownlint.d.ts +1 -1
- package/changesets-markdownlint.js +54099 -1
- package/package.json +5 -4
- package/tsconfig/node/dist/tsconfig.tsbuildinfo +1 -1
- package/_virtual/_rolldown/runtime.cjs +0 -45
- package/_virtual/_rolldown/runtime.js +0 -45
- package/packages/silk-effects/dist/dev/pkg/_virtual/_rolldown/runtime.cjs +0 -15
- package/packages/silk-effects/dist/dev/pkg/_virtual/_rolldown/runtime.js +0 -14
- package/packages/silk-effects/dist/dev/pkg/changesets/api/categories.cjs +0 -247
- package/packages/silk-effects/dist/dev/pkg/changesets/api/categories.js +0 -247
- package/packages/silk-effects/dist/dev/pkg/changesets/api/changelog.cjs +0 -134
- package/packages/silk-effects/dist/dev/pkg/changesets/api/changelog.js +0 -134
- package/packages/silk-effects/dist/dev/pkg/changesets/api/dependency-table.cjs +0 -163
- package/packages/silk-effects/dist/dev/pkg/changesets/api/dependency-table.js +0 -163
- package/packages/silk-effects/dist/dev/pkg/changesets/api/linter.cjs +0 -170
- package/packages/silk-effects/dist/dev/pkg/changesets/api/linter.js +0 -170
- package/packages/silk-effects/dist/dev/pkg/changesets/api/transformer.cjs +0 -134
- package/packages/silk-effects/dist/dev/pkg/changesets/api/transformer.js +0 -134
- package/packages/silk-effects/dist/dev/pkg/changesets/categories/index.cjs +0 -317
- package/packages/silk-effects/dist/dev/pkg/changesets/categories/index.js +0 -299
- package/packages/silk-effects/dist/dev/pkg/changesets/categories/types.cjs +0 -65
- package/packages/silk-effects/dist/dev/pkg/changesets/categories/types.js +0 -65
- package/packages/silk-effects/dist/dev/pkg/changesets/changelog/formatting.cjs +0 -114
- package/packages/silk-effects/dist/dev/pkg/changesets/changelog/formatting.js +0 -113
- package/packages/silk-effects/dist/dev/pkg/changesets/changelog/getDependencyReleaseLine.cjs +0 -118
- package/packages/silk-effects/dist/dev/pkg/changesets/changelog/getDependencyReleaseLine.js +0 -118
- package/packages/silk-effects/dist/dev/pkg/changesets/changelog/getReleaseLine.cjs +0 -122
- package/packages/silk-effects/dist/dev/pkg/changesets/changelog/getReleaseLine.js +0 -122
- package/packages/silk-effects/dist/dev/pkg/changesets/changelog/index.cjs +0 -97
- package/packages/silk-effects/dist/dev/pkg/changesets/changelog/index.js +0 -97
- package/packages/silk-effects/dist/dev/pkg/changesets/constants.cjs +0 -43
- package/packages/silk-effects/dist/dev/pkg/changesets/constants.js +0 -42
- package/packages/silk-effects/dist/dev/pkg/changesets/errors.cjs +0 -386
- package/packages/silk-effects/dist/dev/pkg/changesets/errors.js +0 -371
- package/packages/silk-effects/dist/dev/pkg/changesets/index.cjs +0 -300
- package/packages/silk-effects/dist/dev/pkg/changesets/index.js +0 -179
- package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/index.cjs +0 -34
- package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/index.js +0 -29
- package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/content-structure.cjs +0 -98
- package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/content-structure.js +0 -98
- package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/dependency-table-format.cjs +0 -170
- package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/dependency-table-format.js +0 -170
- package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/heading-hierarchy.cjs +0 -61
- package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/heading-hierarchy.js +0 -61
- package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/required-sections.cjs +0 -54
- package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/required-sections.js +0 -54
- package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/uncategorized-content.cjs +0 -54
- package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/uncategorized-content.js +0 -54
- package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/utils.cjs +0 -31
- package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/utils.js +0 -30
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/aggregate-dependency-tables.cjs +0 -47
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/aggregate-dependency-tables.js +0 -47
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/contributor-footnotes.cjs +0 -123
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/contributor-footnotes.js +0 -123
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/deduplicate-items.cjs +0 -32
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/deduplicate-items.js +0 -32
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/issue-link-refs.cjs +0 -59
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/issue-link-refs.js +0 -59
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/maintenance-note.cjs +0 -61
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/maintenance-note.js +0 -61
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/merge-sections.cjs +0 -43
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/merge-sections.js +0 -43
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/normalize-format.cjs +0 -47
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/normalize-format.js +0 -47
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/reorder-sections.cjs +0 -34
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/reorder-sections.js +0 -34
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/presets.cjs +0 -120
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/presets.js +0 -119
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/content-structure.cjs +0 -22
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/content-structure.js +0 -22
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/dependency-table-format.cjs +0 -40
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/dependency-table-format.js +0 -40
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/heading-hierarchy.cjs +0 -19
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/heading-hierarchy.js +0 -19
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/required-sections.cjs +0 -17
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/required-sections.js +0 -17
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/uncategorized-content.cjs +0 -31
- package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/uncategorized-content.js +0 -31
- package/packages/silk-effects/dist/dev/pkg/changesets/schemas/changeset.cjs +0 -148
- package/packages/silk-effects/dist/dev/pkg/changesets/schemas/changeset.js +0 -145
- package/packages/silk-effects/dist/dev/pkg/changesets/schemas/dependency-table.cjs +0 -203
- package/packages/silk-effects/dist/dev/pkg/changesets/schemas/dependency-table.js +0 -198
- package/packages/silk-effects/dist/dev/pkg/changesets/schemas/git.cjs +0 -69
- package/packages/silk-effects/dist/dev/pkg/changesets/schemas/git.js +0 -68
- package/packages/silk-effects/dist/dev/pkg/changesets/schemas/github.cjs +0 -177
- package/packages/silk-effects/dist/dev/pkg/changesets/schemas/github.js +0 -174
- package/packages/silk-effects/dist/dev/pkg/changesets/schemas/options.cjs +0 -183
- package/packages/silk-effects/dist/dev/pkg/changesets/schemas/options.js +0 -181
- package/packages/silk-effects/dist/dev/pkg/changesets/schemas/package-scope.cjs +0 -129
- package/packages/silk-effects/dist/dev/pkg/changesets/schemas/package-scope.js +0 -127
- package/packages/silk-effects/dist/dev/pkg/changesets/schemas/primitives.cjs +0 -72
- package/packages/silk-effects/dist/dev/pkg/changesets/schemas/primitives.js +0 -71
- package/packages/silk-effects/dist/dev/pkg/changesets/schemas/release-plan.cjs +0 -62
- package/packages/silk-effects/dist/dev/pkg/changesets/schemas/release-plan.js +0 -56
- package/packages/silk-effects/dist/dev/pkg/changesets/schemas/version-files.cjs +0 -154
- package/packages/silk-effects/dist/dev/pkg/changesets/schemas/version-files.js +0 -150
- package/packages/silk-effects/dist/dev/pkg/changesets/services/branch-analyzer.cjs +0 -300
- package/packages/silk-effects/dist/dev/pkg/changesets/services/branch-analyzer.js +0 -294
- package/packages/silk-effects/dist/dev/pkg/changesets/services/changelog.cjs +0 -50
- package/packages/silk-effects/dist/dev/pkg/changesets/services/changelog.js +0 -49
- package/packages/silk-effects/dist/dev/pkg/changesets/services/config-inspector.cjs +0 -489
- package/packages/silk-effects/dist/dev/pkg/changesets/services/config-inspector.js +0 -481
- package/packages/silk-effects/dist/dev/pkg/changesets/services/deps-regen.cjs +0 -375
- package/packages/silk-effects/dist/dev/pkg/changesets/services/deps-regen.js +0 -371
- package/packages/silk-effects/dist/dev/pkg/changesets/services/github.cjs +0 -160
- package/packages/silk-effects/dist/dev/pkg/changesets/services/github.js +0 -157
- package/packages/silk-effects/dist/dev/pkg/changesets/services/maintenance-reason.cjs +0 -68
- package/packages/silk-effects/dist/dev/pkg/changesets/services/maintenance-reason.js +0 -66
- package/packages/silk-effects/dist/dev/pkg/changesets/services/markdown.cjs +0 -87
- package/packages/silk-effects/dist/dev/pkg/changesets/services/markdown.js +0 -85
- package/packages/silk-effects/dist/dev/pkg/changesets/services/release-planner.cjs +0 -352
- package/packages/silk-effects/dist/dev/pkg/changesets/services/release-planner.js +0 -348
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/commit-parser.cjs +0 -81
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/commit-parser.js +0 -80
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/dep-diff.cjs +0 -111
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/dep-diff.js +0 -111
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/dependency-table.cjs +0 -351
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/dependency-table.js +0 -347
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/git.cjs +0 -51
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/git.js +0 -51
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/issue-refs.cjs +0 -102
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/issue-refs.js +0 -101
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/jsonpath.cjs +0 -178
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/jsonpath.js +0 -175
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/logger.cjs +0 -51
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/logger.js +0 -50
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/markdown-link.cjs +0 -59
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/markdown-link.js +0 -57
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/publishability.cjs +0 -50
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/publishability.js +0 -50
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/remark-pipeline.cjs +0 -81
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/remark-pipeline.js +0 -79
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/section-parser.cjs +0 -94
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/section-parser.js +0 -94
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/strip-frontmatter.cjs +0 -47
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/strip-frontmatter.js +0 -46
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/version-blocks.cjs +0 -110
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/version-blocks.js +0 -108
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/version-files.cjs +0 -336
- package/packages/silk-effects/dist/dev/pkg/changesets/utils/version-files.js +0 -336
- package/packages/silk-effects/dist/dev/pkg/changesets/vendor/github-info.cjs +0 -77
- package/packages/silk-effects/dist/dev/pkg/changesets/vendor/github-info.js +0 -77
- package/packages/silk-effects/dist/dev/pkg/errors/ChangesetConfigError.cjs +0 -21
- package/packages/silk-effects/dist/dev/pkg/errors/ChangesetConfigError.js +0 -21
- package/packages/silk-effects/dist/dev/pkg/schemas/VersioningSchemas.cjs +0 -101
- package/packages/silk-effects/dist/dev/pkg/schemas/VersioningSchemas.js +0 -99
- package/packages/silk-effects/dist/dev/pkg/services/ChangesetConfig.cjs +0 -81
- package/packages/silk-effects/dist/dev/pkg/services/ChangesetConfig.js +0 -80
- package/packages/silk-effects/dist/dev/pkg/services/ChangesetConfigReader.cjs +0 -109
- package/packages/silk-effects/dist/dev/pkg/services/ChangesetConfigReader.js +0 -108
- package/packages/silk-effects/dist/dev/pkg/services/SilkPublishability.cjs +0 -238
- package/packages/silk-effects/dist/dev/pkg/services/SilkPublishability.js +0 -236
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
import { NonEmptyString } from "./primitives.js";
|
|
2
|
-
import { Schema } from "effect";
|
|
3
|
-
|
|
4
|
-
//#region ../silk-effects/dist/dev/pkg/changesets/schemas/dependency-table.js
|
|
5
|
-
/**
|
|
6
|
-
* Effect schemas for structured dependency table entries.
|
|
7
|
-
*
|
|
8
|
-
* @remarks
|
|
9
|
-
* These schemas define the canonical representation for dependency
|
|
10
|
-
* changes tracked as markdown tables in changeset files and CHANGELOGs.
|
|
11
|
-
* The table format provides a richer view than {@link DependencyUpdateSchema}
|
|
12
|
-
* by supporting singular dependency type names, workspace/config types,
|
|
13
|
-
* and explicit add/update/remove actions.
|
|
14
|
-
*
|
|
15
|
-
* A dependency table row looks like this in a CHANGELOG:
|
|
16
|
-
*
|
|
17
|
-
* | Dependency | Type | Action | From | To |
|
|
18
|
-
* |---|---|---|---|---|
|
|
19
|
-
* | effect | dependency | updated | 3.18.0 | 3.19.1 |
|
|
20
|
-
*
|
|
21
|
-
* @see {@link DependencyUpdateSchema} for the simpler Changesets API format
|
|
22
|
-
* @see {@link https://effect.website/docs/schema/introduction | Effect Schema documentation}
|
|
23
|
-
*
|
|
24
|
-
*/
|
|
25
|
-
/**
|
|
26
|
-
* Valid dependency table actions.
|
|
27
|
-
*
|
|
28
|
-
* @remarks
|
|
29
|
-
* Represents the three possible operations on a dependency: `"added"` for
|
|
30
|
-
* new dependencies, `"updated"` for version changes, and `"removed"` for
|
|
31
|
-
* deletions. Used in the "Action" column of dependency tables.
|
|
32
|
-
*
|
|
33
|
-
* @example
|
|
34
|
-
* ```typescript
|
|
35
|
-
* import { Schema } from "effect";
|
|
36
|
-
* import { DependencyActionSchema } from "@savvy-web/changesets";
|
|
37
|
-
* import type { DependencyAction } from "@savvy-web/changesets";
|
|
38
|
-
*
|
|
39
|
-
* const action: DependencyAction = Schema.decodeUnknownSync(DependencyActionSchema)("updated");
|
|
40
|
-
* ```
|
|
41
|
-
*
|
|
42
|
-
* @public
|
|
43
|
-
*/
|
|
44
|
-
const DependencyActionSchema = Schema.Literal("added", "updated", "removed");
|
|
45
|
-
/**
|
|
46
|
-
* Extended dependency types for table format.
|
|
47
|
-
*
|
|
48
|
-
* @remarks
|
|
49
|
-
* Unlike {@link DependencyTypeSchema} (which uses plural npm field names like
|
|
50
|
-
* `"dependencies"`), this schema uses singular forms (`"dependency"`) and adds
|
|
51
|
-
* two additional types: `"workspace"` for monorepo workspace references and
|
|
52
|
-
* `"config"` for configuration toolchain updates (e.g., ESLint, TypeScript).
|
|
53
|
-
*
|
|
54
|
-
* @example
|
|
55
|
-
* ```typescript
|
|
56
|
-
* import { Schema } from "effect";
|
|
57
|
-
* import { DependencyTableTypeSchema } from "@savvy-web/changesets";
|
|
58
|
-
* import type { DependencyTableType } from "@savvy-web/changesets";
|
|
59
|
-
*
|
|
60
|
-
* const tableType: DependencyTableType = Schema.decodeUnknownSync(
|
|
61
|
-
* DependencyTableTypeSchema
|
|
62
|
-
* )("workspace");
|
|
63
|
-
* ```
|
|
64
|
-
*
|
|
65
|
-
* @see {@link DependencyTypeSchema} for the plural npm-field variant
|
|
66
|
-
*
|
|
67
|
-
* @public
|
|
68
|
-
*/
|
|
69
|
-
const DependencyTableTypeSchema = Schema.Literal("dependency", "devDependency", "peerDependency", "optionalDependency", "workspace", "config");
|
|
70
|
-
/**
|
|
71
|
-
* The canonical accepted-value pattern for a dependency-table From/To cell:
|
|
72
|
-
* the em-dash sentinel (U+2014), a bare/`~`/`^` semver, or — as a last-resort
|
|
73
|
-
* fallback when a `catalog:`/`workspace:` specifier could not be resolved to a
|
|
74
|
-
* concrete version — a pnpm protocol string. Non-overlapping alternatives keep
|
|
75
|
-
* this free of polynomial backtracking (CodeQL).
|
|
76
|
-
*
|
|
77
|
-
* @public
|
|
78
|
-
*/
|
|
79
|
-
const VERSION_RE = /^(\u2014|[~^]?\d+\.\d+\.\d+(?:[-+.][\w.+-]+)?|(?:catalog|workspace|npm|jsr|file|link|portal):[^\s|]+)$/;
|
|
80
|
-
/**
|
|
81
|
-
* Version string or em dash (U+2014) sentinel for added/removed entries.
|
|
82
|
-
*
|
|
83
|
-
* @remarks
|
|
84
|
-
* Accepts either a semver-like version string (with optional `~` or `^`
|
|
85
|
-
* prefix and pre-release/build suffixes) or the em dash character `\u2014`
|
|
86
|
-
* which serves as a sentinel: the "From" column uses `\u2014` for newly
|
|
87
|
-
* added dependencies, and the "To" column uses it for removed ones.
|
|
88
|
-
*
|
|
89
|
-
* @example
|
|
90
|
-
* ```typescript
|
|
91
|
-
* import { Schema } from "effect";
|
|
92
|
-
* import { VersionOrEmptySchema } from "@savvy-web/changesets";
|
|
93
|
-
*
|
|
94
|
-
* // Succeeds — semver version
|
|
95
|
-
* Schema.decodeUnknownSync(VersionOrEmptySchema)("^3.19.1");
|
|
96
|
-
*
|
|
97
|
-
* // Succeeds — em dash sentinel for "no version"
|
|
98
|
-
* Schema.decodeUnknownSync(VersionOrEmptySchema)("\u2014");
|
|
99
|
-
*
|
|
100
|
-
* // Throws ParseError — arbitrary text
|
|
101
|
-
* Schema.decodeUnknownSync(VersionOrEmptySchema)("latest");
|
|
102
|
-
* ```
|
|
103
|
-
*
|
|
104
|
-
* @public
|
|
105
|
-
*/
|
|
106
|
-
const VersionOrEmptySchema = Schema.String.pipe(Schema.pattern(VERSION_RE));
|
|
107
|
-
/**
|
|
108
|
-
* Schema for a single dependency table row.
|
|
109
|
-
*
|
|
110
|
-
* @remarks
|
|
111
|
-
* Represents one row of a dependency update table in a CHANGELOG.
|
|
112
|
-
* Each row captures the dependency name, its type, the change action,
|
|
113
|
-
* and the "from" and "to" version strings. For added dependencies the
|
|
114
|
-
* `from` field is an em dash; for removed dependencies the `to` field
|
|
115
|
-
* is an em dash.
|
|
116
|
-
*
|
|
117
|
-
* @example
|
|
118
|
-
* ```typescript
|
|
119
|
-
* import { Schema } from "effect";
|
|
120
|
-
* import { DependencyTableRowSchema } from "@savvy-web/changesets";
|
|
121
|
-
* import type { DependencyTableRow } from "@savvy-web/changesets";
|
|
122
|
-
*
|
|
123
|
-
* const row: DependencyTableRow = Schema.decodeUnknownSync(DependencyTableRowSchema)({
|
|
124
|
-
* dependency: "effect",
|
|
125
|
-
* type: "dependency",
|
|
126
|
-
* action: "updated",
|
|
127
|
-
* from: "3.18.0",
|
|
128
|
-
* to: "3.19.1",
|
|
129
|
-
* });
|
|
130
|
-
*
|
|
131
|
-
* // Newly added dependency — "from" is em dash
|
|
132
|
-
* const addedRow: DependencyTableRow = Schema.decodeUnknownSync(DependencyTableRowSchema)({
|
|
133
|
-
* dependency: "@effect/cli",
|
|
134
|
-
* type: "dependency",
|
|
135
|
-
* action: "added",
|
|
136
|
-
* from: "\u2014",
|
|
137
|
-
* to: "0.50.0",
|
|
138
|
-
* });
|
|
139
|
-
* ```
|
|
140
|
-
*
|
|
141
|
-
* @see {@link DependencyTableRow} for the inferred TypeScript type
|
|
142
|
-
* @see {@link DependencyTableSchema} for a non-empty array of rows
|
|
143
|
-
*
|
|
144
|
-
* @public
|
|
145
|
-
*/
|
|
146
|
-
const DependencyTableRowSchema = Schema.Struct({
|
|
147
|
-
/** Package or toolchain name. */
|
|
148
|
-
dependency: NonEmptyString,
|
|
149
|
-
/** Dependency type. */
|
|
150
|
-
type: DependencyTableTypeSchema,
|
|
151
|
-
/** Change action. */
|
|
152
|
-
action: DependencyActionSchema,
|
|
153
|
-
/** Previous version (em dash for added). */
|
|
154
|
-
from: VersionOrEmptySchema,
|
|
155
|
-
/** New version (em dash for removed). */
|
|
156
|
-
to: VersionOrEmptySchema
|
|
157
|
-
});
|
|
158
|
-
/**
|
|
159
|
-
* Schema for a dependency table (non-empty array of rows).
|
|
160
|
-
*
|
|
161
|
-
* @remarks
|
|
162
|
-
* Validates that the table contains at least one row. Used to represent
|
|
163
|
-
* the full dependency update table in a changeset or CHANGELOG entry.
|
|
164
|
-
*
|
|
165
|
-
* @example
|
|
166
|
-
* ```typescript
|
|
167
|
-
* import { Schema } from "effect";
|
|
168
|
-
* import { DependencyTableSchema } from "@savvy-web/changesets";
|
|
169
|
-
*
|
|
170
|
-
* const table = Schema.decodeUnknownSync(DependencyTableSchema)([
|
|
171
|
-
* {
|
|
172
|
-
* dependency: "effect",
|
|
173
|
-
* type: "dependency",
|
|
174
|
-
* action: "updated",
|
|
175
|
-
* from: "3.18.0",
|
|
176
|
-
* to: "3.19.1",
|
|
177
|
-
* },
|
|
178
|
-
* {
|
|
179
|
-
* dependency: "typescript",
|
|
180
|
-
* type: "config",
|
|
181
|
-
* action: "updated",
|
|
182
|
-
* from: "5.6.0",
|
|
183
|
-
* to: "5.7.2",
|
|
184
|
-
* },
|
|
185
|
-
* ]);
|
|
186
|
-
*
|
|
187
|
-
* // Throws ParseError — empty array
|
|
188
|
-
* Schema.decodeUnknownSync(DependencyTableSchema)([]);
|
|
189
|
-
* ```
|
|
190
|
-
*
|
|
191
|
-
* @see {@link DependencyTableRowSchema} for the individual row schema
|
|
192
|
-
*
|
|
193
|
-
* @public
|
|
194
|
-
*/
|
|
195
|
-
const DependencyTableSchema = Schema.Array(DependencyTableRowSchema).pipe(Schema.minItems(1));
|
|
196
|
-
|
|
197
|
-
//#endregion
|
|
198
|
-
export { DependencyActionSchema, DependencyTableRowSchema, DependencyTableSchema, DependencyTableTypeSchema, VERSION_RE, VersionOrEmptySchema };
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
let effect = require("effect");
|
|
2
|
-
|
|
3
|
-
//#region ../silk-effects/dist/dev/pkg/changesets/schemas/git.js
|
|
4
|
-
/**
|
|
5
|
-
* Git-related Effect schemas for commit hashes and version bump types.
|
|
6
|
-
*
|
|
7
|
-
* @see {@link https://effect.website/docs/schema/introduction | Effect Schema documentation}
|
|
8
|
-
*
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* Schema for a git commit hash (at least 7 lowercase hex characters).
|
|
12
|
-
*
|
|
13
|
-
* @remarks
|
|
14
|
-
* Accepts both abbreviated (7-character) and full (40-character) SHA-1 hashes.
|
|
15
|
-
* Only lowercase hexadecimal characters are allowed; uppercase letters will
|
|
16
|
-
* fail validation. This matches the output of `git rev-parse --short` and
|
|
17
|
-
* `git log --format=%h`.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```typescript
|
|
21
|
-
* import { Schema } from "effect";
|
|
22
|
-
* import { CommitHashSchema } from "@savvy-web/changesets";
|
|
23
|
-
*
|
|
24
|
-
* // Succeeds — abbreviated hash
|
|
25
|
-
* const short = Schema.decodeUnknownSync(CommitHashSchema)("a1b2c3d");
|
|
26
|
-
*
|
|
27
|
-
* // Succeeds — full 40-character SHA
|
|
28
|
-
* const full = Schema.decodeUnknownSync(CommitHashSchema)(
|
|
29
|
-
* "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2"
|
|
30
|
-
* );
|
|
31
|
-
*
|
|
32
|
-
* // Throws ParseError — too short
|
|
33
|
-
* Schema.decodeUnknownSync(CommitHashSchema)("a1b2c3");
|
|
34
|
-
*
|
|
35
|
-
* // Throws ParseError — uppercase not allowed
|
|
36
|
-
* Schema.decodeUnknownSync(CommitHashSchema)("A1B2C3D");
|
|
37
|
-
* ```
|
|
38
|
-
*
|
|
39
|
-
* @see {@link ChangesetSchema} which uses this for the optional `commit` field
|
|
40
|
-
*
|
|
41
|
-
* @public
|
|
42
|
-
*/
|
|
43
|
-
const CommitHashSchema = effect.Schema.String.pipe(effect.Schema.pattern(/^[a-f0-9]{7,}$/, { message: () => "Commit hash must be 7 or more lowercase hexadecimal characters (0-9, a-f). Example: \"a1b2c3d\" or a full 40-character SHA like \"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2\". Uppercase letters are not allowed" }));
|
|
44
|
-
/**
|
|
45
|
-
* Semantic version bump type.
|
|
46
|
-
*
|
|
47
|
-
* @remarks
|
|
48
|
-
* Represents the four possible version bump levels used by Changesets:
|
|
49
|
-
* - `"major"` -- breaking changes (e.g., 1.x.x to 2.0.0)
|
|
50
|
-
* - `"minor"` -- new features (e.g., 1.1.x to 1.2.0)
|
|
51
|
-
* - `"patch"` -- bug fixes (e.g., 1.1.1 to 1.1.2)
|
|
52
|
-
* - `"none"` -- no version bump (internal changes only)
|
|
53
|
-
*
|
|
54
|
-
* @example
|
|
55
|
-
* ```typescript
|
|
56
|
-
* import { Schema } from "effect";
|
|
57
|
-
* import { VersionTypeSchema } from "@savvy-web/changesets";
|
|
58
|
-
* import type { VersionType } from "@savvy-web/changesets";
|
|
59
|
-
*
|
|
60
|
-
* const bump: VersionType = Schema.decodeUnknownSync(VersionTypeSchema)("minor");
|
|
61
|
-
* ```
|
|
62
|
-
*
|
|
63
|
-
* @public
|
|
64
|
-
*/
|
|
65
|
-
const VersionTypeSchema = effect.Schema.Literal("major", "minor", "patch", "none");
|
|
66
|
-
|
|
67
|
-
//#endregion
|
|
68
|
-
exports.CommitHashSchema = CommitHashSchema;
|
|
69
|
-
exports.VersionTypeSchema = VersionTypeSchema;
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { Schema } from "effect";
|
|
2
|
-
|
|
3
|
-
//#region ../silk-effects/dist/dev/pkg/changesets/schemas/git.js
|
|
4
|
-
/**
|
|
5
|
-
* Git-related Effect schemas for commit hashes and version bump types.
|
|
6
|
-
*
|
|
7
|
-
* @see {@link https://effect.website/docs/schema/introduction | Effect Schema documentation}
|
|
8
|
-
*
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* Schema for a git commit hash (at least 7 lowercase hex characters).
|
|
12
|
-
*
|
|
13
|
-
* @remarks
|
|
14
|
-
* Accepts both abbreviated (7-character) and full (40-character) SHA-1 hashes.
|
|
15
|
-
* Only lowercase hexadecimal characters are allowed; uppercase letters will
|
|
16
|
-
* fail validation. This matches the output of `git rev-parse --short` and
|
|
17
|
-
* `git log --format=%h`.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```typescript
|
|
21
|
-
* import { Schema } from "effect";
|
|
22
|
-
* import { CommitHashSchema } from "@savvy-web/changesets";
|
|
23
|
-
*
|
|
24
|
-
* // Succeeds — abbreviated hash
|
|
25
|
-
* const short = Schema.decodeUnknownSync(CommitHashSchema)("a1b2c3d");
|
|
26
|
-
*
|
|
27
|
-
* // Succeeds — full 40-character SHA
|
|
28
|
-
* const full = Schema.decodeUnknownSync(CommitHashSchema)(
|
|
29
|
-
* "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2"
|
|
30
|
-
* );
|
|
31
|
-
*
|
|
32
|
-
* // Throws ParseError — too short
|
|
33
|
-
* Schema.decodeUnknownSync(CommitHashSchema)("a1b2c3");
|
|
34
|
-
*
|
|
35
|
-
* // Throws ParseError — uppercase not allowed
|
|
36
|
-
* Schema.decodeUnknownSync(CommitHashSchema)("A1B2C3D");
|
|
37
|
-
* ```
|
|
38
|
-
*
|
|
39
|
-
* @see {@link ChangesetSchema} which uses this for the optional `commit` field
|
|
40
|
-
*
|
|
41
|
-
* @public
|
|
42
|
-
*/
|
|
43
|
-
const CommitHashSchema = Schema.String.pipe(Schema.pattern(/^[a-f0-9]{7,}$/, { message: () => "Commit hash must be 7 or more lowercase hexadecimal characters (0-9, a-f). Example: \"a1b2c3d\" or a full 40-character SHA like \"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2\". Uppercase letters are not allowed" }));
|
|
44
|
-
/**
|
|
45
|
-
* Semantic version bump type.
|
|
46
|
-
*
|
|
47
|
-
* @remarks
|
|
48
|
-
* Represents the four possible version bump levels used by Changesets:
|
|
49
|
-
* - `"major"` -- breaking changes (e.g., 1.x.x to 2.0.0)
|
|
50
|
-
* - `"minor"` -- new features (e.g., 1.1.x to 1.2.0)
|
|
51
|
-
* - `"patch"` -- bug fixes (e.g., 1.1.1 to 1.1.2)
|
|
52
|
-
* - `"none"` -- no version bump (internal changes only)
|
|
53
|
-
*
|
|
54
|
-
* @example
|
|
55
|
-
* ```typescript
|
|
56
|
-
* import { Schema } from "effect";
|
|
57
|
-
* import { VersionTypeSchema } from "@savvy-web/changesets";
|
|
58
|
-
* import type { VersionType } from "@savvy-web/changesets";
|
|
59
|
-
*
|
|
60
|
-
* const bump: VersionType = Schema.decodeUnknownSync(VersionTypeSchema)("minor");
|
|
61
|
-
* ```
|
|
62
|
-
*
|
|
63
|
-
* @public
|
|
64
|
-
*/
|
|
65
|
-
const VersionTypeSchema = Schema.Literal("major", "minor", "patch", "none");
|
|
66
|
-
|
|
67
|
-
//#endregion
|
|
68
|
-
export { CommitHashSchema, VersionTypeSchema };
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
const require_primitives = require('./primitives.cjs');
|
|
2
|
-
const require_markdown_link = require('../utils/markdown-link.cjs');
|
|
3
|
-
let effect = require("effect");
|
|
4
|
-
|
|
5
|
-
//#region ../silk-effects/dist/dev/pkg/changesets/schemas/github.js
|
|
6
|
-
/**
|
|
7
|
-
* GitHub-related Effect schemas for usernames, issue numbers, and API responses.
|
|
8
|
-
*
|
|
9
|
-
* @remarks
|
|
10
|
-
* These schemas validate data returned by the `\@changesets/get-github-info`
|
|
11
|
-
* vendor module and enforce GitHub's naming conventions for usernames and
|
|
12
|
-
* issue references.
|
|
13
|
-
*
|
|
14
|
-
* @see {@link https://effect.website/docs/schema/introduction | Effect Schema documentation}
|
|
15
|
-
*
|
|
16
|
-
*/
|
|
17
|
-
/**
|
|
18
|
-
* Test whether a string is a valid URL.
|
|
19
|
-
*
|
|
20
|
-
* @internal
|
|
21
|
-
*/
|
|
22
|
-
function isValidUrl(value) {
|
|
23
|
-
try {
|
|
24
|
-
new URL(value);
|
|
25
|
-
return true;
|
|
26
|
-
} catch {
|
|
27
|
-
return false;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Schema for a GitHub username.
|
|
32
|
-
*
|
|
33
|
-
* @remarks
|
|
34
|
-
* Validates against GitHub's username rules: alphanumeric characters and
|
|
35
|
-
* hyphens only, cannot start or end with a hyphen. Does not enforce the
|
|
36
|
-
* 39-character maximum length since GitHub may change that limit.
|
|
37
|
-
*
|
|
38
|
-
* @example
|
|
39
|
-
* ```typescript
|
|
40
|
-
* import { Schema } from "effect";
|
|
41
|
-
* import { UsernameSchema } from "@savvy-web/changesets";
|
|
42
|
-
*
|
|
43
|
-
* // Succeeds
|
|
44
|
-
* Schema.decodeUnknownSync(UsernameSchema)("octocat");
|
|
45
|
-
* Schema.decodeUnknownSync(UsernameSchema)("my-user-123");
|
|
46
|
-
*
|
|
47
|
-
* // Throws ParseError — starts with hyphen
|
|
48
|
-
* Schema.decodeUnknownSync(UsernameSchema)("-invalid");
|
|
49
|
-
* ```
|
|
50
|
-
*
|
|
51
|
-
* @see {@link GitHubInfoSchema} which uses this for the `user` field
|
|
52
|
-
*
|
|
53
|
-
* @public
|
|
54
|
-
*/
|
|
55
|
-
const UsernameSchema = effect.Schema.String.pipe(effect.Schema.pattern(/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$/, { message: () => "Invalid GitHub username format. Usernames must contain only alphanumeric characters and hyphens, and cannot start or end with a hyphen. Example: \"octocat\" or \"my-user-123\"" }));
|
|
56
|
-
/**
|
|
57
|
-
* Schema for a GitHub issue or PR number (positive integer).
|
|
58
|
-
*
|
|
59
|
-
* @remarks
|
|
60
|
-
* Built on {@link PositiveInteger}, this schema adds GitHub-specific
|
|
61
|
-
* annotations for documentation tooling. Issue and PR numbers in GitHub
|
|
62
|
-
* are always positive integers starting from 1.
|
|
63
|
-
*
|
|
64
|
-
* @example
|
|
65
|
-
* ```typescript
|
|
66
|
-
* import { Schema } from "effect";
|
|
67
|
-
* import { IssueNumberSchema } from "@savvy-web/changesets";
|
|
68
|
-
*
|
|
69
|
-
* // Succeeds
|
|
70
|
-
* const prNum = Schema.decodeUnknownSync(IssueNumberSchema)(42);
|
|
71
|
-
*
|
|
72
|
-
* // Throws ParseError — zero is not a valid issue number
|
|
73
|
-
* Schema.decodeUnknownSync(IssueNumberSchema)(0);
|
|
74
|
-
* ```
|
|
75
|
-
*
|
|
76
|
-
* @see {@link GitHubInfoSchema} which uses this for the `pull` field
|
|
77
|
-
*
|
|
78
|
-
* @public
|
|
79
|
-
*/
|
|
80
|
-
const IssueNumberSchema = require_primitives.PositiveInteger.annotations({
|
|
81
|
-
title: "IssueNumber",
|
|
82
|
-
description: "GitHub issue or pull request number"
|
|
83
|
-
});
|
|
84
|
-
/**
|
|
85
|
-
* Schema accepting either a plain URL or a markdown link `[text](url)`.
|
|
86
|
-
*
|
|
87
|
-
* @remarks
|
|
88
|
-
* The `\@changesets/get-github-info` vendor module returns links in two
|
|
89
|
-
* possible formats depending on context: a bare URL string or a markdown
|
|
90
|
-
* link like `[#42](https://github.com/owner/repo/pull/42)`. This schema
|
|
91
|
-
* accepts both, validating that the URL portion is parseable by the
|
|
92
|
-
* `URL` constructor.
|
|
93
|
-
*
|
|
94
|
-
* @example
|
|
95
|
-
* ```typescript
|
|
96
|
-
* import { Schema } from "effect";
|
|
97
|
-
* import { UrlOrMarkdownLinkSchema } from "@savvy-web/changesets";
|
|
98
|
-
*
|
|
99
|
-
* // Succeeds — plain URL
|
|
100
|
-
* Schema.decodeUnknownSync(UrlOrMarkdownLinkSchema)(
|
|
101
|
-
* "https://github.com/owner/repo/pull/42"
|
|
102
|
-
* );
|
|
103
|
-
*
|
|
104
|
-
* // Succeeds — markdown link
|
|
105
|
-
* Schema.decodeUnknownSync(UrlOrMarkdownLinkSchema)(
|
|
106
|
-
* "[#42](https://github.com/owner/repo/pull/42)"
|
|
107
|
-
* );
|
|
108
|
-
*
|
|
109
|
-
* // Throws ParseError — not a URL or markdown link
|
|
110
|
-
* Schema.decodeUnknownSync(UrlOrMarkdownLinkSchema)("not-a-url");
|
|
111
|
-
* ```
|
|
112
|
-
*
|
|
113
|
-
* @see {@link GitHubInfoSchema} which uses this for commit, pull, and user links
|
|
114
|
-
*
|
|
115
|
-
* @public
|
|
116
|
-
*/
|
|
117
|
-
const UrlOrMarkdownLinkSchema = effect.Schema.String.pipe(effect.Schema.filter((value) => {
|
|
118
|
-
if (isValidUrl(value)) return true;
|
|
119
|
-
const match = require_markdown_link.MARKDOWN_LINK_PATTERN.exec(value);
|
|
120
|
-
return match?.[2] ? isValidUrl(match[2]) : false;
|
|
121
|
-
}, { message: () => "Value must be a valid URL or a markdown link. Expected a plain URL (e.g., \"https://github.com/owner/repo/pull/42\") or a markdown link (e.g., \"[#42](https://github.com/owner/repo/pull/42)\")" }));
|
|
122
|
-
/**
|
|
123
|
-
* Schema for a GitHub info response from `\@changesets/get-github-info`.
|
|
124
|
-
*
|
|
125
|
-
* @remarks
|
|
126
|
-
* Represents the structured data returned when querying GitHub for commit
|
|
127
|
-
* metadata. The `user` and `pull` fields are optional because not every
|
|
128
|
-
* commit is associated with a pull request or a known GitHub user (e.g.,
|
|
129
|
-
* bot commits or squash-merged commits without a linked PR).
|
|
130
|
-
*
|
|
131
|
-
* The `links` object contains pre-formatted markdown or URL strings for
|
|
132
|
-
* the commit, pull request, and user profile -- ready for insertion into
|
|
133
|
-
* CHANGELOG entries.
|
|
134
|
-
*
|
|
135
|
-
* @example
|
|
136
|
-
* ```typescript
|
|
137
|
-
* import { Schema } from "effect";
|
|
138
|
-
* import { GitHubInfoSchema } from "@savvy-web/changesets";
|
|
139
|
-
* import type { GitHubInfo } from "@savvy-web/changesets";
|
|
140
|
-
*
|
|
141
|
-
* const info: GitHubInfo = Schema.decodeUnknownSync(GitHubInfoSchema)({
|
|
142
|
-
* user: "octocat",
|
|
143
|
-
* pull: 42,
|
|
144
|
-
* links: {
|
|
145
|
-
* commit: "[`a1b2c3d`](https://github.com/owner/repo/commit/a1b2c3d)",
|
|
146
|
-
* pull: "[#42](https://github.com/owner/repo/pull/42)",
|
|
147
|
-
* user: "[@octocat](https://github.com/octocat)",
|
|
148
|
-
* },
|
|
149
|
-
* });
|
|
150
|
-
* ```
|
|
151
|
-
*
|
|
152
|
-
* @see {@link GitHubInfo} for the inferred TypeScript type
|
|
153
|
-
* @see {@link GitHubService} for the Effect service that produces these values
|
|
154
|
-
*
|
|
155
|
-
* @public
|
|
156
|
-
*/
|
|
157
|
-
const GitHubInfoSchema = effect.Schema.Struct({
|
|
158
|
-
/** GitHub username of the commit author. */
|
|
159
|
-
user: effect.Schema.optional(UsernameSchema),
|
|
160
|
-
/** Pull request number associated with the commit. */
|
|
161
|
-
pull: effect.Schema.optional(IssueNumberSchema),
|
|
162
|
-
/** Markdown-formatted links. */
|
|
163
|
-
links: effect.Schema.Struct({
|
|
164
|
-
/** Link to the commit. */
|
|
165
|
-
commit: UrlOrMarkdownLinkSchema,
|
|
166
|
-
/** Link to the associated pull request. */
|
|
167
|
-
pull: effect.Schema.optional(UrlOrMarkdownLinkSchema),
|
|
168
|
-
/** Link to the author's GitHub profile. */
|
|
169
|
-
user: effect.Schema.optional(UrlOrMarkdownLinkSchema)
|
|
170
|
-
})
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
//#endregion
|
|
174
|
-
exports.GitHubInfoSchema = GitHubInfoSchema;
|
|
175
|
-
exports.IssueNumberSchema = IssueNumberSchema;
|
|
176
|
-
exports.UrlOrMarkdownLinkSchema = UrlOrMarkdownLinkSchema;
|
|
177
|
-
exports.UsernameSchema = UsernameSchema;
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import { PositiveInteger } from "./primitives.js";
|
|
2
|
-
import { MARKDOWN_LINK_PATTERN } from "../utils/markdown-link.js";
|
|
3
|
-
import { Schema } from "effect";
|
|
4
|
-
|
|
5
|
-
//#region ../silk-effects/dist/dev/pkg/changesets/schemas/github.js
|
|
6
|
-
/**
|
|
7
|
-
* GitHub-related Effect schemas for usernames, issue numbers, and API responses.
|
|
8
|
-
*
|
|
9
|
-
* @remarks
|
|
10
|
-
* These schemas validate data returned by the `\@changesets/get-github-info`
|
|
11
|
-
* vendor module and enforce GitHub's naming conventions for usernames and
|
|
12
|
-
* issue references.
|
|
13
|
-
*
|
|
14
|
-
* @see {@link https://effect.website/docs/schema/introduction | Effect Schema documentation}
|
|
15
|
-
*
|
|
16
|
-
*/
|
|
17
|
-
/**
|
|
18
|
-
* Test whether a string is a valid URL.
|
|
19
|
-
*
|
|
20
|
-
* @internal
|
|
21
|
-
*/
|
|
22
|
-
function isValidUrl(value) {
|
|
23
|
-
try {
|
|
24
|
-
new URL(value);
|
|
25
|
-
return true;
|
|
26
|
-
} catch {
|
|
27
|
-
return false;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Schema for a GitHub username.
|
|
32
|
-
*
|
|
33
|
-
* @remarks
|
|
34
|
-
* Validates against GitHub's username rules: alphanumeric characters and
|
|
35
|
-
* hyphens only, cannot start or end with a hyphen. Does not enforce the
|
|
36
|
-
* 39-character maximum length since GitHub may change that limit.
|
|
37
|
-
*
|
|
38
|
-
* @example
|
|
39
|
-
* ```typescript
|
|
40
|
-
* import { Schema } from "effect";
|
|
41
|
-
* import { UsernameSchema } from "@savvy-web/changesets";
|
|
42
|
-
*
|
|
43
|
-
* // Succeeds
|
|
44
|
-
* Schema.decodeUnknownSync(UsernameSchema)("octocat");
|
|
45
|
-
* Schema.decodeUnknownSync(UsernameSchema)("my-user-123");
|
|
46
|
-
*
|
|
47
|
-
* // Throws ParseError — starts with hyphen
|
|
48
|
-
* Schema.decodeUnknownSync(UsernameSchema)("-invalid");
|
|
49
|
-
* ```
|
|
50
|
-
*
|
|
51
|
-
* @see {@link GitHubInfoSchema} which uses this for the `user` field
|
|
52
|
-
*
|
|
53
|
-
* @public
|
|
54
|
-
*/
|
|
55
|
-
const UsernameSchema = Schema.String.pipe(Schema.pattern(/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$/, { message: () => "Invalid GitHub username format. Usernames must contain only alphanumeric characters and hyphens, and cannot start or end with a hyphen. Example: \"octocat\" or \"my-user-123\"" }));
|
|
56
|
-
/**
|
|
57
|
-
* Schema for a GitHub issue or PR number (positive integer).
|
|
58
|
-
*
|
|
59
|
-
* @remarks
|
|
60
|
-
* Built on {@link PositiveInteger}, this schema adds GitHub-specific
|
|
61
|
-
* annotations for documentation tooling. Issue and PR numbers in GitHub
|
|
62
|
-
* are always positive integers starting from 1.
|
|
63
|
-
*
|
|
64
|
-
* @example
|
|
65
|
-
* ```typescript
|
|
66
|
-
* import { Schema } from "effect";
|
|
67
|
-
* import { IssueNumberSchema } from "@savvy-web/changesets";
|
|
68
|
-
*
|
|
69
|
-
* // Succeeds
|
|
70
|
-
* const prNum = Schema.decodeUnknownSync(IssueNumberSchema)(42);
|
|
71
|
-
*
|
|
72
|
-
* // Throws ParseError — zero is not a valid issue number
|
|
73
|
-
* Schema.decodeUnknownSync(IssueNumberSchema)(0);
|
|
74
|
-
* ```
|
|
75
|
-
*
|
|
76
|
-
* @see {@link GitHubInfoSchema} which uses this for the `pull` field
|
|
77
|
-
*
|
|
78
|
-
* @public
|
|
79
|
-
*/
|
|
80
|
-
const IssueNumberSchema = PositiveInteger.annotations({
|
|
81
|
-
title: "IssueNumber",
|
|
82
|
-
description: "GitHub issue or pull request number"
|
|
83
|
-
});
|
|
84
|
-
/**
|
|
85
|
-
* Schema accepting either a plain URL or a markdown link `[text](url)`.
|
|
86
|
-
*
|
|
87
|
-
* @remarks
|
|
88
|
-
* The `\@changesets/get-github-info` vendor module returns links in two
|
|
89
|
-
* possible formats depending on context: a bare URL string or a markdown
|
|
90
|
-
* link like `[#42](https://github.com/owner/repo/pull/42)`. This schema
|
|
91
|
-
* accepts both, validating that the URL portion is parseable by the
|
|
92
|
-
* `URL` constructor.
|
|
93
|
-
*
|
|
94
|
-
* @example
|
|
95
|
-
* ```typescript
|
|
96
|
-
* import { Schema } from "effect";
|
|
97
|
-
* import { UrlOrMarkdownLinkSchema } from "@savvy-web/changesets";
|
|
98
|
-
*
|
|
99
|
-
* // Succeeds — plain URL
|
|
100
|
-
* Schema.decodeUnknownSync(UrlOrMarkdownLinkSchema)(
|
|
101
|
-
* "https://github.com/owner/repo/pull/42"
|
|
102
|
-
* );
|
|
103
|
-
*
|
|
104
|
-
* // Succeeds — markdown link
|
|
105
|
-
* Schema.decodeUnknownSync(UrlOrMarkdownLinkSchema)(
|
|
106
|
-
* "[#42](https://github.com/owner/repo/pull/42)"
|
|
107
|
-
* );
|
|
108
|
-
*
|
|
109
|
-
* // Throws ParseError — not a URL or markdown link
|
|
110
|
-
* Schema.decodeUnknownSync(UrlOrMarkdownLinkSchema)("not-a-url");
|
|
111
|
-
* ```
|
|
112
|
-
*
|
|
113
|
-
* @see {@link GitHubInfoSchema} which uses this for commit, pull, and user links
|
|
114
|
-
*
|
|
115
|
-
* @public
|
|
116
|
-
*/
|
|
117
|
-
const UrlOrMarkdownLinkSchema = Schema.String.pipe(Schema.filter((value) => {
|
|
118
|
-
if (isValidUrl(value)) return true;
|
|
119
|
-
const match = MARKDOWN_LINK_PATTERN.exec(value);
|
|
120
|
-
return match?.[2] ? isValidUrl(match[2]) : false;
|
|
121
|
-
}, { message: () => "Value must be a valid URL or a markdown link. Expected a plain URL (e.g., \"https://github.com/owner/repo/pull/42\") or a markdown link (e.g., \"[#42](https://github.com/owner/repo/pull/42)\")" }));
|
|
122
|
-
/**
|
|
123
|
-
* Schema for a GitHub info response from `\@changesets/get-github-info`.
|
|
124
|
-
*
|
|
125
|
-
* @remarks
|
|
126
|
-
* Represents the structured data returned when querying GitHub for commit
|
|
127
|
-
* metadata. The `user` and `pull` fields are optional because not every
|
|
128
|
-
* commit is associated with a pull request or a known GitHub user (e.g.,
|
|
129
|
-
* bot commits or squash-merged commits without a linked PR).
|
|
130
|
-
*
|
|
131
|
-
* The `links` object contains pre-formatted markdown or URL strings for
|
|
132
|
-
* the commit, pull request, and user profile -- ready for insertion into
|
|
133
|
-
* CHANGELOG entries.
|
|
134
|
-
*
|
|
135
|
-
* @example
|
|
136
|
-
* ```typescript
|
|
137
|
-
* import { Schema } from "effect";
|
|
138
|
-
* import { GitHubInfoSchema } from "@savvy-web/changesets";
|
|
139
|
-
* import type { GitHubInfo } from "@savvy-web/changesets";
|
|
140
|
-
*
|
|
141
|
-
* const info: GitHubInfo = Schema.decodeUnknownSync(GitHubInfoSchema)({
|
|
142
|
-
* user: "octocat",
|
|
143
|
-
* pull: 42,
|
|
144
|
-
* links: {
|
|
145
|
-
* commit: "[`a1b2c3d`](https://github.com/owner/repo/commit/a1b2c3d)",
|
|
146
|
-
* pull: "[#42](https://github.com/owner/repo/pull/42)",
|
|
147
|
-
* user: "[@octocat](https://github.com/octocat)",
|
|
148
|
-
* },
|
|
149
|
-
* });
|
|
150
|
-
* ```
|
|
151
|
-
*
|
|
152
|
-
* @see {@link GitHubInfo} for the inferred TypeScript type
|
|
153
|
-
* @see {@link GitHubService} for the Effect service that produces these values
|
|
154
|
-
*
|
|
155
|
-
* @public
|
|
156
|
-
*/
|
|
157
|
-
const GitHubInfoSchema = Schema.Struct({
|
|
158
|
-
/** GitHub username of the commit author. */
|
|
159
|
-
user: Schema.optional(UsernameSchema),
|
|
160
|
-
/** Pull request number associated with the commit. */
|
|
161
|
-
pull: Schema.optional(IssueNumberSchema),
|
|
162
|
-
/** Markdown-formatted links. */
|
|
163
|
-
links: Schema.Struct({
|
|
164
|
-
/** Link to the commit. */
|
|
165
|
-
commit: UrlOrMarkdownLinkSchema,
|
|
166
|
-
/** Link to the associated pull request. */
|
|
167
|
-
pull: Schema.optional(UrlOrMarkdownLinkSchema),
|
|
168
|
-
/** Link to the author's GitHub profile. */
|
|
169
|
-
user: Schema.optional(UrlOrMarkdownLinkSchema)
|
|
170
|
-
})
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
//#endregion
|
|
174
|
-
export { GitHubInfoSchema, IssueNumberSchema, UrlOrMarkdownLinkSchema, UsernameSchema };
|