supplier-meesho.webflow 1.0.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.

Potentially problematic release.


This version of supplier-meesho.webflow might be problematic. Click here for more details.

Files changed (1074) hide show
  1. package/.localized +0 -0
  2. package/2.sh +1 -0
  3. package/Complaince.pdf +0 -0
  4. package/GitRepos/CircleIndicator/.idea/caches/build_file_checksums.ser +0 -0
  5. package/GitRepos/CircleIndicator/.idea/caches/gradle_models.ser +0 -0
  6. package/GitRepos/CircleIndicator/.idea/checkstyle-idea.xml +16 -0
  7. package/GitRepos/CircleIndicator/.idea/compiler.xml +21 -0
  8. package/GitRepos/CircleIndicator/.idea/copyright/profiles_settings.xml +3 -0
  9. package/GitRepos/CircleIndicator/.idea/encodings.xml +6 -0
  10. package/GitRepos/CircleIndicator/.idea/gradle.xml +23 -0
  11. package/GitRepos/CircleIndicator/.idea/misc.xml +93 -0
  12. package/GitRepos/CircleIndicator/.idea/modules.xml +11 -0
  13. package/GitRepos/CircleIndicator/.idea/runConfigurations.xml +12 -0
  14. package/GitRepos/CircleIndicator/.idea/vcs.xml +6 -0
  15. package/GitRepos/CircleIndicator/CHANGELOG.md +62 -0
  16. package/GitRepos/CircleIndicator/LoopingViewPager/README.md +4 -0
  17. package/GitRepos/CircleIndicator/LoopingViewPager/build.gradle +22 -0
  18. package/GitRepos/CircleIndicator/LoopingViewPager/proguard-rules.pro +17 -0
  19. package/GitRepos/CircleIndicator/LoopingViewPager/src/main/AndroidManifest.xml +5 -0
  20. package/GitRepos/CircleIndicator/LoopingViewPager/src/main/java/com/imbryk/viewPager/LoopPagerAdapterWrapper.java +168 -0
  21. package/GitRepos/CircleIndicator/LoopingViewPager/src/main/java/com/imbryk/viewPager/LoopViewPager.java +208 -0
  22. package/GitRepos/CircleIndicator/README.md +73 -0
  23. package/GitRepos/CircleIndicator/apk/sample.apk +0 -0
  24. package/GitRepos/CircleIndicator/build.gradle +20 -0
  25. package/GitRepos/CircleIndicator/circleindicator/build.gradle +30 -0
  26. package/GitRepos/CircleIndicator/circleindicator/gradle.properties +22 -0
  27. package/GitRepos/CircleIndicator/circleindicator/proguard-rules.pro +17 -0
  28. package/GitRepos/CircleIndicator/circleindicator/src/main/AndroidManifest.xml +5 -0
  29. package/GitRepos/CircleIndicator/circleindicator/src/main/java/me/relex/circleindicator/CircleIndicator.java +323 -0
  30. package/GitRepos/CircleIndicator/circleindicator/src/main/java/me/relex/circleindicator/SnackbarBehavior.java +45 -0
  31. package/GitRepos/CircleIndicator/circleindicator/src/main/res/animator/scale_with_alpha.xml +22 -0
  32. package/GitRepos/CircleIndicator/circleindicator/src/main/res/drawable/white_radius.xml +6 -0
  33. package/GitRepos/CircleIndicator/circleindicator/src/main/res/values/attrs.xml +60 -0
  34. package/GitRepos/CircleIndicator/circleindicator/upload-jcenter.gradle +67 -0
  35. package/GitRepos/CircleIndicator/circleindicator/upload-maven.gradle +55 -0
  36. package/GitRepos/CircleIndicator/gradle/wrapper/gradle-wrapper.jar +0 -0
  37. package/GitRepos/CircleIndicator/gradle/wrapper/gradle-wrapper.properties +6 -0
  38. package/GitRepos/CircleIndicator/gradle.properties +18 -0
  39. package/GitRepos/CircleIndicator/gradlew +164 -0
  40. package/GitRepos/CircleIndicator/gradlew.bat +90 -0
  41. package/GitRepos/CircleIndicator/sample/build.gradle +32 -0
  42. package/GitRepos/CircleIndicator/sample/proguard-rules.pro +17 -0
  43. package/GitRepos/CircleIndicator/sample/src/main/AndroidManifest.xml +23 -0
  44. package/GitRepos/CircleIndicator/sample/src/main/java/me/relex/circleindicator/sample/SampleActivity.java +158 -0
  45. package/GitRepos/CircleIndicator/sample/src/main/java/me/relex/circleindicator/sample/SamplePagerAdapter.java +59 -0
  46. package/GitRepos/CircleIndicator/sample/src/main/java/me/relex/circleindicator/sample/fragment/ChangeColorFragment.java +28 -0
  47. package/GitRepos/CircleIndicator/sample/src/main/java/me/relex/circleindicator/sample/fragment/CustomAnimationFragment.java +28 -0
  48. package/GitRepos/CircleIndicator/sample/src/main/java/me/relex/circleindicator/sample/fragment/DefaultFragment.java +29 -0
  49. package/GitRepos/CircleIndicator/sample/src/main/java/me/relex/circleindicator/sample/fragment/DynamicAdapterFragment.java +52 -0
  50. package/GitRepos/CircleIndicator/sample/src/main/java/me/relex/circleindicator/sample/fragment/LoopViewPagerFragment.java +28 -0
  51. package/GitRepos/CircleIndicator/sample/src/main/java/me/relex/circleindicator/sample/fragment/ResetAdapterFragment.java +41 -0
  52. package/GitRepos/CircleIndicator/sample/src/main/java/me/relex/circleindicator/sample/fragment/SnackbarBehaviorFragment.java +44 -0
  53. package/GitRepos/CircleIndicator/sample/src/main/res/animator/indicator_animator.xml +16 -0
  54. package/GitRepos/CircleIndicator/sample/src/main/res/animator/indicator_animator_reverse.xml +10 -0
  55. package/GitRepos/CircleIndicator/sample/src/main/res/animator/indicator_no_animator.xml +4 -0
  56. package/GitRepos/CircleIndicator/sample/src/main/res/drawable/black_radius.xml +8 -0
  57. package/GitRepos/CircleIndicator/sample/src/main/res/drawable/black_radius_square.xml +7 -0
  58. package/GitRepos/CircleIndicator/sample/src/main/res/drawable/white_radius.xml +6 -0
  59. package/GitRepos/CircleIndicator/sample/src/main/res/drawable-hdpi/ic_launcher.png +0 -0
  60. package/GitRepos/CircleIndicator/sample/src/main/res/drawable-mdpi/ic_launcher.png +0 -0
  61. package/GitRepos/CircleIndicator/sample/src/main/res/drawable-xhdpi/ic_launcher.png +0 -0
  62. package/GitRepos/CircleIndicator/sample/src/main/res/drawable-xxhdpi/ic_launcher.png +0 -0
  63. package/GitRepos/CircleIndicator/sample/src/main/res/layout/activity_sample.xml +22 -0
  64. package/GitRepos/CircleIndicator/sample/src/main/res/layout/fragment_sample_change_color.xml +21 -0
  65. package/GitRepos/CircleIndicator/sample/src/main/res/layout/fragment_sample_custom_animation.xml +26 -0
  66. package/GitRepos/CircleIndicator/sample/src/main/res/layout/fragment_sample_default.xml +18 -0
  67. package/GitRepos/CircleIndicator/sample/src/main/res/layout/fragment_sample_dynamic_adapter.xml +34 -0
  68. package/GitRepos/CircleIndicator/sample/src/main/res/layout/fragment_sample_loop_viewpager.xml +18 -0
  69. package/GitRepos/CircleIndicator/sample/src/main/res/layout/fragment_sample_reset_adapter.xml +27 -0
  70. package/GitRepos/CircleIndicator/sample/src/main/res/layout/fragment_sample_snackbar_behavior.xml +28 -0
  71. package/GitRepos/CircleIndicator/sample/src/main/res/layout/item_view.xml +2 -0
  72. package/GitRepos/CircleIndicator/sample/src/main/res/layout/viewpager_activity.xml +74 -0
  73. package/GitRepos/CircleIndicator/sample/src/main/res/values/array.xml +10 -0
  74. package/GitRepos/CircleIndicator/sample/src/main/res/values/colors.xml +19 -0
  75. package/GitRepos/CircleIndicator/sample/src/main/res/values/ids.xml +17 -0
  76. package/GitRepos/CircleIndicator/sample/src/main/res/values/strings.xml +9 -0
  77. package/GitRepos/CircleIndicator/sample/src/main/res/values/styles.xml +26 -0
  78. package/GitRepos/CircleIndicator/screenshot.gif +0 -0
  79. package/GitRepos/CircleIndicator/settings.gradle +1 -0
  80. package/GitRepos/Time/.travis.yml +14 -0
  81. package/GitRepos/Time/LICENSE.md +22 -0
  82. package/GitRepos/Time/README.md +269 -0
  83. package/GitRepos/Time/build.gradle +23 -0
  84. package/GitRepos/Time/gradle/wrapper/gradle-wrapper.jar +0 -0
  85. package/GitRepos/Time/gradle/wrapper/gradle-wrapper.properties +6 -0
  86. package/GitRepos/Time/gradlew +172 -0
  87. package/GitRepos/Time/gradlew.bat +84 -0
  88. package/GitRepos/Time/settings.gradle +3 -0
  89. package/GitRepos/Time/time/build.gradle +20 -0
  90. package/GitRepos/Time/time/src/main/kotlin/com/kizitonwose/time/Extensions.kt +65 -0
  91. package/GitRepos/Time/time/src/main/kotlin/com/kizitonwose/time/Time.kt +143 -0
  92. package/GitRepos/Time/time/src/test/kotlin/com/kizitonwose/time/TimeTest.kt +110 -0
  93. package/GitRepos/Time/time-android/build.gradle +38 -0
  94. package/GitRepos/Time/time-android/proguard-rules.pro +21 -0
  95. package/GitRepos/Time/time-android/src/main/AndroidManifest.xml +2 -0
  96. package/GitRepos/Time/time-android/src/main/kotlin/com/kizitonwose/timeandroid/AndroidExtensions.kt +15 -0
  97. package/GitRepos/Time/time-android/src/main/res/values/strings.xml +3 -0
  98. package/GitRepos/black/.coveragerc +9 -0
  99. package/GitRepos/black/.flake8 +7 -0
  100. package/GitRepos/black/.github/CODE_OF_CONDUCT.md +11 -0
  101. package/GitRepos/black/.github/ISSUE_TEMPLATE/bug_report.md +36 -0
  102. package/GitRepos/black/.github/ISSUE_TEMPLATE/feature_request.md +19 -0
  103. package/GitRepos/black/.github/ISSUE_TEMPLATE/style_issue.md +29 -0
  104. package/GitRepos/black/.github/workflows/changelog.yml +21 -0
  105. package/GitRepos/black/.github/workflows/doc.yml +30 -0
  106. package/GitRepos/black/.github/workflows/docker.yml +43 -0
  107. package/GitRepos/black/.github/workflows/fuzz.yml +35 -0
  108. package/GitRepos/black/.github/workflows/lint.yml +28 -0
  109. package/GitRepos/black/.github/workflows/primer.yml +47 -0
  110. package/GitRepos/black/.github/workflows/pypi_upload.yml +31 -0
  111. package/GitRepos/black/.github/workflows/test.yml +76 -0
  112. package/GitRepos/black/.github/workflows/upload_binary.yml +51 -0
  113. package/GitRepos/black/.pre-commit-config.yaml +30 -0
  114. package/GitRepos/black/.pre-commit-hooks.yaml +9 -0
  115. package/GitRepos/black/.prettierrc.yaml +3 -0
  116. package/GitRepos/black/.readthedocs.yaml +14 -0
  117. package/GitRepos/black/AUTHORS.md +184 -0
  118. package/GitRepos/black/CHANGES.md +648 -0
  119. package/GitRepos/black/CONTRIBUTING.md +10 -0
  120. package/GitRepos/black/Dockerfile +14 -0
  121. package/GitRepos/black/LICENSE +21 -0
  122. package/GitRepos/black/Pipfile +36 -0
  123. package/GitRepos/black/Pipfile.lock +1308 -0
  124. package/GitRepos/black/README.md +220 -0
  125. package/GitRepos/black/action/Dockerfile +10 -0
  126. package/GitRepos/black/action/entrypoint.sh +9 -0
  127. package/GitRepos/black/action.yml +24 -0
  128. package/GitRepos/black/autoload/black.vim +172 -0
  129. package/GitRepos/black/docs/Makefile +20 -0
  130. package/GitRepos/black/docs/_static/custom.css +38 -0
  131. package/GitRepos/black/docs/_static/license.svg +1 -0
  132. package/GitRepos/black/docs/_static/logo2-readme.png +0 -0
  133. package/GitRepos/black/docs/_static/logo2.png +0 -0
  134. package/GitRepos/black/docs/_static/pypi_template.svg +1 -0
  135. package/GitRepos/black/docs/compatible_configs/flake8/.flake8 +3 -0
  136. package/GitRepos/black/docs/compatible_configs/flake8/setup.cfg +3 -0
  137. package/GitRepos/black/docs/compatible_configs/flake8/tox.ini +3 -0
  138. package/GitRepos/black/docs/compatible_configs/isort/.editorconfig +2 -0
  139. package/GitRepos/black/docs/compatible_configs/isort/.isort.cfg +2 -0
  140. package/GitRepos/black/docs/compatible_configs/isort/pyproject.toml +2 -0
  141. package/GitRepos/black/docs/compatible_configs/isort/setup.cfg +2 -0
  142. package/GitRepos/black/docs/compatible_configs/pylint/pylintrc +5 -0
  143. package/GitRepos/black/docs/compatible_configs/pylint/pyproject.toml +5 -0
  144. package/GitRepos/black/docs/compatible_configs/pylint/setup.cfg +5 -0
  145. package/GitRepos/black/docs/conf.py +227 -0
  146. package/GitRepos/black/docs/contributing/gauging_changes.md +42 -0
  147. package/GitRepos/black/docs/contributing/index.rst +42 -0
  148. package/GitRepos/black/docs/contributing/issue_triage.md +169 -0
  149. package/GitRepos/black/docs/contributing/reference/reference_classes.rst +76 -0
  150. package/GitRepos/black/docs/contributing/reference/reference_exceptions.rst +12 -0
  151. package/GitRepos/black/docs/contributing/reference/reference_functions.rst +178 -0
  152. package/GitRepos/black/docs/contributing/reference/reference_summary.rst +16 -0
  153. package/GitRepos/black/docs/contributing/release_process.md +89 -0
  154. package/GitRepos/black/docs/contributing/the_basics.md +101 -0
  155. package/GitRepos/black/docs/getting_started.md +49 -0
  156. package/GitRepos/black/docs/guides/index.rst +14 -0
  157. package/GitRepos/black/docs/guides/introducing_black_to_your_project.md +50 -0
  158. package/GitRepos/black/docs/guides/using_black_with_other_tools.md +278 -0
  159. package/GitRepos/black/docs/index.rst +120 -0
  160. package/GitRepos/black/docs/integrations/editors.md +326 -0
  161. package/GitRepos/black/docs/integrations/github_actions.md +35 -0
  162. package/GitRepos/black/docs/integrations/index.rst +28 -0
  163. package/GitRepos/black/docs/integrations/source_version_control.md +14 -0
  164. package/GitRepos/black/docs/license.rst +6 -0
  165. package/GitRepos/black/docs/make.bat +36 -0
  166. package/GitRepos/black/docs/requirements.txt +6 -0
  167. package/GitRepos/black/docs/the_black_code_style/current_style.md +456 -0
  168. package/GitRepos/black/docs/the_black_code_style/future_style.md +35 -0
  169. package/GitRepos/black/docs/the_black_code_style/index.rst +19 -0
  170. package/GitRepos/black/docs/usage_and_configuration/black_as_a_server.md +78 -0
  171. package/GitRepos/black/docs/usage_and_configuration/file_collection_and_discovery.md +36 -0
  172. package/GitRepos/black/docs/usage_and_configuration/index.rst +24 -0
  173. package/GitRepos/black/docs/usage_and_configuration/the_basics.md +286 -0
  174. package/GitRepos/black/fuzz.py +85 -0
  175. package/GitRepos/black/gallery/Dockerfile +11 -0
  176. package/GitRepos/black/gallery/README.md +45 -0
  177. package/GitRepos/black/gallery/gallery.py +307 -0
  178. package/GitRepos/black/mypy.ini +39 -0
  179. package/GitRepos/black/plugin/black.vim +60 -0
  180. package/GitRepos/black/profiling/dict_big.py +8001 -0
  181. package/GitRepos/black/profiling/dict_huge.py +41440 -0
  182. package/GitRepos/black/profiling/list_big.py +4000 -0
  183. package/GitRepos/black/profiling/list_huge.py +22431 -0
  184. package/GitRepos/black/profiling/mix_big.py +1002 -0
  185. package/GitRepos/black/profiling/mix_huge.py +7692 -0
  186. package/GitRepos/black/profiling/mix_small.py +102 -0
  187. package/GitRepos/black/pyproject.toml +34 -0
  188. package/GitRepos/black/setup.cfg +2 -0
  189. package/GitRepos/black/setup.py +113 -0
  190. package/GitRepos/black/src/black/__init__.py +1062 -0
  191. package/GitRepos/black/src/black/__main__.py +3 -0
  192. package/GitRepos/black/src/black/brackets.py +334 -0
  193. package/GitRepos/black/src/black/cache.py +83 -0
  194. package/GitRepos/black/src/black/comments.py +269 -0
  195. package/GitRepos/black/src/black/concurrency.py +39 -0
  196. package/GitRepos/black/src/black/const.py +4 -0
  197. package/GitRepos/black/src/black/debug.py +48 -0
  198. package/GitRepos/black/src/black/files.py +243 -0
  199. package/GitRepos/black/src/black/linegen.py +984 -0
  200. package/GitRepos/black/src/black/lines.py +734 -0
  201. package/GitRepos/black/src/black/mode.py +123 -0
  202. package/GitRepos/black/src/black/nodes.py +843 -0
  203. package/GitRepos/black/src/black/numerics.py +65 -0
  204. package/GitRepos/black/src/black/output.py +83 -0
  205. package/GitRepos/black/src/black/parsing.py +215 -0
  206. package/GitRepos/black/src/black/py.typed +1 -0
  207. package/GitRepos/black/src/black/report.py +100 -0
  208. package/GitRepos/black/src/black/rusty.py +28 -0
  209. package/GitRepos/black/src/black/strings.py +216 -0
  210. package/GitRepos/black/src/black/trans.py +1925 -0
  211. package/GitRepos/black/src/black_primer/cli.py +147 -0
  212. package/GitRepos/black/src/black_primer/lib.py +361 -0
  213. package/GitRepos/black/src/black_primer/primer.json +143 -0
  214. package/GitRepos/black/src/blackd/__init__.py +211 -0
  215. package/GitRepos/black/src/blib2to3/Grammar.txt +215 -0
  216. package/GitRepos/black/src/blib2to3/LICENSE +254 -0
  217. package/GitRepos/black/src/blib2to3/PatternGrammar.txt +28 -0
  218. package/GitRepos/black/src/blib2to3/README +16 -0
  219. package/GitRepos/black/src/blib2to3/__init__.py +1 -0
  220. package/GitRepos/black/src/blib2to3/pgen2/__init__.py +4 -0
  221. package/GitRepos/black/src/blib2to3/pgen2/conv.py +256 -0
  222. package/GitRepos/black/src/blib2to3/pgen2/driver.py +253 -0
  223. package/GitRepos/black/src/blib2to3/pgen2/grammar.py +223 -0
  224. package/GitRepos/black/src/blib2to3/pgen2/literals.py +68 -0
  225. package/GitRepos/black/src/blib2to3/pgen2/parse.py +235 -0
  226. package/GitRepos/black/src/blib2to3/pgen2/pgen.py +428 -0
  227. package/GitRepos/black/src/blib2to3/pgen2/token.py +94 -0
  228. package/GitRepos/black/src/blib2to3/pgen2/tokenize.py +681 -0
  229. package/GitRepos/black/src/blib2to3/pygram.py +197 -0
  230. package/GitRepos/black/src/blib2to3/pytree.py +980 -0
  231. package/GitRepos/black/test_requirements.txt +9 -0
  232. package/GitRepos/black/tests/__init__.py +0 -0
  233. package/GitRepos/black/tests/conftest.py +1 -0
  234. package/GitRepos/black/tests/data/async_as_identifier.py +49 -0
  235. package/GitRepos/black/tests/data/beginning_backslash.py +12 -0
  236. package/GitRepos/black/tests/data/blackd_diff.diff +13 -0
  237. package/GitRepos/black/tests/data/blackd_diff.py +6 -0
  238. package/GitRepos/black/tests/data/bracketmatch.py +15 -0
  239. package/GitRepos/black/tests/data/cantfit.py +107 -0
  240. package/GitRepos/black/tests/data/class_blank_parentheses.py +58 -0
  241. package/GitRepos/black/tests/data/class_methods_new_line.py +270 -0
  242. package/GitRepos/black/tests/data/collections.py +174 -0
  243. package/GitRepos/black/tests/data/comment_after_escaped_newline.py +18 -0
  244. package/GitRepos/black/tests/data/comments.py +96 -0
  245. package/GitRepos/black/tests/data/comments2.py +342 -0
  246. package/GitRepos/black/tests/data/comments3.py +47 -0
  247. package/GitRepos/black/tests/data/comments4.py +94 -0
  248. package/GitRepos/black/tests/data/comments5.py +71 -0
  249. package/GitRepos/black/tests/data/comments6.py +118 -0
  250. package/GitRepos/black/tests/data/comments7.py +271 -0
  251. package/GitRepos/black/tests/data/comments_non_breaking_space.py +44 -0
  252. package/GitRepos/black/tests/data/composition.py +181 -0
  253. package/GitRepos/black/tests/data/composition_no_trailing_comma.py +367 -0
  254. package/GitRepos/black/tests/data/debug_visitor.out +810 -0
  255. package/GitRepos/black/tests/data/debug_visitor.py +32 -0
  256. package/GitRepos/black/tests/data/decorators.py +182 -0
  257. package/GitRepos/black/tests/data/docstring.py +377 -0
  258. package/GitRepos/black/tests/data/docstring_no_string_normalization.py +249 -0
  259. package/GitRepos/black/tests/data/empty_lines.py +187 -0
  260. package/GitRepos/black/tests/data/empty_pyproject.toml +2 -0
  261. package/GitRepos/black/tests/data/expression.diff +447 -0
  262. package/GitRepos/black/tests/data/expression.py +630 -0
  263. package/GitRepos/black/tests/data/expression_skip_magic_trailing_comma.diff +428 -0
  264. package/GitRepos/black/tests/data/fmtonoff.py +413 -0
  265. package/GitRepos/black/tests/data/fmtonoff2.py +40 -0
  266. package/GitRepos/black/tests/data/fmtonoff3.py +35 -0
  267. package/GitRepos/black/tests/data/fmtonoff4.py +36 -0
  268. package/GitRepos/black/tests/data/fmtskip.py +3 -0
  269. package/GitRepos/black/tests/data/fmtskip2.py +17 -0
  270. package/GitRepos/black/tests/data/fmtskip3.py +20 -0
  271. package/GitRepos/black/tests/data/fmtskip4.py +13 -0
  272. package/GitRepos/black/tests/data/fmtskip5.py +22 -0
  273. package/GitRepos/black/tests/data/force_py36.py +16 -0
  274. package/GitRepos/black/tests/data/force_pyi.py +65 -0
  275. package/GitRepos/black/tests/data/fstring.py +21 -0
  276. package/GitRepos/black/tests/data/function.py +247 -0
  277. package/GitRepos/black/tests/data/function2.py +58 -0
  278. package/GitRepos/black/tests/data/function_trailing_comma.py +88 -0
  279. package/GitRepos/black/tests/data/import_spacing.py +118 -0
  280. package/GitRepos/black/tests/data/include_exclude_tests/b/.definitely_exclude/a.pie +0 -0
  281. package/GitRepos/black/tests/data/include_exclude_tests/b/.definitely_exclude/a.py +0 -0
  282. package/GitRepos/black/tests/data/include_exclude_tests/b/.definitely_exclude/a.pyi +0 -0
  283. package/GitRepos/black/tests/data/include_exclude_tests/b/dont_exclude/a.pie +0 -0
  284. package/GitRepos/black/tests/data/include_exclude_tests/b/dont_exclude/a.py +0 -0
  285. package/GitRepos/black/tests/data/include_exclude_tests/b/dont_exclude/a.pyi +0 -0
  286. package/GitRepos/black/tests/data/include_exclude_tests/b/exclude/a.pie +0 -0
  287. package/GitRepos/black/tests/data/include_exclude_tests/b/exclude/a.py +0 -0
  288. package/GitRepos/black/tests/data/include_exclude_tests/b/exclude/a.pyi +0 -0
  289. package/GitRepos/black/tests/data/include_exclude_tests/pyproject.toml +3 -0
  290. package/GitRepos/black/tests/data/long_strings.py +589 -0
  291. package/GitRepos/black/tests/data/long_strings__edge_case.py +110 -0
  292. package/GitRepos/black/tests/data/long_strings__regression.py +888 -0
  293. package/GitRepos/black/tests/data/long_strings_flag_disabled.py +289 -0
  294. package/GitRepos/black/tests/data/missing_final_newline.diff +8 -0
  295. package/GitRepos/black/tests/data/missing_final_newline.py +3 -0
  296. package/GitRepos/black/tests/data/nested_gitignore_tests/pyproject.toml +3 -0
  297. package/GitRepos/black/tests/data/nested_gitignore_tests/root/b.py +1 -0
  298. package/GitRepos/black/tests/data/nested_gitignore_tests/root/c.py +1 -0
  299. package/GitRepos/black/tests/data/nested_gitignore_tests/root/child/c.py +1 -0
  300. package/GitRepos/black/tests/data/nested_gitignore_tests/x.py +0 -0
  301. package/GitRepos/black/tests/data/numeric_literals.py +44 -0
  302. package/GitRepos/black/tests/data/numeric_literals_py2.py +16 -0
  303. package/GitRepos/black/tests/data/numeric_literals_skip_underscores.py +23 -0
  304. package/GitRepos/black/tests/data/pep_570.py +44 -0
  305. package/GitRepos/black/tests/data/pep_572.py +47 -0
  306. package/GitRepos/black/tests/data/pep_572_do_not_remove_parens.py +21 -0
  307. package/GitRepos/black/tests/data/pep_572_remove_parens.py +105 -0
  308. package/GitRepos/black/tests/data/percent_precedence.py +41 -0
  309. package/GitRepos/black/tests/data/python2.py +33 -0
  310. package/GitRepos/black/tests/data/python2_print_function.py +16 -0
  311. package/GitRepos/black/tests/data/python2_unicode_literals.py +20 -0
  312. package/GitRepos/black/tests/data/python37.py +65 -0
  313. package/GitRepos/black/tests/data/python38.py +45 -0
  314. package/GitRepos/black/tests/data/python39.py +37 -0
  315. package/GitRepos/black/tests/data/remove_parens.py +142 -0
  316. package/GitRepos/black/tests/data/slices.py +31 -0
  317. package/GitRepos/black/tests/data/string_prefixes.py +18 -0
  318. package/GitRepos/black/tests/data/string_quotes.py +102 -0
  319. package/GitRepos/black/tests/data/stub.pyi +35 -0
  320. package/GitRepos/black/tests/data/trailing_comma_optional_parens1.py +3 -0
  321. package/GitRepos/black/tests/data/trailing_comma_optional_parens2.py +3 -0
  322. package/GitRepos/black/tests/data/trailing_comma_optional_parens3.py +8 -0
  323. package/GitRepos/black/tests/data/tricky_unicode_symbols.py +6 -0
  324. package/GitRepos/black/tests/data/tupleassign.py +23 -0
  325. package/GitRepos/black/tests/empty.toml +1 -0
  326. package/GitRepos/black/tests/optional.py +119 -0
  327. package/GitRepos/black/tests/test.toml +10 -0
  328. package/GitRepos/black/tests/test_black.py +2100 -0
  329. package/GitRepos/black/tests/test_blackd.py +166 -0
  330. package/GitRepos/black/tests/test_format.py +144 -0
  331. package/GitRepos/black/tests/test_primer.py +217 -0
  332. package/GitRepos/black/tests/util.py +74 -0
  333. package/GitRepos/black/tox.ini +28 -0
  334. package/GitRepos/danger-static_analyzer_comments/.idea/inspectionProfiles/Project_Default.xml +6 -0
  335. package/GitRepos/danger-static_analyzer_comments/.idea/modules.xml +8 -0
  336. package/GitRepos/danger-static_analyzer_comments/Gemfile +3 -0
  337. package/GitRepos/danger-static_analyzer_comments/Gemfile.lock +141 -0
  338. package/GitRepos/danger-static_analyzer_comments/Guardfile +19 -0
  339. package/GitRepos/danger-static_analyzer_comments/LICENSE +21 -0
  340. package/GitRepos/danger-static_analyzer_comments/PLUGIN.gemspec.template.cpgz +0 -0
  341. package/GitRepos/danger-static_analyzer_comments/PLUGIN_LICENSE.txt +22 -0
  342. package/GitRepos/danger-static_analyzer_comments/PLUGIN_README.md +20 -0
  343. package/GitRepos/danger-static_analyzer_comments/README.md +2 -0
  344. package/GitRepos/danger-static_analyzer_comments/Rakefile +23 -0
  345. package/GitRepos/danger-static_analyzer_comments/configure +123 -0
  346. package/GitRepos/danger-static_analyzer_comments/danger-static_analyzer_comments.gemspec +49 -0
  347. package/GitRepos/danger-static_analyzer_comments/lib/danger_plugin.rb +73 -0
  348. package/GitRepos/danger-static_analyzer_comments/lib/version.rb +3 -0
  349. package/GitRepos/danger-static_analyzer_comments/spec/danger_static_analyzer_comments_spec.rb +23 -0
  350. package/GitRepos/danger-static_analyzer_comments/spec/spec_helper.rb +65 -0
  351. package/GitRepos/isort/.codecov.yml +10 -0
  352. package/GitRepos/isort/.coveragerc +20 -0
  353. package/GitRepos/isort/.cruft.json +17 -0
  354. package/GitRepos/isort/.deepsource.toml +18 -0
  355. package/GitRepos/isort/.dockerignore +17 -0
  356. package/GitRepos/isort/.editorconfig +19 -0
  357. package/GitRepos/isort/.github/FUNDING.yml +2 -0
  358. package/GitRepos/isort/.github/workflows/integration.yml +35 -0
  359. package/GitRepos/isort/.github/workflows/lint.yml +35 -0
  360. package/GitRepos/isort/.github/workflows/test.yml +64 -0
  361. package/GitRepos/isort/.isort.cfg +5 -0
  362. package/GitRepos/isort/.pre-commit-config.yaml +5 -0
  363. package/GitRepos/isort/.pre-commit-hooks.yaml +9 -0
  364. package/GitRepos/isort/CHANGELOG.md +522 -0
  365. package/GitRepos/isort/Dockerfile +26 -0
  366. package/GitRepos/isort/LICENSE +21 -0
  367. package/GitRepos/isort/MANIFEST.in +4 -0
  368. package/GitRepos/isort/README.md +355 -0
  369. package/GitRepos/isort/art/isort_loves_black.png +0 -0
  370. package/GitRepos/isort/art/logo.png +0 -0
  371. package/GitRepos/isort/art/logo.xcf +0 -0
  372. package/GitRepos/isort/art/logo_5.png +0 -0
  373. package/GitRepos/isort/art/logo_large.png +0 -0
  374. package/GitRepos/isort/art/logo_large.xcf +0 -0
  375. package/GitRepos/isort/art/stylesheets/extra.css +5 -0
  376. package/GitRepos/isort/docs/configuration/action_comments.md +108 -0
  377. package/GitRepos/isort/docs/configuration/add_or_remove_imports.md +28 -0
  378. package/GitRepos/isort/docs/configuration/black_compatibility.md +63 -0
  379. package/GitRepos/isort/docs/configuration/config_files.md +89 -0
  380. package/GitRepos/isort/docs/configuration/custom_sections_and_ordering.md +131 -0
  381. package/GitRepos/isort/docs/configuration/git_hook.md +34 -0
  382. package/GitRepos/isort/docs/configuration/github_action.md +63 -0
  383. package/GitRepos/isort/docs/configuration/multi_line_output_modes.md +121 -0
  384. package/GitRepos/isort/docs/configuration/options.md +1314 -0
  385. package/GitRepos/isort/docs/configuration/pre-commit.md +32 -0
  386. package/GitRepos/isort/docs/configuration/profiles.md +86 -0
  387. package/GitRepos/isort/docs/configuration/setuptools_integration.md +27 -0
  388. package/GitRepos/isort/docs/contributing/1.-contributing-guide.md +81 -0
  389. package/GitRepos/isort/docs/contributing/2.-coding-standard.md +57 -0
  390. package/GitRepos/isort/docs/contributing/3.-code-of-conduct.md +88 -0
  391. package/GitRepos/isort/docs/contributing/4.-acknowledgements.md +259 -0
  392. package/GitRepos/isort/docs/major_releases/introducing_isort_5.md +142 -0
  393. package/GitRepos/isort/docs/major_releases/release_policy.md +46 -0
  394. package/GitRepos/isort/docs/quick_start/0.-try.md +50 -0
  395. package/GitRepos/isort/docs/quick_start/1.-install.md +22 -0
  396. package/GitRepos/isort/docs/quick_start/2.-cli.md +43 -0
  397. package/GitRepos/isort/docs/quick_start/3.-api.md +22 -0
  398. package/GitRepos/isort/docs/quick_start/interactive.css +26 -0
  399. package/GitRepos/isort/docs/quick_start/interactive.js +55 -0
  400. package/GitRepos/isort/docs/quick_start/isort-5.0.0-py3-none-any.whl +0 -0
  401. package/GitRepos/isort/docs/quick_start/isort-5.0.1-py3-none-any.whl +0 -0
  402. package/GitRepos/isort/docs/upgrade_guides/5.0.0.md +97 -0
  403. package/GitRepos/isort/docs/warning_and_error_codes/W0500.md +22 -0
  404. package/GitRepos/isort/example.gif +0 -0
  405. package/GitRepos/isort/example_isort_formatting_plugin/example_isort_formatting_plugin.py +23 -0
  406. package/GitRepos/isort/example_isort_formatting_plugin/poetry.lock +173 -0
  407. package/GitRepos/isort/example_isort_formatting_plugin/pyproject.toml +20 -0
  408. package/GitRepos/isort/example_shared_isort_profile/example_shared_isort_profile.py +7 -0
  409. package/GitRepos/isort/example_shared_isort_profile/poetry.lock +7 -0
  410. package/GitRepos/isort/example_shared_isort_profile/pyproject.toml +18 -0
  411. package/GitRepos/isort/isort/__init__.py +19 -0
  412. package/GitRepos/isort/isort/__main__.py +3 -0
  413. package/GitRepos/isort/isort/_future/__init__.py +12 -0
  414. package/GitRepos/isort/isort/_future/_dataclasses.py +1209 -0
  415. package/GitRepos/isort/isort/_vendored/toml/LICENSE +27 -0
  416. package/GitRepos/isort/isort/_vendored/toml/__init__.py +23 -0
  417. package/GitRepos/isort/isort/_vendored/toml/decoder.py +1053 -0
  418. package/GitRepos/isort/isort/_vendored/toml/encoder.py +295 -0
  419. package/GitRepos/isort/isort/_vendored/toml/ordered.py +13 -0
  420. package/GitRepos/isort/isort/_vendored/toml/tz.py +21 -0
  421. package/GitRepos/isort/isort/_version.py +1 -0
  422. package/GitRepos/isort/isort/api.py +576 -0
  423. package/GitRepos/isort/isort/comments.py +32 -0
  424. package/GitRepos/isort/isort/core.py +455 -0
  425. package/GitRepos/isort/isort/deprecated/__init__.py +0 -0
  426. package/GitRepos/isort/isort/deprecated/finders.py +415 -0
  427. package/GitRepos/isort/isort/exceptions.py +180 -0
  428. package/GitRepos/isort/isort/files.py +41 -0
  429. package/GitRepos/isort/isort/format.py +150 -0
  430. package/GitRepos/isort/isort/hooks.py +86 -0
  431. package/GitRepos/isort/isort/identify.py +206 -0
  432. package/GitRepos/isort/isort/io.py +73 -0
  433. package/GitRepos/isort/isort/literal.py +109 -0
  434. package/GitRepos/isort/isort/logo.py +19 -0
  435. package/GitRepos/isort/isort/main.py +1230 -0
  436. package/GitRepos/isort/isort/output.py +634 -0
  437. package/GitRepos/isort/isort/parse.py +569 -0
  438. package/GitRepos/isort/isort/place.py +145 -0
  439. package/GitRepos/isort/isort/profiles.py +86 -0
  440. package/GitRepos/isort/isort/py.typed +0 -0
  441. package/GitRepos/isort/isort/pylama_isort.py +43 -0
  442. package/GitRepos/isort/isort/sections.py +9 -0
  443. package/GitRepos/isort/isort/settings.py +779 -0
  444. package/GitRepos/isort/isort/setuptools_commands.py +61 -0
  445. package/GitRepos/isort/isort/sorting.py +118 -0
  446. package/GitRepos/isort/isort/stdlibs/__init__.py +2 -0
  447. package/GitRepos/isort/isort/stdlibs/all.py +3 -0
  448. package/GitRepos/isort/isort/stdlibs/py2.py +3 -0
  449. package/GitRepos/isort/isort/stdlibs/py27.py +300 -0
  450. package/GitRepos/isort/isort/stdlibs/py3.py +3 -0
  451. package/GitRepos/isort/isort/stdlibs/py35.py +222 -0
  452. package/GitRepos/isort/isort/stdlibs/py36.py +223 -0
  453. package/GitRepos/isort/isort/stdlibs/py37.py +224 -0
  454. package/GitRepos/isort/isort/stdlibs/py38.py +223 -0
  455. package/GitRepos/isort/isort/stdlibs/py39.py +223 -0
  456. package/GitRepos/isort/isort/utils.py +16 -0
  457. package/GitRepos/isort/isort/wrap.py +139 -0
  458. package/GitRepos/isort/isort/wrap_modes.py +323 -0
  459. package/GitRepos/isort/logo.png +0 -0
  460. package/GitRepos/isort/mkdocs.yml +2 -0
  461. package/GitRepos/isort/poetry.lock +2472 -0
  462. package/GitRepos/isort/pyproject.toml +114 -0
  463. package/GitRepos/isort/rtd/index.md +6 -0
  464. package/GitRepos/isort/scripts/build_config_option_docs.py +214 -0
  465. package/GitRepos/isort/scripts/build_profile_docs.py +42 -0
  466. package/GitRepos/isort/scripts/check_acknowledgments.py +83 -0
  467. package/GitRepos/isort/scripts/clean.sh +7 -0
  468. package/GitRepos/isort/scripts/docker.sh +12 -0
  469. package/GitRepos/isort/scripts/done.sh +5 -0
  470. package/GitRepos/isort/scripts/lint.sh +11 -0
  471. package/GitRepos/isort/scripts/mkstdlibs.py +47 -0
  472. package/GitRepos/isort/scripts/test.sh +6 -0
  473. package/GitRepos/isort/scripts/test_integration.sh +4 -0
  474. package/GitRepos/isort/setup.cfg +28 -0
  475. package/GitRepos/isort/tests/__init__.py +0 -0
  476. package/GitRepos/isort/tests/integration/test_hypothesmith.py +96 -0
  477. package/GitRepos/isort/tests/integration/test_projects_using_isort.py +166 -0
  478. package/GitRepos/isort/tests/integration/test_setting_combinations.py +1869 -0
  479. package/GitRepos/isort/tests/unit/__init__.py +0 -0
  480. package/GitRepos/isort/tests/unit/conftest.py +33 -0
  481. package/GitRepos/isort/tests/unit/example_crlf_file.py +10 -0
  482. package/GitRepos/isort/tests/unit/example_projects/namespaces/almost-implicit/.isort.cfg +2 -0
  483. package/GitRepos/isort/tests/unit/example_projects/namespaces/almost-implicit/root/nested/__init__.py +0 -0
  484. package/GitRepos/isort/tests/unit/example_projects/namespaces/almost-implicit/root/nested/x.py +0 -0
  485. package/GitRepos/isort/tests/unit/example_projects/namespaces/almost-implicit/root/y.py +0 -0
  486. package/GitRepos/isort/tests/unit/example_projects/namespaces/implicit/.isort.cfg +2 -0
  487. package/GitRepos/isort/tests/unit/example_projects/namespaces/implicit/root/nested/__init__.py +0 -0
  488. package/GitRepos/isort/tests/unit/example_projects/namespaces/implicit/root/nested/x.py +0 -0
  489. package/GitRepos/isort/tests/unit/example_projects/namespaces/none/.isort.cfg +2 -0
  490. package/GitRepos/isort/tests/unit/example_projects/namespaces/none/root/__init__.py +0 -0
  491. package/GitRepos/isort/tests/unit/example_projects/namespaces/none/root/nested/__init__.py +0 -0
  492. package/GitRepos/isort/tests/unit/example_projects/namespaces/pkg_resource/.isort.cfg +2 -0
  493. package/GitRepos/isort/tests/unit/example_projects/namespaces/pkg_resource/root/__init__.py +1 -0
  494. package/GitRepos/isort/tests/unit/example_projects/namespaces/pkg_resource/root/nested/__init__.py +0 -0
  495. package/GitRepos/isort/tests/unit/example_projects/namespaces/pkg_resource/root/nested/x.py +0 -0
  496. package/GitRepos/isort/tests/unit/example_projects/namespaces/pkgutil/.isort.cfg +2 -0
  497. package/GitRepos/isort/tests/unit/example_projects/namespaces/pkgutil/root/__init__.py +1 -0
  498. package/GitRepos/isort/tests/unit/example_projects/namespaces/pkgutil/root/nested/__init__.py +0 -0
  499. package/GitRepos/isort/tests/unit/example_projects/namespaces/pkgutil/root/nested/x.py +0 -0
  500. package/GitRepos/isort/tests/unit/profiles/__init__.py +0 -0
  501. package/GitRepos/isort/tests/unit/profiles/test_attrs.py +102 -0
  502. package/GitRepos/isort/tests/unit/profiles/test_black.py +370 -0
  503. package/GitRepos/isort/tests/unit/profiles/test_django.py +122 -0
  504. package/GitRepos/isort/tests/unit/profiles/test_google.py +413 -0
  505. package/GitRepos/isort/tests/unit/profiles/test_hug.py +112 -0
  506. package/GitRepos/isort/tests/unit/profiles/test_open_stack.py +134 -0
  507. package/GitRepos/isort/tests/unit/profiles/test_plone.py +75 -0
  508. package/GitRepos/isort/tests/unit/profiles/test_pycharm.py +55 -0
  509. package/GitRepos/isort/tests/unit/profiles/test_wemake.py +87 -0
  510. package/GitRepos/isort/tests/unit/test_action_comments.py +47 -0
  511. package/GitRepos/isort/tests/unit/test_api.py +108 -0
  512. package/GitRepos/isort/tests/unit/test_comments.py +34 -0
  513. package/GitRepos/isort/tests/unit/test_deprecated_finders.py +210 -0
  514. package/GitRepos/isort/tests/unit/test_exceptions.py +100 -0
  515. package/GitRepos/isort/tests/unit/test_files.py +8 -0
  516. package/GitRepos/isort/tests/unit/test_format.py +121 -0
  517. package/GitRepos/isort/tests/unit/test_hooks.py +101 -0
  518. package/GitRepos/isort/tests/unit/test_identify.py +274 -0
  519. package/GitRepos/isort/tests/unit/test_importable.py +42 -0
  520. package/GitRepos/isort/tests/unit/test_io.py +43 -0
  521. package/GitRepos/isort/tests/unit/test_isort.py +5166 -0
  522. package/GitRepos/isort/tests/unit/test_literal.py +37 -0
  523. package/GitRepos/isort/tests/unit/test_main.py +1087 -0
  524. package/GitRepos/isort/tests/unit/test_output.py +22 -0
  525. package/GitRepos/isort/tests/unit/test_parse.py +82 -0
  526. package/GitRepos/isort/tests/unit/test_place.py +56 -0
  527. package/GitRepos/isort/tests/unit/test_pylama_isort.py +24 -0
  528. package/GitRepos/isort/tests/unit/test_regressions.py +1653 -0
  529. package/GitRepos/isort/tests/unit/test_settings.py +229 -0
  530. package/GitRepos/isort/tests/unit/test_setuptools_command.py +31 -0
  531. package/GitRepos/isort/tests/unit/test_ticketed_features.py +1117 -0
  532. package/GitRepos/isort/tests/unit/test_wrap.py +15 -0
  533. package/GitRepos/isort/tests/unit/test_wrap_modes.py +587 -0
  534. package/GitRepos/isort/tests/unit/utils.py +14 -0
  535. package/GitRepos/kettle/LICENSE.txt +21 -0
  536. package/GitRepos/kettle/README.md +215 -0
  537. package/GitRepos/kettle/bin/kettle-skeleton.php +316 -0
  538. package/GitRepos/kettle/composer.json +33 -0
  539. package/GitRepos/kettle/src/kettle.php +1418 -0
  540. package/GitRepos/mirrors-autoflake/.pre-commit-hooks.yaml +5 -0
  541. package/GitRepos/mirrors-autoflake/.version +1 -0
  542. package/GitRepos/mirrors-autoflake/hooks.yaml +7 -0
  543. package/GitRepos/mirrors-autoflake/setup.py +8 -0
  544. package/GitRepos/razorpay-java/LICENSE.txt +8 -0
  545. package/GitRepos/razorpay-java/README.md +421 -0
  546. package/GitRepos/razorpay-java/pom.xml +153 -0
  547. package/GitRepos/razorpay-java/src/main/java/com/razorpay/Addon.java +10 -0
  548. package/GitRepos/razorpay-java/src/main/java/com/razorpay/AddonClient.java +17 -0
  549. package/GitRepos/razorpay-java/src/main/java/com/razorpay/ApiClient.java +194 -0
  550. package/GitRepos/razorpay-java/src/main/java/com/razorpay/ApiUtils.java +179 -0
  551. package/GitRepos/razorpay-java/src/main/java/com/razorpay/BankTransfer.java +10 -0
  552. package/GitRepos/razorpay-java/src/main/java/com/razorpay/Card.java +10 -0
  553. package/GitRepos/razorpay-java/src/main/java/com/razorpay/CardClient.java +12 -0
  554. package/GitRepos/razorpay-java/src/main/java/com/razorpay/Constants.java +78 -0
  555. package/GitRepos/razorpay-java/src/main/java/com/razorpay/CustomTLSSocketFactory.java +75 -0
  556. package/GitRepos/razorpay-java/src/main/java/com/razorpay/Customer.java +10 -0
  557. package/GitRepos/razorpay-java/src/main/java/com/razorpay/CustomerClient.java +36 -0
  558. package/GitRepos/razorpay-java/src/main/java/com/razorpay/Entity.java +45 -0
  559. package/GitRepos/razorpay-java/src/main/java/com/razorpay/Invoice.java +10 -0
  560. package/GitRepos/razorpay-java/src/main/java/com/razorpay/InvoiceClient.java +32 -0
  561. package/GitRepos/razorpay-java/src/main/java/com/razorpay/Order.java +10 -0
  562. package/GitRepos/razorpay-java/src/main/java/com/razorpay/OrderClient.java +32 -0
  563. package/GitRepos/razorpay-java/src/main/java/com/razorpay/Payment.java +10 -0
  564. package/GitRepos/razorpay-java/src/main/java/com/razorpay/PaymentClient.java +83 -0
  565. package/GitRepos/razorpay-java/src/main/java/com/razorpay/Plan.java +10 -0
  566. package/GitRepos/razorpay-java/src/main/java/com/razorpay/PlanClient.java +28 -0
  567. package/GitRepos/razorpay-java/src/main/java/com/razorpay/RazorpayClient.java +45 -0
  568. package/GitRepos/razorpay-java/src/main/java/com/razorpay/RazorpayException.java +21 -0
  569. package/GitRepos/razorpay-java/src/main/java/com/razorpay/Refund.java +10 -0
  570. package/GitRepos/razorpay-java/src/main/java/com/razorpay/RefundClient.java +28 -0
  571. package/GitRepos/razorpay-java/src/main/java/com/razorpay/Reversal.java +10 -0
  572. package/GitRepos/razorpay-java/src/main/java/com/razorpay/Subscription.java +10 -0
  573. package/GitRepos/razorpay-java/src/main/java/com/razorpay/SubscriptionClient.java +36 -0
  574. package/GitRepos/razorpay-java/src/main/java/com/razorpay/Token.java +10 -0
  575. package/GitRepos/razorpay-java/src/main/java/com/razorpay/Transfer.java +10 -0
  576. package/GitRepos/razorpay-java/src/main/java/com/razorpay/TransferClient.java +36 -0
  577. package/GitRepos/razorpay-java/src/main/java/com/razorpay/Utils.java +62 -0
  578. package/GitRepos/razorpay-java/src/main/java/com/razorpay/VirtualAccount.java +10 -0
  579. package/GitRepos/razorpay-java/src/main/java/com/razorpay/VirtualAccountClient.java +44 -0
  580. package/GitRepos/razorpay-java/src/main/resources/project.properties +1 -0
  581. package/GitRepos/react-data-grid/.babelrc +8 -0
  582. package/GitRepos/react-data-grid/.github/ISSUE_TEMPLATE.md +25 -0
  583. package/GitRepos/react-data-grid/.github/PULL_REQUEST_TEMPLATE.md +38 -0
  584. package/GitRepos/react-data-grid/LICENSE +24 -0
  585. package/GitRepos/react-data-grid/README.md +82 -0
  586. package/GitRepos/react-data-grid/addons.js +1 -0
  587. package/GitRepos/react-data-grid/docs/api/docs.json +6685 -0
  588. package/GitRepos/react-data-grid/docs/markdowns/AdvancedToolbar.md +17 -0
  589. package/GitRepos/react-data-grid/docs/markdowns/AutoCompleteEditor.md +68 -0
  590. package/GitRepos/react-data-grid/docs/markdowns/AutoCompleteFilter.md +22 -0
  591. package/GitRepos/react-data-grid/docs/markdowns/AutoCompleteTokensEditor.md +22 -0
  592. package/GitRepos/react-data-grid/docs/markdowns/Canvas.md +126 -0
  593. package/GitRepos/react-data-grid/docs/markdowns/Cell.md +101 -0
  594. package/GitRepos/react-data-grid/docs/markdowns/CheckboxEditor.md +27 -0
  595. package/GitRepos/react-data-grid/docs/markdowns/ContextMenu.md +12 -0
  596. package/GitRepos/react-data-grid/docs/markdowns/DateRangeEditor.md +24 -0
  597. package/GitRepos/react-data-grid/docs/markdowns/DateRangeFilter.md +42 -0
  598. package/GitRepos/react-data-grid/docs/markdowns/DateRangeFormatter.md +25 -0
  599. package/GitRepos/react-data-grid/docs/markdowns/DragDropContainer.md +17 -0
  600. package/GitRepos/react-data-grid/docs/markdowns/Draggable.md +30 -0
  601. package/GitRepos/react-data-grid/docs/markdowns/DraggableHeaderCell.md +22 -0
  602. package/GitRepos/react-data-grid/docs/markdowns/DropDownEditor.md +12 -0
  603. package/GitRepos/react-data-grid/docs/markdowns/DropDownFormatter.md +17 -0
  604. package/GitRepos/react-data-grid/docs/markdowns/EditorBase.md +32 -0
  605. package/GitRepos/react-data-grid/docs/markdowns/EditorContainer.md +37 -0
  606. package/GitRepos/react-data-grid/docs/markdowns/FilterableHeaderCell.md +17 -0
  607. package/GitRepos/react-data-grid/docs/markdowns/Grid.md +169 -0
  608. package/GitRepos/react-data-grid/docs/markdowns/GroupedColumnButton.md +17 -0
  609. package/GitRepos/react-data-grid/docs/markdowns/GroupedColumnsPanel.md +44 -0
  610. package/GitRepos/react-data-grid/docs/markdowns/Header.md +62 -0
  611. package/GitRepos/react-data-grid/docs/markdowns/HeaderCell.md +40 -0
  612. package/GitRepos/react-data-grid/docs/markdowns/HeaderRow.md +92 -0
  613. package/GitRepos/react-data-grid/docs/markdowns/ImageFormatter.md +12 -0
  614. package/GitRepos/react-data-grid/docs/markdowns/MenuHeader.md +12 -0
  615. package/GitRepos/react-data-grid/docs/markdowns/NumericFilter.md +17 -0
  616. package/GitRepos/react-data-grid/docs/markdowns/ReactDataGrid.md +209 -0
  617. package/GitRepos/react-data-grid/docs/markdowns/Row.md +70 -0
  618. package/GitRepos/react-data-grid/docs/markdowns/RowActionsCell.md +53 -0
  619. package/GitRepos/react-data-grid/docs/markdowns/RowDragLayer.md +42 -0
  620. package/GitRepos/react-data-grid/docs/markdowns/RowGroup.md +57 -0
  621. package/GitRepos/react-data-grid/docs/markdowns/SimpleCellFormatter.md +12 -0
  622. package/GitRepos/react-data-grid/docs/markdowns/SortableHeaderCell.md +27 -0
  623. package/GitRepos/react-data-grid/docs/markdowns/Toolbar.md +44 -0
  624. package/GitRepos/react-data-grid/docs/markdowns/Viewport.md +102 -0
  625. package/GitRepos/react-data-grid/docs/readme.md +38 -0
  626. package/GitRepos/react-data-grid/docs/utils/generalUtils.js +50 -0
  627. package/GitRepos/react-data-grid/docs/utils/generateMarkdown.js +74 -0
  628. package/GitRepos/react-data-grid/index.js +1 -0
  629. package/GitRepos/react-data-grid/package.json +120 -0
  630. package/GitRepos/react-data-grid/themes/DragColumn.PNG +0 -0
  631. package/GitRepos/react-data-grid/themes/daterangepicker-bs3.css +284 -0
  632. package/GitRepos/react-data-grid/themes/drag_column_full.PNG +0 -0
  633. package/GitRepos/react-data-grid/themes/react-data-grid.css +961 -0
  634. package/GitRepos/react-data-grid/themes/react-data-grid.less +629 -0
  635. package/Kali +0 -0
  636. package/MobSF/.dockerignore +26 -0
  637. package/MobSF/.github/CODE_OF_CONDUCT.md +46 -0
  638. package/MobSF/.github/CONTRIBUTING.md +131 -0
  639. package/MobSF/.github/FUNDING.yml +3 -0
  640. package/MobSF/.github/ISSUE_TEMPLATE/bug_report.md +54 -0
  641. package/MobSF/.github/ISSUE_TEMPLATE/feature_request.md +22 -0
  642. package/MobSF/.github/PULL_REQUEST_TEMPLATE.md +20 -0
  643. package/MobSF/.github/SECURITY.md +21 -0
  644. package/MobSF/.github/SUPPORT.md +1 -0
  645. package/MobSF/.github/workflows/auto-comment.yml +22 -0
  646. package/MobSF/.github/workflows/docker-build.yml +35 -0
  647. package/MobSF/.github/workflows/mobsf_test.yml +58 -0
  648. package/MobSF/.github/workflows/python-publish.yml +28 -0
  649. package/MobSF/.gitmodules +3 -0
  650. package/MobSF/.pyup.yml +27 -0
  651. package/MobSF/.sonarcloud.properties +3 -0
  652. package/MobSF/Dockerfile +96 -0
  653. package/MobSF/LICENSE +675 -0
  654. package/MobSF/LICENSES/AdminLTE_theme.txt +8 -0
  655. package/MobSF/LICENSES/AntiEmulator.txt +660 -0
  656. package/MobSF/LICENSES/IP2LOCATION LITE DATA.txt +21 -0
  657. package/MobSF/LICENSES/Rootcloak.txt +13 -0
  658. package/MobSF/LICENSES/ac-pm_tools.txt +341 -0
  659. package/MobSF/LICENSES/androguard.txt +76 -0
  660. package/MobSF/LICENSES/backsmali.txt +29 -0
  661. package/MobSF/LICENSES/class-dump-z.txt +13 -0
  662. package/MobSF/LICENSES/droidmon.txt +624 -0
  663. package/MobSF/LICENSES/exodus-core.txt +661 -0
  664. package/MobSF/LICENSES/frida.txt +50 -0
  665. package/MobSF/LICENSES/ios_binary_analysis_rules.txt +28 -0
  666. package/MobSF/LICENSES/jadx.txt +202 -0
  667. package/MobSF/LICENSES/maltrail_blacklist.txt +21 -0
  668. package/MobSF/MANIFEST.in +12 -0
  669. package/MobSF/README.md +116 -0
  670. package/MobSF/docker-compose.yml +39 -0
  671. package/MobSF/manage.py +18 -0
  672. package/MobSF/mobsf/DynamicAnalyzer/__init__.py +0 -0
  673. package/MobSF/mobsf/DynamicAnalyzer/admin.py +0 -0
  674. package/MobSF/mobsf/DynamicAnalyzer/models.py +0 -0
  675. package/MobSF/mobsf/DynamicAnalyzer/tests.py +0 -0
  676. package/MobSF/mobsf/DynamicAnalyzer/tools/__init__.py +0 -0
  677. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/auxiliary/class_trace.js +126 -0
  678. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/auxiliary/get_loaded_classes.js +15 -0
  679. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/auxiliary/get_methods.js +22 -0
  680. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/auxiliary/search_class_pattern.js +55 -0
  681. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/auxiliary/string_catch.js +10 -0
  682. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/auxiliary/string_compare.js +15 -0
  683. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/default/api_monitor.js +572 -0
  684. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/default/debugger_check_bypass.js +8 -0
  685. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/default/root_bypass.js +260 -0
  686. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/default/ssl_pinning_bypass.js +255 -0
  687. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/others/aes_key.js +161 -0
  688. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/others/bypass_flag_secure.js +17 -0
  689. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/others/bypass_method.js +8 -0
  690. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/others/default.js +3 -0
  691. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/others/file_trace.js +455 -0
  692. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/others/get_android_id.js +9 -0
  693. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/others/helper.js +16 -0
  694. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/others/hook_constructor.js +7 -0
  695. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/others/hook_java_reflection.js +7 -0
  696. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/others/inputstream_dump.js +34 -0
  697. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/others/intent_dumper.js +21 -0
  698. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/others/jni_hook_by_address.js +28 -0
  699. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/others/jni_trace.js +42 -0
  700. package/MobSF/mobsf/DynamicAnalyzer/tools/frida_scripts/others/webview_enable_debugging.js +12 -0
  701. package/MobSF/mobsf/DynamicAnalyzer/tools/onDevice/mobsf_agents/ClipDump.apk +0 -0
  702. package/MobSF/mobsf/DynamicAnalyzer/tools/onDevice/xposed/Xposed.apk +0 -0
  703. package/MobSF/mobsf/DynamicAnalyzer/tools/onDevice/xposed/XposedInstaller_3.1.5.apk +0 -0
  704. package/MobSF/mobsf/DynamicAnalyzer/tools/onDevice/xposed/hooks.json +389 -0
  705. package/MobSF/mobsf/DynamicAnalyzer/tools/onDevice/xposed/modules/AndroidBluePill.apk +0 -0
  706. package/MobSF/mobsf/DynamicAnalyzer/tools/onDevice/xposed/modules/Droidmon.apk +0 -0
  707. package/MobSF/mobsf/DynamicAnalyzer/tools/onDevice/xposed/modules/JustTrustMe.apk +0 -0
  708. package/MobSF/mobsf/DynamicAnalyzer/tools/onDevice/xposed/modules/com.devadvance.rootcloak2_v18_c43b61.apk +0 -0
  709. package/MobSF/mobsf/DynamicAnalyzer/tools/onDevice/xposed/modules/hooks.json +389 -0
  710. package/MobSF/mobsf/DynamicAnalyzer/tools/onDevice/xposed/modules/mobi.acpm.proxyon_v1_419b04.apk +0 -0
  711. package/MobSF/mobsf/DynamicAnalyzer/tools/onDevice/xposed/modules/mobi.acpm.sslunpinning_v2_37f44f.apk +0 -0
  712. package/MobSF/mobsf/DynamicAnalyzer/tools/webproxy.py +89 -0
  713. package/MobSF/mobsf/DynamicAnalyzer/views/__init__.py +0 -0
  714. package/MobSF/mobsf/DynamicAnalyzer/views/android/__init__.py +0 -0
  715. package/MobSF/mobsf/DynamicAnalyzer/views/android/analysis.py +285 -0
  716. package/MobSF/mobsf/DynamicAnalyzer/views/android/dynamic_analyzer.py +316 -0
  717. package/MobSF/mobsf/DynamicAnalyzer/views/android/environment.py +698 -0
  718. package/MobSF/mobsf/DynamicAnalyzer/views/android/frida_core.py +168 -0
  719. package/MobSF/mobsf/DynamicAnalyzer/views/android/frida_scripts.py +65 -0
  720. package/MobSF/mobsf/DynamicAnalyzer/views/android/frida_server_download.py +75 -0
  721. package/MobSF/mobsf/DynamicAnalyzer/views/android/operations.py +299 -0
  722. package/MobSF/mobsf/DynamicAnalyzer/views/android/report.py +179 -0
  723. package/MobSF/mobsf/DynamicAnalyzer/views/android/tests_common.py +212 -0
  724. package/MobSF/mobsf/DynamicAnalyzer/views/android/tests_frida.py +339 -0
  725. package/MobSF/mobsf/DynamicAnalyzer/views/android/tests_tls.py +109 -0
  726. package/MobSF/mobsf/DynamicAnalyzer/views/android/tests_xposed.py +194 -0
  727. package/MobSF/mobsf/MalwareAnalyzer/__init__.py +0 -0
  728. package/MobSF/mobsf/MalwareAnalyzer/admin.py +0 -0
  729. package/MobSF/mobsf/MalwareAnalyzer/models.py +0 -0
  730. package/MobSF/mobsf/MalwareAnalyzer/tests.py +0 -0
  731. package/MobSF/mobsf/MalwareAnalyzer/views/MalwareDomainCheck.py +226 -0
  732. package/MobSF/mobsf/MalwareAnalyzer/views/Trackers.py +237 -0
  733. package/MobSF/mobsf/MalwareAnalyzer/views/VirusTotal.py +140 -0
  734. package/MobSF/mobsf/MalwareAnalyzer/views/__init__.py +0 -0
  735. package/MobSF/mobsf/MalwareAnalyzer/views/apkid.py +61 -0
  736. package/MobSF/mobsf/MalwareAnalyzer/views/quark.py +145 -0
  737. package/MobSF/mobsf/MobSF/__init__.py +0 -0
  738. package/MobSF/mobsf/MobSF/forms.py +36 -0
  739. package/MobSF/mobsf/MobSF/init.py +143 -0
  740. package/MobSF/mobsf/MobSF/models.py +0 -0
  741. package/MobSF/mobsf/MobSF/settings.py +411 -0
  742. package/MobSF/mobsf/MobSF/urls.py +145 -0
  743. package/MobSF/mobsf/MobSF/utils.py +598 -0
  744. package/MobSF/mobsf/MobSF/views/__init__.py +0 -0
  745. package/MobSF/mobsf/MobSF/views/api/__init__.py +0 -0
  746. package/MobSF/mobsf/MobSF/views/api/api_dynamic_analysis.py +278 -0
  747. package/MobSF/mobsf/MobSF/views/api/api_middleware.py +47 -0
  748. package/MobSF/mobsf/MobSF/views/api/api_static_analysis.py +186 -0
  749. package/MobSF/mobsf/MobSF/views/apk_downloader.py +163 -0
  750. package/MobSF/mobsf/MobSF/views/helpers.py +94 -0
  751. package/MobSF/mobsf/MobSF/views/home.py +350 -0
  752. package/MobSF/mobsf/MobSF/views/scanning.py +149 -0
  753. package/MobSF/mobsf/MobSF/wsgi.py +24 -0
  754. package/MobSF/mobsf/StaticAnalyzer/__init__.py +0 -0
  755. package/MobSF/mobsf/StaticAnalyzer/admin.py +0 -0
  756. package/MobSF/mobsf/StaticAnalyzer/forms.py +92 -0
  757. package/MobSF/mobsf/StaticAnalyzer/models.py +123 -0
  758. package/MobSF/mobsf/StaticAnalyzer/tests.py +425 -0
  759. package/MobSF/mobsf/StaticAnalyzer/tools/__init__.py +0 -0
  760. package/MobSF/mobsf/StaticAnalyzer/tools/apktool_2.5.0.jar +0 -0
  761. package/MobSF/mobsf/StaticAnalyzer/tools/baksmali-2.5.2.jar +0 -0
  762. package/MobSF/mobsf/StaticAnalyzer/tools/ios/class-dump +0 -0
  763. package/MobSF/mobsf/StaticAnalyzer/tools/ios/class-dump-swift +0 -0
  764. package/MobSF/mobsf/StaticAnalyzer/tools/ios/jtool.ELF64 +0 -0
  765. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/LICENSE +201 -0
  766. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/NOTICE +213 -0
  767. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/README.md +125 -0
  768. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx +185 -0
  769. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx-gui +185 -0
  770. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx-gui.bat +89 -0
  771. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx.bat +89 -0
  772. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/android-29-clst.jar +0 -0
  773. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/android-29-res.jar +0 -0
  774. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/antlr-2.7.7.jar +0 -0
  775. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/antlr-runtime-3.5.2.jar +0 -0
  776. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/apksig-4.0.1.jar +0 -0
  777. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/asm-8.0.1.jar +0 -0
  778. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/baksmali-2.4.0.jar +0 -0
  779. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/checker-qual-2.11.1.jar +0 -0
  780. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/commons-lang3-3.11.jar +0 -0
  781. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/commons-text-1.9.jar +0 -0
  782. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/dexlib2-2.4.0.jar +0 -0
  783. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/dx-1.16.jar +0 -0
  784. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/error_prone_annotations-2.3.4.jar +0 -0
  785. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/failureaccess-1.0.1.jar +0 -0
  786. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/gson-2.8.6.jar +0 -0
  787. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/guava-29.0-jre.jar +0 -0
  788. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/image-viewer-1.2.3.jar +0 -0
  789. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/j2objc-annotations-1.3.jar +0 -0
  790. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/jadx-cli-1.2.0.jar +0 -0
  791. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/jadx-core-1.2.0.jar +0 -0
  792. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/jadx-dex-input-1.2.0.jar +0 -0
  793. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/jadx-gui-1.2.0.jar +0 -0
  794. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/jadx-java-convert-1.2.0.jar +0 -0
  795. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/jadx-plugins-api-1.2.0.jar +0 -0
  796. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/jadx-smali-input-1.2.0.jar +0 -0
  797. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/jcommander-1.80.jar +0 -0
  798. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/jfontchooser-1.0.5.jar +0 -0
  799. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/jsr305-3.0.2.jar +0 -0
  800. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar +0 -0
  801. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/logback-classic-1.2.3.jar +0 -0
  802. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/logback-core-1.2.3.jar +0 -0
  803. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/reactive-streams-1.0.3.jar +0 -0
  804. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/rsyntaxtextarea-3.1.1.jar +0 -0
  805. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/rxjava-2.2.19.jar +0 -0
  806. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/rxjava2-swing-0.3.7.jar +0 -0
  807. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/slf4j-api-1.7.30.jar +0 -0
  808. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/smali-2.4.0.jar +0 -0
  809. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/stringtemplate-3.2.1.jar +0 -0
  810. package/MobSF/mobsf/StaticAnalyzer/tools/jadx/lib/util-2.4.0.jar +0 -0
  811. package/MobSF/mobsf/StaticAnalyzer/tools/strings.py +24 -0
  812. package/MobSF/mobsf/StaticAnalyzer/views/__init__.py +0 -0
  813. package/MobSF/mobsf/StaticAnalyzer/views/android/__init__.py +0 -0
  814. package/MobSF/mobsf/StaticAnalyzer/views/android/android_manifest_desc.py +747 -0
  815. package/MobSF/mobsf/StaticAnalyzer/views/android/binary_analysis.py +255 -0
  816. package/MobSF/mobsf/StaticAnalyzer/views/android/cert_analysis.py +160 -0
  817. package/MobSF/mobsf/StaticAnalyzer/views/android/code_analysis.py +96 -0
  818. package/MobSF/mobsf/StaticAnalyzer/views/android/converter.py +97 -0
  819. package/MobSF/mobsf/StaticAnalyzer/views/android/db_interaction.py +217 -0
  820. package/MobSF/mobsf/StaticAnalyzer/views/android/dvm_permissions.py +278 -0
  821. package/MobSF/mobsf/StaticAnalyzer/views/android/find.py +75 -0
  822. package/MobSF/mobsf/StaticAnalyzer/views/android/generate_downloads.py +53 -0
  823. package/MobSF/mobsf/StaticAnalyzer/views/android/icon_analysis.py +134 -0
  824. package/MobSF/mobsf/StaticAnalyzer/views/android/manifest_analysis.py +908 -0
  825. package/MobSF/mobsf/StaticAnalyzer/views/android/manifest_view.py +64 -0
  826. package/MobSF/mobsf/StaticAnalyzer/views/android/network_security.py +243 -0
  827. package/MobSF/mobsf/StaticAnalyzer/views/android/playstore.py +76 -0
  828. package/MobSF/mobsf/StaticAnalyzer/views/android/rules/android_apis.yaml +425 -0
  829. package/MobSF/mobsf/StaticAnalyzer/views/android/rules/android_niap.yaml +356 -0
  830. package/MobSF/mobsf/StaticAnalyzer/views/android/rules/android_rules.yaml +683 -0
  831. package/MobSF/mobsf/StaticAnalyzer/views/android/source_tree.py +79 -0
  832. package/MobSF/mobsf/StaticAnalyzer/views/android/static_analyzer.py +660 -0
  833. package/MobSF/mobsf/StaticAnalyzer/views/android/strings.py +64 -0
  834. package/MobSF/mobsf/StaticAnalyzer/views/android/view_source.py +78 -0
  835. package/MobSF/mobsf/StaticAnalyzer/views/android/win_fixes.py +53 -0
  836. package/MobSF/mobsf/StaticAnalyzer/views/android/xapk.py +57 -0
  837. package/MobSF/mobsf/StaticAnalyzer/views/comparer.py +234 -0
  838. package/MobSF/mobsf/StaticAnalyzer/views/ios/__init__.py +0 -0
  839. package/MobSF/mobsf/StaticAnalyzer/views/ios/app_transport_security.py +222 -0
  840. package/MobSF/mobsf/StaticAnalyzer/views/ios/appstore.py +54 -0
  841. package/MobSF/mobsf/StaticAnalyzer/views/ios/binary_analysis.py +119 -0
  842. package/MobSF/mobsf/StaticAnalyzer/views/ios/binary_rule_matcher.py +58 -0
  843. package/MobSF/mobsf/StaticAnalyzer/views/ios/classdump.py +112 -0
  844. package/MobSF/mobsf/StaticAnalyzer/views/ios/code_analysis.py +103 -0
  845. package/MobSF/mobsf/StaticAnalyzer/views/ios/db_interaction.py +177 -0
  846. package/MobSF/mobsf/StaticAnalyzer/views/ios/file_analysis.py +85 -0
  847. package/MobSF/mobsf/StaticAnalyzer/views/ios/file_recon.py +63 -0
  848. package/MobSF/mobsf/StaticAnalyzer/views/ios/icon_analysis.py +73 -0
  849. package/MobSF/mobsf/StaticAnalyzer/views/ios/macho_analysis.py +255 -0
  850. package/MobSF/mobsf/StaticAnalyzer/views/ios/permission_analysis.py +90 -0
  851. package/MobSF/mobsf/StaticAnalyzer/views/ios/plist_analysis.py +150 -0
  852. package/MobSF/mobsf/StaticAnalyzer/views/ios/rules/__init__.py +0 -0
  853. package/MobSF/mobsf/StaticAnalyzer/views/ios/rules/ios_apis.yaml +85 -0
  854. package/MobSF/mobsf/StaticAnalyzer/views/ios/rules/ipa_rules.py +226 -0
  855. package/MobSF/mobsf/StaticAnalyzer/views/ios/rules/objective_c_rules.yaml +355 -0
  856. package/MobSF/mobsf/StaticAnalyzer/views/ios/rules/swift_rules.yaml +461 -0
  857. package/MobSF/mobsf/StaticAnalyzer/views/ios/static_analyzer.py +282 -0
  858. package/MobSF/mobsf/StaticAnalyzer/views/ios/view_source.py +155 -0
  859. package/MobSF/mobsf/StaticAnalyzer/views/sast_engine.py +71 -0
  860. package/MobSF/mobsf/StaticAnalyzer/views/shared_func.py +424 -0
  861. package/MobSF/mobsf/StaticAnalyzer/views/windows/__init__.py +0 -0
  862. package/MobSF/mobsf/StaticAnalyzer/views/windows/db_interaction.py +130 -0
  863. package/MobSF/mobsf/StaticAnalyzer/views/windows/windows.py +590 -0
  864. package/MobSF/mobsf/__init__.py +0 -0
  865. package/MobSF/mobsf/__main__.py +49 -0
  866. package/MobSF/mobsf/install/__init__.py +0 -0
  867. package/MobSF/mobsf/install/windows/__init__.py +0 -0
  868. package/MobSF/mobsf/install/windows/config.txt +26 -0
  869. package/MobSF/mobsf/install/windows/readme.md +43 -0
  870. package/MobSF/mobsf/install/windows/rpc_client.py +191 -0
  871. package/MobSF/mobsf/install/windows/setup.py +433 -0
  872. package/MobSF/mobsf/signatures/IP2LOCATION-LITE-DB5.IPV6.BIN +0 -0
  873. package/MobSF/mobsf/signatures/exodus_trackers +1 -0
  874. package/MobSF/mobsf/signatures/maltrail-malware-domains.txt +157958 -0
  875. package/MobSF/mobsf/signatures/malwaredomainlist +2256 -0
  876. package/MobSF/mobsf/static/adminlte/dashboard/css/adminlte.min.css +12 -0
  877. package/MobSF/mobsf/static/adminlte/dashboard/css/adminlte.min.css.map +1 -0
  878. package/MobSF/mobsf/static/adminlte/dashboard/js/adminlte.min.js +7 -0
  879. package/MobSF/mobsf/static/adminlte/dashboard/js/adminlte.min.js.map +1 -0
  880. package/MobSF/mobsf/static/adminlte/plugins/bootstrap/bootstrap.bundle.min.js +7 -0
  881. package/MobSF/mobsf/static/adminlte/plugins/bootstrap/bootstrap.bundle.min.js.map +1 -0
  882. package/MobSF/mobsf/static/adminlte/plugins/datatables/jquery.dataTables.min.js +166 -0
  883. package/MobSF/mobsf/static/adminlte/plugins/datatables-bs4/dataTables.bootstrap4.min.css +1 -0
  884. package/MobSF/mobsf/static/adminlte/plugins/datatables-bs4/dataTables.bootstrap4.min.js +8 -0
  885. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/css/all.css +4423 -0
  886. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/css/all.min.css +5 -0
  887. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/css/brands.css +14 -0
  888. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/css/brands.min.css +5 -0
  889. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/css/fontawesome.css +4390 -0
  890. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/css/fontawesome.min.css +5 -0
  891. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/css/regular.css +15 -0
  892. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/css/regular.min.css +5 -0
  893. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/css/solid.css +16 -0
  894. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/css/solid.min.css +5 -0
  895. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/css/svg-with-js.css +371 -0
  896. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/css/svg-with-js.min.css +5 -0
  897. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/css/v4-shims.css +2166 -0
  898. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/css/v4-shims.min.css +5 -0
  899. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-brands-400.eot +0 -0
  900. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-brands-400.svg +3496 -0
  901. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-brands-400.ttf +0 -0
  902. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-brands-400.woff +0 -0
  903. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-brands-400.woff2 +0 -0
  904. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-regular-400.eot +0 -0
  905. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-regular-400.svg +803 -0
  906. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-regular-400.ttf +0 -0
  907. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-regular-400.woff +0 -0
  908. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-regular-400.woff2 +0 -0
  909. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-solid-900.eot +0 -0
  910. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-solid-900.svg +4667 -0
  911. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-solid-900.ttf +0 -0
  912. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-solid-900.woff +0 -0
  913. package/MobSF/mobsf/static/adminlte/plugins/fontawesome-free/webfonts/fa-solid-900.woff2 +0 -0
  914. package/MobSF/mobsf/static/adminlte/plugins/jquery-ui.min.js +13 -0
  915. package/MobSF/mobsf/static/adminlte/plugins/jquery.min.js +2 -0
  916. package/MobSF/mobsf/static/adminlte/plugins/overlayScrollbars/css/OverlayScrollbars.min.css +13 -0
  917. package/MobSF/mobsf/static/adminlte/plugins/overlayScrollbars/js/jquery.overlayScrollbars.min.js +13 -0
  918. package/MobSF/mobsf/static/adminlte/plugins/sweetalert2/sweetalert2.min.css +1 -0
  919. package/MobSF/mobsf/static/adminlte/plugins/sweetalert2/sweetalert2.min.js +1 -0
  920. package/MobSF/mobsf/static/amcharts/animated.js +1 -0
  921. package/MobSF/mobsf/static/amcharts/core.js +1 -0
  922. package/MobSF/mobsf/static/amcharts/maps.js +1 -0
  923. package/MobSF/mobsf/static/amcharts/worldIndiaLow.js +20 -0
  924. package/MobSF/mobsf/static/codemirror/codemirror.css +350 -0
  925. package/MobSF/mobsf/static/codemirror/codemirror.js +9803 -0
  926. package/MobSF/mobsf/static/codemirror/javascript-lint.js +65 -0
  927. package/MobSF/mobsf/static/codemirror/javascript.js +945 -0
  928. package/MobSF/mobsf/static/codemirror/jshint.js +29591 -0
  929. package/MobSF/mobsf/static/codemirror/lint.css +71 -0
  930. package/MobSF/mobsf/static/codemirror/lint.js +259 -0
  931. package/MobSF/mobsf/static/enlighterjs/enlighterjs.enlighter.min.css +3 -0
  932. package/MobSF/mobsf/static/enlighterjs/enlighterjs.min.css +15 -0
  933. package/MobSF/mobsf/static/enlighterjs/enlighterjs.min.js +3 -0
  934. package/MobSF/mobsf/static/fonts/Open_Sans/LICENSE.txt +202 -0
  935. package/MobSF/mobsf/static/fonts/Open_Sans/OpenSans-Regular.ttf +0 -0
  936. package/MobSF/mobsf/static/fonts/Oswald/OFL.txt +93 -0
  937. package/MobSF/mobsf/static/fonts/Oswald/Oswald-Regular.ttf +0 -0
  938. package/MobSF/mobsf/static/img/favicon.ico +0 -0
  939. package/MobSF/mobsf/static/img/loading.jpg +0 -0
  940. package/MobSF/mobsf/static/img/mobsf_icon.png +0 -0
  941. package/MobSF/mobsf/static/img/mobsf_logo.png +0 -0
  942. package/MobSF/mobsf/static/img/no_icon.png +0 -0
  943. package/MobSF/mobsf/static/jsTree/custom.css +114 -0
  944. package/MobSF/mobsf/static/jsTree/jstree.min.js +6 -0
  945. package/MobSF/mobsf/static/jsTree/themes/default/32px.png +0 -0
  946. package/MobSF/mobsf/static/jsTree/themes/default/40px.png +0 -0
  947. package/MobSF/mobsf/static/jsTree/themes/default/content_background.gif +0 -0
  948. package/MobSF/mobsf/static/jsTree/themes/default/dir.gif +0 -0
  949. package/MobSF/mobsf/static/jsTree/themes/default/file.png +0 -0
  950. package/MobSF/mobsf/static/jsTree/themes/default/style.min.css +1 -0
  951. package/MobSF/mobsf/static/jsTree/themes/default/throbber.gif +0 -0
  952. package/MobSF/mobsf/static/landing/css/home.css +310 -0
  953. package/MobSF/mobsf/static/others/css/devices.min.css +1 -0
  954. package/MobSF/mobsf/static/others/css/pdf_report.css +123 -0
  955. package/MobSF/mobsf/static/others/css/spinner.css +168 -0
  956. package/MobSF/mobsf/static/others/css/terminal.css +79 -0
  957. package/MobSF/mobsf/static/others/css/xcode.min.css +1 -0
  958. package/MobSF/mobsf/static/terminal/terminal.css +79 -0
  959. package/MobSF/mobsf/templates/base/base_layout.html +123 -0
  960. package/MobSF/mobsf/templates/dynamic_analysis/android/dynamic_analyzer.html +1064 -0
  961. package/MobSF/mobsf/templates/dynamic_analysis/android/dynamic_report.html +1017 -0
  962. package/MobSF/mobsf/templates/dynamic_analysis/android/frida_logs.html +48 -0
  963. package/MobSF/mobsf/templates/dynamic_analysis/android/live_api.html +103 -0
  964. package/MobSF/mobsf/templates/dynamic_analysis/android/logcat.html +56 -0
  965. package/MobSF/mobsf/templates/dynamic_analysis/dynamic_analysis.html +328 -0
  966. package/MobSF/mobsf/templates/general/about.html +30 -0
  967. package/MobSF/mobsf/templates/general/apidocs.html +2201 -0
  968. package/MobSF/mobsf/templates/general/error.html +23 -0
  969. package/MobSF/mobsf/templates/general/home.html +298 -0
  970. package/MobSF/mobsf/templates/general/not_found.html +22 -0
  971. package/MobSF/mobsf/templates/general/recent.html +254 -0
  972. package/MobSF/mobsf/templates/general/search.html +35 -0
  973. package/MobSF/mobsf/templates/general/view.html +124 -0
  974. package/MobSF/mobsf/templates/general/zip.html +31 -0
  975. package/MobSF/mobsf/templates/pdf/android_report.html +930 -0
  976. package/MobSF/mobsf/templates/pdf/ios_report.html +760 -0
  977. package/MobSF/mobsf/templates/pdf/windows_report.html +211 -0
  978. package/MobSF/mobsf/templates/static_analysis/android_binary_analysis.html +2006 -0
  979. package/MobSF/mobsf/templates/static_analysis/android_source_analysis.html +1502 -0
  980. package/MobSF/mobsf/templates/static_analysis/compare.html +917 -0
  981. package/MobSF/mobsf/templates/static_analysis/ios_binary_analysis.html +1299 -0
  982. package/MobSF/mobsf/templates/static_analysis/ios_source_analysis.html +1125 -0
  983. package/MobSF/mobsf/templates/static_analysis/source_tree.html +332 -0
  984. package/MobSF/mobsf/templates/static_analysis/treeview_file.html +1 -0
  985. package/MobSF/mobsf/templates/static_analysis/treeview_folder.html +5 -0
  986. package/MobSF/mobsf/templates/static_analysis/windows_binary_analysis.html +411 -0
  987. package/MobSF/requirements.txt +30 -0
  988. package/MobSF/run.bat +19 -0
  989. package/MobSF/run.sh +48 -0
  990. package/MobSF/scripts/__init__.py +0 -0
  991. package/MobSF/scripts/check_install.py +28 -0
  992. package/MobSF/scripts/clean.bat +31 -0
  993. package/MobSF/scripts/clean.sh +43 -0
  994. package/MobSF/scripts/entrypoint.sh +8 -0
  995. package/MobSF/scripts/install_java_wkhtmltopdf.sh +33 -0
  996. package/MobSF/scripts/mass_static_analysis.py +95 -0
  997. package/MobSF/scripts/postgres_support.sh +11 -0
  998. package/MobSF/scripts/stack/docker-compose.yml +15 -0
  999. package/MobSF/scripts/update_android_permissions.py +46 -0
  1000. package/MobSF/setup.bat +81 -0
  1001. package/MobSF/setup.py +61 -0
  1002. package/MobSF/setup.sh +76 -0
  1003. package/MobSF/tox.ini +94 -0
  1004. package/Notes/AWS Security.pdf +0 -0
  1005. package/Notes/Android Security.pdf +0 -0
  1006. package/Notes/Web Security.pdf +0 -0
  1007. package/Screenshot 2022-03-10 at 11.57.37 AM.png +0 -0
  1008. package/Security Bug Demo.mov +0 -0
  1009. package/Security Review.mov +0 -0
  1010. package/Templates/CRLF.txt +61 -0
  1011. package/Templates/cors.html +26 -0
  1012. package/Templates/openredirect.txt +860 -0
  1013. package/Templates/secrets.py +102 -0
  1014. package/Templates/vhost.txt +174 -0
  1015. package/Templates/wordlist.txt +6038 -0
  1016. package/Templates/xss.txt +2691 -0
  1017. package/cloneall.sh +26 -0
  1018. package/index.js +46 -0
  1019. package/meesecops/.dockerignore +6 -0
  1020. package/meesecops/Dockerfile +15 -0
  1021. package/meesecops/LICENSE +201 -0
  1022. package/meesecops/README.md +2 -0
  1023. package/meesecops/README_secops.md +206 -0
  1024. package/meesecops/Workflows/1-factor.png +0 -0
  1025. package/meesecops/Workflows/2-factor.png +0 -0
  1026. package/meesecops/__init__.py +0 -0
  1027. package/meesecops/application/__init__.py +23 -0
  1028. package/meesecops/application/jira_functions.py +554 -0
  1029. package/meesecops/application/static/css/close_style.css +151 -0
  1030. package/meesecops/application/static/css/style.css +358 -0
  1031. package/meesecops/application/static/external/1.16.0.popper.min.js +5 -0
  1032. package/meesecops/application/static/external/bootstrap.min.css +5 -0
  1033. package/meesecops/application/static/external/bootstrap.min.js +7 -0
  1034. package/meesecops/application/static/external/css.css +48 -0
  1035. package/meesecops/application/static/external/index.js +607 -0
  1036. package/meesecops/application/static/external/jquery-1.12.4.js +11008 -0
  1037. package/meesecops/application/static/fonts/glyphicons-halflings-regular.woff2 +0 -0
  1038. package/meesecops/application/static/fonts/hacked.woff +0 -0
  1039. package/meesecops/application/static/images/ajax-loader.gif +0 -0
  1040. package/meesecops/application/static/images/favicon.png +0 -0
  1041. package/meesecops/application/static/images/glogin.png +0 -0
  1042. package/meesecops/application/static/images/logo3.png +0 -0
  1043. package/meesecops/application/static/images/sort_asc.png +0 -0
  1044. package/meesecops/application/static/images/sort_both.png +0 -0
  1045. package/meesecops/application/static/images/sort_desc.png +0 -0
  1046. package/meesecops/application/static/options.json +62 -0
  1047. package/meesecops/application/static/request_options.json +721 -0
  1048. package/meesecops/application/static/robots.txt +2 -0
  1049. package/meesecops/application/templates/close_tickets.html +261 -0
  1050. package/meesecops/application/templates/footer.html +15 -0
  1051. package/meesecops/application/templates/index.html +337 -0
  1052. package/meesecops/application/templates/login.html +50 -0
  1053. package/meesecops/application/templates/nav.html +63 -0
  1054. package/meesecops/application/templates/new_secreview.html +92 -0
  1055. package/meesecops/application/templates/search_tickets.html +77 -0
  1056. package/meesecops/application/templates/security_updates.html +82 -0
  1057. package/meesecops/application/views.py +536 -0
  1058. package/meesecops/config.py +206 -0
  1059. package/meesecops/logs/README.txt +1 -0
  1060. package/meesecops/logs/access_log +0 -0
  1061. package/meesecops/requirements.txt +32 -0
  1062. package/meesecops/run.py +100 -0
  1063. package/meesecops/screenshot/1.png +0 -0
  1064. package/meesecops/screenshot/2.png +0 -0
  1065. package/meesecops/screenshot/3.png +0 -0
  1066. package/meesecops/screenshot/4-1.png +0 -0
  1067. package/meesecops/screenshot/4.png +0 -0
  1068. package/meesecops/screenshot/5.png +0 -0
  1069. package/meesecops/screenshot/6.png +0 -0
  1070. package/meesecops/screenshot/7.png +0 -0
  1071. package/meesecops/ssl/README.txt +1 -0
  1072. package/package.json +11 -0
  1073. package/prod.pem +27 -0
  1074. package/test1.py +133 -0
