Rearrange the structure of src folders

This commit is contained in:
Faisal Salman 2023-04-21 09:47:51 +07:00
parent 29fb85658a
commit 9102871dea
10 changed files with 55 additions and 51 deletions

View File

@ -142,20 +142,21 @@
"Zach Bjornson <zbbjornson@gmail.com>" "Zach Bjornson <zbbjornson@gmail.com>"
], ],
"type": "commonjs", "type": "commonjs",
"main": "src/ua-parser.js", "main": "src/main/ua-parser.js",
"module": "src/module/ua-parser.mjs", "module": "src/main/ua-parser.mjs",
"browser": "dist/ua-parser.pack.js",
"exports": { "exports": {
".": { ".": {
"require": "./src/ua-parser.js", "require": "./src/main/ua-parser.js",
"import": "./src/module/ua-parser.mjs" "import": "./src/main/ua-parser.mjs"
}, },
"./enums": { "./enums": {
"require": "./src/ua-parser-enum.js", "require": "./src/enums/ua-parser-enums.js",
"import": "./src/module/ua-parser-enum.mjs" "import": "./src/enums/ua-parser-enums.mjs"
}, },
"./extensions": { "./extensions": {
"require": "./src/ua-parser-extension.js", "require": "./src/extensions/ua-parser-extensions.js",
"import": "./src/module/ua-parser-extension.mjs" "import": "./src/extensions/ua-parser-extensions.mjs"
} }
}, },
"files": [ "files": [

View File

@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
SRC_PATH="src/ua-parser.js" SRC_PATH="src/main/ua-parser.js"
MIN_PATH="dist/ua-parser.min.js" MIN_PATH="dist/ua-parser.min.js"
PACK_PATH="dist/ua-parser.pack.js" PACK_PATH="dist/ua-parser.pack.js"

View File

@ -3,19 +3,19 @@
const fs = require('fs'); const fs = require('fs');
const PATH = { const PATH = {
main : { main : {
src : 'src/ua-parser.js', src : 'src/main/ua-parser.js',
dest : 'src/module/ua-parser.mjs', dest : 'src/main/ua-parser.mjs',
title : '' title : ''
}, },
enum : { enums : {
src : 'src/ua-parser-enum.js', src : 'src/enums/ua-parser-enums.js',
dest :'src/module/ua-parser-enum.mjs', dest :'src/enums/ua-parser-enums.mjs',
title : 'enum' title : 'enums'
}, },
extension : { extensions : {
src : 'src/ua-parser-extension.js', src : 'src/extensions/ua-parser-extensions.js',
dest : 'src/module/ua-parser-extension.mjs', dest : 'src/extensions/ua-parser-extensions.mjs',
title : 'extension' title : 'extensions'
} }
}; };
const generateMJS = (module, replacers) => { const generateMJS = (module, replacers) => {
@ -30,15 +30,11 @@ const generateMJS = (module, replacers) => {
fs.writeFileSync(dest, fs.writeFileSync(dest,
`// Generated ESM version of UAParser.js ${title} `// Generated ESM version of UAParser.js ${title}
// DO NOT EDIT THIS FILE! // DO NOT EDIT THIS FILE!
// Source: /src/ua-parser.js // Source: /${src}
${text}`, 'utf-8'); ${text}`, 'utf-8');
}; };
if (!fs.existsSync('src/module')) {
fs.mkdirSync('src/module', { recursive: true });
}
// ua-parser.mjs // ua-parser.mjs
generateMJS('main', [ generateMJS('main', [
[/\(func[\s\S]+strict\';/ig, ''], [/\(func[\s\S]+strict\';/ig, ''],
@ -47,7 +43,7 @@ generateMJS('main', [
]); ]);
// ua-parser-enum.mjs // ua-parser-enum.mjs
generateMJS('enum', [[/module\.exports =/ig, 'export']]); generateMJS('enums', [[/module\.exports =/ig, 'export']]);
// ua-parser-extension.mjs // ua-parser-extension.mjs
generateMJS('extension', [[/module\.exports =/ig, 'export']]); generateMJS('extensions', [[/module\.exports =/ig, 'export']]);

View File

@ -1,6 +1,6 @@
// Generated ESM version of UAParser.js enums // Generated ESM version of UAParser.js enums
// DO NOT EDIT THIS FILE! // DO NOT EDIT THIS FILE!
// Source: /src/ua-parser-enum.js // Source: /src/enums/ua-parser-enums.js
/////////////////////////////////////////////// ///////////////////////////////////////////////
/* Enums for UAParser.js v2.0.0-alpha.2 /* Enums for UAParser.js v2.0.0-alpha.2

View File

@ -1,6 +1,6 @@
// Generated ESM version of UAParser.js extensions // Generated ESM version of UAParser.js extensions
// DO NOT EDIT THIS FILE! // DO NOT EDIT THIS FILE!
// Source: /src/ua-parser-extension.js // Source: /src/extensions/ua-parser-extensions.js
/////////////////////////////////////////////// ///////////////////////////////////////////////
/* Extensions for UAParser.js v2.0.0-alpha.2 /* Extensions for UAParser.js v2.0.0-alpha.2
@ -19,10 +19,19 @@ const VERSION = 'version';
const MOBILE = 'mobile'; const MOBILE = 'mobile';
const TABLET = 'tablet'; const TABLET = 'tablet';
const Apps = Object.freeze({
browser : [
[/chatlyio\/([\d\.]+)/i], [VERSION, 'Slack', [TYPE, 'app']]
]
});
const Bots = Object.freeze({ const Bots = Object.freeze({
browser : [ browser : [
// Googlebot / BingBot / MSNBot / FacebookBot // Googlebot / BingBot / MSNBot / FacebookBot
[/((?:google|bing|msn|facebook)bot(?:\-[imagevdo]{5})?|bingpreview)\/([\w\.]+)/i], [NAME, VERSION, [TYPE, 'bot']] [/((?:google|bing|msn|facebook)bot(?:\-[imagevdo]{5})?|bingpreview)\/([\w\.]+)/i], [NAME, VERSION, [TYPE, 'bot']],
// Slackbot - https://api.slack.com/robots
[/(slack(?:bot)?(?:-imgproxy|-linkexpanding)?) ([\w\.]+)/i], [NAME, VERSION, [TYPE, 'bot']]
] ]
}); });
@ -111,16 +120,17 @@ const Emails = Object.freeze({
] ]
}); });
const Tools = Object.freeze({ const CLI = Object.freeze({
browser : [ browser : [
// wget / curl / lynx // wget / curl / lynx
[/(wget|curl|lynx)\/([\w\.]+)/i], [NAME, VERSION, [TYPE, 'tool']] [/(wget|curl|lynx)\/([\w\.]+)/i], [NAME, VERSION, [TYPE, 'cli']]
] ]
}); });
export { export {
Apps,
Bots, Bots,
ExtraDevices, ExtraDevices,
Emails, Emails,
Tools CLI
}; };

View File

@ -1,6 +1,6 @@
// Generated ESM version of UAParser.js // Generated ESM version of UAParser.js
// DO NOT EDIT THIS FILE! // DO NOT EDIT THIS FILE!
// Source: /src/ua-parser.js // Source: /src/main/ua-parser.js
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
/* UAParser.js v2.0.0-alpha.2 /* UAParser.js v2.0.0-alpha.2
@ -734,7 +734,7 @@
// iOS/macOS // iOS/macOS
/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i, // iOS /ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i, // iOS
/ios;fbsv\/([\d\.]+)/i, /(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,
/cfnetwork\/.+darwin/i /cfnetwork\/.+darwin/i
], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [ ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [
/(mac os x) ?([\w\. ]*)/i, /(mac os x) ?([\w\. ]*)/i,
@ -920,10 +920,10 @@
// Constructor // Constructor
//////////////// ////////////////
function UACHData (uach, isHTTP_UACH) { function UACHData (uach, isHttpUACH) {
uach = uach || {}; uach = uach || {};
setProps.call(this, CH_ALL_VALUES); setProps.call(this, CH_ALL_VALUES);
if (isHTTP_UACH) { if (isHttpUACH) {
setProps.call(this, [ setProps.call(this, [
[BRANDS, itemListToArray(uach[CH_HEADER])], [BRANDS, itemListToArray(uach[CH_HEADER])],
[FULLVERLIST, itemListToArray(uach[CH_HEADER_FULL_VER_LIST])], [FULLVERLIST, itemListToArray(uach[CH_HEADER_FULL_VER_LIST])],
@ -1108,15 +1108,12 @@
return new UAParser(ua, extensions, headers).getResult(); return new UAParser(ua, extensions, headers).getResult();
} }
var userAgent = ua || var userAgent = typeof ua === STR_TYPE ? ua : // Passed user-agent string
((NAVIGATOR && NAVIGATOR.userAgent) ? ((NAVIGATOR && NAVIGATOR.userAgent) ? NAVIGATOR.userAgent : // navigator.userAgent
NAVIGATOR.userAgent : (headers && headers[USER_AGENT] ? headers[USER_AGENT] : // User-Agent from passed headers
(headers && headers[USER_AGENT] ? EMPTY)), // empty string
headers[USER_AGENT] :
EMPTY)),
HTTP_UACH = new UACHData(headers, true),
httpUACH = new UACHData(headers, true),
regexMap = extensions ? regexMap = extensions ?
extend(defaultRegexes, extensions) : extend(defaultRegexes, extensions) :
defaultRegexes, defaultRegexes,
@ -1124,7 +1121,7 @@
createItemFunc = function (itemType) { createItemFunc = function (itemType) {
if (itemType == UA_RESULT) { if (itemType == UA_RESULT) {
return function () { return function () {
return new UAItem(itemType, userAgent, regexMap, HTTP_UACH) return new UAItem(itemType, userAgent, regexMap, httpUACH)
.set('ua', userAgent) .set('ua', userAgent)
.set(UA_BROWSER, this.getBrowser()) .set(UA_BROWSER, this.getBrowser())
.set(UA_CPU, this.getCPU()) .set(UA_CPU, this.getCPU())
@ -1135,7 +1132,7 @@
}; };
} else { } else {
return function () { return function () {
return new UAItem(itemType, userAgent, regexMap[itemType], HTTP_UACH) return new UAItem(itemType, userAgent, regexMap[itemType], httpUACH)
.parseUA() .parseUA()
.get(); .get();
}; };

View File

@ -4,7 +4,7 @@ var assert = require('assert');
var requirejs = require('requirejs'); var requirejs = require('requirejs');
var parseJS = require('@babel/parser').parse; var parseJS = require('@babel/parser').parse;
var traverse = require('@babel/traverse').default; var traverse = require('@babel/traverse').default;
var UAParser = require('../src/ua-parser'); var UAParser = require('ua-parser-js');
var browsers = require('./specs/browser-all.json'); var browsers = require('./specs/browser-all.json');
var cpus = require('./specs/cpu-all.json'); var cpus = require('./specs/cpu-all.json');
var devices = require('./specs/device-all.json'); var devices = require('./specs/device-all.json');
@ -159,7 +159,7 @@ describe('Testing regexes', function () {
var regexes; var regexes;
before('Read main js file', function () { before('Read main js file', function () {
var code = fs.readFileSync('src/ua-parser.js', 'utf8').toString(); var code = fs.readFileSync('src/main/ua-parser.js', 'utf8').toString();
var ast = parseJS(code, { sourceType: "script" }); var ast = parseJS(code, { sourceType: "script" });
regexes = []; regexes = [];
traverse(ast, { traverse(ast, {