@bitmovin/api-sdk 1.130.0 → 1.131.0

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 CHANGED
@@ -31,7 +31,7 @@ If you have any questions regarding the SDK, provided examples or our services,
31
31
  ## Installation
32
32
 
33
33
  ``` bash
34
- npm install @bitmovin/api-sdk@1.130.0
34
+ npm install @bitmovin/api-sdk@1.131.0
35
35
  ```
36
36
 
37
37
  ## Initialization
@@ -2,6 +2,7 @@ import { BaseAPI } from './common/BaseAPI';
2
2
  import Configuration from './common/Configuration';
3
3
  import AccountApi from './account/AccountApi';
4
4
  import AnalyticsApi from './analytics/AnalyticsApi';
5
+ import StreamsApi from './streams/StreamsApi';
5
6
  import EncodingApi from './encoding/EncodingApi';
6
7
  import GeneralApi from './general/GeneralApi';
7
8
  import NotificationsApi from './notifications/NotificationsApi';
@@ -15,6 +16,7 @@ import PlayerApi from './player/PlayerApi';
15
16
  export default class BitmovinApi extends BaseAPI {
16
17
  account: AccountApi;
17
18
  analytics: AnalyticsApi;
19
+ streams: StreamsApi;
18
20
  encoding: EncodingApi;
19
21
  general: GeneralApi;
20
22
  notifications: NotificationsApi;
@@ -18,6 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  var BaseAPI_1 = require("./common/BaseAPI");
19
19
  var AccountApi_1 = require("./account/AccountApi");
20
20
  var AnalyticsApi_1 = require("./analytics/AnalyticsApi");
21
+ var StreamsApi_1 = require("./streams/StreamsApi");
21
22
  var EncodingApi_1 = require("./encoding/EncodingApi");
22
23
  var GeneralApi_1 = require("./general/GeneralApi");
23
24
  var NotificationsApi_1 = require("./notifications/NotificationsApi");
@@ -34,6 +35,7 @@ var BitmovinApi = /** @class */ (function (_super) {
34
35
  var _this = _super.call(this, configuration) || this;
35
36
  _this.account = new AccountApi_1.default(configuration);
36
37
  _this.analytics = new AnalyticsApi_1.default(configuration);
38
+ _this.streams = new StreamsApi_1.default(configuration);
37
39
  _this.encoding = new EncodingApi_1.default(configuration);
38
40
  _this.general = new GeneralApi_1.default(configuration);
39
41
  _this.notifications = new NotificationsApi_1.default(configuration);
@@ -1237,6 +1237,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
1237
1237
  var BaseAPI_1 = __webpack_require__(/*! ./common/BaseAPI */ "./common/BaseAPI.ts");
1238
1238
  var AccountApi_1 = __webpack_require__(/*! ./account/AccountApi */ "./account/AccountApi.ts");
1239
1239
  var AnalyticsApi_1 = __webpack_require__(/*! ./analytics/AnalyticsApi */ "./analytics/AnalyticsApi.ts");
1240
+ var StreamsApi_1 = __webpack_require__(/*! ./streams/StreamsApi */ "./streams/StreamsApi.ts");
1240
1241
  var EncodingApi_1 = __webpack_require__(/*! ./encoding/EncodingApi */ "./encoding/EncodingApi.ts");
1241
1242
  var GeneralApi_1 = __webpack_require__(/*! ./general/GeneralApi */ "./general/GeneralApi.ts");
1242
1243
  var NotificationsApi_1 = __webpack_require__(/*! ./notifications/NotificationsApi */ "./notifications/NotificationsApi.ts");
@@ -1253,6 +1254,7 @@ var BitmovinApi = /** @class */ (function (_super) {
1253
1254
  var _this = _super.call(this, configuration) || this;
1254
1255
  _this.account = new AccountApi_1.default(configuration);
1255
1256
  _this.analytics = new AnalyticsApi_1.default(configuration);
1257
+ _this.streams = new StreamsApi_1.default(configuration);
1256
1258
  _this.encoding = new EncodingApi_1.default(configuration);
1257
1259
  _this.general = new GeneralApi_1.default(configuration);
1258
1260
  _this.notifications = new NotificationsApi_1.default(configuration);
@@ -5985,7 +5987,7 @@ var HeaderHandler = /** @class */ (function (_super) {
5985
5987
  var headers = {
5986
5988
  'X-Api-Key': apiKey,
5987
5989
  'X-Api-Client': 'bitmovin-api-sdk-javascript',
5988
- 'X-Api-Client-Version': '1.130.0',
5990
+ 'X-Api-Client-Version': '1.131.0',
5989
5991
  'Content-Type': 'application/json'
5990
5992
  };
5991
5993
  if (tenantOrgId) {
@@ -59718,6 +59720,92 @@ exports.BitmovinResponseList = BitmovinResponseList;
59718
59720
  exports["default"] = BitmovinResponseList;
59719
59721
 
59720
59722
 
59723
+ /***/ }),
59724
+
59725
+ /***/ "./models/BitmovinStreamQuality.ts":
59726
+ /*!*****************************************!*\
59727
+ !*** ./models/BitmovinStreamQuality.ts ***!
59728
+ \*****************************************/
59729
+ /***/ ((__unused_webpack_module, exports) => {
59730
+
59731
+ "use strict";
59732
+
59733
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
59734
+ exports.BitmovinStreamQuality = void 0;
59735
+ /**
59736
+ * @export
59737
+ * @enum {string}
59738
+ */
59739
+ var BitmovinStreamQuality;
59740
+ (function (BitmovinStreamQuality) {
59741
+ BitmovinStreamQuality["NONE"] = "NONE";
59742
+ BitmovinStreamQuality["PREVIEW"] = "PREVIEW";
59743
+ BitmovinStreamQuality["DEFAULT"] = "DEFAULT";
59744
+ })(BitmovinStreamQuality = exports.BitmovinStreamQuality || (exports.BitmovinStreamQuality = {}));
59745
+ exports["default"] = BitmovinStreamQuality;
59746
+
59747
+
59748
+ /***/ }),
59749
+
59750
+ /***/ "./models/BitmovinStreamResponse.ts":
59751
+ /*!******************************************!*\
59752
+ !*** ./models/BitmovinStreamResponse.ts ***!
59753
+ \******************************************/
59754
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
59755
+
59756
+ "use strict";
59757
+
59758
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
59759
+ exports.BitmovinStreamResponse = void 0;
59760
+ var Mapper_1 = __webpack_require__(/*! ../common/Mapper */ "./common/Mapper.ts");
59761
+ /**
59762
+ * @export
59763
+ * @class BitmovinStreamResponse
59764
+ */
59765
+ var BitmovinStreamResponse = /** @class */ (function () {
59766
+ function BitmovinStreamResponse(obj) {
59767
+ if (!obj) {
59768
+ return;
59769
+ }
59770
+ this.id = (0, Mapper_1.map)(obj.id);
59771
+ this.assetUrl = (0, Mapper_1.map)(obj.assetUrl);
59772
+ this.title = (0, Mapper_1.map)(obj.title);
59773
+ this.description = (0, Mapper_1.map)(obj.description);
59774
+ this.createdAt = (0, Mapper_1.map)(obj.createdAt, Date);
59775
+ this.status = (0, Mapper_1.map)(obj.status);
59776
+ this.targetQuality = (0, Mapper_1.map)(obj.targetQuality);
59777
+ this.availableQualities = (0, Mapper_1.mapArray)(obj.availableQualities);
59778
+ }
59779
+ return BitmovinStreamResponse;
59780
+ }());
59781
+ exports.BitmovinStreamResponse = BitmovinStreamResponse;
59782
+ exports["default"] = BitmovinStreamResponse;
59783
+
59784
+
59785
+ /***/ }),
59786
+
59787
+ /***/ "./models/BitmovinStreamStatus.ts":
59788
+ /*!****************************************!*\
59789
+ !*** ./models/BitmovinStreamStatus.ts ***!
59790
+ \****************************************/
59791
+ /***/ ((__unused_webpack_module, exports) => {
59792
+
59793
+ "use strict";
59794
+
59795
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
59796
+ exports.BitmovinStreamStatus = void 0;
59797
+ /**
59798
+ * @export
59799
+ * @enum {string}
59800
+ */
59801
+ var BitmovinStreamStatus;
59802
+ (function (BitmovinStreamStatus) {
59803
+ BitmovinStreamStatus["PUBLISHED"] = "PUBLISHED";
59804
+ BitmovinStreamStatus["UNPUBLISHED"] = "UNPUBLISHED";
59805
+ })(BitmovinStreamStatus = exports.BitmovinStreamStatus || (exports.BitmovinStreamStatus = {}));
59806
+ exports["default"] = BitmovinStreamStatus;
59807
+
59808
+
59721
59809
  /***/ }),
59722
59810
 
59723
59811
  /***/ "./models/BitrateSelectionMode.ts":
@@ -62205,6 +62293,38 @@ var ConvertSccPositionMode;
62205
62293
  exports["default"] = ConvertSccPositionMode;
62206
62294
 
62207
62295
 
62296
+ /***/ }),
62297
+
62298
+ /***/ "./models/CreateBitmovinStreamRequest.ts":
62299
+ /*!***********************************************!*\
62300
+ !*** ./models/CreateBitmovinStreamRequest.ts ***!
62301
+ \***********************************************/
62302
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
62303
+
62304
+ "use strict";
62305
+
62306
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
62307
+ exports.CreateBitmovinStreamRequest = void 0;
62308
+ var Mapper_1 = __webpack_require__(/*! ../common/Mapper */ "./common/Mapper.ts");
62309
+ /**
62310
+ * @export
62311
+ * @class CreateBitmovinStreamRequest
62312
+ */
62313
+ var CreateBitmovinStreamRequest = /** @class */ (function () {
62314
+ function CreateBitmovinStreamRequest(obj) {
62315
+ if (!obj) {
62316
+ return;
62317
+ }
62318
+ this.assetUrl = (0, Mapper_1.map)(obj.assetUrl);
62319
+ this.title = (0, Mapper_1.map)(obj.title);
62320
+ this.description = (0, Mapper_1.map)(obj.description);
62321
+ }
62322
+ return CreateBitmovinStreamRequest;
62323
+ }());
62324
+ exports.CreateBitmovinStreamRequest = CreateBitmovinStreamRequest;
62325
+ exports["default"] = CreateBitmovinStreamRequest;
62326
+
62327
+
62208
62328
  /***/ }),
