Merge branch 'freeCodeCamp:main' into opengl

pull/2136/head
Suraj Yadav 6 months ago committed by GitHub
commit 0b2cde3fa8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -13,7 +13,7 @@ jobs:
steps:
- uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
- name: Set up Ruby
uses: ruby/setup-ruby@432702e864cadc1b56247e31aa341be5be3e129a # v1.168.0
uses: ruby/setup-ruby@161cd54b698f1fb3ea539faab2e036d409550e3c # v1.187.0
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- name: Run tests

@ -11,7 +11,7 @@ jobs:
steps:
- uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
- name: Set up Ruby
uses: ruby/setup-ruby@432702e864cadc1b56247e31aa341be5be3e129a # v1.168.0
uses: ruby/setup-ruby@161cd54b698f1fb3ea539faab2e036d409550e3c # v1.187.0
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- name: Generate report

@ -9,9 +9,9 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Set up Ruby
uses: ruby/setup-ruby@432702e864cadc1b56247e31aa341be5be3e129a # v1.168.0
uses: ruby/setup-ruby@161cd54b698f1fb3ea539faab2e036d409550e3c # v1.187.0
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- name: Run tests

@ -1 +1 @@
3.3.0
3.3.4

@ -1 +1 @@
ruby 3.3.0
ruby 3.3.4

@ -1,4 +1,4 @@
FROM ruby:3.3.0
FROM ruby:3.3.4
ENV LANG=C.UTF-8
ENV ENABLE_SERVICE_WORKER=true

@ -1,4 +1,4 @@
FROM ruby:3.3.0-alpine
FROM ruby:3.3.4-alpine
ENV LANG=C.UTF-8
ENV ENABLE_SERVICE_WORKER=true

@ -1,5 +1,5 @@
source 'https://rubygems.org'
ruby '3.3.0'
ruby '3.3.4'
gem 'activesupport', require: false
gem 'html-pipeline'

@ -1,7 +1,7 @@
GEM
remote: https://rubygems.org/
specs:
activesupport (7.1.3)
activesupport (7.1.3.4)
base64
bigdecimal
concurrent-ruby (~> 1.0, >= 1.0.2)
@ -16,7 +16,7 @@ GEM
erubi (>= 1.0.0)
rack (>= 0.9.0)
rouge (>= 1.0.0)
bigdecimal (3.1.6)
bigdecimal (3.1.8)
browser (5.3.1)
byebug (11.1.3)
chunky_png (1.4.0)
@ -24,13 +24,12 @@ GEM
concurrent-ruby (1.2.3)
connection_pool (2.4.1)
daemons (1.4.1)
drb (2.2.0)
ruby2_keywords
erubi (1.12.0)
drb (2.2.1)
erubi (1.13.0)
ethon (0.16.0)
ffi (>= 1.15.0)
eventmachine (1.2.7)
execjs (2.8.1)
execjs (2.9.1)
exifr (1.4.0)
ffi (1.15.5)
fspath (3.1.2)
@ -38,7 +37,7 @@ GEM
html-pipeline (2.14.3)
activesupport (>= 2)
nokogiri (>= 1.4)
i18n (1.14.1)
i18n (1.14.5)
concurrent-ruby (~> 1.0)
image_optim (0.31.3)
exifr (~> 1.2, >= 1.2.2)
@ -52,8 +51,8 @@ GEM
image_size (3.3.0)
in_threads (1.6.0)
method_source (1.0.0)
mini_portile2 (2.8.5)
minitest (5.21.2)
mini_portile2 (2.8.7)
minitest (5.24.1)
multi_json (1.15.0)
mustermann (3.0.0)
ruby2_keywords (~> 0.0.1)
@ -62,13 +61,13 @@ GEM
net-ssh (>= 5.0.0, < 8.0.0)
net-ssh (7.0.1)
newrelic_rpm (8.16.0)
nokogiri (1.16.0)
nokogiri (1.16.6)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
options (2.3.2)
progress (3.6.0)
progress_bar (1.3.3)
highline (>= 1.6, < 3)
progress_bar (1.3.4)
highline (>= 1.6)
options (~> 2.3.0)
pry (0.14.2)
coderay (~> 1.1)
@ -77,14 +76,14 @@ GEM
byebug (~> 11.0)
pry (>= 0.13, < 0.15)
racc (1.7.3)
rack (2.2.8)
rack (2.2.9)
rack-protection (3.2.0)
base64 (>= 0.1.0)
rack (~> 2.2, >= 2.2.4)
rack-ssl-enforcer (0.2.9)
rack-test (2.1.0)
rack (>= 1.3)
rake (13.1.0)
rake (13.2.1)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
@ -111,7 +110,8 @@ GEM
rack-protection (= 3.2.0)
sinatra (= 3.2.0)
tilt (~> 2.0)
sprockets (3.7.2)
sprockets (3.7.3)
base64
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-helpers (1.4.0)
@ -125,13 +125,13 @@ GEM
strings-ansi (0.2.0)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
terser (1.1.20)
terser (1.2.3)
execjs (>= 0.3.0, < 3)
thin (1.8.2)
daemons (~> 1.0, >= 1.0.9)
eventmachine (~> 1.0, >= 1.0.4)
rack (>= 1, < 3)
thor (1.3.0)
thor (1.3.1)
tilt (2.3.0)
tty-pager (0.14.0)
strings (~> 0.2.0)
@ -187,7 +187,7 @@ DEPENDENCIES
yajl-ruby
RUBY VERSION
ruby 3.3.0p0
ruby 3.3.4p94
BUNDLED WITH
2.4.6

