@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.
Files changed (159) hide show
  1. package/README.md +7 -5
  2. package/changesets-changelog.cjs +109 -61
  3. package/changesets-changelog.d.cts +1 -1
  4. package/changesets-changelog.d.ts +1 -1
  5. package/changesets-changelog.js +54099 -1
  6. package/changesets-markdownlint.cjs +109 -61
  7. package/changesets-markdownlint.d.cts +1 -1
  8. package/changesets-markdownlint.d.ts +1 -1
  9. package/changesets-markdownlint.js +54099 -1
  10. package/package.json +5 -4
  11. package/tsconfig/node/dist/tsconfig.tsbuildinfo +1 -1
  12. package/_virtual/_rolldown/runtime.cjs +0 -45
  13. package/_virtual/_rolldown/runtime.js +0 -45
  14. package/packages/silk-effects/dist/dev/pkg/_virtual/_rolldown/runtime.cjs +0 -15
  15. package/packages/silk-effects/dist/dev/pkg/_virtual/_rolldown/runtime.js +0 -14
  16. package/packages/silk-effects/dist/dev/pkg/changesets/api/categories.cjs +0 -247
  17. package/packages/silk-effects/dist/dev/pkg/changesets/api/categories.js +0 -247
  18. package/packages/silk-effects/dist/dev/pkg/changesets/api/changelog.cjs +0 -134
  19. package/packages/silk-effects/dist/dev/pkg/changesets/api/changelog.js +0 -134
  20. package/packages/silk-effects/dist/dev/pkg/changesets/api/dependency-table.cjs +0 -163
  21. package/packages/silk-effects/dist/dev/pkg/changesets/api/dependency-table.js +0 -163
  22. package/packages/silk-effects/dist/dev/pkg/changesets/api/linter.cjs +0 -170
  23. package/packages/silk-effects/dist/dev/pkg/changesets/api/linter.js +0 -170
  24. package/packages/silk-effects/dist/dev/pkg/changesets/api/transformer.cjs +0 -134
  25. package/packages/silk-effects/dist/dev/pkg/changesets/api/transformer.js +0 -134
  26. package/packages/silk-effects/dist/dev/pkg/changesets/categories/index.cjs +0 -317
  27. package/packages/silk-effects/dist/dev/pkg/changesets/categories/index.js +0 -299
  28. package/packages/silk-effects/dist/dev/pkg/changesets/categories/types.cjs +0 -65
  29. package/packages/silk-effects/dist/dev/pkg/changesets/categories/types.js +0 -65
  30. package/packages/silk-effects/dist/dev/pkg/changesets/changelog/formatting.cjs +0 -114
  31. package/packages/silk-effects/dist/dev/pkg/changesets/changelog/formatting.js +0 -113
  32. package/packages/silk-effects/dist/dev/pkg/changesets/changelog/getDependencyReleaseLine.cjs +0 -118
  33. package/packages/silk-effects/dist/dev/pkg/changesets/changelog/getDependencyReleaseLine.js +0 -118
  34. package/packages/silk-effects/dist/dev/pkg/changesets/changelog/getReleaseLine.cjs +0 -122
  35. package/packages/silk-effects/dist/dev/pkg/changesets/changelog/getReleaseLine.js +0 -122
  36. package/packages/silk-effects/dist/dev/pkg/changesets/changelog/index.cjs +0 -97
  37. package/packages/silk-effects/dist/dev/pkg/changesets/changelog/index.js +0 -97
  38. package/packages/silk-effects/dist/dev/pkg/changesets/constants.cjs +0 -43
  39. package/packages/silk-effects/dist/dev/pkg/changesets/constants.js +0 -42
  40. package/packages/silk-effects/dist/dev/pkg/changesets/errors.cjs +0 -386
  41. package/packages/silk-effects/dist/dev/pkg/changesets/errors.js +0 -371
  42. package/packages/silk-effects/dist/dev/pkg/changesets/index.cjs +0 -300
  43. package/packages/silk-effects/dist/dev/pkg/changesets/index.js +0 -179
  44. package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/index.cjs +0 -34
  45. package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/index.js +0 -29
  46. package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/content-structure.cjs +0 -98
  47. package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/content-structure.js +0 -98
  48. package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/dependency-table-format.cjs +0 -170
  49. package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/dependency-table-format.js +0 -170
  50. package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/heading-hierarchy.cjs +0 -61
  51. package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/heading-hierarchy.js +0 -61
  52. package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/required-sections.cjs +0 -54
  53. package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/required-sections.js +0 -54
  54. package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/uncategorized-content.cjs +0 -54
  55. package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/uncategorized-content.js +0 -54
  56. package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/utils.cjs +0 -31
  57. package/packages/silk-effects/dist/dev/pkg/changesets/markdownlint/rules/utils.js +0 -30
  58. package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/aggregate-dependency-tables.cjs +0 -47
  59. package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/aggregate-dependency-tables.js +0 -47
  60. package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/contributor-footnotes.cjs +0 -123
  61. package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/contributor-footnotes.js +0 -123
  62. package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/deduplicate-items.cjs +0 -32
  63. package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/deduplicate-items.js +0 -32
  64. package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/issue-link-refs.cjs +0 -59
  65. package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/issue-link-refs.js +0 -59
  66. package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/maintenance-note.cjs +0 -61
  67. package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/maintenance-note.js +0 -61
  68. package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/merge-sections.cjs +0 -43
  69. package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/merge-sections.js +0 -43
  70. package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/normalize-format.cjs +0 -47
  71. package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/normalize-format.js +0 -47
  72. package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/reorder-sections.cjs +0 -34
  73. package/packages/silk-effects/dist/dev/pkg/changesets/remark/plugins/reorder-sections.js +0 -34
  74. package/packages/silk-effects/dist/dev/pkg/changesets/remark/presets.cjs +0 -120
  75. package/packages/silk-effects/dist/dev/pkg/changesets/remark/presets.js +0 -119
  76. package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/content-structure.cjs +0 -22
  77. package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/content-structure.js +0 -22
  78. package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/dependency-table-format.cjs +0 -40
  79. package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/dependency-table-format.js +0 -40
  80. package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/heading-hierarchy.cjs +0 -19
  81. package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/heading-hierarchy.js +0 -19
  82. package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/required-sections.cjs +0 -17
  83. package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/required-sections.js +0 -17
  84. package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/uncategorized-content.cjs +0 -31
  85. package/packages/silk-effects/dist/dev/pkg/changesets/remark/rules/uncategorized-content.js +0 -31
  86. package/packages/silk-effects/dist/dev/pkg/changesets/schemas/changeset.cjs +0 -148
  87. package/packages/silk-effects/dist/dev/pkg/changesets/schemas/changeset.js +0 -145
  88. package/packages/silk-effects/dist/dev/pkg/changesets/schemas/dependency-table.cjs +0 -203
  89. package/packages/silk-effects/dist/dev/pkg/changesets/schemas/dependency-table.js +0 -198
  90. package/packages/silk-effects/dist/dev/pkg/changesets/schemas/git.cjs +0 -69
  91. package/packages/silk-effects/dist/dev/pkg/changesets/schemas/git.js +0 -68
  92. package/packages/silk-effects/dist/dev/pkg/changesets/schemas/github.cjs +0 -177
  93. package/packages/silk-effects/dist/dev/pkg/changesets/schemas/github.js +0 -174
  94. package/packages/silk-effects/dist/dev/pkg/changesets/schemas/options.cjs +0 -183
  95. package/packages/silk-effects/dist/dev/pkg/changesets/schemas/options.js +0 -181
  96. package/packages/silk-effects/dist/dev/pkg/changesets/schemas/package-scope.cjs +0 -129
  97. package/packages/silk-effects/dist/dev/pkg/changesets/schemas/package-scope.js +0 -127
  98. package/packages/silk-effects/dist/dev/pkg/changesets/schemas/primitives.cjs +0 -72
  99. package/packages/silk-effects/dist/dev/pkg/changesets/schemas/primitives.js +0 -71
  100. package/packages/silk-effects/dist/dev/pkg/changesets/schemas/release-plan.cjs +0 -62
  101. package/packages/silk-effects/dist/dev/pkg/changesets/schemas/release-plan.js +0 -56
  102. package/packages/silk-effects/dist/dev/pkg/changesets/schemas/version-files.cjs +0 -154
  103. package/packages/silk-effects/dist/dev/pkg/changesets/schemas/version-files.js +0 -150
  104. package/packages/silk-effects/dist/dev/pkg/changesets/services/branch-analyzer.cjs +0 -300
  105. package/packages/silk-effects/dist/dev/pkg/changesets/services/branch-analyzer.js +0 -294
  106. package/packages/silk-effects/dist/dev/pkg/changesets/services/changelog.cjs +0 -50
  107. package/packages/silk-effects/dist/dev/pkg/changesets/services/changelog.js +0 -49
  108. package/packages/silk-effects/dist/dev/pkg/changesets/services/config-inspector.cjs +0 -489
  109. package/packages/silk-effects/dist/dev/pkg/changesets/services/config-inspector.js +0 -481
  110. package/packages/silk-effects/dist/dev/pkg/changesets/services/deps-regen.cjs +0 -375
  111. package/packages/silk-effects/dist/dev/pkg/changesets/services/deps-regen.js +0 -371
  112. package/packages/silk-effects/dist/dev/pkg/changesets/services/github.cjs +0 -160
  113. package/packages/silk-effects/dist/dev/pkg/changesets/services/github.js +0 -157
  114. package/packages/silk-effects/dist/dev/pkg/changesets/services/maintenance-reason.cjs +0 -68
  115. package/packages/silk-effects/dist/dev/pkg/changesets/services/maintenance-reason.js +0 -66
  116. package/packages/silk-effects/dist/dev/pkg/changesets/services/markdown.cjs +0 -87
  117. package/packages/silk-effects/dist/dev/pkg/changesets/services/markdown.js +0 -85
  118. package/packages/silk-effects/dist/dev/pkg/changesets/services/release-planner.cjs +0 -352
  119. package/packages/silk-effects/dist/dev/pkg/changesets/services/release-planner.js +0 -348
  120. package/packages/silk-effects/dist/dev/pkg/changesets/utils/commit-parser.cjs +0 -81
  121. package/packages/silk-effects/dist/dev/pkg/changesets/utils/commit-parser.js +0 -80
  122. package/packages/silk-effects/dist/dev/pkg/changesets/utils/dep-diff.cjs +0 -111
  123. package/packages/silk-effects/dist/dev/pkg/changesets/utils/dep-diff.js +0 -111
  124. package/packages/silk-effects/dist/dev/pkg/changesets/utils/dependency-table.cjs +0 -351
  125. package/packages/silk-effects/dist/dev/pkg/changesets/utils/dependency-table.js +0 -347
  126. package/packages/silk-effects/dist/dev/pkg/changesets/utils/git.cjs +0 -51
  127. package/packages/silk-effects/dist/dev/pkg/changesets/utils/git.js +0 -51
  128. package/packages/silk-effects/dist/dev/pkg/changesets/utils/issue-refs.cjs +0 -102
  129. package/packages/silk-effects/dist/dev/pkg/changesets/utils/issue-refs.js +0 -101
  130. package/packages/silk-effects/dist/dev/pkg/changesets/utils/jsonpath.cjs +0 -178
  131. package/packages/silk-effects/dist/dev/pkg/changesets/utils/jsonpath.js +0 -175
  132. package/packages/silk-effects/dist/dev/pkg/changesets/utils/logger.cjs +0 -51
  133. package/packages/silk-effects/dist/dev/pkg/changesets/utils/logger.js +0 -50
  134. package/packages/silk-effects/dist/dev/pkg/changesets/utils/markdown-link.cjs +0 -59
  135. package/packages/silk-effects/dist/dev/pkg/changesets/utils/markdown-link.js +0 -57
  136. package/packages/silk-effects/dist/dev/pkg/changesets/utils/publishability.cjs +0 -50
  137. package/packages/silk-effects/dist/dev/pkg/changesets/utils/publishability.js +0 -50
  138. package/packages/silk-effects/dist/dev/pkg/changesets/utils/remark-pipeline.cjs +0 -81
  139. package/packages/silk-effects/dist/dev/pkg/changesets/utils/remark-pipeline.js +0 -79
  140. package/packages/silk-effects/dist/dev/pkg/changesets/utils/section-parser.cjs +0 -94
  141. package/packages/silk-effects/dist/dev/pkg/changesets/utils/section-parser.js +0 -94
  142. package/packages/silk-effects/dist/dev/pkg/changesets/utils/strip-frontmatter.cjs +0 -47
  143. package/packages/silk-effects/dist/dev/pkg/changesets/utils/strip-frontmatter.js +0 -46
  144. package/packages/silk-effects/dist/dev/pkg/changesets/utils/version-blocks.cjs +0 -110
  145. package/packages/silk-effects/dist/dev/pkg/changesets/utils/version-blocks.js +0 -108
  146. package/packages/silk-effects/dist/dev/pkg/changesets/utils/version-files.cjs +0 -336
  147. package/packages/silk-effects/dist/dev/pkg/changesets/utils/version-files.js +0 -336
  148. package/packages/silk-effects/dist/dev/pkg/changesets/vendor/github-info.cjs +0 -77
  149. package/packages/silk-effects/dist/dev/pkg/changesets/vendor/github-info.js +0 -77
  150. package/packages/silk-effects/dist/dev/pkg/errors/ChangesetConfigError.cjs +0 -21
  151. package/packages/silk-effects/dist/dev/pkg/errors/ChangesetConfigError.js +0 -21
  152. package/packages/silk-effects/dist/dev/pkg/schemas/VersioningSchemas.cjs +0 -101
  153. package/packages/silk-effects/dist/dev/pkg/schemas/VersioningSchemas.js +0 -99
  154. package/packages/silk-effects/dist/dev/pkg/services/ChangesetConfig.cjs +0 -81
  155. package/packages/silk-effects/dist/dev/pkg/services/ChangesetConfig.js +0 -80
  156. package/packages/silk-effects/dist/dev/pkg/services/ChangesetConfigReader.cjs +0 -109
  157. package/packages/silk-effects/dist/dev/pkg/services/ChangesetConfigReader.js +0 -108
  158. package/packages/silk-effects/dist/dev/pkg/services/SilkPublishability.cjs +0 -238
  159. package/packages/silk-effects/dist/dev/pkg/services/SilkPublishability.js +0 -236
