Son CV dans un terminal web en Javascript!
https://terminal-cv.gregandev.fr
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
277 lines
8.9 KiB
277 lines
8.9 KiB
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = applyRuntimes;
|
|
|
|
function _path() {
|
|
const data = _interopRequireDefault(require("path"));
|
|
|
|
_path = function () {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
function _assert() {
|
|
const data = _interopRequireDefault(require("assert"));
|
|
|
|
_assert = function () {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
function _nullthrows() {
|
|
const data = _interopRequireDefault(require("nullthrows"));
|
|
|
|
_nullthrows = function () {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
var _AssetGraph = require("./AssetGraph");
|
|
|
|
var _BundleGraph = _interopRequireDefault(require("./public/BundleGraph"));
|
|
|
|
var _BundleGraph2 = _interopRequireWildcard(require("./BundleGraph"));
|
|
|
|
var _Bundle = require("./public/Bundle");
|
|
|
|
function _logger() {
|
|
const data = require("@parcel/logger");
|
|
|
|
_logger = function () {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
function _hash() {
|
|
const data = require("@parcel/hash");
|
|
|
|
_hash = function () {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
function _diagnostic() {
|
|
const data = _interopRequireWildcard(require("@parcel/diagnostic"));
|
|
|
|
_diagnostic = function () {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
var _Dependency = require("./public/Dependency");
|
|
|
|
var _Environment = require("./Environment");
|
|
|
|
var _AssetGraphRequest = _interopRequireDefault(require("./requests/AssetGraphRequest"));
|
|
|
|
var _DevDepRequest = require("./requests/DevDepRequest");
|
|
|
|
var _projectPath = require("./projectPath");
|
|
|
|
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
|
|
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
async function applyRuntimes({
|
|
bundleGraph,
|
|
config,
|
|
options,
|
|
pluginOptions,
|
|
api,
|
|
optionsRef,
|
|
previousDevDeps,
|
|
devDepRequests,
|
|
configs
|
|
}) {
|
|
let runtimes = await config.getRuntimes();
|
|
let connections = [];
|
|
|
|
for (let bundle of bundleGraph.getBundles({
|
|
includeInline: true
|
|
})) {
|
|
for (let runtime of runtimes) {
|
|
try {
|
|
var _configs$get;
|
|
|
|
let applied = await runtime.plugin.apply({
|
|
bundle: _Bundle.NamedBundle.get(bundle, bundleGraph, options),
|
|
bundleGraph: new _BundleGraph.default(bundleGraph, _Bundle.NamedBundle.get.bind(_Bundle.NamedBundle), options),
|
|
config: (_configs$get = configs.get(runtime.name)) === null || _configs$get === void 0 ? void 0 : _configs$get.result,
|
|
options: pluginOptions,
|
|
logger: new (_logger().PluginLogger)({
|
|
origin: runtime.name
|
|
})
|
|
});
|
|
|
|
if (applied) {
|
|
let runtimeAssets = Array.isArray(applied) ? applied : [applied];
|
|
|
|
for (let {
|
|
code,
|
|
dependency,
|
|
filePath,
|
|
isEntry,
|
|
env
|
|
} of runtimeAssets) {
|
|
let sourceName = _path().default.join(_path().default.dirname(filePath), `runtime-${(0, _hash().hashString)(code)}.${bundle.type}`);
|
|
|
|
let assetGroup = {
|
|
code,
|
|
filePath: (0, _projectPath.toProjectPath)(options.projectRoot, sourceName),
|
|
env: (0, _Environment.mergeEnvironments)(options.projectRoot, bundle.env, env),
|
|
// Runtime assets should be considered source, as they should be
|
|
// e.g. compiled to run in the target environment
|
|
isSource: true
|
|
};
|
|
connections.push({
|
|
bundle,
|
|
assetGroup,
|
|
dependency: dependency,
|
|
isEntry
|
|
});
|
|
}
|
|
}
|
|
} catch (e) {
|
|
throw new (_diagnostic().default)({
|
|
diagnostic: (0, _diagnostic().errorToDiagnostic)(e, {
|
|
origin: runtime.name
|
|
})
|
|
});
|
|
}
|
|
}
|
|
} // Add dev deps for runtime plugins AFTER running them, to account for lazy require().
|
|
|
|
|
|
for (let runtime of runtimes) {
|
|
let devDepRequest = await (0, _DevDepRequest.createDevDependency)({
|
|
specifier: runtime.name,
|
|
resolveFrom: runtime.resolveFrom
|
|
}, previousDevDeps, options);
|
|
devDepRequests.set(`${devDepRequest.specifier}:${(0, _projectPath.fromProjectPathRelative)(devDepRequest.resolveFrom)}`, devDepRequest);
|
|
await (0, _DevDepRequest.runDevDepRequest)(api, devDepRequest);
|
|
}
|
|
|
|
let {
|
|
assetGraph: runtimesAssetGraph,
|
|
changedAssets
|
|
} = await reconcileNewRuntimes(api, connections, optionsRef);
|
|
|
|
let runtimesGraph = _BundleGraph2.default.fromAssetGraph(runtimesAssetGraph, bundleGraph._publicIdByAssetId, bundleGraph._assetPublicIds); // Merge the runtimes graph into the main bundle graph.
|
|
|
|
|
|
bundleGraph.merge(runtimesGraph);
|
|
|
|
for (let [assetId, publicId] of runtimesGraph._publicIdByAssetId) {
|
|
bundleGraph._publicIdByAssetId.set(assetId, publicId);
|
|
|
|
bundleGraph._assetPublicIds.add(publicId);
|
|
}
|
|
|
|
for (let {
|
|
bundle,
|
|
assetGroup,
|
|
dependency,
|
|
isEntry
|
|
} of connections) {
|
|
let assetGroupNode = (0, _AssetGraph.nodeFromAssetGroup)(assetGroup);
|
|
let assetGroupAssetNodeIds = runtimesAssetGraph.getNodeIdsConnectedFrom(runtimesAssetGraph.getNodeIdByContentKey(assetGroupNode.id));
|
|
(0, _assert().default)(assetGroupAssetNodeIds.length === 1);
|
|
let runtimeNodeId = assetGroupAssetNodeIds[0];
|
|
let runtimeNode = (0, _nullthrows().default)(runtimesAssetGraph.getNode(runtimeNodeId));
|
|
(0, _assert().default)(runtimeNode.type === 'asset');
|
|
let resolution = dependency && bundleGraph.getResolvedAsset((0, _Dependency.dependencyToInternalDependency)(dependency), bundle);
|
|
|
|
let runtimesGraphRuntimeNodeId = runtimesGraph._graph.getNodeIdByContentKey(runtimeNode.id);
|
|
|
|
let duplicatedContentKeys = new Set();
|
|
|
|
runtimesGraph._graph.traverse((nodeId, _, actions) => {
|
|
let node = (0, _nullthrows().default)(runtimesGraph._graph.getNode(nodeId));
|
|
|
|
if (node.type !== 'dependency') {
|
|
return;
|
|
}
|
|
|
|
let assets = runtimesGraph._graph.getNodeIdsConnectedFrom(nodeId).map(assetNodeId => {
|
|
let assetNode = (0, _nullthrows().default)(runtimesGraph._graph.getNode(assetNodeId));
|
|
(0, _assert().default)(assetNode.type === 'asset');
|
|
return assetNode.value;
|
|
});
|
|
|
|
for (let asset of assets) {
|
|
if (bundleGraph.isAssetReachableFromBundle(asset, bundle) || (resolution === null || resolution === void 0 ? void 0 : resolution.id) === asset.id) {
|
|
duplicatedContentKeys.add(asset.id);
|
|
actions.skipChildren();
|
|
}
|
|
}
|
|
}, runtimesGraphRuntimeNodeId);
|
|
|
|
let bundleNodeId = bundleGraph._graph.getNodeIdByContentKey(bundle.id);
|
|
|
|
let bundleGraphRuntimeNodeId = bundleGraph._graph.getNodeIdByContentKey(runtimeNode.id); // the node id is not constant between graphs
|
|
|
|
|
|
runtimesGraph._graph.traverse((nodeId, _, actions) => {
|
|
let node = (0, _nullthrows().default)(runtimesGraph._graph.getNode(nodeId));
|
|
|
|
if (node.type === 'asset' || node.type === 'dependency') {
|
|
if (duplicatedContentKeys.has(node.id)) {
|
|
actions.skipChildren();
|
|
return;
|
|
}
|
|
|
|
const bundleGraphNodeId = bundleGraph._graph.getNodeIdByContentKey(node.id); // the node id is not constant between graphs
|
|
|
|
|
|
bundleGraph._graph.addEdge(bundleNodeId, bundleGraphNodeId, _BundleGraph2.bundleGraphEdgeTypes.contains);
|
|
}
|
|
}, runtimesGraphRuntimeNodeId);
|
|
|
|
if (isEntry) {
|
|
bundleGraph._graph.addEdge(bundleNodeId, bundleGraphRuntimeNodeId);
|
|
|
|
bundle.entryAssetIds.unshift(runtimeNode.id);
|
|
}
|
|
|
|
if (dependency == null) {
|
|
// Verify this asset won't become an island
|
|
(0, _assert().default)(bundleGraph._graph.getNodeIdsConnectedTo(bundleGraphRuntimeNodeId).length > 0, 'Runtime must have an inbound dependency or be an entry');
|
|
} else {
|
|
let dependencyNodeId = bundleGraph._graph.getNodeIdByContentKey(dependency.id);
|
|
|
|
bundleGraph._graph.addEdge(dependencyNodeId, bundleGraphRuntimeNodeId);
|
|
}
|
|
}
|
|
|
|
return changedAssets;
|
|
}
|
|
|
|
function reconcileNewRuntimes(api, connections, optionsRef) {
|
|
let assetGroups = connections.map(t => t.assetGroup);
|
|
let request = (0, _AssetGraphRequest.default)({
|
|
name: 'Runtimes',
|
|
assetGroups,
|
|
optionsRef
|
|
}); // rebuild the graph
|
|
|
|
return api.runRequest(request, {
|
|
force: true
|
|
});
|
|
} |