summaryrefslogtreecommitdiff
path: root/includes/search/node_modules/pkg/lib-es5/packer.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/search/node_modules/pkg/lib-es5/packer.js')
-rw-r--r--includes/search/node_modules/pkg/lib-es5/packer.js131
1 files changed, 131 insertions, 0 deletions
diff --git a/includes/search/node_modules/pkg/lib-es5/packer.js b/includes/search/node_modules/pkg/lib-es5/packer.js
new file mode 100644
index 0000000..7bc7341
--- /dev/null
+++ b/includes/search/node_modules/pkg/lib-es5/packer.js
@@ -0,0 +1,131 @@
+"use strict";
+/* eslint-disable complexity */
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const assert_1 = __importDefault(require("assert"));
+const fs_extra_1 = __importDefault(require("fs-extra"));
+const path_1 = __importDefault(require("path"));
+const common_1 = require("./common");
+const log_1 = require("./log");
+const { version } = JSON.parse(fs_extra_1.default.readFileSync(path_1.default.join(__dirname, '../package.json'), 'utf-8'));
+const bootstrapText = fs_extra_1.default
+ .readFileSync(require.resolve('../prelude/bootstrap.js'), 'utf8')
+ .replace('%VERSION%', version);
+const commonText = fs_extra_1.default.readFileSync(require.resolve('./common'), 'utf8');
+const diagnosticText = fs_extra_1.default.readFileSync(require.resolve('../prelude/diagnostic.js'), 'utf8');
+function itemsToText(items) {
+ const len = items.length;
+ return len.toString() + (len % 10 === 1 ? ' item' : ' items');
+}
+function hasAnyStore(record) {
+ // discarded records like native addons
+ for (const store of [common_1.STORE_BLOB, common_1.STORE_CONTENT, common_1.STORE_LINKS, common_1.STORE_STAT]) {
+ if (record[store])
+ return true;
+ }
+ return false;
+}
+function packer({ records, entrypoint, bytecode, }) {
+ const stripes = [];
+ for (const snap in records) {
+ if (records[snap]) {
+ const record = records[snap];
+ const { file } = record;
+ if (!hasAnyStore(record)) {
+ continue;
+ }
+ (0, assert_1.default)(record[common_1.STORE_STAT], 'packer: no STORE_STAT');
+ (0, assert_1.default)(record[common_1.STORE_BLOB] ||
+ record[common_1.STORE_CONTENT] ||
+ record[common_1.STORE_LINKS] ||
+ record[common_1.STORE_STAT]);
+ if (record[common_1.STORE_BLOB] && !bytecode) {
+ delete record[common_1.STORE_BLOB];
+ if (!record[common_1.STORE_CONTENT]) {
+ // TODO make a test for it?
+ throw (0, log_1.wasReported)('--no-bytecode and no source breaks final executable', [
+ file,
+ 'Please run with "-d" and without "--no-bytecode" first, and make',
+ 'sure that debug log does not contain "was included as bytecode".',
+ ]);
+ }
+ }
+ for (const store of [
+ common_1.STORE_BLOB,
+ common_1.STORE_CONTENT,
+ common_1.STORE_LINKS,
+ common_1.STORE_STAT,
+ ]) {
+ const value = record[store];
+ if (!value) {
+ continue;
+ }
+ if (store === common_1.STORE_BLOB || store === common_1.STORE_CONTENT) {
+ if (record.body === undefined) {
+ stripes.push({ snap, store, file });
+ }
+ else if (Buffer.isBuffer(record.body)) {
+ stripes.push({ snap, store, buffer: record.body });
+ }
+ else if (typeof record.body === 'string') {
+ stripes.push({ snap, store, buffer: Buffer.from(record.body) });
+ }
+ else {
+ (0, assert_1.default)(false, 'packer: bad STORE_BLOB/STORE_CONTENT');
+ }
+ }
+ else if (store === common_1.STORE_LINKS) {
+ if (Array.isArray(value)) {
+ const dedupedValue = [...new Set(value)];
+ log_1.log.debug('files & folders deduped = ', dedupedValue);
+ const buffer = Buffer.from(JSON.stringify(dedupedValue));
+ stripes.push({ snap, store, buffer });
+ }
+ else {
+ (0, assert_1.default)(false, 'packer: bad STORE_LINKS');
+ }
+ }
+ else if (store === common_1.STORE_STAT) {
+ if (typeof value === 'object') {
+ const newStat = Object.assign({}, value);
+ const buffer = Buffer.from(JSON.stringify(newStat));
+ stripes.push({ snap, store, buffer });
+ }
+ else {
+ (0, assert_1.default)(false, 'packer: unknown store');
+ }
+ }
+ if (record[common_1.STORE_CONTENT]) {
+ const disclosed = (0, common_1.isDotJS)(file) || (0, common_1.isDotJSON)(file);
+ log_1.log.debug(disclosed
+ ? 'The file was included as DISCLOSED code (with sources)'
+ : 'The file was included as asset content', file);
+ }
+ else if (record[common_1.STORE_BLOB]) {
+ log_1.log.debug('The file was included as bytecode (no sources)', file);
+ }
+ else if (record[common_1.STORE_LINKS]) {
+ const link = record[common_1.STORE_LINKS];
+ log_1.log.debug(`The directory files list was included (${itemsToText(link)})`, file);
+ }
+ }
+ }
+ }
+ const prelude = `return (function (REQUIRE_COMMON, VIRTUAL_FILESYSTEM, DEFAULT_ENTRYPOINT, SYMLINKS, DICT, DOCOMPRESS) {
+ ${bootstrapText}${log_1.log.debugMode ? diagnosticText : ''}\n})(function (exports) {\n${commonText}\n},\n` +
+ `%VIRTUAL_FILESYSTEM%` +
+ `\n,\n` +
+ `%DEFAULT_ENTRYPOINT%` +
+ `\n,\n` +
+ `%SYMLINKS%` +
+ '\n,\n' +
+ '%DICT%' +
+ '\n,\n' +
+ '%DOCOMPRESS%' +
+ `\n);`;
+ return { prelude, entrypoint, stripes };
+}
+exports.default = packer;
+//# sourceMappingURL=packer.js.map \ No newline at end of file