62209
62329
 
62210
62330
  /***/ "./models/CropFilter.ts":
@@ -82436,6 +82556,38 @@ exports.UnsharpFilter = UnsharpFilter;
82436
82556
  exports["default"] = UnsharpFilter;
82437
82557
 
82438
82558
 
82559
+ /***/ }),
82560
+
82561
+ /***/ "./models/UpdateBitmovinStreamRequest.ts":
82562
+ /*!***********************************************!*\
82563
+ !*** ./models/UpdateBitmovinStreamRequest.ts ***!
82564
+ \***********************************************/
82565
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
82566
+
82567
+ "use strict";
82568
+
82569
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
82570
+ exports.UpdateBitmovinStreamRequest = void 0;
82571
+ var Mapper_1 = __webpack_require__(/*! ../common/Mapper */ "./common/Mapper.ts");
82572
+ /**
82573
+ * @export
82574
+ * @class UpdateBitmovinStreamRequest
82575
+ */
82576
+ var UpdateBitmovinStreamRequest = /** @class */ (function () {
82577
+ function UpdateBitmovinStreamRequest(obj) {
82578
+ if (!obj) {
82579
+ return;
82580
+ }
82581
+ this.status = (0, Mapper_1.map)(obj.status);
82582
+ this.title = (0, Mapper_1.map)(obj.title);
82583
+ this.description = (0, Mapper_1.map)(obj.description);
82584
+ }
82585
+ return UpdateBitmovinStreamRequest;
82586
+ }());
82587
+ exports.UpdateBitmovinStreamRequest = UpdateBitmovinStreamRequest;
82588
+ exports["default"] = UpdateBitmovinStreamRequest;
82589
+
82590
+
82439
82591
  /***/ }),
