@esri/solution-form 5.2.8 → 5.2.10

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.
@@ -13,6 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+ import * as common from "@esri/solution-common";
16
17
  import JSZip from "jszip";
17
18
  /**
18
19
  * Detemplatizes Form data and swizzles the AGO ids of a zip object if they are present in the template dictionary.
@@ -22,3 +23,18 @@ import JSZip from "jszip";
22
23
  * @returns Promise that resolves to the updated zip object
23
24
  */
24
25
  export declare function swizzleFormObject(zipObject: JSZip, templateDictionary: any): Promise<JSZip>;
26
+ /**
27
+ * Updates the binary content of a zip object.
28
+ *
29
+ * @param zipFileItem Zip file item
30
+ * @param templateDictionary Dictionary of replacement values
31
+ * @returns Promise that resolves to the updated zip file item
32
+ */
33
+ /**
34
+ * Updates the text content of a zip object.
35
+ *
36
+ * @param zipFileItem Zip file item
37
+ * @param templateDictionary Dictionary of replacement values
38
+ * @returns Updated zip file item text content
39
+ */
40
+ export declare function _updateZipObjectTextContent(zipFileItem: common.IZipObjectContentItem, templateDictionary: any): string;
@@ -15,7 +15,7 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.swizzleFormObject = void 0;
18
+ exports._updateZipObjectTextContent = exports.swizzleFormObject = void 0;
19
19
  const tslib_1 = require("tslib");
20
20
  const common = tslib_1.__importStar(require("@esri/solution-common"));
21
21
  // ------------------------------------------------------------------------------------------------------------------ //
