@aws-cdk/integ-runner
Version:
CDK Integration Testing Tool
84 lines • 11.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.UNSTABLE_FEATURES = exports.FeatureStatus = void 0;
exports.processUnstableFeatures = processUnstableFeatures;
exports.availableFeaturesDescription = availableFeaturesDescription;
const logger = require("./logger");
/**
* Status of an unstable feature
*/
var FeatureStatus;
(function (FeatureStatus) {
/** Feature is actively supported and can be used */
FeatureStatus["SUPPORTED"] = "supported";
/** Feature is deprecated but still functional - warns user */
FeatureStatus["DEPRECATED"] = "deprecated";
/** Feature has been removed - warns user and ignores */
FeatureStatus["REMOVED"] = "removed";
})(FeatureStatus || (exports.FeatureStatus = FeatureStatus = {}));
/**
* Registry of all unstable features
*/
exports.UNSTABLE_FEATURES = {
'deprecated-cli-engine': {
status: FeatureStatus.REMOVED,
deprecationMessage: 'You have opted-in to use the deprecated CLI engine which is scheduled to be removed in January 2026. If you have encountered blockers while using the new default engine, please let us know by opening an issue: https://github.com/aws/aws-cdk-cli/issues/new/choose\n\nTo use the new default engine, remove the `--unstable=deprecated-cli-engine` option.',
removalMessage: 'The CLI engine has been removed. The toolkit-lib engine is now the only supported engine. Please remove this flag.',
},
'toolkit-lib-engine': {
status: FeatureStatus.REMOVED,
deprecationMessage: 'The toolkit-lib engine is now the default engine. This flag can be safely removed. You may choose to temporarily revert to the old engine by adding the `--unstable=deprecated-cli-engine` option.',
removalMessage: 'The toolkit-lib engine is now the default and only engine. This flag can be safely removed.',
},
};
/**
* Process unstable feature flags and emit appropriate warnings
*
* @param unstableFeatures - Array of feature names from CLI --unstable option
* @returns Array of valid, enabled feature names
*/
function processUnstableFeatures(unstableFeatures = []) {
const validFeatures = [];
for (const featureName of unstableFeatures) {
const feature = exports.UNSTABLE_FEATURES[featureName];
if (!feature) {
// Unknown feature - warn and ignore
logger.warning(`Unknown unstable feature: '${featureName}'. This option will be ignored.`);
continue;
}
switch (feature.status) {
case FeatureStatus.REMOVED:
// Removed feature - warn with removal message and ignore
logger.warning(`[Removed] ${feature.deprecationMessage}`);
if (feature.removalMessage) {
logger.warning(feature.removalMessage);
}
break;
case FeatureStatus.DEPRECATED:
// Deprecated feature - warn but still apply
logger.warning(`[Deprecated] ${feature.deprecationMessage}`);
validFeatures.push(featureName);
break;
case FeatureStatus.SUPPORTED:
// Supported feature - apply without warning
validFeatures.push(featureName);
break;
}
}
return validFeatures;
}
/**
* Returns a description of available unstable features for CLI help text
*
* @returns A string describing available features or indicating none are available
*/
function availableFeaturesDescription() {
const availableFeatures = Object.entries(exports.UNSTABLE_FEATURES)
.filter(([_, feature]) => feature.status === FeatureStatus.SUPPORTED)
.map(([name]) => name);
if (availableFeatures.length === 0) {
return 'Currently no unstable features are available.';
}
return `Available features: ${availableFeatures.join(', ')}.`;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zdGFibGUtZmVhdHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1bnN0YWJsZS1mZWF0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFnREEsMERBbUNDO0FBT0Qsb0VBVUM7QUFwR0QsbUNBQW1DO0FBRW5DOztHQUVHO0FBQ0gsSUFBWSxhQU9YO0FBUEQsV0FBWSxhQUFhO0lBQ3ZCLG9EQUFvRDtJQUNwRCx3Q0FBdUIsQ0FBQTtJQUN2Qiw4REFBOEQ7SUFDOUQsMENBQXlCLENBQUE7SUFDekIsd0RBQXdEO0lBQ3hELG9DQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFQVyxhQUFhLDZCQUFiLGFBQWEsUUFPeEI7QUFjRDs7R0FFRztBQUNVLFFBQUEsaUJBQWlCLEdBQW9DO0lBQ2hFLHVCQUF1QixFQUFFO1FBQ3ZCLE1BQU0sRUFBRSxhQUFhLENBQUMsT0FBTztRQUM3QixrQkFBa0IsRUFBRSxnV0FBZ1c7UUFDcFgsY0FBYyxFQUFFLG9IQUFvSDtLQUNySTtJQUNELG9CQUFvQixFQUFFO1FBQ3BCLE1BQU0sRUFBRSxhQUFhLENBQUMsT0FBTztRQUM3QixrQkFBa0IsRUFBRSxvTUFBb007UUFDeE4sY0FBYyxFQUFFLDZGQUE2RjtLQUM5RztDQUNGLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILFNBQWdCLHVCQUF1QixDQUFDLG1CQUE2QixFQUFFO0lBQ3JFLE1BQU0sYUFBYSxHQUFhLEVBQUUsQ0FBQztJQUVuQyxLQUFLLE1BQU0sV0FBVyxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcseUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2Isb0NBQW9DO1lBQ3BDLE1BQU0sQ0FBQyxPQUFPLENBQUMsOEJBQThCLFdBQVcsaUNBQWlDLENBQUMsQ0FBQztZQUMzRixTQUFTO1FBQ1gsQ0FBQztRQUVELFFBQVEsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLEtBQUssYUFBYSxDQUFDLE9BQU87Z0JBQ3hCLHlEQUF5RDtnQkFDekQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7Z0JBQzFELElBQUksT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUMzQixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDekMsQ0FBQztnQkFDRCxNQUFNO1lBRVIsS0FBSyxhQUFhLENBQUMsVUFBVTtnQkFDM0IsNENBQTRDO2dCQUM1QyxNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RCxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNoQyxNQUFNO1lBRVIsS0FBSyxhQUFhLENBQUMsU0FBUztnQkFDMUIsNENBQTRDO2dCQUM1QyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNoQyxNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLGFBQWEsQ0FBQztBQUN2QixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLDRCQUE0QjtJQUMxQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMseUJBQWlCLENBQUM7U0FDeEQsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssYUFBYSxDQUFDLFNBQVMsQ0FBQztTQUNwRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV6QixJQUFJLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxPQUFPLCtDQUErQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxPQUFPLHVCQUF1QixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcblxuLyoqXG4gKiBTdGF0dXMgb2YgYW4gdW5zdGFibGUgZmVhdHVyZVxuICovXG5leHBvcnQgZW51bSBGZWF0dXJlU3RhdHVzIHtcbiAgLyoqIEZlYXR1cmUgaXMgYWN0aXZlbHkgc3VwcG9ydGVkIGFuZCBjYW4gYmUgdXNlZCAqL1xuICBTVVBQT1JURUQgPSAnc3VwcG9ydGVkJyxcbiAgLyoqIEZlYXR1cmUgaXMgZGVwcmVjYXRlZCBidXQgc3RpbGwgZnVuY3Rpb25hbCAtIHdhcm5zIHVzZXIgKi9cbiAgREVQUkVDQVRFRCA9ICdkZXByZWNhdGVkJyxcbiAgLyoqIEZlYXR1cmUgaGFzIGJlZW4gcmVtb3ZlZCAtIHdhcm5zIHVzZXIgYW5kIGlnbm9yZXMgKi9cbiAgUkVNT1ZFRCA9ICdyZW1vdmVkJyxcbn1cblxuLyoqXG4gKiBEZWZpbml0aW9uIG9mIGFuIHVuc3RhYmxlIGZlYXR1cmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbnN0YWJsZUZlYXR1cmUge1xuICAvKiogQ3VycmVudCBzdGF0dXMgb2YgdGhlIGZlYXR1cmUgKi9cbiAgcmVhZG9ubHkgc3RhdHVzOiBGZWF0dXJlU3RhdHVzO1xuICAvKiogV2FybmluZyBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiByZXF1ZXN0ZWQgZmVhdHVyZSBpcyBkZXByZWNhdGVkICovXG4gIHJlYWRvbmx5IGRlcHJlY2F0aW9uTWVzc2FnZTogc3RyaW5nO1xuICAvKiogTWVzc2FnZSB0byBkaXNwbGF5IGZvciByZXF1ZXN0ZWQgZmVhdHVyZXMgdGhhdCBhcmUgcmVtb3ZlZCAqL1xuICByZWFkb25seSByZW1vdmFsTWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlZ2lzdHJ5IG9mIGFsbCB1bnN0YWJsZSBmZWF0dXJlc1xuICovXG5leHBvcnQgY29uc3QgVU5TVEFCTEVfRkVBVFVSRVM6IFJlY29yZDxzdHJpbmcsIFVuc3RhYmxlRmVhdHVyZT4gPSB7XG4gICdkZXByZWNhdGVkLWNsaS1lbmdpbmUnOiB7XG4gICAgc3RhdHVzOiBGZWF0dXJlU3RhdHVzLlJFTU9WRUQsXG4gICAgZGVwcmVjYXRpb25NZXNzYWdlOiAnWW91IGhhdmUgb3B0ZWQtaW4gdG8gdXNlIHRoZSBkZXByZWNhdGVkIENMSSBlbmdpbmUgd2hpY2ggaXMgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQgaW4gSmFudWFyeSAyMDI2LiBJZiB5b3UgaGF2ZSBlbmNvdW50ZXJlZCBibG9ja2VycyB3aGlsZSB1c2luZyB0aGUgbmV3IGRlZmF1bHQgZW5naW5lLCBwbGVhc2UgbGV0IHVzIGtub3cgYnkgb3BlbmluZyBhbiBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrLWNsaS9pc3N1ZXMvbmV3L2Nob29zZVxcblxcblRvIHVzZSB0aGUgbmV3IGRlZmF1bHQgZW5naW5lLCByZW1vdmUgdGhlIGAtLXVuc3RhYmxlPWRlcHJlY2F0ZWQtY2xpLWVuZ2luZWAgb3B0aW9uLicsXG4gICAgcmVtb3ZhbE1lc3NhZ2U6ICdUaGUgQ0xJIGVuZ2luZSBoYXMgYmVlbiByZW1vdmVkLiBUaGUgdG9vbGtpdC1saWIgZW5naW5lIGlzIG5vdyB0aGUgb25seSBzdXBwb3J0ZWQgZW5naW5lLiBQbGVhc2UgcmVtb3ZlIHRoaXMgZmxhZy4nLFxuICB9LFxuICAndG9vbGtpdC1saWItZW5naW5lJzoge1xuICAgIHN0YXR1czogRmVhdHVyZVN0YXR1cy5SRU1PVkVELFxuICAgIGRlcHJlY2F0aW9uTWVzc2FnZTogJ1RoZSB0b29sa2l0LWxpYiBlbmdpbmUgaXMgbm93IHRoZSBkZWZhdWx0IGVuZ2luZS4gVGhpcyBmbGFnIGNhbiBiZSBzYWZlbHkgcmVtb3ZlZC4gWW91IG1heSBjaG9vc2UgdG8gdGVtcG9yYXJpbHkgcmV2ZXJ0IHRvIHRoZSBvbGQgZW5naW5lIGJ5IGFkZGluZyB0aGUgYC0tdW5zdGFibGU9ZGVwcmVjYXRlZC1jbGktZW5naW5lYCBvcHRpb24uJyxcbiAgICByZW1vdmFsTWVzc2FnZTogJ1RoZSB0b29sa2l0LWxpYiBlbmdpbmUgaXMgbm93IHRoZSBkZWZhdWx0IGFuZCBvbmx5IGVuZ2luZS4gVGhpcyBmbGFnIGNhbiBiZSBzYWZlbHkgcmVtb3ZlZC4nLFxuICB9LFxufTtcblxuLyoqXG4gKiBQcm9jZXNzIHVuc3RhYmxlIGZlYXR1cmUgZmxhZ3MgYW5kIGVtaXQgYXBwcm9wcmlhdGUgd2FybmluZ3NcbiAqXG4gKiBAcGFyYW0gdW5zdGFibGVGZWF0dXJlcyAtIEFycmF5IG9mIGZlYXR1cmUgbmFtZXMgZnJvbSBDTEkgLS11bnN0YWJsZSBvcHRpb25cbiAqIEByZXR1cm5zIEFycmF5IG9mIHZhbGlkLCBlbmFibGVkIGZlYXR1cmUgbmFtZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NVbnN0YWJsZUZlYXR1cmVzKHVuc3RhYmxlRmVhdHVyZXM6IHN0cmluZ1tdID0gW10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHZhbGlkRmVhdHVyZXM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCBmZWF0dXJlTmFtZSBvZiB1bnN0YWJsZUZlYXR1cmVzKSB7XG4gICAgY29uc3QgZmVhdHVyZSA9IFVOU1RBQkxFX0ZFQVRVUkVTW2ZlYXR1cmVOYW1lXTtcblxuICAgIGlmICghZmVhdHVyZSkge1xuICAgICAgLy8gVW5rbm93biBmZWF0dXJlIC0gd2FybiBhbmQgaWdub3JlXG4gICAgICBsb2dnZXIud2FybmluZyhgVW5rbm93biB1bnN0YWJsZSBmZWF0dXJlOiAnJHtmZWF0dXJlTmFtZX0nLiBUaGlzIG9wdGlvbiB3aWxsIGJlIGlnbm9yZWQuYCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGZlYXR1cmUuc3RhdHVzKSB7XG4gICAgICBjYXNlIEZlYXR1cmVTdGF0dXMuUkVNT1ZFRDpcbiAgICAgICAgLy8gUmVtb3ZlZCBmZWF0dXJlIC0gd2FybiB3aXRoIHJlbW92YWwgbWVzc2FnZSBhbmQgaWdub3JlXG4gICAgICAgIGxvZ2dlci53YXJuaW5nKGBbUmVtb3ZlZF0gJHtmZWF0dXJlLmRlcHJlY2F0aW9uTWVzc2FnZX1gKTtcbiAgICAgICAgaWYgKGZlYXR1cmUucmVtb3ZhbE1lc3NhZ2UpIHtcbiAgICAgICAgICBsb2dnZXIud2FybmluZyhmZWF0dXJlLnJlbW92YWxNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBGZWF0dXJlU3RhdHVzLkRFUFJFQ0FURUQ6XG4gICAgICAgIC8vIERlcHJlY2F0ZWQgZmVhdHVyZSAtIHdhcm4gYnV0IHN0aWxsIGFwcGx5XG4gICAgICAgIGxvZ2dlci53YXJuaW5nKGBbRGVwcmVjYXRlZF0gJHtmZWF0dXJlLmRlcHJlY2F0aW9uTWVzc2FnZX1gKTtcbiAgICAgICAgdmFsaWRGZWF0dXJlcy5wdXNoKGZlYXR1cmVOYW1lKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgRmVhdHVyZVN0YXR1cy5TVVBQT1JURUQ6XG4gICAgICAgIC8vIFN1cHBvcnRlZCBmZWF0dXJlIC0gYXBwbHkgd2l0aG91dCB3YXJuaW5nXG4gICAgICAgIHZhbGlkRmVhdHVyZXMucHVzaChmZWF0dXJlTmFtZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWxpZEZlYXR1cmVzO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBkZXNjcmlwdGlvbiBvZiBhdmFpbGFibGUgdW5zdGFibGUgZmVhdHVyZXMgZm9yIENMSSBoZWxwIHRleHRcbiAqXG4gKiBAcmV0dXJucyBBIHN0cmluZyBkZXNjcmliaW5nIGF2YWlsYWJsZSBmZWF0dXJlcyBvciBpbmRpY2F0aW5nIG5vbmUgYXJlIGF2YWlsYWJsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXZhaWxhYmxlRmVhdHVyZXNEZXNjcmlwdGlvbigpOiBzdHJpbmcge1xuICBjb25zdCBhdmFpbGFibGVGZWF0dXJlcyA9IE9iamVjdC5lbnRyaWVzKFVOU1RBQkxFX0ZFQVRVUkVTKVxuICAgIC5maWx0ZXIoKFtfLCBmZWF0dXJlXSkgPT4gZmVhdHVyZS5zdGF0dXMgPT09IEZlYXR1cmVTdGF0dXMuU1VQUE9SVEVEKVxuICAgIC5tYXAoKFtuYW1lXSkgPT4gbmFtZSk7XG5cbiAgaWYgKGF2YWlsYWJsZUZlYXR1cmVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnQ3VycmVudGx5IG5vIHVuc3RhYmxlIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUuJztcbiAgfVxuXG4gIHJldHVybiBgQXZhaWxhYmxlIGZlYXR1cmVzOiAke2F2YWlsYWJsZUZlYXR1cmVzLmpvaW4oJywgJyl9LmA7XG59XG4iXX0=