@guanjinke/artifact-client 1.2.0 → 1.4.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 (84) hide show
  1. package/README.md +146 -1
  2. package/dist/cli/config-manager.d.ts +15 -0
  3. package/dist/cli/config-manager.d.ts.map +1 -1
  4. package/dist/cli/config-manager.js +31 -0
  5. package/dist/cli/config-manager.js.map +1 -1
  6. package/dist/cli/environment.d.ts +6 -0
  7. package/dist/cli/environment.d.ts.map +1 -0
  8. package/dist/cli/environment.js +134 -0
  9. package/dist/cli/environment.js.map +1 -0
  10. package/dist/cli/setup.d.ts.map +1 -1
  11. package/dist/cli/setup.js +200 -18
  12. package/dist/cli/setup.js.map +1 -1
  13. package/dist/cli.js +4 -1
  14. package/dist/cli.js.map +1 -1
  15. package/dist/environment/archive.d.ts +7 -0
  16. package/dist/environment/archive.d.ts.map +1 -0
  17. package/dist/environment/archive.js +132 -0
  18. package/dist/environment/archive.js.map +1 -0
  19. package/dist/environment/builder.d.ts +6 -0
  20. package/dist/environment/builder.d.ts.map +1 -0
  21. package/dist/environment/builder.js +323 -0
  22. package/dist/environment/builder.js.map +1 -0
  23. package/dist/environment/catalog.d.ts +9 -0
  24. package/dist/environment/catalog.d.ts.map +1 -0
  25. package/dist/environment/catalog.js +35 -0
  26. package/dist/environment/catalog.js.map +1 -0
  27. package/dist/environment/config.d.ts +8 -0
  28. package/dist/environment/config.d.ts.map +1 -0
  29. package/dist/environment/config.js +60 -0
  30. package/dist/environment/config.js.map +1 -0
  31. package/dist/environment/manager.d.ts +43 -0
  32. package/dist/environment/manager.d.ts.map +1 -0
  33. package/dist/environment/manager.js +383 -0
  34. package/dist/environment/manager.js.map +1 -0
  35. package/dist/environment/plan.d.ts +10 -0
  36. package/dist/environment/plan.d.ts.map +1 -0
  37. package/dist/environment/plan.js +131 -0
  38. package/dist/environment/plan.js.map +1 -0
  39. package/dist/environment/process.d.ts +94 -0
  40. package/dist/environment/process.d.ts.map +1 -0
  41. package/dist/environment/process.js +381 -0
  42. package/dist/environment/process.js.map +1 -0
  43. package/dist/environment/registry.d.ts +45 -0
  44. package/dist/environment/registry.d.ts.map +1 -0
  45. package/dist/environment/registry.js +157 -0
  46. package/dist/environment/registry.js.map +1 -0
  47. package/dist/environment/root.d.ts +33 -0
  48. package/dist/environment/root.d.ts.map +1 -0
  49. package/dist/environment/root.js +119 -0
  50. package/dist/environment/root.js.map +1 -0
  51. package/dist/environment/types.d.ts +66 -0
  52. package/dist/environment/types.d.ts.map +1 -0
  53. package/dist/environment/types.js +3 -0
  54. package/dist/environment/types.js.map +1 -0
  55. package/dist/environment/update.d.ts +85 -0
  56. package/dist/environment/update.d.ts.map +1 -0
  57. package/dist/environment/update.js +644 -0
  58. package/dist/environment/update.js.map +1 -0
  59. package/dist/environment/validate.d.ts +36 -0
  60. package/dist/environment/validate.d.ts.map +1 -0
  61. package/dist/environment/validate.js +147 -0
  62. package/dist/environment/validate.js.map +1 -0
  63. package/dist/index.d.ts +13 -0
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +29 -1
  66. package/dist/index.js.map +1 -1
  67. package/dist/providers/azure-provider.d.ts +1 -1
  68. package/dist/providers/azure-provider.d.ts.map +1 -1
  69. package/dist/providers/azure-provider.js +7 -6
  70. package/dist/providers/azure-provider.js.map +1 -1
  71. package/dist/providers/oss-provider.d.ts +1 -1
  72. package/dist/providers/oss-provider.d.ts.map +1 -1
  73. package/dist/providers/oss-provider.js +7 -6
  74. package/dist/providers/oss-provider.js.map +1 -1
  75. package/dist/providers/storage-provider.d.ts +5 -1
  76. package/dist/providers/storage-provider.d.ts.map +1 -1
  77. package/dist/providers/storage-provider.js.map +1 -1
  78. package/dist/types.d.ts +6 -0
  79. package/dist/types.d.ts.map +1 -1
  80. package/dist/utils/local-path.d.ts +10 -0
  81. package/dist/utils/local-path.d.ts.map +1 -0
  82. package/dist/utils/local-path.js +51 -0
  83. package/dist/utils/local-path.js.map +1 -0
  84. package/package.json +9 -3
