@fractary/core 0.3.3 → 0.5.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/dist/__tests__/factories.test.d.ts +5 -0
- package/dist/__tests__/factories.test.d.ts.map +1 -0
- package/dist/__tests__/factories.test.js +66 -0
- package/dist/__tests__/factories.test.js.map +1 -0
- package/dist/auth/__tests__/create-token-provider.test.d.ts +5 -0
- package/dist/auth/__tests__/create-token-provider.test.d.ts.map +1 -0
- package/dist/auth/__tests__/create-token-provider.test.js +104 -0
- package/dist/auth/__tests__/create-token-provider.test.js.map +1 -0
- package/dist/auth/__tests__/github-app-auth.test.d.ts +5 -0
- package/dist/auth/__tests__/github-app-auth.test.d.ts.map +1 -0
- package/dist/auth/__tests__/github-app-auth.test.js +293 -0
- package/dist/auth/__tests__/github-app-auth.test.js.map +1 -0
- package/dist/auth/__tests__/static-token-provider.test.d.ts +5 -0
- package/dist/auth/__tests__/static-token-provider.test.d.ts.map +1 -0
- package/dist/auth/__tests__/static-token-provider.test.js +54 -0
- package/dist/auth/__tests__/static-token-provider.test.js.map +1 -0
- package/dist/auth/github-app-auth.d.ts +109 -0
- package/dist/auth/github-app-auth.d.ts.map +1 -0
- package/dist/auth/github-app-auth.js +262 -0
- package/dist/auth/github-app-auth.js.map +1 -0
- package/dist/auth/github-app-token-provider.d.ts +59 -0
- package/dist/auth/github-app-token-provider.d.ts.map +1 -0
- package/dist/auth/github-app-token-provider.js +68 -0
- package/dist/auth/github-app-token-provider.js.map +1 -0
- package/dist/auth/index.d.ts +45 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +74 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/static-token-provider.d.ts +35 -0
- package/dist/auth/static-token-provider.d.ts.map +1 -0
- package/dist/auth/static-token-provider.js +45 -0
- package/dist/auth/static-token-provider.js.map +1 -0
- package/dist/auth/types.d.ts +49 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +8 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/common/__tests__/secrets.test.d.ts +7 -0
- package/dist/common/__tests__/secrets.test.d.ts.map +1 -0
- package/dist/common/__tests__/secrets.test.js +320 -0
- package/dist/common/__tests__/secrets.test.js.map +1 -0
- package/dist/common/config.d.ts +6 -4
- package/dist/common/config.d.ts.map +1 -1
- package/dist/common/config.js +4 -30
- package/dist/common/config.js.map +1 -1
- package/dist/common/index.d.ts +1 -0
- package/dist/common/index.d.ts.map +1 -1
- package/dist/common/index.js +1 -0
- package/dist/common/index.js.map +1 -1
- package/dist/common/secrets.d.ts +68 -0
- package/dist/common/secrets.d.ts.map +1 -0
- package/dist/common/secrets.js +180 -0
- package/dist/common/secrets.js.map +1 -0
- package/dist/common/yaml-config.d.ts +10 -0
- package/dist/common/yaml-config.d.ts.map +1 -1
- package/dist/common/yaml-config.js.map +1 -1
- package/dist/config/__tests__/loader.test.d.ts +5 -0
- package/dist/config/__tests__/loader.test.d.ts.map +1 -0
- package/dist/config/__tests__/loader.test.js +129 -0
- package/dist/config/__tests__/loader.test.js.map +1 -0
- package/dist/config/index.d.ts +8 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +27 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +126 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +277 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/docs/index.d.ts +5 -0
- package/dist/docs/index.d.ts.map +1 -1
- package/dist/docs/index.js +6 -1
- package/dist/docs/index.js.map +1 -1
- package/dist/docs/manager.d.ts +27 -0
- package/dist/docs/manager.d.ts.map +1 -1
- package/dist/docs/manager.js +168 -15
- package/dist/docs/manager.js.map +1 -1
- package/dist/docs/type-registry.d.ts +123 -0
- package/dist/docs/type-registry.d.ts.map +1 -0
- package/dist/docs/type-registry.js +393 -0
- package/dist/docs/type-registry.js.map +1 -0
- package/dist/docs/types.d.ts +93 -0
- package/dist/docs/types.d.ts.map +1 -1
- package/dist/factories.d.ts +89 -0
- package/dist/factories.d.ts.map +1 -0
- package/dist/factories.js +228 -0
- package/dist/factories.js.map +1 -0
- package/dist/file/factory.d.ts +41 -0
- package/dist/file/factory.d.ts.map +1 -0
- package/dist/file/factory.js +237 -0
- package/dist/file/factory.js.map +1 -0
- package/dist/file/gcs.d.ts +66 -0
- package/dist/file/gcs.d.ts.map +1 -0
- package/dist/file/gcs.js +226 -0
- package/dist/file/gcs.js.map +1 -0
- package/dist/file/gdrive.d.ts +78 -0
- package/dist/file/gdrive.d.ts.map +1 -0
- package/dist/file/gdrive.js +302 -0
- package/dist/file/gdrive.js.map +1 -0
- package/dist/file/index.d.ts +13 -1
- package/dist/file/index.d.ts.map +1 -1
- package/dist/file/index.js +25 -1
- package/dist/file/index.js.map +1 -1
- package/dist/file/manager.d.ts +83 -2
- package/dist/file/manager.d.ts.map +1 -1
- package/dist/file/manager.js +125 -4
- package/dist/file/manager.js.map +1 -1
- package/dist/file/r2.d.ts +56 -0
- package/dist/file/r2.d.ts.map +1 -0
- package/dist/file/r2.js +96 -0
- package/dist/file/r2.js.map +1 -0
- package/dist/file/s3.d.ts +61 -0
- package/dist/file/s3.d.ts.map +1 -0
- package/dist/file/s3.js +258 -0
- package/dist/file/s3.js.map +1 -0
- package/dist/file/types.d.ts +145 -2
- package/dist/file/types.d.ts.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/logs/index.d.ts +1 -0
- package/dist/logs/index.d.ts.map +1 -1
- package/dist/logs/index.js +3 -1
- package/dist/logs/index.js.map +1 -1
- package/dist/logs/manager.d.ts +29 -2
- package/dist/logs/manager.d.ts.map +1 -1
- package/dist/logs/manager.js +48 -7
- package/dist/logs/manager.js.map +1 -1
- package/dist/logs/type-registry.d.ts +180 -0
- package/dist/logs/type-registry.d.ts.map +1 -0
- package/dist/logs/type-registry.js +421 -0
- package/dist/logs/type-registry.js.map +1 -0
- package/dist/logs/type-registry.test.d.ts +5 -0
- package/dist/logs/type-registry.test.d.ts.map +1 -0
- package/dist/logs/type-registry.test.js +671 -0
- package/dist/logs/type-registry.test.js.map +1 -0
- package/dist/logs/types.d.ts +2 -0
- package/dist/logs/types.d.ts.map +1 -1
- package/package.json +76 -8
package/dist/file/s3.js
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fractary/core - S3 Storage Implementation
|
|
4
|
+
*
|
|
5
|
+
* AWS S3 storage backend for file operations.
|
|
6
|
+
* Uses AWS SDK v3 with lazy loading to avoid hard dependencies.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.S3Storage = void 0;
|
|
43
|
+
/**
|
|
44
|
+
* AWS S3 storage implementation
|
|
45
|
+
*/
|
|
46
|
+
class S3Storage {
|
|
47
|
+
config;
|
|
48
|
+
s3Client = null;
|
|
49
|
+
constructor(config) {
|
|
50
|
+
this.config = config;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get or create the S3 client (lazy loaded)
|
|
54
|
+
*/
|
|
55
|
+
async getClient() {
|
|
56
|
+
if (this.s3Client) {
|
|
57
|
+
return this.s3Client;
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
// Dynamic import to avoid hard dependency
|
|
61
|
+
const { S3Client } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-s3')));
|
|
62
|
+
const { fromIni } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/credential-providers')));
|
|
63
|
+
const clientConfig = {
|
|
64
|
+
region: this.config.region,
|
|
65
|
+
};
|
|
66
|
+
// Configure endpoint for S3-compatible services
|
|
67
|
+
if (this.config.endpoint) {
|
|
68
|
+
clientConfig.endpoint = this.config.endpoint;
|
|
69
|
+
clientConfig.forcePathStyle = true;
|
|
70
|
+
}
|
|
71
|
+
// Configure credentials
|
|
72
|
+
if (this.config.auth?.accessKeyId && this.config.auth?.secretAccessKey) {
|
|
73
|
+
clientConfig.credentials = {
|
|
74
|
+
accessKeyId: this.config.auth.accessKeyId,
|
|
75
|
+
secretAccessKey: this.config.auth.secretAccessKey,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
else if (this.config.auth?.profile) {
|
|
79
|
+
clientConfig.credentials = fromIni({ profile: this.config.auth.profile });
|
|
80
|
+
}
|
|
81
|
+
// Otherwise, use default credential chain (IAM role, env vars, etc.)
|
|
82
|
+
this.s3Client = new S3Client(clientConfig);
|
|
83
|
+
return this.s3Client;
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
throw new Error('AWS SDK not available. Install with: npm install @aws-sdk/client-s3 @aws-sdk/credential-providers');
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get the full S3 key with optional prefix
|
|
91
|
+
*/
|
|
92
|
+
getKey(id) {
|
|
93
|
+
if (this.config.prefix) {
|
|
94
|
+
return `${this.config.prefix.replace(/\/$/, '')}/${id}`;
|
|
95
|
+
}
|
|
96
|
+
return id;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Check if an error is a "not found" error
|
|
100
|
+
* AWS SDK v3 uses error.name and error.$metadata.httpStatusCode
|
|
101
|
+
*/
|
|
102
|
+
isNotFoundError(error) {
|
|
103
|
+
return (error.name === 'NoSuchKey' ||
|
|
104
|
+
error.name === 'NotFound' ||
|
|
105
|
+
error.$metadata?.httpStatusCode === 404);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Write content to S3
|
|
109
|
+
*/
|
|
110
|
+
async write(id, content) {
|
|
111
|
+
const client = await this.getClient();
|
|
112
|
+
const { PutObjectCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-s3')));
|
|
113
|
+
const key = this.getKey(id);
|
|
114
|
+
const command = new PutObjectCommand({
|
|
115
|
+
Bucket: this.config.bucket,
|
|
116
|
+
Key: key,
|
|
117
|
+
Body: content,
|
|
118
|
+
ContentType: 'text/plain; charset=utf-8',
|
|
119
|
+
});
|
|
120
|
+
await client.send(command);
|
|
121
|
+
return `s3://${this.config.bucket}/${key}`;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Read content from S3
|
|
125
|
+
*/
|
|
126
|
+
async read(id) {
|
|
127
|
+
const client = await this.getClient();
|
|
128
|
+
const { GetObjectCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-s3')));
|
|
129
|
+
const key = this.getKey(id);
|
|
130
|
+
try {
|
|
131
|
+
const command = new GetObjectCommand({
|
|
132
|
+
Bucket: this.config.bucket,
|
|
133
|
+
Key: key,
|
|
134
|
+
});
|
|
135
|
+
const response = await client.send(command);
|
|
136
|
+
// Convert stream to string
|
|
137
|
+
if (response.Body) {
|
|
138
|
+
const bodyContents = await response.Body.transformToString();
|
|
139
|
+
return bodyContents;
|
|
140
|
+
}
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
if (this.isNotFoundError(error)) {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
throw error;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Check if object exists in S3
|
|
152
|
+
*/
|
|
153
|
+
async exists(id) {
|
|
154
|
+
const client = await this.getClient();
|
|
155
|
+
const { HeadObjectCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-s3')));
|
|
156
|
+
const key = this.getKey(id);
|
|
157
|
+
try {
|
|
158
|
+
const command = new HeadObjectCommand({
|
|
159
|
+
Bucket: this.config.bucket,
|
|
160
|
+
Key: key,
|
|
161
|
+
});
|
|
162
|
+
await client.send(command);
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
if (this.isNotFoundError(error)) {
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
throw error;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* List objects in S3 with optional prefix
|
|
174
|
+
*/
|
|
175
|
+
async list(prefix) {
|
|
176
|
+
const client = await this.getClient();
|
|
177
|
+
const { ListObjectsV2Command } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-s3')));
|
|
178
|
+
const fullPrefix = prefix ? this.getKey(prefix) : this.config.prefix || '';
|
|
179
|
+
const results = [];
|
|
180
|
+
let continuationToken;
|
|
181
|
+
do {
|
|
182
|
+
const command = new ListObjectsV2Command({
|
|
183
|
+
Bucket: this.config.bucket,
|
|
184
|
+
Prefix: fullPrefix,
|
|
185
|
+
ContinuationToken: continuationToken,
|
|
186
|
+
});
|
|
187
|
+
const response = await client.send(command);
|
|
188
|
+
if (response.Contents) {
|
|
189
|
+
for (const item of response.Contents) {
|
|
190
|
+
if (item.Key) {
|
|
191
|
+
// Remove the configured prefix from the key for consistency
|
|
192
|
+
let key = item.Key;
|
|
193
|
+
if (this.config.prefix && key.startsWith(this.config.prefix)) {
|
|
194
|
+
key = key.slice(this.config.prefix.length).replace(/^\//, '');
|
|
195
|
+
}
|
|
196
|
+
results.push(key);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
continuationToken = response.IsTruncated ? response.NextContinuationToken : undefined;
|
|
201
|
+
} while (continuationToken);
|
|
202
|
+
return results;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Delete object from S3
|
|
206
|
+
*/
|
|
207
|
+
async delete(id) {
|
|
208
|
+
const client = await this.getClient();
|
|
209
|
+
const { DeleteObjectCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-s3')));
|
|
210
|
+
const key = this.getKey(id);
|
|
211
|
+
const command = new DeleteObjectCommand({
|
|
212
|
+
Bucket: this.config.bucket,
|
|
213
|
+
Key: key,
|
|
214
|
+
});
|
|
215
|
+
await client.send(command);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Get a presigned URL for the object
|
|
219
|
+
*/
|
|
220
|
+
async getUrl(id, expiresIn = 86400) {
|
|
221
|
+
// If a public URL is configured, use it
|
|
222
|
+
if (this.config.publicUrl) {
|
|
223
|
+
const key = this.getKey(id);
|
|
224
|
+
return `${this.config.publicUrl.replace(/\/$/, '')}/${key}`;
|
|
225
|
+
}
|
|
226
|
+
const client = await this.getClient();
|
|
227
|
+
try {
|
|
228
|
+
const { getSignedUrl } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/s3-request-presigner')));
|
|
229
|
+
const { GetObjectCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-s3')));
|
|
230
|
+
const key = this.getKey(id);
|
|
231
|
+
const command = new GetObjectCommand({
|
|
232
|
+
Bucket: this.config.bucket,
|
|
233
|
+
Key: key,
|
|
234
|
+
});
|
|
235
|
+
const url = await getSignedUrl(client, command, { expiresIn });
|
|
236
|
+
return url;
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
// Fall back to S3 URI if presigner not available
|
|
240
|
+
const key = this.getKey(id);
|
|
241
|
+
return `s3://${this.config.bucket}/${key}`;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Get the bucket name
|
|
246
|
+
*/
|
|
247
|
+
getBucket() {
|
|
248
|
+
return this.config.bucket;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Get the configured prefix
|
|
252
|
+
*/
|
|
253
|
+
getPrefix() {
|
|
254
|
+
return this.config.prefix;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
exports.S3Storage = S3Storage;
|
|
258
|
+
//# sourceMappingURL=s3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3.js","sourceRoot":"","sources":["../../src/file/s3.ts"],"names":[],"mappings":"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"}
|
package/dist/file/types.d.ts
CHANGED
|
@@ -35,18 +35,161 @@ export interface Storage {
|
|
|
35
35
|
* @param id - Unique identifier for the content
|
|
36
36
|
*/
|
|
37
37
|
delete(id: string): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Get a URL for the content (optional)
|
|
40
|
+
* @param id - Unique identifier for the content
|
|
41
|
+
* @param expiresIn - Expiration time in seconds (for presigned URLs)
|
|
42
|
+
* @returns URL or null if not supported
|
|
43
|
+
*/
|
|
44
|
+
getUrl?(id: string, expiresIn?: number): Promise<string | null>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Storage type identifiers
|
|
48
|
+
*/
|
|
49
|
+
export type StorageType = 'local' | 's3' | 'r2' | 'gcs' | 'gdrive';
|
|
50
|
+
/**
|
|
51
|
+
* Base configuration for all storage types
|
|
52
|
+
*/
|
|
53
|
+
export interface BaseStorageConfig {
|
|
54
|
+
type: StorageType;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Local filesystem storage configuration
|
|
58
|
+
*/
|
|
59
|
+
export interface LocalStorageConfig extends BaseStorageConfig {
|
|
60
|
+
type: 'local';
|
|
61
|
+
basePath: string;
|
|
62
|
+
createDirectories?: boolean;
|
|
63
|
+
permissions?: string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* AWS S3 storage configuration
|
|
67
|
+
*/
|
|
68
|
+
export interface S3StorageConfig extends BaseStorageConfig {
|
|
69
|
+
type: 's3';
|
|
70
|
+
bucket: string;
|
|
71
|
+
region: string;
|
|
72
|
+
prefix?: string;
|
|
73
|
+
auth?: {
|
|
74
|
+
profile?: string;
|
|
75
|
+
accessKeyId?: string;
|
|
76
|
+
secretAccessKey?: string;
|
|
77
|
+
};
|
|
78
|
+
endpoint?: string;
|
|
79
|
+
publicUrl?: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Cloudflare R2 storage configuration
|
|
83
|
+
*/
|
|
84
|
+
export interface R2StorageConfig extends BaseStorageConfig {
|
|
85
|
+
type: 'r2';
|
|
86
|
+
bucket: string;
|
|
87
|
+
accountId: string;
|
|
88
|
+
accessKeyId: string;
|
|
89
|
+
secretAccessKey: string;
|
|
90
|
+
prefix?: string;
|
|
91
|
+
publicUrl?: string;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Google Cloud Storage configuration
|
|
95
|
+
*/
|
|
96
|
+
export interface GCSStorageConfig extends BaseStorageConfig {
|
|
97
|
+
type: 'gcs';
|
|
98
|
+
bucket: string;
|
|
99
|
+
projectId: string;
|
|
100
|
+
prefix?: string;
|
|
101
|
+
keyFilePath?: string;
|
|
102
|
+
region?: string;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Google Drive storage configuration
|
|
106
|
+
*/
|
|
107
|
+
export interface GDriveStorageConfig extends BaseStorageConfig {
|
|
108
|
+
type: 'gdrive';
|
|
109
|
+
folderId?: string;
|
|
110
|
+
clientId?: string;
|
|
111
|
+
clientSecret?: string;
|
|
112
|
+
refreshToken?: string;
|
|
113
|
+
rcloneRemote?: string;
|
|
38
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Union type for all storage configurations
|
|
117
|
+
*/
|
|
118
|
+
export type StorageConfig = LocalStorageConfig | S3StorageConfig | R2StorageConfig | GCSStorageConfig | GDriveStorageConfig;
|
|
39
119
|
/**
|
|
40
120
|
* Configuration for file manager
|
|
41
121
|
*/
|
|
42
122
|
export interface FileManagerConfig {
|
|
43
123
|
/**
|
|
44
|
-
* Base path for file storage
|
|
124
|
+
* Base path for file storage (used when no storage is provided)
|
|
45
125
|
*/
|
|
46
|
-
basePath
|
|
126
|
+
basePath?: string;
|
|
47
127
|
/**
|
|
48
128
|
* Optional storage backend (defaults to LocalStorage)
|
|
49
129
|
*/
|
|
50
130
|
storage?: Storage;
|
|
51
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Extended file manager config with type-safe storage configuration
|
|
134
|
+
*/
|
|
135
|
+
export interface FileManagerStorageConfig {
|
|
136
|
+
/**
|
|
137
|
+
* Storage configuration for automatic backend selection
|
|
138
|
+
*/
|
|
139
|
+
storageConfig: StorageConfig;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* File operation result with metadata
|
|
143
|
+
*/
|
|
144
|
+
export interface FileOperationResult {
|
|
145
|
+
success: boolean;
|
|
146
|
+
message: string;
|
|
147
|
+
url?: string;
|
|
148
|
+
sizeBytes?: number;
|
|
149
|
+
checksum?: string;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Global settings for file operations
|
|
153
|
+
*/
|
|
154
|
+
export interface FileGlobalSettings {
|
|
155
|
+
retryAttempts?: number;
|
|
156
|
+
retryDelayMs?: number;
|
|
157
|
+
timeoutSeconds?: number;
|
|
158
|
+
verifyChecksums?: boolean;
|
|
159
|
+
parallelUploads?: number;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Complete file plugin configuration (v2.0 sources format)
|
|
163
|
+
*/
|
|
164
|
+
export interface FilePluginConfig {
|
|
165
|
+
schemaVersion: string;
|
|
166
|
+
sources?: Record<string, SourceConfig>;
|
|
167
|
+
globalSettings?: FileGlobalSettings;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Individual source configuration (from config.yaml)
|
|
171
|
+
*/
|
|
172
|
+
export interface SourceConfig {
|
|
173
|
+
type: StorageType;
|
|
174
|
+
bucket?: string;
|
|
175
|
+
prefix?: string;
|
|
176
|
+
region?: string;
|
|
177
|
+
projectId?: string;
|
|
178
|
+
accountId?: string;
|
|
179
|
+
folderId?: string;
|
|
180
|
+
local?: {
|
|
181
|
+
basePath: string;
|
|
182
|
+
};
|
|
183
|
+
push?: {
|
|
184
|
+
compress?: boolean;
|
|
185
|
+
keepLocal?: boolean;
|
|
186
|
+
};
|
|
187
|
+
auth?: {
|
|
188
|
+
profile?: string;
|
|
189
|
+
accessKeyId?: string;
|
|
190
|
+
secretAccessKey?: string;
|
|
191
|
+
keyFilePath?: string;
|
|
192
|
+
};
|
|
193
|
+
publicUrl?: string;
|
|
194
|
+
}
|
|
52
195
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/file/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/file/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpD;;;;OAIG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEzC;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAErC;;;OAGG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAEzC;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/file/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,cAAc,QAAQ,CAAC;AAGvB,cAAc,UAAU,CAAC;AAGzB,cAAc,aAAa,CAAC;AAG5B,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -28,6 +28,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
28
28
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
29
29
|
};
|
|
30
30
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
// Authentication primitives
|
|
32
|
+
__exportStar(require("./auth"), exports);
|
|
33
|
+
// Configuration loading
|
|
34
|
+
__exportStar(require("./config"), exports);
|
|
35
|
+
// Manager factories
|
|
36
|
+
__exportStar(require("./factories"), exports);
|
|
31
37
|
// Work tracking primitives
|
|
32
38
|
__exportStar(require("./work"), exports);
|
|
33
39
|
// Repository management primitives
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;;;;;;;;;;;;;;AAEH,2BAA2B;AAC3B,yCAAuB;AAEvB,mCAAmC;AACnC,yCAAuB;AAEvB,sCAAsC;AACtC,yCAAuB;AAEvB,qBAAqB;AACrB,yCAAuB;AAEvB,0BAA0B;AAC1B,yCAAuB;AAEvB,2BAA2B;AAC3B,yCAAuB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;;;;;;;;;;;;;;AAEH,4BAA4B;AAC5B,yCAAuB;AAEvB,wBAAwB;AACxB,2CAAyB;AAEzB,oBAAoB;AACpB,8CAA4B;AAE5B,2BAA2B;AAC3B,yCAAuB;AAEvB,mCAAmC;AACnC,yCAAuB;AAEvB,sCAAsC;AACtC,yCAAuB;AAEvB,qBAAqB;AACrB,yCAAuB;AAEvB,0BAA0B;AAC1B,yCAAuB;AAEvB,2BAA2B;AAC3B,yCAAuB"}
|
package/dist/logs/index.d.ts
CHANGED
package/dist/logs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logs/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logs/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,cAAc,SAAS,CAAC"}
|
package/dist/logs/index.js
CHANGED
|
@@ -19,8 +19,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
19
19
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
20
|
};
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.LogManager = void 0;
|
|
22
|
+
exports.LogTypeRegistry = exports.LogManager = void 0;
|
|
23
23
|
var manager_1 = require("./manager");
|
|
24
24
|
Object.defineProperty(exports, "LogManager", { enumerable: true, get: function () { return manager_1.LogManager; } });
|
|
25
|
+
var type_registry_1 = require("./type-registry");
|
|
26
|
+
Object.defineProperty(exports, "LogTypeRegistry", { enumerable: true, get: function () { return type_registry_1.LogTypeRegistry; } });
|
|
25
27
|
__exportStar(require("./types"), exports);
|
|
26
28
|
//# sourceMappingURL=index.js.map
|
package/dist/logs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logs/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;AAEH,qCAAuC;AAA9B,qGAAA,UAAU,OAAA;AACnB,0CAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logs/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;AAEH,qCAAuC;AAA9B,qGAAA,UAAU,OAAA;AACnB,iDAAkD;AAAzC,gHAAA,eAAe,OAAA;AACxB,0CAAwB"}
|
package/dist/logs/manager.d.ts
CHANGED
|
@@ -3,7 +3,17 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Session and operational logging for FABER workflows.
|
|
5
5
|
*/
|
|
6
|
-
import { LogConfig, LogEntry, LogStatus, LogWriteOptions, LogListOptions, LogSearchOptions, LogSearchResult, CaptureStartOptions, CaptureResult, CaptureSession, LogAppendOptions, ArchiveResult } from './types';
|
|
6
|
+
import { LogConfig, LogEntry, LogStatus, LogWriteOptions, LogListOptions, LogSearchOptions, LogSearchResult, CaptureStartOptions, CaptureResult, CaptureSession, LogAppendOptions, ArchiveResult, LogTypeDefinition } from './types';
|
|
7
|
+
import { LogTypeRegistry, LogTypeRegistryConfig } from './type-registry';
|
|
8
|
+
/**
|
|
9
|
+
* Extended config for LogManager that includes type registry options
|
|
10
|
+
*/
|
|
11
|
+
export interface LogManagerConfig extends LogConfig {
|
|
12
|
+
/** Custom templates path for log types */
|
|
13
|
+
customTemplatesPath?: string;
|
|
14
|
+
/** Type registry configuration */
|
|
15
|
+
typeRegistry?: LogTypeRegistryConfig;
|
|
16
|
+
}
|
|
7
17
|
/**
|
|
8
18
|
* Log Manager
|
|
9
19
|
*
|
|
@@ -13,7 +23,24 @@ export declare class LogManager {
|
|
|
13
23
|
private config;
|
|
14
24
|
private logsDir;
|
|
15
25
|
private activeSession;
|
|
16
|
-
|
|
26
|
+
private typeRegistry;
|
|
27
|
+
constructor(config?: LogManagerConfig);
|
|
28
|
+
/**
|
|
29
|
+
* Get the type registry instance
|
|
30
|
+
*/
|
|
31
|
+
getTypeRegistry(): LogTypeRegistry;
|
|
32
|
+
/**
|
|
33
|
+
* Get all available log types
|
|
34
|
+
*/
|
|
35
|
+
getLogTypes(): LogTypeDefinition[];
|
|
36
|
+
/**
|
|
37
|
+
* Get a specific log type by ID
|
|
38
|
+
*/
|
|
39
|
+
getLogType(id: string): LogTypeDefinition | null;
|
|
40
|
+
/**
|
|
41
|
+
* Check if a log type exists
|
|
42
|
+
*/
|
|
43
|
+
hasLogType(id: string): boolean;
|
|
17
44
|
/**
|
|
18
45
|
* Ensure logs directory exists
|
|
19
46
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/logs/manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,SAAS,EACT,QAAQ,EAER,SAAS,EACT,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,aAAa,
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/logs/manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,SAAS,EACT,QAAQ,EAER,SAAS,EACT,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AA2EzE;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,0CAA0C;IAC1C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kCAAkC;IAClC,YAAY,CAAC,EAAE,qBAAqB,CAAC;CACtC;AAED;;;;GAIG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,YAAY,CAAkB;gBAE1B,MAAM,CAAC,EAAE,gBAAgB;IAgBrC;;OAEG;IACH,eAAe,IAAI,eAAe;IAIlC;;OAEG;IACH,WAAW,IAAI,iBAAiB,EAAE;IAIlC;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAIhD;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI/B;;OAEG;IACH,OAAO,CAAC,aAAa;IAQrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ;IAyD5C;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAsC1C;;OAEG;IACH,OAAO,CAAC,WAAW;IAiBnB;;OAEG;IACH,OAAO,CAAC,cAAc;IAiBtB;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,QAAQ;IA4BlE;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ;IAc9D;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,QAAQ,EAAE;IA+B9C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA2B1B;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,EAAE;IAkCxD;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAYpC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,aAAa;IAqDzD;;OAEG;IACH,WAAW,IAAI,aAAa,GAAG,IAAI;IAsCnC;;OAEG;IACH,gBAAgB,IAAI,cAAc,GAAG,IAAI;IAIzC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IA0BxE;;OAEG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,aAAa;IAkCjF;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,UAAU,IAAI,MAAM;CAGrB"}
|
package/dist/logs/manager.js
CHANGED
|
@@ -43,6 +43,7 @@ const fs = __importStar(require("fs"));
|
|
|
43
43
|
const path = __importStar(require("path"));
|
|
44
44
|
const config_1 = require("../common/config");
|
|
45
45
|
const errors_1 = require("../common/errors");
|
|
46
|
+
const type_registry_1 = require("./type-registry");
|
|
46
47
|
/**
|
|
47
48
|
* Generate a unique log ID
|
|
48
49
|
*/
|
|
@@ -119,6 +120,7 @@ class LogManager {
|
|
|
119
120
|
config;
|
|
120
121
|
logsDir;
|
|
121
122
|
activeSession = null;
|
|
123
|
+
typeRegistry;
|
|
122
124
|
constructor(config) {
|
|
123
125
|
const projectRoot = (0, config_1.findProjectRoot)();
|
|
124
126
|
const defaultConfig = {
|
|
@@ -126,6 +128,36 @@ class LogManager {
|
|
|
126
128
|
};
|
|
127
129
|
this.config = config || (0, config_1.loadLogConfig)() || defaultConfig;
|
|
128
130
|
this.logsDir = this.config.localPath || path.join(projectRoot, 'logs');
|
|
131
|
+
// Initialize type registry
|
|
132
|
+
this.typeRegistry = new type_registry_1.LogTypeRegistry({
|
|
133
|
+
baseDir: projectRoot,
|
|
134
|
+
customManifestPath: this.config.customTemplatesPath,
|
|
135
|
+
...this.config.typeRegistry,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Get the type registry instance
|
|
140
|
+
*/
|
|
141
|
+
getTypeRegistry() {
|
|
142
|
+
return this.typeRegistry;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Get all available log types
|
|
146
|
+
*/
|
|
147
|
+
getLogTypes() {
|
|
148
|
+
return this.typeRegistry.getAllTypes();
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get a specific log type by ID
|
|
152
|
+
*/
|
|
153
|
+
getLogType(id) {
|
|
154
|
+
return this.typeRegistry.getType(id);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Check if a log type exists
|
|
158
|
+
*/
|
|
159
|
+
hasLogType(id) {
|
|
160
|
+
return this.typeRegistry.hasType(id);
|
|
129
161
|
}
|
|
130
162
|
/**
|
|
131
163
|
* Ensure logs directory exists
|
|
@@ -241,9 +273,11 @@ class LogManager {
|
|
|
241
273
|
* Find a log by ID
|
|
242
274
|
*/
|
|
243
275
|
findLogById(id) {
|
|
244
|
-
// Search through all type directories
|
|
245
|
-
const
|
|
246
|
-
|
|
276
|
+
// Search through all type directories (from registry + legacy types)
|
|
277
|
+
const registryTypes = this.typeRegistry.getTypeIds();
|
|
278
|
+
const legacyTypes = ['session', 'build', 'deployment', 'test', 'debug', 'audit', 'operational', 'workflow'];
|
|
279
|
+
const allTypes = new Set([...registryTypes, ...legacyTypes]);
|
|
280
|
+
for (const type of allTypes) {
|
|
247
281
|
const typeDir = this.getTypeDir(type);
|
|
248
282
|
if (!fs.existsSync(typeDir))
|
|
249
283
|
continue;
|
|
@@ -315,10 +349,17 @@ class LogManager {
|
|
|
315
349
|
*/
|
|
316
350
|
listLogs(options) {
|
|
317
351
|
const logs = [];
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
352
|
+
// Get types from registry + legacy types
|
|
353
|
+
let typesToSearch;
|
|
354
|
+
if (options?.type) {
|
|
355
|
+
typesToSearch = [options.type];
|
|
356
|
+
}
|
|
357
|
+
else {
|
|
358
|
+
const registryTypes = this.typeRegistry.getTypeIds();
|
|
359
|
+
const legacyTypes = ['session', 'build', 'deployment', 'test', 'debug', 'audit', 'operational', 'workflow'];
|
|
360
|
+
typesToSearch = [...new Set([...registryTypes, ...legacyTypes])];
|
|
361
|
+
}
|
|
362
|
+
for (const type of typesToSearch) {
|
|
322
363
|
const typeDir = this.getTypeDir(type);
|
|
323
364
|
if (!fs.existsSync(typeDir))
|
|
324
365
|
continue;
|