webpack-userscript
Version:
A Webpack plugin for userscript projects.
91 lines • 3.65 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PackageLoader = exports.ProviderLoader = exports.FileLoader = exports.ObjectLoader = void 0;
const tslib_1 = require("tslib");
const node_path_1 = tslib_1.__importDefault(require("node:path"));
const node_util_1 = require("node:util");
const fs_1 = require("../../fs");
class ObjectLoader {
constructor(headers) {
this.headers = headers;
}
load() {
return this.headers;
}
}
exports.ObjectLoader = ObjectLoader;
class FileLoader {
constructor(file, root) {
this.file = file;
this.root = root;
this.headersFileTimestamp = 0;
}
load(compilation) {
var _a, _b;
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const getFileTimestampAsync = (0, node_util_1.promisify)(compilation.fileSystemInfo.getFileTimestamp.bind(compilation.fileSystemInfo));
const resolvedHeadersFile = node_path_1.default.resolve((_a = this.root) !== null && _a !== void 0 ? _a : compilation.compiler.context, this.file);
const ts = yield getFileTimestampAsync(resolvedHeadersFile);
if (this.headers &&
ts &&
typeof ts === 'object' &&
typeof ts.timestamp === 'number' &&
this.headersFileTimestamp >= ts.timestamp) {
// file no change
return this.headers;
}
if (ts && typeof ts === 'object') {
this.headersFileTimestamp = (_b = ts.timestamp) !== null && _b !== void 0 ? _b : this.headersFileTimestamp;
}
compilation.fileDependencies.add(resolvedHeadersFile);
return (this.headers = yield (0, fs_1.readJSON)(resolvedHeadersFile, compilation.inputFileSystem));
});
}
}
exports.FileLoader = FileLoader;
class ProviderLoader {
constructor(provider) {
this.provider = provider;
}
load(headers, ctx) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return this.provider(headers, ctx);
});
}
}
exports.ProviderLoader = ProviderLoader;
class PackageLoader {
constructor(root) {
this.root = root;
}
load(compiler) {
var _a;
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (!this.headers) {
try {
const cwd = yield (0, fs_1.findPackage)((_a = this.root) !== null && _a !== void 0 ? _a : compiler.context, compiler.inputFileSystem);
const packageJson = yield (0, fs_1.readJSON)(node_path_1.default.join(cwd, 'package.json'), compiler.inputFileSystem);
this.headers = {
name: packageJson.name,
version: packageJson.version,
description: packageJson.description,
author: packageJson.author,
homepage: packageJson.homepage,
supportURL: typeof packageJson.bugs === 'string'
? packageJson.bugs
: typeof packageJson.bugs === 'object' &&
typeof packageJson.bugs.url === 'string'
? packageJson.bugs.url
: undefined,
};
}
catch (e) {
this.headers = {};
}
}
return this.headers;
});
}
}
exports.PackageLoader = PackageLoader;
//# sourceMappingURL=loaders.js.map