@fuzdev/fuz_gitops 0.57.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.
Files changed (190) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +119 -0
  3. package/dist/ModulesDetail.svelte +180 -0
  4. package/dist/ModulesDetail.svelte.d.ts +10 -0
  5. package/dist/ModulesDetail.svelte.d.ts.map +1 -0
  6. package/dist/ModulesNav.svelte +43 -0
  7. package/dist/ModulesNav.svelte.d.ts +11 -0
  8. package/dist/ModulesNav.svelte.d.ts.map +1 -0
  9. package/dist/ModulesPage.svelte +50 -0
  10. package/dist/ModulesPage.svelte.d.ts +9 -0
  11. package/dist/ModulesPage.svelte.d.ts.map +1 -0
  12. package/dist/PageFooter.svelte +15 -0
  13. package/dist/PageFooter.svelte.d.ts +19 -0
  14. package/dist/PageFooter.svelte.d.ts.map +1 -0
  15. package/dist/PageHeader.svelte +35 -0
  16. package/dist/PageHeader.svelte.d.ts +19 -0
  17. package/dist/PageHeader.svelte.d.ts.map +1 -0
  18. package/dist/PullRequestsDetail.svelte +53 -0
  19. package/dist/PullRequestsDetail.svelte.d.ts +10 -0
  20. package/dist/PullRequestsDetail.svelte.d.ts.map +1 -0
  21. package/dist/PullRequestsPage.svelte +47 -0
  22. package/dist/PullRequestsPage.svelte.d.ts +11 -0
  23. package/dist/PullRequestsPage.svelte.d.ts.map +1 -0
  24. package/dist/ReposTable.svelte +189 -0
  25. package/dist/ReposTable.svelte.d.ts +9 -0
  26. package/dist/ReposTable.svelte.d.ts.map +1 -0
  27. package/dist/ReposTree.svelte +88 -0
  28. package/dist/ReposTree.svelte.d.ts +11 -0
  29. package/dist/ReposTree.svelte.d.ts.map +1 -0
  30. package/dist/ReposTreeNav.svelte +55 -0
  31. package/dist/ReposTreeNav.svelte.d.ts +11 -0
  32. package/dist/ReposTreeNav.svelte.d.ts.map +1 -0
  33. package/dist/TablePage.svelte +46 -0
  34. package/dist/TablePage.svelte.d.ts +9 -0
  35. package/dist/TablePage.svelte.d.ts.map +1 -0
  36. package/dist/TreeItemPage.svelte +75 -0
  37. package/dist/TreeItemPage.svelte.d.ts +10 -0
  38. package/dist/TreeItemPage.svelte.d.ts.map +1 -0
  39. package/dist/TreePage.svelte +64 -0
  40. package/dist/TreePage.svelte.d.ts +9 -0
  41. package/dist/TreePage.svelte.d.ts.map +1 -0
  42. package/dist/changeset_generator.d.ts +38 -0
  43. package/dist/changeset_generator.d.ts.map +1 -0
  44. package/dist/changeset_generator.js +110 -0
  45. package/dist/changeset_reader.d.ts +75 -0
  46. package/dist/changeset_reader.d.ts.map +1 -0
  47. package/dist/changeset_reader.js +167 -0
  48. package/dist/constants.d.ts +9 -0
  49. package/dist/constants.d.ts.map +1 -0
  50. package/dist/constants.js +8 -0
  51. package/dist/dependency_graph.d.ts +120 -0
  52. package/dist/dependency_graph.d.ts.map +1 -0
  53. package/dist/dependency_graph.js +341 -0
  54. package/dist/dependency_updater.d.ts +46 -0
  55. package/dist/dependency_updater.d.ts.map +1 -0
  56. package/dist/dependency_updater.js +213 -0
  57. package/dist/fetch_repo_data.d.ts +19 -0
  58. package/dist/fetch_repo_data.d.ts.map +1 -0
  59. package/dist/fetch_repo_data.js +49 -0
  60. package/dist/fs_fetch_value_cache.d.ts +24 -0
  61. package/dist/fs_fetch_value_cache.d.ts.map +1 -0
  62. package/dist/fs_fetch_value_cache.js +61 -0
  63. package/dist/git_operations.d.ts +54 -0
  64. package/dist/git_operations.d.ts.map +1 -0
  65. package/dist/git_operations.js +144 -0
  66. package/dist/github.d.ts +91 -0
  67. package/dist/github.d.ts.map +1 -0
  68. package/dist/github.js +94 -0
  69. package/dist/github_helpers.d.ts +10 -0
  70. package/dist/github_helpers.d.ts.map +1 -0
  71. package/dist/github_helpers.js +13 -0
  72. package/dist/gitops_analyze.task.d.ts +17 -0
  73. package/dist/gitops_analyze.task.d.ts.map +1 -0
  74. package/dist/gitops_analyze.task.js +188 -0
  75. package/dist/gitops_config.d.ts +56 -0
  76. package/dist/gitops_config.d.ts.map +1 -0
  77. package/dist/gitops_config.js +63 -0
  78. package/dist/gitops_plan.task.d.ts +28 -0
  79. package/dist/gitops_plan.task.d.ts.map +1 -0
  80. package/dist/gitops_plan.task.js +217 -0
  81. package/dist/gitops_publish.task.d.ts +29 -0
  82. package/dist/gitops_publish.task.d.ts.map +1 -0
  83. package/dist/gitops_publish.task.js +178 -0
  84. package/dist/gitops_sync.task.d.ts +18 -0
  85. package/dist/gitops_sync.task.d.ts.map +1 -0
  86. package/dist/gitops_sync.task.js +95 -0
  87. package/dist/gitops_task_helpers.d.ts +63 -0
  88. package/dist/gitops_task_helpers.d.ts.map +1 -0
  89. package/dist/gitops_task_helpers.js +84 -0
  90. package/dist/gitops_validate.task.d.ts +12 -0
  91. package/dist/gitops_validate.task.d.ts.map +1 -0
  92. package/dist/gitops_validate.task.js +210 -0
  93. package/dist/graph_validation.d.ts +39 -0
  94. package/dist/graph_validation.d.ts.map +1 -0
  95. package/dist/graph_validation.js +79 -0
  96. package/dist/local_repo.d.ts +84 -0
  97. package/dist/local_repo.d.ts.map +1 -0
  98. package/dist/local_repo.js +213 -0
  99. package/dist/log_helpers.d.ts +43 -0
  100. package/dist/log_helpers.d.ts.map +1 -0
  101. package/dist/log_helpers.js +98 -0
  102. package/dist/multi_repo_publisher.d.ts +34 -0
  103. package/dist/multi_repo_publisher.d.ts.map +1 -0
  104. package/dist/multi_repo_publisher.js +364 -0
  105. package/dist/npm_install_helpers.d.ts +23 -0
  106. package/dist/npm_install_helpers.d.ts.map +1 -0
  107. package/dist/npm_install_helpers.js +60 -0
  108. package/dist/npm_registry.d.ts +46 -0
  109. package/dist/npm_registry.d.ts.map +1 -0
  110. package/dist/npm_registry.js +96 -0
  111. package/dist/operations.d.ts +409 -0
  112. package/dist/operations.d.ts.map +1 -0
  113. package/dist/operations.js +34 -0
  114. package/dist/operations_defaults.d.ts +19 -0
  115. package/dist/operations_defaults.d.ts.map +1 -0
  116. package/dist/operations_defaults.js +279 -0
  117. package/dist/output_helpers.d.ts +27 -0
  118. package/dist/output_helpers.d.ts.map +1 -0
  119. package/dist/output_helpers.js +39 -0
  120. package/dist/paths.d.ts +11 -0
  121. package/dist/paths.d.ts.map +1 -0
  122. package/dist/paths.js +10 -0
  123. package/dist/preflight_checks.d.ts +47 -0
  124. package/dist/preflight_checks.d.ts.map +1 -0
  125. package/dist/preflight_checks.js +181 -0
  126. package/dist/publishing_plan.d.ts +100 -0
  127. package/dist/publishing_plan.d.ts.map +1 -0
  128. package/dist/publishing_plan.js +353 -0
  129. package/dist/publishing_plan_helpers.d.ts +30 -0
  130. package/dist/publishing_plan_helpers.d.ts.map +1 -0
  131. package/dist/publishing_plan_helpers.js +112 -0
  132. package/dist/publishing_plan_logging.d.ts +18 -0
  133. package/dist/publishing_plan_logging.d.ts.map +1 -0
  134. package/dist/publishing_plan_logging.js +342 -0
  135. package/dist/repo.svelte.d.ts +52 -0
  136. package/dist/repo.svelte.d.ts.map +1 -0
  137. package/dist/repo.svelte.js +70 -0
  138. package/dist/repo_ops.d.ts +57 -0
  139. package/dist/repo_ops.d.ts.map +1 -0
  140. package/dist/repo_ops.js +167 -0
  141. package/dist/resolved_gitops_config.d.ts +9 -0
  142. package/dist/resolved_gitops_config.d.ts.map +1 -0
  143. package/dist/resolved_gitops_config.js +12 -0
  144. package/dist/semver.d.ts +24 -0
  145. package/dist/semver.d.ts.map +1 -0
  146. package/dist/semver.js +140 -0
  147. package/dist/serialization_types.d.ts +57 -0
  148. package/dist/serialization_types.d.ts.map +1 -0
  149. package/dist/serialization_types.js +40 -0
  150. package/dist/version_utils.d.ts +48 -0
  151. package/dist/version_utils.d.ts.map +1 -0
  152. package/dist/version_utils.js +125 -0
  153. package/package.json +107 -0
  154. package/src/lib/changeset_generator.ts +162 -0
  155. package/src/lib/changeset_reader.ts +218 -0
  156. package/src/lib/constants.ts +8 -0
  157. package/src/lib/dependency_graph.ts +423 -0
  158. package/src/lib/dependency_updater.ts +297 -0
  159. package/src/lib/fetch_repo_data.ts +64 -0
  160. package/src/lib/fs_fetch_value_cache.ts +75 -0
  161. package/src/lib/git_operations.ts +208 -0
  162. package/src/lib/github.ts +128 -0
  163. package/src/lib/github_helpers.ts +31 -0
  164. package/src/lib/gitops_analyze.task.ts +261 -0
  165. package/src/lib/gitops_config.ts +123 -0
  166. package/src/lib/gitops_plan.task.ts +272 -0
  167. package/src/lib/gitops_publish.task.ts +227 -0
  168. package/src/lib/gitops_sync.task.ts +109 -0
  169. package/src/lib/gitops_task_helpers.ts +126 -0
  170. package/src/lib/gitops_validate.task.ts +248 -0
  171. package/src/lib/graph_validation.ts +109 -0
  172. package/src/lib/local_repo.ts +359 -0
  173. package/src/lib/log_helpers.ts +147 -0
  174. package/src/lib/multi_repo_publisher.ts +464 -0
  175. package/src/lib/npm_install_helpers.ts +85 -0
  176. package/src/lib/npm_registry.ts +143 -0
  177. package/src/lib/operations.ts +334 -0
  178. package/src/lib/operations_defaults.ts +335 -0
  179. package/src/lib/output_helpers.ts +64 -0
  180. package/src/lib/paths.ts +11 -0
  181. package/src/lib/preflight_checks.ts +269 -0
  182. package/src/lib/publishing_plan.ts +531 -0
  183. package/src/lib/publishing_plan_helpers.ts +145 -0
  184. package/src/lib/publishing_plan_logging.ts +470 -0
  185. package/src/lib/repo.svelte.ts +95 -0
  186. package/src/lib/repo_ops.ts +213 -0
  187. package/src/lib/resolved_gitops_config.ts +27 -0
  188. package/src/lib/semver.ts +166 -0
  189. package/src/lib/serialization_types.ts +90 -0
  190. package/src/lib/version_utils.ts +150 -0
