jetstream_bridge 1.4.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 535eaf5e00d6c27b8f79c3d065128e917c8acddb36a696f7a097c535e28a20e2
4
+ data.tar.gz: 0a6b2c99fea1b1f351b95664034ba879307182dbfaf2b67c399a9ff385ad96ab
5
+ SHA512:
6
+ metadata.gz: c0514b7de514f05785ca2208ce4613be7814702141c04bf5be3266b4f7b9e6d0406288d021715779efb23824fe45b5effa92ca4c9fc7f612586de7b97eb3cfe3
7
+ data.tar.gz: 9f9cde6bfad36b565a1f7f7aa0ff7b889a4758ff91f86ee663296f85ef676c759de3b1268dd03f7de323bb9561f8530fe25d9c57b784bd2a55138afd833844bf
@@ -0,0 +1,150 @@
1
+ name: Release JetstreamBridge (on tag)
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ release:
10
+ runs-on: ubuntu-latest
11
+ permissions:
12
+ contents: write
13
+ packages: write
14
+
15
+ env:
16
+ RUBYGEMS_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
17
+ # Force Bundler to ignore platform-specific precompiled variants (e.g., arm64-darwin)
18
+ BUNDLER_FORCE_RUBY_PLATFORM: "true"
19
+
20
+ steps:
21
+ - name: Checkout
22
+ uses: actions/checkout@v4
23
+ with:
24
+ fetch-depth: 0
25
+
26
+ - name: Derive version from tag
27
+ id: ver
28
+ shell: bash
29
+ run: |
30
+ set -euo pipefail
31
+ RAW="${GITHUB_REF_NAME}" # e.g. v0.3.2
32
+ if [[ ! "$RAW" =~ ^v[0-9]+(\.[0-9]+){2}(-[0-9A-Za-z\.-]+)?$ ]]; then
33
+ echo "Tag must look like vX.Y.Z (optionally -rcN). Got: $RAW"
34
+ exit 1
35
+ fi
36
+ VERSION="${RAW#v}"
37
+ echo "version=$VERSION" >> "$GITHUB_OUTPUT"
38
+ echo "Using version: $VERSION"
39
+
40
+ # Install Ruby BEFORE any `ruby -e` or bundler calls
41
+ - name: Set up Ruby
42
+ uses: ruby/setup-ruby@v1
43
+ with:
44
+ ruby-version: "3.2"
45
+ bundler-cache: false
46
+
47
+ - name: Read version.rb
48
+ id: file
49
+ shell: bash
50
+ run: |
51
+ set -euo pipefail
52
+ FILE_VERSION=$(ruby -e "puts(File.read('lib/jetstream_bridge/version.rb')[/VERSION\\s*=\\s*['\"]([^'\"]+)['\"]/,1])")
53
+ echo "file_version=$FILE_VERSION" >> "$GITHUB_OUTPUT"
54
+ echo "version.rb currently: $FILE_VERSION"
55
+
56
+ - name: Patch version.rb to match tag (no commit)
57
+ if: ${{ steps.ver.outputs.version != steps.file.outputs.file_version }}
58
+ shell: bash
59
+ run: |
60
+ set -euo pipefail
61
+ echo "Patching version.rb from '${{ steps.file.outputs.file_version }}' to '${{ steps.ver.outputs.version }}' for this build…"
62
+ sed -i "s/VERSION\\s*=\\s*['\"][^'\"]\\+['\"]/VERSION = '${{ steps.ver.outputs.version }}'/" lib/jetstream_bridge/version.rb
63
+ grep VERSION lib/jetstream_bridge/version.rb
64
+
65
+ - name: Prepare Bundler (non-frozen; add Linux/Ruby platforms)
66
+ shell: bash
67
+ run: |
68
+ set -euo pipefail
69
+ rm -f .bundle/config || true
70
+ bundle config set --local frozen false
71
+ bundle config set --local deployment false
72
+ bundle config set --local path vendor/bundle
73
+ bundle lock --add-platform x86_64-linux || true
74
+ bundle lock --add-platform ruby || true
75
+
76
+ - name: Install dependencies
77
+ shell: bash
78
+ run: |
79
+ set -euo pipefail
80
+ bundle install --jobs 4
81
+
82
+ # Optional tests
83
+ # - name: Run tests
84
+ # run: bundle exec rake
85
+
86
+ - name: Build gem
87
+ id: build
88
+ shell: bash
89
+ run: |
90
+ set -euo pipefail
91
+ gem build jetstream_bridge.gemspec
92
+ GEMFILE=$(ls -1 *.gem | tail -n1)
93
+ echo "gemfile=${GEMFILE}" >> "$GITHUB_OUTPUT"
94
+ ls -l "$GEMFILE"
95
+
96
+ - name: Generate CHANGELOG for this release
97
+ id: changelog
98
+ shell: bash
99
+ run: |
100
+ set -euo pipefail
101
+ TAG="${GITHUB_REF_NAME}"
102
+
103
+ # Find previous tag (semantic aware); fallback to first commit
104
+ PREV_TAG=$(git tag --sort=-v:refname | sed -n '2p' || true)
105
+ if [[ -z "$PREV_TAG" ]]; then
106
+ FIRST_COMMIT=$(git rev-list --max-parents=0 HEAD)
107
+ RANGE="$FIRST_COMMIT..$TAG"
108
+ else
109
+ RANGE="$PREV_TAG..$TAG"
110
+ fi
111
+
112
+ DATE=$(date -u +'%Y-%m-%d')
113
+ {
114
+ echo "## $TAG — $DATE"
115
+ echo
116
+ echo "### Changes"
117
+ # Exclude merge commits, show subject, short sha, author
118
+ if ! git log --no-merges --format='- %s (%h) — %an' "$RANGE"; then
119
+ echo "- Initial release"
120
+ fi
121
+ echo
122
+ } > CHANGELOG.md
123
+
124
+ echo "prev_tag=${PREV_TAG}" >> "$GITHUB_OUTPUT"
125
+ echo "Generated CHANGELOG for range: $RANGE"
126
+ sed -n '1,200p' CHANGELOG.md
127
+
128
+ - name: Create/Update GitHub Release and upload .gem
129
+ uses: softprops/action-gh-release@v2
130
+ with:
131
+ tag_name: ${{ github.ref_name }}
132
+ name: "JetstreamBridge ${{ github.ref_name }}"
133
+ files: |
134
+ ${{ steps.build.outputs.gemfile }}
135
+ CHANGELOG.md
136
+ draft: false
137
+ generate_release_notes: false
138
+ body_path: CHANGELOG.md
139
+ prerelease: ${{ contains(steps.ver.outputs.version, '-') }}
140
+
141
+ # Publish only if token present
142
+ - name: Push to RubyGems
143
+ if: ${{ env.RUBYGEMS_API_KEY != '' }}
144
+ shell: bash
145
+ run: |
146
+ set -euo pipefail
147
+ mkdir -p ~/.gem
148
+ printf -- "---\n:rubygems_api_key: $RUBYGEMS_API_KEY\n" > ~/.gem/credentials
149
+ chmod 0600 ~/.gem/credentials
150
+ gem push "${{ steps.build.outputs.gemfile }}"
data/.gitignore ADDED
@@ -0,0 +1,56 @@
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /spec/examples.txt
9
+ /test/tmp/
10
+ /test/version_tmp/
11
+ /tmp/
12
+
13
+ # Used by dotenv library to load environment variables.
14
+ # .env
15
+
16
+ # Ignore Byebug command history file.
17
+ .byebug_history
18
+
19
+ ## Specific to RubyMotion:
20
+ .dat*
21
+ .repl_history
22
+ build/
23
+ *.bridgesupport
24
+ build-iPhoneOS/
25
+ build-iPhoneSimulator/
26
+
27
+ ## Specific to RubyMotion (use of CocoaPods):
28
+ #
29
+ # We recommend against adding the Pods directory to your .gitignore. However
30
+ # you should judge for yourself, the pros and cons are mentioned at:
31
+ # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
32
+ #
33
+ # vendor/Pods/
34
+
35
+ ## Documentation cache and generated files:
36
+ /.yardoc/
37
+ /_yardoc/
38
+ /doc/
39
+ /rdoc/
40
+
41
+ ## Environment normalization:
42
+ /.bundle/
43
+ /vendor/bundle
44
+ /lib/bundler/man/
45
+
46
+ # for a library or gem, you might want to ignore these files since the code is
47
+ # intended to run in multiple environments; otherwise, check them in:
48
+ # Gemfile.lock
49
+ # .ruby-version
50
+ # .ruby-gemset
51
+
52
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
53
+ .rvmrc
54
+
55
+ # Used by RuboCop. Remote config files pulled in from inherit_from directive.
56
+ # .rubocop-https?--*
data/.idea/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ # Default ignored files
2
+ /shelf/
3
+ /workspace.xml
4
+ # Editor-based HTTP Client requests
5
+ /httpRequests/
6
+ # Datasource local storage ignored files
7
+ /dataSources/
8
+ /dataSources.local.xml
@@ -0,0 +1,14 @@
1
+ <component name="ProjectDictionaryState">
2
+ <dictionary name="project">
3
+ <words>
4
+ <w>activesupport</w>
5
+ <w>backoffs</w>
6
+ <w>esub</w>
7
+ <w>msgs</w>
8
+ <w>pipefail</w>
9
+ <w>psub</w>
10
+ <w>sname</w>
11
+ <w>softprops</w>
12
+ </words>
13
+ </dictionary>
14
+ </component>
@@ -0,0 +1,97 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="RUBY_MODULE" version="4">
3
+ <component name="ModuleRunConfigurationManager">
4
+ <shared />
5
+ </component>
6
+ <component name="NewModuleRootManager">
7
+ <content url="file://$MODULE_DIR$">
8
+ <sourceFolder url="file://$MODULE_DIR$/features" isTestSource="true" />
9
+ <sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
10
+ <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
11
+ </content>
12
+ <orderEntry type="inheritedJdk" />
13
+ <orderEntry type="sourceFolder" forTests="false" />
14
+ <orderEntry type="library" scope="PROVIDED" name="actioncable (v8.0.2, rbenv: 3.3.6) [gem]" level="application" />
15
+ <orderEntry type="library" scope="PROVIDED" name="actionmailbox (v8.0.2, rbenv: 3.3.6) [gem]" level="application" />
16
+ <orderEntry type="library" scope="PROVIDED" name="actionmailer (v8.0.2, rbenv: 3.3.6) [gem]" level="application" />
17
+ <orderEntry type="library" scope="PROVIDED" name="actionpack (v8.0.2, rbenv: 3.3.6) [gem]" level="application" />
18
+ <orderEntry type="library" scope="PROVIDED" name="actiontext (v8.0.2, rbenv: 3.3.6) [gem]" level="application" />
19
+ <orderEntry type="library" scope="PROVIDED" name="actionview (v8.0.2, rbenv: 3.3.6) [gem]" level="application" />
20
+ <orderEntry type="library" scope="PROVIDED" name="activejob (v8.0.2, rbenv: 3.3.6) [gem]" level="application" />
21
+ <orderEntry type="library" scope="PROVIDED" name="activemodel (v8.0.2, rbenv: 3.3.6) [gem]" level="application" />
22
+ <orderEntry type="library" scope="PROVIDED" name="activerecord (v8.0.2, rbenv: 3.3.6) [gem]" level="application" />
23
+ <orderEntry type="library" scope="PROVIDED" name="activestorage (v8.0.2, rbenv: 3.3.6) [gem]" level="application" />
24
+ <orderEntry type="library" scope="PROVIDED" name="activesupport (v8.0.2, rbenv: 3.3.6) [gem]" level="application" />
25
+ <orderEntry type="library" scope="PROVIDED" name="ast (v2.4.3, rbenv: 3.3.6) [gem]" level="application" />
26
+ <orderEntry type="library" scope="PROVIDED" name="base64 (v0.3.0, rbenv: 3.3.6) [gem]" level="application" />
27
+ <orderEntry type="library" scope="PROVIDED" name="benchmark (v0.4.1, rbenv: 3.3.6) [gem]" level="application" />
28
+ <orderEntry type="library" scope="PROVIDED" name="bigdecimal (v3.2.2, rbenv: 3.3.6) [gem]" level="application" />
29
+ <orderEntry type="library" scope="PROVIDED" name="builder (v3.3.0, rbenv: 3.3.6) [gem]" level="application" />
30
+ <orderEntry type="library" scope="PROVIDED" name="bundler (v2.6.3, rbenv: 3.3.6) [gem]" level="application" />
31
+ <orderEntry type="library" scope="PROVIDED" name="bundler-audit (v0.9.2, rbenv: 3.3.6) [gem]" level="application" />
32
+ <orderEntry type="library" scope="PROVIDED" name="concurrent-ruby (v1.3.5, rbenv: 3.3.6) [gem]" level="application" />
33
+ <orderEntry type="library" scope="PROVIDED" name="connection_pool (v2.5.3, rbenv: 3.3.6) [gem]" level="application" />
34
+ <orderEntry type="library" scope="PROVIDED" name="crass (v1.0.6, rbenv: 3.3.6) [gem]" level="application" />
35
+ <orderEntry type="library" scope="PROVIDED" name="date (v3.4.1, rbenv: 3.3.6) [gem]" level="application" />
36
+ <orderEntry type="library" scope="PROVIDED" name="drb (v2.2.3, rbenv: 3.3.6) [gem]" level="application" />
37
+ <orderEntry type="library" scope="PROVIDED" name="erubi (v1.13.1, rbenv: 3.3.6) [gem]" level="application" />
38
+ <orderEntry type="library" scope="PROVIDED" name="globalid (v1.2.1, rbenv: 3.3.6) [gem]" level="application" />
39
+ <orderEntry type="library" scope="PROVIDED" name="i18n (v1.14.7, rbenv: 3.3.6) [gem]" level="application" />
40
+ <orderEntry type="library" scope="PROVIDED" name="io-console (v0.8.0, rbenv: 3.3.6) [gem]" level="application" />
41
+ <orderEntry type="library" scope="PROVIDED" name="irb (v1.15.2, rbenv: 3.3.6) [gem]" level="application" />
42
+ <orderEntry type="library" scope="PROVIDED" name="json (v2.13.2, rbenv: 3.3.6) [gem]" level="application" />
43
+ <orderEntry type="library" scope="PROVIDED" name="language_server-protocol (v3.17.0.5, rbenv: 3.3.6) [gem]" level="application" />
44
+ <orderEntry type="library" scope="PROVIDED" name="lint_roller (v1.1.0, rbenv: 3.3.6) [gem]" level="application" />
45
+ <orderEntry type="library" scope="PROVIDED" name="logger (v1.7.0, rbenv: 3.3.6) [gem]" level="application" />
46
+ <orderEntry type="library" scope="PROVIDED" name="loofah (v2.24.0, rbenv: 3.3.6) [gem]" level="application" />
47
+ <orderEntry type="library" scope="PROVIDED" name="mail (v2.8.1, rbenv: 3.3.6) [gem]" level="application" />
48
+ <orderEntry type="library" scope="PROVIDED" name="marcel (v1.0.4, rbenv: 3.3.6) [gem]" level="application" />
49
+ <orderEntry type="library" scope="PROVIDED" name="mini_mime (v1.1.5, rbenv: 3.3.6) [gem]" level="application" />
50
+ <orderEntry type="library" scope="PROVIDED" name="minitest (v5.25.5, rbenv: 3.3.6) [gem]" level="application" />
51
+ <orderEntry type="library" scope="PROVIDED" name="nats-pure (v2.5.0, rbenv: 3.3.6) [gem]" level="application" />
52
+ <orderEntry type="library" scope="PROVIDED" name="net-imap (v0.5.6, rbenv: 3.3.6) [gem]" level="application" />
53
+ <orderEntry type="library" scope="PROVIDED" name="net-pop (v0.1.2, rbenv: 3.3.6) [gem]" level="application" />
54
+ <orderEntry type="library" scope="PROVIDED" name="net-protocol (v0.2.2, rbenv: 3.3.6) [gem]" level="application" />
55
+ <orderEntry type="library" scope="PROVIDED" name="net-smtp (v0.5.1, rbenv: 3.3.6) [gem]" level="application" />
56
+ <orderEntry type="library" scope="PROVIDED" name="nio4r (v2.7.4, rbenv: 3.3.6) [gem]" level="application" />
57
+ <orderEntry type="library" scope="PROVIDED" name="nokogiri (v1.18.7, rbenv: 3.3.6) [gem]" level="application" />
58
+ <orderEntry type="library" scope="PROVIDED" name="parallel (v1.27.0, rbenv: 3.3.6) [gem]" level="application" />
59
+ <orderEntry type="library" scope="PROVIDED" name="parser (v3.3.9.0, rbenv: 3.3.6) [gem]" level="application" />
60
+ <orderEntry type="library" scope="PROVIDED" name="pp (v0.6.2, rbenv: 3.3.6) [gem]" level="application" />
61
+ <orderEntry type="library" scope="PROVIDED" name="prettyprint (v0.2.0, rbenv: 3.3.6) [gem]" level="application" />
62
+ <orderEntry type="library" scope="PROVIDED" name="prism (v1.4.0, rbenv: 3.3.6) [gem]" level="application" />
63
+ <orderEntry type="library" scope="PROVIDED" name="psych (v5.2.3, rbenv: 3.3.6) [gem]" level="application" />
64
+ <orderEntry type="library" scope="PROVIDED" name="racc (v1.8.1, rbenv: 3.3.6) [gem]" level="application" />
65
+ <orderEntry type="library" scope="PROVIDED" name="rack (v3.1.13, rbenv: 3.3.6) [gem]" level="application" />
66
+ <orderEntry type="library" scope="PROVIDED" name="rack-session (v2.1.0, rbenv: 3.3.6) [gem]" level="application" />
67
+ <orderEntry type="library" scope="PROVIDED" name="rack-test (v2.2.0, rbenv: 3.3.6) [gem]" level="application" />
68
+ <orderEntry type="library" scope="PROVIDED" name="rackup (v2.2.1, rbenv: 3.3.6) [gem]" level="application" />
69
+ <orderEntry type="library" scope="PROVIDED" name="rails (v8.0.2, rbenv: 3.3.6) [gem]" level="application" />
70
+ <orderEntry type="library" scope="PROVIDED" name="rails-dom-testing (v2.2.0, rbenv: 3.3.6) [gem]" level="application" />
71
+ <orderEntry type="library" scope="PROVIDED" name="rails-html-sanitizer (v1.6.2, rbenv: 3.3.6) [gem]" level="application" />
72
+ <orderEntry type="library" scope="PROVIDED" name="railties (v8.0.2, rbenv: 3.3.6) [gem]" level="application" />
73
+ <orderEntry type="library" scope="PROVIDED" name="rainbow (v3.1.1, rbenv: 3.3.6) [gem]" level="application" />
74
+ <orderEntry type="library" scope="PROVIDED" name="rake (v13.2.1, rbenv: 3.3.6) [gem]" level="application" />
75
+ <orderEntry type="library" scope="PROVIDED" name="rdoc (v6.13.1, rbenv: 3.3.6) [gem]" level="application" />
76
+ <orderEntry type="library" scope="PROVIDED" name="regexp_parser (v2.11.2, rbenv: 3.3.6) [gem]" level="application" />
77
+ <orderEntry type="library" scope="PROVIDED" name="reline (v0.6.1, rbenv: 3.3.6) [gem]" level="application" />
78
+ <orderEntry type="library" scope="PROVIDED" name="rubocop (v1.79.2, rbenv: 3.3.6) [gem]" level="application" />
79
+ <orderEntry type="library" scope="PROVIDED" name="rubocop-ast (v1.46.0, rbenv: 3.3.6) [gem]" level="application" />
80
+ <orderEntry type="library" scope="PROVIDED" name="rubocop-packaging (v0.6.0, rbenv: 3.3.6) [gem]" level="application" />
81
+ <orderEntry type="library" scope="PROVIDED" name="rubocop-performance (v1.25.0, rbenv: 3.3.6) [gem]" level="application" />
82
+ <orderEntry type="library" scope="PROVIDED" name="rubocop-rake (v0.7.1, rbenv: 3.3.6) [gem]" level="application" />
83
+ <orderEntry type="library" scope="PROVIDED" name="ruby-progressbar (v1.13.0, rbenv: 3.3.6) [gem]" level="application" />
84
+ <orderEntry type="library" scope="PROVIDED" name="securerandom (v0.4.1, rbenv: 3.3.6) [gem]" level="application" />
85
+ <orderEntry type="library" scope="PROVIDED" name="stringio (v3.1.6, rbenv: 3.3.6) [gem]" level="application" />
86
+ <orderEntry type="library" scope="PROVIDED" name="thor (v1.3.2, rbenv: 3.3.6) [gem]" level="application" />
87
+ <orderEntry type="library" scope="PROVIDED" name="timeout (v0.4.3, rbenv: 3.3.6) [gem]" level="application" />
88
+ <orderEntry type="library" scope="PROVIDED" name="tzinfo (v2.0.6, rbenv: 3.3.6) [gem]" level="application" />
89
+ <orderEntry type="library" scope="PROVIDED" name="unicode-display_width (v3.1.4, rbenv: 3.3.6) [gem]" level="application" />
90
+ <orderEntry type="library" scope="PROVIDED" name="unicode-emoji (v4.0.4, rbenv: 3.3.6) [gem]" level="application" />
91
+ <orderEntry type="library" scope="PROVIDED" name="uri (v1.0.3, rbenv: 3.3.6) [gem]" level="application" />
92
+ <orderEntry type="library" scope="PROVIDED" name="useragent (v0.16.11, rbenv: 3.3.6) [gem]" level="application" />
93
+ <orderEntry type="library" scope="PROVIDED" name="websocket-driver (v0.7.7, rbenv: 3.3.6) [gem]" level="application" />
94
+ <orderEntry type="library" scope="PROVIDED" name="websocket-extensions (v0.1.5, rbenv: 3.3.6) [gem]" level="application" />
95
+ <orderEntry type="library" scope="PROVIDED" name="zeitwerk (v2.7.2, rbenv: 3.3.6) [gem]" level="application" />
96
+ </component>
97
+ </module>
data/.idea/misc.xml ADDED
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectRootManager" version="2" project-jdk-name="rbenv: 3.3.6" project-jdk-type="RUBY_SDK" />
4
+ </project>
data/.idea/modules.xml ADDED
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/jetstream_bridge.iml" filepath="$PROJECT_DIR$/.idea/jetstream_bridge.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
data/.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="" vcs="Git" />
5
+ </component>
6
+ </project>
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,274 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ jetstream_bridge (1.4.0)
5
+ activerecord (>= 6.0)
6
+ activesupport (>= 6.0)
7
+ nats-pure (~> 2.4)
8
+ rails (>= 6.0)
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ actioncable (8.0.2)
14
+ actionpack (= 8.0.2)
15
+ activesupport (= 8.0.2)
16
+ nio4r (~> 2.0)
17
+ websocket-driver (>= 0.6.1)
18
+ zeitwerk (~> 2.6)
19
+ actionmailbox (8.0.2)
20
+ actionpack (= 8.0.2)
21
+ activejob (= 8.0.2)
22
+ activerecord (= 8.0.2)
23
+ activestorage (= 8.0.2)
24
+ activesupport (= 8.0.2)
25
+ mail (>= 2.8.0)
26
+ actionmailer (8.0.2)
27
+ actionpack (= 8.0.2)
28
+ actionview (= 8.0.2)
29
+ activejob (= 8.0.2)
30
+ activesupport (= 8.0.2)
31
+ mail (>= 2.8.0)
32
+ rails-dom-testing (~> 2.2)
33
+ actionpack (8.0.2)
34
+ actionview (= 8.0.2)
35
+ activesupport (= 8.0.2)
36
+ nokogiri (>= 1.8.5)
37
+ rack (>= 2.2.4)
38
+ rack-session (>= 1.0.1)
39
+ rack-test (>= 0.6.3)
40
+ rails-dom-testing (~> 2.2)
41
+ rails-html-sanitizer (~> 1.6)
42
+ useragent (~> 0.16)
43
+ actiontext (8.0.2)
44
+ actionpack (= 8.0.2)
45
+ activerecord (= 8.0.2)
46
+ activestorage (= 8.0.2)
47
+ activesupport (= 8.0.2)
48
+ globalid (>= 0.6.0)
49
+ nokogiri (>= 1.8.5)
50
+ actionview (8.0.2)
51
+ activesupport (= 8.0.2)
52
+ builder (~> 3.1)
53
+ erubi (~> 1.11)
54
+ rails-dom-testing (~> 2.2)
55
+ rails-html-sanitizer (~> 1.6)
56
+ activejob (8.0.2)
57
+ activesupport (= 8.0.2)
58
+ globalid (>= 0.3.6)
59
+ activemodel (8.0.2)
60
+ activesupport (= 8.0.2)
61
+ activerecord (8.0.2)
62
+ activemodel (= 8.0.2)
63
+ activesupport (= 8.0.2)
64
+ timeout (>= 0.4.0)
65
+ activestorage (8.0.2)
66
+ actionpack (= 8.0.2)
67
+ activejob (= 8.0.2)
68
+ activerecord (= 8.0.2)
69
+ activesupport (= 8.0.2)
70
+ marcel (~> 1.0)
71
+ activesupport (8.0.2)
72
+ base64
73
+ benchmark (>= 0.3)
74
+ bigdecimal
75
+ concurrent-ruby (~> 1.0, >= 1.3.1)
76
+ connection_pool (>= 2.2.5)
77
+ drb
78
+ i18n (>= 1.6, < 2)
79
+ logger (>= 1.4.2)
80
+ minitest (>= 5.1)
81
+ securerandom (>= 0.3)
82
+ tzinfo (~> 2.0, >= 2.0.5)
83
+ uri (>= 0.13.1)
84
+ ast (2.4.3)
85
+ base64 (0.3.0)
86
+ benchmark (0.4.1)
87
+ bigdecimal (3.2.2)
88
+ builder (3.3.0)
89
+ bundler-audit (0.9.2)
90
+ bundler (>= 1.2.0, < 3)
91
+ thor (~> 1.0)
92
+ concurrent-ruby (1.3.5)
93
+ connection_pool (2.5.3)
94
+ crass (1.0.6)
95
+ date (3.4.1)
96
+ diff-lcs (1.6.2)
97
+ drb (2.2.3)
98
+ erubi (1.13.1)
99
+ globalid (1.2.1)
100
+ activesupport (>= 6.1)
101
+ i18n (1.14.7)
102
+ concurrent-ruby (~> 1.0)
103
+ io-console (0.8.0)
104
+ irb (1.15.2)
105
+ pp (>= 0.6.0)
106
+ rdoc (>= 4.0.0)
107
+ reline (>= 0.4.2)
108
+ json (2.13.2)
109
+ language_server-protocol (3.17.0.5)
110
+ lint_roller (1.1.0)
111
+ logger (1.7.0)
112
+ loofah (2.24.0)
113
+ crass (~> 1.0.2)
114
+ nokogiri (>= 1.12.0)
115
+ mail (2.8.1)
116
+ mini_mime (>= 0.1.1)
117
+ net-imap
118
+ net-pop
119
+ net-smtp
120
+ marcel (1.0.4)
121
+ mini_mime (1.1.5)
122
+ mini_portile2 (2.8.9)
123
+ minitest (5.25.5)
124
+ nats-pure (2.5.0)
125
+ base64
126
+ concurrent-ruby (~> 1.0)
127
+ json
128
+ securerandom
129
+ uri
130
+ net-imap (0.5.6)
131
+ date
132
+ net-protocol
133
+ net-pop (0.1.2)
134
+ net-protocol
135
+ net-protocol (0.2.2)
136
+ timeout
137
+ net-smtp (0.5.1)
138
+ net-protocol
139
+ nio4r (2.7.4)
140
+ nokogiri (1.18.7)
141
+ mini_portile2 (~> 2.8.2)
142
+ racc (~> 1.4)
143
+ nokogiri (1.18.7-arm64-darwin)
144
+ racc (~> 1.4)
145
+ nokogiri (1.18.7-x86_64-linux-gnu)
146
+ racc (~> 1.4)
147
+ parallel (1.27.0)
148
+ parser (3.3.9.0)
149
+ ast (~> 2.4.1)
150
+ racc
151
+ pp (0.6.2)
152
+ prettyprint
153
+ prettyprint (0.2.0)
154
+ prism (1.4.0)
155
+ psych (5.2.3)
156
+ date
157
+ stringio
158
+ racc (1.8.1)
159
+ rack (3.1.13)
160
+ rack-session (2.1.0)
161
+ base64 (>= 0.1.0)
162
+ rack (>= 3.0.0)
163
+ rack-test (2.2.0)
164
+ rack (>= 1.3)
165
+ rackup (2.2.1)
166
+ rack (>= 3)
167
+ rails (8.0.2)
168
+ actioncable (= 8.0.2)
169
+ actionmailbox (= 8.0.2)
170
+ actionmailer (= 8.0.2)
171
+ actionpack (= 8.0.2)
172
+ actiontext (= 8.0.2)
173
+ actionview (= 8.0.2)
174
+ activejob (= 8.0.2)
175
+ activemodel (= 8.0.2)
176
+ activerecord (= 8.0.2)
177
+ activestorage (= 8.0.2)
178
+ activesupport (= 8.0.2)
179
+ bundler (>= 1.15.0)
180
+ railties (= 8.0.2)
181
+ rails-dom-testing (2.2.0)
182
+ activesupport (>= 5.0.0)
183
+ minitest
184
+ nokogiri (>= 1.6)
185
+ rails-html-sanitizer (1.6.2)
186
+ loofah (~> 2.21)
187
+ nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
188
+ railties (8.0.2)
189
+ actionpack (= 8.0.2)
190
+ activesupport (= 8.0.2)
191
+ irb (~> 1.13)
192
+ rackup (>= 1.0.0)
193
+ rake (>= 12.2)
194
+ thor (~> 1.0, >= 1.2.2)
195
+ zeitwerk (~> 2.6)
196
+ rainbow (3.1.1)
197
+ rake (13.2.1)
198
+ rdoc (6.13.1)
199
+ psych (>= 4.0.0)
200
+ regexp_parser (2.11.2)
201
+ reline (0.6.1)
202
+ io-console (~> 0.5)
203
+ rspec (3.13.1)
204
+ rspec-core (~> 3.13.0)
205
+ rspec-expectations (~> 3.13.0)
206
+ rspec-mocks (~> 3.13.0)
207
+ rspec-core (3.13.5)
208
+ rspec-support (~> 3.13.0)
209
+ rspec-expectations (3.13.5)
210
+ diff-lcs (>= 1.2.0, < 2.0)
211
+ rspec-support (~> 3.13.0)
212
+ rspec-mocks (3.13.5)
213
+ diff-lcs (>= 1.2.0, < 2.0)
214
+ rspec-support (~> 3.13.0)
215
+ rspec-support (3.13.5)
216
+ rubocop (1.79.2)
217
+ json (~> 2.3)
218
+ language_server-protocol (~> 3.17.0.2)
219
+ lint_roller (~> 1.1.0)
220
+ parallel (~> 1.10)
221
+ parser (>= 3.3.0.2)
222
+ rainbow (>= 2.2.2, < 4.0)
223
+ regexp_parser (>= 2.9.3, < 3.0)
224
+ rubocop-ast (>= 1.46.0, < 2.0)
225
+ ruby-progressbar (~> 1.7)
226
+ unicode-display_width (>= 2.4.0, < 4.0)
227
+ rubocop-ast (1.46.0)
228
+ parser (>= 3.3.7.2)
229
+ prism (~> 1.4)
230
+ rubocop-packaging (0.6.0)
231
+ lint_roller (~> 1.1.0)
232
+ rubocop (>= 1.72.1, < 2.0)
233
+ rubocop-performance (1.25.0)
234
+ lint_roller (~> 1.1)
235
+ rubocop (>= 1.75.0, < 2.0)
236
+ rubocop-ast (>= 1.38.0, < 2.0)
237
+ rubocop-rake (0.7.1)
238
+ lint_roller (~> 1.1)
239
+ rubocop (>= 1.72.1)
240
+ ruby-progressbar (1.13.0)
241
+ securerandom (0.4.1)
242
+ stringio (3.1.6)
243
+ thor (1.3.2)
244
+ timeout (0.4.3)
245
+ tzinfo (2.0.6)
246
+ concurrent-ruby (~> 1.0)
247
+ unicode-display_width (3.1.4)
248
+ unicode-emoji (~> 4.0, >= 4.0.4)
249
+ unicode-emoji (4.0.4)
250
+ uri (1.0.3)
251
+ useragent (0.16.11)
252
+ websocket-driver (0.7.7)
253
+ base64
254
+ websocket-extensions (>= 0.1.0)
255
+ websocket-extensions (0.1.5)
256
+ zeitwerk (2.7.2)
257
+
258
+ PLATFORMS
259
+ arm64-darwin-24
260
+ ruby
261
+ x86_64-linux
262
+
263
+ DEPENDENCIES
264
+ bundler-audit (>= 0.9.1)
265
+ jetstream_bridge!
266
+ rake (>= 13.0)
267
+ rspec (>= 3.12)
268
+ rubocop (~> 1.66)
269
+ rubocop-packaging (~> 0.5)
270
+ rubocop-performance (~> 1.21)
271
+ rubocop-rake (~> 0.6)
272
+
273
+ BUNDLED WITH
274
+ 2.6.3
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Mike Attara
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.