hosted-fields-sdk 1.2.2 → 1.2.4
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/CHANGES.md +7 -0
- package/README.md +12 -1
- package/dist/sdk/api/index.js +1 -1
- package/package.json +10 -10
package/CHANGES.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
#### 1.2.4
|
|
2
|
+
- Updated dependencies and patched vulnerabilities
|
|
3
|
+
|
|
4
|
+
#### 1.2.3
|
|
5
|
+
- Security update: PostMessage origin checks
|
|
6
|
+
- Support auto-focus on next field when value is valid
|
|
7
|
+
|
|
1
8
|
#### 1.2.2
|
|
2
9
|
- Upgrade in package.json and security vulnerabilities in dependencies
|
|
3
10
|
|
package/README.md
CHANGED
|
@@ -3,6 +3,11 @@
|
|
|
3
3
|
Hosted fields SDK is a toolkit that allows you generate a form/set of fields. It is published as a node-module to the public [npm registry](https://www.npmjs.com/package/hosted-fields-sdk).
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
## Demo
|
|
7
|
+
[[Live demo](https://codesandbox.io/s/dry-fire-q9txy?file=/src/App.js:5219-5240)]
|
|
8
|
+
|
|
9
|
+
## Setup
|
|
10
|
+
|
|
6
11
|
```
|
|
7
12
|
npm i hosted-fields-sdk --save
|
|
8
13
|
|
|
@@ -78,6 +83,7 @@ Setup is the first function you will call. It takes a config-object as its only
|
|
|
78
83
|
service: 'payment_method_service', // service of the payment method. Not mandatory (AstropayCard requires this)
|
|
79
84
|
styles: 'any custom styles you wish to include',
|
|
80
85
|
callback: () => someFunction,
|
|
86
|
+
autoFocusNext: true,
|
|
81
87
|
onLoadCallback: () => someFunction
|
|
82
88
|
el = A domElement to render the hosted fields in
|
|
83
89
|
}
|
|
@@ -87,6 +93,11 @@ Setup is the first function you will call. It takes a config-object as its only
|
|
|
87
93
|
|
|
88
94
|
Choose if all fields should be returned in a single iframe (`single`) or separate iframes (`multiple`). Defaults to `multiple` for backwards compability.
|
|
89
95
|
|
|
96
|
+
#### autoFocusNext
|
|
97
|
+
From version `1.2.3` of the hosted-fields-sdk and Hosted-fields `1.0.31`, hosted-fields can be support to auto focus on the next field when a valid value has been entered. E.g when the user has entered their creditcard number, focus will automatically be put on expiry and then on to cvc.
|
|
98
|
+
|
|
99
|
+
Defaults to `false`.
|
|
100
|
+
|
|
90
101
|
**callback**
|
|
91
102
|
Pass in a function that you want to be called when the values from the fields are fetched.
|
|
92
103
|
|
|
@@ -356,7 +367,7 @@ HostedFields.setup({
|
|
|
356
367
|
service: 'some service',
|
|
357
368
|
styles: '.hosted-input-container .input-container input { color: red; }',
|
|
358
369
|
callback: () => formCallbackHandler,
|
|
359
|
-
onLoadCallback: () => formHasLoadedCallbackhandler
|
|
370
|
+
onLoadCallback: () => formHasLoadedCallbackhandler,
|
|
360
371
|
el: '#hosted-fields-wrapper'
|
|
361
372
|
})
|
|
362
373
|
|
package/dist/sdk/api/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.HostedFields=void 0;var merchantId,renderMode,fields,hostedfieldsurl,service,styles,_keys=require("babel-runtime/core-js/object/keys"),_keys2=_interopRequireDefault(_keys),_extends2=require("babel-runtime/helpers/extends"),_extends3=_interopRequireDefault(_extends2),_objectWithoutProperties2=require("babel-runtime/helpers/objectWithoutProperties"),_objectWithoutProperties3=_interopRequireDefault(_objectWithoutProperties2),_actions=require("./actions");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var el,callback,onLoadCallback,targets=[],responses=[],onLoadCounter=0,window=document.parentWindow||document.defaultView;function setup(e){merchantId=e.merchantId,renderMode=e.renderMode,hostedfieldsurl=e.hostedfieldsurl,fields=e.fields,service=e.service,styles=e.styles,callback=e.callback,onLoadCallback=e.onLoadCallback,el=e.el,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.HostedFields=void 0;var merchantId,renderMode,fields,hostedfieldsurl,service,styles,_keys=require("babel-runtime/core-js/object/keys"),_keys2=_interopRequireDefault(_keys),_extends2=require("babel-runtime/helpers/extends"),_extends3=_interopRequireDefault(_extends2),_objectWithoutProperties2=require("babel-runtime/helpers/objectWithoutProperties"),_objectWithoutProperties3=_interopRequireDefault(_objectWithoutProperties2),_actions=require("./actions");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var el,callback,onLoadCallback,autoFocusNext,targets=[],responses=[],onLoadCounter=0,window=document.parentWindow||document.defaultView;function setup(e){merchantId=e.merchantId,renderMode=e.renderMode,hostedfieldsurl=e.hostedfieldsurl,fields=e.fields,service=e.service,styles=e.styles,callback=e.callback,onLoadCallback=e.onLoadCallback,autoFocusNext=e.autoFocusNext||!1,el=e.el,renderMode&&"single"===renderMode?registerSingleIframe():registerIframes()}function validateOrigin(e){return-1<[e,"https://test-hostedpages.paymentiq.io","https://hostedpages.paymentiq.io"].indexOf(e)}function get(){targets.forEach(function(e){e.target.postMessage({action:_actions.actions.get,merchantId:merchantId,id:e.id},hostedfieldsurl)})}function reset(){targets=[]}function destroyContent(){targets=[],responses=[],onLoadCallback=callback=el=styles=service=hostedfieldsurl=fields=merchantId=null,onLoadCounter=0}function registerIframes(){targets=targets.concat(fields.map(function(e){return initIframe(e)}))}function registerSingleIframe(){targets=initSingleIframe()}function eventHandler(e){if(validateOrigin(e.origin))switch(e.data.action){case _actions.actions.formData:responses.push({id:e.data.id,data:e.data.formData}),sendCallback();break;case _actions.actions.formSubmit:get()}else console.error("Received message from invalid origin",e.origin)}function sendCallback(){var t=responses.map(function(e){return e.id}),e=targets.map(function(e){return e.id});if(t.length===e.length){var r=!0;if(e.forEach(function(e){r=t.includes(e)}),r){var n=responses.reduce(function(e,t){var r=e.errors,n=(0,_objectWithoutProperties3.default)(e,["errors"]),o=t.data,a=o.errors,s=(0,_objectWithoutProperties3.default)(o,["errors"]),i=(0,_extends3.default)({},n,s),d=(0,_extends3.default)({},r,a);return 0<(0,_keys2.default)(d).length&&(i.errors=d),i},{});responses=[],callback()(n)}}}function initIframe(e){var t=document.createElement("iframe");t.id="hosted-field-"+e.id,t.name="hosted-field-"+e.id,t.src=hostedfieldsurl+"?mid="+merchantId;var r=document.querySelector(el),n=document.createElement("div");n.id="hosted-field-container-"+e.id,n.className="hosted-field-container";try{n.appendChild(t),r.appendChild(n);var o=document.querySelector("#"+t.id).contentWindow;return t.onload=createIframeProxy.bind(this,e,o),{id:t.id,target:o}}catch(e){console.log(e),onLoadCallback()()}}function createIframeProxy(e,t){var r={};r[e.name]=e,window.addEventListener("message",eventHandler,!1),t.postMessage({action:_actions.actions.setupContent,styles:styles,fields:r,service:service},hostedfieldsurl),++onLoadCounter===fields.length&&onLoadCallback&&(onLoadCallback()(),onLoadCounter=0)}function initSingleIframe(){var e=document.createElement("iframe");e.id="hosted-field-single-iframe",e.name="hosted-field-single-iframe",e.src=hostedfieldsurl+"?mid="+merchantId;var t=document.querySelector(el),r=document.createElement("div");r.id="hosted-field-container-single-iframe",r.className="hosted-field-container";try{r.appendChild(e),t.appendChild(r);var n=document.querySelector("#hosted-field-single-iframe").contentWindow;return e.onload=createSingleIframeProxy.bind(this,fields,n),[{id:e.id,target:n}]}catch(e){console.log(e),onLoadCallback()()}}function createSingleIframeProxy(e,t){var r={};e.forEach(function(e){r[e.name]=e}),window.addEventListener("message",eventHandler,!1),t.postMessage({action:_actions.actions.setupSingleIframeContent,styles:styles,fields:r,service:service,settings:{autoFocusNext:autoFocusNext}},hostedfieldsurl),onLoadCallback()()}var HostedFields=exports.HostedFields={setup:setup,get:get,reset:reset};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hosted-fields-sdk",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.4",
|
|
4
4
|
"description": "Hosted fields sdk",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -10,20 +10,20 @@
|
|
|
10
10
|
"uglify": "recursive-uglifyjs dist"
|
|
11
11
|
},
|
|
12
12
|
"devDependencies": {
|
|
13
|
-
"babel-cli": "^6.
|
|
14
|
-
"babel-eslint": "^
|
|
15
|
-
"babel-plugin-rewire": "^1.
|
|
13
|
+
"babel-cli": "^6.18.0",
|
|
14
|
+
"babel-eslint": "^10.1.0",
|
|
15
|
+
"babel-plugin-rewire": "^1.2.0",
|
|
16
16
|
"babel-plugin-transform-runtime": "^6.23.0",
|
|
17
17
|
"babel-preset-es2015": "latest",
|
|
18
18
|
"babel-preset-stage-2": "^6.24.1",
|
|
19
|
-
"babelify": "^
|
|
20
|
-
"browserify": "^
|
|
21
|
-
"eslint": "^
|
|
22
|
-
"jasmine-core": "^
|
|
19
|
+
"babelify": "^10.0.0",
|
|
20
|
+
"browserify": "^17.0.0",
|
|
21
|
+
"eslint": "^8.11.0",
|
|
22
|
+
"jasmine-core": "^4.0.1",
|
|
23
23
|
"ncp": "^2.0.0",
|
|
24
24
|
"recursive-uglifyjs": "0.2.0",
|
|
25
|
-
"rimraf": "^
|
|
26
|
-
"watchify": "^
|
|
25
|
+
"rimraf": "^3.0.2",
|
|
26
|
+
"watchify": "^4.0.0"
|
|
27
27
|
},
|
|
28
28
|
"repository": {
|
|
29
29
|
"type": "git",
|