@aws-amplify/graphql-api-construct
Version:
AppSync GraphQL Api Construct using Amplify GraphQL Transformer.
28 lines • 4.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.walkAndProcessNodes = exports.getStackForScope = void 0;
/**
* Given a scope, search up for the parent stack. This should be the nearest stack object.
* @param scope the scope to search up against.
* @returns the stack, if one can be found, else throws an error.
*/
const getStackForScope = (scope, getRootStack = false) => {
const stacksInHierarchy = scope.node.scopes.filter((parentScope) => 'templateOptions' in parentScope);
if (stacksInHierarchy.length === 0) {
throw new Error('No Stack Found in Construct Scope');
}
const stacks = getRootStack ? stacksInHierarchy : stacksInHierarchy.reverse();
return stacks[0];
};
exports.getStackForScope = getStackForScope;
/**
* Utility to iteratively walk the construct tree starting at a particular node, executing a node processor at each step.
* @param currentScope the scope to process.
* @param processNode the fn to invoke on walk.
*/
const walkAndProcessNodes = (currentScope, processNode) => {
processNode(currentScope);
currentScope.node.children.forEach((child) => (0, exports.walkAndProcessNodes)(child, processNode));
};
exports.walkAndProcessNodes = walkAndProcessNodes;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0LXRyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJuYWwvY29uc3RydWN0LXRyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0E7Ozs7R0FJRztBQUNJLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFnQixFQUFFLFlBQVksR0FBRyxLQUFLLEVBQVMsRUFBRTtJQUNoRixNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsaUJBQWlCLElBQUksV0FBVyxDQUFDLENBQUM7SUFDdEcsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM5RSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQVUsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFQVyxRQUFBLGdCQUFnQixvQkFPM0I7QUFFRjs7OztHQUlHO0FBQ0ksTUFBTSxtQkFBbUIsR0FBRyxDQUFDLFlBQXVCLEVBQUUsV0FBdUMsRUFBUSxFQUFFO0lBQzVHLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxQixZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUEsMkJBQW1CLEVBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDekYsQ0FBQyxDQUFDO0FBSFcsUUFBQSxtQkFBbUIsdUJBRzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBHaXZlbiBhIHNjb3BlLCBzZWFyY2ggdXAgZm9yIHRoZSBwYXJlbnQgc3RhY2suIFRoaXMgc2hvdWxkIGJlIHRoZSBuZWFyZXN0IHN0YWNrIG9iamVjdC5cbiAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgdG8gc2VhcmNoIHVwIGFnYWluc3QuXG4gKiBAcmV0dXJucyB0aGUgc3RhY2ssIGlmIG9uZSBjYW4gYmUgZm91bmQsIGVsc2UgdGhyb3dzIGFuIGVycm9yLlxuICovXG5leHBvcnQgY29uc3QgZ2V0U3RhY2tGb3JTY29wZSA9IChzY29wZTogQ29uc3RydWN0LCBnZXRSb290U3RhY2sgPSBmYWxzZSk6IFN0YWNrID0+IHtcbiAgY29uc3Qgc3RhY2tzSW5IaWVyYXJjaHkgPSBzY29wZS5ub2RlLnNjb3Blcy5maWx0ZXIoKHBhcmVudFNjb3BlKSA9PiAndGVtcGxhdGVPcHRpb25zJyBpbiBwYXJlbnRTY29wZSk7XG4gIGlmIChzdGFja3NJbkhpZXJhcmNoeS5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFN0YWNrIEZvdW5kIGluIENvbnN0cnVjdCBTY29wZScpO1xuICB9XG4gIGNvbnN0IHN0YWNrcyA9IGdldFJvb3RTdGFjayA/IHN0YWNrc0luSGllcmFyY2h5IDogc3RhY2tzSW5IaWVyYXJjaHkucmV2ZXJzZSgpO1xuICByZXR1cm4gc3RhY2tzWzBdIGFzIFN0YWNrO1xufTtcblxuLyoqXG4gKiBVdGlsaXR5IHRvIGl0ZXJhdGl2ZWx5IHdhbGsgdGhlIGNvbnN0cnVjdCB0cmVlIHN0YXJ0aW5nIGF0IGEgcGFydGljdWxhciBub2RlLCBleGVjdXRpbmcgYSBub2RlIHByb2Nlc3NvciBhdCBlYWNoIHN0ZXAuXG4gKiBAcGFyYW0gY3VycmVudFNjb3BlIHRoZSBzY29wZSB0byBwcm9jZXNzLlxuICogQHBhcmFtIHByb2Nlc3NOb2RlIHRoZSBmbiB0byBpbnZva2Ugb24gd2Fsay5cbiAqL1xuZXhwb3J0IGNvbnN0IHdhbGtBbmRQcm9jZXNzTm9kZXMgPSAoY3VycmVudFNjb3BlOiBDb25zdHJ1Y3QsIHByb2Nlc3NOb2RlOiAoc2NvcGU6IENvbnN0cnVjdCkgPT4gdm9pZCk6IHZvaWQgPT4ge1xuICBwcm9jZXNzTm9kZShjdXJyZW50U2NvcGUpO1xuICBjdXJyZW50U2NvcGUubm9kZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4gd2Fsa0FuZFByb2Nlc3NOb2RlcyhjaGlsZCwgcHJvY2Vzc05vZGUpKTtcbn07XG4iXX0=