Compare commits
No commits in common. "master" and "v1.0.4" have entirely different histories.
@ -1,66 +0,0 @@
|
|||||||
name: Default (not tags)
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags-ignore:
|
|
||||||
- '**'
|
|
||||||
|
|
||||||
env:
|
|
||||||
IMAGE: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
|
||||||
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@gitea.lossless.digital/${{gitea.repository}}.git
|
|
||||||
NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
|
|
||||||
NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
|
|
||||||
NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}}
|
|
||||||
NPMCI_URL_CLOUDLY: ${{secrets.NPMCI_URL_CLOUDLY}}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
security:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
continue-on-error: true
|
|
||||||
container:
|
|
||||||
image: ${{ env.IMAGE }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Install pnpm and npmci
|
|
||||||
run: |
|
|
||||||
pnpm install -g pnpm
|
|
||||||
pnpm install -g @shipzone/npmci
|
|
||||||
|
|
||||||
- name: Run npm prepare
|
|
||||||
run: npmci npm prepare
|
|
||||||
|
|
||||||
- name: Audit production dependencies
|
|
||||||
run: |
|
|
||||||
npmci command npm config set registry https://registry.npmjs.org
|
|
||||||
npmci command pnpm audit --audit-level=high --prod
|
|
||||||
continue-on-error: true
|
|
||||||
|
|
||||||
- name: Audit development dependencies
|
|
||||||
run: |
|
|
||||||
npmci command npm config set registry https://registry.npmjs.org
|
|
||||||
npmci command pnpm audit --audit-level=high --dev
|
|
||||||
continue-on-error: true
|
|
||||||
|
|
||||||
test:
|
|
||||||
if: ${{ always() }}
|
|
||||||
needs: security
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
container:
|
|
||||||
image: ${{ env.IMAGE }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Test stable
|
|
||||||
run: |
|
|
||||||
npmci node install stable
|
|
||||||
npmci npm install
|
|
||||||
npmci npm test
|
|
||||||
|
|
||||||
- name: Test build
|
|
||||||
run: |
|
|
||||||
npmci node install stable
|
|
||||||
npmci npm install
|
|
||||||
npmci npm build
|
|
@ -1,124 +0,0 @@
|
|||||||
name: Default (tags)
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- '*'
|
|
||||||
|
|
||||||
env:
|
|
||||||
IMAGE: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
|
||||||
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@gitea.lossless.digital/${{gitea.repository}}.git
|
|
||||||
NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
|
|
||||||
NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
|
|
||||||
NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}}
|
|
||||||
NPMCI_URL_CLOUDLY: ${{secrets.NPMCI_URL_CLOUDLY}}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
security:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
continue-on-error: true
|
|
||||||
container:
|
|
||||||
image: ${{ env.IMAGE }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Prepare
|
|
||||||
run: |
|
|
||||||
pnpm install -g pnpm
|
|
||||||
pnpm install -g @shipzone/npmci
|
|
||||||
npmci npm prepare
|
|
||||||
|
|
||||||
- name: Audit production dependencies
|
|
||||||
run: |
|
|
||||||
npmci command npm config set registry https://registry.npmjs.org
|
|
||||||
npmci command pnpm audit --audit-level=high --prod
|
|
||||||
continue-on-error: true
|
|
||||||
|
|
||||||
- name: Audit development dependencies
|
|
||||||
run: |
|
|
||||||
npmci command npm config set registry https://registry.npmjs.org
|
|
||||||
npmci command pnpm audit --audit-level=high --dev
|
|
||||||
continue-on-error: true
|
|
||||||
|
|
||||||
test:
|
|
||||||
if: ${{ always() }}
|
|
||||||
needs: security
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
container:
|
|
||||||
image: ${{ env.IMAGE }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Prepare
|
|
||||||
run: |
|
|
||||||
pnpm install -g pnpm
|
|
||||||
pnpm install -g @shipzone/npmci
|
|
||||||
npmci npm prepare
|
|
||||||
|
|
||||||
- name: Test stable
|
|
||||||
run: |
|
|
||||||
npmci node install stable
|
|
||||||
npmci npm install
|
|
||||||
npmci npm test
|
|
||||||
|
|
||||||
- name: Test build
|
|
||||||
run: |
|
|
||||||
npmci node install stable
|
|
||||||
npmci npm install
|
|
||||||
npmci npm build
|
|
||||||
|
|
||||||
release:
|
|
||||||
needs: test
|
|
||||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
container:
|
|
||||||
image: ${{ env.IMAGE }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Prepare
|
|
||||||
run: |
|
|
||||||
pnpm install -g pnpm
|
|
||||||
pnpm install -g @shipzone/npmci
|
|
||||||
npmci npm prepare
|
|
||||||
|
|
||||||
- name: Release
|
|
||||||
run: |
|
|
||||||
npmci node install stable
|
|
||||||
npmci npm publish
|
|
||||||
|
|
||||||
metadata:
|
|
||||||
needs: test
|
|
||||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
container:
|
|
||||||
image: ${{ env.IMAGE }}
|
|
||||||
continue-on-error: true
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Prepare
|
|
||||||
run: |
|
|
||||||
pnpm install -g pnpm
|
|
||||||
pnpm install -g @shipzone/npmci
|
|
||||||
npmci npm prepare
|
|
||||||
|
|
||||||
- name: Code quality
|
|
||||||
run: |
|
|
||||||
npmci command npm install -g typescript
|
|
||||||
npmci npm install
|
|
||||||
|
|
||||||
- name: Trigger
|
|
||||||
run: npmci trigger
|
|
||||||
|
|
||||||
- name: Build docs and upload artifacts
|
|
||||||
run: |
|
|
||||||
npmci node install stable
|
|
||||||
npmci npm install
|
|
||||||
pnpm install -g @gitzone/tsdoc
|
|
||||||
npmci command tsdoc
|
|
||||||
continue-on-error: true
|
|
137
.gitlab-ci.yml
Normal file
137
.gitlab-ci.yml
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
# gitzone ci_default
|
||||||
|
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||||
|
|
||||||
|
cache:
|
||||||
|
paths:
|
||||||
|
- .npmci_cache/
|
||||||
|
key: '$CI_BUILD_STAGE'
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- security
|
||||||
|
- test
|
||||||
|
- release
|
||||||
|
- metadata
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# security stage
|
||||||
|
# ====================
|
||||||
|
mirror:
|
||||||
|
stage: security
|
||||||
|
script:
|
||||||
|
- npmci git mirror
|
||||||
|
only:
|
||||||
|
- tags
|
||||||
|
tags:
|
||||||
|
- lossless
|
||||||
|
- docker
|
||||||
|
- notpriv
|
||||||
|
|
||||||
|
auditProductionDependencies:
|
||||||
|
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||||
|
stage: security
|
||||||
|
script:
|
||||||
|
- npmci npm prepare
|
||||||
|
- npmci command npm install --production --ignore-scripts
|
||||||
|
- npmci command npm config set registry https://registry.npmjs.org
|
||||||
|
- npmci command npm audit --audit-level=high --only=prod --production
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
|
||||||
|
auditDevDependencies:
|
||||||
|
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||||
|
stage: security
|
||||||
|
script:
|
||||||
|
- npmci npm prepare
|
||||||
|
- npmci command npm install --ignore-scripts
|
||||||
|
- npmci command npm config set registry https://registry.npmjs.org
|
||||||
|
- npmci command npm audit --audit-level=high --only=dev
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
allow_failure: true
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# test stage
|
||||||
|
# ====================
|
||||||
|
|
||||||
|
testStable:
|
||||||
|
stage: test
|
||||||
|
script:
|
||||||
|
- npmci npm prepare
|
||||||
|
- npmci node install stable
|
||||||
|
- npmci npm install
|
||||||
|
- npmci npm test
|
||||||
|
coverage: /\d+.?\d+?\%\s*coverage/
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
|
||||||
|
testBuild:
|
||||||
|
stage: test
|
||||||
|
script:
|
||||||
|
- npmci npm prepare
|
||||||
|
- npmci node install stable
|
||||||
|
- npmci npm install
|
||||||
|
- npmci command npm run build
|
||||||
|
coverage: /\d+.?\d+?\%\s*coverage/
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
|
||||||
|
release:
|
||||||
|
stage: release
|
||||||
|
script:
|
||||||
|
- npmci node install stable
|
||||||
|
- npmci npm publish
|
||||||
|
only:
|
||||||
|
- tags
|
||||||
|
tags:
|
||||||
|
- lossless
|
||||||
|
- docker
|
||||||
|
- notpriv
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# metadata stage
|
||||||
|
# ====================
|
||||||
|
codequality:
|
||||||
|
stage: metadata
|
||||||
|
allow_failure: true
|
||||||
|
only:
|
||||||
|
- tags
|
||||||
|
script:
|
||||||
|
- npmci command npm install -g tslint typescript
|
||||||
|
- npmci npm prepare
|
||||||
|
- npmci npm install
|
||||||
|
- npmci command "tslint -c tslint.json ./ts/**/*.ts"
|
||||||
|
tags:
|
||||||
|
- lossless
|
||||||
|
- docker
|
||||||
|
- priv
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
stage: metadata
|
||||||
|
script:
|
||||||
|
- npmci trigger
|
||||||
|
only:
|
||||||
|
- tags
|
||||||
|
tags:
|
||||||
|
- lossless
|
||||||
|
- docker
|
||||||
|
- notpriv
|
||||||
|
|
||||||
|
pages:
|
||||||
|
stage: metadata
|
||||||
|
script:
|
||||||
|
- npmci node install lts
|
||||||
|
- npmci command npm install -g @gitzone/tsdoc
|
||||||
|
- npmci npm prepare
|
||||||
|
- npmci npm install
|
||||||
|
- npmci command tsdoc
|
||||||
|
tags:
|
||||||
|
- lossless
|
||||||
|
- docker
|
||||||
|
- notpriv
|
||||||
|
only:
|
||||||
|
- tags
|
||||||
|
artifacts:
|
||||||
|
expire_in: 1 week
|
||||||
|
paths:
|
||||||
|
- public
|
||||||
|
allow_failure: true
|
24
.vscode/launch.json
vendored
24
.vscode/launch.json
vendored
@ -2,10 +2,28 @@
|
|||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"configurations": [
|
"configurations": [
|
||||||
{
|
{
|
||||||
"command": "npm test",
|
"name": "current file",
|
||||||
"name": "Run npm test",
|
"type": "node",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"type": "node-terminal"
|
"args": [
|
||||||
|
"${relativeFile}"
|
||||||
|
],
|
||||||
|
"runtimeArgs": ["-r", "@gitzone/tsrun"],
|
||||||
|
"cwd": "${workspaceRoot}",
|
||||||
|
"protocol": "inspector",
|
||||||
|
"internalConsoleOptions": "openOnSessionStart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "test.ts",
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"args": [
|
||||||
|
"test/test.ts"
|
||||||
|
],
|
||||||
|
"runtimeArgs": ["-r", "@gitzone/tsrun"],
|
||||||
|
"cwd": "${workspaceRoot}",
|
||||||
|
"protocol": "inspector",
|
||||||
|
"internalConsoleOptions": "openOnSessionStart"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
28
changelog.md
28
changelog.md
@ -1,28 +0,0 @@
|
|||||||
# Changelog
|
|
||||||
|
|
||||||
## 2025-01-14 - 1.1.0 - feat(build)
|
|
||||||
Add tsconfig.json for TypeScript configuration
|
|
||||||
|
|
||||||
- Introduced tsconfig.json with configurations targeting ES2022 and using NodeNext for module system.
|
|
||||||
- Enabled experimental decorators and verbatim module syntax in TypeScript config.
|
|
||||||
|
|
||||||
## 2025-01-14 - 1.0.19 - fix(core)
|
|
||||||
Upgraded dependencies and fixed test export issue
|
|
||||||
|
|
||||||
- Updated development dependencies to the latest versions.
|
|
||||||
- Upgraded @api.global/typedrequest to version ^3.1.10.
|
|
||||||
- Upgraded @push.rocks/smarttime to version ^4.1.1.
|
|
||||||
- Upgraded @push.rocks/webstore to version ^2.0.20.
|
|
||||||
- Fixed default export for tap.start() in test.browser.ts.
|
|
||||||
|
|
||||||
## 2025-01-09 - 1.0.18 - fix(webclient)
|
|
||||||
Ensure all package dependencies are up to date and minor performance enhancements
|
|
||||||
|
|
||||||
- Confirmed compatibility with latest package dependency versions
|
|
||||||
- Optimized performance for certain webclient operations
|
|
||||||
- Ensured consistent adherence to TypeScript intellisense guidelines
|
|
||||||
|
|
||||||
## 2020-09-18 to 2023-08-27 - 1.0.1 to 1.0.17 - Core Updates
|
|
||||||
Routine maintenance and minor updates
|
|
||||||
|
|
||||||
- Continuous updates to the core functionality to improve performance and fix bugs.
|
|
@ -5,7 +5,7 @@
|
|||||||
"githost": "gitlab.com",
|
"githost": "gitlab.com",
|
||||||
"gitscope": "consentsoftware",
|
"gitscope": "consentsoftware",
|
||||||
"gitrepo": "webclient",
|
"gitrepo": "webclient",
|
||||||
"description": "a webclient for using consent.software in your website. Works with vanilla js, angular, react, you name it.",
|
"shortDescription": "a webclient for using consent.software in your website. Works with vanilla js, angular, react, you name it.",
|
||||||
"npmPackagename": "@consentsoftware/webclient",
|
"npmPackagename": "@consentsoftware/webclient",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"projectDomain": "consent.software"
|
"projectDomain": "consent.software"
|
||||||
|
11237
package-lock.json
generated
Normal file
11237
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
27
package.json
27
package.json
@ -1,32 +1,25 @@
|
|||||||
{
|
{
|
||||||
"name": "@consent.software/webclient",
|
"name": "@consentsoftware/webclient",
|
||||||
"version": "1.1.0",
|
"version": "1.0.4",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "a webclient for using consent.software in your website. Works with vanilla js, angular, react, you name it.",
|
"description": "a webclient for using consent.software in your website. Works with vanilla js, angular, react, you name it.",
|
||||||
"main": "dist_ts/index.js",
|
"main": "dist_ts/index.js",
|
||||||
"typings": "dist_ts/index.d.ts",
|
"typings": "dist_ts/index.d.ts",
|
||||||
"type": "module",
|
|
||||||
"author": "Lossless GmbH",
|
"author": "Lossless GmbH",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "(tstest test/ --web)",
|
"test": "(tstest test/ --web)",
|
||||||
"build": "(tsbuild --web --allowimplicitany)",
|
"build": "(tsbuild --web)"
|
||||||
"bundle": "(tsbundle npm)",
|
|
||||||
"buildDocs": "tsdoc"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@git.zone/tsbuild": "^2.2.0",
|
"@gitzone/tsbuild": "^2.0.22",
|
||||||
"@git.zone/tsbundle": "^2.1.0",
|
"@gitzone/tstest": "^1.0.15",
|
||||||
"@git.zone/tstest": "^1.0.90",
|
"@pushrocks/tapbundle": "^3.0.7",
|
||||||
"@push.rocks/tapbundle": "^5.5.4",
|
"@types/node": "^14.11.1",
|
||||||
"@types/node": "^22.10.6"
|
"tslint": "^6.1.3",
|
||||||
},
|
"tslint-config-prettier": "^1.15.0"
|
||||||
"dependencies": {
|
|
||||||
"@api.global/typedrequest": "^3.1.10",
|
|
||||||
"@consent.software/interfaces": "^1.0.11",
|
|
||||||
"@push.rocks/smarttime": "^4.1.1",
|
|
||||||
"@push.rocks/webstore": "^2.0.20"
|
|
||||||
},
|
},
|
||||||
|
"dependencies": {},
|
||||||
"browserslist": [
|
"browserslist": [
|
||||||
"last 1 chrome versions"
|
"last 1 chrome versions"
|
||||||
],
|
],
|
||||||
|
9821
pnpm-lock.yaml
generated
9821
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@ -21,19 +21,19 @@ Code Style | [](htt
|
|||||||
PackagePhobia (total standalone install weight) | [](https://lossless.cloud)
|
PackagePhobia (total standalone install weight) | [](https://lossless.cloud)
|
||||||
PackagePhobia (package size on registry) | [](https://lossless.cloud)
|
PackagePhobia (package size on registry) | [](https://lossless.cloud)
|
||||||
BundlePhobia (total size when bundled) | [](https://lossless.cloud)
|
BundlePhobia (total size when bundled) | [](https://lossless.cloud)
|
||||||
|
Platform support | [](https://lossless.cloud) [](https://lossless.cloud)
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Use TypeScript for best in class intellisense
|
Use TypeScript for best in class intellisense
|
||||||
|
|
||||||
This WebClient allows you to use the consent.software api in your webproject
|
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
|
|
||||||
We are always happy for code contributions. If you are not the code contributing type that is ok. Still, maintaining Open Source repositories takes considerable time and thought. If you like the quality of what we do and our modules are useful to you we would appreciate a little monthly contribution: You can [contribute one time](https://lossless.link/contribute-onetime) or [contribute monthly](https://lossless.link/contribute). :)
|
We are always happy for code contributions. If you are not the code contributing type that is ok. Still, maintaining Open Source repositories takes considerable time and thought. If you like the quality of what we do and our modules are useful to you we would appreciate a little monthly contribution: You can [contribute one time](https://lossless.link/contribute-onetime) or [contribute monthly](https://lossless.link/contribute). :)
|
||||||
|
|
||||||
For further information read the linked docs at the top of this readme.
|
For further information read the linked docs at the top of this readme.
|
||||||
|
|
||||||
## Legal
|
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
||||||
> MIT licensed | **©** [Task Venture Capital GmbH](https://task.vc)
|
|
||||||
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
|
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
|
||||||
|
|
||||||
|
[](https://maintainedby.lossless.com)
|
||||||
|
@ -1,32 +0,0 @@
|
|||||||
import { expect, tap } from '@push.rocks/tapbundle';
|
|
||||||
import * as webclient from '../ts/index.js';
|
|
||||||
|
|
||||||
let testClient: webclient.CsWebclient;
|
|
||||||
|
|
||||||
tap.test('should create an instance of webclient', async () => {
|
|
||||||
testClient = new webclient.CsWebclient();
|
|
||||||
expect(testClient).toBeInstanceOf(webclient.CsWebclient);
|
|
||||||
});
|
|
||||||
|
|
||||||
tap.test('should return false when asked for present settings', async () => {
|
|
||||||
const result = await testClient.isCookieLevelSet();
|
|
||||||
expect(result).toBeFalse();
|
|
||||||
});
|
|
||||||
|
|
||||||
tap.test('should create a cookielevel setting', async () => {
|
|
||||||
await testClient.setCookieLevels(['functional']);
|
|
||||||
const result = await testClient.getCookieLevels();
|
|
||||||
expect(result).toContain('functional');
|
|
||||||
});
|
|
||||||
|
|
||||||
tap.test('should return true when asked for present settings', async () => {
|
|
||||||
const result = await testClient.isCookieLevelSet();
|
|
||||||
expect(result).toBeTrue();
|
|
||||||
});
|
|
||||||
|
|
||||||
tap.test('should validity for present settings', async () => {
|
|
||||||
const result = await testClient.isCookieLevelStillValid();
|
|
||||||
expect(result).toBeTrue();
|
|
||||||
});
|
|
||||||
|
|
||||||
export default tap.start();
|
|
8
test/test.ts
Normal file
8
test/test.ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import { expect, tap } from '@pushrocks/tapbundle';
|
||||||
|
import * as webclient from '../ts/index';
|
||||||
|
|
||||||
|
tap.test('first test', async () => {
|
||||||
|
console.log(webclient.standardExport);
|
||||||
|
});
|
||||||
|
|
||||||
|
tap.start();
|
@ -1,8 +0,0 @@
|
|||||||
/**
|
|
||||||
* autocreated commitinfo by @push.rocks/commitinfo
|
|
||||||
*/
|
|
||||||
export const commitinfo = {
|
|
||||||
name: '@consent.software/webclient',
|
|
||||||
version: '1.1.0',
|
|
||||||
description: 'a webclient for using consent.software in your website. Works with vanilla js, angular, react, you name it.'
|
|
||||||
}
|
|
90
ts/index.ts
90
ts/index.ts
@ -1,89 +1,3 @@
|
|||||||
import * as plugins from './webclient.plugins.js';
|
import * as plugins from './webclient.plugins';
|
||||||
|
|
||||||
export class CsWebclient {
|
export let standardExport = 'Hi there! :) This is an exported string';
|
||||||
webstore: plugins.webstore.WebStore<plugins.csInterfaces.IWebclientSettings>;
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
this.webstore = new plugins.webstore.WebStore<plugins.csInterfaces.IWebclientSettings>({
|
|
||||||
dbName: 'consentsoftware',
|
|
||||||
storeName: 'webclient',
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public async isCookieLevelSet(): Promise<boolean> {
|
|
||||||
const result = await this.webstore.get('acceptedCookieLevels');
|
|
||||||
return !!result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async setCookieLevels(
|
|
||||||
cookieLevelsArg: plugins.csInterfaces.TCookieLevel[]
|
|
||||||
): Promise<boolean> {
|
|
||||||
await this.webstore.set('acceptedCookieLevels', {
|
|
||||||
acceptanceTimestamp: Date.now(),
|
|
||||||
acceptedCookieLevels: cookieLevelsArg,
|
|
||||||
});
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async getCookieLevels(): Promise<
|
|
||||||
plugins.csInterfaces.IWebclientSettings['acceptedCookieLevels']
|
|
||||||
> {
|
|
||||||
const result = await this.webstore.get('acceptedCookieLevels');
|
|
||||||
return result?.acceptedCookieLevels;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async isCookieLevelStillValid(): Promise<boolean> {
|
|
||||||
if (!this.isCookieLevelSet) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
const result = await this.webstore.get('acceptedCookieLevels');
|
|
||||||
if (
|
|
||||||
result.acceptanceTimestamp <
|
|
||||||
Date.now() - plugins.smarttime.getMilliSecondsFromUnits({ months: 3 })
|
|
||||||
) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async getAndRunConsentTuples(domainArg?: string) {
|
|
||||||
const acceptedCookieLevels = await this.getCookieLevels();
|
|
||||||
if (!acceptedCookieLevels) {
|
|
||||||
console.log('You need to set accepted cookielevels first');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const csGetDomainSettingsRequest =
|
|
||||||
new plugins.typedrequest.TypedRequest<plugins.csInterfaces.IRequest_Client_ConsentSoftwareServer_GetDomainSettings>(
|
|
||||||
'https://connect.api.global/consentsoftware',
|
|
||||||
'getDomainSettings'
|
|
||||||
);
|
|
||||||
const domainToRequest = domainArg || window.location.hostname;
|
|
||||||
const response = await csGetDomainSettingsRequest.fire({
|
|
||||||
domain: domainToRequest,
|
|
||||||
});
|
|
||||||
for (const consentTuple of response.consentTuples) {
|
|
||||||
if (
|
|
||||||
consentTuple.level === 'functional' ||
|
|
||||||
acceptedCookieLevels.includes(consentTuple.level)
|
|
||||||
) {
|
|
||||||
const scriptString = consentTuple.script as string;
|
|
||||||
// tslint:disable-next-line: function-constructor
|
|
||||||
const tupleFunction: plugins.csInterfaces.IConsentTuple['script'] = new Function(
|
|
||||||
'dataArg',
|
|
||||||
'cookieLevelsArg',
|
|
||||||
`return (${scriptString})(dataArg, cookieLevelsArg)`
|
|
||||||
) as plugins.csInterfaces.IConsentTuple['script'];
|
|
||||||
if (typeof tupleFunction === 'function') {
|
|
||||||
await tupleFunction(consentTuple.scriptExecutionDataArg, await this.getCookieLevels());
|
|
||||||
} else {
|
|
||||||
const errorText = 'got malformed script to execuute';
|
|
||||||
console.error(errorText);
|
|
||||||
throw new Error(errorText);
|
|
||||||
}
|
|
||||||
console.log(
|
|
||||||
`Successfully executed ConsentTuple >>${consentTuple.name}<< -> ${consentTuple.description}`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -1,15 +1,2 @@
|
|||||||
// consentsoftware scope
|
const removeme = {};
|
||||||
import * as csInterfaces from '@consent.software/interfaces';
|
export { removeme };
|
||||||
|
|
||||||
export { csInterfaces };
|
|
||||||
|
|
||||||
// apiglobal scope
|
|
||||||
import * as typedrequest from '@api.global/typedrequest';
|
|
||||||
|
|
||||||
export { typedrequest };
|
|
||||||
|
|
||||||
// @pushrocks scope
|
|
||||||
import * as smarttime from '@push.rocks/smarttime';
|
|
||||||
import * as webstore from '@push.rocks/webstore';
|
|
||||||
|
|
||||||
export { smarttime, webstore };
|
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"experimentalDecorators": true,
|
|
||||||
"useDefineForClassFields": false,
|
|
||||||
"target": "ES2022",
|
|
||||||
"module": "NodeNext",
|
|
||||||
"moduleResolution": "NodeNext",
|
|
||||||
"esModuleInterop": true,
|
|
||||||
"verbatimModuleSyntax": true
|
|
||||||
},
|
|
||||||
"exclude": [
|
|
||||||
"dist_*/**/*.d.ts"
|
|
||||||
]
|
|
||||||
}
|
|
17
tslint.json
Normal file
17
tslint.json
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"extends": ["tslint:latest", "tslint-config-prettier"],
|
||||||
|
"rules": {
|
||||||
|
"semicolon": [true, "always"],
|
||||||
|
"no-console": false,
|
||||||
|
"ordered-imports": false,
|
||||||
|
"object-literal-sort-keys": false,
|
||||||
|
"member-ordering": {
|
||||||
|
"options":{
|
||||||
|
"order": [
|
||||||
|
"static-method"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"defaultSeverity": "warning"
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user