commandbar 1.3.1 → 1.4.1
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.
- package/build/commandbar-js/src/index.d.ts +10 -0
- package/build/commandbar-js/src/index.js +1 -0
- package/build/commandbar-js/src/init.d.ts +17 -0
- package/build/commandbar-js/src/snippet.d.ts +1 -0
- package/build/internal/src/client/AddContextOptions.d.ts +57 -0
- package/build/internal/src/client/CommandBarClientSDK.d.ts +182 -0
- package/build/internal/src/client/CommandBarProxySDK.d.ts +48 -0
- package/build/internal/src/client/CommandBarSDK.d.ts +42 -0
- package/build/internal/src/client/EventHandler.d.ts +54 -0
- package/build/internal/src/client/Reporting.d.ts +1 -0
- package/build/internal/src/client/SDKConfig.d.ts +7 -0
- package/build/internal/src/client/SentryReporter.d.ts +41 -0
- package/build/internal/src/client/proxy.d.ts +15 -0
- package/build/internal/src/client/symbols.d.ts +27 -0
- package/build/internal/src/middleware/CommandFromClientV.d.ts +128 -0
- package/build/internal/src/middleware/ICommandFromClientType.d.ts +3 -0
- package/build/internal/src/middleware/IResourceSettings.d.ts +3 -0
- package/build/internal/src/middleware/OrganizationV.d.ts +42 -0
- package/build/internal/src/middleware/ResourceSettingsV.d.ts +33 -0
- package/build/internal/src/middleware/helpers/argument.d.ts +404 -0
- package/build/internal/src/middleware/helpers/commandTemplate.d.ts +129 -0
- package/build/internal/src/util/Disposable.d.ts +17 -0
- package/package.json +12 -14
- package/scripts/minify-snippet.ts +36 -0
- package/scripts/watch.ts +5 -0
- package/src/index.ts +11 -2
- package/src/init.ts +29 -88
- package/src/snippet.ts +57 -45
- package/tsconfig.json +5 -3
- package/webpack.config.js +8 -13
- package/yarn-error.log +20216 -0
- package/build/commandbar.d.ts +0 -67
- package/build/commandbar.d.ts.map +0 -1
- package/build/commandbar.js +0 -3
- package/build/commandbar.js.map +0 -1
- package/build/index.d.ts +0 -3
- package/build/index.d.ts.map +0 -1
- package/build/index.js +0 -27
- package/build/index.js.map +0 -1
- package/build/init.d.ts +0 -17
- package/build/init.d.ts.map +0 -1
- package/build/init.js +0 -116
- package/build/init.js.map +0 -1
- package/build/snippet.d.ts +0 -2
- package/build/snippet.d.ts.map +0 -1
- package/build/snippet.js +0 -55
- package/build/snippet.js.map +0 -1
- package/src/commandbar.ts +0 -76
@@ -0,0 +1,129 @@
|
|
1
|
+
/*******************************************************************************/
|
2
|
+
import * as t from 'io-ts';
|
3
|
+
/*******************************************************************************/
|
4
|
+
export declare const TemplateOptionsV: t.IntersectionC<[t.TypeC<{}>, t.PartialC<{
|
5
|
+
commandType: t.UnionC<[t.LiteralC<"independent">, t.LiteralC<"object">, t.LiteralC<"help">]>;
|
6
|
+
object: t.StringC;
|
7
|
+
hoverTooltip: t.BooleanC;
|
8
|
+
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
9
|
+
}>]>;
|
10
|
+
export declare const AdminTemplateV: t.IntersectionC<[t.TypeC<{
|
11
|
+
type: t.LiteralC<"admin">;
|
12
|
+
value: t.StringC;
|
13
|
+
}>, t.IntersectionC<[t.TypeC<{}>, t.PartialC<{
|
14
|
+
commandType: t.UnionC<[t.LiteralC<"independent">, t.LiteralC<"object">, t.LiteralC<"help">]>;
|
15
|
+
object: t.StringC;
|
16
|
+
hoverTooltip: t.BooleanC;
|
17
|
+
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
18
|
+
}>]>]>;
|
19
|
+
export declare const CallbackTemplateV: t.IntersectionC<[t.TypeC<{
|
20
|
+
type: t.LiteralC<"callback">;
|
21
|
+
value: t.StringC;
|
22
|
+
}>, t.IntersectionC<[t.TypeC<{}>, t.PartialC<{
|
23
|
+
commandType: t.UnionC<[t.LiteralC<"independent">, t.LiteralC<"object">, t.LiteralC<"help">]>;
|
24
|
+
object: t.StringC;
|
25
|
+
hoverTooltip: t.BooleanC;
|
26
|
+
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
27
|
+
}>]>]>;
|
28
|
+
export declare const LinkTemplateV: t.IntersectionC<[t.TypeC<{
|
29
|
+
type: t.LiteralC<"link">;
|
30
|
+
value: t.StringC;
|
31
|
+
}>, t.IntersectionC<[t.TypeC<{}>, t.PartialC<{
|
32
|
+
commandType: t.UnionC<[t.LiteralC<"independent">, t.LiteralC<"object">, t.LiteralC<"help">]>;
|
33
|
+
object: t.StringC;
|
34
|
+
hoverTooltip: t.BooleanC;
|
35
|
+
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
36
|
+
}>]>]>;
|
37
|
+
export declare const ClickTemplateV: t.IntersectionC<[t.TypeC<{
|
38
|
+
type: t.UnionC<[t.LiteralC<"click">, t.LiteralC<"clickBySelector">, t.LiteralC<"clickByXpath">]>;
|
39
|
+
value: t.ArrayC<t.StringC>;
|
40
|
+
}>, t.IntersectionC<[t.TypeC<{}>, t.PartialC<{
|
41
|
+
commandType: t.UnionC<[t.LiteralC<"independent">, t.LiteralC<"object">, t.LiteralC<"help">]>;
|
42
|
+
object: t.StringC;
|
43
|
+
hoverTooltip: t.BooleanC;
|
44
|
+
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
45
|
+
}>]>]>;
|
46
|
+
export declare const BuiltInTemplateV: t.IntersectionC<[t.TypeC<{
|
47
|
+
type: t.LiteralC<"builtin">;
|
48
|
+
value: t.StringC;
|
49
|
+
}>, t.IntersectionC<[t.TypeC<{}>, t.PartialC<{
|
50
|
+
commandType: t.UnionC<[t.LiteralC<"independent">, t.LiteralC<"object">, t.LiteralC<"help">]>;
|
51
|
+
object: t.StringC;
|
52
|
+
hoverTooltip: t.BooleanC;
|
53
|
+
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
54
|
+
}>]>]>;
|
55
|
+
export declare const WebhookTemplateV: t.IntersectionC<[t.TypeC<{
|
56
|
+
type: t.LiteralC<"webhook">;
|
57
|
+
value: t.StringC;
|
58
|
+
}>, t.IntersectionC<[t.TypeC<{}>, t.PartialC<{
|
59
|
+
commandType: t.UnionC<[t.LiteralC<"independent">, t.LiteralC<"object">, t.LiteralC<"help">]>;
|
60
|
+
object: t.StringC;
|
61
|
+
hoverTooltip: t.BooleanC;
|
62
|
+
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
63
|
+
}>]>]>;
|
64
|
+
export declare const ScriptTemplateV: t.IntersectionC<[t.TypeC<{
|
65
|
+
type: t.LiteralC<"script">;
|
66
|
+
value: t.StringC;
|
67
|
+
}>, t.IntersectionC<[t.TypeC<{}>, t.PartialC<{
|
68
|
+
commandType: t.UnionC<[t.LiteralC<"independent">, t.LiteralC<"object">, t.LiteralC<"help">]>;
|
69
|
+
object: t.StringC;
|
70
|
+
hoverTooltip: t.BooleanC;
|
71
|
+
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
72
|
+
}>]>]>;
|
73
|
+
export declare const TemplateV: t.UnionC<[t.IntersectionC<[t.TypeC<{
|
74
|
+
type: t.LiteralC<"admin">;
|
75
|
+
value: t.StringC;
|
76
|
+
}>, t.IntersectionC<[t.TypeC<{}>, t.PartialC<{
|
77
|
+
commandType: t.UnionC<[t.LiteralC<"independent">, t.LiteralC<"object">, t.LiteralC<"help">]>;
|
78
|
+
object: t.StringC;
|
79
|
+
hoverTooltip: t.BooleanC;
|
80
|
+
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
81
|
+
}>]>]>, t.IntersectionC<[t.TypeC<{
|
82
|
+
type: t.LiteralC<"callback">;
|
83
|
+
value: t.StringC;
|
84
|
+
}>, t.IntersectionC<[t.TypeC<{}>, t.PartialC<{
|
85
|
+
commandType: t.UnionC<[t.LiteralC<"independent">, t.LiteralC<"object">, t.LiteralC<"help">]>;
|
86
|
+
object: t.StringC;
|
87
|
+
hoverTooltip: t.BooleanC;
|
88
|
+
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
89
|
+
}>]>]>, t.IntersectionC<[t.TypeC<{
|
90
|
+
type: t.LiteralC<"link">;
|
91
|
+
value: t.StringC;
|
92
|
+
}>, t.IntersectionC<[t.TypeC<{}>, t.PartialC<{
|
93
|
+
commandType: t.UnionC<[t.LiteralC<"independent">, t.LiteralC<"object">, t.LiteralC<"help">]>;
|
94
|
+
object: t.StringC;
|
95
|
+
hoverTooltip: t.BooleanC;
|
96
|
+
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
97
|
+
}>]>]>, t.IntersectionC<[t.TypeC<{
|
98
|
+
type: t.UnionC<[t.LiteralC<"click">, t.LiteralC<"clickBySelector">, t.LiteralC<"clickByXpath">]>;
|
99
|
+
value: t.ArrayC<t.StringC>;
|
100
|
+
}>, t.IntersectionC<[t.TypeC<{}>, t.PartialC<{
|
101
|
+
commandType: t.UnionC<[t.LiteralC<"independent">, t.LiteralC<"object">, t.LiteralC<"help">]>;
|
102
|
+
object: t.StringC;
|
103
|
+
hoverTooltip: t.BooleanC;
|
104
|
+
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
105
|
+
}>]>]>, t.IntersectionC<[t.TypeC<{
|
106
|
+
type: t.LiteralC<"builtin">;
|
107
|
+
value: t.StringC;
|
108
|
+
}>, t.IntersectionC<[t.TypeC<{}>, t.PartialC<{
|
109
|
+
commandType: t.UnionC<[t.LiteralC<"independent">, t.LiteralC<"object">, t.LiteralC<"help">]>;
|
110
|
+
object: t.StringC;
|
111
|
+
hoverTooltip: t.BooleanC;
|
112
|
+
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
113
|
+
}>]>]>, t.IntersectionC<[t.TypeC<{
|
114
|
+
type: t.LiteralC<"webhook">;
|
115
|
+
value: t.StringC;
|
116
|
+
}>, t.IntersectionC<[t.TypeC<{}>, t.PartialC<{
|
117
|
+
commandType: t.UnionC<[t.LiteralC<"independent">, t.LiteralC<"object">, t.LiteralC<"help">]>;
|
118
|
+
object: t.StringC;
|
119
|
+
hoverTooltip: t.BooleanC;
|
120
|
+
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
121
|
+
}>]>]>, t.IntersectionC<[t.TypeC<{
|
122
|
+
type: t.LiteralC<"script">;
|
123
|
+
value: t.StringC;
|
124
|
+
}>, t.IntersectionC<[t.TypeC<{}>, t.PartialC<{
|
125
|
+
commandType: t.UnionC<[t.LiteralC<"independent">, t.LiteralC<"object">, t.LiteralC<"help">]>;
|
126
|
+
object: t.StringC;
|
127
|
+
hoverTooltip: t.BooleanC;
|
128
|
+
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
129
|
+
}>]>]>]>;
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import { _dispose, _disposed } from '../client/symbols';
|
2
|
+
export declare type PublicDisposable = {
|
3
|
+
dispose: VoidFunction;
|
4
|
+
_disposed?: boolean;
|
5
|
+
};
|
6
|
+
export declare type PrivateDisposable = {
|
7
|
+
[_dispose]: VoidFunction;
|
8
|
+
[_disposed]?: boolean;
|
9
|
+
};
|
10
|
+
export declare type Disposable = undefined | PublicDisposable | PrivateDisposable;
|
11
|
+
export declare const isDisposable: (x: unknown) => x is Disposable;
|
12
|
+
/**
|
13
|
+
* Determines if the provided value is "disposed". A value is considered "disposed" if it is an object with the
|
14
|
+
* _disposed property or symbol symbol set to true, or if the actual value is undefined.
|
15
|
+
*/
|
16
|
+
export declare const isDisposed: (x: unknown) => boolean;
|
17
|
+
export declare function dispose(x: Disposable): void;
|
package/package.json
CHANGED
@@ -1,27 +1,25 @@
|
|
1
1
|
{
|
2
2
|
"name": "commandbar",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.4.1",
|
4
4
|
"description": "Javascript Utility for CommandBar",
|
5
|
-
"main": "build/index.js",
|
6
|
-
"types": "build/index.d.
|
5
|
+
"main": "build/commandbar-js/src/index.js",
|
6
|
+
"types": "build/commandbar-js/src/index.d.ts",
|
7
7
|
"sideEffects": false,
|
8
8
|
"scripts": {
|
9
9
|
"clean": "rimraf build",
|
10
|
-
"build": "
|
10
|
+
"build": "webpack build && tsc",
|
11
|
+
"minify-snippet": "ts-node scripts/minify-snippet.ts",
|
11
12
|
"prepublishOnly": "yarn run clean && yarn run build",
|
12
13
|
"test": "jest --runInBand",
|
13
|
-
"test:watch": "jest --watch --verbose false --silent false"
|
14
|
+
"test:watch": "jest --watch --verbose false --silent false",
|
15
|
+
"watch": "scripts/watch.ts"
|
14
16
|
},
|
15
17
|
"keywords": [],
|
16
18
|
"author": "",
|
17
19
|
"license": "ISC",
|
18
|
-
"dependencies": {
|
19
|
-
|
20
|
-
"
|
21
|
-
|
22
|
-
|
23
|
-
"ts-jest": "^26.5.4",
|
24
|
-
"ts-node": "^9.1.1",
|
25
|
-
"typescript": "^3.9"
|
26
|
-
}
|
20
|
+
"dependencies": {
|
21
|
+
"fp-ts": "2.10.5",
|
22
|
+
"io-ts": "2.2.13"
|
23
|
+
},
|
24
|
+
"devDependencies": {}
|
27
25
|
}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#!/usr/bin/env ts-node
|
2
|
+
|
3
|
+
import * as ts from 'typescript';
|
4
|
+
import { snippet } from '../src/snippet';
|
5
|
+
import { minify } from 'terser';
|
6
|
+
|
7
|
+
const result = ts.transpileModule(snippet.toString(), {
|
8
|
+
compilerOptions: {
|
9
|
+
alwaysStrict: false,
|
10
|
+
declaration: false,
|
11
|
+
lib: ['DOM', 'ES2015'],
|
12
|
+
module: ts.ModuleKind.None,
|
13
|
+
noEmitOnError: true,
|
14
|
+
removeComments: true,
|
15
|
+
sourceMap: false,
|
16
|
+
strict: true,
|
17
|
+
target: ts.ScriptTarget.ES5,
|
18
|
+
},
|
19
|
+
});
|
20
|
+
|
21
|
+
if (result.diagnostics && result.diagnostics.length > 0) {
|
22
|
+
result.diagnostics?.forEach((d) => console.error(d.messageText));
|
23
|
+
process.exit(1);
|
24
|
+
}
|
25
|
+
|
26
|
+
const lines = result.outputText.split('\n');
|
27
|
+
const transpiled = ["var org = '<org_id>';"].concat(lines.slice(1, lines.length - 2)).join('\n');
|
28
|
+
|
29
|
+
minify(transpiled, { mangle: { toplevel: true } })
|
30
|
+
.then((result) => {
|
31
|
+
console.log(result.code);
|
32
|
+
})
|
33
|
+
.catch((err) => {
|
34
|
+
console.error(err);
|
35
|
+
process.exit(1);
|
36
|
+
});
|
package/scripts/watch.ts
ADDED
package/src/index.ts
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
-
import
|
1
|
+
import { CommandBarClientSDK } from '../../internal/src/client/CommandBarClientSDK';
|
2
2
|
|
3
|
-
export { init
|
3
|
+
export { default as init } from './init';
|
4
|
+
export { initProxySDK as initProxy } from '../../internal/src/client/proxy';
|
5
|
+
export { snippet } from './snippet';
|
6
|
+
export { CommandBarClientSDK };
|
7
|
+
|
8
|
+
declare global {
|
9
|
+
interface Window {
|
10
|
+
CommandBar: CommandBarClientSDK;
|
11
|
+
}
|
12
|
+
}
|
package/src/init.ts
CHANGED
@@ -1,67 +1,14 @@
|
|
1
|
-
import
|
2
|
-
import
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
interpolate(templates: { [k: string]: string }): string;
|
7
|
-
}
|
8
|
-
}
|
9
|
-
|
10
|
-
// eslint-disable-next-line no-extend-native
|
11
|
-
String.prototype.interpolate = function (params) {
|
12
|
-
const names = Object.keys(params);
|
13
|
-
const vals = Object.values(params);
|
14
|
-
// eslint-disable-next-line no-new-func
|
15
|
-
return new Function(...names, `return \`${this}\`;`)(...vals);
|
16
|
-
};
|
17
|
-
|
18
|
-
const prepareSnippet = (snippetString: string, templates: { [k: string]: string }) => {
|
19
|
-
let s = snippetString.interpolate(templates);
|
20
|
-
s = '!(' + s + ')();';
|
21
|
-
return s;
|
22
|
-
};
|
1
|
+
import 'proxy-polyfill';
|
2
|
+
import 'es6-object-assign/auto';
|
3
|
+
import 'es6-symbol/implement';
|
4
|
+
import { getProxySDK } from '../../internal/src/client/proxy';
|
5
|
+
import { _configuration } from '../../internal/src/client/symbols';
|
23
6
|
|
24
7
|
interface IInitOptions {
|
25
8
|
debug?: boolean;
|
26
|
-
version?: string;
|
27
9
|
}
|
28
10
|
|
29
|
-
|
30
|
-
q: unknown[];
|
31
|
-
};
|
32
|
-
|
33
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
34
|
-
const hasProp = <T extends object>(target: T, prop: string | number | symbol): prop is keyof T => prop in target;
|
35
|
-
|
36
|
-
export const initProxy = () => {
|
37
|
-
if (window.CommandBar === undefined || window.CommandBar._disposed === true) {
|
38
|
-
// @ts-expect-error: Temporarily ignore CommandBarProxy definition
|
39
|
-
let existingQueue = Array.isArray(window.CommandBar?.q) ? [...window.CommandBar.q] : [];
|
40
|
-
existingQueue = existingQueue.filter((item) => {
|
41
|
-
return item.length > 0 && item[0] !== 'dispose';
|
42
|
-
});
|
43
|
-
|
44
|
-
const cb: CommandBarProxyApi = {
|
45
|
-
q: existingQueue,
|
46
|
-
};
|
47
|
-
|
48
|
-
window.CommandBar = new Proxy(cb, {
|
49
|
-
get: function (_, prop) {
|
50
|
-
if (hasProp(cb, prop)) return cb[prop];
|
51
|
-
return function () {
|
52
|
-
// eslint-disable-next-line prefer-rest-params
|
53
|
-
const a = Array.prototype.slice.call(arguments);
|
54
|
-
a.unshift(prop);
|
55
|
-
cb.q.push(a);
|
56
|
-
};
|
57
|
-
},
|
58
|
-
}) as CommandBarClientAPI;
|
59
|
-
}
|
60
|
-
|
61
|
-
return window.CommandBar;
|
62
|
-
};
|
63
|
-
|
64
|
-
const getSrc = (org: string, version?: string) => {
|
11
|
+
const getSrc = (org: string) => {
|
65
12
|
let origin = 'https://api.commandbar.com';
|
66
13
|
const params = [];
|
67
14
|
|
@@ -69,6 +16,8 @@ const getSrc = (org: string, version?: string) => {
|
|
69
16
|
if (lc && lc.includes('local')) {
|
70
17
|
// for debugging purposes
|
71
18
|
origin = 'http://localhost:8000';
|
19
|
+
} else if (!lc && org === '10d7dc04') {
|
20
|
+
origin = 'https://api-cu.commandbar.com';
|
72
21
|
}
|
73
22
|
|
74
23
|
let src = origin + '/latest/' + org;
|
@@ -77,18 +26,20 @@ const getSrc = (org: string, version?: string) => {
|
|
77
26
|
params.push('lc=' + lc);
|
78
27
|
}
|
79
28
|
|
80
|
-
|
81
|
-
|
82
|
-
}
|
29
|
+
const version = 2;
|
30
|
+
params.push('version=' + version);
|
83
31
|
|
84
32
|
src = src + '?' + params.join('&');
|
85
33
|
return src;
|
86
34
|
};
|
87
35
|
|
88
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
89
|
-
let loadOrg = () => {};
|
90
|
-
|
91
36
|
const loadLatest = (org: string) => {
|
37
|
+
if (document.readyState !== 'complete') {
|
38
|
+
// NOTE: `once` is not supported by IE11 and this will cause a (minor!) memory leak.
|
39
|
+
window.addEventListener('load', loadLatest.bind(null, org), { capture: false, once: true });
|
40
|
+
return;
|
41
|
+
}
|
42
|
+
|
92
43
|
const src = getSrc(org);
|
93
44
|
|
94
45
|
const el = document.createElement('script');
|
@@ -96,12 +47,19 @@ const loadLatest = (org: string) => {
|
|
96
47
|
el.async = true;
|
97
48
|
el.src = src;
|
98
49
|
document.head.appendChild(el);
|
99
|
-
|
100
|
-
window.removeEventListener('load', loadOrg, false);
|
101
50
|
};
|
102
51
|
|
103
|
-
const DEFAULT_OPTS = { debug: false
|
104
|
-
|
52
|
+
const DEFAULT_OPTS = { debug: false };
|
53
|
+
|
54
|
+
/**
|
55
|
+
* Initializes CommandBar and injects the scripts required to load it into the <head> of the document. After calling
|
56
|
+
* this function it will be possible to access window.CommandBar and call the SDK methods, even if the scripts have not
|
57
|
+
* finished loading yet.
|
58
|
+
*
|
59
|
+
* @param {string} org Your organization ID, which can be found [here](https://app.commandbar.com/docs/getting-started/installation#option-b:-use-npm-or-yarn).
|
60
|
+
* @param {IInitOptions} [opts] Additional options to use for initialization: `debug` will enable additional logging
|
61
|
+
* output.
|
62
|
+
*/
|
105
63
|
const init = (org: string, opts: IInitOptions = DEFAULT_OPTS) => {
|
106
64
|
const config = { ...DEFAULT_OPTS, ...opts };
|
107
65
|
|
@@ -112,25 +70,8 @@ const init = (org: string, opts: IInitOptions = DEFAULT_OPTS) => {
|
|
112
70
|
|
113
71
|
config.debug && console.log('CommandBar init...');
|
114
72
|
|
115
|
-
|
116
|
-
|
117
|
-
loadOrg = () => loadLatest(org);
|
118
|
-
|
119
|
-
window.addEventListener('load', loadOrg, false);
|
120
|
-
};
|
121
|
-
|
122
|
-
export const presentSnippet = (org: string) => {
|
123
|
-
const snippetString = prepareSnippet(snippet.toString(), { org, version: '' });
|
124
|
-
const trimmedSnippet = snippetString
|
125
|
-
.split('\n')
|
126
|
-
.map((line: string) => {
|
127
|
-
return line.trim();
|
128
|
-
})
|
129
|
-
.join('');
|
130
|
-
|
131
|
-
return `<script>
|
132
|
-
${trimmedSnippet}
|
133
|
-
</script>`;
|
73
|
+
getProxySDK()[_configuration] = { uuid: org };
|
74
|
+
loadLatest(org);
|
134
75
|
};
|
135
76
|
|
136
77
|
export default init;
|
package/src/snippet.ts
CHANGED
@@ -1,57 +1,69 @@
|
|
1
|
-
/* eslint-disable prefer-rest-params */
|
2
1
|
/* eslint-disable no-template-curly-in-string */
|
3
|
-
|
4
|
-
|
5
|
-
export const snippet = () => {
|
6
|
-
const
|
7
|
-
const
|
8
|
-
cb.q = [];
|
9
|
-
window.CommandBar = new Proxy(cb, {
|
10
|
-
get: function (f, n) {
|
11
|
-
if (n in f) {
|
12
|
-
return f[n];
|
13
|
-
}
|
14
|
-
return function () {
|
15
|
-
const a = Array.prototype.slice.call(arguments);
|
16
|
-
a.unshift(n);
|
17
|
-
cb.q.push(a);
|
18
|
-
};
|
19
|
-
},
|
20
|
-
});
|
21
|
-
|
22
|
-
const load = function () {
|
23
|
-
let origin = 'https://api.commandbar.com';
|
24
|
-
const params = [];
|
2
|
+
/* eslint-disable prefer-rest-params */
|
3
|
+
/* eslint-disable @typescript-eslint/no-inferrable-types */
|
4
|
+
export const snippet = (org: string) => {
|
5
|
+
const polyfills = ['Object.assign', 'Symbol', 'Symbol.for'].join('%2C');
|
6
|
+
const w = window as unknown as Record<string, unknown>;
|
25
7
|
|
26
|
-
|
27
|
-
if (
|
28
|
-
|
29
|
-
origin = 'http://localhost:8000';
|
8
|
+
function loadScript(src: string, async = false) {
|
9
|
+
if (document.readyState !== 'complete') {
|
10
|
+
window.addEventListener('load', loadScript.bind(null, src, async), { capture: false, once: true });
|
30
11
|
}
|
12
|
+
const el = document.createElement('script');
|
13
|
+
el.type = 'text/javascript';
|
14
|
+
el.async = async;
|
15
|
+
el.src = src;
|
16
|
+
document.head.appendChild(el);
|
17
|
+
}
|
31
18
|
|
32
|
-
|
19
|
+
function bootstrap() {
|
20
|
+
if (w.CommandBar !== undefined) return;
|
21
|
+
delete w.__CommandBarBootstrap__;
|
33
22
|
|
34
|
-
|
35
|
-
|
36
|
-
|
23
|
+
const _configuration = Symbol.for('CommandBar::configuration');
|
24
|
+
const _orgConfig = Symbol.for('CommandBar::orgConfig');
|
25
|
+
const _disposed = Symbol.for('CommandBar::disposed');
|
26
|
+
const _isProxy = Symbol.for('CommandBar::isProxy');
|
27
|
+
const _queue = Symbol.for('CommandBar::queue');
|
28
|
+
const _unwrap = Symbol.for('CommandBar::unwrap');
|
29
|
+
const params = [];
|
30
|
+
const lc = localStorage.getItem('commandbar.lc');
|
31
|
+
const origin = lc && lc.includes('local') ? 'http://localhost:8000' : 'https://api.commandbar.com';
|
37
32
|
|
38
|
-
const
|
39
|
-
|
40
|
-
|
41
|
-
|
33
|
+
const proxy = Object.assign(
|
34
|
+
{
|
35
|
+
[_configuration]: { uuid: org },
|
36
|
+
[_orgConfig]: {},
|
37
|
+
[_disposed]: false,
|
38
|
+
[_isProxy]: true,
|
39
|
+
[_queue]: new Array<unknown>(),
|
40
|
+
[_unwrap]: () => proxy,
|
41
|
+
},
|
42
|
+
w.CommandBar,
|
43
|
+
);
|
44
|
+
w.CommandBar = new Proxy(proxy, {
|
45
|
+
get: function (_, prop: keyof typeof proxy) {
|
46
|
+
if (prop in proxy) return proxy[prop];
|
47
|
+
return function () {
|
48
|
+
const a = Array.prototype.slice.call(arguments);
|
49
|
+
a.unshift(prop);
|
50
|
+
(proxy[_queue] as Array<unknown>).push(a);
|
51
|
+
};
|
52
|
+
},
|
53
|
+
});
|
42
54
|
|
43
|
-
|
55
|
+
if (lc !== null) params.push(`lc=${lc}`);
|
56
|
+
params.push('version=2');
|
44
57
|
|
45
|
-
|
46
|
-
|
47
|
-
el.async = true;
|
48
|
-
el.src = src;
|
49
|
-
document.head.appendChild(el);
|
50
|
-
};
|
58
|
+
loadScript(`${origin}/latest/${org}?${params.join('&')}`, true);
|
59
|
+
}
|
51
60
|
|
52
|
-
if (
|
53
|
-
|
61
|
+
if (typeof Object.assign === 'undefined' || typeof Symbol === 'undefined' || typeof Symbol.for === 'undefined') {
|
62
|
+
w.__CommandBarBootstrap__ = bootstrap;
|
63
|
+
loadScript(
|
64
|
+
'https://polyfill.io/v3/polyfill.min.js?version=3.101.0&callback=__CommandBarBootstrap__&features=' + polyfills,
|
65
|
+
);
|
54
66
|
} else {
|
55
|
-
|
67
|
+
bootstrap();
|
56
68
|
}
|
57
69
|
};
|
package/tsconfig.json
CHANGED
@@ -2,10 +2,11 @@
|
|
2
2
|
"include": ["./src"],
|
3
3
|
"compilerOptions": {
|
4
4
|
"declaration": true,
|
5
|
-
"declarationMap":
|
5
|
+
"declarationMap": false,
|
6
|
+
"emitDeclarationOnly": true,
|
6
7
|
"module": "CommonJS",
|
7
8
|
"outDir": "build",
|
8
|
-
"rootDir": "
|
9
|
+
"rootDir": "..",
|
9
10
|
"sourceMap": true,
|
10
11
|
"target": "es5",
|
11
12
|
"lib": ["dom", "esnext"],
|
@@ -17,6 +18,7 @@
|
|
17
18
|
|
18
19
|
"forceConsistentCasingInFileNames": true,
|
19
20
|
"stripInternal": true, // https://www.typescriptlang.org/tsconfig#stripInternal
|
20
|
-
"types": []
|
21
|
+
"types": ["node"],
|
22
|
+
"jsx": "react"
|
21
23
|
}
|
22
24
|
}
|
package/webpack.config.js
CHANGED
@@ -1,12 +1,11 @@
|
|
1
|
-
const
|
2
|
-
const path = require('path')
|
1
|
+
const path = require('path');
|
3
2
|
|
4
3
|
module.exports = {
|
5
4
|
mode: 'production',
|
6
|
-
entry: '
|
5
|
+
entry: path.resolve(__dirname, 'src', 'index.ts'),
|
7
6
|
output: {
|
8
|
-
path: path.resolve(__dirname, '
|
9
|
-
filename: '
|
7
|
+
path: path.resolve(__dirname, 'build', 'commandbar-js', 'src'),
|
8
|
+
filename: 'index.js',
|
10
9
|
library: {
|
11
10
|
type: 'umd',
|
12
11
|
name: 'commandbar',
|
@@ -15,7 +14,7 @@ module.exports = {
|
|
15
14
|
module: {
|
16
15
|
rules: [
|
17
16
|
{
|
18
|
-
test: /\.
|
17
|
+
test: /\.tsx?$/,
|
19
18
|
loader: 'ts-loader',
|
20
19
|
options: {
|
21
20
|
transpileOnly: true,
|
@@ -24,11 +23,7 @@ module.exports = {
|
|
24
23
|
],
|
25
24
|
},
|
26
25
|
resolve: {
|
27
|
-
extensions: ['.ts', '.js', '.json'],
|
26
|
+
extensions: ['.ts', '.js', '.json', '.tsx'],
|
28
27
|
},
|
29
|
-
|
30
|
-
|
31
|
-
process: 'process/browser',
|
32
|
-
}),
|
33
|
-
],
|
34
|
-
}
|
28
|
+
stats: 'minimal',
|
29
|
+
};
|