@procedures/store 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/LICENSE +21 -0
- package/README.md +65 -2
- package/dist/.tsbuildinfo +1 -0
- package/dist/errors.d.ts +16 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +18 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/module.d.ts +15 -0
- package/dist/module.d.ts.map +1 -0
- package/dist/module.js +16 -0
- package/dist/module.js.map +1 -0
- package/dist/procedures.d.ts +13 -0
- package/dist/procedures.d.ts.map +1 -0
- package/dist/procedures.js +14 -0
- package/dist/procedures.js.map +1 -0
- package/dist/program-store/attach.d.ts +20 -0
- package/dist/program-store/attach.d.ts.map +1 -0
- package/dist/program-store/attach.js +36 -0
- package/dist/program-store/attach.js.map +1 -0
- package/dist/program-store/collection.d.ts +19 -0
- package/dist/program-store/collection.d.ts.map +1 -0
- package/dist/program-store/collection.js +34 -0
- package/dist/program-store/collection.js.map +1 -0
- package/dist/program-store/file.d.ts +29 -0
- package/dist/program-store/file.d.ts.map +1 -0
- package/dist/program-store/file.js +156 -0
- package/dist/program-store/file.js.map +1 -0
- package/dist/program-store/index.d.ts +11 -0
- package/dist/program-store/index.d.ts.map +1 -0
- package/dist/program-store/index.js +10 -0
- package/dist/program-store/index.js.map +1 -0
- package/dist/program-store/memory.d.ts +15 -0
- package/dist/program-store/memory.d.ts.map +1 -0
- package/dist/program-store/memory.js +25 -0
- package/dist/program-store/memory.js.map +1 -0
- package/dist/program-store/procedures.d.ts +23 -0
- package/dist/program-store/procedures.d.ts.map +1 -0
- package/dist/program-store/procedures.js +221 -0
- package/dist/program-store/procedures.js.map +1 -0
- package/dist/program-store/types.d.ts +50 -0
- package/dist/program-store/types.d.ts.map +1 -0
- package/dist/program-store/types.js +41 -0
- package/dist/program-store/types.js.map +1 -0
- package/dist/register.d.ts +8 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/register.js +15 -0
- package/dist/register.js.map +1 -0
- package/dist/storage/adapter.d.ts +148 -0
- package/dist/storage/adapter.d.ts.map +1 -0
- package/dist/storage/adapter.js +214 -0
- package/dist/storage/adapter.js.map +1 -0
- package/dist/storage/api.d.ts +125 -0
- package/dist/storage/api.d.ts.map +1 -0
- package/dist/storage/api.js +220 -0
- package/dist/storage/api.js.map +1 -0
- package/dist/storage/factory.d.ts +134 -0
- package/dist/storage/factory.d.ts.map +1 -0
- package/dist/storage/factory.js +166 -0
- package/dist/storage/factory.js.map +1 -0
- package/dist/storage/hybrid.d.ts +193 -0
- package/dist/storage/hybrid.d.ts.map +1 -0
- package/dist/storage/hybrid.js +519 -0
- package/dist/storage/hybrid.js.map +1 -0
- package/dist/storage/index.d.ts +21 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +20 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/procedures.d.ts +14 -0
- package/dist/storage/procedures.d.ts.map +1 -0
- package/dist/storage/procedures.js +98 -0
- package/dist/storage/procedures.js.map +1 -0
- package/dist/storage/serialization.d.ts +123 -0
- package/dist/storage/serialization.d.ts.map +1 -0
- package/dist/storage/serialization.js +216 -0
- package/dist/storage/serialization.js.map +1 -0
- package/dist/storage/synced-registry.d.ts +246 -0
- package/dist/storage/synced-registry.d.ts.map +1 -0
- package/dist/storage/synced-registry.js +575 -0
- package/dist/storage/synced-registry.js.map +1 -0
- package/dist/storage/types.d.ts +130 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +8 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +79 -3
- package/src/errors.ts +20 -0
- package/src/index.ts +19 -0
- package/src/module.ts +18 -0
- package/src/procedures.ts +17 -0
- package/src/program-store/attach.ts +46 -0
- package/src/program-store/collection.ts +39 -0
- package/src/program-store/file.ts +157 -0
- package/src/program-store/index.ts +17 -0
- package/src/program-store/memory.ts +30 -0
- package/src/program-store/procedures.ts +344 -0
- package/src/program-store/types.ts +78 -0
- package/src/register.ts +18 -0
- package/src/storage/adapter.ts +273 -0
- package/src/storage/api.ts +335 -0
- package/src/storage/factory.ts +268 -0
- package/src/storage/hybrid.ts +676 -0
- package/src/storage/index.ts +61 -0
- package/src/storage/procedures.ts +146 -0
- package/src/storage/serialization.ts +283 -0
- package/src/storage/synced-registry.ts +698 -0
- package/src/storage/types.ts +180 -0
- package/src/types.ts +7 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Procedure Storage Types
|
|
3
|
+
*
|
|
4
|
+
* Types for serializing and persisting procedure definitions.
|
|
5
|
+
* Enables procedure registry to be backed by CollectionStorage.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { ProcedurePath, ProcedureMetadata } from "@procedures/client";
|
|
9
|
+
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// Serialized Procedure
|
|
12
|
+
// =============================================================================
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Reference to a handler that can be loaded at runtime.
|
|
16
|
+
* Handlers cannot be serialized directly, so we store a reference.
|
|
17
|
+
*/
|
|
18
|
+
export interface HandlerReference {
|
|
19
|
+
/** Module name or path (e.g., "@procedures/cli-run") */
|
|
20
|
+
module: string;
|
|
21
|
+
|
|
22
|
+
/** Named export from the module (e.g., "libScanHandler") */
|
|
23
|
+
export: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Serialized procedure definition for storage.
|
|
28
|
+
* Contains only JSON-serializable data.
|
|
29
|
+
*/
|
|
30
|
+
export interface SerializedProcedure {
|
|
31
|
+
/** Procedure path (e.g., ['lib', 'scan']) */
|
|
32
|
+
path: ProcedurePath;
|
|
33
|
+
|
|
34
|
+
/** Procedure metadata */
|
|
35
|
+
metadata: ProcedureMetadata;
|
|
36
|
+
|
|
37
|
+
/** Whether this procedure supports streaming */
|
|
38
|
+
streaming?: boolean | undefined;
|
|
39
|
+
|
|
40
|
+
/** Reference to handler for runtime loading (optional) */
|
|
41
|
+
handlerRef?: HandlerReference | undefined;
|
|
42
|
+
|
|
43
|
+
/** Timestamp when stored */
|
|
44
|
+
storedAt?: number | undefined;
|
|
45
|
+
|
|
46
|
+
/** Version for conflict detection */
|
|
47
|
+
version?: number | undefined;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// =============================================================================
|
|
51
|
+
// Handler Loader
|
|
52
|
+
// =============================================================================
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Function to load a handler from a reference.
|
|
56
|
+
* Used to restore handlers when loading procedures from storage.
|
|
57
|
+
*/
|
|
58
|
+
export interface HandlerLoader {
|
|
59
|
+
/**
|
|
60
|
+
* Load a handler from a reference.
|
|
61
|
+
*
|
|
62
|
+
* @param ref - Handler reference with module and export name
|
|
63
|
+
* @returns The handler function, or undefined if not found
|
|
64
|
+
*/
|
|
65
|
+
load(ref: HandlerReference): Promise<unknown | undefined>;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// =============================================================================
|
|
69
|
+
// Sync Status
|
|
70
|
+
// =============================================================================
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Sync direction for registry operations.
|
|
74
|
+
*/
|
|
75
|
+
export type SyncDirection = "push" | "pull" | "both";
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Conflict resolution strategy.
|
|
79
|
+
*/
|
|
80
|
+
export type ConflictResolution = "local" | "remote" | "merge" | "error";
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Write strategy for persistence.
|
|
84
|
+
*/
|
|
85
|
+
export type WriteStrategy = "write-through" | "write-back";
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Status of a sync conflict.
|
|
89
|
+
*/
|
|
90
|
+
export interface SyncConflict {
|
|
91
|
+
/** Procedure path that had conflict */
|
|
92
|
+
path: ProcedurePath;
|
|
93
|
+
|
|
94
|
+
/** How the conflict was resolved */
|
|
95
|
+
resolution: ConflictResolution;
|
|
96
|
+
|
|
97
|
+
/** Local version (if any) */
|
|
98
|
+
local?: SerializedProcedure;
|
|
99
|
+
|
|
100
|
+
/** Remote version (if any) */
|
|
101
|
+
remote?: SerializedProcedure;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Result of a sync operation.
|
|
106
|
+
*/
|
|
107
|
+
export interface SyncResult {
|
|
108
|
+
/** Number of procedures pushed to storage */
|
|
109
|
+
pushed: number;
|
|
110
|
+
|
|
111
|
+
/** Number of procedures pulled from storage */
|
|
112
|
+
pulled: number;
|
|
113
|
+
|
|
114
|
+
/** Conflicts encountered during sync */
|
|
115
|
+
conflicts: SyncConflict[];
|
|
116
|
+
|
|
117
|
+
/** Timestamp of sync completion */
|
|
118
|
+
timestamp: number;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Current sync status of the registry.
|
|
123
|
+
*/
|
|
124
|
+
export interface SyncStatus {
|
|
125
|
+
/** Whether connected to remote storage */
|
|
126
|
+
connected: boolean;
|
|
127
|
+
|
|
128
|
+
/** Remote endpoint URL (if connected) */
|
|
129
|
+
endpoint?: string | undefined;
|
|
130
|
+
|
|
131
|
+
/** Last successful sync timestamp */
|
|
132
|
+
lastSync?: number | undefined;
|
|
133
|
+
|
|
134
|
+
/** Number of pending local changes */
|
|
135
|
+
pendingChanges: number;
|
|
136
|
+
|
|
137
|
+
/** Whether currently syncing */
|
|
138
|
+
syncing: boolean;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// =============================================================================
|
|
142
|
+
// Synced Registry Options
|
|
143
|
+
// =============================================================================
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Options for SyncedProcedureRegistry.
|
|
147
|
+
*/
|
|
148
|
+
export interface SyncedRegistryOptions {
|
|
149
|
+
/** Write strategy: write-through (immediate) or write-back (queued) */
|
|
150
|
+
writeStrategy: WriteStrategy;
|
|
151
|
+
|
|
152
|
+
/** How to resolve conflicts when loading from storage */
|
|
153
|
+
conflictResolution: ConflictResolution;
|
|
154
|
+
|
|
155
|
+
/** Auto-sync interval in milliseconds (0 to disable) */
|
|
156
|
+
syncInterval?: number | undefined;
|
|
157
|
+
|
|
158
|
+
/** Handler loader for restoring handlers from references */
|
|
159
|
+
handlerLoader?: HandlerLoader | undefined;
|
|
160
|
+
|
|
161
|
+
/** Whether to sync on initialization */
|
|
162
|
+
syncOnInit?: boolean | undefined;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Configuration for creating a storage-backed registry.
|
|
167
|
+
*/
|
|
168
|
+
export interface ProcedureStorageConfig {
|
|
169
|
+
/** Storage type to use */
|
|
170
|
+
type: "memory" | "api" | "hybrid";
|
|
171
|
+
|
|
172
|
+
/** The collection of the core collection procedures for API storage (default: "procedures") */
|
|
173
|
+
collection?: string | undefined;
|
|
174
|
+
|
|
175
|
+
/** The service of the calls, for a server with other paths (default: `collections.<collection>`) */
|
|
176
|
+
service?: string | undefined;
|
|
177
|
+
|
|
178
|
+
/** Options for the synced registry */
|
|
179
|
+
options?: Partial<SyncedRegistryOptions> | undefined;
|
|
180
|
+
}
|