@govuk-pay/pay-js-commons 7.0.32 → 7.0.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -1,20 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var browsered = require('./browsered');
4
3
  var utils = require('./utils');
5
4
  var nunjucksFilters = require('./nunjucks-filters');
6
5
  var logging = require('./logging');
7
6
  var constants = require('./constants');
8
-
9
- // Add to window.GOVUKPAY if in browser context
10
- if (typeof window !== 'undefined') {
11
- window.GOVUKPAY = window.GOVUKPAY || {};
12
- window.GOVUKPAY = {
13
- browsered: browsered
14
- };
15
- }
16
7
  module.exports = {
17
- browsered: browsered,
18
8
  utils: utils,
19
9
  nunjucksFilters: nunjucksFilters,
20
10
  logging: logging,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@govuk-pay/pay-js-commons",
3
- "version": "7.0.32",
3
+ "version": "7.0.34",
4
4
  "description": "Reusable js scripts for GOV.UK Pay Node.js projects",
5
5
  "engines": {
6
6
  "node": "^22.17.1",
@@ -19,9 +19,7 @@
19
19
  "transpile": "npm run clean && babel src --out-dir lib --ignore '**/*.test.js' && npm run copy",
20
20
  "browserify-analytics": "browserify src/analytics/index.js -o lib/analytics/dist/cookies.js -t brfs -t babelify",
21
21
  "prepare": "npm run transpile && npm run browserify-analytics",
22
- "test": "npm run jest-tests npm && npm run karma-tests",
23
- "karma-tests": "karma start",
24
- "jest-tests": "jest src/analytics src/utils/**.test.js src/utils/**/*.test.js src/nunjucks-filters/*.test.js",
22
+ "test": "jest",
25
23
  "lint": "standard --fix"
26
24
  },
27
25
  "repository": {
@@ -126,13 +124,6 @@
126
124
  "jest-environment-jsdom": "^29.4.3",
127
125
  "js-cookie": "^3.0.0",
128
126
  "jsdom": "^20.0.3",
129
- "jsdom-global": "^3.0.2",
130
- "karma": "^6.0.0",
131
- "karma-browserify": "^8.0.0",
132
- "karma-chrome-launcher": "^3.1.0",
133
- "karma-mocha": "^2.0.0",
134
- "karma-mocha-reporter": "^2.2.5",
135
- "karma-source-map-support": "^1.2.0",
136
127
  "lint-staged": "^13.0.1",
137
128
  "mocha": "^10.0.0",
138
129
  "nock": "^13.5.1",
@@ -1,108 +0,0 @@
1
- 'use strict';
2
-
3
- // NPM Dependencies
4
- var every = require('lodash/every');
5
-
6
- // Local Dependencies
7
- var checks = require('../../utils/field-validation-checks');
8
- exports.enableFieldValidation = function () {
9
- var allForms = Array.prototype.slice.call(document.getElementsByTagName('form'));
10
- allForms.filter(function (form) {
11
- return form.hasAttribute('data-validate');
12
- }).map(function (form) {
13
- return form.addEventListener('submit', initValidation, false);
14
- });
15
- };
16
- function initValidation(e) {
17
- var form = e.target;
18
- e.preventDefault();
19
- clearPreviousErrors();
20
- var validatedFields = findFields(form).map(function (field) {
21
- return validateField(form, field);
22
- });
23
- if (every(validatedFields)) {
24
- form.submit();
25
- } else {
26
- populateErrorSummary(form);
27
- }
28
- }
29
- function clearPreviousErrors() {
30
- var previousErrorsMessages = Array.prototype.slice.call(document.querySelectorAll('.error-message, .error-summary'));
31
- var previousErrorsFields = Array.prototype.slice.call(document.querySelectorAll('.form-group.error'));
32
- previousErrorsMessages.map(function (error) {
33
- return error.remove();
34
- });
35
- previousErrorsFields.map(function (errorField) {
36
- return errorField.classList.remove('error');
37
- });
38
- }
39
- function findFields(form) {
40
- var formFields = Array.prototype.slice.call(form.querySelectorAll('input, textarea, select'));
41
- return formFields.filter(function (field) {
42
- return field.hasAttribute('data-validate');
43
- });
44
- }
45
- function validateField(form, field) {
46
- var result;
47
- var validationTypes = field.getAttribute('data-validate').split(' ');
48
- validationTypes.forEach(function (validationType) {
49
- switch (validationType) {
50
- case 'required':
51
- result = checks.isEmpty(field.value);
52
- break;
53
- case 'currency':
54
- result = checks.isCurrency(field.value);
55
- break;
56
- case 'email':
57
- result = checks.isValidEmail(field.value);
58
- break;
59
- case 'phone':
60
- result = checks.isPhoneNumber(field.value);
61
- break;
62
- case 'https':
63
- result = checks.isHttps(field.value);
64
- break;
65
- case 'belowMaxAmount':
66
- result = checks.isAboveMaxAmount(field.value);
67
- break;
68
- case 'passwordLessThanTenChars':
69
- result = checks.isPasswordLessThanTenChars(field.value);
70
- break;
71
- case 'isFieldGreaterThanMaxLengthChars':
72
- result = checks.isFieldGreaterThanMaxLengthChars(field.value, field.getAttribute('data-validate-max-length'));
73
- break;
74
- case 'isNaxsiSafe':
75
- result = checks.isNaxsiSafe(field.value);
76
- break;
77
- default:
78
- result = false;
79
- break;
80
- }
81
- if (result) {
82
- applyErrorMessaging(form, field, result);
83
- }
84
- });
85
- return !field.closest('.form-group').classList.contains('error');
86
- }
87
- function applyErrorMessaging(form, field, result) {
88
- var formGroup = field.closest('.form-group');
89
- if (!formGroup.classList.contains('error')) {
90
- formGroup.classList.add('error');
91
- document.querySelector('label[for="' + field.id + '"]').insertAdjacentHTML('beforeend', '<span class="error-message">' + result + '</span>');
92
- }
93
- }
94
- function populateErrorSummary(form) {
95
- var erroringFields = Array.prototype.slice.call(form.querySelectorAll('.form-group.error label'));
96
- var errorMessages = erroringFields.map(function (field) {
97
- var id = field.getAttribute('for');
98
- var label = field.innerHTML.split('<')[0].trim();
99
- return {
100
- label: label,
101
- id: id
102
- };
103
- });
104
- form.parentNode.insertAdjacentHTML('afterbegin', "<div id=\"error-summary\" class=\"error-summary\" role=\"group\" aria-labelledby=\"error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-medium error-summary-heading\" id=\"error-summary-heading\">\n There was a problem with the details you gave for:\n </h2>\n <ul class=\"error-summary-list\">\n ".concat(errorMessages.map(function (message) {
105
- return "<li class=\"error-".concat(message.id, "\"><a href=\"#").concat(message.id, "\">").concat(message.label, "</a></li>");
106
- }).join(''), "\n </ul>\n </div>"));
107
- window.scroll(0, 0);
108
- }
@@ -1,3 +0,0 @@
1
- 'use strict';
2
-
3
- module.exports.fieldValidation = require('./field-validation/field-validation');