From 693a2556ead55a9b0d2df6d6df5e2f79ae665ebd Mon Sep 17 00:00:00 2001 From: Orion Wolf-Hubbard Date: Tue, 19 Nov 2024 17:44:06 -0500 Subject: [PATCH] feat(glance-tag): tag pages with cobrowse script for glance EB-774 --- packages/glance-tag/CHANGELOG.md | 0 packages/glance-tag/README.md | 21 +++++++++++ packages/glance-tag/jest.config.js | 7 ++++ packages/glance-tag/package.json | 18 ++++++++++ packages/glance-tag/project.json | 39 +++++++++++++++++++++ packages/glance-tag/src/index.d.ts | 1 + packages/glance-tag/src/index.js | 22 ++++++++++++ packages/glance-tag/src/tests/index.test.js | 30 ++++++++++++++++ packages/glance-tag/tsconfig.json | 5 +++ packages/glance-tag/tsconfig.spec.json | 10 ++++++ yarn.lock | 8 +++++ 11 files changed, 161 insertions(+) create mode 100644 packages/glance-tag/CHANGELOG.md create mode 100644 packages/glance-tag/README.md create mode 100644 packages/glance-tag/jest.config.js create mode 100644 packages/glance-tag/package.json create mode 100644 packages/glance-tag/project.json create mode 100644 packages/glance-tag/src/index.d.ts create mode 100644 packages/glance-tag/src/index.js create mode 100644 packages/glance-tag/src/tests/index.test.js create mode 100644 packages/glance-tag/tsconfig.json create mode 100644 packages/glance-tag/tsconfig.spec.json diff --git a/packages/glance-tag/CHANGELOG.md b/packages/glance-tag/CHANGELOG.md new file mode 100644 index 000000000..e69de29bb diff --git a/packages/glance-tag/README.md b/packages/glance-tag/README.md new file mode 100644 index 000000000..209edd5ed --- /dev/null +++ b/packages/glance-tag/README.md @@ -0,0 +1,21 @@ +# @availity/glance-tag + +> adds a script to allow glance to view the page for share my screen support + +## Installation + +### NPM + +```bash +npm install @availity/glance-tag +``` + +### Yarn + +```bash +yarn add @availity/glance-tag +``` + +## Usage + +> All you have to do is include this as a dependency and import it into the root of your web application. diff --git a/packages/glance-tag/jest.config.js b/packages/glance-tag/jest.config.js new file mode 100644 index 000000000..e67c232bf --- /dev/null +++ b/packages/glance-tag/jest.config.js @@ -0,0 +1,7 @@ +const global = require('../../jest.config'); + +module.exports = { + ...global, + displayName: 'glance-tag', + coverageDirectory: '../../coverage/glance-tag', +}; diff --git a/packages/glance-tag/package.json b/packages/glance-tag/package.json new file mode 100644 index 000000000..c5b7fc595 --- /dev/null +++ b/packages/glance-tag/package.json @@ -0,0 +1,18 @@ +{ + "name": "@availity/glance-tag", + "version": "0.0.0", + "description": "adds a script to allow glance to view the page for share my screen support", + "main": "src/index.js", + "keywords": [], + "author": "Orion Wolf-Hubbard ", + "engines": { + "node": "^18.0.0 || ^20.0.0" + }, + "dependencies": { + "@availity/env-var": "workspace:*" + }, + "license": "MIT", + "publishConfig": { + "access": "public" + } +} diff --git a/packages/glance-tag/project.json b/packages/glance-tag/project.json new file mode 100644 index 000000000..ba298d103 --- /dev/null +++ b/packages/glance-tag/project.json @@ -0,0 +1,39 @@ +{ + "name": "@availity/glance-tag", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "targets": { + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/resolve-url"], + "options": { + "jestConfig": "packages/glance-tag/jest.config.js" + } + }, + "version": { + "executor": "@jscutlery/semver:version", + "options": { + "preset": "angular", + "commitMessageFormat": "chore(glance-tag): release version ${version} [skip ci]", + "tagPrefix": "{projectName}@", + "baseBranch": "master", + "trackDeps": true + } + }, + "lint": { + "executor": "@nx/eslint:lint", + "options": { + "eslintConfig": ".eslintrc.yaml", + "silent": false, + "fix": false, + "cache": true, + "cacheLocation": "./node_modules/.cache/glance-tag/.eslintcache", + "maxWarnings": -1, + "quiet": false, + "noEslintrc": false, + "hasTypeAwareRules": true, + "cacheStrategy": "metadata" + } + } + } +} diff --git a/packages/glance-tag/src/index.d.ts b/packages/glance-tag/src/index.d.ts new file mode 100644 index 000000000..4f36ee138 --- /dev/null +++ b/packages/glance-tag/src/index.d.ts @@ -0,0 +1 @@ +/* eslint-disable unicorn/no-empty-file */ diff --git a/packages/glance-tag/src/index.js b/packages/glance-tag/src/index.js new file mode 100644 index 000000000..2ec921111 --- /dev/null +++ b/packages/glance-tag/src/index.js @@ -0,0 +1,22 @@ +/* eslint-disable unicorn/prefer-dom-node-dataset */ +import envVar from '@availity/env-var' + +export const addGlanceScript = () => { + const script = document.createElement('script') + const isProd = envVar({ prod: true }) + const site = isProd ? 'production' : 'staging' + + script.setAttribute('id', 'glance-cobrowse') + script.setAttribute('charset', 'glance-cobrowse') + script.setAttribute('type', 'text/javascript') + script.setAttribute('src', `https://www.glancecdn.net/cobrowse/CobrowseJS.ashx?group=21510&site=${site}`) + script.setAttribute('data-groupid', '21510') + script.setAttribute('data-site', site) + script.setAttribute('data-ws', 'www.glance.net') + script.setAttribute('data-presence', 'on') + script.setAttribute('data-cookietype', 'normal') + + document.head.append(script) +} + +window.addEventListener('load', addGlanceScript); diff --git a/packages/glance-tag/src/tests/index.test.js b/packages/glance-tag/src/tests/index.test.js new file mode 100644 index 000000000..0e0a835c6 --- /dev/null +++ b/packages/glance-tag/src/tests/index.test.js @@ -0,0 +1,30 @@ +const envVar = require('@availity/env-var') +const { addGlanceScript } = require('../index') + +jest.mock('@availity/env-var/src', () => jest.fn()) + +describe('glance-tag', () => { + beforeEach(() => { + document.head.innerHTML = ''; + }); + + test('load event should add glance script just from importing package', () => { + window.dispatchEvent(new Event('load')) + const scriptTag = document.getElementById('glance-cobrowse') + expect(scriptTag).not.toBeNull() + }) + + test('glance script should have production site in production', () => { + envVar.mockReturnValue(true) + addGlanceScript() + const scriptTag = document.getElementById('glance-cobrowse') + expect(scriptTag.src).toBe('https://www.glancecdn.net/cobrowse/CobrowseJS.ashx?group=21510&site=production') + }) + + test('glance script should have staging site when not in production', () => { + envVar.mockReturnValue(undefined) + addGlanceScript() + const scriptTag = document.getElementById('glance-cobrowse') + expect(scriptTag.src).toBe('https://www.glancecdn.net/cobrowse/CobrowseJS.ashx?group=21510&site=staging') + }) +}) diff --git a/packages/glance-tag/tsconfig.json b/packages/glance-tag/tsconfig.json new file mode 100644 index 000000000..b70853b01 --- /dev/null +++ b/packages/glance-tag/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "../../tsconfig.json", + "include": ["."], + "exclude": ["dist", "build", "node_modules"] +} diff --git a/packages/glance-tag/tsconfig.spec.json b/packages/glance-tag/tsconfig.spec.json new file mode 100644 index 000000000..a85a3f595 --- /dev/null +++ b/packages/glance-tag/tsconfig.spec.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"], + "allowJs": true + }, + "include": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] +} diff --git a/yarn.lock b/yarn.lock index be01e6e25..e3de75609 100644 --- a/yarn.lock +++ b/yarn.lock @@ -361,6 +361,14 @@ __metadata: languageName: unknown linkType: soft +"@availity/glance-tag@workspace:packages/glance-tag": + version: 0.0.0-use.local + resolution: "@availity/glance-tag@workspace:packages/glance-tag" + dependencies: + "@availity/env-var": "workspace:*" + languageName: unknown + linkType: soft + "@availity/message-core@workspace:packages/message-core": version: 0.0.0-use.local resolution: "@availity/message-core@workspace:packages/message-core"