react_on_rails_pro 16.2.0.beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. checksums.yaml +7 -0
  2. data/.controlplane/Dockerfile +49 -0
  3. data/.controlplane/controlplane.yml +22 -0
  4. data/.controlplane/gvc.yml +25 -0
  5. data/.controlplane/postgres.yml +33 -0
  6. data/.controlplane/rails.yml +49 -0
  7. data/.controlplane/redis.yml +18 -0
  8. data/.gitignore +77 -0
  9. data/.prettierignore +12 -0
  10. data/.prettierrc +19 -0
  11. data/.rspec +2 -0
  12. data/.rubocop.yml +120 -0
  13. data/.scss-lint.yml +205 -0
  14. data/CHANGELOG.md +570 -0
  15. data/CI_SETUP.md +502 -0
  16. data/CONTRIBUTING.md +376 -0
  17. data/Dockerfile +63 -0
  18. data/Gemfile +8 -0
  19. data/Gemfile.development_dependencies +74 -0
  20. data/Gemfile.loader +32 -0
  21. data/Gemfile.lock +527 -0
  22. data/LICENSE +98 -0
  23. data/LICENSE_SETUP.md +272 -0
  24. data/README.md +577 -0
  25. data/Rakefile +13 -0
  26. data/app/controllers/react_on_rails_pro/rsc_payload_controller.rb +7 -0
  27. data/app/helpers/react_on_rails_pro_helper.rb +360 -0
  28. data/app/views/react_on_rails_pro/rsc_payload.html.erb +1 -0
  29. data/babel.config.js +4 -0
  30. data/docs/bundle-caching.md +205 -0
  31. data/docs/caching.md +234 -0
  32. data/docs/code-splitting-loadable-components.md +313 -0
  33. data/docs/code-splitting.md +349 -0
  34. data/docs/configuration.md +165 -0
  35. data/docs/contributors-info/onboarding-customers.md +6 -0
  36. data/docs/contributors-info/releasing.md +40 -0
  37. data/docs/contributors-info/style.md +33 -0
  38. data/docs/home-pro.md +146 -0
  39. data/docs/installation.md +203 -0
  40. data/docs/js-memory-leaks.md +22 -0
  41. data/docs/node-renderer/basics.md +92 -0
  42. data/docs/node-renderer/debugging.md +38 -0
  43. data/docs/node-renderer/error-reporting-and-tracing.md +160 -0
  44. data/docs/node-renderer/heroku.md +102 -0
  45. data/docs/node-renderer/js-configuration.md +91 -0
  46. data/docs/node-renderer/troubleshooting.md +5 -0
  47. data/docs/profiling-server-side-rendering-code.md +179 -0
  48. data/docs/react-server-components/add-streaming-and-interactivity.md +190 -0
  49. data/docs/react-server-components/create-without-ssr.md +448 -0
  50. data/docs/react-server-components/glossary.md +102 -0
  51. data/docs/react-server-components/how-react-server-components-work.md +243 -0
  52. data/docs/react-server-components/inside-client-components.md +332 -0
  53. data/docs/react-server-components/purpose-and-benefits.md +243 -0
  54. data/docs/react-server-components/rendering-flow.md +86 -0
  55. data/docs/react-server-components/selective-hydration-in-streamed-components.md +75 -0
  56. data/docs/react-server-components/server-side-rendering.md +72 -0
  57. data/docs/react-server-components/tutorial.md +19 -0
  58. data/docs/release-notes/4.0.md +94 -0
  59. data/docs/release-notes/v4-react-server-components.md +66 -0
  60. data/docs/ruby-api.md +11 -0
  61. data/docs/streaming-server-rendering.md +210 -0
  62. data/docs/troubleshooting.md +24 -0
  63. data/docs/updating.md +219 -0
  64. data/eslint.config.mjs +220 -0
  65. data/lib/react_on_rails_pro/assets_precompile.rb +230 -0
  66. data/lib/react_on_rails_pro/cache.rb +88 -0
  67. data/lib/react_on_rails_pro/concerns/rsc_payload_renderer.rb +38 -0
  68. data/lib/react_on_rails_pro/concerns/stream.rb +103 -0
  69. data/lib/react_on_rails_pro/configuration.rb +228 -0
  70. data/lib/react_on_rails_pro/constants.rb +8 -0
  71. data/lib/react_on_rails_pro/engine.rb +24 -0
  72. data/lib/react_on_rails_pro/error.rb +14 -0
  73. data/lib/react_on_rails_pro/license_public_key.rb +30 -0
  74. data/lib/react_on_rails_pro/license_validator.rb +188 -0
  75. data/lib/react_on_rails_pro/prepare_node_renderer_bundles.rb +40 -0
  76. data/lib/react_on_rails_pro/rendering_error.rb +5 -0
  77. data/lib/react_on_rails_pro/request.rb +318 -0
  78. data/lib/react_on_rails_pro/routes.rb +13 -0
  79. data/lib/react_on_rails_pro/server_rendering_js_code.rb +102 -0
  80. data/lib/react_on_rails_pro/server_rendering_pool/node_rendering_pool.rb +133 -0
  81. data/lib/react_on_rails_pro/server_rendering_pool/pro_rendering.rb +117 -0
  82. data/lib/react_on_rails_pro/stream_cache.rb +61 -0
  83. data/lib/react_on_rails_pro/stream_request.rb +170 -0
  84. data/lib/react_on_rails_pro/utils.rb +222 -0
  85. data/lib/react_on_rails_pro/v8_log_processor.rb +50 -0
  86. data/lib/react_on_rails_pro/version.rb +6 -0
  87. data/lib/react_on_rails_pro.rb +23 -0
  88. data/package-scripts.yml +109 -0
  89. data/package.json +159 -0
  90. data/rakelib/dummy_apps.rake +22 -0
  91. data/rakelib/lint.rake +32 -0
  92. data/rakelib/public_key_management.rake +155 -0
  93. data/rakelib/rbs.rake +47 -0
  94. data/rakelib/run_rspec.rake +81 -0
  95. data/rakelib/task_helpers.rb +45 -0
  96. data/rakelib/yard.rake +20 -0
  97. data/react_on_rails_pro.gemspec +47 -0
  98. data/readme-gen-docs.md +1 -0
  99. data/script/bootstrap +33 -0
  100. data/script/preinstall.js +31 -0
  101. data/script/setup +23 -0
  102. data/script/test +38 -0
  103. data/sig/react_on_rails_pro/cache.rbs +13 -0
  104. data/sig/react_on_rails_pro/configuration.rbs +100 -0
  105. data/sig/react_on_rails_pro/error.rbs +4 -0
  106. data/sig/react_on_rails_pro/utils.rbs +7 -0
  107. data/sig/react_on_rails_pro.rbs +5 -0
  108. data/yarn.lock +7599 -0
  109. metadata +319 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: acfb8f9a7a66784d81733b77382a2df00cd75649f7ef96e8d214b756eade587a
