@oneblink/sdk-core 8.0.0-beta.1 → 8.0.0-beta.3
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/abnService.js.map +1 -1
- package/dist/conditionalLogicService/conditionallyShowElement.js +2 -3
- package/dist/conditionalLogicService/conditionallyShowElement.js.map +1 -1
- package/dist/conditionalLogicService/conditionallyShowOption.js +1 -1
- package/dist/conditionalLogicService/conditionallyShowOption.js.map +1 -1
- package/dist/conditionalLogicService/evaluateConditionalOptionsPredicate.js +1 -1
- package/dist/conditionalLogicService/evaluateConditionalOptionsPredicate.js.map +1 -1
- package/dist/conditionalLogicService/evaluateConditionalPredicate.js +1 -1
- package/dist/conditionalLogicService/evaluateConditionalPredicate.js.map +1 -1
- package/dist/conditionalLogicService/generateFormElementsConditionallyShown.js +3 -4
- package/dist/conditionalLogicService/generateFormElementsConditionallyShown.js.map +1 -1
- package/dist/conditionalLogicService.js +1 -2
- package/dist/conditionalLogicService.js.map +1 -1
- package/dist/fileUploadService.js +1 -2
- package/dist/fileUploadService.js.map +1 -1
- package/dist/form-elements-regex.js +2 -2
- package/dist/form-elements-regex.js.map +1 -1
- package/dist/formElementsService.js +8 -8
- package/dist/formElementsService.js.map +1 -1
- package/dist/freshdeskService.js +3 -9
- package/dist/freshdeskService.js.map +1 -1
- package/dist/index.js +17 -7
- package/dist/index.js.map +1 -1
- package/dist/paymentService.d.ts +3 -1
- package/dist/paymentService.js +2 -2
- package/dist/paymentService.js.map +1 -1
- package/dist/replaceCustomValues.js +4 -5
- package/dist/replaceCustomValues.js.map +1 -1
- package/dist/schedulingService.js +1 -2
- package/dist/schedulingService.js.map +1 -1
- package/dist/sharepointService.js +1 -12
- package/dist/sharepointService.js.map +1 -1
- package/dist/submissionService.js +1 -2
- package/dist/submissionService.js.map +1 -1
- package/dist/typeCastService.js.map +1 -1
- package/dist/types/resource-definitions.d.ts +8 -10
- package/dist/types/resource-definitions.js.map +1 -1
- package/dist/userService.js +2 -3
- package/dist/userService.js.map +1 -1
- package/dist/webhookSubscriptionService.js +1 -2
- package/dist/webhookSubscriptionService.js.map +1 -1
- package/package.json +21 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formElementsService.js","sourceRoot":"","sources":["../src/formElementsService.ts"],"names":[],"mappings":"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","sourcesContent":["import { FormTypes } from '@oneblink/types'\nimport { typeCastService } from '.'\nimport {\n Form,\n FormElement,\n HtmlElement,\n} from '@oneblink/types/typescript/forms'\nexport { matchElementsTagRegex } from './form-elements-regex'\n\n/**\n * Iterate over all form elements, also iterating over nested form element (e.g.\n * page elements).\n *\n * #### Example\n *\n * ```js\n * formElementsService.forEachFormElement(form.elements, (formElement) => {\n * // do something with formElement\n * })\n * ```\n *\n * @param elements The form elements to iterate over\n * @param forEach Function to execute on each form element\n */\nfunction forEachFormElement(\n elements: FormTypes.FormElement[],\n forEach: (\n element: FormTypes.FormElement,\n elements: FormTypes.FormElement[],\n ) => void,\n): void {\n findFormElement(elements, (formElement, parentElements) => {\n forEach(formElement, parentElements)\n return false\n })\n}\n\n/**\n * Iterate over all form elements that have options (e.g. `'select'` type\n * elements), also iterating over nested form element (e.g. page elements).\n *\n * #### Example\n *\n * ```js\n * formElementsService.forEachFormElementWithOptions(\n * form.elements,\n * (formElementWithOptions) => {\n * // do something with formElementWithOptions\n * },\n * )\n * ```\n *\n * @param elements The form elements to iterate over\n * @param forEach Function to execute on each form element with options\n */\nfunction forEachFormElementWithOptions(\n elements: FormTypes.FormElement[],\n forEach: (\n elementWithOptions: FormTypes.FormElementWithOptions,\n elements: FormTypes.FormElement[],\n ) => void,\n): void {\n findFormElement(elements, (formElement, parentElements) => {\n const optionsFormElement =\n typeCastService.formElements.toOptionsElement(formElement)\n if (optionsFormElement) {\n forEach(optionsFormElement, parentElements)\n }\n return false\n })\n}\n\n/**\n * Iterate over all form elements and return an element that matches a\n * predicate, also iterating over nested form element (e.g. page elements). Will\n * return `undefined` if no matching element is found.\n *\n * #### Example\n *\n * ```js\n * const formElement = formElementsService.findFormElement(\n * form.elements,\n * (formElement) => {\n * return formElement.id === '123-abc'\n * },\n * )\n * ```\n *\n * @param elements The form elements to iterate over\n * @param predicate Predicate function to execute on each form element\n * @param parentElements\n * @returns\n */\nfunction findFormElement(\n elements: FormTypes.FormElement[],\n predicate: (\n element: FormTypes.FormElement,\n elements: FormTypes.FormElement[],\n ) => boolean,\n parentElements: FormTypes.FormElement[] = [],\n): FormTypes.FormElement | undefined {\n for (const element of elements) {\n if (predicate(element, parentElements)) {\n return element\n }\n\n if (\n (element.type === 'repeatableSet' ||\n element.type === 'page' ||\n element.type === 'form' ||\n element.type === 'infoPage' ||\n element.type === 'section') &&\n Array.isArray(element.elements)\n ) {\n const nestedElement = findFormElement(element.elements, predicate, [\n ...parentElements,\n element,\n ])\n\n if (nestedElement) {\n return nestedElement\n }\n }\n }\n}\n\n/**\n * Parse unknown data as valid dynamic options for a forms element. This will\n * always return an Array of valid dynamic options.\n *\n * #### Example\n *\n * ```js\n * const options = formElementsService.parseDynamicFormElementOptions(data)\n * // \"options\" are valid for a form element\n * ```\n *\n * @param data\n * @returns\n */\nfunction parseDynamicFormElementOptions(\n data: unknown,\n): FormTypes.DynamicChoiceElementOption[] {\n if (!Array.isArray(data)) {\n return []\n }\n return data.reduce<FormTypes.DynamicChoiceElementOption[]>(\n (options, record, index) => {\n if (typeof record === 'string') {\n options.push({\n value: record,\n label: record,\n })\n } else if (typeof record === 'object') {\n const option = record as Record<string, unknown>\n const value =\n typeof option.value === 'string' && option.value\n ? option.value\n : index.toString()\n const label =\n typeof option.label === 'string' && option.label\n ? option.label\n : value\n const colour =\n typeof option.colour === 'string' && option.colour\n ? option.colour\n : undefined\n const displayAlways =\n typeof option.displayAlways === 'boolean'\n ? option.displayAlways\n : undefined\n const imageUrl =\n typeof option.imageUrl === 'string' && option.imageUrl\n ? option.imageUrl\n : undefined\n const attributes = Array.isArray(option.attributes)\n ? option.attributes.reduce<\n FormTypes.DynamicChoiceElementOptionAttribute[]\n >((memo, attribute: unknown) => {\n if (\n typeof attribute === 'object' &&\n attribute &&\n 'value' in attribute &&\n typeof attribute.value === 'string' &&\n 'label' in attribute &&\n typeof attribute.label === 'string'\n ) {\n memo.push({\n value: attribute.value,\n label: attribute.label,\n })\n }\n return memo\n }, [])\n : undefined\n options.push({\n value,\n label,\n colour,\n attributes,\n displayAlways,\n imageUrl,\n options: Array.isArray(option.options)\n ? parseDynamicFormElementOptions(option.options)\n : undefined,\n })\n }\n return options\n },\n [],\n )\n}\n\n/**\n * Takes the nested definition structure and returns all form elements as 1d\n * array.\n *\n * #### Example\n *\n * ```js\n * const flattenedElements = formElementsService.flattenFormElements(\n * form.elements,\n * )\n * ```\n *\n * @param elements\n * @returns\n */\nfunction flattenFormElements(\n elements: FormTypes.FormElement[],\n): FormTypes.FormElement[] {\n return elements.reduce<FormTypes.FormElement[]>(\n (flattenedElements, element) => {\n flattenedElements.push(element)\n switch (element.type) {\n case 'section':\n case 'page': {\n flattenedElements.push(...flattenFormElements(element.elements))\n }\n }\n return flattenedElements\n },\n [],\n )\n}\n\nconst infoPageElements: FormTypes.FormElementType[] = [\n 'heading',\n 'html',\n 'image',\n 'section',\n 'page',\n 'infoPage',\n 'form',\n 'arcGISWebMap',\n]\n/**\n * Determine a form is considered an info page. This means the form does not\n * allow any user input.\n *\n * @param form\n * @returns\n */\nfunction determineIsInfoPage(form: FormTypes.Form): boolean {\n const foundInputElement = findFormElement(form.elements, (e) => {\n return !infoPageElements.includes(e.type)\n })\n return !foundInputElement\n}\n\n/**\n * Remove invalid characters from a form element name.\n *\n * @param elementName\n * @returns\n */\nconst fixElementName = (elementName: string) => {\n // removes characters that aren't letters, numbers, underscores or dashes\n // replaces empty spaces with _\n return elementName\n .replace(/[^-\\w\\s]/g, '')\n .replace(/\\s/g, '_')\n .trim()\n}\n\n/**\n * Injects the elements of any elements with type `FORM` or `INFOPAGE` into the\n * form\n *\n * @param form The form to inject elements into\n * @param forms The forms that will be used to inject elements from if\n * referenced\n * @param injectAuthenticatedForms Indicates whether forms requiring\n * authentication should be injected, defaults to true\n * @returns\n */\nfunction injectFormElementsIntoForm(\n form: Form,\n forms: Form[],\n injectAuthenticatedForms = true,\n): FormElement[] {\n const elementsWithInjectedForms = injectFormElements(\n form.elements,\n forms,\n [form.id],\n injectAuthenticatedForms,\n )\n form.elements = elementsWithInjectedForms\n return form.elements\n}\n\nfunction injectFormElements(\n elements: FormElement[],\n forms: Form[],\n parentIds: number[],\n injectAuthenticatedForms: boolean,\n): FormElement[] {\n return elements.reduce<FormElement[]>((newElements, element) => {\n if (\n (element.type === 'page' ||\n element.type === 'repeatableSet' ||\n element.type === 'section') &&\n Array.isArray(element.elements)\n ) {\n const childElements = injectFormElements(\n element.elements,\n forms,\n parentIds,\n injectAuthenticatedForms,\n )\n element.elements = childElements\n }\n\n if (element.type === 'form' || element.type === 'infoPage') {\n const formToInject = forms.find((form) => element.formId === form.id)\n\n if (!formToInject) {\n const newElement: HtmlElement = {\n ...element,\n type: 'html',\n name: 'Form_not_found',\n label: 'Form not found.',\n defaultValue:\n 'Unable to display the embedded form for this element, as the form was not found. Please contact your Administrator.',\n }\n newElements.push(newElement)\n return newElements\n }\n\n if (formToInject.isAuthenticated && !injectAuthenticatedForms) {\n console.log(\n `No form elements injected for element id: ${element.id}, as request was unauthenticated and target form (form id: ${formToInject.id}) requires authentication.`,\n )\n\n const newElement: HtmlElement = {\n ...element,\n type: 'html',\n name: 'Form_requires_authenticated',\n label: 'Form Requires Authentication.',\n defaultValue:\n 'Unable to display the embedded form for this element, as the form requires authentication. Please login and refresh to view this embedded form.',\n }\n newElements.push(newElement)\n return newElements\n }\n\n const injectingParentForm =\n parentIds && parentIds.find((id) => element.formId === id)\n\n if (injectingParentForm) {\n console.log(\n `Infinite loop was detected while attempting to inject form id: ${injectingParentForm}. Ignoring elements...`,\n )\n return newElements\n }\n\n element.elements = injectFormElements(\n formToInject.elements,\n forms,\n [...parentIds, formToInject.id],\n injectAuthenticatedForms,\n )\n newElements.push(element)\n } else {\n newElements.push(element)\n }\n\n return newElements\n }, [])\n}\n\nexport {\n forEachFormElement,\n forEachFormElementWithOptions,\n findFormElement,\n parseDynamicFormElementOptions,\n flattenFormElements,\n determineIsInfoPage,\n fixElementName,\n injectFormElementsIntoForm,\n}\n"]}
|
|
1
|
+
{"version":3,"file":"formElementsService.js","sourceRoot":"","sources":["../src/formElementsService.ts"],"names":[],"mappings":"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","sourcesContent":["import { FormTypes } from '@oneblink/types'\nimport { typeCastService } from '.'\nimport {\n Form,\n FormElement,\n HtmlElement,\n} from '@oneblink/types/typescript/forms'\nexport { matchElementsTagRegex } from './form-elements-regex'\n\n/**\n * Iterate over all form elements, also iterating over nested form element (e.g.\n * page elements).\n *\n * #### Example\n *\n * ```js\n * formElementsService.forEachFormElement(form.elements, (formElement) => {\n * // do something with formElement\n * })\n * ```\n *\n * @param elements The form elements to iterate over\n * @param forEach Function to execute on each form element\n */\nfunction forEachFormElement(\n elements: FormTypes.FormElement[],\n forEach: (\n element: FormTypes.FormElement,\n elements: FormTypes.FormElement[],\n ) => void,\n): void {\n findFormElement(elements, (formElement, parentElements) => {\n forEach(formElement, parentElements)\n return false\n })\n}\n\n/**\n * Iterate over all form elements that have options (e.g. `'select'` type\n * elements), also iterating over nested form element (e.g. page elements).\n *\n * #### Example\n *\n * ```js\n * formElementsService.forEachFormElementWithOptions(\n * form.elements,\n * (formElementWithOptions) => {\n * // do something with formElementWithOptions\n * },\n * )\n * ```\n *\n * @param elements The form elements to iterate over\n * @param forEach Function to execute on each form element with options\n */\nfunction forEachFormElementWithOptions(\n elements: FormTypes.FormElement[],\n forEach: (\n elementWithOptions: FormTypes.FormElementWithOptions,\n elements: FormTypes.FormElement[],\n ) => void,\n): void {\n findFormElement(elements, (formElement, parentElements) => {\n const optionsFormElement =\n typeCastService.formElements.toOptionsElement(formElement)\n if (optionsFormElement) {\n forEach(optionsFormElement, parentElements)\n }\n return false\n })\n}\n\n/**\n * Iterate over all form elements and return an element that matches a\n * predicate, also iterating over nested form element (e.g. page elements). Will\n * return `undefined` if no matching element is found.\n *\n * #### Example\n *\n * ```js\n * const formElement = formElementsService.findFormElement(\n * form.elements,\n * (formElement) => {\n * return formElement.id === '123-abc'\n * },\n * )\n * ```\n *\n * @param elements The form elements to iterate over\n * @param predicate Predicate function to execute on each form element\n * @param parentElements\n * @returns\n */\nfunction findFormElement(\n elements: FormTypes.FormElement[],\n predicate: (\n element: FormTypes.FormElement,\n elements: FormTypes.FormElement[],\n ) => boolean,\n parentElements: FormTypes.FormElement[] = [],\n): FormTypes.FormElement | undefined {\n for (const element of elements) {\n if (predicate(element, parentElements)) {\n return element\n }\n\n if (\n (element.type === 'repeatableSet' ||\n element.type === 'page' ||\n element.type === 'form' ||\n element.type === 'infoPage' ||\n element.type === 'section') &&\n Array.isArray(element.elements)\n ) {\n const nestedElement = findFormElement(element.elements, predicate, [\n ...parentElements,\n element,\n ])\n\n if (nestedElement) {\n return nestedElement\n }\n }\n }\n}\n\n/**\n * Parse unknown data as valid dynamic options for a forms element. This will\n * always return an Array of valid dynamic options.\n *\n * #### Example\n *\n * ```js\n * const options = formElementsService.parseDynamicFormElementOptions(data)\n * // \"options\" are valid for a form element\n * ```\n *\n * @param data\n * @returns\n */\nfunction parseDynamicFormElementOptions(\n data: unknown,\n): FormTypes.DynamicChoiceElementOption[] {\n if (!Array.isArray(data)) {\n return []\n }\n return data.reduce<FormTypes.DynamicChoiceElementOption[]>(\n (options, record, index) => {\n if (typeof record === 'string') {\n options.push({\n value: record,\n label: record,\n })\n } else if (typeof record === 'object') {\n const option = record as Record<string, unknown>\n const value =\n typeof option.value === 'string' && option.value\n ? option.value\n : index.toString()\n const label =\n typeof option.label === 'string' && option.label\n ? option.label\n : value\n const colour =\n typeof option.colour === 'string' && option.colour\n ? option.colour\n : undefined\n const displayAlways =\n typeof option.displayAlways === 'boolean'\n ? option.displayAlways\n : undefined\n const imageUrl =\n typeof option.imageUrl === 'string' && option.imageUrl\n ? option.imageUrl\n : undefined\n const attributes = Array.isArray(option.attributes)\n ? option.attributes.reduce<\n FormTypes.DynamicChoiceElementOptionAttribute[]\n >((memo, attribute: unknown) => {\n if (\n typeof attribute === 'object' &&\n attribute &&\n 'value' in attribute &&\n typeof attribute.value === 'string' &&\n 'label' in attribute &&\n typeof attribute.label === 'string'\n ) {\n memo.push({\n value: attribute.value,\n label: attribute.label,\n })\n }\n return memo\n }, [])\n : undefined\n options.push({\n value,\n label,\n colour,\n attributes,\n displayAlways,\n imageUrl,\n options: Array.isArray(option.options)\n ? parseDynamicFormElementOptions(option.options)\n : undefined,\n })\n }\n return options\n },\n [],\n )\n}\n\n/**\n * Takes the nested definition structure and returns all form elements as 1d\n * array.\n *\n * #### Example\n *\n * ```js\n * const flattenedElements = formElementsService.flattenFormElements(\n * form.elements,\n * )\n * ```\n *\n * @param elements\n * @returns\n */\nfunction flattenFormElements(\n elements: FormTypes.FormElement[],\n): FormTypes.FormElement[] {\n return elements.reduce<FormTypes.FormElement[]>(\n (flattenedElements, element) => {\n flattenedElements.push(element)\n switch (element.type) {\n case 'section':\n case 'page': {\n flattenedElements.push(...flattenFormElements(element.elements))\n }\n }\n return flattenedElements\n },\n [],\n )\n}\n\nconst infoPageElements: FormTypes.FormElementType[] = [\n 'heading',\n 'html',\n 'image',\n 'section',\n 'page',\n 'infoPage',\n 'form',\n 'arcGISWebMap',\n]\n/**\n * Determine a form is considered an info page. This means the form does not\n * allow any user input.\n *\n * @param form\n * @returns\n */\nfunction determineIsInfoPage(form: FormTypes.Form): boolean {\n const foundInputElement = findFormElement(form.elements, (e) => {\n return !infoPageElements.includes(e.type)\n })\n return !foundInputElement\n}\n\n/**\n * Remove invalid characters from a form element name.\n *\n * @param elementName\n * @returns\n */\nconst fixElementName = (elementName: string) => {\n // removes characters that aren't letters, numbers, underscores or dashes\n // replaces empty spaces with _\n return elementName\n .replace(/[^-\\w\\s]/g, '')\n .replace(/\\s/g, '_')\n .trim()\n}\n\n/**\n * Injects the elements of any elements with type `FORM` or `INFOPAGE` into the\n * form\n *\n * @param form The form to inject elements into\n * @param forms The forms that will be used to inject elements from if\n * referenced\n * @param injectAuthenticatedForms Indicates whether forms requiring\n * authentication should be injected, defaults to true\n * @returns\n */\nfunction injectFormElementsIntoForm(\n form: Form,\n forms: Form[],\n injectAuthenticatedForms = true,\n): FormElement[] {\n const elementsWithInjectedForms = injectFormElements(\n form.elements,\n forms,\n [form.id],\n injectAuthenticatedForms,\n )\n form.elements = elementsWithInjectedForms\n return form.elements\n}\n\nfunction injectFormElements(\n elements: FormElement[],\n forms: Form[],\n parentIds: number[],\n injectAuthenticatedForms: boolean,\n): FormElement[] {\n return elements.reduce<FormElement[]>((newElements, element) => {\n if (\n (element.type === 'page' ||\n element.type === 'repeatableSet' ||\n element.type === 'section') &&\n Array.isArray(element.elements)\n ) {\n const childElements = injectFormElements(\n element.elements,\n forms,\n parentIds,\n injectAuthenticatedForms,\n )\n element.elements = childElements\n }\n\n if (element.type === 'form' || element.type === 'infoPage') {\n const formToInject = forms.find((form) => element.formId === form.id)\n\n if (!formToInject) {\n const newElement: HtmlElement = {\n ...element,\n type: 'html',\n name: 'Form_not_found',\n label: 'Form not found.',\n defaultValue:\n 'Unable to display the embedded form for this element, as the form was not found. Please contact your Administrator.',\n }\n newElements.push(newElement)\n return newElements\n }\n\n if (formToInject.isAuthenticated && !injectAuthenticatedForms) {\n console.log(\n `No form elements injected for element id: ${element.id}, as request was unauthenticated and target form (form id: ${formToInject.id}) requires authentication.`,\n )\n\n const newElement: HtmlElement = {\n ...element,\n type: 'html',\n name: 'Form_requires_authenticated',\n label: 'Form Requires Authentication.',\n defaultValue:\n 'Unable to display the embedded form for this element, as the form requires authentication. Please login and refresh to view this embedded form.',\n }\n newElements.push(newElement)\n return newElements\n }\n\n const injectingParentForm =\n parentIds && parentIds.find((id) => element.formId === id)\n\n if (injectingParentForm) {\n console.log(\n `Infinite loop was detected while attempting to inject form id: ${injectingParentForm}. Ignoring elements...`,\n )\n return newElements\n }\n\n element.elements = injectFormElements(\n formToInject.elements,\n forms,\n [...parentIds, formToInject.id],\n injectAuthenticatedForms,\n )\n newElements.push(element)\n } else {\n newElements.push(element)\n }\n\n return newElements\n }, [])\n}\n\nexport {\n forEachFormElement,\n forEachFormElementWithOptions,\n findFormElement,\n parseDynamicFormElementOptions,\n flattenFormElements,\n determineIsInfoPage,\n fixElementName,\n injectFormElementsIntoForm,\n}\n"]}
|
package/dist/freshdeskService.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.choiceFieldTypes = exports.checkboxFieldType = exports.dateFieldType = exports.numberFieldTypes = exports.textFieldTypes = exports.emailFieldType = exports.multilineFieldType = void 0;
|
|
4
|
+
exports.generateFreshdeskTicketFieldDefinitions = generateFreshdeskTicketFieldDefinitions;
|
|
5
|
+
exports.setFreshdeskFieldOptions = setFreshdeskFieldOptions;
|
|
4
6
|
exports.multilineFieldType = 'custom_paragraph';
|
|
5
7
|
exports.emailFieldType = 'default_requester';
|
|
6
8
|
exports.textFieldTypes = [
|
|
@@ -81,12 +83,6 @@ function generateFreshdeskTicketFieldDefinitions(fields) {
|
|
|
81
83
|
type: 'CHOICE_SINGLE',
|
|
82
84
|
...baseField,
|
|
83
85
|
choices: freshdeskField.options,
|
|
84
|
-
checkIsFormElementSupported(formElementWithOptions) {
|
|
85
|
-
if (freshdeskField.type === 'nested_field') {
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
return (formElementWithOptions.freshdeskFieldName === freshdeskField.name);
|
|
89
|
-
},
|
|
90
86
|
});
|
|
91
87
|
}
|
|
92
88
|
else if (freshdeskField.type === 'nested_field' &&
|
|
@@ -127,7 +123,6 @@ function generateFreshdeskTicketFieldDefinitions(fields) {
|
|
|
127
123
|
return memo;
|
|
128
124
|
}, []);
|
|
129
125
|
}
|
|
130
|
-
exports.generateFreshdeskTicketFieldDefinitions = generateFreshdeskTicketFieldDefinitions;
|
|
131
126
|
/**
|
|
132
127
|
* This function is used to transform the `choices` property into the `options`
|
|
133
128
|
* property for freshdesk fields.
|
|
@@ -180,5 +175,4 @@ function setFreshdeskFieldOptions(fields) {
|
|
|
180
175
|
}
|
|
181
176
|
return fields;
|
|
182
177
|
}
|
|
183
|
-
exports.setFreshdeskFieldOptions = setFreshdeskFieldOptions;
|
|
184
178
|
//# sourceMappingURL=freshdeskService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freshdeskService.js","sourceRoot":"","sources":["../src/freshdeskService.ts"],"names":[],"mappings":"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","sourcesContent":["import { FreshdeskTypes, SubmissionEventTypes } from '@oneblink/types'\nimport {\n ResourceDefinition,\n ResourceDefinitionChoice,\n} from './types/resource-definitions'\n\nexport const multilineFieldType = 'custom_paragraph'\nexport const emailFieldType = 'default_requester'\nexport const textFieldTypes = [\n multilineFieldType,\n 'custom_text',\n 'default_subject',\n emailFieldType,\n]\n\nexport const numberFieldTypes = ['custom_number', 'custom_decimal']\n\nexport const dateFieldType = 'custom_date'\nexport const checkboxFieldType = 'custom_checkbox'\nexport const choiceFieldTypes = [\n 'custom_dropdown',\n checkboxFieldType,\n 'default_priority',\n 'default_status',\n 'default_source',\n 'default_ticket_type',\n 'default_agent',\n 'default_group',\n]\n\nexport type FreshdeskFieldDefinition =\n | ResourceDefinition<SubmissionEventTypes.BaseFreshdeskSubmissionEventFieldMapping>\n | FreshdeskDependentField\n\nexport type FreshdeskFieldCategory = ResourceDefinitionChoice & {\n subCategories: Array<\n ResourceDefinitionChoice & {\n items: Array<ResourceDefinitionChoice>\n }\n >\n}\n\nexport type FreshdeskDependentField = {\n type: 'DEPENDENT_FIELD'\n id: string\n isRequired: boolean\n displayName: string\n freshdeskFieldName: string\n choices: FreshdeskFieldCategory[]\n}\n\nexport function generateFreshdeskTicketFieldDefinitions(\n fields: FreshdeskTypes.FreshdeskField[],\n) {\n return setFreshdeskFieldOptions(fields).reduce<FreshdeskFieldDefinition[]>(\n (memo, freshdeskField) => {\n const isCheckboxField = freshdeskField.type === checkboxFieldType\n const isRequired =\n freshdeskField.required_for_customers ||\n freshdeskField.name === 'ticket_type'\n const isTextField = textFieldTypes.includes(freshdeskField.type)\n const isMultilineTextField = freshdeskField.type === multilineFieldType\n const isEmailField = freshdeskField.type === emailFieldType\n const isDateField = freshdeskField.type === dateFieldType\n const isNumberField = numberFieldTypes.includes(freshdeskField.type)\n const isChoiceField = choiceFieldTypes.includes(freshdeskField.type)\n\n const baseField = {\n id: freshdeskField.id.toString(),\n displayName: freshdeskField.label_for_customers,\n isRequired,\n freshdeskFieldName: freshdeskField.name,\n }\n if (isCheckboxField) {\n memo.push({\n type: 'BOOLEAN',\n ...baseField,\n })\n } else if (isDateField) {\n memo.push({\n type: 'DATE',\n ...baseField,\n })\n } else if (isNumberField) {\n memo.push({\n type: 'NUMBER',\n ...baseField,\n })\n } else if (isEmailField) {\n memo.push({\n type: 'EMAIL',\n ...baseField,\n })\n } else if (isMultilineTextField) {\n memo.push({\n type: 'TEXT_MULTI_LINE',\n ...baseField,\n })\n } else if (isTextField) {\n memo.push({\n type: 'TEXT_SINGLE_LINE',\n ...baseField,\n })\n } else if (freshdeskField.options && isChoiceField) {\n memo.push({\n type: 'CHOICE_SINGLE',\n ...baseField,\n choices: freshdeskField.options,\n checkIsFormElementSupported(formElementWithOptions) {\n if (freshdeskField.type === 'nested_field') {\n return false\n }\n\n return (\n formElementWithOptions.freshdeskFieldName === freshdeskField.name\n )\n },\n })\n } else if (\n freshdeskField.type === 'nested_field' &&\n freshdeskField.options?.length\n ) {\n const choices = freshdeskField.options.reduce<FreshdeskFieldCategory[]>(\n (categoriesMemo, category) => {\n const subCategories = category.options?.reduce<\n FreshdeskFieldCategory['subCategories']\n >((subCategoriesMemo, subCategory) => {\n if (subCategory.options?.length) {\n subCategoriesMemo.push({\n value: subCategory.value,\n label: subCategory.label,\n items: subCategory.options.map(({ value, label }) => ({\n value,\n label,\n })),\n })\n }\n\n return subCategoriesMemo\n }, [])\n\n if (subCategories?.length) {\n categoriesMemo.push({\n value: category.value,\n label: category.label,\n subCategories,\n })\n }\n\n return categoriesMemo\n },\n [],\n )\n\n if (choices.length) {\n memo.push({\n type: 'DEPENDENT_FIELD',\n ...baseField,\n choices,\n })\n }\n }\n\n return memo\n },\n [],\n )\n}\n\n/**\n * This function is used to transform the `choices` property into the `options`\n * property for freshdesk fields.\n *\n * @param fields\n * @returns\n */\nexport function setFreshdeskFieldOptions(\n fields: FreshdeskTypes.FreshdeskField[],\n): FreshdeskTypes.FreshdeskField[] {\n for (const field of fields) {\n const choices = field.choices\n if (!choices) {\n continue\n }\n if (Array.isArray(choices)) {\n field.options = choices.map((choice) => ({\n label: choice,\n value: choice,\n }))\n } else if (typeof choices === 'object') {\n field.options = Object.entries(choices).map(([key, value]) => {\n if (typeof value === 'number') {\n return {\n label: key,\n value,\n }\n } else if (Array.isArray(value)) {\n return {\n label: value[0],\n value: parseInt(key),\n }\n } else {\n return {\n label: key,\n value: key,\n options: Object.entries(value).map(([subCategory, items]) => ({\n label: subCategory,\n value: subCategory,\n options: items.map((item) => ({\n label: item,\n value: item,\n })),\n })),\n }\n }\n })\n }\n }\n return fields\n}\n"]}
|
|
1
|
+
{"version":3,"file":"freshdeskService.js","sourceRoot":"","sources":["../src/freshdeskService.ts"],"names":[],"mappings":";;;AAmDA,0FA2GC;AASD,4DA2CC;AA5MY,QAAA,kBAAkB,GAAG,kBAAkB,CAAA;AACvC,QAAA,cAAc,GAAG,mBAAmB,CAAA;AACpC,QAAA,cAAc,GAAG;IAC5B,0BAAkB;IAClB,aAAa;IACb,iBAAiB;IACjB,sBAAc;CACf,CAAA;AAEY,QAAA,gBAAgB,GAAG,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;AAEtD,QAAA,aAAa,GAAG,aAAa,CAAA;AAC7B,QAAA,iBAAiB,GAAG,iBAAiB,CAAA;AACrC,QAAA,gBAAgB,GAAG;IAC9B,iBAAiB;IACjB,yBAAiB;IACjB,kBAAkB;IAClB,gBAAgB;IAChB,gBAAgB;IAChB,qBAAqB;IACrB,eAAe;IACf,eAAe;CAChB,CAAA;AAuBD,SAAgB,uCAAuC,CACrD,MAAuC;IAEvC,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC,MAAM,CAC5C,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE;;QACvB,MAAM,eAAe,GAAG,cAAc,CAAC,IAAI,KAAK,yBAAiB,CAAA;QACjE,MAAM,UAAU,GACd,cAAc,CAAC,sBAAsB;YACrC,cAAc,CAAC,IAAI,KAAK,aAAa,CAAA;QACvC,MAAM,WAAW,GAAG,sBAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAChE,MAAM,oBAAoB,GAAG,cAAc,CAAC,IAAI,KAAK,0BAAkB,CAAA;QACvE,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,KAAK,sBAAc,CAAA;QAC3D,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,KAAK,qBAAa,CAAA;QACzD,MAAM,aAAa,GAAG,wBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QACpE,MAAM,aAAa,GAAG,wBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAEpE,MAAM,SAAS,GAAG;YAChB,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE;YAChC,WAAW,EAAE,cAAc,CAAC,mBAAmB;YAC/C,UAAU;YACV,kBAAkB,EAAE,cAAc,CAAC,IAAI;SACxC,CAAA;QACD,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,SAAS;gBACf,GAAG,SAAS;aACb,CAAC,CAAA;QACJ,CAAC;aAAM,IAAI,WAAW,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,GAAG,SAAS;aACb,CAAC,CAAA;QACJ,CAAC;aAAM,IAAI,aAAa,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,QAAQ;gBACd,GAAG,SAAS;aACb,CAAC,CAAA;QACJ,CAAC;aAAM,IAAI,YAAY,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,OAAO;gBACb,GAAG,SAAS;aACb,CAAC,CAAA;QACJ,CAAC;aAAM,IAAI,oBAAoB,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,iBAAiB;gBACvB,GAAG,SAAS;aACb,CAAC,CAAA;QACJ,CAAC;aAAM,IAAI,WAAW,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,kBAAkB;gBACxB,GAAG,SAAS;aACb,CAAC,CAAA;QACJ,CAAC;aAAM,IAAI,cAAc,CAAC,OAAO,IAAI,aAAa,EAAE,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,eAAe;gBACrB,GAAG,SAAS;gBACZ,OAAO,EAAE,cAAc,CAAC,OAAO;aAChC,CAAC,CAAA;QACJ,CAAC;aAAM,IACL,cAAc,CAAC,IAAI,KAAK,cAAc;aACtC,MAAA,cAAc,CAAC,OAAO,0CAAE,MAAM,CAAA,EAC9B,CAAC;YACD,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAC3C,CAAC,cAAc,EAAE,QAAQ,EAAE,EAAE;;gBAC3B,MAAM,aAAa,GAAG,MAAA,QAAQ,CAAC,OAAO,0CAAE,MAAM,CAE5C,CAAC,iBAAiB,EAAE,WAAW,EAAE,EAAE;;oBACnC,IAAI,MAAA,WAAW,CAAC,OAAO,0CAAE,MAAM,EAAE,CAAC;wBAChC,iBAAiB,CAAC,IAAI,CAAC;4BACrB,KAAK,EAAE,WAAW,CAAC,KAAK;4BACxB,KAAK,EAAE,WAAW,CAAC,KAAK;4BACxB,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;gCACpD,KAAK;gCACL,KAAK;6BACN,CAAC,CAAC;yBACJ,CAAC,CAAA;oBACJ,CAAC;oBAED,OAAO,iBAAiB,CAAA;gBAC1B,CAAC,EAAE,EAAE,CAAC,CAAA;gBAEN,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,MAAM,EAAE,CAAC;oBAC1B,cAAc,CAAC,IAAI,CAAC;wBAClB,KAAK,EAAE,QAAQ,CAAC,KAAK;wBACrB,KAAK,EAAE,QAAQ,CAAC,KAAK;wBACrB,aAAa;qBACd,CAAC,CAAA;gBACJ,CAAC;gBAED,OAAO,cAAc,CAAA;YACvB,CAAC,EACD,EAAE,CACH,CAAA;YAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,iBAAiB;oBACvB,GAAG,SAAS;oBACZ,OAAO;iBACR,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC,EACD,EAAE,CACH,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,wBAAwB,CACtC,MAAuC;IAEvC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,SAAQ;QACV,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACvC,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,MAAM;aACd,CAAC,CAAC,CAAA;QACL,CAAC;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACvC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,OAAO;wBACL,KAAK,EAAE,GAAG;wBACV,KAAK;qBACN,CAAA;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChC,OAAO;wBACL,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;wBACf,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC;qBACrB,CAAA;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO;wBACL,KAAK,EAAE,GAAG;wBACV,KAAK,EAAE,GAAG;wBACV,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;4BAC5D,KAAK,EAAE,WAAW;4BAClB,KAAK,EAAE,WAAW;4BAClB,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gCAC5B,KAAK,EAAE,IAAI;gCACX,KAAK,EAAE,IAAI;6BACZ,CAAC,CAAC;yBACJ,CAAC,CAAC;qBACJ,CAAA;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC","sourcesContent":["import { FreshdeskTypes, SubmissionEventTypes } from '@oneblink/types'\nimport {\n ResourceDefinition,\n ResourceDefinitionChoice,\n} from './types/resource-definitions'\n\nexport const multilineFieldType = 'custom_paragraph'\nexport const emailFieldType = 'default_requester'\nexport const textFieldTypes = [\n multilineFieldType,\n 'custom_text',\n 'default_subject',\n emailFieldType,\n]\n\nexport const numberFieldTypes = ['custom_number', 'custom_decimal']\n\nexport const dateFieldType = 'custom_date'\nexport const checkboxFieldType = 'custom_checkbox'\nexport const choiceFieldTypes = [\n 'custom_dropdown',\n checkboxFieldType,\n 'default_priority',\n 'default_status',\n 'default_source',\n 'default_ticket_type',\n 'default_agent',\n 'default_group',\n]\n\nexport type FreshdeskFieldDefinition =\n | ResourceDefinition<SubmissionEventTypes.BaseFreshdeskSubmissionEventFieldMapping>\n | FreshdeskDependentField\n\nexport type FreshdeskFieldCategory = ResourceDefinitionChoice & {\n subCategories: Array<\n ResourceDefinitionChoice & {\n items: Array<ResourceDefinitionChoice>\n }\n >\n}\n\nexport type FreshdeskDependentField = {\n type: 'DEPENDENT_FIELD'\n id: string\n isRequired: boolean\n displayName: string\n freshdeskFieldName: string\n choices: FreshdeskFieldCategory[]\n}\n\nexport function generateFreshdeskTicketFieldDefinitions(\n fields: FreshdeskTypes.FreshdeskField[],\n) {\n return setFreshdeskFieldOptions(fields).reduce<FreshdeskFieldDefinition[]>(\n (memo, freshdeskField) => {\n const isCheckboxField = freshdeskField.type === checkboxFieldType\n const isRequired =\n freshdeskField.required_for_customers ||\n freshdeskField.name === 'ticket_type'\n const isTextField = textFieldTypes.includes(freshdeskField.type)\n const isMultilineTextField = freshdeskField.type === multilineFieldType\n const isEmailField = freshdeskField.type === emailFieldType\n const isDateField = freshdeskField.type === dateFieldType\n const isNumberField = numberFieldTypes.includes(freshdeskField.type)\n const isChoiceField = choiceFieldTypes.includes(freshdeskField.type)\n\n const baseField = {\n id: freshdeskField.id.toString(),\n displayName: freshdeskField.label_for_customers,\n isRequired,\n freshdeskFieldName: freshdeskField.name,\n }\n if (isCheckboxField) {\n memo.push({\n type: 'BOOLEAN',\n ...baseField,\n })\n } else if (isDateField) {\n memo.push({\n type: 'DATE',\n ...baseField,\n })\n } else if (isNumberField) {\n memo.push({\n type: 'NUMBER',\n ...baseField,\n })\n } else if (isEmailField) {\n memo.push({\n type: 'EMAIL',\n ...baseField,\n })\n } else if (isMultilineTextField) {\n memo.push({\n type: 'TEXT_MULTI_LINE',\n ...baseField,\n })\n } else if (isTextField) {\n memo.push({\n type: 'TEXT_SINGLE_LINE',\n ...baseField,\n })\n } else if (freshdeskField.options && isChoiceField) {\n memo.push({\n type: 'CHOICE_SINGLE',\n ...baseField,\n choices: freshdeskField.options,\n })\n } else if (\n freshdeskField.type === 'nested_field' &&\n freshdeskField.options?.length\n ) {\n const choices = freshdeskField.options.reduce<FreshdeskFieldCategory[]>(\n (categoriesMemo, category) => {\n const subCategories = category.options?.reduce<\n FreshdeskFieldCategory['subCategories']\n >((subCategoriesMemo, subCategory) => {\n if (subCategory.options?.length) {\n subCategoriesMemo.push({\n value: subCategory.value,\n label: subCategory.label,\n items: subCategory.options.map(({ value, label }) => ({\n value,\n label,\n })),\n })\n }\n\n return subCategoriesMemo\n }, [])\n\n if (subCategories?.length) {\n categoriesMemo.push({\n value: category.value,\n label: category.label,\n subCategories,\n })\n }\n\n return categoriesMemo\n },\n [],\n )\n\n if (choices.length) {\n memo.push({\n type: 'DEPENDENT_FIELD',\n ...baseField,\n choices,\n })\n }\n }\n\n return memo\n },\n [],\n )\n}\n\n/**\n * This function is used to transform the `choices` property into the `options`\n * property for freshdesk fields.\n *\n * @param fields\n * @returns\n */\nexport function setFreshdeskFieldOptions(\n fields: FreshdeskTypes.FreshdeskField[],\n): FreshdeskTypes.FreshdeskField[] {\n for (const field of fields) {\n const choices = field.choices\n if (!choices) {\n continue\n }\n if (Array.isArray(choices)) {\n field.options = choices.map((choice) => ({\n label: choice,\n value: choice,\n }))\n } else if (typeof choices === 'object') {\n field.options = Object.entries(choices).map(([key, value]) => {\n if (typeof value === 'number') {\n return {\n label: key,\n value,\n }\n } else if (Array.isArray(value)) {\n return {\n label: value[0],\n value: parseInt(key),\n }\n } else {\n return {\n label: key,\n value: key,\n options: Object.entries(value).map(([subCategory, items]) => ({\n label: subCategory,\n value: subCategory,\n options: items.map((item) => ({\n label: item,\n value: item,\n })),\n })),\n }\n }\n })\n }\n }\n return fields\n}\n"]}
|
package/dist/index.js
CHANGED
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
36
|
exports.freshdeskService = exports.sharepointService = exports.webhookSubscriptionService = exports.fileUploadService = exports.schedulingService = exports.paymentService = exports.abnService = exports.userService = exports.typeCastService = exports.submissionService = exports.conditionalLogicService = exports.formElementsService = exports.resourceDefinitionTypes = void 0;
|
|
27
37
|
exports.resourceDefinitionTypes = __importStar(require("./types/resource-definitions"));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wFAAuE;AACvE;;;;;;;;GAQG;AACH,6EAA4D;AAC5D;;;;;;;;GAQG;AACH,qFAAoE;AACpE;;;;;;;;GAQG;AACH,yEAAwD;AACxD;;;;;;;;GAQG;AACH,qEAAoD;AACpD;;;;;;;;GAQG;AACH,6DAA4C;AAC5C;;;;;;;;GAQG;AACH,2DAA0C;AAC1C;;;;;;;;GAQG;AACH,mEAAkD;AAClD;;;;;;;;GAQG;AACH,yEAAwD;AACxD;;;;;;;;GAQG;AACH,yEAAwD;AACxD;;;;;;;;GAQG;AACH,2FAA0E;AAC1E;;;;;;;;GAQG;AACH,yEAAwD;AAExD;;;;;;;;GAQG;AACH,uEAAsD","sourcesContent":["export * as resourceDefinitionTypes from './types/resource-definitions'\n/**\n * ## Form Elements Service\n *\n * Helper functions for handling form elements\n *\n * ```js\n * import { formElementsService } from '@oneblink/sdk-core'\n * ```\n */\nexport * as formElementsService from './formElementsService'\n/**\n * ## Conditional Logic Service\n *\n * Helper functions for handling conditional logic\n *\n * ```js\n * import { conditionalLogicService } from '@oneblink/sdk-core'\n * ```\n */\nexport * as conditionalLogicService from './conditionalLogicService'\n/**\n * ## Submission Service\n *\n * Helper functions for handling form submission data\n *\n * ```js\n * import { submissionService } from '@oneblink/sdk-core'\n * ```\n */\nexport * as submissionService from './submissionService'\n/**\n * ## Submission Service\n *\n * Helper functions for casting types\n *\n * ```js\n * import { typeCastService } from '@oneblink/sdk-core'\n * ```\n */\nexport * as typeCastService from './typeCastService'\n/**\n * ## User Service\n *\n * Helper functions for handling users\n *\n * ```js\n * import { userService } from '@oneblink/sdk-core'\n * ```\n */\nexport * as userService from './userService'\n/**\n * ## ABN Service\n *\n * Helper functions for handling ABN Records\n *\n * ```js\n * import { abnService } from '@oneblink/sdk-core'\n * ```\n */\nexport * as abnService from './abnService'\n/**\n * ## Payment Service\n *\n * Helper functions for payments\n *\n * ```js\n * import { paymentService } from '@oneblink/sdk-core'\n * ```\n */\nexport * as paymentService from './paymentService'\n/**\n * ## Scheduling Service\n *\n * Helper functions for scheduling\n *\n * ```js\n * import { schedulingService } from '@oneblink/sdk-core'\n * ```\n */\nexport * as schedulingService from './schedulingService'\n/**\n * ## File Upload Service\n *\n * Helper functions for handling file uploads\n *\n * ```js\n * import { fileUploadService } from '@oneblink/sdk-core'\n * ```\n */\nexport * as fileUploadService from './fileUploadService'\n/**\n * ## Webhook Subscription Service\n *\n * Helper functions for handling Webhook subscriptions\n *\n * ```js\n * import { webhookSubscriptionService } from '@oneblink/sdk-core'\n * ```\n */\nexport * as webhookSubscriptionService from './webhookSubscriptionService'\n/**\n * ## SharePoint Service\n *\n * Helper functions for handling SharePoint\n *\n * ```js\n * import { sharepointService } from '@oneblink/sdk-core'\n * ```\n */\nexport * as sharepointService from './sharepointService'\n\n/**\n * ## Freshdesk Service\n *\n * Helper functions for handling Freshdesk\n *\n * ```js\n * import { freshdeskService } from '@oneblink/sdk-core'\n * ```\n */\nexport * as freshdeskService from './freshdeskService'\n"]}
|
package/dist/paymentService.d.ts
CHANGED
|
@@ -45,7 +45,9 @@ type PaymentDisplayDetail = {
|
|
|
45
45
|
* @param options
|
|
46
46
|
* @returns
|
|
47
47
|
*/
|
|
48
|
-
export declare const getDisplayDetailsFromFormSubmissionPayment: (
|
|
48
|
+
export declare const getDisplayDetailsFromFormSubmissionPayment: (
|
|
49
|
+
/** The form submission payment to get the details from */
|
|
50
|
+
formSubmissionPayment: SubmissionTypes.FormSubmissionPayment, { formatCurrency, formatDateTime, formatDate, }: Pick<ReplaceInjectablesFormatters, "formatCurrency" | "formatDate" | "formatDateTime">) => {
|
|
49
51
|
amount: {
|
|
50
52
|
value: number;
|
|
51
53
|
formatted: string;
|
package/dist/paymentService.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getDisplayDetailsFromFormSubmissionPayment =
|
|
3
|
+
exports.getDisplayDetailsFromFormSubmissionPayment = void 0;
|
|
4
|
+
exports.checkForPaymentEvent = checkForPaymentEvent;
|
|
4
5
|
const _1 = require(".");
|
|
5
6
|
const submissionService_1 = require("./submissionService");
|
|
6
7
|
/**
|
|
@@ -54,7 +55,6 @@ function checkForPaymentEvent(definition, submission) {
|
|
|
54
55
|
};
|
|
55
56
|
return result;
|
|
56
57
|
}
|
|
57
|
-
exports.checkForPaymentEvent = checkForPaymentEvent;
|
|
58
58
|
/**
|
|
59
59
|
* Retrieve an array of detail items from a form submission payment.
|
|
60
60
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paymentService.js","sourceRoot":"","sources":["../src/paymentService.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n FormTypes,\n SubmissionEventTypes,\n SubmissionTypes,\n} from '@oneblink/types'\nimport { conditionalLogicService, formElementsService } from '.'\nimport {\n getRootElementValueById,\n ReplaceInjectablesFormatters,\n} from './submissionService'\n\n/**\n * Examine a submission and its form definition to validate whether a payment\n * workflow event needs to run.\n *\n * #### Example\n *\n * ```js\n * const result = paymentService.checkForPaymentEvent(form, submission)\n * ```\n *\n * @param definition\n * @param submission\n * @returns\n */\nexport function checkForPaymentEvent(\n definition: FormTypes.Form,\n submission: SubmissionTypes.S3SubmissionData['submission'],\n):\n | {\n paymentSubmissionEvent: SubmissionEventTypes.FormPaymentEvent\n amount: number\n }\n | undefined {\n const paymentSubmissionEvents = definition.paymentEvents || []\n const paymentSubmissionEvent = paymentSubmissionEvents.find(\n (paymentSubmissionEvent) => {\n return (\n paymentSubmissionEvent &&\n conditionalLogicService.evaluateConditionalPredicates({\n isConditional: !!paymentSubmissionEvent.conditionallyExecute,\n requiresAllConditionalPredicates:\n !!paymentSubmissionEvent.requiresAllConditionallyExecutePredicates,\n conditionalPredicates:\n paymentSubmissionEvent.conditionallyExecutePredicates || [],\n submission: submission,\n formElements: definition.elements,\n })\n )\n },\n )\n\n if (!paymentSubmissionEvent) {\n return\n }\n console.log(\n 'Checking if submission with payment submission event needs processing',\n )\n\n const amountElement = formElementsService.findFormElement(\n definition.elements,\n (element) => element.id === paymentSubmissionEvent.configuration.elementId,\n )\n if (!amountElement || amountElement.type === 'page') {\n console.log(\n 'Form has a payment submission event but the amount element does not exist, throwing error',\n )\n throw new Error(\n 'We could not find the configuration required to make a payment. Please contact your administrator to ensure your application configuration has been completed successfully.',\n )\n }\n\n console.log('Found form element for payment submission event', amountElement)\n\n const amount = getRootElementValueById(\n amountElement.id,\n definition.elements,\n submission,\n )\n\n if (!amount) {\n console.log(\n 'Form has a payment submission event but the amount has been entered as 0 or not at all, finishing as normal submission',\n )\n return\n }\n\n if (typeof amount !== 'number') {\n console.log(\n 'Form has a payment submission event but the amount is not a number, throwing error',\n )\n throw new Error(\n 'The configuration required to make a payment is incorrect. Please contact your administrator to ensure your application configuration has been completed successfully.',\n )\n }\n\n const result = {\n paymentSubmissionEvent,\n amount,\n }\n\n return result\n}\n\ntype PaymentDisplayDetail = {\n label: string\n value: string\n /** A key to identify the detail */\n key: string\n}\n\n/**\n * Retrieve an array of detail items from a form submission payment.\n *\n * #### Example\n *\n * ```js\n * const detailItems =\n * paymentService.getDisplayDetailsFromFormSubmissionPayment(\n * formSubmissionPayment,\n * {\n * formatCurrency,\n * formatDateTime,\n * formatDate,\n * },\n * )\n * ```\n *\n * @param formSubmissionPayment\n * @param options\n * @returns\n */\nexport const getDisplayDetailsFromFormSubmissionPayment = (\n /** The form submission payment to get the details from */\n formSubmissionPayment: SubmissionTypes.FormSubmissionPayment,\n {\n formatCurrency,\n formatDateTime,\n formatDate,\n }: Pick<\n ReplaceInjectablesFormatters,\n 'formatCurrency' | 'formatDate' | 'formatDateTime'\n >,\n):\n | {\n amount: {\n value: number\n formatted: string\n }\n paymentDisplayDetails: PaymentDisplayDetail[]\n }\n | undefined => {\n switch (formSubmissionPayment.type) {\n case 'NSW_GOV_PAY': {\n const { paymentTransaction } = formSubmissionPayment\n if (!paymentTransaction || !paymentTransaction.agencyCompletionPayment) {\n return\n }\n\n const amount = {\n value: paymentTransaction.agencyCompletionPayment.amount,\n formatted: formatCurrency(\n paymentTransaction.agencyCompletionPayment.amount,\n ),\n }\n return {\n amount,\n paymentDisplayDetails: [\n {\n key: 'completionReference',\n label: 'Completion Reference',\n value:\n paymentTransaction.agencyCompletionPayment\n .paymentCompletionReference,\n },\n {\n key: 'paymentReference',\n label: 'Payment Reference',\n value: paymentTransaction.agencyCompletionPayment.paymentReference,\n },\n {\n key: 'bankReference',\n label: 'Bank Reference',\n value: paymentTransaction.agencyCompletionPayment.bankReference,\n },\n {\n key: 'paymentMethod',\n label: 'Payment Method',\n value: paymentTransaction.agencyCompletionPayment.paymentMethod,\n },\n ...(paymentTransaction.agencyCompletionPayment.paymentMethod ===\n 'BPAY' &&\n paymentTransaction.agencyCompletionPayment.bPay?.billerCode\n ? [\n {\n key: 'billerCode',\n label: 'BPay Biller Code',\n value:\n paymentTransaction.agencyCompletionPayment.bPay.billerCode,\n },\n ]\n : []),\n ...(paymentTransaction.agencyCompletionPayment.paymentMethod ===\n 'CARD'\n ? [\n {\n key: 'creditCardMask',\n label: 'Card Number',\n value: `xxxx xxxx xxxx ${paymentTransaction.agencyCompletionPayment.card?.last4Digits}`,\n },\n ]\n : []),\n {\n key: 'amount',\n label: 'Amount',\n value: amount.formatted,\n },\n {\n key: 'surchargeAmount',\n label: 'Surcharge Amount',\n value: formatCurrency(\n paymentTransaction.agencyCompletionPayment.surcharge,\n ),\n },\n {\n key: 'surchargeGST',\n label: 'Surcharge GST',\n value: formatCurrency(\n paymentTransaction.agencyCompletionPayment.surchargeGst,\n ),\n },\n {\n key: 'createdDateTime',\n label: 'Created Date Time',\n value: formatDateTime(formSubmissionPayment.createdAt),\n },\n ],\n }\n }\n case 'BPOINT': {\n const { paymentTransaction } = formSubmissionPayment\n if (!paymentTransaction) {\n return\n }\n const amountValue = paymentTransaction.Amount / 100\n const amount = {\n value: amountValue,\n formatted: formatCurrency(amountValue),\n }\n return {\n amount,\n paymentDisplayDetails: [\n {\n key: 'receiptNumber',\n label: 'Receipt Number',\n value: paymentTransaction.ReceiptNumber,\n },\n {\n key: 'crn1',\n label: 'CRN 1',\n value: paymentTransaction.Crn1,\n },\n {\n key: 'crn2',\n label: 'CRN 2',\n value: paymentTransaction.Crn2,\n },\n {\n key: 'crn3',\n label: 'CRN 3',\n value: paymentTransaction.Crn3,\n },\n {\n key: 'billerCode',\n label: 'Biller Code',\n value: paymentTransaction.BillerCode,\n },\n {\n key: 'creditCardMask',\n label: 'Card Number',\n value: paymentTransaction.CardDetails.MaskedCardNumber,\n },\n {\n key: 'amount',\n label: 'Amount',\n value: amount.formatted,\n },\n {\n key: 'surchargeAmount',\n label: 'Surcharge Amount',\n value: formatCurrency(paymentTransaction.AmountSurcharge / 100),\n },\n {\n key: 'processedDateTime',\n label: 'Processed Date Time',\n value: formatDateTime(paymentTransaction.ProcessedDateTime),\n },\n ],\n }\n }\n case 'CP_PAY': {\n const { paymentTransaction } = formSubmissionPayment\n if (!paymentTransaction) {\n return\n }\n\n const determineDetails = () => {\n switch (paymentTransaction.cpPayVersion) {\n case 'v2': {\n return {\n transactionId: paymentTransaction.result.id,\n orderNumber:\n paymentTransaction.result.externalReferenceId ?? undefined,\n paymentType: paymentTransaction.result.paymentType,\n creditCardMask: paymentTransaction.result.lastFour\n ? `xxxx xxxx xxxx ${paymentTransaction.result.lastFour}`\n : undefined,\n amount:\n paymentTransaction.result.amount !== undefined\n ? {\n value: paymentTransaction.result.amount,\n formatted: formatCurrency(\n paymentTransaction.result.amount,\n ),\n }\n : {\n value: NaN,\n formatted: 'Unknown',\n },\n createdDateTime: paymentTransaction.result.createdOnUtc,\n }\n }\n default: {\n return {\n transactionId: paymentTransaction.transactionId,\n orderNumber: paymentTransaction.orderNumber ?? undefined,\n paymentType:\n paymentTransaction.paymentTypeId === 1\n ? 'Credit/Debit Card'\n : paymentTransaction.paymentTypeId === 2\n ? 'ACH'\n : undefined,\n creditCardMask: paymentTransaction.lastFour\n ? `xxxx xxxx xxxx ${paymentTransaction.lastFour}`\n : undefined,\n amount: {\n value: paymentTransaction.amount,\n formatted: formatCurrency(paymentTransaction.amount),\n },\n createdDateTime: paymentTransaction.createdAt,\n }\n }\n }\n }\n\n const {\n transactionId,\n orderNumber,\n paymentType,\n creditCardMask,\n amount,\n createdDateTime,\n } = determineDetails()\n const paymentDisplayDetails = []\n if (transactionId) {\n paymentDisplayDetails.push({\n key: 'transactionId',\n label: 'Transaction Id',\n value: transactionId,\n })\n }\n if (orderNumber) {\n paymentDisplayDetails.push({\n key: 'orderNumber',\n label: 'Order Number',\n value: orderNumber,\n })\n }\n if (paymentType) {\n paymentDisplayDetails.push({\n key: 'paymentType',\n label: 'Payment Type',\n value: paymentType,\n })\n }\n if (creditCardMask) {\n paymentDisplayDetails.push({\n key: 'creditCardMask',\n label: 'Card Number',\n value: creditCardMask,\n })\n }\n paymentDisplayDetails.push({\n key: 'amount',\n label: 'Amount',\n value: amount.formatted,\n })\n if (createdDateTime) {\n paymentDisplayDetails.push({\n key: 'createdDateTime',\n label: 'Created At',\n value: formatDateTime(createdDateTime),\n })\n }\n\n return {\n amount,\n paymentDisplayDetails,\n }\n }\n case 'WESTPAC_QUICK_STREAM': {\n const { paymentTransaction } = formSubmissionPayment\n if (!paymentTransaction) {\n return\n }\n\n const amount = {\n value: paymentTransaction.totalAmount.amount,\n formatted: formatCurrency(\n parseFloat(paymentTransaction.totalAmount.amount.toString()),\n ),\n }\n\n return {\n amount,\n paymentDisplayDetails: [\n {\n key: 'receiptNumber',\n label: 'Receipt Number',\n value: paymentTransaction.receiptNumber,\n },\n {\n key: 'paymentReferenceNumber',\n label: 'Payment Reference',\n value: paymentTransaction.paymentReferenceNumber,\n },\n {\n key: 'customerReferenceNumber',\n label: 'Customer Reference Number',\n value: paymentTransaction.customerReferenceNumber,\n },\n {\n key: 'amount',\n label: 'Amount',\n value: amount.formatted,\n },\n ...(paymentTransaction.surchargeAmount.amount\n ? [\n {\n key: 'surchargeAmount',\n label: 'Surcharge Amount',\n value: formatCurrency(\n parseFloat(\n paymentTransaction.surchargeAmount.amount.toString(),\n ),\n ),\n },\n ]\n : []),\n {\n key: 'settlementDate',\n label: 'Settlement Date',\n value: formatDate(paymentTransaction.settlementDate),\n },\n ],\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"paymentService.js","sourceRoot":"","sources":["../src/paymentService.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n FormTypes,\n SubmissionEventTypes,\n SubmissionTypes,\n} from '@oneblink/types'\nimport { conditionalLogicService, formElementsService } from '.'\nimport {\n getRootElementValueById,\n ReplaceInjectablesFormatters,\n} from './submissionService'\n\n/**\n * Examine a submission and its form definition to validate whether a payment\n * workflow event needs to run.\n *\n * #### Example\n *\n * ```js\n * const result = paymentService.checkForPaymentEvent(form, submission)\n * ```\n *\n * @param definition\n * @param submission\n * @returns\n */\nexport function checkForPaymentEvent(\n definition: FormTypes.Form,\n submission: SubmissionTypes.S3SubmissionData['submission'],\n):\n | {\n paymentSubmissionEvent: SubmissionEventTypes.FormPaymentEvent\n amount: number\n }\n | undefined {\n const paymentSubmissionEvents = definition.paymentEvents || []\n const paymentSubmissionEvent = paymentSubmissionEvents.find(\n (paymentSubmissionEvent) => {\n return (\n paymentSubmissionEvent &&\n conditionalLogicService.evaluateConditionalPredicates({\n isConditional: !!paymentSubmissionEvent.conditionallyExecute,\n requiresAllConditionalPredicates:\n !!paymentSubmissionEvent.requiresAllConditionallyExecutePredicates,\n conditionalPredicates:\n paymentSubmissionEvent.conditionallyExecutePredicates || [],\n submission: submission,\n formElements: definition.elements,\n })\n )\n },\n )\n\n if (!paymentSubmissionEvent) {\n return\n }\n console.log(\n 'Checking if submission with payment submission event needs processing',\n )\n\n const amountElement = formElementsService.findFormElement(\n definition.elements,\n (element) => element.id === paymentSubmissionEvent.configuration.elementId,\n )\n if (!amountElement || amountElement.type === 'page') {\n console.log(\n 'Form has a payment submission event but the amount element does not exist, throwing error',\n )\n throw new Error(\n 'We could not find the configuration required to make a payment. Please contact your administrator to ensure your application configuration has been completed successfully.',\n )\n }\n\n console.log('Found form element for payment submission event', amountElement)\n\n const amount = getRootElementValueById(\n amountElement.id,\n definition.elements,\n submission,\n )\n\n if (!amount) {\n console.log(\n 'Form has a payment submission event but the amount has been entered as 0 or not at all, finishing as normal submission',\n )\n return\n }\n\n if (typeof amount !== 'number') {\n console.log(\n 'Form has a payment submission event but the amount is not a number, throwing error',\n )\n throw new Error(\n 'The configuration required to make a payment is incorrect. Please contact your administrator to ensure your application configuration has been completed successfully.',\n )\n }\n\n const result = {\n paymentSubmissionEvent,\n amount,\n }\n\n return result\n}\n\ntype PaymentDisplayDetail = {\n label: string\n value: string\n /** A key to identify the detail */\n key: string\n}\n\n/**\n * Retrieve an array of detail items from a form submission payment.\n *\n * #### Example\n *\n * ```js\n * const detailItems =\n * paymentService.getDisplayDetailsFromFormSubmissionPayment(\n * formSubmissionPayment,\n * {\n * formatCurrency,\n * formatDateTime,\n * formatDate,\n * },\n * )\n * ```\n *\n * @param formSubmissionPayment\n * @param options\n * @returns\n */\nexport const getDisplayDetailsFromFormSubmissionPayment = (\n /** The form submission payment to get the details from */\n formSubmissionPayment: SubmissionTypes.FormSubmissionPayment,\n {\n formatCurrency,\n formatDateTime,\n formatDate,\n }: Pick<\n ReplaceInjectablesFormatters,\n 'formatCurrency' | 'formatDate' | 'formatDateTime'\n >,\n):\n | {\n amount: {\n value: number\n formatted: string\n }\n paymentDisplayDetails: PaymentDisplayDetail[]\n }\n | undefined => {\n switch (formSubmissionPayment.type) {\n case 'NSW_GOV_PAY': {\n const { paymentTransaction } = formSubmissionPayment\n if (!paymentTransaction || !paymentTransaction.agencyCompletionPayment) {\n return\n }\n\n const amount = {\n value: paymentTransaction.agencyCompletionPayment.amount,\n formatted: formatCurrency(\n paymentTransaction.agencyCompletionPayment.amount,\n ),\n }\n return {\n amount,\n paymentDisplayDetails: [\n {\n key: 'completionReference',\n label: 'Completion Reference',\n value:\n paymentTransaction.agencyCompletionPayment\n .paymentCompletionReference,\n },\n {\n key: 'paymentReference',\n label: 'Payment Reference',\n value: paymentTransaction.agencyCompletionPayment.paymentReference,\n },\n {\n key: 'bankReference',\n label: 'Bank Reference',\n value: paymentTransaction.agencyCompletionPayment.bankReference,\n },\n {\n key: 'paymentMethod',\n label: 'Payment Method',\n value: paymentTransaction.agencyCompletionPayment.paymentMethod,\n },\n ...(paymentTransaction.agencyCompletionPayment.paymentMethod ===\n 'BPAY' &&\n paymentTransaction.agencyCompletionPayment.bPay?.billerCode\n ? [\n {\n key: 'billerCode',\n label: 'BPay Biller Code',\n value:\n paymentTransaction.agencyCompletionPayment.bPay.billerCode,\n },\n ]\n : []),\n ...(paymentTransaction.agencyCompletionPayment.paymentMethod ===\n 'CARD'\n ? [\n {\n key: 'creditCardMask',\n label: 'Card Number',\n value: `xxxx xxxx xxxx ${paymentTransaction.agencyCompletionPayment.card?.last4Digits}`,\n },\n ]\n : []),\n {\n key: 'amount',\n label: 'Amount',\n value: amount.formatted,\n },\n {\n key: 'surchargeAmount',\n label: 'Surcharge Amount',\n value: formatCurrency(\n paymentTransaction.agencyCompletionPayment.surcharge,\n ),\n },\n {\n key: 'surchargeGST',\n label: 'Surcharge GST',\n value: formatCurrency(\n paymentTransaction.agencyCompletionPayment.surchargeGst,\n ),\n },\n {\n key: 'createdDateTime',\n label: 'Created Date Time',\n value: formatDateTime(formSubmissionPayment.createdAt),\n },\n ],\n }\n }\n case 'BPOINT': {\n const { paymentTransaction } = formSubmissionPayment\n if (!paymentTransaction) {\n return\n }\n const amountValue = paymentTransaction.Amount / 100\n const amount = {\n value: amountValue,\n formatted: formatCurrency(amountValue),\n }\n return {\n amount,\n paymentDisplayDetails: [\n {\n key: 'receiptNumber',\n label: 'Receipt Number',\n value: paymentTransaction.ReceiptNumber,\n },\n {\n key: 'crn1',\n label: 'CRN 1',\n value: paymentTransaction.Crn1,\n },\n {\n key: 'crn2',\n label: 'CRN 2',\n value: paymentTransaction.Crn2,\n },\n {\n key: 'crn3',\n label: 'CRN 3',\n value: paymentTransaction.Crn3,\n },\n {\n key: 'billerCode',\n label: 'Biller Code',\n value: paymentTransaction.BillerCode,\n },\n {\n key: 'creditCardMask',\n label: 'Card Number',\n value: paymentTransaction.CardDetails.MaskedCardNumber,\n },\n {\n key: 'amount',\n label: 'Amount',\n value: amount.formatted,\n },\n {\n key: 'surchargeAmount',\n label: 'Surcharge Amount',\n value: formatCurrency(paymentTransaction.AmountSurcharge / 100),\n },\n {\n key: 'processedDateTime',\n label: 'Processed Date Time',\n value: formatDateTime(paymentTransaction.ProcessedDateTime),\n },\n ],\n }\n }\n case 'CP_PAY': {\n const { paymentTransaction } = formSubmissionPayment\n if (!paymentTransaction) {\n return\n }\n\n const determineDetails = () => {\n switch (paymentTransaction.cpPayVersion) {\n case 'v2': {\n return {\n transactionId: paymentTransaction.result.id,\n orderNumber:\n paymentTransaction.result.externalReferenceId ?? undefined,\n paymentType: paymentTransaction.result.paymentType,\n creditCardMask: paymentTransaction.result.lastFour\n ? `xxxx xxxx xxxx ${paymentTransaction.result.lastFour}`\n : undefined,\n amount:\n paymentTransaction.result.amount !== undefined\n ? {\n value: paymentTransaction.result.amount,\n formatted: formatCurrency(\n paymentTransaction.result.amount,\n ),\n }\n : {\n value: NaN,\n formatted: 'Unknown',\n },\n createdDateTime: paymentTransaction.result.createdOnUtc,\n }\n }\n default: {\n return {\n transactionId: paymentTransaction.transactionId,\n orderNumber: paymentTransaction.orderNumber ?? undefined,\n paymentType:\n paymentTransaction.paymentTypeId === 1\n ? 'Credit/Debit Card'\n : paymentTransaction.paymentTypeId === 2\n ? 'ACH'\n : undefined,\n creditCardMask: paymentTransaction.lastFour\n ? `xxxx xxxx xxxx ${paymentTransaction.lastFour}`\n : undefined,\n amount: {\n value: paymentTransaction.amount,\n formatted: formatCurrency(paymentTransaction.amount),\n },\n createdDateTime: paymentTransaction.createdAt,\n }\n }\n }\n }\n\n const {\n transactionId,\n orderNumber,\n paymentType,\n creditCardMask,\n amount,\n createdDateTime,\n } = determineDetails()\n const paymentDisplayDetails = []\n if (transactionId) {\n paymentDisplayDetails.push({\n key: 'transactionId',\n label: 'Transaction Id',\n value: transactionId,\n })\n }\n if (orderNumber) {\n paymentDisplayDetails.push({\n key: 'orderNumber',\n label: 'Order Number',\n value: orderNumber,\n })\n }\n if (paymentType) {\n paymentDisplayDetails.push({\n key: 'paymentType',\n label: 'Payment Type',\n value: paymentType,\n })\n }\n if (creditCardMask) {\n paymentDisplayDetails.push({\n key: 'creditCardMask',\n label: 'Card Number',\n value: creditCardMask,\n })\n }\n paymentDisplayDetails.push({\n key: 'amount',\n label: 'Amount',\n value: amount.formatted,\n })\n if (createdDateTime) {\n paymentDisplayDetails.push({\n key: 'createdDateTime',\n label: 'Created At',\n value: formatDateTime(createdDateTime),\n })\n }\n\n return {\n amount,\n paymentDisplayDetails,\n }\n }\n case 'WESTPAC_QUICK_STREAM': {\n const { paymentTransaction } = formSubmissionPayment\n if (!paymentTransaction) {\n return\n }\n\n const amount = {\n value: paymentTransaction.totalAmount.amount,\n formatted: formatCurrency(\n parseFloat(paymentTransaction.totalAmount.amount.toString()),\n ),\n }\n\n return {\n amount,\n paymentDisplayDetails: [\n {\n key: 'receiptNumber',\n label: 'Receipt Number',\n value: paymentTransaction.receiptNumber,\n },\n {\n key: 'paymentReferenceNumber',\n label: 'Payment Reference',\n value: paymentTransaction.paymentReferenceNumber,\n },\n {\n key: 'customerReferenceNumber',\n label: 'Customer Reference Number',\n value: paymentTransaction.customerReferenceNumber,\n },\n {\n key: 'amount',\n label: 'Amount',\n value: amount.formatted,\n },\n ...(paymentTransaction.surchargeAmount.amount\n ? [\n {\n key: 'surchargeAmount',\n label: 'Surcharge Amount',\n value: formatCurrency(\n parseFloat(\n paymentTransaction.surchargeAmount.amount.toString(),\n ),\n ),\n },\n ]\n : []),\n {\n key: 'settlementDate',\n label: 'Settlement Date',\n value: formatDate(paymentTransaction.settlementDate),\n },\n ],\n }\n }\n }\n}\n"]}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getElementSubmissionValue = getElementSubmissionValue;
|
|
4
|
+
exports.replaceInjectablesWithElementValues = replaceInjectablesWithElementValues;
|
|
5
|
+
exports.replaceInjectablesWithSubmissionValues = replaceInjectablesWithSubmissionValues;
|
|
6
|
+
exports.processInjectablesInCustomResource = processInjectablesInCustomResource;
|
|
4
7
|
const abnService_1 = require("./abnService");
|
|
5
8
|
const form_elements_regex_1 = require("./form-elements-regex");
|
|
6
9
|
const formElementsService_1 = require("./formElementsService");
|
|
@@ -101,7 +104,6 @@ function getElementSubmissionValue({ elementId, propertyName, submission, formEl
|
|
|
101
104
|
formatNumber,
|
|
102
105
|
});
|
|
103
106
|
}
|
|
104
|
-
exports.getElementSubmissionValue = getElementSubmissionValue;
|
|
105
107
|
function getElementSubmissionValueByName({ propertyName, formElements, submission, }) {
|
|
106
108
|
const unknownValue = submission[propertyName];
|
|
107
109
|
if (unknownValue === undefined || unknownValue === null) {
|
|
@@ -362,7 +364,6 @@ function replaceInjectablesWithElementValues(text, options) {
|
|
|
362
364
|
hadAllInjectablesReplaced,
|
|
363
365
|
};
|
|
364
366
|
}
|
|
365
|
-
exports.replaceInjectablesWithElementValues = replaceInjectablesWithElementValues;
|
|
366
367
|
/**
|
|
367
368
|
* Replace the `{ELEMENT:<elementName>}` values in text after a successful form
|
|
368
369
|
* submission as well as other replaceable parameters e.g. `submissionId`. The
|
|
@@ -440,7 +441,6 @@ function replaceInjectablesWithSubmissionValues(text, options) {
|
|
|
440
441
|
hadAllInjectablesReplaced,
|
|
441
442
|
};
|
|
442
443
|
}
|
|
443
|
-
exports.replaceInjectablesWithSubmissionValues = replaceInjectablesWithSubmissionValues;
|
|
444
444
|
/**
|
|
445
445
|
* Process a resource with injectable element values to turn a single resource
|
|
446
446
|
* (could be a single) into multiple resources. e.g.
|
|
@@ -573,5 +573,4 @@ function processInjectablesInCustomResource({ resource, submission, formElements
|
|
|
573
573
|
}
|
|
574
574
|
return newResources;
|
|
575
575
|
}
|
|
576
|
-
exports.processInjectablesInCustomResource = processInjectablesInCustomResource;
|
|
577
576
|
//# sourceMappingURL=replaceCustomValues.js.map
|