@forge/lint
6.0.3-next.206.1.0-next.21
out/lint/linters/server-side-linter/archiver.js+
out/lint/linters/server-side-linter/archiver.jsNew file+45
Index: package/out/lint/linters/server-side-linter/archiver.js
===================================================================
--- package/out/lint/linters/server-side-linter/archiver.js
+++ package/out/lint/linters/server-side-linter/archiver.js
@@ -0,0 +1,45 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ZipArchiver = void 0;
+const tslib_1 = require("tslib");
+const node_fs_1 = require("node:fs");
+const tmp_1 = tslib_1.__importDefault(require("tmp"));
+class ZipArchiver {
+ archive;
+ tempFile = tmp_1.default.fileSync({ postfix: '.zip' });
+ resolves = [];
+ rejects = [];
+ constructor(archive) {
+ this.archive = archive;
+ const output = (0, node_fs_1.createWriteStream)(this.tempFile.name).on('close', this.onClose);
+ this.archive.pipe(output);
+ this.archive.on('warning', this.onArchiveError);
+ this.archive.on('error', this.onArchiveError);
+ }
+ static async create() {
+ const { ZipArchive } = await Promise.resolve().then(() => tslib_1.__importStar(require('archiver')));
+ return new ZipArchiver(new ZipArchive());
+ }
+ addFile(fileName, contents) {
+ this.archive.append(contents, { name: fileName });
+ }
+ finalise() {
+ return new Promise((resolve, reject) => {
+ this.resolves.push(resolve);
+ this.rejects.push(reject);
+ return this.archive.finalize();
+ });
+ }
+ onArchiveError = (err) => {
+ const error = new Error(err.message);
+ for (const reject of this.rejects) {
+ reject(error);
+ }
+ };
+ onClose = () => {
+ for (const resolve of this.resolves) {
+ resolve(this.tempFile.name);
+ }
+ };
+}
+exports.ZipArchiver = ZipArchiver;