82440
82592
 
82441
82593
  /***/ "./models/UpdateOrganizationRequest.ts":
@@ -84442,6 +84594,9 @@ __exportStar(__webpack_require__(/*! ./BillableEncodingMinutesDetails */ "./mode
84442
84594
  __exportStar(__webpack_require__(/*! ./BitmovinResource */ "./models/BitmovinResource.ts"), exports);
84443
84595
  __exportStar(__webpack_require__(/*! ./BitmovinResponse */ "./models/BitmovinResponse.ts"), exports);
84444
84596
  __exportStar(__webpack_require__(/*! ./BitmovinResponseList */ "./models/BitmovinResponseList.ts"), exports);
84597
+ __exportStar(__webpack_require__(/*! ./BitmovinStreamQuality */ "./models/BitmovinStreamQuality.ts"), exports);
84598
+ __exportStar(__webpack_require__(/*! ./BitmovinStreamResponse */ "./models/BitmovinStreamResponse.ts"), exports);
84599
+ __exportStar(__webpack_require__(/*! ./BitmovinStreamStatus */ "./models/BitmovinStreamStatus.ts"), exports);
84445
84600
  __exportStar(__webpack_require__(/*! ./BitrateSelectionMode */ "./models/BitrateSelectionMode.ts"), exports);
84446
84601
  __exportStar(__webpack_require__(/*! ./BroadcastTsAudioInputStreamConfiguration */ "./models/BroadcastTsAudioInputStreamConfiguration.ts"), exports);
84447
84602
  __exportStar(__webpack_require__(/*! ./BroadcastTsInputStreamConfiguration */ "./models/BroadcastTsInputStreamConfiguration.ts"), exports);
@@ -84493,6 +84648,7 @@ __exportStar(__webpack_require__(/*! ./ContentProtection */ "./models/ContentPro
84493
84648
  __exportStar(__webpack_require__(/*! ./ConvertSccCaption */ "./models/ConvertSccCaption.ts"), exports);
84494
84649
  __exportStar(__webpack_require__(/*! ./ConvertSccCaptionWebVttSettings */ "./models/ConvertSccCaptionWebVttSettings.ts"), exports);
84495
84650
  __exportStar(__webpack_require__(/*! ./ConvertSccPositionMode */ "./models/ConvertSccPositionMode.ts"), exports);
84651
+ __exportStar(__webpack_require__(/*! ./CreateBitmovinStreamRequest */ "./models/CreateBitmovinStreamRequest.ts"), exports);
84496
84652
  __exportStar(__webpack_require__(/*! ./CropFilter */ "./models/CropFilter.ts"), exports);
84497
84653
  __exportStar(__webpack_require__(/*! ./CustomAttribute */ "./models/CustomAttribute.ts"), exports);
84498
84654
  __exportStar(__webpack_require__(/*! ./CustomData */ "./models/CustomData.ts"), exports);
@@ -85001,6 +85157,7 @@ __exportStar(__webpack_require__(/*! ./TuInterDepth */ "./models/TuInterDepth.ts
85001
85157
  __exportStar(__webpack_require__(/*! ./TuIntraDepth */ "./models/TuIntraDepth.ts"), exports);
85002
85158
  __exportStar(__webpack_require__(/*! ./Tweaks */ "./models/Tweaks.ts"), exports);
85003
85159
  __exportStar(__webpack_require__(/*! ./UnsharpFilter */ "./models/UnsharpFilter.ts"), exports);
85160
+ __exportStar(__webpack_require__(/*! ./UpdateBitmovinStreamRequest */ "./models/UpdateBitmovinStreamRequest.ts"), exports);
85004
85161
  __exportStar(__webpack_require__(/*! ./UpdateOrganizationRequest */ "./models/UpdateOrganizationRequest.ts"), exports);
85005
85162
  __exportStar(__webpack_require__(/*! ./UtcTiming */ "./models/UtcTiming.ts"), exports);
85006
85163
  __exportStar(__webpack_require__(/*! ./VariantStreamDroppingMode */ "./models/VariantStreamDroppingMode.ts"), exports);
@@ -88631,6 +88788,159 @@ var ThirdPartyLicensingApi = /** @class */ (function (_super) {
88631
88788
  exports["default"] = ThirdPartyLicensingApi;
88632
88789
 
88633
88790
 
88791
+ /***/ }),
88792
+
88793
+ /***/ "./streams/BitmovinStreamResponseListQueryParams.ts":
88794
+ /*!**********************************************************!*\
88795
+ !*** ./streams/BitmovinStreamResponseListQueryParams.ts ***!
88796
+ \**********************************************************/
88797
+ /***/ ((__unused_webpack_module, exports) => {
88798
+
88799
+ "use strict";
88800
+
88801
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
88802
+ exports.BitmovinStreamResponseListQueryParamsBuilder = void 0;
88803
+ var BitmovinStreamResponseListQueryParamsBuilder = /** @class */ (function () {
88804
+ function BitmovinStreamResponseListQueryParamsBuilder() {
88805
+ this.internalParams = {};
88806
+ }
88807
+ /**
88808
+ *
88809
+ * @param offset Index of the first item to return, starting at 0. Default is 0
88810
+ */
88811
+ BitmovinStreamResponseListQueryParamsBuilder.prototype.offset = function (offset) {
88812
+ this.internalParams.offset = offset;
88813
+ return this;
88814
+ };
88815
+ /**
88816
+ *
88817
+ * @param limit Maximum number of items to return. Default is 25, maximum is 100
88818
+ */
88819
+ BitmovinStreamResponseListQueryParamsBuilder.prototype.limit = function (limit) {
88820
+ this.internalParams.limit = limit;
88821
+ return this;
88822
+ };
88823
+ /**
88824
+ *
88825
+ * @param sort Order list result according an resource attribute. The fields that can be used for sorting are: + `createdAt`
88826
+ */
88827
+ BitmovinStreamResponseListQueryParamsBuilder.prototype.sort = function (sort) {
88828
+ this.internalParams.sort = sort;
88829
+ return this;
88830
+ };
88831
+ BitmovinStreamResponseListQueryParamsBuilder.prototype.buildQueryParams = function () {
88832
+ return this.internalParams;
88833
+ };
88834
+ return BitmovinStreamResponseListQueryParamsBuilder;
88835
+ }());
88836
+ exports.BitmovinStreamResponseListQueryParamsBuilder = BitmovinStreamResponseListQueryParamsBuilder;
88837
+
88838
+
88839
+ /***/ }),
88840
+
88841
+ /***/ "./streams/StreamsApi.ts":
88842
+ /*!*******************************!*\
88843
+ !*** ./streams/StreamsApi.ts ***!
88844
+ \*******************************/
88845
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
88846
+
88847
+ "use strict";
88848
+
88849
+ var __extends = (this && this.__extends) || (function () {
88850
+ var extendStatics = function (d, b) {
88851
+ extendStatics = Object.setPrototypeOf ||
88852
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
88853
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
88854
+ return extendStatics(d, b);
88855
+ };
88856
+ return function (d, b) {
88857
+ if (typeof b !== "function" && b !== null)
88858
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
88859
+ extendStatics(d, b);
88860
+ function __() { this.constructor = d; }
88861
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
88862
+ };
88863
+ })();
88864
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
88865
+ var BaseAPI_1 = __webpack_require__(/*! ../common/BaseAPI */ "./common/BaseAPI.ts");
88866
+ var Mapper_1 = __webpack_require__(/*! ../common/Mapper */ "./common/Mapper.ts");
88867
+ var BitmovinStreamResponse_1 = __webpack_require__(/*! ../models/BitmovinStreamResponse */ "./models/BitmovinStreamResponse.ts");
88868
+ var PaginationResponse_1 = __webpack_require__(/*! ../models/PaginationResponse */ "./models/PaginationResponse.ts");
88869
+ var BitmovinStreamResponseListQueryParams_1 = __webpack_require__(/*! ./BitmovinStreamResponseListQueryParams */ "./streams/BitmovinStreamResponseListQueryParams.ts");
88870
+ /**
88871
+ * StreamsApi - object-oriented interface
88872
+ * @export
88873
+ * @class StreamsApi
88874
+ * @extends {BaseAPI}
88875
+ */
88876
+ var StreamsApi = /** @class */ (function (_super) {
88877
+ __extends(StreamsApi, _super);
88878
+ function StreamsApi(configuration) {
88879
+ return _super.call(this, configuration) || this;
88880
+ }
88881
+ /**
88882
+ * @summary Create new Stream
88883
+ * @param {CreateBitmovinStreamRequest} createBitmovinStreamRequest Create a new Stream.
88884
+ * @throws {BitmovinError}
88885
+ * @memberof StreamsApi
88886
+ */
88887
+ StreamsApi.prototype.create = function (createBitmovinStreamRequest) {
88888
+ return this.restClient.post('/streams', {}, createBitmovinStreamRequest).then(function (response) {
88889
+ return (0, Mapper_1.map)(response, BitmovinStreamResponse_1.default);
88890
+ });
88891
+ };
88892
+ /**
88893
+ * @summary Get Stream by id
88894
+ * @param {string} streamId Id of the Stream.
88895
+ * @throws {BitmovinError}
88896
+ * @memberof StreamsApi
88897
+ */
88898
+ StreamsApi.prototype.get = function (streamId) {
88899
+ var pathParamMap = {
88900
+ stream_id: streamId
88901
+ };
88902
+ return this.restClient.get('/streams/{stream_id}', pathParamMap).then(function (response) {
88903
+ return (0, Mapper_1.map)(response, BitmovinStreamResponse_1.default);
88904
+ });
88905
+ };
88906
+ /**
88907
+ * @summary Get paginated list of Streams
88908
+ * @param {*} [queryParameters] query parameters for filtering, sorting and pagination
88909
+ * @throws {BitmovinError}
88910
+ * @memberof StreamsApi
88911
+ */
88912
+ StreamsApi.prototype.list = function (queryParameters) {
88913
+ var queryParams = {};
88914
+ if (typeof queryParameters === 'function') {
88915
+ queryParams = queryParameters(new BitmovinStreamResponseListQueryParams_1.BitmovinStreamResponseListQueryParamsBuilder()).buildQueryParams();
88916
+ }
88917
+ else if (queryParameters) {
88918
+ queryParams = queryParameters;
88919
+ }
88920
+ return this.restClient.get('/streams', {}, queryParams).then(function (response) {
88921
+ return new PaginationResponse_1.default(response, BitmovinStreamResponse_1.default);
88922
+ });
88923
+ };
88924
+ /**
88925
+ * @summary Update Stream by id
88926
+ * @param {string} streamId Id of the Stream.
88927
+ * @param {UpdateBitmovinStreamRequest} updateBitmovinStreamRequest Stream fields to update.
88928
+ * @throws {BitmovinError}
88929
+ * @memberof StreamsApi
88930
+ */
88931
+ StreamsApi.prototype.patchBitmovinStreamsStreamsByStreamId = function (streamId, updateBitmovinStreamRequest) {
88932
+ var pathParamMap = {
88933
+ stream_id: streamId
88934
+ };
88935
+ return this.restClient.patch('/streams/{stream_id}', pathParamMap, updateBitmovinStreamRequest).then(function (response) {
88936
+ return (0, Mapper_1.map)(response, BitmovinStreamResponse_1.default);
88937
+ });
88938
+ };
88939
+ return StreamsApi;
88940
+ }(BaseAPI_1.BaseAPI));
88941
+ exports["default"] = StreamsApi;
88942
+
88943
+
88634
88944
  /***/ }),
88635
88945
 
88636
88946
  /***/ "../node_modules/url-join/lib/url-join.js":