From cb84f915e4510bce1168eb3a78f855cc9dd273f1 Mon Sep 17 00:00:00 2001 From: Josh Pollock Date: Sat, 18 Aug 2018 18:05:33 -0400 Subject: [PATCH 1/4] version 0.5.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c75a7b4..a132f0a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@caldera-labs/api-client", - "version": "0.4.1", + "version": "0.5.0", "description": "API client for Caldera Forms and Caldera Forms Pro", "main": "./dist/index.js", "scripts": { From 60fbe636b5daab2ad6d57c7175c7ee7530681cdd Mon Sep 17 00:00:00 2001 From: Josh Pollock Date: Wed, 22 Aug 2018 17:33:43 -0400 Subject: [PATCH 2/4] entry delete #12 --- .idea/workspace.xml | 309 +++++++++++++++------------- __tests__/EntriesClient.test.js | 12 ++ docs/file/src/EntriesClient.js.html | 3 + docs/index.json | 4 +- docs/source.html | 6 +- src/EntriesClient.js | 13 ++ 6 files changed, 201 insertions(+), 146 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 15c1dfd..466d4b0 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -3,14 +3,9 @@ - - - - - + - - + - + @@ -32,47 +27,11 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -110,8 +69,8 @@ - - + + @@ -123,7 +82,7 @@ - + @@ -132,29 +91,79 @@ - + - - + + - - + + - - + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -170,6 +179,12 @@ + + + json + low + + @@ -187,6 +202,8 @@ @@ -213,8 +230,9 @@ - @@ -232,6 +250,11 @@ + + + + + @@ -296,31 +319,38 @@ - + + + + + + + + - - + - + - - - + + + - + @@ -331,11 +361,11 @@ - + @@ -343,14 +373,14 @@ - + - - + + @@ -372,9 +402,6 @@ - - - @@ -384,13 +411,6 @@ - - - - - - - @@ -398,13 +418,6 @@ - - - - - - - @@ -522,30 +535,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -585,9 +574,6 @@ - - - @@ -615,13 +601,6 @@ - - - - - - - @@ -631,7 +610,7 @@ - + @@ -643,24 +622,31 @@ - + - - + + - + - - + + - + - - + + + + + + + + + @@ -671,19 +657,60 @@ - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/__tests__/EntriesClient.test.js b/__tests__/EntriesClient.test.js index a9089cf..8bc90e2 100644 --- a/__tests__/EntriesClient.test.js +++ b/__tests__/EntriesClient.test.js @@ -67,4 +67,16 @@ describe( 'Entries client', () => { }); }); + describe( 'deleting entries', () => { + + + it( 'Deletes a single entry', () => { + fetch.mockResponseOnce(new Response(JSON.stringify({}))); + const client = new EntriesClient('https://hiroy.club/wp-json/cf-api/v1'); + client.deleteEntry(formId,26).then( response => { + expect( response ).toEqual({}); + },error => {}); + expect(fetch.mock.calls).toHaveLength(1); + }); + }); }); \ No newline at end of file diff --git a/docs/file/src/EntriesClient.js.html b/docs/file/src/EntriesClient.js.html index 575cc74..0178fcb 100644 --- a/docs/file/src/EntriesClient.js.html +++ b/docs/file/src/EntriesClient.js.html @@ -77,6 +77,9 @@ }, this.getEntryEndpoint(formId, entryId)); } + d + + /** * The endpoint URI for a collection of entries for one form. diff --git a/docs/index.json b/docs/index.json index bfd138c..dfc7399 100644 --- a/docs/index.json +++ b/docs/index.json @@ -1199,7 +1199,7 @@ "__docId__": 65, "kind": "file", "name": "src/EntriesClient.js", - "content": "//@flow\nimport {WpClient} from './WpClient';\n\n/**\n * Client for accessing Caldera Forms entry data via Caldera Forms REST API\n */\nexport class EntriesClient extends WpClient {\n\n\t/**\n\t * Get one page of entries for a form\n\t *\n\t * @param {String} formId ID of form to get entries for.\n\t * @param {number} page Optional. Which page of entries to get. Default is 1.\n\t * @return {Promise}\n\t */\n\tgetEntries(formId: string, page: number = 1): Promise {\n\t\treturn this.reqGet({\n\t\t\tpage,\n\t\t\t_wpnonce: this.nonce\n\t\t}, this.getEntriesEndpoint(formId));\n\t}\n\n\t/**\n\t * Get a single entry of a form\n\t *\n\t * @param {String} formId ID of form to get entries for.\n\t * @param {String} entryId ID of entry to find.\n\t * @return {Promise}\n\t */\n\tgetEntry(formId: string, entryId: number): Promise {\n\t\treturn this.reqGet({\n\t\t\t_wpnonce: this.nonce\n\t\t}, this.getEntryEndpoint(formId, entryId));\n\t}\n\n\t/**\n\t * The endpoint URI for a collection of entries for one form.\n\n\t * @param {String} formId ID of form to get entries for.\n\t * @return {string}\n\t */\n\tgetEntriesEndpoint(formId: string): string {\n\t\treturn `entries/${formId}`;\n\t}\n\n\t/**\n\t * The endpoint URI for single entries\n\t *\n\t * @param {String} formId ID of form to get entries for.\n\t * @param {String} entryId ID of entry to find.\n\t * @return {string}\n\t */\n\tgetEntryEndpoint(formId: string, entryId: number): string {\n\t\treturn `${this.getEntriesEndpoint(formId)}/${entryId}`;\n\t}\n\n\n}", + "content": "//@flow\nimport {WpClient} from './WpClient';\n\n/**\n * Client for accessing Caldera Forms entry data via Caldera Forms REST API\n */\nexport class EntriesClient extends WpClient {\n\n\t/**\n\t * Get one page of entries for a form\n\t *\n\t * @param {String} formId ID of form to get entries for.\n\t * @param {number} page Optional. Which page of entries to get. Default is 1.\n\t * @return {Promise}\n\t */\n\tgetEntries(formId: string, page: number = 1): Promise {\n\t\treturn this.reqGet({\n\t\t\tpage,\n\t\t\t_wpnonce: this.nonce\n\t\t}, this.getEntriesEndpoint(formId));\n\t}\n\n\t/**\n\t * Get a single entry of a form\n\t *\n\t * @param {String} formId ID of form to get entries for.\n\t * @param {String} entryId ID of entry to find.\n\t * @return {Promise}\n\t */\n\tgetEntry(formId: string, entryId: number): Promise {\n\t\treturn this.reqGet({\n\t\t\t_wpnonce: this.nonce\n\t\t}, this.getEntryEndpoint(formId, entryId));\n\t}\n\n\td\n\n\n\t/**\n\t * The endpoint URI for a collection of entries for one form.\n\n\t * @param {String} formId ID of form to get entries for.\n\t * @return {string}\n\t */\n\tgetEntriesEndpoint(formId: string): string {\n\t\treturn `entries/${formId}`;\n\t}\n\n\t/**\n\t * The endpoint URI for single entries\n\t *\n\t * @param {String} formId ID of form to get entries for.\n\t * @param {String} entryId ID of entry to find.\n\t * @return {string}\n\t */\n\tgetEntryEndpoint(formId: string, entryId: number): string {\n\t\treturn `${this.getEntriesEndpoint(formId)}/${entryId}`;\n\t}\n\n\n}", "static": true, "longname": "/Users/josh/caldera-js/api-client/src/EntriesClient.js", "access": "public", @@ -1937,7 +1937,7 @@ }, { "kind": "packageJSON", - "content": "{\n \"name\": \"@caldera-labs/api-client\",\n \"version\": \"0.4.1\",\n \"description\": \"API client for Caldera Forms and Caldera Forms Pro\",\n \"main\": \"./dist/index.js\",\n \"scripts\": {\n \"build\": \"npm run build:pre && npm run build:compile && npm run build:post\",\n \"build:pre\": \"npm run test:once\",\n \"build:compile\": \"./node_modules/.bin/babel -d dist src/\",\n \"build:post\": \"npm run compress && npm run document\",\n \"compress\": \" uglifyjs-folder dist -c -m --source-map -o dist/index.min.js\",\n \"test\": \"jest --watch\",\n \"test:once\": \"jest\",\n \"test:coverage\": \"jest --coverage\",\n \"coveralls\": \"cat ./coverage/lcov.info | node node_modules/.bin/coveralls\",\n \"prepublish\": \"npm run build\",\n \"document\": \"./node_modules/.bin/esdoc\",\n \"lint\": \"eslint src/**, __tests__/**\",\n \"lint:watch\": \"esw src/**, __tests__/** --fix --watch\",\n \"lint:fix\": \"eslint src/**, __tests__/** --fix \",\n \"flow:watch\": \"flow-watch\",\n \"flow\": \"flow \",\n \"release\": \"npm run release:patch\",\n \"release:minor\": \"npm version minor -m \\\"version %s\\\" && npm publish\",\n \"release:patch\": \"npm version patch -m \\\"version %s\\\" && npm publish\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/calderawp/caldera-api-client.git\"\n },\n \"keywords\": [\n \"es6\",\n \"boilerplate\",\n \"npm\",\n \"module\",\n \"npm-module\"\n ],\n \"author\": \"Josh Pollock \",\n \"license\": \"GPL-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/calderawp/caldera-api-client/issues\"\n },\n \"homepage\": \"https://calderalabs.org/caldera-api-client/\",\n \"dependencies\": {},\n \"devDependencies\": {\n \"babel-eslint\": \"^8.2.3\",\n \"babel-preset-flow\": \"^6.23.0\",\n \"eslint\": \"^4.19.1\",\n \"eslint-config-airbnb\": \"^16.1.0\",\n \"eslint-plugin-flowtype\": \"^2.49.3\",\n \"eslint-plugin-import\": \"^2.12.0\",\n \"eslint-plugin-jsx-a11y\": \"^6.0.3\",\n \"eslint-plugin-react\": \"^7.9.1\",\n \"eslint-watch\": \"^3.1.5\",\n \"flow-bin\": \"^0.74.0\",\n \"flow-watch\": \"^1.1.3\",\n \"jest-fetch-mock\": \"^1.6.3\",\n \"locutus\": \"^2.0.9\",\n \"uglify-js\": \"^3.4.0\",\n \"uglifyjs-folder\": \"^1.5.1\",\n \"babel-cli\": \"^6.26.0\",\n \"babel-jest\": \"^20.0.3\",\n \"babel-preset-es2015\": \"^6.24.1\",\n \"babel-preset-stage-2\": \"^6.24.1\",\n \"coveralls\": \"^2.13.3\",\n \"esdoc\": \"^1.1.0\",\n \"esdoc-flow-plugin\": \"^1.0.0\",\n \"esdoc-jsx-plugin\": \"^1.0.0\",\n \"esdoc-standard-plugin\": \"^1.0.0\",\n \"eslint-plugin-jest\": \"^21.17.0\",\n \"jest-cli\": \"^23.2\",\n \"istanbul\": \"^0.4.5\",\n \"istanbul-api\": \"1.2.2\",\n \"istanbul-reports\": \"1.1.4\"\n },\n \"standard\": {\n \"plugins\": [\n \"flowtype\"\n ],\n \"parser\": \"babel-eslint\"\n },\n \"jest\": {\n \"collectCoverageFrom\": [\n \"src/**/*.js\"\n ],\n \"coverageThreshold\": {\n \"global\": {\n \"statements\": 85,\n \"branches\": 75,\n \"functions\": 85,\n \"lines\": 85\n }\n },\n \"automock\": false,\n \"setupFiles\": [\n \"./setupJest.js\"\n ]\n }\n}\n", + "content": "{\n \"name\": \"@caldera-labs/api-client\",\n \"version\": \"0.5.0\",\n \"description\": \"API client for Caldera Forms and Caldera Forms Pro\",\n \"main\": \"./dist/index.js\",\n \"scripts\": {\n \"build\": \"npm run build:pre && npm run build:compile && npm run build:post\",\n \"build:pre\": \"npm run test:once\",\n \"build:compile\": \"./node_modules/.bin/babel -d dist src/\",\n \"build:post\": \"npm run compress && npm run document\",\n \"compress\": \" uglifyjs-folder dist -c -m --source-map -o dist/index.min.js\",\n \"test\": \"jest --watch\",\n \"test:once\": \"jest\",\n \"test:coverage\": \"jest --coverage\",\n \"coveralls\": \"cat ./coverage/lcov.info | node node_modules/.bin/coveralls\",\n \"prepublish\": \"npm run build\",\n \"document\": \"./node_modules/.bin/esdoc\",\n \"lint\": \"eslint src/**, __tests__/**\",\n \"lint:watch\": \"esw src/**, __tests__/** --fix --watch\",\n \"lint:fix\": \"eslint src/**, __tests__/** --fix \",\n \"flow:watch\": \"flow-watch\",\n \"flow\": \"flow \",\n \"release\": \"npm run release:patch\",\n \"release:minor\": \"npm version minor -m \\\"version %s\\\" && npm publish\",\n \"release:patch\": \"npm version patch -m \\\"version %s\\\" && npm publish\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/calderawp/caldera-api-client.git\"\n },\n \"keywords\": [\n \"es6\",\n \"boilerplate\",\n \"npm\",\n \"module\",\n \"npm-module\"\n ],\n \"author\": \"Josh Pollock \",\n \"license\": \"GPL-2.0\",\n \"bugs\": {\n \"url\": \"https://github.com/calderawp/caldera-api-client/issues\"\n },\n \"homepage\": \"https://calderalabs.org/caldera-api-client/\",\n \"dependencies\": {},\n \"devDependencies\": {\n \"babel-eslint\": \"^8.2.3\",\n \"babel-preset-flow\": \"^6.23.0\",\n \"eslint\": \"^4.19.1\",\n \"eslint-config-airbnb\": \"^16.1.0\",\n \"eslint-plugin-flowtype\": \"^2.49.3\",\n \"eslint-plugin-import\": \"^2.12.0\",\n \"eslint-plugin-jsx-a11y\": \"^6.0.3\",\n \"eslint-plugin-react\": \"^7.9.1\",\n \"eslint-watch\": \"^3.1.5\",\n \"flow-bin\": \"^0.74.0\",\n \"flow-watch\": \"^1.1.3\",\n \"jest-fetch-mock\": \"^1.6.3\",\n \"locutus\": \"^2.0.9\",\n \"uglify-js\": \"^3.4.0\",\n \"uglifyjs-folder\": \"^1.5.1\",\n \"babel-cli\": \"^6.26.0\",\n \"babel-jest\": \"^20.0.3\",\n \"babel-preset-es2015\": \"^6.24.1\",\n \"babel-preset-stage-2\": \"^6.24.1\",\n \"coveralls\": \"^2.13.3\",\n \"esdoc\": \"^1.1.0\",\n \"esdoc-flow-plugin\": \"^1.0.0\",\n \"esdoc-jsx-plugin\": \"^1.0.0\",\n \"esdoc-standard-plugin\": \"^1.0.0\",\n \"eslint-plugin-jest\": \"^21.17.0\",\n \"jest-cli\": \"^23.2\",\n \"istanbul\": \"^0.4.5\",\n \"istanbul-api\": \"1.2.2\",\n \"istanbul-reports\": \"1.1.4\"\n },\n \"standard\": {\n \"plugins\": [\n \"flowtype\"\n ],\n \"parser\": \"babel-eslint\"\n },\n \"jest\": {\n \"collectCoverageFrom\": [\n \"src/**/*.js\"\n ],\n \"coverageThreshold\": {\n \"global\": {\n \"statements\": 85,\n \"branches\": 75,\n \"functions\": 85,\n \"lines\": 85\n }\n },\n \"automock\": false,\n \"setupFiles\": [\n \"./setupJest.js\"\n ]\n }\n}\n", "longname": "/Users/josh/caldera-js/api-client/package.json", "name": "package.json", "static": true, diff --git a/docs/source.html b/docs/source.html index 628cfb1..1cf16eb 100644 --- a/docs/source.html +++ b/docs/source.html @@ -68,9 +68,9 @@ src/EntriesClient.js EntriesClient 100 %5/5 - 1432 byte - 57 - 2018-07-02 12:51:36 (UTC) + 1437 byte + 60 + 2018-08-04 21:31:04 (UTC) src/GeneralSettingClient.js diff --git a/src/EntriesClient.js b/src/EntriesClient.js index fac128d..9bcc593 100644 --- a/src/EntriesClient.js +++ b/src/EntriesClient.js @@ -33,6 +33,19 @@ export class EntriesClient extends WpClient { }, this.getEntryEndpoint(formId, entryId)); } + /** + * Delete a single entry of a form + * + * @param {String} formId ID of form to get entries for. + * @param {String} entryId ID of entry to find. + * @return {Promise} + */ + deleteEntry( formId: string, entryId: number ): Promise { + return this.reqDelete(this.getEntryEndpoint( formId, entryId ) ); + } + + + /** * The endpoint URI for a collection of entries for one form. From 36aa4c8bd1847a4c3edf3c4a5055109db17beefe Mon Sep 17 00:00:00 2001 From: Josh Pollock Date: Wed, 22 Aug 2018 17:41:20 -0400 Subject: [PATCH 3/4] entry resend #12 --- .idea/workspace.xml | 188 ++++++++++++-------------------- __tests__/EntriesClient.test.js | 29 ++++- src/EntriesClient.js | 21 ++++ 3 files changed, 116 insertions(+), 122 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 466d4b0..cd365b5 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,9 +2,7 @@ - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + @@ -88,7 +38,16 @@ - + + + + + + + + + + @@ -110,7 +69,7 @@ - + @@ -118,8 +77,8 @@ - - + + @@ -159,15 +118,6 @@ - - - - - - - - - @@ -183,6 +133,7 @@ json low + delete @@ -202,6 +153,7 @@ - @@ -326,15 +278,15 @@ - + - - + @@ -343,9 +295,9 @@ - - - + + + @@ -584,30 +536,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -615,13 +543,6 @@ - - - - - - - @@ -632,7 +553,7 @@ - + @@ -657,13 +578,6 @@ - - - - - - - @@ -691,6 +605,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -698,17 +643,24 @@ + + + + + + + - - + + - - + + diff --git a/__tests__/EntriesClient.test.js b/__tests__/EntriesClient.test.js index 8bc90e2..d116b2e 100644 --- a/__tests__/EntriesClient.test.js +++ b/__tests__/EntriesClient.test.js @@ -42,6 +42,11 @@ describe( 'Entries client', () => { const client = new EntriesClient('https://hiroy.club/wp-json/cf-api/v1'); expect( client.getEntryEndpoint(formId,27)).toEqual('entries/CF5b197831b60ae/27'); }); + + it( 'Resend entry URL', () => { + const client = new EntriesClient('https://hiroy.club/wp-json/cf-api/v1'); + expect( client.getEntryResendEndpoint(formId,27)).toEqual('entries/CF5b197831b60ae/27/resend'); + }); }); describe( 'getting entries', () => { @@ -67,14 +72,30 @@ describe( 'Entries client', () => { }); }); - describe( 'deleting entries', () => { - + describe( 'Resending entries', () => { + it( 'Resends a single entry', () => { + const r = { + resent: true, + entry_id: '26' + }; + fetch.mockResponseOnce(new Response(JSON.stringify(r))); + const client = new EntriesClient('https://hiroy.club/wp-json/cf-api/v1'); + client.resendEntry(formId,26).then( response => { + expect( response ).toEqual({}); + },error => {}); + expect(fetch.mock.calls).toHaveLength(1); + }); + }); + describe( 'deleting entries', () => { it( 'Deletes a single entry', () => { - fetch.mockResponseOnce(new Response(JSON.stringify({}))); + const r = { + message: 'Entry Deleted' + }; + fetch.mockResponseOnce(new Response(JSON.stringify(r))); const client = new EntriesClient('https://hiroy.club/wp-json/cf-api/v1'); client.deleteEntry(formId,26).then( response => { - expect( response ).toEqual({}); + expect( response ).toEqual(r); },error => {}); expect(fetch.mock.calls).toHaveLength(1); }); diff --git a/src/EntriesClient.js b/src/EntriesClient.js index 9bcc593..2dac19c 100644 --- a/src/EntriesClient.js +++ b/src/EntriesClient.js @@ -44,6 +44,16 @@ export class EntriesClient extends WpClient { return this.reqDelete(this.getEntryEndpoint( formId, entryId ) ); } + /** + * Resent a single entry of a form + * + * @param {String} formId ID of form to get entries for. + * @param {String} entryId ID of entry to find. + * @return {Promise} + */ + resendEntry( formId: string, entryId: number ): Promise { + return this.reqPost(this.getEntryEndpoint( formId, entryId ) ); + } /** @@ -67,5 +77,16 @@ export class EntriesClient extends WpClient { return `${this.getEntriesEndpoint(formId)}/${entryId}`; } + /** + * The resend endpoint URI for single entries + * + * @param {String} formId ID of form to get entries for. + * @param {String} entryId ID of entry to find. + * @return {string} + */ + getEntryResendEndpoint(formId: string, entryId: number): string { + return `${this.getEntriesEndpoint(formId)}/${entryId}/resend`; + } + } \ No newline at end of file From 5b20a4e57beb699a959c52f78b417f8b70d91613 Mon Sep 17 00:00:00 2001 From: Josh Pollock Date: Wed, 22 Aug 2018 17:42:45 -0400 Subject: [PATCH 4/4] #12 delete all entries of a form --- .idea/workspace.xml | 23 +++++++++++------------ __tests__/EntriesClient.test.js | 12 ++++++++++++ src/EntriesClient.js | 10 ++++++++++ 3 files changed, 33 insertions(+), 12 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index cd365b5..aea2cdb 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,7 +2,6 @@ - - + - - + + @@ -41,8 +40,8 @@ - - + + @@ -278,12 +277,12 @@ - + - @@ -652,15 +651,15 @@ - - + + - - + + diff --git a/__tests__/EntriesClient.test.js b/__tests__/EntriesClient.test.js index d116b2e..597a858 100644 --- a/__tests__/EntriesClient.test.js +++ b/__tests__/EntriesClient.test.js @@ -99,5 +99,17 @@ describe( 'Entries client', () => { },error => {}); expect(fetch.mock.calls).toHaveLength(1); }); + + it( 'Deletes all entries of form', () => { + const r = { + message: 'All Entry Deleted' + }; + fetch.mockResponseOnce(new Response(JSON.stringify(r))); + const client = new EntriesClient('https://hiroy.club/wp-json/cf-api/v1'); + client.deleteEntries(formId).then( response => { + expect( response ).toEqual(r); + },error => {}); + expect(fetch.mock.calls).toHaveLength(1); + }); }); }); \ No newline at end of file diff --git a/src/EntriesClient.js b/src/EntriesClient.js index 2dac19c..8972e8b 100644 --- a/src/EntriesClient.js +++ b/src/EntriesClient.js @@ -44,6 +44,16 @@ export class EntriesClient extends WpClient { return this.reqDelete(this.getEntryEndpoint( formId, entryId ) ); } + /** + * Delete all entries of a form + * + * @param {String} formId ID of form to get entries for. + * @return {Promise} + */ + deleteEntries( formId: string ): Promise { + return this.reqDelete(this.getEntriesEndpoint( formId ) ); + } + /** * Resent a single entry of a form *