@ -172,10 +172,12 @@ Made something cool? Feel free to open a PR to add a new row to this table! You
| [mohamed3nan/DevDocs-Tab](https://github.com/mohamed3nan/DevDocs-Tab) | VS Code extension (view as tab) | ![Latest GitHub commit](https://img.shields.io/github/last-commit/mohamed3nan/DevDocs-Tab?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/mohamed3nan/DevDocs-Tab?logo=github&label) |
| [deibit/vscode-devdocs](https://marketplace.visualstudio.com/items?itemName=deibit.devdocs) | VS Code extension (open the browser) | ![Latest GitHub commit](https://img.shields.io/github/last-commit/deibit/vscode-devdocs?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/deibit/vscode-devdocs?logo=github&label) |
| [mdh34/quickDocs](https://github.com/mdh34/quickDocs) | Vala/Python based viewer | ![Latest GitHub commit](https://img.shields.io/github/last-commit/mdh34/quickDocs?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/mdh34/quickDocs?logo=github&label) |
| [girishji/devdocs.vim](https://github.com/girishji/devdocs.vim) | Vim plugin & TUI (browse inside Vim) | ![Latest GitHub commit](https://img.shields.io/github/last-commit/girishji/devdocs.vim?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/girishji/devdocs.vim?logo=github&label) |
| [romainl/vim-devdocs](https://github.com/romainl/vim-devdocs) | Vim plugin | ![Latest GitHub commit](https://img.shields.io/github/last-commit/romainl/vim-devdocs?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/romainl/vim-devdocs?logo=github&label) |
| [waiting-for-dev/vim-www](https://github.com/waiting-for-dev/vim-www) | Vim plugin | ![Latest GitHub commit](https://img.shields.io/github/last-commit/waiting-for-dev/vim-www?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/waiting-for-dev/vim-www?logo=github&label) |
| [luckasRanarison/nvim-devdocs](https://github.com/luckasRanarison/nvim-devdocs) | Neovim plugin | ![Latest GitHub commit](https://img.shields.io/github/last-commit/luckasRanarison/nvim-devdocs?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/luckasRanarison/nvim-devdocs?logo=github&label) |
| [toiletbril/dedoc](https://github.com/toiletbril/dedoc) | Terminal based viewer | ![Latest GitHub commit](https://img.shields.io/github/last-commit/toiletbril/dedoc?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/toiletbril/dedoc?logo=github&label) |
| [Raycast Devdocs](https://www.raycast.com/pomdtr/devdocs) | Raycast extension | Unavailable | Unavailable |
## Copyright / License

@ -1,4 +1,12 @@
[
[
"2024-06-12",
"New documentations: <a href=\"/nextjs/\">Next.js</a>, <a href=\"/click/\">click</a>"
],
[
"2024-01-24",
"New documentation: <a href=\"/playwright/\">Playwright</a>"
],
[
"2024-01-20",
"New documentation: <a href=\"/htmx/\">htmx</a>"

@ -2,7 +2,6 @@
// Styling for customizing-colors page - color swatches (based on original tailwind display design)
.colors {
display: flex;
flex-direction: column;
gap: 1.2rem;
// Text offset

@ -180,8 +180,8 @@ download it, extract it with `dpkg -x $PACKAGE ./` and move `./usr/share/doc/ope
to `path/to/devdocs/docs/openjdk~$VERSION`
```sh
curl -O http://ftp.at.debian.org/debian/pool/main/o/openjdk-21/openjdk-21-doc_21.0.1+12-3_all.deb
tar xf openjdk-21-doc_21.0.1+12-3_all.deb
curl -O http://ftp.at.debian.org/debian/pool/main/o/openjdk-21/openjdk-21-doc_21.0.2+13-2_all.deb
tar xf openjdk-21-doc_21.0.2+13-2_all.deb
tar xf data.tar.xz
mv ./usr/share/doc/openjdk-21-jre-headless/api/ docs/openjdk~$VERSION
```

@ -0,0 +1,58 @@
module Docs
class Click
class EntriesFilter < Docs::EntriesFilter
TYPE_BY_SLUG = {}
def call
if root_page?
css('section').each do |node|
next if ['documentation', 'api-reference'].include?(node['id'])
type = node.at_css('h2').content.strip
node.css('li > a').each do |toclink|
slug = toclink['href'].split('/')[-2]
TYPE_BY_SLUG[slug] = type
end
end
end
super
end
def get_name
return at_css('h1').content.strip
end
def get_type
TYPE_BY_SLUG[slug.split('/').first] || at_css('h1').content.strip
end
def include_default_entry?
TYPE_BY_SLUG.include?(slug.split('/').first)
end
def additional_entries
return [] if root_page? || TYPE_BY_SLUG.include?(slug.split('/').first)
if slug == 'api/'
entries = []
doc.css('> section').each do |section|
title = section.at_css('h2').content.strip
section.css('dl.py > dt[id]').each do |dt|
name = dt['id'].split('.')[1..].join('.')
name << '()' if dt.parent.classes.intersect?(['function', 'method', 'classmethod', 'staticmethod'])
entries << [name, dt['id'], title]
end
end
return entries
end
(doc.css('> section') || []).map do |section|
title = section.at_css('h2').content.strip
[title, section['id']]
end
end
private
end
end
end

@ -0,0 +1,11 @@
module Docs
class Click
class PreCleanHtmlFilter < Filter
def call
# Remove ¶ character from headers
css('.headerlink').remove
doc
end
end
end
end

@ -2,7 +2,7 @@ module Docs
class Elisp
class EntriesFilter < Docs::EntriesFilter
def get_name
# remove numbers at the beginnig
# remove numbers at the beginning
name = at_css('.chapter', '.section', '.subsection', '.subsubsection', '.appendix').content.slice(/[[:alpha:]]...*/)
# remove 'Appendix' word

@ -4,7 +4,7 @@ module Docs
# The GTK documentation paths are "flat" and while the contents of each
# page provides a way to determine the direct parent relationship, we
# really need a full hierarchy of pages *a priori* to be able to fully
# categorize all pages and entries. So we're going to recursivly generate
# categorize all pages and entries. So we're going to recursively generate
# a full map of page -> parent relationships from the table of contents...
PARENT_BY_PATH = {}

@ -15,7 +15,7 @@ module Docs
group = 'kubectl'
commands = css('h1').to_a()
commands.map do |node|
# handle titles differnetly by converting them into sidebar groups (types)
# handle titles differently by converting them into sidebar groups (types)
new_group = at_css("##{node['id']} > strong")
if new_group
group = new_group.content.titleize

@ -0,0 +1,30 @@
module Docs
class Nextjs
class CleanHtmlFilter < Filter
def call
@doc = at_css('.prose')
css('.zola-anchor').remove
doc.prepend_child("<h1>NextJS2</h1>") if root_page?
css('div:contains("NEWS:")').remove
css('h2:contains("sponsors"), #sponsor-table').remove
css('div.sticky').remove #remove the floating menu
css('div.-mt-4').remove #remove the navigation line
css('footer').remove
css('div.feedback_inlineTriggerWrapper__o7yUx').remove
css('header').remove #remove links from the top of the page
css('nav').remove
css('h1, h2, h3, h4').each { |node| node.content = node.content }
css('pre > code').each do |node|
node.parent['data-language'] = 'typescript'
node.parent.content = node.parent.content
end
css('div[class^="code-block_header"]').remove
doc
end
end
end
end

@ -0,0 +1,43 @@
module Docs
class Nextjs
class EntriesFilter < Docs::EntriesFilter
def get_name
name = at_css('h1').content
name.strip!
#name
subpath_items = subpath.split('/', -1)
if subpath_items.length >= 5
subpath_items[3].capitalize + ': ' + name # e.g. Routing: Defining Routes
else
name
end
end
def get_type
if slug.start_with?('architecture')
'Architecture'
elsif slug.start_with?('community')
'Community'
elsif slug.start_with?('getting-started')
'Getting Started'
elsif slug.start_with?('messages')
'Messages'
elsif slug.start_with?('app/building-your-application')
'Using App Router: Building your application'
elsif slug.start_with?('app/api-reference')
'Using App Router: api-reference'
elsif slug.start_with?('app')
'Using App Router'
elsif slug.start_with?('pages/building-your-application')
'Using Pages Router: Building your application'
elsif slug.start_with?('pages/api-reference')
'Using Pages Router: api-reference'
elsif slug.start_with?('pages')
'Using Pages Router'
else
get_name
end
end
end
end
end

@ -16,8 +16,10 @@ module Docs
name.remove! ' User Guide'
name.remove! ' User\'s manual'
name.remove! %r{ \-.*}
name.remove! %r{\Asrc/}
name.remove! %r{\Astd/}
name.strip!
name
name.split("/").last
end
def get_type
@ -54,10 +56,11 @@ module Docs
else
css('.simple-toc-section a, .nested-toc-section a').each do |node|
entry_name = node.content
entry_name.gsub!(/,.*/, '')
match = /^`(.*)`|^(\w+)/.match(node.content)
entry_name = match[1] || match[2]
entry_id = slug + node['href']
entries << [entry_name, entry_id, name]
entries << ["#{entry_name} (#{name})", entry_id, name]
end
end

@ -12,6 +12,7 @@ module Docs
end
css('.header .sub-title', 'hr', '.table-tabs').remove
css('.copy').remove
# fix ul section that contains summaries or tables
css('ul').each do |node|

@ -0,0 +1,29 @@
module Docs
class Playwright
class CleanHtmlFilter < Filter
def call
@doc = at_css('.markdown')
css('x-search').remove
css('hr').remove
css('font:contains("Added in")').remove
css('.list-anchor').remove
css('.alert').each do |node|
node.name = 'blockquote'
end
css('pre').each do |node|
node.content = node.css('.token-line').map(&:content).join("\n")
node.remove_attribute('style')
node['data-language'] = node.content =~ /\A\s*</ ? 'html' : 'javascript'
node.ancestors('.theme-code-block').first.replace(node)
end
css('*[class]').remove_attribute('class')
doc
end
end
end
end

@ -0,0 +1,23 @@
module Docs
class Playwright
class EntriesFilter < Docs::EntriesFilter
def get_name
at_css('h1').children.select(&:text?).map(&:content).join.strip
end
def type
type = at_css('.menu__link--active').content
return "#{type}: #{name}" if slug.starts_with?('api/')
type
end
def additional_entries
css('x-search').each_with_object [] do |node, entries|
prev = node.previous_element
prev = prev.previous_element until prev['id']
entries << [node.text, prev['id']]
end
end
end
end
end

@ -1,57 +1,115 @@
module Docs
class Pytorch
class EntriesFilter < Docs::EntriesFilter
NAME_REPLACEMENTS = {
"Distributed communication package - torch.distributed" => "torch.distributed"
TYPE_REPLACEMENTS = {
"torch.Tensor" => "Tensor",
"torch.nn" => "Neuro Network",
"Probability distributions - torch.distributions" => "Probability Distributions",
"torch" => "Torch",
"Quantization" => "Quantization",
"torch.optim" => "Optimization",
"torch.Storage" => "Storage",
"torch.nn.functional" => "NN Functions",
"torch.cuda" => "CUDA",
"Torch Distributed Elastic" => "Distributed Elastic",
"torch.fx" => "FX",
"TorchScript" => "Torch Script",
"torch.onnx" => "ONNX",
"Distributed communication package - torch.distributed" => "Distributed Communication",
"Automatic differentiation package - torch.autograd" => "Automatic Differentiation",
"torch.linalg" => "Linear Algebra",
"Distributed Checkpoint - torch.distributed.checkpoint" => "Distributed Checkpoint",
"Distributed RPC Framework" => "Distributed RPC",
"torch.special" => "SciPy-like Special",
"torch.package" => "Package",
"torch.backends" => "Backends",
"FullyShardedDataParallel" => "Fully Sharded Data Parallel",
"torch.sparse" => "Sparse Tensors",
"torch.export" => "Traced Graph Export",
"torch.fft" => "Discrete Fourier Transforms",
"torch.utils.data" => "Datasets and Data Loaders",
"torch.monitor" => "Monitor",
"Automatic Mixed Precision package - torch.amp" => "Automatic Mixed Precision",
"torch.utils.tensorboard" => "Tensorboard",
"torch.profiler" => "Profiler",
"torch.mps" => "MPS",
"DDP Communication Hooks" => "DDP Communication Hooks",
"Benchmark Utils - torch.utils.benchmark" => "Benchmark Utils",
"torch.nn.init" => "Parameter Initializations",
"Tensor Parallelism - torch.distributed.tensor.parallel" => "Tensor Parallelism",
"torch.func" => "JAX-like Function Transforms",
"Distributed Optimizers" => "Distributed Optimizers",
"torch.signal" => "SciPy-like Signal",
"torch.futures" => "Miscellaneous",
"torch.utils.cpp_extension" => "Miscellaneous",
"torch.overrides" => "Miscellaneous",
"Generic Join Context Manager" => "Miscellaneous",
"torch.hub" => "Miscellaneous",
"torch.cpu" => "Miscellaneous",
"torch.random" => "Miscellaneous",
"torch.compiler" => "Miscellaneous",
"Pipeline Parallelism" => "Miscellaneous",
"Named Tensors" => "Miscellaneous",
"Multiprocessing package - torch.multiprocessing" => "Miscellaneous",
"torch.utils" => "Miscellaneous",
"torch.library" => "Miscellaneous",
"Tensor Attributes" => "Miscellaneous",
"torch.testing" => "Miscellaneous",
"torch.nested" => "Miscellaneous",
"Understanding CUDA Memory Usage" => "Miscellaneous",
"torch.utils.dlpack" => "Miscellaneous",
"torch.utils.checkpoint" => "Miscellaneous",
"torch.__config__" => "Miscellaneous",
"Type Info" => "Miscellaneous",
"torch.utils.model_zoo" => "Miscellaneous",
"torch.utils.mobile_optimizer" => "Miscellaneous",
"torch._logging" => "Miscellaneous",
"torch.masked" => "Miscellaneous",
"torch.utils.bottleneck" => "Miscellaneous"
}
def get_breadcrumbs()
css('.pytorch-breadcrumbs > li').map { |node| node.content.delete_suffix(' >') }
def get_breadcrumbs
css('.pytorch-breadcrumbs > li').map {
|node| node.content.delete_suffix(' >').strip
}.reject { |item| item.nil? || item.empty? }
end
def get_name
# The id of the container `div.section` indicates the page type.
# If the id starts with `module-`, then it's an API reference,
# otherwise it is a note or design doc.
section_id = at_css('.section[id], section[id]')['id']
if section_id.starts_with? 'module-'
section_id.remove('module-')
else
name = get_breadcrumbs()[1]
NAME_REPLACEMENTS.fetch(name, name)
end
b = get_breadcrumbs
b[(b[1] == 'torch' ? 2 : 1)..].join('.')
end
def get_type
name
t = get_breadcrumbs[1]
TYPE_REPLACEMENTS.fetch(t, t)
end
def include_default_entry?
# Only include API references, and ignore notes or design docs
!subpath.start_with? 'generated/' and type.start_with? 'torch'
# Only include API entries to simplify and unify the list
return name.start_with?('torch.')
end
def additional_entries
return [] if root_page?
entries = []
css('dt').each do |node|
name = node['id']
if name == self.name or name == nil
css('dl').each do |node|
dt = node.at_css('dt')
if dt == nil
next
end
id = dt['id']
if id == name or id == nil
next
end
case node.parent['class']
when 'method', 'function'
if node.at_css('code').content.starts_with? 'property '
# this instance method is a property, so treat it as an attribute
entries << [name, node['id']]
else
entries << [name + '()', node['id']]
end
when 'class', 'attribute'
entries << [name, node['id']]
case node['class']
when 'py method', 'py function'
entries << [id + '()', id]
when 'py class', 'py attribute', 'py property'
entries << [id, id]
when 'footnote brackets', 'field-list simple'
next
end
end

@ -4,12 +4,14 @@ module Docs
def get_name
name = at_css('h1').content
name.sub! %r{\s*#\s*}, ''
name.sub! %r{\s*\u200B\s*}, ''
name
end
def get_type
name = at_css('h1').content
name.sub! %r{\s*#\s*}, ''
name.sub! %r{\s*\u200B\s*}, ''
name
end

@ -0,0 +1,30 @@
module Docs
class Click < UrlScraper
self.name = 'click'
self.type = 'sphinx'
self.root_path = 'index.html'
self.links = {
home: 'https://click.palletsprojects.com/',
code: 'https://github.com/pallets/click'
}
html_filters.push 'click/pre_clean_html', 'click/entries', 'sphinx/clean_html'
options[:container] = '.body > section'
options[:skip] = ['changes/', 'genindex/', 'py-modindex/']
options[:title] = false
options[:attribution] = <<-HTML
&copy; Copyright 2014 Pallets.<br>
Licensed under the BSD 3-Clause License.<br>
We are not supported nor endorsed by Pallets.
HTML
self.release = '8.1.x'
self.base_url = "https://click.palletsprojects.com/en/#{self.release}/"
def get_latest_version(opts)
get_latest_github_release('pallets', 'click', opts)
end
end
end

@ -36,7 +36,7 @@ module Docs
def get_latest_version(opts)
doc = fetch_doc('https://crystal-lang.org/', opts)
doc.at_css('.latest-release').content.scan(/([0-9.]+)/)[0][0]
doc.at_css('.latest-release-info > a > strong').content.scan(/([0-9.]+)/)[0][0]
end
end
end

@ -34,6 +34,11 @@ module Docs
Licensed under the BSD License.
HTML
version '5.0' do
self.release = '5.0'
self.base_url = "https://docs.djangoproject.com/en/#{self.version}/"
end
version '4.2' do
self.release = '4.2'
self.base_url = "https://docs.djangoproject.com/en/#{self.version}/"

@ -96,7 +96,7 @@ module Docs
def get_latest_version(opts)
doc = fetch_doc('https://docs.docker.com/engine/release-notes/', opts)
latest_version = doc.at_css('.content > section > h2').content.strip
latest_version = doc.at_css('.DocSearch-content > h2 > a').content.strip
latest_version.rpartition(' ')[-1]
end
end

@ -16,7 +16,7 @@ module Docs
Licensed under the MIT License.
HTML
self.release = '0.19.11'
self.release = '0.20.0'
self.base_url = 'https://esbuild.github.io/'
html_filters.push 'esbuild/clean_html', 'esbuild/entries'

@ -1,7 +1,7 @@
module Docs
class Git < UrlScraper
self.type = 'git'
self.release = '2.42.0'
self.release = '2.43.1'
self.base_url = 'https://git-scm.com/docs'
self.initial_paths = %w(/git.html)
self.links = {
@ -16,7 +16,7 @@ module Docs
options[:skip] = %w(/howto-index.html)
options[:attribution] = <<-HTML
&copy; 2012&ndash;2023 Scott Chacon and others<br>
&copy; 2012&ndash;2024 Scott Chacon and others<br>
Licensed under the MIT License.
HTML

@ -1,7 +1,7 @@
module Docs
class Go < UrlScraper
self.type = 'go'
self.release = '1.21.5'
self.release = '1.22.0'
self.base_url = 'https://golang.org/pkg/'
self.links = {
home: 'https://golang.org/',

@ -20,6 +20,11 @@ module Docs
Licensed under the GNU General Public License version 2.
HTML
version '2.9' do
self.release = '2.9.0'
self.base_url = "https://docs.haproxy.org/#{self.version}/"
end
version '2.8' do
self.release = '2.8.0'
self.base_url = "https://docs.haproxy.org/#{self.version}/"

@ -25,7 +25,7 @@ module Docs
# https://github.com/bigskysoftware/htmx/blob/master/LICENSE
options[:attribution] = <<-HTML
Licensed under the Zero-Clause BSD
Licensed under the Zero-Clause BSD License.
HTML
def get_latest_version(opts)

@ -20,15 +20,35 @@ module Docs
# latest version has a special URL that does not include the version identifier
version do
self.release = "1.26"
self.release = "1.29"
self.base_url = "https://kubernetes.io/docs/reference/kubernetes-api/"
end
version '1.20' do
version '1.28' do
self.release = "#{version}"
self.base_url = "https://v#{version.sub('.', '-')}.docs.kubernetes.io/docs/reference/kubernetes-api/"
end
version '1.27' do
self.release = "#{version}"
self.base_url = "https://v#{version.sub('.', '-')}.docs.kubernetes.io/docs/reference/kubernetes-api/"
end
version '1.26' do
self.release = "#{version}"
self.base_url = "https://v#{version.sub('.', '-')}.docs.kubernetes.io/docs/reference/kubernetes-api/"
end
version '1.25' do
self.release = "#{version}"
self.base_url = "https://v#{version.sub('.', '-')}.docs.kubernetes.io/docs/reference/kubernetes-api/"
end
version '1.24' do
self.release = "#{version}"
self.base_url = "https://v#{version.sub('.', '-')}.docs.kubernetes.io/docs/reference/kubernetes-api/"
end
def get_latest_version(opts)
get_latest_github_release('kubernetes', 'kubernetes', opts)
end

@ -0,0 +1,26 @@
module Docs
class Nextjs < UrlScraper
self.name = 'Next.js'
self.slug = 'nextjs'
self.type = 'simple'
self.release = '14.2.4'
self.base_url = 'https://nextjs.org/docs'
self.initial_paths = %w(reference/)
self.links = {
home: 'https://www.nextjs.org/',
code: 'https://github.com/vercel/next.js'
}
html_filters.push 'nextjs/entries', 'nextjs/clean_html'
options[:download_images] = false
options[:attribution] = <<-HTML
&copy; 2024 Vercel, Inc.<br>
Licensed under the MIT License.
HTML
def get_latest_version(opts)
get_npm_version('next', opts)
end
end
end

@ -1,7 +1,6 @@
module Docs
class Nim < UrlScraper
self.type = 'simple'
self.release = '1.4.8'
self.base_url = 'https://nim-lang.org/docs/'
self.root_path = 'overview.html'
self.links = {
@ -14,10 +13,18 @@ module Docs
options[:skip] = %w(theindex.html docgen.html tut1.html tut2.html tut3.html tools.html)
options[:attribution] = <<-HTML
&copy; 2006&ndash;2021 Andreas Rumpf<br>
&copy; 2006&ndash;2024 Andreas Rumpf<br>
Licensed under the MIT License.
HTML
version do
self.release = '2.0.2'
end
version '1' do
self.release = '1.4.8'
end
def get_latest_version(opts)
doc = fetch_doc('https://nim-lang.org/docs/overview.html', opts)
doc.at_css('.container > .docinfo > tbody > tr:last-child > td').content.strip

@ -24,10 +24,15 @@ module Docs
HTML
version do
self.release = '20.8.0'
self.release = '22.3.0'
self.base_url = 'https://nodejs.org/api/'
end
version '20 LTS' do
self.release = '20.15.01'
self.base_url = 'https://nodejs.org/dist/latest-v20.x/docs/api/'
end
version '18 LTS' do
self.release = '18.18.0'
self.base_url = 'https://nodejs.org/dist/latest-v18.x/docs/api/'
@ -74,8 +79,8 @@ module Docs
end
def get_latest_version(opts)
doc = fetch_doc('https://nodejs.org/en/', opts)
doc.at_css('#home-intro > .home-downloadblock:last-of-type > a')['data-version'][1..-1]
tags = get_github_tags('nodejs', 'node', opts)
tags[0]['name'][1..-1]
end
end
end

@ -51,7 +51,7 @@ module Docs
def get_latest_version(opts)
doc = fetch_doc('https://octave.org/doc/interpreter/', opts)
doc.at_css('h1').content.scan(/([0-9.]+)/)[0][0]
doc.at_css('#SEC_Top + p').content.scan(/([0-9.]+)/)[1][0][0..-2]
end
end

@ -31,8 +31,8 @@ module Docs
end
def get_latest_version(opts)
doc = fetch_doc('https://docs.phalconphp.com/', opts)
doc.at_css('.header__lang.expand > div > ul > li > a').content
tags = get_github_tags('phalcon', 'cphalcon', opts)
tags[0]['name'][1..-1]
end
end
end

@ -0,0 +1,27 @@
module Docs
class Playwright < UrlScraper
self.name = 'Playwright'
self.type = 'simple'
self.release = '1.44.1'
self.base_url = 'https://playwright.dev/docs/'
self.root_path = 'intro'
self.links = {
home: 'https://playwright.dev/',
code: 'https://github.com/microsoft/playwright'
}
# Docusaurus like react_native
html_filters.push 'playwright/entries', 'playwright/clean_html'
options[:download_images] = false
# https://github.com/microsoft/playwright/blob/main/LICENSE
options[:attribution] = <<-HTML
&copy; 2024 Microsoft<br>
Licensed under the Apache License, Version 2.0.
HTML
def get_latest_version(opts)
get_npm_version('@playwright/test', opts)
end
end
end

@ -3,7 +3,6 @@ module Docs
self.name = 'PyTorch'
self.slug = 'pytorch'
self.type = 'sphinx'
self.force_gzip = true
self.links = {
home: 'https://pytorch.org/',
code: 'https://github.com/pytorch/pytorch'
@ -11,13 +10,12 @@ module Docs
html_filters.push 'pytorch/entries', 'pytorch/clean_html', 'sphinx/clean_html'
options[:skip] = ['cpp_index.html', 'packages.html', 'py-modindex.html', 'genindex.html']
options[:skip] = ['cpp_index.html', 'deploy.html', 'packages.html', 'py-modindex.html', 'genindex.html']
options[:skip_patterns] = [/\Acommunity/, /\A_modules/, /\Anotes/, /\Aorg\/pytorch\//]
options[:max_image_size] = 256_000
options[:attribution] = <<-HTML
&copy; 2019-2024 Torch Contributors<br>
Licensed under the 3-clause BSD License.
&copy; 2024, PyTorch Contributors<br>
PyTorch has a BSD-style license, as found in the <a href="https://github.com/pytorch/pytorch/blob/main/LICENSE">LICENSE</a> file.
HTML
version '2' do

@ -23,7 +23,7 @@ module Docs
HTML
def get_latest_version(opts)
get-npm-version("sanctuary-type-classes", opts)
get_npm_version("sanctuary-type-classes", opts)
end
end
end

@ -2,7 +2,7 @@ module Docs
class Sqlite < UrlScraper
self.name = 'SQLite'
self.type = 'sqlite'
self.release = '3.44.2'
self.release = '3.45.1'
self.base_url = 'https://sqlite.org/'
self.root_path = 'docs.html'
self.initial_paths = %w(keyword_index.html)

@ -7,7 +7,7 @@ module Docs
self.root_path = '/'
self.release = '3.3.2'
self.links = {
home: 'tps://tailwindcss.com/',
home: 'https://tailwindcss.com/',
code: 'https://github.com/tailwindlabs/tailwindcss'
}

@ -22,7 +22,7 @@ module Docs
html_filters.push 'vite/entries', 'vite/clean_html'
version do
self.release = '5.0.11'
self.release = '5.2.13'
self.base_url = 'https://vitejs.dev/'
end

@ -9,6 +9,7 @@ module Docs
}
options[:root_title] = 'Vitest'
options[:download_images] = false
options[:attribution] = <<-HTML
&copy; 2021-Present Anthony Fu<br>
@ -16,7 +17,7 @@ module Docs
Licensed under the MIT License.
HTML
self.release = '1.1.3'
self.release = '1.2.2'
self.base_url = 'https://vitest.dev/'
self.initial_paths = %w(guide/)
html_filters.push 'vitest/entries', 'vite/clean_html'

@ -19,7 +19,7 @@ module Docs
HTML
version '3' do
self.release = '3.4.5'
self.release = '3.4.27'
self.base_url = 'https://vuejs.org/'
self.initial_paths = %w(guide/introduction.html)
html_filters.push 'vue/entries_v3', 'vue/clean_html'

@ -2,7 +2,7 @@ module Docs
class Zig < UrlScraper
self.name = 'Zig'
self.type = 'simple'
self.release = '0.11.0'
self.release = '0.13.0'
self.base_url = "https://ziglang.org/documentation/#{self.release}/"
self.links = {
home: 'https://ziglang.org/',
@ -13,7 +13,7 @@ module Docs
options[:follow_links] = false
options[:attribution] = <<-HTML
&copy; 20152023, Zig contributors<br>
&copy; 20152024, Zig contributors<br>
Licensed under the MIT License.
HTML

6
package-lock.json generated

@ -0,0 +1,6 @@
{
"name": "devdocs",
"lockfileVersion": 3,
"requires": true,
"packages": {}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 641 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 797 B

@ -0,0 +1 @@
https://github.com/pallets/click/blob/main/docs/_static/click-icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -0,0 +1,2 @@
https://assets.vercel.com/image/upload/v1662130559/nextjs/Icon_dark_background.png
https://github.com/vercel/next.js/blob/canary/examples/cms-enterspeed/public/favicon/favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1 @@
https://playwright.dev/img/playwright-logo.svg

@ -0,0 +1,189 @@
<!--
&lt;--- Readme.md Snippet without images Start ---&gt;
## Tech Stack
freeCodeCamp/devdocs is built on the following main stack:
- [New Relic](http://newrelic.com) Performance Monitoring
- [Ruby](https://www.ruby-lang.org) Languages
- [Sinatra](http://www.sinatrarb.com/) Microframeworks (Backend)
- [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript) Languages
- [Capybara](http://jnicklas.github.io/capybara/) Testing Frameworks
- [GitHub Actions](https://github.com/features/actions) Continuous Integration
- [Docker](https://www.docker.com/) Virtual Machine Platforms & Containers
Full tech stack [here](/techstack.md)
&lt;--- Readme.md Snippet without images End ---&gt;
&lt;--- Readme.md Snippet with images Start ---&gt;
## Tech Stack
freeCodeCamp/devdocs is built on the following main stack:
- <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
- <img width='25' height='25' src='https://img.stackshare.io/service/989/ruby.png' alt='Ruby'/> [Ruby](https://www.ruby-lang.org) Languages
- <img width='25' height='25' src='https://img.stackshare.io/service/999/logo.png' alt='Sinatra'/> [Sinatra](http://www.sinatrarb.com/) Microframeworks (Backend)
- <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
- <img width='25' height='25' src='https://img.stackshare.io/service/2595/capybara.png' alt='Capybara'/> [Capybara](http://jnicklas.github.io/capybara/) Testing Frameworks
- <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
- <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
Full tech stack [here](/techstack.md)
&lt;--- Readme.md Snippet with images End ---&gt;
-->
<div align="center">
# Tech Stack File
![](https://img.stackshare.io/repo.svg "repo") [freeCodeCamp/devdocs](https://github.com/freeCodeCamp/devdocs)![](https://img.stackshare.io/public_badge.svg "public")
<br/><br/>
|43<br/>Tools used|01/27/24 <br/>Report generated|
|------|------|
</div>
## <img src='https://img.stackshare.io/languages.svg'/> Languages (3)
<table><tr>
<td align='center'>
<img width='36' height='36' src='https://img.stackshare.io/service/6727/css.png' alt='CSS 3'>
<br>
<sub><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS3">CSS 3</a></sub>
<br>
<sub></sub>
</td>
<td align='center'>
<img width='36' height='36' src='https://img.stackshare.io/service/1209/javascript.jpeg' alt='JavaScript'>
<br>
<sub><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript">JavaScript</a></sub>
<br>
<sub></sub>
</td>
<td align='center'>
<img width='36' height='36' src='https://img.stackshare.io/service/989/ruby.png' alt='Ruby'>
<br>
<sub><a href="https://www.ruby-lang.org">Ruby</a></sub>
<br>
<sub>v3.3.0</sub>
</td>
</tr>
</table>
## <img src='https://img.stackshare.io/frameworks.svg'/> Frameworks (1)
<table><tr>
<td align='center'>
<img width='36' height='36' src='https://img.stackshare.io/service/999/logo.png' alt='Sinatra'>
<br>
<sub><a href="http://www.sinatrarb.com/">Sinatra</a></sub>
<br>
<sub></sub>
</td>
</tr>
</table>
## <img src='https://img.stackshare.io/devops.svg'/> DevOps (7)
<table><tr>
<td align='center'>
<img width='36' height='36' src='https://img.stackshare.io/service/2595/capybara.png' alt='Capybara'>
<br>
<sub><a href="http://jnicklas.github.io/capybara/">Capybara</a></sub>
<br>
<sub></sub>
</td>
<td align='center'>
<img width='36' height='36' src='https://img.stackshare.io/service/586/n4u37v9t_400x400.png' alt='Docker'>
<br>
<sub><a href="https://www.docker.com/">Docker</a></sub>
<br>
<sub></sub>
</td>
<td align='center'>
<img width='36' height='36' src='https://img.stackshare.io/service/1046/git.png' alt='Git'>
<br>
<sub><a href="http://git-scm.com/">Git</a></sub>
<br>
<sub></sub>
</td>
<td align='center'>
<img width='36' height='36' src='https://img.stackshare.io/service/11563/actions.png' alt='GitHub Actions'>
<br>
<sub><a href="https://github.com/features/actions">GitHub Actions</a></sub>
<br>
<sub></sub>
</td>
<td align='center'>
<img width='36' height='36' src='https://img.stackshare.io/service/103/default_193410db3a7e419c7b436961bf41d733c7346b59.png' alt='New Relic'>
<br>
<sub><a href="http://newrelic.com">New Relic</a></sub>
<br>
<sub></sub>
</td>
<td align='center'>
<img width='36' height='36' src='https://img.stackshare.io/service/12795/5jL6-BA5_400x400.jpeg' alt='RubyGems'>
<br>
<sub><a href="https://rubygems.org/">RubyGems</a></sub>
<br>
<sub></sub>
</td>
<td align='center'>
<img width='36' height='36' src='https://img.stackshare.io/service/1120/lejvzrnlpb308aftn31u.png' alt='npm'>
<br>
<sub><a href="https://www.npmjs.com/">npm</a></sub>
<br>
<sub></sub>
</td>
</tr>
</table>
## <img src='https://img.stackshare.io/group.svg' /> Open source packages (32)</h2>
## <img width='24' height='24' src='https://img.stackshare.io/service/12795/5jL6-BA5_400x400.jpeg'/> RubyGems (32)
|NAME|VERSION|LAST UPDATED|LAST UPDATED BY|LICENSE|VULNERABILITIES|
|:------|:------|:------|:------|:------|:------|
|[activesupport](https://rubygems.org/activesupport)|v7.1.3|11/14/22|Paul Sernatinger |MIT|N/A|
|[better_errors](https://rubygems.org/better_errors)|v2.10.1|10/24/13|Thibaut |MIT|N/A|
|[browser](https://rubygems.org/browser)|v5.3.1|11/14/22|Paul Sernatinger |MIT|N/A|
|[chunky_png](https://rubygems.org/chunky_png)|v1.4.0|11/14/22|Paul Sernatinger |MIT|N/A|
|[erubi](https://rubygems.org/erubi)|v1.12.0|11/14/22|Paul Sernatinger |MIT|N/A|
|[html-pipeline](https://rubygems.org/html-pipeline)|v2.14.3|10/21/18|Thibaut Courouble |MIT|N/A|
|[image_optim](https://rubygems.org/image_optim)|v0.31.3|11/14/22|Paul Sernatinger |MIT|N/A|
|[image_optim_pack](https://rubygems.org/image_optim_pack)|v0.10.1|11/14/22|Paul Sernatinger |MIT|N/A|
|[minitest](https://rubygems.org/minitest)|v5.21.2|01/03/15|Thibaut |MIT|N/A|
|[net-sftp](https://rubygems.org/net-sftp)|v4.0.0|11/14/22|Paul Sernatinger |MIT|N/A|
|[newrelic_rpm](https://rubygems.org/newrelic_rpm)|v8.16.0|03/24/18|Thibaut Courouble |Apache-2.0|N/A|
|[nokogiri](https://rubygems.org/nokogiri)|v1.16.0|10/21/18|Thibaut Courouble |MIT|N/A|
|[progress_bar](https://rubygems.org/progress_bar)|v1.3.3|01/26/14|Thibaut |WTFPL|N/A|
|[pry-byebug](https://rubygems.org/pry-byebug)|v3.10.1|11/14/22|Paul Sernatinger |MIT|N/A|
|[rack](https://rubygems.org/rack)|v2.2.8|11/14/22|Paul Sernatinger |MIT|N/A|
|[rack-ssl-enforcer](https://rubygems.org/rack-ssl-enforcer)|v0.2.9|11/14/22|Paul Sernatinger |MIT|N/A|
|[rack-test](https://rubygems.org/rack-test)|v2.1.0|11/14/22|Paul Sernatinger |MIT|N/A|
|[rake](https://rubygems.org/rake)|v13.1.0|11/14/22|Paul Sernatinger |MIT|N/A|
|[redcarpet](https://rubygems.org/redcarpet)|v3.6.0|11/14/22|Paul Sernatinger |MIT|N/A|
|[rr](https://rubygems.org/rr)|v3.1.0|10/24/13|Thibaut |MIT|N/A|
|[sass](https://rubygems.org/sass)|v3.7.4|01/13/24|Simon Legner |MIT|N/A|
|[selenium-webdriver](https://rubygems.org/selenium-webdriver)|N/A|01/26/14|Thibaut |Apache-2.0|N/A|
|[sinatra-contrib](https://rubygems.org/sinatra-contrib)|v3.2.0|11/14/22|Paul Sernatinger |MIT|N/A|
|[sprockets](https://rubygems.org/sprockets)|v3.7.2|01/13/24|Simon Legner |MIT|N/A|
|[sprockets-helpers](https://rubygems.org/sprockets-helpers)|v1.4.0|01/13/24|Simon Legner |MIT|N/A|
|[sprockets-sass](https://rubygems.org/sprockets-sass)|N/A|01/13/24|Simon Legner |MIT|N/A|
|[terminal-table](https://rubygems.org/terminal-table)|v3.0.2|10/11/19|Jasper van Merle |MIT|N/A|
|[thin](https://rubygems.org/thin)|v1.8.2|11/14/22|Paul Sernatinger |GPL-2.0+,Ruby|N/A|
|[thor](https://rubygems.org/thor)|v1.3.0|11/14/22|Paul Sernatinger |MIT|N/A|
|[tty-pager](https://rubygems.org/tty-pager)|v0.14.0|01/24/16|Thibaut Courouble |MIT|N/A|
|[typhoeus](https://rubygems.org/typhoeus)|v1.4.1|11/14/22|Paul Sernatinger |MIT|N/A|
|[yajl-ruby](https://rubygems.org/yajl-ruby)|v1.4.3|01/09/24|Nicholas La Roux |MIT|N/A|
<br/>
<div align='center'>
Generated via [Stack File](https://github.com/marketplace/stack-file)

@ -0,0 +1,597 @@
repo_name: freeCodeCamp/devdocs
report_id: 281e8991a46b88702952b7b18dd5e2b0
version: 0.1
repo_type: Public
timestamp: '2024-01-27T03:50:22+00:00'
requested_by: renovate[bot]
provider: github
branch: main
detected_tools_count: 43
tools:
- name: CSS 3
description: The latest evolution of the Cascading Style Sheets language
website_url: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS3
open_source: true
hosted_saas: false
category: Languages & Frameworks
sub_category: Languages
image_url: https://img.stackshare.io/service/6727/css.png
detection_source_url: https://github.com/freeCodeCamp/devdocs
detection_source: Repo Metadata
- name: JavaScript
description: Lightweight, interpreted, object-oriented language with first-class
functions
website_url: https://developer.mozilla.org/en-US/docs/Web/JavaScript
open_source: true
hosted_saas: false
category: Languages & Frameworks
sub_category: Languages
image_url: https://img.stackshare.io/service/1209/javascript.jpeg
detection_source_url: https://github.com/freeCodeCamp/devdocs
detection_source: Repo Metadata
- name: Ruby
description: A dynamic, interpreted, open source programming language with a focus
on simplicity and productivity
website_url: https://www.ruby-lang.org
version: 3.3.0
open_source: true
hosted_saas: false
category: Languages & Frameworks
sub_category: Languages
image_url: https://img.stackshare.io/service/989/ruby.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Repo Metadata
last_updated_by: Thibaut
last_updated_on: 2013-10-24 18:25:52.000000000 Z
- name: Sinatra
description: Classy web-development dressed in a DSL
website_url: http://www.sinatrarb.com/
license: MIT
open_source: true
hosted_saas: false
category: Languages & Frameworks
sub_category: Microframeworks (Backend)
image_url: https://img.stackshare.io/service/999/logo.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile
detection_source: Gemfile
last_updated_by: Paul Sernatinger
last_updated_on: 2022-11-14 14:30:30.000000000 Z
- name: Capybara
description: Acceptance test framework for web applications
website_url: http://jnicklas.github.io/capybara/
license: MIT
open_source: true
hosted_saas: false
category: Build, Test, Deploy
sub_category: Testing Frameworks
image_url: https://img.stackshare.io/service/2595/capybara.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile
detection_source: Gemfile
last_updated_by: Thibaut
last_updated_on: 2014-01-26 21:01:54.000000000 Z
- name: Docker
description: Enterprise Container Platform for High-Velocity Innovation.
website_url: https://www.docker.com/
license: Apache-2.0
open_source: true
hosted_saas: false
category: Build, Test, Deploy
sub_category: Virtual Machine Platforms & Containers
image_url: https://img.stackshare.io/service/586/n4u37v9t_400x400.png
detection_source_url: https://github.com/freeCodeCamp/devdocs
detection_source: Repo Metadata
- name: Git
description: Fast, scalable, distributed revision control system
website_url: http://git-scm.com/
open_source: true
hosted_saas: false
category: Build, Test, Deploy
sub_category: Version Control System
image_url: https://img.stackshare.io/service/1046/git.png
detection_source_url: https://github.com/freeCodeCamp/devdocs
detection_source: Repo Metadata
- name: GitHub Actions
description: Automate your workflow from idea to production
website_url: https://github.com/features/actions
open_source: false
hosted_saas: true
category: Build, Test, Deploy
sub_category: Continuous Integration
image_url: https://img.stackshare.io/service/11563/actions.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/.github/workflows/build.yml
detection_source: ".github/workflows/build.yml"
last_updated_by: renovate[bot]
last_updated_on: 2023-03-25 01:01:01.000000000 Z
- name: New Relic
description: New Relic is the industrys largest and most comprehensive cloud-based
observability platform.
website_url: http://newrelic.com
open_source: false
hosted_saas: true
category: Monitoring
sub_category: Performance Monitoring
image_url: https://img.stackshare.io/service/103/default_193410db3a7e419c7b436961bf41d733c7346b59.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile
detection_source: Gemfile
last_updated_by: Thibaut Courouble
last_updated_on: 2018-03-24 19:06:19.000000000 Z
- name: RubyGems
description: Easily download, install, and use ruby software packages on your system
website_url: https://rubygems.org/
open_source: false
hosted_saas: false
category: Build, Test, Deploy
sub_category: Package Managers
image_url: https://img.stackshare.io/service/12795/5jL6-BA5_400x400.jpeg
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile
detection_source: Gemfile
last_updated_by: Thibaut
last_updated_on: 2013-10-24 18:25:52.000000000 Z
- name: npm
description: The package manager for JavaScript.
website_url: https://www.npmjs.com/
open_source: false
hosted_saas: false
category: Build, Test, Deploy
sub_category: Front End Package Manager
image_url: https://img.stackshare.io/service/1120/lejvzrnlpb308aftn31u.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile
detection_source: Gemfile
last_updated_by: Thibaut
last_updated_on: 2013-10-24 18:25:52.000000000 Z
- name: activesupport
description: A toolkit of support libraries and Ruby core extensions extracted from
the Rails framework
package_url: https://rubygems.org/activesupport
version: 7.1.3
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/18817/default_b17f14dbef6c1275120b34d9ec2eff5942499bd5.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Paul Sernatinger
last_updated_on: 2022-11-14 14:30:30.000000000 Z
- name: better_errors
description: Provides a better error page for Rails and other Rack apps
package_url: https://rubygems.org/better_errors
version: 2.10.1
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/19224/default_90da4313847baa579409c050c1ebb8de5a6e0fbc.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Thibaut
last_updated_on: 2013-10-24 18:25:52.000000000 Z
- name: browser
description: Do some browser detection with Ruby
package_url: https://rubygems.org/browser
version: 5.3.1
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/19740/default_dd31b4f280886d69f8a43459d55ecc7f1ae44486.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Paul Sernatinger
last_updated_on: 2022-11-14 14:30:30.000000000 Z
- name: chunky_png
description: This pure Ruby library can read and write PNG images without depending
on an external image library, like RMagick
package_url: https://rubygems.org/chunky_png
version: 1.4.0
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/19118/default_ab0024f54be625eb1e21abc015158fc74b2e3704.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Paul Sernatinger
last_updated_on: 2022-11-14 14:30:30.000000000 Z
- name: erubi
description: Erubi is a ERB template engine for ruby
package_url: https://rubygems.org/erubi
version: 1.12.0
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/rubygems/image.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Paul Sernatinger
last_updated_on: 2022-11-14 14:30:30.000000000 Z
- name: html-pipeline
description: GitHub HTML processing filters and utilities
package_url: https://rubygems.org/html-pipeline
version: 2.14.3
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/19386/default_b0770ebdd12e1eb479a98261d0175b1714524f87.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Thibaut Courouble
last_updated_on: 2018-10-21 22:41:35.000000000 Z
- name: image_optim
description: Command line tool and ruby interface to optimize
package_url: https://rubygems.org/image_optim
version: 0.31.3
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/19798/default_5acb201e8340ca5b337b8c46c2fcaff7aa0db0ec.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Paul Sernatinger
last_updated_on: 2022-11-14 14:30:30.000000000 Z
- name: image_optim_pack
description: 'Precompiled binaries for image_optim: advpng'
package_url: https://rubygems.org/image_optim_pack
version: 0.10.1
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/rubygems/image.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Paul Sernatinger
last_updated_on: 2022-11-14 14:30:30.000000000 Z
- name: minitest
description: Minitest provides a complete suite of testing facilities supporting
TDD, BDD, mocking, and benchmarking
package_url: https://rubygems.org/minitest
version: 5.21.2
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/18818/default_f36df1cfa9ff6061d7f9b4879088be8538581c49.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Thibaut
last_updated_on: 2015-01-03 15:38:22.000000000 Z
- name: net-sftp
description: A pure Ruby implementation of the SFTP client protocol
package_url: https://rubygems.org/net-sftp
version: 4.0.0
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/19106/default_92b412aaa5197ea1fc2d70a503018e4186714110.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Paul Sernatinger
last_updated_on: 2022-11-14 14:30:30.000000000 Z
- name: newrelic_rpm
description: New Relic is a performance management system, developed by New Relic,
Inc
package_url: https://rubygems.org/newrelic_rpm
version: 8.16.0
license: Apache-2.0
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/19246/default_518f3430d0c3ea4653c591ebd7e75da67f51cfaf.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Thibaut Courouble
last_updated_on: 2018-03-24 19:06:19.000000000 Z
- name: nokogiri
description: Nokogiri
package_url: https://rubygems.org/nokogiri
version: 1.16.0
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/18823/default_b8fbb83e23c963442e15398c5b56262cc6267d6f.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Thibaut Courouble
last_updated_on: 2018-10-21 22:41:35.000000000 Z
- name: progress_bar
description: 'Give people feedback about long-running tasks without overloading
them with information: Use a progress bar'
package_url: https://rubygems.org/progress_bar
version: 1.3.3
license: WTFPL
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/19696/default_2312d4d1847ef96af6bbd57ed9959234ab92321c.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Thibaut
last_updated_on: 2014-01-26 21:01:54.000000000 Z
- name: pry-byebug
description: Combine 'pry' with 'byebug'
package_url: https://rubygems.org/pry-byebug
version: 3.10.1
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/18848/default_1c2935fa69cec14d38adad302e002464101cd71f.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Paul Sernatinger
last_updated_on: 2022-11-14 14:30:30.000000000 Z
- name: rack
description: Rack provides a minimal, modular and adaptable interface for developing
web applications in Ruby
package_url: https://rubygems.org/rack
version: 2.2.8
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/18839/default_db5cfb0d85d9fd8bfb40a863581417a2a57791ab.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Paul Sernatinger
last_updated_on: 2022-11-14 14:30:30.000000000 Z
- name: rack-ssl-enforcer
description: Rack::SslEnforcer is a simple Rack middleware to enforce ssl connections
package_url: https://rubygems.org/rack-ssl-enforcer
version: 0.2.9
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/rubygems/image.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Paul Sernatinger
last_updated_on: 2022-11-14 14:30:30.000000000 Z
- name: rack-test
description: Rack::Test is a small, simple testing API for Rack apps
package_url: https://rubygems.org/rack-test
version: 2.1.0
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/18845/default_db5cfb0d85d9fd8bfb40a863581417a2a57791ab.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Paul Sernatinger
last_updated_on: 2022-11-14 14:30:30.000000000 Z
- name: rake
description: Rake is a Make-like program implemented in Ruby
package_url: https://rubygems.org/rake
version: 13.1.0
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/18812/default_f582e4648f4682adb72d2b201218cda7f8e894ac.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Paul Sernatinger
last_updated_on: 2022-11-14 14:30:30.000000000 Z
- name: redcarpet
description: A fast, safe and extensible Markdown to
package_url: https://rubygems.org/redcarpet
version: 3.6.0
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/18853/default_b87d202e13d56f87c63181fa49bc5e099c9abaac.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Paul Sernatinger
last_updated_on: 2022-11-14 14:30:30.000000000 Z
- name: rr
description: RR is a test double framework that features a rich selection of double
techniques and a terse syntax
package_url: https://rubygems.org/rr
version: 3.1.0
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/18915/default_353d3fd998e68372ebd6d80dbb4c0632f387d091.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Thibaut
last_updated_on: 2013-10-24 18:25:52.000000000 Z
- name: sass
description: Ruby Sass is deprecated! See https://sass-lang.com/ruby-sass for details
package_url: https://rubygems.org/sass
version: 3.7.4
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/18882/default_b1cb499f3e62fe773109c989f76e3365fbe49857.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Simon Legner
last_updated_on: 2024-01-13 21:26:48.000000000 Z
- name: selenium-webdriver
description: WebDriver is a tool for writing automated tests of websites
package_url: https://rubygems.org/selenium-webdriver
license: Apache-2.0
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/18901/default_f0ad2b1ffbe10fdd866f9f8e5f812599d9e8085b.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile
detection_source: Gemfile
last_updated_by: Thibaut
last_updated_on: 2014-01-26 21:01:54.000000000 Z
- name: sinatra-contrib
description: Collection of useful Sinatra extensions
package_url: https://rubygems.org/sinatra-contrib
version: 3.2.0
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/19010/default_4361ccfae4dee655802081d8182ddcaebd7a2b3f.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Paul Sernatinger
last_updated_on: 2022-11-14 14:30:30.000000000 Z
- name: sprockets
description: Sprockets is a Rack-based asset packaging system that concatenates
and serves JavaScript
package_url: https://rubygems.org/sprockets
version: 3.7.2
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/18932/default_36bbb38c1cd5521e90d6e99982778960b00ec515.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Simon Legner
last_updated_on: 2024-01-13 21:26:48.000000000 Z
- name: sprockets-helpers
description: Asset path helpers for Sprockets 2.x &amp;amp; 3.x applications
package_url: https://rubygems.org/sprockets-helpers
version: 1.4.0
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/19732/default_be22d39d0c697424d0da2019daf25b87c93b4c6e.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Simon Legner
last_updated_on: 2024-01-13 21:26:48.000000000 Z
- name: sprockets-sass
description: When using Sprockets 2.0 with Sass you will eventually run into a pretty
big issue
package_url: https://rubygems.org/sprockets-sass
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/19683/default_5a5984fb57132e73bff841a1ebf058577d3c8cb9.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile
detection_source: Gemfile
last_updated_by: Simon Legner
last_updated_on: 2024-01-13 21:26:48.000000000 Z
- name: terminal-table
description: Simple, feature rich ascii table generation library
package_url: https://rubygems.org/terminal-table
version: 3.0.2
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/18923/default_401820e785202ca0018a36ea3e12ee9a92b3efac.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Jasper van Merle
last_updated_on: 2019-10-11 15:55:09.000000000 Z
- name: thin
description: A thin and fast web server
package_url: https://rubygems.org/thin
version: 1.8.2
license: GPL-2.0+,Ruby
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/18900/default_f0ad2b1ffbe10fdd866f9f8e5f812599d9e8085b.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Paul Sernatinger
last_updated_on: 2022-11-14 14:30:30.000000000 Z
- name: thor
description: Thor is a toolkit for building powerful command-line interfaces
package_url: https://rubygems.org/thor
version: 1.3.0
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/18827/default_fa0604c1b3b2c413c942b4fa310935704d314c2f.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Paul Sernatinger
last_updated_on: 2022-11-14 14:30:30.000000000 Z
- name: tty-pager
description: Terminal output paging in a cross-platform way supporting all major
ruby interpreters
package_url: https://rubygems.org/tty-pager
version: 0.14.0
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/rubygems/image.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Thibaut Courouble
last_updated_on: 2016-01-24 15:03:12.000000000 Z
- name: typhoeus
description: Like a modern code version of the mythical beast with 100 serpent heads
package_url: https://rubygems.org/typhoeus
version: 1.4.1
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/18891/default_b7088ec778267614a78a5a472c67252ec1721d10.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Paul Sernatinger
last_updated_on: 2022-11-14 14:30:30.000000000 Z
- name: yajl-ruby
description: Ruby C bindings to the excellent Yajl JSON stream-based parser library
package_url: https://rubygems.org/yajl-ruby
version: 1.4.3
license: MIT
open_source: true
hosted_saas: false
category: Libraries
sub_category: RubyGems Packages
image_url: https://img.stackshare.io/package/18895/default_9386886dd1c6c396a11bd4b49732afb9ec444f8d.png
detection_source_url: https://github.com/freeCodeCamp/devdocs/blob/main/Gemfile.lock
detection_source: Gemfile
last_updated_by: Nicholas La Roux
last_updated_on: 2024-01-09 12:48:51.000000000 Z
Loading…
Cancel
Save