From be81de1ead77a59fd4db14c68046fff04d767935 Mon Sep 17 00:00:00 2001 From: Addison Date: Tue, 23 Apr 2024 09:14:52 +0900 Subject: [PATCH 1/6] Add boilerplate for zendesk integration --- integrations/zendesk/.eslintrc.json | 3 ++ integrations/zendesk/gitbook-manifest.yaml | 28 ++++++++++++++ integrations/zendesk/package.json | 17 +++++++++ integrations/zendesk/src/index.tsx | 44 ++++++++++++++++++++++ integrations/zendesk/src/script.raw.js | 14 +++++++ integrations/zendesk/tsconfig.json | 6 +++ 6 files changed, 112 insertions(+) create mode 100644 integrations/zendesk/.eslintrc.json create mode 100644 integrations/zendesk/gitbook-manifest.yaml create mode 100644 integrations/zendesk/package.json create mode 100644 integrations/zendesk/src/index.tsx create mode 100644 integrations/zendesk/src/script.raw.js create mode 100644 integrations/zendesk/tsconfig.json diff --git a/integrations/zendesk/.eslintrc.json b/integrations/zendesk/.eslintrc.json new file mode 100644 index 000000000..99e7792b9 --- /dev/null +++ b/integrations/zendesk/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["@gitbook/eslint-config/integration"] +} \ No newline at end of file diff --git a/integrations/zendesk/gitbook-manifest.yaml b/integrations/zendesk/gitbook-manifest.yaml new file mode 100644 index 000000000..364eaf86e --- /dev/null +++ b/integrations/zendesk/gitbook-manifest.yaml @@ -0,0 +1,28 @@ +name: zendesk +title: Zendesk +organization: d8f63b60-89ae-11e7-8574-5927d48c4877 +visibility: private +description: '' +summary: | + # Overview + https://support.zendesk.com/hc/en-us/articles/4593564000410-Setting-up-the-search-crawler +categories: + - analytics +script: src/index.tsx +scopes: + - space:script:inject + - site:script:inject +blocks: + - id: zendesk + title: Zendesk + description: My GitBook Integration +secrets: {} +configurations: + space: + properties: + site_tag: + type: string + title: Hotjar Site ID + description: Site Tag from Zendesk + required: + - site_tag diff --git a/integrations/zendesk/package.json b/integrations/zendesk/package.json new file mode 100644 index 000000000..b437f6e71 --- /dev/null +++ b/integrations/zendesk/package.json @@ -0,0 +1,17 @@ +{ + "name": "zendesk", + "private": true, + "scripts": { + "lint": "eslint --ext .js,.jsx,.ts,.tsx .", + "typecheck": "tsc --noEmit", + "publish": "gitbook publish ." + }, + "dependencies": { + "@gitbook/runtime": "*" + }, + "devDependencies": { + "@gitbook/cli": "^0.15.1", + "@gitbook/eslint-config": "*", + "@gitbook/tsconfig": "*" + } +} \ No newline at end of file diff --git a/integrations/zendesk/src/index.tsx b/integrations/zendesk/src/index.tsx new file mode 100644 index 000000000..09ae162b1 --- /dev/null +++ b/integrations/zendesk/src/index.tsx @@ -0,0 +1,44 @@ +import { + createIntegration, + FetchPublishScriptEventCallback, + RuntimeContext, + RuntimeEnvironment, +} from '@gitbook/runtime'; + +import script from './script.raw.js'; + +type ZendeskRuntimeContext = RuntimeContext< + RuntimeEnvironment< + {}, + { + site_tag?: string; + } + > +>; + +export const handleFetchEvent: FetchPublishScriptEventCallback = async ( + event, + { environment }: ZendeskRuntimeContext +) => { + const trackingId = + environment.siteInstallation?.configuration?.site_tag ?? + environment.spaceInstallation.configuration.site_tag; + if (!trackingId) { + throw new Error( + `The Zendesk site tag is missing from the configuration (ID: ${ + 'spaceId' in event ? event.spaceId : event.siteId + }).` + ); + } + + return new Response(script.replace('', trackingId), { + headers: { + 'Content-Type': 'application/javascript', + 'Cache-Control': 'max-age=604800', + }, + }); +}; + +export default createIntegration({ + fetch_published_script: handleFetchEvent, +}); diff --git a/integrations/zendesk/src/script.raw.js b/integrations/zendesk/src/script.raw.js new file mode 100644 index 000000000..48bfff6e6 --- /dev/null +++ b/integrations/zendesk/src/script.raw.js @@ -0,0 +1,14 @@ +(function (h, o, t, j, a, r) { + const trackingID = ''; + h.hj = + h.hj || + function () { + (h.hj.q = h.hj.q || []).push(arguments); + }; + h._hjSettings = { hjid: trackingID, hjsv: 6 }; + a = o.getElementsByTagName('head')[0]; + r = o.createElement('script'); + r.async = 1; + r.src = t + h._hjSettings.hjid + j + h._hjSettings.hjsv; + a.appendChild(r); +})(window, document, 'WIP', '.js?sv='); diff --git a/integrations/zendesk/tsconfig.json b/integrations/zendesk/tsconfig.json new file mode 100644 index 000000000..f2558f29c --- /dev/null +++ b/integrations/zendesk/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "@gitbook/tsconfig/integration.json", + "compilerOptions": { + "lib": ["ES6", "DOM"], + } +} \ No newline at end of file From 609c5186b147d4e0ffb1e72437207dcf28ec91ba Mon Sep 17 00:00:00 2001 From: Addison Date: Tue, 30 Apr 2024 16:59:24 +0900 Subject: [PATCH 2/6] Commit before publishing testing version --- integrations/zendesk/gitbook-manifest.yaml | 10 +++++++++- integrations/zendesk/src/script.raw.js | 22 +++++++++------------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/integrations/zendesk/gitbook-manifest.yaml b/integrations/zendesk/gitbook-manifest.yaml index 364eaf86e..282a2d972 100644 --- a/integrations/zendesk/gitbook-manifest.yaml +++ b/integrations/zendesk/gitbook-manifest.yaml @@ -1,7 +1,7 @@ name: zendesk title: Zendesk organization: d8f63b60-89ae-11e7-8574-5927d48c4877 -visibility: private +visibility: public description: '' summary: | # Overview @@ -26,3 +26,11 @@ configurations: description: Site Tag from Zendesk required: - site_tag + site: + properties: + site_tag: + type: string + title: Hotjar Site ID + description: Site Tag from Zendesk + required: + - site_tag diff --git a/integrations/zendesk/src/script.raw.js b/integrations/zendesk/src/script.raw.js index 48bfff6e6..b146409f9 100644 --- a/integrations/zendesk/src/script.raw.js +++ b/integrations/zendesk/src/script.raw.js @@ -1,14 +1,10 @@ -(function (h, o, t, j, a, r) { +(function (z, e, n) { const trackingID = ''; - h.hj = - h.hj || - function () { - (h.hj.q = h.hj.q || []).push(arguments); - }; - h._hjSettings = { hjid: trackingID, hjsv: 6 }; - a = o.getElementsByTagName('head')[0]; - r = o.createElement('script'); - r.async = 1; - r.src = t + h._hjSettings.hjid + j + h._hjSettings.hjsv; - a.appendChild(r); -})(window, document, 'WIP', '.js?sv='); + z._trackingID = trackingID; + + z = e.getElementsByTagName('head')[0]; + n = e.createElement('meta'); + n.name = 'zd-site-verification'; + n.content = `${z._trackingID}`; + z.appendChild(n); +})(window, document); From 53b11b988ff24a0dd1ab45ff6d1175b7c41a3942 Mon Sep 17 00:00:00 2001 From: Addison Date: Tue, 30 Apr 2024 18:00:43 +0900 Subject: [PATCH 3/6] Update manifest --- integrations/zendesk/gitbook-manifest.yaml | 4 ++-- integrations/zendesk/src/index.tsx | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/integrations/zendesk/gitbook-manifest.yaml b/integrations/zendesk/gitbook-manifest.yaml index 282a2d972..9c190af0c 100644 --- a/integrations/zendesk/gitbook-manifest.yaml +++ b/integrations/zendesk/gitbook-manifest.yaml @@ -22,7 +22,7 @@ configurations: properties: site_tag: type: string - title: Hotjar Site ID + title: Zendesk Site ID description: Site Tag from Zendesk required: - site_tag @@ -30,7 +30,7 @@ configurations: properties: site_tag: type: string - title: Hotjar Site ID + title: Zendesk Site ID description: Site Tag from Zendesk required: - site_tag diff --git a/integrations/zendesk/src/index.tsx b/integrations/zendesk/src/index.tsx index 09ae162b1..e1bec3839 100644 --- a/integrations/zendesk/src/index.tsx +++ b/integrations/zendesk/src/index.tsx @@ -22,7 +22,8 @@ export const handleFetchEvent: FetchPublishScriptEventCallback = async ( ) => { const trackingId = environment.siteInstallation?.configuration?.site_tag ?? - environment.spaceInstallation.configuration.site_tag; + environment.spaceInstallation.configuration.site_tag ?? + 'Site_Tag_Missing'; if (!trackingId) { throw new Error( `The Zendesk site tag is missing from the configuration (ID: ${ From 5ff04f901e639d4354c507a07fbe3f4dde9a4763 Mon Sep 17 00:00:00 2001 From: Addison Date: Thu, 9 May 2024 18:52:50 +0900 Subject: [PATCH 4/6] Working versino --- integrations/zendesk/src/index.tsx | 8 +++++++- integrations/zendesk/src/script.raw.js | 3 +-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/integrations/zendesk/src/index.tsx b/integrations/zendesk/src/index.tsx index e1bec3839..c67567f18 100644 --- a/integrations/zendesk/src/index.tsx +++ b/integrations/zendesk/src/index.tsx @@ -21,9 +21,15 @@ export const handleFetchEvent: FetchPublishScriptEventCallback = async ( { environment }: ZendeskRuntimeContext ) => { const trackingId = + environment.spaceInstallation?.configuration?.site_tag ?? environment.siteInstallation?.configuration?.site_tag ?? - environment.spaceInstallation.configuration.site_tag ?? 'Site_Tag_Missing'; + + console.log( + 'SITE INSTALLATION VARIABLE', + environment.siteInstallation?.configuration?.site_tag + ); + if (!trackingId) { throw new Error( `The Zendesk site tag is missing from the configuration (ID: ${ diff --git a/integrations/zendesk/src/script.raw.js b/integrations/zendesk/src/script.raw.js index b146409f9..2cdb5d3cb 100644 --- a/integrations/zendesk/src/script.raw.js +++ b/integrations/zendesk/src/script.raw.js @@ -1,10 +1,9 @@ (function (z, e, n) { const trackingID = ''; - z._trackingID = trackingID; z = e.getElementsByTagName('head')[0]; n = e.createElement('meta'); n.name = 'zd-site-verification'; - n.content = `${z._trackingID}`; + n.content = `${trackingID}`; z.appendChild(n); })(window, document); From 71f0c03e4ea110dfc17e88607ad04b968a86b8c4 Mon Sep 17 00:00:00 2001 From: Addison Date: Fri, 29 Aug 2025 17:29:18 +0800 Subject: [PATCH 5/6] Update script --- integrations/zendesk/package.json | 4 ++-- integrations/zendesk/src/index.tsx | 18 +++--------------- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/integrations/zendesk/package.json b/integrations/zendesk/package.json index b437f6e71..4041ce7c7 100644 --- a/integrations/zendesk/package.json +++ b/integrations/zendesk/package.json @@ -10,8 +10,8 @@ "@gitbook/runtime": "*" }, "devDependencies": { - "@gitbook/cli": "^0.15.1", + "@gitbook/cli": "*", "@gitbook/eslint-config": "*", "@gitbook/tsconfig": "*" } -} \ No newline at end of file +} diff --git a/integrations/zendesk/src/index.tsx b/integrations/zendesk/src/index.tsx index c67567f18..f4abbf7d7 100644 --- a/integrations/zendesk/src/index.tsx +++ b/integrations/zendesk/src/index.tsx @@ -11,7 +11,7 @@ type ZendeskRuntimeContext = RuntimeContext< RuntimeEnvironment< {}, { - site_tag?: string; + site_tag: string; } > >; @@ -20,22 +20,10 @@ export const handleFetchEvent: FetchPublishScriptEventCallback = async ( event, { environment }: ZendeskRuntimeContext ) => { - const trackingId = - environment.spaceInstallation?.configuration?.site_tag ?? - environment.siteInstallation?.configuration?.site_tag ?? - 'Site_Tag_Missing'; - - console.log( - 'SITE INSTALLATION VARIABLE', - environment.siteInstallation?.configuration?.site_tag - ); + const trackingId = environment.siteInstallation?.configuration?.site_tag if (!trackingId) { - throw new Error( - `The Zendesk site tag is missing from the configuration (ID: ${ - 'spaceId' in event ? event.spaceId : event.siteId - }).` - ); + return } return new Response(script.replace('', trackingId), { From a58129051dab51a87fa35d3a9c188f3717902ed6 Mon Sep 17 00:00:00 2001 From: Addison Date: Fri, 29 Aug 2025 17:36:40 +0800 Subject: [PATCH 6/6] Update --- integrations/zendesk/gitbook-manifest.yaml | 17 +++-------------- integrations/zendesk/src/index.tsx | 4 ++-- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/integrations/zendesk/gitbook-manifest.yaml b/integrations/zendesk/gitbook-manifest.yaml index 9c190af0c..eff006b99 100644 --- a/integrations/zendesk/gitbook-manifest.yaml +++ b/integrations/zendesk/gitbook-manifest.yaml @@ -1,6 +1,6 @@ name: zendesk title: Zendesk -organization: d8f63b60-89ae-11e7-8574-5927d48c4877 +organization: gitbook visibility: public description: '' summary: | @@ -10,22 +10,10 @@ categories: - analytics script: src/index.tsx scopes: - - space:script:inject - site:script:inject -blocks: - - id: zendesk - title: Zendesk - description: My GitBook Integration + - site:script:cookies secrets: {} configurations: - space: - properties: - site_tag: - type: string - title: Zendesk Site ID - description: Site Tag from Zendesk - required: - - site_tag site: properties: site_tag: @@ -34,3 +22,4 @@ configurations: description: Site Tag from Zendesk required: - site_tag +target: site diff --git a/integrations/zendesk/src/index.tsx b/integrations/zendesk/src/index.tsx index f4abbf7d7..cf2ea2f20 100644 --- a/integrations/zendesk/src/index.tsx +++ b/integrations/zendesk/src/index.tsx @@ -11,7 +11,7 @@ type ZendeskRuntimeContext = RuntimeContext< RuntimeEnvironment< {}, { - site_tag: string; + site_tag?: string; } > >; @@ -26,7 +26,7 @@ export const handleFetchEvent: FetchPublishScriptEventCallback = async ( return } - return new Response(script.replace('', trackingId), { + return new Response((script as string).replace('', trackingId), { headers: { 'Content-Type': 'application/javascript', 'Cache-Control': 'max-age=604800',