From d4bcc299ed401e4ab4f87e855a6edb749d0c31ad Mon Sep 17 00:00:00 2001 From: Tito Alvarez Date: Thu, 24 Nov 2022 06:47:47 -0600 Subject: [PATCH 1/5] Build attempt --- .github/workflows/codeql-analysis.yml | 48 +++++++++++++++++++++++++++ .github/workflows/npm.yml | 26 +++++++++++++++ package.json | 2 +- 3 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/codeql-analysis.yml create mode 100644 .github/workflows/npm.yml diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 0000000..3b08b03 --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,48 @@ +name: "CodeQL" + +on: + push: + branches: [ master, develop, develop-* ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ master, develop, develop-* ] + schedule: + - cron: '15 2 * * 5' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'javascript' ] + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + + - name: Install modules + run: npm i + + - name: Lint + run: npm run lint:check + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 \ No newline at end of file diff --git a/.github/workflows/npm.yml b/.github/workflows/npm.yml new file mode 100644 index 0000000..25119ff --- /dev/null +++ b/.github/workflows/npm.yml @@ -0,0 +1,26 @@ +name: "npm" + +# on: +# push: +# tags: +# - "*" + +on: + push: + branches: [ build ] + +jobs: + publish: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 16 + - run: npm i + - run: npm run lint + - run: CI=false npm run build + - uses: JS-DevTools/npm-publish@v1 + with: + token: ${{ secrets.NPM_TOKEN }} + check-version: true \ No newline at end of file diff --git a/package.json b/package.json index 24279d8..7be6a51 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aesirx-analytics", - "version": "1.0.0-alpha", + "version": "1.0.0-alpha.3", "license": "GPL-3.0-only", "author": "AesirX", "repository": "https://gitlab.redweb.dk/aesirx/analytics", From ff36b275dae44fd8eca1fb8fe6e79b97d2739ab7 Mon Sep 17 00:00:00 2001 From: Tito Alvarez Date: Thu, 24 Nov 2022 16:57:30 -0600 Subject: [PATCH 2/5] Bump - alpha 4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7be6a51..a66a3e1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aesirx-analytics", - "version": "1.0.0-alpha.3", + "version": "1.0.0-alpha.4", "license": "GPL-3.0-only", "author": "AesirX", "repository": "https://gitlab.redweb.dk/aesirx/analytics", From c827c6d8df33a6874af345238ab05fad3ca2f970 Mon Sep 17 00:00:00 2001 From: Tito Alvarez Date: Thu, 24 Nov 2022 17:02:54 -0600 Subject: [PATCH 3/5] Final details for builder --- .github/workflows/npm.yml | 8 ++------ package.json | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/.github/workflows/npm.yml b/.github/workflows/npm.yml index 25119ff..e2af089 100644 --- a/.github/workflows/npm.yml +++ b/.github/workflows/npm.yml @@ -1,13 +1,9 @@ name: "npm" -# on: -# push: -# tags: -# - "*" - on: push: - branches: [ build ] + tags: + - "*" jobs: publish: diff --git a/package.json b/package.json index a66a3e1..b3159ed 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aesirx-analytics", - "version": "1.0.0-alpha.4", + "version": "1.0.0-alpha.5", "license": "GPL-3.0-only", "author": "AesirX", "repository": "https://gitlab.redweb.dk/aesirx/analytics", From c145ee6c49a2b6063f8235a0cc8c2f8924d95cce Mon Sep 17 00:00:00 2001 From: Viet Nguyen Date: Fri, 25 Nov 2022 10:06:46 +0700 Subject: [PATCH 4/5] Fix Regex --- src/analytics.js | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/analytics.js b/src/analytics.js index 82e9852..bffb728 100644 --- a/src/analytics.js +++ b/src/analytics.js @@ -100,12 +100,24 @@ const replaceUrl = () => { }; const getParameterByName = (name, url = window.location.href) => { - name = name.replace(/[[\]]/g, '\\$&'); - var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'), - results = regex.exec(url); - if (!results) return null; - if (!results[2]) return ''; - return decodeURIComponent(results[2].replace(/\+/g, ' ')); + if (url && validURL(url)) { + let params = new URL(url).searchParams; + return params.get(name); + } + return; +}; + +const validURL = (str) => { + var pattern = new RegExp( + '^(https?:\\/\\/)?' + // protocol + '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name + '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address + '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path + '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string + '(\\#[-a-z\\d_]*)?$', + 'i' + ); // fragment locator + return !!pattern.test(str); }; AesirAnalytics(); From f122b7c6b7aa53c6317f85c771979e3f69908fd4 Mon Sep 17 00:00:00 2001 From: Viet Nguyen Date: Fri, 25 Nov 2022 10:58:55 +0700 Subject: [PATCH 5/5] Fix get Params function --- src/analytics.js | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/src/analytics.js b/src/analytics.js index bffb728..769dc2c 100644 --- a/src/analytics.js +++ b/src/analytics.js @@ -100,24 +100,13 @@ const replaceUrl = () => { }; const getParameterByName = (name, url = window.location.href) => { - if (url && validURL(url)) { - let params = new URL(url).searchParams; - return params.get(name); + if (url) { + let params = new URL(url); + if (params.origin === window.location.origin) { + return params.searchParams.get(name); + } } return; }; -const validURL = (str) => { - var pattern = new RegExp( - '^(https?:\\/\\/)?' + // protocol - '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name - '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address - '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path - '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string - '(\\#[-a-z\\d_]*)?$', - 'i' - ); // fragment locator - return !!pattern.test(str); -}; - AesirAnalytics();