Yton
Unified · Split
| @@ -13,7 +13,7 @@ jobs: · 12 unmodified lines | ||
| 13 | 13 | steps: |
| 14 | 14 | - uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0 |
| 15 | 15 | - name: Set up Ruby |
| 16 | − uses: ruby/setup-ruby@360dc864d5da99d54fcb8e9148c14a84b90d3e88 # v1.165.1 | |
| 16 | + uses: ruby/setup-ruby@22fdc77bf4148f810455b226c90fb81b5cbc00a7 # v1.171.0 | |
| 17 | 17 | with: |
| 18 | 18 | bundler-cache: true # runs 'bundle install' and caches installed gems automatically |
| 19 | 19 | - name: Run tests |
| @@ -11,7 +11,7 @@ jobs: · 10 unmodified lines | ||
| 11 | 11 | steps: |
| 12 | 12 | - uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0 |
| 13 | 13 | - name: Set up Ruby |
| 14 | − uses: ruby/setup-ruby@360dc864d5da99d54fcb8e9148c14a84b90d3e88 # v1.165.1 | |
| 14 | + uses: ruby/setup-ruby@22fdc77bf4148f810455b226c90fb81b5cbc00a7 # v1.171.0 | |
| 15 | 15 | with: |
| 16 | 16 | bundler-cache: true # runs 'bundle install' and caches installed gems automatically |
| 17 | 17 | - name: Generate report |
| @@ -11,7 +11,7 @@ jobs: · 10 unmodified lines | ||
| 11 | 11 | steps: |
| 12 | 12 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 |
| 13 | 13 | - name: Set up Ruby |
| 14 | − uses: ruby/setup-ruby@360dc864d5da99d54fcb8e9148c14a84b90d3e88 # v1.165.1 | |
| 14 | + uses: ruby/setup-ruby@22fdc77bf4148f810455b226c90fb81b5cbc00a7 # v1.171.0 | |
| 15 | 15 | with: |
| 16 | 16 | bundler-cache: true # runs 'bundle install' and caches installed gems automatically |
| 17 | 17 | - name: Run tests |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | GEM |
| 2 | 2 | remote: https://rubygems.org/ |
| 3 | 3 | specs: |
| 4 | − activesupport (7.1.2) | |
| 4 | + activesupport (7.1.3) | |
| 5 | 5 | base64 |
| 6 | 6 | bigdecimal |
| 7 | 7 | concurrent-ruby (~> 1.0, >= 1.0.2) |
| @@ -16,12 +16,12 @@ GEM · 8 unmodified lines | ||
| 16 | 16 | erubi (>= 1.0.0) |
| 17 | 17 | rack (>= 0.9.0) |
| 18 | 18 | rouge (>= 1.0.0) |
| 19 | − bigdecimal (3.1.5) | |
| 19 | + bigdecimal (3.1.6) | |
| 20 | 20 | browser (5.3.1) |
| 21 | 21 | byebug (11.1.3) |
| 22 | 22 | chunky_png (1.4.0) |
| 23 | 23 | coderay (1.1.3) |
| 24 | − concurrent-ruby (1.2.2) | |
| 24 | + concurrent-ruby (1.2.3) | |
| 25 | 25 | connection_pool (2.4.1) |
| 26 | 26 | daemons (1.4.1) |
| 27 | 27 | drb (2.2.0) |
| @@ -30,7 +30,7 @@ GEM · 2 unmodified lines | ||
| 30 | 30 | ethon (0.16.0) |
| 31 | 31 | ffi (>= 1.15.0) |
| 32 | 32 | eventmachine (1.2.7) |
| 33 | − execjs (2.8.1) | |
| 33 | + execjs (2.9.1) | |
| 34 | 34 | exifr (1.4.0) |
| 35 | 35 | ffi (1.15.5) |
| 36 | 36 | fspath (3.1.2) |
| @@ -53,7 +53,7 @@ GEM · 16 unmodified lines | ||
| 53 | 53 | in_threads (1.6.0) |
| 54 | 54 | method_source (1.0.0) |
| 55 | 55 | mini_portile2 (2.8.5) |
| 56 | − minitest (5.21.1) | |
| 56 | + minitest (5.22.2) | |
| 57 | 57 | multi_json (1.15.0) |
| 58 | 58 | mustermann (3.0.0) |
| 59 | 59 | ruby2_keywords (~> 0.0.1) |
| @@ -62,7 +62,7 @@ GEM · 2 unmodified lines | ||
| 62 | 62 | net-ssh (>= 5.0.0, < 8.0.0) |
| 63 | 63 | net-ssh (7.0.1) |
| 64 | 64 | newrelic_rpm (8.16.0) |
| 65 | − nokogiri (1.16.0) | |
| 65 | + nokogiri (1.16.2) | |
| 66 | 66 | mini_portile2 (~> 2.8.2) |
| 67 | 67 | racc (~> 1.4) |
| 68 | 68 | options (2.3.2) |
| @@ -125,7 +125,7 @@ GEM · 56 unmodified lines | ||
| 125 | 125 | strings-ansi (0.2.0) |
| 126 | 126 | terminal-table (3.0.2) |
| 127 | 127 | unicode-display_width (>= 1.1.1, < 3) |
| 128 | − terser (1.1.20) | |
| 128 | + terser (1.2.0) | |
| 129 | 129 | execjs (>= 0.3.0, < 3) |
| 130 | 130 | thin (1.8.2) |
| 131 | 131 | daemons (~> 1.0, >= 1.0.9) |
| @@ -176,6 +176,7 @@ Made something cool? Feel free to open a PR to add a new row to this table! You · 175 unmodified lines | ||
| 176 | 176 | | [waiting-for-dev/vim-www](https://github.com/waiting-for-dev/vim-www) | Vim plugin |  |  | |
| 177 | 177 | | [luckasRanarison/nvim-devdocs](https://github.com/luckasRanarison/nvim-devdocs) | Neovim plugin |  |  | |
| 178 | 178 | | [toiletbril/dedoc](https://github.com/toiletbril/dedoc) | Terminal based viewer |  |  | |
| 179 | +| [Raycast Devdocs](https://www.raycast.com/pomdtr/devdocs) | Raycast extension | Unavailable | Unavailable | | |
| 179 | 180 | |
| 180 | 181 | ## Copyright / License |
| 181 | 182 | |
| @@ -1,8 +1,16 @@ | ||
| 1 | 1 | [ |
| 2 | 2 | [ |
| 3 | − "2024-01-24", | |
| 3 | + "2024-02-20", | |
| 4 | 4 | "New documentation: <a href=\"/nextjs/\">Nextjs</a>" |
| 5 | 5 | ], |
| 6 | + [ | |
| 7 | + "2024-01-24", | |
| 8 | + "New documentation: <a href=\"/playwright/\">Playwright</a>" | |
| 9 | + ], | |
| 10 | + [ | |
| 11 | + "2024-01-20", | |
| 12 | + "New documentation: <a href=\"/htmx/\">htmx</a>" | |
| 13 | + ], | |
| 6 | 14 | [ |
| 7 | 15 | "2024-01-12", |
| 8 | 16 | "New documentation: <a href=\"/hammerspoon/\">Hammerspoon</a>" |
| @@ -167,8 +167,8 @@ download it, extract it with `dpkg -x $PACKAGE ./` and move `./usr/share/doc/ope · 166 unmodified lines | ||
| 167 | 167 | to `path/to/devdocs/docs/openjdk~$VERSION` |
| 168 | 168 | |
| 169 | 169 | ```sh |
| 170 | −curl -O http://ftp.at.debian.org/debian/pool/main/o/openjdk-21/openjdk-21-doc_21.0.1+12-3_all.deb | |
| 171 | −tar xf openjdk-21-doc_21.0.1+12-3_all.deb | |
| 170 | +curl -O http://ftp.at.debian.org/debian/pool/main/o/openjdk-21/openjdk-21-doc_21.0.2+13-2_all.deb | |
| 171 | +tar xf openjdk-21-doc_21.0.2+13-2_all.deb | |
| 172 | 172 | tar xf data.tar.xz |
| 173 | 173 | mv ./usr/share/doc/openjdk-21-jre-headless/api/ docs/openjdk~$VERSION |
| 174 | 174 | ``` |
| @@ -0,0 +1,13 @@ | ||
| 1 | +module Docs | |
| 2 | + class Htmx | |
| 3 | + class CleanHtmlFilter < Filter | |
| 4 | + def call | |
| 5 | + css('.zola-anchor').remove | |
| 6 | + doc.prepend_child("<h1>htmx</h1>") if root_page? | |
| 7 | + css('div:contains("NEWS:")').remove | |
| 8 | + css('h2:contains("sponsors"), #sponsor-table').remove | |
| 9 | + doc | |
| 10 | + end | |
| 11 | + end | |
| 12 | + end | |
| 13 | +end | |
| @@ -0,0 +1,31 @@ | ||
| 1 | +module Docs | |
| 2 | + class Htmx | |
| 3 | + class EntriesFilter < Docs::EntriesFilter | |
| 4 | + def get_name | |
| 5 | + at_css('h1').content | |
| 6 | + end | |
| 7 | + | |
| 8 | + def get_type | |
| 9 | + if slug.start_with?('attributes') | |
| 10 | + 'Attributes' | |
| 11 | + elsif slug.start_with?('headers') | |
| 12 | + 'Headers' | |
| 13 | + elsif slug.start_with?('events') | |
| 14 | + 'Events' | |
| 15 | + elsif slug.start_with?('extensions') | |
| 16 | + 'Extensions' | |
| 17 | + else | |
| 18 | + get_name | |
| 19 | + end | |
| 20 | + end | |
| 21 | + | |
| 22 | + def additional_entries | |
| 23 | + css('h3[id]:has(code)').each_with_object [] do |node, entries| | |
| 24 | + name = node.at_css('code').content | |
| 25 | + id = node['id'] | |
| 26 | + entries << [name, id] | |
| 27 | + end | |
| 28 | + end | |
| 29 | + end | |
| 30 | + end | |
| 31 | +end | |
| @@ -3,9 +3,10 @@ module Docs · 2 unmodified lines | ||
| 3 | 3 | class CleanHtmlFilter < Filter |
| 4 | 4 | def call |
| 5 | 5 | css('.zola-anchor').remove |
| 6 | − doc.prepend_child("<h1>NextJS</h1>") if root_page? | |
| 6 | + doc.prepend_child("<h1>NextJS2</h1>") if root_page? | |
| 7 | 7 | css('div:contains("NEWS:")').remove |
| 8 | 8 | css('h2:contains("sponsors"), #sponsor-table').remove |
| 9 | + css('div.sticky').remove #remove the floating menu | |
| 9 | 10 | doc |
| 10 | 11 | end |
| 11 | 12 | end |
| @@ -1,13 +1,29 @@ | ||
| 1 | 1 | module Docs |
| 2 | − class Nextjs | |
| 3 | − class EntriesFilter < Docs::EntriesFilter | |
| 4 | − def get_name | |
| 5 | − at_css('h1').content | |
| 6 | − end | |
| 2 | + class Nextjs | |
| 3 | + class EntriesFilter < Docs::EntriesFilter | |
| 4 | + def get_name | |
| 5 | + name = at_css('h1').content | |
| 6 | + name.strip! | |
| 7 | + name | |
| 8 | + end | |
| 7 | 9 | |
| 8 | − def get_type | |
| 9 | − get_name | |
| 10 | − end | |
| 10 | + def get_type | |
| 11 | + if subpath.include?('/architecture') | |
| 12 | + 'Architecture' | |
| 13 | + elsif subpath.include?('/community') | |
| 14 | + 'Community' | |
| 15 | + elsif subpath.include?('/getting-started') | |
| 16 | + 'Getting Started' | |
| 17 | + elsif subpath.include?('/messages') | |
| 18 | + 'Messages' | |
| 19 | + elsif subpath.include?('/app') | |
| 20 | + 'Using App Router' | |
| 21 | + elsif subpath.include?('/pages') | |
| 22 | + 'Using Pages Router' | |
| 23 | + else | |
| 24 | + get_name | |
| 11 | 25 | end |
| 26 | + end | |
| 12 | 27 | end |
| 13 | −end | |
| 28 | + end | |
| 29 | +end | |
| @@ -16,8 +16,10 @@ module Docs · 15 unmodified lines | ||
| 16 | 16 | name.remove! ' User Guide' |
| 17 | 17 | name.remove! ' User\'s manual' |
| 18 | 18 | name.remove! %r{ \-.*} |
| 19 | + name.remove! %r{\Asrc/} | |
| 20 | + name.remove! %r{\Astd/} | |
| 19 | 21 | name.strip! |
| 20 | − name | |
| 22 | + name.split("/").last | |
| 21 | 23 | end |
| 22 | 24 | |
| 23 | 25 | def get_type |
| @@ -54,10 +56,11 @@ module Docs · 30 unmodified lines | ||
| 54 | 56 | else |
| 55 | 57 | |
| 56 | 58 | css('.simple-toc-section a, .nested-toc-section a').each do |node| |
| 57 | − entry_name = node.content | |
| 58 | − entry_name.gsub!(/,.*/, '') | |
| 59 | + match = /^`(.*)`|^(\w+)/.match(node.content) | |
| 60 | + entry_name = match[1] || match[2] | |
| 61 | + | |
| 59 | 62 | entry_id = slug + node['href'] |
| 60 | − entries << [entry_name, entry_id, name] | |
| 63 | + entries << ["#{entry_name} (#{name})", entry_id, name] | |
| 61 | 64 | end |
| 62 | 65 | |
| 63 | 66 | end |
| @@ -12,6 +12,7 @@ module Docs · 11 unmodified lines | ||
| 12 | 12 | end |
| 13 | 13 | |
| 14 | 14 | css('.header .sub-title', 'hr', '.table-tabs').remove |
| 15 | + css('.copy').remove | |
| 15 | 16 | |
| 16 | 17 | # fix ul section that contains summaries or tables |
| 17 | 18 | css('ul').each do |node| |
| @@ -0,0 +1,29 @@ | ||
| 1 | +module Docs | |
| 2 | + class Playwright | |
| 3 | + class CleanHtmlFilter < Filter | |
| 4 | + def call | |
| 5 | + @doc = at_css('.markdown') | |
| 6 | + | |
| 7 | + css('x-search').remove | |
| 8 | + css('hr').remove | |
| 9 | + css('font:contains("Added in")').remove | |
| 10 | + css('.list-anchor').remove | |
| 11 | + | |
| 12 | + css('.alert').each do |node| | |
| 13 | + node.name = 'blockquote' | |
| 14 | + end | |
| 15 | + | |
| 16 | + css('pre').each do |node| | |
| 17 | + node.content = node.css('.token-line').map(&:content).join("\n") | |
| 18 | + node.remove_attribute('style') | |
| 19 | + node['data-language'] = node.content =~ /\A\s*</ ? 'html' : 'javascript' | |
| 20 | + node.ancestors('.theme-code-block').first.replace(node) | |
| 21 | + end | |
| 22 | + | |
| 23 | + css('*[class]').remove_attribute('class') | |
| 24 | + | |
| 25 | + doc | |
| 26 | + end | |
| 27 | + end | |
| 28 | + end | |
| 29 | +end | |
| @@ -0,0 +1,23 @@ | ||
| 1 | +module Docs | |
| 2 | + class Playwright | |
| 3 | + class EntriesFilter < Docs::EntriesFilter | |
| 4 | + def get_name | |
| 5 | + at_css('h1').children.select(&:text?).map(&:content).join.strip | |
| 6 | + end | |
| 7 | + | |
| 8 | + def type | |
| 9 | + type = at_css('.menu__link--active').content | |
| 10 | + return "#{type}: #{name}" if slug.starts_with?('api/') | |
| 11 | + type | |
| 12 | + end | |
| 13 | + | |
| 14 | + def additional_entries | |
| 15 | + css('x-search').each_with_object [] do |node, entries| | |
| 16 | + prev = node.previous_element | |
| 17 | + prev = prev.previous_element until prev['id'] | |
| 18 | + entries << [node.text, prev['id']] | |
| 19 | + end | |
| 20 | + end | |
| 21 | + end | |
| 22 | + end | |
| 23 | +end | |
| @@ -1,57 +1,115 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Pytorch |
| 3 | 3 | class EntriesFilter < Docs::EntriesFilter |
| 4 | − NAME_REPLACEMENTS = { | |
| 5 | − "Distributed communication package - torch.distributed" => "torch.distributed" | |
| 4 | + TYPE_REPLACEMENTS = { | |
| 5 | + "torch.Tensor" => "Tensor", | |
| 6 | + "torch.nn" => "Neuro Network", | |
| 7 | + "Probability distributions - torch.distributions" => "Probability Distributions", | |
| 8 | + "torch" => "Torch", | |
| 9 | + "Quantization" => "Quantization", | |
| 10 | + "torch.optim" => "Optimization", | |
| 11 | + "torch.Storage" => "Storage", | |
| 12 | + "torch.nn.functional" => "NN Functions", | |
| 13 | + "torch.cuda" => "CUDA", | |
| 14 | + "Torch Distributed Elastic" => "Distributed Elastic", | |
| 15 | + "torch.fx" => "FX", | |
| 16 | + "TorchScript" => "Torch Script", | |
| 17 | + "torch.onnx" => "ONNX", | |
| 18 | + "Distributed communication package - torch.distributed" => "Distributed Communication", | |
| 19 | + "Automatic differentiation package - torch.autograd" => "Automatic Differentiation", | |
| 20 | + "torch.linalg" => "Linear Algebra", | |
| 21 | + "Distributed Checkpoint - torch.distributed.checkpoint" => "Distributed Checkpoint", | |
| 22 | + "Distributed RPC Framework" => "Distributed RPC", | |
| 23 | + "torch.special" => "SciPy-like Special", | |
| 24 | + "torch.package" => "Package", | |
| 25 | + "torch.backends" => "Backends", | |
| 26 | + "FullyShardedDataParallel" => "Fully Sharded Data Parallel", | |
| 27 | + "torch.sparse" => "Sparse Tensors", | |
| 28 | + "torch.export" => "Traced Graph Export", | |
| 29 | + "torch.fft" => "Discrete Fourier Transforms", | |
| 30 | + "torch.utils.data" => "Datasets and Data Loaders", | |
| 31 | + "torch.monitor" => "Monitor", | |
| 32 | + "Automatic Mixed Precision package - torch.amp" => "Automatic Mixed Precision", | |
| 33 | + "torch.utils.tensorboard" => "Tensorboard", | |
| 34 | + "torch.profiler" => "Profiler", | |
| 35 | + "torch.mps" => "MPS", | |
| 36 | + "DDP Communication Hooks" => "DDP Communication Hooks", | |
| 37 | + "Benchmark Utils - torch.utils.benchmark" => "Benchmark Utils", | |
| 38 | + "torch.nn.init" => "Parameter Initializations", | |
| 39 | + "Tensor Parallelism - torch.distributed.tensor.parallel" => "Tensor Parallelism", | |
| 40 | + "torch.func" => "JAX-like Function Transforms", | |
| 41 | + "Distributed Optimizers" => "Distributed Optimizers", | |
| 42 | + "torch.signal" => "SciPy-like Signal", | |
| 43 | + "torch.futures" => "Miscellaneous", | |
| 44 | + "torch.utils.cpp_extension" => "Miscellaneous", | |
| 45 | + "torch.overrides" => "Miscellaneous", | |
| 46 | + "Generic Join Context Manager" => "Miscellaneous", | |
| 47 | + "torch.hub" => "Miscellaneous", | |
| 48 | + "torch.cpu" => "Miscellaneous", | |
| 49 | + "torch.random" => "Miscellaneous", | |
| 50 | + "torch.compiler" => "Miscellaneous", | |
| 51 | + "Pipeline Parallelism" => "Miscellaneous", | |
| 52 | + "Named Tensors" => "Miscellaneous", | |
| 53 | + "Multiprocessing package - torch.multiprocessing" => "Miscellaneous", | |
| 54 | + "torch.utils" => "Miscellaneous", | |
| 55 | + "torch.library" => "Miscellaneous", | |
| 56 | + "Tensor Attributes" => "Miscellaneous", | |
| 57 | + "torch.testing" => "Miscellaneous", | |
| 58 | + "torch.nested" => "Miscellaneous", | |
| 59 | + "Understanding CUDA Memory Usage" => "Miscellaneous", | |
| 60 | + "torch.utils.dlpack" => "Miscellaneous", | |
| 61 | + "torch.utils.checkpoint" => "Miscellaneous", | |
| 62 | + "torch.__config__" => "Miscellaneous", | |
| 63 | + "Type Info" => "Miscellaneous", | |
| 64 | + "torch.utils.model_zoo" => "Miscellaneous", | |
| 65 | + "torch.utils.mobile_optimizer" => "Miscellaneous", | |
| 66 | + "torch._logging" => "Miscellaneous", | |
| 67 | + "torch.masked" => "Miscellaneous", | |
| 68 | + "torch.utils.bottleneck" => "Miscellaneous" | |
| 6 | 69 | } |
| 7 | 70 | |
| 8 | − def get_breadcrumbs() | |
| 9 | − css('.pytorch-breadcrumbs > li').map { |node| node.content.delete_suffix(' >') } | |
| 71 | + def get_breadcrumbs | |
| 72 | + css('.pytorch-breadcrumbs > li').map { | |
| 73 | + |node| node.content.delete_suffix(' >').strip | |
| 74 | + }.reject { |item| item.nil? || item.empty? } | |
| 10 | 75 | end |
| 11 | 76 | |
| 12 | 77 | def get_name |
| 13 | − # The id of the container `div.section` indicates the page type. | |
| 14 | − # If the id starts with `module-`, then it's an API reference, | |
| 15 | − # otherwise it is a note or design doc. | |
| 16 | − section_id = at_css('.section[id], section[id]')['id'] | |
| 17 | − if section_id.starts_with? 'module-' | |
| 18 | − section_id.remove('module-') | |
| 19 | − else | |
| 20 | − name = get_breadcrumbs()[1] | |
| 21 | − NAME_REPLACEMENTS.fetch(name, name) | |
| 22 | − end | |
| 78 | + b = get_breadcrumbs | |
| 79 | + b[(b[1] == 'torch' ? 2 : 1)..].join('.') | |
| 23 | 80 | end |
| 24 | 81 | |
| 25 | 82 | def get_type |
| 26 | − name | |
| 83 | + t = get_breadcrumbs[1] | |
| 84 | + TYPE_REPLACEMENTS.fetch(t, t) | |
| 27 | 85 | end |
| 28 | 86 | |
| 29 | 87 | def include_default_entry? |
| 30 | − # Only include API references, and ignore notes or design docs | |
| 31 | − !subpath.start_with? 'generated/' and type.start_with? 'torch' | |
| 88 | + # Only include API entries to simplify and unify the list | |
| 89 | + return name.start_with?('torch.') | |
| 32 | 90 | end |
| 33 | 91 | |
| 34 | 92 | def additional_entries |
| 35 | 93 | return [] if root_page? |
| 36 | 94 | |
| 37 | 95 | entries = [] |
| 38 | − | |
| 39 | − css('dt').each do |node| | |
| 40 | − name = node['id'] | |
| 41 | − if name == self.name or name == nil | |
| 96 | + css('dl').each do |node| | |
| 97 | + dt = node.at_css('dt') | |
| 98 | + if dt == nil | |
| 99 | + next | |
| 100 | + end | |
| 101 | + id = dt['id'] | |
| 102 | + if id == name or id == nil | |
| 42 | 103 | next |
| 43 | 104 | end |
| 44 | 105 | |
| 45 | − case node.parent['class'] | |
| 46 | − when 'method', 'function' | |
| 47 | − if node.at_css('code').content.starts_with? 'property ' | |
| 48 | − # this instance method is a property, so treat it as an attribute | |
| 49 | − entries << [name, node['id']] | |
| 50 | − else | |
| 51 | − entries << [name + '()', node['id']] | |
| 52 | − end | |
| 53 | − when 'class', 'attribute' | |
| 54 | − entries << [name, node['id']] | |
| 106 | + case node['class'] | |
| 107 | + when 'py method', 'py function' | |
| 108 | + entries << [id + '()', id] | |
| 109 | + when 'py class', 'py attribute', 'py property' | |
| 110 | + entries << [id, id] | |
| 111 | + when 'footnote brackets', 'field-list simple' | |
| 112 | + next | |
| 55 | 113 | end |
| 56 | 114 | end |
| 57 | 115 | |
| @@ -4,12 +4,14 @@ module Docs · 3 unmodified lines | ||
| 4 | 4 | def get_name |
| 5 | 5 | name = at_css('h1').content |
| 6 | 6 | name.sub! %r{\s*#\s*}, '' |
| 7 | + name.sub! %r{\s*\u200B\s*}, '' | |
| 7 | 8 | name |
| 8 | 9 | end |
| 9 | 10 | |
| 10 | 11 | def get_type |
| 11 | 12 | name = at_css('h1').content |
| 12 | 13 | name.sub! %r{\s*#\s*}, '' |
| 14 | + name.sub! %r{\s*\u200B\s*}, '' | |
| 13 | 15 | name |
| 14 | 16 | end |
| 15 | 17 | |
| @@ -34,6 +34,11 @@ module Docs · 33 unmodified lines | ||
| 34 | 34 | Licensed under the BSD License. |
| 35 | 35 | HTML |
| 36 | 36 | |
| 37 | + version '5.0' do | |
| 38 | + self.release = '5.0' | |
| 39 | + self.base_url = "https://docs.djangoproject.com/en/#{self.version}/" | |
| 40 | + end | |
| 41 | + | |
| 37 | 42 | version '4.2' do |
| 38 | 43 | self.release = '4.2' |
| 39 | 44 | self.base_url = "https://docs.djangoproject.com/en/#{self.version}/" |
| @@ -16,7 +16,7 @@ module Docs · 15 unmodified lines | ||
| 16 | 16 | Licensed under the MIT License. |
| 17 | 17 | HTML |
| 18 | 18 | |
| 19 | − self.release = '0.19.11' | |
| 19 | + self.release = '0.20.0' | |
| 20 | 20 | self.base_url = 'https://esbuild.github.io/' |
| 21 | 21 | html_filters.push 'esbuild/clean_html', 'esbuild/entries' |
| 22 | 22 | |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Git < UrlScraper |
| 3 | 3 | self.type = 'git' |
| 4 | − self.release = '2.42.0' | |
| 4 | + self.release = '2.43.1' | |
| 5 | 5 | self.base_url = 'https://git-scm.com/docs' |
| 6 | 6 | self.initial_paths = %w(/git.html) |
| 7 | 7 | self.links = { |
| @@ -16,7 +16,7 @@ module Docs · 8 unmodified lines | ||
| 16 | 16 | options[:skip] = %w(/howto-index.html) |
| 17 | 17 | |
| 18 | 18 | options[:attribution] = <<-HTML |
| 19 | − © 2012–2023 Scott Chacon and others<br> | |
| 19 | + © 2012–2024 Scott Chacon and others<br> | |
| 20 | 20 | Licensed under the MIT License. |
| 21 | 21 | HTML |
| 22 | 22 | |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Go < UrlScraper |
| 3 | 3 | self.type = 'go' |
| 4 | − self.release = '1.21.5' | |
| 4 | + self.release = '1.22.0' | |
| 5 | 5 | self.base_url = 'https://golang.org/pkg/' |
| 6 | 6 | self.links = { |
| 7 | 7 | home: 'https://golang.org/', |
| @@ -20,6 +20,11 @@ module Docs · 19 unmodified lines | ||
| 20 | 20 | Licensed under the GNU General Public License version 2. |
| 21 | 21 | HTML |
| 22 | 22 | |
| 23 | + version '2.9' do | |
| 24 | + self.release = '2.9.0' | |
| 25 | + self.base_url = "https://docs.haproxy.org/#{self.version}/" | |
| 26 | + end | |
| 27 | + | |
| 23 | 28 | version '2.8' do |
| 24 | 29 | self.release = '2.8.0' |
| 25 | 30 | self.base_url = "https://docs.haproxy.org/#{self.version}/" |
| @@ -0,0 +1,35 @@ | ||
| 1 | +module Docs | |
| 2 | + class Htmx < UrlScraper | |
| 3 | + self.name = 'htmx' | |
| 4 | + self.type = 'simple' | |
| 5 | + self.slug = 'htmx' | |
| 6 | + self.links = { | |
| 7 | + home: 'https://htmx.org/', | |
| 8 | + code: 'https://github.com/bigskysoftware/htmx' | |
| 9 | + } | |
| 10 | + self.release = '1.9.10' | |
| 11 | + self.base_url = "https://htmx.org/" | |
| 12 | + self.initial_paths = %w(reference/) | |
| 13 | + | |
| 14 | + html_filters.push 'htmx/entries', 'htmx/clean_html' | |
| 15 | + | |
| 16 | + options[:trailing_slash] = true | |
| 17 | + options[:container] = '.content' | |
| 18 | + options[:download_images] = false | |
| 19 | + options[:skip_patterns] = [ | |
| 20 | + /\Aessays/, | |
| 21 | + /\Aexamples/, | |
| 22 | + /\Amigration-guide/, | |
| 23 | + /\Aposts/, | |
| 24 | + ] | |
| 25 | + | |
| 26 | + # https://github.com/bigskysoftware/htmx/blob/master/LICENSE | |
| 27 | + options[:attribution] = <<-HTML | |
| 28 | + Licensed under the Zero-Clause BSD License. | |
| 29 | + HTML | |
| 30 | + | |
| 31 | + def get_latest_version(opts) | |
| 32 | + get_npm_version('htmx.org', opts) | |
| 33 | + end | |
| 34 | + end | |
| 35 | +end | |
| @@ -20,15 +20,35 @@ module Docs · 19 unmodified lines | ||
| 20 | 20 | |
| 21 | 21 | # latest version has a special URL that does not include the version identifier |
| 22 | 22 | version do |
| 23 | − self.release = "1.26" | |
| 23 | + self.release = "1.29" | |
| 24 | 24 | self.base_url = "https://kubernetes.io/docs/reference/kubernetes-api/" |
| 25 | 25 | end |
| 26 | 26 | |
| 27 | − version '1.20' do | |
| 27 | + version '1.28' do | |
| 28 | 28 | self.release = "#{version}" |
| 29 | 29 | self.base_url = "https://v#{version.sub('.', '-')}.docs.kubernetes.io/docs/reference/kubernetes-api/" |
| 30 | 30 | end |
| 31 | 31 | |
| 32 | + version '1.27' do | |
| 33 | + self.release = "#{version}" | |
| 34 | + self.base_url = "https://v#{version.sub('.', '-')}.docs.kubernetes.io/docs/reference/kubernetes-api/" | |
| 35 | + end | |
| 36 | + | |
| 37 | + version '1.26' do | |
| 38 | + self.release = "#{version}" | |
| 39 | + self.base_url = "https://v#{version.sub('.', '-')}.docs.kubernetes.io/docs/reference/kubernetes-api/" | |
| 40 | + end | |
| 41 | + | |
| 42 | + version '1.25' do | |
| 43 | + self.release = "#{version}" | |
| 44 | + self.base_url = "https://v#{version.sub('.', '-')}.docs.kubernetes.io/docs/reference/kubernetes-api/" | |
| 45 | + end | |
| 46 | + | |
| 47 | + version '1.24' do | |
| 48 | + self.release = "#{version}" | |
| 49 | + self.base_url = "https://v#{version.sub('.', '-')}.docs.kubernetes.io/docs/reference/kubernetes-api/" | |
| 50 | + end | |
| 51 | + | |
| 32 | 52 | def get_latest_version(opts) |
| 33 | 53 | get_latest_github_release('kubernetes', 'kubernetes', opts) |
| 34 | 54 | end |
| @@ -1,7 +1,6 @@ | ||
| 1 | 1 | module Docs |
| 2 | 2 | class Nim < UrlScraper |
| 3 | 3 | self.type = 'simple' |
| 4 | − self.release = '1.4.8' | |
| 5 | 4 | self.base_url = 'https://nim-lang.org/docs/' |
| 6 | 5 | self.root_path = 'overview.html' |
| 7 | 6 | self.links = { |
| @@ -14,10 +13,18 @@ module Docs · 6 unmodified lines | ||
| 14 | 13 | options[:skip] = %w(theindex.html docgen.html tut1.html tut2.html tut3.html tools.html) |
| 15 | 14 | |
| 16 | 15 | options[:attribution] = <<-HTML |
| 17 | − © 2006–2021 Andreas Rumpf<br> | |
| 16 | + © 2006–2024 Andreas Rumpf<br> | |
| 18 | 17 | Licensed under the MIT License. |
| 19 | 18 | HTML |
| 20 | 19 | |
| 20 | + version do | |
| 21 | + self.release = '2.0.2' | |
| 22 | + end | |
| 23 | + | |
| 24 | + version '1' do | |
| 25 | + self.release = '1.4.8' | |
| 26 | + end | |
| 27 | + | |
| 21 | 28 | def get_latest_version(opts) |
| 22 | 29 | doc = fetch_doc('https://nim-lang.org/docs/overview.html', opts) |
| 23 | 30 | doc.at_css('.container > .docinfo > tbody > tr:last-child > td').content.strip |
| @@ -0,0 +1,27 @@ | ||
| 1 | +module Docs | |
| 2 | + class Playwright < UrlScraper | |
| 3 | + self.name = 'Playwright' | |
| 4 | + self.type = 'simple' | |
| 5 | + self.release = '1.41.1' | |
| 6 | + self.base_url = 'https://playwright.dev/docs/' | |
| 7 | + self.root_path = 'intro' | |
| 8 | + self.links = { | |
| 9 | + home: 'https://playwright.dev/', | |
| 10 | + code: 'https://github.com/microsoft/playwright' | |
| 11 | + } | |
| 12 | + | |
| 13 | + # Docusaurus like react_native | |
| 14 | + html_filters.push 'playwright/entries', 'playwright/clean_html' | |
| 15 | + options[:download_images] = false | |
| 16 | + | |
| 17 | + # https://github.com/microsoft/playwright/blob/main/LICENSE | |
| 18 | + options[:attribution] = <<-HTML | |
| 19 | + © 2024 Microsoft<br> | |
| 20 | + Licensed under the Apache License, Version 2.0. | |
| 21 | + HTML | |
| 22 | + | |
| 23 | + def get_latest_version(opts) | |
| 24 | + get_npm_version('@playwright/test', opts) | |
| 25 | + end | |
| 26 | + end | |
| 27 | +end | |
| @@ -3,7 +3,6 @@ module Docs · 2 unmodified lines | ||
| 3 | 3 | self.name = 'PyTorch' |
| 4 | 4 | self.slug = 'pytorch' |
| 5 | 5 | self.type = 'sphinx' |
| 6 | − self.force_gzip = true | |
| 7 | 6 | self.links = { |
| 8 | 7 | home: 'https://pytorch.org/', |
| 9 | 8 | code: 'https://github.com/pytorch/pytorch' |
| @@ -11,13 +10,12 @@ module Docs · 1 unmodified line | ||
| 11 | 10 | |
| 12 | 11 | html_filters.push 'pytorch/entries', 'pytorch/clean_html', 'sphinx/clean_html' |
| 13 | 12 | |
| 14 | − options[:skip] = ['cpp_index.html', 'packages.html', 'py-modindex.html', 'genindex.html'] | |
| 13 | + options[:skip] = ['cpp_index.html', 'deploy.html', 'packages.html', 'py-modindex.html', 'genindex.html'] | |
| 15 | 14 | options[:skip_patterns] = [/\Acommunity/, /\A_modules/, /\Anotes/, /\Aorg\/pytorch\//] |
| 16 | − options[:max_image_size] = 256_000 | |
| 17 | 15 | |
| 18 | 16 | options[:attribution] = <<-HTML |
| 19 | − © 2019-2024 Torch Contributors<br> | |
| 20 | − Licensed under the 3-clause BSD License. | |
| 17 | + © 2024, PyTorch Contributors<br> | |
| 18 | + PyTorch has a BSD-style license, as found in the <a href="https://github.com/pytorch/pytorch/blob/main/LICENSE">LICENSE</a> file. | |
| 21 | 19 | HTML |
| 22 | 20 | |
| 23 | 21 | version '2' do |
| @@ -2,7 +2,7 @@ module Docs · 1 unmodified line | ||
| 2 | 2 | class Sqlite < UrlScraper |
| 3 | 3 | self.name = 'SQLite' |
| 4 | 4 | self.type = 'sqlite' |
| 5 | − self.release = '3.44.2' | |
| 5 | + self.release = '3.45.1' | |
| 6 | 6 | self.base_url = 'https://sqlite.org/' |
| 7 | 7 | self.root_path = 'docs.html' |
| 8 | 8 | self.initial_paths = %w(keyword_index.html) |
| @@ -9,6 +9,7 @@ module Docs · 8 unmodified lines | ||
| 9 | 9 | } |
| 10 | 10 | |
| 11 | 11 | options[:root_title] = 'Vitest' |
| 12 | + options[:download_images] = false | |
| 12 | 13 | |
| 13 | 14 | options[:attribution] = <<-HTML |
| 14 | 15 | © 2021-Present Anthony Fu<br> |
| @@ -16,7 +17,7 @@ module Docs · 1 unmodified line | ||
| 16 | 17 | Licensed under the MIT License. |
| 17 | 18 | HTML |
| 18 | 19 | |
| 19 | − self.release = '1.1.3' | |
| 20 | + self.release = '1.2.2' | |
| 20 | 21 | self.base_url = 'https://vitest.dev/' |
| 21 | 22 | self.initial_paths = %w(guide/) |
| 22 | 23 | html_filters.push 'vitest/entries', 'vite/clean_html' |
Binary file not shown.
Binary file not shown.
| @@ -0,0 +1 @@ | ||
| 1 | +https://github.com/bigskysoftware/htmx/blob/v1.9.10/www/static/img/htmx_logo.2.png | |
Binary file not shown.
Binary file not shown.
| @@ -0,0 +1 @@ | ||
| 1 | +https://playwright.dev/img/playwright-logo.svg | |
| @@ -0,0 +1,189 @@ | ||
| 1 | +<!-- | |
| 2 | +<--- Readme.md Snippet without images Start ---> | |
| 3 | +## Tech Stack | |
| 4 | +freeCodeCamp/devdocs is built on the following main stack: | |
| 5 | + | |
| 6 | +- [New Relic](http://newrelic.com) – Performance Monitoring | |
| 7 | +- [Ruby](https://www.ruby-lang.org) – Languages | |
| 8 | +- [Sinatra](http://www.sinatrarb.com/) – Microframeworks (Backend) | |
| 9 | +- [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript) – Languages | |
| 10 | +- [Capybara](http://jnicklas.github.io/capybara/) – Testing Frameworks | |
| 11 | +- [GitHub Actions](https://github.com/features/actions) – Continuous Integration | |
| 12 | +- [Docker](https://www.docker.com/) – Virtual Machine Platforms & Containers | |
| 13 | + | |
| 14 | +Full tech stack [here](/techstack.md) | |
| 15 | + | |
| 16 | +<--- Readme.md Snippet without images End ---> | |
| 17 | + | |
| 18 | +<--- Readme.md Snippet with images Start ---> | |
| 19 | +## Tech Stack | |
| 20 | +freeCodeCamp/devdocs is built on the following main stack: | |
| 21 | + | |
| 22 | +- <img width='25' height='25' src='https://img.stackshare.io/service/103/default_193410db3a7e419c7b436961bf41d733c7346b59.png' alt='New Relic'/> [New Relic](http://newrelic.com) – Performance Monitoring | |
| 23 | +- <img width='25' height='25' src='https://img.stackshare.io/service/989/ruby.png' alt='Ruby'/> [Ruby](https://www.ruby-lang.org) – Languages | |
| 24 | +- <img width='25' height='25' src='https://img.stackshare.io/service/999/logo.png' alt='Sinatra'/> [Sinatra](http://www.sinatrarb.com/) – Microframeworks (Backend) | |
| 25 | +- <img width='25' height='25' src='https://img.stackshare.io/service/1209/javascript.jpeg' alt='JavaScript'/> [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript) – Languages | |
| 26 | +- <img width='25' height='25' src='https://img.stackshare.io/service/2595/capybara.png' alt='Capybara'/> [Capybara](http://jnicklas.github.io/capybara/) – Testing Frameworks | |
| 27 | +- <img width='25' height='25' src='https://img.stackshare.io/service/11563/actions.png' alt='GitHub Actions'/> [GitHub Actions](https://github.com/features/actions) – Continuous Integration | |
| 28 | +- <img width='25' height='25' src='https://img.stackshare.io/service/586/n4u37v9t_400x400.png' alt='Docker'/> [Docker](https://www.docker.com/) – Virtual Machine Platforms & Containers | |
| 29 | + | |
| 30 | +Full tech stack [here](/techstack.md) | |
| 31 | + | |
| 32 | +<--- Readme.md Snippet with images End ---> | |
| 33 | +--> | |
| 34 | +<div align="center"> | |
| 35 | + | |
| 36 | +# Tech Stack File | |
| 37 | + [freeCodeCamp/devdocs](https://github.com/freeCodeCamp/devdocs) | |
| 38 | +<br/><br/> | |
| 39 | +|43<br/>Tools used|01/27/24 <br/>Report generated| | |
| 40 | +|------|------| | |
| 41 | +</div> | |
| 42 | + | |
| 43 | +## <img src='https://img.stackshare.io/languages.svg'/> Languages (3) | |
| 44 | +<table><tr> | |
| 45 | + <td align='center'> | |
| 46 | + <img width='36' height='36' src='https://img.stackshare.io/service/6727/css.png' alt='CSS 3'> | |
| 47 | + <br> | |
| 48 | + <sub><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS3">CSS 3</a></sub> | |
| 49 | + <br> | |
| 50 | + <sub></sub> | |
| 51 | +</td> | |
| 52 | + | |
| 53 | +<td align='center'> | |
| 54 | + <img width='36' height='36' src='https://img.stackshare.io/service/1209/javascript.jpeg' alt='JavaScript'> | |
| 55 | + <br> | |
| 56 | + <sub><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript">JavaScript</a></sub> | |
| 57 | + <br> | |
| 58 | + <sub></sub> | |
| 59 | +</td> | |
| 60 | + | |
| 61 | +<td align='center'> | |
| 62 | + <img width='36' height='36' src='https://img.stackshare.io/service/989/ruby.png' alt='Ruby'> | |
| 63 | + <br> | |
| 64 | + <sub><a href="https://www.ruby-lang.org">Ruby</a></sub> | |
| 65 | + <br> | |
| 66 | + <sub>v3.3.0</sub> | |
| 67 | +</td> | |
| 68 | + | |
| 69 | +</tr> | |
| 70 | +</table> | |
| 71 | + | |
| 72 | +## <img src='https://img.stackshare.io/frameworks.svg'/> Frameworks (1) | |
| 73 | +<table><tr> | |
| 74 | + <td align='center'> | |
| 75 | + <img width='36' height='36' src='https://img.stackshare.io/service/999/logo.png' alt='Sinatra'> | |
| 76 | + <br> | |
| 77 | + <sub><a href="http://www.sinatrarb.com/">Sinatra</a></sub> | |
| 78 | + <br> | |
| 79 | + <sub></sub> | |
| 80 | +</td> | |
| 81 | + | |
| 82 | +</tr> | |
| 83 | +</table> | |
| 84 | + | |
| 85 | +## <img src='https://img.stackshare.io/devops.svg'/> DevOps (7) | |
| 86 | +<table><tr> | |
| 87 | + <td align='center'> | |
| 88 | + <img width='36' height='36' src='https://img.stackshare.io/service/2595/capybara.png' alt='Capybara'> | |
| 89 | + <br> | |
| 90 | + <sub><a href="http://jnicklas.github.io/capybara/">Capybara</a></sub> | |
| 91 | + <br> | |
| 92 | + <sub></sub> | |
| 93 | +</td> | |
| 94 | + | |
| 95 | +<td align='center'> | |
| 96 | + <img width='36' height='36' src='https://img.stackshare.io/service/586/n4u37v9t_400x400.png' alt='Docker'> | |
| 97 | + <br> | |
| 98 | + <sub><a href="https://www.docker.com/">Docker</a></sub> | |
| 99 | + <br> | |
| 100 | + <sub></sub> | |
| 101 | +</td> | |
| 102 | + | |
| 103 | +<td align='center'> | |
| 104 | + <img width='36' height='36' src='https://img.stackshare.io/service/1046/git.png' alt='Git'> | |
| 105 | + <br> | |
| 106 | + <sub><a href="http://git-scm.com/">Git</a></sub> | |
| 107 | + <br> | |
| 108 | + <sub></sub> | |
| 109 | +</td> | |
| 110 | + | |
| 111 | +<td align='center'> | |
| 112 | + <img width='36' height='36' src='https://img.stackshare.io/service/11563/actions.png' alt='GitHub Actions'> | |
| 113 | + <br> | |
| 114 | + <sub><a href="https://github.com/features/actions">GitHub Actions</a></sub> | |
| 115 | + <br> | |
| 116 | + <sub></sub> | |
| 117 | +</td> | |
| 118 | + | |
| 119 | +<td align='center'> | |
| 120 | + <img width='36' height='36' src='https://img.stackshare.io/service/103/default_193410db3a7e419c7b436961bf41d733c7346b59.png' alt='New Relic'> | |
| 121 | + <br> | |
| 122 | + <sub><a href="http://newrelic.com">New Relic</a></sub> | |
| 123 | + <br> | |
| 124 | + <sub></sub> | |
| 125 | +</td> | |
| 126 | + | |
| 127 | +<td align='center'> | |
| 128 | + <img width='36' height='36' src='https://img.stackshare.io/service/12795/5jL6-BA5_400x400.jpeg' alt='RubyGems'> | |
| 129 | + <br> | |
| 130 | + <sub><a href="https://rubygems.org/">RubyGems</a></sub> | |
| 131 | + <br> | |
| 132 | + <sub></sub> | |
| 133 | +</td> | |
| 134 | + | |
| 135 | +<td align='center'> | |
| 136 | + <img width='36' height='36' src='https://img.stackshare.io/service/1120/lejvzrnlpb308aftn31u.png' alt='npm'> | |
| 137 | + <br> | |
| 138 | + <sub><a href="https://www.npmjs.com/">npm</a></sub> | |
| 139 | + <br> | |
| 140 | + <sub></sub> | |
| 141 | +</td> | |
| 142 | + | |
| 143 | +</tr> | |
| 144 | +</table> | |
| 145 | + | |
| 146 | + | |
| 147 | +## <img src='https://img.stackshare.io/group.svg' /> Open source packages (32)</h2> | |
| 148 | + | |
| 149 | +## <img width='24' height='24' src='https://img.stackshare.io/service/12795/5jL6-BA5_400x400.jpeg'/> RubyGems (32) | |
| 150 | + | |
| 151 | +|NAME|VERSION|LAST UPDATED|LAST UPDATED BY|LICENSE|VULNERABILITIES| | |
| 152 | +|:------|:------|:------|:------|:------|:------| | |
| 153 | +|[activesupport](https://rubygems.org/activesupport)|v7.1.3|11/14/22|Paul Sernatinger |MIT|N/A| | |
| 154 | +|[better_errors](https://rubygems.org/better_errors)|v2.10.1|10/24/13|Thibaut |MIT|N/A| | |
| 155 | +|[browser](https://rubygems.org/browser)|v5.3.1|11/14/22|Paul Sernatinger |MIT|N/A| | |
| 156 | +|[chunky_png](https://rubygems.org/chunky_png)|v1.4.0|11/14/22|Paul Sernatinger |MIT|N/A| | |
| 157 | +|[erubi](https://rubygems.org/erubi)|v1.12.0|11/14/22|Paul Sernatinger |MIT|N/A| | |
| 158 | +|[html-pipeline](https://rubygems.org/html-pipeline)|v2.14.3|10/21/18|Thibaut Courouble |MIT|N/A| | |
| 159 | +|[image_optim](https://rubygems.org/image_optim)|v0.31.3|11/14/22|Paul Sernatinger |MIT|N/A| | |
| 160 | +|[image_optim_pack](https://rubygems.org/image_optim_pack)|v0.10.1|11/14/22|Paul Sernatinger |MIT|N/A| | |
| 161 | +|[minitest](https://rubygems.org/minitest)|v5.21.2|01/03/15|Thibaut |MIT|N/A| | |
| 162 | +|[net-sftp](https://rubygems.org/net-sftp)|v4.0.0|11/14/22|Paul Sernatinger |MIT|N/A| | |
| 163 | +|[newrelic_rpm](https://rubygems.org/newrelic_rpm)|v8.16.0|03/24/18|Thibaut Courouble |Apache-2.0|N/A| | |
| 164 | +|[nokogiri](https://rubygems.org/nokogiri)|v1.16.0|10/21/18|Thibaut Courouble |MIT|N/A| | |
| 165 | +|[progress_bar](https://rubygems.org/progress_bar)|v1.3.3|01/26/14|Thibaut |WTFPL|N/A| | |
| 166 | +|[pry-byebug](https://rubygems.org/pry-byebug)|v3.10.1|11/14/22|Paul Sernatinger |MIT|N/A| | |
| 167 | +|[rack](https://rubygems.org/rack)|v2.2.8|11/14/22|Paul Sernatinger |MIT|N/A| | |
| 168 | +|[rack-ssl-enforcer](https://rubygems.org/rack-ssl-enforcer)|v0.2.9|11/14/22|Paul Sernatinger |MIT|N/A| | |
| 169 | +|[rack-test](https://rubygems.org/rack-test)|v2.1.0|11/14/22|Paul Sernatinger |MIT|N/A| | |
| 170 | +|[rake](https://rubygems.org/rake)|v13.1.0|11/14/22|Paul Sernatinger |MIT|N/A| | |
| 171 | +|[redcarpet](https://rubygems.org/redcarpet)|v3.6.0|11/14/22|Paul Sernatinger |MIT|N/A| | |
| 172 | +|[rr](https://rubygems.org/rr)|v3.1.0|10/24/13|Thibaut |MIT|N/A| | |
| 173 | +|[sass](https://rubygems.org/sass)|v3.7.4|01/13/24|Simon Legner |MIT|N/A| | |
| 174 | +|[selenium-webdriver](https://rubygems.org/selenium-webdriver)|N/A|01/26/14|Thibaut |Apache-2.0|N/A| | |
| 175 | +|[sinatra-contrib](https://rubygems.org/sinatra-contrib)|v3.2.0|11/14/22|Paul Sernatinger |MIT|N/A| | |
| 176 | +|[sprockets](https://rubygems.org/sprockets)|v3.7.2|01/13/24|Simon Legner |MIT|N/A| | |
| 177 | +|[sprockets-helpers](https://rubygems.org/sprockets-helpers)|v1.4.0|01/13/24|Simon Legner |MIT|N/A| | |
| 178 | +|[sprockets-sass](https://rubygems.org/sprockets-sass)|N/A|01/13/24|Simon Legner |MIT|N/A| | |
| 179 | +|[terminal-table](https://rubygems.org/terminal-table)|v3.0.2|10/11/19|Jasper van Merle |MIT|N/A| | |
| 180 | +|[thin](https://rubygems.org/thin)|v1.8.2|11/14/22|Paul Sernatinger |GPL-2.0+,Ruby|N/A| | |
| 181 | +|[thor](https://rubygems.org/thor)|v1.3.0|11/14/22|Paul Sernatinger |MIT|N/A| | |
| 182 | +|[tty-pager](https://rubygems.org/tty-pager)|v0.14.0|01/24/16|Thibaut Courouble |MIT|N/A| | |
| 183 | +|[typhoeus](https://rubygems.org/typhoeus)|v1.4.1|11/14/22|Paul Sernatinger |MIT|N/A| | |
| 184 | +|[yajl-ruby](https://rubygems.org/yajl-ruby)|v1.4.3|01/09/24|Nicholas La Roux |MIT|N/A| | |
| 185 | + | |
| 186 | +<br/> | |
| 187 | +<div align='center'> | |
| 188 | + | |
| 189 | +Generated via [Stack File](https://github.com/marketplace/stack-file) | |
| @@ -0,0 +1,597 @@ | ||
| 1 | +repo_name: freeCodeCamp/devdocs | |
| 2 | +report_id: 281e8991a46b88702952b7b18dd5e2b0 | |
| 3 | +version: 0.1 | |
| 4 | +repo_type: Public | |
| 5 | +timestamp: '2024-01-27T03:50:22+00:00' | |
| 6 | +requested_by: renovate[bot] | |
| 7 | +provider: github | |
| 8 | +branch: main | |
| 9 | +detected_tools_count: 43 | |
| 10 | +tools: | |
| 11 | +- name: CSS 3 | |
| 12 | + description: The latest evolution of the Cascading Style Sheets language | |
| 13 | + website_url: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS3 | |
| 14 | + open_source: true | |
| 15 | + hosted_saas: false | |
| 16 | + category: Languages & Frameworks | |
| 17 | + sub_category: Languages | |
| 18 | + image_url: https://img.stackshare.io/service/6727/css.png | |
| 19 | + detection_source_url: https://github.com/freeCodeCamp/devdocs | |
| 20 | + detection_source: Repo Metadata | |
| 21 | +- name: JavaScript | |
| 22 | + description: Lightweight, interpreted, object-oriented language with first-class | |
| 23 | + functions | |
| 24 | + website_url: https://developer.mozilla.org/en-US/docs/Web/JavaScript | |
| 25 | + open_source: true | |
| 26 | + hosted_saas: false | |
| 27 | + category: Languages & Frameworks | |
| 28 | + sub_category: Languages | |
| 29 | + image_url: https://img.stackshare.io/service/1209/javascript.jpeg | |
| 30 | + detection_source_url: https://github.com/freeCodeCamp/devdocs | |
| 31 | + detection_source: Repo Metadata | |
| 32 | +- name: Ruby | |
| 33 | + description: A dynamic, interpreted, open source programming language with a focus | |
| 34 | + on simplicity and productivity | |
| 35 | + website_url: https://www.ruby-lang.org | |
| 36 | + version: 3.3.0 | |
| 37 | + open_source: true | |
| 38 | + hosted_saas: false | |
| 39 | + category: Languages & Frameworks | |
| 40 | + sub_category: Languages | |
| 41 | + image_url: https://img.stackshare.io/service/989/ruby.png | |
| 42 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 43 | + detection_source: Repo Metadata | |
| 44 | + last_updated_by: Thibaut | |
| 45 | + last_updated_on: 2013-10-24 18:25:52.000000000 Z | |
| 46 | +- name: Sinatra | |
| 47 | + description: Classy web-development dressed in a DSL | |
| 48 | + website_url: http://www.sinatrarb.com/ | |
| 49 | + license: MIT | |
| 50 | + open_source: true | |
| 51 | + hosted_saas: false | |
| 52 | + category: Languages & Frameworks | |
| 53 | + sub_category: Microframeworks (Backend) | |
| 54 | + image_url: https://img.stackshare.io/service/999/logo.png | |
| 55 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile | |
| 56 | + detection_source: Gemfile | |
| 57 | + last_updated_by: Paul Sernatinger | |
| 58 | + last_updated_on: 2022-11-14 14:30:30.000000000 Z | |
| 59 | +- name: Capybara | |
| 60 | + description: Acceptance test framework for web applications | |
| 61 | + website_url: http://jnicklas.github.io/capybara/ | |
| 62 | + license: MIT | |
| 63 | + open_source: true | |
| 64 | + hosted_saas: false | |
| 65 | + category: Build, Test, Deploy | |
| 66 | + sub_category: Testing Frameworks | |
| 67 | + image_url: https://img.stackshare.io/service/2595/capybara.png | |
| 68 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile | |
| 69 | + detection_source: Gemfile | |
| 70 | + last_updated_by: Thibaut | |
| 71 | + last_updated_on: 2014-01-26 21:01:54.000000000 Z | |
| 72 | +- name: Docker | |
| 73 | + description: Enterprise Container Platform for High-Velocity Innovation. | |
| 74 | + website_url: https://www.docker.com/ | |
| 75 | + license: Apache-2.0 | |
| 76 | + open_source: true | |
| 77 | + hosted_saas: false | |
| 78 | + category: Build, Test, Deploy | |
| 79 | + sub_category: Virtual Machine Platforms & Containers | |
| 80 | + image_url: https://img.stackshare.io/service/586/n4u37v9t_400x400.png | |
| 81 | + detection_source_url: https://github.com/freeCodeCamp/devdocs | |
| 82 | + detection_source: Repo Metadata | |
| 83 | +- name: Git | |
| 84 | + description: Fast, scalable, distributed revision control system | |
| 85 | + website_url: http://git-scm.com/ | |
| 86 | + open_source: true | |
| 87 | + hosted_saas: false | |
| 88 | + category: Build, Test, Deploy | |
| 89 | + sub_category: Version Control System | |
| 90 | + image_url: https://img.stackshare.io/service/1046/git.png | |
| 91 | + detection_source_url: https://github.com/freeCodeCamp/devdocs | |
| 92 | + detection_source: Repo Metadata | |
| 93 | +- name: GitHub Actions | |
| 94 | + description: Automate your workflow from idea to production | |
| 95 | + website_url: https://github.com/features/actions | |
| 96 | + open_source: false | |
| 97 | + hosted_saas: true | |
| 98 | + category: Build, Test, Deploy | |
| 99 | + sub_category: Continuous Integration | |
| 100 | + image_url: https://img.stackshare.io/service/11563/actions.png | |
| 101 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/.github/workflows/build.yml | |
| 102 | + detection_source: ".github/workflows/build.yml" | |
| 103 | + last_updated_by: renovate[bot] | |
| 104 | + last_updated_on: 2023-03-25 01:01:01.000000000 Z | |
| 105 | +- name: New Relic | |
| 106 | + description: New Relic is the industry’s largest and most comprehensive cloud-based | |
| 107 | + observability platform. | |
| 108 | + website_url: http://newrelic.com | |
| 109 | + open_source: false | |
| 110 | + hosted_saas: true | |
| 111 | + category: Monitoring | |
| 112 | + sub_category: Performance Monitoring | |
| 113 | + image_url: https://img.stackshare.io/service/103/default_193410db3a7e419c7b436961bf41d733c7346b59.png | |
| 114 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile | |
| 115 | + detection_source: Gemfile | |
| 116 | + last_updated_by: Thibaut Courouble | |
| 117 | + last_updated_on: 2018-03-24 19:06:19.000000000 Z | |
| 118 | +- name: RubyGems | |
| 119 | + description: Easily download, install, and use ruby software packages on your system | |
| 120 | + website_url: https://rubygems.org/ | |
| 121 | + open_source: false | |
| 122 | + hosted_saas: false | |
| 123 | + category: Build, Test, Deploy | |
| 124 | + sub_category: Package Managers | |
| 125 | + image_url: https://img.stackshare.io/service/12795/5jL6-BA5_400x400.jpeg | |
| 126 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile | |
| 127 | + detection_source: Gemfile | |
| 128 | + last_updated_by: Thibaut | |
| 129 | + last_updated_on: 2013-10-24 18:25:52.000000000 Z | |
| 130 | +- name: npm | |
| 131 | + description: The package manager for JavaScript. | |
| 132 | + website_url: https://www.npmjs.com/ | |
| 133 | + open_source: false | |
| 134 | + hosted_saas: false | |
| 135 | + category: Build, Test, Deploy | |
| 136 | + sub_category: Front End Package Manager | |
| 137 | + image_url: https://img.stackshare.io/service/1120/lejvzrnlpb308aftn31u.png | |
| 138 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile | |
| 139 | + detection_source: Gemfile | |
| 140 | + last_updated_by: Thibaut | |
| 141 | + last_updated_on: 2013-10-24 18:25:52.000000000 Z | |
| 142 | +- name: activesupport | |
| 143 | + description: A toolkit of support libraries and Ruby core extensions extracted from | |
| 144 | + the Rails framework | |
| 145 | + package_url: https://rubygems.org/activesupport | |
| 146 | + version: 7.1.3 | |
| 147 | + license: MIT | |
| 148 | + open_source: true | |
| 149 | + hosted_saas: false | |
| 150 | + category: Libraries | |
| 151 | + sub_category: RubyGems Packages | |
| 152 | + image_url: https://img.stackshare.io/package/18817/default_b17f14dbef6c1275120b34d9ec2eff5942499bd5.png | |
| 153 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 154 | + detection_source: Gemfile | |
| 155 | + last_updated_by: Paul Sernatinger | |
| 156 | + last_updated_on: 2022-11-14 14:30:30.000000000 Z | |
| 157 | +- name: better_errors | |
| 158 | + description: Provides a better error page for Rails and other Rack apps | |
| 159 | + package_url: https://rubygems.org/better_errors | |
| 160 | + version: 2.10.1 | |
| 161 | + license: MIT | |
| 162 | + open_source: true | |
| 163 | + hosted_saas: false | |
| 164 | + category: Libraries | |
| 165 | + sub_category: RubyGems Packages | |
| 166 | + image_url: https://img.stackshare.io/package/19224/default_90da4313847baa579409c050c1ebb8de5a6e0fbc.png | |
| 167 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 168 | + detection_source: Gemfile | |
| 169 | + last_updated_by: Thibaut | |
| 170 | + last_updated_on: 2013-10-24 18:25:52.000000000 Z | |
| 171 | +- name: browser | |
| 172 | + description: Do some browser detection with Ruby | |
| 173 | + package_url: https://rubygems.org/browser | |
| 174 | + version: 5.3.1 | |
| 175 | + license: MIT | |
| 176 | + open_source: true | |
| 177 | + hosted_saas: false | |
| 178 | + category: Libraries | |
| 179 | + sub_category: RubyGems Packages | |
| 180 | + image_url: https://img.stackshare.io/package/19740/default_dd31b4f280886d69f8a43459d55ecc7f1ae44486.png | |
| 181 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 182 | + detection_source: Gemfile | |
| 183 | + last_updated_by: Paul Sernatinger | |
| 184 | + last_updated_on: 2022-11-14 14:30:30.000000000 Z | |
| 185 | +- name: chunky_png | |
| 186 | + description: This pure Ruby library can read and write PNG images without depending | |
| 187 | + on an external image library, like RMagick | |
| 188 | + package_url: https://rubygems.org/chunky_png | |
| 189 | + version: 1.4.0 | |
| 190 | + license: MIT | |
| 191 | + open_source: true | |
| 192 | + hosted_saas: false | |
| 193 | + category: Libraries | |
| 194 | + sub_category: RubyGems Packages | |
| 195 | + image_url: https://img.stackshare.io/package/19118/default_ab0024f54be625eb1e21abc015158fc74b2e3704.png | |
| 196 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 197 | + detection_source: Gemfile | |
| 198 | + last_updated_by: Paul Sernatinger | |
| 199 | + last_updated_on: 2022-11-14 14:30:30.000000000 Z | |
| 200 | +- name: erubi | |
| 201 | + description: Erubi is a ERB template engine for ruby | |
| 202 | + package_url: https://rubygems.org/erubi | |
| 203 | + version: 1.12.0 | |
| 204 | + license: MIT | |
| 205 | + open_source: true | |
| 206 | + hosted_saas: false | |
| 207 | + category: Libraries | |
| 208 | + sub_category: RubyGems Packages | |
| 209 | + image_url: https://img.stackshare.io/package/rubygems/image.png | |
| 210 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 211 | + detection_source: Gemfile | |
| 212 | + last_updated_by: Paul Sernatinger | |
| 213 | + last_updated_on: 2022-11-14 14:30:30.000000000 Z | |
| 214 | +- name: html-pipeline | |
| 215 | + description: GitHub HTML processing filters and utilities | |
| 216 | + package_url: https://rubygems.org/html-pipeline | |
| 217 | + version: 2.14.3 | |
| 218 | + license: MIT | |
| 219 | + open_source: true | |
| 220 | + hosted_saas: false | |
| 221 | + category: Libraries | |
| 222 | + sub_category: RubyGems Packages | |
| 223 | + image_url: https://img.stackshare.io/package/19386/default_b0770ebdd12e1eb479a98261d0175b1714524f87.png | |
| 224 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 225 | + detection_source: Gemfile | |
| 226 | + last_updated_by: Thibaut Courouble | |
| 227 | + last_updated_on: 2018-10-21 22:41:35.000000000 Z | |
| 228 | +- name: image_optim | |
| 229 | + description: Command line tool and ruby interface to optimize | |
| 230 | + package_url: https://rubygems.org/image_optim | |
| 231 | + version: 0.31.3 | |
| 232 | + license: MIT | |
| 233 | + open_source: true | |
| 234 | + hosted_saas: false | |
| 235 | + category: Libraries | |
| 236 | + sub_category: RubyGems Packages | |
| 237 | + image_url: https://img.stackshare.io/package/19798/default_5acb201e8340ca5b337b8c46c2fcaff7aa0db0ec.png | |
| 238 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 239 | + detection_source: Gemfile | |
| 240 | + last_updated_by: Paul Sernatinger | |
| 241 | + last_updated_on: 2022-11-14 14:30:30.000000000 Z | |
| 242 | +- name: image_optim_pack | |
| 243 | + description: 'Precompiled binaries for image_optim: advpng' | |
| 244 | + package_url: https://rubygems.org/image_optim_pack | |
| 245 | + version: 0.10.1 | |
| 246 | + license: MIT | |
| 247 | + open_source: true | |
| 248 | + hosted_saas: false | |
| 249 | + category: Libraries | |
| 250 | + sub_category: RubyGems Packages | |
| 251 | + image_url: https://img.stackshare.io/package/rubygems/image.png | |
| 252 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 253 | + detection_source: Gemfile | |
| 254 | + last_updated_by: Paul Sernatinger | |
| 255 | + last_updated_on: 2022-11-14 14:30:30.000000000 Z | |
| 256 | +- name: minitest | |
| 257 | + description: Minitest provides a complete suite of testing facilities supporting | |
| 258 | + TDD, BDD, mocking, and benchmarking | |
| 259 | + package_url: https://rubygems.org/minitest | |
| 260 | + version: 5.21.2 | |
| 261 | + license: MIT | |
| 262 | + open_source: true | |
| 263 | + hosted_saas: false | |
| 264 | + category: Libraries | |
| 265 | + sub_category: RubyGems Packages | |
| 266 | + image_url: https://img.stackshare.io/package/18818/default_f36df1cfa9ff6061d7f9b4879088be8538581c49.png | |
| 267 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 268 | + detection_source: Gemfile | |
| 269 | + last_updated_by: Thibaut | |
| 270 | + last_updated_on: 2015-01-03 15:38:22.000000000 Z | |
| 271 | +- name: net-sftp | |
| 272 | + description: A pure Ruby implementation of the SFTP client protocol | |
| 273 | + package_url: https://rubygems.org/net-sftp | |
| 274 | + version: 4.0.0 | |
| 275 | + license: MIT | |
| 276 | + open_source: true | |
| 277 | + hosted_saas: false | |
| 278 | + category: Libraries | |
| 279 | + sub_category: RubyGems Packages | |
| 280 | + image_url: https://img.stackshare.io/package/19106/default_92b412aaa5197ea1fc2d70a503018e4186714110.png | |
| 281 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 282 | + detection_source: Gemfile | |
| 283 | + last_updated_by: Paul Sernatinger | |
| 284 | + last_updated_on: 2022-11-14 14:30:30.000000000 Z | |
| 285 | +- name: newrelic_rpm | |
| 286 | + description: New Relic is a performance management system, developed by New Relic, | |
| 287 | + Inc | |
| 288 | + package_url: https://rubygems.org/newrelic_rpm | |
| 289 | + version: 8.16.0 | |
| 290 | + license: Apache-2.0 | |
| 291 | + open_source: true | |
| 292 | + hosted_saas: false | |
| 293 | + category: Libraries | |
| 294 | + sub_category: RubyGems Packages | |
| 295 | + image_url: https://img.stackshare.io/package/19246/default_518f3430d0c3ea4653c591ebd7e75da67f51cfaf.png | |
| 296 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 297 | + detection_source: Gemfile | |
| 298 | + last_updated_by: Thibaut Courouble | |
| 299 | + last_updated_on: 2018-03-24 19:06:19.000000000 Z | |
| 300 | +- name: nokogiri | |
| 301 | + description: Nokogiri | |
| 302 | + package_url: https://rubygems.org/nokogiri | |
| 303 | + version: 1.16.0 | |
| 304 | + license: MIT | |
| 305 | + open_source: true | |
| 306 | + hosted_saas: false | |
| 307 | + category: Libraries | |
| 308 | + sub_category: RubyGems Packages | |
| 309 | + image_url: https://img.stackshare.io/package/18823/default_b8fbb83e23c963442e15398c5b56262cc6267d6f.png | |
| 310 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 311 | + detection_source: Gemfile | |
| 312 | + last_updated_by: Thibaut Courouble | |
| 313 | + last_updated_on: 2018-10-21 22:41:35.000000000 Z | |
| 314 | +- name: progress_bar | |
| 315 | + description: 'Give people feedback about long-running tasks without overloading | |
| 316 | + them with information: Use a progress bar' | |
| 317 | + package_url: https://rubygems.org/progress_bar | |
| 318 | + version: 1.3.3 | |
| 319 | + license: WTFPL | |
| 320 | + open_source: true | |
| 321 | + hosted_saas: false | |
| 322 | + category: Libraries | |
| 323 | + sub_category: RubyGems Packages | |
| 324 | + image_url: https://img.stackshare.io/package/19696/default_2312d4d1847ef96af6bbd57ed9959234ab92321c.png | |
| 325 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 326 | + detection_source: Gemfile | |
| 327 | + last_updated_by: Thibaut | |
| 328 | + last_updated_on: 2014-01-26 21:01:54.000000000 Z | |
| 329 | +- name: pry-byebug | |
| 330 | + description: Combine 'pry' with 'byebug' | |
| 331 | + package_url: https://rubygems.org/pry-byebug | |
| 332 | + version: 3.10.1 | |
| 333 | + license: MIT | |
| 334 | + open_source: true | |
| 335 | + hosted_saas: false | |
| 336 | + category: Libraries | |
| 337 | + sub_category: RubyGems Packages | |
| 338 | + image_url: https://img.stackshare.io/package/18848/default_1c2935fa69cec14d38adad302e002464101cd71f.png | |
| 339 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 340 | + detection_source: Gemfile | |
| 341 | + last_updated_by: Paul Sernatinger | |
| 342 | + last_updated_on: 2022-11-14 14:30:30.000000000 Z | |
| 343 | +- name: rack | |
| 344 | + description: Rack provides a minimal, modular and adaptable interface for developing | |
| 345 | + web applications in Ruby | |
| 346 | + package_url: https://rubygems.org/rack | |
| 347 | + version: 2.2.8 | |
| 348 | + license: MIT | |
| 349 | + open_source: true | |
| 350 | + hosted_saas: false | |
| 351 | + category: Libraries | |
| 352 | + sub_category: RubyGems Packages | |
| 353 | + image_url: https://img.stackshare.io/package/18839/default_db5cfb0d85d9fd8bfb40a863581417a2a57791ab.png | |
| 354 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 355 | + detection_source: Gemfile | |
| 356 | + last_updated_by: Paul Sernatinger | |
| 357 | + last_updated_on: 2022-11-14 14:30:30.000000000 Z | |
| 358 | +- name: rack-ssl-enforcer | |
| 359 | + description: Rack::SslEnforcer is a simple Rack middleware to enforce ssl connections | |
| 360 | + package_url: https://rubygems.org/rack-ssl-enforcer | |
| 361 | + version: 0.2.9 | |
| 362 | + license: MIT | |
| 363 | + open_source: true | |
| 364 | + hosted_saas: false | |
| 365 | + category: Libraries | |
| 366 | + sub_category: RubyGems Packages | |
| 367 | + image_url: https://img.stackshare.io/package/rubygems/image.png | |
| 368 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 369 | + detection_source: Gemfile | |
| 370 | + last_updated_by: Paul Sernatinger | |
| 371 | + last_updated_on: 2022-11-14 14:30:30.000000000 Z | |
| 372 | +- name: rack-test | |
| 373 | + description: Rack::Test is a small, simple testing API for Rack apps | |
| 374 | + package_url: https://rubygems.org/rack-test | |
| 375 | + version: 2.1.0 | |
| 376 | + license: MIT | |
| 377 | + open_source: true | |
| 378 | + hosted_saas: false | |
| 379 | + category: Libraries | |
| 380 | + sub_category: RubyGems Packages | |
| 381 | + image_url: https://img.stackshare.io/package/18845/default_db5cfb0d85d9fd8bfb40a863581417a2a57791ab.png | |
| 382 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 383 | + detection_source: Gemfile | |
| 384 | + last_updated_by: Paul Sernatinger | |
| 385 | + last_updated_on: 2022-11-14 14:30:30.000000000 Z | |
| 386 | +- name: rake | |
| 387 | + description: Rake is a Make-like program implemented in Ruby | |
| 388 | + package_url: https://rubygems.org/rake | |
| 389 | + version: 13.1.0 | |
| 390 | + license: MIT | |
| 391 | + open_source: true | |
| 392 | + hosted_saas: false | |
| 393 | + category: Libraries | |
| 394 | + sub_category: RubyGems Packages | |
| 395 | + image_url: https://img.stackshare.io/package/18812/default_f582e4648f4682adb72d2b201218cda7f8e894ac.png | |
| 396 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 397 | + detection_source: Gemfile | |
| 398 | + last_updated_by: Paul Sernatinger | |
| 399 | + last_updated_on: 2022-11-14 14:30:30.000000000 Z | |
| 400 | +- name: redcarpet | |
| 401 | + description: A fast, safe and extensible Markdown to | |
| 402 | + package_url: https://rubygems.org/redcarpet | |
| 403 | + version: 3.6.0 | |
| 404 | + license: MIT | |
| 405 | + open_source: true | |
| 406 | + hosted_saas: false | |
| 407 | + category: Libraries | |
| 408 | + sub_category: RubyGems Packages | |
| 409 | + image_url: https://img.stackshare.io/package/18853/default_b87d202e13d56f87c63181fa49bc5e099c9abaac.png | |
| 410 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 411 | + detection_source: Gemfile | |
| 412 | + last_updated_by: Paul Sernatinger | |
| 413 | + last_updated_on: 2022-11-14 14:30:30.000000000 Z | |
| 414 | +- name: rr | |
| 415 | + description: RR is a test double framework that features a rich selection of double | |
| 416 | + techniques and a terse syntax | |
| 417 | + package_url: https://rubygems.org/rr | |
| 418 | + version: 3.1.0 | |
| 419 | + license: MIT | |
| 420 | + open_source: true | |
| 421 | + hosted_saas: false | |
| 422 | + category: Libraries | |
| 423 | + sub_category: RubyGems Packages | |
| 424 | + image_url: https://img.stackshare.io/package/18915/default_353d3fd998e68372ebd6d80dbb4c0632f387d091.png | |
| 425 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 426 | + detection_source: Gemfile | |
| 427 | + last_updated_by: Thibaut | |
| 428 | + last_updated_on: 2013-10-24 18:25:52.000000000 Z | |
| 429 | +- name: sass | |
| 430 | + description: Ruby Sass is deprecated! See https://sass-lang.com/ruby-sass for details | |
| 431 | + package_url: https://rubygems.org/sass | |
| 432 | + version: 3.7.4 | |
| 433 | + license: MIT | |
| 434 | + open_source: true | |
| 435 | + hosted_saas: false | |
| 436 | + category: Libraries | |
| 437 | + sub_category: RubyGems Packages | |
| 438 | + image_url: https://img.stackshare.io/package/18882/default_b1cb499f3e62fe773109c989f76e3365fbe49857.png | |
| 439 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 440 | + detection_source: Gemfile | |
| 441 | + last_updated_by: Simon Legner | |
| 442 | + last_updated_on: 2024-01-13 21:26:48.000000000 Z | |
| 443 | +- name: selenium-webdriver | |
| 444 | + description: WebDriver is a tool for writing automated tests of websites | |
| 445 | + package_url: https://rubygems.org/selenium-webdriver | |
| 446 | + license: Apache-2.0 | |
| 447 | + open_source: true | |
| 448 | + hosted_saas: false | |
| 449 | + category: Libraries | |
| 450 | + sub_category: RubyGems Packages | |
| 451 | + image_url: https://img.stackshare.io/package/18901/default_f0ad2b1ffbe10fdd866f9f8e5f812599d9e8085b.png | |
| 452 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile | |
| 453 | + detection_source: Gemfile | |
| 454 | + last_updated_by: Thibaut | |
| 455 | + last_updated_on: 2014-01-26 21:01:54.000000000 Z | |
| 456 | +- name: sinatra-contrib | |
| 457 | + description: Collection of useful Sinatra extensions | |
| 458 | + package_url: https://rubygems.org/sinatra-contrib | |
| 459 | + version: 3.2.0 | |
| 460 | + license: MIT | |
| 461 | + open_source: true | |
| 462 | + hosted_saas: false | |
| 463 | + category: Libraries | |
| 464 | + sub_category: RubyGems Packages | |
| 465 | + image_url: https://img.stackshare.io/package/19010/default_4361ccfae4dee655802081d8182ddcaebd7a2b3f.png | |
| 466 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 467 | + detection_source: Gemfile | |
| 468 | + last_updated_by: Paul Sernatinger | |
| 469 | + last_updated_on: 2022-11-14 14:30:30.000000000 Z | |
| 470 | +- name: sprockets | |
| 471 | + description: Sprockets is a Rack-based asset packaging system that concatenates | |
| 472 | + and serves JavaScript | |
| 473 | + package_url: https://rubygems.org/sprockets | |
| 474 | + version: 3.7.2 | |
| 475 | + license: MIT | |
| 476 | + open_source: true | |
| 477 | + hosted_saas: false | |
| 478 | + category: Libraries | |
| 479 | + sub_category: RubyGems Packages | |
| 480 | + image_url: https://img.stackshare.io/package/18932/default_36bbb38c1cd5521e90d6e99982778960b00ec515.png | |
| 481 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 482 | + detection_source: Gemfile | |
| 483 | + last_updated_by: Simon Legner | |
| 484 | + last_updated_on: 2024-01-13 21:26:48.000000000 Z | |
| 485 | +- name: sprockets-helpers | |
| 486 | + description: Asset path helpers for Sprockets 2.x &amp; 3.x applications | |
| 487 | + package_url: https://rubygems.org/sprockets-helpers | |
| 488 | + version: 1.4.0 | |
| 489 | + license: MIT | |
| 490 | + open_source: true | |
| 491 | + hosted_saas: false | |
| 492 | + category: Libraries | |
| 493 | + sub_category: RubyGems Packages | |
| 494 | + image_url: https://img.stackshare.io/package/19732/default_be22d39d0c697424d0da2019daf25b87c93b4c6e.png | |
| 495 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 496 | + detection_source: Gemfile | |
| 497 | + last_updated_by: Simon Legner | |
| 498 | + last_updated_on: 2024-01-13 21:26:48.000000000 Z | |
| 499 | +- name: sprockets-sass | |
| 500 | + description: When using Sprockets 2.0 with Sass you will eventually run into a pretty | |
| 501 | + big issue | |
| 502 | + package_url: https://rubygems.org/sprockets-sass | |
| 503 | + license: MIT | |
| 504 | + open_source: true | |
| 505 | + hosted_saas: false | |
| 506 | + category: Libraries | |
| 507 | + sub_category: RubyGems Packages | |
| 508 | + image_url: https://img.stackshare.io/package/19683/default_5a5984fb57132e73bff841a1ebf058577d3c8cb9.png | |
| 509 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile | |
| 510 | + detection_source: Gemfile | |
| 511 | + last_updated_by: Simon Legner | |
| 512 | + last_updated_on: 2024-01-13 21:26:48.000000000 Z | |
| 513 | +- name: terminal-table | |
| 514 | + description: Simple, feature rich ascii table generation library | |
| 515 | + package_url: https://rubygems.org/terminal-table | |
| 516 | + version: 3.0.2 | |
| 517 | + license: MIT | |
| 518 | + open_source: true | |
| 519 | + hosted_saas: false | |
| 520 | + category: Libraries | |
| 521 | + sub_category: RubyGems Packages | |
| 522 | + image_url: https://img.stackshare.io/package/18923/default_401820e785202ca0018a36ea3e12ee9a92b3efac.png | |
| 523 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 524 | + detection_source: Gemfile | |
| 525 | + last_updated_by: Jasper van Merle | |
| 526 | + last_updated_on: 2019-10-11 15:55:09.000000000 Z | |
| 527 | +- name: thin | |
| 528 | + description: A thin and fast web server | |
| 529 | + package_url: https://rubygems.org/thin | |
| 530 | + version: 1.8.2 | |
| 531 | + license: GPL-2.0+,Ruby | |
| 532 | + open_source: true | |
| 533 | + hosted_saas: false | |
| 534 | + category: Libraries | |
| 535 | + sub_category: RubyGems Packages | |
| 536 | + image_url: https://img.stackshare.io/package/18900/default_f0ad2b1ffbe10fdd866f9f8e5f812599d9e8085b.png | |
| 537 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 538 | + detection_source: Gemfile | |
| 539 | + last_updated_by: Paul Sernatinger | |
| 540 | + last_updated_on: 2022-11-14 14:30:30.000000000 Z | |
| 541 | +- name: thor | |
| 542 | + description: Thor is a toolkit for building powerful command-line interfaces | |
| 543 | + package_url: https://rubygems.org/thor | |
| 544 | + version: 1.3.0 | |
| 545 | + license: MIT | |
| 546 | + open_source: true | |
| 547 | + hosted_saas: false | |
| 548 | + category: Libraries | |
| 549 | + sub_category: RubyGems Packages | |
| 550 | + image_url: https://img.stackshare.io/package/18827/default_fa0604c1b3b2c413c942b4fa310935704d314c2f.png | |
| 551 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 552 | + detection_source: Gemfile | |
| 553 | + last_updated_by: Paul Sernatinger | |
| 554 | + last_updated_on: 2022-11-14 14:30:30.000000000 Z | |
| 555 | +- name: tty-pager | |
| 556 | + description: Terminal output paging in a cross-platform way supporting all major | |
| 557 | + ruby interpreters | |
| 558 | + package_url: https://rubygems.org/tty-pager | |
| 559 | + version: 0.14.0 | |
| 560 | + license: MIT | |
| 561 | + open_source: true | |
| 562 | + hosted_saas: false | |
| 563 | + category: Libraries | |
| 564 | + sub_category: RubyGems Packages | |
| 565 | + image_url: https://img.stackshare.io/package/rubygems/image.png | |
| 566 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 567 | + detection_source: Gemfile | |
| 568 | + last_updated_by: Thibaut Courouble | |
| 569 | + last_updated_on: 2016-01-24 15:03:12.000000000 Z | |
| 570 | +- name: typhoeus | |
| 571 | + description: Like a modern code version of the mythical beast with 100 serpent heads | |
| 572 | + package_url: https://rubygems.org/typhoeus | |
| 573 | + version: 1.4.1 | |
| 574 | + license: MIT | |
| 575 | + open_source: true | |
| 576 | + hosted_saas: false | |
| 577 | + category: Libraries | |
| 578 | + sub_category: RubyGems Packages | |
| 579 | + image_url: https://img.stackshare.io/package/18891/default_b7088ec778267614a78a5a472c67252ec1721d10.png | |
| 580 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 581 | + detection_source: Gemfile | |
| 582 | + last_updated_by: Paul Sernatinger | |
| 583 | + last_updated_on: 2022-11-14 14:30:30.000000000 Z | |
| 584 | +- name: yajl-ruby | |
| 585 | + description: Ruby C bindings to the excellent Yajl JSON stream-based parser library | |
| 586 | + package_url: https://rubygems.org/yajl-ruby | |
| 587 | + version: 1.4.3 | |
| 588 | + license: MIT | |
| 589 | + open_source: true | |
| 590 | + hosted_saas: false | |
| 591 | + category: Libraries | |
| 592 | + sub_category: RubyGems Packages | |
| 593 | + image_url: https://img.stackshare.io/package/18895/default_9386886dd1c6c396a11bd4b49732afb9ec444f8d.png | |
| 594 | + detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock | |
| 595 | + detection_source: Gemfile | |
| 596 | + last_updated_by: Nicholas La Roux | |
| 597 | + last_updated_on: 2024-01-09 12:48:51.000000000 Z | |