@@ -0,0 +1,409 @@
1
+ /**
2
+ * Operations interfaces for dependency injection.
3
+ *
4
+ * This is the core pattern enabling testability without mocks.
5
+ * All side effects (git, npm, fs, process) are abstracted into interfaces.
6
+ *
7
+ * **Design principles:**
8
+ * - All operations accept a single `options` object parameter
9
+ * - All fallible operations return `Result` from `@fuzdev/fuz_util`
10
+ * - Never throw `Error` in operations - return `Result` with `ok: false`
11
+ * - Use `null` for expected "not found" cases (not errors)
12
+ * - Include `log?: Logger` in options where logging is useful
13
+ *
14
+ * **Production usage:**
15
+ * ```typescript
16
+ * import {default_gitops_operations} from './operations_defaults.js';
17
+ * const result = await ops.git.current_branch_name({cwd: '/path'});
18
+ * if (!result.ok) {
19
+ * throw new TaskError(result.message);
20
+ * }
21
+ * const branch = result.value;
22
+ * ```
23
+ *
24
+ * **Test usage:**
25
+ * ```typescript
26
+ * const mock_ops = create_mock_operations();
27
+ * const result = await publish_repos(repos, {...options, ops: mock_ops});
28
+ * // Assert on result without any real git/npm calls
29
+ * ```
30
+ *
31
+ * See `operations_defaults.ts` for real implementations.
32
+ * See test files (*.test.ts) for mock implementations.
33
+ */
34
+ import type { Result } from '@fuzdev/fuz_util/result.js';
35
+ import type { Logger } from '@fuzdev/fuz_util/log.js';
36
+ import type { SpawnOptions } from 'node:child_process';
37
+ import type { LocalRepo } from './local_repo.js';
38
+ import type { ChangesetInfo } from './changeset_reader.js';
39
+ import type { BumpType } from './semver.js';
40
+ import type { PreflightOptions, PreflightResult } from './preflight_checks.js';
41
+ import type { WaitOptions } from './npm_registry.js';
42
+ /**
43
+ * Changeset operations for reading and predicting versions from `.changeset/*.md` files.
44
+ */
45
+ export interface ChangesetOperations {
46
+ /**
47
+ * Checks if a repo has any changeset files.
48
+ * Returns true if changesets exist, false if none found.
49
+ */
50
+ has_changesets: (options: {
51
+ repo: LocalRepo;
52
+ }) => Promise<Result<{
53
+ value: boolean;
54
+ }, {
55
+ message: string;
56
+ }>>;
57
+ /**
58
+ * Reads all changeset files from a repo.
59
+ * Returns array of changeset info, or error if reading fails.
60
+ */
61
+ read_changesets: (options: {
62
+ repo: LocalRepo;
63
+ log?: Logger;
64
+ }) => Promise<Result<{
65
+ value: Array<ChangesetInfo>;
66
+ }, {
67
+ message: string;
68
+ }>>;
69
+ /**
70
+ * Predicts the next version based on changesets.
71
+ * Returns null if no changesets found (expected, not an error).
72
+ * Returns error Result if changesets exist but can't be read/parsed.
73
+ */
74
+ predict_next_version: (options: {
75
+ repo: LocalRepo;
76
+ log?: Logger;
77
+ }) => Promise<Result<{
78
+ version: string;
79
+ bump_type: BumpType;
80
+ }, {
81
+ message: string;
82
+ }> | null>;
83
+ }
84
+ /**
85
+ * Git operations for branch management, commits, tags, and workspace state.
86
+ * All operations return `Result` instead of throwing errors.
87
+ */
88
+ export interface GitOperations {
89
+ /**
90
+ * Gets the current branch name.
91
+ */
92
+ current_branch_name: (options?: {
93
+ cwd?: string;
94
+ }) => Promise<Result<{
95
+ value: string;
96
+ }, {
97
+ message: string;
98
+ }>>;
99
+ /**
100
+ * Gets the current commit hash.
101
+ */
102
+ current_commit_hash: (options?: {
103
+ branch?: string;
104
+ cwd?: string;
105
+ }) => Promise<Result<{
106
+ value: string;
107
+ }, {
108
+ message: string;
109
+ }>>;
110
+ /**
111
+ * Checks if the workspace is clean (no uncommitted changes).
112
+ */
113
+ check_clean_workspace: (options?: {
114
+ cwd?: string;
115
+ }) => Promise<Result<{
116
+ value: boolean;
117
+ }, {
118
+ message: string;
119
+ }>>;
120
+ /**
121
+ * Checks out a branch.
122
+ */
123
+ checkout: (options: {
124
+ branch: string;
125
+ cwd?: string;
126
+ }) => Promise<Result<object, {
127
+ message: string;
128
+ }>>;
129
+ /**
130
+ * Pulls changes from remote.
131
+ */
132
+ pull: (options?: {
133
+ origin?: string;
134
+ branch?: string;
135
+ cwd?: string;
136
+ }) => Promise<Result<object, {
137
+ message: string;
138
+ }>>;
139
+ /**
140
+ * Switches to a branch, optionally pulling.
141
+ */
142
+ switch_branch: (options: {
143
+ branch: string;
144
+ pull?: boolean;
145
+ cwd?: string;
146
+ }) => Promise<Result<object, {
147
+ message: string;
148
+ }>>;
149
+ /**
150
+ * Checks if a remote exists.
151
+ */
152
+ has_remote: (options?: {
153
+ remote?: string;
154
+ cwd?: string;
155
+ }) => Promise<Result<{
156
+ value: boolean;
157
+ }, {
158
+ message: string;
159
+ }>>;
160
+ /**
161
+ * Stages files for commit.
162
+ */
163
+ add: (options: {
164
+ files: string | Array<string>;
165
+ cwd?: string;
166
+ }) => Promise<Result<object, {
167
+ message: string;
168
+ }>>;
169
+ /**
170
+ * Creates a commit.
171
+ */
172
+ commit: (options: {
173
+ message: string;
174
+ cwd?: string;
175
+ }) => Promise<Result<object, {
176
+ message: string;
177
+ }>>;
178
+ /**
179
+ * Stages files and creates a commit.
180
+ */
181
+ add_and_commit: (options: {
182
+ files: string | Array<string>;
183
+ message: string;
184
+ cwd?: string;
185
+ }) => Promise<Result<object, {
186
+ message: string;
187
+ }>>;
188
+ /**
189
+ * Checks if there are any uncommitted changes.
190
+ */
191
+ has_changes: (options?: {
192
+ cwd?: string;
193
+ }) => Promise<Result<{
194
+ value: boolean;
195
+ }, {
196
+ message: string;
197
+ }>>;
198
+ /**
199
+ * Gets a list of changed files.
200
+ */
201
+ get_changed_files: (options?: {
202
+ cwd?: string;
203
+ }) => Promise<Result<{
204
+ value: Array<string>;
205
+ }, {
206
+ message: string;
207
+ }>>;
208
+ /**
209
+ * Creates a git tag.
210
+ */
211
+ tag: (options: {
212
+ tag_name: string;
213
+ message?: string;
214
+ cwd?: string;
215
+ }) => Promise<Result<object, {
216
+ message: string;
217
+ }>>;
218
+ /**
219
+ * Pushes a tag to remote.
220
+ */
221
+ push_tag: (options: {
222
+ tag_name: string;
223
+ origin?: string;
224
+ cwd?: string;
225
+ }) => Promise<Result<object, {
226
+ message: string;
227
+ }>>;
228
+ /**
229
+ * Stashes uncommitted changes.
230
+ */
231
+ stash: (options?: {
232
+ message?: string;
233
+ cwd?: string;
234
+ }) => Promise<Result<object, {
235
+ message: string;
236
+ }>>;
237
+ /**
238
+ * Pops the most recent stash.
239
+ */
240
+ stash_pop: (options?: {
241
+ cwd?: string;
242
+ }) => Promise<Result<object, {
243
+ message: string;
244
+ }>>;
245
+ /**
246
+ * Checks if a specific file changed between two commits.
247
+ */
248
+ has_file_changed: (options: {
249
+ from_commit: string;
250
+ to_commit: string;
251
+ file_path: string;
252
+ cwd?: string;
253
+ }) => Promise<Result<{
254
+ value: boolean;
255
+ }, {
256
+ message: string;
257
+ }>>;
258
+ }
259
+ /**
260
+ * Process spawning operations for running shell commands.
261
+ */
262
+ export interface ProcessOperations {
263
+ /**
264
+ * Spawns a child process and waits for completion.
265
+ */
266
+ spawn: (options: {
267
+ cmd: string;
268
+ args: Array<string>;
269
+ spawn_options?: SpawnOptions;
270
+ }) => Promise<Result<{
271
+ stdout?: string;
272
+ stderr?: string;
273
+ }, {
274
+ message: string;
275
+ stderr?: string;
276
+ }>>;
277
+ }
278
+ /**
279
+ * Build operations for validating packages compile before publishing.
280
+ */
281
+ export interface BuildOperations {
282
+ /**
283
+ * Builds a package using gro build.
284
+ */
285
+ build_package: (options: {
286
+ repo: LocalRepo;
287
+ log?: Logger;
288
+ }) => Promise<Result<object, {
289
+ message: string;
290
+ output?: string;
291
+ }>>;
292
+ }
293
+ /**
294
+ * NPM registry operations for package availability checks and authentication.
295
+ * Includes exponential backoff for waiting on package propagation.
296
+ */
297
+ export interface NpmOperations {
298
+ /**
299
+ * Waits for a package version to be available on NPM.
300
+ * Uses exponential backoff with configurable timeout.
301
+ */
302
+ wait_for_package: (options: {
303
+ pkg: string;
304
+ version: string;
305
+ wait_options?: WaitOptions;
306
+ log?: Logger;
307
+ }) => Promise<Result<object, {
308
+ message: string;
309
+ timeout?: boolean;
310
+ }>>;
311
+ /**
312
+ * Checks if a package version is available on NPM.
313
+ */
314
+ check_package_available: (options: {
315
+ pkg: string;
316
+ version: string;
317
+ log?: Logger;
318
+ }) => Promise<Result<{
319
+ value: boolean;
320
+ }, {
321
+ message: string;
322
+ }>>;
323
+ /**
324
+ * Checks npm authentication status.
325
+ */
326
+ check_auth: () => Promise<Result<{
327
+ username: string;
328
+ }, {
329
+ message: string;
330
+ }>>;
331
+ /**
332
+ * Checks if npm registry is reachable.
333
+ */
334
+ check_registry: () => Promise<Result<object, {
335
+ message: string;
336
+ }>>;
337
+ /**
338
+ * Installs npm dependencies.
339
+ */
340
+ install: (options?: {
341
+ cwd?: string;
342
+ }) => Promise<Result<object, {
343
+ message: string;
344
+ stderr?: string;
345
+ }>>;
346
+ /**
347
+ * Cleans the npm cache.
348
+ * Uses `npm cache clean --force` to clear stale cache entries.
349
+ */
350
+ cache_clean: () => Promise<Result<object, {
351
+ message: string;
352
+ }>>;
353
+ }
354
+ /**
355
+ * Preflight validation operations to ensure repos are ready for publishing.
356
+ * Validates workspace state, branches, builds, and npm authentication.
357
+ */
358
+ export interface PreflightOperations {
359
+ /**
360
+ * Runs preflight validation checks before publishing.
361
+ */
362
+ run_preflight_checks: (options: {
363
+ repos: Array<LocalRepo>;
364
+ preflight_options: PreflightOptions;
365
+ git_ops?: GitOperations;
366
+ npm_ops?: NpmOperations;
367
+ build_ops?: BuildOperations;
368
+ changeset_ops?: ChangesetOperations;
369
+ }) => Promise<PreflightResult>;
370
+ }
371
+ /**
372
+ * File system operations for reading and writing files.
373
+ */
374
+ export interface FsOperations {
375
+ /**
376
+ * Reads a file from the file system.
377
+ */
378
+ readFile: (options: {
379
+ path: string;
380
+ encoding: BufferEncoding;
381
+ }) => Promise<Result<{
382
+ value: string;
383
+ }, {
384
+ message: string;
385
+ }>>;
386
+ /**
387
+ * Writes a file to the file system.
388
+ */
389
+ writeFile: (options: {
390
+ path: string;
391
+ content: string;
392
+ }) => Promise<Result<object, {
393
+ message: string;
394
+ }>>;
395
+ }
396
+ /**
397
+ * Combined operations interface grouping all gitops functionality.
398
+ * This is the main interface injected into publishing and validation workflows.
399
+ */
400
+ export interface GitopsOperations {
401
+ changeset: ChangesetOperations;
402
+ git: GitOperations;
403
+ process: ProcessOperations;
404
+ npm: NpmOperations;
405
+ preflight: PreflightOperations;
406
+ fs: FsOperations;
407
+ build: BuildOperations;
408
+ }
409
+ //# sourceMappingURL=operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Operations interfaces for dependency injection.
3
+ *
4
+ * This is the core pattern enabling testability without mocks.
5
+ * All side effects (git, npm, fs, process) are abstracted into interfaces.
6
+ *
7
+ * **Design principles:**
8
+ * - All operations accept a single `options` object parameter
9
+ * - All fallible operations return `Result` from `@fuzdev/fuz_util`
10
+ * - Never throw `Error` in operations - return `Result` with `ok: false`
11
+ * - Use `null` for expected "not found" cases (not errors)
12
+ * - Include `log?: Logger` in options where logging is useful
13
+ *
14
+ * **Production usage:**
15
+ * ```typescript
16
+ * import {default_gitops_operations} from './operations_defaults.js';
17
+ * const result = await ops.git.current_branch_name({cwd: '/path'});
18
+ * if (!result.ok) {
19
+ * throw new TaskError(result.message);
20
+ * }
21
+ * const branch = result.value;
22
+ * ```
23
+ *
24
+ * **Test usage:**
25
+ * ```typescript
26
+ * const mock_ops = create_mock_operations();
27
+ * const result = await publish_repos(repos, {...options, ops: mock_ops});
28
+ * // Assert on result without any real git/npm calls
29
+ * ```
30
+ *
31
+ * See `operations_defaults.ts` for real implementations.
32
+ * See test files (*.test.ts) for mock implementations.
33
+ */
34
+ export {};
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Production implementations of operations interfaces.
3
+ *
4
+ * Provides real git, npm, fs, and build operations for production use.
5
+ * For interface definitions and dependency injection pattern, see `operations.ts`.
6
+ */
7
+ import type { ChangesetOperations, GitOperations, ProcessOperations, NpmOperations, PreflightOperations, FsOperations, BuildOperations, GitopsOperations } from './operations.js';
8
+ export declare const default_changeset_operations: ChangesetOperations;
9
+ export declare const default_git_operations: GitOperations;
10
+ export declare const default_process_operations: ProcessOperations;
11
+ export declare const default_npm_operations: NpmOperations;
12
+ export declare const default_preflight_operations: PreflightOperations;
13
+ export declare const default_fs_operations: FsOperations;
14
+ export declare const default_build_operations: BuildOperations;
15
+ /**
16
+ * Combined default operations for all gitops functionality.
17
+ */
18
+ export declare const default_gitops_operations: GitopsOperations;
19
+ //# sourceMappingURL=operations_defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations_defaults.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/operations_defaults.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2BH,OAAO,KAAK,EACX,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,MAAM,iBAAiB,CAAC;AA0BzB,eAAO,MAAM,4BAA4B,EAAE,mBAuB1C,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,aA+FpC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,iBAsBxC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,aAqEpC,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,mBAI1C,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,YAUnC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,eAmBtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,gBAQvC,CAAC"}