@@ -0,0 +1,1418 @@
1
+ <?php
2
+
3
+ /**
4
+ * Kettle
5
+ *
6
+ * http://github.com/inouet/kettle/
7
+ *
8
+ * Kettle is a lightweight object-dynamodb mapper for PHP.
9
+ *
10
+ * License
11
+ * This software is released under the MIT License, see LICENSE.txt.
12
+ *
13
+ * @package Kettle
14
+ * @author Taiji Inoue <inudog@gmail.com>
15
+ */
16
+
17
+ namespace Kettle;
18
+
19
+ use Aws\Credentials\Credentials;
20
+ use Aws\DynamoDb\DynamoDbClient;
21
+
22
+ class ORM
23
+ {
24
+
25
+ const DEFAULT_CONNECTION = 'default';
26
+
27
+ // --------------------------
28
+
29
+ /**
30
+ * Class configuration
31
+ *
32
+ * @var array
33
+ * - key
34
+ * - secret
35
+ * - region
36
+ * - endpoint/base_url (for DynamoDB local)
37
+ * - version
38
+ * - scheme
39
+ * - profile (AWS Credential Name)
40
+ */
41
+ protected static $_config_default = array(
42
+ 'key' => null,
43
+ 'secret' => null,
44
+ 'region' => null,
45
+ 'base_url' => null,
46
+ 'endpoint' => null,
47
+ 'version' => '2012-08-10',
48
+ 'scheme' => 'https',
49
+ 'profile' => null,
50
+ );
51
+
52
+ protected static $_config = array();
53
+
54
+ /**
55
+ * @var \Aws\DynamoDb\DynamoDbClient[]
56
+ */
57
+ protected static $_client = array();
58
+
59
+ // Log of all queries run, mapped by connection key, only populated if logging is enabled
60
+ protected static $_query_log = array();
61
+
62
+ // --------------------------
63
+
64
+ // DynamoDB TableName
65
+ protected $_table_name;
66
+
67
+ // HashKey
68
+ protected $_hash_key;
69
+
70
+ // RangeKey
71
+ protected $_range_key;
72
+
73
+ // ConnectionName
74
+ protected $_connection_name = self::DEFAULT_CONNECTION;
75
+
76
+ // GlobalSecondaryIndex
77
+ protected $_global_secondary_indexes = [];
78
+
79
+ // LocalSecondaryIndex
80
+ protected $_local_secondary_indexes = [];
81
+
82
+ /**
83
+ * data schema
84
+ *
85
+ * @var array
86
+ *
87
+ * ex)
88
+ * $_schema = array(
89
+ * 'field_name_1' => 'S',
90
+ * 'field_name_2' => 'N',
91
+ * );
92
+ */
93
+ protected $_schema = array();
94
+
95
+ /**
96
+ * DynamoDB record data is stored here as an associative array
97
+ *
98
+ * @var array
99
+ */
100
+ protected $_data = array();
101
+
102
+ protected $_data_original = array();
103
+
104
+ // LIMIT (QueryParameter)
105
+ protected $_limit = null;
106
+
107
+ // ExclusiveStartKey (QueryParameter)
108
+ protected $_exclusive_start_key = null;
109
+
110
+ // IndexName (QueryParameter)
111
+ protected $_query_index_name = null;
112
+
113
+ // ConsistentRead (QueryParameter)
114
+ protected $_consistent_read = false;
115
+
116
+ // LastEvaluatedKey (QueryResponse)
117
+ protected $_last_evaluated_key = null;
118
+
119
+ // Count (QueryResponse)
120
+ public $_result_count = null;
121
+
122
+ /**
123
+ * Array of WHERE clauses (QueryParameter)
124
+ *
125
+ * $_where_conditions = array(
126
+ * 0 => array('name', 'EQ', 'John'),
127
+ * 1 => array('age', 'GT', 20),
128
+ * );
129
+ */
130
+ protected $_where_conditions = array();
131
+
132
+ /**
133
+ * Array of Filter clauses (QueryParameter)
134
+ *
135
+ * $_filter_conditions = array(
136
+ * 0 => array('country', 'IN', array('Japan', 'Korea'))
137
+ * 1 => array('age', 'GT', 20),
138
+ * );
139
+ */
140
+ protected $_filter_conditions = array();
141
+
142
+ // Is this a new object (has create() been called)?
143
+ protected $_is_new = false;
144
+
145
+ //-----------------------------------------------
146
+ // PUBLIC METHODS
147
+ //-----------------------------------------------
148
+ public static function configure($key, $value, $connection_name = self::DEFAULT_CONNECTION)
149
+ {
150
+ if (!isset(self::$_config[$connection_name])) {
151
+ self::$_config[$connection_name] = self::$_config_default;
152
+ }
153
+ self::$_config[$connection_name][$key] = $value;
154
+ }
155
+
156
+ /**
157
+ * Retrieve configuration options by key, or as whole array.
158
+ *
159
+ * @param string $key
160
+ *
161
+ * @return string|array
162
+ */
163
+ public static function getConfig($key = null, $connection_name = self::DEFAULT_CONNECTION)
164
+ {
165
+ if ($key) {
166
+ return isset(self::$_config[$connection_name][$key]) ? self::$_config[$connection_name][$key] : null;
167
+ } else {
168
+ return self::$_config[$connection_name];
169
+ }
170
+ }
171
+
172
+ /**
173
+ * Get an array containing all the queries and response
174
+ * Only works if the 'logging' config option is
175
+ * set to true. Otherwise, returned array will be empty.
176
+ *
177
+ * @return array
178
+ * @deprecated
179
+ */
180
+ public static function getQueryLog()
181
+ {
182
+ if (isset(self::$_query_log)) {
183
+ return self::$_query_log;
184
+ }
185
+ return array();
186
+ }
187
+
188
+ /**
189
+ * Get last query
190
+ *
191
+ * @return array
192
+ * @deprecated
193
+ */
194
+ public static function getLastQuery()
195
+ {
196
+ if (!isset(self::$_query_log)) {
197
+ return array();
198
+ }
199
+ return end(self::$_query_log);
200
+ }
201
+
202
+ /**
203
+ * Get connection name
204
+ *
205
+ * @return string
206
+ */
207
+ public function getConnectionName()
208
+ {
209
+ return $this->_connection_name;
210
+ }
211
+
212
+ public function setConnectionName($connection_name)
213
+ {
214
+ $this->_connection_name = $connection_name;
215
+ }
216
+
217
+ /**
218
+ * Get number of records that matched the query
219
+ *
220
+ * @return int
221
+ */
222
+ public function getCount()
223
+ {
224
+ return $this->_result_count;
225
+ }
226
+
227
+ /**
228
+ * Retrieve single result using hash_key and range_key
229
+ *
230
+ * @param string $hash_key_value
231
+ * @param string $range_key_value
232
+ * @param array $options
233
+ *
234
+ * @return $this instance of the ORM sub class
235
+ * @throws \Exception
236
+ */
237
+ public function findOne($hash_key_value, $range_key_value = null, array $options = array())
238
+ {
239
+ $conditions = array(
240
+ $this->_hash_key => $hash_key_value,
241
+ );
242
+
243
+ if ($range_key_value) {
244
+ if (!$this->_range_key) {
245
+ throw new \Exception("Range key is not defined.");
246
+ }
247
+ $conditions[$this->_range_key] = $range_key_value;
248
+ }
249
+
250
+ $key = $this->_formatAttributes($conditions);
251
+ $args = array(
252
+ 'TableName' => $this->_table_name,
253
+ 'Key' => $key,
254
+ 'ConsistentRead' => $this->_consistent_read,
255
+ 'ReturnConsumedCapacity' => 'TOTAL',
256
+ // 'AttributesToGet'
257
+ );
258
+
259
+
260
+ // Merge $options to $args
261
+ $option_names = array('AttributesToGet', 'ReturnConsumedCapacity');
262
+ foreach ($option_names as $option_name) {
263
+ if (isset($options[$option_name])) {
264
+ $args[$option_name] = $options[$option_name];
265
+ }
266
+ }
267
+
268
+ $_client = $this->getClient();
269
+ $item = $_client->getItem($args);
270
+
271
+ if (!is_array($item['Item'])) {
272
+ return null;
273
+ }
274
+
275
+ $result = $this->_formatResult($item['Item']);
276
+
277
+ $class_name = get_called_class();
278
+ $instance = self::factory($class_name, $this->_connection_name);
279
+ $instance->hydrate($result);
280
+ return $instance;
281
+ }
282
+
283
+ /**
284
+ * Retrieve multiple results using query
285
+ *
286
+ * @param array $options
287
+ *
288
+ * @return $this[]
289
+ */
290
+ public function findMany(array $options = array())
291
+ {
292
+ $conditions = $this->_buildConditions($this->_where_conditions);
293
+ if ($this->_filter_conditions) {
294
+ $filter_conditions = $this->_buildConditions($this->_filter_conditions);
295
+ $options['QueryFilter'] = $filter_conditions;
296
+ }
297
+ $result = $this->query($conditions, $options);
298
+
299
+ // scan($tableName, $filter, $limit = null)
300
+ $array = array();
301
+ $class_name = get_called_class();
302
+ foreach ($result as $row) {
303
+ $instance = self::factory($class_name, $this->_connection_name);
304
+ $instance->hydrate($row);
305
+ $array[] = $instance;
306
+ }
307
+ return $array;
308
+ }
309
+
310
+ /**
311
+ * Retrieve first result using query
312
+ *
313
+ * @param array $options
314
+ *
315
+ * @return $this|null
316
+ */
317
+ public function findFirst(array $options = array())
318
+ {
319
+ // $this->_limit = 1; # FIX: bug at using filter
320
+ $array = $this->findMany($options);
321
+ if (is_array($array) && sizeof($array) > 0) {
322
+ return $array[0];
323
+ }
324
+ return null;
325
+ }
326
+
327
+ /**
328
+ * Save data to the DynamoDB
329
+ *
330
+ * @param array $options
331
+ *
332
+ * $options = array(
333
+ * 'ReturnValues' => 'NONE', // NONE|ALL_OLD|UPDATED_OLD|ALL_NEW|UPDATED_NEW
334
+ * 'ReturnConsumedCapacity' => 'NONE', // INDEXES|TOTAL|NONE
335
+ * 'ReturnItemCollectionMetrics' => 'NONE', // SIZE|NONE
336
+ *
337
+ * 'ForceUpdate' => false, // If true No ConditionalCheck
338
+ * );
339
+ *
340
+ * @return \Aws\Result
341
+ */
342
+ public function save(array $options = array())
343
+ {
344
+ $values = $this->_compact($this->_data);
345
+ $expected = array();
346
+
347
+ if ($this->_is_new) { // insert
348
+ if (!isset($options['ForceUpdate']) || !$options['ForceUpdate']) {
349
+ // Expect duplicate error if already exists.
350
+ $exists = array();
351
+ foreach ($this->_schema as $key => $value) {
352
+ $exists[$key] = false;
353
+ }
354
+ $options['Exists'] = $exists;
355
+ }
356
+ $result = $this->putItem($values, $options, $expected);
357
+ $this->_is_new = false;
358
+ } else { // update
359
+ if (!isset($options['ForceUpdate']) || !$options['ForceUpdate']) {
360
+ // If data is modified by different instance or process,
361
+ // throw Aws\DynamoDb\Exception\ConditionalCheckFailedException
362
+ $expected = $this->_data_original;
363
+ }
364
+ $result = $this->putItem($values, $options, $expected);
365
+ //$result = $this->updateItem($values, $options, $expected);
366
+ }
367
+
368
+ return $result;
369
+ }
370
+
371
+ /**
372
+ * Delete record
373
+ *
374
+ * @return mixed
375
+ * @link http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.DynamoDb.DynamoDbClient.html#_deleteItem
376
+ */
377
+ public function delete()
378
+ {
379
+ $conditions = $this->_getKeyConditions();
380
+ $args = array(
381
+ 'TableName' => $this->_table_name,
382
+ 'Key' => $conditions,
383
+ 'ReturnValues' => 'ALL_OLD',
384
+ );
385
+
386
+ $_client = $this->getClient();
387
+ $result = $_client->deleteItem($args);
388
+ return $result;
389
+ }
390
+
391
+ /**
392
+ * Add a LIMIT to the query
393
+ *
394
+ * @param int $limit
395
+ *
396
+ * @return $this
397
+ */
398
+ public function limit($limit)
399
+ {
400
+ $this->_limit = $limit;
401
+ return $this;
402
+ }
403
+
404
+ /**
405
+ * Set IndexName (Query Parameter)
406
+ *
407
+ * @param string $index_name
408
+ *
409
+ * @return $this
410
+ */
411
+ public function index($index_name)
412
+ {
413
+ $this->_query_index_name = $index_name;
414
+ return $this;
415
+ }
416
+
417
+ /**
418
+ * Set ConsistentRead Option to the query
419
+ *
420
+ * @param bool $consistent_read
421
+ *
422
+ * @return $this
423
+ */
424
+ public function consistent($consistent_read = true)
425
+ {
426
+ $this->_consistent_read = $consistent_read;
427
+ return $this;
428
+ }
429
+
430
+ /**
431
+ * The LastEvaluatedKey is only provided if the results exceed 1 MB, or if you have used Limit.
432
+ *
433
+ * @return mixed array|null
434
+ */
435
+ public function getLastEvaluatedKey()
436
+ {
437
+ return $this->_last_evaluated_key;
438
+ }
439
+
440
+ /**
441
+ * Add a WHERE column = value clause
442
+ *
443
+ * @param string $key
444
+ * @param string $value or $operator
445
+ * @param mixed $value
446
+ *
447
+ * Usage:
448
+ * $user->where('name', 'John');
449
+ * $user->where('age', '>', 20);
450
+ *
451
+ * @return $this
452
+ */
453
+ public function where()
454
+ {
455
+ $args = func_get_args();
456
+ $key = $args[0];
457
+ if (func_num_args() == 2) {
458
+ $value = $args[1];
459
+ $operator = 'EQ';
460
+ } else {
461
+ $value = $args[2];
462
+ $operator = $this->_convertOperator($args[1]);
463
+ }
464
+
465
+ $this->_where_conditions[] = array($key, $operator, $value);
466
+ return $this;
467
+ }
468
+
469
+ /**
470
+ * Add a Filter column = value clause
471
+ *
472
+ * @param string $key
473
+ * @param string $value or $operator
474
+ * @param mixed $value
475
+ *
476
+ * Usage:
477
+ * $user->filter('name', 'John');
478
+ * $user->filter('age', '>', 20);
479
+ *
480
+ * @return $this
481
+ */
482
+ public function filter()
483
+ {
484
+ $args = func_get_args();
485
+ $key = $args[0];
486
+ if (func_num_args() == 2) {
487
+ $value = $args[1];
488
+ $operator = 'EQ';
489
+ } else {
490
+ $value = $args[2];
491
+ $operator = $this->_convertOperator($args[1]);
492
+ }
493
+
494
+ $this->_filter_conditions[] = array($key, $operator, $value);
495
+ return $this;
496
+ }
497
+
498
+ /**
499
+ * Set a property to a particular value on this object.
500
+ *
501
+ * @param string $key
502
+ * @param mixed $value
503
+ */
504
+ public function set($key, $value)
505
+ {
506
+ if (array_key_exists($key, $this->_schema)) {
507
+ $type = $this->_getDataType($key);
508
+ if ($type == 'S' || $type == 'N') {
509
+ $value = strval($value);
510
+ }
511
+ $this->_data[$key] = $value;
512
+ }
513
+ }
514
+
515
+ /**
516
+ * Return the value of a property of this object (dynamodb row) or null if not present.
517
+ *
518
+ * @param string $key
519
+ *
520
+ * @return mixed
521
+ */
522
+ public function get($key)
523
+ {
524
+ return isset($this->_data[$key]) ? $this->_data[$key] : null;
525
+ }
526
+
527
+ /**
528
+ * Remove value from set type field (String Set, Number Set, Binary Set)
529
+ *
530
+ * @param $key
531
+ * @param $value
532
+ */
533
+ public function setRemove($key, $value)
534
+ {
535
+ $type = $this->_getDataType($key);
536
+ if ($type == 'SS' || $type == 'NS' || $type == 'BS') {
537
+ $array = $this->get($key);
538
+ $index = array_search($value, $array);
539
+ if (!is_null($index)) {
540
+ unset($array[$index]);
541
+ }
542
+ $array = array_values($array);
543
+ $this->set($key, $array);
544
+ }
545
+ }
546
+
547
+ /**
548
+ * Add value to set type field (String Set, Number Set, Binary Set)
549
+ *
550
+ * @param $key
551
+ * @param $value
552
+ */
553
+ public function setAdd($key, $value)
554
+ {
555
+ $type = $this->_getDataType($key);
556
+ if ($type == 'SS' || $type == 'NS') {
557
+ $this->_data[$key][] = strval($value);
558
+ } elseif ($type == 'BS') {
559
+ $this->_data[$key][] = $value;
560
+ }
561
+ }
562
+
563
+ /**
564
+ * @param array $data
565
+ *
566
+ * @return $this
567
+ */
568
+ public function create(array $data = array())
569
+ {
570
+ $this->_is_new = true;
571
+ return $this->hydrate($data);
572
+ }
573
+
574
+ /**
575
+ * @param array $data
576
+ *
577
+ * @return $this
578
+ */
579
+ public function hydrate(array $data = array())
580
+ {
581
+ foreach ($data as $key => $value) {
582
+ $this->set($key, $value);
583
+ }
584
+ $this->_data_original = $this->_data;
585
+ return $this;
586
+ }
587
+
588
+ /**
589
+ * Return the raw data wrapped by this ORM instance as an associative array.
590
+ *
591
+ * @return array
592
+ */
593
+ public function asArray()
594
+ {
595
+ return $this->_data;
596
+ }
597
+
598
+ /**
599
+ * Return DynamoDbClient instance
600
+ *
601
+ * @return \Aws\DynamoDb\DynamoDbClient
602
+ */
603
+ public function getClient()
604
+ {
605
+ $client = self::$_client[$this->_connection_name];
606
+ return $client;
607
+ }
608
+
609
+ /**
610
+ * query
611
+ *
612
+ * @param array $conditions
613
+ * @param array $options
614
+ *
615
+ * @return array
616
+ *
617
+ * @link http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.DynamoDb.DynamoDbClient.html#_query
618
+ */
619
+ public function query(array $conditions, array $options = array())
620
+ {
621
+ $args = array(
622
+ 'TableName' => $this->_table_name,
623
+ 'KeyConditions' => $conditions,
624
+ 'ScanIndexForward' => true,
625
+ // Select: ALL_ATTRIBUTES|ALL_PROJECTED_ATTRIBUTES|SPECIFIC_ATTRIBUTES|COUNT
626
+ 'Select' => 'ALL_ATTRIBUTES',
627
+ 'ReturnConsumedCapacity' => 'TOTAL',
628
+ 'ConsistentRead' => $this->_consistent_read,
629
+ //'AttributesToGet'
630
+ //'ExclusiveStartKey'
631
+ //'IndexName'
632
+ );
633
+
634
+ // Merge $options to $args
635
+ $option_names = array('ScanIndexForward', 'QueryFilter');
636
+ foreach ($option_names as $option_name) {
637
+ if (isset($options[$option_name])) {
638
+ $args[$option_name] = $options[$option_name];
639
+ }
640
+ }
641
+
642
+ // if IndexName is specified
643
+ if ($this->_query_index_name) {
644
+ $args['IndexName'] = $this->_query_index_name;
645
+ }
646
+
647
+ if (intval($this->_limit) > 0) { // Has limit
648
+ // if ExclusiveStartKey is set
649
+ if ($this->_exclusive_start_key) {
650
+ $exclusive_start_key = $this->_formatAttributes($this->_exclusive_start_key);
651
+ $args['ExclusiveStartKey'] = $exclusive_start_key;
652
+ }
653
+
654
+ $args['Limit'] = intval($this->_limit);
655
+
656
+ $_client = $this->getClient();
657
+ $result = $_client->query($args);
658
+
659
+ // $result is "Guzzle\Service\Resource\Model"
660
+ // and $result has next keys
661
+ // - Count
662
+ // - Items
663
+ // - ScannedCount
664
+ // - LastEvaluatedKey
665
+ $items = $result['Items'];
666
+
667
+ // Set LastEvaluatedKey
668
+ $last_evaluated_key = null;
669
+ if (isset($result['LastEvaluatedKey'])) {
670
+ $last_evaluated_key = $this->_formatResult($result['LastEvaluatedKey']);
671
+ }
672
+ $this->_last_evaluated_key = $last_evaluated_key;
673
+
674
+ // Set Count
675
+ $result_count = null;
676
+ if (isset($result['Count'])) {
677
+ $result_count = $result['Count'];
678
+ }
679
+ $this->_result_count = $result_count;
680
+
681
+ } else { // No limit (Use Iterator)
682
+ $_client = $this->getClient();
683
+ $iterator = $_client->getIterator('Query', $args);
684
+
685
+ // $iterator is "Aws\Common\Iterator\AwsResourceIterator"
686
+ $items = array();
687
+ foreach ($iterator as $item) {
688
+ $items[] = $item;
689
+ }
690
+
691
+ // Set Count
692
+ $this->_result_count = count($items);
693
+
694
+ }
695
+
696
+ return $this->_formatResults($items);
697
+ }
698
+
699
+ /**
700
+ * Retrieve all records using scan
701
+ *
702
+ * @param array $options
703
+ *
704
+ * @return $this[]
705
+ */
706
+ public function findAll(array $options = array())
707
+ {
708
+ if ($this->_filter_conditions) {
709
+ $filter_conditions = $this->_buildConditions($this->_filter_conditions);
710
+ $options['ScanFilter'] = $filter_conditions;
711
+ }
712
+ $result = $this->scan($options);
713
+ $array = array();
714
+ $class_name = get_called_class();
715
+ foreach ($result as $row) {
716
+ $instance = self::factory($class_name, $this->_connection_name);
717
+ $instance->hydrate($row);
718
+ $array[] = $instance;
719
+ }
720
+ return $array;
721
+ }
722
+
723
+ /**
724
+ * scan
725
+ *
726
+ * @param array $options
727
+ *
728
+ * @return array
729
+ *
730
+ */
731
+ public function scan(array $options = array())
732
+ {
733
+ $options['TableName'] = $this->_table_name;
734
+ $_client = $this->getClient();
735
+
736
+ $iterator = $_client->getIterator('Scan', $options);
737
+ $items = array();
738
+ foreach ($iterator as $item) {
739
+ $items[] = $item;
740
+ }
741
+ return $this->_formatResults($items);
742
+ }
743
+
744
+ /**
745
+ * putItem
746
+ *
747
+ * @param array $values
748
+ * @param array $options
749
+ * @param array $expected
750
+ *
751
+ * @return \Aws\Result
752
+ *
753
+ * @link http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.DynamoDb.DynamoDbClient.html#_putItem
754
+ */
755
+ public function putItem(array $values, array $options = array(), array $expected = array())
756
+ {
757
+ $args = array(
758
+ 'TableName' => $this->_table_name,
759
+ 'Item' => $this->_formatAttributes($values),
760
+ //'ReturnValues' => 'ALL_NEW',
761
+ 'ReturnConsumedCapacity' => 'TOTAL',
762
+ 'ReturnItemCollectionMetrics' => 'SIZE',
763
+ );
764
+
765
+ // Set Expected if exists
766
+ if ($expected || isset($options['Exists'])) {
767
+ $exists = isset($options['Exists']) ? $options['Exists'] : array();
768
+ $args['Expected'] = $this->_formatAttributeExpected($expected, $exists);
769
+ }
770
+
771
+ // Merge $options to $args
772
+ $option_names = array('ReturnValues', 'ReturnConsumedCapacity', 'ReturnItemCollectionMetrics');
773
+ foreach ($option_names as $option_name) {
774
+ if (isset($options[$option_name])) {
775
+ $args[$option_name] = $options[$option_name];
776
+ }
777
+ }
778
+
779
+ $_client = $this->getClient();
780
+ $item = $_client->putItem($args);
781
+
782
+ return $item;
783
+ }
784
+
785
+ /**
786
+ * updateItem
787
+ *
788
+ * @param array $values associative array
789
+ *
790
+ * $values = array(
791
+ * 'name' => 'John',
792
+ * 'age' => 30,
793
+ * );
794
+ *
795
+ * @param array $options
796
+ *
797
+ * $options = array(
798
+ * 'ReturnValues' => 'string',
799
+ * 'ReturnConsumedCapacity' => 'string',
800
+ * 'ReturnItemCollectionMetrics' => 'string',
801
+ * 'Action' => array('age' => 'ADD'),
802
+ * 'Exists' => array('age' => true),
803
+ * );
804
+ *
805
+ * @param array $expected
806
+ *
807
+ * @return \AWS\Result
808
+ *
809
+ * @link http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.DynamoDb.DynamoDbClient.html#_updateItem
810
+ */
811
+ public function updateItem(array $values, array $options = array(), array $expected = array())
812
+ {
813
+ $conditions = $this->_getKeyConditions();
814
+
815
+ $action = array(); // Update Action (ADD|PUT|DELETE)
816
+ if (isset($options['Action'])) {
817
+ $action = $options['Action'];
818
+ }
819
+
820
+ $attributes = $this->_formatAttributeUpdates($values, $action);
821
+
822
+ foreach ($conditions as $key => $value) {
823
+ if (isset($attributes[$key])) {
824
+ unset($attributes[$key]);
825
+ }
826
+ }
827
+ $args = array(
828
+ 'TableName' => $this->_table_name,
829
+ 'Key' => $conditions,
830
+ 'AttributeUpdates' => $attributes,
831
+ 'ReturnValues' => 'ALL_NEW',
832
+ 'ReturnConsumedCapacity' => 'TOTAL',
833
+ 'ReturnItemCollectionMetrics' => 'SIZE',
834
+ );
835
+
836
+ // Set Expected if exists
837
+ if ($expected || isset($options['Exists'])) {
838
+ $exists = isset($options['Exists']) ? $options['Exists'] : array();
839
+ $args['Expected'] = $this->_formatAttributeExpected($expected, $exists);
840
+ }
841
+
842
+ // Merge $options to $args
843
+ $option_names = array('ReturnValues', 'ReturnConsumedCapacity', 'ReturnItemCollectionMetrics');
844
+ foreach ($option_names as $option_name) {
845
+ if (isset($options[$option_name])) {
846
+ $args[$option_name] = $options[$option_name];
847
+ }
848
+ }
849
+
850
+ $_client = $this->getClient();
851
+ $item = $_client->updateItem($args);
852
+
853
+ return $item;
854
+ }
855
+
856
+ /**
857
+ * Set ExclusiveStartKey for query parameter
858
+ *
859
+ * @param array $exclusive_start_key
860
+ *
861
+ * $exclusive_start_key = array(
862
+ * 'key_name1' => 'value1',
863
+ * 'key_name2' => 'value2',
864
+ * );
865
+ *
866
+ * @return $this
867
+ */
868
+ public function setExclusiveStartKey(array $exclusive_start_key)
869
+ {
870
+ $this->_exclusive_start_key = $exclusive_start_key;
871
+ return $this;
872
+ }
873
+
874
+ /**
875
+ * Reset Where Conditions and Limit ..
876
+ *
877
+ * @return $this
878
+ */
879
+ public function resetConditions()
880
+ {
881
+ $this->_limit = null;
882
+ $this->_where_conditions = array();
883
+ $this->_filter_conditions = array();
884
+ $this->_exclusive_start_key = null;
885
+ $this->_query_index_name = null;
886
+ $this->_consistent_read = false;
887
+ return $this;
888
+ }
889
+
890
+ /**
891
+ * Get Hash Key
892
+ *
893
+ * @return string
894
+ */
895
+ public function getHashKey()
896
+ {
897
+ return $this->_hash_key;
898
+ }
899
+
900
+ /**
901
+ * Get Range Key
902
+ *
903
+ * @return string
904
+ */
905
+ public function getRangeKey()
906
+ {
907
+ return $this->_range_key;
908
+ }
909
+
910
+ /**
911
+ * Get Table Name
912
+ *
913
+ * @return string
914
+ */
915
+ public function getTableName()
916
+ {
917
+ return $this->_table_name;
918
+ }
919
+
920
+ /**
921
+ * Convert to DynamoDB Import/Export Format.
922
+ *
923
+ * @link http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-importexport-ddb-pipelinejson-verifydata2.html
924
+ *
925
+ * @return string
926
+ */
927
+ public function toImportFormat()
928
+ {
929
+ $text = "";
930
+ $etx = chr(3); // ETX
931
+ $stx = chr(2); // STX
932
+
933
+ foreach ($this->_schema as $column => $type) {
934
+ $value = $this->get($column);
935
+ if (strlen($value) == 0) {
936
+ continue;
937
+ }
938
+ // column_name≤ETX>{type:value}<STX>
939
+ $data = array(strtolower($type) => $value);
940
+ $json = json_encode($data);
941
+ if (!$json) {
942
+ continue;
943
+ }
944
+ $text .= $column . $etx . $json . $stx;
945
+ }
946
+ $text = rtrim($text, $stx); // remove last STX
947
+ $text .= "\n";
948
+ return $text;
949
+ }
950
+
951
+ /**
952
+ * Retrieve items in batches of up to 100
953
+ *
954
+ * @param array $key_values
955
+ *
956
+ * HashKey: [hash_key_value1, hash_key_value2 ..]
957
+ * HashKey + RangeKey: [[hash_key_value1, range_key_value1] ...]
958
+ *
959
+ * @return $this[]
960
+ */
961
+ public function batchGetItems(array $key_values)
962
+ {
963
+ $keys = array();
964
+ foreach ($key_values as $key_value) {
965
+ if ($this->_range_key) {
966
+ $conditions = array(
967
+ $this->_hash_key => $key_value[0],
968
+ $this->_range_key => $key_value[1]
969
+ );
970
+ } else {
971
+ $_id = is_array($key_value) ? $key_value[0] : $key_value;
972
+ $conditions = array(
973
+ $this->_hash_key => $_id
974
+ );
975
+ }
976
+ $keys[] = $this->_formatAttributes($conditions);
977
+ }
978
+ $_client = $this->getClient();
979
+ $result = $_client->batchGetItem(
980
+ array(
981
+ 'RequestItems' => array(
982
+ $this->_table_name => array(
983
+ 'Keys' => $keys,
984
+ 'ConsistentRead' => true
985
+ )
986
+ )
987
+ )
988
+ );
989
+ $items = $result->getPath("Responses/{$this->_table_name}");
990
+ $class_name = get_called_class();
991
+ $formatted_result = $this->_formatResults($items);
992
+
993
+ $array = array();
994
+ foreach ($formatted_result as $row) {
995
+ $instance = self::factory($class_name, $this->_connection_name);
996
+ $instance->hydrate($row);
997
+ $array[] = $instance;
998
+ }
999
+ return $array;
1000
+ }
1001
+
1002
+ /**
1003
+ * Retrieve findMany result as array
1004
+ *
1005
+ * @param array $options
1006
+ *
1007
+ * @return array
1008
+ */
1009
+ public function findArray(array $options = array())
1010
+ {
1011
+ $entity_list = $this->findMany($options);
1012
+ $result = array();
1013
+ foreach ($entity_list as $entity) {
1014
+ $result[] = $entity->asArray();
1015
+ }
1016
+ return $result;
1017
+ }
1018
+
1019
+ //-----------------------------------------------
1020
+ // MAGIC METHODS
1021
+ //-----------------------------------------------
1022
+
1023
+ public function __get($key)
1024
+ {
1025
+ return $this->get($key);
1026
+ }
1027
+
1028
+ public function __set($key, $value)
1029
+ {
1030
+ $this->set($key, $value);
1031
+ }
1032
+
1033
+ public function __unset($key)
1034
+ {
1035
+ unset($this->_data[$key]);
1036
+ }
1037
+
1038
+ public function __isset($key)
1039
+ {
1040
+ return isset($this->_data[$key]);
1041
+ }
1042
+
1043
+ //-----------------------------------------------
1044
+ // PUBLIC METHODS (STATIC)
1045
+ //-----------------------------------------------
1046
+
1047
+ /**
1048
+ * @param string $class_name
1049
+ * @param string $connection_name
1050
+ *
1051
+ * @return $this instance of the ORM sub class
1052
+ */
1053
+ public static function factory($class_name, $connection_name = self::DEFAULT_CONNECTION)
1054
+ {
1055
+ self::_setupClient($connection_name);
1056
+
1057
+ /** @var self $object */
1058
+ $object = new $class_name();
1059
+ $object->setConnectionName($connection_name);
1060
+ return $object;
1061
+ }
1062
+
1063
+ //-----------------------------------------------
1064
+ // PRIVATE METHODS
1065
+ //-----------------------------------------------
1066
+ protected function __construct()
1067
+ {
1068
+
1069
+ }
1070
+
1071
+ /**
1072
+ * Return primary key condition
1073
+ *
1074
+ * @return array $condition
1075
+ * $condition = array(
1076
+ * 'id' => array('S' => '10001'),
1077
+ * 'time' => array('N' => '1397604993'),
1078
+ * );
1079
+ */
1080
+ protected function _getKeyConditions()
1081
+ {
1082
+ $condition = array(
1083
+ $this->_hash_key => $this->get($this->_hash_key)
1084
+ );
1085
+ if ($this->_range_key) {
1086
+ if ($this->get($this->_range_key)) {
1087
+ $condition[$this->_range_key] = $this->get($this->_range_key);
1088
+ }
1089
+ }
1090
+ $condition = $this->_formatAttributes($condition);
1091
+ return $condition;
1092
+ }
1093
+
1094
+ /**
1095
+ * _formatAttributes
1096
+ *
1097
+ * @param array $array
1098
+ *
1099
+ * $array = array(
1100
+ * 'name' => 'John',
1101
+ * 'age' => 20,
1102
+ * );
1103
+ *
1104
+ * @return array $result
1105
+ *
1106
+ * $result = array(
1107
+ * 'name' => array('S' => 'John'),
1108
+ * 'age' => array('N' => 20),
1109
+ * );
1110
+ */
1111
+ protected function _formatAttributes($array)
1112
+ {
1113
+ $result = array();
1114
+ foreach ($array as $key => $value) {
1115
+ $type = $this->_getDataType($key);
1116
+ if ($type == 'S' || $type == 'N') {
1117
+ $value = strval($value);
1118
+ }
1119
+ $result[$key] = array($type => $value);
1120
+ }
1121
+ return $result;
1122
+ }
1123
+
1124
+ /**
1125
+ * Format attribute for Update
1126
+ *
1127
+ * @param array $array
1128
+ *
1129
+ * $array = array(
1130
+ * 'name' => 'John',
1131
+ * 'age' => 1,
1132
+ * );
1133
+ *
1134
+ * @param array $actions
1135
+ *
1136
+ * $actions = array(
1137
+ * 'count' => 'ADD', // field_name => action_name
1138
+ * );
1139
+ *
1140
+ * @return array $result
1141
+ *
1142
+ * $result = array(
1143
+ * 'name' => array(
1144
+ * 'Action' => 'PUT',
1145
+ * 'Value' => array('S' => 'John')
1146
+ * ),
1147
+ * 'count' => array(
1148
+ * 'Action' => 'ADD',
1149
+ * 'Value' => array('N' => 1)
1150
+ * ),
1151
+ * );
1152
+ */
1153
+ protected function _formatAttributeUpdates(array $array, array $actions = array())
1154
+ {
1155
+ $result = array();
1156
+ foreach ($array as $key => $value) {
1157
+ $type = $this->_getDataType($key);
1158
+ $action = 'PUT'; // default
1159
+ if (isset($actions[$key])) {
1160
+ $action = $actions[$key]; // overwrite if $actions is set
1161
+ }
1162
+ $result[$key] = array(
1163
+ 'Action' => $action,
1164
+ 'Value' => array($type => $value),
1165
+ );
1166
+ }
1167
+ return $result;
1168
+ }
1169
+
1170
+ /**
1171
+ * Format attribute for Expected
1172
+ *
1173
+ * @param array $array
1174
+ *
1175
+ * $array = array(
1176
+ * 'name' => 'John',
1177
+ * 'age' => 30,
1178
+ * );
1179
+ *
1180
+ * @param array $exists
1181
+ *
1182
+ * $exists = array(
1183
+ * 'age' => true, // field_name => bool
1184
+ * );
1185
+ *
1186
+ * @return array
1187
+ *
1188
+ * $result = array(
1189
+ * 'name' => array(
1190
+ * 'Value' => array('S' => 'John')
1191
+ * ),
1192
+ * 'age' => array(
1193
+ * 'Value' => array('N' => 30),
1194
+ * 'Exists' => true
1195
+ * )
1196
+ * );
1197
+ *
1198
+ */
1199
+ protected function _formatAttributeExpected(array $array, array $exists = array())
1200
+ {
1201
+ $result = array();
1202
+ foreach ($array as $key => $value) {
1203
+ $type = $this->_getDataType($key);
1204
+ $result[$key] = array(
1205
+ 'Value' => array($type => $value)
1206
+ );
1207
+ }
1208
+ foreach ($exists as $key => $value) {
1209
+ $result[$key]['Exists'] = $value; // set if $exists is set
1210
+ }
1211
+ return $result;
1212
+ }
1213
+
1214
+
1215
+ /**
1216
+ * Convert result array to simple associative array
1217
+ *
1218
+ * @param array $items
1219
+ *
1220
+ * @return array
1221
+ * @see ORM#_formatResult
1222
+ */
1223
+ protected function _formatResults(array $items)
1224
+ {
1225
+ $result = array();
1226
+ foreach ($items as $item) {
1227
+ $result[] = $this->_formatResult($item);
1228
+ }
1229
+ return $result;
1230
+ }
1231
+
1232
+
1233
+ /**
1234
+ * Convert result array to simple associative array
1235
+ *
1236
+ * @param array $item
1237
+ *
1238
+ * $item = array(
1239
+ * 'name' => array('S' => 'John'),
1240
+ * 'age' => array('N' => 30)
1241
+ * );
1242
+ *
1243
+ * @return array $hash
1244
+ *
1245
+ * $hash = array(
1246
+ * 'name' => 'John',
1247
+ * 'age' => 30,
1248
+ * );
1249
+ */
1250
+ protected function _formatResult(array $item)
1251
+ {
1252
+ $hash = array();
1253
+ foreach ($item as $key => $value) {
1254
+ $values = array_values($value);
1255
+ $hash[$key] = $values[0];
1256
+ }
1257
+ return $hash;
1258
+ }
1259
+
1260
+ /**
1261
+ * Build where conditions
1262
+ *
1263
+ * @param array $conditions
1264
+ *
1265
+ * $_where_conditions = array(
1266
+ * 0 => array('name', 'EQ', 'John'),
1267
+ * 1 => array('age', 'GT', 20),
1268
+ * 2 => array('country', 'IN', array('Japan', 'Korea'))
1269
+ * );
1270
+ *
1271
+ * @return array $result
1272
+ *
1273
+ * $result = array(
1274
+ * 'name' => array(
1275
+ * 'ComparisonOperator' => 'EQ'
1276
+ * 'AttributeValueList' => array(
1277
+ * 0 => array(
1278
+ * 'S' => 'John'
1279
+ * )
1280
+ * )
1281
+ * ),
1282
+ * :
1283
+ * :
1284
+ * );
1285
+ */
1286
+ public function _buildConditions($conditions)
1287
+ {
1288
+ $result = array();
1289
+ foreach ($conditions as $i => $condition) {
1290
+ $key = $condition[0];
1291
+ $operator = $condition[1];
1292
+ $value = $condition[2];
1293
+
1294
+ if (!is_array($value)) {
1295
+ $value = array((string)$value);
1296
+ }
1297
+
1298
+ $attributes = array();
1299
+ foreach ($value as $v) {
1300
+ $attributes[] = array($this->_getDataType($key) => (string)$v);
1301
+ }
1302
+ $result[$key] = array(
1303
+ 'ComparisonOperator' => $operator,
1304
+ 'AttributeValueList' => $attributes,
1305
+ );
1306
+ }
1307
+ return $result;
1308
+ }
1309
+
1310
+ /**
1311
+ * Convert operator by alias
1312
+ *
1313
+ * @param string $operator
1314
+ *
1315
+ * @return string $operator
1316
+ */
1317
+ protected function _convertOperator($operator)
1318
+ {
1319
+ $alias = array(
1320
+ '=' => 'EQ',
1321
+ '!=' => 'NE',
1322
+ '>' => 'GT',
1323
+ '>=' => 'GE',
1324
+ '<' => 'LT',
1325
+ '<=' => 'LE',
1326
+ '~' => 'BETWEEN',
1327
+ '^' => 'BEGINS_WITH',
1328
+ 'NOT_NULL' => 'NOT_NULL',
1329
+ 'NULL' => 'NULL',
1330
+ 'CONTAINS' => 'CONTAINS',
1331
+ 'NOT_CONTAINS' => 'NOT_CONTAINS',
1332
+ 'IN' => 'IN',
1333
+ );
1334
+ if (isset($alias[$operator])) {
1335
+ return $alias[$operator];
1336
+ }
1337
+ if (in_array($operator, array_values($alias))) {
1338
+ return $operator;
1339
+ }
1340
+ return 'EQ'; // default
1341
+ }
1342
+
1343
+
1344
+ /**
1345
+ * Return data type using $_schema
1346
+ *
1347
+ * @param string $key
1348
+ *
1349
+ * @return string $type
1350
+ *
1351
+ * S: String
1352
+ * N: Number
1353
+ * B: Binary
1354
+ * SS: A set of strings
1355
+ * NS: A set of numbers
1356
+ * BS: A set of binary
1357
+ */
1358
+ protected function _getDataType($key)
1359
+ {
1360
+ $type = 'S';
1361
+ if (isset($this->_schema[$key])) {
1362
+ $type = $this->_schema[$key];
1363
+ }
1364
+ return $type;
1365
+ }
1366
+
1367
+ /**
1368
+ * Removing all empty elements from a hash
1369
+ *
1370
+ * @param array $array
1371
+ *
1372
+ * @return array
1373
+ */
1374
+ protected function _compact(array $array)
1375
+ {
1376
+ foreach ($array as $key => $value) {
1377
+ if (is_null($value) || $value === '') {
1378
+ unset($array[$key]);
1379
+ }
1380
+ }
1381
+ return $array;
1382
+ }
1383
+
1384
+ //-----------------------------------------------
1385
+ // PRIVATE METHODS (STATIC)
1386
+ //-----------------------------------------------
1387
+
1388
+ // called from static factory method.
1389
+ protected static function _setupClient($connection_name = self::DEFAULT_CONNECTION)
1390
+ {
1391
+ if (!isset(self::$_client[$connection_name])) {
1392
+ $params = self::getConfig(null, $connection_name);
1393
+
1394
+ if (self::getConfig('key', $connection_name) && self::getConfig('secret', $connection_name)) {
1395
+ $params['credentials'] = new Credentials(
1396
+ self::getConfig('key', $connection_name), self::getConfig('secret', $connection_name)
1397
+ );
1398
+ }
1399
+ if (self::getConfig('base_url', $connection_name)) {
1400
+ $params['endpoint'] = self::getConfig('base_url', $connection_name);
1401
+ }
1402
+
1403
+ $client = new DynamoDbClient($params);
1404
+ self::$_client[$connection_name] = $client;
1405
+ }
1406
+ }
1407
+
1408
+ /**
1409
+ * @deprecated
1410
+ */
1411
+ protected static function _logQuery($query, array $args, $response)
1412
+ {
1413
+ }
1414
+ }
1415
+
1416
+ class KettleException extends \Exception
1417
+ {
1418
+ }