conzo 0.0.2

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.
Files changed (94) hide show
  1. package/dist/AppLauncher.d.ts +2 -0
  2. package/dist/AppLauncher.js +5 -0
  3. package/dist/ApplicationsCacheContext.d.ts +8 -0
  4. package/dist/ApplicationsCacheContext.js +14 -0
  5. package/dist/Bookstack.d.ts +1 -0
  6. package/dist/Bookstack.js +4 -0
  7. package/dist/ChatGPT.d.ts +2 -0
  8. package/dist/ChatGPT.js +5 -0
  9. package/dist/ConfirmStatus.d.ts +4 -0
  10. package/dist/ConfirmStatus.js +19 -0
  11. package/dist/GoogleChrome.d.ts +11 -0
  12. package/dist/GoogleChrome.js +34 -0
  13. package/dist/ReloadInstalledApplications.d.ts +1 -0
  14. package/dist/ReloadInstalledApplications.js +12 -0
  15. package/dist/Script.d.ts +8 -0
  16. package/dist/Script.js +17 -0
  17. package/dist/Search.d.ts +8 -0
  18. package/dist/Search.js +109 -0
  19. package/dist/SelectBox.d.ts +7 -0
  20. package/dist/SelectBox.js +41 -0
  21. package/dist/UI.d.ts +8 -0
  22. package/dist/UI.js +17 -0
  23. package/dist/ViewContext.d.ts +13 -0
  24. package/dist/ViewContext.js +17 -0
  25. package/dist/WebinarGeek.d.ts +2 -0
  26. package/dist/WebinarGeek.js +14 -0
  27. package/dist/Webinars.d.ts +2 -0
  28. package/dist/Webinars.js +15 -0
  29. package/dist/Wizard.d.ts +7 -0
  30. package/dist/Wizard.js +18 -0
  31. package/dist/YouTube.d.ts +2 -0
  32. package/dist/YouTube.js +5 -0
  33. package/dist/app.d.ts +2 -0
  34. package/dist/app.js +40 -0
  35. package/dist/apps/ApplicationsCacheContext.d.ts +8 -0
  36. package/dist/apps/ApplicationsCacheContext.js +14 -0
  37. package/dist/apps/RefreshApps.d.ts +1 -0
  38. package/dist/apps/RefreshApps.js +13 -0
  39. package/dist/apps/ReloadInstalledApplications.d.ts +1 -0
  40. package/dist/apps/ReloadInstalledApplications.js +12 -0
  41. package/dist/backup.d.ts +2 -0
  42. package/dist/backup.js +5 -0
  43. package/dist/cli.d.ts +2 -0
  44. package/dist/cli.js +57 -0
  45. package/dist/config/ConfigContext.d.ts +11 -0
  46. package/dist/config/ConfigContext.js +12 -0
  47. package/dist/config/ConfigNotFound.d.ts +2 -0
  48. package/dist/config/ConfigNotFound.js +11 -0
  49. package/dist/config/parseAndValidate.d.ts +2 -0
  50. package/dist/config/parseAndValidate.js +18 -0
  51. package/dist/config/types.d.ts +14 -0
  52. package/dist/config/types.js +1 -0
  53. package/dist/config/validator.d.ts +1 -0
  54. package/dist/config/validator.js +3 -0
  55. package/dist/debugging/helpers.d.ts +1 -0
  56. package/dist/debugging/helpers.js +9 -0
  57. package/dist/debugging/useDebugger.d.ts +5 -0
  58. package/dist/debugging/useDebugger.js +11 -0
  59. package/dist/debugging/useExitAppRightAway.d.ts +1 -0
  60. package/dist/debugging/useExitAppRightAway.js +9 -0
  61. package/dist/helpers/tryCatch.d.ts +9 -0
  62. package/dist/helpers/tryCatch.js +11 -0
  63. package/dist/helpers.d.ts +1 -0
  64. package/dist/helpers.js +9 -0
  65. package/dist/items/items.d.ts +2 -0
  66. package/dist/items/items.js +42 -0
  67. package/dist/items/my-items.EXAMPLE.d.ts +1 -0
  68. package/dist/items/my-items.EXAMPLE.js +1 -0
  69. package/dist/items/my-items.d.ts +6 -0
  70. package/dist/items/my-items.js +62 -0
  71. package/dist/items/types.d.ts +14 -0
  72. package/dist/items/types.js +1 -0
  73. package/dist/items.d.ts +15 -0
  74. package/dist/items.js +94 -0
  75. package/dist/nmbrs.d.ts +1 -0
  76. package/dist/nmbrs.js +4 -0
  77. package/dist/passbolt.d.ts +1 -0
  78. package/dist/passbolt.js +4 -0
  79. package/dist/private/my-apps.d.ts +1 -0
  80. package/dist/private/my-apps.js +35 -0
  81. package/dist/private/my-chrome-profiles.EXAMPLE.d.ts +4 -0
  82. package/dist/private/my-chrome-profiles.EXAMPLE.js +12 -0
  83. package/dist/private/my-chrome-profiles.d.ts +4 -0
  84. package/dist/private/my-chrome-profiles.js +5 -0
  85. package/dist/private/my-items.EXAMPLE.d.ts +6 -0
  86. package/dist/private/my-items.EXAMPLE.js +47 -0
  87. package/dist/private/my-items.d.ts +5 -0
  88. package/dist/private/my-items.js +68 -0
  89. package/dist/private/my-secrets.d.ts +5 -0
  90. package/dist/private/my-secrets.js +6 -0
  91. package/dist/wireguard-vpn.d.ts +1 -0
  92. package/dist/wireguard-vpn.js +10 -0
  93. package/package.json +34 -0
  94. package/readme.md +18 -0
