diff --git a/.eslintrc.json b/.eslintrc.json
index 372f070d4..8fcf9ae64 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -29,7 +29,8 @@
"cancelAnimationFrame",
"navigator.sendBeacon",
"Uint8Array",
- "Set"
+ "Set",
+ "atob"
]
},
"env": {
diff --git a/jest.preset.js b/jest.preset.js
index 32e925971..3bf0c9132 100644
--- a/jest.preset.js
+++ b/jest.preset.js
@@ -71,7 +71,7 @@ module.exports = {
},
testEnvironmentOptions: {
...nxPreset.testEnvironmentOptions,
- url: 'http://www.test-host.com',
+ url: 'https://www.test-host.com',
runScripts: 'dangerously',
resources: 'usable',
},
diff --git a/package-lock.json b/package-lock.json
index b47b50f13..0d0a2962a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5726,6 +5726,10 @@
"resolved": "packages/analytics-js-common",
"link": true
},
+ "node_modules/@rudderstack/analytics-js-cookies": {
+ "resolved": "packages/analytics-js-cookies",
+ "link": true
+ },
"node_modules/@rudderstack/analytics-js-integrations": {
"resolved": "packages/analytics-js-integrations",
"link": true
@@ -24951,6 +24955,7 @@
"dependencies": {
"@preact/signals-core": "1.6.1",
"@rudderstack/analytics-js-common": "*",
+ "@rudderstack/analytics-js-cookies": "*",
"@rudderstack/analytics-js-plugins": "*",
"ramda": "0.30.1",
"storejs": "2.1.0"
@@ -24974,6 +24979,15 @@
},
"devDependencies": {}
},
+ "packages/analytics-js-cookies": {
+ "name": "@rudderstack/analytics-js-cookies",
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@rudderstack/analytics-js-common": "*"
+ },
+ "devDependencies": {}
+ },
"packages/analytics-js-integrations": {
"name": "@rudderstack/analytics-js-integrations",
"version": "3.4.0",
diff --git a/packages/analytics-js-cookies/.jscpd.json b/packages/analytics-js-cookies/.jscpd.json
new file mode 100644
index 000000000..7ecbbf2fe
--- /dev/null
+++ b/packages/analytics-js-cookies/.jscpd.json
@@ -0,0 +1,17 @@
+{
+ "threshold": 5,
+ "reporters": ["html", "console"],
+ "pattern": "**/*",
+ "ignore": [
+ "**/__tests__/**",
+ "**/__mocks__/**",
+ "**/__fixtures__/**",
+ "**/node_modules/**",
+ "*.test.*"
+ ],
+ "absolute": true,
+ "gitignore": true,
+ "output": "./reports/",
+ "mode": "strict",
+ "format": ["typescript", "tsx"]
+}
diff --git a/packages/analytics-js-cookies/.size-limit.js b/packages/analytics-js-cookies/.size-limit.js
new file mode 100644
index 000000000..4fcadb4a7
--- /dev/null
+++ b/packages/analytics-js-cookies/.size-limit.js
@@ -0,0 +1,11 @@
+/**
+ * DO NOT EDIT the size limits configured in this file.
+ * Should you update them, please contact CODEOWNERS.
+ */
+module.exports = [
+ {
+ name: 'Cookies Utilities',
+ path: 'dist/**/*.js',
+ limit: '2 KiB',
+ },
+];
diff --git a/packages/analytics-js-cookies/CHANGELOG.md b/packages/analytics-js-cookies/CHANGELOG.md
new file mode 100644
index 000000000..99e9777f2
--- /dev/null
+++ b/packages/analytics-js-cookies/CHANGELOG.md
@@ -0,0 +1,3 @@
+# Changelog
+
+This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
diff --git a/packages/analytics-js-cookies/CHANGELOG_LATEST.md b/packages/analytics-js-cookies/CHANGELOG_LATEST.md
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/analytics-js-cookies/LICENSE b/packages/analytics-js-cookies/LICENSE
new file mode 100644
index 000000000..2abc92cbc
--- /dev/null
+++ b/packages/analytics-js-cookies/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2021 RudderStack
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/packages/analytics-js-cookies/README.md b/packages/analytics-js-cookies/README.md
new file mode 100644
index 000000000..bec6566c3
--- /dev/null
+++ b/packages/analytics-js-cookies/README.md
@@ -0,0 +1,78 @@
+## [![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](https://www.typescriptlang.org/)
+
+
+
+
+
+
+
The Customer Data Platform for Developers
+
+
+
+ Website
+ ·
+ Documentation
+ ·
+ Community Slack
+
+
+
+---
+
+# @rudderstack/analytics-js-cookies
+
+RudderStack JavaScript SDK utility for cookies.
+
+## APIs
+
+### `getDecryptedCookie`
+
+This function decrypts and returns the RudderStack JavaScript SDK cookie values.
+
+The return type is either a `string` or an `object` as some cookies like user ID, anonymous user ID have string values while user traits are objects.
+
+It returns `null` in either of the following scenarios:
+
+- If the cookie is not present.
+- If the cookie is not properly encrypted.
+ - It only decrypts the cookies that are created by the RudderStack JavaScript SDK encryption version "v3".
+- If the decrypted cookie value is not a valid JSON string.
+- If the provided cookie name is not a valid RudderStack JavaScript SDK cookie name.
+
+> If unencrypted, the cookie value will be returned as is.
+
+> Any errors during decryption are swallowed by the function, returning `null`.
+
+The following are the available cookie key exports:
+- `userIdKey`: The key for the user ID cookie.
+- `userTraitsKey`: The key for the user traits cookie.
+- `anonymousUserIdKey`: The key for the anonymous user ID cookie.
+- `groupIdKey`: The key for the group ID cookie.
+- `groupTraitsKey`: The key for the group traits cookie.
+- `pageInitialReferrerKey`: The key for the page initial referrer cookie.
+- `pageInitialReferringDomainKey`: The key for the page initial referring domain cookie.
+- `sessionInfoKey`: The key for the session ID cookie.
+- `authTokenKey`: The key for the auth token cookie.
+
+
+```javascript
+import {
+ getDecryptedCookie,
+ anonymousUserIdKey,
+ userTraitsKey,
+} from '@rudderstack/analytics-js-cookies';
+
+const anonymousId = getDecryptedCookie(anonymousUserIdKey);
+console.log('Anonymous User ID: ', anonymousId);
+// Output: Anonymous User ID: 2c5b6d48-ea90-43a2-a2f6-457d27f90328
+
+const userTraits = getDecryptedCookie(userTraitsKey);
+console.log('User Traits: ', userTraits);
+// Output: User Traits: {"email":"abc@xyz.com","name":"John Doe"}
+
+const invalidCookie = getDecryptedCookie('invalid-cookie-name');
+console.log('Invalid Cookie: ', invalidCookie);
+// Output: Invalid Cookie: null
+```
+
+> For detailed documentation on the RudderStack JavaScript SDK, click [**here**](https://www.rudderstack.com/docs/sources/event-streams/sdks/rudderstack-javascript-sdk/).
diff --git a/packages/analytics-js/__tests__/services/StoreManager/component-cookie/index.test.ts b/packages/analytics-js-cookies/__tests__/component-cookie/index.test.ts
similarity index 50%
rename from packages/analytics-js/__tests__/services/StoreManager/component-cookie/index.test.ts
rename to packages/analytics-js-cookies/__tests__/component-cookie/index.test.ts
index 7556328a3..01ad344a3 100644
--- a/packages/analytics-js/__tests__/services/StoreManager/component-cookie/index.test.ts
+++ b/packages/analytics-js-cookies/__tests__/component-cookie/index.test.ts
@@ -1,7 +1,21 @@
-import { cookie } from '../../../../src/services/StoreManager/component-cookie';
+import type { ILogger } from '@rudderstack/analytics-js-common/types/Logger';
+import { cookie } from '../../src/component-cookie';
+
+class MockLogger implements ILogger {
+ error = jest.fn();
+}
+
+const mockLoggerInstance = new MockLogger();
+
+beforeEach(() => {
+ const allCookies = cookie();
+ Object.keys(allCookies).forEach(cookieName => {
+ cookie(cookieName, null);
+ });
+});
// TODO: clean up structure here, clean up cookie before each test
-describe('cookie(name, value)', () => {
+describe('cookies', () => {
it('should set a cookie', () => {
cookie('name', 'tobi');
expect('tobi').toEqual(cookie('name'));
@@ -23,7 +37,29 @@ describe('cookie(name, value)', () => {
it('should ignore URIError', () => {
cookie('bad', '%');
cookie('bad', null);
- expect(undefined).toEqual(cookie('bad'));
+
+ cookie('bad', '\ud83d', undefined, mockLoggerInstance);
+ expect(mockLoggerInstance.error).toHaveBeenCalledTimes(1);
+ expect(mockLoggerInstance.error).toHaveBeenNthCalledWith(
+ 1,
+ 'Failed to encode the cookie data.',
+ expect.any(Error),
+ );
+
+ expect(cookie('bad')).toEqual('undefined');
+ });
+
+ it('should return undefined if the cookies are not encoded properly', () => {
+ document.cookie = 'name=tobi%ferret';
+ expect(cookie('name')).toEqual(undefined);
+
+ // delete cookie
+ document.cookie = 'name=; expires=Thu, 01 Jan 1970 00:00:00 UTC';
+ });
+
+ it('should set cookie as per the options', () => {
+ cookie('name', 'tobi', { domain: '.test-host.com', path: '/', secure: true, samesite: 'None' });
+ expect(document.cookie.includes('name=tobi')).toBeTruthy();
});
});
@@ -62,4 +98,14 @@ describe('cookie()', () => {
expect('loki').toEqual(obj.name);
expect('ferret').toEqual(obj.species);
});
+
+ it('should return all cookies if the first argument is not a valid string', () => {
+ cookie('name', 'loki');
+ cookie('species', 'ferret');
+ const obj = cookie(false);
+
+ expect(2).toEqual(Object.keys(obj).length);
+ expect('loki').toEqual(obj.name);
+ expect('ferret').toEqual(obj.species);
+ });
});
diff --git a/packages/analytics-js-cookies/__tests__/cookieUtilities.test.ts b/packages/analytics-js-cookies/__tests__/cookieUtilities.test.ts
new file mode 100644
index 000000000..0b9bd496f
--- /dev/null
+++ b/packages/analytics-js-cookies/__tests__/cookieUtilities.test.ts
@@ -0,0 +1,122 @@
+import {
+ anonymousUserIdKey,
+ authTokenKey,
+ groupIdKey,
+ groupTraitsKey,
+ pageInitialReferrerKey,
+ pageInitialReferringDomainKey,
+ sessionInfoKey,
+ userIdKey,
+ userTraitsKey,
+} from '../src';
+import { encrypt, decrypt, getDecryptedCookie } from '../src/cookiesUtilities';
+
+describe('Cookie Utilities', () => {
+ describe('encrypt', () => {
+ it('should encrypt the value', () => {
+ expect(encrypt('test-data')).toBe('RS_ENC_v3_dGVzdC1kYXRh');
+ });
+ });
+
+ describe('decrypt', () => {
+ it('should decrypt the value', () => {
+ expect(decrypt('RS_ENC_v3_dGVzdC1kYXRh')).toBe('test-data');
+ });
+
+ it('should return same data if it is not a supported encryption format', () => {
+ expect(decrypt('test-data')).toBe('test-data');
+ });
+
+ it('should throw error if the value is not properly encrypted', () => {
+ expect(() => decrypt('RS_ENC_v3_dGVzdC1kYXRh-some-random-data')).toThrow();
+ });
+ });
+
+ describe('getDecryptedCookie', () => {
+ it('should return the decrypted cookie value', () => {
+ // JSON.stringify('test-data') -> '"test-data"'
+ document.cookie = 'rl_anonymous_id=RS_ENC_v3_InRlc3QtZGF0YSI=';
+ expect(getDecryptedCookie('rl_anonymous_id')).toBe('test-data');
+
+ // delete cookie
+ document.cookie = 'rl_anonymous_id=; expires=Thu, 01 Jan 1970 00:00:00 UTC';
+ });
+
+ it('should return null if the cookie is not present', () => {
+ expect(getDecryptedCookie('rl_anonymous_id')).toBeNull();
+ });
+
+ it('should return value if the cookie is not encrypted', () => {
+ document.cookie = 'rl_anonymous_id="test-data"';
+ expect(getDecryptedCookie('rl_anonymous_id')).toBe('test-data');
+
+ // delete cookie
+ document.cookie = 'rl_anonymous_id=; expires=Thu, 01 Jan 1970 00:00:00 UTC';
+ });
+
+ it('should return null if the cookie is not properly encrypted', () => {
+ document.cookie = 'rl_anonymous_id=RS_ENC_v3_InRlc3QtZGF0YQ==';
+ expect(getDecryptedCookie('rl_anonymous_id')).toBeNull();
+
+ // delete cookie
+ document.cookie = 'rl_anonymous_id=; expires=Thu, 01 Jan 1970 00:00:00 UTC';
+ });
+
+ it('should return null if the cookie value is not parsable', () => {
+ // the encrypted value is '"test-data' (missing closing double quote)
+
+ document.cookie = 'rl_anonymous_id=RS_ENC_v3_InRlc3QtZGF0YQ==';
+ expect(getDecryptedCookie('rl_anonymous_id')).toBeNull();
+
+ // delete cookie
+ document.cookie = 'rl_anonymous_id=; expires=Thu, 01 Jan 1970 00:00:00 UTC';
+ });
+
+ it('should return null if the provided cookie name is not valid', () => {
+ expect(getDecryptedCookie('invalid_cookie_name')).toBeNull();
+ });
+
+ it('should return decrypted cookie value if the cookie value is an object', () => {
+ document.cookie = 'rl_trait=RS_ENC_v3_ewogICJ0ZXN0LWtleSI6ICJ0ZXN0LXZhbHVlIgp9';
+ expect(getDecryptedCookie('rl_trait')).toEqual({ 'test-key': 'test-value' });
+
+ // delete cookie
+ document.cookie = 'rl_trait=; expires=Thu, 01 Jan 1970 00:00:00 UTC';
+ });
+
+ it('should return decrypted cookie values for all the allowed cookies', () => {
+ document.cookie = 'rl_user_id=RS_ENC_v3_InRlc3QtdXNlcl9pZCI=';
+ document.cookie = 'rl_trait=RS_ENC_v3_ewogICJ0ZXN0LWtleSI6ICJ0ZXN0LXZhbHVlIgp9';
+ document.cookie = 'rl_anonymous_id=RS_ENC_v3_InRlc3QtZGF0YSI=';
+ document.cookie = 'rl_group_id=RS_ENC_v3_InRlc3QtZ3JvdXBfaWQi';
+ document.cookie = 'rl_group_trait=RS_ENC_v3_ewogICJ0ZXN0LWtleSI6ICJ0ZXN0LXZhbHVlIgp9';
+ document.cookie = 'rl_page_init_referrer=RS_ENC_v3_InRlc3QtcGFnZV9pbml0X3JlZmVycmVyIg==';
+ document.cookie =
+ 'rl_page_init_referring_domain=RS_ENC_v3_InRlc3QtcGFnZV9pbml0X3JlZmVycmluZ19kb21haW4i';
+ document.cookie = 'rl_session=RS_ENC_v3_ewogICJ0ZXN0LWtleSI6ICJ0ZXN0LXZhbHVlIgp9';
+ document.cookie = 'rl_auth_token=RS_ENC_v3_InRlc3QtdG9rZW4i';
+ expect(getDecryptedCookie(userIdKey)).toBe('test-user_id');
+ expect(getDecryptedCookie(userTraitsKey)).toEqual({ 'test-key': 'test-value' });
+ expect(getDecryptedCookie(anonymousUserIdKey)).toBe('test-data');
+ expect(getDecryptedCookie(groupIdKey)).toBe('test-group_id');
+ expect(getDecryptedCookie(groupTraitsKey)).toEqual({ 'test-key': 'test-value' });
+ expect(getDecryptedCookie(pageInitialReferrerKey)).toBe('test-page_init_referrer');
+ expect(getDecryptedCookie(pageInitialReferringDomainKey)).toBe(
+ 'test-page_init_referring_domain',
+ );
+ expect(getDecryptedCookie(sessionInfoKey)).toEqual({ 'test-key': 'test-value' });
+ expect(getDecryptedCookie(authTokenKey)).toBe('test-token');
+
+ // delete cookies
+ document.cookie = 'rl_user_id=; expires=Thu, 01 Jan 1970 00:00:00 UTC';
+ document.cookie = 'rl_trait=; expires=Thu, 01 Jan 1970 00:00:00 UTC';
+ document.cookie = 'rl_anonymous_id=; expires=Thu, 01 Jan 1970 00:00:00 UTC';
+ document.cookie = 'rl_group_id=; expires=Thu, 01 Jan 1970 00:00:00 UTC';
+ document.cookie = 'rl_group_trait=; expires=Thu, 01 Jan 1970 00:00:00 UTC';
+ document.cookie = 'rl_page_init_referrer=; expires=Thu, 01 Jan 1970 00:00:00 UTC';
+ document.cookie = 'rl_page_init_referring_domain=; expires=Thu, 01 Jan 1970 00:00:00 UTC';
+ document.cookie = 'rl_session=; expires=Thu, 01 Jan 1970 00:00:00 UTC';
+ document.cookie = 'rl_auth_token=; expires=Thu, 01 Jan 1970 00:00:00 UTC';
+ });
+ });
+});
diff --git a/packages/analytics-js-cookies/babel.config.json b/packages/analytics-js-cookies/babel.config.json
new file mode 100644
index 000000000..b73b0a8da
--- /dev/null
+++ b/packages/analytics-js-cookies/babel.config.json
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ [
+ "@babel/env",
+ {
+ "corejs": "3.6",
+ "useBuiltIns": "entry",
+ "bugfixes": true
+ }
+ ],
+ "@babel/typescript"
+ ],
+ "plugins": []
+}
diff --git a/packages/analytics-js-cookies/jest.config.mjs b/packages/analytics-js-cookies/jest.config.mjs
new file mode 100644
index 000000000..5c9500c85
--- /dev/null
+++ b/packages/analytics-js-cookies/jest.config.mjs
@@ -0,0 +1,14 @@
+/* eslint-disable */
+export default {
+ displayName: '@rudderstack/analytics-js-cookies',
+ preset: '../../jest.preset.js',
+ rootDir: './',
+ coverageThreshold: {
+ global: {
+ branches: 0,
+ functions: 0,
+ lines: 0,
+ statements: 0,
+ },
+ },
+};
diff --git a/packages/analytics-js-cookies/package.json b/packages/analytics-js-cookies/package.json
new file mode 100644
index 000000000..fa3ee19a2
--- /dev/null
+++ b/packages/analytics-js-cookies/package.json
@@ -0,0 +1,102 @@
+{
+ "name": "@rudderstack/analytics-js-cookies",
+ "version": "1.0.0",
+ "description": "RudderStack JavaScript SDK Cookies Module",
+ "main": "dist/npm/modern/cjs/index.js",
+ "module": "dist/npm/modern/esm/index.js",
+ "exports": {
+ ".": {
+ "types": "./dist/npm/index.d.ts",
+ "require": "./dist/npm/modern/cjs/index.js",
+ "import": "./dist/npm/modern/esm/index.js"
+ },
+ "./legacy": {
+ "types": "./dist/npm/index.d.ts",
+ "require": "./dist/npm/legacy/cjs/index.js",
+ "import": "./dist/npm/legacy/esm/index.js"
+ }
+ },
+ "types": "./dist/npm/index.d.ts",
+ "typesVersions": {
+ "*": {
+ "*": [
+ "./dist/npm/index.d.ts"
+ ]
+ }
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "files": [
+ "dist/npm",
+ "LICENSE",
+ "README.md",
+ "CHANGELOG.md"
+ ],
+ "keywords": [
+ "analytics",
+ "rudder"
+ ],
+ "author": "RudderStack",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/rudderlabs/rudder-sdk-js.git",
+ "directory": "packages/analytics-js-cookies"
+ },
+ "bugs": {
+ "url": "https://github.com/rudderlabs/rudder-sdk-js/issues"
+ },
+ "homepage": "https://github.com/rudderlabs/rudder-sdk-js/blob/main/packages/analytics-js-cookies/README.md",
+ "scripts": {
+ "clean": "rimraf -rf ./dist && rimraf -rf ./node_modules/.cache && rimraf -rf ./reports",
+ "start": "exit 0",
+ "build": "npm run build:browser && npm run build:package",
+ "build:browser:modern": "exit 0",
+ "build:browser": "exit 0",
+ "build:npm": "rollup -c --environment VERSION:$npm_package_version,ENV:prod,MODULE_TYPE:npm",
+ "build:npm:modern": "BROWSERSLIST_ENV=modern npm run build:npm",
+ "build:package": "npm run build:npm:modern",
+ "test": "nx test --maxWorkers=50%",
+ "test:ci": "nx test --parallel=false --configuration=ci --runInBand --maxWorkers=1 --forceExit",
+ "check:lint": "nx lint",
+ "check:lint:ci": "nx lint --configuration=ci",
+ "check:size:build": "npm run build",
+ "check:size": "npm run check:size:build && size-limit",
+ "check:size:json": "size-limit --json",
+ "check:circular": "madge --circular --extensions js,ts src || exit 0",
+ "check:support": "NODE_ENV=production npx browserslist --mobile-to-desktop",
+ "check:support:modern": "NODE_ENV=modern npx browserslist --mobile-to-desktop",
+ "check:duplicates": "jscpd src",
+ "check:security": "npm audit --recursive --audit-level=high",
+ "build:modern": "npm run build:browser:modern && npm run build:npm:modern",
+ "package": "npm pack",
+ "release": "npm publish"
+ },
+ "dependencies": {
+ "@rudderstack/analytics-js-common": "*"
+ },
+ "devDependencies": {},
+ "overrides": {},
+ "browserslist": {
+ "production": [
+ "defaults",
+ "Edge >= 80",
+ "Firefox >= 47",
+ "IE >= 11",
+ "Chrome >= 54",
+ "Safari >= 7",
+ "Opera >= 43"
+ ],
+ "modern": [
+ "defaults",
+ "supports es6-module-dynamic-import"
+ ],
+ "development": [
+ "last 1 chrome version",
+ "last 1 firefox version",
+ "last 1 edge version",
+ "last 1 safari version"
+ ]
+ }
+}
diff --git a/packages/analytics-js-cookies/project.json b/packages/analytics-js-cookies/project.json
new file mode 100644
index 000000000..3c57eec1c
--- /dev/null
+++ b/packages/analytics-js-cookies/project.json
@@ -0,0 +1,111 @@
+{
+ "name": "@rudderstack/analytics-js-cookies",
+ "$schema": "../../node_modules/nx/schemas/project-schema.json",
+ "sourceRoot": "packages/analytics-js-cookies/src",
+ "projectType": "library",
+ "tags": ["type:lib", "scope:analytics-v3-cookies"],
+ "targets": {
+ "start": {
+ "executor": "nx:run-script",
+ "options": {
+ "script": "start"
+ }
+ },
+ "build": {
+ "executor": "nx:run-script",
+ "options": {
+ "script": "build"
+ }
+ },
+ "build-npm": {
+ "executor": "nx:run-script",
+ "options": {
+ "script": "build:npm"
+ }
+ },
+ "build-npm-modern": {
+ "executor": "nx:run-script",
+ "options": {
+ "script": "build:npm:modern"
+ }
+ },
+ "build-package": {
+ "executor": "nx:run-script",
+ "options": {
+ "script": "build:package"
+ }
+ },
+ "build-check-size": {
+ "executor": "nx:run-script",
+ "options": {
+ "script": "build:package"
+ },
+ "dependsOn": ["build"]
+ },
+ "clean": {
+ "executor": "nx:run-script",
+ "options": {
+ "script": "clean"
+ }
+ },
+ "pack": {
+ "executor": "nx:run-script",
+ "options": {
+ "script": "package"
+ }
+ },
+ "test": {
+ "executor": "@nx/jest:jest",
+ "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
+ "options": {
+ "jestConfig": "packages/analytics-js-cookies/jest.config.mjs",
+ "passWithNoTests": true,
+ "codeCoverage": true,
+ "watchAll": false,
+ "forceExit": true
+ },
+ "configurations": {
+ "ci": {
+ "ci": true,
+ "codeCoverage": true
+ }
+ }
+ },
+ "lint": {
+ "executor": "@nx/eslint:lint",
+ "outputs": ["{options.outputFile}"],
+ "options": {
+ "hasTypeAwareRules": true,
+ "lintFilePatterns": [
+ "packages/analytics-js-cookies/src/**/*.{ts,js}",
+ "packages/analytics-js-cookies/{package,project}.json"
+ ]
+ },
+ "configurations": {
+ "ci": {
+ "force": true,
+ "outputFile": "packages/analytics-js-cookies/reports/eslint.json",
+ "format": "json"
+ }
+ }
+ },
+ "version": {
+ "executor": "@jscutlery/semver:version",
+ "options": {
+ "baseBranch": "main",
+ "preset": "conventional",
+ "tagPrefix": "{projectName}@",
+ "trackDeps": true
+ }
+ },
+ "github": {
+ "executor": "@jscutlery/semver:github",
+ "options": {
+ "tag": "@rudderstack/analytics-js-cookies@1.0.0",
+ "title": "@rudderstack/analytics-js-cookies@1.0.0",
+ "discussion-category": "@rudderstack/analytics-js-cookies@1.0.0",
+ "notesFile": "./packages/analytics-js-cookies/CHANGELOG_LATEST.md"
+ }
+ }
+ }
+}
diff --git a/packages/analytics-js-cookies/rollup.config.mjs b/packages/analytics-js-cookies/rollup.config.mjs
new file mode 100644
index 000000000..ccb692f88
--- /dev/null
+++ b/packages/analytics-js-cookies/rollup.config.mjs
@@ -0,0 +1,173 @@
+/* eslint-disable import/no-extraneous-dependencies */
+import path from 'path';
+import babel from '@rollup/plugin-babel';
+import commonjs from '@rollup/plugin-commonjs';
+import resolve from '@rollup/plugin-node-resolve';
+import replace from '@rollup/plugin-replace';
+import terser from '@rollup/plugin-terser';
+import json from '@rollup/plugin-json';
+import { visualizer } from 'rollup-plugin-visualizer';
+import filesize from 'rollup-plugin-filesize';
+import typescript from 'rollup-plugin-typescript2';
+import nodePolyfills from 'rollup-plugin-polyfill-node';
+import { DEFAULT_EXTENSIONS } from '@babel/core';
+import del from 'rollup-plugin-delete';
+import dts from 'rollup-plugin-dts';
+import alias from '@rollup/plugin-alias';
+import * as dotenv from 'dotenv';
+import pkg from './package.json' assert { type: 'json' };
+
+dotenv.config();
+const isLegacyBuild = process.env.BROWSERSLIST_ENV !== 'modern';
+const variantSubfolder = isLegacyBuild ? '/legacy' : '/modern';
+const sourceMapType =
+ process.env.PROD_DEBUG === 'inline' ? 'inline' : process.env.PROD_DEBUG === 'true';
+const outDir = `dist/npm`;
+let outDirNpm = `${outDir}${variantSubfolder}`;
+const distName = 'rsaCookies';
+const modName = 'rsaCookies';
+
+
+export function getDefaultConfig(distName) {
+ const version = process.env.VERSION || 'dev-snapshot';
+
+ return {
+ watch: {
+ include: ['src/**'],
+ },
+ external: [
+ ...Object.keys(pkg.peerDependencies || {})
+ ],
+ onwarn(warning, warn) {
+ // Silence 'this' has been rewritten to 'undefined' warning
+ // https://rollupjs.org/guide/en/#error-this-is-undefined
+ if (warning.code === 'THIS_IS_UNDEFINED') {
+ return;
+ }
+
+ warn(warning);
+ },
+ plugins: [
+ replace({
+ preventAssignment: true,
+ __PACKAGE_VERSION__: version,
+ }),
+ resolve({
+ jsnext: true,
+ browser: true,
+ preferBuiltins: false,
+ extensions: ['.js', '.ts', '.mjs'],
+ }),
+ nodePolyfills({
+ include: ['crypto'],
+ }),
+ commonjs({
+ include: /node_modules/,
+ requireReturnsDefault: 'auto',
+ }),
+ json(),
+ typescript({
+ tsconfig: './tsconfig.json',
+ useTsconfigDeclarationDir: true,
+ }),
+ babel({
+ compact: true,
+ babelHelpers: 'bundled',
+ exclude: ['node_modules/@babel/**', 'node_modules/core-js/**'],
+ extensions: [...DEFAULT_EXTENSIONS, '.ts'],
+ sourcemap: sourceMapType,
+ }),
+ process.env.UGLIFY === 'true' &&
+ terser({
+ safari10: isLegacyBuild,
+ ecma: isLegacyBuild ? 2015 : 2017,
+ format: {
+ comments: false,
+ },
+ }),
+ filesize({
+ showBeforeSizes: 'build',
+ showBrotliSize: true,
+ }),
+ process.env.VISUALIZER === 'true' &&
+ visualizer({
+ filename: `./stats/${distName}.html`,
+ title: `Rollup Visualizer - ${distName}`,
+ sourcemap: true,
+ open: true,
+ gzipSize: true,
+ brotliSize: true,
+ })
+ ],
+ };
+}
+
+const outputFilesNpm = [
+ {
+ entryFileNames: `index.js`,
+ dir: outDirNpm + '/esm/',
+ format: 'esm',
+ name: modName,
+ sourcemap: sourceMapType,
+ generatedCode: {
+ preset: isLegacyBuild ? 'es5' : 'es2015',
+ },
+ },
+ {
+ entryFileNames: `index.js`,
+ dir: outDirNpm + '/cjs',
+ format: 'cjs',
+ name: modName,
+ sourcemap: sourceMapType,
+ generatedCode: {
+ preset: isLegacyBuild ? 'es5' : 'es2015',
+ },
+ },
+ {
+ entryFileNames: `index.js`,
+ dir: outDirNpm + '/umd',
+ format: 'umd',
+ name: modName,
+ sourcemap: sourceMapType,
+ generatedCode: {
+ preset: isLegacyBuild ? 'es5' : 'es2015',
+ },
+ },
+];
+
+const buildConfig = () => {
+ return {
+ ...getDefaultConfig(distName),
+ };
+};
+
+const buildEntries = () => {
+ return [
+ {
+ ...buildConfig(),
+ input: 'src/index.ts',
+ output: outputFilesNpm,
+ },
+ {
+ input: `dist/dts/packages/analytics-js-cookies/src/index.d.ts`,
+ plugins: [
+ alias({
+ entries: [
+ {
+ find: '@rudderstack/analytics-js-common',
+ replacement: path.resolve('./dist/dts/packages/analytics-js-common/src'),
+ }
+ ]
+ }),
+ dts(),
+ del({ hook: "buildEnd", targets: "./dist/dts" }),
+ ],
+ output: {
+ file: `${outDir}/index.d.ts`,
+ format: 'es',
+ },
+ }
+ ];
+}
+
+export default buildEntries();
diff --git a/packages/analytics-js/src/services/StoreManager/component-cookie/README.md b/packages/analytics-js-cookies/src/component-cookie/README.md
similarity index 100%
rename from packages/analytics-js/src/services/StoreManager/component-cookie/README.md
rename to packages/analytics-js-cookies/src/component-cookie/README.md
diff --git a/packages/analytics-js/src/services/StoreManager/component-cookie/index.ts b/packages/analytics-js-cookies/src/component-cookie/index.ts
similarity index 95%
rename from packages/analytics-js/src/services/StoreManager/component-cookie/index.ts
rename to packages/analytics-js-cookies/src/component-cookie/index.ts
index fbb1a39ac..e4dcaf1a8 100644
--- a/packages/analytics-js/src/services/StoreManager/component-cookie/index.ts
+++ b/packages/analytics-js-cookies/src/component-cookie/index.ts
@@ -2,7 +2,7 @@ import { isNull } from '@rudderstack/analytics-js-common/utilities/checks';
import type { Nullable } from '@rudderstack/analytics-js-common/types/Nullable';
import type { CookieOptions } from '@rudderstack/analytics-js-common/types/Storage';
import type { ILogger } from '@rudderstack/analytics-js-common/types/Logger';
-import { COOKIE_DATA_ENCODING_ERROR } from '../../../constants/logMessages';
+import { COOKIE_DATA_ENCODING_ERROR } from '../constants/logMessages';
/**
* Encode.
@@ -62,7 +62,7 @@ const set = (
optionsConfig?: CookieOptions,
logger?: ILogger,
) => {
- const options: CookieOptions = { ...optionsConfig } || {};
+ const options: CookieOptions = { ...(optionsConfig || {}) };
let cookieString = `${encode(name, logger)}=${encode(value, logger)}`;
if (isNull(value)) {
diff --git a/packages/analytics-js-cookies/src/constants/cookies.ts b/packages/analytics-js-cookies/src/constants/cookies.ts
new file mode 100644
index 000000000..b60883e23
--- /dev/null
+++ b/packages/analytics-js-cookies/src/constants/cookies.ts
@@ -0,0 +1,37 @@
+const userIdKey = 'rl_user_id';
+const userTraitsKey = 'rl_trait';
+const anonymousUserIdKey = 'rl_anonymous_id';
+const groupIdKey = 'rl_group_id';
+const groupTraitsKey = 'rl_group_trait';
+const pageInitialReferrerKey = 'rl_page_init_referrer';
+const pageInitialReferringDomainKey = 'rl_page_init_referring_domain';
+const sessionInfoKey = 'rl_session';
+const authTokenKey = 'rl_auth_token';
+
+const COOKIE_KEYS = {
+ userId: userIdKey,
+ userTraits: userTraitsKey,
+ anonymousId: anonymousUserIdKey,
+ groupId: groupIdKey,
+ groupTraits: groupTraitsKey,
+ initialReferrer: pageInitialReferrerKey,
+ initialReferringDomain: pageInitialReferringDomainKey,
+ sessionInfo: sessionInfoKey,
+ authToken: authTokenKey,
+};
+
+const ENCRYPTION_PREFIX_V3 = 'RS_ENC_v3_';
+
+export {
+ COOKIE_KEYS,
+ ENCRYPTION_PREFIX_V3,
+ userIdKey,
+ userTraitsKey,
+ anonymousUserIdKey,
+ groupIdKey,
+ groupTraitsKey,
+ pageInitialReferrerKey,
+ pageInitialReferringDomainKey,
+ sessionInfoKey,
+ authTokenKey,
+};
diff --git a/packages/analytics-js-cookies/src/constants/logMessages.ts b/packages/analytics-js-cookies/src/constants/logMessages.ts
new file mode 100644
index 000000000..82f10f7b7
--- /dev/null
+++ b/packages/analytics-js-cookies/src/constants/logMessages.ts
@@ -0,0 +1,3 @@
+const COOKIE_DATA_ENCODING_ERROR = `Failed to encode the cookie data.`;
+
+export { COOKIE_DATA_ENCODING_ERROR };
diff --git a/packages/analytics-js-cookies/src/cookiesUtilities.ts b/packages/analytics-js-cookies/src/cookiesUtilities.ts
new file mode 100644
index 000000000..6a8785485
--- /dev/null
+++ b/packages/analytics-js-cookies/src/cookiesUtilities.ts
@@ -0,0 +1,36 @@
+import { fromBase64, toBase64 } from '@rudderstack/analytics-js-common/utilities/string';
+import type { Nullable } from '@rudderstack/analytics-js-common/types/Nullable';
+import { isNullOrUndefined } from '@rudderstack/analytics-js-common/utilities/checks';
+import type { ApiObject } from '@rudderstack/analytics-js-common/types/ApiObject';
+import { COOKIE_KEYS, ENCRYPTION_PREFIX_V3 } from './constants/cookies';
+import { cookie } from './component-cookie';
+
+const encrypt = (value: string): string => `${ENCRYPTION_PREFIX_V3}${toBase64(value)}`;
+
+const decrypt = (value: string | undefined): string | undefined => {
+ if (value?.startsWith(ENCRYPTION_PREFIX_V3)) {
+ return fromBase64(value.substring(ENCRYPTION_PREFIX_V3.length));
+ }
+
+ return value;
+};
+
+const getDecryptedCookie = (cookieKey: string): Nullable => {
+ const fallbackValue = null;
+ try {
+ if (Object.values(COOKIE_KEYS).includes(cookieKey)) {
+ const decryptedVal = decrypt(cookie(cookieKey));
+
+ if (isNullOrUndefined(decryptedVal)) {
+ return fallbackValue;
+ }
+
+ return JSON.parse(decryptedVal as string);
+ }
+ return fallbackValue;
+ } catch (err) {
+ return fallbackValue;
+ }
+};
+
+export { getDecryptedCookie, encrypt, decrypt };
diff --git a/packages/analytics-js-cookies/src/index.ts b/packages/analytics-js-cookies/src/index.ts
new file mode 100644
index 000000000..0fce670e7
--- /dev/null
+++ b/packages/analytics-js-cookies/src/index.ts
@@ -0,0 +1,13 @@
+export { getDecryptedCookie } from './cookiesUtilities';
+
+export {
+ userIdKey,
+ userTraitsKey,
+ anonymousUserIdKey,
+ groupIdKey,
+ groupTraitsKey,
+ pageInitialReferrerKey,
+ pageInitialReferringDomainKey,
+ sessionInfoKey,
+ authTokenKey,
+} from './constants/cookies';
diff --git a/packages/analytics-js-cookies/tsconfig.json b/packages/analytics-js-cookies/tsconfig.json
new file mode 100644
index 000000000..dff056e74
--- /dev/null
+++ b/packages/analytics-js-cookies/tsconfig.json
@@ -0,0 +1,14 @@
+{
+ "extends": "../../tsconfig.build.json",
+ "compilerOptions": {
+ "target": "es5",
+ "declarationDir": "./dist/dts"
+ },
+ "include": [
+ "./package.json",
+ "./src/**/*",
+ "../../types/**/*",
+ "../analytics-js-common/src/**/*"
+ ],
+ "references": []
+}
diff --git a/packages/analytics-js-cookies/tsconfig.spec.json b/packages/analytics-js-cookies/tsconfig.spec.json
new file mode 100644
index 000000000..c86bfb803
--- /dev/null
+++ b/packages/analytics-js-cookies/tsconfig.spec.json
@@ -0,0 +1,25 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "rootDir": "./",
+ "outDir": "../../dist/out-tsc",
+ "module": "commonjs",
+ "noEmit": true,
+ "sourceMap": true,
+ "inlineSourceMap": true,
+ "isolatedModules": true,
+ "verbatimModuleSyntax": false,
+ "types": ["jest", "node"],
+ "target": "es6"
+ },
+ "include": [
+ "jest.config.mjs",
+ "__tests__/**/*.ts",
+ "__mocks__/**/*.ts",
+ "__fixtures__/**/*.ts",
+ "src/**/*.ts",
+ "src/**/*.d.ts",
+ "./package.json",
+ "../analytics-js-common/src/**/*"
+ ]
+}
diff --git a/packages/analytics-js-plugins/rollup.config.mjs b/packages/analytics-js-plugins/rollup.config.mjs
index cf85ddb0d..679297d3d 100644
--- a/packages/analytics-js-plugins/rollup.config.mjs
+++ b/packages/analytics-js-plugins/rollup.config.mjs
@@ -228,6 +228,10 @@ const buildEntries = () => {
{
find: '@rudderstack/analytics-js-common',
replacement: path.resolve('./dist/dts/packages/analytics-js-common/src'),
+ },
+ {
+ find: '@rudderstack/analytics-js-cookies',
+ replacement: path.resolve('./dist/dts/packages/analytics-js-cookies/src'),
}
]
}),
diff --git a/packages/analytics-js-plugins/src/shared-chunks/common.ts b/packages/analytics-js-plugins/src/shared-chunks/common.ts
index 03e42e4b8..4d54b8536 100644
--- a/packages/analytics-js-plugins/src/shared-chunks/common.ts
+++ b/packages/analytics-js-plugins/src/shared-chunks/common.ts
@@ -7,7 +7,6 @@ export * as http from '@rudderstack/analytics-js-common/utilities/http';
export * as string from '@rudderstack/analytics-js-common/utilities/string';
export * as json from '@rudderstack/analytics-js-common/utilities/json';
export * as timestamp from '@rudderstack/analytics-js-common/utilities/timestamp';
+export { encrypt, decrypt } from '@rudderstack/analytics-js-cookies/cookiesUtilities';
// eslint-disable-next-line import/no-cycle
export * as eventsDelivery from '../utilities/eventsDelivery';
-// eslint-disable-next-line import/no-cycle
-export * as encryption from '../storageEncryption/encryptionUtils';
diff --git a/packages/analytics-js-plugins/src/storageEncryption/constants.ts b/packages/analytics-js-plugins/src/storageEncryption/constants.ts
deleted file mode 100644
index e8bf6ef6f..000000000
--- a/packages/analytics-js-plugins/src/storageEncryption/constants.ts
+++ /dev/null
@@ -1 +0,0 @@
-export const ENCRYPTION_PREFIX_V3 = 'RS_ENC_v3_';
diff --git a/packages/analytics-js-plugins/src/storageEncryption/encryptionUtils.ts b/packages/analytics-js-plugins/src/storageEncryption/encryptionUtils.ts
deleted file mode 100644
index 07c5930ca..000000000
--- a/packages/analytics-js-plugins/src/storageEncryption/encryptionUtils.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { fromBase64, toBase64 } from '@rudderstack/analytics-js-common/utilities/string';
-import { ENCRYPTION_PREFIX_V3 } from './constants';
-
-const encrypt = (value: string): string => `${ENCRYPTION_PREFIX_V3}${toBase64(value)}`;
-
-const decrypt = (value: string): string => {
- if (value.startsWith(ENCRYPTION_PREFIX_V3)) {
- return fromBase64(value.substring(ENCRYPTION_PREFIX_V3.length));
- }
-
- return value;
-};
-
-export { encrypt, decrypt };
diff --git a/packages/analytics-js-plugins/src/storageEncryption/index.ts b/packages/analytics-js-plugins/src/storageEncryption/index.ts
index 455ffeb0f..c57cb48b9 100644
--- a/packages/analytics-js-plugins/src/storageEncryption/index.ts
+++ b/packages/analytics-js-plugins/src/storageEncryption/index.ts
@@ -2,7 +2,7 @@
import type { ApplicationState } from '@rudderstack/analytics-js-common/types/ApplicationState';
import type { ExtensionPlugin } from '@rudderstack/analytics-js-common/types/PluginEngine';
import type { PluginName } from '@rudderstack/analytics-js-common/types/PluginsManager';
-import { encryption } from '../shared-chunks/common';
+import { encrypt, decrypt } from '../shared-chunks/common';
const pluginName: PluginName = 'StorageEncryption';
@@ -13,10 +13,10 @@ const StorageEncryption = (): ExtensionPlugin => ({
},
storage: {
encrypt(value: any): string {
- return encryption.encrypt(value);
+ return encrypt(value);
},
- decrypt(value: string): string {
- return encryption.decrypt(value);
+ decrypt(value: string): string | undefined {
+ return decrypt(value);
},
},
});
diff --git a/packages/analytics-js-plugins/src/storageMigrator/index.ts b/packages/analytics-js-plugins/src/storageMigrator/index.ts
index 607ff8ea7..3ffad2a8f 100644
--- a/packages/analytics-js-plugins/src/storageMigrator/index.ts
+++ b/packages/analytics-js-plugins/src/storageMigrator/index.ts
@@ -7,7 +7,7 @@ import type { ILogger } from '@rudderstack/analytics-js-common/types/Logger';
import type { Nullable } from '@rudderstack/analytics-js-common/types/Nullable';
import type { IErrorHandler } from '@rudderstack/analytics-js-common/types/ErrorHandler';
import type { PluginName } from '@rudderstack/analytics-js-common/types/PluginsManager';
-import { checks, encryption } from '../shared-chunks/common';
+import { checks, decrypt } from '../shared-chunks/common';
import { decrypt as decryptLegacy } from '../storageEncryptionLegacy/legacyEncryptionUtils';
import { STORAGE_MIGRATION_ERROR } from './logMessages';
import { STORAGE_MIGRATOR_PLUGIN } from './constants';
@@ -32,12 +32,12 @@ const StorageMigrator = (): ExtensionPlugin => ({
return null;
}
- let decryptedVal = decryptLegacy(storedVal as string);
+ let decryptedVal: string | undefined = decryptLegacy(storedVal as string);
// The value is not encrypted using legacy encryption
// Try latest
if (decryptedVal === storedVal) {
- decryptedVal = encryption.decrypt(storedVal);
+ decryptedVal = decrypt(storedVal);
}
if (checks.isNullOrUndefined(decryptedVal)) {
@@ -45,7 +45,7 @@ const StorageMigrator = (): ExtensionPlugin => ({
}
// storejs that is used in localstorage engine already deserializes json strings but swallows errors
- return JSON.parse(decryptedVal);
+ return JSON.parse(decryptedVal as string);
} catch (err) {
errorHandler?.onError(err, STORAGE_MIGRATOR_PLUGIN, STORAGE_MIGRATION_ERROR(key));
return null;
diff --git a/packages/analytics-js-plugins/tsconfig.json b/packages/analytics-js-plugins/tsconfig.json
index 8307249fc..278c6606d 100644
--- a/packages/analytics-js-plugins/tsconfig.json
+++ b/packages/analytics-js-plugins/tsconfig.json
@@ -9,6 +9,7 @@
"./src/**/*",
"../../types/**/*",
"../analytics-js-common/src/**/*",
+ "../analytics-js-cookies/src/**/*",
"../analytics-js/src/**/*"
]
}
diff --git a/packages/analytics-js/__fixtures__/fixtures.ts b/packages/analytics-js/__fixtures__/fixtures.ts
index ff93587b3..63634805d 100644
--- a/packages/analytics-js/__fixtures__/fixtures.ts
+++ b/packages/analytics-js/__fixtures__/fixtures.ts
@@ -1,5 +1,5 @@
-import { SourceConfigResponse } from '@rudderstack/analytics-js/components/configManager/types';
-import { USER_SESSION_STORAGE_KEYS } from '@rudderstack/analytics-js/components/userSessionManager/constants';
+import type { SourceConfigResponse } from '@rudderstack/analytics-js/components/configManager/types';
+import { COOKIE_KEYS } from '@rudderstack/analytics-js-cookies/constants/cookies';
const identifyRequestPayload = {
userId: '123456',
@@ -230,312 +230,312 @@ const dummySourceConfigResponse: SourceConfigResponse = {
const entriesWithOnlyCookieStorage = {
userId: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.userId,
+ key: COOKIE_KEYS.userId,
},
userTraits: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.userTraits,
+ key: COOKIE_KEYS.userTraits,
},
anonymousId: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.anonymousId,
+ key: COOKIE_KEYS.anonymousId,
},
groupId: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.groupId,
+ key: COOKIE_KEYS.groupId,
},
groupTraits: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.groupTraits,
+ key: COOKIE_KEYS.groupTraits,
},
initialReferrer: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferrer,
+ key: COOKIE_KEYS.initialReferrer,
},
initialReferringDomain: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferringDomain,
+ key: COOKIE_KEYS.initialReferringDomain,
},
sessionInfo: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.sessionInfo,
+ key: COOKIE_KEYS.sessionInfo,
},
authToken: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.authToken,
+ key: COOKIE_KEYS.authToken,
},
};
const entriesWithOnlyLocalStorage = {
userId: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.userId,
+ key: COOKIE_KEYS.userId,
},
userTraits: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.userTraits,
+ key: COOKIE_KEYS.userTraits,
},
anonymousId: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.anonymousId,
+ key: COOKIE_KEYS.anonymousId,
},
groupId: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.groupId,
+ key: COOKIE_KEYS.groupId,
},
groupTraits: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.groupTraits,
+ key: COOKIE_KEYS.groupTraits,
},
initialReferrer: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferrer,
+ key: COOKIE_KEYS.initialReferrer,
},
initialReferringDomain: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferringDomain,
+ key: COOKIE_KEYS.initialReferringDomain,
},
sessionInfo: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.sessionInfo,
+ key: COOKIE_KEYS.sessionInfo,
},
authToken: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.authToken,
+ key: COOKIE_KEYS.authToken,
},
};
const entriesWithoutCookieStorage = {
userId: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.userId,
+ key: COOKIE_KEYS.userId,
},
userTraits: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.userTraits,
+ key: COOKIE_KEYS.userTraits,
},
anonymousId: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.anonymousId,
+ key: COOKIE_KEYS.anonymousId,
},
groupId: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.groupId,
+ key: COOKIE_KEYS.groupId,
},
groupTraits: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.groupTraits,
+ key: COOKIE_KEYS.groupTraits,
},
initialReferrer: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferrer,
+ key: COOKIE_KEYS.initialReferrer,
},
initialReferringDomain: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferringDomain,
+ key: COOKIE_KEYS.initialReferringDomain,
},
sessionInfo: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.sessionInfo,
+ key: COOKIE_KEYS.sessionInfo,
},
authToken: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.authToken,
+ key: COOKIE_KEYS.authToken,
},
};
const entriesWithoutCookieAndLocalStorage = {
userId: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.userId,
+ key: COOKIE_KEYS.userId,
},
userTraits: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.userTraits,
+ key: COOKIE_KEYS.userTraits,
},
anonymousId: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.anonymousId,
+ key: COOKIE_KEYS.anonymousId,
},
groupId: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.groupId,
+ key: COOKIE_KEYS.groupId,
},
groupTraits: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.groupTraits,
+ key: COOKIE_KEYS.groupTraits,
},
initialReferrer: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferrer,
+ key: COOKIE_KEYS.initialReferrer,
},
initialReferringDomain: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferringDomain,
+ key: COOKIE_KEYS.initialReferringDomain,
},
sessionInfo: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.sessionInfo,
+ key: COOKIE_KEYS.sessionInfo,
},
authToken: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.authToken,
+ key: COOKIE_KEYS.authToken,
},
};
const entriesWithOnlyNoStorage = {
userId: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.userId,
+ key: COOKIE_KEYS.userId,
},
userTraits: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.userTraits,
+ key: COOKIE_KEYS.userTraits,
},
anonymousId: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.anonymousId,
+ key: COOKIE_KEYS.anonymousId,
},
groupId: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.groupId,
+ key: COOKIE_KEYS.groupId,
},
groupTraits: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.groupTraits,
+ key: COOKIE_KEYS.groupTraits,
},
initialReferrer: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.initialReferrer,
+ key: COOKIE_KEYS.initialReferrer,
},
initialReferringDomain: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.initialReferringDomain,
+ key: COOKIE_KEYS.initialReferringDomain,
},
sessionInfo: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.sessionInfo,
+ key: COOKIE_KEYS.sessionInfo,
},
authToken: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.authToken,
+ key: COOKIE_KEYS.authToken,
},
};
const entriesWithOnlySessionStorage = {
userId: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.userId,
+ key: COOKIE_KEYS.userId,
},
userTraits: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.userTraits,
+ key: COOKIE_KEYS.userTraits,
},
anonymousId: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.anonymousId,
+ key: COOKIE_KEYS.anonymousId,
},
groupId: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.groupId,
+ key: COOKIE_KEYS.groupId,
},
groupTraits: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.groupTraits,
+ key: COOKIE_KEYS.groupTraits,
},
initialReferrer: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferrer,
+ key: COOKIE_KEYS.initialReferrer,
},
initialReferringDomain: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferringDomain,
+ key: COOKIE_KEYS.initialReferringDomain,
},
sessionInfo: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.sessionInfo,
+ key: COOKIE_KEYS.sessionInfo,
},
authToken: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.authToken,
+ key: COOKIE_KEYS.authToken,
},
};
const entriesWithMixStorage = {
userId: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.userId,
+ key: COOKIE_KEYS.userId,
},
userTraits: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.userTraits,
+ key: COOKIE_KEYS.userTraits,
},
anonymousId: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.anonymousId,
+ key: COOKIE_KEYS.anonymousId,
},
groupId: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.groupId,
+ key: COOKIE_KEYS.groupId,
},
groupTraits: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.groupTraits,
+ key: COOKIE_KEYS.groupTraits,
},
initialReferrer: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferrer,
+ key: COOKIE_KEYS.initialReferrer,
},
initialReferringDomain: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferringDomain,
+ key: COOKIE_KEYS.initialReferringDomain,
},
sessionInfo: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.sessionInfo,
+ key: COOKIE_KEYS.sessionInfo,
},
authToken: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.authToken,
+ key: COOKIE_KEYS.authToken,
},
};
const entriesWithMixStorageButWithoutNone = {
userId: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.userId,
+ key: COOKIE_KEYS.userId,
},
userTraits: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.userTraits,
+ key: COOKIE_KEYS.userTraits,
},
anonymousId: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.anonymousId,
+ key: COOKIE_KEYS.anonymousId,
},
groupId: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.groupId,
+ key: COOKIE_KEYS.groupId,
},
groupTraits: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.groupTraits,
+ key: COOKIE_KEYS.groupTraits,
},
initialReferrer: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferrer,
+ key: COOKIE_KEYS.initialReferrer,
},
initialReferringDomain: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferringDomain,
+ key: COOKIE_KEYS.initialReferringDomain,
},
sessionInfo: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.sessionInfo,
+ key: COOKIE_KEYS.sessionInfo,
},
authToken: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.authToken,
+ key: COOKIE_KEYS.authToken,
},
};
@@ -572,39 +572,39 @@ const postConsentStorageEntryOptions = {
const entriesWithInMemoryFallback = {
userId: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.userId,
+ key: COOKIE_KEYS.userId,
},
userTraits: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.userTraits,
+ key: COOKIE_KEYS.userTraits,
},
anonymousId: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.anonymousId,
+ key: COOKIE_KEYS.anonymousId,
},
groupId: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.groupId,
+ key: COOKIE_KEYS.groupId,
},
groupTraits: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.groupTraits,
+ key: COOKIE_KEYS.groupTraits,
},
initialReferrer: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferrer,
+ key: COOKIE_KEYS.initialReferrer,
},
initialReferringDomain: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferringDomain,
+ key: COOKIE_KEYS.initialReferringDomain,
},
sessionInfo: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.sessionInfo,
+ key: COOKIE_KEYS.sessionInfo,
},
authToken: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.authToken,
+ key: COOKIE_KEYS.authToken,
},
};
@@ -623,117 +623,117 @@ const loadOptionWithInvalidEntry = {
const entriesWithStorageOnlyForSession = {
userId: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.userId,
+ key: COOKIE_KEYS.userId,
},
userTraits: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.userTraits,
+ key: COOKIE_KEYS.userTraits,
},
anonymousId: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.anonymousId,
+ key: COOKIE_KEYS.anonymousId,
},
groupId: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.groupId,
+ key: COOKIE_KEYS.groupId,
},
groupTraits: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.groupTraits,
+ key: COOKIE_KEYS.groupTraits,
},
initialReferrer: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.initialReferrer,
+ key: COOKIE_KEYS.initialReferrer,
},
initialReferringDomain: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.initialReferringDomain,
+ key: COOKIE_KEYS.initialReferringDomain,
},
sessionInfo: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.sessionInfo,
+ key: COOKIE_KEYS.sessionInfo,
},
authToken: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.authToken,
+ key: COOKIE_KEYS.authToken,
},
};
const anonymousIdWithNoStorageEntries = {
userId: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.userId,
+ key: COOKIE_KEYS.userId,
},
userTraits: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.userTraits,
+ key: COOKIE_KEYS.userTraits,
},
anonymousId: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.anonymousId,
+ key: COOKIE_KEYS.anonymousId,
},
groupId: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.groupId,
+ key: COOKIE_KEYS.groupId,
},
groupTraits: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.groupTraits,
+ key: COOKIE_KEYS.groupTraits,
},
initialReferrer: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferrer,
+ key: COOKIE_KEYS.initialReferrer,
},
initialReferringDomain: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferringDomain,
+ key: COOKIE_KEYS.initialReferringDomain,
},
sessionInfo: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.sessionInfo,
+ key: COOKIE_KEYS.sessionInfo,
},
authToken: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.authToken,
+ key: COOKIE_KEYS.authToken,
},
};
const entriesWithStorageOnlyForAnonymousId = {
userId: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.userId,
+ key: COOKIE_KEYS.userId,
},
userTraits: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.userTraits,
+ key: COOKIE_KEYS.userTraits,
},
anonymousId: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.anonymousId,
+ key: COOKIE_KEYS.anonymousId,
},
groupId: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.groupId,
+ key: COOKIE_KEYS.groupId,
},
groupTraits: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.groupTraits,
+ key: COOKIE_KEYS.groupTraits,
},
initialReferrer: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.initialReferrer,
+ key: COOKIE_KEYS.initialReferrer,
},
initialReferringDomain: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.initialReferringDomain,
+ key: COOKIE_KEYS.initialReferringDomain,
},
sessionInfo: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.sessionInfo,
+ key: COOKIE_KEYS.sessionInfo,
},
authToken: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.authToken,
+ key: COOKIE_KEYS.authToken,
},
};
diff --git a/packages/analytics-js/__tests__/components/configManager/ConfigManager.test.ts b/packages/analytics-js/__tests__/components/configManager/ConfigManager.test.ts
index 72a02c601..df73dd4f0 100644
--- a/packages/analytics-js/__tests__/components/configManager/ConfigManager.test.ts
+++ b/packages/analytics-js/__tests__/components/configManager/ConfigManager.test.ts
@@ -246,7 +246,7 @@ describe('ConfigManager', () => {
configManagerInstance.init();
- expect(state.serverCookies.dataServiceUrl.value).toBe('http://test-host.com/my/own/endpoint');
+ expect(state.serverCookies.dataServiceUrl.value).toBe('https://test-host.com/my/own/endpoint');
});
it('should set the data server URL in state with default endpoint if server side cookies feature is enabled and dataServiceEndpoint is not provided', () => {
@@ -259,7 +259,7 @@ describe('ConfigManager', () => {
configManagerInstance.init();
- expect(state.serverCookies.dataServiceUrl.value).toBe('http://test-host.com/rsaRequest');
+ expect(state.serverCookies.dataServiceUrl.value).toBe('https://test-host.com/rsaRequest');
});
it('should disable server side cookies feature if provided endpoint is invalid', () => {
diff --git a/packages/analytics-js/__tests__/components/configManager/validate.test.ts b/packages/analytics-js/__tests__/components/configManager/validate.test.ts
index 33a3cf715..86f55a0f4 100644
--- a/packages/analytics-js/__tests__/components/configManager/validate.test.ts
+++ b/packages/analytics-js/__tests__/components/configManager/validate.test.ts
@@ -47,11 +47,11 @@ describe('Config manager util - validate load arguments', () => {
describe('getDataServiceUrl', () => {
it('should return dataServiceUrl', () => {
const dataServiceUrl = getDataServiceUrl('endpoint');
- expect(dataServiceUrl).toBe('http://test-host.com/endpoint');
+ expect(dataServiceUrl).toBe('https://test-host.com/endpoint');
});
it('should prepare the dataServiceUrl with endpoint without leading slash', () => {
const dataServiceUrl = getDataServiceUrl('/endpoint');
- expect(dataServiceUrl).toBe('http://test-host.com/endpoint');
+ expect(dataServiceUrl).toBe('https://test-host.com/endpoint');
});
});
});
diff --git a/packages/analytics-js/__tests__/components/core/Analytics.test.ts b/packages/analytics-js/__tests__/components/core/Analytics.test.ts
index 9672fbf8f..6bcdb7cda 100644
--- a/packages/analytics-js/__tests__/components/core/Analytics.test.ts
+++ b/packages/analytics-js/__tests__/components/core/Analytics.test.ts
@@ -1,9 +1,9 @@
import type { IPluginsManager } from '@rudderstack/analytics-js-common/types/PluginsManager';
-import type { IEventManager } from '@rudderstack/analytics-js/components/eventManager/types';
-import type { IUserSessionManager } from '@rudderstack/analytics-js/components/userSessionManager/types';
import type { IStoreManager } from '@rudderstack/analytics-js-common/types/Store';
-import { USER_SESSION_STORAGE_KEYS } from '@rudderstack/analytics-js/components/userSessionManager/constants';
+import { COOKIE_KEYS } from '@rudderstack/analytics-js-cookies/constants/cookies';
import { batch } from '@preact/signals-core';
+import type { IUserSessionManager } from '../../../src/components/userSessionManager/types';
+import type { IEventManager } from '../../../src/components/eventManager/types';
import {
entriesWithMixStorage,
entriesWithOnlyCookieStorage,
@@ -569,39 +569,39 @@ describe('Core - Analytics', () => {
expect(state.storage.entries.value).toStrictEqual({
userId: {
type: 'sessionStorage',
- key: USER_SESSION_STORAGE_KEYS.userId,
+ key: COOKIE_KEYS.userId,
},
userTraits: {
type: 'localStorage',
- key: USER_SESSION_STORAGE_KEYS.userTraits,
+ key: COOKIE_KEYS.userTraits,
},
anonymousId: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.anonymousId,
+ key: COOKIE_KEYS.anonymousId,
},
groupId: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.groupId,
+ key: COOKIE_KEYS.groupId,
},
groupTraits: {
type: 'memoryStorage',
- key: USER_SESSION_STORAGE_KEYS.groupTraits,
+ key: COOKIE_KEYS.groupTraits,
},
initialReferrer: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferrer,
+ key: COOKIE_KEYS.initialReferrer,
},
initialReferringDomain: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.initialReferringDomain,
+ key: COOKIE_KEYS.initialReferringDomain,
},
sessionInfo: {
type: 'cookieStorage',
- key: USER_SESSION_STORAGE_KEYS.sessionInfo,
+ key: COOKIE_KEYS.sessionInfo,
},
authToken: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.authToken,
+ key: COOKIE_KEYS.authToken,
},
});
diff --git a/packages/analytics-js/__tests__/components/eventManager/RudderEventFactory.test.ts b/packages/analytics-js/__tests__/components/eventManager/RudderEventFactory.test.ts
index 3766c5180..c6fc18f09 100644
--- a/packages/analytics-js/__tests__/components/eventManager/RudderEventFactory.test.ts
+++ b/packages/analytics-js/__tests__/components/eventManager/RudderEventFactory.test.ts
@@ -110,8 +110,8 @@ describe('RudderEventFactory', () => {
referring_domain: 'https://sample.com',
search: '',
title: '',
- url: 'http://www.test-host.com/',
- tab_url: 'http://www.test-host.com/',
+ url: 'https://www.test-host.com/',
+ tab_url: 'https://www.test-host.com/',
initial_referrer: 'https://test.com/page',
initial_referring_domain: 'https://test.com',
},
@@ -127,8 +127,8 @@ describe('RudderEventFactory', () => {
referring_domain: 'https://sample.com',
search: '',
title: '',
- url: 'http://www.test-host.com/',
- tab_url: 'http://www.test-host.com/',
+ url: 'https://www.test-host.com/',
+ tab_url: 'https://www.test-host.com/',
initial_referrer: 'https://test.com/page',
initial_referring_domain: 'https://test.com',
},
@@ -192,8 +192,8 @@ describe('RudderEventFactory', () => {
referring_domain: '',
search: '',
title: '',
- url: 'http://www.test-host.com/',
- tab_url: 'http://www.test-host.com/',
+ url: 'https://www.test-host.com/',
+ tab_url: 'https://www.test-host.com/',
initial_referrer: 'https://test.com/page',
initial_referring_domain: 'https://test.com',
},
@@ -261,8 +261,8 @@ describe('RudderEventFactory', () => {
referring_domain: '',
search: '',
title: '',
- url: 'http://www.test-host.com/',
- tab_url: 'http://www.test-host.com/',
+ url: 'https://www.test-host.com/',
+ tab_url: 'https://www.test-host.com/',
initial_referrer: 'https://test.com/page',
initial_referring_domain: 'https://test.com',
},
@@ -343,8 +343,8 @@ describe('RudderEventFactory', () => {
referring_domain: '',
search: '',
title: '',
- url: 'http://www.test-host.com/',
- tab_url: 'http://www.test-host.com/',
+ url: 'https://www.test-host.com/',
+ tab_url: 'https://www.test-host.com/',
initial_referrer: 'https://test.com/page',
initial_referring_domain: 'https://test.com',
},
@@ -405,8 +405,8 @@ describe('RudderEventFactory', () => {
referring_domain: '',
search: '',
title: '',
- url: 'http://www.test-host.com/',
- tab_url: 'http://www.test-host.com/',
+ url: 'https://www.test-host.com/',
+ tab_url: 'https://www.test-host.com/',
initial_referrer: 'https://test.com/page',
initial_referring_domain: 'https://test.com',
},
@@ -481,8 +481,8 @@ describe('RudderEventFactory', () => {
referring_domain: '',
search: '',
title: '',
- url: 'http://www.test-host.com/',
- tab_url: 'http://www.test-host.com/',
+ url: 'https://www.test-host.com/',
+ tab_url: 'https://www.test-host.com/',
initial_referrer: 'https://test.com/page',
initial_referring_domain: 'https://test.com',
},
diff --git a/packages/analytics-js/__tests__/components/eventManager/utilities.test.ts b/packages/analytics-js/__tests__/components/eventManager/utilities.test.ts
index a7c18e8c5..f3427e330 100644
--- a/packages/analytics-js/__tests__/components/eventManager/utilities.test.ts
+++ b/packages/analytics-js/__tests__/components/eventManager/utilities.test.ts
@@ -218,7 +218,7 @@ describe('Event Manager - Utilities', () => {
title: pageProperties.title,
url: pageProperties.url,
referring_domain: pageProperties.referring_domain,
- tab_url: 'http://www.test-host.com/',
+ tab_url: 'https://www.test-host.com/',
initial_referrer: state.session.initialReferrer.value,
initial_referring_domain: state.session.initialReferringDomain.value,
anonymousId: pageProperties.anonymousId,
@@ -323,8 +323,8 @@ describe('Event Manager - Utilities', () => {
referring_domain: '',
search: '',
title: '',
- url: 'http://www.test-host.com/',
- tab_url: 'http://www.test-host.com/',
+ url: 'https://www.test-host.com/',
+ tab_url: 'https://www.test-host.com/',
initial_referrer: 'https://test.com/page',
initial_referring_domain: 'https://test.com',
},
diff --git a/packages/analytics-js/__tests__/components/userSessionManager/UserSessionManager.test.ts b/packages/analytics-js/__tests__/components/userSessionManager/UserSessionManager.test.ts
index 7a3e89ea6..db602712a 100644
--- a/packages/analytics-js/__tests__/components/userSessionManager/UserSessionManager.test.ts
+++ b/packages/analytics-js/__tests__/components/userSessionManager/UserSessionManager.test.ts
@@ -1,10 +1,8 @@
import type { IPluginsManager } from '@rudderstack/analytics-js-common/types/PluginsManager';
import { stringifyWithoutCircular } from '@rudderstack/analytics-js-common/utilities/json';
+import { COOKIE_KEYS } from '@rudderstack/analytics-js-cookies/constants/cookies';
import { UserSessionManager } from '../../../src/components/userSessionManager';
-import {
- DEFAULT_USER_SESSION_VALUES,
- USER_SESSION_STORAGE_KEYS,
-} from '../../../src/components/userSessionManager/constants';
+import { DEFAULT_USER_SESSION_VALUES } from '../../../src/components/userSessionManager/constants';
import { StoreManager } from '../../../src/services/StoreManager';
import type { Store } from '../../../src/services/StoreManager/Store';
import { state, resetState } from '../../../src/state';
@@ -74,7 +72,7 @@ describe('User session manager', () => {
};
const clearStorage = () => {
- Object.values(USER_SESSION_STORAGE_KEYS).forEach(key => {
+ Object.values(COOKIE_KEYS).forEach(key => {
clientDataStoreCookie.remove(key);
clientDataStoreLS.remove(key);
clientDataStoreSession.remove(key);
@@ -601,7 +599,7 @@ describe('User session manager', () => {
...entriesWithOnlyCookieStorage,
anonymousId: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.anonymousId,
+ key: COOKIE_KEYS.anonymousId,
},
};
userSessionManager.init();
@@ -651,7 +649,7 @@ describe('User session manager', () => {
...entriesWithOnlyCookieStorage,
userId: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.userId,
+ key: COOKIE_KEYS.userId,
},
};
userSessionManager.init();
@@ -684,7 +682,7 @@ describe('User session manager', () => {
...entriesWithOnlyCookieStorage,
userTraits: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.userTraits,
+ key: COOKIE_KEYS.userTraits,
},
};
userSessionManager.init();
@@ -717,7 +715,7 @@ describe('User session manager', () => {
...entriesWithOnlyCookieStorage,
groupId: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.groupId,
+ key: COOKIE_KEYS.groupId,
},
};
userSessionManager.init();
@@ -750,7 +748,7 @@ describe('User session manager', () => {
...entriesWithOnlyCookieStorage,
groupTraits: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.groupTraits,
+ key: COOKIE_KEYS.groupTraits,
},
};
userSessionManager.init();
@@ -788,7 +786,7 @@ describe('User session manager', () => {
...entriesWithOnlyCookieStorage,
initialReferrer: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.initialReferrer,
+ key: COOKIE_KEYS.initialReferrer,
},
};
userSessionManager.init();
@@ -822,7 +820,7 @@ describe('User session manager', () => {
...entriesWithOnlyCookieStorage,
initialReferringDomain: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.initialReferringDomain,
+ key: COOKIE_KEYS.initialReferringDomain,
},
};
userSessionManager.init();
@@ -855,7 +853,7 @@ describe('User session manager', () => {
...entriesWithOnlyCookieStorage,
authToken: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.authToken,
+ key: COOKIE_KEYS.authToken,
},
};
userSessionManager.init();
@@ -893,7 +891,7 @@ describe('User session manager', () => {
...entriesWithOnlyCookieStorage,
sessionInfo: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.sessionInfo,
+ key: COOKIE_KEYS.sessionInfo,
},
};
userSessionManager.init();
@@ -916,7 +914,7 @@ describe('User session manager', () => {
...entriesWithOnlyCookieStorage,
anonymousId: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.anonymousId,
+ key: COOKIE_KEYS.anonymousId,
},
};
userSessionManager.init();
@@ -948,7 +946,7 @@ describe('User session manager', () => {
...entriesWithOnlyCookieStorage,
userId: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.userId,
+ key: COOKIE_KEYS.userId,
},
};
userSessionManager.init();
@@ -978,7 +976,7 @@ describe('User session manager', () => {
...entriesWithOnlyCookieStorage,
userTraits: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.userTraits,
+ key: COOKIE_KEYS.userTraits,
},
};
userSessionManager.init();
@@ -1012,7 +1010,7 @@ describe('User session manager', () => {
...entriesWithOnlyCookieStorage,
groupId: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.groupId,
+ key: COOKIE_KEYS.groupId,
},
};
userSessionManager.init();
@@ -1042,7 +1040,7 @@ describe('User session manager', () => {
...entriesWithOnlyCookieStorage,
groupTraits: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.groupTraits,
+ key: COOKIE_KEYS.groupTraits,
},
};
userSessionManager.init();
@@ -1076,7 +1074,7 @@ describe('User session manager', () => {
...entriesWithOnlyCookieStorage,
initialReferrer: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.initialReferrer,
+ key: COOKIE_KEYS.initialReferrer,
},
};
userSessionManager.init();
@@ -1107,7 +1105,7 @@ describe('User session manager', () => {
...entriesWithOnlyCookieStorage,
initialReferringDomain: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.initialReferringDomain,
+ key: COOKIE_KEYS.initialReferringDomain,
},
};
userSessionManager.init();
@@ -1141,7 +1139,7 @@ describe('User session manager', () => {
...entriesWithOnlyCookieStorage,
authToken: {
type: 'none',
- key: USER_SESSION_STORAGE_KEYS.authToken,
+ key: COOKIE_KEYS.authToken,
},
};
userSessionManager.init();
diff --git a/packages/analytics-js/__tests__/components/utilities/page.test.ts b/packages/analytics-js/__tests__/components/utilities/page.test.ts
index 9a3620874..24f801a69 100644
--- a/packages/analytics-js/__tests__/components/utilities/page.test.ts
+++ b/packages/analytics-js/__tests__/components/utilities/page.test.ts
@@ -222,13 +222,13 @@ describe('utilities - page', () => {
documentSpy.mockRestore();
expect(getDefaultPageProperties()).toEqual({
- url: 'http://www.test-host.com/',
+ url: 'https://www.test-host.com/',
path: '/',
search: '',
title: '',
referrer: '$direct',
referring_domain: '',
- tab_url: 'http://www.test-host.com/',
+ tab_url: 'https://www.test-host.com/',
});
});
});
diff --git a/packages/analytics-js/__tests__/services/StoreManager/top-domain/index.test.ts b/packages/analytics-js/__tests__/services/StoreManager/top-domain/index.test.ts
index 541a197e4..dc1e77410 100644
--- a/packages/analytics-js/__tests__/services/StoreManager/top-domain/index.test.ts
+++ b/packages/analytics-js/__tests__/services/StoreManager/top-domain/index.test.ts
@@ -1,14 +1,12 @@
import type { Nullable } from '@rudderstack/analytics-js-common/types/Nullable';
-import type { CookieOptions } from '@rudderstack/analytics-js-common/types/Store';
+import type { CookieOptions } from '@rudderstack/analytics-js-common/types/Storage';
+import { cookie } from '@rudderstack/analytics-js-cookies/component-cookie';
import { domain } from '../../../../src/services/StoreManager/top-domain';
-import { cookie } from '../../../../src/services/StoreManager/component-cookie';
let cookies: Record = {};
-jest.mock('../../../../src/services/StoreManager/component-cookie', () => {
- const originalModule = jest.requireActual(
- '../../../../src/services/StoreManager/component-cookie',
- );
+jest.mock('@rudderstack/analytics-js-cookies/component-cookie', () => {
+ const originalModule = jest.requireActual('@rudderstack/analytics-js-cookies/component-cookie');
return {
__esModule: true,
diff --git a/packages/analytics-js/package.json b/packages/analytics-js/package.json
index 6c6a14c7e..1c42fa207 100644
--- a/packages/analytics-js/package.json
+++ b/packages/analytics-js/package.json
@@ -111,6 +111,7 @@
},
"dependencies": {
"@rudderstack/analytics-js-common": "*",
+ "@rudderstack/analytics-js-cookies": "*",
"@rudderstack/analytics-js-plugins": "*",
"@preact/signals-core": "1.6.1",
"ramda": "0.30.1",
diff --git a/packages/analytics-js/project.json b/packages/analytics-js/project.json
index 7b7bbacc2..fcad3a401 100644
--- a/packages/analytics-js/project.json
+++ b/packages/analytics-js/project.json
@@ -84,7 +84,8 @@
},
"configurations": {
"ci": {
- "ci": true
+ "ci": true,
+ "codeCoverage": true
}
},
"dependsOn": ["build-browser"]
diff --git a/packages/analytics-js/rollup.config.mjs b/packages/analytics-js/rollup.config.mjs
index e718611a1..d40bbdb21 100644
--- a/packages/analytics-js/rollup.config.mjs
+++ b/packages/analytics-js/rollup.config.mjs
@@ -369,6 +369,10 @@ const buildEntries = () => {
{
find: '@rudderstack/analytics-js-common',
replacement: path.resolve('./dist/dts/packages/analytics-js-common/src'),
+ },
+ {
+ find: '@rudderstack/analytics-js-cookies',
+ replacement: path.resolve('./dist/dts/packages/analytics-js-cookies/src'),
}
]
}),
diff --git a/packages/analytics-js/src/components/capabilitiesManager/detection/dom.ts b/packages/analytics-js/src/components/capabilitiesManager/detection/dom.ts
index 48822612e..9373ddace 100644
--- a/packages/analytics-js/src/components/capabilitiesManager/detection/dom.ts
+++ b/packages/analytics-js/src/components/capabilitiesManager/detection/dom.ts
@@ -36,6 +36,7 @@ const legacyJSEngineRequiredPolyfills: Record boolean> = {
// Note, the polyfill service serves both ArrayBuffer and Uint8Array under the same feature name, "ArrayBuffer".
ArrayBuffer: () => !isFunction(globalThis.Uint8Array),
Set: () => !isFunction(globalThis.Set),
+ atob: () => !isFunction(globalThis.atob),
};
const isLegacyJSEngine = (): boolean => {
diff --git a/packages/analytics-js/src/components/userSessionManager/UserSessionManager.ts b/packages/analytics-js/src/components/userSessionManager/UserSessionManager.ts
index b51a0bd64..61c17d543 100644
--- a/packages/analytics-js/src/components/userSessionManager/UserSessionManager.ts
+++ b/packages/analytics-js/src/components/userSessionManager/UserSessionManager.ts
@@ -32,6 +32,7 @@ import type {
IHttpClient,
} from '@rudderstack/analytics-js-common/types/HttpClient';
import { stringifyWithoutCircular } from '@rudderstack/analytics-js-common/utilities/json';
+import { COOKIE_KEYS } from '@rudderstack/analytics-js-cookies/constants/cookies';
import {
CLIENT_DATA_STORE_COOKIE,
CLIENT_DATA_STORE_LS,
@@ -60,11 +61,7 @@ import {
} from './utils';
import { getReferringDomain } from '../utilities/url';
import { getReferrer } from '../utilities/page';
-import {
- DEFAULT_USER_SESSION_VALUES,
- SERVER_SIDE_COOKIES_DEBOUNCE_TIME,
- USER_SESSION_STORAGE_KEYS,
-} from './constants';
+import { DEFAULT_USER_SESSION_VALUES, SERVER_SIDE_COOKIES_DEBOUNCE_TIME } from './constants';
import type {
CallbackFunction,
CookieData,
@@ -189,12 +186,12 @@ class UserSessionManager implements IUserSessionManager {
storageClientDataStoreNameMap[storage] as string,
);
if (store && storage !== currentStorage) {
- const value = store.get(USER_SESSION_STORAGE_KEYS[key]);
+ const value = store.get(COOKIE_KEYS[key]);
if (isDefinedNotNullAndNotEmptyString(value)) {
- curStore.set(USER_SESSION_STORAGE_KEYS[key], value);
+ curStore.set(COOKIE_KEYS[key], value);
}
- store.remove(USER_SESSION_STORAGE_KEYS[key]);
+ store.remove(COOKIE_KEYS[key]);
}
});
}
@@ -220,8 +217,8 @@ class UserSessionManager implements IUserSessionManager {
}
});
- Object.keys(USER_SESSION_STORAGE_KEYS).forEach(storageKey => {
- const storageEntry = USER_SESSION_STORAGE_KEYS[storageKey as UserSessionStorageKeysType];
+ Object.keys(COOKIE_KEYS).forEach(storageKey => {
+ const storageEntry = COOKIE_KEYS[storageKey as UserSessionStorageKeysType];
stores.forEach(store => {
const migratedVal = this.pluginsManager?.invokeSingle(
'storage.migrate',
diff --git a/packages/analytics-js/src/components/userSessionManager/constants.ts b/packages/analytics-js/src/components/userSessionManager/constants.ts
index 3463fd3bb..b9bec7a24 100644
--- a/packages/analytics-js/src/components/userSessionManager/constants.ts
+++ b/packages/analytics-js/src/components/userSessionManager/constants.ts
@@ -1,18 +1,6 @@
import type { ApiObject } from '@rudderstack/analytics-js-common/types/ApiObject';
import type { SessionInfo } from '@rudderstack/analytics-js-common/types/Session';
-const USER_SESSION_STORAGE_KEYS = {
- userId: 'rl_user_id',
- userTraits: 'rl_trait',
- anonymousId: 'rl_anonymous_id',
- groupId: 'rl_group_id',
- groupTraits: 'rl_group_trait',
- initialReferrer: 'rl_page_init_referrer',
- initialReferringDomain: 'rl_page_init_referring_domain',
- sessionInfo: 'rl_session',
- authToken: 'rl_auth_token',
-};
-
const DEFAULT_USER_SESSION_VALUES = {
userId: '',
userTraits: {} as ApiObject,
@@ -27,8 +15,4 @@ const DEFAULT_USER_SESSION_VALUES = {
const SERVER_SIDE_COOKIES_DEBOUNCE_TIME = 10; // milliseconds
-export {
- USER_SESSION_STORAGE_KEYS,
- DEFAULT_USER_SESSION_VALUES,
- SERVER_SIDE_COOKIES_DEBOUNCE_TIME,
-};
+export { DEFAULT_USER_SESSION_VALUES, SERVER_SIDE_COOKIES_DEBOUNCE_TIME };
diff --git a/packages/analytics-js/src/components/userSessionManager/types.ts b/packages/analytics-js/src/components/userSessionManager/types.ts
index 8d598b347..31df01e18 100644
--- a/packages/analytics-js/src/components/userSessionManager/types.ts
+++ b/packages/analytics-js/src/components/userSessionManager/types.ts
@@ -2,7 +2,7 @@ import type { IStoreManager } from '@rudderstack/analytics-js-common/types/Store
import type { AnonymousIdOptions } from '@rudderstack/analytics-js-common/types/LoadOptions';
import type { Nullable } from '@rudderstack/analytics-js-common/types/Nullable';
import type { ApiObject } from '@rudderstack/analytics-js-common/types/ApiObject';
-import type { USER_SESSION_STORAGE_KEYS } from './constants';
+import type { COOKIE_KEYS } from '@rudderstack/analytics-js-cookies/constants/cookies';
export interface IUserSessionManager {
storeManager?: IStoreManager;
@@ -26,7 +26,7 @@ export interface IUserSessionManager {
setAuthToken(token: Nullable): void;
}
-export type UserSessionStorageKeysType = keyof typeof USER_SESSION_STORAGE_KEYS;
+export type UserSessionStorageKeysType = keyof typeof COOKIE_KEYS;
export type CookieData = {
name: string;
diff --git a/packages/analytics-js/src/constants/logMessages.ts b/packages/analytics-js/src/constants/logMessages.ts
index 927a13ec6..644294599 100644
--- a/packages/analytics-js/src/constants/logMessages.ts
+++ b/packages/analytics-js/src/constants/logMessages.ts
@@ -208,8 +208,6 @@ const INVALID_CONFIG_URL_WARNING = (context: string, configUrl: string | undefin
const POLYFILL_SCRIPT_LOAD_ERROR = (scriptId: string, url: string): string =>
`Failed to load the polyfill script with ID "${scriptId}" from URL ${url}.`;
-const COOKIE_DATA_ENCODING_ERROR = `Failed to encode the cookie data.`;
-
const UNSUPPORTED_PRE_CONSENT_STORAGE_STRATEGY = (
context: string,
selectedStrategy: StorageStrategy | undefined,
@@ -294,7 +292,6 @@ export {
API_CALLBACK_INVOKE_ERROR,
INVALID_CONFIG_URL_WARNING,
POLYFILL_SCRIPT_LOAD_ERROR,
- COOKIE_DATA_ENCODING_ERROR,
UNSUPPORTED_PRE_CONSENT_STORAGE_STRATEGY,
UNSUPPORTED_PRE_CONSENT_EVENTS_DELIVERY_TYPE,
SOURCE_CONFIG_RESOLUTION_ERROR,
diff --git a/packages/analytics-js/src/services/StoreManager/StoreManager.ts b/packages/analytics-js/src/services/StoreManager/StoreManager.ts
index 13cf8f5cc..26d8ee108 100644
--- a/packages/analytics-js/src/services/StoreManager/StoreManager.ts
+++ b/packages/analytics-js/src/services/StoreManager/StoreManager.ts
@@ -25,8 +25,8 @@ import {
import type { UserSessionKey } from '@rudderstack/analytics-js-common/types/UserSessionStorage';
import { batch } from '@preact/signals-core';
import { isDefined } from '@rudderstack/analytics-js-common/utilities/checks';
+import { COOKIE_KEYS } from '@rudderstack/analytics-js-cookies/constants/cookies';
import { USER_SESSION_KEYS } from '../../constants/storage';
-import { USER_SESSION_STORAGE_KEYS } from '../../components/userSessionManager/constants';
import { STORAGE_UNAVAILABLE_WARNING } from '../../constants/logMessages';
import { type StoreManagerOptions, storageClientDataStoreNameMap } from './types';
import { state } from '../../state';
@@ -148,7 +148,7 @@ class StoreManager implements IStoreManager {
...storageEntries,
[sessionKey]: {
type: finalStorageType,
- key: USER_SESSION_STORAGE_KEYS[storageKey],
+ key: COOKIE_KEYS[storageKey],
},
};
});
diff --git a/packages/analytics-js/src/services/StoreManager/storages/CookieStorage.ts b/packages/analytics-js/src/services/StoreManager/storages/CookieStorage.ts
index 94687197e..1a9dca416 100644
--- a/packages/analytics-js/src/services/StoreManager/storages/CookieStorage.ts
+++ b/packages/analytics-js/src/services/StoreManager/storages/CookieStorage.ts
@@ -4,8 +4,8 @@ import type { Nullable } from '@rudderstack/analytics-js-common/types/Nullable';
import type { ILogger } from '@rudderstack/analytics-js-common/types/Logger';
import { COOKIE_STORAGE } from '@rudderstack/analytics-js-common/constants/storages';
import { mergeDeepRight } from '@rudderstack/analytics-js-common/utilities/object';
+import { cookie } from '@rudderstack/analytics-js-cookies/component-cookie';
import { isStorageAvailable } from '../../../components/capabilitiesManager/detection';
-import { cookie } from '../component-cookie';
import { getDefaultCookieOptions } from './defaultOptions';
/**
diff --git a/packages/analytics-js/src/services/StoreManager/top-domain/index.ts b/packages/analytics-js/src/services/StoreManager/top-domain/index.ts
index 78638e92d..cf5d2af38 100644
--- a/packages/analytics-js/src/services/StoreManager/top-domain/index.ts
+++ b/packages/analytics-js/src/services/StoreManager/top-domain/index.ts
@@ -1,5 +1,5 @@
+import { cookie } from '@rudderstack/analytics-js-cookies/component-cookie';
import { STORAGE_TEST_TOP_LEVEL_DOMAIN } from '../../../constants/storage';
-import { cookie } from '../component-cookie';
const legacyGetHostname = (href: string): string => {
const l = document.createElement('a');
diff --git a/packages/analytics-js/tsconfig.json b/packages/analytics-js/tsconfig.json
index eb61d0af3..8ed2d2730 100644
--- a/packages/analytics-js/tsconfig.json
+++ b/packages/analytics-js/tsconfig.json
@@ -9,6 +9,7 @@
"./src/**/*",
"../../types/**/*",
"../analytics-js-plugins/src/**/*",
- "../analytics-js-common/src/**/*"
+ "../analytics-js-common/src/**/*",
+ "../analytics-js-cookies/src/**/*"
]
}
diff --git a/scripts/commitizen.js b/scripts/commitizen.js
index 1f7da82a7..1e876bdc9 100644
--- a/scripts/commitizen.js
+++ b/scripts/commitizen.js
@@ -20,6 +20,7 @@ module.exports = custom({
'rudder-sdk-js',
'analytics-js-sanity-suite',
'analytics-js-loading-scripts',
+ 'analytics-js-cookies',
'deps',
'examples',
],
diff --git a/scripts/fix-reports-path-in-github-runner.sh b/scripts/fix-reports-path-in-github-runner.sh
index f9a9fe190..6dab2ddde 100755
--- a/scripts/fix-reports-path-in-github-runner.sh
+++ b/scripts/fix-reports-path-in-github-runner.sh
@@ -5,7 +5,7 @@ defaultAbsolutePathPrefix="home/runner/work/rudder-sdk-js/rudder-sdk-js"
selfHostedAbsolutePathPrefix="runner/_work/rudder-sdk-js/rudder-sdk-js"
absolutePathPrefix="$selfHostedAbsolutePathPrefix"
# List of package folders
-projectFolderNames=("analytics-js" "analytics-js-common" "analytics-js-integrations" "analytics-js-plugins" "analytics-js-service-worker" "analytics-v1.1")
+projectFolderNames=("analytics-js" "analytics-js-common" "analytics-js-integrations" "analytics-js-plugins" "analytics-js-service-worker" "analytics-v1.1" "analytics-js-cookies")
# List of files to alter
for projectFolder in "${projectFolderNames[@]}"; do
diff --git a/scripts/generate-last-release-changelog.sh b/scripts/generate-last-release-changelog.sh
index 439fce510..d7c9b0ba4 100755
--- a/scripts/generate-last-release-changelog.sh
+++ b/scripts/generate-last-release-changelog.sh
@@ -1,6 +1,6 @@
#!/bin/bash
# List of package folders
-projectFolderNames=("analytics-js" "analytics-js-common" "analytics-js-integrations" "analytics-js-plugins" "analytics-js-service-worker" "analytics-v1.1" "loading-scripts")
+projectFolderNames=("analytics-js" "analytics-js-common" "analytics-js-integrations" "analytics-js-plugins" "analytics-js-service-worker" "analytics-v1.1" "loading-scripts" "analytics-js-cookies")
for projectFolder in "${projectFolderNames[@]}"; do
# Set of package project name
diff --git a/scripts/sync-tags-in-nx-projects.sh b/scripts/sync-tags-in-nx-projects.sh
index 1fdce0a3b..af2176b2c 100755
--- a/scripts/sync-tags-in-nx-projects.sh
+++ b/scripts/sync-tags-in-nx-projects.sh
@@ -1,6 +1,6 @@
#!/bin/bash
# List of package folders
-projectFolderNames=("analytics-js" "analytics-js-common" "analytics-js-integrations" "analytics-js-plugins" "analytics-js-service-worker" "analytics-v1.1" "loading-scripts")
+projectFolderNames=("analytics-js" "analytics-js-common" "analytics-js-integrations" "analytics-js-plugins" "analytics-js-service-worker" "analytics-v1.1" "loading-scripts" "analytics-js-cookies")
for projectFolder in "${projectFolderNames[@]}"; do
# Set of package project name
diff --git a/sonar-project.properties b/sonar-project.properties
index 86ef4706a..4d9ed05e9 100644
--- a/sonar-project.properties
+++ b/sonar-project.properties
@@ -13,9 +13,9 @@ sonar.links.scm=https://github.com/rudderlabs/rudder-sdk-js
sonar.links.issue=https://github.com/rudderlabs/rudder-sdk-js/issues
# Path to reports
-sonar.javascript.lcov.reportPaths=packages/analytics-js/reports/coverage/lcov.info,packages/analytics-js-plugins/reports/coverage/lcov.info,packages/analytics-js-common/reports/coverage/lcov.info,packages/analytics-js-integrations/reports/coverage/lcov.info,packages/analytics-js-service-worker/reports/coverage/lcov.info,packages/analytics-v1.1/reports/coverage/lcov.info
-sonar.testExecutionReportPaths=packages/analytics-js/reports/sonar/results-report.xml,packages/analytics-js-plugins/reports/sonar/results-report.xml,packages/analytics-js-common/reports/sonar/results-report.xml,packages/analytics-js-integrations/reports/sonar/results-report.xml,packages/analytics-js-service-worker/reports/sonar/results-report.xml,packages/analytics-v1.1/reports/sonar/results-report.xml
-sonar.eslint.reportPaths=packages/analytics-js/reports/eslint.json,packages/analytics-js-plugins/reports/eslint.json,packages/analytics-js-common/reports/eslint.json,packages/analytics-js-integrations/reports/eslint.json,packages/analytics-js-service-worker/reports/eslint.json,packages/analytics-v1.1/reports/eslint.json,packages/loading-scripts/reports/eslint.json,packages/sanity-suite/reports/eslint.json
+sonar.javascript.lcov.reportPaths=packages/analytics-js/reports/coverage/lcov.info,packages/analytics-js-plugins/reports/coverage/lcov.info,packages/analytics-js-common/reports/coverage/lcov.info,packages/analytics-js-integrations/reports/coverage/lcov.info,packages/analytics-js-service-worker/reports/coverage/lcov.info,packages/analytics-v1.1/reports/coverage/lcov.info,packages/analytics-js-cookies/reports/coverage/lcov.info
+sonar.testExecutionReportPaths=packages/analytics-js/reports/sonar/results-report.xml,packages/analytics-js-plugins/reports/sonar/results-report.xml,packages/analytics-js-common/reports/sonar/results-report.xml,packages/analytics-js-integrations/reports/sonar/results-report.xml,packages/analytics-js-service-worker/reports/sonar/results-report.xml,packages/analytics-v1.1/reports/sonar/results-report.xml,packages/analytics-js-cookies/reports/sonar/results-report.xml
+sonar.eslint.reportPaths=packages/analytics-js/reports/eslint.json,packages/analytics-js-plugins/reports/eslint.json,packages/analytics-js-common/reports/eslint.json,packages/analytics-js-integrations/reports/eslint.json,packages/analytics-js-service-worker/reports/eslint.json,packages/analytics-v1.1/reports/eslint.json,packages/loading-scripts/reports/eslint.json,packages/sanity-suite/reports/eslint.json,packages/analytics-js-cookies/reports/eslint.json
# Path to sources
sonar.sources=packages
diff --git a/tsconfig.json b/tsconfig.json
index 4c1698841..0e7bc12b3 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -12,7 +12,8 @@
],
"rudder-sdk-js/*": ["./packages/analytics-v1.1/src/*"],
"@rudderstack/analytics-js-loading-script/*": ["./packages/loading-scripts/src/*"],
- "@rudderstack/analytics-js-sanity-suite/*": ["./packages/sanity-suite/src/*"]
+ "@rudderstack/analytics-js-sanity-suite/*": ["./packages/sanity-suite/src/*"],
+ "@rudderstack/analytics-js-cookies/*": ["./packages/analytics-js-cookies/src/*"]
},
"composite": true,
"outDir": "./dist",
diff --git a/tsconfig.paths.json b/tsconfig.paths.json
index a7dbf07c2..3637e5688 100644
--- a/tsconfig.paths.json
+++ b/tsconfig.paths.json
@@ -7,6 +7,7 @@
{ "path": "./packages/analytics-js-service-worker/tsconfig.json" },
{ "path": "./packages/analytics-v1.1/tsconfig.json" },
{ "path": "./packages/loading-scripts/tsconfig.json" },
- { "path": "./packages/sanity-suite/tsconfig.json" }
+ { "path": "./packages/sanity-suite/tsconfig.json" },
+ { "path": "./packages/analytics-js-cookies/tsconfig.json" }
]
}