File size: 3,280 Bytes
84c1942
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import _debug from '../../utils/debug';
import hash from '../hash';

export const ANONYMOUS_UID_KEY = 'codesandbox-anonymous-uid';

export const debug = _debug('cs:analytics');

export const global = (typeof window !== 'undefined' ? window : {}) as any;

export function getHashedUserId(userId: string) {
  return hash(userId);
}

export const WHITELISTED_VSCODE_EVENTS = [
  'codesandbox.preview.toggle',
  'workbench.action.splitEditor',
  'workbench.action.toggleSidebarVisibility',
  'codesandbox.sandbox.new',
  'workbench.action.files.saveAs',
  'editor.action.addCommentLine',
  'codesandbox.sandbox.exportZip',
  'codesandbox.preferences',
  'codesandbox.sandbox.fork',
  'codesandbox.help.documentation',
  'codesandbox.help.github',
  'view.preview.flip',
  'codesandbox.search',
  'workbench.action.splitEditorLeft',
  'codesandbox.dashboard',
  'workbench.action.toggleCenteredLayout',
  'workbench.action.toggleMenuBar',
  'codesandbox.explore',
  'editor.action.toggleTabFocusMode',
  'workbench.action.splitEditorUp',
  'workbench.action.toggleSidebarPosition',
  'workbench.action.toggleActivityBarVisibility',
  'workbench.action.toggleStatusbarVisibility',
  'codesandbox.dependencies.add',
  'codesandbox.help.open-issue',
  'codesandbox.action.search',
  'workbench.action.editorLayoutThreeColumns',
  'breadcrumbs.toggleToOn',
  'workbench.action.openSettings2',
  'workbench.action.globalSettings',
  'workbench.action.editorLayoutTwoRows',
  'workbench.action.editorLayoutTwoByTwoGrid',
  'editor.action.showContextMenu',
  'toggleVim',
  'codesandbox.help.spectrum',
  'codesandbox.help.feedback',
  'workbench.action.webview.openDeveloperTools',
  'workbench.action.editorLayoutThreeRows',
  'codesandbox.help.twitter',
  'workbench.action.editorLayoutTwo',
  'codesandbox.preview.external',
  'notifications.showList',
  'workbench.action.editor.changeEncoding',
  'editor.action.indentationToTabs',
  'workbench.action.maximizeEditor',
  'editor.action.indentationToSpaces',
  'revealFilesInOS',
  'keybindings.editor.searchKeyBindings',
  'notifications.hideList',
  'workbench.action.terminal.focus',
  'workbench.action.console.focus',
  'workbench.action.openRecent',
  'code-runner.run',
];

const isDoNotTrackEnabled = () => {
  try {
    if (typeof window !== 'undefined') {
      let localStorageValue = true;
      try {
        localStorageValue =
          typeof localStorage !== 'undefined' &&
          localStorage.getItem('DO_NOT_TRACK_ENABLED') === 'true';
      } catch (e) {
        /* ignore */
      }

      return Boolean(
        // @ts-ignore
        global.doNotTrack === '1' ||
          // @ts-ignore
          global.navigator.doNotTrack === '1' ||
          // @ts-ignore
          global.navigator.msDoNotTrack === '1' ||
          localStorageValue ||
          process.env.NODE_ENV === 'development' ||
          process.env.STAGING
      );
    }

    return true;
  } catch (e) {
    return false;
  }
};

export const DO_NOT_TRACK_ENABLED = isDoNotTrackEnabled();

export const isAllowedEvent = (eventName, secondArg) => {
  try {
    if (eventName === 'VSCode - workbenchActionExecuted') {
      return WHITELISTED_VSCODE_EVENTS.includes(secondArg.id);
    }
    return true;
  } catch (e) {
    return true;
  }
};