From 03d641a0d7f996de44ec898ad739bc4050514ba1 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 17 Dec 2019 16:17:22 +0100 Subject: [PATCH] Add embed api build --- client/src/standalone/player/.npmignore | 3 +++ client/src/standalone/player/package.json | 11 +++++++--- client/src/standalone/player/player.ts | 2 +- client/src/standalone/player/tsconfig.json | 19 +++++++++++++++++ .../src/standalone/player/webpack.config.js | 12 +++++++++++ package.json | 2 +- scripts/build/client.sh | 2 +- scripts/build/embed.sh | 2 ++ scripts/dev/embed.sh | 0 scripts/release-embed-api.sh | 11 ++++++++++ support/doc/api/embeds.md | 21 ++++++++++++++++++- 11 files changed, 78 insertions(+), 7 deletions(-) create mode 100644 client/src/standalone/player/.npmignore create mode 100644 client/src/standalone/player/tsconfig.json create mode 100644 client/src/standalone/player/webpack.config.js mode change 100644 => 100755 scripts/dev/embed.sh create mode 100755 scripts/release-embed-api.sh diff --git a/client/src/standalone/player/.npmignore b/client/src/standalone/player/.npmignore new file mode 100644 index 000000000..870b6315b --- /dev/null +++ b/client/src/standalone/player/.npmignore @@ -0,0 +1,3 @@ +tsconfig.json +*.ts +webpack.config.ts diff --git a/client/src/standalone/player/package.json b/client/src/standalone/player/package.json index b056de718..591c3ee3d 100644 --- a/client/src/standalone/player/package.json +++ b/client/src/standalone/player/package.json @@ -1,6 +1,7 @@ { "name": "@peertube/embed-api", - "version": "1.0.0", + "private": false, + "version": "0.0.1", "description": "API to communicate with the PeerTube player embed", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" @@ -13,11 +14,15 @@ "peertube", "embed" ], - "main": "./player.ts", + "main": "./dist/player.js", + "types": "./dist/player.d.ts", "author": "Chocobozzz", "license": "AGPL-3.0", "bugs": { "url": "https://github.com/Chocobozzz/PeerTube/issues" }, - "homepage": "https://github.com/Chocobozzz/PeerTube#readme" + "homepage": "https://github.com/Chocobozzz/PeerTube#readme", + "dependencies": { + "jschannel": "^1.0.2" + } } diff --git a/client/src/standalone/player/player.ts b/client/src/standalone/player/player.ts index f33539134..71c412950 100644 --- a/client/src/standalone/player/player.ts +++ b/client/src/standalone/player/player.ts @@ -192,4 +192,4 @@ export class PeerTubePlayer { } // put it on the window as well as the export -window[ 'PeerTubePlayer' ] = PeerTubePlayer +(window[ 'PeerTubePlayer' ] as any) = PeerTubePlayer diff --git a/client/src/standalone/player/tsconfig.json b/client/src/standalone/player/tsconfig.json new file mode 100644 index 000000000..eecc63dfb --- /dev/null +++ b/client/src/standalone/player/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "module": "commonjs", + "removeComments": true, + "sourceMap": false, + "typeRoots": [ + "../../../node_modules/@types" + ], + "outDir": "./dist", + "declaration": true, + "target": "es5", + "types": [], + "lib": [ + "es2018", + "dom" + ] + }, + "files": [ "./player.ts" ] +} diff --git a/client/src/standalone/player/webpack.config.js b/client/src/standalone/player/webpack.config.js new file mode 100644 index 000000000..48d350edf --- /dev/null +++ b/client/src/standalone/player/webpack.config.js @@ -0,0 +1,12 @@ +const path = require('path') + +module.exports = [ + { + mode: 'production', + entry: './dist/player.js', + output: { + filename: 'player.min.js', + path: path.resolve(__dirname, 'build') + } + } +] diff --git a/package.json b/package.json index acc4b7e1f..d48841517 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,6 @@ "dev:embed": "scripty", "dev:client": "scripty", "dev:cli": "scripty", - "dev:embed": "scripty", "start": "node dist/server", "start:server": "node dist/server --no-client", "update-host": "node ./dist/scripts/update-host.js", @@ -73,6 +72,7 @@ "mocha": "mocha", "ci": "scripty", "release": "scripty", + "release-embed-api": "scripty", "nightly": "scripty", "client-report": "scripty" }, diff --git a/scripts/build/client.sh b/scripts/build/client.sh index fd9190660..d95bb9574 100755 --- a/scripts/build/client.sh +++ b/scripts/build/client.sh @@ -62,7 +62,7 @@ if [ -z ${1+x} ] || [ "$1" != "--light" ]; then done fi -npm run build:embed +cd ../ && npm run build:embed && cd client/ # Copy runtime locales cp -r "./src/locale" "./dist/locale" diff --git a/scripts/build/embed.sh b/scripts/build/embed.sh index ea5e7d57d..47e195d96 100755 --- a/scripts/build/embed.sh +++ b/scripts/build/embed.sh @@ -2,4 +2,6 @@ set -eu +cd client + NODE_ENV=production npm run webpack -- --config webpack/webpack.video-embed.js --mode production --json > "./dist/embed-stats.json" diff --git a/scripts/dev/embed.sh b/scripts/dev/embed.sh old mode 100644 new mode 100755 diff --git a/scripts/release-embed-api.sh b/scripts/release-embed-api.sh new file mode 100755 index 000000000..ae76a65f5 --- /dev/null +++ b/scripts/release-embed-api.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -eu + +cd client/src/standalone/player + +rm -rf dist build && tsc -p . && ../../../node_modules/.bin/webpack --config ./webpack.config.js + +npm publish --access public + +rm -rf dist build node_modules diff --git a/support/doc/api/embeds.md b/support/doc/api/embeds.md index c2317a030..ca480006d 100644 --- a/support/doc/api/embeds.md +++ b/support/doc/api/embeds.md @@ -21,6 +21,24 @@ Now just use the `PeerTubePlayer` class exported by the module: ```typescript import { PeerTubePlayer } from '@peertube/embed-api' +... +``` + +Or use the minified build from NPM CDN in your HTML file: + +``` + + + +``` + +Then you can instantiate the player: + +```typescript let player = new PeerTubePlayer(document.querySelector('iframe')) await player.ready // wait for the player to be ready @@ -56,7 +74,7 @@ Get the available resolutions. A `PeerTubeResolution` looks like: { "id": 3, "label": "720p", - "src": "//src-url-here", + "height": "720", "active": true } ``` @@ -87,6 +105,7 @@ Set the playback volume. Value should be between `0` and `1`. ## `getVolume(): Promise` Get the playback volume. Returns a value between `0` and `1`. + # Events You can subscribe to events by using `addEventListener()`. See above for details.