88 lines
8.7 KiB
JavaScript
88 lines
8.7 KiB
JavaScript
"use strict";
|
|||
|
|
var _a, _b;
|
||
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
|
exports.Dependable = exports.DependencyGroup = void 0;
|
||
|
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
||
|
|
/**
|
||
|
|
* A set of constructs to be used as a dependable
|
||
|
|
*
|
||
|
|
* This class can be used when a set of constructs which are disjoint in the
|
||
|
|
* construct tree needs to be combined to be used as a single dependable.
|
||
|
|
*/
|
||
|
|
class DependencyGroup {
|
||
|
|
constructor(...deps) {
|
||
|
|
this._deps = new Array();
|
||
|
|
const self = this;
|
||
|
|
Dependable.implement(this, {
|
||
|
|
get dependencyRoots() {
|
||
|
|
const result = new Array();
|
||
|
|
for (const d of self._deps) {
|
||
|
|
result.push(...Dependable.of(d).dependencyRoots);
|
||
|
|
}
|
||
|
|
return result;
|
||
|
|
},
|
||
|
|
});
|
||
|
|
this.add(...deps);
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* Add a construct to the dependency roots
|
||
|
|
*/
|
||
|
|
add(...scopes) {
|
||
|
|
this._deps.push(...scopes);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
exports.DependencyGroup = DependencyGroup;
|
||
|
|
_a = JSII_RTTI_SYMBOL_1;
|
||
|
|
DependencyGroup[_a] = { fqn: "constructs.DependencyGroup", version: "10.6.0" };
|
||
|
|
const DEPENDABLE_SYMBOL = Symbol.for('@aws-cdk/core.DependableTrait');
|
||
|
|
/**
|
||
|
|
* Trait for IDependable
|
||
|
|
*
|
||
|
|
* Traits are interfaces that are privately implemented by objects. Instead of
|
||
|
|
* showing up in the public interface of a class, they need to be queried
|
||
|
|
* explicitly. This is used to implement certain framework features that are
|
||
|
|
* not intended to be used by Construct consumers, and so should be hidden
|
||
|
|
* from accidental use.
|
||
|
|
*
|
||
|
|
* @example
|
||
|
|
*
|
||
|
|
* // Usage
|
||
|
|
* const roots = Dependable.of(construct).dependencyRoots;
|
||
|
|
*
|
||
|
|
* // Definition
|
||
|
|
* Dependable.implement(construct, {
|
||
|
|
* dependencyRoots: [construct],
|
||
|
|
* });
|
||
|
|
*/
|
||
|
|
class Dependable {
|
||
|
|
/**
|
||
|
|
* Turn any object into an IDependable.
|
||
|
|
*/
|
||
|
|
static implement(instance, trait) {
|
||
|
|
// I would also like to reference classes (to cut down on the list of objects
|
||
|
|
// we need to manage), but we can't do that either since jsii doesn't have the
|
||
|
|
// concept of a class reference.
|
||
|
|
instance[DEPENDABLE_SYMBOL] = trait;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* Return the matching Dependable for the given class instance.
|
||
|
|
*/
|
||
|
|
static of(instance) {
|
||
|
|
const ret = instance[DEPENDABLE_SYMBOL];
|
||
|
|
if (!ret) {
|
||
|
|
throw new Error(`${instance} does not implement IDependable. Use "Dependable.implement()" to implement`);
|
||
|
|
}
|
||
|
|
return ret;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* Return the matching Dependable for the given class instance.
|
||
|
|
* @deprecated use `of`
|
||
|
|
*/
|
||
|
|
static get(instance) {
|
||
|
|
return this.of(instance);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
exports.Dependable = Dependable;
|
||
|
|
_b = JSII_RTTI_SYMBOL_1;
|
||
|
|
Dependable[_b] = { fqn: "constructs.Dependable", version: "10.6.0" };
|
||
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kZXBlbmRlbmN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBaUJBOzs7OztHQUtHO0FBQ0gsTUFBYSxlQUFlO0lBRzFCLFlBQVksR0FBRyxJQUFtQjtRQUZqQixVQUFLLEdBQUcsSUFBSSxLQUFLLEVBQWUsQ0FBQztRQUdoRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7UUFFbEIsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7WUFDekIsSUFBSSxlQUFlO2dCQUNqQixNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO2dCQUN2QyxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDM0IsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ25ELENBQUM7Z0JBQ0QsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxHQUFHLENBQUMsR0FBRyxNQUFxQjtRQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLENBQUM7O0FBeEJILDBDQXlCQzs7O0FBRUQsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7QUFFdEU7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQXNCLFVBQVU7SUFDOUI7O09BRUc7SUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQXFCLEVBQUUsS0FBaUI7UUFDOUQsNkVBQTZFO1FBQzdFLDhFQUE4RTtRQUM5RSxnQ0FBZ0M7UUFDL0IsUUFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUMvQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQXFCO1FBQ3BDLE1BQU0sR0FBRyxHQUFJLFFBQWdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsUUFBUSw0RUFBNEUsQ0FBQyxDQUFDO1FBQzNHLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQXFCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQixDQUFDOztBQTVCSCxnQ0FxQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IElDb25zdHJ1Y3QgfSBmcm9tICcuL2NvbnN0cnVjdCc7XG5cbi8qKlxuICogVHJhaXQgbWFya2VyIGZvciBjbGFzc2VzIHRoYXQgY2FuIGJlIGRlcGVuZGVkIHVwb25cbiAqXG4gKiBUaGUgcHJlc2VuY2Ugb2YgdGhpcyBpbnRlcmZhY2UgaW5kaWNhdGVzIHRoYXQgYW4gb2JqZWN0IGhhc1xuICogYW4gYElEZXBlbmRhYmxlYCBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBUaGlzIGludGVyZmFjZSBjYW4gYmUgdXNlZCB0byB0YWtlIGFuIChvcmRlcmluZykgZGVwZW5kZW5jeSBvbiBhIHNldCBvZlxuICogY29uc3RydWN0cy4gQW4gb3JkZXJpbmcgZGVwZW5kZW5jeSBpbXBsaWVzIHRoYXQgdGhlIHJlc291cmNlcyByZXByZXNlbnRlZCBieVxuICogdGhvc2UgY29uc3RydWN0cyBhcmUgZGVwbG95ZWQgYmVmb3JlIHRoZSByZXNvdXJjZXMgZGVwZW5kaW5nIE9OIHRoZW0gYXJlXG4gKiBkZXBsb3llZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRGVwZW5kYWJsZSB7XG4gIC8vIEVtcHR5LCB0aGlzIGludGVyZmFjZSBpcyBhIHRyYWl0IG1hcmtlclxufVxuXG4vKipcbiAqIEEgc2V0IG9mIGNvbnN0cnVjdHMgdG8gYmUgdXNlZCBhcyBhIGRlcGVuZGFibGVcbiAqXG4gKiBUaGlzIGNsYXNzIGNhbiBiZSB1c2VkIHdoZW4gYSBzZXQgb2YgY29uc3RydWN0cyB3aGljaCBhcmUgZGlzam9pbnQgaW4gdGhlXG4gKiBjb25zdHJ1Y3QgdHJlZSBuZWVkcyB0byBiZSBjb21iaW5lZCB0byBiZSB1c2VkIGFzIGEgc2luZ2xlIGRlcGVuZGFibGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBEZXBlbmRlbmN5R3JvdXAgaW1wbGVtZW50cyBJRGVwZW5kYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlcHMgPSBuZXcgQXJyYXk8SURlcGVuZGFibGU+KCk7XG5cbiAgY29uc3RydWN0b3IoLi4uZGVwczogSURlcGVuZGFibGVbXSkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgRGVwZW5kYWJsZS5pbXBsZW1lbnQodGhpcywge1xuICAgICAgZ2V0IGRlcGVuZGVuY3lSb290cygpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5PElDb25zdHJ1Y3Q+KCk7XG4gICAgICAgIGZvciAoY29uc3QgZCBvZiBzZWxmLl9kZXBzKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goLi4uRGVwZW5kYWJsZS5vZihkKS5kZXBlbmRlbmN5Um9vdHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGQoLi4uZGVwcyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgY29uc3RydWN0IHRvIHRoZSBkZXBlbmRlbmN5IHJvb3RzXG4gICAqL1xuICBwdWJsaWMgYWRkKC4uLnNjb3BlczogSURlcGVuZGFibGVbXSkge1xuICAgIHRoaXMuX2RlcHMucHVzaCguLi5zY29wZXMpO1xuICB9XG59XG5cbmNvbnN0IERFUEVOREFCTEVfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvY29yZS5EZXBlbmRhYmxlVHJhaXQnKTtcblxuLyoqXG4gKiBUcmFpdCBmb3IgSURlcGVuZGFibGVcbiAqXG4gKiBUcmFpdHMgYXJlIGludGVyZmFjZXMgdGhhdCBhcmUgcHJpdmF0ZWx5IGltcGxlbWVudGVkIGJ5IG9iamVjdHMuIEluc3RlYWQgb2ZcbiAqIHNob3dpbmcgdXAgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb2YgYSBjbGFzcywgdGhleSBuZWVkIHRvIGJlIHF1ZXJpZWRcbiAqIGV4cGxpY2l0bHkuIFRoaXMgaXMgdXNlZCB0byBpbXBsZW1lbnQgY2VydGFpbiBmcmFtZXdvcmsgZmVhdHVyZXMgdGhhdCBhc
|