@clockworkdog/cogs-client 0.3.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/README.md +100 -0
- package/dist/AudioPlayer.d.ts +48 -0
- package/dist/AudioPlayer.js +420 -0
- package/dist/CogsConnection.d.ts +81 -0
- package/dist/CogsConnection.js +198 -0
- package/dist/VideoPlayer.d.ts +50 -0
- package/dist/VideoPlayer.js +325 -0
- package/dist/browser/index.js +4863 -0
- package/dist/helpers/urls.d.ts +3 -0
- package/dist/helpers/urls.js +31 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +28 -0
- package/dist/types/AllMediaClipStatesMessage.d.ts +5 -0
- package/dist/types/AllMediaClipStatesMessage.js +2 -0
- package/dist/types/AudioState.d.ts +39 -0
- package/dist/types/AudioState.js +2 -0
- package/dist/types/CogsClientMessage.d.ts +85 -0
- package/dist/types/CogsClientMessage.js +2 -0
- package/dist/types/MediaClipStateMessage.d.ts +7 -0
- package/dist/types/MediaClipStateMessage.js +2 -0
- package/dist/types/MediaObjectFit.d.ts +2 -0
- package/dist/types/MediaObjectFit.js +2 -0
- package/dist/types/VideoState.d.ts +26 -0
- package/dist/types/VideoState.js +8 -0
- package/dist/types/valueTypes.d.ts +18 -0
- package/dist/types/valueTypes.js +10 -0
- package/package.json +45 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.preloadUrl = exports.assetUrl = exports.COGS_SERVER_PORT = void 0;
|
|
4
|
+
exports.COGS_SERVER_PORT = 12095;
|
|
5
|
+
function assetUrl(file) {
|
|
6
|
+
const location = typeof window !== 'undefined' ? window.location : undefined;
|
|
7
|
+
return `${location === null || location === void 0 ? void 0 : location.protocol}//${location === null || location === void 0 ? void 0 : location.hostname}:${exports.COGS_SERVER_PORT}/assets/${encodeURIComponent(file)}`;
|
|
8
|
+
}
|
|
9
|
+
exports.assetUrl = assetUrl;
|
|
10
|
+
function preloadUrl(url) {
|
|
11
|
+
return new Promise((resolve, reject) => {
|
|
12
|
+
const req = new XMLHttpRequest();
|
|
13
|
+
req.open('GET', url, true);
|
|
14
|
+
req.responseType = 'blob';
|
|
15
|
+
req.onload = function () {
|
|
16
|
+
if (req.status === 200) {
|
|
17
|
+
const blob = this.response;
|
|
18
|
+
const objectURL = URL.createObjectURL(blob);
|
|
19
|
+
resolve(objectURL);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
reject(Error(`Failed to preload ${url}. Error code: ${req.status}`));
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
req.onerror = (error) => {
|
|
26
|
+
reject(Error(`Failed to preload ${url}: ${error}`));
|
|
27
|
+
};
|
|
28
|
+
req.send();
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
exports.preloadUrl = preloadUrl;
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { default as CogsConnection } from './CogsConnection';
|
|
2
|
+
export { default as CogsClientMessage } from './types/CogsClientMessage';
|
|
3
|
+
export { default as MediaClipStateMessage } from './types/MediaClipStateMessage';
|
|
4
|
+
export * from './types/valueTypes';
|
|
5
|
+
export { default as MediaObjectFit } from './types/MediaObjectFit';
|
|
6
|
+
export { default as CogsAudioPlayer } from './AudioPlayer';
|
|
7
|
+
export { default as CogsVideoPlayer } from './VideoPlayer';
|
|
8
|
+
export * from './types/AudioState';
|
|
9
|
+
export { assetUrl } from './helpers/urls';
|
|
10
|
+
export { preloadUrl } from './helpers/urls';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.preloadUrl = exports.assetUrl = exports.CogsVideoPlayer = exports.CogsAudioPlayer = exports.CogsConnection = void 0;
|
|
17
|
+
var CogsConnection_1 = require("./CogsConnection");
|
|
18
|
+
Object.defineProperty(exports, "CogsConnection", { enumerable: true, get: function () { return __importDefault(CogsConnection_1).default; } });
|
|
19
|
+
__exportStar(require("./types/valueTypes"), exports);
|
|
20
|
+
var AudioPlayer_1 = require("./AudioPlayer");
|
|
21
|
+
Object.defineProperty(exports, "CogsAudioPlayer", { enumerable: true, get: function () { return __importDefault(AudioPlayer_1).default; } });
|
|
22
|
+
var VideoPlayer_1 = require("./VideoPlayer");
|
|
23
|
+
Object.defineProperty(exports, "CogsVideoPlayer", { enumerable: true, get: function () { return __importDefault(VideoPlayer_1).default; } });
|
|
24
|
+
__exportStar(require("./types/AudioState"), exports);
|
|
25
|
+
var urls_1 = require("./helpers/urls");
|
|
26
|
+
Object.defineProperty(exports, "assetUrl", { enumerable: true, get: function () { return urls_1.assetUrl; } });
|
|
27
|
+
var urls_2 = require("./helpers/urls");
|
|
28
|
+
Object.defineProperty(exports, "preloadUrl", { enumerable: true, get: function () { return urls_2.preloadUrl; } });
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export declare type ActiveAudioClipState = {
|
|
2
|
+
type: 'paused';
|
|
3
|
+
} | {
|
|
4
|
+
type: 'pause_requested';
|
|
5
|
+
fade: number | undefined;
|
|
6
|
+
} | {
|
|
7
|
+
type: 'pausing';
|
|
8
|
+
} | {
|
|
9
|
+
type: 'playing';
|
|
10
|
+
} | {
|
|
11
|
+
type: 'play_requested';
|
|
12
|
+
} | {
|
|
13
|
+
type: 'stopping';
|
|
14
|
+
} | {
|
|
15
|
+
type: 'stop_requested';
|
|
16
|
+
fade: number | undefined;
|
|
17
|
+
};
|
|
18
|
+
export interface AudioClip {
|
|
19
|
+
config: {
|
|
20
|
+
preload: boolean;
|
|
21
|
+
ephemeral: boolean;
|
|
22
|
+
};
|
|
23
|
+
activeClips: {
|
|
24
|
+
[soundId: number]: ActiveClip;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export interface ActiveClip {
|
|
28
|
+
state: ActiveAudioClipState;
|
|
29
|
+
loop: boolean;
|
|
30
|
+
volume: number;
|
|
31
|
+
playId: string;
|
|
32
|
+
}
|
|
33
|
+
export interface AudioState {
|
|
34
|
+
isPlaying: boolean;
|
|
35
|
+
globalVolume: number;
|
|
36
|
+
clips: {
|
|
37
|
+
[path: string]: AudioClip;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import MediaObjectFit from './MediaObjectFit';
|
|
2
|
+
import { ShowPhase } from './valueTypes';
|
|
3
|
+
interface ShowResetMessage {
|
|
4
|
+
type: 'show_reset';
|
|
5
|
+
}
|
|
6
|
+
interface ShowPhaseMessage {
|
|
7
|
+
type: 'show_phase';
|
|
8
|
+
phase: ShowPhase;
|
|
9
|
+
}
|
|
10
|
+
interface AdjustableTimerUpdateMessage {
|
|
11
|
+
type: 'adjustable_timer_update';
|
|
12
|
+
ticking: boolean;
|
|
13
|
+
durationMillis: number;
|
|
14
|
+
}
|
|
15
|
+
interface TextHintsUpdateMessage {
|
|
16
|
+
type: 'text_hints_update';
|
|
17
|
+
lastSentHint: string;
|
|
18
|
+
}
|
|
19
|
+
export declare type Media = {
|
|
20
|
+
type: 'audio';
|
|
21
|
+
preload: boolean;
|
|
22
|
+
} | {
|
|
23
|
+
type: 'video';
|
|
24
|
+
preload: boolean | 'auto' | 'metadata' | 'none';
|
|
25
|
+
};
|
|
26
|
+
interface MediaClientConfigMessage {
|
|
27
|
+
type: 'media_config_update';
|
|
28
|
+
globalVolume: number;
|
|
29
|
+
audioOutput?: string;
|
|
30
|
+
files: {
|
|
31
|
+
[path: string]: Media;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
declare type MediaClientMessage = {
|
|
35
|
+
type: 'audio_play';
|
|
36
|
+
playId: string;
|
|
37
|
+
file: string;
|
|
38
|
+
fade?: number;
|
|
39
|
+
loop?: true;
|
|
40
|
+
volume: number;
|
|
41
|
+
} | {
|
|
42
|
+
type: 'audio_pause';
|
|
43
|
+
file: string;
|
|
44
|
+
fade?: number;
|
|
45
|
+
} | {
|
|
46
|
+
type: 'audio_stop';
|
|
47
|
+
file?: string;
|
|
48
|
+
fade?: number;
|
|
49
|
+
} | {
|
|
50
|
+
type: 'audio_set_clip_volume';
|
|
51
|
+
file: string;
|
|
52
|
+
volume: number;
|
|
53
|
+
fade?: number;
|
|
54
|
+
} | {
|
|
55
|
+
type: 'video_play';
|
|
56
|
+
playId: string;
|
|
57
|
+
file: string;
|
|
58
|
+
loop?: true;
|
|
59
|
+
volume: number;
|
|
60
|
+
fit: MediaObjectFit;
|
|
61
|
+
} | {
|
|
62
|
+
type: 'video_pause';
|
|
63
|
+
} | {
|
|
64
|
+
type: 'video_stop';
|
|
65
|
+
} | {
|
|
66
|
+
type: 'video_set_volume';
|
|
67
|
+
volume: number;
|
|
68
|
+
} | {
|
|
69
|
+
type: 'video_set_fit';
|
|
70
|
+
fit: MediaObjectFit;
|
|
71
|
+
} | {
|
|
72
|
+
type: 'image_show';
|
|
73
|
+
file: string;
|
|
74
|
+
fit: MediaObjectFit;
|
|
75
|
+
hideOthers?: boolean;
|
|
76
|
+
} | {
|
|
77
|
+
type: 'image_hide';
|
|
78
|
+
file?: string;
|
|
79
|
+
} | {
|
|
80
|
+
type: 'image_set_fit';
|
|
81
|
+
file: string;
|
|
82
|
+
fit: MediaObjectFit;
|
|
83
|
+
};
|
|
84
|
+
export declare type CogsClientMessage<CustomConfig = {}> = ShowResetMessage | ShowPhaseMessage | AdjustableTimerUpdateMessage | TextHintsUpdateMessage | (MediaClientConfigMessage & CustomConfig) | MediaClientMessage;
|
|
85
|
+
export default CogsClientMessage;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { MediaObjectFit } from '..';
|
|
2
|
+
export declare enum ActiveVideoClipState {
|
|
3
|
+
Paused = "paused",
|
|
4
|
+
Playing = "playing"
|
|
5
|
+
}
|
|
6
|
+
export interface VideoClip {
|
|
7
|
+
config: {
|
|
8
|
+
preload: 'auto' | 'metadata' | 'none';
|
|
9
|
+
ephemeral: boolean;
|
|
10
|
+
fit: MediaObjectFit;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export interface ActiveClip {
|
|
14
|
+
path: string;
|
|
15
|
+
state: ActiveVideoClipState;
|
|
16
|
+
loop: boolean;
|
|
17
|
+
volume: number;
|
|
18
|
+
}
|
|
19
|
+
export interface VideoState {
|
|
20
|
+
isPlaying: boolean;
|
|
21
|
+
globalVolume: number;
|
|
22
|
+
clips: {
|
|
23
|
+
[path: string]: VideoClip;
|
|
24
|
+
};
|
|
25
|
+
activeClip?: ActiveClip;
|
|
26
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ActiveVideoClipState = void 0;
|
|
4
|
+
var ActiveVideoClipState;
|
|
5
|
+
(function (ActiveVideoClipState) {
|
|
6
|
+
ActiveVideoClipState["Paused"] = "paused";
|
|
7
|
+
ActiveVideoClipState["Playing"] = "playing";
|
|
8
|
+
})(ActiveVideoClipState = exports.ActiveVideoClipState || (exports.ActiveVideoClipState = {}));
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare type PortValue = string | number | boolean;
|
|
2
|
+
export declare type ConfigValue = string | number | boolean;
|
|
3
|
+
export declare type EventValue = string | number | boolean;
|
|
4
|
+
export declare enum ShowPhase {
|
|
5
|
+
Setup = "setup",
|
|
6
|
+
Preshow = "pre-show",
|
|
7
|
+
InProgress = "in progress",
|
|
8
|
+
Finished = "finished"
|
|
9
|
+
}
|
|
10
|
+
export declare type EventKeyValue<TypeMap extends {
|
|
11
|
+
[key: string]: EventValue | null;
|
|
12
|
+
}, Key extends keyof TypeMap = keyof TypeMap> = Key extends string ? TypeMap[Key] extends null ? {
|
|
13
|
+
key: Key;
|
|
14
|
+
value: undefined;
|
|
15
|
+
} : {
|
|
16
|
+
key: Key;
|
|
17
|
+
value: TypeMap[Key];
|
|
18
|
+
} : never;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ShowPhase = void 0;
|
|
4
|
+
var ShowPhase;
|
|
5
|
+
(function (ShowPhase) {
|
|
6
|
+
ShowPhase["Setup"] = "setup";
|
|
7
|
+
ShowPhase["Preshow"] = "pre-show";
|
|
8
|
+
ShowPhase["InProgress"] = "in progress";
|
|
9
|
+
ShowPhase["Finished"] = "finished";
|
|
10
|
+
})(ShowPhase = exports.ShowPhase || (exports.ShowPhase = {}));
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@clockworkdog/cogs-client",
|
|
3
|
+
"version": "v0.3.1",
|
|
4
|
+
"main": "dist/index.js",
|
|
5
|
+
"unpkg": "dist/browser/index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
8
|
+
"lint": "yarn lint:json && yarn lint:ts",
|
|
9
|
+
"lint:json": "prettier --list-different .eslintrc *.json",
|
|
10
|
+
"lint:ts": "eslint --ext .js,.ts --ignore-path .gitignore .",
|
|
11
|
+
"build": "tsc && browserify --debug --standalone COGS dist/index.js -o dist/browser/index.js",
|
|
12
|
+
"watch-build": "tsc -w",
|
|
13
|
+
"release": "yarn publish --access public"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [],
|
|
16
|
+
"author": "Clockwork Dog <info@clockwork.dog>",
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"@types/howler": "2.2.7",
|
|
20
|
+
"@typescript-eslint/eslint-plugin": "^4.12.0",
|
|
21
|
+
"@typescript-eslint/parser": "^4.12.0",
|
|
22
|
+
"browserify": "^17.0.0",
|
|
23
|
+
"eslint": "^7.17.0",
|
|
24
|
+
"eslint-config-prettier": "^7.1.0",
|
|
25
|
+
"eslint-plugin-prettier": "^3.3.1",
|
|
26
|
+
"prettier": "^2.2.1",
|
|
27
|
+
"typescript": "^4.1.3"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"howler": "2.2.1",
|
|
31
|
+
"reconnecting-websocket": "^4.4.0"
|
|
32
|
+
},
|
|
33
|
+
"description": "Connect to COGS to build a custom Media Master",
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "git+https://github.com/clockwork-dog/cogs-client-lib.git"
|
|
37
|
+
},
|
|
38
|
+
"bugs": {
|
|
39
|
+
"url": "https://github.com/clockwork-dog/cogs-client-lib/issues"
|
|
40
|
+
},
|
|
41
|
+
"homepage": "https://cogs.show",
|
|
42
|
+
"files": [
|
|
43
|
+
"dist/**/*"
|
|
44
|
+
]
|
|
45
|
+
}
|