package/dist/cli.js ADDED
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env node
2
+ import React from 'react';
3
+ import { Box, render, Text } from 'ink';
4
+ import meow from 'meow';
5
+ import App from './app.js';
6
+ import { ViewProvider } from './ViewContext.js';
7
+ import { ApplicationsCacheProvider } from './apps/ApplicationsCacheContext.js';
8
+ import { ConfigProvider } from './config/ConfigContext.js';
9
+ import { parseAndValidate } from './config/parseAndValidate.js';
10
+ import { tryCatch } from './helpers/tryCatch.js';
11
+ meow('conzo', {
12
+ importMeta: import.meta,
13
+ flags: {
14
+ name: {
15
+ type: 'string',
16
+ },
17
+ },
18
+ });
19
+ const config = {
20
+ apps: {
21
+ exclude: [
22
+ 'Alfred 5',
23
+ 'Google Docs',
24
+ 'Google Drive',
25
+ 'Google Sheets',
26
+ 'Google Slides',
27
+ 'Kit',
28
+ 'WireGuard',
29
+ 'Loopback',
30
+ 'Utilities',
31
+ ],
32
+ favorites: ['GitHub Desktop', 'Visual Studio Code'],
33
+ },
34
+ chromeProfiles: {
35
+ bouwepuntnl: 'Default',
36
+ WebinarGeek: 'Profile 1',
37
+ 'Intercom-development': 'Profile 2',
38
+ },
39
+ };
40
+ const Error = ({ error }) => (React.createElement(Box, { flexDirection: "column" },
41
+ React.createElement(Text, { color: "red" },
42
+ "Error: ",
43
+ error.message),
44
+ React.createElement(Text, null, error.stack)));
45
+ const getConzo = (userConfig) => () => {
46
+ const { value: config, error } = tryCatch(() => parseAndValidate(userConfig));
47
+ if (config)
48
+ return (React.createElement(ConfigProvider, { config: config },
49
+ React.createElement(ApplicationsCacheProvider, null,
50
+ React.createElement(ViewProvider, null,
51
+ React.createElement(App, null)))));
52
+ return React.createElement(Error, { error: error });
53
+ };
54
+ const Conzo = getConzo(config);
55
+ render(React.createElement(Conzo, null), {
56
+ exitOnCtrlC: true,
57
+ });
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { Config } from './types.js';
3
+ type ConfigContextType = Config;
4
+ declare const Config: React.Context<Config | null>;
5
+ type Props = {
6
+ children: React.ReactNode;
7
+ config: ConfigContextType;
8
+ };
9
+ declare function ConfigProvider({ children, config }: Props): React.JSX.Element;
10
+ declare function useConfig(): Config;
11
+ export { ConfigProvider, useConfig };
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ const Config = React.createContext(null);
3
+ function ConfigProvider({ children, config }) {
4
+ return React.createElement(Config.Provider, { value: config }, children);
5
+ }
6
+ function useConfig() {
7
+ const context = React.useContext(Config);
8
+ if (!context)
9
+ throw new Error('useConfig must be used within a ConfigProvider');
10
+ return context;
11
+ }
12
+ export { ConfigProvider, useConfig };
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const ConfigNotFound: () => React.JSX.Element;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { Text } from 'ink';
3
+ import { configPath } from './types.js';
4
+ export const ConfigNotFound = () => {
5
+ return (React.createElement(React.Fragment, null,
6
+ React.createElement(Text, { color: "red" }, "ERROR:"),
7
+ React.createElement(Text, null,
8
+ "Config file \"",
9
+ configPath,
10
+ "\" not found...")));
11
+ };
@@ -0,0 +1,2 @@
1
+ import { Config, UserConfig } from './types.js';
2
+ export declare const parseAndValidate: (userConfig?: UserConfig) => Config;
@@ -0,0 +1,18 @@
1
+ const defaultConfig = {
2
+ apps: {
3
+ exclude: [],
4
+ favorites: [],
5
+ },
6
+ chromeProfiles: false,
7
+ };
8
+ export const parseAndValidate = (userConfig) => {
9
+ if (!userConfig)
10
+ return defaultConfig;
11
+ return {
12
+ apps: {
13
+ exclude: userConfig.apps?.exclude || [],
14
+ favorites: userConfig.apps?.favorites || [],
15
+ },
16
+ chromeProfiles: userConfig.chromeProfiles || false,
17
+ };
18
+ };
@@ -0,0 +1,14 @@
1
+ export type UserConfig = {
2
+ apps?: {
3
+ exclude?: string[];
4
+ favorites?: string[];
5
+ };
6
+ chromeProfiles?: Record<string, string>;
7
+ };
8
+ export type Config = {
9
+ apps: {
10
+ exclude: string[];
11
+ favorites: string[];
12
+ };
13
+ chromeProfiles: Record<string, string> | false;
14
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export declare const isConfigFound: () => boolean;
@@ -0,0 +1,3 @@
1
+ import fs from 'fs';
2
+ import { configPath } from './types.js';
3
+ export const isConfigFound = () => fs.existsSync(configPath);
@@ -0,0 +1 @@
1
+ export declare const useExitRightAway: () => void;
@@ -0,0 +1,9 @@
1
+ import { useApp } from 'ink';
2
+ import { useEffect } from 'react';
3
+ // Helper for exiting the app right away, for debugging purposes
4
+ export const useExitRightAway = () => {
5
+ const { exit } = useApp();
6
+ useEffect(() => {
7
+ exit();
8
+ }, []);
9
+ };
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare const useDebugger: () => {
3
+ DebugInfo: () => React.JSX.Element;
4
+ addDebugInfo: (info: unknown) => void;
5
+ };
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ export const useDebugger = () => {
4
+ const [debugInfo, setDebugInfo] = React.useState([]);
5
+ const DebugInfo = React.useCallback(() => (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "red" }, debugInfo.map((info, index) => (React.createElement(Box, { key: index },
6
+ React.createElement(Text, null, info)))))), [debugInfo]);
7
+ const addDebugInfo = React.useCallback((info) => {
8
+ setDebugInfo((prevDebugInfo) => [...prevDebugInfo, JSON.stringify(info)]);
9
+ }, []);
10
+ return { DebugInfo, addDebugInfo };
11
+ };
@@ -0,0 +1 @@
1
+ export declare const useExitAppRightAway: () => void;
@@ -0,0 +1,9 @@
1
+ import { useApp } from 'ink';
2
+ import { useEffect } from 'react';
3
+ // Helper for exiting the app right away, for debugging purposes, for example when debugging styling issues.
4
+ export const useExitAppRightAway = () => {
5
+ const { exit } = useApp();
6
+ useEffect(() => {
7
+ exit();
8
+ }, []);
9
+ };
@@ -0,0 +1,9 @@
1
+ type Result<T> = {
2
+ value: T;
3
+ error: null;
4
+ } | {
5
+ value: null;
6
+ error: Error;
7
+ };
8
+ export declare function tryCatch<T>(fn: () => T): Result<T>;
9
+ export {};
@@ -0,0 +1,11 @@
1
+ export function tryCatch(fn) {
2
+ try {
3
+ return { value: fn(), error: null };
4
+ }
5
+ catch (error) {
6
+ return {
7
+ value: null,
8
+ error: error instanceof Error ? error : new Error(String(error)),
9
+ };
10
+ }
11
+ }
@@ -0,0 +1 @@
1
+ export declare const useExitRightAway: () => void;
@@ -0,0 +1,9 @@
1
+ import { useApp } from 'ink';
2
+ import { useEffect } from 'react';
3
+ // Helper for exiting the app right away, for debugging purposes
4
+ export const useExitRightAway = () => {
5
+ const { exit } = useApp();
6
+ useEffect(() => {
7
+ exit();
8
+ }, []);
9
+ };
@@ -0,0 +1,2 @@
1
+ import { Item } from './types.js';
2
+ export declare const getItems: (refresh?: boolean) => Promise<Item[]>;
@@ -0,0 +1,42 @@
1
+ import childProcess from 'child_process';
2
+ import { RefreshApps as RefreshApps } from '../apps/RefreshApps.js';
3
+ // Fetch installed apps using the `ls` command
4
+ const getApps = () => {
5
+ return new Promise((resolve, reject) => {
6
+ const ls = childProcess.spawn('ls', ['/Applications']);
7
+ const items = [];
8
+ ls.stdout.on('data', (data) => {
9
+ const apps = data
10
+ .toString()
11
+ .split('\n')
12
+ .map((app) => app.replace('.app', '').trim())
13
+ .filter((app) => app !== '');
14
+ items.push(...apps.map((app) => ({
15
+ name: app,
16
+ key: app,
17
+ type: 'app',
18
+ isFavorite: false,
19
+ })));
20
+ });
21
+ ls.on('close', () => resolve(items));
22
+ ls.on('error', (error) => reject(error));
23
+ });
24
+ };
25
+ // Synchronous function to fetch wizard items
26
+ const getWizardItems = () => [
27
+ {
28
+ name: 'Refresh apps',
29
+ type: 'wizard',
30
+ component: RefreshApps,
31
+ },
32
+ ];
33
+ // Main function to get items, with caching support for apps only
34
+ export const getItems = (() => {
35
+ let cachedApps = null;
36
+ return async (refresh = false) => {
37
+ if (!cachedApps || refresh)
38
+ cachedApps = await getApps();
39
+ const wizardItems = getWizardItems();
40
+ return [...cachedApps, ...wizardItems];
41
+ };
42
+ })();
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ import { AppItem, CommandItem, WizardItem } from './types.js';
2
+ export declare const apps: string[];
3
+ export declare const excludeApps: string[];
4
+ export declare const appItems: AppItem[];
5
+ export declare const wizardItems: WizardItem[];
6
+ export declare const commandItems: CommandItem[];
@@ -0,0 +1,62 @@
1
+ import { GoogleChrome, openChrome } from '../GoogleChrome.js';
2
+ import { Webinars } from '../Webinars.js';
3
+ import { YouTube } from '../YouTube.js';
4
+ //TODO This list should be populated on application start
5
+ export const apps = [
6
+ 'Discord',
7
+ 'Firefox',
8
+ 'Google Chrome',
9
+ 'GitHub Desktop',
10
+ 'OBS',
11
+ 'Rectangle',
12
+ 'Safari',
13
+ 'Slack',
14
+ 'Spotify',
15
+ 'Visual Studio Code',
16
+ ];
17
+ export const excludeApps = [
18
+ // Add app names to exclude from displaying in this app.
19
+ // This is not very useful yet, but will be as soon as the app list is populated on application start.
20
+ 'Safari',
21
+ ];
22
+ export const appItems = apps
23
+ .filter((app) => !excludeApps.includes(app))
24
+ .map((app) => ({
25
+ name: app,
26
+ key: app,
27
+ type: 'app',
28
+ }));
29
+ export const wizardItems = [
30
+ {
31
+ name: 'Google Chrome',
32
+ type: 'wizard',
33
+ component: GoogleChrome,
34
+ },
35
+ {
36
+ name: 'YouTube',
37
+ type: 'wizard',
38
+ component: YouTube,
39
+ },
40
+ {
41
+ name: 'Webinars',
42
+ type: 'wizard',
43
+ component: Webinars,
44
+ },
45
+ ];
46
+ export const commandItems = [
47
+ {
48
+ name: 'BookStack',
49
+ type: 'command',
50
+ command: () => openChrome('WebinarGeek', 'https://bookstack.webinargeek.com'),
51
+ },
52
+ {
53
+ name: 'Nmbrs',
54
+ type: 'command',
55
+ command: () => openChrome('WebinarGeek', 'https://syfers.nmbrs.nl'),
56
+ },
57
+ {
58
+ name: 'Passbolt',
59
+ type: 'command',
60
+ command: () => openChrome('WebinarGeek', 'https://passbolt.webinargeek.com'),
61
+ },
62
+ ];
@@ -0,0 +1,14 @@
1
+ export type ItemType = 'app' | 'command' | 'wizard';
2
+ export type BaseItem<T extends ItemType> = {
3
+ name: string;
4
+ type: T;
5
+ isFavorite?: boolean;
6
+ };
7
+ export type AppItem = BaseItem<'app'>;
8
+ export type CommandItem = BaseItem<'command'> & {
9
+ command: () => void;
10
+ };
11
+ export type WizardItem = BaseItem<'wizard'> & {
12
+ component: React.ComponentType;
13
+ };
14
+ export type Item = AppItem | CommandItem | WizardItem;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ type ItemType = 'app' | 'command' | 'wizard';
2
+ type BaseItem<T extends ItemType> = {
3
+ name: string;
4
+ type: T;
5
+ };
6
+ type AppItem = BaseItem<'app'>;
7
+ type CommandItem = BaseItem<'command'> & {
8
+ command: () => void;
9
+ };
10
+ export type WizardItem = BaseItem<'wizard'> & {
11
+ component: React.ComponentType;
12
+ };
13
+ export type Item = AppItem | CommandItem | WizardItem;
14
+ export declare const items: Item[];
15
+ export {};
package/dist/items.js ADDED
@@ -0,0 +1,94 @@
1
+ import { bookstack } from './bookstack.js';
2
+ import { GoogleChrome } from './GoogleChrome.js';
3
+ import { nmbrs } from './nmbrs.js';
4
+ import { passbolt } from './passbolt.js';
5
+ import { Webinars } from './Webinars.js';
6
+ import { YouTube } from './YouTube.js';
7
+ const apps = [
8
+ 'Alfred 5',
9
+ 'BrowserStackLocal',
10
+ 'Discord',
11
+ 'DisplayLink Manager',
12
+ 'DuckDuckGo',
13
+ 'Firefox',
14
+ 'Google Chrome',
15
+ 'GitHub Desktop',
16
+ 'Google Docs',
17
+ 'Google Drive',
18
+ 'Google Sheets',
19
+ 'Google Slides',
20
+ 'Hammerspoon',
21
+ 'HTTPie',
22
+ 'Hyperkey',
23
+ 'Kit',
24
+ 'Loopback',
25
+ 'OBS',
26
+ 'Rectangle',
27
+ 'Safari',
28
+ 'ScreenFlow',
29
+ 'Shortcat',
30
+ 'Signal',
31
+ 'Slack',
32
+ 'Spotify',
33
+ 'Utilities',
34
+ 'Visual Studio Code',
35
+ 'VLC',
36
+ 'WhatsApp',
37
+ 'WireGuard',
38
+ 'Yubico Authenticator',
39
+ 'YubiKey Manager',
40
+ ];
41
+ const excludeApps = [
42
+ 'Alfred 5',
43
+ 'Google Chrome',
44
+ 'Google Docs',
45
+ 'Google Drive',
46
+ 'Google Sheets',
47
+ 'Google Slides',
48
+ 'Kit',
49
+ 'WireGuard',
50
+ 'Loopback',
51
+ 'Utilities',
52
+ ];
53
+ const appItems = apps
54
+ .filter((app) => !excludeApps.includes(app))
55
+ .map((app) => ({
56
+ name: app,
57
+ key: app,
58
+ type: 'app',
59
+ }));
60
+ const wizardItems = [
61
+ {
62
+ name: 'Google Chrome',
63
+ type: 'wizard',
64
+ component: GoogleChrome,
65
+ },
66
+ {
67
+ name: 'YouTube',
68
+ type: 'wizard',
69
+ component: YouTube,
70
+ },
71
+ {
72
+ name: 'Webinars',
73
+ type: 'wizard',
74
+ component: Webinars,
75
+ },
76
+ ];
77
+ const commandItems = [
78
+ {
79
+ name: 'BookStack',
80
+ type: 'command',
81
+ command: bookstack,
82
+ },
83
+ {
84
+ name: 'Nmbrs',
85
+ type: 'command',
86
+ command: nmbrs,
87
+ },
88
+ {
89
+ name: 'Passbolt',
90
+ type: 'command',
91
+ command: passbolt,
92
+ },
93
+ ];
94
+ export const items = [...appItems, ...wizardItems, ...commandItems].sort((a, b) => a.name.localeCompare(b.name));
@@ -0,0 +1 @@
1
+ export declare const nmbrs: () => void;
package/dist/nmbrs.js ADDED
@@ -0,0 +1,4 @@
1
+ import { openChrome } from './GoogleChrome.js';
2
+ export const nmbrs = () => {
3
+ openChrome('WebinarGeek', 'https://syfers.nmbrs.nl');
4
+ };
@@ -0,0 +1 @@
1
+ export declare const passbolt: () => void;
@@ -0,0 +1,4 @@
1
+ import { openChrome } from './GoogleChrome.js';
2
+ export const passbolt = () => {
3
+ openChrome('WebinarGeek', 'https://passbolt.webinargeek.com');
4
+ };
@@ -0,0 +1 @@
1
+ export declare const apps: string[];
@@ -0,0 +1,35 @@
1
+ //TODO This list should be populated on application start
2
+ export const apps = [
3
+ 'Alfred 5',
4
+ 'BrowserStackLocal',
5
+ 'Discord',
6
+ 'DisplayLink Manager',
7
+ 'DuckDuckGo',
8
+ 'Firefox',
9
+ 'Google Chrome',
10
+ 'GitHub Desktop',
11
+ 'Google Docs',
12
+ 'Google Drive',
13
+ 'Google Sheets',
14
+ 'Google Slides',
15
+ 'Hammerspoon',
16
+ 'HTTPie',
17
+ 'Hyperkey',
18
+ 'Kit',
19
+ 'Loopback',
20
+ 'OBS',
21
+ 'Rectangle',
22
+ 'Safari',
23
+ 'ScreenFlow',
24
+ 'Shortcat',
25
+ 'Signal',
26
+ 'Slack',
27
+ 'Spotify',
28
+ 'Utilities',
29
+ 'Visual Studio Code',
30
+ 'VLC',
31
+ 'WhatsApp',
32
+ 'WireGuard',
33
+ 'Yubico Authenticator',
34
+ 'YubiKey Manager',
35
+ ];
@@ -0,0 +1,4 @@
1
+ export declare const googleChromeProfiles: {
2
+ readonly mygoogleaccount: "Default";
3
+ readonly anothergoogleaccount: "Profile 1";
4
+ };
@@ -0,0 +1,12 @@
1
+ // Instructions:
2
+ // 1. Copy this file to src/private/my-chrome-profiles.ts
3
+ // 2. In the folder `/Users/bouwe/Library/Application Support/Google/Chrome`,
4
+ // you will find the profile folders, which are named `Default`, `Profile 1`, `Profile 2`, etc.
5
+ // 3. To determine which folder is which profile, checkout the profile pictures in these folders.
6
+ // 4. Replace the values with your own Google Chrome profiles.
7
+ // My Google Chrome profiles so that I can open Chrome with the desired profile.
8
+ export const googleChromeProfiles = {
9
+ mygoogleaccount: 'Default',
10
+ anothergoogleaccount: 'Profile 1',
11
+ //etc.
12
+ };
@@ -0,0 +1,4 @@
1
+ export declare const googleChromeProfiles: {
2
+ readonly WebinarGeek: "Default";
3
+ readonly bouwepuntnl: "Profile 1";
4
+ };
@@ -0,0 +1,5 @@
1
+ // My Google Chrome profiles so that I can open Chrome with the desired profile.
2
+ export const googleChromeProfiles = {
3
+ WebinarGeek: 'Default',
4
+ bouwepuntnl: 'Profile 1',
5
+ };
@@ -0,0 +1,6 @@
1
+ import { AppItem, CommandItem, WizardItem } from '../items/types.js';
2
+ export declare const apps: string[];
3
+ export declare const excludeApps: string[];
4
+ export declare const appItems: AppItem[];
5
+ export declare const wizardItems: WizardItem[];
6
+ export declare const commandItems: CommandItem[];
@@ -0,0 +1,47 @@
1
+ import { GoogleChrome, openChrome } from '../GoogleChrome.js';
2
+ import { YouTube } from '../YouTube.js';
3
+ //TODO This list should be populated on application start
4
+ export const apps = [
5
+ 'Discord',
6
+ 'Firefox',
7
+ 'Google Chrome',
8
+ 'GitHub Desktop',
9
+ 'OBS',
10
+ 'Rectangle',
11
+ 'Safari',
12
+ 'Slack',
13
+ 'Spotify',
14
+ 'Visual Studio Code',
15
+ //etc.
16
+ ];
17
+ export const excludeApps = [
18
+ // Add app names to exclude from displaying in this app.
19
+ // This is not very useful yet, but will be as soon as the app list is populated on application start.
20
+ 'Safari',
21
+ ];
22
+ export const appItems = apps
23
+ .filter((app) => !excludeApps.includes(app))
24
+ .map((app) => ({
25
+ name: app,
26
+ key: app,
27
+ type: 'app',
28
+ }));
29
+ export const wizardItems = [
30
+ {
31
+ name: 'Google Chrome',
32
+ type: 'wizard',
33
+ component: GoogleChrome,
34
+ },
35
+ {
36
+ name: 'YouTube',
37
+ type: 'wizard',
38
+ component: YouTube,
39
+ },
40
+ ];
41
+ export const commandItems = [
42
+ {
43
+ name: 'Some website',
44
+ type: 'command',
45
+ command: () => openChrome('WebinarGeek', 'https://some-website.com'),
46
+ },
47
+ ];
@@ -0,0 +1,5 @@
1
+ import { AppItem, CommandItem, WizardItem } from '../items/types.js';
2
+ export declare const excludeApps: string[];
3
+ export declare const appItems: AppItem[];
4
+ export declare const wizardItems: WizardItem[];
5
+ export declare const commandItems: CommandItem[];