@hardlydifficult/repo-processor 1.0.35 → 1.0.37

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.
@@ -0,0 +1,66 @@
1
+ import { type StateTrackerEvent } from "@hardlydifficult/state-tracker";
2
+ export interface RepoWatcherConfig<TResult> {
3
+ /** Key used for persisting state to disk. */
4
+ stateKey: string;
5
+ /** Directory where state is persisted. */
6
+ stateDirectory: string;
7
+ /** Auto-save interval in milliseconds. Default 5000. */
8
+ autoSaveMs?: number;
9
+ /** The work to run for a repo. */
10
+ run: (owner: string, name: string) => Promise<TResult>;
11
+ /** Called after a successful run. */
12
+ onComplete?: (owner: string, name: string, result: TResult, sha: string) => void;
13
+ /** Called when a run fails. */
14
+ onError?: (owner: string, name: string, error: unknown) => void;
15
+ /** Logger/event callback. */
16
+ onEvent?: (event: StateTrackerEvent) => void;
17
+ /** Number of attempts (initial + retries). Default 1 (no retry). */
18
+ maxAttempts?: number;
19
+ }
20
+ /**
21
+ * Watches for SHA changes on GitHub repos and triggers processing.
22
+ *
23
+ * Handles state persistence (last-processed SHA per repo), concurrent run
24
+ * prevention, pending SHA re-triggers, and manual triggers. Consumers
25
+ * provide the `run` callback containing domain-specific logic.
26
+ */
27
+ export declare class RepoWatcher<TResult = void> {
28
+ private readonly stateTracker;
29
+ private readonly running;
30
+ private readonly pendingSha;
31
+ private readonly config;
32
+ private readonly maxAttempts;
33
+ constructor(config: RepoWatcherConfig<TResult>);
34
+ /** Load persisted state from disk. */
35
+ init(): Promise<void>;
36
+ /**
37
+ * Handle a push event. Compares the SHA against tracked state,
38
+ * queues processing if changed, stores as pending if already running.
39
+ */
40
+ handlePush(owner: string, name: string, sha: string): void;
41
+ /**
42
+ * Queue a run unconditionally (no SHA comparison).
43
+ * Skips if already running. Returns false if skipped.
44
+ */
45
+ trigger(owner: string, name: string): boolean;
46
+ /**
47
+ * Run processing synchronously (blocks until complete).
48
+ * Returns an error if already running.
49
+ */
50
+ triggerManual(owner: string, name: string): Promise<{
51
+ success: true;
52
+ result: TResult;
53
+ } | {
54
+ success: false;
55
+ reason: string;
56
+ }>;
57
+ /** Check if a repo is currently being processed. */
58
+ isRunning(owner: string, name: string): boolean;
59
+ /** Get the last processed SHA for a repo key. */
60
+ getLastSha(key: string): string | undefined;
61
+ /** Persist a processed SHA for a repo key. */
62
+ setLastSha(key: string, sha: string): void;
63
+ private queueRun;
64
+ private executeWithRetry;
65
+ }
66
+ //# sourceMappingURL=RepoWatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RepoWatcher.d.ts","sourceRoot":"","sources":["../src/RepoWatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,gCAAgC,CAAC;AAExC,MAAM,WAAW,iBAAiB,CAAC,OAAO;IACxC,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,qCAAqC;IACrC,UAAU,CAAC,EAAE,CACX,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,EACf,GAAG,EAAE,MAAM,KACR,IAAI,CAAC;IACV,+BAA+B;IAC/B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAChE,6BAA6B;IAC7B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD;;;;;;GAMG;AACH,qBAAa,WAAW,CAAC,OAAO,GAAG,IAAI;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC;IAa9C,sCAAsC;IAChC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAe1D;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAS7C;;;OAGG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CACR;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CACxE;IAsBD,oDAAoD;IACpD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAI/C,iDAAiD;IACjD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI3C,8CAA8C;IAC9C,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAc1C,OAAO,CAAC,QAAQ;YAyBF,gBAAgB;CA0B/B"}
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RepoWatcher = void 0;
4
+ const state_tracker_1 = require("@hardlydifficult/state-tracker");
5
+ /**
6
+ * Watches for SHA changes on GitHub repos and triggers processing.
7
+ *
8
+ * Handles state persistence (last-processed SHA per repo), concurrent run
9
+ * prevention, pending SHA re-triggers, and manual triggers. Consumers
10
+ * provide the `run` callback containing domain-specific logic.
11
+ */
12
+ class RepoWatcher {
13
+ stateTracker;
14
+ running = new Set();
15
+ pendingSha = new Map();
16
+ config;
17
+ maxAttempts;
18
+ constructor(config) {
19
+ this.config = config;
20
+ this.maxAttempts = config.maxAttempts ?? 1;
21
+ this.stateTracker = new state_tracker_1.StateTracker({
22
+ key: config.stateKey,
23
+ default: { lastProcessedSha: {} },
24
+ stateDirectory: config.stateDirectory,
25
+ autoSaveMs: config.autoSaveMs ?? 5000,
26
+ onEvent: config.onEvent,
27
+ });
28
+ }
29
+ /** Load persisted state from disk. */
30
+ async init() {
31
+ await this.stateTracker.loadAsync();
32
+ }
33
+ /**
34
+ * Handle a push event. Compares the SHA against tracked state,
35
+ * queues processing if changed, stores as pending if already running.
36
+ */
37
+ handlePush(owner, name, sha) {
38
+ const key = `${owner}/${name}`;
39
+ const lastSha = this.stateTracker.state.lastProcessedSha[key];
40
+ if (lastSha === sha) {
41
+ return;
42
+ }
43
+ if (this.running.has(key)) {
44
+ this.pendingSha.set(key, sha);
45
+ return;
46
+ }
47
+ this.queueRun(owner, name, sha);
48
+ }
49
+ /**
50
+ * Queue a run unconditionally (no SHA comparison).
51
+ * Skips if already running. Returns false if skipped.
52
+ */
53
+ trigger(owner, name) {
54
+ const key = `${owner}/${name}`;
55
+ if (this.running.has(key)) {
56
+ return false;
57
+ }
58
+ this.queueRun(owner, name, "");
59
+ return true;
60
+ }
61
+ /**
62
+ * Run processing synchronously (blocks until complete).
63
+ * Returns an error if already running.
64
+ */
65
+ async triggerManual(owner, name) {
66
+ const key = `${owner}/${name}`;
67
+ if (this.running.has(key)) {
68
+ return {
69
+ success: false,
70
+ reason: `Already running for ${key}`,
71
+ };
72
+ }
73
+ this.running.add(key);
74
+ try {
75
+ const result = await this.executeWithRetry(owner, name);
76
+ return { success: true, result };
77
+ }
78
+ catch (error) {
79
+ this.config.onError?.(owner, name, error);
80
+ const message = error instanceof Error ? error.message : String(error);
81
+ return { success: false, reason: message };
82
+ }
83
+ finally {
84
+ this.running.delete(key);
85
+ }
86
+ }
87
+ /** Check if a repo is currently being processed. */
88
+ isRunning(owner, name) {
89
+ return this.running.has(`${owner}/${name}`);
90
+ }
91
+ /** Get the last processed SHA for a repo key. */
92
+ getLastSha(key) {
93
+ return this.stateTracker.state.lastProcessedSha[key];
94
+ }
95
+ /** Persist a processed SHA for a repo key. */
96
+ setLastSha(key, sha) {
97
+ this.stateTracker.set({
98
+ ...this.stateTracker.state,
99
+ lastProcessedSha: {
100
+ ...this.stateTracker.state.lastProcessedSha,
101
+ [key]: sha,
102
+ },
103
+ });
104
+ }
105
+ // ---------------------------------------------------------------------------
106
+ // Private
107
+ // ---------------------------------------------------------------------------
108
+ queueRun(owner, name, sha) {
109
+ const key = `${owner}/${name}`;
110
+ this.running.add(key);
111
+ this.executeWithRetry(owner, name)
112
+ .then((result) => {
113
+ if (sha) {
114
+ this.setLastSha(key, sha);
115
+ }
116
+ this.config.onComplete?.(owner, name, result, sha);
117
+ })
118
+ .catch((error) => {
119
+ this.config.onError?.(owner, name, error);
120
+ })
121
+ .finally(() => {
122
+ this.running.delete(key);
123
+ const pending = this.pendingSha.get(key);
124
+ if (pending !== undefined) {
125
+ this.pendingSha.delete(key);
126
+ this.handlePush(owner, name, pending);
127
+ }
128
+ });
129
+ }
130
+ async executeWithRetry(owner, name) {
131
+ let lastError;
132
+ for (let attempt = 1; attempt <= this.maxAttempts; attempt++) {
133
+ try {
134
+ return await this.config.run(owner, name);
135
+ }
136
+ catch (error) {
137
+ lastError = error;
138
+ if (attempt < this.maxAttempts) {
139
+ this.config.onEvent?.({
140
+ level: "warn",
141
+ message: `Run failed (attempt ${String(attempt)}/${String(this.maxAttempts)}), retrying`,
142
+ context: {
143
+ repo: `${owner}/${name}`,
144
+ error: error instanceof Error ? error.message : String(error),
145
+ },
146
+ });
147
+ }
148
+ }
149
+ }
150
+ throw lastError;
151
+ }
152
+ }
153
+ exports.RepoWatcher = RepoWatcher;
154
+ //# sourceMappingURL=RepoWatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RepoWatcher.js","sourceRoot":"","sources":["../src/RepoWatcher.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export { RepoProcessor } from "./RepoProcessor.js";
2
2
  export type { RepoProcessorConfig } from "./RepoProcessor.js";
