packwerk 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (153) hide show
  1. checksums.yaml +7 -0
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +27 -0
  3. data/.github/probots.yml +2 -0
  4. data/.github/pull_request_template.md +27 -0
  5. data/.github/workflows/ci.yml +50 -0
  6. data/.gitignore +12 -0
  7. data/.rubocop.yml +46 -0
  8. data/.ruby-version +1 -0
  9. data/CODEOWNERS +1 -0
  10. data/CODE_OF_CONDUCT.md +76 -0
  11. data/CONTRIBUTING.md +17 -0
  12. data/Gemfile +22 -0
  13. data/Gemfile.lock +236 -0
  14. data/LICENSE.md +7 -0
  15. data/README.md +73 -0
  16. data/Rakefile +13 -0
  17. data/TROUBLESHOOT.md +67 -0
  18. data/USAGE.md +250 -0
  19. data/bin/console +15 -0
  20. data/bin/setup +8 -0
  21. data/dev.yml +32 -0
  22. data/docs/cohesion.png +0 -0
  23. data/exe/packwerk +6 -0
  24. data/lib/packwerk.rb +44 -0
  25. data/lib/packwerk/application_validator.rb +343 -0
  26. data/lib/packwerk/association_inspector.rb +44 -0
  27. data/lib/packwerk/checking_deprecated_references.rb +40 -0
  28. data/lib/packwerk/cli.rb +238 -0
  29. data/lib/packwerk/configuration.rb +82 -0
  30. data/lib/packwerk/const_node_inspector.rb +44 -0
  31. data/lib/packwerk/constant_discovery.rb +60 -0
  32. data/lib/packwerk/constant_name_inspector.rb +22 -0
  33. data/lib/packwerk/dependency_checker.rb +28 -0
  34. data/lib/packwerk/deprecated_references.rb +92 -0
  35. data/lib/packwerk/file_processor.rb +43 -0
  36. data/lib/packwerk/files_for_processing.rb +67 -0
  37. data/lib/packwerk/formatters/progress_formatter.rb +46 -0
  38. data/lib/packwerk/generators/application_validation.rb +62 -0
  39. data/lib/packwerk/generators/configuration_file.rb +69 -0
  40. data/lib/packwerk/generators/inflections_file.rb +43 -0
  41. data/lib/packwerk/generators/root_package.rb +37 -0
  42. data/lib/packwerk/generators/templates/inflections.yml +6 -0
  43. data/lib/packwerk/generators/templates/package.yml +17 -0
  44. data/lib/packwerk/generators/templates/packwerk +23 -0
  45. data/lib/packwerk/generators/templates/packwerk.yml.erb +23 -0
  46. data/lib/packwerk/generators/templates/packwerk_validator_test.rb +11 -0
  47. data/lib/packwerk/graph.rb +74 -0
  48. data/lib/packwerk/inflections/custom.rb +33 -0
  49. data/lib/packwerk/inflections/default.rb +73 -0
  50. data/lib/packwerk/inflector.rb +41 -0
  51. data/lib/packwerk/node.rb +259 -0
  52. data/lib/packwerk/node_processor.rb +49 -0
  53. data/lib/packwerk/node_visitor.rb +22 -0
  54. data/lib/packwerk/offense.rb +44 -0
  55. data/lib/packwerk/output_styles.rb +41 -0
  56. data/lib/packwerk/package.rb +56 -0
  57. data/lib/packwerk/package_set.rb +59 -0
  58. data/lib/packwerk/parsed_constant_definitions.rb +62 -0
  59. data/lib/packwerk/parsers.rb +23 -0
  60. data/lib/packwerk/parsers/erb.rb +66 -0
  61. data/lib/packwerk/parsers/factory.rb +34 -0
  62. data/lib/packwerk/parsers/ruby.rb +42 -0
  63. data/lib/packwerk/privacy_checker.rb +45 -0
  64. data/lib/packwerk/reference.rb +6 -0
  65. data/lib/packwerk/reference_extractor.rb +81 -0
  66. data/lib/packwerk/reference_lister.rb +23 -0
  67. data/lib/packwerk/run_context.rb +103 -0
  68. data/lib/packwerk/sanity_checker.rb +10 -0
  69. data/lib/packwerk/spring_command.rb +28 -0
  70. data/lib/packwerk/updating_deprecated_references.rb +51 -0
  71. data/lib/packwerk/version.rb +6 -0
  72. data/lib/packwerk/violation_type.rb +13 -0
  73. data/library.yml +6 -0
  74. data/packwerk.gemspec +58 -0
  75. data/service.yml +6 -0
  76. data/shipit.rubygems.yml +1 -0
  77. data/sorbet/config +2 -0
  78. data/sorbet/rbi/gems/actioncable@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +840 -0
  79. data/sorbet/rbi/gems/actionmailbox@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +571 -0
  80. data/sorbet/rbi/gems/actionmailer@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +568 -0
  81. data/sorbet/rbi/gems/actionpack@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +5216 -0
  82. data/sorbet/rbi/gems/actiontext@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +663 -0
  83. data/sorbet/rbi/gems/actionview@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +2504 -0
  84. data/sorbet/rbi/gems/activejob@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +635 -0
  85. data/sorbet/rbi/gems/activemodel@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +1201 -0
  86. data/sorbet/rbi/gems/activerecord@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +8011 -0
  87. data/sorbet/rbi/gems/activestorage@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +904 -0
  88. data/sorbet/rbi/gems/activesupport@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +3888 -0
  89. data/sorbet/rbi/gems/ast@2.4.1.rbi +54 -0
  90. data/sorbet/rbi/gems/better_html@1.0.15.rbi +317 -0
  91. data/sorbet/rbi/gems/builder@3.2.4.rbi +8 -0
  92. data/sorbet/rbi/gems/byebug@11.1.3.rbi +8 -0
  93. data/sorbet/rbi/gems/coderay@1.1.3.rbi +8 -0
  94. data/sorbet/rbi/gems/colorize@0.8.1.rbi +40 -0
  95. data/sorbet/rbi/gems/commander@4.5.2.rbi +8 -0
  96. data/sorbet/rbi/gems/concurrent-ruby@1.1.6.rbi +1966 -0
  97. data/sorbet/rbi/gems/constant_resolver@0.1.5.rbi +26 -0
  98. data/sorbet/rbi/gems/crass@1.0.6.rbi +138 -0
  99. data/sorbet/rbi/gems/erubi@1.9.0.rbi +39 -0
  100. data/sorbet/rbi/gems/globalid@0.4.2.rbi +178 -0
  101. data/sorbet/rbi/gems/highline@2.0.3.rbi +8 -0
  102. data/sorbet/rbi/gems/html_tokenizer@0.0.7.rbi +46 -0
  103. data/sorbet/rbi/gems/i18n@1.8.2.rbi +633 -0
  104. data/sorbet/rbi/gems/jaro_winkler@1.5.4.rbi +8 -0
  105. data/sorbet/rbi/gems/loofah@2.5.0.rbi +272 -0
  106. data/sorbet/rbi/gems/m@1.5.1.rbi +108 -0
  107. data/sorbet/rbi/gems/mail@2.7.1.rbi +2490 -0
  108. data/sorbet/rbi/gems/marcel@0.3.3.rbi +30 -0
  109. data/sorbet/rbi/gems/method_source@1.0.0.rbi +76 -0
  110. data/sorbet/rbi/gems/mimemagic@0.3.5.rbi +47 -0
  111. data/sorbet/rbi/gems/mini_mime@1.0.2.rbi +71 -0
  112. data/sorbet/rbi/gems/mini_portile2@2.4.0.rbi +8 -0
  113. data/sorbet/rbi/gems/minitest@5.14.0.rbi +542 -0
  114. data/sorbet/rbi/gems/mocha@1.11.2.rbi +964 -0
  115. data/sorbet/rbi/gems/nio4r@2.5.2.rbi +89 -0
  116. data/sorbet/rbi/gems/nokogiri@1.10.9.rbi +1608 -0
  117. data/sorbet/rbi/gems/parallel@1.19.1.rbi +8 -0
  118. data/sorbet/rbi/gems/parlour@4.0.1.rbi +561 -0
  119. data/sorbet/rbi/gems/parser@2.7.1.4.rbi +1632 -0
  120. data/sorbet/rbi/gems/pry@0.13.1.rbi +8 -0
  121. data/sorbet/rbi/gems/rack-test@1.1.0.rbi +335 -0
  122. data/sorbet/rbi/gems/rack@2.2.2.rbi +1730 -0
  123. data/sorbet/rbi/gems/rails-dom-testing@2.0.3.rbi +123 -0
  124. data/sorbet/rbi/gems/rails-html-sanitizer@1.3.0.rbi +213 -0
  125. data/sorbet/rbi/gems/rails@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +8 -0
  126. data/sorbet/rbi/gems/railties@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +869 -0
  127. data/sorbet/rbi/gems/rainbow@3.0.0.rbi +155 -0
  128. data/sorbet/rbi/gems/rake@13.0.1.rbi +841 -0
  129. data/sorbet/rbi/gems/rexml@3.2.4.rbi +8 -0
  130. data/sorbet/rbi/gems/rubocop-performance@1.5.2.rbi +8 -0
  131. data/sorbet/rbi/gems/rubocop-shopify@1.0.2.rbi +8 -0
  132. data/sorbet/rbi/gems/rubocop-sorbet@0.3.7.rbi +8 -0
  133. data/sorbet/rbi/gems/rubocop@0.82.0.rbi +8 -0
  134. data/sorbet/rbi/gems/ruby-progressbar@1.10.1.rbi +8 -0
  135. data/sorbet/rbi/gems/smart_properties@1.15.0.rbi +168 -0
  136. data/sorbet/rbi/gems/spoom@1.0.4.rbi +418 -0
  137. data/sorbet/rbi/gems/spring@2.1.0.rbi +160 -0
  138. data/sorbet/rbi/gems/sprockets-rails@3.2.1.rbi +431 -0
  139. data/sorbet/rbi/gems/sprockets@4.0.0.rbi +1132 -0
  140. data/sorbet/rbi/gems/tapioca@0.4.5.rbi +518 -0
  141. data/sorbet/rbi/gems/thor@1.0.1.rbi +892 -0
  142. data/sorbet/rbi/gems/tzinfo@2.0.2.rbi +547 -0
  143. data/sorbet/rbi/gems/unicode-display_width@1.7.0.rbi +8 -0
  144. data/sorbet/rbi/gems/websocket-driver@0.7.1.rbi +438 -0
  145. data/sorbet/rbi/gems/websocket-extensions@0.1.4.rbi +71 -0
  146. data/sorbet/rbi/gems/zeitwerk@2.3.0.rbi +8 -0
  147. data/sorbet/tapioca/require.rb +25 -0
  148. data/static/packwerk-check-demo.png +0 -0
  149. data/static/packwerk_check.gif +0 -0
  150. data/static/packwerk_check_violation.gif +0 -0
  151. data/static/packwerk_update.gif +0 -0
  152. data/static/packwerk_validate.gif +0 -0
  153. metadata +341 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: cdc39eaf91ef0f8f247cc31b54a3bb1680fcc0ddee4e9552f60a8c9bbdcf3410
