@ponchopay/pp-browser 1.3.0 → 1.3.1
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/dist/src/PpForm.d.ts +3 -1
- package/dist/src/PpForm.js +24 -22
- package/dist/src/PpForm.js.map +1 -1
- package/dist/src/PpPayment.d.ts +0 -1
- package/dist/src/PpPayment.js +0 -3
- package/dist/src/PpPayment.js.map +1 -1
- package/dist/src/PpSubscription.d.ts +0 -1
- package/dist/src/PpSubscription.js +0 -3
- package/dist/src/PpSubscription.js.map +1 -1
- package/package.json +6 -2
package/dist/src/PpForm.d.ts
CHANGED
|
@@ -4,8 +4,11 @@ export declare abstract class PpForm extends HTMLElement {
|
|
|
4
4
|
private readonly label;
|
|
5
5
|
private readonly fields;
|
|
6
6
|
protected constructor(path: string, label: string, fields: Record<string, Field>);
|
|
7
|
+
setAttribute(name: string, value: string): void;
|
|
8
|
+
removeAttribute(name: string): void;
|
|
7
9
|
private getAttributeWithFallback;
|
|
8
10
|
private isAttributeSet;
|
|
11
|
+
private syncField;
|
|
9
12
|
private syncAttributes;
|
|
10
13
|
private showErrorMessage;
|
|
11
14
|
connectedCallback(): void;
|
|
@@ -15,5 +18,4 @@ export declare abstract class PpForm extends HTMLElement {
|
|
|
15
18
|
private validateField;
|
|
16
19
|
checkArrayIsValid(attribute: string, field: Field): boolean;
|
|
17
20
|
checkValidity(): boolean;
|
|
18
|
-
static get observedAttributes(): string[];
|
|
19
21
|
}
|
package/dist/src/PpForm.js
CHANGED
|
@@ -9,6 +9,14 @@ export class PpForm extends HTMLElement {
|
|
|
9
9
|
this.fields = { ...fields, token: mandatory(single()) };
|
|
10
10
|
this.attachShadow({ mode: 'open' });
|
|
11
11
|
}
|
|
12
|
+
setAttribute(name, value) {
|
|
13
|
+
super.setAttribute(name, value);
|
|
14
|
+
this.syncAttributes();
|
|
15
|
+
}
|
|
16
|
+
removeAttribute(name) {
|
|
17
|
+
super.removeAttribute(name);
|
|
18
|
+
this.syncAttributes();
|
|
19
|
+
}
|
|
12
20
|
getAttributeWithFallback(name, fallback) {
|
|
13
21
|
var _a;
|
|
14
22
|
return (_a = this.getAttribute(name)) !== null && _a !== void 0 ? _a : fallback;
|
|
@@ -16,31 +24,28 @@ export class PpForm extends HTMLElement {
|
|
|
16
24
|
isAttributeSet(name) {
|
|
17
25
|
return this.getAttributeWithFallback(name, '').length > 0;
|
|
18
26
|
}
|
|
27
|
+
syncField(form, name, field) {
|
|
28
|
+
var _a;
|
|
29
|
+
if (field.type === 'array') {
|
|
30
|
+
Object.entries((_a = field.schema) !== null && _a !== void 0 ? _a : {}).forEach(([subName, subField]) => {
|
|
31
|
+
const regex = new RegExp(`^${name}\\.\\d+\\.${subName}(\\.|$)`);
|
|
32
|
+
Array.from(this.attributes)
|
|
33
|
+
.filter(attribute => regex.test(attribute.name))
|
|
34
|
+
.forEach(attribute => this.syncField(form, attribute.name, subField));
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
else if (this.hasAttribute(name)) {
|
|
38
|
+
const value = this.getAttribute(name);
|
|
39
|
+
createInputsForField(form, name, value, field.type);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
19
42
|
syncAttributes() {
|
|
20
43
|
const form = this.shadowRoot.querySelector('form');
|
|
21
44
|
if (form) {
|
|
22
45
|
const base = this.getAttributeWithFallback('base', DEFAULT_BASE);
|
|
23
46
|
form.action = joinPaths(base, this.path);
|
|
24
47
|
form.replaceChildren();
|
|
25
|
-
Object.entries(this.fields).forEach(([
|
|
26
|
-
if (field.type === 'array') {
|
|
27
|
-
const matchingAttributes = Array.from(this.attributes).filter(attr => attr.name.startsWith(`${attribute}.`));
|
|
28
|
-
matchingAttributes.forEach(attr => {
|
|
29
|
-
var _a;
|
|
30
|
-
const parts = attr.name.split('.');
|
|
31
|
-
const fieldName = parts[parts.length - 1];
|
|
32
|
-
const subField = (_a = field.schema) === null || _a === void 0 ? void 0 : _a[fieldName];
|
|
33
|
-
if (!subField)
|
|
34
|
-
return;
|
|
35
|
-
createInputsForField(form, attr.name, attr.value, subField.type);
|
|
36
|
-
});
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
if (this.hasAttribute(attribute)) {
|
|
40
|
-
const attr = this.getAttribute(attribute);
|
|
41
|
-
createInputsForField(form, attribute, attr, field.type);
|
|
42
|
-
}
|
|
43
|
-
});
|
|
48
|
+
Object.entries(this.fields).forEach(([name, field]) => this.syncField(form, name, field));
|
|
44
49
|
const slot = document.createElement('slot');
|
|
45
50
|
slot.innerHTML = this.label;
|
|
46
51
|
const button = document.createElement('button');
|
|
@@ -167,8 +172,5 @@ export class PpForm extends HTMLElement {
|
|
|
167
172
|
return this.validateField(attribute, { type, required, schema });
|
|
168
173
|
});
|
|
169
174
|
}
|
|
170
|
-
static get observedAttributes() {
|
|
171
|
-
return ['base', 'token'];
|
|
172
|
-
}
|
|
173
175
|
}
|
|
174
176
|
//# sourceMappingURL=PpForm.js.map
|
package/dist/src/PpForm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PpForm.js","sourceRoot":"","sources":["../../src/PpForm.ts"],"names":[],"mappings":"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","sourcesContent":["import { createInputsForField, joinPaths } from './utils.js';\nimport { Field, mandatory, single } from './validation.js';\n\nconst DEFAULT_BASE = 'https://pay.ponchopay.com/';\n\nexport abstract class PpForm extends HTMLElement {\n private readonly path: string;\n private readonly label: string;\n private readonly fields: Record<string, Field>;\n\n protected constructor(\n path: string,\n label: string,\n fields: Record<string, Field>\n ) {\n super();\n this.path = path;\n this.label = label;\n this.fields = { ...fields, token: mandatory(single()) };\n this.attachShadow({ mode: 'open' });\n }\n\n private getAttributeWithFallback(name: string, fallback: string): string {\n return this.getAttribute(name) ?? fallback;\n }\n\n private isAttributeSet(name: string): boolean {\n return this.getAttributeWithFallback(name, '').length > 0;\n }\n\n private syncAttributes(): void {\n const form = this.shadowRoot!.querySelector('form');\n if (form) {\n const base = this.getAttributeWithFallback('base', DEFAULT_BASE);\n\n form.action = joinPaths(base, this.path);\n form.replaceChildren();\n\n Object.entries(this.fields).forEach(([attribute, field]) => {\n if (field.type === 'array') {\n const matchingAttributes = Array.from(this.attributes).filter(attr =>\n attr.name.startsWith(`${attribute}.`)\n );\n\n matchingAttributes.forEach(attr => {\n const parts = attr.name.split('.');\n const fieldName = parts[parts.length - 1];\n\n const subField = field.schema?.[fieldName];\n if (!subField) return;\n\n createInputsForField(form, attr.name, attr.value, subField.type);\n });\n\n return;\n }\n\n if (this.hasAttribute(attribute)) {\n const attr = this.getAttribute(attribute)!;\n createInputsForField(form, attribute, attr, field.type);\n }\n });\n\n const slot = document.createElement('slot');\n slot.innerHTML = this.label;\n\n const button = document.createElement('button');\n button.setAttribute('part', 'button');\n button.type = 'submit';\n button.appendChild(slot);\n form.appendChild(button);\n }\n }\n\n private showErrorMessage(): void {\n const form = this.shadowRoot!.querySelector('form');\n if (form) {\n form.querySelector('div')?.remove();\n\n const div = document.createElement('div');\n div.setAttribute('part', 'error');\n div.className = 'error';\n div.innerHTML = 'Some attributes are incorrect. Please, review them.';\n form.appendChild(div);\n }\n }\n\n public connectedCallback(): void {\n const base = this.getAttributeWithFallback('base', DEFAULT_BASE);\n\n const style = document.createElement('style');\n style.textContent = `\n form {\n display: contents;\n }\n\n button {\n width: 100%;\n background-color: #02C2A0;\n white-space: nowrap;\n text-decoration-line: none;\n border-radius: .25rem;\n box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n text-align: center;\n font-size: 1.25rem;\n line-height: 1.75rem;\n color: white;\n margin-top: .5rem;\n margin-bottom: .75rem;\n padding: .75rem 1rem;\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n justify-content: space-evenly;\n cursor: pointer;\n text-transform: none;\n box-sizing: border-box;\n border-width: 0;\n border-style: solid;\n border-color: currentColor;\n }\n\n div.error {\n color: #EB3B50;\n font-size: 0.875rem;\n }`;\n\n const form = document.createElement('form');\n form.action = joinPaths(base, this.path);\n form.method = 'post';\n form.onsubmit = event => {\n if (!this.checkValidity()) {\n event.preventDefault();\n this.showErrorMessage();\n }\n };\n this.shadowRoot!.append(style, form);\n\n this.syncAttributes();\n }\n\n public disconnectedCallback(): void {\n this.shadowRoot!.replaceChildren();\n }\n\n public attributeChangedCallback(): void {\n this.syncAttributes();\n }\n\n public submit(): void {\n this.shadowRoot!.querySelector('form')?.requestSubmit();\n }\n\n private validateField(fieldPath: string, field: Field): boolean {\n if (field.required === true) {\n return this.isAttributeSet(fieldPath);\n }\n\n if (Array.isArray(field.required)) {\n const [dependant, value] = field.required;\n\n if (\n (value === true || this.getAttribute(dependant) === value) &&\n this.isAttributeSet(dependant)\n ) {\n return this.isAttributeSet(fieldPath);\n }\n }\n\n return true;\n }\n\n public checkArrayIsValid(attribute: string, field: Field): boolean {\n const matchingAttributes = Array.from(this.attributes).filter(attr =>\n attr.name.startsWith(`${attribute}.`)\n );\n\n const indexes = matchingAttributes.map(attr => {\n const match = attr.name.match(new RegExp(`^${attribute}\\\\.(\\\\d+)\\\\.`));\n return match ? parseInt(match[1], 10) : null;\n });\n\n const uniqueIndexes = Array.from(new Set(indexes));\n\n // If array is required and no items exist fail validation\n if (field.required === true && uniqueIndexes.length === 0) {\n return false;\n }\n\n // If no items exist but array is optional, validation passes\n if (uniqueIndexes.length === 0) {\n return true;\n }\n\n return uniqueIndexes.every(index =>\n Object.entries(field.schema!).every(([key, subField]) => {\n const fullPath = `${attribute}.${index}.${key}`;\n return this.validateField(fullPath, subField);\n })\n );\n }\n\n public checkValidity(): boolean {\n return Object.entries(this.fields).every(\n ([attribute, { type, schema, required }]) => {\n if (type === 'array') {\n return this.checkArrayIsValid(attribute, {\n type,\n schema,\n required,\n });\n }\n\n return this.validateField(attribute, { type, required, schema });\n }\n );\n }\n\n public static get observedAttributes() {\n return ['base', 'token'];\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PpForm.js","sourceRoot":"","sources":["../../src/PpForm.ts"],"names":[],"mappings":"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","sourcesContent":["import { createInputsForField, joinPaths } from './utils.js';\nimport { Field, mandatory, single } from './validation.js';\n\nconst DEFAULT_BASE = 'https://pay.ponchopay.com/';\n\nexport abstract class PpForm extends HTMLElement {\n private readonly path: string;\n private readonly label: string;\n private readonly fields: Record<string, Field>;\n\n protected constructor(\n path: string,\n label: string,\n fields: Record<string, Field>\n ) {\n super();\n this.path = path;\n this.label = label;\n this.fields = { ...fields, token: mandatory(single()) };\n this.attachShadow({ mode: 'open' });\n }\n\n public setAttribute(name: string, value: string): void {\n super.setAttribute(name, value);\n this.syncAttributes();\n }\n\n public removeAttribute(name: string): void {\n super.removeAttribute(name);\n this.syncAttributes();\n }\n\n private getAttributeWithFallback(name: string, fallback: string): string {\n return this.getAttribute(name) ?? fallback;\n }\n\n private isAttributeSet(name: string): boolean {\n return this.getAttributeWithFallback(name, '').length > 0;\n }\n\n private syncField(form: HTMLFormElement, name: string, field: Field): void {\n if (field.type === 'array') {\n Object.entries(field.schema ?? {}).forEach(([subName, subField]) => {\n const regex = new RegExp(`^${name}\\\\.\\\\d+\\\\.${subName}(\\\\.|$)`);\n Array.from(this.attributes)\n .filter(attribute => regex.test(attribute.name))\n .forEach(attribute => this.syncField(form, attribute.name, subField));\n });\n } else if (this.hasAttribute(name)) {\n const value = this.getAttribute(name)!;\n createInputsForField(form, name, value, field.type);\n }\n }\n\n private syncAttributes(): void {\n const form = this.shadowRoot!.querySelector('form');\n if (form) {\n const base = this.getAttributeWithFallback('base', DEFAULT_BASE);\n\n form.action = joinPaths(base, this.path);\n form.replaceChildren();\n\n Object.entries(this.fields).forEach(([name, field]) =>\n this.syncField(form, name, field)\n );\n\n const slot = document.createElement('slot');\n slot.innerHTML = this.label;\n\n const button = document.createElement('button');\n button.setAttribute('part', 'button');\n button.type = 'submit';\n button.appendChild(slot);\n form.appendChild(button);\n }\n }\n\n private showErrorMessage(): void {\n const form = this.shadowRoot!.querySelector('form');\n if (form) {\n form.querySelector('div')?.remove();\n\n const div = document.createElement('div');\n div.setAttribute('part', 'error');\n div.className = 'error';\n div.innerHTML = 'Some attributes are incorrect. Please, review them.';\n form.appendChild(div);\n }\n }\n\n public connectedCallback(): void {\n const base = this.getAttributeWithFallback('base', DEFAULT_BASE);\n\n const style = document.createElement('style');\n style.textContent = `\n form {\n display: contents;\n }\n\n button {\n width: 100%;\n background-color: #02C2A0;\n white-space: nowrap;\n text-decoration-line: none;\n border-radius: .25rem;\n box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n text-align: center;\n font-size: 1.25rem;\n line-height: 1.75rem;\n color: white;\n margin-top: .5rem;\n margin-bottom: .75rem;\n padding: .75rem 1rem;\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n justify-content: space-evenly;\n cursor: pointer;\n text-transform: none;\n box-sizing: border-box;\n border-width: 0;\n border-style: solid;\n border-color: currentColor;\n }\n\n div.error {\n color: #EB3B50;\n font-size: 0.875rem;\n }`;\n\n const form = document.createElement('form');\n form.action = joinPaths(base, this.path);\n form.method = 'post';\n form.onsubmit = event => {\n if (!this.checkValidity()) {\n event.preventDefault();\n this.showErrorMessage();\n }\n };\n this.shadowRoot!.append(style, form);\n\n this.syncAttributes();\n }\n\n public disconnectedCallback(): void {\n this.shadowRoot!.replaceChildren();\n }\n\n public attributeChangedCallback(): void {\n this.syncAttributes();\n }\n\n public submit(): void {\n this.shadowRoot!.querySelector('form')?.requestSubmit();\n }\n\n private validateField(fieldPath: string, field: Field): boolean {\n if (field.required === true) {\n return this.isAttributeSet(fieldPath);\n }\n\n if (Array.isArray(field.required)) {\n const [dependant, value] = field.required;\n\n if (\n (value === true || this.getAttribute(dependant) === value) &&\n this.isAttributeSet(dependant)\n ) {\n return this.isAttributeSet(fieldPath);\n }\n }\n\n return true;\n }\n\n public checkArrayIsValid(attribute: string, field: Field): boolean {\n const matchingAttributes = Array.from(this.attributes).filter(attr =>\n attr.name.startsWith(`${attribute}.`)\n );\n\n const indexes = matchingAttributes.map(attr => {\n const match = attr.name.match(new RegExp(`^${attribute}\\\\.(\\\\d+)\\\\.`));\n return match ? parseInt(match[1], 10) : null;\n });\n\n const uniqueIndexes = Array.from(new Set(indexes));\n\n // If array is required and no items exist fail validation\n if (field.required === true && uniqueIndexes.length === 0) {\n return false;\n }\n\n // If no items exist but array is optional, validation passes\n if (uniqueIndexes.length === 0) {\n return true;\n }\n\n return uniqueIndexes.every(index =>\n Object.entries(field.schema!).every(([key, subField]) => {\n const fullPath = `${attribute}.${index}.${key}`;\n return this.validateField(fullPath, subField);\n })\n );\n }\n\n public checkValidity(): boolean {\n return Object.entries(this.fields).every(\n ([attribute, { type, schema, required }]) => {\n if (type === 'array') {\n return this.checkArrayIsValid(attribute, {\n type,\n schema,\n required,\n });\n }\n\n return this.validateField(attribute, { type, required, schema });\n }\n );\n }\n}\n"]}
|
package/dist/src/PpPayment.d.ts
CHANGED
package/dist/src/PpPayment.js
CHANGED
|
@@ -18,8 +18,5 @@ export class PpPayment extends PpForm {
|
|
|
18
18
|
constructor() {
|
|
19
19
|
super('/api/integration/generic/initiate', 'Pay with PonchoPay', fields);
|
|
20
20
|
}
|
|
21
|
-
static get observedAttributes() {
|
|
22
|
-
return [...PpForm.observedAttributes, ...Object.keys(fields)];
|
|
23
|
-
}
|
|
24
21
|
}
|
|
25
22
|
//# sourceMappingURL=PpPayment.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PpPayment.js","sourceRoot":"","sources":["../../src/PpPayment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAErE,MAAM,MAAM,GAAG;IACb,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IAC7B,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IAC1B,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC1B,iCAAiC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACrD,UAAU,EAAE,QAAQ,CAClB,KAAK,CAAC;QACJ,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;QAC3B,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;KACjC,CAAC,CACH;CACF,CAAC;AAEF,MAAM,OAAO,SAAU,SAAQ,MAAM;IACnC;QACE,KAAK,CAAC,mCAAmC,EAAE,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC;
|
|
1
|
+
{"version":3,"file":"PpPayment.js","sourceRoot":"","sources":["../../src/PpPayment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAErE,MAAM,MAAM,GAAG;IACb,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IAC7B,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IAC1B,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC1B,iCAAiC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACrD,UAAU,EAAE,QAAQ,CAClB,KAAK,CAAC;QACJ,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;QAC3B,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;KACjC,CAAC,CACH;CACF,CAAC;AAEF,MAAM,OAAO,SAAU,SAAQ,MAAM;IACnC;QACE,KAAK,CAAC,mCAAmC,EAAE,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC;CACF","sourcesContent":["import { PpForm } from './PpForm.js';\nimport { array, mandatory, optional, single } from './validation.js';\n\nconst fields = {\n amount: mandatory(single()),\n metadata: mandatory(single()),\n urn: mandatory(single()),\n email: mandatory(single()),\n note: optional(single()),\n expiry: optional(single()),\n 'constraints.minimum_card_amount': optional(single()),\n line_items: optional(\n array({\n quantity: mandatory(single()),\n amount: mandatory(single()),\n description: mandatory(single()),\n })\n ),\n};\n\nexport class PpPayment extends PpForm {\n public constructor() {\n super('/api/integration/generic/initiate', 'Pay with PonchoPay', fields);\n }\n}\n"]}
|
|
@@ -23,8 +23,5 @@ export class PpSubscription extends PpForm {
|
|
|
23
23
|
constructor() {
|
|
24
24
|
super('/api/integration/generic/subscription/redirect', 'Subscribe with PonchoPay', fields);
|
|
25
25
|
}
|
|
26
|
-
static get observedAttributes() {
|
|
27
|
-
return [...PpForm.observedAttributes, ...Object.keys(fields)];
|
|
28
|
-
}
|
|
29
26
|
}
|
|
30
27
|
//# sourceMappingURL=PpSubscription.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PpSubscription.js","sourceRoot":"","sources":["../../src/PpSubscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EACL,SAAS,EACT,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,GACP,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,GAAG;IACb,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IAC7B,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IAC1B,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACxB,wBAAwB,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IAC7C,mBAAmB,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IACxC,qBAAqB,EAAE,SAAS,CAC9B,wBAAwB,EACxB,QAAQ,EACR,QAAQ,EAAE,CACX;IACD,gBAAgB,EAAE,SAAS,CAAC,wBAAwB,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAC1E,kBAAkB,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACtC,oBAAoB,EAAE,SAAS,CAAC,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;IAC5E,aAAa,EAAE,SAAS,CAAC,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC9D,oCAAoC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACxD,sCAAsC,EAAE,SAAS,CAC/C,oCAAoC,EACpC,IAAI,EACJ,MAAM,EAAE,CACT;IACD,kCAAkC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACtD,oCAAoC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACxD,6DAA6D,EAAE,QAAQ,CACrE,MAAM,EAAE,CACT;CACF,CAAC;AAEF,MAAM,OAAO,cAAe,SAAQ,MAAM;IACxC;QACE,KAAK,CACH,gDAAgD,EAChD,0BAA0B,EAC1B,MAAM,CACP,CAAC;IACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"PpSubscription.js","sourceRoot":"","sources":["../../src/PpSubscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EACL,SAAS,EACT,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,GACP,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,GAAG;IACb,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IAC7B,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IAC1B,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACxB,wBAAwB,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IAC7C,mBAAmB,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IACxC,qBAAqB,EAAE,SAAS,CAC9B,wBAAwB,EACxB,QAAQ,EACR,QAAQ,EAAE,CACX;IACD,gBAAgB,EAAE,SAAS,CAAC,wBAAwB,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAC1E,kBAAkB,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACtC,oBAAoB,EAAE,SAAS,CAAC,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;IAC5E,aAAa,EAAE,SAAS,CAAC,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC9D,oCAAoC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACxD,sCAAsC,EAAE,SAAS,CAC/C,oCAAoC,EACpC,IAAI,EACJ,MAAM,EAAE,CACT;IACD,kCAAkC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACtD,oCAAoC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACxD,6DAA6D,EAAE,QAAQ,CACrE,MAAM,EAAE,CACT;CACF,CAAC;AAEF,MAAM,OAAO,cAAe,SAAQ,MAAM;IACxC;QACE,KAAK,CACH,gDAAgD,EAChD,0BAA0B,EAC1B,MAAM,CACP,CAAC;IACJ,CAAC;CACF","sourcesContent":["import { PpForm } from './PpForm.js';\nimport {\n dependant,\n mandatory,\n multiple,\n optional,\n single,\n} from './validation.js';\n\nconst fields = {\n amount: mandatory(single()),\n metadata: mandatory(single()),\n urn: mandatory(single()),\n email: mandatory(single()),\n note: optional(single()),\n 'repetition.granularity': mandatory(single()),\n 'repetition.period': mandatory(single()),\n 'repetition.weekdays': dependant(\n 'repetition.granularity',\n 'weekly',\n multiple()\n ),\n 'repetition.day': dependant('repetition.granularity', 'monthly', single()),\n 'ending.condition': optional(single()),\n 'ending.occurrences': dependant('ending.condition', 'occurrences', single()),\n 'ending.date': dependant('ending.condition', 'date', single()),\n 'additional_one_time_payment.amount': optional(single()),\n 'additional_one_time_payment.metadata': dependant(\n 'additional_one_time_payment.amount',\n true,\n single()\n ),\n 'additional_one_time_payment.note': optional(single()),\n 'additional_one_time_payment.expiry': optional(single()),\n 'additional_one_time_payment.constraints.minimum_card_amount': optional(\n single()\n ),\n};\n\nexport class PpSubscription extends PpForm {\n public constructor() {\n super(\n '/api/integration/generic/subscription/redirect',\n 'Subscribe with PonchoPay',\n fields\n );\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ponchopay/pp-browser",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "Tools to integrate PonchoPay on the browser",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -15,6 +15,10 @@
|
|
|
15
15
|
"types": "dist/src/PpPayment.d.ts",
|
|
16
16
|
"import": "dist/src/PpPayment.js"
|
|
17
17
|
},
|
|
18
|
+
"./pp-subscription": {
|
|
19
|
+
"types": "dist/src/PpSubscription.d.ts",
|
|
20
|
+
"import": "dist/src/PpSubscription.js"
|
|
21
|
+
},
|
|
18
22
|
"./package.json": "./package.json"
|
|
19
23
|
},
|
|
20
24
|
"files": [
|
|
@@ -30,7 +34,7 @@
|
|
|
30
34
|
},
|
|
31
35
|
"devDependencies": {
|
|
32
36
|
"@open-wc/eslint-config": "^9.2.1",
|
|
33
|
-
"@rollup/plugin-terser": "^0.
|
|
37
|
+
"@rollup/plugin-terser": "^1.0.0",
|
|
34
38
|
"@typescript-eslint/eslint-plugin": "^5.48.0",
|
|
35
39
|
"@typescript-eslint/parser": "^5.48.0",
|
|
36
40
|
"concurrently": "^5.3.0",
|