3
+ export { RepoWatcher } from "./RepoWatcher.js";
4
+ export type { RepoWatcherConfig } from "./RepoWatcher.js";
3
5
  export { resolveStaleDirectories } from "./resolveDirectories.js";
4
6
  export { GitYamlStore } from "./GitYamlStore.js";
5
7
  export type { GitYamlStoreConfig } from "./GitYamlStore.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GitYamlStore = exports.resolveStaleDirectories = exports.RepoProcessor = void 0;
3
+ exports.GitYamlStore = exports.resolveStaleDirectories = exports.RepoWatcher = exports.RepoProcessor = void 0;
4
4
  var RepoProcessor_js_1 = require("./RepoProcessor.js");
5
5
  Object.defineProperty(exports, "RepoProcessor", { enumerable: true, get: function () { return RepoProcessor_js_1.RepoProcessor; } });
6
+ var RepoWatcher_js_1 = require("./RepoWatcher.js");
7
+ Object.defineProperty(exports, "RepoWatcher", { enumerable: true, get: function () { return RepoWatcher_js_1.RepoWatcher; } });
6
8
  var resolveDirectories_js_1 = require("./resolveDirectories.js");
7
9
  Object.defineProperty(exports, "resolveStaleDirectories", { enumerable: true, get: function () { return resolveDirectories_js_1.resolveStaleDirectories; } });