4
+ data.tar.gz: d449d1c6484b490d79a6dd3d98b0cdc84bf2ffdae1aa0564544ee3aa1e592f12
5
+ SHA512:
6
+ metadata.gz: c1f2d61a18cb126e85e824e0bc6d2a5854e2dd7114717165fb71ae9a5765f719464c7b66177078c01a5601aca9e8500112f68d695594a650f03da62a0d3054a2
7
+ data.tar.gz: a674e776393ab5cc078ab21c9faefa554d54a85010bde8c40e47cb5bf6eed1b3e8e523cecce8f8673a0dfb606f455aac1ae3bb71b12acd7c5dfccffa2b645eda
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: Bug / Issue Report
3
+ about: Create a report to help us improve
4
+ title: '[Bug Report]'
5
+ labels: bug
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Description**
11
+ A clear and concise description of what the bug/issue is.
12
+
13
+ **To Reproduce**
14
+ Steps to reproduce the behavior.
15
+
16
+ **Expected Behaviour**
17
+ A clear and concise description of what you expected to happen.
18
+
19
+ **Screenshots**
20
+ If applicable, add screenshots to help explain your problem.
21
+
22
+ **Version Information**
23
+ - Packwerk: [e.g. v0.1.7]
24
+ - Ruby [e.g. v1.7]
25
+
26
+ **Additional Context**
27
+ How have you tried to solve the issue? Add any other context about the problem here.
@@ -0,0 +1,2 @@
1
+ enabled:
2
+ - cla
@@ -0,0 +1,27 @@
1
+ ## What are you trying to accomplish?
2
+
3
+
4
+ ## What approach did you choose and why?
5
+
6
+
7
+ ## What should reviewers focus on?
8
+
9
+
10
+
11
+ ## Type of Change
12
+
13
+ - [ ] Bug fix (non-breaking change which fixes an issue)
14
+ - [ ] New feature (non-breaking change which adds functionality)
15
+ - [ ] Code refactor (non-breaking change that doesn't add functionality)
16
+ - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
17
+ - [ ] This change requires a documentation update
18
+
19
+ ### Additional Release Notes
20
+
21
+ Include any notes here to include in the release description. For example, if you selected "breaking change" above, leave notes on how users can transition to this version.
22
+
23
+ If no additional notes are necessary, delete this section or leave it unchanged.
24
+
25
+ ## Checklist
26
+
27
+ - [ ] It is safe to simply rollback this change.
@@ -0,0 +1,50 @@
1
+ name: CI
2
+
3
+ on: [push]
4
+
5
+ jobs:
6
+ build:
7
+ runs-on: ubuntu-latest
8
+ strategy:
9
+ matrix:
10
+ ruby:
11
+ - 2.6
12
+ - 2.7
13
+ name: Tests Ruby ${{ matrix.ruby }}
14
+ steps:
15
+ - uses: actions/checkout@v1
16
+ - name: Set up Ruby ${{ matrix.ruby }}
17
+ uses: actions/setup-ruby@v1
18
+ with:
19
+ ruby-version: ${{ matrix.ruby }}
20
+ - name: Run tests
21
+ run: |
22
+ gem install bundler
23
+ bundle install --jobs 4 --retry 3
24
+ bundle exec rake
25
+ lint:
26
+ runs-on: ubuntu-latest
27
+ steps:
28
+ - uses: actions/checkout@v1
29
+ - name: Set up Ruby 2.6
30
+ uses: actions/setup-ruby@v1
31
+ with:
32
+ ruby-version: 2.6.x
33
+ - name: Run style checks
34
+ run: |
35
+ gem install bundler
36
+ bundle install --jobs 4 --retry 3
37
+ bundle exec rubocop
38
+ static-type-checking:
39
+ runs-on: ubuntu-latest
40
+ steps:
41
+ - uses: actions/checkout@v1
42
+ - name: Set up Ruby 2.6
43
+ uses: actions/setup-ruby@v1
44
+ with:
45
+ ruby-version: 2.6.x
46
+ - name: Run static type checks
47
+ run: |
48
+ gem install bundler
49
+ bundle install --jobs 4 --retry 3
50
+ bundle exec srb tc
@@ -0,0 +1,12 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+ /.bundle/
10
+ /tmp/
11
+ .rubocop-*
12
+ sorbet/rbi/hidden-definitions/errors.txt
@@ -0,0 +1,46 @@
1
+ inherit_gem:
2
+ rubocop-shopify: rubocop.yml
3
+
4
+ require:
5
+ - rubocop-performance
6
+ - rubocop-sorbet
7
+
8
+ AllCops:
9
+ TargetRubyVersion: 2.7
10
+ UseCache: true
11
+ CacheRootDirectory: tmp
12
+ Exclude:
13
+ - 'test/fixtures/**/*'
14
+
15
+ Lint/UnusedMethodArgument:
16
+ AllowUnusedKeywordArguments: true
17
+
18
+ Style/MethodCallWithArgsParentheses:
19
+ Enabled: true
20
+ IgnoreMacros: true
21
+ IgnoredMethods:
22
+ - require
23
+ - require_relative
24
+ - require_dependency
25
+ - yield
26
+ - raise
27
+ Exclude:
28
+ - Gemfile
29
+
30
+ Style/StringLiterals:
31
+ EnforcedStyle: double_quotes
32
+
33
+ Sorbet/ConstantsFromStrings:
34
+ Enabled: true
35
+
36
+ Sorbet/ForbidIncludeConstLiteral:
37
+ Enabled: true
38
+
39
+ Sorbet/ParametersOrderingInSignature:
40
+ Enabled: true
41
+
42
+ Sorbet/KeywordArgumentOrdering:
43
+ Enabled: true
44
+
45
+ Sorbet/ValidSigil:
46
+ Enabled: true
@@ -0,0 +1 @@
1
+ 2.6.6
@@ -0,0 +1 @@
1
+ * @Shopify/packwerk
@@ -0,0 +1,76 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to make participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, sex characteristics, gender identity and expression,
9
+ level of experience, education, socio-economic status, nationality, personal
10
+ appearance, race, religion, or sexual identity and orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies within all project spaces, and it also applies when
49
+ an individual is representing the project or its community in public spaces.
50
+ Examples of representing a project or community include using an official
51
+ project e-mail address, posting via an official social media account, or acting
52
+ as an appointed representative at an online or offline event. Representation of
53
+ a project may be further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at opensource@shopify.com. All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
+ available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72
+
73
+ [homepage]: https://www.contributor-covenant.org
74
+
75
+ For answers to common questions about this code of conduct, see
76
+ https://www.contributor-covenant.org/faq
@@ -0,0 +1,17 @@
1
+ # Contributing
2
+
3
+ ## Issue reporting
4
+ * Check to make sure the same issue has not already been reported or fixed
5
+ * Open an issue with a descriptive title and summary
6
+ * Be clear and concise and provide as many details as possible (e.g. Ruby version, Packwerk version, etc.)
7
+ * Include relevant code, where necessary
8
+
9
+ ## Pull requests
10
+ * Read and understand our [Code of Conduct](https://github.com/Shopify/packwerk/blob/main/CODE_OF_CONDUCT.md)
11
+ * Make sure tests are added for any changes to the code
12
+ * [Squash related commits together](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html)
13
+ * If the change includes any new keys to `packwerk.yml`, make sure that the [application validator](https://github.com/Shopify/packwerk/blob/1c711748b4a28b65220e2cefba764ffd8eb1a101/lib/packwerk/application_validator.rb#L116) is aligned with that change
14
+ * Open a pull request once the change is ready to be reviewed
15
+ * Be descriptive about the problem and reason about the proposed solution
16
+ * Include release notes describing the potential impact of the change in the pull request
17
+ * Make sure there has been at least one approval from Shopify before merging
data/Gemfile ADDED
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ source("https://rubygems.org")
4
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}.git" }
5
+
6
+ gemspec
7
+
8
+ # Specify the same dependency sources as the application Gemfile
9
+
10
+ gem("spring")
11
+ gem("rails", github: "rails/rails")
12
+ gem("constant_resolver", require: false)
13
+ gem("sorbet-runtime", require: false)
14
+ gem("rubocop-performance", require: false)
15
+ gem("rubocop-sorbet", require: false)
16
+ gem("mocha", require: false)
17
+ gem("rubocop-shopify", require: false)
18
+ gem("tapioca", require: false)
19
+
20
+ group :development do
21
+ gem("byebug", require: false)
22
+ end
@@ -0,0 +1,236 @@
1
+ GIT
2
+ remote: https://github.com/rails/rails.git
3
+ revision: d80c18a391e33552ae2d943e68af56946f883f65
4
+ specs:
5
+ actioncable (6.1.0.alpha)
6
+ actionpack (= 6.1.0.alpha)
7
+ activesupport (= 6.1.0.alpha)
8
+ nio4r (~> 2.0)
9
+ websocket-driver (>= 0.6.1)
10
+ actionmailbox (6.1.0.alpha)
11
+ actionpack (= 6.1.0.alpha)
12
+ activejob (= 6.1.0.alpha)
13
+ activerecord (= 6.1.0.alpha)
14
+ activestorage (= 6.1.0.alpha)
15
+ activesupport (= 6.1.0.alpha)
16
+ mail (>= 2.7.1)
17
+ actionmailer (6.1.0.alpha)
18
+ actionpack (= 6.1.0.alpha)
19
+ actionview (= 6.1.0.alpha)
20
+ activejob (= 6.1.0.alpha)
21
+ activesupport (= 6.1.0.alpha)
22
+ mail (~> 2.5, >= 2.5.4)
23
+ rails-dom-testing (~> 2.0)
24
+ actionpack (6.1.0.alpha)
25
+ actionview (= 6.1.0.alpha)
26
+ activesupport (= 6.1.0.alpha)
27
+ rack (~> 2.0, >= 2.0.9)
28
+ rack-test (>= 0.6.3)
29
+ rails-dom-testing (~> 2.0)
30
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
31
+ actiontext (6.1.0.alpha)
32
+ actionpack (= 6.1.0.alpha)
33
+ activerecord (= 6.1.0.alpha)
34
+ activestorage (= 6.1.0.alpha)
35
+ activesupport (= 6.1.0.alpha)
36
+ nokogiri (>= 1.8.5)
37
+ actionview (6.1.0.alpha)
38
+ activesupport (= 6.1.0.alpha)
39
+ builder (~> 3.1)
40
+ erubi (~> 1.4)
41
+ rails-dom-testing (~> 2.0)
42
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
43
+ activejob (6.1.0.alpha)
44
+ activesupport (= 6.1.0.alpha)
45
+ globalid (>= 0.3.6)
46
+ activemodel (6.1.0.alpha)
47
+ activesupport (= 6.1.0.alpha)
48
+ activerecord (6.1.0.alpha)
49
+ activemodel (= 6.1.0.alpha)
50
+ activesupport (= 6.1.0.alpha)
51
+ activestorage (6.1.0.alpha)
52
+ actionpack (= 6.1.0.alpha)
53
+ activejob (= 6.1.0.alpha)
54
+ activerecord (= 6.1.0.alpha)
55
+ activesupport (= 6.1.0.alpha)
56
+ marcel (~> 0.3.1)
57
+ activesupport (6.1.0.alpha)
58
+ concurrent-ruby (~> 1.0, >= 1.0.2)
59
+ i18n (>= 1.6, < 2)
60
+ minitest (~> 5.1)
61
+ tzinfo (~> 2.0)
62
+ zeitwerk (~> 2.3)
63
+ rails (6.1.0.alpha)
64
+ actioncable (= 6.1.0.alpha)
65
+ actionmailbox (= 6.1.0.alpha)
66
+ actionmailer (= 6.1.0.alpha)
67
+ actionpack (= 6.1.0.alpha)
68
+ actiontext (= 6.1.0.alpha)
69
+ actionview (= 6.1.0.alpha)
70
+ activejob (= 6.1.0.alpha)
71
+ activemodel (= 6.1.0.alpha)
72
+ activerecord (= 6.1.0.alpha)
73
+ activestorage (= 6.1.0.alpha)
74
+ activesupport (= 6.1.0.alpha)
75
+ bundler (>= 1.3.0)
76
+ railties (= 6.1.0.alpha)
77
+ sprockets-rails (>= 2.0.0)
78
+ railties (6.1.0.alpha)
79
+ actionpack (= 6.1.0.alpha)
80
+ activesupport (= 6.1.0.alpha)
81
+ method_source
82
+ rake (>= 0.8.7)
83
+ thor (~> 1.0)
84
+
85
+ PATH
86
+ remote: .
87
+ specs:
88
+ packwerk (1.0.0)
89
+ activesupport (>= 5.2)
90
+ ast
91
+ better_html
92
+ constant_resolver
93
+ parser
94
+ sorbet-runtime
95
+
96
+ GEM
97
+ remote: https://rubygems.org/
98
+ specs:
99
+ ast (2.4.1)
100
+ better_html (1.0.15)
101
+ actionview (>= 4.0)
102
+ activesupport (>= 4.0)
103
+ ast (~> 2.0)
104
+ erubi (~> 1.4)
105
+ html_tokenizer (~> 0.0.6)
106
+ parser (>= 2.4)
107
+ smart_properties
108
+ builder (3.2.4)
109
+ byebug (11.1.3)
110
+ coderay (1.1.3)
111
+ colorize (0.8.1)
112
+ commander (4.5.2)
113
+ highline (~> 2.0.0)
114
+ concurrent-ruby (1.1.6)
115
+ constant_resolver (0.1.5)
116
+ crass (1.0.6)
117
+ erubi (1.9.0)
118
+ globalid (0.4.2)
119
+ activesupport (>= 4.2.0)
120
+ highline (2.0.3)
121
+ html_tokenizer (0.0.7)
122
+ i18n (1.8.2)
123
+ concurrent-ruby (~> 1.0)
124
+ jaro_winkler (1.5.4)
125
+ loofah (2.5.0)
126
+ crass (~> 1.0.2)
127
+ nokogiri (>= 1.5.9)
128
+ m (1.5.1)
129
+ method_source (>= 0.6.7)
130
+ rake (>= 0.9.2.2)
131
+ mail (2.7.1)
132
+ mini_mime (>= 0.1.1)
133
+ marcel (0.3.3)
134
+ mimemagic (~> 0.3.2)
135
+ method_source (1.0.0)
136
+ mimemagic (0.3.5)
137
+ mini_mime (1.0.2)
138
+ mini_portile2 (2.4.0)
139
+ minitest (5.14.0)
140
+ mocha (1.11.2)
141
+ nio4r (2.5.2)
142
+ nokogiri (1.10.9)
143
+ mini_portile2 (~> 2.4.0)
144
+ parallel (1.19.1)
145
+ parlour (4.0.1)
146
+ commander (~> 4.5)
147
+ parser
148
+ rainbow (~> 3.0)
149
+ sorbet-runtime (>= 0.5)
150
+ parser (2.7.1.4)
151
+ ast (~> 2.4.1)
152
+ pry (0.13.1)
153
+ coderay (~> 1.1)
154
+ method_source (~> 1.0)
155
+ rack (2.2.2)
156
+ rack-test (1.1.0)
157
+ rack (>= 1.0, < 3)
158
+ rails-dom-testing (2.0.3)
159
+ activesupport (>= 4.2.0)
160
+ nokogiri (>= 1.6)
161
+ rails-html-sanitizer (1.3.0)
162
+ loofah (~> 2.3)
163
+ rainbow (3.0.0)
164
+ rake (13.0.1)
165
+ rexml (3.2.4)
166
+ rubocop (0.82.0)
167
+ jaro_winkler (~> 1.5.1)
168
+ parallel (~> 1.10)
169
+ parser (>= 2.7.0.1)
170
+ rainbow (>= 2.2.2, < 4.0)
171
+ rexml
172
+ ruby-progressbar (~> 1.7)
173
+ unicode-display_width (>= 1.4.0, < 2.0)
174
+ rubocop-performance (1.5.2)
175
+ rubocop (>= 0.71.0)
176
+ rubocop-shopify (1.0.2)
177
+ rubocop (~> 0.82.0)
178
+ rubocop-sorbet (0.3.7)
179
+ ruby-progressbar (1.10.1)
180
+ smart_properties (1.15.0)
181
+ sorbet (0.5.5898)
182
+ sorbet-static (= 0.5.5898)
183
+ sorbet-runtime (0.5.5898)
184
+ sorbet-static (0.5.5898-universal-darwin-19)
185
+ spoom (1.0.4)
186
+ colorize
187
+ sorbet (~> 0.5.5)
188
+ sorbet-runtime
189
+ thor (>= 0.19.2)
190
+ spring (2.1.0)
191
+ sprockets (4.0.0)
192
+ concurrent-ruby (~> 1.0)
193
+ rack (> 1, < 3)
194
+ sprockets-rails (3.2.1)
195
+ actionpack (>= 4.0)
196
+ activesupport (>= 4.0)
197
+ sprockets (>= 3.0.0)
198
+ tapioca (0.4.5)
199
+ parlour (>= 2.1.0)
200
+ pry (>= 0.12.2)
201
+ sorbet-runtime
202
+ sorbet-static (>= 0.4.4471)
203
+ spoom
204
+ thor (>= 0.19.2)
205
+ thor (1.0.1)
206
+ tzinfo (2.0.2)
207
+ concurrent-ruby (~> 1.0)
208
+ unicode-display_width (1.7.0)
209
+ websocket-driver (0.7.1)
210
+ websocket-extensions (>= 0.1.0)
211
+ websocket-extensions (0.1.4)
212
+ zeitwerk (2.3.0)
213
+
214
+ PLATFORMS
215
+ ruby
216
+ x86_64-darwin-19
217
+
218
+ DEPENDENCIES
219
+ bundler
220
+ byebug
221
+ constant_resolver
222
+ m
223
+ mocha
224
+ packwerk!
225
+ rails!
226
+ rake
227
+ rubocop-performance
228
+ rubocop-shopify
229
+ rubocop-sorbet
230
+ sorbet
231
+ sorbet-runtime
232
+ spring
233
+ tapioca
234
+
235
+ BUNDLED WITH
236
+ 2.1.4