@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.
Files changed (1071) hide show
  1. package/.jsii +5265 -0
  2. package/README.md +11 -0
  3. package/docs/dataops-job.drawio +45 -0
  4. package/docs/dataops-job.png +0 -0
  5. package/lib/dataops-job-l3-construct.d.ts +344 -0
  6. package/lib/dataops-job-l3-construct.js +295 -0
  7. package/lib/index.d.ts +5 -0
  8. package/lib/index.js +24 -0
  9. package/node_modules/@aws-mdaa/s3-bucketpolicy-helper/README.md +185 -0
  10. package/node_modules/@aws-mdaa/s3-bucketpolicy-helper/lib/index.d.ts +57 -0
  11. package/node_modules/@aws-mdaa/s3-bucketpolicy-helper/lib/index.js +200 -0
  12. package/node_modules/@aws-mdaa/s3-bucketpolicy-helper/package.json +46 -0
  13. package/node_modules/@aws-mdaa/s3-inventory-helper/README.md +3 -0
  14. package/node_modules/@aws-mdaa/s3-inventory-helper/lib/index.d.ts +66 -0
  15. package/node_modules/@aws-mdaa/s3-inventory-helper/lib/index.js +224 -0
  16. package/node_modules/@aws-mdaa/s3-inventory-helper/package.json +46 -0
  17. package/node_modules/lodash/LICENSE +47 -0
  18. package/node_modules/lodash/README.md +39 -0
  19. package/node_modules/lodash/_DataView.js +7 -0
  20. package/node_modules/lodash/_Hash.js +32 -0
  21. package/node_modules/lodash/_LazyWrapper.js +28 -0
  22. package/node_modules/lodash/_ListCache.js +32 -0
  23. package/node_modules/lodash/_LodashWrapper.js +22 -0
  24. package/node_modules/lodash/_Map.js +7 -0
  25. package/node_modules/lodash/_MapCache.js +32 -0
  26. package/node_modules/lodash/_Promise.js +7 -0
  27. package/node_modules/lodash/_Set.js +7 -0
  28. package/node_modules/lodash/_SetCache.js +27 -0
  29. package/node_modules/lodash/_Stack.js +27 -0
  30. package/node_modules/lodash/_Symbol.js +6 -0
  31. package/node_modules/lodash/_Uint8Array.js +6 -0
  32. package/node_modules/lodash/_WeakMap.js +7 -0
  33. package/node_modules/lodash/_apply.js +21 -0
  34. package/node_modules/lodash/_arrayAggregator.js +22 -0
  35. package/node_modules/lodash/_arrayEach.js +22 -0
  36. package/node_modules/lodash/_arrayEachRight.js +21 -0
  37. package/node_modules/lodash/_arrayEvery.js +23 -0
  38. package/node_modules/lodash/_arrayFilter.js +25 -0
  39. package/node_modules/lodash/_arrayIncludes.js +17 -0
  40. package/node_modules/lodash/_arrayIncludesWith.js +22 -0
  41. package/node_modules/lodash/_arrayLikeKeys.js +49 -0
  42. package/node_modules/lodash/_arrayMap.js +21 -0
  43. package/node_modules/lodash/_arrayPush.js +20 -0
  44. package/node_modules/lodash/_arrayReduce.js +26 -0
  45. package/node_modules/lodash/_arrayReduceRight.js +24 -0
  46. package/node_modules/lodash/_arraySample.js +15 -0
  47. package/node_modules/lodash/_arraySampleSize.js +17 -0
  48. package/node_modules/lodash/_arrayShuffle.js +15 -0
  49. package/node_modules/lodash/_arraySome.js +23 -0
  50. package/node_modules/lodash/_asciiSize.js +12 -0
  51. package/node_modules/lodash/_asciiToArray.js +12 -0
  52. package/node_modules/lodash/_asciiWords.js +15 -0
  53. package/node_modules/lodash/_assignMergeValue.js +20 -0
  54. package/node_modules/lodash/_assignValue.js +28 -0
  55. package/node_modules/lodash/_assocIndexOf.js +21 -0
  56. package/node_modules/lodash/_baseAggregator.js +21 -0
  57. package/node_modules/lodash/_baseAssign.js +17 -0
  58. package/node_modules/lodash/_baseAssignIn.js +17 -0
  59. package/node_modules/lodash/_baseAssignValue.js +25 -0
  60. package/node_modules/lodash/_baseAt.js +23 -0
  61. package/node_modules/lodash/_baseClamp.js +22 -0
  62. package/node_modules/lodash/_baseClone.js +166 -0
  63. package/node_modules/lodash/_baseConforms.js +18 -0
  64. package/node_modules/lodash/_baseConformsTo.js +27 -0
  65. package/node_modules/lodash/_baseCreate.js +30 -0
  66. package/node_modules/lodash/_baseDelay.js +21 -0
  67. package/node_modules/lodash/_baseDifference.js +67 -0
  68. package/node_modules/lodash/_baseEach.js +14 -0
  69. package/node_modules/lodash/_baseEachRight.js +14 -0
  70. package/node_modules/lodash/_baseEvery.js +21 -0
  71. package/node_modules/lodash/_baseExtremum.js +32 -0
  72. package/node_modules/lodash/_baseFill.js +32 -0
  73. package/node_modules/lodash/_baseFilter.js +21 -0
  74. package/node_modules/lodash/_baseFindIndex.js +24 -0
  75. package/node_modules/lodash/_baseFindKey.js +23 -0
  76. package/node_modules/lodash/_baseFlatten.js +38 -0
  77. package/node_modules/lodash/_baseFor.js +16 -0
  78. package/node_modules/lodash/_baseForOwn.js +16 -0
  79. package/node_modules/lodash/_baseForOwnRight.js +16 -0
  80. package/node_modules/lodash/_baseForRight.js +15 -0
  81. package/node_modules/lodash/_baseFunctions.js +19 -0
  82. package/node_modules/lodash/_baseGet.js +24 -0
  83. package/node_modules/lodash/_baseGetAllKeys.js +20 -0
  84. package/node_modules/lodash/_baseGetTag.js +28 -0
  85. package/node_modules/lodash/_baseGt.js +14 -0
  86. package/node_modules/lodash/_baseHas.js +19 -0
  87. package/node_modules/lodash/_baseHasIn.js +13 -0
  88. package/node_modules/lodash/_baseInRange.js +18 -0
  89. package/node_modules/lodash/_baseIndexOf.js +20 -0
  90. package/node_modules/lodash/_baseIndexOfWith.js +23 -0
  91. package/node_modules/lodash/_baseIntersection.js +74 -0
  92. package/node_modules/lodash/_baseInverter.js +21 -0
  93. package/node_modules/lodash/_baseInvoke.js +24 -0
  94. package/node_modules/lodash/_baseIsArguments.js +18 -0
  95. package/node_modules/lodash/_baseIsArrayBuffer.js +17 -0
  96. package/node_modules/lodash/_baseIsDate.js +18 -0
  97. package/node_modules/lodash/_baseIsEqual.js +28 -0
  98. package/node_modules/lodash/_baseIsEqualDeep.js +83 -0
  99. package/node_modules/lodash/_baseIsMap.js +18 -0
  100. package/node_modules/lodash/_baseIsMatch.js +62 -0
  101. package/node_modules/lodash/_baseIsNaN.js +12 -0
  102. package/node_modules/lodash/_baseIsNative.js +47 -0
  103. package/node_modules/lodash/_baseIsRegExp.js +18 -0
  104. package/node_modules/lodash/_baseIsSet.js +18 -0
  105. package/node_modules/lodash/_baseIsTypedArray.js +60 -0
  106. package/node_modules/lodash/_baseIteratee.js +31 -0
  107. package/node_modules/lodash/_baseKeys.js +30 -0
  108. package/node_modules/lodash/_baseKeysIn.js +33 -0
  109. package/node_modules/lodash/_baseLodash.js +10 -0
  110. package/node_modules/lodash/_baseLt.js +14 -0
  111. package/node_modules/lodash/_baseMap.js +22 -0
  112. package/node_modules/lodash/_baseMatches.js +22 -0
  113. package/node_modules/lodash/_baseMatchesProperty.js +33 -0
  114. package/node_modules/lodash/_baseMean.js +20 -0
  115. package/node_modules/lodash/_baseMerge.js +42 -0
  116. package/node_modules/lodash/_baseMergeDeep.js +94 -0
  117. package/node_modules/lodash/_baseNth.js +20 -0
  118. package/node_modules/lodash/_baseOrderBy.js +49 -0
  119. package/node_modules/lodash/_basePick.js +19 -0
  120. package/node_modules/lodash/_basePickBy.js +30 -0
  121. package/node_modules/lodash/_baseProperty.js +14 -0
  122. package/node_modules/lodash/_basePropertyDeep.js +16 -0
  123. package/node_modules/lodash/_basePropertyOf.js +14 -0
  124. package/node_modules/lodash/_basePullAll.js +51 -0
  125. package/node_modules/lodash/_basePullAt.js +37 -0
  126. package/node_modules/lodash/_baseRandom.js +18 -0
  127. package/node_modules/lodash/_baseRange.js +28 -0
  128. package/node_modules/lodash/_baseReduce.js +23 -0
  129. package/node_modules/lodash/_baseRepeat.js +35 -0
  130. package/node_modules/lodash/_baseRest.js +17 -0
  131. package/node_modules/lodash/_baseSample.js +15 -0
  132. package/node_modules/lodash/_baseSampleSize.js +18 -0
  133. package/node_modules/lodash/_baseSet.js +51 -0
  134. package/node_modules/lodash/_baseSetData.js +17 -0
  135. package/node_modules/lodash/_baseSetToString.js +22 -0
  136. package/node_modules/lodash/_baseShuffle.js +15 -0
  137. package/node_modules/lodash/_baseSlice.js +31 -0
  138. package/node_modules/lodash/_baseSome.js +22 -0
  139. package/node_modules/lodash/_baseSortBy.js +21 -0
  140. package/node_modules/lodash/_baseSortedIndex.js +42 -0
  141. package/node_modules/lodash/_baseSortedIndexBy.js +67 -0
  142. package/node_modules/lodash/_baseSortedUniq.js +30 -0
  143. package/node_modules/lodash/_baseSum.js +24 -0
  144. package/node_modules/lodash/_baseTimes.js +20 -0
  145. package/node_modules/lodash/_baseToNumber.js +24 -0
  146. package/node_modules/lodash/_baseToPairs.js +18 -0
  147. package/node_modules/lodash/_baseToString.js +37 -0
  148. package/node_modules/lodash/_baseTrim.js +19 -0
  149. package/node_modules/lodash/_baseUnary.js +14 -0
  150. package/node_modules/lodash/_baseUniq.js +72 -0
  151. package/node_modules/lodash/_baseUnset.js +20 -0
  152. package/node_modules/lodash/_baseUpdate.js +18 -0
  153. package/node_modules/lodash/_baseValues.js +19 -0
  154. package/node_modules/lodash/_baseWhile.js +26 -0
  155. package/node_modules/lodash/_baseWrapperValue.js +25 -0
  156. package/node_modules/lodash/_baseXor.js +36 -0
  157. package/node_modules/lodash/_baseZipObject.js +23 -0
  158. package/node_modules/lodash/_cacheHas.js +13 -0
  159. package/node_modules/lodash/_castArrayLikeObject.js +14 -0
  160. package/node_modules/lodash/_castFunction.js +14 -0
  161. package/node_modules/lodash/_castPath.js +21 -0
  162. package/node_modules/lodash/_castRest.js +14 -0
  163. package/node_modules/lodash/_castSlice.js +18 -0
  164. package/node_modules/lodash/_charsEndIndex.js +19 -0
  165. package/node_modules/lodash/_charsStartIndex.js +20 -0
  166. package/node_modules/lodash/_cloneArrayBuffer.js +16 -0
  167. package/node_modules/lodash/_cloneBuffer.js +35 -0
  168. package/node_modules/lodash/_cloneDataView.js +16 -0
  169. package/node_modules/lodash/_cloneRegExp.js +17 -0
  170. package/node_modules/lodash/_cloneSymbol.js +18 -0
  171. package/node_modules/lodash/_cloneTypedArray.js +16 -0
  172. package/node_modules/lodash/_compareAscending.js +41 -0
  173. package/node_modules/lodash/_compareMultiple.js +44 -0
  174. package/node_modules/lodash/_composeArgs.js +39 -0
  175. package/node_modules/lodash/_composeArgsRight.js +41 -0
  176. package/node_modules/lodash/_copyArray.js +20 -0
  177. package/node_modules/lodash/_copyObject.js +40 -0
  178. package/node_modules/lodash/_copySymbols.js +16 -0
  179. package/node_modules/lodash/_copySymbolsIn.js +16 -0
  180. package/node_modules/lodash/_coreJsData.js +6 -0
  181. package/node_modules/lodash/_countHolders.js +21 -0
  182. package/node_modules/lodash/_createAggregator.js +23 -0
  183. package/node_modules/lodash/_createAssigner.js +37 -0
  184. package/node_modules/lodash/_createBaseEach.js +32 -0
  185. package/node_modules/lodash/_createBaseFor.js +25 -0
  186. package/node_modules/lodash/_createBind.js +28 -0
  187. package/node_modules/lodash/_createCaseFirst.js +33 -0
  188. package/node_modules/lodash/_createCompounder.js +24 -0
  189. package/node_modules/lodash/_createCtor.js +37 -0
  190. package/node_modules/lodash/_createCurry.js +46 -0
  191. package/node_modules/lodash/_createFind.js +25 -0
  192. package/node_modules/lodash/_createFlow.js +78 -0
  193. package/node_modules/lodash/_createHybrid.js +92 -0
  194. package/node_modules/lodash/_createInverter.js +17 -0
  195. package/node_modules/lodash/_createMathOperation.js +38 -0
  196. package/node_modules/lodash/_createOver.js +27 -0
  197. package/node_modules/lodash/_createPadding.js +33 -0
  198. package/node_modules/lodash/_createPartial.js +43 -0
  199. package/node_modules/lodash/_createRange.js +30 -0
  200. package/node_modules/lodash/_createRecurry.js +56 -0
  201. package/node_modules/lodash/_createRelationalOperation.js +20 -0
  202. package/node_modules/lodash/_createRound.js +35 -0
  203. package/node_modules/lodash/_createSet.js +19 -0
  204. package/node_modules/lodash/_createToPairs.js +30 -0
  205. package/node_modules/lodash/_createWrap.js +106 -0
  206. package/node_modules/lodash/_customDefaultsAssignIn.js +29 -0
  207. package/node_modules/lodash/_customDefaultsMerge.js +28 -0
  208. package/node_modules/lodash/_customOmitClone.js +16 -0
  209. package/node_modules/lodash/_deburrLetter.js +71 -0
  210. package/node_modules/lodash/_defineProperty.js +11 -0
  211. package/node_modules/lodash/_equalArrays.js +84 -0
  212. package/node_modules/lodash/_equalByTag.js +112 -0
  213. package/node_modules/lodash/_equalObjects.js +90 -0
  214. package/node_modules/lodash/_escapeHtmlChar.js +21 -0
  215. package/node_modules/lodash/_escapeStringChar.js +22 -0
  216. package/node_modules/lodash/_flatRest.js +16 -0
  217. package/node_modules/lodash/_freeGlobal.js +4 -0
  218. package/node_modules/lodash/_getAllKeys.js +16 -0
  219. package/node_modules/lodash/_getAllKeysIn.js +17 -0
  220. package/node_modules/lodash/_getData.js +15 -0
  221. package/node_modules/lodash/_getFuncName.js +31 -0
  222. package/node_modules/lodash/_getHolder.js +13 -0
  223. package/node_modules/lodash/_getMapData.js +18 -0
  224. package/node_modules/lodash/_getMatchData.js +24 -0
  225. package/node_modules/lodash/_getNative.js +17 -0
  226. package/node_modules/lodash/_getPrototype.js +6 -0
  227. package/node_modules/lodash/_getRawTag.js +46 -0
  228. package/node_modules/lodash/_getSymbols.js +30 -0
  229. package/node_modules/lodash/_getSymbolsIn.js +25 -0
  230. package/node_modules/lodash/_getTag.js +58 -0
  231. package/node_modules/lodash/_getValue.js +13 -0
  232. package/node_modules/lodash/_getView.js +33 -0
  233. package/node_modules/lodash/_getWrapDetails.js +17 -0
  234. package/node_modules/lodash/_hasPath.js +39 -0
  235. package/node_modules/lodash/_hasUnicode.js +26 -0
  236. package/node_modules/lodash/_hasUnicodeWord.js +15 -0
  237. package/node_modules/lodash/_hashClear.js +15 -0
  238. package/node_modules/lodash/_hashDelete.js +17 -0
  239. package/node_modules/lodash/_hashGet.js +30 -0
  240. package/node_modules/lodash/_hashHas.js +23 -0
  241. package/node_modules/lodash/_hashSet.js +23 -0
  242. package/node_modules/lodash/_initCloneArray.js +26 -0
  243. package/node_modules/lodash/_initCloneByTag.js +77 -0
  244. package/node_modules/lodash/_initCloneObject.js +18 -0
  245. package/node_modules/lodash/_insertWrapDetails.js +23 -0
  246. package/node_modules/lodash/_isFlattenable.js +20 -0
  247. package/node_modules/lodash/_isIndex.js +25 -0
  248. package/node_modules/lodash/_isIterateeCall.js +30 -0
  249. package/node_modules/lodash/_isKey.js +29 -0
  250. package/node_modules/lodash/_isKeyable.js +15 -0
  251. package/node_modules/lodash/_isLaziable.js +28 -0
  252. package/node_modules/lodash/_isMaskable.js +14 -0
  253. package/node_modules/lodash/_isMasked.js +20 -0
  254. package/node_modules/lodash/_isPrototype.js +18 -0
  255. package/node_modules/lodash/_isStrictComparable.js +15 -0
  256. package/node_modules/lodash/_iteratorToArray.js +18 -0
  257. package/node_modules/lodash/_lazyClone.js +23 -0
  258. package/node_modules/lodash/_lazyReverse.js +23 -0
  259. package/node_modules/lodash/_lazyValue.js +69 -0
  260. package/node_modules/lodash/_listCacheClear.js +13 -0
  261. package/node_modules/lodash/_listCacheDelete.js +35 -0
  262. package/node_modules/lodash/_listCacheGet.js +19 -0
  263. package/node_modules/lodash/_listCacheHas.js +16 -0
  264. package/node_modules/lodash/_listCacheSet.js +26 -0
  265. package/node_modules/lodash/_mapCacheClear.js +21 -0
  266. package/node_modules/lodash/_mapCacheDelete.js +18 -0
  267. package/node_modules/lodash/_mapCacheGet.js +16 -0
  268. package/node_modules/lodash/_mapCacheHas.js +16 -0
  269. package/node_modules/lodash/_mapCacheSet.js +22 -0
  270. package/node_modules/lodash/_mapToArray.js +18 -0
  271. package/node_modules/lodash/_matchesStrictComparable.js +20 -0
  272. package/node_modules/lodash/_memoizeCapped.js +26 -0
  273. package/node_modules/lodash/_mergeData.js +90 -0
  274. package/node_modules/lodash/_metaMap.js +6 -0
  275. package/node_modules/lodash/_nativeCreate.js +6 -0
  276. package/node_modules/lodash/_nativeKeys.js +6 -0
  277. package/node_modules/lodash/_nativeKeysIn.js +20 -0
  278. package/node_modules/lodash/_nodeUtil.js +30 -0
  279. package/node_modules/lodash/_objectToString.js +22 -0
  280. package/node_modules/lodash/_overArg.js +15 -0
  281. package/node_modules/lodash/_overRest.js +36 -0
  282. package/node_modules/lodash/_parent.js +16 -0
  283. package/node_modules/lodash/_reEscape.js +4 -0
  284. package/node_modules/lodash/_reEvaluate.js +4 -0
  285. package/node_modules/lodash/_reInterpolate.js +4 -0
  286. package/node_modules/lodash/_realNames.js +4 -0
  287. package/node_modules/lodash/_reorder.js +29 -0
  288. package/node_modules/lodash/_replaceHolders.js +29 -0
  289. package/node_modules/lodash/_root.js +9 -0
  290. package/node_modules/lodash/_safeGet.js +21 -0
  291. package/node_modules/lodash/_setCacheAdd.js +19 -0
  292. package/node_modules/lodash/_setCacheHas.js +14 -0
  293. package/node_modules/lodash/_setData.js +20 -0
  294. package/node_modules/lodash/_setToArray.js +18 -0
  295. package/node_modules/lodash/_setToPairs.js +18 -0
  296. package/node_modules/lodash/_setToString.js +14 -0
  297. package/node_modules/lodash/_setWrapToString.js +21 -0
  298. package/node_modules/lodash/_shortOut.js +37 -0
  299. package/node_modules/lodash/_shuffleSelf.js +28 -0
  300. package/node_modules/lodash/_stackClear.js +15 -0
  301. package/node_modules/lodash/_stackDelete.js +18 -0
  302. package/node_modules/lodash/_stackGet.js +14 -0
  303. package/node_modules/lodash/_stackHas.js +14 -0
  304. package/node_modules/lodash/_stackSet.js +34 -0
  305. package/node_modules/lodash/_strictIndexOf.js +23 -0
  306. package/node_modules/lodash/_strictLastIndexOf.js +21 -0
  307. package/node_modules/lodash/_stringSize.js +18 -0
  308. package/node_modules/lodash/_stringToArray.js +18 -0
  309. package/node_modules/lodash/_stringToPath.js +27 -0
  310. package/node_modules/lodash/_toKey.js +21 -0
  311. package/node_modules/lodash/_toSource.js +26 -0
  312. package/node_modules/lodash/_trimmedEndIndex.js +19 -0
  313. package/node_modules/lodash/_unescapeHtmlChar.js +21 -0
  314. package/node_modules/lodash/_unicodeSize.js +44 -0
  315. package/node_modules/lodash/_unicodeToArray.js +40 -0
  316. package/node_modules/lodash/_unicodeWords.js +69 -0
  317. package/node_modules/lodash/_updateWrapDetails.js +46 -0
  318. package/node_modules/lodash/_wrapperClone.js +23 -0
  319. package/node_modules/lodash/add.js +22 -0
  320. package/node_modules/lodash/after.js +42 -0
  321. package/node_modules/lodash/array.js +67 -0
  322. package/node_modules/lodash/ary.js +29 -0
  323. package/node_modules/lodash/assign.js +58 -0
  324. package/node_modules/lodash/assignIn.js +40 -0
  325. package/node_modules/lodash/assignInWith.js +38 -0
  326. package/node_modules/lodash/assignWith.js +37 -0
  327. package/node_modules/lodash/at.js +23 -0
  328. package/node_modules/lodash/attempt.js +35 -0
  329. package/node_modules/lodash/before.js +40 -0
  330. package/node_modules/lodash/bind.js +57 -0
  331. package/node_modules/lodash/bindAll.js +41 -0
  332. package/node_modules/lodash/bindKey.js +68 -0
  333. package/node_modules/lodash/camelCase.js +29 -0
  334. package/node_modules/lodash/capitalize.js +23 -0
  335. package/node_modules/lodash/castArray.js +44 -0
  336. package/node_modules/lodash/ceil.js +26 -0
  337. package/node_modules/lodash/chain.js +38 -0
  338. package/node_modules/lodash/chunk.js +50 -0
  339. package/node_modules/lodash/clamp.js +39 -0
  340. package/node_modules/lodash/clone.js +36 -0
  341. package/node_modules/lodash/cloneDeep.js +29 -0
  342. package/node_modules/lodash/cloneDeepWith.js +40 -0
  343. package/node_modules/lodash/cloneWith.js +42 -0
  344. package/node_modules/lodash/collection.js +30 -0
  345. package/node_modules/lodash/commit.js +33 -0
  346. package/node_modules/lodash/compact.js +31 -0
  347. package/node_modules/lodash/concat.js +43 -0
  348. package/node_modules/lodash/cond.js +60 -0
  349. package/node_modules/lodash/conforms.js +35 -0
  350. package/node_modules/lodash/conformsTo.js +32 -0
  351. package/node_modules/lodash/constant.js +26 -0
  352. package/node_modules/lodash/core.js +3877 -0
  353. package/node_modules/lodash/core.min.js +29 -0
  354. package/node_modules/lodash/countBy.js +40 -0
  355. package/node_modules/lodash/create.js +43 -0
  356. package/node_modules/lodash/curry.js +57 -0
  357. package/node_modules/lodash/curryRight.js +54 -0
  358. package/node_modules/lodash/date.js +3 -0
  359. package/node_modules/lodash/debounce.js +191 -0
  360. package/node_modules/lodash/deburr.js +45 -0
  361. package/node_modules/lodash/defaultTo.js +25 -0
  362. package/node_modules/lodash/defaults.js +64 -0
  363. package/node_modules/lodash/defaultsDeep.js +30 -0
  364. package/node_modules/lodash/defer.js +26 -0
  365. package/node_modules/lodash/delay.js +28 -0
  366. package/node_modules/lodash/difference.js +33 -0
  367. package/node_modules/lodash/differenceBy.js +44 -0
  368. package/node_modules/lodash/differenceWith.js +40 -0
  369. package/node_modules/lodash/divide.js +22 -0
  370. package/node_modules/lodash/drop.js +38 -0
  371. package/node_modules/lodash/dropRight.js +39 -0
  372. package/node_modules/lodash/dropRightWhile.js +45 -0
  373. package/node_modules/lodash/dropWhile.js +45 -0
  374. package/node_modules/lodash/each.js +1 -0
  375. package/node_modules/lodash/eachRight.js +1 -0
  376. package/node_modules/lodash/endsWith.js +43 -0
  377. package/node_modules/lodash/entries.js +1 -0
  378. package/node_modules/lodash/entriesIn.js +1 -0
  379. package/node_modules/lodash/eq.js +37 -0
  380. package/node_modules/lodash/escape.js +43 -0
  381. package/node_modules/lodash/escapeRegExp.js +32 -0
  382. package/node_modules/lodash/every.js +56 -0
  383. package/node_modules/lodash/extend.js +1 -0
  384. package/node_modules/lodash/extendWith.js +1 -0
  385. package/node_modules/lodash/fill.js +45 -0
  386. package/node_modules/lodash/filter.js +52 -0
  387. package/node_modules/lodash/find.js +42 -0
  388. package/node_modules/lodash/findIndex.js +55 -0
  389. package/node_modules/lodash/findKey.js +44 -0
  390. package/node_modules/lodash/findLast.js +25 -0
  391. package/node_modules/lodash/findLastIndex.js +59 -0
  392. package/node_modules/lodash/findLastKey.js +44 -0
  393. package/node_modules/lodash/first.js +1 -0
  394. package/node_modules/lodash/flake.lock +40 -0
  395. package/node_modules/lodash/flake.nix +20 -0
  396. package/node_modules/lodash/flatMap.js +29 -0
  397. package/node_modules/lodash/flatMapDeep.js +31 -0
  398. package/node_modules/lodash/flatMapDepth.js +31 -0
  399. package/node_modules/lodash/flatten.js +22 -0
  400. package/node_modules/lodash/flattenDeep.js +25 -0
  401. package/node_modules/lodash/flattenDepth.js +33 -0
  402. package/node_modules/lodash/flip.js +28 -0
  403. package/node_modules/lodash/floor.js +26 -0
  404. package/node_modules/lodash/flow.js +27 -0
  405. package/node_modules/lodash/flowRight.js +26 -0
  406. package/node_modules/lodash/forEach.js +41 -0
  407. package/node_modules/lodash/forEachRight.js +31 -0
  408. package/node_modules/lodash/forIn.js +39 -0
  409. package/node_modules/lodash/forInRight.js +37 -0
  410. package/node_modules/lodash/forOwn.js +36 -0
  411. package/node_modules/lodash/forOwnRight.js +34 -0
  412. package/node_modules/lodash/fp/F.js +1 -0
  413. package/node_modules/lodash/fp/T.js +1 -0
  414. package/node_modules/lodash/fp/__.js +1 -0
  415. package/node_modules/lodash/fp/_baseConvert.js +569 -0
  416. package/node_modules/lodash/fp/_convertBrowser.js +18 -0
  417. package/node_modules/lodash/fp/_falseOptions.js +7 -0
  418. package/node_modules/lodash/fp/_mapping.js +358 -0
  419. package/node_modules/lodash/fp/_util.js +16 -0
  420. package/node_modules/lodash/fp/add.js +5 -0
  421. package/node_modules/lodash/fp/after.js +5 -0
  422. package/node_modules/lodash/fp/all.js +1 -0
  423. package/node_modules/lodash/fp/allPass.js +1 -0
  424. package/node_modules/lodash/fp/always.js +1 -0
  425. package/node_modules/lodash/fp/any.js +1 -0
  426. package/node_modules/lodash/fp/anyPass.js +1 -0
  427. package/node_modules/lodash/fp/apply.js +1 -0
  428. package/node_modules/lodash/fp/array.js +2 -0
  429. package/node_modules/lodash/fp/ary.js +5 -0
  430. package/node_modules/lodash/fp/assign.js +5 -0
  431. package/node_modules/lodash/fp/assignAll.js +5 -0
  432. package/node_modules/lodash/fp/assignAllWith.js +5 -0
  433. package/node_modules/lodash/fp/assignIn.js +5 -0
  434. package/node_modules/lodash/fp/assignInAll.js +5 -0
  435. package/node_modules/lodash/fp/assignInAllWith.js +5 -0
  436. package/node_modules/lodash/fp/assignInWith.js +5 -0
  437. package/node_modules/lodash/fp/assignWith.js +5 -0
  438. package/node_modules/lodash/fp/assoc.js +1 -0
  439. package/node_modules/lodash/fp/assocPath.js +1 -0
  440. package/node_modules/lodash/fp/at.js +5 -0
  441. package/node_modules/lodash/fp/attempt.js +5 -0
  442. package/node_modules/lodash/fp/before.js +5 -0
  443. package/node_modules/lodash/fp/bind.js +5 -0
  444. package/node_modules/lodash/fp/bindAll.js +5 -0
  445. package/node_modules/lodash/fp/bindKey.js +5 -0
  446. package/node_modules/lodash/fp/camelCase.js +5 -0
  447. package/node_modules/lodash/fp/capitalize.js +5 -0
  448. package/node_modules/lodash/fp/castArray.js +5 -0
  449. package/node_modules/lodash/fp/ceil.js +5 -0
  450. package/node_modules/lodash/fp/chain.js +5 -0
  451. package/node_modules/lodash/fp/chunk.js +5 -0
  452. package/node_modules/lodash/fp/clamp.js +5 -0
  453. package/node_modules/lodash/fp/clone.js +5 -0
  454. package/node_modules/lodash/fp/cloneDeep.js +5 -0
  455. package/node_modules/lodash/fp/cloneDeepWith.js +5 -0
  456. package/node_modules/lodash/fp/cloneWith.js +5 -0
  457. package/node_modules/lodash/fp/collection.js +2 -0
  458. package/node_modules/lodash/fp/commit.js +5 -0
  459. package/node_modules/lodash/fp/compact.js +5 -0
  460. package/node_modules/lodash/fp/complement.js +1 -0
  461. package/node_modules/lodash/fp/compose.js +1 -0
  462. package/node_modules/lodash/fp/concat.js +5 -0
  463. package/node_modules/lodash/fp/cond.js +5 -0
  464. package/node_modules/lodash/fp/conforms.js +1 -0
  465. package/node_modules/lodash/fp/conformsTo.js +5 -0
  466. package/node_modules/lodash/fp/constant.js +5 -0
  467. package/node_modules/lodash/fp/contains.js +1 -0
  468. package/node_modules/lodash/fp/convert.js +18 -0
  469. package/node_modules/lodash/fp/countBy.js +5 -0
  470. package/node_modules/lodash/fp/create.js +5 -0
  471. package/node_modules/lodash/fp/curry.js +5 -0
  472. package/node_modules/lodash/fp/curryN.js +5 -0
  473. package/node_modules/lodash/fp/curryRight.js +5 -0
  474. package/node_modules/lodash/fp/curryRightN.js +5 -0
  475. package/node_modules/lodash/fp/date.js +2 -0
  476. package/node_modules/lodash/fp/debounce.js +5 -0
  477. package/node_modules/lodash/fp/deburr.js +5 -0
  478. package/node_modules/lodash/fp/defaultTo.js +5 -0
  479. package/node_modules/lodash/fp/defaults.js +5 -0
  480. package/node_modules/lodash/fp/defaultsAll.js +5 -0
  481. package/node_modules/lodash/fp/defaultsDeep.js +5 -0
  482. package/node_modules/lodash/fp/defaultsDeepAll.js +5 -0
  483. package/node_modules/lodash/fp/defer.js +5 -0
  484. package/node_modules/lodash/fp/delay.js +5 -0
  485. package/node_modules/lodash/fp/difference.js +5 -0
  486. package/node_modules/lodash/fp/differenceBy.js +5 -0
  487. package/node_modules/lodash/fp/differenceWith.js +5 -0
  488. package/node_modules/lodash/fp/dissoc.js +1 -0
  489. package/node_modules/lodash/fp/dissocPath.js +1 -0
  490. package/node_modules/lodash/fp/divide.js +5 -0
  491. package/node_modules/lodash/fp/drop.js +5 -0
  492. package/node_modules/lodash/fp/dropLast.js +1 -0
  493. package/node_modules/lodash/fp/dropLastWhile.js +1 -0
  494. package/node_modules/lodash/fp/dropRight.js +5 -0
  495. package/node_modules/lodash/fp/dropRightWhile.js +5 -0
  496. package/node_modules/lodash/fp/dropWhile.js +5 -0
  497. package/node_modules/lodash/fp/each.js +1 -0
  498. package/node_modules/lodash/fp/eachRight.js +1 -0
  499. package/node_modules/lodash/fp/endsWith.js +5 -0
  500. package/node_modules/lodash/fp/entries.js +1 -0
  501. package/node_modules/lodash/fp/entriesIn.js +1 -0
  502. package/node_modules/lodash/fp/eq.js +5 -0
  503. package/node_modules/lodash/fp/equals.js +1 -0
  504. package/node_modules/lodash/fp/escape.js +5 -0
  505. package/node_modules/lodash/fp/escapeRegExp.js +5 -0
  506. package/node_modules/lodash/fp/every.js +5 -0
  507. package/node_modules/lodash/fp/extend.js +1 -0
  508. package/node_modules/lodash/fp/extendAll.js +1 -0
  509. package/node_modules/lodash/fp/extendAllWith.js +1 -0
  510. package/node_modules/lodash/fp/extendWith.js +1 -0
  511. package/node_modules/lodash/fp/fill.js +5 -0
  512. package/node_modules/lodash/fp/filter.js +5 -0
  513. package/node_modules/lodash/fp/find.js +5 -0
  514. package/node_modules/lodash/fp/findFrom.js +5 -0
  515. package/node_modules/lodash/fp/findIndex.js +5 -0
  516. package/node_modules/lodash/fp/findIndexFrom.js +5 -0
  517. package/node_modules/lodash/fp/findKey.js +5 -0
  518. package/node_modules/lodash/fp/findLast.js +5 -0
  519. package/node_modules/lodash/fp/findLastFrom.js +5 -0
  520. package/node_modules/lodash/fp/findLastIndex.js +5 -0
  521. package/node_modules/lodash/fp/findLastIndexFrom.js +5 -0
  522. package/node_modules/lodash/fp/findLastKey.js +5 -0
  523. package/node_modules/lodash/fp/first.js +1 -0
  524. package/node_modules/lodash/fp/flatMap.js +5 -0
  525. package/node_modules/lodash/fp/flatMapDeep.js +5 -0
  526. package/node_modules/lodash/fp/flatMapDepth.js +5 -0
  527. package/node_modules/lodash/fp/flatten.js +5 -0
  528. package/node_modules/lodash/fp/flattenDeep.js +5 -0
  529. package/node_modules/lodash/fp/flattenDepth.js +5 -0
  530. package/node_modules/lodash/fp/flip.js +5 -0
  531. package/node_modules/lodash/fp/floor.js +5 -0
  532. package/node_modules/lodash/fp/flow.js +5 -0
  533. package/node_modules/lodash/fp/flowRight.js +5 -0
  534. package/node_modules/lodash/fp/forEach.js +5 -0
  535. package/node_modules/lodash/fp/forEachRight.js +5 -0
  536. package/node_modules/lodash/fp/forIn.js +5 -0
  537. package/node_modules/lodash/fp/forInRight.js +5 -0
  538. package/node_modules/lodash/fp/forOwn.js +5 -0
  539. package/node_modules/lodash/fp/forOwnRight.js +5 -0
  540. package/node_modules/lodash/fp/fromPairs.js +5 -0
  541. package/node_modules/lodash/fp/function.js +2 -0
  542. package/node_modules/lodash/fp/functions.js +5 -0
  543. package/node_modules/lodash/fp/functionsIn.js +5 -0
  544. package/node_modules/lodash/fp/get.js +5 -0
  545. package/node_modules/lodash/fp/getOr.js +5 -0
  546. package/node_modules/lodash/fp/groupBy.js +5 -0
  547. package/node_modules/lodash/fp/gt.js +5 -0
  548. package/node_modules/lodash/fp/gte.js +5 -0
  549. package/node_modules/lodash/fp/has.js +5 -0
  550. package/node_modules/lodash/fp/hasIn.js +5 -0
  551. package/node_modules/lodash/fp/head.js +5 -0
  552. package/node_modules/lodash/fp/identical.js +1 -0
  553. package/node_modules/lodash/fp/identity.js +5 -0
  554. package/node_modules/lodash/fp/inRange.js +5 -0
  555. package/node_modules/lodash/fp/includes.js +5 -0
  556. package/node_modules/lodash/fp/includesFrom.js +5 -0
  557. package/node_modules/lodash/fp/indexBy.js +1 -0
  558. package/node_modules/lodash/fp/indexOf.js +5 -0
  559. package/node_modules/lodash/fp/indexOfFrom.js +5 -0
  560. package/node_modules/lodash/fp/init.js +1 -0
  561. package/node_modules/lodash/fp/initial.js +5 -0
  562. package/node_modules/lodash/fp/intersection.js +5 -0
  563. package/node_modules/lodash/fp/intersectionBy.js +5 -0
  564. package/node_modules/lodash/fp/intersectionWith.js +5 -0
  565. package/node_modules/lodash/fp/invert.js +5 -0
  566. package/node_modules/lodash/fp/invertBy.js +5 -0
  567. package/node_modules/lodash/fp/invertObj.js +1 -0
  568. package/node_modules/lodash/fp/invoke.js +5 -0
  569. package/node_modules/lodash/fp/invokeArgs.js +5 -0
  570. package/node_modules/lodash/fp/invokeArgsMap.js +5 -0
  571. package/node_modules/lodash/fp/invokeMap.js +5 -0
  572. package/node_modules/lodash/fp/isArguments.js +5 -0
  573. package/node_modules/lodash/fp/isArray.js +5 -0
  574. package/node_modules/lodash/fp/isArrayBuffer.js +5 -0
  575. package/node_modules/lodash/fp/isArrayLike.js +5 -0
  576. package/node_modules/lodash/fp/isArrayLikeObject.js +5 -0
  577. package/node_modules/lodash/fp/isBoolean.js +5 -0
  578. package/node_modules/lodash/fp/isBuffer.js +5 -0
  579. package/node_modules/lodash/fp/isDate.js +5 -0
  580. package/node_modules/lodash/fp/isElement.js +5 -0
  581. package/node_modules/lodash/fp/isEmpty.js +5 -0
  582. package/node_modules/lodash/fp/isEqual.js +5 -0
  583. package/node_modules/lodash/fp/isEqualWith.js +5 -0
  584. package/node_modules/lodash/fp/isError.js +5 -0
  585. package/node_modules/lodash/fp/isFinite.js +5 -0
  586. package/node_modules/lodash/fp/isFunction.js +5 -0
  587. package/node_modules/lodash/fp/isInteger.js +5 -0
  588. package/node_modules/lodash/fp/isLength.js +5 -0
  589. package/node_modules/lodash/fp/isMap.js +5 -0
  590. package/node_modules/lodash/fp/isMatch.js +5 -0
  591. package/node_modules/lodash/fp/isMatchWith.js +5 -0
  592. package/node_modules/lodash/fp/isNaN.js +5 -0
  593. package/node_modules/lodash/fp/isNative.js +5 -0
  594. package/node_modules/lodash/fp/isNil.js +5 -0
  595. package/node_modules/lodash/fp/isNull.js +5 -0
  596. package/node_modules/lodash/fp/isNumber.js +5 -0
  597. package/node_modules/lodash/fp/isObject.js +5 -0
  598. package/node_modules/lodash/fp/isObjectLike.js +5 -0
  599. package/node_modules/lodash/fp/isPlainObject.js +5 -0
  600. package/node_modules/lodash/fp/isRegExp.js +5 -0
  601. package/node_modules/lodash/fp/isSafeInteger.js +5 -0
  602. package/node_modules/lodash/fp/isSet.js +5 -0
  603. package/node_modules/lodash/fp/isString.js +5 -0
  604. package/node_modules/lodash/fp/isSymbol.js +5 -0
  605. package/node_modules/lodash/fp/isTypedArray.js +5 -0
  606. package/node_modules/lodash/fp/isUndefined.js +5 -0
  607. package/node_modules/lodash/fp/isWeakMap.js +5 -0
  608. package/node_modules/lodash/fp/isWeakSet.js +5 -0
  609. package/node_modules/lodash/fp/iteratee.js +5 -0
  610. package/node_modules/lodash/fp/join.js +5 -0
  611. package/node_modules/lodash/fp/juxt.js +1 -0
  612. package/node_modules/lodash/fp/kebabCase.js +5 -0
  613. package/node_modules/lodash/fp/keyBy.js +5 -0
  614. package/node_modules/lodash/fp/keys.js +5 -0
  615. package/node_modules/lodash/fp/keysIn.js +5 -0
  616. package/node_modules/lodash/fp/lang.js +2 -0
  617. package/node_modules/lodash/fp/last.js +5 -0
  618. package/node_modules/lodash/fp/lastIndexOf.js +5 -0
  619. package/node_modules/lodash/fp/lastIndexOfFrom.js +5 -0
  620. package/node_modules/lodash/fp/lowerCase.js +5 -0
  621. package/node_modules/lodash/fp/lowerFirst.js +5 -0
  622. package/node_modules/lodash/fp/lt.js +5 -0
  623. package/node_modules/lodash/fp/lte.js +5 -0
  624. package/node_modules/lodash/fp/map.js +5 -0
  625. package/node_modules/lodash/fp/mapKeys.js +5 -0
  626. package/node_modules/lodash/fp/mapValues.js +5 -0
  627. package/node_modules/lodash/fp/matches.js +1 -0
  628. package/node_modules/lodash/fp/matchesProperty.js +5 -0
  629. package/node_modules/lodash/fp/math.js +2 -0
  630. package/node_modules/lodash/fp/max.js +5 -0
  631. package/node_modules/lodash/fp/maxBy.js +5 -0
  632. package/node_modules/lodash/fp/mean.js +5 -0
  633. package/node_modules/lodash/fp/meanBy.js +5 -0
  634. package/node_modules/lodash/fp/memoize.js +5 -0
  635. package/node_modules/lodash/fp/merge.js +5 -0
  636. package/node_modules/lodash/fp/mergeAll.js +5 -0
  637. package/node_modules/lodash/fp/mergeAllWith.js +5 -0
  638. package/node_modules/lodash/fp/mergeWith.js +5 -0
  639. package/node_modules/lodash/fp/method.js +5 -0
  640. package/node_modules/lodash/fp/methodOf.js +5 -0
  641. package/node_modules/lodash/fp/min.js +5 -0
  642. package/node_modules/lodash/fp/minBy.js +5 -0
  643. package/node_modules/lodash/fp/mixin.js +5 -0
  644. package/node_modules/lodash/fp/multiply.js +5 -0
  645. package/node_modules/lodash/fp/nAry.js +1 -0
  646. package/node_modules/lodash/fp/negate.js +5 -0
  647. package/node_modules/lodash/fp/next.js +5 -0
  648. package/node_modules/lodash/fp/noop.js +5 -0
  649. package/node_modules/lodash/fp/now.js +5 -0
  650. package/node_modules/lodash/fp/nth.js +5 -0
  651. package/node_modules/lodash/fp/nthArg.js +5 -0
  652. package/node_modules/lodash/fp/number.js +2 -0
  653. package/node_modules/lodash/fp/object.js +2 -0
  654. package/node_modules/lodash/fp/omit.js +5 -0
  655. package/node_modules/lodash/fp/omitAll.js +1 -0
  656. package/node_modules/lodash/fp/omitBy.js +5 -0
  657. package/node_modules/lodash/fp/once.js +5 -0
  658. package/node_modules/lodash/fp/orderBy.js +5 -0
  659. package/node_modules/lodash/fp/over.js +5 -0
  660. package/node_modules/lodash/fp/overArgs.js +5 -0
  661. package/node_modules/lodash/fp/overEvery.js +5 -0
  662. package/node_modules/lodash/fp/overSome.js +5 -0
  663. package/node_modules/lodash/fp/pad.js +5 -0
  664. package/node_modules/lodash/fp/padChars.js +5 -0
  665. package/node_modules/lodash/fp/padCharsEnd.js +5 -0
  666. package/node_modules/lodash/fp/padCharsStart.js +5 -0
  667. package/node_modules/lodash/fp/padEnd.js +5 -0
  668. package/node_modules/lodash/fp/padStart.js +5 -0
  669. package/node_modules/lodash/fp/parseInt.js +5 -0
  670. package/node_modules/lodash/fp/partial.js +5 -0
  671. package/node_modules/lodash/fp/partialRight.js +5 -0
  672. package/node_modules/lodash/fp/partition.js +5 -0
  673. package/node_modules/lodash/fp/path.js +1 -0
  674. package/node_modules/lodash/fp/pathEq.js +1 -0
  675. package/node_modules/lodash/fp/pathOr.js +1 -0
  676. package/node_modules/lodash/fp/paths.js +1 -0
  677. package/node_modules/lodash/fp/pick.js +5 -0
  678. package/node_modules/lodash/fp/pickAll.js +1 -0
  679. package/node_modules/lodash/fp/pickBy.js +5 -0
  680. package/node_modules/lodash/fp/pipe.js +1 -0
  681. package/node_modules/lodash/fp/placeholder.js +6 -0
  682. package/node_modules/lodash/fp/plant.js +5 -0
  683. package/node_modules/lodash/fp/pluck.js +1 -0
  684. package/node_modules/lodash/fp/prop.js +1 -0
  685. package/node_modules/lodash/fp/propEq.js +1 -0
  686. package/node_modules/lodash/fp/propOr.js +1 -0
  687. package/node_modules/lodash/fp/property.js +1 -0
  688. package/node_modules/lodash/fp/propertyOf.js +5 -0
  689. package/node_modules/lodash/fp/props.js +1 -0
  690. package/node_modules/lodash/fp/pull.js +5 -0
  691. package/node_modules/lodash/fp/pullAll.js +5 -0
  692. package/node_modules/lodash/fp/pullAllBy.js +5 -0
  693. package/node_modules/lodash/fp/pullAllWith.js +5 -0
  694. package/node_modules/lodash/fp/pullAt.js +5 -0
  695. package/node_modules/lodash/fp/random.js +5 -0
  696. package/node_modules/lodash/fp/range.js +5 -0
  697. package/node_modules/lodash/fp/rangeRight.js +5 -0
  698. package/node_modules/lodash/fp/rangeStep.js +5 -0
  699. package/node_modules/lodash/fp/rangeStepRight.js +5 -0
  700. package/node_modules/lodash/fp/rearg.js +5 -0
  701. package/node_modules/lodash/fp/reduce.js +5 -0
  702. package/node_modules/lodash/fp/reduceRight.js +5 -0
  703. package/node_modules/lodash/fp/reject.js +5 -0
  704. package/node_modules/lodash/fp/remove.js +5 -0
  705. package/node_modules/lodash/fp/repeat.js +5 -0
  706. package/node_modules/lodash/fp/replace.js +5 -0
  707. package/node_modules/lodash/fp/rest.js +5 -0
  708. package/node_modules/lodash/fp/restFrom.js +5 -0
  709. package/node_modules/lodash/fp/result.js +5 -0
  710. package/node_modules/lodash/fp/reverse.js +5 -0
  711. package/node_modules/lodash/fp/round.js +5 -0
  712. package/node_modules/lodash/fp/sample.js +5 -0
  713. package/node_modules/lodash/fp/sampleSize.js +5 -0
  714. package/node_modules/lodash/fp/seq.js +2 -0
  715. package/node_modules/lodash/fp/set.js +5 -0
  716. package/node_modules/lodash/fp/setWith.js +5 -0
  717. package/node_modules/lodash/fp/shuffle.js +5 -0
  718. package/node_modules/lodash/fp/size.js +5 -0
  719. package/node_modules/lodash/fp/slice.js +5 -0
  720. package/node_modules/lodash/fp/snakeCase.js +5 -0
  721. package/node_modules/lodash/fp/some.js +5 -0
  722. package/node_modules/lodash/fp/sortBy.js +5 -0
  723. package/node_modules/lodash/fp/sortedIndex.js +5 -0
  724. package/node_modules/lodash/fp/sortedIndexBy.js +5 -0
  725. package/node_modules/lodash/fp/sortedIndexOf.js +5 -0
  726. package/node_modules/lodash/fp/sortedLastIndex.js +5 -0
  727. package/node_modules/lodash/fp/sortedLastIndexBy.js +5 -0
  728. package/node_modules/lodash/fp/sortedLastIndexOf.js +5 -0
  729. package/node_modules/lodash/fp/sortedUniq.js +5 -0
  730. package/node_modules/lodash/fp/sortedUniqBy.js +5 -0
  731. package/node_modules/lodash/fp/split.js +5 -0
  732. package/node_modules/lodash/fp/spread.js +5 -0
  733. package/node_modules/lodash/fp/spreadFrom.js +5 -0
  734. package/node_modules/lodash/fp/startCase.js +5 -0
  735. package/node_modules/lodash/fp/startsWith.js +5 -0
  736. package/node_modules/lodash/fp/string.js +2 -0
  737. package/node_modules/lodash/fp/stubArray.js +5 -0
  738. package/node_modules/lodash/fp/stubFalse.js +5 -0
  739. package/node_modules/lodash/fp/stubObject.js +5 -0
  740. package/node_modules/lodash/fp/stubString.js +5 -0
  741. package/node_modules/lodash/fp/stubTrue.js +5 -0
  742. package/node_modules/lodash/fp/subtract.js +5 -0
  743. package/node_modules/lodash/fp/sum.js +5 -0
  744. package/node_modules/lodash/fp/sumBy.js +5 -0
  745. package/node_modules/lodash/fp/symmetricDifference.js +1 -0
  746. package/node_modules/lodash/fp/symmetricDifferenceBy.js +1 -0
  747. package/node_modules/lodash/fp/symmetricDifferenceWith.js +1 -0
  748. package/node_modules/lodash/fp/tail.js +5 -0
  749. package/node_modules/lodash/fp/take.js +5 -0
  750. package/node_modules/lodash/fp/takeLast.js +1 -0
  751. package/node_modules/lodash/fp/takeLastWhile.js +1 -0
  752. package/node_modules/lodash/fp/takeRight.js +5 -0
  753. package/node_modules/lodash/fp/takeRightWhile.js +5 -0
  754. package/node_modules/lodash/fp/takeWhile.js +5 -0
  755. package/node_modules/lodash/fp/tap.js +5 -0
  756. package/node_modules/lodash/fp/template.js +5 -0
  757. package/node_modules/lodash/fp/templateSettings.js +5 -0
  758. package/node_modules/lodash/fp/throttle.js +5 -0
  759. package/node_modules/lodash/fp/thru.js +5 -0
  760. package/node_modules/lodash/fp/times.js +5 -0
  761. package/node_modules/lodash/fp/toArray.js +5 -0
  762. package/node_modules/lodash/fp/toFinite.js +5 -0
  763. package/node_modules/lodash/fp/toInteger.js +5 -0
  764. package/node_modules/lodash/fp/toIterator.js +5 -0
  765. package/node_modules/lodash/fp/toJSON.js +5 -0
  766. package/node_modules/lodash/fp/toLength.js +5 -0
  767. package/node_modules/lodash/fp/toLower.js +5 -0
  768. package/node_modules/lodash/fp/toNumber.js +5 -0
  769. package/node_modules/lodash/fp/toPairs.js +5 -0
  770. package/node_modules/lodash/fp/toPairsIn.js +5 -0
  771. package/node_modules/lodash/fp/toPath.js +5 -0
  772. package/node_modules/lodash/fp/toPlainObject.js +5 -0
  773. package/node_modules/lodash/fp/toSafeInteger.js +5 -0
  774. package/node_modules/lodash/fp/toString.js +5 -0
  775. package/node_modules/lodash/fp/toUpper.js +5 -0
  776. package/node_modules/lodash/fp/transform.js +5 -0
  777. package/node_modules/lodash/fp/trim.js +5 -0
  778. package/node_modules/lodash/fp/trimChars.js +5 -0
  779. package/node_modules/lodash/fp/trimCharsEnd.js +5 -0
  780. package/node_modules/lodash/fp/trimCharsStart.js +5 -0
  781. package/node_modules/lodash/fp/trimEnd.js +5 -0
  782. package/node_modules/lodash/fp/trimStart.js +5 -0
  783. package/node_modules/lodash/fp/truncate.js +5 -0
  784. package/node_modules/lodash/fp/unapply.js +1 -0
  785. package/node_modules/lodash/fp/unary.js +5 -0
  786. package/node_modules/lodash/fp/unescape.js +5 -0
  787. package/node_modules/lodash/fp/union.js +5 -0
  788. package/node_modules/lodash/fp/unionBy.js +5 -0
  789. package/node_modules/lodash/fp/unionWith.js +5 -0
  790. package/node_modules/lodash/fp/uniq.js +5 -0
  791. package/node_modules/lodash/fp/uniqBy.js +5 -0
  792. package/node_modules/lodash/fp/uniqWith.js +5 -0
  793. package/node_modules/lodash/fp/uniqueId.js +5 -0
  794. package/node_modules/lodash/fp/unnest.js +1 -0
  795. package/node_modules/lodash/fp/unset.js +5 -0
  796. package/node_modules/lodash/fp/unzip.js +5 -0
  797. package/node_modules/lodash/fp/unzipWith.js +5 -0
  798. package/node_modules/lodash/fp/update.js +5 -0
  799. package/node_modules/lodash/fp/updateWith.js +5 -0
  800. package/node_modules/lodash/fp/upperCase.js +5 -0
  801. package/node_modules/lodash/fp/upperFirst.js +5 -0
  802. package/node_modules/lodash/fp/useWith.js +1 -0
  803. package/node_modules/lodash/fp/util.js +2 -0
  804. package/node_modules/lodash/fp/value.js +5 -0
  805. package/node_modules/lodash/fp/valueOf.js +5 -0
  806. package/node_modules/lodash/fp/values.js +5 -0
  807. package/node_modules/lodash/fp/valuesIn.js +5 -0
  808. package/node_modules/lodash/fp/where.js +1 -0
  809. package/node_modules/lodash/fp/whereEq.js +1 -0
  810. package/node_modules/lodash/fp/without.js +5 -0
  811. package/node_modules/lodash/fp/words.js +5 -0
  812. package/node_modules/lodash/fp/wrap.js +5 -0
  813. package/node_modules/lodash/fp/wrapperAt.js +5 -0
  814. package/node_modules/lodash/fp/wrapperChain.js +5 -0
  815. package/node_modules/lodash/fp/wrapperLodash.js +5 -0
  816. package/node_modules/lodash/fp/wrapperReverse.js +5 -0
  817. package/node_modules/lodash/fp/wrapperValue.js +5 -0
  818. package/node_modules/lodash/fp/xor.js +5 -0
  819. package/node_modules/lodash/fp/xorBy.js +5 -0
  820. package/node_modules/lodash/fp/xorWith.js +5 -0
  821. package/node_modules/lodash/fp/zip.js +5 -0
  822. package/node_modules/lodash/fp/zipAll.js +5 -0
  823. package/node_modules/lodash/fp/zipObj.js +1 -0
  824. package/node_modules/lodash/fp/zipObject.js +5 -0
  825. package/node_modules/lodash/fp/zipObjectDeep.js +5 -0
  826. package/node_modules/lodash/fp/zipWith.js +5 -0
  827. package/node_modules/lodash/fp.js +2 -0
  828. package/node_modules/lodash/fromPairs.js +28 -0
  829. package/node_modules/lodash/function.js +25 -0
  830. package/node_modules/lodash/functions.js +31 -0
  831. package/node_modules/lodash/functionsIn.js +31 -0
  832. package/node_modules/lodash/get.js +33 -0
  833. package/node_modules/lodash/groupBy.js +41 -0
  834. package/node_modules/lodash/gt.js +29 -0
  835. package/node_modules/lodash/gte.js +30 -0
  836. package/node_modules/lodash/has.js +35 -0
  837. package/node_modules/lodash/hasIn.js +34 -0
  838. package/node_modules/lodash/head.js +23 -0
  839. package/node_modules/lodash/identity.js +21 -0
  840. package/node_modules/lodash/inRange.js +55 -0
  841. package/node_modules/lodash/includes.js +53 -0
  842. package/node_modules/lodash/index.js +1 -0
  843. package/node_modules/lodash/indexOf.js +42 -0
  844. package/node_modules/lodash/initial.js +22 -0
  845. package/node_modules/lodash/intersection.js +30 -0
  846. package/node_modules/lodash/intersectionBy.js +45 -0
  847. package/node_modules/lodash/intersectionWith.js +41 -0
  848. package/node_modules/lodash/invert.js +42 -0
  849. package/node_modules/lodash/invertBy.js +56 -0
  850. package/node_modules/lodash/invoke.js +24 -0
  851. package/node_modules/lodash/invokeMap.js +41 -0
  852. package/node_modules/lodash/isArguments.js +36 -0
  853. package/node_modules/lodash/isArray.js +26 -0
  854. package/node_modules/lodash/isArrayBuffer.js +27 -0
  855. package/node_modules/lodash/isArrayLike.js +33 -0
  856. package/node_modules/lodash/isArrayLikeObject.js +33 -0
  857. package/node_modules/lodash/isBoolean.js +29 -0
  858. package/node_modules/lodash/isBuffer.js +38 -0
  859. package/node_modules/lodash/isDate.js +27 -0
  860. package/node_modules/lodash/isElement.js +25 -0
  861. package/node_modules/lodash/isEmpty.js +77 -0
  862. package/node_modules/lodash/isEqual.js +35 -0
  863. package/node_modules/lodash/isEqualWith.js +41 -0
  864. package/node_modules/lodash/isError.js +36 -0
  865. package/node_modules/lodash/isFinite.js +36 -0
  866. package/node_modules/lodash/isFunction.js +37 -0
  867. package/node_modules/lodash/isInteger.js +33 -0
  868. package/node_modules/lodash/isLength.js +35 -0
  869. package/node_modules/lodash/isMap.js +27 -0
  870. package/node_modules/lodash/isMatch.js +36 -0
  871. package/node_modules/lodash/isMatchWith.js +41 -0
  872. package/node_modules/lodash/isNaN.js +38 -0
  873. package/node_modules/lodash/isNative.js +40 -0
  874. package/node_modules/lodash/isNil.js +25 -0
  875. package/node_modules/lodash/isNull.js +22 -0
  876. package/node_modules/lodash/isNumber.js +38 -0
  877. package/node_modules/lodash/isObject.js +31 -0
  878. package/node_modules/lodash/isObjectLike.js +29 -0
  879. package/node_modules/lodash/isPlainObject.js +62 -0
  880. package/node_modules/lodash/isRegExp.js +27 -0
  881. package/node_modules/lodash/isSafeInteger.js +37 -0
  882. package/node_modules/lodash/isSet.js +27 -0
  883. package/node_modules/lodash/isString.js +30 -0
  884. package/node_modules/lodash/isSymbol.js +29 -0
  885. package/node_modules/lodash/isTypedArray.js +27 -0
  886. package/node_modules/lodash/isUndefined.js +22 -0
  887. package/node_modules/lodash/isWeakMap.js +28 -0
  888. package/node_modules/lodash/isWeakSet.js +28 -0
  889. package/node_modules/lodash/iteratee.js +53 -0
  890. package/node_modules/lodash/join.js +26 -0
  891. package/node_modules/lodash/kebabCase.js +28 -0
  892. package/node_modules/lodash/keyBy.js +36 -0
  893. package/node_modules/lodash/keys.js +37 -0
  894. package/node_modules/lodash/keysIn.js +32 -0
  895. package/node_modules/lodash/lang.js +58 -0
  896. package/node_modules/lodash/last.js +20 -0
  897. package/node_modules/lodash/lastIndexOf.js +46 -0
  898. package/node_modules/lodash/lodash.js +17209 -0
  899. package/node_modules/lodash/lodash.min.js +140 -0
  900. package/node_modules/lodash/lowerCase.js +27 -0
  901. package/node_modules/lodash/lowerFirst.js +22 -0
  902. package/node_modules/lodash/lt.js +29 -0
  903. package/node_modules/lodash/lte.js +30 -0
  904. package/node_modules/lodash/map.js +53 -0
  905. package/node_modules/lodash/mapKeys.js +36 -0
  906. package/node_modules/lodash/mapValues.js +43 -0
  907. package/node_modules/lodash/matches.js +46 -0
  908. package/node_modules/lodash/matchesProperty.js +44 -0
  909. package/node_modules/lodash/math.js +17 -0
  910. package/node_modules/lodash/max.js +29 -0
  911. package/node_modules/lodash/maxBy.js +34 -0
  912. package/node_modules/lodash/mean.js +22 -0
  913. package/node_modules/lodash/meanBy.js +31 -0
  914. package/node_modules/lodash/memoize.js +73 -0
  915. package/node_modules/lodash/merge.js +39 -0
  916. package/node_modules/lodash/mergeWith.js +39 -0
  917. package/node_modules/lodash/method.js +34 -0
  918. package/node_modules/lodash/methodOf.js +33 -0
  919. package/node_modules/lodash/min.js +29 -0
  920. package/node_modules/lodash/minBy.js +34 -0
  921. package/node_modules/lodash/mixin.js +74 -0
  922. package/node_modules/lodash/multiply.js +22 -0
  923. package/node_modules/lodash/negate.js +40 -0
  924. package/node_modules/lodash/next.js +35 -0
  925. package/node_modules/lodash/noop.js +17 -0
  926. package/node_modules/lodash/now.js +23 -0
  927. package/node_modules/lodash/nth.js +29 -0
  928. package/node_modules/lodash/nthArg.js +32 -0
  929. package/node_modules/lodash/number.js +5 -0
  930. package/node_modules/lodash/object.js +49 -0
  931. package/node_modules/lodash/omit.js +57 -0
  932. package/node_modules/lodash/omitBy.js +29 -0
  933. package/node_modules/lodash/once.js +25 -0
  934. package/node_modules/lodash/orderBy.js +47 -0
  935. package/node_modules/lodash/over.js +24 -0
  936. package/node_modules/lodash/overArgs.js +61 -0
  937. package/node_modules/lodash/overEvery.js +34 -0
  938. package/node_modules/lodash/overSome.js +37 -0
  939. package/node_modules/lodash/package.json +17 -0
  940. package/node_modules/lodash/pad.js +49 -0
  941. package/node_modules/lodash/padEnd.js +39 -0
  942. package/node_modules/lodash/padStart.js +39 -0
  943. package/node_modules/lodash/parseInt.js +43 -0
  944. package/node_modules/lodash/partial.js +50 -0
  945. package/node_modules/lodash/partialRight.js +49 -0
  946. package/node_modules/lodash/partition.js +43 -0
  947. package/node_modules/lodash/pick.js +25 -0
  948. package/node_modules/lodash/pickBy.js +37 -0
  949. package/node_modules/lodash/plant.js +48 -0
  950. package/node_modules/lodash/property.js +32 -0
  951. package/node_modules/lodash/propertyOf.js +30 -0
  952. package/node_modules/lodash/pull.js +29 -0
  953. package/node_modules/lodash/pullAll.js +29 -0
  954. package/node_modules/lodash/pullAllBy.js +33 -0
  955. package/node_modules/lodash/pullAllWith.js +32 -0
  956. package/node_modules/lodash/pullAt.js +43 -0
  957. package/node_modules/lodash/random.js +82 -0
  958. package/node_modules/lodash/range.js +46 -0
  959. package/node_modules/lodash/rangeRight.js +41 -0
  960. package/node_modules/lodash/rearg.js +33 -0
  961. package/node_modules/lodash/reduce.js +51 -0
  962. package/node_modules/lodash/reduceRight.js +36 -0
  963. package/node_modules/lodash/reject.js +46 -0
  964. package/node_modules/lodash/release.md +48 -0
  965. package/node_modules/lodash/remove.js +53 -0
  966. package/node_modules/lodash/repeat.js +37 -0
  967. package/node_modules/lodash/replace.js +29 -0
  968. package/node_modules/lodash/rest.js +40 -0
  969. package/node_modules/lodash/result.js +56 -0
  970. package/node_modules/lodash/reverse.js +34 -0
  971. package/node_modules/lodash/round.js +26 -0
  972. package/node_modules/lodash/sample.js +24 -0
  973. package/node_modules/lodash/sampleSize.js +37 -0
  974. package/node_modules/lodash/seq.js +16 -0
  975. package/node_modules/lodash/set.js +35 -0
  976. package/node_modules/lodash/setWith.js +32 -0
  977. package/node_modules/lodash/shuffle.js +25 -0
  978. package/node_modules/lodash/size.js +46 -0
  979. package/node_modules/lodash/slice.js +37 -0
  980. package/node_modules/lodash/snakeCase.js +28 -0
  981. package/node_modules/lodash/some.js +51 -0
  982. package/node_modules/lodash/sortBy.js +48 -0
  983. package/node_modules/lodash/sortedIndex.js +24 -0
  984. package/node_modules/lodash/sortedIndexBy.js +33 -0
  985. package/node_modules/lodash/sortedIndexOf.js +31 -0
  986. package/node_modules/lodash/sortedLastIndex.js +25 -0
  987. package/node_modules/lodash/sortedLastIndexBy.js +33 -0
  988. package/node_modules/lodash/sortedLastIndexOf.js +31 -0
  989. package/node_modules/lodash/sortedUniq.js +24 -0
  990. package/node_modules/lodash/sortedUniqBy.js +26 -0
  991. package/node_modules/lodash/split.js +52 -0
  992. package/node_modules/lodash/spread.js +63 -0
  993. package/node_modules/lodash/startCase.js +29 -0
  994. package/node_modules/lodash/startsWith.js +39 -0
  995. package/node_modules/lodash/string.js +33 -0
  996. package/node_modules/lodash/stubArray.js +23 -0
  997. package/node_modules/lodash/stubFalse.js +18 -0
  998. package/node_modules/lodash/stubObject.js +23 -0
  999. package/node_modules/lodash/stubString.js +18 -0
  1000. package/node_modules/lodash/stubTrue.js +18 -0
  1001. package/node_modules/lodash/subtract.js +22 -0
  1002. package/node_modules/lodash/sum.js +24 -0
  1003. package/node_modules/lodash/sumBy.js +33 -0
  1004. package/node_modules/lodash/tail.js +22 -0
  1005. package/node_modules/lodash/take.js +37 -0
  1006. package/node_modules/lodash/takeRight.js +39 -0
  1007. package/node_modules/lodash/takeRightWhile.js +45 -0
  1008. package/node_modules/lodash/takeWhile.js +45 -0
  1009. package/node_modules/lodash/tap.js +29 -0
  1010. package/node_modules/lodash/template.js +272 -0
  1011. package/node_modules/lodash/templateSettings.js +67 -0
  1012. package/node_modules/lodash/throttle.js +69 -0
  1013. package/node_modules/lodash/thru.js +28 -0
  1014. package/node_modules/lodash/times.js +51 -0
  1015. package/node_modules/lodash/toArray.js +58 -0
  1016. package/node_modules/lodash/toFinite.js +42 -0
  1017. package/node_modules/lodash/toInteger.js +36 -0
  1018. package/node_modules/lodash/toIterator.js +23 -0
  1019. package/node_modules/lodash/toJSON.js +1 -0
  1020. package/node_modules/lodash/toLength.js +38 -0
  1021. package/node_modules/lodash/toLower.js +28 -0
  1022. package/node_modules/lodash/toNumber.js +64 -0
  1023. package/node_modules/lodash/toPairs.js +30 -0
  1024. package/node_modules/lodash/toPairsIn.js +30 -0
  1025. package/node_modules/lodash/toPath.js +33 -0
  1026. package/node_modules/lodash/toPlainObject.js +32 -0
  1027. package/node_modules/lodash/toSafeInteger.js +37 -0
  1028. package/node_modules/lodash/toString.js +28 -0
  1029. package/node_modules/lodash/toUpper.js +28 -0
  1030. package/node_modules/lodash/transform.js +65 -0
  1031. package/node_modules/lodash/trim.js +47 -0
  1032. package/node_modules/lodash/trimEnd.js +41 -0
  1033. package/node_modules/lodash/trimStart.js +43 -0
  1034. package/node_modules/lodash/truncate.js +111 -0
  1035. package/node_modules/lodash/unary.js +22 -0
  1036. package/node_modules/lodash/unescape.js +34 -0
  1037. package/node_modules/lodash/union.js +26 -0
  1038. package/node_modules/lodash/unionBy.js +39 -0
  1039. package/node_modules/lodash/unionWith.js +34 -0
  1040. package/node_modules/lodash/uniq.js +25 -0
  1041. package/node_modules/lodash/uniqBy.js +31 -0
  1042. package/node_modules/lodash/uniqWith.js +28 -0
  1043. package/node_modules/lodash/uniqueId.js +28 -0
  1044. package/node_modules/lodash/unset.js +34 -0
  1045. package/node_modules/lodash/unzip.js +45 -0
  1046. package/node_modules/lodash/unzipWith.js +39 -0
  1047. package/node_modules/lodash/update.js +35 -0
  1048. package/node_modules/lodash/updateWith.js +33 -0
  1049. package/node_modules/lodash/upperCase.js +27 -0
  1050. package/node_modules/lodash/upperFirst.js +22 -0
  1051. package/node_modules/lodash/util.js +34 -0
  1052. package/node_modules/lodash/value.js +1 -0
  1053. package/node_modules/lodash/valueOf.js +1 -0
  1054. package/node_modules/lodash/values.js +34 -0
  1055. package/node_modules/lodash/valuesIn.js +32 -0
  1056. package/node_modules/lodash/without.js +31 -0
  1057. package/node_modules/lodash/words.js +35 -0
  1058. package/node_modules/lodash/wrap.js +30 -0
  1059. package/node_modules/lodash/wrapperAt.js +48 -0
  1060. package/node_modules/lodash/wrapperChain.js +34 -0
  1061. package/node_modules/lodash/wrapperLodash.js +147 -0
  1062. package/node_modules/lodash/wrapperReverse.js +44 -0
  1063. package/node_modules/lodash/wrapperValue.js +21 -0
  1064. package/node_modules/lodash/xor.js +28 -0
  1065. package/node_modules/lodash/xorBy.js +39 -0
  1066. package/node_modules/lodash/xorWith.js +34 -0
  1067. package/node_modules/lodash/zip.js +22 -0
  1068. package/node_modules/lodash/zipObject.js +24 -0
  1069. package/node_modules/lodash/zipObjectDeep.js +23 -0
  1070. package/node_modules/lodash/zipWith.js +32 -0
  1071. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUFFSCxpREFBMEU7QUFzQjFFLDZHQUE2RztBQUM3RyxNQUFhLDJCQUEyQjtJQW9CdEMsWUFBWSxLQUFtQztRQUx2QyxvQkFBZSxHQUFzQixFQUFFLENBQUM7UUFDeEMseUJBQW9CLEdBQXNCLEVBQUUsQ0FBQztRQUM3Qyw4QkFBeUIsR0FBc0IsRUFBRSxDQUFDO1FBSXhELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3pFLDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFbkUsbUJBQW1CO1FBQ25CLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxTQUFTLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2xFLHVDQUF1QztZQUN2QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckQsU0FBUyxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdGLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN0QztRQUNELHdCQUF3QjtRQUN4QixJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxTQUFTLElBQUksS0FBSyxDQUFD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QUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDdEcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FDbkIsQ0FBQztTQUNIO1FBRUQseUNBQXlDO1FBQ3pDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUNqRjthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7U0FDN0Y7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLE1BQWM7UUFDbkMsSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDO1FBRXZCLDJCQUEyQjtRQUMzQixTQUFTLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3pFLDBCQUEwQjtRQUMxQixTQUFTLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzNFLE9BQU8sR0FBRyxTQUFTLElBQUksQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUEvRUQsc0RBK0VDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IHsgSVByaW5jaXBhbCwgUG9saWN5U3RhdGVtZW50LCBFZmZlY3QgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElCdWNrZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSZXN0cmljdE9iamVjdFByZWZpeFRvUm9sZXMge1xuICByZWFkb25seSBzM0J1Y2tldDogSUJ1Y2tldDtcbiAgcmVhZG9ubHkgczNQcmVmaXg6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVhZFJvbGVJZHM/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,3 @@
1
+ # S3 Inventory Helper
2
+
3
+ This is a helper class that helps construct working S3 inventory configurations that can be added to a bucket construct.
@@ -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
+ }