Compare commits

...

8 Commits

Author SHA1 Message Date
LukeHagar
d638acb5d2 Bump version to 0.0.20 2023-04-18 21:13:34 +00:00
Luke Hagar
f87006d3e8 Update configuration.mustache 2023-04-18 16:12:34 -05:00
Luke Hagar
fcab6f2532 Update configuration.mustache 2023-04-18 16:06:36 -05:00
Luke Hagar
4c552faaf5 Update bump_version.yml 2023-04-18 16:05:39 -05:00
Luke Hagar
7ea8776750 Updated Configuration 2023-04-18 16:04:31 -05:00
GitHub Action Bot
b9487a78df Automated build 'Update plex-api-spec.yaml' typescript-axios sdk: 4736816010 2023-04-18 20:46:54 +00:00
LukeHagar
4addcb43e0 Bump version to 0.0.19 2023-04-18 20:26:13 +00:00
Luke Hagar
05444f54ad Example overhaul 2023-04-18 15:25:10 -05:00
21 changed files with 23947 additions and 506 deletions

View File

@@ -5,11 +5,6 @@ on:
inputs:
version:
description: The version to bump to
push:
branches:
- main
paths:
- plexjs/**
jobs:
update_typescript_version:

View File

@@ -5,7 +5,7 @@ files:
destinationFilename: package.json
npmName: plexjs
npmRepository: lukehagar
npmVersion: 0.0.18
npmVersion: 0.0.20
useSingleRequestParameter: true
sortParamsByRequiredFlag: true
gitUserID: lukehagar

6
examples/.eslintignore Normal file
View File

@@ -0,0 +1,6 @@
# don't ever lint node_modules
node_modules
# don't lint build output (make sure it's set to your correct build folder name)
build
# don't lint nyc coverage output
coverage

19
examples/.eslintrc Normal file
View File

@@ -0,0 +1,19 @@
{
"root": true,
"parser": "@typescript-eslint/parser",
"plugins": ["@typescript-eslint", "prettier", "jest"],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"prettier"
],
"rules": {
"no-console": 1,
"prettier/prettier": 2
},
"env": {
"browser": true,
"node": true,
"jest/globals": true
}
}

107
examples/.gitignore vendored Normal file
View File

@@ -0,0 +1,107 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
# Next.js build output
.next
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test

5
examples/.prettierrc Normal file
View File

@@ -0,0 +1,5 @@
{
"trailingComma": "all",
"singleQuote": true,
"printWidth": 80
}

43
examples/README.md Normal file
View File

@@ -0,0 +1,43 @@
# 🧰 Simple TypeScript Starter | 2022
> We talk about a lot of **advanced Node.js and TypeScript** concepts on [the blog](https://khalilstemmler.com), particularly focused around Domain-Driven Design and large-scale enterprise application patterns. However, I received a few emails from readers that were interested in seeing what a basic TypeScript starter project looks like. So I've put together just that.
### Features
- Minimal
- TypeScript v4
- Testing with Jest
- Linting with Eslint and Prettier
- Pre-commit hooks with Husky
- VS Code debugger scripts
- Local development with Nodemon
### Scripts
#### `npm run start:dev`
Starts the application in development using `nodemon` and `ts-node` to do hot reloading.
#### `npm run start`
Starts the app in production by first building the project with `npm run build`, and then executing the compiled JavaScript at `build/index.js`.
#### `npm run build`
Builds the app at `build`, cleaning the folder first.
#### `npm run test`
Runs the `jest` tests once.
#### `npm run test:dev`
Run the `jest` tests in watch mode, waiting for file changes.
#### `npm run prettier-format`
Format your code.
#### `npm run prettier-watch`
Format your code in watch mode, waiting for file changes.

6
examples/nodemon.json Normal file
View File

@@ -0,0 +1,6 @@
{
"watch": ["src"],
"ext": ".ts,.js",
"ignore": [],
"exec": "npx ts-node ./src/index.ts"
}

17904
examples/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,24 +1,35 @@
{
"name": "examples",
"version": "1.0.0",
"description": "Examples using the plexjs package",
"main": "build/index.js",
"types": "build/index.d.ts",
"scripts": {
"start": "ts-node src/index.ts",
"build": "tsc"
},
"devDependencies": {
"@types/request": "^2.48.8",
"http": "^0.0.1-security",
"nodemon": "^2.0.19",
"request": "^2.88.2",
"ts-node": "^10.9.1",
"typescript": "^5.0.4"
},
"author": "lukehagar",
"license": "MIT",
"dependencies": {
"plexjs": "file:../plexjs"
}
"name": "typescript-starter",
"version": "1.0.0",
"description": "A basic typescript app starter for 2023.",
"main": "index.js",
"scripts": {
"build": "rimraf ./build && tsc",
"start:dev": "npx nodemon",
"start": "npm run build && node build/index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@lukehagar/plexjs": "^0.0.19",
"@types/jest": "^29.5.0",
"@types/node": "^18.6.1",
"@typescript-eslint/eslint-plugin": "^5.31.0",
"@typescript-eslint/parser": "^5.31.0",
"eslint": "^8.20.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-jest": "^27.2.1",
"eslint-plugin-prettier": "^4.2.1",
"nodemon": "^2.0.19",
"onchange": "^7.1.0",
"prettier": "^2.7.1",
"rimraf": "^5.0.0",
"run-script-os": "^1.1.6",
"ts-node": "^10.9.1",
"typescript": "^5.0.4"
},
"dependencies": {
"jest-cucumber": "^3.0.1"
}
}

View File

@@ -1,4 +1,9 @@
import { Configuration, DevicesApi } from "plexjs";
// eslint-disable-next-line no-console
import { Configuration, ServerApi } from '@lukehagar/plexjs';
let Config = new Configuration({ basePath: "127.0.0.1:80" });
let devicesApi = new DevicesApi(Config);
const config = new Configuration({ basePath: 'http://10.10.10.47:32400' });
const api = new ServerApi(config);
api.getServerCapabilities();
console.log('Hello world!');

View File

@@ -1,16 +1,16 @@
{
"compilerOptions": {
"target": "ES2020", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
"module": "commonjs", /* Specify what module code is generated. */
"moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
"esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
"forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
"strict": true, /* Enable all strict type-checking options. */
"skipLibCheck": true,
"outDir": "./build",
"rootDir": "src",
"sourceMap": true
},
"include": ["src/**/*"],
"exclude": ["node_modules"]
}
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"lib": ["es6"],
"allowJs": true,
"outDir": "build",
"rootDir": "src",
"strict": true,
"esModuleInterop": true,
"types": ["node", "jest"],
"skipLibCheck": true
},
"include": ["src/**/*"],
"exclude": ["src/**/*.spec.ts"]
}