4
+ data.tar.gz: 8332dccf2015b864d4baf225f7e268c28f0c44eefcdbea7a37441dc5a9df074b
5
+ SHA512:
6
+ metadata.gz: bc7b8682a6fa06da8cd501ac5c694834c1b055bc2def714309a8d7193d87c94375fc757869c2d047fef60e6305e0a740caaf0a917cf9abea653e7682fd2f765d
7
+ data.tar.gz: f6daa8ee683ed8660b3838d456a1650d5f444ea2586fb85ca67e9aa0041d54dcc1364e38ae462d075c4d726e543ea76f9068dbc81c237829f34481c97327ec9b
@@ -0,0 +1,49 @@
1
+ FROM ruby:3.3.7
2
+
3
+ RUN apt-get update
4
+
5
+ # install node and yarn
6
+ RUN curl -sL https://deb.nodesource.com/setup_18.x | bash
7
+ RUN apt-get install -y nodejs
8
+ RUN npm install -g yarn
9
+
10
+ WORKDIR /app
11
+
12
+ # install ruby gems
13
+ COPY Gemfile Gemfile.development_dependencies Gemfile.lock react_on_rails_pro.gemspec .
14
+ COPY lib ./lib
15
+
16
+ ENV BUNDLE_FROZEN=true
17
+ RUN bundle config set without 'development test' && \
18
+ bundle config set with 'staging production' && \
19
+ bundle install --jobs=3 --retry=3
20
+
21
+ # install node packages
22
+ COPY package.json yarn.lock .
23
+ RUN yarn install --frozen-lockfile
24
+
25
+ # pick necessary app files
26
+ COPY spec/ ./spec
27
+ COPY app/ ./app
28
+ COPY lib/ ./lib
29
+ COPY packages/ ./packages
30
+ COPY rakelib/ ./rakelib
31
+
32
+ WORKDIR /app/spec/dummy
33
+
34
+ ENV BUNDLE_FROZEN=true
35
+ RUN bundle config set without 'development test' && \
36
+ bundle config set with 'staging production' && \
37
+ bundle install --jobs=3 --retry=3
38
+
39
+ RUN yarn global add yalc
40
+ RUN yarn install --frozen-lockfile
41
+
42
+ ENV NODE_ENV=production
43
+ ENV RAILS_ENV=production
44
+
45
+ RUN rails assets:precompile
46
+
47
+ EXPOSE 3000 3800
48
+
49
+ CMD ["rails", "s", "-p", "3000"]
@@ -0,0 +1,22 @@
1
+ # Configuration for "Heroku to CPLN playbook" custom scripts
2
+ aliases:
3
+ common: &common
4
+ # Change this to your org name for staging. Production apps will use a different org
5
+ # for security.
6
+ cpln_org: shakacode-staging
7
+ # Example apps use only location. CPLN offers the ability to use multiple locations.
8
+ location: aws-us-east-2
9
+ # Configure the workload name used as a template for one-off scripts, like a Heroku one-off dyno.
10
+ one_off_workload: rails
11
+ # Like the entries in the Heroku Procfile that get deployed when the application code changes
12
+ # and the application image updates.
13
+ app_workloads:
14
+ - rails
15
+ # Like Heroku add-ons
16
+ additional_workloads:
17
+ - redis
18
+ - postgres
19
+
20
+ apps:
21
+ ror-dummy:
22
+ <<: *common
@@ -0,0 +1,25 @@
1
+ # Template setup of the GVC, roughly corresponding to a Heroku app
2
+ kind: gvc
3
+ name: APP_GVC
4
+ spec:
5
+ # For using templates for test apps, put ENV values here, stored in git repo.
6
+ # Production apps will have values configured manually after app creation.
7
+ env:
8
+ - name: DATABASE_URL
9
+ # Password does not matter because host postgres.APP_GVC.cpln.local can only be accessed
10
+ # locally within CPLN GVC, and postgres running on a CPLN workload is something only for a
11
+ # test app that lacks persistence.
12
+ value: 'postgres://postgres:password123@postgres.APP_GVC.cpln.local:5432/APP_GVC'
13
+ - name: RAILS_ENV
14
+ value: production
15
+ - name: NODE_ENV
16
+ value: production
17
+ - name: RAILS_SERVE_STATIC_FILES
18
+ value: 'true'
19
+ - name: REDIS_URL
20
+ # No password for GVC local Redis. See comment above for postgres.
21
+ value: 'redis://redis.APP_GVC.cpln.local:6379'
22
+ # Part of standard configuration
23
+ staticPlacement:
24
+ locationLinks:
25
+ - /org/APP_ORG/location/APP_LOCATION
@@ -0,0 +1,33 @@
1
+ # Template setup of Postgres workload, roughly corresponding to a Heroku add-on for a database
2
+ kind: workload
3
+ name: postgres
4
+ spec:
5
+ type: standard
6
+ containers:
7
+ - name: postgres
8
+ env:
9
+ - name: PGUSER
10
+ value: postgres
11
+ # Hardcoded password. See firewall comment below.
12
+ - name: POSTGRES_PASSWORD
13
+ value: password123
14
+ - name: POSTGRES_USER
15
+ value: postgres
16
+ image: 'postgres:13.8-alpine'
17
+ ports:
18
+ - number: 5432
19
+ protocol: tcp
20
+ volumes:
21
+ - path: /var/lib/postgresql/data
22
+ recoveryPolicy: retain
23
+ uri: 'scratch://postgres-vol'
24
+ # Important that postgres does not scaling because disk storage is local to one server!
25
+ defaultOptions:
26
+ autoscaling:
27
+ maxScale: 1
28
+ capacityAI: false
29
+ # This firewall configuration corresponds to using a simple, hard-coded password for postgres
30
+ # in the gvc.yml template.
31
+ firewallConfig:
32
+ internal:
33
+ inboundAllowType: same-gvc
@@ -0,0 +1,49 @@
1
+ # Template setup of Rails server workload, roughly corresponding to Heroku dyno
2
+ # type within Procfile.
3
+ kind: workload
4
+ name: rails
5
+ spec:
6
+ type: standard
7
+ containers:
8
+ - name: rails
9
+ cpu: 512m
10
+ env:
11
+ - name: LOG_LEVEL
12
+ value: debug
13
+ # Inherit other ENV values from GVC
14
+ inheritEnv: true
15
+ image: '/org/APP_ORG/image/APP_IMAGE'
16
+ # TODO add liveness probe
17
+ memory: 1Gi
18
+ ports:
19
+ - number: 3000
20
+ protocol: http
21
+ - name: node-renderer
22
+ args:
23
+ - client/node-renderer.js
24
+ command: node
25
+ cpu: 512m
26
+ env:
27
+ - name: LOG_LEVEL
28
+ value: debug
29
+ inheritEnv: true
30
+ image: '/org/APP_ORG/image/APP_IMAGE'
31
+ # TODO add liveness probe
32
+ memory: 1Gi
33
+ ports:
34
+ - number: 3800
35
+ protocol: http
36
+ defaultOptions:
37
+ # Start out like this for "test apps"
38
+ autoscaling:
39
+ # Max of 1 effectively disables autoscaling, so a like a Heroku dyno count of 1
40
+ maxScale: 1
41
+ capacityAI: false
42
+ firewallConfig:
43
+ external:
44
+ # Default to allow public access to Rails server
45
+ inboundAllowCIDR:
46
+ - 0.0.0.0/0
47
+ # Could configure outbound for more security
48
+ outboundAllowCIDR:
49
+ - 0.0.0.0/0
@@ -0,0 +1,18 @@
1
+ kind: workload
2
+ name: redis
3
+ spec:
4
+ type: standard
5
+ containers:
6
+ - name: redis
7
+ image: 'redis:6.2.6'
8
+ ports:
9
+ - number: 6379
10
+ protocol: tcp
11
+ defaultOptions:
12
+ autoscaling:
13
+ maxScale: 1
14
+ capacityAI: false
15
+ # This firewall configuration corresponds to using no password for Redis in the gvc.yml template.
16
+ firewallConfig:
17
+ internal:
18
+ inboundAllowType: same-gvc
data/.gitignore ADDED
@@ -0,0 +1,77 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ *.gem
9
+ /vendor/
10
+ tmp
11
+
12
+ **/spec/examples.txt
13
+ /spec/dummy/client/node_modules
14
+ /spec/dummy/app/assets/webpack/
15
+ /spec/dummy/app/assets/builds/
16
+ /spec/dummy/coverage/
17
+ /spec/dummy/public/assets
18
+ /spec/dummy/public/stylesheets
19
+
20
+ # For local development
21
+ Gemfile.local
22
+ post-yarn-install.local
23
+
24
+ # IDEs
25
+ .idea/
26
+ .vscode/
27
+ .pryrc
28
+
29
+ # RVM
30
+ .ruby-version
31
+ .ruby-gemset
32
+
33
+ # NVM
34
+ .nvmrc
35
+ !/spec/dummy/.nvmrc
36
+ # nodenv
37
+ .node-version
38
+
39
+ # Direnv
40
+ .envrc
41
+
42
+ # TypeScript
43
+ dist/
44
+ *.tsbuildinfo
45
+
46
+ # Jest
47
+ junit.xml
48
+
49
+ node_modules
50
+
51
+ /packages/node-renderer/tests/tmp
52
+
53
+ yarn-debug.*
54
+ spec/dummy/client/yarn-debug.log*
55
+ npm-debug.*
56
+ spec/dummy/client/npm-debug.log*
57
+ spec/dummy/ssr-generated/
58
+
59
+ /gen-examples
60
+
61
+ .DS_Store
62
+
63
+ /gen-documentation
64
+
65
+ .yalc
66
+ yalc.lock
67
+
68
+ **/.node-renderer-bundles/**
69
+ **/db/*.sqlite3*
70
+ **/log/*.log
71
+ **/public/webpack/**
72
+
73
+ # File Generated by ROR FS-based Registry
74
+ **/generated
75
+
76
+ # React on Rails Pro License Key
77
+ config/react_on_rails_pro_license.key
data/.prettierignore ADDED
@@ -0,0 +1,12 @@
1
+ node_modules
2
+ **/node_modules/**
3
+ packages/node-renderer/tests/fixtures/projects
4
+ **/tmp
5
+ **/public
6
+ **/package.json
7
+ vendor/bundle
8
+ **/.node-renderer-bundles
9
+ spec/dummy/.yalc/
10
+
11
+ # File Generated by ROR FS-based Registry
12
+ **/generated
data/.prettierrc ADDED
@@ -0,0 +1,19 @@
1
+ printWidth: 110
2
+ tabWidth: 2
3
+ useTabs: false
4
+ semi: true
5
+ singleQuote: true
6
+ trailingComma: all
7
+ bracketSpacing: true
8
+ bracketSameLine: false
9
+
10
+ overrides:
11
+ - files: "*.@(css|scss)"
12
+ options:
13
+ parser: css
14
+ singleQuote: false
15
+ printWidth: 120
16
+ - files: "*.@(json)"
17
+ options:
18
+ parser: json
19
+ printWidth: 100
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.rubocop.yml ADDED
@@ -0,0 +1,120 @@
1
+ # This is the configuration used to check the rubocop source code.
2
+ # Check out: https://github.com/bbatsov/rubocop
3
+ require:
4
+ - rubocop-performance
5
+ - rubocop-rspec
6
+
7
+ AllCops:
8
+ NewCops: enable
9
+ DisplayCopNames: true
10
+ TargetRubyVersion: 3.0
11
+
12
+ Include:
13
+ - '**/Rakefile'
14
+ - '**/config.ru'
15
+ - 'Gemfile'
16
+ - '**/*.rb'
17
+ - '**/*.rake'
18
+
19
+ Exclude:
20
+ <% `git status --ignored --porcelain`.lines.grep(/^!! /).each do |path| %>
21
+ - <%= path.sub(/^!! /, '') %>
22
+ <% end %>
23
+ - '**/node_modules/**/*'
24
+ - 'db/schema.rb'
25
+ - 'db/seeds.rb'
26
+ - 'spec/fixtures/**/*'
27
+ - 'spec/dummy/db/schema.rb'
28
+ - 'spec/dummy/bin/**/*'
29
+ - 'node_modules/**/*'
30
+ - 'coverage/**/*'
31
+ - 'bin/**/*'
32
+ - 'vendor/**/*'
33
+
34
+ Naming/FileName:
35
+ Exclude:
36
+ - '**/Gemfile'
37
+ - '**/Rakefile'
38
+
39
+ Layout/LineLength:
40
+ Max: 120
41
+
42
+ Style/StringLiterals:
43
+ EnforcedStyle: double_quotes
44
+
45
+ Style/Documentation:
46
+ Enabled: false
47
+
48
+ Style/HashEachMethods:
49
+ Enabled: true
50
+
51
+ Style/HashTransformKeys:
52
+ Enabled: true
53
+
54
+ Style/HashTransformValues:
55
+ Enabled: true
56
+
57
+ Metrics/AbcSize:
58
+ Max: 28
59
+
60
+ Metrics/CyclomaticComplexity:
61
+ Max: 8
62
+
63
+ Metrics/PerceivedComplexity:
64
+ Max: 10
65
+
66
+ Metrics/ClassLength:
67
+ Max: 140
68
+
69
+ Metrics/ParameterLists:
70
+ Max: 5
71
+ CountKeywordArgs: false
72
+
73
+ Metrics/MethodLength:
74
+ Max: 41
75
+
76
+ Metrics/ModuleLength:
77
+ Max: 180
78
+
79
+ RSpec/DescribeClass:
80
+ Enabled: false
81
+
82
+ RSpec/ExampleLength:
83
+ Enabled: false
84
+
85
+ RSpec/MessageSpies:
86
+ Enabled: false
87
+
88
+ RSpec/NestedGroups:
89
+ Max: 5
90
+
91
+ RSpec/BeforeAfterAll:
92
+ Exclude:
93
+ - 'spec/react_on_rails/generators/dev_tests_generator_spec.rb'
94
+ - 'spec/react_on_rails/generators/install_generator_spec.rb'
95
+
96
+ RSpec/MessageChain:
97
+ Enabled: false
98
+
99
+ RSpec/MultipleExpectations:
100
+ Enabled: false
101
+
102
+ RSpec/MultipleDescribes:
103
+ Exclude:
104
+ - 'spec/dummy/spec/system/integration_spec.rb'
105
+
106
+ RSpec/MultipleMemoizedHelpers:
107
+ Max: 12
108
+
109
+ RSpec:
110
+ Language:
111
+ Expectations:
112
+ - change_text_expect_dom_selector
113
+ - check_match
114
+
115
+ Style/GlobalVars:
116
+ Exclude:
117
+ - 'spec/dummy/config/environments/development.rb'
118
+
119
+ Style/FrozenStringLiteralComment:
120
+ EnforcedStyle: always
data/.scss-lint.yml ADDED
@@ -0,0 +1,205 @@
1
+ # See http://sass-guidelin.es/#zeros
2
+
3
+ scss_files:
4
+ - 'spec/dummy/app/assets/stylesheets/**/*.scss'
5
+ exclude:
6
+ - 'spec/dummy/app/assets/stylesheets/application.css'
7
+ linters:
8
+ # BangFormat:
9
+ # enabled: true
10
+ # space_before_bang: true
11
+ # space_after_bang: false
12
+ #
13
+ # BorderZero:
14
+ # enabled: true
15
+ # convention: zero # or `none`
16
+ #
17
+ ColorKeyword:
18
+ enabled: false
19
+ ColorVariable:
20
+ enabled: false
21
+ #
22
+ # Comment:
23
+ # enabled: true
24
+ #
25
+ # DebugStatement:
26
+ # enabled: true
27
+ #
28
+ # DeclarationOrder:
29
+ # enabled: true
30
+ #
31
+ # DuplicateProperty:
32
+ # enabled: true
33
+ #
34
+ # ElsePlacement:
35
+ # enabled: true
36
+ # style: same_line # or 'new_line'
37
+ #
38
+ # EmptyLineBetweenBlocks:
39
+ # enabled: true
40
+ # ignore_single_line_blocks: true
41
+ #
42
+ # EmptyRule:
43
+ # enabled: true
44
+ #
45
+ # FinalNewline:
46
+ # enabled: true
47
+ # present: true
48
+ #
49
+ HexLength:
50
+ enabled: true
51
+ style: long
52
+
53
+ HexNotation:
54
+ enabled: true
55
+ style: uppercase
56
+ #
57
+ # HexValidation:
58
+ # enabled: true
59
+ #
60
+ IdSelector:
61
+ enabled: true
62
+ #
63
+ # ImportantRule:
64
+ # enabled: true
65
+ #
66
+ # ImportPath:
67
+ # enabled: true
68
+ # leading_underscore: false
69
+ # filename_extension: false
70
+ #
71
+ # Indentation:
72
+ # enabled: true
73
+ # allow_non_nested_indentation: false
74
+ # character: space # or 'tab'
75
+ # width: 2
76
+ #
77
+ LeadingZero:
78
+ enabled: true
79
+ style: include_zero
80
+ #
81
+ # MergeableSelector:
82
+ # enabled: true
83
+ # force_nesting: true
84
+ #
85
+ # NameFormat:
86
+ # enabled: true
87
+ # allow_leading_underscore: true
88
+ # convention: hyphenated_lowercase # or 'camel_case', or 'snake_case', or a regex pattern
89
+ #
90
+ # NestingDepth:
91
+ # enabled: true
92
+ # max_depth: 3
93
+ #
94
+ # PlaceholderInExtend:
95
+ # enabled: true
96
+ #
97
+ # PropertyCount:
98
+ # enabled: false
99
+ # include_nested: false
100
+ # max_properties: 10
101
+ #
102
+ # PropertyUnits:
103
+ # enabled: true
104
+ # global: [
105
+ # 'ch', 'em', 'ex', 'rem', # Font-relative lengths
106
+ # 'cm', 'in', 'mm', 'pc', 'pt', 'px', 'q', # Absolute lengths
107
+ # 'vh', 'vw', 'vmin', 'vmax', # Viewport-percentage lengths
108
+ # 'deg', 'grad', 'rad', 'turn', # Angle
109
+ # 'ms', 's', # Duration
110
+ # 'Hz', 'kHz', # Frequency
111
+ # 'dpi', 'dpcm', 'dppx', # Resolution
112
+ # '%', # Other
113
+ # ]
114
+ # properties: {}
115
+ #
116
+ # PropertySortOrder:
117
+ # enabled: true
118
+ # ignore_unspecified: false
119
+ # separate_groups: false
120
+ #
121
+ # PropertySpelling:
122
+ # enabled: true
123
+ # extra_properties: []
124
+ #
125
+ # QualifyingElement:
126
+ # enabled: true
127
+ # allow_element_with_attribute: false
128
+ # allow_element_with_class: false
129
+ # allow_element_with_id: false
130
+ #
131
+ # SelectorDepth:
132
+ # enabled: true
133
+ # max_depth: 3
134
+ #
135
+ # SelectorFormat:
136
+ # enabled: true
137
+ # convention: hyphenated_lowercase # or 'strict_BEM', or 'hyphenated_BEM', or 'snake_case', or 'camel_case', or a regex pattern
138
+ #
139
+ # Shorthand:
140
+ # enabled: true
141
+ # allowed_shorthands: [1, 2, 3]
142
+ #
143
+ # SingleLinePerProperty:
144
+ # enabled: true
145
+ # allow_single_line_rule_sets: true
146
+ #
147
+ # SingleLinePerSelector:
148
+ # enabled: true
149
+ #
150
+ # SpaceAfterComma:
151
+ # enabled: true
152
+ #
153
+ # SpaceAfterPropertyColon:
154
+ # enabled: true
155
+ # style: one_space # or 'no_space', or 'at_least_one_space', or 'aligned'
156
+ #
157
+ # SpaceAfterPropertyName:
158
+ # enabled: true
159
+ #
160
+ # SpaceBeforeBrace:
161
+ # enabled: true
162
+ # style: space # or 'new_line'
163
+ # allow_single_line_padding: false
164
+ #
165
+ # SpaceBetweenParens:
166
+ # enabled: true
167
+ # spaces: 0
168
+ #
169
+ # StringQuotes:
170
+ # enabled: true
171
+ # style: single_quotes # or double_quotes
172
+ #
173
+ # TrailingSemicolon:
174
+ # enabled: true
175
+ #
176
+ # TrailingZero:
177
+ # enabled: false
178
+ #
179
+ # UnnecessaryMantissa:
180
+ # enabled: true
181
+ #
182
+ # UnnecessaryParentReference:
183
+ # enabled: true
184
+ #
185
+ # UrlFormat:
186
+ # enabled: true
187
+ #
188
+ # UrlQuotes:
189
+ # enabled: true
190
+ #
191
+ # VariableForProperty:
192
+ # enabled: false
193
+ # properties: []
194
+ #
195
+ # VendorPrefix:
196
+ # enabled: true
197
+ # identifier_list: base
198
+ # additional_identifiers: []
199
+ # excluded_identifiers: []
200
+ #
201
+ # ZeroUnit:
202
+ # enabled: true
203
+ #
204
+ # Compass::*:
205
+ # enabled: false