@solidxai/solidctl 0.1.48-beta.0 → 0.1.48-beta.3
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/commands/module-release.d.ts +14 -0
- package/dist/commands/module-release.js +317 -0
- package/dist/commands/module-release.js.map +1 -0
- package/dist/commands/module.command.d.ts +2 -0
- package/dist/commands/module.command.js +67 -0
- package/dist/commands/module.command.js.map +1 -0
- package/dist/commands/release-changelog.d.ts +3 -1
- package/dist/commands/release-changelog.js +33 -4
- package/dist/commands/release-changelog.js.map +1 -1
- package/dist/commands/release.command.js +27 -1
- package/dist/commands/release.command.js.map +1 -1
- package/dist/main.js +2 -0
- package/dist/main.js.map +1 -1
- package/dist/module-package.d.ts +70 -0
- package/dist/module-package.js +397 -0
- package/dist/module-package.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +6 -2
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.loadSolidModulePublishConfig = loadSolidModulePublishConfig;
|
|
7
|
+
exports.resolveSolidModuleConfig = resolveSolidModuleConfig;
|
|
8
|
+
exports.exportModulePackage = exportModulePackage;
|
|
9
|
+
exports.validateModulePackage = validateModulePackage;
|
|
10
|
+
const crypto_1 = require("crypto");
|
|
11
|
+
const fs_1 = __importDefault(require("fs"));
|
|
12
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
13
|
+
const path_1 = __importDefault(require("path"));
|
|
14
|
+
const yauzl_1 = __importDefault(require("yauzl"));
|
|
15
|
+
const yazl_1 = require("yazl");
|
|
16
|
+
const SCHEMA_VERSION = '1.0';
|
|
17
|
+
const PACKAGE_TYPE = 'solidx-module';
|
|
18
|
+
const MAX_ARCHIVE_BYTES = 250 * 1024 * 1024;
|
|
19
|
+
function readJson(filePath) {
|
|
20
|
+
return JSON.parse(fs_1.default.readFileSync(filePath, 'utf-8'));
|
|
21
|
+
}
|
|
22
|
+
function loadSolidModulePublishConfig(projectRoot) {
|
|
23
|
+
const configPath = path_1.default.join(projectRoot, 'solidctl.config.json');
|
|
24
|
+
const packagePath = path_1.default.join(projectRoot, 'package.json');
|
|
25
|
+
const candidates = [];
|
|
26
|
+
if (fs_1.default.existsSync(configPath)) {
|
|
27
|
+
const document = readJson(configPath);
|
|
28
|
+
candidates.push(document.publish);
|
|
29
|
+
}
|
|
30
|
+
if (fs_1.default.existsSync(packagePath)) {
|
|
31
|
+
const document = readJson(packagePath);
|
|
32
|
+
candidates.push(document.solidctl?.publish);
|
|
33
|
+
}
|
|
34
|
+
const publish = candidates.find((candidate) => candidate &&
|
|
35
|
+
typeof candidate === 'object' &&
|
|
36
|
+
candidate.type === PACKAGE_TYPE);
|
|
37
|
+
if (!publish) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
const config = publish;
|
|
41
|
+
if (!config.moduleName || typeof config.moduleName !== 'string') {
|
|
42
|
+
throw new Error('A SolidX module release requires publish.moduleName.');
|
|
43
|
+
}
|
|
44
|
+
if (config.validationCommands && !Array.isArray(config.validationCommands)) {
|
|
45
|
+
throw new Error('publish.validationCommands must be an array of shell commands.');
|
|
46
|
+
}
|
|
47
|
+
return config;
|
|
48
|
+
}
|
|
49
|
+
function assertSafeName(value, fieldName) {
|
|
50
|
+
if (!/^[0-9A-Za-z][0-9A-Za-z._-]*$/.test(value)) {
|
|
51
|
+
throw new Error(`${fieldName} contains unsupported characters: ${value}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function resolveConfiguredPath(projectRoot, configuredPath, fieldName) {
|
|
55
|
+
if (path_1.default.isAbsolute(configuredPath)) {
|
|
56
|
+
throw new Error(`${fieldName} must be relative to the project root.`);
|
|
57
|
+
}
|
|
58
|
+
const resolvedRoot = path_1.default.resolve(projectRoot);
|
|
59
|
+
const resolvedPath = path_1.default.resolve(projectRoot, configuredPath);
|
|
60
|
+
const relativePath = path_1.default.relative(resolvedRoot, resolvedPath);
|
|
61
|
+
if (relativePath.startsWith('..') || path_1.default.isAbsolute(relativePath)) {
|
|
62
|
+
throw new Error(`${fieldName} must stay within the project root.`);
|
|
63
|
+
}
|
|
64
|
+
return resolvedPath;
|
|
65
|
+
}
|
|
66
|
+
function resolveSolidModuleConfig(projectRoot, config) {
|
|
67
|
+
const moduleName = config.moduleName.trim();
|
|
68
|
+
const artifactName = (config.artifactName || moduleName).trim();
|
|
69
|
+
assertSafeName(moduleName, 'publish.moduleName');
|
|
70
|
+
assertSafeName(artifactName, 'publish.artifactName');
|
|
71
|
+
const apiModulePath = config.apiModulePath || path_1.default.join('solid-api', 'src', moduleName);
|
|
72
|
+
const uiModulePath = config.uiModulePath || path_1.default.join('solid-ui', 'src', moduleName);
|
|
73
|
+
const metadataPath = config.metadataPath ||
|
|
74
|
+
path_1.default.join(apiModulePath, 'metadata', `${moduleName}-metadata.json`);
|
|
75
|
+
const outputDir = config.outputDir || '.solidx-releases';
|
|
76
|
+
return {
|
|
77
|
+
moduleName,
|
|
78
|
+
artifactName,
|
|
79
|
+
apiModulePath: resolveConfiguredPath(projectRoot, apiModulePath, 'publish.apiModulePath'),
|
|
80
|
+
uiModulePath: resolveConfiguredPath(projectRoot, uiModulePath, 'publish.uiModulePath'),
|
|
81
|
+
metadataPath: resolveConfiguredPath(projectRoot, metadataPath, 'publish.metadataPath'),
|
|
82
|
+
outputDir: resolveConfiguredPath(projectRoot, outputDir, 'publish.outputDir'),
|
|
83
|
+
validationCommands: config.validationCommands || [],
|
|
84
|
+
mainBranch: config.mainBranch,
|
|
85
|
+
devBranch: config.devBranch,
|
|
86
|
+
reverseMerge: config.reverseMerge,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
async function collectSourceFiles(sourceRoot, archiveRoot, files) {
|
|
90
|
+
const entries = await promises_1.default.readdir(sourceRoot, { withFileTypes: true });
|
|
91
|
+
for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {
|
|
92
|
+
const sourcePath = path_1.default.join(sourceRoot, entry.name);
|
|
93
|
+
const archivePath = path_1.default.posix.join(archiveRoot, entry.name);
|
|
94
|
+
if (entry.isSymbolicLink()) {
|
|
95
|
+
throw new Error(`Module packages cannot contain symbolic links: ${sourcePath}`);
|
|
96
|
+
}
|
|
97
|
+
if (entry.isDirectory()) {
|
|
98
|
+
await collectSourceFiles(sourcePath, archivePath, files);
|
|
99
|
+
}
|
|
100
|
+
else if (entry.isFile()) {
|
|
101
|
+
files.push({ sourcePath, archivePath });
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
throw new Error(`Unsupported filesystem entry in module package: ${sourcePath}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async function assertDirectory(projectRoot, directoryPath, label) {
|
|
109
|
+
const stat = await promises_1.default.lstat(directoryPath).catch(() => undefined);
|
|
110
|
+
if (!stat?.isDirectory()) {
|
|
111
|
+
throw new Error(`${label} does not exist or is not a directory: ${directoryPath}`);
|
|
112
|
+
}
|
|
113
|
+
if (stat.isSymbolicLink()) {
|
|
114
|
+
throw new Error(`${label} cannot be a symbolic link: ${directoryPath}`);
|
|
115
|
+
}
|
|
116
|
+
const realProjectRoot = await promises_1.default.realpath(projectRoot);
|
|
117
|
+
const realDirectoryPath = await promises_1.default.realpath(directoryPath);
|
|
118
|
+
const relativePath = path_1.default.relative(realProjectRoot, realDirectoryPath);
|
|
119
|
+
if (relativePath.startsWith('..') || path_1.default.isAbsolute(relativePath)) {
|
|
120
|
+
throw new Error(`${label} must stay within the project root.`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async function sha256File(filePath) {
|
|
124
|
+
return (0, crypto_1.createHash)('sha256')
|
|
125
|
+
.update(await promises_1.default.readFile(filePath))
|
|
126
|
+
.digest('hex');
|
|
127
|
+
}
|
|
128
|
+
async function createArchive(files, manifest, outputPath) {
|
|
129
|
+
await promises_1.default.mkdir(path_1.default.dirname(outputPath), { recursive: true });
|
|
130
|
+
await new Promise((resolve, reject) => {
|
|
131
|
+
const output = fs_1.default.createWriteStream(outputPath);
|
|
132
|
+
const archive = new yazl_1.ZipFile();
|
|
133
|
+
const archiveMtime = new Date(manifest.exportedAt);
|
|
134
|
+
let settled = false;
|
|
135
|
+
const fail = (error) => {
|
|
136
|
+
if (!settled) {
|
|
137
|
+
settled = true;
|
|
138
|
+
output.destroy();
|
|
139
|
+
reject(error);
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
output.on('close', () => {
|
|
143
|
+
if (!settled) {
|
|
144
|
+
settled = true;
|
|
145
|
+
resolve();
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
output.on('error', fail);
|
|
149
|
+
archive.on('error', fail);
|
|
150
|
+
archive.outputStream.pipe(output);
|
|
151
|
+
for (const file of files) {
|
|
152
|
+
archive.addFile(file.sourcePath, file.archivePath, {
|
|
153
|
+
compressionLevel: 9,
|
|
154
|
+
mtime: archiveMtime,
|
|
155
|
+
mode: 0o100644,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
archive.addBuffer(Buffer.from(`${JSON.stringify(manifest, null, 2)}\n`, 'utf-8'), 'manifest.json', {
|
|
159
|
+
compressionLevel: 9,
|
|
160
|
+
mtime: archiveMtime,
|
|
161
|
+
mode: 0o100644,
|
|
162
|
+
});
|
|
163
|
+
archive.end({
|
|
164
|
+
forceZip64Format: false,
|
|
165
|
+
comment: '',
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
async function exportModulePackage(options) {
|
|
170
|
+
const { projectRoot, config, version, generatedByVersion } = options;
|
|
171
|
+
const { moduleName } = config;
|
|
172
|
+
assertSafeName(version, 'version');
|
|
173
|
+
await assertDirectory(projectRoot, config.apiModulePath, 'API module path');
|
|
174
|
+
await assertDirectory(projectRoot, config.uiModulePath, 'UI module path');
|
|
175
|
+
const metadataStat = await promises_1.default
|
|
176
|
+
.lstat(config.metadataPath)
|
|
177
|
+
.catch(() => undefined);
|
|
178
|
+
if (!metadataStat?.isFile() || metadataStat.isSymbolicLink()) {
|
|
179
|
+
throw new Error(`Module metadata does not exist: ${config.metadataPath}`);
|
|
180
|
+
}
|
|
181
|
+
const realApiModulePath = await promises_1.default.realpath(config.apiModulePath);
|
|
182
|
+
const realMetadataPath = await promises_1.default.realpath(config.metadataPath);
|
|
183
|
+
const relativeMetadataPath = path_1.default.relative(realApiModulePath, realMetadataPath);
|
|
184
|
+
if (relativeMetadataPath.startsWith('..') ||
|
|
185
|
+
path_1.default.isAbsolute(relativeMetadataPath)) {
|
|
186
|
+
throw new Error('publish.metadataPath must be inside publish.apiModulePath.');
|
|
187
|
+
}
|
|
188
|
+
const metadata = readJson(config.metadataPath);
|
|
189
|
+
if (metadata.moduleMetadata?.name !== moduleName) {
|
|
190
|
+
throw new Error(`Metadata module name "${metadata.moduleMetadata?.name || ''}" does not match "${moduleName}".`);
|
|
191
|
+
}
|
|
192
|
+
const apiArchiveRoot = path_1.default.posix.join('solid-api', 'src', moduleName);
|
|
193
|
+
const uiArchiveRoot = path_1.default.posix.join('solid-ui', 'src', moduleName);
|
|
194
|
+
let files = [];
|
|
195
|
+
await collectSourceFiles(config.apiModulePath, apiArchiveRoot, files);
|
|
196
|
+
await collectSourceFiles(config.uiModulePath, uiArchiveRoot, files);
|
|
197
|
+
const metadataArchivePath = path_1.default.posix.join(apiArchiveRoot, 'metadata', `${moduleName}-metadata.json`);
|
|
198
|
+
files = files.filter((file) => path_1.default.resolve(file.sourcePath) !== path_1.default.resolve(config.metadataPath) &&
|
|
199
|
+
file.archivePath !== metadataArchivePath);
|
|
200
|
+
files.push({
|
|
201
|
+
sourcePath: config.metadataPath,
|
|
202
|
+
archivePath: metadataArchivePath,
|
|
203
|
+
});
|
|
204
|
+
const apiModulePath = path_1.default.posix.join(apiArchiveRoot, `${moduleName}.module.ts`);
|
|
205
|
+
const uiModulePath = path_1.default.posix.join(uiArchiveRoot, `${moduleName}.ui-module.ts`);
|
|
206
|
+
const archivePaths = new Set(files.map((file) => file.archivePath));
|
|
207
|
+
for (const requiredPath of [
|
|
208
|
+
metadataArchivePath,
|
|
209
|
+
apiModulePath,
|
|
210
|
+
uiModulePath,
|
|
211
|
+
]) {
|
|
212
|
+
if (!archivePaths.has(requiredPath)) {
|
|
213
|
+
throw new Error(`Module package is missing required file: ${requiredPath}`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
const checksums = {};
|
|
217
|
+
for (const file of files) {
|
|
218
|
+
checksums[file.archivePath] = await sha256File(file.sourcePath);
|
|
219
|
+
}
|
|
220
|
+
const manifest = {
|
|
221
|
+
schemaVersion: SCHEMA_VERSION,
|
|
222
|
+
packageType: PACKAGE_TYPE,
|
|
223
|
+
exportedAt: options.exportedAt || new Date().toISOString(),
|
|
224
|
+
generatedBy: {
|
|
225
|
+
name: '@solidxai/solidctl',
|
|
226
|
+
version: generatedByVersion,
|
|
227
|
+
},
|
|
228
|
+
module: {
|
|
229
|
+
name: moduleName,
|
|
230
|
+
version,
|
|
231
|
+
displayName: metadata.moduleMetadata.displayName,
|
|
232
|
+
description: metadata.moduleMetadata.description,
|
|
233
|
+
},
|
|
234
|
+
contents: {
|
|
235
|
+
metadataPath: metadataArchivePath,
|
|
236
|
+
apiModulePath,
|
|
237
|
+
uiModulePath,
|
|
238
|
+
},
|
|
239
|
+
postImport: {
|
|
240
|
+
recommendedSteps: ['restart', 'build', 'seed'],
|
|
241
|
+
},
|
|
242
|
+
checksums,
|
|
243
|
+
};
|
|
244
|
+
const fileName = `${config.artifactName}-v${version}.sldx`;
|
|
245
|
+
const filePath = options.outputPath
|
|
246
|
+
? path_1.default.resolve(projectRoot, options.outputPath)
|
|
247
|
+
: path_1.default.join(config.outputDir, fileName);
|
|
248
|
+
await createArchive(files, manifest, filePath);
|
|
249
|
+
const validatedManifest = await validateModulePackage(filePath, {
|
|
250
|
+
expectedModuleName: moduleName,
|
|
251
|
+
expectedVersion: version,
|
|
252
|
+
});
|
|
253
|
+
return {
|
|
254
|
+
filePath,
|
|
255
|
+
fileName: path_1.default.basename(filePath),
|
|
256
|
+
manifest: validatedManifest,
|
|
257
|
+
sha256: await sha256File(filePath),
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
function isUnsafeArchivePath(entryPath) {
|
|
261
|
+
const normalized = entryPath.replace(/\\/g, '/');
|
|
262
|
+
return (normalized.startsWith('/') ||
|
|
263
|
+
/^[A-Za-z]:\//.test(normalized) ||
|
|
264
|
+
normalized.split('/').includes('..'));
|
|
265
|
+
}
|
|
266
|
+
async function readArchive(filePath) {
|
|
267
|
+
return new Promise((resolve, reject) => {
|
|
268
|
+
yauzl_1.default.open(filePath, { lazyEntries: true, decodeStrings: true }, (openError, zipFile) => {
|
|
269
|
+
if (openError || !zipFile) {
|
|
270
|
+
reject(openError || new Error(`Could not open archive: ${filePath}`));
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
const files = new Map();
|
|
274
|
+
let totalBytes = 0;
|
|
275
|
+
let settled = false;
|
|
276
|
+
const fail = (error) => {
|
|
277
|
+
if (!settled) {
|
|
278
|
+
settled = true;
|
|
279
|
+
zipFile.close();
|
|
280
|
+
reject(error);
|
|
281
|
+
}
|
|
282
|
+
};
|
|
283
|
+
zipFile.on('error', fail);
|
|
284
|
+
zipFile.on('end', () => {
|
|
285
|
+
if (!settled) {
|
|
286
|
+
settled = true;
|
|
287
|
+
resolve(files);
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
zipFile.on('entry', (entry) => {
|
|
291
|
+
const entryPath = entry.fileName.replace(/\\/g, '/');
|
|
292
|
+
if (isUnsafeArchivePath(entryPath)) {
|
|
293
|
+
fail(new Error(`Archive contains an unsafe path: ${entry.fileName}`));
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
if (files.has(entryPath)) {
|
|
297
|
+
fail(new Error(`Archive contains a duplicate path: ${entryPath}`));
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
const unixMode = (entry.externalFileAttributes >>> 16) & 0xffff;
|
|
301
|
+
if ((unixMode & 0xf000) === 0xa000) {
|
|
302
|
+
fail(new Error(`Archive contains a symbolic link: ${entryPath}`));
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
if (entryPath.endsWith('/')) {
|
|
306
|
+
zipFile.readEntry();
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
totalBytes += entry.uncompressedSize;
|
|
310
|
+
if (totalBytes > MAX_ARCHIVE_BYTES) {
|
|
311
|
+
fail(new Error(`Archive exceeds the ${MAX_ARCHIVE_BYTES} byte validation limit.`));
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
zipFile.openReadStream(entry, (streamError, stream) => {
|
|
315
|
+
if (streamError || !stream) {
|
|
316
|
+
fail(streamError ||
|
|
317
|
+
new Error(`Could not read archive entry: ${entryPath}`));
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
const chunks = [];
|
|
321
|
+
stream.on('data', (chunk) => chunks.push(chunk));
|
|
322
|
+
stream.on('error', fail);
|
|
323
|
+
stream.on('end', () => {
|
|
324
|
+
files.set(entryPath, Buffer.concat(chunks));
|
|
325
|
+
zipFile.readEntry();
|
|
326
|
+
});
|
|
327
|
+
});
|
|
328
|
+
});
|
|
329
|
+
zipFile.readEntry();
|
|
330
|
+
});
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
async function validateModulePackage(filePath, expected) {
|
|
334
|
+
if (path_1.default.extname(filePath).toLowerCase() !== '.sldx') {
|
|
335
|
+
throw new Error('Module package must use the .sldx extension.');
|
|
336
|
+
}
|
|
337
|
+
const files = await readArchive(filePath);
|
|
338
|
+
const manifestBuffer = files.get('manifest.json');
|
|
339
|
+
if (!manifestBuffer) {
|
|
340
|
+
throw new Error('Module package is missing manifest.json.');
|
|
341
|
+
}
|
|
342
|
+
let manifest;
|
|
343
|
+
try {
|
|
344
|
+
manifest = JSON.parse(manifestBuffer.toString('utf-8'));
|
|
345
|
+
}
|
|
346
|
+
catch {
|
|
347
|
+
throw new Error('Module package manifest.json is not valid JSON.');
|
|
348
|
+
}
|
|
349
|
+
if (manifest.schemaVersion !== SCHEMA_VERSION ||
|
|
350
|
+
manifest.packageType !== PACKAGE_TYPE) {
|
|
351
|
+
throw new Error(`Unsupported module package contract: ${manifest.packageType} ${manifest.schemaVersion}`);
|
|
352
|
+
}
|
|
353
|
+
if (!manifest.module?.name) {
|
|
354
|
+
throw new Error('Module package manifest must include module.name.');
|
|
355
|
+
}
|
|
356
|
+
if (expected?.expectedModuleName &&
|
|
357
|
+
manifest.module.name !== expected.expectedModuleName) {
|
|
358
|
+
throw new Error(`Expected module "${expected.expectedModuleName}", found "${manifest.module.name}".`);
|
|
359
|
+
}
|
|
360
|
+
if (expected?.expectedVersion &&
|
|
361
|
+
manifest.module.version !== expected.expectedVersion) {
|
|
362
|
+
throw new Error(`Expected version "${expected.expectedVersion}", found "${manifest.module.version}".`);
|
|
363
|
+
}
|
|
364
|
+
const requiredPaths = [
|
|
365
|
+
manifest.contents?.metadataPath,
|
|
366
|
+
manifest.contents?.apiModulePath,
|
|
367
|
+
manifest.contents?.uiModulePath,
|
|
368
|
+
];
|
|
369
|
+
if (requiredPaths.some((requiredPath) => !requiredPath || !files.has(requiredPath))) {
|
|
370
|
+
throw new Error('Module package is missing one or more required manifest content paths.');
|
|
371
|
+
}
|
|
372
|
+
const checksums = manifest.checksums;
|
|
373
|
+
if (!checksums || Object.keys(checksums).length === 0) {
|
|
374
|
+
throw new Error('Module package manifest does not contain checksums.');
|
|
375
|
+
}
|
|
376
|
+
const packagedPaths = [...files.keys()]
|
|
377
|
+
.filter((entryPath) => entryPath !== 'manifest.json')
|
|
378
|
+
.sort();
|
|
379
|
+
const checksumPaths = Object.keys(checksums).sort();
|
|
380
|
+
if (JSON.stringify(packagedPaths) !== JSON.stringify(checksumPaths)) {
|
|
381
|
+
throw new Error('Module package checksums do not exactly match the packaged files.');
|
|
382
|
+
}
|
|
383
|
+
for (const [entryPath, expectedChecksum] of Object.entries(checksums)) {
|
|
384
|
+
const actualChecksum = (0, crypto_1.createHash)('sha256')
|
|
385
|
+
.update(files.get(entryPath))
|
|
386
|
+
.digest('hex');
|
|
387
|
+
if (actualChecksum !== expectedChecksum) {
|
|
388
|
+
throw new Error(`Checksum mismatch for ${entryPath}.`);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
const metadata = JSON.parse(files.get(manifest.contents.metadataPath).toString('utf-8'));
|
|
392
|
+
if (metadata.moduleMetadata?.name !== manifest.module.name) {
|
|
393
|
+
throw new Error('Metadata module name does not match manifest.module.name.');
|
|
394
|
+
}
|
|
395
|
+
return manifest;
|
|
396
|
+
}
|
|
397
|
+
//# sourceMappingURL=module-package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-package.js","sourceRoot":"","sources":["../src/module-package.ts"],"names":[],"mappings":"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"}
|