@@ -30,26 +30,78 @@ async function swizzleFormObject(zipObject, templateDictionary) {
30
30
  // Get the contents of the zip object
31
31
  const zipObjectContents = await common.getZipObjectContents(zipObject);
32
32
  // Swizzle the contents of each file in a zip file and replace them in the zip object
33
- zipObjectContents.forEach((zipFile) => {
34
- // Detemplatize the file content
35
- let updatedZipContent = common.replaceInTemplate(zipFile.content, templateDictionary);
36
- // Find the AGO ids in the file content
37
- const agoIdRegEx = common.getAgoIdRegEx();
38
- const agoIdMatches = updatedZipContent.match(agoIdRegEx) ?? [];
39
- // Replace the matching AGO id in the file content iff it is present in the template dictionary
40
- agoIdMatches.forEach((match) => {
41
- const replacement = templateDictionary[match];
42
- if (typeof replacement?.itemId === "string") {
43
- if (match === replacement.itemId) {
44
- return;
45
- }
46
- updatedZipContent = updatedZipContent.replace(new RegExp(match, "g"), `${replacement.itemId}`);
47
- }
48
- });
49
- // Replace the file content in the zip object
50
- zipObject.file(zipFile.file, updatedZipContent);
33
+ //const zipObjectUpdatePromises: Array<Promise<common.IZipObjectContentItem>> = [];
34
+ zipObjectContents.forEach((zipFileItem) => {
35
+ // Separate the binary files from the text files
36
+ if (typeof zipFileItem.content === "string") {
37
+ const updatedZipContent = _updateZipObjectTextContent(zipFileItem, templateDictionary);
38
+ // Replace the file content in the zip object
39
+ zipObject.file(zipFileItem.file, updatedZipContent);
40
+ /*} else {
41
+ // Only update XLSX binary files
42
+ if (zipFileItem.file.endsWith(".xlsx")) {
43
+ zipObjectUpdatePromises.push(_updateZipObjectBinaryContent(zipFileItem, templateDictionary));
44
+ }
45
+ */
46
+ }
51
47
  });
48
+ /*
49
+ const asyncUpdates = await Promise.all(zipObjectUpdatePromises);
50
+ asyncUpdates.forEach((zipFileItem: common.IZipObjectContentItem) => {
51
+ // Replace the file content in the zip object
52
+ zipObject.file(zipFileItem.file, zipFileItem.content);
53
+ });
54
+ */
52
55
  return Promise.resolve(zipObject);
53
56
  }
54
57
  exports.swizzleFormObject = swizzleFormObject;
58
+ // ------------------------------------------------------------------------------------------------------------------ //
59
+ /**
60
+ * Updates the binary content of a zip object.
61
+ *
62
+ * @param zipFileItem Zip file item
63
+ * @param templateDictionary Dictionary of replacement values
64
+ * @returns Promise that resolves to the updated zip file item
65
+ */
66
+ /*
67
+ export async function _updateZipObjectBinaryContent(
68
+ zipFileItem: common.IZipObjectContentItem,
69
+ templateDictionary: any
70
+ ): Promise<common.IZipObjectContentItem> {
71
+ const updatedZipContent = await swizzleFormObject(await JSZip.loadAsync(zipFileItem.content), templateDictionary);
72
+
73
+ // Replace the file content in the zip file item
74
+ const updatedZipFileItem = {
75
+ file: zipFileItem.file,
76
+ content: await common.zipObjectToZipFile(updatedZipContent, zipFileItem.file)
77
+ }
78
+
79
+ return Promise.resolve(updatedZipFileItem);
80
+ }
81
+ */
82
+ /**
83
+ * Updates the text content of a zip object.
84
+ *
85
+ * @param zipFileItem Zip file item
86
+ * @param templateDictionary Dictionary of replacement values
87
+ * @returns Updated zip file item text content
88
+ */
89
+ function _updateZipObjectTextContent(zipFileItem, templateDictionary) {
90
+ const agoIdRegEx = common.getAgoIdRegEx();
91
+ // Detemplatize the file content
92
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
93
+ let updatedZipObjectContent = zipFileItem.content;
94
+ updatedZipObjectContent = common.replaceInTemplate(zipFileItem.content, templateDictionary);
95
+ // Find the AGO ids in the file content
96
+ const agoIdMatches = common.dedupe(updatedZipObjectContent.match(agoIdRegEx) ?? []);
97
+ // Replace things that look like AGO ids in the file content iff they are present in the template dictionary
98
+ agoIdMatches.forEach((match) => {
99
+ const replacement = templateDictionary[match];
100
+ if (typeof replacement?.itemId === "string") {
101
+ updatedZipObjectContent = updatedZipObjectContent.replace(new RegExp(match, "g"), `${replacement.itemId}`);
102
+ }
103
+ });
104
+ return updatedZipObjectContent;
105
+ }
106
+ exports._updateZipObjectTextContent = _updateZipObjectTextContent;
55
107
  //# sourceMappingURL=formUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formUtils.js","sourceRoot":"","sources":["../../src/formUtils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;AAEH,sEAAgD;AAGhD,wHAAwH;AAExH;;;;;;GAMG;AACI,KAAK,UAAU,iBAAiB,CACrC,SAAgB,EAChB,kBAAuB;IAEvB,qCAAqC;IACrC,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAEvE,qFAAqF;IACrF,iBAAiB,CAAC,OAAO,CACvB,CAAC,OAAsC,EAAE,EAAE;QACzC,gCAAgC;QAChC,IAAI,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAEtF,uCAAuC;QACvC,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,YAAY,GAAG,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAE/D,+FAA+F;QAC/F,YAAY,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,EAAE;YACrC,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,OAAO,WAAW,EAAE,MAAM,KAAK,QAAQ,EAAE;gBAC3C,IAAI,KAAK,KAAK,WAAW,CAAC,MAAM,EAAE;oBAAE,OAAO;iBAAE;gBAC7C,iBAAiB,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;aAChG;QACH,CAAC,CAAC,CAAC;QAEH,6CAA6C;QAC7C,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IAClD,CAAC,CACF,CAAC;IAEF,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC;AAhCD,8CAgCC"}
1
+ {"version":3,"file":"formUtils.js","sourceRoot":"","sources":["../../src/formUtils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;AAEH,sEAAgD;AAGhD,wHAAwH;AAExH;;;;;;GAMG;AACI,KAAK,UAAU,iBAAiB,CACrC,SAAgB,EAChB,kBAAuB;IAEvB,qCAAqC;IACrC,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAEvE,qFAAqF;IACrF,mFAAmF;IACnF,iBAAiB,CAAC,OAAO,CACvB,CAAC,WAA0C,EAAE,EAAE;QAE7C,gDAAgD;QAChD,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,EAAE;YAC3C,MAAM,iBAAiB,GAAG,2BAA2B,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;YAEvF,6CAA6C;YAC7C,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;YAEtD;;;;;cAKE;SACD;IACH,CAAC,CACF,CAAC;IAEF;;;;;;MAME;IAEF,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC;AAtCD,8CAsCC;AAED,wHAAwH;AAExH;;;;;;GAMG;AACH;;;;;;;;;;;;;;;EAeE;AAEF;;;;;;GAMG;AACH,SAAgB,2BAA2B,CACzC,WAAyC,EACzC,kBAAuB;IAEvB,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;IAE1C,gCAAgC;IAChC,4EAA4E;IAC5E,IAAI,uBAAuB,GAAG,WAAW,CAAC,OAAiB,CAAC;IAE5D,uBAAuB,GAAG,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAE5F,uCAAuC;IACvC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAEpF,4GAA4G;IAC5G,YAAY,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,EAAE;QACrC,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,OAAO,WAAW,EAAE,MAAM,KAAK,QAAQ,EAAE;YAC3C,uBAAuB,GAAG,uBAAuB,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;SAC5G;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAxBD,kEAwBC"}
@@ -25,6 +25,7 @@ const tslib_1 = require("tslib");
25
25
  const is_hub_form_template_1 = require("./helpers/is-hub-form-template");
26
26
  const post_process_survey_1 = require("./helpers/post-process-survey");
27
27
  const common = tslib_1.__importStar(require("@esri/solution-common"));
28
+ const formUtils = tslib_1.__importStar(require("./formUtils"));
28
29
  // ------------------------------------------------------------------------------------------------------------------ //
29
30
  /**
30
31
  * Form post-processing actions
@@ -37,11 +38,25 @@ const common = tslib_1.__importStar(require("@esri/solution-common"));
37
38
  * @returns Promise resolving to successfulness of update
38
39
  */
39
40
  async function postProcess(itemId, type, itemInfos, template, templates, templateDictionary, authentication) {
41
+ // Fetch the form's zip file
42
+ const formDataResponse = await common.getItemDataAsFile(itemId, "Form", authentication);
43
+ if (formDataResponse) {
44
+ const zipObject = await common.blobToZipObject(formDataResponse);
45
+ // Detemplatize it
46
+ const updatedZipObject = await formUtils.swizzleFormObject(zipObject, templateDictionary);
47
+ // Update the form
48
+ void common.updateItemWithZipObject(updatedZipObject, itemId, authentication);
49
+ }
50
+ else {
51
+ // If the form data is not found, AGO is slow storing the data; try again
52
+ await common.delay(5000);
53
+ return postProcess(itemId, type, itemInfos, template, templates, templateDictionary, authentication);
54
+ }
40
55
  // If this is a Hub form, post-process it as such
41
56
  if ((0, is_hub_form_template_1.isHubFormTemplate)(template)) {
42
57
  return (0, post_process_survey_1.postProcessHubSurvey)(itemId, type, itemInfos, template, templates, templateDictionary, authentication);
43
58
  }
44
- // Otherwise, just update the item's template
59
+ // Update the item's template
45
60
  return common.updateItemTemplateFromDictionary(itemId, templateDictionary, authentication);
46
61
  }
47
62
  exports.postProcess = postProcess;
@@ -1 +1 @@
1
- {"version":3,"file":"post-process.js","sourceRoot":"","sources":["../../src/post-process.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;AAEH;;;;GAIG;AAEH,yEAAmE;AACnE,uEAAqE;AACrE,sEAAgD;AAEhD,wHAAwH;AAExH;;;;;;;;;GASG;AACI,KAAK,UAAU,WAAW,CAC/B,MAAc,EACd,IAAY,EACZ,SAAgB,EAChB,QAA8B,EAC9B,SAAiC,EACjC,kBAAuB,EACvB,cAAkC;IAElC,iDAAiD;IACjD,IAAI,IAAA,wCAAiB,EAAC,QAAQ,CAAC,EAAE;QAC/B,OAAO,IAAA,0CAAoB,EACzB,MAAM,EACN,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,SAAS,EACT,kBAAkB,EAClB,cAAc,CACf,CAAC;KACH;IAED,6CAA6C;IAC7C,OAAO,MAAM,CAAC,gCAAgC,CAC5C,MAAM,EACN,kBAAkB,EAClB,cAAc,CACf,CAAC;AACJ,CAAC;AA5BD,kCA4BC"}
1
+ {"version":3,"file":"post-process.js","sourceRoot":"","sources":["../../src/post-process.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;AAEH;;;;GAIG;AAEH,yEAAmE;AACnE,uEAAqE;AACrE,sEAAgD;AAChD,+DAAyC;AAGzC,wHAAwH;AAExH;;;;;;;;;GASG;AACI,KAAK,UAAU,WAAW,CAC/B,MAAc,EACd,IAAY,EACZ,SAAgB,EAChB,QAA8B,EAC9B,SAAiC,EACjC,kBAAuB,EACvB,cAAkC;IAElC,4BAA4B;IAC5B,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IACxF,IAAI,gBAAgB,EAAE;QACpB,MAAM,SAAS,GAAU,MAAM,MAAM,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAExE,kBAAkB;QAClB,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAE1F,kBAAkB;QAClB,KAAK,MAAM,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;KAE/E;SAAM;QACL,yEAAyE;QACzE,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,cAAc,CAAC,CAAC;KACtG;IAED,iDAAiD;IACjD,IAAI,IAAA,wCAAiB,EAAC,QAAQ,CAAC,EAAE;QAC/B,OAAO,IAAA,0CAAoB,EACzB,MAAM,EACN,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,SAAS,EACT,kBAAkB,EAClB,cAAc,CACf,CAAC;KACH;IAED,6BAA6B;IAC7B,OAAO,MAAM,CAAC,gCAAgC,CAC5C,MAAM,EACN,kBAAkB,EAClB,cAAc,CACf,CAAC;AACJ,CAAC;AA7CD,kCA6CC"}
@@ -13,6 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+ import * as common from "@esri/solution-common";
16
17
  import JSZip from "jszip";
17
18
  /**
18
19
  * Detemplatizes Form data and swizzles the AGO ids of a zip object if they are present in the template dictionary.
@@ -22,3 +23,18 @@ import JSZip from "jszip";
22
23
  * @returns Promise that resolves to the updated zip object
23
24
  */
24
25
  export declare function swizzleFormObject(zipObject: JSZip, templateDictionary: any): Promise<JSZip>;
26
+ /**
27
+ * Updates the binary content of a zip object.
28
+ *
29
+ * @param zipFileItem Zip file item
30
+ * @param templateDictionary Dictionary of replacement values
31
+ * @returns Promise that resolves to the updated zip file item
32
+ */
33
+ /**
34
+ * Updates the text content of a zip object.
35
+ *
36
+ * @param zipFileItem Zip file item
37
+ * @param templateDictionary Dictionary of replacement values
38
+ * @returns Updated zip file item text content
39
+ */
40
+ export declare function _updateZipObjectTextContent(zipFileItem: common.IZipObjectContentItem, templateDictionary: any): string;
@@ -26,25 +26,76 @@ export async function swizzleFormObject(zipObject, templateDictionary) {
26
26
  // Get the contents of the zip object
27
27
  const zipObjectContents = await common.getZipObjectContents(zipObject);
28
28
  // Swizzle the contents of each file in a zip file and replace them in the zip object
29
- zipObjectContents.forEach((zipFile) => {
30
- // Detemplatize the file content
31
- let updatedZipContent = common.replaceInTemplate(zipFile.content, templateDictionary);
32
- // Find the AGO ids in the file content
33
- const agoIdRegEx = common.getAgoIdRegEx();
34
- const agoIdMatches = updatedZipContent.match(agoIdRegEx) ?? [];
35
- // Replace the matching AGO id in the file content iff it is present in the template dictionary
36
- agoIdMatches.forEach((match) => {
37
- const replacement = templateDictionary[match];
38
- if (typeof replacement?.itemId === "string") {
39
- if (match === replacement.itemId) {
40
- return;
41
- }
42
- updatedZipContent = updatedZipContent.replace(new RegExp(match, "g"), `${replacement.itemId}`);
43
- }
44
- });
45
- // Replace the file content in the zip object
46
- zipObject.file(zipFile.file, updatedZipContent);
29
+ //const zipObjectUpdatePromises: Array<Promise<common.IZipObjectContentItem>> = [];
30
+ zipObjectContents.forEach((zipFileItem) => {
31
+ // Separate the binary files from the text files
32
+ if (typeof zipFileItem.content === "string") {
33
+ const updatedZipContent = _updateZipObjectTextContent(zipFileItem, templateDictionary);
34
+ // Replace the file content in the zip object
35
+ zipObject.file(zipFileItem.file, updatedZipContent);
36
+ /*} else {
37
+ // Only update XLSX binary files
38
+ if (zipFileItem.file.endsWith(".xlsx")) {
39
+ zipObjectUpdatePromises.push(_updateZipObjectBinaryContent(zipFileItem, templateDictionary));
40
+ }
41
+ */
42
+ }
47
43
  });
44
+ /*
45
+ const asyncUpdates = await Promise.all(zipObjectUpdatePromises);
46
+ asyncUpdates.forEach((zipFileItem: common.IZipObjectContentItem) => {
47
+ // Replace the file content in the zip object
48
+ zipObject.file(zipFileItem.file, zipFileItem.content);
49
+ });
50
+ */
48
51
  return Promise.resolve(zipObject);
49
52
  }
53
+ // ------------------------------------------------------------------------------------------------------------------ //
54
+ /**
55
+ * Updates the binary content of a zip object.
56
+ *
57
+ * @param zipFileItem Zip file item
58
+ * @param templateDictionary Dictionary of replacement values
59
+ * @returns Promise that resolves to the updated zip file item
60
+ */
61
+ /*
62
+ export async function _updateZipObjectBinaryContent(
63
+ zipFileItem: common.IZipObjectContentItem,
64
+ templateDictionary: any
65
+ ): Promise<common.IZipObjectContentItem> {
66
+ const updatedZipContent = await swizzleFormObject(await JSZip.loadAsync(zipFileItem.content), templateDictionary);
67
+
68
+ // Replace the file content in the zip file item
69
+ const updatedZipFileItem = {
70
+ file: zipFileItem.file,
71
+ content: await common.zipObjectToZipFile(updatedZipContent, zipFileItem.file)
72
+ }
73
+
74
+ return Promise.resolve(updatedZipFileItem);
75
+ }
76
+ */
77
+ /**
78
+ * Updates the text content of a zip object.
79
+ *
80
+ * @param zipFileItem Zip file item
81
+ * @param templateDictionary Dictionary of replacement values
82
+ * @returns Updated zip file item text content
83
+ */
84
+ export function _updateZipObjectTextContent(zipFileItem, templateDictionary) {
85
+ const agoIdRegEx = common.getAgoIdRegEx();
86
+ // Detemplatize the file content
87
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
88
+ let updatedZipObjectContent = zipFileItem.content;
89
+ updatedZipObjectContent = common.replaceInTemplate(zipFileItem.content, templateDictionary);
90
+ // Find the AGO ids in the file content
91
+ const agoIdMatches = common.dedupe(updatedZipObjectContent.match(agoIdRegEx) ?? []);
92
+ // Replace things that look like AGO ids in the file content iff they are present in the template dictionary
93
+ agoIdMatches.forEach((match) => {
94
+ const replacement = templateDictionary[match];
95
+ if (typeof replacement?.itemId === "string") {
96
+ updatedZipObjectContent = updatedZipObjectContent.replace(new RegExp(match, "g"), `${replacement.itemId}`);
97
+ }
98
+ });
99
+ return updatedZipObjectContent;
100
+ }
50
101
  //# sourceMappingURL=formUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formUtils.js","sourceRoot":"","sources":["../../src/formUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAGhD,wHAAwH;AAExH;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAAgB,EAChB,kBAAuB;IAEvB,qCAAqC;IACrC,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAEvE,qFAAqF;IACrF,iBAAiB,CAAC,OAAO,CACvB,CAAC,OAAsC,EAAE,EAAE;QACzC,gCAAgC;QAChC,IAAI,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAEtF,uCAAuC;QACvC,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,YAAY,GAAG,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAE/D,+FAA+F;QAC/F,YAAY,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,EAAE;YACrC,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,OAAO,WAAW,EAAE,MAAM,KAAK,QAAQ,EAAE;gBAC3C,IAAI,KAAK,KAAK,WAAW,CAAC,MAAM,EAAE;oBAAE,OAAO;iBAAE;gBAC7C,iBAAiB,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;aAChG;QACH,CAAC,CAAC,CAAC;QAEH,6CAA6C;QAC7C,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IAClD,CAAC,CACF,CAAC;IAEF,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"formUtils.js","sourceRoot":"","sources":["../../src/formUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAGhD,wHAAwH;AAExH;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAAgB,EAChB,kBAAuB;IAEvB,qCAAqC;IACrC,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAEvE,qFAAqF;IACrF,mFAAmF;IACnF,iBAAiB,CAAC,OAAO,CACvB,CAAC,WAA0C,EAAE,EAAE;QAE7C,gDAAgD;QAChD,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,EAAE;YAC3C,MAAM,iBAAiB,GAAG,2BAA2B,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;YAEvF,6CAA6C;YAC7C,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;YAEtD;;;;;cAKE;SACD;IACH,CAAC,CACF,CAAC;IAEF;;;;;;MAME;IAEF,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC;AAED,wHAAwH;AAExH;;;;;;GAMG;AACH;;;;;;;;;;;;;;;EAeE;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CACzC,WAAyC,EACzC,kBAAuB;IAEvB,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;IAE1C,gCAAgC;IAChC,4EAA4E;IAC5E,IAAI,uBAAuB,GAAG,WAAW,CAAC,OAAiB,CAAC;IAE5D,uBAAuB,GAAG,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAE5F,uCAAuC;IACvC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAEpF,4GAA4G;IAC5G,YAAY,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,EAAE;QACrC,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,OAAO,WAAW,EAAE,MAAM,KAAK,QAAQ,EAAE;YAC3C,uBAAuB,GAAG,uBAAuB,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;SAC5G;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,uBAAuB,CAAC;AACjC,CAAC"}
@@ -21,6 +21,7 @@
21
21
  import { isHubFormTemplate } from "./helpers/is-hub-form-template";
22
22
  import { postProcessHubSurvey } from "./helpers/post-process-survey";
23
23
  import * as common from "@esri/solution-common";
24
+ import * as formUtils from "./formUtils";
24
25
  // ------------------------------------------------------------------------------------------------------------------ //
25
26
  /**
26
27
  * Form post-processing actions
@@ -33,11 +34,25 @@ import * as common from "@esri/solution-common";
33
34
  * @returns Promise resolving to successfulness of update
34
35
  */
35
36
  export async function postProcess(itemId, type, itemInfos, template, templates, templateDictionary, authentication) {
37
+ // Fetch the form's zip file
38
+ const formDataResponse = await common.getItemDataAsFile(itemId, "Form", authentication);
39
+ if (formDataResponse) {
40
+ const zipObject = await common.blobToZipObject(formDataResponse);
41
+ // Detemplatize it
42
+ const updatedZipObject = await formUtils.swizzleFormObject(zipObject, templateDictionary);
43
+ // Update the form
44
+ void common.updateItemWithZipObject(updatedZipObject, itemId, authentication);
45
+ }
46
+ else {
47
+ // If the form data is not found, AGO is slow storing the data; try again
48
+ await common.delay(5000);
49
+ return postProcess(itemId, type, itemInfos, template, templates, templateDictionary, authentication);
50
+ }
36
51
  // If this is a Hub form, post-process it as such
37
52
  if (isHubFormTemplate(template)) {
38
53
  return postProcessHubSurvey(itemId, type, itemInfos, template, templates, templateDictionary, authentication);
39
54
  }
40
- // Otherwise, just update the item's template
55
+ // Update the item's template
41
56
  return common.updateItemTemplateFromDictionary(itemId, templateDictionary, authentication);
42
57
  }
43
58
  //# sourceMappingURL=post-process.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"post-process.js","sourceRoot":"","sources":["../../src/post-process.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAEhD,wHAAwH;AAExH;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAc,EACd,IAAY,EACZ,SAAgB,EAChB,QAA8B,EAC9B,SAAiC,EACjC,kBAAuB,EACvB,cAAkC;IAElC,iDAAiD;IACjD,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE;QAC/B,OAAO,oBAAoB,CACzB,MAAM,EACN,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,SAAS,EACT,kBAAkB,EAClB,cAAc,CACf,CAAC;KACH;IAED,6CAA6C;IAC7C,OAAO,MAAM,CAAC,gCAAgC,CAC5C,MAAM,EACN,kBAAkB,EAClB,cAAc,CACf,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"post-process.js","sourceRoot":"","sources":["../../src/post-process.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAGzC,wHAAwH;AAExH;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAc,EACd,IAAY,EACZ,SAAgB,EAChB,QAA8B,EAC9B,SAAiC,EACjC,kBAAuB,EACvB,cAAkC;IAElC,4BAA4B;IAC5B,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IACxF,IAAI,gBAAgB,EAAE;QACpB,MAAM,SAAS,GAAU,MAAM,MAAM,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAExE,kBAAkB;QAClB,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAE1F,kBAAkB;QAClB,KAAK,MAAM,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;KAE/E;SAAM;QACL,yEAAyE;QACzE,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,cAAc,CAAC,CAAC;KACtG;IAED,iDAAiD;IACjD,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE;QAC/B,OAAO,oBAAoB,CACzB,MAAM,EACN,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,SAAS,EACT,kBAAkB,EAClB,cAAc,CACf,CAAC;KACH;IAED,6BAA6B;IAC7B,OAAO,MAAM,CAAC,gCAAgC,CAC5C,MAAM,EACN,kBAAkB,EAClB,cAAc,CACf,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esri/solution-form",
3
- "version": "5.2.8",
3
+ "version": "5.2.10",
4
4
  "description": "Manages the creation and deployment of form item types for @esri/solution.js.",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -23,21 +23,21 @@
23
23
  "@esri/arcgis-rest-portal": "^3.7.0",
24
24
  "@esri/arcgis-rest-request": "^3.7.0",
25
25
  "@esri/arcgis-rest-service-admin": "^3.7.0",
26
- "@esri/hub-common": "^14.102.0",
26
+ "@esri/hub-common": "^14.109.1",
27
27
  "@esri/hub-initiatives": "^14.0.0",
28
- "@esri/hub-sites": "^14.2.3",
28
+ "@esri/hub-sites": "^14.2.4",
29
29
  "@esri/hub-teams": "^14.1.0",
30
- "@esri/solution-common": "^5.2.8",
31
- "@esri/solution-feature-layer": "^5.2.8",
32
- "@esri/solution-file": "^5.2.8",
33
- "@esri/solution-group": "^5.2.8",
34
- "@esri/solution-simple-types": "^5.2.8",
35
- "@esri/solution-storymap": "^5.2.8",
30
+ "@esri/solution-common": "^5.2.10",
31
+ "@esri/solution-feature-layer": "^5.2.10",
32
+ "@esri/solution-file": "^5.2.10",
33
+ "@esri/solution-group": "^5.2.10",
34
+ "@esri/solution-simple-types": "^5.2.10",
35
+ "@esri/solution-storymap": "^5.2.10",
36
36
  "@types/jasmine": "^5.1.4",
37
37
  "fetch-mock": "^7.7.3",
38
38
  "jasmine": "^5.1.0",
39
39
  "jasmine-core": "^5.1.0",
40
- "rollup": "^4.12.1"
40
+ "rollup": "^4.13.2"
41
41
  },
42
42
  "dependencies": {
43
43
  "tslib": "1.14.1"
@@ -78,5 +78,5 @@
78
78
  "esri",
79
79
  "ES6"
80
80
  ],
81
- "gitHead": "1d7e8dfcf16f4e05b57edaf7142710e00ee4be43"
81
+ "gitHead": "5ad94c5c39559c3399cc7c42ba1b0075ec618bf4"
82
82
  }