View File

@@ -1,202 +0,0 @@
Arguments:
C:\Program Files\nodejs\node.exe C:\Users\Luke\AppData\Roaming\npm\node_modules\yarn\bin\yarn.js dev
PATH:
C:\Python311\Scripts\;C:\Python311\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\nodejs\;C:\ProgramData\chocolatey\bin;C:\Program Files\Git\cmd;C:\Program Files\Docker\Docker\resources\bin;C:\Program Files\Go\bin;C:\Users\Luke\.console-ninja\.bin;C:\Users\Luke\AppData\Local\Microsoft\WindowsApps;C:\Users\Luke\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\Luke\AppData\Local\GitHubDesktop\bin;C:\Users\Luke\go\bin;C:\Users\Luke\AppData\Roaming\npm;C:\Users\Luke\go\bin
Yarn version:
1.22.19
Node version:
18.14.2
Platform:
win32 x64
Trace:
SyntaxError: C:\Users\Luke\Documents\GitHub\plexjs\examples\package.json: Unexpected token } in JSON at position 361
at JSON.parse (<anonymous>)
at C:\Users\Luke\AppData\Roaming\npm\node_modules\yarn\lib\cli.js:1629:59
at Generator.next (<anonymous>)
at step (C:\Users\Luke\AppData\Roaming\npm\node_modules\yarn\lib\cli.js:310:30)
at C:\Users\Luke\AppData\Roaming\npm\node_modules\yarn\lib\cli.js:321:13
npm manifest:
{
"name": "examples",
"version": "1.0.0",
"description": "Examples using the plexjs package",
"main": "index.js",
"scripts": {
"dev": "node --experimental-modules index.js ",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "lukehagar",
"license": "MIT",
"devDependencies": {
"@lukehagar/plexjs": "^0.0.15",
}
}
yarn manifest:
No manifest
Lockfile:
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@babel/runtime@^7.15.4":
version "7.21.0"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673"
integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==
dependencies:
regenerator-runtime "^0.13.11"
"@cspotcode/source-map-support@^0.8.0":
version "0.8.1"
resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==
dependencies:
"@jridgewell/trace-mapping" "0.3.9"
"@jridgewell/resolve-uri@^3.0.3":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
"@jridgewell/sourcemap-codec@^1.4.10":
version "1.4.15"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
"@jridgewell/trace-mapping@0.3.9":
version "0.3.9"
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
dependencies:
"@jridgewell/resolve-uri" "^3.0.3"
"@jridgewell/sourcemap-codec" "^1.4.10"
"@lukehagar/plexjs@^0.0.15":
version "0.0.15"
resolved "https://registry.yarnpkg.com/@lukehagar/plexjs/-/plexjs-0.0.15.tgz#fa4bfc7b87b0fb79357ae0eb31e68eeed45de0db"
integrity sha512-reAJ+c5e7MDEZ6xy+zhNQOPEt+O20s/TYoD8wQXf5KjQCXpYas3isDQgSPxSa6PENJPSr32e30bruuXMXyzDmQ==
dependencies:
axios "^0.26.1"
axios-retry "^3.4.0"
"@tsconfig/node10@^1.0.7":
version "1.0.9"
resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2"
integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==
"@tsconfig/node12@^1.0.7":
version "1.0.11"
resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d"
integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==
"@tsconfig/node14@^1.0.0":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1"
integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==
"@tsconfig/node16@^1.0.2":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e"
integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==
acorn-walk@^8.1.1:
version "8.2.0"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
acorn@^8.4.1:
version "8.8.2"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
arg@^4.1.0:
version "4.1.3"
resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
axios-retry@^3.4.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/axios-retry/-/axios-retry-3.4.0.tgz#f464dbe9408e5aa78fa319afd38bb69b533d8854"
integrity sha512-VdgaP+gHH4iQYCCNUWF2pcqeciVOdGrBBAYUfTY+wPcO5Ltvp/37MLFNCmJKo7Gj3SHvCSdL8ouI1qLYJN3liA==
dependencies:
"@babel/runtime" "^7.15.4"
is-retry-allowed "^2.2.0"
axios@^0.26.1:
version "0.26.1"
resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9"
integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==
dependencies:
follow-redirects "^1.14.8"
create-require@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
diff@^4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
follow-redirects@^1.14.8:
version "1.15.2"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
is-retry-allowed@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz#88f34cbd236e043e71b6932d09b0c65fb7b4d71d"
integrity sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==
make-error@^1.1.1:
version "1.3.6"
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
regenerator-runtime@^0.13.11:
version "0.13.11"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
ts-node@^10.9.1:
version "10.9.1"
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b"
integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==
dependencies:
"@cspotcode/source-map-support" "^0.8.0"
"@tsconfig/node10" "^1.0.7"
"@tsconfig/node12" "^1.0.7"
"@tsconfig/node14" "^1.0.0"
"@tsconfig/node16" "^1.0.2"
acorn "^8.4.1"
acorn-walk "^8.1.1"
arg "^4.1.0"
create-require "^1.1.0"
diff "^4.0.1"
make-error "^1.1.1"
v8-compile-cache-lib "^3.0.1"
yn "3.1.1"
typescript@^5.0.4:
version "5.0.4"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b"
integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==
v8-compile-cache-lib@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
yn@3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
## plexjs@0.0.18
## plexjs@0.0.20
This generator creates TypeScript/JavaScript client that utilizes [axios](https://github.com/axios/axios). The generated Node module can be used in the following environments:
@@ -36,7 +36,7 @@ navigate to the folder of your consuming project and run one of the following co
_published:_
```
npm install plexjs@0.0.18 --save
npm install plexjs@0.0.20 --save
```
_unPublished (not recommended):_

File diff suppressed because it is too large Load Diff

View File

@@ -15,13 +15,82 @@
import { IAxiosRetryConfig } from "axios-retry";
export interface ConfigurationParameters {
apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);
plexToken?: string;
clientIdentifier?: string;
device?: string;
deviceName?: string;
platform?: string;
platformVersion?: string;
product?: string;
version?: string;
basePath?: string;
}
export class Configuration {
/**
* Plex Media Server or Plex.TV Authentication token
*
* @type {string}
* @memberof Configuration
*/
plexToken?: string;
/**
* UUID, serial number, or other number unique per device
*
* @type {string}
* @memberof Configuration
*/
clientIdentifier?: string;
/**
* Device name and model number, eg iPhone3,2, Motorola XOOM™, LG5200TV
*
* @type {string}
* @memberof Configuration
*/
device?: string;
/**
* Customized Device Name
*
* @type {string}
* @memberof Configuration
*/
deviceName?: string;
/**
* Platform name, eg iOS, MacOSX, Android, LG, etc
*
* @type {string}
* @memberof Configuration
*/
platform?: string;
/**
* Operating system version, eg 4.3.1, 10.6.7, 3.2
*
* @type {string}
* @memberof Configuration
*/
platformVersion?: string;
/**
* Plex application name, eg Laika, Plex Media Server, Media Link
*
* @type {string}
* @memberof Configuration
*/
product?: string;
/**
* Plex application version number
*
* @type {string}
* @memberof Configuration
*/
version?: string;
/**
* parameter for apiKey security
* @param name security name
@@ -63,10 +132,42 @@ export class Configuration {
retriesConfig?: IAxiosRetryConfig
constructor(param: ConfigurationParameters = {}) {
this.plexToken = param.plexToken;
this.clientIdentifier = param.clientIdentifier || "Plexjs";
this.device = param.device || "Unspecified";
this.deviceName = param.deviceName || "Unspecified";
this.platform = param.platform || "Plexjs";
this.platformVersion = param.platformVersion || process.env.npm_package_version;
this.product = param.product || "Plexjs";
this.version = param.version || process.env.npm_package_version;
this.apiKey = param.apiKey;
this.apiKey = (header: string) => {
switch (header) {
case "X-Plex-Token":
return this.plexToken
case "X-Plex-Client-Identifier":
return this.clientIdentifier
case "X-Plex-Device-Name":
return this.deviceName
case "X-Plex-Device":
return this.device
case "X-Plex-Platform-Version":
return this.platformVersion
case "X-Plex-Platform":
return this.platform
case "X-Plex-Product":
return this.product
case "X-Plex-Version":
return this.version
default:
return "";
}
}
this.basePath = param.basePath;
}
public setAuthToken(token: string) {
this.plexToken = token
}
/**

View File

@@ -1,12 +1,12 @@
{
"name": "@lukehagar/plexjs",
"version": "0.0.18",
"version": "0.0.20",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@lukehagar/plexjs",
"version": "0.0.18",
"version": "0.0.20",
"license": "MIT",
"dependencies": {
"axios": "^0.26.1",

View File

@@ -1,9 +1,8 @@
{
"name": "@lukehagar/plexjs",
"version": "0.0.18",
"version": "0.0.20",
"description": "Community Made Plex JS/TS Module",
"author": "Luke Hagar",
"type": "module",
"repository": {
"type": "git",
"url": "https://github.com/LukeHagar/plexjs.git"

View File

@@ -4,13 +4,82 @@
import { IAxiosRetryConfig } from "axios-retry";
export interface ConfigurationParameters {
apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);
plexToken?: string;
clientIdentifier?: string;
device?: string;
deviceName?: string;
platform?: string;
platformVersion?: string;
product?: string;
version?: string;
basePath?: string;
}
export class Configuration {
/**
* Plex Media Server or Plex.TV Authentication token
*
* @type {string}
* @memberof Configuration
*/
plexToken?: string;
/**
* UUID, serial number, or other number unique per device
*
* @type {string}
* @memberof Configuration
*/
clientIdentifier?: string;
/**
* Device name and model number, eg iPhone3,2, Motorola XOOM™, LG5200TV
*
* @type {string}
* @memberof Configuration
*/
device?: string;
/**
* Customized Device Name
*
* @type {string}
* @memberof Configuration
*/
deviceName?: string;
/**
* Platform name, eg iOS, MacOSX, Android, LG, etc
*
* @type {string}
* @memberof Configuration
*/
platform?: string;
/**
* Operating system version, eg 4.3.1, 10.6.7, 3.2
*
* @type {string}
* @memberof Configuration
*/
platformVersion?: string;
/**
* Plex application name, eg Laika, Plex Media Server, Media Link
*
* @type {string}
* @memberof Configuration
*/
product?: string;
/**
* Plex application version number
*
* @type {string}
* @memberof Configuration
*/
version?: string;
/**
* parameter for apiKey security
* @param name security name
@@ -52,10 +121,42 @@ export class Configuration {
retriesConfig?: IAxiosRetryConfig
constructor(param: ConfigurationParameters = {}) {
this.plexToken = param.plexToken;
this.clientIdentifier = param.clientIdentifier || "Plexjs";
this.device = param.device || "Unspecified";
this.deviceName = param.deviceName || "Unspecified";
this.platform = param.platform || "Plexjs";
this.platformVersion = param.platformVersion || process.env.npm_package_version;
this.product = param.product || "Plexjs";
this.version = param.version || process.env.npm_package_version;
this.apiKey = param.apiKey;
this.apiKey = (header: string) => {
switch (header) {
case "X-Plex-Token":
return this.plexToken
case "X-Plex-Client-Identifier":
return this.clientIdentifier
case "X-Plex-Device-Name":
return this.deviceName
case "X-Plex-Device":
return this.device
case "X-Plex-Platform-Version":
return this.platformVersion
case "X-Plex-Platform":
return this.platform
case "X-Plex-Product":
return this.product
case "X-Plex-Version":
return this.version
default:
return "";
}
}
this.basePath = param.basePath;
}
public setAuthToken(token: string) {
this.plexToken = token
}
/**

View File

@@ -3,7 +3,6 @@
"version": "{{npmVersion}}",
"description": "Community Made Plex JS/TS Module",
"author": "Luke Hagar",
"type": "module",
"repository": {
"type": "git",
"url": "https://github.com/LukeHagar/plexjs.git"