Skip to content

Commit 9285ce3

Browse files
author
Shubham Kanodia
committed
Fix gitignore
1 parent 4fb47f4 commit 9285ce3

File tree

9 files changed

+137
-1155
lines changed

9 files changed

+137
-1155
lines changed

.github/workflows/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ jobs:
1616
with:
1717
node-version: ${{ matrix.node-version }}
1818
- run: yarn install
19-
- run: yarn build
2019
- run: yarn typecheck
20+
- run: yarn build
2121
- run: yarn test

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
node_modules
22
yarn-error.log
3-
lib/index.js
4-
.yarn/cache
3+
lib
4+
.yarn/cache

.yarn/install-state.gz

-562 KB
Binary file not shown.

.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs

Lines changed: 0 additions & 363 deletions
This file was deleted.

.yarn/releases/yarn-3.1.1.cjs

Lines changed: 0 additions & 768 deletions
This file was deleted.

index.ts

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ const browserNameMap: Record<string, string> = {
2424
}
2525

2626
function resolveUserAgent(uaString: string): { family: string | null, version: string | null } {
27-
const parsedUANew = UAParser(uaString)
28-
const parsedBrowserVersion = semverify(parsedUANew.browser.version)
29-
const parsedOSVersion = semverify(parsedUANew.os.version)
30-
const parsedEngineVersion = semverify(parsedUANew.engine.version)
27+
const parsedUA = UAParser(uaString)
28+
const parsedBrowserVersion = semverify(parsedUA.browser.version)
29+
const parsedOSVersion = semverify(parsedUA.os.version)
30+
const parsedEngineVersion = semverify(parsedUA.engine.version)
3131

3232
// Case A: For Safari on iOS, the use the browser version
3333
if (
34-
parsedUANew.browser.name === 'Safari' && parsedUANew.os.name === 'iOS') {
34+
parsedUA.browser.name === 'Safari' && parsedUA.os.name === 'iOS') {
3535
return {
3636
family: 'iOS',
3737
version: parsedBrowserVersion,
@@ -43,61 +43,72 @@ function resolveUserAgent(uaString: string): { family: string | null, version: s
4343
// version. This is based on the assumption that the
4444
// underlying Safari Engine used will be *atleast* equal
4545
// to the iOS version it's running on.
46-
if (parsedUANew.os.name === 'iOS') {
46+
if (parsedUA.os.name === 'iOS') {
4747
return {
4848
family: 'iOS',
4949
version: parsedOSVersion
5050
}
5151
}
5252

5353
if (
54-
(parsedUANew.browser.name === 'Opera' && parsedUANew.device.type === 'mobile') ||
55-
parsedUANew.browser.name === 'Opera Mobi'
54+
(parsedUA.browser.name === 'Opera' && parsedUA.device.type === 'mobile') ||
55+
parsedUA.browser.name === 'Opera Mobi'
5656
) {
5757
return {
5858
family: 'OperaMobile',
5959
version: parsedBrowserVersion
6060
}
6161
}
6262

63-
if (parsedUANew.browser.name === 'Samsung Browser') {
63+
if (parsedUA.browser.name === 'Samsung Browser') {
6464
return {
6565
family: 'Samsung',
6666
version: parsedBrowserVersion
6767
}
6868
}
6969

70-
if (parsedUANew.browser.name === 'IE') {
70+
if (parsedUA.browser.name === 'IE') {
7171
return {
7272
family: 'Explorer',
7373
version: parsedBrowserVersion
7474
}
7575
}
7676

77-
if (parsedUANew.browser.name === 'IEMobile') {
77+
if (parsedUA.browser.name === 'IEMobile') {
7878
return {
7979
family: 'ExplorerMobile',
8080
version: parsedBrowserVersion
8181
}
8282
}
8383

8484
// Use engine version for gecko-based browsers
85-
if (parsedUANew.engine.name === 'Gecko') {
85+
if (parsedUA.engine.name === 'Gecko') {
8686
return {
8787
family: 'Firefox',
8888
version: parsedEngineVersion
8989
}
9090
}
9191

9292
// Use engine version for blink-based browsers
93-
if (parsedUANew.engine.name === 'Blink') {
93+
if (parsedUA.engine.name === 'Blink') {
9494
return {
9595
family: 'Chrome',
9696
version: parsedEngineVersion
9797
}
9898
}
9999

100-
if (parsedUANew.browser.name === 'Android Browser') {
100+
// Chrome based browsers pre-blink (WebKit)
101+
if (
102+
parsedUA.browser.name &&
103+
['Chrome', 'Chromium', 'Chrome WebView', 'Chrome Headless'].includes(parsedUA.browser.name)
104+
) {
105+
return {
106+
family: 'Chrome',
107+
version: parsedBrowserVersion
108+
}
109+
}
110+
111+
if (parsedUA.browser.name === 'Android Browser') {
101112
// Versions prior to Blink were based
102113
// on the OS version. Only after this
103114
// did android start using system chrome for web-views
@@ -108,7 +119,7 @@ function resolveUserAgent(uaString: string): { family: string | null, version: s
108119
}
109120

110121
return {
111-
family: parsedUANew.browser.name || null,
122+
family: parsedUA.browser.name || null,
112123
version: parsedBrowserVersion
113124
}
114125
}
@@ -132,7 +143,7 @@ function generateSemversInRange(versionRange: string) {
132143
const startSemver = semverify(start)
133144
const endSemver = semverify(end)
134145

135-
if(!startSemver || !endSemver) {
146+
if (!startSemver || !endSemver) {
136147
return []
137148
}
138149
const versionsInRange = []
@@ -196,7 +207,7 @@ const compareBrowserSemvers = (versionA: string, versionB: string, options: Opti
196207
const semverifiedA = semverify(versionA)
197208
const semverifiedB = semverify(versionB)
198209

199-
if(!semverifiedA || !semverifiedB) {
210+
if (!semverifiedA || !semverifiedB) {
200211
return false
201212
}
202213
let referenceVersion = semverifiedB
@@ -255,7 +266,7 @@ const matchesUA = (uaString: string, opts: Options = {}) => {
255266
return parsedBrowsers.some((browser) => {
256267
if (!resolvedUserAgent.family) return false
257268
if (!resolvedUserAgent.version) return false
258-
if(!browser.version) return false
269+
if (!browser.version) return false
259270

260271

261272
return (

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"test:watch": "jest --watch",
2222
"typecheck": "tsc --noEmit",
2323
"prepublish": "yarn run build",
24-
"build": "mkdir -p lib && tsc --declaration"
24+
"build": "mkdir -p lib && tsc"
2525
},
2626
"dependencies": {
2727
"semver": "^7.3.5",

tests/index.test.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,6 @@ it('resolves chrome/android properly', () => {
143143
})
144144
).toBeTruthy()
145145

146-
console.log('ua is ',resolveUserAgent(CustomUserAgentString.FACEBOOK_WEBVIEW_CHROME_ANDROID))
147-
148146
expect(
149147
resolveUserAgent(CustomUserAgentString.FACEBOOK_WEBVIEW_CHROME_ANDROID)
150148
).toEqual({

tsconfig.json

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
{
2+
"compilerOptions": {
3+
/* Visit https://aka.ms/tsconfig to read more about this file */
4+
5+
/* Projects */
6+
// "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
7+
// "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
8+
// "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
9+
// "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
10+
// "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
11+
// "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
12+
13+
/* Language and Environment */
14+
"target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
15+
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
16+
// "jsx": "preserve", /* Specify what JSX code is generated. */
17+
// "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
18+
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
19+
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
20+
// "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
21+
// "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
22+
// "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
23+
// "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
24+
// "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
25+
// "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
26+
27+
/* Modules */
28+
"module": "commonjs", /* Specify what module code is generated. */
29+
// "rootDir": "./", /* Specify the root folder within your source files. */
30+
// "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
31+
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
32+
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
33+
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
34+
// "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
35+
// "types": [], /* Specify type package names to be included without being referenced in a source file. */
36+
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
37+
// "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
38+
// "resolveJsonModule": true, /* Enable importing .json files. */
39+
// "noResolve": true, /* Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project. */
40+
41+
/* JavaScript Support */
42+
// "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
43+
// "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
44+
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
45+
46+
/* Emit */
47+
"declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
48+
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
49+
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
50+
// "sourceMap": true, /* Create source map files for emitted JavaScript files. */
51+
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
52+
"outDir": "lib", /* Specify an output folder for all emitted files. */
53+
// "removeComments": true, /* Disable emitting comments. */
54+
// "noEmit": true, /* Disable emitting files from a compilation. */
55+
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
56+
// "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */
57+
// "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
58+
// "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
59+
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
60+
// "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
61+
// "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
62+
// "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
63+
// "newLine": "crlf", /* Set the newline character for emitting files. */
64+
// "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
65+
// "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
66+
// "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
67+
// "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
68+
// "declarationDir": "./", /* Specify the output directory for generated declaration files. */
69+
// "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
70+
71+
/* Interop Constraints */
72+
// "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
73+
// "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
74+
"esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
75+
// "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
76+
"forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
77+
78+
/* Type Checking */
79+
"strict": true, /* Enable all strict type-checking options. */
80+
// "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
81+
// "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
82+
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
83+
// "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
84+
// "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
85+
// "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
86+
// "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
87+
// "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
88+
// "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
89+
// "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
90+
// "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
91+
// "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
92+
// "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
93+
// "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
94+
// "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
95+
// "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
96+
// "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
97+
// "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
98+
99+
/* Completeness */
100+
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
101+
"skipLibCheck": true /* Skip type checking all .d.ts files. */
102+
},
103+
"include": ["./index.ts"]
104+
}

0 commit comments

Comments
 (0)