@aws-mdaa/dataops-job-l3-construct 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +5265 -0
- package/README.md +11 -0
- package/docs/dataops-job.drawio +45 -0
- package/docs/dataops-job.png +0 -0
- package/lib/dataops-job-l3-construct.d.ts +344 -0
- package/lib/dataops-job-l3-construct.js +295 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.js +24 -0
- package/node_modules/@aws-mdaa/s3-bucketpolicy-helper/README.md +185 -0
- package/node_modules/@aws-mdaa/s3-bucketpolicy-helper/lib/index.d.ts +57 -0
- package/node_modules/@aws-mdaa/s3-bucketpolicy-helper/lib/index.js +200 -0
- package/node_modules/@aws-mdaa/s3-bucketpolicy-helper/package.json +46 -0
- package/node_modules/@aws-mdaa/s3-inventory-helper/README.md +3 -0
- package/node_modules/@aws-mdaa/s3-inventory-helper/lib/index.d.ts +66 -0
- package/node_modules/@aws-mdaa/s3-inventory-helper/lib/index.js +224 -0
- package/node_modules/@aws-mdaa/s3-inventory-helper/package.json +46 -0
- package/node_modules/lodash/LICENSE +47 -0
- package/node_modules/lodash/README.md +39 -0
- package/node_modules/lodash/_DataView.js +7 -0
- package/node_modules/lodash/_Hash.js +32 -0
- package/node_modules/lodash/_LazyWrapper.js +28 -0
- package/node_modules/lodash/_ListCache.js +32 -0
- package/node_modules/lodash/_LodashWrapper.js +22 -0
- package/node_modules/lodash/_Map.js +7 -0
- package/node_modules/lodash/_MapCache.js +32 -0
- package/node_modules/lodash/_Promise.js +7 -0
- package/node_modules/lodash/_Set.js +7 -0
- package/node_modules/lodash/_SetCache.js +27 -0
- package/node_modules/lodash/_Stack.js +27 -0
- package/node_modules/lodash/_Symbol.js +6 -0
- package/node_modules/lodash/_Uint8Array.js +6 -0
- package/node_modules/lodash/_WeakMap.js +7 -0
- package/node_modules/lodash/_apply.js +21 -0
- package/node_modules/lodash/_arrayAggregator.js +22 -0
- package/node_modules/lodash/_arrayEach.js +22 -0
- package/node_modules/lodash/_arrayEachRight.js +21 -0
- package/node_modules/lodash/_arrayEvery.js +23 -0
- package/node_modules/lodash/_arrayFilter.js +25 -0
- package/node_modules/lodash/_arrayIncludes.js +17 -0
- package/node_modules/lodash/_arrayIncludesWith.js +22 -0
- package/node_modules/lodash/_arrayLikeKeys.js +49 -0
- package/node_modules/lodash/_arrayMap.js +21 -0
- package/node_modules/lodash/_arrayPush.js +20 -0
- package/node_modules/lodash/_arrayReduce.js +26 -0
- package/node_modules/lodash/_arrayReduceRight.js +24 -0
- package/node_modules/lodash/_arraySample.js +15 -0
- package/node_modules/lodash/_arraySampleSize.js +17 -0
- package/node_modules/lodash/_arrayShuffle.js +15 -0
- package/node_modules/lodash/_arraySome.js +23 -0
- package/node_modules/lodash/_asciiSize.js +12 -0
- package/node_modules/lodash/_asciiToArray.js +12 -0
- package/node_modules/lodash/_asciiWords.js +15 -0
- package/node_modules/lodash/_assignMergeValue.js +20 -0
- package/node_modules/lodash/_assignValue.js +28 -0
- package/node_modules/lodash/_assocIndexOf.js +21 -0
- package/node_modules/lodash/_baseAggregator.js +21 -0
- package/node_modules/lodash/_baseAssign.js +17 -0
- package/node_modules/lodash/_baseAssignIn.js +17 -0
- package/node_modules/lodash/_baseAssignValue.js +25 -0
- package/node_modules/lodash/_baseAt.js +23 -0
- package/node_modules/lodash/_baseClamp.js +22 -0
- package/node_modules/lodash/_baseClone.js +166 -0
- package/node_modules/lodash/_baseConforms.js +18 -0
- package/node_modules/lodash/_baseConformsTo.js +27 -0
- package/node_modules/lodash/_baseCreate.js +30 -0
- package/node_modules/lodash/_baseDelay.js +21 -0
- package/node_modules/lodash/_baseDifference.js +67 -0
- package/node_modules/lodash/_baseEach.js +14 -0
- package/node_modules/lodash/_baseEachRight.js +14 -0
- package/node_modules/lodash/_baseEvery.js +21 -0
- package/node_modules/lodash/_baseExtremum.js +32 -0
- package/node_modules/lodash/_baseFill.js +32 -0
- package/node_modules/lodash/_baseFilter.js +21 -0
- package/node_modules/lodash/_baseFindIndex.js +24 -0
- package/node_modules/lodash/_baseFindKey.js +23 -0
- package/node_modules/lodash/_baseFlatten.js +38 -0
- package/node_modules/lodash/_baseFor.js +16 -0
- package/node_modules/lodash/_baseForOwn.js +16 -0
- package/node_modules/lodash/_baseForOwnRight.js +16 -0
- package/node_modules/lodash/_baseForRight.js +15 -0
- package/node_modules/lodash/_baseFunctions.js +19 -0
- package/node_modules/lodash/_baseGet.js +24 -0
- package/node_modules/lodash/_baseGetAllKeys.js +20 -0
- package/node_modules/lodash/_baseGetTag.js +28 -0
- package/node_modules/lodash/_baseGt.js +14 -0
- package/node_modules/lodash/_baseHas.js +19 -0
- package/node_modules/lodash/_baseHasIn.js +13 -0
- package/node_modules/lodash/_baseInRange.js +18 -0
- package/node_modules/lodash/_baseIndexOf.js +20 -0
- package/node_modules/lodash/_baseIndexOfWith.js +23 -0
- package/node_modules/lodash/_baseIntersection.js +74 -0
- package/node_modules/lodash/_baseInverter.js +21 -0
- package/node_modules/lodash/_baseInvoke.js +24 -0
- package/node_modules/lodash/_baseIsArguments.js +18 -0
- package/node_modules/lodash/_baseIsArrayBuffer.js +17 -0
- package/node_modules/lodash/_baseIsDate.js +18 -0
- package/node_modules/lodash/_baseIsEqual.js +28 -0
- package/node_modules/lodash/_baseIsEqualDeep.js +83 -0
- package/node_modules/lodash/_baseIsMap.js +18 -0
- package/node_modules/lodash/_baseIsMatch.js +62 -0
- package/node_modules/lodash/_baseIsNaN.js +12 -0
- package/node_modules/lodash/_baseIsNative.js +47 -0
- package/node_modules/lodash/_baseIsRegExp.js +18 -0
- package/node_modules/lodash/_baseIsSet.js +18 -0
- package/node_modules/lodash/_baseIsTypedArray.js +60 -0
- package/node_modules/lodash/_baseIteratee.js +31 -0
- package/node_modules/lodash/_baseKeys.js +30 -0
- package/node_modules/lodash/_baseKeysIn.js +33 -0
- package/node_modules/lodash/_baseLodash.js +10 -0
- package/node_modules/lodash/_baseLt.js +14 -0
- package/node_modules/lodash/_baseMap.js +22 -0
- package/node_modules/lodash/_baseMatches.js +22 -0
- package/node_modules/lodash/_baseMatchesProperty.js +33 -0
- package/node_modules/lodash/_baseMean.js +20 -0
- package/node_modules/lodash/_baseMerge.js +42 -0
- package/node_modules/lodash/_baseMergeDeep.js +94 -0
- package/node_modules/lodash/_baseNth.js +20 -0
- package/node_modules/lodash/_baseOrderBy.js +49 -0
- package/node_modules/lodash/_basePick.js +19 -0
- package/node_modules/lodash/_basePickBy.js +30 -0
- package/node_modules/lodash/_baseProperty.js +14 -0
- package/node_modules/lodash/_basePropertyDeep.js +16 -0
- package/node_modules/lodash/_basePropertyOf.js +14 -0
- package/node_modules/lodash/_basePullAll.js +51 -0
- package/node_modules/lodash/_basePullAt.js +37 -0
- package/node_modules/lodash/_baseRandom.js +18 -0
- package/node_modules/lodash/_baseRange.js +28 -0
- package/node_modules/lodash/_baseReduce.js +23 -0
- package/node_modules/lodash/_baseRepeat.js +35 -0
- package/node_modules/lodash/_baseRest.js +17 -0
- package/node_modules/lodash/_baseSample.js +15 -0
- package/node_modules/lodash/_baseSampleSize.js +18 -0
- package/node_modules/lodash/_baseSet.js +51 -0
- package/node_modules/lodash/_baseSetData.js +17 -0
- package/node_modules/lodash/_baseSetToString.js +22 -0
- package/node_modules/lodash/_baseShuffle.js +15 -0
- package/node_modules/lodash/_baseSlice.js +31 -0
- package/node_modules/lodash/_baseSome.js +22 -0
- package/node_modules/lodash/_baseSortBy.js +21 -0
- package/node_modules/lodash/_baseSortedIndex.js +42 -0
- package/node_modules/lodash/_baseSortedIndexBy.js +67 -0
- package/node_modules/lodash/_baseSortedUniq.js +30 -0
- package/node_modules/lodash/_baseSum.js +24 -0
- package/node_modules/lodash/_baseTimes.js +20 -0
- package/node_modules/lodash/_baseToNumber.js +24 -0
- package/node_modules/lodash/_baseToPairs.js +18 -0
- package/node_modules/lodash/_baseToString.js +37 -0
- package/node_modules/lodash/_baseTrim.js +19 -0
- package/node_modules/lodash/_baseUnary.js +14 -0
- package/node_modules/lodash/_baseUniq.js +72 -0
- package/node_modules/lodash/_baseUnset.js +20 -0
- package/node_modules/lodash/_baseUpdate.js +18 -0
- package/node_modules/lodash/_baseValues.js +19 -0
- package/node_modules/lodash/_baseWhile.js +26 -0
- package/node_modules/lodash/_baseWrapperValue.js +25 -0
- package/node_modules/lodash/_baseXor.js +36 -0
- package/node_modules/lodash/_baseZipObject.js +23 -0
- package/node_modules/lodash/_cacheHas.js +13 -0
- package/node_modules/lodash/_castArrayLikeObject.js +14 -0
- package/node_modules/lodash/_castFunction.js +14 -0
- package/node_modules/lodash/_castPath.js +21 -0
- package/node_modules/lodash/_castRest.js +14 -0
- package/node_modules/lodash/_castSlice.js +18 -0
- package/node_modules/lodash/_charsEndIndex.js +19 -0
- package/node_modules/lodash/_charsStartIndex.js +20 -0
- package/node_modules/lodash/_cloneArrayBuffer.js +16 -0
- package/node_modules/lodash/_cloneBuffer.js +35 -0
- package/node_modules/lodash/_cloneDataView.js +16 -0
- package/node_modules/lodash/_cloneRegExp.js +17 -0
- package/node_modules/lodash/_cloneSymbol.js +18 -0
- package/node_modules/lodash/_cloneTypedArray.js +16 -0
- package/node_modules/lodash/_compareAscending.js +41 -0
- package/node_modules/lodash/_compareMultiple.js +44 -0
- package/node_modules/lodash/_composeArgs.js +39 -0
- package/node_modules/lodash/_composeArgsRight.js +41 -0
- package/node_modules/lodash/_copyArray.js +20 -0
- package/node_modules/lodash/_copyObject.js +40 -0
- package/node_modules/lodash/_copySymbols.js +16 -0
- package/node_modules/lodash/_copySymbolsIn.js +16 -0
- package/node_modules/lodash/_coreJsData.js +6 -0
- package/node_modules/lodash/_countHolders.js +21 -0
- package/node_modules/lodash/_createAggregator.js +23 -0
- package/node_modules/lodash/_createAssigner.js +37 -0
- package/node_modules/lodash/_createBaseEach.js +32 -0
- package/node_modules/lodash/_createBaseFor.js +25 -0
- package/node_modules/lodash/_createBind.js +28 -0
- package/node_modules/lodash/_createCaseFirst.js +33 -0
- package/node_modules/lodash/_createCompounder.js +24 -0
- package/node_modules/lodash/_createCtor.js +37 -0
- package/node_modules/lodash/_createCurry.js +46 -0
- package/node_modules/lodash/_createFind.js +25 -0
- package/node_modules/lodash/_createFlow.js +78 -0
- package/node_modules/lodash/_createHybrid.js +92 -0
- package/node_modules/lodash/_createInverter.js +17 -0
- package/node_modules/lodash/_createMathOperation.js +38 -0
- package/node_modules/lodash/_createOver.js +27 -0
- package/node_modules/lodash/_createPadding.js +33 -0
- package/node_modules/lodash/_createPartial.js +43 -0
- package/node_modules/lodash/_createRange.js +30 -0
- package/node_modules/lodash/_createRecurry.js +56 -0
- package/node_modules/lodash/_createRelationalOperation.js +20 -0
- package/node_modules/lodash/_createRound.js +35 -0
- package/node_modules/lodash/_createSet.js +19 -0
- package/node_modules/lodash/_createToPairs.js +30 -0
- package/node_modules/lodash/_createWrap.js +106 -0
- package/node_modules/lodash/_customDefaultsAssignIn.js +29 -0
- package/node_modules/lodash/_customDefaultsMerge.js +28 -0
- package/node_modules/lodash/_customOmitClone.js +16 -0
- package/node_modules/lodash/_deburrLetter.js +71 -0
- package/node_modules/lodash/_defineProperty.js +11 -0
- package/node_modules/lodash/_equalArrays.js +84 -0
- package/node_modules/lodash/_equalByTag.js +112 -0
- package/node_modules/lodash/_equalObjects.js +90 -0
- package/node_modules/lodash/_escapeHtmlChar.js +21 -0
- package/node_modules/lodash/_escapeStringChar.js +22 -0
- package/node_modules/lodash/_flatRest.js +16 -0
- package/node_modules/lodash/_freeGlobal.js +4 -0
- package/node_modules/lodash/_getAllKeys.js +16 -0
- package/node_modules/lodash/_getAllKeysIn.js +17 -0
- package/node_modules/lodash/_getData.js +15 -0
- package/node_modules/lodash/_getFuncName.js +31 -0
- package/node_modules/lodash/_getHolder.js +13 -0
- package/node_modules/lodash/_getMapData.js +18 -0
- package/node_modules/lodash/_getMatchData.js +24 -0
- package/node_modules/lodash/_getNative.js +17 -0
- package/node_modules/lodash/_getPrototype.js +6 -0
- package/node_modules/lodash/_getRawTag.js +46 -0
- package/node_modules/lodash/_getSymbols.js +30 -0
- package/node_modules/lodash/_getSymbolsIn.js +25 -0
- package/node_modules/lodash/_getTag.js +58 -0
- package/node_modules/lodash/_getValue.js +13 -0
- package/node_modules/lodash/_getView.js +33 -0
- package/node_modules/lodash/_getWrapDetails.js +17 -0
- package/node_modules/lodash/_hasPath.js +39 -0
- package/node_modules/lodash/_hasUnicode.js +26 -0
- package/node_modules/lodash/_hasUnicodeWord.js +15 -0
- package/node_modules/lodash/_hashClear.js +15 -0
- package/node_modules/lodash/_hashDelete.js +17 -0
- package/node_modules/lodash/_hashGet.js +30 -0
- package/node_modules/lodash/_hashHas.js +23 -0
- package/node_modules/lodash/_hashSet.js +23 -0
- package/node_modules/lodash/_initCloneArray.js +26 -0
- package/node_modules/lodash/_initCloneByTag.js +77 -0
- package/node_modules/lodash/_initCloneObject.js +18 -0
- package/node_modules/lodash/_insertWrapDetails.js +23 -0
- package/node_modules/lodash/_isFlattenable.js +20 -0
- package/node_modules/lodash/_isIndex.js +25 -0
- package/node_modules/lodash/_isIterateeCall.js +30 -0
- package/node_modules/lodash/_isKey.js +29 -0
- package/node_modules/lodash/_isKeyable.js +15 -0
- package/node_modules/lodash/_isLaziable.js +28 -0
- package/node_modules/lodash/_isMaskable.js +14 -0
- package/node_modules/lodash/_isMasked.js +20 -0
- package/node_modules/lodash/_isPrototype.js +18 -0
- package/node_modules/lodash/_isStrictComparable.js +15 -0
- package/node_modules/lodash/_iteratorToArray.js +18 -0
- package/node_modules/lodash/_lazyClone.js +23 -0
- package/node_modules/lodash/_lazyReverse.js +23 -0
- package/node_modules/lodash/_lazyValue.js +69 -0
- package/node_modules/lodash/_listCacheClear.js +13 -0
- package/node_modules/lodash/_listCacheDelete.js +35 -0
- package/node_modules/lodash/_listCacheGet.js +19 -0
- package/node_modules/lodash/_listCacheHas.js +16 -0
- package/node_modules/lodash/_listCacheSet.js +26 -0
- package/node_modules/lodash/_mapCacheClear.js +21 -0
- package/node_modules/lodash/_mapCacheDelete.js +18 -0
- package/node_modules/lodash/_mapCacheGet.js +16 -0
- package/node_modules/lodash/_mapCacheHas.js +16 -0
- package/node_modules/lodash/_mapCacheSet.js +22 -0
- package/node_modules/lodash/_mapToArray.js +18 -0
- package/node_modules/lodash/_matchesStrictComparable.js +20 -0
- package/node_modules/lodash/_memoizeCapped.js +26 -0
- package/node_modules/lodash/_mergeData.js +90 -0
- package/node_modules/lodash/_metaMap.js +6 -0
- package/node_modules/lodash/_nativeCreate.js +6 -0
- package/node_modules/lodash/_nativeKeys.js +6 -0
- package/node_modules/lodash/_nativeKeysIn.js +20 -0
- package/node_modules/lodash/_nodeUtil.js +30 -0
- package/node_modules/lodash/_objectToString.js +22 -0
- package/node_modules/lodash/_overArg.js +15 -0
- package/node_modules/lodash/_overRest.js +36 -0
- package/node_modules/lodash/_parent.js +16 -0
- package/node_modules/lodash/_reEscape.js +4 -0
- package/node_modules/lodash/_reEvaluate.js +4 -0
- package/node_modules/lodash/_reInterpolate.js +4 -0
- package/node_modules/lodash/_realNames.js +4 -0
- package/node_modules/lodash/_reorder.js +29 -0
- package/node_modules/lodash/_replaceHolders.js +29 -0
- package/node_modules/lodash/_root.js +9 -0
- package/node_modules/lodash/_safeGet.js +21 -0
- package/node_modules/lodash/_setCacheAdd.js +19 -0
- package/node_modules/lodash/_setCacheHas.js +14 -0
- package/node_modules/lodash/_setData.js +20 -0
- package/node_modules/lodash/_setToArray.js +18 -0
- package/node_modules/lodash/_setToPairs.js +18 -0
- package/node_modules/lodash/_setToString.js +14 -0
- package/node_modules/lodash/_setWrapToString.js +21 -0
- package/node_modules/lodash/_shortOut.js +37 -0
- package/node_modules/lodash/_shuffleSelf.js +28 -0
- package/node_modules/lodash/_stackClear.js +15 -0
- package/node_modules/lodash/_stackDelete.js +18 -0
- package/node_modules/lodash/_stackGet.js +14 -0
- package/node_modules/lodash/_stackHas.js +14 -0
- package/node_modules/lodash/_stackSet.js +34 -0
- package/node_modules/lodash/_strictIndexOf.js +23 -0
- package/node_modules/lodash/_strictLastIndexOf.js +21 -0
- package/node_modules/lodash/_stringSize.js +18 -0
- package/node_modules/lodash/_stringToArray.js +18 -0
- package/node_modules/lodash/_stringToPath.js +27 -0
- package/node_modules/lodash/_toKey.js +21 -0
- package/node_modules/lodash/_toSource.js +26 -0
- package/node_modules/lodash/_trimmedEndIndex.js +19 -0
- package/node_modules/lodash/_unescapeHtmlChar.js +21 -0
- package/node_modules/lodash/_unicodeSize.js +44 -0
- package/node_modules/lodash/_unicodeToArray.js +40 -0
- package/node_modules/lodash/_unicodeWords.js +69 -0
- package/node_modules/lodash/_updateWrapDetails.js +46 -0
- package/node_modules/lodash/_wrapperClone.js +23 -0
- package/node_modules/lodash/add.js +22 -0
- package/node_modules/lodash/after.js +42 -0
- package/node_modules/lodash/array.js +67 -0
- package/node_modules/lodash/ary.js +29 -0
- package/node_modules/lodash/assign.js +58 -0
- package/node_modules/lodash/assignIn.js +40 -0
- package/node_modules/lodash/assignInWith.js +38 -0
- package/node_modules/lodash/assignWith.js +37 -0
- package/node_modules/lodash/at.js +23 -0
- package/node_modules/lodash/attempt.js +35 -0
- package/node_modules/lodash/before.js +40 -0
- package/node_modules/lodash/bind.js +57 -0
- package/node_modules/lodash/bindAll.js +41 -0
- package/node_modules/lodash/bindKey.js +68 -0
- package/node_modules/lodash/camelCase.js +29 -0
- package/node_modules/lodash/capitalize.js +23 -0
- package/node_modules/lodash/castArray.js +44 -0
- package/node_modules/lodash/ceil.js +26 -0
- package/node_modules/lodash/chain.js +38 -0
- package/node_modules/lodash/chunk.js +50 -0
- package/node_modules/lodash/clamp.js +39 -0
- package/node_modules/lodash/clone.js +36 -0
- package/node_modules/lodash/cloneDeep.js +29 -0
- package/node_modules/lodash/cloneDeepWith.js +40 -0
- package/node_modules/lodash/cloneWith.js +42 -0
- package/node_modules/lodash/collection.js +30 -0
- package/node_modules/lodash/commit.js +33 -0
- package/node_modules/lodash/compact.js +31 -0
- package/node_modules/lodash/concat.js +43 -0
- package/node_modules/lodash/cond.js +60 -0
- package/node_modules/lodash/conforms.js +35 -0
- package/node_modules/lodash/conformsTo.js +32 -0
- package/node_modules/lodash/constant.js +26 -0
- package/node_modules/lodash/core.js +3877 -0
- package/node_modules/lodash/core.min.js +29 -0
- package/node_modules/lodash/countBy.js +40 -0
- package/node_modules/lodash/create.js +43 -0
- package/node_modules/lodash/curry.js +57 -0
- package/node_modules/lodash/curryRight.js +54 -0
- package/node_modules/lodash/date.js +3 -0
- package/node_modules/lodash/debounce.js +191 -0
- package/node_modules/lodash/deburr.js +45 -0
- package/node_modules/lodash/defaultTo.js +25 -0
- package/node_modules/lodash/defaults.js +64 -0
- package/node_modules/lodash/defaultsDeep.js +30 -0
- package/node_modules/lodash/defer.js +26 -0
- package/node_modules/lodash/delay.js +28 -0
- package/node_modules/lodash/difference.js +33 -0
- package/node_modules/lodash/differenceBy.js +44 -0
- package/node_modules/lodash/differenceWith.js +40 -0
- package/node_modules/lodash/divide.js +22 -0
- package/node_modules/lodash/drop.js +38 -0
- package/node_modules/lodash/dropRight.js +39 -0
- package/node_modules/lodash/dropRightWhile.js +45 -0
- package/node_modules/lodash/dropWhile.js +45 -0
- package/node_modules/lodash/each.js +1 -0
- package/node_modules/lodash/eachRight.js +1 -0
- package/node_modules/lodash/endsWith.js +43 -0
- package/node_modules/lodash/entries.js +1 -0
- package/node_modules/lodash/entriesIn.js +1 -0
- package/node_modules/lodash/eq.js +37 -0
- package/node_modules/lodash/escape.js +43 -0
- package/node_modules/lodash/escapeRegExp.js +32 -0
- package/node_modules/lodash/every.js +56 -0
- package/node_modules/lodash/extend.js +1 -0
- package/node_modules/lodash/extendWith.js +1 -0
- package/node_modules/lodash/fill.js +45 -0
- package/node_modules/lodash/filter.js +52 -0
- package/node_modules/lodash/find.js +42 -0
- package/node_modules/lodash/findIndex.js +55 -0
- package/node_modules/lodash/findKey.js +44 -0
- package/node_modules/lodash/findLast.js +25 -0
- package/node_modules/lodash/findLastIndex.js +59 -0
- package/node_modules/lodash/findLastKey.js +44 -0
- package/node_modules/lodash/first.js +1 -0
- package/node_modules/lodash/flake.lock +40 -0
- package/node_modules/lodash/flake.nix +20 -0
- package/node_modules/lodash/flatMap.js +29 -0
- package/node_modules/lodash/flatMapDeep.js +31 -0
- package/node_modules/lodash/flatMapDepth.js +31 -0
- package/node_modules/lodash/flatten.js +22 -0
- package/node_modules/lodash/flattenDeep.js +25 -0
- package/node_modules/lodash/flattenDepth.js +33 -0
- package/node_modules/lodash/flip.js +28 -0
- package/node_modules/lodash/floor.js +26 -0
- package/node_modules/lodash/flow.js +27 -0
- package/node_modules/lodash/flowRight.js +26 -0
- package/node_modules/lodash/forEach.js +41 -0
- package/node_modules/lodash/forEachRight.js +31 -0
- package/node_modules/lodash/forIn.js +39 -0
- package/node_modules/lodash/forInRight.js +37 -0
- package/node_modules/lodash/forOwn.js +36 -0
- package/node_modules/lodash/forOwnRight.js +34 -0
- package/node_modules/lodash/fp/F.js +1 -0
- package/node_modules/lodash/fp/T.js +1 -0
- package/node_modules/lodash/fp/__.js +1 -0
- package/node_modules/lodash/fp/_baseConvert.js +569 -0
- package/node_modules/lodash/fp/_convertBrowser.js +18 -0
- package/node_modules/lodash/fp/_falseOptions.js +7 -0
- package/node_modules/lodash/fp/_mapping.js +358 -0
- package/node_modules/lodash/fp/_util.js +16 -0
- package/node_modules/lodash/fp/add.js +5 -0
- package/node_modules/lodash/fp/after.js +5 -0
- package/node_modules/lodash/fp/all.js +1 -0
- package/node_modules/lodash/fp/allPass.js +1 -0
- package/node_modules/lodash/fp/always.js +1 -0
- package/node_modules/lodash/fp/any.js +1 -0
- package/node_modules/lodash/fp/anyPass.js +1 -0
- package/node_modules/lodash/fp/apply.js +1 -0
- package/node_modules/lodash/fp/array.js +2 -0
- package/node_modules/lodash/fp/ary.js +5 -0
- package/node_modules/lodash/fp/assign.js +5 -0
- package/node_modules/lodash/fp/assignAll.js +5 -0
- package/node_modules/lodash/fp/assignAllWith.js +5 -0
- package/node_modules/lodash/fp/assignIn.js +5 -0
- package/node_modules/lodash/fp/assignInAll.js +5 -0
- package/node_modules/lodash/fp/assignInAllWith.js +5 -0
- package/node_modules/lodash/fp/assignInWith.js +5 -0
- package/node_modules/lodash/fp/assignWith.js +5 -0
- package/node_modules/lodash/fp/assoc.js +1 -0
- package/node_modules/lodash/fp/assocPath.js +1 -0
- package/node_modules/lodash/fp/at.js +5 -0
- package/node_modules/lodash/fp/attempt.js +5 -0
- package/node_modules/lodash/fp/before.js +5 -0
- package/node_modules/lodash/fp/bind.js +5 -0
- package/node_modules/lodash/fp/bindAll.js +5 -0
- package/node_modules/lodash/fp/bindKey.js +5 -0
- package/node_modules/lodash/fp/camelCase.js +5 -0
- package/node_modules/lodash/fp/capitalize.js +5 -0
- package/node_modules/lodash/fp/castArray.js +5 -0
- package/node_modules/lodash/fp/ceil.js +5 -0
- package/node_modules/lodash/fp/chain.js +5 -0
- package/node_modules/lodash/fp/chunk.js +5 -0
- package/node_modules/lodash/fp/clamp.js +5 -0
- package/node_modules/lodash/fp/clone.js +5 -0
- package/node_modules/lodash/fp/cloneDeep.js +5 -0
- package/node_modules/lodash/fp/cloneDeepWith.js +5 -0
- package/node_modules/lodash/fp/cloneWith.js +5 -0
- package/node_modules/lodash/fp/collection.js +2 -0
- package/node_modules/lodash/fp/commit.js +5 -0
- package/node_modules/lodash/fp/compact.js +5 -0
- package/node_modules/lodash/fp/complement.js +1 -0
- package/node_modules/lodash/fp/compose.js +1 -0
- package/node_modules/lodash/fp/concat.js +5 -0
- package/node_modules/lodash/fp/cond.js +5 -0
- package/node_modules/lodash/fp/conforms.js +1 -0
- package/node_modules/lodash/fp/conformsTo.js +5 -0
- package/node_modules/lodash/fp/constant.js +5 -0
- package/node_modules/lodash/fp/contains.js +1 -0
- package/node_modules/lodash/fp/convert.js +18 -0
- package/node_modules/lodash/fp/countBy.js +5 -0
- package/node_modules/lodash/fp/create.js +5 -0
- package/node_modules/lodash/fp/curry.js +5 -0
- package/node_modules/lodash/fp/curryN.js +5 -0
- package/node_modules/lodash/fp/curryRight.js +5 -0
- package/node_modules/lodash/fp/curryRightN.js +5 -0
- package/node_modules/lodash/fp/date.js +2 -0
- package/node_modules/lodash/fp/debounce.js +5 -0
- package/node_modules/lodash/fp/deburr.js +5 -0
- package/node_modules/lodash/fp/defaultTo.js +5 -0
- package/node_modules/lodash/fp/defaults.js +5 -0
- package/node_modules/lodash/fp/defaultsAll.js +5 -0
- package/node_modules/lodash/fp/defaultsDeep.js +5 -0
- package/node_modules/lodash/fp/defaultsDeepAll.js +5 -0
- package/node_modules/lodash/fp/defer.js +5 -0
- package/node_modules/lodash/fp/delay.js +5 -0
- package/node_modules/lodash/fp/difference.js +5 -0
- package/node_modules/lodash/fp/differenceBy.js +5 -0
- package/node_modules/lodash/fp/differenceWith.js +5 -0
- package/node_modules/lodash/fp/dissoc.js +1 -0
- package/node_modules/lodash/fp/dissocPath.js +1 -0
- package/node_modules/lodash/fp/divide.js +5 -0
- package/node_modules/lodash/fp/drop.js +5 -0
- package/node_modules/lodash/fp/dropLast.js +1 -0
- package/node_modules/lodash/fp/dropLastWhile.js +1 -0
- package/node_modules/lodash/fp/dropRight.js +5 -0
- package/node_modules/lodash/fp/dropRightWhile.js +5 -0
- package/node_modules/lodash/fp/dropWhile.js +5 -0
- package/node_modules/lodash/fp/each.js +1 -0
- package/node_modules/lodash/fp/eachRight.js +1 -0
- package/node_modules/lodash/fp/endsWith.js +5 -0
- package/node_modules/lodash/fp/entries.js +1 -0
- package/node_modules/lodash/fp/entriesIn.js +1 -0
- package/node_modules/lodash/fp/eq.js +5 -0
- package/node_modules/lodash/fp/equals.js +1 -0
- package/node_modules/lodash/fp/escape.js +5 -0
- package/node_modules/lodash/fp/escapeRegExp.js +5 -0
- package/node_modules/lodash/fp/every.js +5 -0
- package/node_modules/lodash/fp/extend.js +1 -0
- package/node_modules/lodash/fp/extendAll.js +1 -0
- package/node_modules/lodash/fp/extendAllWith.js +1 -0
- package/node_modules/lodash/fp/extendWith.js +1 -0
- package/node_modules/lodash/fp/fill.js +5 -0
- package/node_modules/lodash/fp/filter.js +5 -0
- package/node_modules/lodash/fp/find.js +5 -0
- package/node_modules/lodash/fp/findFrom.js +5 -0
- package/node_modules/lodash/fp/findIndex.js +5 -0
- package/node_modules/lodash/fp/findIndexFrom.js +5 -0
- package/node_modules/lodash/fp/findKey.js +5 -0
- package/node_modules/lodash/fp/findLast.js +5 -0
- package/node_modules/lodash/fp/findLastFrom.js +5 -0
- package/node_modules/lodash/fp/findLastIndex.js +5 -0
- package/node_modules/lodash/fp/findLastIndexFrom.js +5 -0
- package/node_modules/lodash/fp/findLastKey.js +5 -0
- package/node_modules/lodash/fp/first.js +1 -0
- package/node_modules/lodash/fp/flatMap.js +5 -0
- package/node_modules/lodash/fp/flatMapDeep.js +5 -0
- package/node_modules/lodash/fp/flatMapDepth.js +5 -0
- package/node_modules/lodash/fp/flatten.js +5 -0
- package/node_modules/lodash/fp/flattenDeep.js +5 -0
- package/node_modules/lodash/fp/flattenDepth.js +5 -0
- package/node_modules/lodash/fp/flip.js +5 -0
- package/node_modules/lodash/fp/floor.js +5 -0
- package/node_modules/lodash/fp/flow.js +5 -0
- package/node_modules/lodash/fp/flowRight.js +5 -0
- package/node_modules/lodash/fp/forEach.js +5 -0
- package/node_modules/lodash/fp/forEachRight.js +5 -0
- package/node_modules/lodash/fp/forIn.js +5 -0
- package/node_modules/lodash/fp/forInRight.js +5 -0
- package/node_modules/lodash/fp/forOwn.js +5 -0
- package/node_modules/lodash/fp/forOwnRight.js +5 -0
- package/node_modules/lodash/fp/fromPairs.js +5 -0
- package/node_modules/lodash/fp/function.js +2 -0
- package/node_modules/lodash/fp/functions.js +5 -0
- package/node_modules/lodash/fp/functionsIn.js +5 -0
- package/node_modules/lodash/fp/get.js +5 -0
- package/node_modules/lodash/fp/getOr.js +5 -0
- package/node_modules/lodash/fp/groupBy.js +5 -0
- package/node_modules/lodash/fp/gt.js +5 -0
- package/node_modules/lodash/fp/gte.js +5 -0
- package/node_modules/lodash/fp/has.js +5 -0
- package/node_modules/lodash/fp/hasIn.js +5 -0
- package/node_modules/lodash/fp/head.js +5 -0
- package/node_modules/lodash/fp/identical.js +1 -0
- package/node_modules/lodash/fp/identity.js +5 -0
- package/node_modules/lodash/fp/inRange.js +5 -0
- package/node_modules/lodash/fp/includes.js +5 -0
- package/node_modules/lodash/fp/includesFrom.js +5 -0
- package/node_modules/lodash/fp/indexBy.js +1 -0
- package/node_modules/lodash/fp/indexOf.js +5 -0
- package/node_modules/lodash/fp/indexOfFrom.js +5 -0
- package/node_modules/lodash/fp/init.js +1 -0
- package/node_modules/lodash/fp/initial.js +5 -0
- package/node_modules/lodash/fp/intersection.js +5 -0
- package/node_modules/lodash/fp/intersectionBy.js +5 -0
- package/node_modules/lodash/fp/intersectionWith.js +5 -0
- package/node_modules/lodash/fp/invert.js +5 -0
- package/node_modules/lodash/fp/invertBy.js +5 -0
- package/node_modules/lodash/fp/invertObj.js +1 -0
- package/node_modules/lodash/fp/invoke.js +5 -0
- package/node_modules/lodash/fp/invokeArgs.js +5 -0
- package/node_modules/lodash/fp/invokeArgsMap.js +5 -0
- package/node_modules/lodash/fp/invokeMap.js +5 -0
- package/node_modules/lodash/fp/isArguments.js +5 -0
- package/node_modules/lodash/fp/isArray.js +5 -0
- package/node_modules/lodash/fp/isArrayBuffer.js +5 -0
- package/node_modules/lodash/fp/isArrayLike.js +5 -0
- package/node_modules/lodash/fp/isArrayLikeObject.js +5 -0
- package/node_modules/lodash/fp/isBoolean.js +5 -0
- package/node_modules/lodash/fp/isBuffer.js +5 -0
- package/node_modules/lodash/fp/isDate.js +5 -0
- package/node_modules/lodash/fp/isElement.js +5 -0
- package/node_modules/lodash/fp/isEmpty.js +5 -0
- package/node_modules/lodash/fp/isEqual.js +5 -0
- package/node_modules/lodash/fp/isEqualWith.js +5 -0
- package/node_modules/lodash/fp/isError.js +5 -0
- package/node_modules/lodash/fp/isFinite.js +5 -0
- package/node_modules/lodash/fp/isFunction.js +5 -0
- package/node_modules/lodash/fp/isInteger.js +5 -0
- package/node_modules/lodash/fp/isLength.js +5 -0
- package/node_modules/lodash/fp/isMap.js +5 -0
- package/node_modules/lodash/fp/isMatch.js +5 -0
- package/node_modules/lodash/fp/isMatchWith.js +5 -0
- package/node_modules/lodash/fp/isNaN.js +5 -0
- package/node_modules/lodash/fp/isNative.js +5 -0
- package/node_modules/lodash/fp/isNil.js +5 -0
- package/node_modules/lodash/fp/isNull.js +5 -0
- package/node_modules/lodash/fp/isNumber.js +5 -0
- package/node_modules/lodash/fp/isObject.js +5 -0
- package/node_modules/lodash/fp/isObjectLike.js +5 -0
- package/node_modules/lodash/fp/isPlainObject.js +5 -0
- package/node_modules/lodash/fp/isRegExp.js +5 -0
- package/node_modules/lodash/fp/isSafeInteger.js +5 -0
- package/node_modules/lodash/fp/isSet.js +5 -0
- package/node_modules/lodash/fp/isString.js +5 -0
- package/node_modules/lodash/fp/isSymbol.js +5 -0
- package/node_modules/lodash/fp/isTypedArray.js +5 -0
- package/node_modules/lodash/fp/isUndefined.js +5 -0
- package/node_modules/lodash/fp/isWeakMap.js +5 -0
- package/node_modules/lodash/fp/isWeakSet.js +5 -0
- package/node_modules/lodash/fp/iteratee.js +5 -0
- package/node_modules/lodash/fp/join.js +5 -0
- package/node_modules/lodash/fp/juxt.js +1 -0
- package/node_modules/lodash/fp/kebabCase.js +5 -0
- package/node_modules/lodash/fp/keyBy.js +5 -0
- package/node_modules/lodash/fp/keys.js +5 -0
- package/node_modules/lodash/fp/keysIn.js +5 -0
- package/node_modules/lodash/fp/lang.js +2 -0
- package/node_modules/lodash/fp/last.js +5 -0
- package/node_modules/lodash/fp/lastIndexOf.js +5 -0
- package/node_modules/lodash/fp/lastIndexOfFrom.js +5 -0
- package/node_modules/lodash/fp/lowerCase.js +5 -0
- package/node_modules/lodash/fp/lowerFirst.js +5 -0
- package/node_modules/lodash/fp/lt.js +5 -0
- package/node_modules/lodash/fp/lte.js +5 -0
- package/node_modules/lodash/fp/map.js +5 -0
- package/node_modules/lodash/fp/mapKeys.js +5 -0
- package/node_modules/lodash/fp/mapValues.js +5 -0
- package/node_modules/lodash/fp/matches.js +1 -0
- package/node_modules/lodash/fp/matchesProperty.js +5 -0
- package/node_modules/lodash/fp/math.js +2 -0
- package/node_modules/lodash/fp/max.js +5 -0
- package/node_modules/lodash/fp/maxBy.js +5 -0
- package/node_modules/lodash/fp/mean.js +5 -0
- package/node_modules/lodash/fp/meanBy.js +5 -0
- package/node_modules/lodash/fp/memoize.js +5 -0
- package/node_modules/lodash/fp/merge.js +5 -0
- package/node_modules/lodash/fp/mergeAll.js +5 -0
- package/node_modules/lodash/fp/mergeAllWith.js +5 -0
- package/node_modules/lodash/fp/mergeWith.js +5 -0
- package/node_modules/lodash/fp/method.js +5 -0
- package/node_modules/lodash/fp/methodOf.js +5 -0
- package/node_modules/lodash/fp/min.js +5 -0
- package/node_modules/lodash/fp/minBy.js +5 -0
- package/node_modules/lodash/fp/mixin.js +5 -0
- package/node_modules/lodash/fp/multiply.js +5 -0
- package/node_modules/lodash/fp/nAry.js +1 -0
- package/node_modules/lodash/fp/negate.js +5 -0
- package/node_modules/lodash/fp/next.js +5 -0
- package/node_modules/lodash/fp/noop.js +5 -0
- package/node_modules/lodash/fp/now.js +5 -0
- package/node_modules/lodash/fp/nth.js +5 -0
- package/node_modules/lodash/fp/nthArg.js +5 -0
- package/node_modules/lodash/fp/number.js +2 -0
- package/node_modules/lodash/fp/object.js +2 -0
- package/node_modules/lodash/fp/omit.js +5 -0
- package/node_modules/lodash/fp/omitAll.js +1 -0
- package/node_modules/lodash/fp/omitBy.js +5 -0
- package/node_modules/lodash/fp/once.js +5 -0
- package/node_modules/lodash/fp/orderBy.js +5 -0
- package/node_modules/lodash/fp/over.js +5 -0
- package/node_modules/lodash/fp/overArgs.js +5 -0
- package/node_modules/lodash/fp/overEvery.js +5 -0
- package/node_modules/lodash/fp/overSome.js +5 -0
- package/node_modules/lodash/fp/pad.js +5 -0
- package/node_modules/lodash/fp/padChars.js +5 -0
- package/node_modules/lodash/fp/padCharsEnd.js +5 -0
- package/node_modules/lodash/fp/padCharsStart.js +5 -0
- package/node_modules/lodash/fp/padEnd.js +5 -0
- package/node_modules/lodash/fp/padStart.js +5 -0
- package/node_modules/lodash/fp/parseInt.js +5 -0
- package/node_modules/lodash/fp/partial.js +5 -0
- package/node_modules/lodash/fp/partialRight.js +5 -0
- package/node_modules/lodash/fp/partition.js +5 -0
- package/node_modules/lodash/fp/path.js +1 -0
- package/node_modules/lodash/fp/pathEq.js +1 -0
- package/node_modules/lodash/fp/pathOr.js +1 -0
- package/node_modules/lodash/fp/paths.js +1 -0
- package/node_modules/lodash/fp/pick.js +5 -0
- package/node_modules/lodash/fp/pickAll.js +1 -0
- package/node_modules/lodash/fp/pickBy.js +5 -0
- package/node_modules/lodash/fp/pipe.js +1 -0
- package/node_modules/lodash/fp/placeholder.js +6 -0
- package/node_modules/lodash/fp/plant.js +5 -0
- package/node_modules/lodash/fp/pluck.js +1 -0
- package/node_modules/lodash/fp/prop.js +1 -0
- package/node_modules/lodash/fp/propEq.js +1 -0
- package/node_modules/lodash/fp/propOr.js +1 -0
- package/node_modules/lodash/fp/property.js +1 -0
- package/node_modules/lodash/fp/propertyOf.js +5 -0
- package/node_modules/lodash/fp/props.js +1 -0
- package/node_modules/lodash/fp/pull.js +5 -0
- package/node_modules/lodash/fp/pullAll.js +5 -0
- package/node_modules/lodash/fp/pullAllBy.js +5 -0
- package/node_modules/lodash/fp/pullAllWith.js +5 -0
- package/node_modules/lodash/fp/pullAt.js +5 -0
- package/node_modules/lodash/fp/random.js +5 -0
- package/node_modules/lodash/fp/range.js +5 -0
- package/node_modules/lodash/fp/rangeRight.js +5 -0
- package/node_modules/lodash/fp/rangeStep.js +5 -0
- package/node_modules/lodash/fp/rangeStepRight.js +5 -0
- package/node_modules/lodash/fp/rearg.js +5 -0
- package/node_modules/lodash/fp/reduce.js +5 -0
- package/node_modules/lodash/fp/reduceRight.js +5 -0
- package/node_modules/lodash/fp/reject.js +5 -0
- package/node_modules/lodash/fp/remove.js +5 -0
- package/node_modules/lodash/fp/repeat.js +5 -0
- package/node_modules/lodash/fp/replace.js +5 -0
- package/node_modules/lodash/fp/rest.js +5 -0
- package/node_modules/lodash/fp/restFrom.js +5 -0
- package/node_modules/lodash/fp/result.js +5 -0
- package/node_modules/lodash/fp/reverse.js +5 -0
- package/node_modules/lodash/fp/round.js +5 -0
- package/node_modules/lodash/fp/sample.js +5 -0
- package/node_modules/lodash/fp/sampleSize.js +5 -0
- package/node_modules/lodash/fp/seq.js +2 -0
- package/node_modules/lodash/fp/set.js +5 -0
- package/node_modules/lodash/fp/setWith.js +5 -0
- package/node_modules/lodash/fp/shuffle.js +5 -0
- package/node_modules/lodash/fp/size.js +5 -0
- package/node_modules/lodash/fp/slice.js +5 -0
- package/node_modules/lodash/fp/snakeCase.js +5 -0
- package/node_modules/lodash/fp/some.js +5 -0
- package/node_modules/lodash/fp/sortBy.js +5 -0
- package/node_modules/lodash/fp/sortedIndex.js +5 -0
- package/node_modules/lodash/fp/sortedIndexBy.js +5 -0
- package/node_modules/lodash/fp/sortedIndexOf.js +5 -0
- package/node_modules/lodash/fp/sortedLastIndex.js +5 -0
- package/node_modules/lodash/fp/sortedLastIndexBy.js +5 -0
- package/node_modules/lodash/fp/sortedLastIndexOf.js +5 -0
- package/node_modules/lodash/fp/sortedUniq.js +5 -0
- package/node_modules/lodash/fp/sortedUniqBy.js +5 -0
- package/node_modules/lodash/fp/split.js +5 -0
- package/node_modules/lodash/fp/spread.js +5 -0
- package/node_modules/lodash/fp/spreadFrom.js +5 -0
- package/node_modules/lodash/fp/startCase.js +5 -0
- package/node_modules/lodash/fp/startsWith.js +5 -0
- package/node_modules/lodash/fp/string.js +2 -0
- package/node_modules/lodash/fp/stubArray.js +5 -0
- package/node_modules/lodash/fp/stubFalse.js +5 -0
- package/node_modules/lodash/fp/stubObject.js +5 -0
- package/node_modules/lodash/fp/stubString.js +5 -0
- package/node_modules/lodash/fp/stubTrue.js +5 -0
- package/node_modules/lodash/fp/subtract.js +5 -0
- package/node_modules/lodash/fp/sum.js +5 -0
- package/node_modules/lodash/fp/sumBy.js +5 -0
- package/node_modules/lodash/fp/symmetricDifference.js +1 -0
- package/node_modules/lodash/fp/symmetricDifferenceBy.js +1 -0
- package/node_modules/lodash/fp/symmetricDifferenceWith.js +1 -0
- package/node_modules/lodash/fp/tail.js +5 -0
- package/node_modules/lodash/fp/take.js +5 -0
- package/node_modules/lodash/fp/takeLast.js +1 -0
- package/node_modules/lodash/fp/takeLastWhile.js +1 -0
- package/node_modules/lodash/fp/takeRight.js +5 -0
- package/node_modules/lodash/fp/takeRightWhile.js +5 -0
- package/node_modules/lodash/fp/takeWhile.js +5 -0
- package/node_modules/lodash/fp/tap.js +5 -0
- package/node_modules/lodash/fp/template.js +5 -0
- package/node_modules/lodash/fp/templateSettings.js +5 -0
- package/node_modules/lodash/fp/throttle.js +5 -0
- package/node_modules/lodash/fp/thru.js +5 -0
- package/node_modules/lodash/fp/times.js +5 -0
- package/node_modules/lodash/fp/toArray.js +5 -0
- package/node_modules/lodash/fp/toFinite.js +5 -0
- package/node_modules/lodash/fp/toInteger.js +5 -0
- package/node_modules/lodash/fp/toIterator.js +5 -0
- package/node_modules/lodash/fp/toJSON.js +5 -0
- package/node_modules/lodash/fp/toLength.js +5 -0
- package/node_modules/lodash/fp/toLower.js +5 -0
- package/node_modules/lodash/fp/toNumber.js +5 -0
- package/node_modules/lodash/fp/toPairs.js +5 -0
- package/node_modules/lodash/fp/toPairsIn.js +5 -0
- package/node_modules/lodash/fp/toPath.js +5 -0
- package/node_modules/lodash/fp/toPlainObject.js +5 -0
- package/node_modules/lodash/fp/toSafeInteger.js +5 -0
- package/node_modules/lodash/fp/toString.js +5 -0
- package/node_modules/lodash/fp/toUpper.js +5 -0
- package/node_modules/lodash/fp/transform.js +5 -0
- package/node_modules/lodash/fp/trim.js +5 -0
- package/node_modules/lodash/fp/trimChars.js +5 -0
- package/node_modules/lodash/fp/trimCharsEnd.js +5 -0
- package/node_modules/lodash/fp/trimCharsStart.js +5 -0
- package/node_modules/lodash/fp/trimEnd.js +5 -0
- package/node_modules/lodash/fp/trimStart.js +5 -0
- package/node_modules/lodash/fp/truncate.js +5 -0
- package/node_modules/lodash/fp/unapply.js +1 -0
- package/node_modules/lodash/fp/unary.js +5 -0
- package/node_modules/lodash/fp/unescape.js +5 -0
- package/node_modules/lodash/fp/union.js +5 -0
- package/node_modules/lodash/fp/unionBy.js +5 -0
- package/node_modules/lodash/fp/unionWith.js +5 -0
- package/node_modules/lodash/fp/uniq.js +5 -0
- package/node_modules/lodash/fp/uniqBy.js +5 -0
- package/node_modules/lodash/fp/uniqWith.js +5 -0
- package/node_modules/lodash/fp/uniqueId.js +5 -0
- package/node_modules/lodash/fp/unnest.js +1 -0
- package/node_modules/lodash/fp/unset.js +5 -0
- package/node_modules/lodash/fp/unzip.js +5 -0
- package/node_modules/lodash/fp/unzipWith.js +5 -0
- package/node_modules/lodash/fp/update.js +5 -0
- package/node_modules/lodash/fp/updateWith.js +5 -0
- package/node_modules/lodash/fp/upperCase.js +5 -0
- package/node_modules/lodash/fp/upperFirst.js +5 -0
- package/node_modules/lodash/fp/useWith.js +1 -0
- package/node_modules/lodash/fp/util.js +2 -0
- package/node_modules/lodash/fp/value.js +5 -0
- package/node_modules/lodash/fp/valueOf.js +5 -0
- package/node_modules/lodash/fp/values.js +5 -0
- package/node_modules/lodash/fp/valuesIn.js +5 -0
- package/node_modules/lodash/fp/where.js +1 -0
- package/node_modules/lodash/fp/whereEq.js +1 -0
- package/node_modules/lodash/fp/without.js +5 -0
- package/node_modules/lodash/fp/words.js +5 -0
- package/node_modules/lodash/fp/wrap.js +5 -0
- package/node_modules/lodash/fp/wrapperAt.js +5 -0
- package/node_modules/lodash/fp/wrapperChain.js +5 -0
- package/node_modules/lodash/fp/wrapperLodash.js +5 -0
- package/node_modules/lodash/fp/wrapperReverse.js +5 -0
- package/node_modules/lodash/fp/wrapperValue.js +5 -0
- package/node_modules/lodash/fp/xor.js +5 -0
- package/node_modules/lodash/fp/xorBy.js +5 -0
- package/node_modules/lodash/fp/xorWith.js +5 -0
- package/node_modules/lodash/fp/zip.js +5 -0
- package/node_modules/lodash/fp/zipAll.js +5 -0
- package/node_modules/lodash/fp/zipObj.js +1 -0
- package/node_modules/lodash/fp/zipObject.js +5 -0
- package/node_modules/lodash/fp/zipObjectDeep.js +5 -0
- package/node_modules/lodash/fp/zipWith.js +5 -0
- package/node_modules/lodash/fp.js +2 -0
- package/node_modules/lodash/fromPairs.js +28 -0
- package/node_modules/lodash/function.js +25 -0
- package/node_modules/lodash/functions.js +31 -0
- package/node_modules/lodash/functionsIn.js +31 -0
- package/node_modules/lodash/get.js +33 -0
- package/node_modules/lodash/groupBy.js +41 -0
- package/node_modules/lodash/gt.js +29 -0
- package/node_modules/lodash/gte.js +30 -0
- package/node_modules/lodash/has.js +35 -0
- package/node_modules/lodash/hasIn.js +34 -0
- package/node_modules/lodash/head.js +23 -0
- package/node_modules/lodash/identity.js +21 -0
- package/node_modules/lodash/inRange.js +55 -0
- package/node_modules/lodash/includes.js +53 -0
- package/node_modules/lodash/index.js +1 -0
- package/node_modules/lodash/indexOf.js +42 -0
- package/node_modules/lodash/initial.js +22 -0
- package/node_modules/lodash/intersection.js +30 -0
- package/node_modules/lodash/intersectionBy.js +45 -0
- package/node_modules/lodash/intersectionWith.js +41 -0
- package/node_modules/lodash/invert.js +42 -0
- package/node_modules/lodash/invertBy.js +56 -0
- package/node_modules/lodash/invoke.js +24 -0
- package/node_modules/lodash/invokeMap.js +41 -0
- package/node_modules/lodash/isArguments.js +36 -0
- package/node_modules/lodash/isArray.js +26 -0
- package/node_modules/lodash/isArrayBuffer.js +27 -0
- package/node_modules/lodash/isArrayLike.js +33 -0
- package/node_modules/lodash/isArrayLikeObject.js +33 -0
- package/node_modules/lodash/isBoolean.js +29 -0
- package/node_modules/lodash/isBuffer.js +38 -0
- package/node_modules/lodash/isDate.js +27 -0
- package/node_modules/lodash/isElement.js +25 -0
- package/node_modules/lodash/isEmpty.js +77 -0
- package/node_modules/lodash/isEqual.js +35 -0
- package/node_modules/lodash/isEqualWith.js +41 -0
- package/node_modules/lodash/isError.js +36 -0
- package/node_modules/lodash/isFinite.js +36 -0
- package/node_modules/lodash/isFunction.js +37 -0
- package/node_modules/lodash/isInteger.js +33 -0
- package/node_modules/lodash/isLength.js +35 -0
- package/node_modules/lodash/isMap.js +27 -0
- package/node_modules/lodash/isMatch.js +36 -0
- package/node_modules/lodash/isMatchWith.js +41 -0
- package/node_modules/lodash/isNaN.js +38 -0
- package/node_modules/lodash/isNative.js +40 -0
- package/node_modules/lodash/isNil.js +25 -0
- package/node_modules/lodash/isNull.js +22 -0
- package/node_modules/lodash/isNumber.js +38 -0
- package/node_modules/lodash/isObject.js +31 -0
- package/node_modules/lodash/isObjectLike.js +29 -0
- package/node_modules/lodash/isPlainObject.js +62 -0
- package/node_modules/lodash/isRegExp.js +27 -0
- package/node_modules/lodash/isSafeInteger.js +37 -0
- package/node_modules/lodash/isSet.js +27 -0
- package/node_modules/lodash/isString.js +30 -0
- package/node_modules/lodash/isSymbol.js +29 -0
- package/node_modules/lodash/isTypedArray.js +27 -0
- package/node_modules/lodash/isUndefined.js +22 -0
- package/node_modules/lodash/isWeakMap.js +28 -0
- package/node_modules/lodash/isWeakSet.js +28 -0
- package/node_modules/lodash/iteratee.js +53 -0
- package/node_modules/lodash/join.js +26 -0
- package/node_modules/lodash/kebabCase.js +28 -0
- package/node_modules/lodash/keyBy.js +36 -0
- package/node_modules/lodash/keys.js +37 -0
- package/node_modules/lodash/keysIn.js +32 -0
- package/node_modules/lodash/lang.js +58 -0
- package/node_modules/lodash/last.js +20 -0
- package/node_modules/lodash/lastIndexOf.js +46 -0
- package/node_modules/lodash/lodash.js +17209 -0
- package/node_modules/lodash/lodash.min.js +140 -0
- package/node_modules/lodash/lowerCase.js +27 -0
- package/node_modules/lodash/lowerFirst.js +22 -0
- package/node_modules/lodash/lt.js +29 -0
- package/node_modules/lodash/lte.js +30 -0
- package/node_modules/lodash/map.js +53 -0
- package/node_modules/lodash/mapKeys.js +36 -0
- package/node_modules/lodash/mapValues.js +43 -0
- package/node_modules/lodash/matches.js +46 -0
- package/node_modules/lodash/matchesProperty.js +44 -0
- package/node_modules/lodash/math.js +17 -0
- package/node_modules/lodash/max.js +29 -0
- package/node_modules/lodash/maxBy.js +34 -0
- package/node_modules/lodash/mean.js +22 -0
- package/node_modules/lodash/meanBy.js +31 -0
- package/node_modules/lodash/memoize.js +73 -0
- package/node_modules/lodash/merge.js +39 -0
- package/node_modules/lodash/mergeWith.js +39 -0
- package/node_modules/lodash/method.js +34 -0
- package/node_modules/lodash/methodOf.js +33 -0
- package/node_modules/lodash/min.js +29 -0
- package/node_modules/lodash/minBy.js +34 -0
- package/node_modules/lodash/mixin.js +74 -0
- package/node_modules/lodash/multiply.js +22 -0
- package/node_modules/lodash/negate.js +40 -0
- package/node_modules/lodash/next.js +35 -0
- package/node_modules/lodash/noop.js +17 -0
- package/node_modules/lodash/now.js +23 -0
- package/node_modules/lodash/nth.js +29 -0
- package/node_modules/lodash/nthArg.js +32 -0
- package/node_modules/lodash/number.js +5 -0
- package/node_modules/lodash/object.js +49 -0
- package/node_modules/lodash/omit.js +57 -0
- package/node_modules/lodash/omitBy.js +29 -0
- package/node_modules/lodash/once.js +25 -0
- package/node_modules/lodash/orderBy.js +47 -0
- package/node_modules/lodash/over.js +24 -0
- package/node_modules/lodash/overArgs.js +61 -0
- package/node_modules/lodash/overEvery.js +34 -0
- package/node_modules/lodash/overSome.js +37 -0
- package/node_modules/lodash/package.json +17 -0
- package/node_modules/lodash/pad.js +49 -0
- package/node_modules/lodash/padEnd.js +39 -0
- package/node_modules/lodash/padStart.js +39 -0
- package/node_modules/lodash/parseInt.js +43 -0
- package/node_modules/lodash/partial.js +50 -0
- package/node_modules/lodash/partialRight.js +49 -0
- package/node_modules/lodash/partition.js +43 -0
- package/node_modules/lodash/pick.js +25 -0
- package/node_modules/lodash/pickBy.js +37 -0
- package/node_modules/lodash/plant.js +48 -0
- package/node_modules/lodash/property.js +32 -0
- package/node_modules/lodash/propertyOf.js +30 -0
- package/node_modules/lodash/pull.js +29 -0
- package/node_modules/lodash/pullAll.js +29 -0
- package/node_modules/lodash/pullAllBy.js +33 -0
- package/node_modules/lodash/pullAllWith.js +32 -0
- package/node_modules/lodash/pullAt.js +43 -0
- package/node_modules/lodash/random.js +82 -0
- package/node_modules/lodash/range.js +46 -0
- package/node_modules/lodash/rangeRight.js +41 -0
- package/node_modules/lodash/rearg.js +33 -0
- package/node_modules/lodash/reduce.js +51 -0
- package/node_modules/lodash/reduceRight.js +36 -0
- package/node_modules/lodash/reject.js +46 -0
- package/node_modules/lodash/release.md +48 -0
- package/node_modules/lodash/remove.js +53 -0
- package/node_modules/lodash/repeat.js +37 -0
- package/node_modules/lodash/replace.js +29 -0
- package/node_modules/lodash/rest.js +40 -0
- package/node_modules/lodash/result.js +56 -0
- package/node_modules/lodash/reverse.js +34 -0
- package/node_modules/lodash/round.js +26 -0
- package/node_modules/lodash/sample.js +24 -0
- package/node_modules/lodash/sampleSize.js +37 -0
- package/node_modules/lodash/seq.js +16 -0
- package/node_modules/lodash/set.js +35 -0
- package/node_modules/lodash/setWith.js +32 -0
- package/node_modules/lodash/shuffle.js +25 -0
- package/node_modules/lodash/size.js +46 -0
- package/node_modules/lodash/slice.js +37 -0
- package/node_modules/lodash/snakeCase.js +28 -0
- package/node_modules/lodash/some.js +51 -0
- package/node_modules/lodash/sortBy.js +48 -0
- package/node_modules/lodash/sortedIndex.js +24 -0
- package/node_modules/lodash/sortedIndexBy.js +33 -0
- package/node_modules/lodash/sortedIndexOf.js +31 -0
- package/node_modules/lodash/sortedLastIndex.js +25 -0
- package/node_modules/lodash/sortedLastIndexBy.js +33 -0
- package/node_modules/lodash/sortedLastIndexOf.js +31 -0
- package/node_modules/lodash/sortedUniq.js +24 -0
- package/node_modules/lodash/sortedUniqBy.js +26 -0
- package/node_modules/lodash/split.js +52 -0
- package/node_modules/lodash/spread.js +63 -0
- package/node_modules/lodash/startCase.js +29 -0
- package/node_modules/lodash/startsWith.js +39 -0
- package/node_modules/lodash/string.js +33 -0
- package/node_modules/lodash/stubArray.js +23 -0
- package/node_modules/lodash/stubFalse.js +18 -0
- package/node_modules/lodash/stubObject.js +23 -0
- package/node_modules/lodash/stubString.js +18 -0
- package/node_modules/lodash/stubTrue.js +18 -0
- package/node_modules/lodash/subtract.js +22 -0
- package/node_modules/lodash/sum.js +24 -0
- package/node_modules/lodash/sumBy.js +33 -0
- package/node_modules/lodash/tail.js +22 -0
- package/node_modules/lodash/take.js +37 -0
- package/node_modules/lodash/takeRight.js +39 -0
- package/node_modules/lodash/takeRightWhile.js +45 -0
- package/node_modules/lodash/takeWhile.js +45 -0
- package/node_modules/lodash/tap.js +29 -0
- package/node_modules/lodash/template.js +272 -0
- package/node_modules/lodash/templateSettings.js +67 -0
- package/node_modules/lodash/throttle.js +69 -0
- package/node_modules/lodash/thru.js +28 -0
- package/node_modules/lodash/times.js +51 -0
- package/node_modules/lodash/toArray.js +58 -0
- package/node_modules/lodash/toFinite.js +42 -0
- package/node_modules/lodash/toInteger.js +36 -0
- package/node_modules/lodash/toIterator.js +23 -0
- package/node_modules/lodash/toJSON.js +1 -0
- package/node_modules/lodash/toLength.js +38 -0
- package/node_modules/lodash/toLower.js +28 -0
- package/node_modules/lodash/toNumber.js +64 -0
- package/node_modules/lodash/toPairs.js +30 -0
- package/node_modules/lodash/toPairsIn.js +30 -0
- package/node_modules/lodash/toPath.js +33 -0
- package/node_modules/lodash/toPlainObject.js +32 -0
- package/node_modules/lodash/toSafeInteger.js +37 -0
- package/node_modules/lodash/toString.js +28 -0
- package/node_modules/lodash/toUpper.js +28 -0
- package/node_modules/lodash/transform.js +65 -0
- package/node_modules/lodash/trim.js +47 -0
- package/node_modules/lodash/trimEnd.js +41 -0
- package/node_modules/lodash/trimStart.js +43 -0
- package/node_modules/lodash/truncate.js +111 -0
- package/node_modules/lodash/unary.js +22 -0
- package/node_modules/lodash/unescape.js +34 -0
- package/node_modules/lodash/union.js +26 -0
- package/node_modules/lodash/unionBy.js +39 -0
- package/node_modules/lodash/unionWith.js +34 -0
- package/node_modules/lodash/uniq.js +25 -0
- package/node_modules/lodash/uniqBy.js +31 -0
- package/node_modules/lodash/uniqWith.js +28 -0
- package/node_modules/lodash/uniqueId.js +28 -0
- package/node_modules/lodash/unset.js +34 -0
- package/node_modules/lodash/unzip.js +45 -0
- package/node_modules/lodash/unzipWith.js +39 -0
- package/node_modules/lodash/update.js +35 -0
- package/node_modules/lodash/updateWith.js +33 -0
- package/node_modules/lodash/upperCase.js +27 -0
- package/node_modules/lodash/upperFirst.js +22 -0
- package/node_modules/lodash/util.js +34 -0
- package/node_modules/lodash/value.js +1 -0
- package/node_modules/lodash/valueOf.js +1 -0
- package/node_modules/lodash/values.js +34 -0
- package/node_modules/lodash/valuesIn.js +32 -0
- package/node_modules/lodash/without.js +31 -0
- package/node_modules/lodash/words.js +35 -0
- package/node_modules/lodash/wrap.js +30 -0
- package/node_modules/lodash/wrapperAt.js +48 -0
- package/node_modules/lodash/wrapperChain.js +34 -0
- package/node_modules/lodash/wrapperLodash.js +147 -0
- package/node_modules/lodash/wrapperReverse.js +44 -0
- package/node_modules/lodash/wrapperValue.js +21 -0
- package/node_modules/lodash/xor.js +28 -0
- package/node_modules/lodash/xorBy.js +39 -0
- package/node_modules/lodash/xorWith.js +34 -0
- package/node_modules/lodash/zip.js +22 -0
- package/node_modules/lodash/zipObject.js +24 -0
- package/node_modules/lodash/zipObjectDeep.js +23 -0
- package/node_modules/lodash/zipWith.js +32 -0
- package/package.json +93 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { IPrincipal, PolicyStatement } from 'aws-cdk-lib/aws-iam';
|
|
6
|
+
import { IBucket } from 'aws-cdk-lib/aws-s3';
|
|
7
|
+
export interface IRestrictObjectPrefixToRoles {
|
|
8
|
+
readonly s3Bucket: IBucket;
|
|
9
|
+
readonly s3Prefix: string;
|
|
10
|
+
readonly readRoleIds?: string[];
|
|
11
|
+
readonly readWriteRoleIds?: string[];
|
|
12
|
+
readonly readWriteSuperRoleIds?: string[];
|
|
13
|
+
readonly readPrincipals?: IPrincipal[];
|
|
14
|
+
readonly readWritePrincipals?: IPrincipal[];
|
|
15
|
+
readonly readWriteSuperPrincipals?: IPrincipal[];
|
|
16
|
+
}
|
|
17
|
+
export interface IRestrictBucketToRoles {
|
|
18
|
+
readonly s3Bucket: IBucket;
|
|
19
|
+
readonly roleExcludeIds: string[];
|
|
20
|
+
readonly principalExcludes?: string[];
|
|
21
|
+
readonly prefixExcludes?: string[];
|
|
22
|
+
readonly prefixIncludes?: string[];
|
|
23
|
+
}
|
|
24
|
+
/** Helper class for generating S3 bucket policy statements which grant access to specific object prefixes */
|
|
25
|
+
export declare class RestrictObjectPrefixToRoles {
|
|
26
|
+
static readonly READ_ACTIONS: string[];
|
|
27
|
+
static readonly READ_WRITE_ACTIONS: string[];
|
|
28
|
+
static readonly READ_WRITE_SUPER_ACTIONS: string[];
|
|
29
|
+
static readonly BUCKET_ALLOW_ACTIONS: string[];
|
|
30
|
+
static readonly BUCKET_DENY_ACTIONS: string[];
|
|
31
|
+
private _readStatements;
|
|
32
|
+
private _readWriteStatements;
|
|
33
|
+
private _readWriteSuperStatements;
|
|
34
|
+
private _formattedPrefix;
|
|
35
|
+
constructor(props: IRestrictObjectPrefixToRoles);
|
|
36
|
+
private _readStatementScaffold;
|
|
37
|
+
private _readWriteStatementScaffold;
|
|
38
|
+
private _readWriteSuperStatementScaffold;
|
|
39
|
+
readStatements(): PolicyStatement[];
|
|
40
|
+
readWriteStatements(): PolicyStatement[];
|
|
41
|
+
readWriteSuperStatements(): PolicyStatement[];
|
|
42
|
+
statements(): PolicyStatement[];
|
|
43
|
+
formatS3Prefix(prefix: string): string;
|
|
44
|
+
}
|
|
45
|
+
/** Helper class for generating bucket policy statements
|
|
46
|
+
* which allow or deny access to an entire bucket. Used to
|
|
47
|
+
* create bucket-level default deny statements to block accesses
|
|
48
|
+
* not granted in the bucket policy. */
|
|
49
|
+
export declare class RestrictBucketToRoles {
|
|
50
|
+
readonly denyStatement: PolicyStatement;
|
|
51
|
+
readonly allowStatement: PolicyStatement;
|
|
52
|
+
private resource;
|
|
53
|
+
private notResource;
|
|
54
|
+
private denyConditionalNotEquals;
|
|
55
|
+
constructor(props: IRestrictBucketToRoles);
|
|
56
|
+
private formatS3Prefix;
|
|
57
|
+
}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.RestrictBucketToRoles = exports.RestrictObjectPrefixToRoles = void 0;
|
|
10
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
11
|
+
/** Helper class for generating S3 bucket policy statements which grant access to specific object prefixes */
|
|
12
|
+
class RestrictObjectPrefixToRoles {
|
|
13
|
+
constructor(props) {
|
|
14
|
+
this._readStatements = [];
|
|
15
|
+
this._readWriteStatements = [];
|
|
16
|
+
this._readWriteSuperStatements = [];
|
|
17
|
+
this._formattedPrefix = '/' + this.formatS3Prefix(props.s3Prefix) + '/*';
|
|
18
|
+
// Covers our case where two / get resolved because our prefix is actually /
|
|
19
|
+
this._formattedPrefix = this._formattedPrefix.replace(/\/\//, '/');
|
|
20
|
+
// FEDERATED / READ
|
|
21
|
+
if (props.readRoleIds != undefined && props.readRoleIds.length > 0) {
|
|
22
|
+
// Construct our User:Id roles for read
|
|
23
|
+
const statement = this._readStatementScaffold(props);
|
|
24
|
+
statement.addCondition('StringLike', { 'aws:userId': props.readRoleIds.map(x => `${x}:*`) });
|
|
25
|
+
statement.addAnyPrincipal();
|
|
26
|
+
this._readStatements.push(statement);
|
|
27
|
+
}
|
|
28
|
+
// FEDERATED / READWRITE
|
|
29
|
+
if (props.readWriteRoleIds != undefined && props.readWriteRoleIds.length > 0) {
|
|
30
|
+
const statement = this._readWriteStatementScaffold(props);
|
|
31
|
+
statement.addCondition('StringLike', { 'aws:userId': props.readWriteRoleIds.map(x => `${x}:*`) });
|
|
32
|
+
statement.addAnyPrincipal();
|
|
33
|
+
this._readWriteStatements.push(statement);
|
|
34
|
+
}
|
|
35
|
+
// FEDERATED / READWRITESUPER
|
|
36
|
+
if (props.readWriteSuperRoleIds != undefined && props.readWriteSuperRoleIds.length > 0) {
|
|
37
|
+
const statement = this._readWriteSuperStatementScaffold(props);
|
|
38
|
+
statement.addCondition('StringLike', { 'aws:userId': props.readWriteSuperRoleIds.map(x => `${x}:*`) });
|
|
39
|
+
statement.addAnyPrincipal();
|
|
40
|
+
this._readWriteSuperStatements.push(statement);
|
|
41
|
+
}
|
|
42
|
+
// NONFEDERATED / READ
|
|
43
|
+
if (props.readPrincipals != undefined && props.readPrincipals.length > 0) {
|
|
44
|
+
const statement = this._readStatementScaffold(props);
|
|
45
|
+
props.readPrincipals.forEach(principal => {
|
|
46
|
+
statement.addPrincipals(principal);
|
|
47
|
+
});
|
|
48
|
+
this._readStatements.push(statement);
|
|
49
|
+
}
|
|
50
|
+
// NONFEDERATED / READWRITE
|
|
51
|
+
if (props.readWritePrincipals != undefined && props.readWritePrincipals.length > 0) {
|
|
52
|
+
const statement = this._readWriteStatementScaffold(props);
|
|
53
|
+
props.readWritePrincipals.forEach(principal => {
|
|
54
|
+
statement.addPrincipals(principal);
|
|
55
|
+
});
|
|
56
|
+
this._readWriteStatements.push(statement);
|
|
57
|
+
}
|
|
58
|
+
// NONFEDERATED / READWRITESUPER
|
|
59
|
+
if (props.readWriteSuperPrincipals != undefined && props.readWriteSuperPrincipals.length > 0) {
|
|
60
|
+
const statement = this._readWriteSuperStatementScaffold(props);
|
|
61
|
+
props.readWriteSuperPrincipals.forEach(principal => {
|
|
62
|
+
statement.addPrincipals(principal);
|
|
63
|
+
});
|
|
64
|
+
this._readWriteSuperStatements.push(statement);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
_readStatementScaffold(props) {
|
|
68
|
+
return new aws_iam_1.PolicyStatement({
|
|
69
|
+
sid: `${props.s3Prefix.replace(/\\W/g, '')}_Read`,
|
|
70
|
+
effect: aws_iam_1.Effect.ALLOW,
|
|
71
|
+
resources: [props.s3Bucket.bucketArn + this._formattedPrefix],
|
|
72
|
+
actions: RestrictObjectPrefixToRoles.READ_ACTIONS,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
_readWriteStatementScaffold(props) {
|
|
76
|
+
return new aws_iam_1.PolicyStatement({
|
|
77
|
+
sid: `${props.s3Prefix.replace(/\\W/g, '')}_ReadWrite`,
|
|
78
|
+
effect: aws_iam_1.Effect.ALLOW,
|
|
79
|
+
resources: [props.s3Bucket.bucketArn + this._formattedPrefix],
|
|
80
|
+
actions: RestrictObjectPrefixToRoles.READ_WRITE_ACTIONS,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
_readWriteSuperStatementScaffold(props) {
|
|
84
|
+
return new aws_iam_1.PolicyStatement({
|
|
85
|
+
sid: `${props.s3Prefix.replace(/\\W/g, '')}_ReadWriteSuper`,
|
|
86
|
+
effect: aws_iam_1.Effect.ALLOW,
|
|
87
|
+
resources: [props.s3Bucket.bucketArn + this._formattedPrefix],
|
|
88
|
+
actions: RestrictObjectPrefixToRoles.READ_WRITE_SUPER_ACTIONS,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
readStatements() {
|
|
92
|
+
return this._readStatements;
|
|
93
|
+
}
|
|
94
|
+
readWriteStatements() {
|
|
95
|
+
return this._readWriteStatements;
|
|
96
|
+
}
|
|
97
|
+
readWriteSuperStatements() {
|
|
98
|
+
return this._readWriteSuperStatements;
|
|
99
|
+
}
|
|
100
|
+
statements() {
|
|
101
|
+
return [...this._readStatements, ...this._readWriteStatements, ...this._readWriteSuperStatements];
|
|
102
|
+
}
|
|
103
|
+
formatS3Prefix(prefix) {
|
|
104
|
+
let rawPrefix = prefix;
|
|
105
|
+
// Removes trailing slashes
|
|
106
|
+
rawPrefix = rawPrefix.endsWith('/') ? rawPrefix.slice(0, -1) : rawPrefix;
|
|
107
|
+
// Removes leading slashes
|
|
108
|
+
rawPrefix = rawPrefix.startsWith('/') ? rawPrefix.substring(1) : rawPrefix;
|
|
109
|
+
return rawPrefix;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
exports.RestrictObjectPrefixToRoles = RestrictObjectPrefixToRoles;
|
|
113
|
+
RestrictObjectPrefixToRoles.READ_ACTIONS = ['s3:GetObject*'];
|
|
114
|
+
RestrictObjectPrefixToRoles.READ_WRITE_ACTIONS = [
|
|
115
|
+
...RestrictObjectPrefixToRoles.READ_ACTIONS,
|
|
116
|
+
's3:PutObject',
|
|
117
|
+
's3:PutObjectTagging',
|
|
118
|
+
's3:DeleteObject',
|
|
119
|
+
];
|
|
120
|
+
RestrictObjectPrefixToRoles.READ_WRITE_SUPER_ACTIONS = [
|
|
121
|
+
...RestrictObjectPrefixToRoles.READ_WRITE_ACTIONS,
|
|
122
|
+
's3:DeleteObjectVersion',
|
|
123
|
+
];
|
|
124
|
+
RestrictObjectPrefixToRoles.BUCKET_ALLOW_ACTIONS = ['s3:List*', 's3:GetBucket*'];
|
|
125
|
+
RestrictObjectPrefixToRoles.BUCKET_DENY_ACTIONS = ['s3:PutObject*', 's3:GetObject*', 's3:DeleteObject*'];
|
|
126
|
+
/** Helper class for generating bucket policy statements
|
|
127
|
+
* which allow or deny access to an entire bucket. Used to
|
|
128
|
+
* create bucket-level default deny statements to block accesses
|
|
129
|
+
* not granted in the bucket policy. */
|
|
130
|
+
class RestrictBucketToRoles {
|
|
131
|
+
constructor(props) {
|
|
132
|
+
this.resource = [];
|
|
133
|
+
this.notResource = [];
|
|
134
|
+
this.denyConditionalNotEquals = {};
|
|
135
|
+
// Statement allowing access to the bucket for the AROAs
|
|
136
|
+
this.allowStatement = new aws_iam_1.PolicyStatement({
|
|
137
|
+
sid: `BucketAllow`,
|
|
138
|
+
effect: aws_iam_1.Effect.ALLOW,
|
|
139
|
+
resources: [props.s3Bucket.bucketArn + '/*', props.s3Bucket.bucketArn],
|
|
140
|
+
actions: RestrictObjectPrefixToRoles.BUCKET_ALLOW_ACTIONS,
|
|
141
|
+
});
|
|
142
|
+
this.allowStatement.addAnyPrincipal();
|
|
143
|
+
this.allowStatement.addCondition('StringLike', { 'aws:userId': props.roleExcludeIds.map(x => `${x}:*`) });
|
|
144
|
+
// Constuct our deny statement.
|
|
145
|
+
// prefixIncludes denotes we want to include a prefix in our deny meaning Resource
|
|
146
|
+
if (props.prefixIncludes) {
|
|
147
|
+
this.resource = props.prefixIncludes.map(prefix => {
|
|
148
|
+
return `${props.s3Bucket.bucketArn}/${this.formatS3Prefix(prefix)}`;
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
this.resource = [props.s3Bucket.bucketArn + '/*'];
|
|
153
|
+
}
|
|
154
|
+
// prefixExcludes denote we want to exclude a prefix in our deny meaning notResource
|
|
155
|
+
if (props.prefixExcludes) {
|
|
156
|
+
this.notResource = props.prefixExcludes.map(prefix => {
|
|
157
|
+
return `${props.s3Bucket.bucketArn}/${this.formatS3Prefix(prefix)}`;
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
if (this.notResource.length > 0) {
|
|
161
|
+
this.denyStatement = new aws_iam_1.PolicyStatement({
|
|
162
|
+
sid: `BucketDeny`,
|
|
163
|
+
effect: aws_iam_1.Effect.DENY,
|
|
164
|
+
notResources: this.notResource,
|
|
165
|
+
actions: RestrictObjectPrefixToRoles.BUCKET_DENY_ACTIONS,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
this.denyStatement = new aws_iam_1.PolicyStatement({
|
|
170
|
+
sid: `BucketDeny`,
|
|
171
|
+
effect: aws_iam_1.Effect.DENY,
|
|
172
|
+
resources: this.resource,
|
|
173
|
+
actions: RestrictObjectPrefixToRoles.BUCKET_DENY_ACTIONS,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
this.denyStatement.addAnyPrincipal();
|
|
177
|
+
// Build our conditionals.
|
|
178
|
+
this.denyConditionalNotEquals['aws:userId'] = props.roleExcludeIds.map(x => `${x}:*`);
|
|
179
|
+
if (props.principalExcludes && props.principalExcludes.length > 0) {
|
|
180
|
+
this.denyConditionalNotEquals['aws:PrincipalArn'] = [...new Set(props.principalExcludes)].sort((a, b) => a.localeCompare(b));
|
|
181
|
+
}
|
|
182
|
+
// Construct our conditional for our deny
|
|
183
|
+
if (Object.keys(this.denyConditionalNotEquals).length == 1) {
|
|
184
|
+
this.denyStatement.addCondition('StringNotLike', this.denyConditionalNotEquals);
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
this.denyStatement.addCondition('ForAnyValue:StringNotLike', this.denyConditionalNotEquals);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
formatS3Prefix(prefix) {
|
|
191
|
+
let rawPrefix = prefix;
|
|
192
|
+
// Removes trailing slashes
|
|
193
|
+
rawPrefix = rawPrefix.endsWith('/') ? rawPrefix.slice(0, -1) : rawPrefix;
|
|
194
|
+
// Removes leading slashes
|
|
195
|
+
rawPrefix = rawPrefix.startsWith('/') ? rawPrefix.substring(1) : rawPrefix;
|
|
196
|
+
return `${rawPrefix}/*`;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
exports.RestrictBucketToRoles = RestrictBucketToRoles;
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUFFSCxpREFBMEU7QUFzQjFFLDZHQUE2RztBQUM3RyxNQUFhLDJCQUEyQjtJQW9CdEMsWUFBWSxLQUFtQztRQUx2QyxvQkFBZSxHQUFzQixFQUFFLENBQUM7UUFDeEMseUJBQW9CLEdBQXNCLEVBQUUsQ0FBQztRQUM3Qyw4QkFBeUIsR0FBc0IsRUFBRSxDQUFDO1FBSXhELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3pFLDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFbkUsbUJBQW1CO1FBQ25CLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxTQUFTLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2xFLHVDQUF1QztZQUN2QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckQsU0FBUyxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdGLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN0QztRQUNELHdCQUF3QjtRQUN4QixJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxTQUFTLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFELFNBQVMsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xHLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzNDO1FBRUQsNkJBQTZCO1FBQzdCLElBQUksS0FBSyxDQUFDLHFCQUFxQixJQUFJLFNBQVMsSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN0RixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0QsU0FBUyxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkcsU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDaEQ7UUFFRCxzQkFBc0I7UUFDdEIsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLFNBQVMsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDeEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JELEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUN2QyxTQUFTLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDdEM7UUFDRCwyQkFBMkI7UUFDM0IsSUFBSSxLQUFLLENBQUMsbUJBQW1CLElBQUksU0FBUyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2xGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUM1QyxTQUFTLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMzQztRQUNELGdDQUFnQztRQUNoQyxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsSUFBSSxTQUFTLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9ELEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ2pELFNBQVMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2hEO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQixDQUFDLEtBQW1DO1FBQ2hFLE9BQU8sSUFBSSx5QkFBZSxDQUFDO1lBQ3pCLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsT0FBTztZQUNqRCxNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO1lBQ3BCLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUM3RCxPQUFPLEVBQUUsMkJBQTJCLENBQUMsWUFBWTtTQUNsRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sMkJBQTJCLENBQUMsS0FBbUM7UUFDckUsT0FBTyxJQUFJLHlCQUFlLENBQUM7WUFDekIsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxZQUFZO1lBQ3RELE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7WUFDcEIsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQzdELE9BQU8sRUFBRSwyQkFBMkIsQ0FBQyxrQkFBa0I7U0FDeEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGdDQUFnQyxDQUFDLEtBQW1DO1FBQzFFLE9BQU8sSUFBSSx5QkFBZSxDQUFDO1lBQ3pCLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsaUJBQWlCO1lBQzNELE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7WUFDcEIsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQzdELE9BQU8sRUFBRSwyQkFBMkIsQ0FBQyx3QkFBd0I7U0FDOUQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFTSxtQkFBbUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztJQUVNLHdCQUF3QjtRQUM3QixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztJQUN4QyxDQUFDO0lBRU0sVUFBVTtRQUNmLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRU0sY0FBYyxDQUFDLE1BQWM7UUFDbEMsSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDO1FBRXZCLDJCQUEyQjtRQUMzQixTQUFTLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3pFLDBCQUEwQjtRQUMxQixTQUFTLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzNFLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7O0FBOUhILGtFQStIQztBQTlIaUIsd0NBQVksR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ2pDLDhDQUFrQixHQUFHO0lBQ25DLEdBQUcsMkJBQTJCLENBQUMsWUFBWTtJQUMzQyxjQUFjO0lBQ2QscUJBQXFCO0lBQ3JCLGlCQUFpQjtDQUNsQixDQUFDO0FBQ2Msb0RBQXdCLEdBQUc7SUFDekMsR0FBRywyQkFBMkIsQ0FBQyxrQkFBa0I7SUFDakQsd0JBQXdCO0NBQ3pCLENBQUM7QUFDYyxnREFBb0IsR0FBRyxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUNyRCwrQ0FBbUIsR0FBRyxDQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztBQW9IL0Y7Ozt1Q0FHdUM7QUFDdkMsTUFBYSxxQkFBcUI7SUFVaEMsWUFBWSxLQUE2QjtRQVBqQyxhQUFRLEdBQWEsRUFBRSxDQUFDO1FBQ3hCLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBQzNCLDZCQUF3QixHQUc1QixFQUFFLENBQUM7UUFHTCx3REFBd0Q7UUFDeEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLHlCQUFlLENBQUM7WUFDeEMsR0FBRyxFQUFFLGFBQWE7WUFDbEIsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztZQUNwQixTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7WUFDdEUsT0FBTyxFQUFFLDJCQUEyQixDQUFDLG9CQUFvQjtTQUMxRCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFMUcsK0JBQStCO1FBQy9CLGtGQUFrRjtRQUNsRixJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDaEQsT0FBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN0RSxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUM7U0FDbkQ7UUFDRCxvRkFBb0Y7UUFDcEYsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ25ELE9BQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdEUsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSx5QkFBZSxDQUFDO2dCQUN2QyxHQUFHLEVBQUUsWUFBWTtnQkFDakIsTUFBTSxFQUFFLGdCQUFNLENBQUMsSUFBSTtnQkFDbkIsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUM5QixPQUFPLEVBQUUsMkJBQTJCLENBQUMsbUJBQW1CO2FBQ3pELENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUkseUJBQWUsQ0FBQztnQkFDdkMsR0FBRyxFQUFFLFlBQVk7Z0JBQ2pCLE1BQU0sRUFBRSxnQkFBTSxDQUFDLElBQUk7Z0JBQ25CLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDeEIsT0FBTyxFQUFFLDJCQUEyQixDQUFDLG1CQUFtQjthQUN6RCxDQUFDLENBQUM7U0FDSjtRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFckMsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RixJQUFJLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNqRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDdEcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FDbkIsQ0FBQztTQUNIO1FBRUQseUNBQXlDO1FBQ3pDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUNqRjthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7U0FDN0Y7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLE1BQWM7UUFDbkMsSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDO1FBRXZCLDJCQUEyQjtRQUMzQixTQUFTLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3pFLDBCQUEwQjtRQUMxQixTQUFTLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzNFLE9BQU8sR0FBRyxTQUFTLElBQUksQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUEvRUQsc0RBK0VDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IHsgSVByaW5jaXBhbCwgUG9saWN5U3RhdGVtZW50LCBFZmZlY3QgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElCdWNrZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSZXN0cmljdE9iamVjdFByZWZpeFRvUm9sZXMge1xuICByZWFkb25seSBzM0J1Y2tldDogSUJ1Y2tldDtcbiAgcmVhZG9ubHkgczNQcmVmaXg6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVhZFJvbGVJZHM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgcmVhZFdyaXRlUm9sZUlkcz86IHN0cmluZ1tdO1xuICByZWFkb25seSByZWFkV3JpdGVTdXBlclJvbGVJZHM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgcmVhZFByaW5jaXBhbHM/OiBJUHJpbmNpcGFsW107XG4gIHJlYWRvbmx5IHJlYWRXcml0ZVByaW5jaXBhbHM/OiBJUHJpbmNpcGFsW107XG4gIHJlYWRvbmx5IHJlYWRXcml0ZVN1cGVyUHJpbmNpcGFscz86IElQcmluY2lwYWxbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUmVzdHJpY3RCdWNrZXRUb1JvbGVzIHtcbiAgcmVhZG9ubHkgczNCdWNrZXQ6IElCdWNrZXQ7XG4gIHJlYWRvbmx5IHJvbGVFeGNsdWRlSWRzOiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgcHJpbmNpcGFsRXhjbHVkZXM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgcHJlZml4RXhjbHVkZXM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgcHJlZml4SW5jbHVkZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqIEhlbHBlciBjbGFzcyBmb3IgZ2VuZXJhdGluZyBTMyBidWNrZXQgcG9saWN5IHN0YXRlbWVudHMgd2hpY2ggZ3JhbnQgYWNjZXNzIHRvIHNwZWNpZmljIG9iamVjdCBwcmVmaXhlcyAqL1xuZXhwb3J0IGNsYXNzIFJlc3RyaWN0T2JqZWN0UHJlZml4VG9Sb2xlcyB7XG4gIHN0YXRpYyByZWFkb25seSBSRUFEX0FDVElPTlMgPSBbJ3MzOkdldE9iamVjdConXTtcbiAgc3RhdGljIHJlYWRvbmx5IFJFQURfV1JJVEVfQUNUSU9OUyA9IFtcbiAgICAuLi5SZXN0cmljdE9iamVjdFByZWZpeFRvUm9sZXMuUkVBRF9BQ1RJT05TLFxuICAgICdzMzpQdXRPYmplY3QnLFxuICAgICdzMzpQdXRPYmplY3RUYWdnaW5nJyxcbiAgICAnczM6RGVsZXRlT2JqZWN0JyxcbiAgXTtcbiAgc3RhdGljIHJlYWRvbmx5IFJFQURfV1JJVEVfU1VQRVJfQUNUSU9OUyA9IFtcbiAgICAuLi5SZXN0cmljdE9iamVjdFByZWZpeFRvUm9sZXMuUkVBRF9XUklURV9BQ1RJT05TLFxuICAgICdzMzpEZWxldGVPYmplY3RWZXJzaW9uJyxcbiAgXTtcbiAgc3RhdGljIHJlYWRvbmx5IEJVQ0tFVF9BTExPV19BQ1RJT05TID0gWydzMzpMaXN0KicsICdzMzpHZXRCdWNrZXQqJ107XG4gIHN0YXRpYyByZWFkb25seSBCVUNLRVRfREVOWV9BQ1RJT05TID0gWydzMzpQdXRPYmplY3QqJywgJ3MzOkdldE9iamVjdConLCAnczM6RGVsZXRlT2JqZWN0KiddO1xuXG4gIHByaXZhdGUgX3JlYWRTdGF0ZW1lbnRzOiBQb2xpY3lTdGF0ZW1lbnRbXSA9IFtdO1xuICBwcml2YXRlIF9yZWFkV3JpdGVTdGF0ZW1lbnRzOiBQb2xpY3lTdGF0ZW1lbnRbXSA9IFtdO1xuICBwcml2YXRlIF9yZWFkV3JpdGVTdXBlclN0YXRlbWVudHM6IFBvbGljeVN0YXRlbWVudFtdID0gW107XG4gIHByaXZhdGUgX2Zvcm1hdHRlZFByZWZpeDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBJUmVzdHJpY3RPYmplY3RQcmVmaXhUb1JvbGVzKSB7XG4gICAgdGhpcy5fZm9ybWF0dGVkUHJlZml4ID0gJy8nICsgdGhpcy5mb3JtYXRTM1ByZWZpeChwcm9wcy5zM1ByZWZpeCkgKyAnLyonO1xuICAgIC8vIENvdmVycyBvdXIgY2FzZSB3aGVyZSB0d28gLyBnZXQgcmVzb2x2ZWQgYmVjYXVzZSBvdXIgcHJlZml4IGlzIGFjdHVhbGx5IC9cbiAgICB0aGlzLl9mb3JtYXR0ZWRQcmVmaXggPSB0aGlzLl9mb3JtYXR0ZWRQcmVmaXgucmVwbGFjZSgvXFwvXFwvLywgJy8nKTtcblxuICAgIC8vIEZFREVSQVRFRCAvIFJFQURcbiAgICBpZiAocHJvcHMucmVhZFJvbGVJZHMgIT0gdW5kZWZpbmVkICYmIHByb3BzLnJlYWRSb2xlSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIENvbnN0cnVjdCBvdXIgVXNlcjpJZCByb2xlcyBmb3IgcmVhZFxuICAgICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5fcmVhZFN0YXRlbWVudFNjYWZmb2xkKHByb3BzKTtcbiAgICAgIHN0YXRlbWVudC5hZGRDb25kaXRpb24oJ1N0cmluZ0xpa2UnLCB7ICdhd3M6dXNlcklkJzogcHJvcHMucmVhZFJvbGVJZHMubWFwKHggPT4gYCR7eH06KmApIH0pO1xuICAgICAgc3RhdGVtZW50LmFkZEFueVByaW5jaXBhbCgpO1xuICAgICAgdGhpcy5fcmVhZFN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgIH1cbiAgICAvLyBGRURFUkFURUQgLyBSRUFEV1JJVEVcbiAgICBpZiAocHJvcHMucmVhZFdyaXRlUm9sZUlkcyAhPSB1bmRlZmluZWQgJiYgcHJvcHMucmVhZFdyaXRlUm9sZUlkcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLl9yZWFkV3JpdGVTdGF0ZW1lbnRTY2FmZm9sZChwcm9wcyk7XG4gICAgICBzdGF0ZW1lbnQuYWRkQ29uZGl0aW9uKCdTdHJpbmdMaWtlJywgeyAnYXdzOnVzZXJJZCc6IHByb3BzLnJlYWRXcml0ZVJvbGVJZHMubWFwKHggPT4gYCR7eH06KmApIH0pO1xuICAgICAgc3RhdGVtZW50LmFkZEFueVByaW5jaXBhbCgpO1xuICAgICAgdGhpcy5fcmVhZFdyaXRlU3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gICAgfVxuXG4gICAgLy8gRkVERVJBVEVEIC8gUkVBRFdSSVRFU1VQRVJcbiAgICBpZiAocHJvcHMucmVhZFdyaXRlU3VwZXJSb2xlSWRzICE9IHVuZGVmaW5lZCAmJiBwcm9wcy5yZWFkV3JpdGVTdXBlclJvbGVJZHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5fcmVhZFdyaXRlU3VwZXJTdGF0ZW1lbnRTY2FmZm9sZChwcm9wcyk7XG4gICAgICBzdGF0ZW1lbnQuYWRkQ29uZGl0aW9uKCdTdHJpbmdMaWtlJywgeyAnYXdzOnVzZXJJZCc6IHByb3BzLnJlYWRXcml0ZVN1cGVyUm9sZUlkcy5tYXAoeCA9PiBgJHt4fToqYCkgfSk7XG4gICAgICBzdGF0ZW1lbnQuYWRkQW55UHJpbmNpcGFsKCk7XG4gICAgICB0aGlzLl9yZWFkV3JpdGVTdXBlclN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgIH1cblxuICAgIC8vIE5PTkZFREVSQVRFRCAvIFJFQURcbiAgICBpZiAocHJvcHMucmVhZFByaW5jaXBhbHMgIT0gdW5kZWZpbmVkICYmIHByb3BzLnJlYWRQcmluY2lwYWxzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuX3JlYWRTdGF0ZW1lbnRTY2FmZm9sZChwcm9wcyk7XG4gICAgICBwcm9wcy5yZWFkUHJpbmNpcGFscy5mb3JFYWNoKHByaW5jaXBhbCA9PiB7XG4gICAgICAgIHN0YXRlbWVudC5hZGRQcmluY2lwYWxzKHByaW5jaXBhbCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX3JlYWRTdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICB9XG4gICAgLy8gTk9ORkVERVJBVEVEIC8gUkVBRFdSSVRFXG4gICAgaWYgKHByb3BzLnJlYWRXcml0ZVByaW5jaXBhbHMgIT0gdW5kZWZpbmVkICYmIHByb3BzLnJlYWRXcml0ZVByaW5jaXBhbHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5fcmVhZFdyaXRlU3RhdGVtZW50U2NhZmZvbGQocHJvcHMpO1xuICAgICAgcHJvcHMucmVhZFdyaXRlUHJpbmNpcGFscy5mb3JFYWNoKHByaW5jaXBhbCA9PiB7XG4gICAgICAgIHN0YXRlbWVudC5hZGRQcmluY2lwYWxzKHByaW5jaXBhbCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX3JlYWRXcml0ZVN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgIH1cbiAgICAvLyBOT05GRURFUkFURUQgLyBSRUFEV1JJVEVTVVBFUlxuICAgIGlmIChwcm9wcy5yZWFkV3JpdGVTdXBlclByaW5jaXBhbHMgIT0gdW5kZWZpbmVkICYmIHByb3BzLnJlYWRXcml0ZVN1cGVyUHJpbmNpcGFscy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLl9yZWFkV3JpdGVTdXBlclN0YXRlbWVudFNjYWZmb2xkKHByb3BzKTtcbiAgICAgIHByb3BzLnJlYWRXcml0ZVN1cGVyUHJpbmNpcGFscy5mb3JFYWNoKHByaW5jaXBhbCA9PiB7XG4gICAgICAgIHN0YXRlbWVudC5hZGRQcmluY2lwYWxzKHByaW5jaXBhbCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX3JlYWRXcml0ZVN1cGVyU3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVhZFN0YXRlbWVudFNjYWZmb2xkKHByb3BzOiBJUmVzdHJpY3RPYmplY3RQcmVmaXhUb1JvbGVzKTogUG9saWN5U3RhdGVtZW50IHtcbiAgICByZXR1cm4gbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICBzaWQ6IGAke3Byb3BzLnMzUHJlZml4LnJlcGxhY2UoL1xcXFxXL2csICcnKX1fUmVhZGAsXG4gICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIHJlc291cmNlczogW3Byb3BzLnMzQnVja2V0LmJ1Y2tldEFybiArIHRoaXMuX2Zvcm1hdHRlZFByZWZpeF0sXG4gICAgICBhY3Rpb25zOiBSZXN0cmljdE9iamVjdFByZWZpeFRvUm9sZXMuUkVBRF9BQ1RJT05TLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVhZFdyaXRlU3RhdGVtZW50U2NhZmZvbGQocHJvcHM6IElSZXN0cmljdE9iamVjdFByZWZpeFRvUm9sZXMpOiBQb2xpY3lTdGF0ZW1lbnQge1xuICAgIHJldHVybiBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHNpZDogYCR7cHJvcHMuczNQcmVmaXgucmVwbGFjZSgvXFxcXFcvZywgJycpfV9SZWFkV3JpdGVgLFxuICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICByZXNvdXJjZXM6IFtwcm9wcy5zM0J1Y2tldC5idWNrZXRBcm4gKyB0aGlzLl9mb3JtYXR0ZWRQcmVmaXhdLFxuICAgICAgYWN0aW9uczogUmVzdHJpY3RPYmplY3RQcmVmaXhUb1JvbGVzLlJFQURfV1JJVEVfQUNUSU9OUyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlYWRXcml0ZVN1cGVyU3RhdGVtZW50U2NhZmZvbGQocHJvcHM6IElSZXN0cmljdE9iamVjdFByZWZpeFRvUm9sZXMpOiBQb2xpY3lTdGF0ZW1lbnQge1xuICAgIHJldHVybiBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHNpZDogYCR7cHJvcHMuczNQcmVmaXgucmVwbGFjZSgvXFxcXFcvZywgJycpfV9SZWFkV3JpdGVTdXBlcmAsXG4gICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIHJlc291cmNlczogW3Byb3BzLnMzQnVja2V0LmJ1Y2tldEFybiArIHRoaXMuX2Zvcm1hdHRlZFByZWZpeF0sXG4gICAgICBhY3Rpb25zOiBSZXN0cmljdE9iamVjdFByZWZpeFRvUm9sZXMuUkVBRF9XUklURV9TVVBFUl9BQ1RJT05TLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJlYWRTdGF0ZW1lbnRzKCk6IFBvbGljeVN0YXRlbWVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZFN0YXRlbWVudHM7XG4gIH1cblxuICBwdWJsaWMgcmVhZFdyaXRlU3RhdGVtZW50cygpOiBQb2xpY3lTdGF0ZW1lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRXcml0ZVN0YXRlbWVudHM7XG4gIH1cblxuICBwdWJsaWMgcmVhZFdyaXRlU3VwZXJTdGF0ZW1lbnRzKCk6IFBvbGljeVN0YXRlbWVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZFdyaXRlU3VwZXJTdGF0ZW1lbnRzO1xuICB9XG5cbiAgcHVibGljIHN0YXRlbWVudHMoKTogUG9saWN5U3RhdGVtZW50W10ge1xuICAgIHJldHVybiBbLi4udGhpcy5fcmVhZFN0YXRlbWVudHMsIC4uLnRoaXMuX3JlYWRXcml0ZVN0YXRlbWVudHMsIC4uLnRoaXMuX3JlYWRXcml0ZVN1cGVyU3RhdGVtZW50c107XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0UzNQcmVmaXgocHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCByYXdQcmVmaXggPSBwcmVmaXg7XG5cbiAgICAvLyBSZW1vdmVzIHRyYWlsaW5nIHNsYXNoZXNcbiAgICByYXdQcmVmaXggPSByYXdQcmVmaXguZW5kc1dpdGgoJy8nKSA/IHJhd1ByZWZpeC5zbGljZSgwLCAtMSkgOiByYXdQcmVmaXg7XG4gICAgLy8gUmVtb3ZlcyBsZWFkaW5nIHNsYXNoZXNcbiAgICByYXdQcmVmaXggPSByYXdQcmVmaXguc3RhcnRzV2l0aCgnLycpID8gcmF3UHJlZml4LnN1YnN0cmluZygxKSA6IHJhd1ByZWZpeDtcbiAgICByZXR1cm4gcmF3UHJlZml4O1xuICB9XG59XG5cbi8qKiBIZWxwZXIgY2xhc3MgZm9yIGdlbmVyYXRpbmcgYnVja2V0IHBvbGljeSBzdGF0ZW1lbnRzXG4gKiB3aGljaCBhbGxvdyBvciBkZW55IGFjY2VzcyB0byBhbiBlbnRpcmUgYnVja2V0LiBVc2VkIHRvXG4gKiBjcmVhdGUgYnVja2V0LWxldmVsIGRlZmF1bHQgZGVueSBzdGF0ZW1lbnRzIHRvIGJsb2NrIGFjY2Vzc2VzXG4gKiBub3QgZ3JhbnRlZCBpbiB0aGUgYnVja2V0IHBvbGljeS4gKi9cbmV4cG9ydCBjbGFzcyBSZXN0cmljdEJ1Y2tldFRvUm9sZXMge1xuICBwdWJsaWMgcmVhZG9ubHkgZGVueVN0YXRlbWVudDogUG9saWN5U3RhdGVtZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgYWxsb3dTdGF0ZW1lbnQ6IFBvbGljeVN0YXRlbWVudDtcbiAgcHJpdmF0ZSByZXNvdXJjZTogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBub3RSZXNvdXJjZTogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBkZW55Q29uZGl0aW9uYWxOb3RFcXVhbHM6IHtcbiAgICAnYXdzOnVzZXJJZCc/OiBzdHJpbmdbXTtcbiAgICAnYXdzOlByaW5jaXBhbEFybic/OiBzdHJpbmdbXTtcbiAgfSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBJUmVzdHJpY3RCdWNrZXRUb1JvbGVzKSB7XG4gICAgLy8gU3RhdGVtZW50IGFsbG93aW5nIGFjY2VzcyB0byB0aGUgYnVja2V0IGZvciB0aGUgQVJPQXNcbiAgICB0aGlzLmFsbG93U3RhdGVtZW50ID0gbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICBzaWQ6IGBCdWNrZXRBbGxvd2AsXG4gICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIHJlc291cmNlczogW3Byb3BzLnMzQnVja2V0LmJ1Y2tldEFybiArICcvKicsIHByb3BzLnMzQnVja2V0LmJ1Y2tldEFybl0sXG4gICAgICBhY3Rpb25zOiBSZXN0cmljdE9iamVjdFByZWZpeFRvUm9sZXMuQlVDS0VUX0FMTE9XX0FDVElPTlMsXG4gICAgfSk7XG4gICAgdGhpcy5hbGxvd1N0YXRlbWVudC5hZGRBbnlQcmluY2lwYWwoKTtcbiAgICB0aGlzLmFsbG93U3RhdGVtZW50LmFkZENvbmRpdGlvbignU3RyaW5nTGlrZScsIHsgJ2F3czp1c2VySWQnOiBwcm9wcy5yb2xlRXhjbHVkZUlkcy5tYXAoeCA9PiBgJHt4fToqYCkgfSk7XG5cbiAgICAvLyBDb25zdHVjdCBvdXIgZGVueSBzdGF0ZW1lbnQuXG4gICAgLy8gcHJlZml4SW5jbHVkZXMgZGVub3RlcyB3ZSB3YW50IHRvIGluY2x1ZGUgYSBwcmVmaXggaW4gb3VyIGRlbnkgbWVhbmluZyBSZXNvdXJjZVxuICAgIGlmIChwcm9wcy5wcmVmaXhJbmNsdWRlcykge1xuICAgICAgdGhpcy5yZXNvdXJjZSA9IHByb3BzLnByZWZpeEluY2x1ZGVzLm1hcChwcmVmaXggPT4ge1xuICAgICAgICByZXR1cm4gYCR7cHJvcHMuczNCdWNrZXQuYnVja2V0QXJufS8ke3RoaXMuZm9ybWF0UzNQcmVmaXgocHJlZml4KX1gO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzb3VyY2UgPSBbcHJvcHMuczNCdWNrZXQuYnVja2V0QXJuICsgJy8qJ107XG4gICAgfVxuICAgIC8vIHByZWZpeEV4Y2x1ZGVzIGRlbm90ZSB3ZSB3YW50IHRvIGV4Y2x1ZGUgYSBwcmVmaXggaW4gb3VyIGRlbnkgbWVhbmluZyBub3RSZXNvdXJjZVxuICAgIGlmIChwcm9wcy5wcmVmaXhFeGNsdWRlcykge1xuICAgICAgdGhpcy5ub3RSZXNvdXJjZSA9IHByb3BzLnByZWZpeEV4Y2x1ZGVzLm1hcChwcmVmaXggPT4ge1xuICAgICAgICByZXR1cm4gYCR7cHJvcHMuczNCdWNrZXQuYnVja2V0QXJufS8ke3RoaXMuZm9ybWF0UzNQcmVmaXgocHJlZml4KX1gO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubm90UmVzb3VyY2UubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5kZW55U3RhdGVtZW50ID0gbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIHNpZDogYEJ1Y2tldERlbnlgLFxuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5ERU5ZLFxuICAgICAgICBub3RSZXNvdXJjZXM6IHRoaXMubm90UmVzb3VyY2UsXG4gICAgICAgIGFjdGlvbnM6IFJlc3RyaWN0T2JqZWN0UHJlZml4VG9Sb2xlcy5CVUNLRVRfREVOWV9BQ1RJT05TLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVueVN0YXRlbWVudCA9IG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBzaWQ6IGBCdWNrZXREZW55YCxcbiAgICAgICAgZWZmZWN0OiBFZmZlY3QuREVOWSxcbiAgICAgICAgcmVzb3VyY2VzOiB0aGlzLnJlc291cmNlLFxuICAgICAgICBhY3Rpb25zOiBSZXN0cmljdE9iamVjdFByZWZpeFRvUm9sZXMuQlVDS0VUX0RFTllfQUNUSU9OUyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmRlbnlTdGF0ZW1lbnQuYWRkQW55UHJpbmNpcGFsKCk7XG5cbiAgICAvLyBCdWlsZCBvdXIgY29uZGl0aW9uYWxzLlxuICAgIHRoaXMuZGVueUNvbmRpdGlvbmFsTm90RXF1YWxzWydhd3M6dXNlcklkJ10gPSBwcm9wcy5yb2xlRXhjbHVkZUlkcy5tYXAoeCA9PiBgJHt4fToqYCk7XG4gICAgaWYgKHByb3BzLnByaW5jaXBhbEV4Y2x1ZGVzICYmIHByb3BzLnByaW5jaXBhbEV4Y2x1ZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZGVueUNvbmRpdGlvbmFsTm90RXF1YWxzWydhd3M6UHJpbmNpcGFsQXJuJ10gPSBbLi4ubmV3IFNldChwcm9wcy5wcmluY2lwYWxFeGNsdWRlcyldLnNvcnQoKGEsIGIpID0+XG4gICAgICAgIGEubG9jYWxlQ29tcGFyZShiKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQ29uc3RydWN0IG91ciBjb25kaXRpb25hbCBmb3Igb3VyIGRlbnlcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5kZW55Q29uZGl0aW9uYWxOb3RFcXVhbHMpLmxlbmd0aCA9PSAxKSB7XG4gICAgICB0aGlzLmRlbnlTdGF0ZW1lbnQuYWRkQ29uZGl0aW9uKCdTdHJpbmdOb3RMaWtlJywgdGhpcy5kZW55Q29uZGl0aW9uYWxOb3RFcXVhbHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlbnlTdGF0ZW1lbnQuYWRkQ29uZGl0aW9uKCdGb3JBbnlWYWx1ZTpTdHJpbmdOb3RMaWtlJywgdGhpcy5kZW55Q29uZGl0aW9uYWxOb3RFcXVhbHMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0UzNQcmVmaXgocHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCByYXdQcmVmaXggPSBwcmVmaXg7XG5cbiAgICAvLyBSZW1vdmVzIHRyYWlsaW5nIHNsYXNoZXNcbiAgICByYXdQcmVmaXggPSByYXdQcmVmaXguZW5kc1dpdGgoJy8nKSA/IHJhd1ByZWZpeC5zbGljZSgwLCAtMSkgOiByYXdQcmVmaXg7XG4gICAgLy8gUmVtb3ZlcyBsZWFkaW5nIHNsYXNoZXNcbiAgICByYXdQcmVmaXggPSByYXdQcmVmaXguc3RhcnRzV2l0aCgnLycpID8gcmF3UHJlZml4LnN1YnN0cmluZygxKSA6IHJhd1ByZWZpeDtcbiAgICByZXR1cm4gYCR7cmF3UHJlZml4fS8qYDtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aws-mdaa/s3-bucketpolicy-helper",
|
|
3
|
+
"description": "MDAA s3-bucketpolicy-helper utility",
|
|
4
|
+
"author": {
|
|
5
|
+
"name": "Amazon Web Services",
|
|
6
|
+
"url": "https://aws.amazon.com/solutions"
|
|
7
|
+
},
|
|
8
|
+
"version": "1.2.0",
|
|
9
|
+
"license": "Apache-2.0",
|
|
10
|
+
"main": "lib/index.js",
|
|
11
|
+
"types": "lib/index.d.ts",
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsc",
|
|
14
|
+
"watch": "tsc -w",
|
|
15
|
+
"test": "jest --passWithNoTests --coverage",
|
|
16
|
+
"lint": "eslint --max-warnings 0 -c ../../../.eslintrc.json '**/*.{ts,tsx}' --ignore-pattern 'dist/*' --ignore-pattern 'node_modules/*' --ignore-pattern \"*.d.ts\" ",
|
|
17
|
+
"test-coverage": "jest --passWithNoTests --coverage"
|
|
18
|
+
},
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"@aws-mdaa/testing": "1.2.0",
|
|
21
|
+
"@types/jest": "29.5.0",
|
|
22
|
+
"@types/node": "17.0.23",
|
|
23
|
+
"@types/prettier": "2.6.0",
|
|
24
|
+
"jest": "29.5.0",
|
|
25
|
+
"ts-jest": "29.1.0",
|
|
26
|
+
"ts-node": "10.9.1",
|
|
27
|
+
"typescript": "4.6.3",
|
|
28
|
+
"typescript-json-schema": "0.63.0"
|
|
29
|
+
},
|
|
30
|
+
"overrides": {
|
|
31
|
+
"aws-cdk-lib": "2.201.0",
|
|
32
|
+
"@types/babel__traverse": "7.18.2"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"@aws-mdaa/iam-role-helper": "1.2.0",
|
|
36
|
+
"@aws-mdaa/naming": "1.2.0",
|
|
37
|
+
"aws-cdk-lib": "2.201.0",
|
|
38
|
+
"cdk-nag": "2.37.1",
|
|
39
|
+
"constructs": "10.0.96"
|
|
40
|
+
},
|
|
41
|
+
"gitHead": "8b49a2b371014baec046605ffdbfe38951099c31",
|
|
42
|
+
"repository": {
|
|
43
|
+
"type": "git",
|
|
44
|
+
"url": "https://github.com/aws/modern-data-architecture-accelerator"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { Database } from '@aws-cdk/aws-glue-alpha';
|
|
6
|
+
import { CfnTable } from 'aws-cdk-lib/aws-glue';
|
|
7
|
+
import { PolicyStatement } from 'aws-cdk-lib/aws-iam';
|
|
8
|
+
import { IBucket, Inventory } from 'aws-cdk-lib/aws-s3';
|
|
9
|
+
import { Construct } from 'constructs';
|
|
10
|
+
export interface BucketInventory {
|
|
11
|
+
/**
|
|
12
|
+
* Q-ENHANCED-PROPERTY
|
|
13
|
+
* Name of the S3 bucket for which inventory data has been generated. Identifies the source bucket in inventory data organization and enables bucket-specific inventory querying through Glue table partitions.
|
|
14
|
+
*
|
|
15
|
+
* Use cases: Source bucket identification; Inventory data organization; Multi-bucket inventory management
|
|
16
|
+
*
|
|
17
|
+
* AWS: AWS S3 bucket name for inventory source identification in Glue table partitions
|
|
18
|
+
*
|
|
19
|
+
* Validation: Must be valid S3 bucket name (3-63 characters, lowercase, no underscores)
|
|
20
|
+
**/
|
|
21
|
+
readonly bucketName: string;
|
|
22
|
+
/**
|
|
23
|
+
* Q-ENHANCED-PROPERTY
|
|
24
|
+
* Name of the S3 inventory configuration that generated the inventory data for the specified bucket. Enables multiple inventory configurations per bucket and organized inventory data management.
|
|
25
|
+
*
|
|
26
|
+
* Use cases: Inventory configuration identification; Multiple inventories per bucket; Inventory data organization
|
|
27
|
+
*
|
|
28
|
+
* AWS: AWS S3 inventory configuration name for inventory data identification in Glue table partitions
|
|
29
|
+
*
|
|
30
|
+
* Validation: Must be valid S3 inventory configuration name matching the inventory ID used in S3 inventory setup
|
|
31
|
+
**/
|
|
32
|
+
readonly inventoryName: string;
|
|
33
|
+
}
|
|
34
|
+
/** Helper class for creating S3 Inventories and associated Glue/Athena resources for querying these inventories. */
|
|
35
|
+
export declare class InventoryHelper {
|
|
36
|
+
/**
|
|
37
|
+
* Helper method for creating an S3 inventory.
|
|
38
|
+
* @param destinationBucket The bucket where S3 inventory data will be written
|
|
39
|
+
* @param inventoryId The S3 inventory ID
|
|
40
|
+
* @param objectsPrefix The object prefix from which inventory will be produced (on the bucket to which the inventory config is applied)
|
|
41
|
+
* @param destinationPrefix The object prefix under which inventory will be written on the destination bucket.
|
|
42
|
+
* @returns An S3 Inventory Config which can be applied to a bucket in order to produce periodic inventory data.
|
|
43
|
+
*/
|
|
44
|
+
static createInvConfig(destinationBucket: IBucket, inventoryId: string, objectsPrefix?: string, destinationPrefix?: string, destinationAccount?: string): Inventory;
|
|
45
|
+
/**
|
|
46
|
+
* Helper method for creating a Glue table which can be used to query inventory data generated by an S3 Inventory config
|
|
47
|
+
* @param scope Stack in which the table will be created
|
|
48
|
+
* @param tableNamePrefix Will be used to prefix the table name.
|
|
49
|
+
* @param locationBucketName The bucket where the inventory data is stored.
|
|
50
|
+
* @param inventoryBucket The bucket for which inventory data has been generated
|
|
51
|
+
* @param database The Glue database in which the table will be created
|
|
52
|
+
* @param inventoryName The name of the S3 Inventory config
|
|
53
|
+
* @param locationPrefix The S3 Prefix on the location bucket where the inventory is stored.
|
|
54
|
+
* @returns A Glue table which can be used to query S3 inventory data in an S3 bucket.
|
|
55
|
+
*/
|
|
56
|
+
static createGlueInvTable(scope: Construct, catalogId: string, tableNamePrefix: string, database: Database, locationBucketName: string, bucketInventories: BucketInventory[], locationPrefix?: string): CfnTable;
|
|
57
|
+
/**
|
|
58
|
+
* Helper method to generate an S3 Bucket Policy Statement allowing S3 service to write inventories to a bucket.
|
|
59
|
+
* @param sourceBucketArn The bucket arn for which inventory data is being produced
|
|
60
|
+
* @param bucketArn The bucket arn where inventory will be stored
|
|
61
|
+
* @param srcAccount The account which owns the source bucket from which inventory is being produced.
|
|
62
|
+
* @param inventoryPrefix The prefix on the destination bucket where inventory data will be stored.
|
|
63
|
+
* @returns A policy statement which permits the S3 service principal to write inventory for the source bucket/account to the destination bucket.
|
|
64
|
+
*/
|
|
65
|
+
static createInventoryBucketPolicyStatement(bucketArn: string, srcAccount: string, sourceBucketArn?: string, inventoryPrefix?: string): PolicyStatement;
|
|
66
|
+
}
|