routie dev init since i didn't adhere to any proper guidance up until now
This commit is contained in:
+121
@@ -0,0 +1,121 @@
|
||||
"use strict";
|
||||
// Copyright 2024 Google LLC. Use of this source code is governed by an
|
||||
// MIT-style license that can be found in the LICENSE file or at
|
||||
// https://opensource.org/licenses/MIT.
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.activeDeprecationOptions = exports.deprecations = void 0;
|
||||
exports.getDeprecationIds = getDeprecationIds;
|
||||
exports.warnForHostSideDeprecation = warnForHostSideDeprecation;
|
||||
const version_1 = require("./version");
|
||||
var deprecations_1 = require("./vendor/deprecations");
|
||||
Object.defineProperty(exports, "deprecations", { enumerable: true, get: function () { return deprecations_1.deprecations; } });
|
||||
/**
|
||||
* Converts a mixed array of deprecations, IDs, and versions to an array of IDs
|
||||
* that's ready to include in a CompileRequest.
|
||||
*/
|
||||
function getDeprecationIds(arr) {
|
||||
return arr.map(item => {
|
||||
if (item instanceof version_1.Version) {
|
||||
return item.toString();
|
||||
}
|
||||
else if (typeof item === 'string') {
|
||||
return item;
|
||||
}
|
||||
return item.id;
|
||||
});
|
||||
}
|
||||
/**
|
||||
* Map between active compilations and the deprecation options they use.
|
||||
*
|
||||
* This is used to determine which options to use when handling host-side
|
||||
* deprecation warnings that aren't explicitly tied to a particular compilation.
|
||||
*/
|
||||
exports.activeDeprecationOptions = new Map();
|
||||
/**
|
||||
* Handles a host-side deprecation warning, either emitting a warning, throwing
|
||||
* an error, or doing nothing depending on the deprecation options used.
|
||||
*
|
||||
* If no specific deprecation options are passed here, then options will be
|
||||
* determined based on the options of the active compilations.
|
||||
*/
|
||||
function warnForHostSideDeprecation(message, deprecation, options) {
|
||||
if (deprecation.status === 'future' &&
|
||||
!isEnabledFuture(deprecation, options)) {
|
||||
return;
|
||||
}
|
||||
const fullMessage = `Deprecation [${deprecation.id}]: ${message}`;
|
||||
if (isFatal(deprecation, options)) {
|
||||
throw Error(fullMessage);
|
||||
}
|
||||
if (!isSilent(deprecation, options)) {
|
||||
console.warn(fullMessage);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Checks whether the given deprecation is included in the given list of silent
|
||||
* deprecations or is silenced by at least one active compilation.
|
||||
*/
|
||||
function isSilent(deprecation, options) {
|
||||
if (!options) {
|
||||
for (const potentialOptions of exports.activeDeprecationOptions.values()) {
|
||||
if (isSilent(deprecation, potentialOptions))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return getDeprecationIds(options.silenceDeprecations ?? []).includes(deprecation.id);
|
||||
}
|
||||
/**
|
||||
* Checks whether the given deprecation is included in the given list of future
|
||||
* deprecations that should be enabled or is enabled in all active compilations.
|
||||
*/
|
||||
function isEnabledFuture(deprecation, options) {
|
||||
if (!options) {
|
||||
for (const potentialOptions of exports.activeDeprecationOptions.values()) {
|
||||
if (!isEnabledFuture(deprecation, potentialOptions))
|
||||
return false;
|
||||
}
|
||||
return exports.activeDeprecationOptions.size > 0;
|
||||
}
|
||||
return getDeprecationIds(options.futureDeprecations ?? []).includes(deprecation.id);
|
||||
}
|
||||
/**
|
||||
* Checks whether the given deprecation is included in the given list of
|
||||
* fatal deprecations or is marked as fatal in all active compilations.
|
||||
*/
|
||||
function isFatal(deprecation, options) {
|
||||
if (!options) {
|
||||
for (const potentialOptions of exports.activeDeprecationOptions.values()) {
|
||||
if (!isFatal(deprecation, potentialOptions))
|
||||
return false;
|
||||
}
|
||||
return exports.activeDeprecationOptions.size > 0;
|
||||
}
|
||||
const versionNumber = deprecation.deprecatedIn === null
|
||||
? null
|
||||
: deprecation.deprecatedIn.major * 1000000 +
|
||||
deprecation.deprecatedIn.minor * 1000 +
|
||||
deprecation.deprecatedIn.patch;
|
||||
for (const fatal of options.fatalDeprecations ?? []) {
|
||||
if (fatal instanceof version_1.Version) {
|
||||
if (versionNumber === null)
|
||||
continue;
|
||||
if (deprecation.obsoleteIn !== null)
|
||||
continue;
|
||||
if (versionNumber <=
|
||||
fatal.major * 1000000 + fatal.minor * 1000 + fatal.patch) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if (typeof fatal === 'string') {
|
||||
if (fatal === deprecation.id)
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
if (fatal.id === deprecation.id)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
//# sourceMappingURL=deprecations.js.map
|
||||
Reference in New Issue
Block a user