aboutsummaryrefslogtreecommitdiff
path: root/sandbox/testAppNevena/Front/node_modules/validate-npm-package-name/index.js
diff options
context:
space:
mode:
authorDanijel Andjelkovic <adanijel99@gmail.com>2022-03-01 20:21:29 +0000
committerDanijel Andjelkovic <adanijel99@gmail.com>2022-03-01 20:21:29 +0000
commit61cb1570a3410c85a4489b97c172e3a50715f36c (patch)
tree8fe4a5b77ea54bba80abc817ce2c9ef0e79e7e66 /sandbox/testAppNevena/Front/node_modules/validate-npm-package-name/index.js
parent21a53d349788c99d2007cba91a923db982353b31 (diff)
parenta9ee9e0a500a4a15bd0b5dcaf041f827228ed309 (diff)
Merge branch 'researchML' into 'dev'
Research ml See merge request igrannonica/neuronstellar!6
Diffstat (limited to 'sandbox/testAppNevena/Front/node_modules/validate-npm-package-name/index.js')
-rw-r--r--sandbox/testAppNevena/Front/node_modules/validate-npm-package-name/index.js105
1 files changed, 105 insertions, 0 deletions
diff --git a/sandbox/testAppNevena/Front/node_modules/validate-npm-package-name/index.js b/sandbox/testAppNevena/Front/node_modules/validate-npm-package-name/index.js
new file mode 100644
index 00000000..eb43fa25
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/validate-npm-package-name/index.js
@@ -0,0 +1,105 @@
+'use strict'
+
+var scopedPackagePattern = new RegExp('^(?:@([^/]+?)[/])?([^/]+?)$')
+var builtins = require('builtins')
+var blacklist = [
+ 'node_modules',
+ 'favicon.ico'
+]
+
+var validate = module.exports = function (name) {
+ var warnings = []
+ var errors = []
+
+ if (name === null) {
+ errors.push('name cannot be null')
+ return done(warnings, errors)
+ }
+
+ if (name === undefined) {
+ errors.push('name cannot be undefined')
+ return done(warnings, errors)
+ }
+
+ if (typeof name !== 'string') {
+ errors.push('name must be a string')
+ return done(warnings, errors)
+ }
+
+ if (!name.length) {
+ errors.push('name length must be greater than zero')
+ }
+
+ if (name.match(/^\./)) {
+ errors.push('name cannot start with a period')
+ }
+
+ if (name.match(/^_/)) {
+ errors.push('name cannot start with an underscore')
+ }
+
+ if (name.trim() !== name) {
+ errors.push('name cannot contain leading or trailing spaces')
+ }
+
+ // No funny business
+ blacklist.forEach(function (blacklistedName) {
+ if (name.toLowerCase() === blacklistedName) {
+ errors.push(blacklistedName + ' is a blacklisted name')
+ }
+ })
+
+ // Generate warnings for stuff that used to be allowed
+
+ // core module names like http, events, util, etc
+ builtins.forEach(function (builtin) {
+ if (name.toLowerCase() === builtin) {
+ warnings.push(builtin + ' is a core module name')
+ }
+ })
+
+ // really-long-package-names-------------------------------such--length-----many---wow
+ // the thisisareallyreallylongpackagenameitshouldpublishdowenowhavealimittothelengthofpackagenames-poch.
+ if (name.length > 214) {
+ warnings.push('name can no longer contain more than 214 characters')
+ }
+
+ // mIxeD CaSe nAMEs
+ if (name.toLowerCase() !== name) {
+ warnings.push('name can no longer contain capital letters')
+ }
+
+ if (/[~'!()*]/.test(name.split('/').slice(-1)[0])) {
+ warnings.push('name can no longer contain special characters ("~\'!()*")')
+ }
+
+ if (encodeURIComponent(name) !== name) {
+ // Maybe it's a scoped package name, like @user/package
+ var nameMatch = name.match(scopedPackagePattern)
+ if (nameMatch) {
+ var user = nameMatch[1]
+ var pkg = nameMatch[2]
+ if (encodeURIComponent(user) === user && encodeURIComponent(pkg) === pkg) {
+ return done(warnings, errors)
+ }
+ }
+
+ errors.push('name can only contain URL-friendly characters')
+ }
+
+ return done(warnings, errors)
+}
+
+validate.scopedPackagePattern = scopedPackagePattern
+
+var done = function (warnings, errors) {
+ var result = {
+ validForNewPackages: errors.length === 0 && warnings.length === 0,
+ validForOldPackages: errors.length === 0,
+ warnings: warnings,
+ errors: errors
+ }
+ if (!result.warnings.length) delete result.warnings
+ if (!result.errors.length) delete result.errors
+ return result
+}