Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
abd83f7201
1564
openvidu-insecure-angular/package-lock.json
generated
1564
openvidu-insecure-angular/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -6,24 +6,24 @@
|
||||
"start": "ng serve"
|
||||
},
|
||||
"dependencies": {
|
||||
"@angular/common": "7.0.0",
|
||||
"@angular/compiler": "7.0.0",
|
||||
"@angular/core": "7.0.0",
|
||||
"@angular/http": "7.0.0",
|
||||
"@angular/forms": "7.0.0",
|
||||
"@angular/platform-browser": "7.0.0",
|
||||
"@angular/platform-browser-dynamic": "7.0.0",
|
||||
"core-js": "2.5.7",
|
||||
"@angular/common": "7.1.3",
|
||||
"@angular/compiler": "7.1.3",
|
||||
"@angular/core": "7.1.3",
|
||||
"@angular/http": "7.1.3",
|
||||
"@angular/forms": "7.1.3",
|
||||
"@angular/platform-browser": "7.1.3",
|
||||
"@angular/platform-browser-dynamic": "7.1.3",
|
||||
"core-js": "2.6.0",
|
||||
"openvidu-browser": "2.6.0",
|
||||
"zone.js": "0.8.26"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular/cli": "7.0.1",
|
||||
"@angular/compiler-cli": "7.0.0",
|
||||
"@angular-devkit/build-angular": "0.10.1",
|
||||
"@angular/cli": "7.1.3",
|
||||
"@angular/compiler-cli": "7.1.3",
|
||||
"@angular-devkit/build-angular": "0.11.3",
|
||||
"codelyzer": "4.5.0",
|
||||
"ts-node": "7.0.1",
|
||||
"tslint": "5.11.0",
|
||||
"typescript": "3.1.3"
|
||||
"typescript": "3.1.6"
|
||||
}
|
||||
}
|
||||
|
||||
13465
openvidu-insecure-react/package-lock.json
generated
13465
openvidu-insecure-react/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -5,9 +5,9 @@
|
||||
"dependencies": {
|
||||
"axios": "0.18.0",
|
||||
"openvidu-browser": "2.6.0",
|
||||
"react": "16.5.2",
|
||||
"react-dom": "16.5.2",
|
||||
"react-scripts": "1.1.5"
|
||||
"react": "16.6.3",
|
||||
"react-dom": "16.6.3",
|
||||
"react-scripts": "2.1.1"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "react-scripts start",
|
||||
|
||||
16
openvidu-ionic/build.json
Normal file
16
openvidu-ionic/build.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"ios": {
|
||||
"build": {
|
||||
"buildFlag": ["-UseModernBuildSystem=0"]
|
||||
},
|
||||
"run": {
|
||||
"buildFlag": ["-UseModernBuildSystem=0"]
|
||||
},
|
||||
"debug": {
|
||||
"buildFlag": ["-UseModernBuildSystem=0"]
|
||||
},
|
||||
"release": {
|
||||
"buildFlag": ["-UseModernBuildSystem=0"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,7 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<widget id="io.openvidu.sample" version="2.5.0" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
|
||||
<name>OpenVidu Sample</name>
|
||||
<description>OpenVidu sample app</description>
|
||||
<widget id="io.openvidu.sampleios" version="2.6.0" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
|
||||
<name>OpenVidu Ionic</name>
|
||||
<description>OpenVidu Ionic app compatible with Android and iOS</description>
|
||||
<author email="openvidu@gmail.com" href="https://openvidu.io/">OpenVidu</author>
|
||||
<content src="index.html" />
|
||||
<access origin="*" />
|
||||
@ -48,6 +48,16 @@
|
||||
<platform name="ios">
|
||||
<allow-intent href="itms:*" />
|
||||
<allow-intent href="itms-apps:*" />
|
||||
<hook src="hooks/iosrtc-swift-support.js" type="after_platform_add" />
|
||||
<config-file parent="NSCameraUsageDescription" target="*-Info.plist">
|
||||
<string>OpenVidu needs access to your camera</string>
|
||||
</config-file>
|
||||
<config-file parent="NSContactsUsageDescription" target="*-Info.plist">
|
||||
<string>OpenVidu needs access to contacts</string>
|
||||
</config-file>
|
||||
<config-file parent="NSMicrophoneUsageDescription" target="*-Info.plist">
|
||||
<string>OpenVidu needs access to your microphone</string>
|
||||
</config-file>
|
||||
<icon height="57" src="resources/ios/icon/icon.png" width="57" />
|
||||
<icon height="114" src="resources/ios/icon/icon@2x.png" width="114" />
|
||||
<icon height="40" src="resources/ios/icon/icon-40.png" width="40" />
|
||||
@ -88,5 +98,8 @@
|
||||
<plugin name="cordova-plugin-ionic-webview" spec="^2.0.0" />
|
||||
<plugin name="cordova-plugin-ionic-keyboard" spec="^2.0.5" />
|
||||
<plugin name="cordova-plugin-android-permissions" spec="^1.0.0" />
|
||||
<engine name="android" spec="~7.1.1" />
|
||||
<plugin name="cordova-plugin-iosrtc" spec="4.0.2" />
|
||||
<engine name="android" spec="7.1.1" />
|
||||
<engine name="ios" spec="4.5.5" />
|
||||
<engine name="browser" spec="5.0.4" />
|
||||
</widget>
|
||||
|
||||
143
openvidu-ionic/hooks/iosrtc-swift-support.js
Executable file
143
openvidu-ionic/hooks/iosrtc-swift-support.js
Executable file
@ -0,0 +1,143 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
'use strict';
|
||||
|
||||
// This hook automates this:
|
||||
// https://github.com/BasqueVoIPMafia/cordova-plugin-iosrtc/blob/master/docs/Building.md
|
||||
|
||||
var
|
||||
fs = require("fs"),
|
||||
path = require("path"),
|
||||
xcode = require('xcode'),
|
||||
|
||||
BUILD_VERSION = '9.0',
|
||||
BUILD_VERSION_XCODE = '"' + BUILD_VERSION + '"',
|
||||
SWIFT_VERSION = '3.0',
|
||||
SWIFT_VERSION_XCODE = '"' + SWIFT_VERSION + '"',
|
||||
RUNPATH_SEARCH_PATHS = '@executable_path/Frameworks',
|
||||
RUNPATH_SEARCH_PATHS_XCODE = '"' + RUNPATH_SEARCH_PATHS + '"',
|
||||
ENABLE_BITCODE = 'NO',
|
||||
ENABLE_BITCODE_XCODE = '"' + ENABLE_BITCODE + '"',
|
||||
BRIDGING_HEADER_END = '/Plugins/cordova-plugin-iosrtc/cordova-plugin-iosrtc-Bridging-Header.h',
|
||||
COMMENT_KEY = /_comment$/;
|
||||
|
||||
|
||||
// Helpers
|
||||
|
||||
// Returns the project name
|
||||
function getProjectName(protoPath) {
|
||||
var
|
||||
cordovaConfigPath = path.join(protoPath, 'config.xml'),
|
||||
content = fs.readFileSync(cordovaConfigPath, 'utf-8');
|
||||
|
||||
return /<name>([\s\S]*)<\/name>/mi.exec(content)[1].trim();
|
||||
}
|
||||
|
||||
// Drops the comments
|
||||
function nonComments(obj) {
|
||||
var
|
||||
keys = Object.keys(obj),
|
||||
newObj = {},
|
||||
i = 0;
|
||||
|
||||
for (i; i < keys.length; i += 1) {
|
||||
if (!COMMENT_KEY.test(keys[i])) {
|
||||
newObj[keys[i]] = obj[keys[i]];
|
||||
}
|
||||
}
|
||||
|
||||
return newObj;
|
||||
}
|
||||
|
||||
|
||||
// Starting here
|
||||
|
||||
module.exports = function (context) {
|
||||
var
|
||||
projectRoot = context.opts.projectRoot,
|
||||
projectName = getProjectName(projectRoot),
|
||||
xcconfigPath = path.join(projectRoot, '/platforms/ios/cordova/build.xcconfig'),
|
||||
xcodeProjectName = projectName + '.xcodeproj',
|
||||
xcodeProjectPath = path.join(projectRoot, 'platforms', 'ios', xcodeProjectName, 'project.pbxproj'),
|
||||
swiftBridgingHead = projectName + BRIDGING_HEADER_END,
|
||||
swiftBridgingHeadXcode = '"' + swiftBridgingHead + '"',
|
||||
swiftOptions = [''], // <-- begin to file appending AFTER initial newline
|
||||
xcodeProject;
|
||||
|
||||
// Checking if the project files are in the right place
|
||||
if (!fs.existsSync(xcodeProjectPath)) {
|
||||
debugerror('an error occurred searching the project file at: "' + xcodeProjectPath + '"');
|
||||
|
||||
return;
|
||||
}
|
||||
debug('".pbxproj" project file found: ' + xcodeProjectPath);
|
||||
|
||||
if (!fs.existsSync(xcconfigPath)) {
|
||||
debugerror('an error occurred searching the project file at: "' + xcconfigPath + '"');
|
||||
|
||||
return;
|
||||
}
|
||||
debug('".xcconfig" project file found: ' + xcconfigPath);
|
||||
|
||||
xcodeProject = xcode.project(xcodeProjectPath);
|
||||
|
||||
// Showing info about the tasks to do
|
||||
debug('fixing issues in the generated project files:');
|
||||
debug('- "iOS Deployment Target" and "Deployment Target" to: ' + BUILD_VERSION_XCODE);
|
||||
debug('- "Runpath Search Paths" to: ' + RUNPATH_SEARCH_PATHS_XCODE);
|
||||
debug('- "Objective-C Bridging Header" to: ' + swiftBridgingHeadXcode);
|
||||
debug('- "ENABLE_BITCODE" set to: ' + ENABLE_BITCODE_XCODE);
|
||||
debug('- "SWIFT_VERSION" set to: ' + SWIFT_VERSION_XCODE);
|
||||
|
||||
|
||||
// Massaging the files
|
||||
|
||||
// "build.xcconfig"
|
||||
swiftOptions.push('LD_RUNPATH_SEARCH_PATHS = ' + RUNPATH_SEARCH_PATHS);
|
||||
swiftOptions.push('SWIFT_OBJC_BRIDGING_HEADER = ' + swiftBridgingHead);
|
||||
swiftOptions.push('IPHONEOS_DEPLOYMENT_TARGET = ' + BUILD_VERSION);
|
||||
swiftOptions.push('ENABLE_BITCODE = ' + ENABLE_BITCODE);
|
||||
swiftOptions.push('SWIFT_VERSION = ' + SWIFT_VERSION);
|
||||
// NOTE: Not needed
|
||||
// swiftOptions.push('EMBEDDED_CONTENT_CONTAINS_SWIFT = YES');
|
||||
fs.appendFileSync(xcconfigPath, swiftOptions.join('\n'));
|
||||
debug('file correctly fixed: ' + xcconfigPath);
|
||||
|
||||
// "project.pbxproj"
|
||||
// Parsing it
|
||||
xcodeProject.parse(function (error) {
|
||||
var configurations, buildSettings;
|
||||
|
||||
if (error) {
|
||||
debugerror('an error occurred during the parsing of the project file');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
configurations = nonComments(xcodeProject.pbxXCBuildConfigurationSection());
|
||||
// Adding or changing the parameters we need
|
||||
Object.keys(configurations).forEach(function (config) {
|
||||
buildSettings = configurations[config].buildSettings;
|
||||
buildSettings.LD_RUNPATH_SEARCH_PATHS = RUNPATH_SEARCH_PATHS_XCODE;
|
||||
buildSettings.SWIFT_OBJC_BRIDGING_HEADER = swiftBridgingHeadXcode;
|
||||
buildSettings.IPHONEOS_DEPLOYMENT_TARGET = BUILD_VERSION_XCODE;
|
||||
buildSettings.ENABLE_BITCODE = ENABLE_BITCODE_XCODE;
|
||||
buildSettings.SWIFT_VERSION = SWIFT_VERSION_XCODE;
|
||||
});
|
||||
|
||||
// Writing the file again
|
||||
fs.writeFileSync(xcodeProjectPath, xcodeProject.writeSync(), 'utf-8');
|
||||
debug('file correctly fixed: ' + xcodeProjectPath);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
function debug(msg) {
|
||||
console.log('iosrtc-swift-support.js [INFO] ' + msg);
|
||||
}
|
||||
|
||||
|
||||
function debugerror(msg) {
|
||||
console.error('iosrtc-swift-support.js [ERROR] ' + msg);
|
||||
}
|
||||
777
openvidu-ionic/package-lock.json
generated
777
openvidu-ionic/package-lock.json
generated
@ -1879,6 +1879,11 @@
|
||||
"callsite": "1.0.0"
|
||||
}
|
||||
},
|
||||
"big-integer": {
|
||||
"version": "1.6.36",
|
||||
"resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.36.tgz",
|
||||
"integrity": "sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg=="
|
||||
},
|
||||
"big.js": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
|
||||
@ -1968,6 +1973,22 @@
|
||||
"multicast-dns-service-types": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"bplist-creator": {
|
||||
"version": "0.0.7",
|
||||
"resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.7.tgz",
|
||||
"integrity": "sha1-N98VNgkoJLh8QvlXsBNEEXNyrkU=",
|
||||
"requires": {
|
||||
"stream-buffers": "~2.2.0"
|
||||
}
|
||||
},
|
||||
"bplist-parser": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz",
|
||||
"integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=",
|
||||
"requires": {
|
||||
"big-integer": "^1.6.7"
|
||||
}
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
@ -2926,6 +2947,661 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"cordova-browser": {
|
||||
"version": "5.0.4",
|
||||
"resolved": "https://registry.npmjs.org/cordova-browser/-/cordova-browser-5.0.4.tgz",
|
||||
"integrity": "sha512-EDuG+9NGsaYpNSY6wF0kR34m1m38V+nRglGXxQ609fgMYrMHEYR2lg38nDr1Os4qeF0LJz8UQ7nq7Y+idg6Aig==",
|
||||
"requires": {
|
||||
"abbrev": "*",
|
||||
"accepts": "*",
|
||||
"ansi": "*",
|
||||
"ansi-regex": "2.1.1",
|
||||
"ansi-styles": "2.2.1",
|
||||
"array-flatten": "1.1.1",
|
||||
"balanced-match": "*",
|
||||
"base64-js": "1.2.0",
|
||||
"big-integer": "*",
|
||||
"body-parser": "1.18.2",
|
||||
"bplist-parser": "*",
|
||||
"brace-expansion": "*",
|
||||
"bytes": "*",
|
||||
"chalk": "1.1.3",
|
||||
"compressible": "*",
|
||||
"compression": "1.7.2",
|
||||
"concat-map": "*",
|
||||
"content-disposition": "*",
|
||||
"content-type": "*",
|
||||
"cookie": "*",
|
||||
"cookie-signature": "1.0.6",
|
||||
"cordova-common": "2.2.5",
|
||||
"cordova-registry-mapper": "*",
|
||||
"cordova-serve": "2.0.1",
|
||||
"debug": "2.6.9",
|
||||
"depd": "*",
|
||||
"destroy": "*",
|
||||
"ee-first": "*",
|
||||
"elementtree": "0.1.6",
|
||||
"encodeurl": "*",
|
||||
"escape-html": "*",
|
||||
"escape-string-regexp": "*",
|
||||
"etag": "*",
|
||||
"express": "*",
|
||||
"finalhandler": "*",
|
||||
"forwarded": "*",
|
||||
"fresh": "*",
|
||||
"glob": "5.0.15",
|
||||
"has-ansi": "2.0.0",
|
||||
"http-errors": "1.6.3",
|
||||
"iconv-lite": "0.4.19",
|
||||
"inflight": "*",
|
||||
"inherits": "*",
|
||||
"ipaddr.js": "1.6.0",
|
||||
"is-wsl": "*",
|
||||
"media-typer": "*",
|
||||
"merge-descriptors": "*",
|
||||
"methods": "*",
|
||||
"mime": "1.4.1",
|
||||
"mime-db": "1.33.0",
|
||||
"mime-types": "2.1.18",
|
||||
"minimatch": "*",
|
||||
"ms": "2.0.0",
|
||||
"negotiator": "*",
|
||||
"nopt": "3.0.6",
|
||||
"on-finished": "*",
|
||||
"on-headers": "*",
|
||||
"once": "*",
|
||||
"opn": "*",
|
||||
"parseurl": "*",
|
||||
"path-is-absolute": "*",
|
||||
"path-to-regexp": "0.1.7",
|
||||
"plist": "2.1.0",
|
||||
"proxy-addr": "2.0.3",
|
||||
"q": "*",
|
||||
"qs": "6.5.1",
|
||||
"range-parser": "*",
|
||||
"raw-body": "2.3.2",
|
||||
"safe-buffer": "5.1.1",
|
||||
"sax": "0.3.5",
|
||||
"send": "*",
|
||||
"serve-static": "*",
|
||||
"setprototypeof": "*",
|
||||
"shelljs": "0.5.3",
|
||||
"statuses": "1.4.0",
|
||||
"strip-ansi": "3.0.1",
|
||||
"supports-color": "2.0.0",
|
||||
"type-is": "*",
|
||||
"underscore": "*",
|
||||
"unorm": "*",
|
||||
"unpipe": "*",
|
||||
"utils-merge": "*",
|
||||
"vary": "*",
|
||||
"wrappy": "*",
|
||||
"xmlbuilder": "8.2.2",
|
||||
"xmldom": "*"
|
||||
},
|
||||
"dependencies": {
|
||||
"abbrev": {
|
||||
"version": "1.1.1",
|
||||
"bundled": true
|
||||
},
|
||||
"accepts": {
|
||||
"version": "1.3.5",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"mime-types": "~2.1.18",
|
||||
"negotiator": "0.6.1"
|
||||
}
|
||||
},
|
||||
"ansi": {
|
||||
"version": "0.3.1",
|
||||
"bundled": true
|
||||
},
|
||||
"ansi-regex": {
|
||||
"version": "2.1.1",
|
||||
"bundled": true
|
||||
},
|
||||
"ansi-styles": {
|
||||
"version": "2.2.1",
|
||||
"bundled": true
|
||||
},
|
||||
"array-flatten": {
|
||||
"version": "1.1.1",
|
||||
"bundled": true
|
||||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true
|
||||
},
|
||||
"base64-js": {
|
||||
"version": "1.2.0",
|
||||
"bundled": true
|
||||
},
|
||||
"big-integer": {
|
||||
"version": "1.6.32",
|
||||
"bundled": true
|
||||
},
|
||||
"body-parser": {
|
||||
"version": "1.18.2",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"bytes": "3.0.0",
|
||||
"content-type": "~1.0.4",
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.1",
|
||||
"http-errors": "~1.6.2",
|
||||
"iconv-lite": "0.4.19",
|
||||
"on-finished": "~2.3.0",
|
||||
"qs": "6.5.1",
|
||||
"raw-body": "2.3.2",
|
||||
"type-is": "~1.6.15"
|
||||
}
|
||||
},
|
||||
"bplist-parser": {
|
||||
"version": "0.1.1",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"big-integer": "^1.6.7"
|
||||
}
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"bytes": {
|
||||
"version": "3.0.0",
|
||||
"bundled": true
|
||||
},
|
||||
"chalk": {
|
||||
"version": "1.1.3",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^2.2.1",
|
||||
"escape-string-regexp": "^1.0.2",
|
||||
"has-ansi": "^2.0.0",
|
||||
"strip-ansi": "^3.0.0",
|
||||
"supports-color": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"compressible": {
|
||||
"version": "2.0.14",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"mime-db": ">= 1.34.0 < 2"
|
||||
},
|
||||
"dependencies": {
|
||||
"mime-db": {
|
||||
"version": "1.34.0",
|
||||
"bundled": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"compression": {
|
||||
"version": "1.7.2",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"accepts": "~1.3.4",
|
||||
"bytes": "3.0.0",
|
||||
"compressible": "~2.0.13",
|
||||
"debug": "2.6.9",
|
||||
"on-headers": "~1.0.1",
|
||||
"safe-buffer": "5.1.1",
|
||||
"vary": "~1.1.2"
|
||||
}
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"bundled": true
|
||||
},
|
||||
"content-disposition": {
|
||||
"version": "0.5.2",
|
||||
"bundled": true
|
||||
},
|
||||
"content-type": {
|
||||
"version": "1.0.4",
|
||||
"bundled": true
|
||||
},
|
||||
"cookie": {
|
||||
"version": "0.3.1",
|
||||
"bundled": true
|
||||
},
|
||||
"cookie-signature": {
|
||||
"version": "1.0.6",
|
||||
"bundled": true
|
||||
},
|
||||
"cordova-common": {
|
||||
"version": "2.2.5",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"ansi": "^0.3.1",
|
||||
"bplist-parser": "^0.1.0",
|
||||
"cordova-registry-mapper": "^1.1.8",
|
||||
"elementtree": "0.1.6",
|
||||
"glob": "^5.0.13",
|
||||
"minimatch": "^3.0.0",
|
||||
"plist": "^2.1.0",
|
||||
"q": "^1.4.1",
|
||||
"shelljs": "^0.5.3",
|
||||
"underscore": "^1.8.3",
|
||||
"unorm": "^1.3.3"
|
||||
}
|
||||
},
|
||||
"cordova-registry-mapper": {
|
||||
"version": "1.1.15",
|
||||
"bundled": true
|
||||
},
|
||||
"cordova-serve": {
|
||||
"version": "2.0.1",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"chalk": "^1.1.1",
|
||||
"compression": "^1.6.0",
|
||||
"express": "^4.13.3",
|
||||
"opn": "^5.3.0",
|
||||
"shelljs": "^0.5.3"
|
||||
}
|
||||
},
|
||||
"debug": {
|
||||
"version": "2.6.9",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"depd": {
|
||||
"version": "1.1.2",
|
||||
"bundled": true
|
||||
},
|
||||
"destroy": {
|
||||
"version": "1.0.4",
|
||||
"bundled": true
|
||||
},
|
||||
"ee-first": {
|
||||
"version": "1.1.1",
|
||||
"bundled": true
|
||||
},
|
||||
"elementtree": {
|
||||
"version": "0.1.6",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"sax": "0.3.5"
|
||||
}
|
||||
},
|
||||
"encodeurl": {
|
||||
"version": "1.0.2",
|
||||
"bundled": true
|
||||
},
|
||||
"escape-html": {
|
||||
"version": "1.0.3",
|
||||
"bundled": true
|
||||
},
|
||||
"escape-string-regexp": {
|
||||
"version": "1.0.5",
|
||||
"bundled": true
|
||||
},
|
||||
"etag": {
|
||||
"version": "1.8.1",
|
||||
"bundled": true
|
||||
},
|
||||
"express": {
|
||||
"version": "4.16.3",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"accepts": "~1.3.5",
|
||||
"array-flatten": "1.1.1",
|
||||
"body-parser": "1.18.2",
|
||||
"content-disposition": "0.5.2",
|
||||
"content-type": "~1.0.4",
|
||||
"cookie": "0.3.1",
|
||||
"cookie-signature": "1.0.6",
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.2",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"etag": "~1.8.1",
|
||||
"finalhandler": "1.1.1",
|
||||
"fresh": "0.5.2",
|
||||
"merge-descriptors": "1.0.1",
|
||||
"methods": "~1.1.2",
|
||||
"on-finished": "~2.3.0",
|
||||
"parseurl": "~1.3.2",
|
||||
"path-to-regexp": "0.1.7",
|
||||
"proxy-addr": "~2.0.3",
|
||||
"qs": "6.5.1",
|
||||
"range-parser": "~1.2.0",
|
||||
"safe-buffer": "5.1.1",
|
||||
"send": "0.16.2",
|
||||
"serve-static": "1.13.2",
|
||||
"setprototypeof": "1.1.0",
|
||||
"statuses": "~1.4.0",
|
||||
"type-is": "~1.6.16",
|
||||
"utils-merge": "1.0.1",
|
||||
"vary": "~1.1.2"
|
||||
}
|
||||
},
|
||||
"finalhandler": {
|
||||
"version": "1.1.1",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"debug": "2.6.9",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"on-finished": "~2.3.0",
|
||||
"parseurl": "~1.3.2",
|
||||
"statuses": "~1.4.0",
|
||||
"unpipe": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"forwarded": {
|
||||
"version": "0.1.2",
|
||||
"bundled": true
|
||||
},
|
||||
"fresh": {
|
||||
"version": "0.5.2",
|
||||
"bundled": true
|
||||
},
|
||||
"glob": {
|
||||
"version": "5.0.15",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "2 || 3",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"has-ansi": {
|
||||
"version": "2.0.0",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"ansi-regex": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"http-errors": {
|
||||
"version": "1.6.3",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"depd": "~1.1.2",
|
||||
"inherits": "2.0.3",
|
||||
"setprototypeof": "1.1.0",
|
||||
"statuses": ">= 1.4.0 < 2"
|
||||
}
|
||||
},
|
||||
"iconv-lite": {
|
||||
"version": "0.4.19",
|
||||
"bundled": true
|
||||
},
|
||||
"inflight": {
|
||||
"version": "1.0.6",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"bundled": true
|
||||
},
|
||||
"ipaddr.js": {
|
||||
"version": "1.6.0",
|
||||
"bundled": true
|
||||
},
|
||||
"is-wsl": {
|
||||
"version": "1.1.0",
|
||||
"bundled": true
|
||||
},
|
||||
"media-typer": {
|
||||
"version": "0.3.0",
|
||||
"bundled": true
|
||||
},
|
||||
"merge-descriptors": {
|
||||
"version": "1.0.1",
|
||||
"bundled": true
|
||||
},
|
||||
"methods": {
|
||||
"version": "1.1.2",
|
||||
"bundled": true
|
||||
},
|
||||
"mime": {
|
||||
"version": "1.4.1",
|
||||
"bundled": true
|
||||
},
|
||||
"mime-db": {
|
||||
"version": "1.33.0",
|
||||
"bundled": true
|
||||
},
|
||||
"mime-types": {
|
||||
"version": "2.1.18",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"mime-db": "~1.33.0"
|
||||
}
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.0.4",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"bundled": true
|
||||
},
|
||||
"negotiator": {
|
||||
"version": "0.6.1",
|
||||
"bundled": true
|
||||
},
|
||||
"nopt": {
|
||||
"version": "3.0.6",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"abbrev": "1"
|
||||
}
|
||||
},
|
||||
"on-finished": {
|
||||
"version": "2.3.0",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"ee-first": "1.1.1"
|
||||
}
|
||||
},
|
||||
"on-headers": {
|
||||
"version": "1.0.1",
|
||||
"bundled": true
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"opn": {
|
||||
"version": "5.3.0",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"is-wsl": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"parseurl": {
|
||||
"version": "1.3.2",
|
||||
"bundled": true
|
||||
},
|
||||
"path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"bundled": true
|
||||
},
|
||||
"path-to-regexp": {
|
||||
"version": "0.1.7",
|
||||
"bundled": true
|
||||
},
|
||||
"plist": {
|
||||
"version": "2.1.0",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"base64-js": "1.2.0",
|
||||
"xmlbuilder": "8.2.2",
|
||||
"xmldom": "0.1.x"
|
||||
}
|
||||
},
|
||||
"proxy-addr": {
|
||||
"version": "2.0.3",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"forwarded": "~0.1.2",
|
||||
"ipaddr.js": "1.6.0"
|
||||
}
|
||||
},
|
||||
"q": {
|
||||
"version": "1.5.1",
|
||||
"bundled": true
|
||||
},
|
||||
"qs": {
|
||||
"version": "6.5.1",
|
||||
"bundled": true
|
||||
},
|
||||
"range-parser": {
|
||||
"version": "1.2.0",
|
||||
"bundled": true
|
||||
},
|
||||
"raw-body": {
|
||||
"version": "2.3.2",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"bytes": "3.0.0",
|
||||
"http-errors": "1.6.2",
|
||||
"iconv-lite": "0.4.19",
|
||||
"unpipe": "1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"depd": {
|
||||
"version": "1.1.1",
|
||||
"bundled": true
|
||||
},
|
||||
"http-errors": {
|
||||
"version": "1.6.2",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"depd": "1.1.1",
|
||||
"inherits": "2.0.3",
|
||||
"setprototypeof": "1.0.3",
|
||||
"statuses": ">= 1.3.1 < 2"
|
||||
}
|
||||
},
|
||||
"setprototypeof": {
|
||||
"version": "1.0.3",
|
||||
"bundled": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.1.1",
|
||||
"bundled": true
|
||||
},
|
||||
"sax": {
|
||||
"version": "0.3.5",
|
||||
"bundled": true
|
||||
},
|
||||
"send": {
|
||||
"version": "0.16.2",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.2",
|
||||
"destroy": "~1.0.4",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"etag": "~1.8.1",
|
||||
"fresh": "0.5.2",
|
||||
"http-errors": "~1.6.2",
|
||||
"mime": "1.4.1",
|
||||
"ms": "2.0.0",
|
||||
"on-finished": "~2.3.0",
|
||||
"range-parser": "~1.2.0",
|
||||
"statuses": "~1.4.0"
|
||||
}
|
||||
},
|
||||
"serve-static": {
|
||||
"version": "1.13.2",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"parseurl": "~1.3.2",
|
||||
"send": "0.16.2"
|
||||
}
|
||||
},
|
||||
"setprototypeof": {
|
||||
"version": "1.1.0",
|
||||
"bundled": true
|
||||
},
|
||||
"shelljs": {
|
||||
"version": "0.5.3",
|
||||
"bundled": true
|
||||
},
|
||||
"statuses": {
|
||||
"version": "1.4.0",
|
||||
"bundled": true
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "3.0.1",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"ansi-regex": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "2.0.0",
|
||||
"bundled": true
|
||||
},
|
||||
"type-is": {
|
||||
"version": "1.6.16",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"media-typer": "0.3.0",
|
||||
"mime-types": "~2.1.18"
|
||||
}
|
||||
},
|
||||
"underscore": {
|
||||
"version": "1.9.1",
|
||||
"bundled": true
|
||||
},
|
||||
"unorm": {
|
||||
"version": "1.4.1",
|
||||
"bundled": true
|
||||
},
|
||||
"unpipe": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true
|
||||
},
|
||||
"utils-merge": {
|
||||
"version": "1.0.1",
|
||||
"bundled": true
|
||||
},
|
||||
"vary": {
|
||||
"version": "1.1.2",
|
||||
"bundled": true
|
||||
},
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"bundled": true
|
||||
},
|
||||
"xmlbuilder": {
|
||||
"version": "8.2.2",
|
||||
"bundled": true
|
||||
},
|
||||
"xmldom": {
|
||||
"version": "0.1.27",
|
||||
"bundled": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"cordova-ios": {
|
||||
"version": "4.5.5",
|
||||
"resolved": "https://registry.npmjs.org/cordova-ios/-/cordova-ios-4.5.5.tgz",
|
||||
@ -3236,9 +3912,20 @@
|
||||
"integrity": "sha512-6ucQ6FdlLdBm8kJfFnzozmBTjru/0xekHP/dAhjoCZggkGRlgs8TsUJFkxa/bV+qi7Dlo50JjmpE4UMWAO+aOQ=="
|
||||
},
|
||||
"cordova-plugin-ionic-webview": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/cordova-plugin-ionic-webview/-/cordova-plugin-ionic-webview-2.2.0.tgz",
|
||||
"integrity": "sha512-mNTJaIRsz83Vntk2d3jrPCnlqEPQsfOJW6U2AzS7WV1T15Jj/STdXI/Uv1vIyvPVd9h1OLF+yu64ZsmQH2VRMQ=="
|
||||
"version": "2.2.5",
|
||||
"resolved": "https://registry.npmjs.org/cordova-plugin-ionic-webview/-/cordova-plugin-ionic-webview-2.2.5.tgz",
|
||||
"integrity": "sha512-Eq1ano906pIpK2/0ZGlT99txq9+SlwPiNJNc6YxJUysIS8Nzfv6yB6Rref1ktRHi5szaVoQ5X8HCqf9Vd5Zmgg=="
|
||||
},
|
||||
"cordova-plugin-iosrtc": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/cordova-plugin-iosrtc/-/cordova-plugin-iosrtc-4.0.2.tgz",
|
||||
"integrity": "sha1-FS2Q9ceOvJ+NVfxLRtpcFT+jQU0=",
|
||||
"requires": {
|
||||
"debug": "^2.6.8",
|
||||
"domready": "^1.0.8",
|
||||
"random-number": "^0.0.7",
|
||||
"yaeti": "^0.0.6"
|
||||
}
|
||||
},
|
||||
"cordova-plugin-splashscreen": {
|
||||
"version": "5.0.2",
|
||||
@ -3435,7 +4122,6 @@
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
@ -3700,6 +4386,11 @@
|
||||
"integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
|
||||
"dev": true
|
||||
},
|
||||
"domready": {
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmjs.org/domready/-/domready-1.0.8.tgz",
|
||||
"integrity": "sha1-kfJS5Ze2Wvd+dFriTdAYXV4m1Yw="
|
||||
},
|
||||
"duplexer2": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
|
||||
@ -5904,6 +6595,12 @@
|
||||
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-4.4.6.tgz",
|
||||
"integrity": "sha512-X+HRyn6Y0HXxSEjIOSH+p7He8QEaAJj3644Ce+MBFVwA8GHbTaPQcA/hO/L9AxzERrOd5UtN1JkgD1TSgPR7IA=="
|
||||
},
|
||||
"ios-deploy": {
|
||||
"version": "1.9.4",
|
||||
"resolved": "https://registry.npmjs.org/ios-deploy/-/ios-deploy-1.9.4.tgz",
|
||||
"integrity": "sha512-pgyc19zgtwGrfx3GL8yV0c0dAPucTpJ0VZkuS3DcqxIZYC48+UW+tBTxI43u1ZDk17mop0ABLs1SkAy5SUQ6pQ==",
|
||||
"optional": true
|
||||
},
|
||||
"ip": {
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
|
||||
@ -7291,8 +7988,7 @@
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
|
||||
"dev": true
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||
},
|
||||
"multicast-dns": {
|
||||
"version": "6.2.3",
|
||||
@ -12833,6 +13529,28 @@
|
||||
"find-up": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"plist": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/plist/-/plist-2.0.1.tgz",
|
||||
"integrity": "sha1-CjLKlIGxw2TpLhjcVch23p0B2os=",
|
||||
"requires": {
|
||||
"base64-js": "1.1.2",
|
||||
"xmlbuilder": "8.2.2",
|
||||
"xmldom": "0.1.x"
|
||||
},
|
||||
"dependencies": {
|
||||
"base64-js": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.1.2.tgz",
|
||||
"integrity": "sha1-1kAMrBxMZgl22Q0HoENR2JOV9eg="
|
||||
},
|
||||
"xmlbuilder": {
|
||||
"version": "8.2.2",
|
||||
"resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz",
|
||||
"integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M="
|
||||
}
|
||||
}
|
||||
},
|
||||
"portfinder": {
|
||||
"version": "1.0.17",
|
||||
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.17.tgz",
|
||||
@ -13186,6 +13904,11 @@
|
||||
"integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==",
|
||||
"dev": true
|
||||
},
|
||||
"random-number": {
|
||||
"version": "0.0.7",
|
||||
"resolved": "https://registry.npmjs.org/random-number/-/random-number-0.0.7.tgz",
|
||||
"integrity": "sha1-fWKxAK3pDxNCNarYwGotLfpc/0g="
|
||||
},
|
||||
"randomatic": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
|
||||
@ -13945,6 +14668,16 @@
|
||||
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
|
||||
"dev": true
|
||||
},
|
||||
"simple-plist": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-0.2.1.tgz",
|
||||
"integrity": "sha1-cXZts1IyaSjPOoByQrp2IyJjZyM=",
|
||||
"requires": {
|
||||
"bplist-creator": "0.0.7",
|
||||
"bplist-parser": "0.1.1",
|
||||
"plist": "2.0.1"
|
||||
}
|
||||
},
|
||||
"slash": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
|
||||
@ -14457,6 +15190,11 @@
|
||||
"readable-stream": "^2.0.2"
|
||||
}
|
||||
},
|
||||
"stream-buffers": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
|
||||
"integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ="
|
||||
},
|
||||
"stream-combiner2": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
|
||||
@ -15972,6 +16710,23 @@
|
||||
"ultron": "~1.1.0"
|
||||
}
|
||||
},
|
||||
"xcode": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/xcode/-/xcode-1.0.0.tgz",
|
||||
"integrity": "sha1-4fWxRDJF3tOMGAeW3xoQ/e2ghOw=",
|
||||
"requires": {
|
||||
"pegjs": "^0.10.0",
|
||||
"simple-plist": "^0.2.1",
|
||||
"uuid": "3.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"uuid": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "http://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz",
|
||||
"integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE="
|
||||
}
|
||||
}
|
||||
},
|
||||
"xml2js": {
|
||||
"version": "0.4.19",
|
||||
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
|
||||
@ -15996,6 +16751,11 @@
|
||||
"integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
|
||||
"dev": true
|
||||
},
|
||||
"xmldom": {
|
||||
"version": "0.1.27",
|
||||
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz",
|
||||
"integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk="
|
||||
},
|
||||
"xmlhttprequest-ssl": {
|
||||
"version": "1.5.5",
|
||||
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
|
||||
@ -16020,6 +16780,11 @@
|
||||
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
|
||||
"dev": true
|
||||
},
|
||||
"yaeti": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz",
|
||||
"integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc="
|
||||
},
|
||||
"yallist": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
|
||||
|
||||
@ -26,19 +26,26 @@
|
||||
"@ionic-native/status-bar": "5.0.0-beta.21",
|
||||
"@ionic/angular": "4.0.0-beta.13",
|
||||
"cordova-android": "7.1.1",
|
||||
"cordova-browser": "5.0.4",
|
||||
"cordova-ios": "4.5.5",
|
||||
"cordova-plugin-android-permissions": "1.0.0",
|
||||
"cordova-plugin-device": "2.0.2",
|
||||
"cordova-plugin-ionic-keyboard": "2.1.3",
|
||||
"cordova-plugin-ionic-webview": "2.2.0",
|
||||
"cordova-plugin-splashscreen": "5.0.2",
|
||||
"cordova-plugin-statusbar": "2.4.2",
|
||||
"cordova-plugin-whitelist": "1.3.3",
|
||||
"cordova-plugin-android-permissions": "^1.0.0",
|
||||
"cordova-plugin-device": "^2.0.2",
|
||||
"cordova-plugin-ionic-keyboard": "^2.1.3",
|
||||
"cordova-plugin-ionic-webview": "^2.2.5",
|
||||
"cordova-plugin-iosrtc": "^4.0.2",
|
||||
"cordova-plugin-splashscreen": "^5.0.2",
|
||||
"cordova-plugin-statusbar": "^2.4.2",
|
||||
"cordova-plugin-whitelist": "^1.3.3",
|
||||
"core-js": "2.5.7",
|
||||
"ios-deploy": "1.9.4",
|
||||
"openvidu-browser": "2.6.0",
|
||||
"rxjs": "6.3.3",
|
||||
"xcode": "1.0.0",
|
||||
"zone.js": "0.8.26"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"ios-deploy": "1.9.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular-devkit/architect": "0.10.3",
|
||||
"@angular-devkit/build-angular": "0.10.3",
|
||||
@ -77,10 +84,13 @@
|
||||
"ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+"
|
||||
},
|
||||
"cordova-plugin-ionic-keyboard": {},
|
||||
"cordova-plugin-android-permissions": {}
|
||||
"cordova-plugin-android-permissions": {},
|
||||
"cordova-plugin-iosrtc": {}
|
||||
},
|
||||
"platforms": [
|
||||
"android"
|
||||
"android",
|
||||
"ios",
|
||||
"browser"
|
||||
]
|
||||
}
|
||||
}
|
||||
@ -4,7 +4,7 @@
|
||||
<ion-toolbar color="dark">
|
||||
<img class="demo-logo" src="assets/images/openvidu_vert_white_bg_trans_cropped.png" />
|
||||
<ion-buttons slot="primary">
|
||||
<ion-button color="light">
|
||||
<ion-button color="light" href="https://github.com/OpenVidu/openvidu-tutorials/tree/master/openvidu-ionic">
|
||||
<ion-icon slot="icon-only" name="logo-github"></ion-icon>
|
||||
</ion-button>
|
||||
</ion-buttons>
|
||||
@ -12,7 +12,7 @@
|
||||
</ion-header>
|
||||
|
||||
<ion-content padding *ngIf="!session">
|
||||
|
||||
|
||||
<div id="img-div"><img src="assets/images/openvidu_grey_bg_transp_cropped.png" /></div>
|
||||
<h1 align="center" id="title">Join a video session</h1>
|
||||
<ion-item>
|
||||
@ -29,48 +29,32 @@
|
||||
<ion-icon slot="start" name="videocam"></ion-icon>
|
||||
Join
|
||||
</ion-button>
|
||||
|
||||
</ion-content>
|
||||
|
||||
|
||||
<ion-content *ngIf="session">
|
||||
<ion-content [scrollEvents]="true" (ionScroll)="refreshVideos()" *ngIf="session">
|
||||
<div id="session-header">
|
||||
<h1 id="session-title">{{mySessionId}}</h1>
|
||||
</div>
|
||||
|
||||
|
||||
<ion-grid>
|
||||
|
||||
<!-- Main Stream -->
|
||||
<ion-row>
|
||||
<ion-col>
|
||||
|
||||
<div *ngIf="mainStreamManager" id="main-video">
|
||||
<user-video [streamManager]="mainStreamManager"></user-video>
|
||||
</div>
|
||||
|
||||
</ion-col>
|
||||
</ion-row>
|
||||
|
||||
<!--Subscribers and Publishers-->
|
||||
<ion-row>
|
||||
<ion-col size="6">
|
||||
<div *ngIf="publisher" class="stream-container">
|
||||
<user-video [streamManager]="publisher" (click)="updateMainStreamManager(publisher)"></user-video>
|
||||
<user-video [streamManager]="publisher"></user-video>
|
||||
</div>
|
||||
</ion-col>
|
||||
|
||||
<ion-col size="6" *ngFor="let sub of subscribers">
|
||||
<div class="stream-container">
|
||||
<user-video [streamManager]="sub" (click)="updateMainStreamManager(sub)"></user-video>
|
||||
<user-video [streamManager]="sub"></user-video>
|
||||
</div>
|
||||
</ion-col>
|
||||
|
||||
</ion-row>
|
||||
|
||||
|
||||
</ion-grid>
|
||||
|
||||
|
||||
<ion-fab vertical="bottom" horizontal="center" slot="fixed">
|
||||
<ion-fab-button mini color="danger" (click)="leaveSession()">
|
||||
<ion-icon name="power"></ion-icon>
|
||||
|
||||
@ -7,7 +7,7 @@ import { Platform } from '@ionic/angular';
|
||||
import { OpenVidu, Publisher, Session, StreamEvent, StreamManager, Subscriber } from 'openvidu-browser';
|
||||
import { throwError as observableThrowError } from 'rxjs';
|
||||
import { catchError } from 'rxjs/operators';
|
||||
|
||||
declare var cordova;
|
||||
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
@ -16,13 +16,13 @@ import { catchError } from 'rxjs/operators';
|
||||
})
|
||||
export class AppComponent implements OnDestroy {
|
||||
|
||||
OPENVIDU_SERVER_URL = 'https://' + location.hostname + ':4443/';
|
||||
OPENVIDU_SERVER_URL = 'https://' + location.hostname + ':4443';
|
||||
OPENVIDU_SERVER_SECRET = 'MY_SECRET';
|
||||
|
||||
ANDROID_PERMISSIONS = [
|
||||
this.androidPermissions.PERMISSION.CAMERA,
|
||||
this.androidPermissions.PERMISSION.RECORD_AUDIO,
|
||||
this.androidPermissions.PERMISSION.MODIFY_AUDIO_SETTINGS,
|
||||
this.androidPermissions.PERMISSION.MODIFY_AUDIO_SETTINGS
|
||||
];
|
||||
|
||||
// OpenVidu objects
|
||||
@ -35,10 +35,6 @@ export class AppComponent implements OnDestroy {
|
||||
mySessionId: string;
|
||||
myUserName: string;
|
||||
|
||||
// Main video of the page, will be 'publisher' or one of the 'subscribers'
|
||||
// Updated by click event
|
||||
mainStreamManager: StreamManager;
|
||||
|
||||
constructor(
|
||||
private platform: Platform,
|
||||
private splashScreen: SplashScreen,
|
||||
@ -54,9 +50,23 @@ export class AppComponent implements OnDestroy {
|
||||
this.platform.ready().then(() => {
|
||||
this.statusBar.styleDefault();
|
||||
this.splashScreen.hide();
|
||||
if (this.platform.is('ios') && this.platform.is('cordova')) {
|
||||
this.initializeAdapterIosRtc();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
initializeAdapterIosRtc() {
|
||||
console.log('Initializing iosrct');
|
||||
cordova.plugins.iosrtc.registerGlobals();
|
||||
// load adapter.js (version 4.0.1)
|
||||
const script2 = document.createElement('script');
|
||||
script2.type = 'text/javascript';
|
||||
script2.src = 'assets/libs/adapter-4.0.1.js';
|
||||
script2.async = false;
|
||||
document.head.appendChild(script2);
|
||||
}
|
||||
|
||||
@HostListener('window:beforeunload')
|
||||
beforeunloadHandler() {
|
||||
// On window closed leave session
|
||||
@ -98,21 +108,28 @@ export class AppComponent implements OnDestroy {
|
||||
// 'getToken' method is simulating what your server-side should do.
|
||||
// 'token' parameter should be retrieved and returned by your own backend
|
||||
this.getToken().then((token) => {
|
||||
// First param is the token got from OpenVidu Server. Second param can be retrieved by every user on event
|
||||
// First param is the token got from OpenVidu Server. Second param will be used by every user on event
|
||||
// 'streamCreated' (property Stream.connection.data), and will be appended to DOM as the user's nickname
|
||||
this.session
|
||||
.connect(token, { clientData: this.myUserName })
|
||||
.then(() => {
|
||||
// --- 5) Requesting and Checking Android Permissions
|
||||
if (this.platform.is('cordova')) {
|
||||
this.checkAndroidPermissions()
|
||||
.then(() => this.initPublisher())
|
||||
.catch((err) => console.error(err));
|
||||
// Ionic platform
|
||||
if (this.platform.is('android')) {
|
||||
console.log('Android platform');
|
||||
this.checkAndroidPermissions()
|
||||
.then(() => this.initPublisher())
|
||||
.catch(err => console.error(err));
|
||||
} else if (this.platform.is('ios')) {
|
||||
console.log('iOS platform');
|
||||
this.initPublisher();
|
||||
}
|
||||
} else {
|
||||
this.initPublisher();
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
.catch(error => {
|
||||
console.log('There was an error connecting to the session:', error.code, error.message);
|
||||
});
|
||||
});
|
||||
@ -129,20 +146,15 @@ export class AppComponent implements OnDestroy {
|
||||
resolution: '640x480', // The resolution of your video
|
||||
frameRate: 30, // The frame rate of your video
|
||||
insertMode: 'APPEND', // How the video is inserted in the target element 'video-container'
|
||||
mirror: true, // Whether to mirror your local video or not
|
||||
mirror: true // Whether to mirror your local video or not
|
||||
});
|
||||
|
||||
// --- 6) Publish your stream ---
|
||||
|
||||
this.session.publish(publisher);
|
||||
|
||||
// Set the main video in the page to display our webcam and store our Publisher
|
||||
this.mainStreamManager = publisher;
|
||||
this.publisher = publisher;
|
||||
}
|
||||
|
||||
updateMainStreamManager(streamManager: StreamManager) {
|
||||
this.mainStreamManager = streamManager;
|
||||
this.session.publish(publisher).then(() => {
|
||||
// Store our Publisher
|
||||
this.publisher = publisher;
|
||||
});
|
||||
}
|
||||
|
||||
leaveSession() {
|
||||
@ -160,6 +172,12 @@ export class AppComponent implements OnDestroy {
|
||||
this.generateParticipantInfo();
|
||||
}
|
||||
|
||||
refreshVideos() {
|
||||
if (this.platform.is('ios') && this.platform.is('cordova')) {
|
||||
cordova.plugins.iosrtc.refreshVideos();
|
||||
}
|
||||
}
|
||||
|
||||
private checkAndroidPermissions(): Promise<any> {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.platform.ready().then(() => {
|
||||
@ -168,13 +186,13 @@ export class AppComponent implements OnDestroy {
|
||||
.then(() => {
|
||||
this.androidPermissions
|
||||
.checkPermission(this.androidPermissions.PERMISSION.CAMERA)
|
||||
.then((camera) => {
|
||||
.then(camera => {
|
||||
this.androidPermissions
|
||||
.checkPermission(this.androidPermissions.PERMISSION.RECORD_AUDIO)
|
||||
.then((audio) => {
|
||||
.then(audio => {
|
||||
this.androidPermissions
|
||||
.checkPermission(this.androidPermissions.PERMISSION.MODIFY_AUDIO_SETTINGS)
|
||||
.then((modifyAudio) => {
|
||||
.then(modifyAudio => {
|
||||
if (camera.hasPermission && audio.hasPermission && modifyAudio.hasPermission) {
|
||||
resolve();
|
||||
} else {
|
||||
@ -194,7 +212,7 @@ export class AppComponent implements OnDestroy {
|
||||
);
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
.catch(err => {
|
||||
console.error(
|
||||
'Checking permission ' +
|
||||
this.androidPermissions.PERMISSION.MODIFY_AUDIO_SETTINGS +
|
||||
@ -203,19 +221,19 @@ export class AppComponent implements OnDestroy {
|
||||
reject(err);
|
||||
});
|
||||
})
|
||||
.catch((err) => {
|
||||
.catch(err => {
|
||||
console.error(
|
||||
'Checking permission ' + this.androidPermissions.PERMISSION.RECORD_AUDIO + ' failed',
|
||||
);
|
||||
reject(err);
|
||||
});
|
||||
})
|
||||
.catch((err) => {
|
||||
.catch(err => {
|
||||
console.error('Checking permission ' + this.androidPermissions.PERMISSION.CAMERA + ' failed');
|
||||
reject(err);
|
||||
});
|
||||
})
|
||||
.catch((err) => console.error('Error requesting permissions: ', err));
|
||||
.catch(err => console.error('Error requesting permissions: ', err));
|
||||
});
|
||||
});
|
||||
}
|
||||
@ -246,6 +264,10 @@ export class AppComponent implements OnDestroy {
|
||||
*/
|
||||
|
||||
getToken(): Promise<string> {
|
||||
if (this.platform.is('ios') && this.platform.is('cordova') && this.OPENVIDU_SERVER_URL === 'https://localhost:4443') {
|
||||
// To make easier first steps with iOS apps, use demos OpenVidu Sever if no custom valid server is configured
|
||||
this.OPENVIDU_SERVER_URL = 'https://demos.openvidu.io:4443';
|
||||
}
|
||||
return this.createSession(this.mySessionId).then((sessionId) => {
|
||||
return this.createToken(sessionId);
|
||||
});
|
||||
|
||||
@ -20,8 +20,8 @@ import { UserVideoComponent } from './user-video.component';
|
||||
StatusBar,
|
||||
SplashScreen,
|
||||
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
|
||||
AndroidPermissions,
|
||||
AndroidPermissions
|
||||
],
|
||||
bootstrap: [AppComponent],
|
||||
bootstrap: [AppComponent]
|
||||
})
|
||||
export class AppModule { }
|
||||
|
||||
@ -1,32 +1,78 @@
|
||||
import { AfterViewInit, Component, ElementRef, Input, ViewChild } from '@angular/core';
|
||||
import { StreamManager } from 'openvidu-browser';
|
||||
|
||||
import { AfterViewInit, Component, ElementRef, Input, ViewChild, OnDestroy } from '@angular/core';
|
||||
import { StreamManager, StreamPropertyChangedEvent } from 'openvidu-browser';
|
||||
import { Platform } from '@ionic/angular';
|
||||
declare var cordova;
|
||||
|
||||
@Component({
|
||||
selector: 'ov-video',
|
||||
template: '<video #videoElement></video>',
|
||||
styles: [
|
||||
`
|
||||
video {
|
||||
width: inherit;
|
||||
}
|
||||
`,
|
||||
],
|
||||
template: '<video #videoElement></video>'
|
||||
})
|
||||
export class OpenViduVideoComponent implements AfterViewInit {
|
||||
export class OpenViduVideoComponent implements AfterViewInit, OnDestroy {
|
||||
|
||||
@ViewChild('videoElement') elementRef: ElementRef;
|
||||
_streamManager: StreamManager;
|
||||
|
||||
rotationFunction;
|
||||
|
||||
constructor(private platform: Platform) {}
|
||||
|
||||
ngAfterViewInit() {
|
||||
this._streamManager.addVideoElement(this.elementRef.nativeElement);
|
||||
if (this.isIos() && this._streamManager.remote) {
|
||||
this.rotationFunction = () => {
|
||||
// Give the remote video some time to update its dimensions when rotating the device
|
||||
setTimeout(() => {
|
||||
this.applyIosIonicVideoAttributes();
|
||||
cordova.plugins.iosrtc.refreshVideos();
|
||||
}, 250);
|
||||
};
|
||||
(<any>window).addEventListener('orientationchange', this.rotationFunction);
|
||||
}
|
||||
this.updateVideoView();
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
if (!!this.rotationFunction) {
|
||||
(<any>window).removeEventListener('orientationchange', this.rotationFunction);
|
||||
}
|
||||
}
|
||||
|
||||
@Input()
|
||||
set streamManager(streamManager: StreamManager) {
|
||||
this._streamManager = streamManager;
|
||||
if (!!this.elementRef) {
|
||||
this._streamManager.addVideoElement(this.elementRef.nativeElement);
|
||||
if (this.isIos()) {
|
||||
this._streamManager.on('streamPropertyChanged', event => {
|
||||
if ((<StreamPropertyChangedEvent>event).changedProperty === 'videoDimensions') {
|
||||
this.applyIosIonicVideoAttributes();
|
||||
cordova.plugins.iosrtc.refreshVideos();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private updateVideoView() {
|
||||
this._streamManager.addVideoElement(this.elementRef.nativeElement);
|
||||
if (this.isIos()) {
|
||||
(<HTMLVideoElement>this.elementRef.nativeElement).onloadedmetadata = () => {
|
||||
this.applyIosIonicVideoAttributes();
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
private applyIosIonicVideoAttributes() {
|
||||
const ratio = this._streamManager.stream.videoDimensions.height / this._streamManager.stream.videoDimensions.width;
|
||||
this.elementRef.nativeElement.style.width = '100% !important';
|
||||
this.elementRef.nativeElement.style.objectFit = 'fill';
|
||||
this.elementRef.nativeElement.style.zIndex = '-1';
|
||||
const computedWidth = this.elementRef.nativeElement.offsetWidth;
|
||||
this.elementRef.nativeElement.style.height = computedWidth * ratio + 'px';
|
||||
if (!this._streamManager.remote) {
|
||||
// It is a Publisher video. Custom iosrtc plugin mirror video
|
||||
this.elementRef.nativeElement.style.transform = 'scaleX(-1)';
|
||||
}
|
||||
cordova.plugins.iosrtc.refreshVideos();
|
||||
}
|
||||
|
||||
private isIos(): boolean {
|
||||
return this.platform.is('ios') && this.platform.is('cordova');
|
||||
}
|
||||
}
|
||||
|
||||
3720
openvidu-ionic/src/assets/libs/adapter-4.0.1.js
Normal file
3720
openvidu-ionic/src/assets/libs/adapter-4.0.1.js
Normal file
File diff suppressed because it is too large
Load Diff
@ -10,3 +10,6 @@
|
||||
@import "~@ionic/angular/css/text-transformation.css";
|
||||
@import "~@ionic/angular/css/flex-utils.css";
|
||||
|
||||
:root {
|
||||
--ion-background-color: transparent;
|
||||
}
|
||||
1646
openvidu-library-angular/package-lock.json
generated
1646
openvidu-library-angular/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -11,38 +11,41 @@
|
||||
},
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@angular/common": "7.0.0",
|
||||
"@angular/compiler": "7.0.0",
|
||||
"@angular/core": "7.0.0",
|
||||
"@angular/forms": "7.0.0",
|
||||
"@angular/http": "7.0.0",
|
||||
"@angular/platform-browser": "7.0.0",
|
||||
"@angular/platform-browser-dynamic": "7.0.0",
|
||||
"@angular/router": "7.0.0",
|
||||
"core-js": "2.5.7",
|
||||
"@angular/animations": "7.1.3",
|
||||
"@angular/cdk": "7.1.1",
|
||||
"@angular/common": "7.1.3",
|
||||
"@angular/compiler": "7.1.3",
|
||||
"@angular/core": "7.1.3",
|
||||
"@angular/forms": "7.1.3",
|
||||
"@angular/http": "7.1.3",
|
||||
"@angular/material": "7.1.1",
|
||||
"@angular/platform-browser": "7.1.3",
|
||||
"@angular/platform-browser-dynamic": "7.1.3",
|
||||
"@angular/router": "7.1.3",
|
||||
"core-js": "2.6.0",
|
||||
"openvidu-angular": "2.6.0",
|
||||
"rxjs": "6.3.3",
|
||||
"zone.js": "0.8.26"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular/compiler-cli": "7.0.0",
|
||||
"@angular-devkit/build-angular": "0.10.1",
|
||||
"typescript": "3.1.3",
|
||||
"@angular/cli": "7.0.1",
|
||||
"@angular/language-service": "7.0.0",
|
||||
"@types/jasmine": "2.8.9",
|
||||
"@types/jasminewd2": "2.0.5",
|
||||
"@types/node": "10.12.0",
|
||||
"codelyzer": "4.4.4",
|
||||
"jasmine-core": "3.2.1",
|
||||
"@angular/compiler-cli": "7.1.3",
|
||||
"@angular-devkit/build-angular": "0.11.3",
|
||||
"@angular/cli": "7.1.3",
|
||||
"@angular/language-service": "7.1.3",
|
||||
"@types/jasmine": "3.3.1",
|
||||
"@types/jasminewd2": "2.0.6",
|
||||
"@types/node": "10.12.15",
|
||||
"codelyzer": "4.5.0",
|
||||
"jasmine-core": "3.3.0",
|
||||
"jasmine-spec-reporter": "4.2.1",
|
||||
"karma": "3.0.0",
|
||||
"karma": "3.1.3",
|
||||
"karma-chrome-launcher": "2.2.0",
|
||||
"karma-coverage-istanbul-reporter": "2.0.4",
|
||||
"karma-jasmine": "1.1.2",
|
||||
"karma-jasmine-html-reporter": "1.3.1",
|
||||
"karma-jasmine": "2.0.1",
|
||||
"karma-jasmine-html-reporter": "1.4.0",
|
||||
"protractor": "5.4.1",
|
||||
"ts-node": "7.0.1",
|
||||
"tslint": "5.11.0"
|
||||
"tslint": "5.11.0",
|
||||
"typescript": "3.1.6"
|
||||
}
|
||||
}
|
||||
|
||||
2886
openvidu-library-react/package-lock.json
generated
2886
openvidu-library-react/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -5,9 +5,9 @@
|
||||
"dependencies": {
|
||||
"axios": "0.18.0",
|
||||
"openvidu-react": "2.6.0",
|
||||
"react": "16.6.0",
|
||||
"react-dom": "16.6.0",
|
||||
"react-scripts": "2.0.5"
|
||||
"react": "16.6.3",
|
||||
"react-dom": "16.6.3",
|
||||
"react-scripts": "2.1.1"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "react-scripts start",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user