@@ -0,0 +1,323 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.regularFile = regularFile;
37
+ exports.hashFile = hashFile;
38
+ exports.copyTree = copyTree;
39
+ exports.executeEnvironmentPlan = executeEnvironmentPlan;
40
+ const fs = __importStar(require("fs/promises"));
41
+ const fsSync = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const crypto_1 = require("crypto");
44
+ const catalog_1 = require("./catalog");
45
+ const archive_1 = require("./archive");
46
+ const config_1 = require("./config");
47
+ const plan_1 = require("./plan");
48
+ function frameworkRequirements(document) {
49
+ const object = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
50
+ if (!object(document) || !object(document.runtimeOptions))
51
+ throw new Error('Invalid runtime configuration.');
52
+ const options = document.runtimeOptions;
53
+ const frameworks = options.frameworks ?? (options.framework ? [options.framework] : []);
54
+ if (!Array.isArray(frameworks) || !frameworks.length)
55
+ throw new Error('Missing .NET framework requirement.');
56
+ return frameworks.map((framework) => {
57
+ if (!object(framework) || typeof framework.name !== 'string' || typeof framework.version !== 'string' || !/^[A-Za-z0-9][A-Za-z0-9._-]{0,100}$/.test(framework.name) || !/^[0-9][A-Za-z0-9._-]{0,100}$/.test(framework.version))
58
+ throw new Error('Invalid .NET framework requirement.');
59
+ return { name: framework.name, version: framework.version };
60
+ });
61
+ }
62
+ async function runtimeRequirements(directory) {
63
+ const frameworks = [];
64
+ for (const entry of await fs.readdir(directory, { withFileTypes: true })) {
65
+ const file = path.join(directory, entry.name);
66
+ if (entry.isDirectory())
67
+ frameworks.push(...await runtimeRequirements(file));
68
+ else if (entry.isFile() && entry.name.endsWith('.runtimeconfig.json'))
69
+ frameworks.push(...frameworkRequirements(JSON.parse(await fs.readFile(file, 'utf8'))));
70
+ }
71
+ return frameworks;
72
+ }
73
+ async function regularFile(file) {
74
+ const stat = await fs.lstat(file);
75
+ if (!stat.isFile() || stat.isSymbolicLink())
76
+ throw new Error(`Required file missing: ${path.basename(file)}.`);
77
+ }
78
+ async function hashFile(file) {
79
+ const hash = (0, crypto_1.createHash)('sha256');
80
+ for await (const chunk of fsSync.createReadStream(file))
81
+ hash.update(chunk);
82
+ return hash.digest('hex');
83
+ }
84
+ async function copyTree(source, destination, excludedNames = []) {
85
+ await fs.mkdir(destination, { recursive: true });
86
+ for (const entry of await fs.readdir(source, { withFileTypes: true })) {
87
+ if (excludedNames.includes(entry.name.toLowerCase()))
88
+ continue;
89
+ const from = path.join(source, entry.name);
90
+ const to = path.join(destination, entry.name);
91
+ if (entry.isDirectory())
92
+ await copyTree(from, to);
93
+ else if (entry.isFile())
94
+ await fs.copyFile(from, to, fsSync.constants.COPYFILE_EXCL);
95
+ else
96
+ throw new Error('Unexpected link in extracted archive.');
97
+ }
98
+ }
99
+ // Claim a fresh root and publish each path exclusively. Never overwrite a racing writer.
100
+ async function publish(staging, root) {
101
+ await (0, plan_1.validateTarget)(root);
102
+ try {
103
+ await fs.rmdir(root);
104
+ }
105
+ catch (error) {
106
+ if (error.code !== 'ENOENT')
107
+ throw error;
108
+ }
109
+ await fs.mkdir(root);
110
+ const owned = [];
111
+ const remember = async (file, directory) => {
112
+ const stat = await fs.lstat(file);
113
+ owned.push({ file, directory, ino: stat.ino, dev: stat.dev, size: stat.size, mtime: stat.mtimeMs });
114
+ };
115
+ await remember(root, true);
116
+ try {
117
+ const visit = async (source, target) => {
118
+ for (const entry of await fs.readdir(source, { withFileTypes: true })) {
119
+ const from = path.join(source, entry.name);
120
+ const to = path.join(target, entry.name);
121
+ if ((await fs.lstat(target)).isSymbolicLink())
122
+ throw new Error('Publish destination became a link.');
123
+ if (entry.isDirectory()) {
124
+ await fs.mkdir(to);
125
+ await remember(to, true);
126
+ await visit(from, to);
127
+ }
128
+ else if (entry.isFile()) {
129
+ await fs.copyFile(from, to, fsSync.constants.COPYFILE_EXCL);
130
+ await remember(to, false);
131
+ }
132
+ else
133
+ throw new Error('Unexpected staging link.');
134
+ }
135
+ };
136
+ await visit(staging, root);
137
+ const link = path.join(root, 'Monitor', 'conf');
138
+ await fs.symlink(path.join(root, 'conf'), link, 'junction');
139
+ await remember(link, false);
140
+ }
141
+ catch (error) {
142
+ for (const item of owned.reverse()) {
143
+ try {
144
+ const stat = await fs.lstat(item.file);
145
+ if (stat.ino !== item.ino || stat.dev !== item.dev || (!item.directory && (stat.size !== item.size || stat.mtimeMs !== item.mtime)))
146
+ continue;
147
+ if (item.directory)
148
+ await fs.rmdir(item.file);
149
+ else
150
+ await fs.unlink(item.file);
151
+ }
152
+ catch { /* Preserve paths changed by another writer. */ }
153
+ }
154
+ throw error;
155
+ }
156
+ }
157
+ async function executeEnvironmentPlan(inputPlan, dependencies) {
158
+ if (!inputPlan || typeof inputPlan !== 'object')
159
+ throw new Error('Invalid environment plan.');
160
+ const plan = structuredClone(inputPlan);
161
+ if ((dependencies.platform ?? process.platform) !== 'win32')
162
+ throw new Error('Environment execution is Windows-only. Use dry-run on other platforms.');
163
+ for (const field of [plan.selectedModules, plan.autoAddedModules, plan.requirements, plan.warnings]) {
164
+ if (!Array.isArray(field) || field.some(value => typeof value !== 'string'))
165
+ throw new Error('Invalid environment plan arrays.');
166
+ }
167
+ if (!Array.isArray(plan.artifacts) || plan.artifacts.some(artifact => !artifact || typeof artifact !== 'object'))
168
+ throw new Error('Invalid environment plan artifacts.');
169
+ const normalized = await (0, plan_1.validateEnvironmentOptions)({ root: plan.root, major: plan.major, modules: plan.selectedModules, edition: plan.edition, profile: plan.profile, port: plan.port });
170
+ if (plan.root !== normalized.root || plan.port !== normalized.port || plan.edition !== normalized.edition || plan.profile !== normalized.profile || JSON.stringify(plan.selectedModules) !== JSON.stringify(normalized.modules))
171
+ throw new Error('Invalid normalized environment plan.');
172
+ // Plans are public data: do not trust caller-supplied mappings or artifact names.
173
+ const expectedModules = ['server', 'monitoring', 'common', 'analysis', ...plan.selectedModules];
174
+ if (plan.schema !== 'pending' || JSON.stringify(plan.autoAddedModules) !== JSON.stringify(expectedModules.filter(module => !plan.selectedModules.includes(module))) || JSON.stringify(plan.artifacts.map(a => a.module)) !== JSON.stringify(expectedModules))
175
+ throw new Error('Invalid environment plan selections.');
176
+ for (const artifact of plan.artifacts) {
177
+ const entry = catalog_1.catalog[artifact.module];
178
+ if (!artifact.path || /[?:\\\x00-\x1f]/.test(artifact.path) || artifact.path.startsWith('/') || artifact.path.split('/').includes('..'))
179
+ throw new Error('Invalid environment plan remote path.');
180
+ if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(artifact.version) || artifact.plugin !== entry.plugin || artifact.name !== entry.filename(artifact.version, plan.edition) || JSON.stringify(artifact.mappings) !== JSON.stringify(entry.mappings))
181
+ throw new Error('Invalid environment plan artifact.');
182
+ }
183
+ const parent = path.dirname(plan.root);
184
+ await fs.mkdir(parent, { recursive: true });
185
+ const workspace = await fs.mkdtemp(path.join(parent, '.afm-env-'));
186
+ try {
187
+ const staging = path.join(workspace, 'staging');
188
+ const cache = path.join(workspace, 'cache');
189
+ const runtime = [];
190
+ const requirements = [...plan.requirements];
191
+ const hashes = [];
192
+ await fs.mkdir(staging);
193
+ for (const [index, artifact] of plan.artifacts.entries()) {
194
+ const download = path.join(cache, String(index));
195
+ const extracted = path.join(workspace, `expanded-${index}`);
196
+ await fs.mkdir(download, { recursive: true });
197
+ const label = `[${index + 1}/${plan.artifacts.length}] ${artifact.plugin}/${artifact.version}/${artifact.name}`;
198
+ try {
199
+ dependencies.onProgress?.(`${label}: Downloading`);
200
+ await dependencies.client.downloadArtifact(artifact.plugin, artifact.version, artifact.name, download);
201
+ const archive = path.join(download, artifact.name);
202
+ await regularFile(archive);
203
+ dependencies.onProgress?.(`${label}: Download complete; calculating SHA256`);
204
+ hashes.push({ plugin: artifact.plugin, version: artifact.version, name: artifact.name, sha256: await hashFile(archive) });
205
+ dependencies.onProgress?.(`${label}: Extracting and validating ZIP`);
206
+ await (0, archive_1.extractArchive)(archive, extracted);
207
+ dependencies.onProgress?.(`${label}: Assembling installation directories`);
208
+ for (const mapping of artifact.mappings) {
209
+ const source = path.join(extracted, mapping.source);
210
+ const destination = path.join(staging, mapping.destination);
211
+ if (!(await fs.lstat(source)).isDirectory())
212
+ throw new Error('Required source directory missing.');
213
+ const excludedNames = mapping.role === 'server' ? ['appsettings.json', 'appsettings.development.json'] : [];
214
+ if (excludedNames.length)
215
+ dependencies.onProgress?.(`${label}: Excluding Server appsettings.json and appsettings.Development.json`);
216
+ await copyTree(source, destination, excludedNames);
217
+ const assemblies = [];
218
+ for (const name of mapping.assemblies) {
219
+ try {
220
+ await regularFile(path.join(destination, name));
221
+ assemblies.push(name);
222
+ }
223
+ catch (error) {
224
+ if (error.code !== 'ENOENT')
225
+ throw error;
226
+ }
227
+ }
228
+ if (assemblies.length !== 1)
229
+ throw new Error(`Expected one runtime assembly in ${mapping.destination || 'root'}.`);
230
+ const assembly = assemblies[0];
231
+ runtime.push({ ...mapping, assembly, path: path.posix.join(mapping.destination, assembly) });
232
+ if (mapping.role !== 'plugin') {
233
+ const runtimeConfig = path.join(destination, assembly.replace(/\.dll$/, '.runtimeconfig.json'));
234
+ await regularFile(runtimeConfig);
235
+ frameworkRequirements(JSON.parse(await fs.readFile(runtimeConfig, 'utf8')));
236
+ }
237
+ for (const framework of await runtimeRequirements(destination))
238
+ requirements.push(`${framework.name} ${framework.version} (${artifact.module})`);
239
+ }
240
+ if (artifact.module === 'monitoring') {
241
+ await regularFile(path.join(staging, 'Monitor', 'Wyn.Configuration.dll'));
242
+ await regularFile(path.join(staging, 'Monitor', 'appsettings.json'));
243
+ }
244
+ if (artifact.module === 'server')
245
+ await regularFile(path.join(staging, 'Server', 'Wyn.Identity.Service.dll'));
246
+ if (artifact.module === 'dashboard') {
247
+ const contents = path.join(extracted, 'Web Contents');
248
+ try {
249
+ await copyTree(contents, path.join(staging, 'Web Contents'));
250
+ }
251
+ catch (error) {
252
+ if (error.code !== 'ENOENT')
253
+ throw error;
254
+ }
255
+ }
256
+ dependencies.onProgress?.(`${label}: Assembly and runtime requirement checks complete`);
257
+ }
258
+ catch {
259
+ throw new Error(`Environment assembly failed for ${artifact.plugin}/${artifact.version}/${artifact.name} (download, archive, layout or required runtime files).`);
260
+ }
261
+ }
262
+ dependencies.onProgress?.('Detecting configuration schema and checking schema assets');
263
+ const monitor = plan.artifacts.find(a => a.module === 'monitoring');
264
+ try {
265
+ const template = path.join(staging, 'Monitor', 'conf', 'Wyn.conf');
266
+ await regularFile(template);
267
+ plan.schema = (0, config_1.detectConfigurationSchema)(await fs.readFile(template, 'utf8'));
268
+ }
269
+ catch {
270
+ throw new Error(`Configuration schema validation failed for ${monitor.plugin}/${monitor.version}/${monitor.name}: unsupported or invalid template.`);
271
+ }
272
+ for (const module of ['monitoring', 'server']) {
273
+ const artifact = plan.artifacts.find(a => a.module === module);
274
+ const relative = `xsd/${plan.schema}/Wyn.conf.xsd`;
275
+ try {
276
+ await regularFile(path.join(staging, module === 'monitoring' ? 'Monitor' : 'Server', relative));
277
+ }
278
+ catch (error) {
279
+ if (module === 'server' && error.code === 'ENOENT') {
280
+ plan.warnings.push(`Server package ${artifact.plugin}/${artifact.version}/${artifact.name} is missing ${relative}; Server will skip XSD validation. XML reader compatibility and runtime startup have not been verified.`);
281
+ continue;
282
+ }
283
+ throw new Error(`Configuration schema validation failed for ${artifact.plugin}/${artifact.version}/${artifact.name}: ${module === 'monitoring' ? 'Monitor' : 'Server'} package is missing ${relative}.`);
284
+ }
285
+ }
286
+ dependencies.onProgress?.(`Generating ${plan.schema} Wyn.conf and environment lock manifest`);
287
+ const canonical = path.join(staging, 'conf');
288
+ await fs.mkdir(canonical, { recursive: true });
289
+ const bundled = path.join(staging, 'Monitor', 'conf');
290
+ try {
291
+ for (const entry of await fs.readdir(bundled)) {
292
+ if (entry.toLowerCase() === 'wyn.conf')
293
+ continue;
294
+ const source = path.join(bundled, entry);
295
+ const destination = path.join(canonical, entry);
296
+ if ((await fs.lstat(source)).isDirectory())
297
+ await copyTree(source, destination);
298
+ else
299
+ await fs.copyFile(source, destination, fsSync.constants.COPYFILE_EXCL);
300
+ }
301
+ await fs.rm(bundled, { recursive: true });
302
+ }
303
+ catch (error) {
304
+ if (error.code !== 'ENOENT')
305
+ throw error;
306
+ }
307
+ await fs.writeFile(path.join(canonical, 'Wyn.conf'), (0, config_1.createEnvironmentConfig)(plan, runtime), 'utf8');
308
+ for (const directory of ['logs', 'wyndbs'])
309
+ await fs.mkdir(path.join(staging, directory), { recursive: true });
310
+ const manifestName = 'environment.lock.json';
311
+ await fs.writeFile(path.join(staging, manifestName), JSON.stringify({ ...plan, ...(dependencies.managed ? { managed: { ...dependencies.managed, root: plan.root, port: plan.port } } : {}), requirements: [...new Set(requirements)], downloads: hashes }, null, 2) + '\n', { flag: 'wx' });
312
+ if (dependencies.managed)
313
+ await fs.writeFile(path.join(staging, '.afm-environment.json'), JSON.stringify({ version: 1, id: dependencies.managed.id, name: dependencies.managed.name, root: plan.root, port: plan.port }, null, 2) + '\n', { flag: 'wx' });
314
+ dependencies.onProgress?.('Publishing environment and creating Monitor configuration junction');
315
+ await publish(staging, plan.root);
316
+ dependencies.onProgress?.('Environment published successfully; no services were started');
317
+ return { root: plan.root, manifest: path.join(plan.root, manifestName), requirements: [...new Set(requirements)], warnings: plan.warnings };
318
+ }
319
+ finally {
320
+ await fs.rm(workspace, { recursive: true, force: true });
321
+ }
322
+ }
323
+ //# sourceMappingURL=builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/environment/builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { LayoutMapping } from './types';
2
+ interface CatalogEntry {
3
+ plugin: string;
4
+ filename: (version: string, edition: string) => string;
5
+ mappings: LayoutMapping[];
6
+ }
7
+ export declare const catalog: Record<string, CatalogEntry>;
8
+ export {};
9
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/environment/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACvD,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CA6BhD,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.catalog = void 0;
4
+ const mapping = (source, destination, assemblies, role, service) => ({ source, destination, assemblies, role, ...(service ? { service } : {}) });
5
+ exports.catalog = {
6
+ server: {
7
+ plugin: 'gces-server', filename: (v, e) => `server-${e}.v${v}.zip`,
8
+ mappings: [mapping('', 'Server', ['Wyn.Server.dll'], 'server', 'Server')],
9
+ },
10
+ monitoring: {
11
+ plugin: 'gces-monitoring', filename: (v, e) => `monitoring-netcore.${v}-${e}.zip`,
12
+ mappings: [mapping('', 'Monitor', ['Wyn.ServiceMonitor.dll'], 'monitor')],
13
+ },
14
+ common: {
15
+ plugin: 'gces-common', filename: v => `dataset-and-account.${v}.zip`,
16
+ mappings: [mapping('dataset', 'Plugins/Dataset', ['Wyn.Dataset.Plugin.dll'], 'plugin'), mapping('account', 'Plugins/Account', ['Wyn.Account.Plugin.dll'], 'plugin'), mapping('cot-worker', 'CotWorker', ['Wyn.CotWorker.dll'], 'worker', 'CotWorker')],
17
+ },
18
+ dashboard: {
19
+ plugin: 'gces-dashboard', filename: v => `dashboard.${v}.zip`,
20
+ mappings: [mapping('dashboard', 'Plugins/Dashboard', ['Wyn.Dashboards.Plugin.dll'], 'plugin'), mapping('dashboard-worker', 'DashboardWorker', ['Wyn.Dashboards.Worker.dll'], 'worker', 'DashboardWorker')],
21
+ },
22
+ reporting: {
23
+ plugin: 'gces-reporting', filename: v => `reporting.v${v}.zip`,
24
+ mappings: [mapping('plugin', 'Plugins/Reporting', ['Wyn.Reporting.Plugin.dll', 'Gces.Reporting.Plugin.dll'], 'plugin'), mapping('worker', 'ReportingWorker', ['Wyn.Reporting.Worker.dll', 'ReportingWorker.dll'], 'worker', 'ReportingWorker')],
25
+ },
26
+ analysis: {
27
+ plugin: 'gces-analysis', filename: v => `analysis-model.${v}.zip`,
28
+ mappings: [mapping('analysis', 'Plugins/AnalysisModel', ['Wyn.AnalysisModel.Plugin.dll'], 'plugin')],
29
+ },
30
+ sheets: {
31
+ plugin: 'wyn-sheets', filename: v => `wyn-sheets.v${v}.zip`,
32
+ mappings: [mapping('', 'Plugins/Sheet', ['Wyn.Sheets.Plugin.dll'], 'plugin')],
33
+ },
34
+ };
35
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/environment/catalog.ts"],"names":[],"mappings":";;;AAOA,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,WAAmB,EAAE,UAAoB,EAAE,IAA2B,EAAE,OAAgB,EAAiB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7M,QAAA,OAAO,GAAiC;IACnD,MAAM,EAAE;QACN,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM;QAClE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;KAC1E;IACD,UAAU,EAAE;QACV,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM;QACjF,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,wBAAwB,CAAC,EAAE,SAAS,CAAC,CAAC;KAC1E;IACD,MAAM,EAAE;QACN,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,uBAAuB,CAAC,MAAM;QACpE,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,EAAE,CAAC,wBAAwB,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,iBAAiB,EAAE,CAAC,wBAAwB,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;KACvP;IACD,SAAS,EAAE;QACT,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM;QAC7D,QAAQ,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,mBAAmB,EAAE,CAAC,2BAA2B,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,CAAC,2BAA2B,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;KAC3M;IACD,SAAS,EAAE;QACT,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM;QAC9D,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAC,0BAA0B,EAAE,2BAA2B,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;KAChP;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,MAAM;QACjE,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,uBAAuB,EAAE,CAAC,8BAA8B,CAAC,EAAE,QAAQ,CAAC,CAAC;KACrG;IACD,MAAM,EAAE;QACN,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM;QAC3D,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,CAAC,uBAAuB,CAAC,EAAE,QAAQ,CAAC,CAAC;KAC9E;CACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { EnvironmentPlan, EnvironmentSchema, LayoutMapping } from './types';
2
+ export declare function detectConfigurationSchema(template: string): EnvironmentSchema;
3
+ export interface RuntimeAssembly extends LayoutMapping {
4
+ assembly: string;
5
+ path: string;
6
+ }
7
+ export declare function createEnvironmentConfig(plan: EnvironmentPlan, assemblies: RuntimeAssembly[]): string;
8
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/environment/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAK5E,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAQ7E;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAEzF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,MAAM,CAuCpG"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.detectConfigurationSchema = detectConfigurationSchema;
4
+ exports.createEnvironmentConfig = createEnvironmentConfig;
5
+ const fast_xml_parser_1 = require("fast-xml-parser");
6
+ const schemaVersions = { V91: '9.1', V100: '10.0' };
7
+ const schemaNamespace = (schema) => `clr-namespace:ConfigMigration.Configuration.${schema};assembly=Wyn.Configuration`;
8
+ function detectConfigurationSchema(template) {
9
+ if (/<!DOCTYPE|<!ENTITY/i.test(template) || fast_xml_parser_1.XMLValidator.validate(template) !== true)
10
+ throw new Error('Invalid monitoring configuration template.');
11
+ const document = new fast_xml_parser_1.XMLParser({ ignoreAttributes: false, parseTagValue: false, processEntities: false }).parse(template);
12
+ const root = document?.SystemConfig;
13
+ for (const schema of ['V91', 'V100']) {
14
+ if (root?.['@_xmlns'] === schemaNamespace(schema) && root?.Version === schemaVersions[schema])
15
+ return schema;
16
+ }
17
+ throw new Error('Unsupported or mismatched monitoring configuration schema/version.');
18
+ }
19
+ function createEnvironmentConfig(plan, assemblies) {
20
+ if (plan.schema === 'pending')
21
+ throw new Error('Configuration schema must be detected from the monitoring package.');
22
+ const windowsPath = (value) => value.replace(/\//g, '\\');
23
+ const strings = (values) => ({ 'sys:string': values.map(windowsPath) });
24
+ const plugins = assemblies.filter(a => a.role === 'plugin');
25
+ plugins.sort((a, b) => Number(b.destination === 'Plugins/Dashboard') - Number(a.destination === 'Plugins/Dashboard'));
26
+ const services = {};
27
+ for (const entry of assemblies.filter(a => a.service)) {
28
+ services[entry.service] = {
29
+ Assembly: entry.assembly,
30
+ WorkingDirectory: windowsPath(entry.destination || '.'),
31
+ Disabled: entry.role === 'worker' ? 'true' : 'false',
32
+ ...(entry.role === 'server' ? {
33
+ Urls: `http://localhost:${plan.port}`,
34
+ Plugins: strings(plugins.map(a => a.path)),
35
+ PluginWorkers: strings(assemblies.filter(a => a.role === 'worker').map(a => a.path)),
36
+ Storage: { StorageType: 'SQLite', ConnectionString: 'Data source=..\\wyndbs\\storage.db;' },
37
+ DataExtraction: { StorageType: 'SQLite', ConnectionString: 'Data source=..\\wyndbs\\extraction.db;' },
38
+ IdentityServer: { StorageType: 'SQLite', ConnectionString: 'Data source=..\\wyndbs\\is.db;' },
39
+ SchedulerConfig: { Mode: 'Embedded' },
40
+ ProductArchitecture: 'FullEmbedded',
41
+ DisableJavaDataSource: 'true',
42
+ } : {}),
43
+ };
44
+ }
45
+ const document = {
46
+ '?xml': { '@_version': '1.0', '@_encoding': 'utf-8' },
47
+ SystemConfig: {
48
+ '@_xmlns': schemaNamespace(plan.schema),
49
+ '@_xmlns:sys': 'https://extendedxmlserializer.github.io/system',
50
+ Version: schemaVersions[plan.schema],
51
+ GlobalSettings: {
52
+ IdentityServerUrl: `http://localhost:${plan.port}`,
53
+ DataWarehouse: { Provider: 'DuckDB', ConnectionString: 'Data source=..\\wyndbs\\analysis.db' },
54
+ },
55
+ Services: services,
56
+ },
57
+ };
58
+ return new fast_xml_parser_1.XMLBuilder({ ignoreAttributes: false, format: true, suppressEmptyNode: false }).build(document);
59
+ }
60
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/environment/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { EnvironmentRegistry, EnvironmentRecord, RunMode } from './registry';
2
+ import { ProcessBackend } from './process';
3
+ import { EnvironmentClient, EnvironmentOptions, EnvironmentProgress, EnvironmentPlan, EnvironmentResult } from './types';
4
+ export { ownershipFile } from './validate';
5
+ export interface ManagerDependencies {
6
+ registry?: EnvironmentRegistry;
7
+ processes?: ProcessBackend;
8
+ portCheck?: (port: number) => Promise<void>;
9
+ platform?: NodeJS.Platform;
10
+ onProgress?: EnvironmentProgress;
11
+ /** Best-effort report of processes holding a directory, used in deletion errors. */
12
+ pathHolders?: (root: string) => Promise<string[]>;
13
+ }
14
+ export declare class EnvironmentManager {
15
+ private readonly dependencies;
16
+ readonly registry: EnvironmentRegistry;
17
+ private readonly processes;
18
+ private readonly portCheck;
19
+ private readonly pathHolders;
20
+ constructor(dependencies?: ManagerDependencies);
21
+ create(name: string, options: EnvironmentOptions, clientFactory: () => EnvironmentClient, onProgress?: EnvironmentProgress): Promise<EnvironmentPlan | EnvironmentResult>;
22
+ private activeCreator;
23
+ /**
24
+ * Observed state of every registered environment, including ownership
25
+ * problems and the runtime identity check (`observeRuntimeState`).
26
+ */
27
+ list(): Promise<(EnvironmentRecord & {
28
+ observedState: string;
29
+ problem?: string;
30
+ })[]>;
31
+ private validateRuntime;
32
+ private stopEntry;
33
+ private fresh;
34
+ stop(name: string): Promise<void>;
35
+ private launch;
36
+ private foreground;
37
+ private runLaunch;
38
+ private validateMode;
39
+ start(name: string, mode?: RunMode): Promise<void>;
40
+ restart(name: string, mode?: RunMode): Promise<void>;
41
+ delete(name: string, confirm: (entry: EnvironmentRecord) => Promise<boolean>): Promise<boolean>;
42
+ }
43
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/environment/manager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAsI,MAAM,WAAW,CAAC;AAE/K,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAIzH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,oFAAoF;IACpF,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACnD;AACD,qBAAa,kBAAkB;IAKjB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAJzC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkC;IAC5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;gBACrC,YAAY,GAAE,mBAAwB;IAC7D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,EAAE,UAAU,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,GAAG,iBAAiB,CAAC;YAwBjK,aAAa;IAO3B;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,CAAC,iBAAiB,GAAG;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;YAS5E,eAAe;YAWf,SAAS;YAQT,KAAK;IACb,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YACzB,MAAM;YAoCN,UAAU;YAWV,SAAS;IAavB,OAAO,CAAC,YAAY;IACd,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,OAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;CA0DtG"}