From 80bd43af6f0ce381bdd9ecb3155a9194532a269b Mon Sep 17 00:00:00 2001 From: MasterEnoc Date: Sat, 12 Dec 2020 16:01:01 -0600 Subject: [PATCH 1/2] Update Npm to 7.1.2 --- lib/docs/filters/npm/clean_html.rb | 29 +++------------- lib/docs/filters/npm/entries.rb | 38 ++++++--------------- lib/docs/scrapers/npm.rb | 55 ++++++++++++++++++++++++++---- 3 files changed, 65 insertions(+), 57 deletions(-) diff --git a/lib/docs/filters/npm/clean_html.rb b/lib/docs/filters/npm/clean_html.rb index 86264799..3f85bf6c 100644 --- a/lib/docs/filters/npm/clean_html.rb +++ b/lib/docs/filters/npm/clean_html.rb @@ -2,36 +2,17 @@ module Docs class Npm class CleanHtmlFilter < Filter def call - if root_page? - css('#enterprise', '#policies', '#viewAll').remove - else - @doc = doc.at_css('#page') - css('meta', '.colophon').remove - end - css('a.deep-link[id]', 'a.anchor[id]').each do |node| - node.parent['id'] = node['id'] - node.remove - end + css('.dZYhXG', '.fONtKn').remove - css('> section').each do |node| - node.before(node.children).remove - end + css('.kSYjyK').remove - css('pre.editor').each do |node| - node.inner_html = node.inner_html.gsub(/<\/div>(?!\n|\z)/, "\n") - end + css('.cDvIaH').remove - css('h1 + h1.subtitle').each do |node| - node.name = 'p' - node.inner_html += '.' - end - - css('pre').each do |node| - node.content = node.content - end + css('.jRndWL').remove_attribute('style') doc + end end end diff --git a/lib/docs/filters/npm/entries.rb b/lib/docs/filters/npm/entries.rb index 6bf1374e..7e31adde 100644 --- a/lib/docs/filters/npm/entries.rb +++ b/lib/docs/filters/npm/entries.rb @@ -1,43 +1,27 @@ module Docs class Npm class EntriesFilter < Docs::EntriesFilter - def get_name - if slug.start_with?('api') && at_css('pre').content =~ /\A\s*npm\.([\w\-]+\.)*[\w\-]+/ - name = $&.strip - else - name = at_css('nav > section.active a.active').content - end - name << ' (CLI)' if slug.start_with?('cli') - name + def get_name + at_css('h1').content end def get_type - case slug - when 'files/package.json' - 'package.json' - when 'misc/config' - 'Config' - else - at_css('nav > section.active > h2').content - end + at_css('.active').content end def additional_entries - case slug - when 'files/package.json' - css('#page > h2').each_with_object [] do |node, entries| - next if node.content =~ /\A[A-Z]/ - entries << ["package.json: #{node.content}", node.at_css('.anchor')['id']] - end - when 'misc/config' - css('h2:contains("Config Settings") ~ h3').map do |node| - ["config: #{node.content}", node.at_css('.anchor')['id']] + entries = [] + + if name == 'config' + css('h4').each do |node| + entries << [node['id'], slug + '#' + node['id'], 'Config Settings'] end - else - [] end + + entries end + end end end diff --git a/lib/docs/scrapers/npm.rb b/lib/docs/scrapers/npm.rb index 3f868a3c..5fa3764b 100644 --- a/lib/docs/scrapers/npm.rb +++ b/lib/docs/scrapers/npm.rb @@ -2,7 +2,7 @@ module Docs class Npm < UrlScraper self.name = 'npm' self.type = 'npm' - self.release = '6.4.0' + self.release = '7.1.2' self.base_url = 'https://docs.npmjs.com/' self.force_gzip = true self.links = { @@ -10,14 +10,20 @@ module Docs code: 'https://github.com/npm/npm' } - html_filters.push 'npm/entries', 'npm/clean_html', 'title' + html_filters.push 'npm/entries', 'npm/clean_html' options[:max_image_size] = 130_000 - options[:container] = ->(filter) { filter.root_page? ? '.toc' : nil } - options[:title] = false - options[:root_title] = 'npm' - options[:skip] = %w(all misc/index) + options[:skip] = [ + 'all', + 'misc/index', + 'cli', + 'orgs/', + 'removing-members-from-your-org', + 'adding-members-to-your-org', + 'downloading-and-installing-packages' + ] + options[:skip_patterns] = [ /\Aenterprise/, /\Acompany/, @@ -30,8 +36,45 @@ module Docs npm is a trademark of npm, Inc. HTML + # fix duplicates + options[:fix_urls] = -> (url) do + url.sub!('private-modules/intro', 'creating-and-publishing-private-packages') + url.sub!('cli/audit', 'cli/v6/commands/npm-audit') + url.sub!('cli/uninstall', 'cli/v6/commands/npm-uninstall') + url.sub!('cli/npm', 'cli/v6/commands/npm') + url.sub!('cli-documentation', 'cli/v6') + url.sub!('misc/registry', 'cli/v6/using-npm/registry') + url.sub!('cli/adduser', 'cli/v6/commands/npm-adduser') + url.sub!('cli/profile', 'cli/v6/commands/npm-profile') + url.sub!('cli/token', 'cli/v6/commands/npm-token') + url.sub!('cli/publish', 'cli/v6/commands/npm-publish') + url.sub!('cli/unpublish', 'cli/v6/commands/npm-unpublish') + url.sub!('cli/deprecate', 'cli/v6/commands/npm-deprecate') + url.sub!('cli/access', 'cli/v6/commands/npm-access') + url.sub!('misc/config', 'cli/v6/using-npm/config') + url.sub!('misc/developers', 'cli/v6/using-npm/developers') + url.sub!('managing-team-access-to-packages', 'managing-team-access-to-organization-packages') + url.sub!('accepting-or-rejecting-an-org-invitation', 'accepting-or-rejecting-an-organization-invitation') + url.sub!('org-roles-and-permissions', 'organization-roles-and-permissions') + url.sub!('upgrading-to-a-paid-org-plan', 'upgrading-to-a-paid-organization-plan') + url.sub!('files/package.json', 'cli/v6/configuring-npm/package-json') + url.sub!('managing-team-access-to-org-packages', 'managing-team-access-to-organization-packages') + url.sub!('about-package-json-and-package-lock-json-files', 'creating-a-package-json-file') + url.sub!('cli/team', 'cli/v6/commands/npm-team') + url.sub!('cli/version', 'cli/v6/commands/npm-version') + url.sub!('creating-a-packge-json-file', 'cli/v6/configuring-npm/package-json') + url.sub!('cli/outdated', 'cli/v6/commands/npm-outdated') + url.sub!('cli/owner', 'cli/v6/commands/npm-owner') + url.sub!('cli/install', 'cli/v6/commands/npm-install') + url.sub!('cli/update', 'cli/v6/commands/npm-update') + url.sub!('cli/config', 'cli/v6/commands/npm-config') + url.sub!('cli/dist-tag', 'cli/v6/commands/npm-dist-tag') + url + end + def get_latest_version(opts) get_latest_github_release('npm', 'cli', opts) end + end end From 2386c4d34e4a5c5e964cdbbaf378fcc20c05590b Mon Sep 17 00:00:00 2001 From: MasterEnoc Date: Thu, 17 Dec 2020 10:55:54 -0600 Subject: [PATCH 2/2] Add 'package.json' section --- lib/docs/filters/npm/entries.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/docs/filters/npm/entries.rb b/lib/docs/filters/npm/entries.rb index 7e31adde..8291d7a7 100644 --- a/lib/docs/filters/npm/entries.rb +++ b/lib/docs/filters/npm/entries.rb @@ -19,6 +19,12 @@ module Docs end end + if name == 'package.json' + css('h3').each do |node| + entries << [node['id'], slug + '#' + node['id'], 'Package.json Settings'] + end + end + entries end