{"bomFormat":"CycloneDX","specVersion":"1.5","version":1,"serialNumber":"urn:uuid:e6430514-f7f0-489a-939e-aed8c61d83e5","metadata":{"timestamp":"2026-09-18T16:42:27Z","tools":[{"vendor":"Ecosystems","name":"Ecosystems SBOM Generator"}],"component":{"type":"application","name":"nightlycommit/twing"}},"components":[{"type":"library","name":"@types/luxon","version":"^1.4.0","purl":"pkg:npm/@types/luxon","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"camelcase","version":"^4.1.0","purl":"pkg:npm/camelcase","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"capitalize","version":"^1.0.0","purl":"pkg:npm/capitalize","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"crypto-js","version":"^3.1.9-1","purl":"pkg:npm/crypto-js","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"esrever","version":"^0.2.0","purl":"pkg:npm/esrever","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"fs-extra","version":"^5.0.0","purl":"pkg:npm/fs-extra","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"htmlspecialchars","version":"^1.0.5","purl":"pkg:npm/htmlspecialchars","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"iconv-lite","version":"^0.4.19","purl":"pkg:npm/iconv-lite","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"is-integer","version":"^1.0.7","purl":"pkg:npm/is-integer","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"is-number","version":"^5.0.0","purl":"pkg:npm/is-number","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"is-plain-object","version":"^2.0.4","purl":"pkg:npm/is-plain-object","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"isobject","version":"^3.0.1","purl":"pkg:npm/isobject","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"levenshtein","version":"^1.0.5","purl":"pkg:npm/levenshtein","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"locutus","version":"^2.0.11","purl":"pkg:npm/locutus","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"luxon","version":"^1.19.3","purl":"pkg:npm/luxon","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"merge","version":"^1.2.1","purl":"pkg:npm/merge","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"object-hash","version":"^1.2.0","purl":"pkg:npm/object-hash","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"pad","version":"^2.0.3","purl":"pkg:npm/pad","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"regex-parser","version":"^2.2.8","purl":"pkg:npm/regex-parser","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"runes","version":"^0.4.3","purl":"pkg:npm/runes","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"snake-case","version":"^2.1.0","purl":"pkg:npm/snake-case","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"source-map","version":"^0.6.1","purl":"pkg:npm/source-map","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"tmp","version":"0.0.33","purl":"pkg:npm/tmp","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"twig-lexer","version":"^0.7.2","purl":"pkg:npm/twig-lexer","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"utf8-binary-cutter","version":"^0.9.2","purl":"pkg:npm/utf8-binary-cutter","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"@types/fs-extra","version":"^8.0.0","purl":"pkg:npm/@types/fs-extra","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"@types/locutus","version":"0.0.5","purl":"pkg:npm/@types/locutus","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"@types/node","version":"^9.3.0","purl":"pkg:npm/@types/node","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"@types/sinon","version":"^4.3.3","purl":"pkg:npm/@types/sinon","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"@types/tape","version":"^4.2.33","purl":"pkg:npm/@types/tape","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"@types/tmp","version":"0.0.33","purl":"pkg:npm/@types/tmp","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"@typescript-eslint/eslint-plugin","version":"^2.3.2","purl":"pkg:npm/@typescript-eslint/eslint-plugin","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"@typescript-eslint/parser","version":"^2.3.2","purl":"pkg:npm/@typescript-eslint/parser","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"browserify","version":"^16.2.3","purl":"pkg:npm/browserify","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"coveralls","version":"^3.0.14","purl":"pkg:npm/coveralls","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"eslint","version":"^6.5.1","purl":"pkg:npm/eslint","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"eslint-plugin-import","version":"^2.18.2","purl":"pkg:npm/eslint-plugin-import","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"fs-finder","version":"^1.8.1","purl":"pkg:npm/fs-finder","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"nyc","version":"^15.0.1","purl":"pkg:npm/nyc","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"replace-in-file","version":"^3.4.2","purl":"pkg:npm/replace-in-file","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"rimraf","version":"^2.6.2","purl":"pkg:npm/rimraf","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"sinon","version":"^6.3.4","purl":"pkg:npm/sinon","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"tap-bail","version":"^1.0.0","purl":"pkg:npm/tap-bail","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"tap-spec","version":"^5.0.0","purl":"pkg:npm/tap-spec","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"tape","version":"^4.9.0","purl":"pkg:npm/tape","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"tape-run","version":"^6.0.0","purl":"pkg:npm/tape-run","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"ts-node","version":"^8.4.1","purl":"pkg:npm/ts-node","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"tsify","version":"^4.0.1","purl":"pkg:npm/tsify","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"typescript","version":"^3.1.3","purl":"pkg:npm/typescript","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"uglifyify","version":"^5.0.1","purl":"pkg:npm/uglifyify","properties":[{"name":"filePath","value":"package.json"}]},{"type":"library","name":"github-pages","version":"\u003e= 0","purl":"pkg:gem/github-pages","properties":[{"name":"filePath","value":"docs/Gemfile"}]},{"type":"library","name":"activesupport","version":"4.2.10","purl":"pkg:gem/activesupport","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"addressable","version":"2.5.2","purl":"pkg:gem/addressable","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"coffee-script","version":"2.4.1","purl":"pkg:gem/coffee-script","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"coffee-script-source","version":"1.11.1","purl":"pkg:gem/coffee-script-source","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"colorator","version":"1.1.0","purl":"pkg:gem/colorator","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"commonmarker","version":"0.17.13","purl":"pkg:gem/commonmarker","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"concurrent-ruby","version":"1.0.5","purl":"pkg:gem/concurrent-ruby","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"dnsruby","version":"1.61.2","purl":"pkg:gem/dnsruby","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"em-websocket","version":"0.5.1","purl":"pkg:gem/em-websocket","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"ethon","version":"0.11.0","purl":"pkg:gem/ethon","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"eventmachine","version":"1.2.7","purl":"pkg:gem/eventmachine","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"execjs","version":"2.7.0","purl":"pkg:gem/execjs","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"faraday","version":"0.15.3","purl":"pkg:gem/faraday","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"ffi","version":"1.9.25","purl":"pkg:gem/ffi","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"forwardable-extended","version":"2.6.0","purl":"pkg:gem/forwardable-extended","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"gemoji","version":"3.0.0","purl":"pkg:gem/gemoji","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"github-pages","version":"192","purl":"pkg:gem/github-pages","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"github-pages-health-check","version":"1.8.1","purl":"pkg:gem/github-pages-health-check","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"html-pipeline","version":"2.8.4","purl":"pkg:gem/html-pipeline","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"http_parser.rb","version":"0.6.0","purl":"pkg:gem/http_parser.rb","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"i18n","version":"0.9.5","purl":"pkg:gem/i18n","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll","version":"3.7.4","purl":"pkg:gem/jekyll","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-avatar","version":"0.6.0","purl":"pkg:gem/jekyll-avatar","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-coffeescript","version":"1.1.1","purl":"pkg:gem/jekyll-coffeescript","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-commonmark","version":"1.2.0","purl":"pkg:gem/jekyll-commonmark","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-commonmark-ghpages","version":"0.1.5","purl":"pkg:gem/jekyll-commonmark-ghpages","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-default-layout","version":"0.1.4","purl":"pkg:gem/jekyll-default-layout","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-feed","version":"0.10.0","purl":"pkg:gem/jekyll-feed","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-gist","version":"1.5.0","purl":"pkg:gem/jekyll-gist","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-github-metadata","version":"2.9.4","purl":"pkg:gem/jekyll-github-metadata","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-mentions","version":"1.4.1","purl":"pkg:gem/jekyll-mentions","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-optional-front-matter","version":"0.3.0","purl":"pkg:gem/jekyll-optional-front-matter","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-paginate","version":"1.1.0","purl":"pkg:gem/jekyll-paginate","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-readme-index","version":"0.2.0","purl":"pkg:gem/jekyll-readme-index","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-redirect-from","version":"0.14.0","purl":"pkg:gem/jekyll-redirect-from","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-relative-links","version":"0.5.3","purl":"pkg:gem/jekyll-relative-links","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-remote-theme","version":"0.3.1","purl":"pkg:gem/jekyll-remote-theme","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-sass-converter","version":"1.5.2","purl":"pkg:gem/jekyll-sass-converter","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-seo-tag","version":"2.5.0","purl":"pkg:gem/jekyll-seo-tag","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-sitemap","version":"1.2.0","purl":"pkg:gem/jekyll-sitemap","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-swiss","version":"0.4.0","purl":"pkg:gem/jekyll-swiss","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-theme-architect","version":"0.1.1","purl":"pkg:gem/jekyll-theme-architect","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-theme-cayman","version":"0.1.1","purl":"pkg:gem/jekyll-theme-cayman","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-theme-dinky","version":"0.1.1","purl":"pkg:gem/jekyll-theme-dinky","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-theme-hacker","version":"0.1.1","purl":"pkg:gem/jekyll-theme-hacker","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-theme-leap-day","version":"0.1.1","purl":"pkg:gem/jekyll-theme-leap-day","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-theme-merlot","version":"0.1.1","purl":"pkg:gem/jekyll-theme-merlot","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-theme-midnight","version":"0.1.1","purl":"pkg:gem/jekyll-theme-midnight","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-theme-minimal","version":"0.1.1","purl":"pkg:gem/jekyll-theme-minimal","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-theme-modernist","version":"0.1.1","purl":"pkg:gem/jekyll-theme-modernist","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-theme-primer","version":"0.5.3","purl":"pkg:gem/jekyll-theme-primer","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-theme-slate","version":"0.1.1","purl":"pkg:gem/jekyll-theme-slate","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-theme-tactile","version":"0.1.1","purl":"pkg:gem/jekyll-theme-tactile","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-theme-time-machine","version":"0.1.1","purl":"pkg:gem/jekyll-theme-time-machine","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-titles-from-headings","version":"0.5.1","purl":"pkg:gem/jekyll-titles-from-headings","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jekyll-watch","version":"2.0.0","purl":"pkg:gem/jekyll-watch","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"jemoji","version":"0.10.1","purl":"pkg:gem/jemoji","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"kramdown","version":"1.17.0","purl":"pkg:gem/kramdown","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"liquid","version":"4.0.0","purl":"pkg:gem/liquid","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"listen","version":"3.1.5","purl":"pkg:gem/listen","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"mercenary","version":"0.3.6","purl":"pkg:gem/mercenary","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"mini_portile2","version":"2.3.0","purl":"pkg:gem/mini_portile2","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"minima","version":"2.5.0","purl":"pkg:gem/minima","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"minitest","version":"5.11.3","purl":"pkg:gem/minitest","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"multipart-post","version":"2.0.0","purl":"pkg:gem/multipart-post","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"nokogiri","version":"1.8.5","purl":"pkg:gem/nokogiri","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"octokit","version":"4.12.0","purl":"pkg:gem/octokit","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"pathutil","version":"0.16.1","purl":"pkg:gem/pathutil","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"public_suffix","version":"2.0.5","purl":"pkg:gem/public_suffix","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"rb-fsevent","version":"0.10.3","purl":"pkg:gem/rb-fsevent","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"rb-inotify","version":"0.9.10","purl":"pkg:gem/rb-inotify","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"rouge","version":"2.2.1","purl":"pkg:gem/rouge","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"ruby-enum","version":"0.7.2","purl":"pkg:gem/ruby-enum","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"ruby_dep","version":"1.5.0","purl":"pkg:gem/ruby_dep","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"rubyzip","version":"1.2.2","purl":"pkg:gem/rubyzip","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"safe_yaml","version":"1.0.4","purl":"pkg:gem/safe_yaml","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"sass","version":"3.6.0","purl":"pkg:gem/sass","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"sass-listen","version":"4.0.0","purl":"pkg:gem/sass-listen","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"sawyer","version":"0.8.1","purl":"pkg:gem/sawyer","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"terminal-table","version":"1.8.0","purl":"pkg:gem/terminal-table","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"thread_safe","version":"0.3.6","purl":"pkg:gem/thread_safe","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"typhoeus","version":"1.3.0","purl":"pkg:gem/typhoeus","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"tzinfo","version":"1.2.5","purl":"pkg:gem/tzinfo","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]},{"type":"library","name":"unicode-display_width","version":"1.4.0","purl":"pkg:gem/unicode-display_width","properties":[{"name":"filePath","value":"docs/Gemfile.lock"}]}]}