actionview-svelte-handler 0.3.0 → 0.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aa07b0a30bed3812a745c845a4e0906074e63d355e09812ebd138dde54416f21
4
- data.tar.gz: 77410f77910319464178822fa8797415b8fe9851073518af6e4c0c07bc9a2bb0
3
+ metadata.gz: 5c9116b1048a2590e52cae9e647b184d5892fc96f8a888170022620c9d68a08f
4
+ data.tar.gz: 50a787e09043f28ee9ad6bbb50fb283944cbc13512cd71afed51ff274cb8d6d2
5
5
  SHA512:
6
- metadata.gz: 726d5a198e94ceea5e1e5eaff320b2393a7cc106f1d807409c30c9e06ead56f033ca69c502d85a51ca72b3d0f3d0ef765f47f02c5241f3b39e240c90d759589b
7
- data.tar.gz: 3f89592a576d8d6aa87b05ac9dd527e5f356c2803405a91d92bfdff6a76ad3162607743d3713f2707fd4a5fd0835e865b67ff761cbdf544bf737e74904ddca82
6
+ metadata.gz: 24fb49a029ef567cfe21f8495d6b46ae5b270873f155a4e3a1ce7653a5f235716fe3c22d433e90c14c4149129bd57d116b5351c0fc4afae5ba334b9003037137
7
+ data.tar.gz: 80b48d562be7b12e1cfc194b05122615241b1e623e92fd8234ca1347bba73ca4a1e54a8cd061d0598c98913745c7b40e4a162e8ec7b3a45c7e5ba08721f38be6
@@ -0,0 +1,22 @@
1
+ name: JavaScript Police
2
+ on:
3
+ workflow_dispatch:
4
+ pull_request:
5
+ push:
6
+ branches: [ main ]
7
+ jobs:
8
+ lint_and_check_types:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - name: Checkout code
12
+ uses: actions/checkout@v4
13
+ - name: Set up JS
14
+ uses: https://github.com/actions/setup-node@v4
15
+ with:
16
+ node-version: latest
17
+ - name: Install dependencies
18
+ run: npm install
19
+ - name: Lint code for consistent style
20
+ run: npm run lint
21
+ - name: Build & check types
22
+ run: npm run build
@@ -0,0 +1,27 @@
1
+ name: Ruby Police
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ pull_request:
6
+ push:
7
+ branches: [ main ]
8
+
9
+ jobs:
10
+ lint_and_check_types:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - name: Checkout code
14
+ uses: actions/checkout@v4
15
+ - name: Set up Ruby
16
+ uses: https://github.com/ruby/setup-ruby@v1
17
+ with:
18
+ ruby-version: .ruby-version
19
+ bundler-cache: true
20
+ - name: Install Bundler
21
+ run: gem install bundler
22
+ - name: Lint code for consistent style
23
+ run: bundle exec standardrb --fix --format github
24
+ - name: Install RBS collection
25
+ run: bundle exec rbs collection install
26
+ - name: Check types
27
+ run: bundle exec steep check --jobs=24
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /doc/
3
+ /log/*.log
4
+ /pkg/
5
+ /tmp/
6
+ /test/dummy/db/*.sqlite3
7
+ /test/dummy/db/*.sqlite3-*
8
+ /test/dummy/log/*.log
9
+ /test/dummy/storage/
10
+ /test/dummy/tmp/
11
+ *.gem
12
+ /node_modules/
13
+ .gem_rbs_collection/
14
+ .ruby-lsp
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.3.0
data/Gemfile ADDED
@@ -0,0 +1,14 @@
1
+ source "https://rubygems.org"
2
+ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
3
+
4
+ # Specify your gem's dependencies in svelte.gemspec.
5
+ gemspec
6
+
7
+ # Start debugger with binding.b [https://github.com/ruby/debug]
8
+ # gem "debug", ">= 1.0.0"
9
+
10
+ gem "steep", "~> 1.7"
11
+
12
+ gem "standard", "~> 1.39"
13
+
14
+ gem "rbs", "~> 3.5"
data/Gemfile.lock ADDED
@@ -0,0 +1,284 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ actionview-svelte-handler (0.5.0)
5
+ rails (>= 7.0)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ actioncable (7.1.3.4)
11
+ actionpack (= 7.1.3.4)
12
+ activesupport (= 7.1.3.4)
13
+ nio4r (~> 2.0)
14
+ websocket-driver (>= 0.6.1)
15
+ zeitwerk (~> 2.6)
16
+ actionmailbox (7.1.3.4)
17
+ actionpack (= 7.1.3.4)
18
+ activejob (= 7.1.3.4)
19
+ activerecord (= 7.1.3.4)
20
+ activestorage (= 7.1.3.4)
21
+ activesupport (= 7.1.3.4)
22
+ mail (>= 2.7.1)
23
+ net-imap
24
+ net-pop
25
+ net-smtp
26
+ actionmailer (7.1.3.4)
27
+ actionpack (= 7.1.3.4)
28
+ actionview (= 7.1.3.4)
29
+ activejob (= 7.1.3.4)
30
+ activesupport (= 7.1.3.4)
31
+ mail (~> 2.5, >= 2.5.4)
32
+ net-imap
33
+ net-pop
34
+ net-smtp
35
+ rails-dom-testing (~> 2.2)
36
+ actionpack (7.1.3.4)
37
+ actionview (= 7.1.3.4)
38
+ activesupport (= 7.1.3.4)
39
+ nokogiri (>= 1.8.5)
40
+ racc
41
+ rack (>= 2.2.4)
42
+ rack-session (>= 1.0.1)
43
+ rack-test (>= 0.6.3)
44
+ rails-dom-testing (~> 2.2)
45
+ rails-html-sanitizer (~> 1.6)
46
+ actiontext (7.1.3.4)
47
+ actionpack (= 7.1.3.4)
48
+ activerecord (= 7.1.3.4)
49
+ activestorage (= 7.1.3.4)
50
+ activesupport (= 7.1.3.4)
51
+ globalid (>= 0.6.0)
52
+ nokogiri (>= 1.8.5)
53
+ actionview (7.1.3.4)
54
+ activesupport (= 7.1.3.4)
55
+ builder (~> 3.1)
56
+ erubi (~> 1.11)
57
+ rails-dom-testing (~> 2.2)
58
+ rails-html-sanitizer (~> 1.6)
59
+ activejob (7.1.3.4)
60
+ activesupport (= 7.1.3.4)
61
+ globalid (>= 0.3.6)
62
+ activemodel (7.1.3.4)
63
+ activesupport (= 7.1.3.4)
64
+ activerecord (7.1.3.4)
65
+ activemodel (= 7.1.3.4)
66
+ activesupport (= 7.1.3.4)
67
+ timeout (>= 0.4.0)
68
+ activestorage (7.1.3.4)
69
+ actionpack (= 7.1.3.4)
70
+ activejob (= 7.1.3.4)
71
+ activerecord (= 7.1.3.4)
72
+ activesupport (= 7.1.3.4)
73
+ marcel (~> 1.0)
74
+ activesupport (7.1.3.4)
75
+ base64
76
+ bigdecimal
77
+ concurrent-ruby (~> 1.0, >= 1.0.2)
78
+ connection_pool (>= 2.2.5)
79
+ drb
80
+ i18n (>= 1.6, < 2)
81
+ minitest (>= 5.1)
82
+ mutex_m
83
+ tzinfo (~> 2.0)
84
+ ast (2.4.2)
85
+ base64 (0.2.0)
86
+ bigdecimal (3.1.8)
87
+ builder (3.3.0)
88
+ concurrent-ruby (1.3.3)
89
+ connection_pool (2.4.1)
90
+ crass (1.0.6)
91
+ csv (3.3.0)
92
+ date (3.3.4)
93
+ drb (2.2.1)
94
+ erubi (1.13.0)
95
+ ffi (1.17.0-aarch64-linux-gnu)
96
+ ffi (1.17.0-arm-linux-gnu)
97
+ ffi (1.17.0-arm64-darwin)
98
+ ffi (1.17.0-x86-linux-gnu)
99
+ ffi (1.17.0-x86_64-darwin)
100
+ ffi (1.17.0-x86_64-linux-gnu)
101
+ fileutils (1.7.2)
102
+ globalid (1.2.1)
103
+ activesupport (>= 6.1)
104
+ i18n (1.14.5)
105
+ concurrent-ruby (~> 1.0)
106
+ io-console (0.7.2)
107
+ irb (1.14.0)
108
+ rdoc (>= 4.0.0)
109
+ reline (>= 0.4.2)
110
+ json (2.7.2)
111
+ language_server-protocol (3.17.0.3)
112
+ lint_roller (1.1.0)
113
+ listen (3.9.0)
114
+ rb-fsevent (~> 0.10, >= 0.10.3)
115
+ rb-inotify (~> 0.9, >= 0.9.10)
116
+ logger (1.6.0)
117
+ loofah (2.22.0)
118
+ crass (~> 1.0.2)
119
+ nokogiri (>= 1.12.0)
120
+ mail (2.8.1)
121
+ mini_mime (>= 0.1.1)
122
+ net-imap
123
+ net-pop
124
+ net-smtp
125
+ marcel (1.0.4)
126
+ mini_mime (1.1.5)
127
+ minitest (5.24.1)
128
+ mutex_m (0.2.0)
129
+ net-imap (0.4.14)
130
+ date
131
+ net-protocol
132
+ net-pop (0.1.2)
133
+ net-protocol
134
+ net-protocol (0.2.2)
135
+ timeout
136
+ net-smtp (0.5.0)
137
+ net-protocol
138
+ nio4r (2.7.3)
139
+ nokogiri (1.16.7-aarch64-linux)
140
+ racc (~> 1.4)
141
+ nokogiri (1.16.7-arm-linux)
142
+ racc (~> 1.4)
143
+ nokogiri (1.16.7-arm64-darwin)
144
+ racc (~> 1.4)
145
+ nokogiri (1.16.7-x86-linux)
146
+ racc (~> 1.4)
147
+ nokogiri (1.16.7-x86_64-darwin)
148
+ racc (~> 1.4)
149
+ nokogiri (1.16.7-x86_64-linux)
150
+ racc (~> 1.4)
151
+ parallel (1.25.1)
152
+ parser (3.3.4.0)
153
+ ast (~> 2.4.1)
154
+ racc
155
+ psych (5.1.2)
156
+ stringio
157
+ racc (1.8.0)
158
+ rack (3.1.7)
159
+ rack-session (2.0.0)
160
+ rack (>= 3.0.0)
161
+ rack-test (2.1.0)
162
+ rack (>= 1.3)
163
+ rackup (2.1.0)
164
+ rack (>= 3)
165
+ webrick (~> 1.8)
166
+ rails (7.1.3.4)
167
+ actioncable (= 7.1.3.4)
168
+ actionmailbox (= 7.1.3.4)
169
+ actionmailer (= 7.1.3.4)
170
+ actionpack (= 7.1.3.4)
171
+ actiontext (= 7.1.3.4)
172
+ actionview (= 7.1.3.4)
173
+ activejob (= 7.1.3.4)
174
+ activemodel (= 7.1.3.4)
175
+ activerecord (= 7.1.3.4)
176
+ activestorage (= 7.1.3.4)
177
+ activesupport (= 7.1.3.4)
178
+ bundler (>= 1.15.0)
179
+ railties (= 7.1.3.4)
180
+ rails-dom-testing (2.2.0)
181
+ activesupport (>= 5.0.0)
182
+ minitest
183
+ nokogiri (>= 1.6)
184
+ rails-html-sanitizer (1.6.0)
185
+ loofah (~> 2.21)
186
+ nokogiri (~> 1.14)
187
+ railties (7.1.3.4)
188
+ actionpack (= 7.1.3.4)
189
+ activesupport (= 7.1.3.4)
190
+ irb
191
+ rackup (>= 1.0.0)
192
+ rake (>= 12.2)
193
+ thor (~> 1.0, >= 1.2.2)
194
+ zeitwerk (~> 2.6)
195
+ rainbow (3.1.1)
196
+ rake (13.2.1)
197
+ rb-fsevent (0.11.2)
198
+ rb-inotify (0.11.1)
199
+ ffi (~> 1.0)
200
+ rbs (3.5.2)
201
+ logger
202
+ rdoc (6.7.0)
203
+ psych (>= 4.0.0)
204
+ regexp_parser (2.9.2)
205
+ reline (0.5.9)
206
+ io-console (~> 0.5)
207
+ rexml (3.3.4)
208
+ strscan
209
+ rubocop (1.64.1)
210
+ json (~> 2.3)
211
+ language_server-protocol (>= 3.17.0)
212
+ parallel (~> 1.10)
213
+ parser (>= 3.3.0.2)
214
+ rainbow (>= 2.2.2, < 4.0)
215
+ regexp_parser (>= 1.8, < 3.0)
216
+ rexml (>= 3.2.5, < 4.0)
217
+ rubocop-ast (>= 1.31.1, < 2.0)
218
+ ruby-progressbar (~> 1.7)
219
+ unicode-display_width (>= 2.4.0, < 3.0)
220
+ rubocop-ast (1.31.3)
221
+ parser (>= 3.3.1.0)
222
+ rubocop-performance (1.21.1)
223
+ rubocop (>= 1.48.1, < 2.0)
224
+ rubocop-ast (>= 1.31.1, < 2.0)
225
+ ruby-progressbar (1.13.0)
226
+ securerandom (0.3.1)
227
+ standard (1.39.2)
228
+ language_server-protocol (~> 3.17.0.2)
229
+ lint_roller (~> 1.0)
230
+ rubocop (~> 1.64.0)
231
+ standard-custom (~> 1.0.0)
232
+ standard-performance (~> 1.4)
233
+ standard-custom (1.0.2)
234
+ lint_roller (~> 1.0)
235
+ rubocop (~> 1.50)
236
+ standard-performance (1.4.0)
237
+ lint_roller (~> 1.1)
238
+ rubocop-performance (~> 1.21.0)
239
+ steep (1.7.1)
240
+ activesupport (>= 5.1)
241
+ concurrent-ruby (>= 1.1.10)
242
+ csv (>= 3.0.9)
243
+ fileutils (>= 1.1.0)
244
+ json (>= 2.1.0)
245
+ language_server-protocol (>= 3.15, < 4.0)
246
+ listen (~> 3.0)
247
+ logger (>= 1.3.0)
248
+ parser (>= 3.1)
249
+ rainbow (>= 2.2.2, < 4.0)
250
+ rbs (>= 3.5.0.pre)
251
+ securerandom (>= 0.1)
252
+ strscan (>= 1.0.0)
253
+ terminal-table (>= 2, < 4)
254
+ stringio (3.1.1)
255
+ strscan (3.1.0)
256
+ terminal-table (3.0.2)
257
+ unicode-display_width (>= 1.1.1, < 3)
258
+ thor (1.3.1)
259
+ timeout (0.4.1)
260
+ tzinfo (2.0.6)
261
+ concurrent-ruby (~> 1.0)
262
+ unicode-display_width (2.5.0)
263
+ webrick (1.8.1)
264
+ websocket-driver (0.7.6)
265
+ websocket-extensions (>= 0.1.0)
266
+ websocket-extensions (0.1.5)
267
+ zeitwerk (2.6.16)
268
+
269
+ PLATFORMS
270
+ aarch64-linux
271
+ arm-linux
272
+ arm64-darwin
273
+ x86-linux
274
+ x86_64-darwin
275
+ x86_64-linux
276
+
277
+ DEPENDENCIES
278
+ actionview-svelte-handler!
279
+ rbs (~> 3.5)
280
+ standard (~> 1.39)
281
+ steep (~> 1.7)
282
+
283
+ BUNDLED WITH
284
+ 2.5.11
data/README.md CHANGED
@@ -1,19 +1,27 @@
1
- # Action View Svelte Handler
1
+ <img src="https://codeberg.org/reesericci/actionview-svelte-handler/raw/branch/main/svelte-on-rails.png" width="100px">
2
+
3
+ # `actionview-svelte-handler`
2
4
 
3
5
  [![Copyleft License: LGPL-3.0-or-later](https://img.shields.io/badge/%F0%9F%84%AF_copyleft-LGPL--3.0--or--later-black)](https://spdx.org/licenses/LGPL-3.0-or-later.html)
4
6
  [![Gem Version](https://img.shields.io/gem/v/actionview-svelte-handler)](https://rubygems.org/gems/actionview-svelte-handler)
7
+ <img src="https://web.badges.world/badges/operated/ruby3.png" alt="Ruby Powered" height="20px" style="image-rendering: pixelated;">
5
8
 
6
9
  `actionview-svelte-handler` is a template handler for Action View that allows you to create [Svelte](https://svelte.dev) views in Rails applications with ease.
7
10
 
8
11
  ## Usage
9
12
 
10
- Add `.html.svelte` views to your application instead of `.html.erb`. Note that ERB helpers will cease to be available.
13
+ Add `.html.svelte` views to your application instead of `.html.erb`.
14
+
15
+ > [!CAUTION]
16
+ > This will make ERB helpers unavailable because Svelte is registered as a template handler, replacing ERB when it is used.
17
+
18
+ To pass props, use the `Svelte.props` object in your controller (or set instance variables), and then access them as a store with `$props`.
11
19
 
12
- To pass props, use the `Svelte.props` object in your controller, and then access it as a store with `$props`.
20
+ ### Example usage
13
21
 
14
- ### Example
22
+ #### Controller
15
23
 
16
- `users_controller.rb`:
24
+ `app/controllers/users_controller.rb`:
17
25
 
18
26
  ```ruby
19
27
  def show
@@ -21,7 +29,9 @@ def show
21
29
  end
22
30
  ```
23
31
 
24
- `show.html.svelte`:
32
+ #### View
33
+
34
+ `app/views/users/show.html.svelte`:
25
35
 
26
36
  ```html
27
37
  <script>
@@ -39,33 +49,98 @@ end
39
49
  </style>
40
50
  ```
41
51
 
42
- ### Server-side rendering
52
+ ### Configuration
53
+
54
+ Configuration options can be found in `config/initializers/svelte.rb`. The following is a list of options and some information:
55
+
56
+ | Option with type | Description | Default |
57
+ | ------------------- | ---------------------------------------------------------------------- | ----------------------------------- |
58
+ | `ssr <bool>` | Global server-side rendering. Does not override the svelte[ssr] local. | `true` |
59
+ | `aliases <Hash[Symbol, String]>` | Path aliases when importing from Svelte views. | See [path aliases](#path-aliases) |
60
+ | `preprocess <Hash[String \| Symbol, String]>` | Configuration for [svelte-preprocess](https://github.com/sveltejs/svelte-preprocess/blob/main/docs/usage.md) | `{}` |
61
+
62
+ #### Example usage (with `Svelte.configure` block)
63
+
64
+ `config/initializers/svelte.rb`:
65
+
66
+ ```ruby
67
+ Svelte.configure do |config|
68
+ config.ssr = true
69
+ config.aliases = {
70
+ :$views => Rails.root.join("app", "views")
71
+ }
72
+ end
73
+ ```
74
+
75
+ ### Locals
43
76
 
44
- Server-side rendering is enabled by default, but if you need to disable it for any reason, pass the `svelte[:ssr]` local to `render` like so:
77
+ To set per-render options, we use a set of locals underneath the `svelte` hash. Locals are always the highest precedence
78
+
79
+ | Option with type | Description | Default |
80
+ | ------------------- | -------------------------------------------------------------------------- | ------------------------------------- |
81
+ | `ssr <bool>` | Server-side prerendering | `true` |
82
+ | `island <Hash[String, String]>` | HTML attributes for [is-land](https://github.com/11ty/is-land) | `{ "on:visible": "", "on:idle": "" }` |
83
+
84
+ #### Example usage
85
+
86
+ `app/controllers/example_controller.rb`:
45
87
 
46
88
  ```ruby
47
89
  render "view", locals: { svelte: { ssr: false } }
48
90
  ```
49
91
 
92
+ ### Variants
93
+
94
+ To configure server-side rendering at a file level, you can use the `client` and `server` variants. Just set your file name like in the example.
95
+
96
+ #### Example usage
97
+
98
+ `app/views/example/show.html+client.svelte`
99
+
100
+ `app/views/example/show.html+server.svelte`
101
+
102
+ `app/controllers/example_controller.rb`:
103
+
104
+ ```ruby
105
+ render "view", variant: "client"
106
+ ```
107
+
108
+ ### Path aliases
109
+
110
+ Path aliases are used as quick references from your Svelte views to key paths in your application. They are primarily utilized when importing other Svelte components (i.e. partials).
111
+
112
+ The list of path aliases set by the generator is as follows:
113
+
114
+ | Alias | Resolution |
115
+ | -------- | -------------------------------- |
116
+ | `$root` | `Rails.root` |
117
+ | `$app` | `Rails.root.join "app"` |
118
+ | `$views` | `Rails.root.join "app", "views"` |
119
+
120
+ #### Example usage
121
+
122
+ ```javascript
123
+ import Card from "$views/application/card.html.svelte"
124
+ ```
125
+
50
126
  ## Installation
51
127
 
52
128
  1. Ensure you have [Node.js >=v12.16.0](https://nodejs.org) and [NPM](https://npmjs.com) in your `$PATH`
53
129
 
54
- 3. Execute:
130
+ 3. Add the `actionview-svelte-handler` gem to your Gemfile by executing:
55
131
 
56
132
  ```bash
57
133
  bundle add actionview-svelte-handler
58
134
  ```
59
135
 
60
- 4. And then add the `svelte_tags` helper at the end of the `<head>` in `application.html.erb`:
136
+ 4. And then execute the generator:
61
137
 
62
- ```html
63
- <head>
64
- <!-- other head content -->
65
- <%= svelte_tags %>
66
- </head>
138
+ ```bash
139
+ bin/rails generate svelte:install
67
140
  ```
68
141
 
142
+ 5. Enjoy!
143
+
69
144
  ## Copyright
70
145
 
71
146
  Copyright (C) 2024 [Software Freedom Conservancy](https://sfconservancy.org/assignment/603092cf-aeeb-4ee3-a5e0-903bd14805a8/) and Action View Svelte Handler contributors
data/Steepfile ADDED
@@ -0,0 +1,12 @@
1
+ target :lib do
2
+ signature "sig"
3
+
4
+ check "lib"
5
+ ignore "lib/generators"
6
+ ignore "lib/svelte/railtie.rb"
7
+ ignore "lib/svelte/variabilization.rb"
8
+
9
+ library "activesupport"
10
+ library "actionview"
11
+ library "digest"
12
+ end
@@ -0,0 +1,21 @@
1
+ require_relative "lib/svelte/version"
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "actionview-svelte-handler"
5
+ spec.version = Svelte::VERSION
6
+ spec.authors = ["reesericci"]
7
+ spec.email = ["me@reeseric.ci"]
8
+ spec.homepage = "https://codeberg.org/reesericci/actionview-svelte-handler"
9
+ spec.summary = "Create .svelte views seamlessly in Rails applications"
10
+ spec.description = "Documentation is available at #{spec.homepage}"
11
+ spec.license = "LGPL-v3.0-or-later"
12
+
13
+ spec.metadata["homepage_uri"] = spec.homepage
14
+ spec.metadata["source_code_uri"] = spec.homepage
15
+
16
+ spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
17
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ end
19
+
20
+ spec.add_dependency "rails", ">= 7.0"
21
+ end
data/bin/test ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path("../test", __dir__)
3
+
4
+ require "bundler/setup"
5
+ require "rails/plugin/test"
data/build.esbuild.js ADDED
@@ -0,0 +1,22 @@
1
+ import * as esbuild from 'esbuild'
2
+
3
+ const buildOpts = {
4
+ entryPoints: ['lib/ts/*.ts'],
5
+ bundle: false,
6
+ outdir: 'lib/svelte/js',
7
+ format: 'esm',
8
+ write: true,
9
+ platform: 'node',
10
+ banner: {
11
+ js: `/*
12
+ IF YOU ARE READING THIS, YOU ARE VIEWING THE BUILT JS FROM THE SOURCE TYPESCRIPT AT ../ts/ .
13
+
14
+ DO NOT MODIFY.
15
+ */
16
+ `
17
+ }
18
+ }
19
+
20
+ await esbuild.build(buildOpts)
21
+
22
+ export default buildOpts
@@ -0,0 +1,13 @@
1
+ class Svelte::InstallGenerator < Rails::Generators::Base
2
+ desc "This generator installs actionview-svelte-handler"
3
+
4
+ source_root File.expand_path("templates/install", __dir__)
5
+
6
+ def install
7
+ copy_file "initializer.rb", "config/initializers/svelte.rb"
8
+ insert_into_file "app/views/layouts/application.html.erb",
9
+ "\n <%= svelte_tags %>",
10
+ after: "<head>"
11
+ `npm install #{Svelte.gem_dir} --install-links --save=false`
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ Svelte.configure do |config|
2
+ # @note overridable at render time with svelte[:ssr] local
3
+ # @default true
4
+ # @return [Boolean] whether server-side rendering is enabled globally
5
+ config.ssr = true
6
+
7
+ # @return [Hash] path aliases available in ESM imports in Svelte files
8
+ config.aliases = {
9
+ :$root => Rails.root,
10
+ :$app => Rails.root.join("app"),
11
+ :$views => Rails.root.join("app", "views")
12
+ }
13
+
14
+ # @default {}
15
+ # @return [Hash] of your Svelte preprocess configuration
16
+ config.preprocess = {}
17
+ end