-
Notifications
You must be signed in to change notification settings - Fork 55
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
b324f03
commit 6623cef
Showing
7 changed files
with
174 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"extends": ["@gitbook/eslint-config/integration"] | ||
} |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
name: mixpanel | ||
title: Mixpanel | ||
icon: ./assets/icon.png | ||
#previewImages: | ||
# - ./assets/hotjar-preview.png | ||
description: Plug your GitBook site to your Mixpanel account. | ||
visibility: public | ||
script: ./src/index.ts | ||
# The following scope(s) are available only to GitBook Staff | ||
# See https://developer.gitbook.com/integrations/configurations#scopes | ||
scopes: | ||
- space:script:inject | ||
organization: w45sBUBc1JWE1ktYkQfI #d8f63b60-89ae-11e7-8574-5927d48c4877 | ||
contentSecurityPolicy: | ||
script-src: cdn.mxpnl.com; | ||
summary: | | ||
# Overview | ||
This integration allows to add the Mixpanel tracker on your published GitBook site. | ||
# How it works | ||
The integration injects the Mixpanel script on your page, using the configured project token, | ||
so that you can get analytics information from your GitBook site directly inside of Mixpanel. | ||
# Configure | ||
Install the integration on the GitBook space of your choice. | ||
Locate the Mixpanel Project Token you want to use, which is available in Mixpanel's Project Settings section | ||
categories: | ||
- analytics | ||
configurations: | ||
space: | ||
properties: | ||
project_token: | ||
type: string | ||
title: Project Token | ||
description: Available in Mixpanel's Project Settings section | ||
required: | ||
- project_token |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
{ | ||
"name": "@gitbook/integration-mixpanel", | ||
"version": "0.0.1", | ||
"private": true, | ||
"dependencies": { | ||
"@gitbook/api": "*", | ||
"@gitbook/runtime": "*" | ||
}, | ||
"devDependencies": { | ||
"@gitbook/cli": "*" | ||
}, | ||
"scripts": { | ||
"lint": "eslint ./src/**/*.ts", | ||
"typecheck": "tsc --noEmit", | ||
"publish-integrations-staging": "gitbook publish .", | ||
"publish-integrations": "gitbook publish ." | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
import { | ||
createIntegration, | ||
FetchPublishScriptEventCallback, | ||
RuntimeContext, | ||
RuntimeEnvironment, | ||
} from '@gitbook/runtime'; | ||
|
||
import script from './script.raw.js'; | ||
|
||
type MixpanelRuntimeContext = RuntimeContext< | ||
RuntimeEnvironment< | ||
{}, | ||
{ | ||
project_token?: string; | ||
} | ||
> | ||
>; | ||
|
||
export const handleFetchEvent: FetchPublishScriptEventCallback = async ( | ||
event, | ||
{ environment }: MixpanelRuntimeContext | ||
) => { | ||
const projectToken = environment.spaceInstallation.configuration.project_token; | ||
if (!projectToken) { | ||
throw new Error( | ||
`The Mixpanel Project Token is missing from the configuration (ID: ${event.spaceId}).` | ||
); | ||
} | ||
|
||
return new Response(script.replace('<TO_REPLACE>', projectToken), { | ||
headers: { | ||
'Content-Type': 'application/javascript', | ||
'Cache-Control': 'max-age=604800', | ||
}, | ||
}); | ||
}; | ||
|
||
export default createIntegration<MixpanelRuntimeContext>({ | ||
fetch_published_script: handleFetchEvent, | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
(function (f, b) { | ||
if (!b.__SV) { | ||
var e, g, i, h; | ||
window.mixpanel = b; | ||
b._i = []; | ||
b.init = function (e, f, c) { | ||
function g(a, d) { | ||
var b = d.split('.'); | ||
2 == b.length && ((a = a[b[0]]), (d = b[1])); | ||
a[d] = function () { | ||
a.push([d].concat(Array.prototype.slice.call(arguments, 0))); | ||
}; | ||
} | ||
var a = b; | ||
'undefined' !== typeof c ? (a = b[c] = []) : (c = 'mixpanel'); | ||
a.people = a.people || []; | ||
a.toString = function (a) { | ||
var d = 'mixpanel'; | ||
'mixpanel' !== c && (d += '.' + c); | ||
a || (d += ' (stub)'); | ||
return d; | ||
}; | ||
a.people.toString = function () { | ||
return a.toString(1) + '.people (stub)'; | ||
}; | ||
i = | ||
'disable time_event track track_pageview track_links track_forms track_with_groups add_group set_group remove_group register register_once alias unregister identify name_tag set_config reset opt_in_tracking opt_out_tracking has_opted_in_tracking has_opted_out_tracking clear_opt_in_out_tracking start_batch_senders people.set people.set_once people.unset people.increment people.append people.union people.track_charge people.clear_charges people.delete_user people.remove'.split( | ||
' ' | ||
); | ||
for (h = 0; h < i.length; h++) g(a, i[h]); | ||
var j = 'set set_once union unset remove delete'.split(' '); | ||
a.get_group = function () { | ||
function b(c) { | ||
d[c] = function () { | ||
call2_args = arguments; | ||
call2 = [c].concat(Array.prototype.slice.call(call2_args, 0)); | ||
a.push([e, call2]); | ||
}; | ||
} | ||
for ( | ||
var d = {}, | ||
e = ['get_group'].concat(Array.prototype.slice.call(arguments, 0)), | ||
c = 0; | ||
c < j.length; | ||
c++ | ||
) | ||
b(j[c]); | ||
return d; | ||
}; | ||
b._i.push([e, f, c]); | ||
}; | ||
b.__SV = 1.2; | ||
e = f.createElement('script'); | ||
e.type = 'text/javascript'; | ||
e.async = !0; | ||
e.src = | ||
'undefined' !== typeof MIXPANEL_CUSTOM_LIB_URL | ||
? MIXPANEL_CUSTOM_LIB_URL | ||
: 'file:' === f.location.protocol && | ||
'//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js'.match(/^\/\//) | ||
? 'https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js' | ||
: '//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js'; | ||
g = f.getElementsByTagName('script')[0]; | ||
g.parentNode.insertBefore(e, g); | ||
} | ||
})(document, window.mixpanel || []); | ||
|
||
window.mixpanel.init('<TO_REPLACE>', { | ||
debug: true, | ||
track_pageview: true, | ||
persistence: 'localStorage', | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"extends": "@gitbook/tsconfig/integration.json" | ||
} |