8
10
  var GitYamlStore_js_1 = require("./GitYamlStore.js");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAEtB,iEAAkE;AAAzD,gIAAA,uBAAuB,OAAA;AAChC,qDAAiD;AAAxC,+GAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAEtB,mDAA+C;AAAtC,6GAAA,WAAW,OAAA;AAEpB,iEAAkE;AAAzD,gIAAA,uBAAuB,OAAA;AAChC,qDAAiD;AAAxC,+GAAA,YAAY,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hardlydifficult/repo-processor",
3
- "version": "1.0.35",
3
+ "version": "1.0.37",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "files": [
@@ -17,6 +17,7 @@
17
17
  "dependencies": {
18
18
  "@hardlydifficult/collections": "1.0.6",
19
19
  "@hardlydifficult/github": "1.0.27",
20
+ "@hardlydifficult/state-tracker": "2.0.16",
20
21
  "@hardlydifficult/text": "1.0.23",
21
22
  "simple-git": "3.31.1",
22
23
  "yaml": "2.8.2",
@@ -25,6 +26,7 @@
25
26
  "peerDependencies": {
26
27
  "@hardlydifficult/collections": "1.0.6",
27
28
  "@hardlydifficult/github": "1.0.27",
29
+ "@hardlydifficult/state-tracker": "2.0.16",
28
30
  "@hardlydifficult/text": "1.0.23"
29
31
  },
30
32
  "devDependencies": {