/// <summary> /// do a breadth-first search to find all nodes reachable from item. /// edgeFunction determines the nodes directly reachable from any /// given item. /// </summary> /// <param name="item"></param> /// <param name="closureFunction"></param> /// <returns></returns> private static ICollection <T> GetClosure(T item, EdgeFunction edgeFunction) { var closure = new QueueHashSet <T>(); var queue = new QueueHashSet <T>(); foreach (var i in edgeFunction(item)) { queue.Enqueue(i); } while (queue.Count > 0) { // get first element in queue var i = queue.Dequeue(); if (!closure.Contains(i)) { closure.Enqueue(i); foreach (var j in edgeFunction(i)) { if (!queue.Contains(j) && !closure.Contains(j)) { queue.Enqueue(j); } } } } return(closure.Queue); }
internal AuthlambdaFunctionsStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props) { /* * loginHandler = new EdgeFunction(this, "loginHandler", new EdgeFunctionProps() { * Code = Code.FromAsset("src/lambdaEdge"), * Handler = "login.handler", * Runtime = Runtime.NODEJS_12_X, * Description = "Login handler Lambda@Edge" * }); * * checkAuthHandler = new EdgeFunction(this, "checkAuthHandler", new EdgeFunctionProps() { * Code = Code.FromAsset("src/lambdaEdge"), * Handler = "checkAuth.handler", * Runtime = Runtime.NODEJS_12_X, * Description = "Login handler Lambda@Edge" * }); */ parseAuthHandler = new EdgeFunction(this, "parseAuthHandler", new EdgeFunctionProps() { Code = Code.FromAsset("src/lambda-edge/parse-auth/dist"), Handler = "bundle.handler", Runtime = Runtime.NODEJS_12_X, Description = "parseAuthHandler Lambda@Edge", }); checkAuthHandler = new EdgeFunction(this, "checkAuthHandler", new EdgeFunctionProps() { Code = Code.FromAsset("src/lambda-edge/check-auth/dist"), Handler = "bundle.handler", Runtime = Runtime.NODEJS_12_X, Description = "checkAuthHandler Lambda@Edge", }); httpHeadersHandler = new EdgeFunction(this, "httpHeadersHandler", new EdgeFunctionProps() { Code = Code.FromAsset("src/lambda-edge/http-headers/dist"), Handler = "bundle.handler", Runtime = Runtime.NODEJS_12_X, Description = "httpHeadersHandler Lambda@Edge", }); refreshAuthHandler = new EdgeFunction(this, "refreshAuthHandler", new EdgeFunctionProps() { Code = Code.FromAsset("src/lambda-edge/refresh-auth/dist"), Handler = "bundle.handler", Runtime = Runtime.NODEJS_12_X, Description = "refreshAuthHandler Lambda@Edge", }); signOutHandler = new EdgeFunction(this, "signOutHandler", new EdgeFunctionProps() { Code = Code.FromAsset("src/lambda-edge/sign-out/dist"), Handler = "bundle.handler", Runtime = Runtime.NODEJS_12_X, Description = "signOutHandler Lambda@Edge", }); }