@@ -1,68 +0,0 @@
1
- const require_ChangesetConfig = require('../../services/ChangesetConfig.cjs');
2
- let effect = require("effect");
3
-
4
- //#region ../silk-effects/dist/dev/pkg/changesets/services/maintenance-reason.js
5
- /**
6
- * A group co-member whose own changesets forced this release.
7
- *
8
- * @public
9
- */
10
- const MaintenanceTriggerSchema = effect.Schema.Struct({
11
- /** Package name of the triggering co-member. */
12
- name: effect.Schema.String,
13
- /** The co-member's new version in the same release plan. */
14
- version: effect.Schema.String
15
- });
16
- /**
17
- * Why a package is releasing with no changesets of its own.
18
- *
19
- * @public
20
- */
21
- const MaintenanceReasonSchema = effect.Schema.Struct({
22
- /** Coupling that forced the release; `"unspecified"` when undetermined. */
23
- kind: effect.Schema.Literal("fixed", "linked", "unspecified"),
24
- /** Triggering co-members; empty for `"unspecified"`. */
25
- triggers: effect.Schema.Array(MaintenanceTriggerSchema)
26
- });
27
- /**
28
- * Derive the {@link MaintenanceReason} for a release, or `undefined` when the
29
- * release has its own changesets (not a maintenance release).
30
- *
31
- * @param release - The release to classify.
32
- * @param plan - The full release plan (source of group co-members).
33
- * @param config - Resolved changesets config (`fixed` / `linked` groups).
34
- * @returns The reason, or `undefined` for releases with their own changesets.
35
- *
36
- * @remarks
37
- * Group entries are matched with {@link ChangesetConfig.matches} — exact names
38
- * and trailing `"@scope/*"` prefixes only, a subset of the micromatch globs
39
- * changesets accepts. A group entry using richer glob syntax (e.g. `"pkg-*"`)
40
- * will not match here; the release then degrades gracefully to the
41
- * `"unspecified"` fallback sentence instead of naming its triggers.
42
- *
43
- * @public
44
- */
45
- function deriveMaintenanceReason(release, plan, config) {
46
- if (release.changesets.length > 0) return void 0;
47
- const groupKinds = [["fixed", config.fixed], ["linked", config.linked]];
48
- for (const [kind, groups] of groupKinds) for (const group of groups) {
49
- if (!group.some((pattern) => require_ChangesetConfig.ChangesetConfig.matches(release.name, pattern))) continue;
50
- const triggers = plan.releases.filter((r) => r.name !== release.name && r.changesets.length > 0 && group.some((pattern) => require_ChangesetConfig.ChangesetConfig.matches(r.name, pattern))).map((r) => ({
51
- name: r.name,
52
- version: r.newVersion
53
- }));
54
- if (triggers.length > 0) return {
55
- kind,
56
- triggers
57
- };
58
- }
59
- return {
60
- kind: "unspecified",
61
- triggers: []
62
- };
63
- }
64
-
65
- //#endregion
66
- exports.MaintenanceReasonSchema = MaintenanceReasonSchema;
67
- exports.MaintenanceTriggerSchema = MaintenanceTriggerSchema;
68
- exports.deriveMaintenanceReason = deriveMaintenanceReason;
@@ -1,66 +0,0 @@
1
- import { ChangesetConfig } from "../../services/ChangesetConfig.js";
2
- import { Schema } from "effect";
3
-
4
- //#region ../silk-effects/dist/dev/pkg/changesets/services/maintenance-reason.js
5
- /**
6
- * A group co-member whose own changesets forced this release.
7
- *
8
- * @public
9
- */
10
- const MaintenanceTriggerSchema = Schema.Struct({
11
- /** Package name of the triggering co-member. */
12
- name: Schema.String,
13
- /** The co-member's new version in the same release plan. */
14
- version: Schema.String
15
- });
16
- /**
17
- * Why a package is releasing with no changesets of its own.
18
- *
19
- * @public
20
- */
21
- const MaintenanceReasonSchema = Schema.Struct({
22
- /** Coupling that forced the release; `"unspecified"` when undetermined. */
23
- kind: Schema.Literal("fixed", "linked", "unspecified"),
24
- /** Triggering co-members; empty for `"unspecified"`. */
25
- triggers: Schema.Array(MaintenanceTriggerSchema)
26
- });
27
- /**
28
- * Derive the {@link MaintenanceReason} for a release, or `undefined` when the
29
- * release has its own changesets (not a maintenance release).
30
- *
31
- * @param release - The release to classify.
32
- * @param plan - The full release plan (source of group co-members).
33
- * @param config - Resolved changesets config (`fixed` / `linked` groups).
34
- * @returns The reason, or `undefined` for releases with their own changesets.
35
- *
36
- * @remarks
37
- * Group entries are matched with {@link ChangesetConfig.matches} — exact names
38
- * and trailing `"@scope/*"` prefixes only, a subset of the micromatch globs
39
- * changesets accepts. A group entry using richer glob syntax (e.g. `"pkg-*"`)
40
- * will not match here; the release then degrades gracefully to the
41
- * `"unspecified"` fallback sentence instead of naming its triggers.
42
- *
43
- * @public
44
- */
45
- function deriveMaintenanceReason(release, plan, config) {
46
- if (release.changesets.length > 0) return void 0;
47
- const groupKinds = [["fixed", config.fixed], ["linked", config.linked]];
48
- for (const [kind, groups] of groupKinds) for (const group of groups) {
49
- if (!group.some((pattern) => ChangesetConfig.matches(release.name, pattern))) continue;
50
- const triggers = plan.releases.filter((r) => r.name !== release.name && r.changesets.length > 0 && group.some((pattern) => ChangesetConfig.matches(r.name, pattern))).map((r) => ({
51
- name: r.name,
52
- version: r.newVersion
53
- }));
54
- if (triggers.length > 0) return {
55
- kind,
56
- triggers
57
- };
58
- }
59
- return {
60
- kind: "unspecified",
61
- triggers: []
62
- };
63
- }
64
-
65
- //#endregion
66
- export { MaintenanceReasonSchema, MaintenanceTriggerSchema, deriveMaintenanceReason };
@@ -1,87 +0,0 @@
1
- const require_remark_pipeline = require('../utils/remark-pipeline.cjs');
2
- let effect = require("effect");
3
-
4
- //#region ../silk-effects/dist/dev/pkg/changesets/services/markdown.js
5
- /**
6
- * Base class for MarkdownService.
7
- *
8
- * @privateRemarks
9
- * This export is required for api-extractor documentation generation.
10
- * Effect's Context.Tag creates an anonymous base class that must be
11
- * explicitly exported to avoid "forgotten export" warnings. Do not delete.
12
- *
13
- * @internal
14
- */
15
- const MarkdownServiceBase = effect.Context.Tag("MarkdownService")();
16
- /**
17
- * Effect service tag for markdown parsing and stringification.
18
- *
19
- * Provides dependency-injected access to markdown parse/stringify operations.
20
- * Use `yield* MarkdownService` inside an `Effect.gen` block to obtain the
21
- * service instance.
22
- *
23
- * @remarks
24
- * This tag follows the standard Effect `Context.Tag` pattern. The
25
- * {@link MarkdownLive} layer provides the default implementation backed by
26
- * the remark/unified pipeline. For testing, you can supply a custom layer
27
- * via `Layer.succeed(MarkdownService, { parse: ..., stringify: ... })`.
28
- *
29
- * @example
30
- * ```typescript
31
- * import { Effect } from "effect";
32
- * import { MarkdownService, MarkdownLive } from "\@savvy-web/changesets";
33
- *
34
- * const program = Effect.gen(function* () {
35
- * const md = yield* MarkdownService;
36
- * const tree = yield* md.parse("# Hello\n\nWorld");
37
- * const output = yield* md.stringify(tree);
38
- * console.log(output); // "# Hello\n\nWorld\n"
39
- * });
40
- *
41
- * Effect.runPromise(program.pipe(Effect.provide(MarkdownLive)));
42
- * ```
43
- *
44
- * @see {@link MarkdownServiceShape} for the service interface
45
- * @see {@link MarkdownLive} for the production layer
46
- * @see {@link MarkdownServiceBase} for the api-extractor base class
47
- *
48
- * @public
49
- */
50
- var MarkdownService = class extends MarkdownServiceBase {};
51
- /**
52
- * Production layer for {@link MarkdownService}.
53
- *
54
- * Wraps the remark-pipeline utility functions (`parseMarkdown` and
55
- * `stringifyMarkdown`) in `Effect.sync` for use in Effect programs.
56
- * Both operations are synchronous and infallible.
57
- *
58
- * @remarks
59
- * This layer is composed with {@link GitHubLive} in the
60
- * `\@savvy-web/changesets/changelog` entry point to form the `MainLayer`
61
- * that powers the Changesets API integration.
62
- *
63
- * @example
64
- * ```typescript
65
- * import { Effect, Layer } from "effect";
66
- * import { MarkdownService, MarkdownLive } from "\@savvy-web/changesets";
67
- *
68
- * const program = Effect.gen(function* () {
69
- * const md = yield* MarkdownService;
70
- * const tree = yield* md.parse("**bold** text");
71
- * return yield* md.stringify(tree);
72
- * });
73
- *
74
- * Effect.runPromise(program.pipe(Effect.provide(MarkdownLive)));
75
- * ```
76
- *
77
- * @public
78
- */
79
- const MarkdownLive = effect.Layer.succeed(MarkdownService, {
80
- parse: (content) => effect.Effect.sync(() => require_remark_pipeline.parseMarkdown(content)),
81
- stringify: (tree) => effect.Effect.sync(() => require_remark_pipeline.stringifyMarkdown(tree))
82
- });
83
-
84
- //#endregion
85
- exports.MarkdownLive = MarkdownLive;
86
- exports.MarkdownService = MarkdownService;
87
- exports.MarkdownServiceBase = MarkdownServiceBase;
@@ -1,85 +0,0 @@
1
- import { parseMarkdown, stringifyMarkdown } from "../utils/remark-pipeline.js";
2
- import { Context, Effect, Layer } from "effect";
3
-
4
- //#region ../silk-effects/dist/dev/pkg/changesets/services/markdown.js
5
- /**
6
- * Base class for MarkdownService.
7
- *
8
- * @privateRemarks
9
- * This export is required for api-extractor documentation generation.
10
- * Effect's Context.Tag creates an anonymous base class that must be
11
- * explicitly exported to avoid "forgotten export" warnings. Do not delete.
12
- *
13
- * @internal
14
- */
15
- const MarkdownServiceBase = Context.Tag("MarkdownService")();
16
- /**
17
- * Effect service tag for markdown parsing and stringification.
18
- *
19
- * Provides dependency-injected access to markdown parse/stringify operations.
20
- * Use `yield* MarkdownService` inside an `Effect.gen` block to obtain the
21
- * service instance.
22
- *
23
- * @remarks
24
- * This tag follows the standard Effect `Context.Tag` pattern. The
25
- * {@link MarkdownLive} layer provides the default implementation backed by
26
- * the remark/unified pipeline. For testing, you can supply a custom layer
27
- * via `Layer.succeed(MarkdownService, { parse: ..., stringify: ... })`.
28
- *
29
- * @example
30
- * ```typescript
31
- * import { Effect } from "effect";
32
- * import { MarkdownService, MarkdownLive } from "\@savvy-web/changesets";
33
- *
34
- * const program = Effect.gen(function* () {
35
- * const md = yield* MarkdownService;
36
- * const tree = yield* md.parse("# Hello\n\nWorld");
37
- * const output = yield* md.stringify(tree);
38
- * console.log(output); // "# Hello\n\nWorld\n"
39
- * });
40
- *
41
- * Effect.runPromise(program.pipe(Effect.provide(MarkdownLive)));
42
- * ```
43
- *
44
- * @see {@link MarkdownServiceShape} for the service interface
45
- * @see {@link MarkdownLive} for the production layer
46
- * @see {@link MarkdownServiceBase} for the api-extractor base class
47
- *
48
- * @public
49
- */
50
- var MarkdownService = class extends MarkdownServiceBase {};
51
- /**
52
- * Production layer for {@link MarkdownService}.
53
- *
54
- * Wraps the remark-pipeline utility functions (`parseMarkdown` and
55
- * `stringifyMarkdown`) in `Effect.sync` for use in Effect programs.
56
- * Both operations are synchronous and infallible.
57
- *
58
- * @remarks
59
- * This layer is composed with {@link GitHubLive} in the
60
- * `\@savvy-web/changesets/changelog` entry point to form the `MainLayer`
61
- * that powers the Changesets API integration.
62
- *
63
- * @example
64
- * ```typescript
65
- * import { Effect, Layer } from "effect";
66
- * import { MarkdownService, MarkdownLive } from "\@savvy-web/changesets";
67
- *
68
- * const program = Effect.gen(function* () {
69
- * const md = yield* MarkdownService;
70
- * const tree = yield* md.parse("**bold** text");
71
- * return yield* md.stringify(tree);
72
- * });
73
- *
74
- * Effect.runPromise(program.pipe(Effect.provide(MarkdownLive)));
75
- * ```
76
- *
77
- * @public
78
- */
79
- const MarkdownLive = Layer.succeed(MarkdownService, {
80
- parse: (content) => Effect.sync(() => parseMarkdown(content)),
81
- stringify: (tree) => Effect.sync(() => stringifyMarkdown(tree))
82
- });
83
-
84
- //#endregion
85
- export { MarkdownLive, MarkdownService, MarkdownServiceBase };
@@ -1,352 +0,0 @@
1
- const require_errors = require('../errors.cjs');
2
- const require_transformer = require('../api/transformer.cjs');
3
- const require_config_inspector = require('./config-inspector.cjs');
4
- const require_maintenance_reason = require('./maintenance-reason.cjs');
5
- const require_version_files = require('../utils/version-files.cjs');
6
- const require_manypkg_get_packages = require('../../../../../../../node_modules/.pnpm/@manypkg_get-packages@3.1.0/node_modules/@manypkg/get-packages/dist/manypkg-get-packages.cjs');
7
- const require_index = require('../../../../../../../node_modules/.pnpm/@changesets_config@4.0.0-next.6/node_modules/@changesets/config/dist/index.cjs');
8
- const require_index$1 = require('../../../../../../../node_modules/.pnpm/@changesets_apply-release-plan@8.0.0-next.7/node_modules/@changesets/apply-release-plan/dist/index.cjs');
9
- const require_index$2 = require('../../../../../../../node_modules/.pnpm/@changesets_get-release-plan@5.0.0-next.7/node_modules/@changesets/get-release-plan/dist/index.cjs');
10
- let effect = require("effect");
11
- let _effect_platform = require("@effect/platform");
12
- let node_path = require("node:path");
13
-
14
- //#region ../silk-effects/dist/dev/pkg/changesets/services/release-planner.js
15
- /**
16
- * `ReleasePlanner` service — drive the genuine changesets release engine to
17
- * compute a plan, render a read-only preview, or natively apply a release.
18
- *
19
- * @remarks
20
- * `preview` and `apply` both run the real `@changesets/apply-release-plan`;
21
- * `preview` redirects every write into a throwaway temp directory by handing
22
- * the engine a `@manypkg`-shaped `Packages` object whose `dir`s point at temp,
23
- * then reads the generated CHANGELOG blocks back. No changesets-internal logic
24
- * (e.g. `getChangelogEntry`) is re-implemented.
25
- *
26
- */
27
- const errMsg = (e) => e instanceof Error ? e.message : String(e);
28
- /**
29
- * Read the changesets config, surfacing non-throwing `readConfig` errors as a
30
- * thrown `Error` so callers inside `Effect.tryPromise` land on the existing
31
- * `ReleasePlanError` mapping. Warnings are returned alongside the config so
32
- * the caller can log them via the Effect runtime rather than console output.
33
- */
34
- async function loadConfig(root, packages) {
35
- const configResult = await require_index.readConfig(root, packages);
36
- if (configResult.config === void 0) throw new Error(`Invalid changeset config:\n${configResult.errors.join("\n")}`);
37
- return {
38
- config: configResult.config,
39
- warnings: configResult.warnings
40
- };
41
- }
42
- /**
43
- * Base class for {@link ReleasePlanner}.
44
- *
45
- * @privateRemarks Required export for api-extractor (anonymous Context.Tag base). Do not delete.
46
- * @internal
47
- */
48
- const ReleasePlannerBase = effect.Context.Tag("ReleasePlanner")();
49
- /** Effect service tag for the release planner. @public */
50
- var ReleasePlanner = class extends ReleasePlannerBase {};
51
- /** Build the service shape over a resolved {@link ConfigInspector} and {@link FileSystem.FileSystem}. */
52
- function makeShape(inspector, fs) {
53
- const plan = (root) => effect.Effect.tryPromise({
54
- try: () => require_index$2.getReleasePlan(root),
55
- catch: (e) => new require_errors.ReleasePlanError({
56
- phase: "plan",
57
- reason: errMsg(e)
58
- })
59
- });
60
- const preview = (root) => previewEffect(root, fs);
61
- const apply = (root, options) => applyEffect(root, options?.dryRun ?? false, options?.changelogModules, inspector, fs);
62
- return {
63
- plan,
64
- preview,
65
- apply
66
- };
67
- }
68
- /** Production layer. Requires {@link ConfigInspector} (used by `apply`) and `FileSystem`. @public */
69
- const ReleasePlannerLive = effect.Layer.effect(ReleasePlanner, effect.Effect.gen(function* () {
70
- return makeShape(yield* require_config_inspector.ConfigInspector, yield* _effect_platform.FileSystem.FileSystem);
71
- }));
72
- /**
73
- * Test factory — supply fixed results for any subset of methods. Unsupplied
74
- * methods fail with a `ReleasePlanError`.
75
- *
76
- * @public
77
- */
78
- function makeReleasePlannerTest(fixed) {
79
- const fail = (phase) => effect.Effect.fail(new require_errors.ReleasePlanError({
80
- phase,
81
- reason: "not provided in test layer"
82
- }));
83
- return effect.Layer.succeed(ReleasePlanner, {
84
- plan: () => fixed.plan ? effect.Effect.succeed(fixed.plan) : fail("plan"),
85
- preview: () => fixed.preview ? effect.Effect.succeed(fixed.preview) : fail("preview"),
86
- apply: () => fixed.apply ? effect.Effect.succeed(fixed.apply) : fail("apply")
87
- });
88
- }
89
- /** Extract the `## <version>` block (down to the next H2 or EOF) from a changelog. */
90
- function extractVersionBlock(changelog, version) {
91
- const lines = changelog.split("\n");
92
- const start = lines.findIndex((l) => l.trim() === `## ${version}`);
93
- if (start === -1) return "";
94
- let end = lines.length;
95
- for (let i = start + 1; i < lines.length; i++) if (/^## /.test(lines[i])) {
96
- end = i;
97
- break;
98
- }
99
- return lines.slice(start, end).join("\n").trim();
100
- }
101
- /** Maintenance reasons for every changeset-less release in the plan, keyed by package name. */
102
- function maintenanceReasons(plan, config) {
103
- const reasons = /* @__PURE__ */ new Map();
104
- for (const r of plan.releases) {
105
- if (r.type === "none") continue;
106
- const reason = require_maintenance_reason.deriveMaintenanceReason(r, plan, config);
107
- if (reason) reasons.set(r.name, reason);
108
- }
109
- return reasons;
110
- }
111
- /**
112
- * Render a non-destructive preview by redirecting every write into a
113
- * scope-managed temp directory (cleaned up automatically when the scope
114
- * closes) and reading the generated CHANGELOG blocks back.
115
- */
116
- function previewEffect(root, fs) {
117
- const program = effect.Effect.gen(function* () {
118
- const [plan, packages] = yield* effect.Effect.tryPromise({
119
- try: () => Promise.all([require_index$2.getReleasePlan(root), require_manypkg_get_packages.getPackages(root)]),
120
- catch: (e) => new require_errors.ReleasePlanError({
121
- phase: "preview",
122
- reason: errMsg(e)
123
- })
124
- });
125
- if (!packages.rootPackage) return yield* effect.Effect.fail(new require_errors.ReleasePlanError({
126
- phase: "preview",
127
- reason: `Workspace root has no package.json: ${root}`
128
- }));
129
- const rootPackage = packages.rootPackage;
130
- const { config, warnings } = yield* effect.Effect.tryPromise({
131
- try: () => loadConfig(root, packages),
132
- catch: (e) => new require_errors.ReleasePlanError({
133
- phase: "preview",
134
- reason: errMsg(e)
135
- })
136
- });
137
- yield* effect.Effect.forEach(warnings, (w) => effect.Effect.logWarning(w));
138
- const reasonByName = maintenanceReasons(plan, config);
139
- const preMode = plan.preState ? plan.preState.mode : null;
140
- const changesets = plan.changesets.map((cs) => ({
141
- id: cs.id,
142
- summary: cs.summary,
143
- releases: cs.releases.filter((r) => r.type !== "none").map((r) => ({
144
- name: r.name,
145
- type: r.type
146
- }))
147
- }));
148
- const releasesToRender = plan.releases.filter((r) => r.type !== "none");
149
- if (releasesToRender.length === 0) return {
150
- preMode,
151
- releases: [],
152
- changesets
153
- };
154
- const tempRoot = yield* fs.makeTempDirectoryScoped({ prefix: "silk-preview-" });
155
- const mapDir = (dir) => {
156
- const rel = (0, node_path.relative)(packages.rootDir, dir);
157
- if (rel.startsWith("..") || (0, node_path.isAbsolute)(rel)) return effect.Effect.fail(new require_errors.ReleasePlanError({
158
- phase: "preview",
159
- reason: `Package directory is outside the workspace root: ${dir}`
160
- }));
161
- return effect.Effect.succeed((0, node_path.join)(tempRoot, rel));
162
- };
163
- const tempDirs = yield* effect.Effect.forEach(packages.packages, (p) => mapDir(p.dir));
164
- const tempPackages = {
165
- tool: packages.tool,
166
- rootDir: tempRoot,
167
- rootPackage: {
168
- dir: tempRoot,
169
- packageJson: structuredClone(rootPackage.packageJson)
170
- },
171
- packages: packages.packages.map((p, i) => ({
172
- dir: tempDirs[i],
173
- packageJson: structuredClone(p.packageJson)
174
- }))
175
- };
176
- yield* fs.makeDirectory((0, node_path.join)(tempRoot, ".changeset"), { recursive: true });
177
- yield* fs.copyFile((0, node_path.join)(root, "package.json"), (0, node_path.join)(tempRoot, "package.json"));
178
- const preJson = (0, node_path.join)(root, ".changeset", "pre.json");
179
- if (yield* fs.exists(preJson)) yield* fs.copyFile(preJson, (0, node_path.join)(tempRoot, ".changeset", "pre.json"));
180
- for (let i = 0; i < packages.packages.length; i++) {
181
- const p = packages.packages[i];
182
- const tDir = tempDirs[i];
183
- yield* fs.makeDirectory(tDir, { recursive: true });
184
- yield* fs.copyFile((0, node_path.join)(p.dir, "package.json"), (0, node_path.join)(tDir, "package.json"));
185
- const realCl = (0, node_path.join)(p.dir, "CHANGELOG.md");
186
- if (yield* fs.exists(realCl)) yield* fs.copyFile(realCl, (0, node_path.join)(tDir, "CHANGELOG.md"));
187
- }
188
- const rootCl = (0, node_path.join)(packages.rootDir, "CHANGELOG.md");
189
- if (yield* fs.exists(rootCl)) yield* fs.copyFile(rootCl, (0, node_path.join)(tempRoot, "CHANGELOG.md"));
190
- yield* effect.Effect.tryPromise({
191
- try: () => require_index$1.applyReleasePlan(plan, tempPackages, config, void 0, root),
192
- catch: (e) => new require_errors.ReleasePlanError({
193
- phase: "preview",
194
- reason: errMsg(e)
195
- })
196
- });
197
- const dirByName = /* @__PURE__ */ new Map();
198
- for (const p of tempPackages.packages) dirByName.set(p.packageJson.name, p.dir);
199
- if (tempPackages.rootPackage?.packageJson.name) dirByName.set(tempPackages.rootPackage.packageJson.name, tempRoot);
200
- const releases = [];
201
- for (const r of releasesToRender) {
202
- const dir = dirByName.get(r.name);
203
- if (!dir) continue;
204
- const clPath = (0, node_path.join)(dir, "CHANGELOG.md");
205
- if (!(yield* fs.exists(clPath))) continue;
206
- const reason = reasonByName.get(r.name);
207
- yield* effect.Effect.try({
208
- try: () => require_transformer.ChangelogTransformer.transformFile(clPath, reason ? { maintenance: {
209
- version: r.newVersion,
210
- reason
211
- } } : void 0),
212
- catch: (e) => new require_errors.ReleasePlanError({
213
- phase: "preview",
214
- reason: errMsg(e)
215
- })
216
- });
217
- const content = yield* fs.readFileString(clPath);
218
- releases.push({
219
- name: r.name,
220
- type: r.type,
221
- oldVersion: r.oldVersion,
222
- newVersion: r.newVersion,
223
- changesetIds: [...r.changesets],
224
- changelogEntry: extractVersionBlock(content, r.newVersion)
225
- });
226
- }
227
- return {
228
- preMode,
229
- releases,
230
- changesets
231
- };
232
- });
233
- return effect.Effect.scoped(program).pipe(effect.Effect.mapError((e) => e instanceof require_errors.ReleasePlanError ? e : new require_errors.ReleasePlanError({
234
- phase: "preview",
235
- reason: errMsg(e)
236
- })));
237
- }
238
- /** Re-read a package's version from disk (post-bump) to feed versionFiles; unreadable/unparseable falls back. */
239
- function diskVersion(workspaceDir, fallback, fs) {
240
- return fs.readFileString((0, node_path.join)(workspaceDir, "package.json")).pipe(effect.Effect.flatMap((raw) => effect.Effect.try(() => JSON.parse(raw).version ?? fallback)), effect.Effect.orElseSucceed(() => fallback));
241
- }
242
- function applyEffect(root, dryRun, changelogModules, inspector, fs) {
243
- return effect.Effect.gen(function* () {
244
- const { plan, packages, config, warnings } = yield* effect.Effect.tryPromise({
245
- try: async () => {
246
- const [plan, packages] = await Promise.all([require_index$2.getReleasePlan(root), require_manypkg_get_packages.getPackages(root)]);
247
- const { config, warnings } = await loadConfig(root, packages);
248
- return {
249
- plan,
250
- packages,
251
- config,
252
- warnings
253
- };
254
- },
255
- catch: (e) => new require_errors.ReleasePlanError({
256
- phase: "apply",
257
- reason: errMsg(e)
258
- })
259
- });
260
- yield* effect.Effect.forEach(warnings, (w) => effect.Effect.logWarning(w));
261
- let engineConfig = config;
262
- if (changelogModules) {
263
- engineConfig = {
264
- ...config,
265
- format: false
266
- };
267
- if (Array.isArray(config.changelog)) {
268
- const configuredId = config.changelog[0];
269
- const mapped = changelogModules[configuredId];
270
- if (mapped === void 0) {
271
- const supported = Object.keys(changelogModules).join(", ");
272
- return yield* effect.Effect.fail(new require_errors.ReleasePlanError({
273
- phase: "apply",
274
- reason: `changelog id "${configuredId}" is not in changelogModules (supported: ${supported})`
275
- }));
276
- }
277
- engineConfig = {
278
- ...engineConfig,
279
- changelog: [mapped, config.changelog[1]]
280
- };
281
- }
282
- }
283
- const releases = plan.releases.filter((r) => r.type !== "none").map((r) => ({
284
- name: r.name,
285
- type: r.type,
286
- oldVersion: r.oldVersion,
287
- newVersion: r.newVersion
288
- }));
289
- let touchedFiles = [];
290
- if (!dryRun) {
291
- const reasonByName = maintenanceReasons(plan, config);
292
- const versionByPkgName = new Map(plan.releases.map((r) => [r.name, r.newVersion]));
293
- const nameByDir = /* @__PURE__ */ new Map();
294
- for (const p of packages.packages) nameByDir.set(p.dir, p.packageJson.name);
295
- if (packages.rootPackage?.packageJson.name) nameByDir.set(packages.rootDir, packages.rootPackage.packageJson.name);
296
- touchedFiles = yield* effect.Effect.tryPromise({
297
- try: async () => {
298
- const touched = await require_index$1.applyReleasePlan(plan, packages, engineConfig);
299
- for (const f of touched) {
300
- if (!f.endsWith("CHANGELOG.md")) continue;
301
- const pkgName = nameByDir.get((0, node_path.dirname)(f));
302
- const reason = pkgName ? reasonByName.get(pkgName) : void 0;
303
- const newVersion = pkgName ? versionByPkgName.get(pkgName) : void 0;
304
- require_transformer.ChangelogTransformer.transformFile(f, reason && newVersion ? { maintenance: {
305
- version: newVersion,
306
- reason
307
- } } : void 0);
308
- }
309
- return touched;
310
- },
311
- catch: (e) => new require_errors.ReleasePlanError({
312
- phase: "apply",
313
- reason: errMsg(e)
314
- })
315
- });
316
- }
317
- const newVersionByName = new Map(plan.releases.map((r) => [r.name, r.newVersion]));
318
- const inspected = yield* inspector.inspect(root).pipe(effect.Effect.catchAll((error) => effect.Effect.logWarning(`Skipping versionFiles update: ${errMsg(error)}`).pipe(effect.Effect.as(null))));
319
- let versionFileUpdates = [];
320
- if (inspected) {
321
- const candidates = inspected.packages.filter((p) => p.versionFiles.length > 0);
322
- const freshVersions = yield* effect.Effect.forEach(candidates, (p) => dryRun ? effect.Effect.succeed(newVersionByName.get(p.name) ?? p.version) : diskVersion(p.workspaceDir, p.version, fs));
323
- const scopes = candidates.map((p, i) => {
324
- const fresh = freshVersions[i];
325
- return fresh !== p.version ? {
326
- ...p,
327
- version: fresh
328
- } : p;
329
- });
330
- versionFileUpdates = yield* effect.Effect.try({
331
- try: () => scopes.length > 0 ? require_version_files.VersionFiles.processResolvedVersionFiles(scopes, dryRun) : [],
332
- catch: (e) => new require_errors.ReleasePlanError({
333
- phase: "apply",
334
- reason: errMsg(e)
335
- })
336
- });
337
- }
338
- return {
339
- dryRun,
340
- touchedFiles,
341
- releases,
342
- versionFileUpdates
343
- };
344
- });
345
- }
346
-
347
- //#endregion
348
- exports.ReleasePlanner = ReleasePlanner;
349
- exports.ReleasePlannerBase = ReleasePlannerBase;
350
- exports.ReleasePlannerLive = ReleasePlannerLive;
351
- exports.extractVersionBlock = extractVersionBlock;
352
- exports.makeReleasePlannerTest = makeReleasePlannerTest;