diff --git a/.gitignore b/.gitignore
index 9e406a57..a49ae8ad 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,19 @@
+
node_modules
*.tgz
+package-lock.json
+
+plugins/NativeScriptAngularCompilerPlugin.d.ts
+plugins/NativeScriptAngularCompilerPlugin.js
+plugins/NativeScriptAngularCompilerPlugin.js.map
+
+plugins/PlatformFSPlugin.d.ts
+plugins/PlatformFSPlugin.js
+plugins/PlatformFSPlugin.js.map
+
+plugins/WatchStateLoggerPlugin.d.ts
+plugins/WatchStateLoggerPlugin.js
+plugins/WatchStateLoggerPlugin.js.map
+
+hooks
+.DS_Store
diff --git a/.npmignore b/.npmignore
index b9c5c28a..d4915faa 100644
--- a/.npmignore
+++ b/.npmignore
@@ -1 +1,2 @@
prepublish
+demo
\ No newline at end of file
diff --git a/bin/ns-bundle b/bin/ns-bundle
index bd436c25..8e45dae7 100755
--- a/bin/ns-bundle
+++ b/bin/ns-bundle
@@ -225,7 +225,7 @@ function spawnChildProcess(command, ...args) {
const childProcess = spawn(command, escapedArgs, {
stdio: "inherit",
- pwd: PROJECT_DIR,
+ cwd: PROJECT_DIR,
shell: true,
});
diff --git a/demo/.gitignore b/demo/.gitignore
new file mode 100644
index 00000000..3f3200bc
--- /dev/null
+++ b/demo/.gitignore
@@ -0,0 +1,21 @@
+node_modules
+platforms
+hooks
+report
+
+**/*.map
+
+reports/
+test-results.xml
+
+tsconfig.aot.json
+
+vendor.js
+vendor-platform.android.js
+vendor-platform.ios.js
+
+vendor.ts
+vendor-platform.android.ts
+vendor-platform.ios.ts
+
+webpack.config.js
diff --git a/demo/AngularApp/.gitignore b/demo/AngularApp/.gitignore
new file mode 100644
index 00000000..f84eb8e5
--- /dev/null
+++ b/demo/AngularApp/.gitignore
@@ -0,0 +1,12 @@
+node_modules
+platforms
+hooks
+
+app/**/*.js
+e2e/**/*.js
+e2e/**/*.map
+e2e/reports/
+test-results.xml
+
+app/item/items.component.android.css
+app/item/items.component.ios.css
\ No newline at end of file
diff --git a/demo/AngularApp/.vscode/launch.json b/demo/AngularApp/.vscode/launch.json
new file mode 100644
index 00000000..c8276a2a
--- /dev/null
+++ b/demo/AngularApp/.vscode/launch.json
@@ -0,0 +1,34 @@
+{
+ // Use IntelliSense to learn about possible attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "type": "node",
+ "request": "launch",
+ "name": "Debug",
+ "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
+ "args": [
+ "-u",
+ "tdd",
+ "--timeout",
+ "999999",
+ "--colors",
+ "--opts",
+ "./e2e/config/mocha.opts",
+ "--runType",
+ "android23",
+ "--reuseDevice"
+ // "${workspaceFolder}/test"
+ ],
+ "internalConsoleOptions": "openOnSessionStart"
+ },
+ {
+ "type": "node",
+ "request": "launch",
+ "name": "Launch Program",
+ "program": "${file}"
+ }
+ ]
+}
diff --git a/demo/AngularApp/app/App_Resources/Android/AndroidManifest.xml b/demo/AngularApp/app/App_Resources/Android/AndroidManifest.xml
new file mode 100644
index 00000000..9db83215
--- /dev/null
+++ b/demo/AngularApp/app/App_Resources/Android/AndroidManifest.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/AngularApp/app/App_Resources/Android/app.gradle b/demo/AngularApp/app/App_Resources/Android/app.gradle
new file mode 100644
index 00000000..e45b55b8
--- /dev/null
+++ b/demo/AngularApp/app/App_Resources/Android/app.gradle
@@ -0,0 +1,16 @@
+// Add your native dependencies here:
+
+// Uncomment to add recyclerview-v7 dependency
+//dependencies {
+// compile 'com.android.support:recyclerview-v7:+'
+//}
+
+android {
+ defaultConfig {
+ generatedDensities = []
+ applicationId = "org.nativescript.AngularApp"
+ }
+ aaptOptions {
+ additionalParameters "--no-version-vectors"
+ }
+}
diff --git a/demo/AngularApp/app/App_Resources/Android/drawable-hdpi/background.png b/demo/AngularApp/app/App_Resources/Android/drawable-hdpi/background.png
new file mode 100644
index 00000000..eb381c25
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/Android/drawable-hdpi/background.png differ
diff --git a/demo/AngularApp/app/App_Resources/Android/drawable-hdpi/icon.png b/demo/AngularApp/app/App_Resources/Android/drawable-hdpi/icon.png
new file mode 100755
index 00000000..9cde84cd
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/Android/drawable-hdpi/icon.png differ
diff --git a/demo/AngularApp/app/App_Resources/Android/drawable-hdpi/logo.png b/demo/AngularApp/app/App_Resources/Android/drawable-hdpi/logo.png
new file mode 100644
index 00000000..5218f4c9
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/Android/drawable-hdpi/logo.png differ
diff --git a/demo/AngularApp/app/App_Resources/Android/drawable-ldpi/background.png b/demo/AngularApp/app/App_Resources/Android/drawable-ldpi/background.png
new file mode 100644
index 00000000..748b2adf
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/Android/drawable-ldpi/background.png differ
diff --git a/demo/AngularApp/app/App_Resources/Android/drawable-ldpi/icon.png b/demo/AngularApp/app/App_Resources/Android/drawable-ldpi/icon.png
new file mode 100755
index 00000000..4d6a674b
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/Android/drawable-ldpi/icon.png differ
diff --git a/demo/AngularApp/app/App_Resources/Android/drawable-ldpi/logo.png b/demo/AngularApp/app/App_Resources/Android/drawable-ldpi/logo.png
new file mode 100644
index 00000000..b9e102a7
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/Android/drawable-ldpi/logo.png differ
diff --git a/demo/AngularApp/app/App_Resources/Android/drawable-mdpi/background.png b/demo/AngularApp/app/App_Resources/Android/drawable-mdpi/background.png
new file mode 100644
index 00000000..efeaf290
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/Android/drawable-mdpi/background.png differ
diff --git a/demo/AngularApp/app/App_Resources/Android/drawable-mdpi/icon.png b/demo/AngularApp/app/App_Resources/Android/drawable-mdpi/icon.png
new file mode 100755
index 00000000..92ccc85a
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/Android/drawable-mdpi/icon.png differ
diff --git a/demo/AngularApp/app/App_Resources/Android/drawable-mdpi/logo.png b/demo/AngularApp/app/App_Resources/Android/drawable-mdpi/logo.png
new file mode 100644
index 00000000..62633876
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/Android/drawable-mdpi/logo.png differ
diff --git a/demo/AngularApp/app/App_Resources/Android/drawable-nodpi/splash_screen.xml b/demo/AngularApp/app/App_Resources/Android/drawable-nodpi/splash_screen.xml
new file mode 100644
index 00000000..ada77f92
--- /dev/null
+++ b/demo/AngularApp/app/App_Resources/Android/drawable-nodpi/splash_screen.xml
@@ -0,0 +1,8 @@
+
+ -
+
+
+ -
+
+
+
\ No newline at end of file
diff --git a/demo/AngularApp/app/App_Resources/Android/drawable-xhdpi/background.png b/demo/AngularApp/app/App_Resources/Android/drawable-xhdpi/background.png
new file mode 100644
index 00000000..612bbd07
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/Android/drawable-xhdpi/background.png differ
diff --git a/demo/AngularApp/app/App_Resources/Android/drawable-xhdpi/icon.png b/demo/AngularApp/app/App_Resources/Android/drawable-xhdpi/icon.png
new file mode 100644
index 00000000..8bcde627
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/Android/drawable-xhdpi/icon.png differ
diff --git a/demo/AngularApp/app/App_Resources/Android/drawable-xhdpi/logo.png b/demo/AngularApp/app/App_Resources/Android/drawable-xhdpi/logo.png
new file mode 100644
index 00000000..ad8ee2f4
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/Android/drawable-xhdpi/logo.png differ
diff --git a/demo/AngularApp/app/App_Resources/Android/drawable-xxhdpi/background.png b/demo/AngularApp/app/App_Resources/Android/drawable-xxhdpi/background.png
new file mode 100644
index 00000000..0fa88e23
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/Android/drawable-xxhdpi/background.png differ
diff --git a/demo/AngularApp/app/App_Resources/Android/drawable-xxhdpi/icon.png b/demo/AngularApp/app/App_Resources/Android/drawable-xxhdpi/icon.png
new file mode 100644
index 00000000..9d81c85d
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/Android/drawable-xxhdpi/icon.png differ
diff --git a/demo/AngularApp/app/App_Resources/Android/drawable-xxhdpi/logo.png b/demo/AngularApp/app/App_Resources/Android/drawable-xxhdpi/logo.png
new file mode 100644
index 00000000..66832783
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/Android/drawable-xxhdpi/logo.png differ
diff --git a/demo/AngularApp/app/App_Resources/Android/drawable-xxxhdpi/background.png b/demo/AngularApp/app/App_Resources/Android/drawable-xxxhdpi/background.png
new file mode 100644
index 00000000..c650f643
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/Android/drawable-xxxhdpi/background.png differ
diff --git a/demo/AngularApp/app/App_Resources/Android/drawable-xxxhdpi/icon.png b/demo/AngularApp/app/App_Resources/Android/drawable-xxxhdpi/icon.png
new file mode 100644
index 00000000..9a34d0d4
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/Android/drawable-xxxhdpi/icon.png differ
diff --git a/demo/AngularApp/app/App_Resources/Android/drawable-xxxhdpi/logo.png b/demo/AngularApp/app/App_Resources/Android/drawable-xxxhdpi/logo.png
new file mode 100644
index 00000000..fa6331c8
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/Android/drawable-xxxhdpi/logo.png differ
diff --git a/demo/AngularApp/app/App_Resources/Android/values-v21/colors.xml b/demo/AngularApp/app/App_Resources/Android/values-v21/colors.xml
new file mode 100644
index 00000000..a64641a9
--- /dev/null
+++ b/demo/AngularApp/app/App_Resources/Android/values-v21/colors.xml
@@ -0,0 +1,4 @@
+
+
+ #3d5afe
+
\ No newline at end of file
diff --git a/demo/AngularApp/app/App_Resources/Android/values-v21/styles.xml b/demo/AngularApp/app/App_Resources/Android/values-v21/styles.xml
new file mode 100644
index 00000000..dac8727c
--- /dev/null
+++ b/demo/AngularApp/app/App_Resources/Android/values-v21/styles.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo/AngularApp/app/App_Resources/Android/values/colors.xml b/demo/AngularApp/app/App_Resources/Android/values/colors.xml
new file mode 100644
index 00000000..74ad8829
--- /dev/null
+++ b/demo/AngularApp/app/App_Resources/Android/values/colors.xml
@@ -0,0 +1,7 @@
+
+
+ #F5F5F5
+ #757575
+ #33B5E5
+ #272734
+
\ No newline at end of file
diff --git a/demo/AngularApp/app/App_Resources/Android/values/styles.xml b/demo/AngularApp/app/App_Resources/Android/values/styles.xml
new file mode 100644
index 00000000..c793e6d4
--- /dev/null
+++ b/demo/AngularApp/app/App_Resources/Android/values/styles.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 00000000..4034b76e
--- /dev/null
+++ b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,98 @@
+{
+ "images" : [
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "icon-29.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "icon-29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "icon-29@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "icon-40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "icon-40@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "icon-60@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "icon-60@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "icon-29.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "icon-29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "icon-40.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "icon-40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "icon-76.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "icon-76@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "83.5x83.5",
+ "idiom" : "ipad",
+ "filename" : "icon-83.5@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "1024x1024",
+ "idiom" : "ios-marketing",
+ "filename" : "icon-1024.png",
+ "scale" : "1x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png
new file mode 100644
index 00000000..a1d7eb47
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png
new file mode 100644
index 00000000..bb9b9e86
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png
new file mode 100644
index 00000000..ec609dcf
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png
new file mode 100644
index 00000000..a9718080
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png
new file mode 100644
index 00000000..214800ee
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png
new file mode 100644
index 00000000..8554b88a
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png
new file mode 100644
index 00000000..a22626ba
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png
new file mode 100644
index 00000000..a22626ba
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png
new file mode 100644
index 00000000..492c9c8e
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png
new file mode 100644
index 00000000..9208113c
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png
new file mode 100644
index 00000000..24415e5a
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png
new file mode 100644
index 00000000..b3ef1bf0
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/Contents.json b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/Contents.json
new file mode 100644
index 00000000..da4a164c
--- /dev/null
+++ b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Contents.json b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Contents.json
new file mode 100644
index 00000000..4414bad0
--- /dev/null
+++ b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Contents.json
@@ -0,0 +1,158 @@
+{
+ "images" : [
+ {
+ "extent" : "full-screen",
+ "idiom" : "iphone",
+ "subtype" : "736h",
+ "filename" : "Default-736h@3x.png",
+ "minimum-system-version" : "8.0",
+ "orientation" : "portrait",
+ "scale" : "3x"
+ },
+ {
+ "extent" : "full-screen",
+ "idiom" : "iphone",
+ "subtype" : "736h",
+ "filename" : "Default-Landscape@3x.png",
+ "minimum-system-version" : "8.0",
+ "orientation" : "landscape",
+ "scale" : "3x"
+ },
+ {
+ "extent" : "full-screen",
+ "idiom" : "iphone",
+ "subtype" : "667h",
+ "filename" : "Default-667h@2x.png",
+ "minimum-system-version" : "8.0",
+ "orientation" : "portrait",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "iphone",
+ "filename" : "Default@2x.png",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "2x"
+ },
+ {
+ "extent" : "full-screen",
+ "idiom" : "iphone",
+ "subtype" : "retina4",
+ "filename" : "Default-568h@2x.png",
+ "minimum-system-version" : "7.0",
+ "orientation" : "portrait",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "filename" : "Default-Portrait.png",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "filename" : "Default-Landscape.png",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "filename" : "Default-Portrait@2x.png",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "filename" : "Default-Landscape@2x.png",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "iphone",
+ "filename" : "Default.png",
+ "extent" : "full-screen",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "iphone",
+ "filename" : "Default@2x.png",
+ "extent" : "full-screen",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "iphone",
+ "filename" : "Default-568h@2x.png",
+ "extent" : "full-screen",
+ "subtype" : "retina4",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "extent" : "to-status-bar",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "filename" : "Default-Portrait.png",
+ "extent" : "full-screen",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "extent" : "to-status-bar",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "filename" : "Default-Landscape.png",
+ "extent" : "full-screen",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "extent" : "to-status-bar",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "filename" : "Default-Portrait@2x.png",
+ "extent" : "full-screen",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "extent" : "to-status-bar",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "filename" : "Default-Landscape@2x.png",
+ "extent" : "full-screen",
+ "scale" : "2x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png
new file mode 100644
index 00000000..d7f17fcd
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png
new file mode 100644
index 00000000..b8841540
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-736h@3x.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-736h@3x.png
new file mode 100644
index 00000000..faab4b63
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-736h@3x.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape.png
new file mode 100644
index 00000000..3365ba3c
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@2x.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@2x.png
new file mode 100644
index 00000000..a44945c1
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@2x.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@3x.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@3x.png
new file mode 100644
index 00000000..e6dca626
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@3x.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait.png
new file mode 100644
index 00000000..1a500796
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png
new file mode 100644
index 00000000..73d8b920
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default.png
new file mode 100644
index 00000000..9f1f6ce3
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default@2x.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default@2x.png
new file mode 100644
index 00000000..514fc5cd
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default@2x.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json
new file mode 100644
index 00000000..4f4e9c50
--- /dev/null
+++ b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchScreen-AspectFill.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchScreen-AspectFill@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png
new file mode 100644
index 00000000..c293f9c7
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png
new file mode 100644
index 00000000..233693a6
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json
new file mode 100644
index 00000000..23c0ffd7
--- /dev/null
+++ b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchScreen-Center.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchScreen-Center@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png
new file mode 100644
index 00000000..a5a775a2
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png
new file mode 100644
index 00000000..154c1934
Binary files /dev/null and b/demo/AngularApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png differ
diff --git a/demo/AngularApp/app/App_Resources/iOS/Info.plist b/demo/AngularApp/app/App_Resources/iOS/Info.plist
new file mode 100644
index 00000000..ea3e3ea2
--- /dev/null
+++ b/demo/AngularApp/app/App_Resources/iOS/Info.plist
@@ -0,0 +1,47 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleDisplayName
+ ${PRODUCT_NAME}
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1.0
+ LSRequiresIPhoneOS
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIRequiresFullScreen
+
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+
+
diff --git a/demo/AngularApp/app/App_Resources/iOS/LaunchScreen.storyboard b/demo/AngularApp/app/App_Resources/iOS/LaunchScreen.storyboard
new file mode 100644
index 00000000..2ad9471e
--- /dev/null
+++ b/demo/AngularApp/app/App_Resources/iOS/LaunchScreen.storyboard
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/AngularApp/app/App_Resources/iOS/build.xcconfig b/demo/AngularApp/app/App_Resources/iOS/build.xcconfig
new file mode 100644
index 00000000..4b011849
--- /dev/null
+++ b/demo/AngularApp/app/App_Resources/iOS/build.xcconfig
@@ -0,0 +1,7 @@
+// You can add custom settings here
+// for example you can uncomment the following line to force distribution code signing
+// CODE_SIGN_IDENTITY = iPhone Distribution
+// To build for device with Xcode 8 you need to specify your development team. More info: https://developer.apple.com/library/prerelease/content/releasenotes/DeveloperTools/RN-Xcode/Introduction.html
+// DEVELOPMENT_TEAM = YOUR_TEAM_ID;
+ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
diff --git a/demo/AngularApp/app/README.md b/demo/AngularApp/app/README.md
new file mode 100644
index 00000000..132ede3b
--- /dev/null
+++ b/demo/AngularApp/app/README.md
@@ -0,0 +1,25 @@
+# NativeScript Angular Template
+
+This template creates a "Hello, world" NativeScript app using TypeScript and Angular.
+
+You can create a new app that uses this template with either the `--template` option.
+
+```
+tns create my-app-name --template tns-template-hello-world-ng
+```
+
+Or the `--ng` shorthand.
+
+```
+tns create my-app-name --ng
+```
+
+> Note: Both commands will create a new NativeScript app that uses the latest version of this template published to [npm] (https://www.npmjs.com/package/tns-template-hello-world-ng).
+
+If you want to create a new app that uses the source of the template from the `master` branch, you can execute the following:
+
+```
+tns create my-app-name --template https://github.com/NativeScript/template-hello-world-ng.git#master
+```
+
+**NB:** Please, have in mind that the master branch may refer to dependencies that are not on NPM yet!
diff --git a/demo/AngularApp/app/app.android.css b/demo/AngularApp/app/app.android.css
new file mode 100644
index 00000000..4b3f61b7
--- /dev/null
+++ b/demo/AngularApp/app/app.android.css
@@ -0,0 +1,9 @@
+@import '~nativescript-theme-core/css/core.light.css';
+
+ActionBar {
+ background-color: #7F9;
+}
+
+.app-class {
+ background-color:#7f9
+}
diff --git a/demo/AngularApp/app/app.component.html b/demo/AngularApp/app/app.component.html
new file mode 100644
index 00000000..41b82ccc
--- /dev/null
+++ b/demo/AngularApp/app/app.component.html
@@ -0,0 +1 @@
+
diff --git a/demo/AngularApp/app/app.component.ts b/demo/AngularApp/app/app.component.ts
new file mode 100644
index 00000000..b95dd6f0
--- /dev/null
+++ b/demo/AngularApp/app/app.component.ts
@@ -0,0 +1,8 @@
+import { Component } from "@angular/core";
+
+@Component({
+ selector: "ns-app",
+ templateUrl: "app.component.html",
+})
+
+export class AppComponent { }
diff --git a/demo/AngularApp/app/app.ios.css b/demo/AngularApp/app/app.ios.css
new file mode 100644
index 00000000..8cfd4de4
--- /dev/null
+++ b/demo/AngularApp/app/app.ios.css
@@ -0,0 +1,9 @@
+@import '~nativescript-theme-core/css/core.light.css';
+
+ActionBar {
+ background-color: #999;
+}
+
+.app-class{
+ background-color:#999
+}
diff --git a/demo/AngularApp/app/app.module.ts b/demo/AngularApp/app/app.module.ts
new file mode 100644
index 00000000..330039b4
--- /dev/null
+++ b/demo/AngularApp/app/app.module.ts
@@ -0,0 +1,44 @@
+import { NgModule, NO_ERRORS_SCHEMA } from "@angular/core";
+import { NativeScriptModule } from "nativescript-angular/nativescript.module";
+import { AppRoutingModule } from "./app.routing";
+import { AppComponent } from "./app.component";
+
+import { ItemService } from "./item/item.service";
+import { ItemsComponent } from "./item/items.component";
+import { ItemDetailComponent } from "./item/item-detail.component";
+
+// import { PlayfulSpirit } from "./directive";
+
+// Uncomment and add to NgModule imports if you need to use two-way binding
+// import { NativeScriptFormsModule } from "nativescript-angular/forms";
+
+// Uncomment and add to NgModule imports if you need to use the HTTP wrapper
+// import { NativeScriptHttpModule } from "nativescript-angular/http";
+
+@NgModule({
+ bootstrap: [
+ AppComponent
+ ],
+ imports: [
+ NativeScriptModule,
+ AppRoutingModule
+ ],
+ declarations: [
+ AppComponent,
+ ItemsComponent,
+ ItemDetailComponent,
+ // https://github.com/NativeScript/nativescript-dev-webpack/issues/332
+ // We would really want this to work but currently it fails with AoT:
+ // PlayfulSpirit
+ ],
+ providers: [
+ ItemService
+ ],
+ schemas: [
+ NO_ERRORS_SCHEMA
+ ]
+})
+/*
+Pass your application module to the bootstrapModule function located in main.ts to start your app
+*/
+export class AppModule { }
diff --git a/demo/AngularApp/app/app.routing.ts b/demo/AngularApp/app/app.routing.ts
new file mode 100644
index 00000000..05b5fdef
--- /dev/null
+++ b/demo/AngularApp/app/app.routing.ts
@@ -0,0 +1,23 @@
+import { NgModule } from "@angular/core";
+import { NativeScriptRouterModule } from "nativescript-angular/router";
+import { Routes } from "@angular/router";
+
+import { ItemsComponent } from "./item/items.component";
+import { ItemDetailComponent } from "./item/item-detail.component";
+
+const routes: Routes = [
+ { path: "", redirectTo: "/items", pathMatch: "full" },
+ { path: "items", component: ItemsComponent },
+ { path: "item/:id", component: ItemDetailComponent },
+ {
+ path: "ninjas",
+ loadChildren: "./ninjas/ninjas.module#NinjasModule",
+ },
+
+];
+
+@NgModule({
+ imports: [NativeScriptRouterModule.forRoot(routes)],
+ exports: [NativeScriptRouterModule]
+})
+export class AppRoutingModule { }
diff --git a/demo/AngularApp/app/directive/PlayfulSpirit.android.ts b/demo/AngularApp/app/directive/PlayfulSpirit.android.ts
new file mode 100644
index 00000000..5dfcb4f9
--- /dev/null
+++ b/demo/AngularApp/app/directive/PlayfulSpirit.android.ts
@@ -0,0 +1,10 @@
+import { Directive } from "@angular/core";
+
+// @Directive({
+// selector: "[playful-spirit]",
+// host: {
+// "backgroundColor": "#7F9"
+// }
+// })
+// export class PlayfulSpirit {
+// }
\ No newline at end of file
diff --git a/demo/AngularApp/app/directive/PlayfulSpirit.d.ts b/demo/AngularApp/app/directive/PlayfulSpirit.d.ts
new file mode 100644
index 00000000..be14cb6a
--- /dev/null
+++ b/demo/AngularApp/app/directive/PlayfulSpirit.d.ts
@@ -0,0 +1,7 @@
+// import { Directive } from "@angular/core";
+
+// @Directive({
+// selector: "[playful]"
+// })
+// export class PlayfulSpirit {
+// }
\ No newline at end of file
diff --git a/demo/AngularApp/app/directive/PlayfulSpirit.ios.ts b/demo/AngularApp/app/directive/PlayfulSpirit.ios.ts
new file mode 100644
index 00000000..121fb9e3
--- /dev/null
+++ b/demo/AngularApp/app/directive/PlayfulSpirit.ios.ts
@@ -0,0 +1,10 @@
+import { Directive } from "@angular/core";
+
+// @Directive({
+// selector: "[playful-spirit]",
+// host: {
+// "backgroundColor": "#999"
+// }
+// })
+// export class PlayfulSpirit {
+// }
\ No newline at end of file
diff --git a/demo/AngularApp/app/directive/package.json b/demo/AngularApp/app/directive/package.json
new file mode 100644
index 00000000..4d14544a
--- /dev/null
+++ b/demo/AngularApp/app/directive/package.json
@@ -0,0 +1,4 @@
+{
+ "main": "PlayfulSpirit",
+ "types": "PlayfulSpirit.d.ts"
+}
\ No newline at end of file
diff --git a/demo/AngularApp/app/item/item-detail.component.html b/demo/AngularApp/app/item/item-detail.component.html
new file mode 100644
index 00000000..3bbd174c
--- /dev/null
+++ b/demo/AngularApp/app/item/item-detail.component.html
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/demo/AngularApp/app/item/item-detail.component.ts b/demo/AngularApp/app/item/item-detail.component.ts
new file mode 100644
index 00000000..a9d6c6fa
--- /dev/null
+++ b/demo/AngularApp/app/item/item-detail.component.ts
@@ -0,0 +1,24 @@
+import { Component, OnInit } from "@angular/core";
+import { ActivatedRoute } from "@angular/router";
+
+import { Item } from "./item";
+import { ItemService } from "./item.service";
+
+@Component({
+ selector: "ns-details",
+ moduleId: __filename,
+ templateUrl: "./item-detail.component.html",
+})
+export class ItemDetailComponent implements OnInit {
+ item: Item;
+
+ constructor(
+ private itemService: ItemService,
+ private route: ActivatedRoute
+ ) { }
+
+ ngOnInit(): void {
+ const id = +this.route.snapshot.params["id"];
+ this.item = this.itemService.getItem(id);
+ }
+}
diff --git a/demo/AngularApp/app/item/item.service.ts b/demo/AngularApp/app/item/item.service.ts
new file mode 100644
index 00000000..0feb6c5f
--- /dev/null
+++ b/demo/AngularApp/app/item/item.service.ts
@@ -0,0 +1,39 @@
+import { Injectable } from "@angular/core";
+
+import { Item } from "./item";
+
+@Injectable()
+export class ItemService {
+ private items = new Array- (
+ { id: 1, name: "Ter Stegen", role: "Goalkeeper" },
+ { id: 3, name: "Piqué", role: "Defender" },
+ { id: 4, name: "I. Rakitic", role: "Midfielder" },
+ { id: 5, name: "Sergio", role: "Midfielder" },
+ { id: 6, name: "Denis Suárez", role: "Midfielder" },
+ { id: 7, name: "Arda", role: "Midfielder" },
+ { id: 8, name: "A. Iniesta", role: "Midfielder" },
+ { id: 9, name: "Suárez", role: "Forward" },
+ { id: 10, name: "Messi", role: "Forward" },
+ { id: 11, name: "Neymar", role: "Forward" },
+ { id: 12, name: "Rafinha", role: "Midfielder" },
+ { id: 13, name: "Cillessen", role: "Goalkeeper" },
+ { id: 14, name: "Mascherano", role: "Defender" },
+ { id: 17, name: "Paco Alcácer", role: "Forward" },
+ { id: 18, name: "Jordi Alba", role: "Defender" },
+ { id: 19, name: "Digne", role: "Defender" },
+ { id: 20, name: "Sergi Roberto", role: "Midfielder" },
+ { id: 21, name: "André Gomes", role: "Midfielder" },
+ { id: 22, name: "Aleix Vidal", role: "Midfielder" },
+ { id: 23, name: "Umtiti", role: "Defender" },
+ { id: 24, name: "Mathieu", role: "Defender" },
+ { id: 25, name: "Masip", role: "Goalkeeper" },
+ );
+
+ getItems(): Item[] {
+ return this.items;
+ }
+
+ getItem(id: number): Item {
+ return this.items.filter(item => item.id === id)[0];
+ }
+}
diff --git a/demo/AngularApp/app/item/item.ts b/demo/AngularApp/app/item/item.ts
new file mode 100644
index 00000000..02e2b01b
--- /dev/null
+++ b/demo/AngularApp/app/item/item.ts
@@ -0,0 +1,5 @@
+export class Item {
+ id: number;
+ name: string;
+ role: string;
+}
diff --git a/demo/AngularApp/app/item/items.component.android.html b/demo/AngularApp/app/item/items.component.android.html
new file mode 100644
index 00000000..9c63c2bc
--- /dev/null
+++ b/demo/AngularApp/app/item/items.component.android.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo/AngularApp/app/item/items.component.android.scss b/demo/AngularApp/app/item/items.component.android.scss
new file mode 100644
index 00000000..52ded0e1
--- /dev/null
+++ b/demo/AngularApp/app/item/items.component.android.scss
@@ -0,0 +1,9 @@
+ListView {
+ GridLayout {
+ background-color: #7F9;
+ }
+}
+
+.page-class {
+ background-color: #7F9;
+}
\ No newline at end of file
diff --git a/demo/AngularApp/app/item/items.component.ios.html b/demo/AngularApp/app/item/items.component.ios.html
new file mode 100644
index 00000000..c897bcef
--- /dev/null
+++ b/demo/AngularApp/app/item/items.component.ios.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo/AngularApp/app/item/items.component.ios.scss b/demo/AngularApp/app/item/items.component.ios.scss
new file mode 100644
index 00000000..aa766ce5
--- /dev/null
+++ b/demo/AngularApp/app/item/items.component.ios.scss
@@ -0,0 +1,9 @@
+ListView {
+ GridLayout {
+ background-color: #999;
+ }
+}
+
+.page-class {
+ background-color: #999;
+}
\ No newline at end of file
diff --git a/demo/AngularApp/app/item/items.component.ts b/demo/AngularApp/app/item/items.component.ts
new file mode 100644
index 00000000..9dac97ba
--- /dev/null
+++ b/demo/AngularApp/app/item/items.component.ts
@@ -0,0 +1,22 @@
+import { Component, OnInit } from "@angular/core";
+
+import { Item } from "./item";
+import { ItemService } from "./item.service";
+
+@Component({
+ selector: "ns-items",
+ moduleId: __filename,
+ styleUrls: ["./items.component.scss"],
+ templateUrl: "./items.component.html",
+})
+export class ItemsComponent implements OnInit {
+ items: Item[];
+
+ // This pattern makes use of Angular’s dependency injection implementation to inject an instance of the ItemService service into this class.
+ // Angular knows about this service because it is included in your app’s main NgModule, defined in app.module.ts.
+ constructor(private itemService: ItemService) { }
+
+ ngOnInit(): void {
+ this.items = this.itemService.getItems();
+ }
+}
\ No newline at end of file
diff --git a/demo/AngularApp/app/main.aot.ts b/demo/AngularApp/app/main.aot.ts
new file mode 100644
index 00000000..3abe1e5f
--- /dev/null
+++ b/demo/AngularApp/app/main.aot.ts
@@ -0,0 +1,7 @@
+// this import should be first in order to load some required settings (like globals and reflect-metadata)
+import { platformNativeScript } from "nativescript-angular/platform-static";
+
+// "./app.module.ngfactory" is a dynamically generated module when compiled with AoT.
+const { AppModuleNgFactory } = require("./app.module.ngfactory");
+
+platformNativeScript().bootstrapModuleFactory(AppModuleNgFactory);
diff --git a/demo/AngularApp/app/main.ts b/demo/AngularApp/app/main.ts
new file mode 100644
index 00000000..a84cb884
--- /dev/null
+++ b/demo/AngularApp/app/main.ts
@@ -0,0 +1,10 @@
+// this import should be first in order to load some required settings (like globals and reflect-metadata)
+import { platformNativeScriptDynamic } from "nativescript-angular/platform";
+
+import { AppModule } from "./app.module";
+
+// A traditional NativeScript application starts by initializing global objects, setting up global CSS rules, creating, and navigating to the main page.
+// Angular applications need to take care of their own initialization: modules, components, directives, routes, DI providers.
+// A NativeScript Angular app needs to make both paradigms work together, so we provide a wrapper platform object, platformNativeScriptDynamic,
+// that sets up a NativeScript application and can bootstrap the Angular framework.
+platformNativeScriptDynamic().bootstrapModule(AppModule);
diff --git a/demo/AngularApp/app/ninjas/details/ninja.component.ts b/demo/AngularApp/app/ninjas/details/ninja.component.ts
new file mode 100644
index 00000000..f94a8447
--- /dev/null
+++ b/demo/AngularApp/app/ninjas/details/ninja.component.ts
@@ -0,0 +1,22 @@
+import { Component, OnInit } from "@angular/core";
+import { ActivatedRoute } from "@angular/router";
+
+@Component({
+ template: `
+
+
+
+
+ `
+})
+export class NinjaComponent implements OnInit {
+ name: String;
+
+ constructor( private route: ActivatedRoute) { }
+
+ ngOnInit(): void {
+ this.name = this.route.snapshot.params["name"];
+ }
+
+}
diff --git a/demo/AngularApp/app/ninjas/details/ninja.module.ts b/demo/AngularApp/app/ninjas/details/ninja.module.ts
new file mode 100644
index 00000000..1104172f
--- /dev/null
+++ b/demo/AngularApp/app/ninjas/details/ninja.module.ts
@@ -0,0 +1,17 @@
+import { NgModule, NO_ERRORS_SCHEMA } from "@angular/core";
+import { NativeScriptModule } from "nativescript-angular/nativescript.module";
+import { NativeScriptRouterModule } from "nativescript-angular/router";
+
+import { NinjaComponent } from "./ninja.component";
+import { routes } from "./ninja.routes";
+
+@NgModule({
+ schemas: [NO_ERRORS_SCHEMA],
+ imports: [
+ NativeScriptModule,
+ NativeScriptRouterModule,
+ NativeScriptRouterModule.forChild(routes)
+ ],
+ declarations: [NinjaComponent]
+})
+export class NinjaModule { }
diff --git a/demo/AngularApp/app/ninjas/details/ninja.routes.ts b/demo/AngularApp/app/ninjas/details/ninja.routes.ts
new file mode 100644
index 00000000..bf2c28fd
--- /dev/null
+++ b/demo/AngularApp/app/ninjas/details/ninja.routes.ts
@@ -0,0 +1,8 @@
+import { NinjaComponent } from "./ninja.component";
+
+export const routes = [
+ {
+ path: ":name",
+ component: NinjaComponent
+ }
+];
diff --git a/demo/AngularApp/app/ninjas/ninjas.component.ts b/demo/AngularApp/app/ninjas/ninjas.component.ts
new file mode 100644
index 00000000..1e46b460
--- /dev/null
+++ b/demo/AngularApp/app/ninjas/ninjas.component.ts
@@ -0,0 +1,31 @@
+import { Component } from "@angular/core";
+
+@Component({
+ template: `
+
+
+
+
+
+
+
+
+
+
+
+ `
+})
+export class NinjasComponent {
+ ninjas = [
+ { name: "Michaelangelo", color: "orange" },
+ { name: "Leonardo", color: "blue" },
+ { name: "Raphaelo", color: "red" },
+ { name: "Donatello", color: "purple" }
+ ];
+}
diff --git a/demo/AngularApp/app/ninjas/ninjas.module.ts b/demo/AngularApp/app/ninjas/ninjas.module.ts
new file mode 100644
index 00000000..dabc4856
--- /dev/null
+++ b/demo/AngularApp/app/ninjas/ninjas.module.ts
@@ -0,0 +1,17 @@
+import { NgModule, NO_ERRORS_SCHEMA } from "@angular/core";
+import { NativeScriptModule } from "nativescript-angular/nativescript.module";
+import { NativeScriptRouterModule } from "nativescript-angular/router";
+
+import { NinjasComponent } from "./ninjas.component";
+import { routes } from "./ninjas.routes";
+
+@NgModule({
+ schemas: [NO_ERRORS_SCHEMA],
+ imports: [
+ NativeScriptModule,
+ NativeScriptRouterModule,
+ NativeScriptRouterModule.forChild(routes)
+ ],
+ declarations: [NinjasComponent]
+})
+export class NinjasModule { }
diff --git a/demo/AngularApp/app/ninjas/ninjas.routes.ts b/demo/AngularApp/app/ninjas/ninjas.routes.ts
new file mode 100644
index 00000000..6efec2d7
--- /dev/null
+++ b/demo/AngularApp/app/ninjas/ninjas.routes.ts
@@ -0,0 +1,12 @@
+import { NinjasComponent } from "./ninjas.component";
+
+export const routes = [
+ {
+ path: "",
+ component: NinjasComponent
+ },
+ {
+ path: "details",
+ loadChildren: "~/ninjas/details/ninja.module#NinjaModule",
+ },
+];
diff --git a/demo/AngularApp/app/package.json b/demo/AngularApp/app/package.json
new file mode 100644
index 00000000..80037c0e
--- /dev/null
+++ b/demo/AngularApp/app/package.json
@@ -0,0 +1,8 @@
+{
+ "android": {
+ "v8Flags": "--expose_gc"
+ },
+ "main": "main.js",
+ "name": "tns-template-hello-world-ng",
+ "version": "3.3.0"
+}
\ No newline at end of file
diff --git a/demo/AngularApp/e2e/config/appium.capabilities.json b/demo/AngularApp/e2e/config/appium.capabilities.json
new file mode 100644
index 00000000..630f6215
--- /dev/null
+++ b/demo/AngularApp/e2e/config/appium.capabilities.json
@@ -0,0 +1,106 @@
+{
+ "android19": {
+ "platformName": "Android",
+ "platformVersion": "4.4",
+ "deviceName": "Emulator-Api19-Default",
+ "avd": "Emulator-Api19-Default",
+ "lt": 60000,
+ "appActivity": "com.tns.NativeScriptActivity",
+ "newCommandTimeout": 720,
+ "noReset": true,
+ "fullReset": false,
+ "app": ""
+ },
+ "android21": {
+ "platformName": "Android",
+ "platformVersion": "5.0",
+ "deviceName": "Emulator-Api21-Default",
+ "avd": "Emulator-Api21-Default",
+ "lt": 60000,
+ "appActivity": "com.tns.NativeScriptActivity",
+ "newCommandTimeout": 720,
+ "noReset": true,
+ "fullReset": false,
+ "app": ""
+ },
+ "android23": {
+ "platformName": "Android",
+ "platformVersion": "6.0",
+ "deviceName": "Emulator-Api23-Default",
+ "avd": "Emulator-Api23-Default",
+ "lt": 60000,
+ "appActivity": "com.tns.NativeScriptActivity",
+ "newCommandTimeout": 720,
+ "noReset": true,
+ "fullReset": false,
+ "app": ""
+ },
+ "android24": {
+ "platformName": "Android",
+ "platformVersion": "7.0",
+ "deviceName": "Emulator-Api24-Default",
+ "avd": "Emulator-Api24-Default",
+ "lt": 60000,
+ "appActivity": "com.tns.NativeScriptActivity",
+ "newCommandTimeout": 720,
+ "noReset": true,
+ "fullReset": false,
+ "app": ""
+ },
+ "android25": {
+ "platformName": "Android",
+ "platformVersion": "7.1",
+ "deviceName": "Emulator-Api25-Google",
+ "avd": "Emulator-Api25-Google",
+ "lt": 60000,
+ "appActivity": "com.tns.NativeScriptActivity",
+ "newCommandTimeout": 720,
+ "noReset": true,
+ "fullReset": false,
+ "app": ""
+ },
+ "android26": {
+ "platformName": "Android",
+ "platformVersion": "8.0",
+ "deviceName": "Emulator-Api26-Google",
+ "avd": "Emulator-Api26-Google",
+ "lt": 60000,
+ "appActivity": "com.tns.NativeScriptActivity",
+ "newCommandTimeout": 720,
+ "noReset": true,
+ "fullReset": false,
+ "app": ""
+ },
+ "sim.iPhone7.iOS100": {
+ "platformName": "iOS",
+ "platformVersion": "10.0",
+ "deviceName": "iPhone 7 100",
+ "noReset": true,
+ "fullReset": false,
+ "app": ""
+ },
+ "sim.iPhone8.iOS110": {
+ "platformName": "iOS",
+ "platformVersion": "11.0",
+ "deviceName": "iPhone 8 110",
+ "noReset": true,
+ "fullReset": false,
+ "app": ""
+ },
+ "sim.iPhoneX.iOS110": {
+ "platformName": "iOS",
+ "platformVersion": "11.0",
+ "deviceName": "iPhone X",
+ "noReset": true,
+ "fullReset": false,
+ "app": ""
+ },
+ "sim.iPhoneX.iOS111": {
+ "platformName": "iOS",
+ "platformVersion": "11.1",
+ "deviceName": "iPhone X",
+ "noReset": true,
+ "fullReset": false,
+ "app": ""
+ }
+}
diff --git a/demo/AngularApp/e2e/config/mocha.opts b/demo/AngularApp/e2e/config/mocha.opts
new file mode 100644
index 00000000..796ec472
--- /dev/null
+++ b/demo/AngularApp/e2e/config/mocha.opts
@@ -0,0 +1,4 @@
+--timeout 80000
+--recursive e2e
+--reporter mocha-multi
+--reporter-options spec=-,mocha-junit-reporter=test-results.xml
\ No newline at end of file
diff --git a/demo/AngularApp/e2e/resources/images/AngularApp/android/style.png b/demo/AngularApp/e2e/resources/images/AngularApp/android/style.png
new file mode 100644
index 00000000..0d06ce7a
Binary files /dev/null and b/demo/AngularApp/e2e/resources/images/AngularApp/android/style.png differ
diff --git a/demo/AngularApp/e2e/resources/images/AngularApp/ios/style.png b/demo/AngularApp/e2e/resources/images/AngularApp/ios/style.png
new file mode 100644
index 00000000..091628ed
Binary files /dev/null and b/demo/AngularApp/e2e/resources/images/AngularApp/ios/style.png differ
diff --git a/demo/AngularApp/e2e/sample.e2e-spec.ts b/demo/AngularApp/e2e/sample.e2e-spec.ts
new file mode 100644
index 00000000..e3ee67de
--- /dev/null
+++ b/demo/AngularApp/e2e/sample.e2e-spec.ts
@@ -0,0 +1,47 @@
+import { AppiumDriver, createDriver, SearchOptions } from "nativescript-dev-appium";
+import { assert } from "chai";
+
+describe("sample scenario", () => {
+ const defaultWaitTime = 5000;
+ let driver: AppiumDriver;
+
+ before(async () => {
+ driver = await createDriver();
+ });
+
+ beforeEach(async function () { });
+
+ afterEach(async function () {
+ if (this.currentTest.state === "failed") {
+ await driver.logScreenshot(this.currentTest.title);
+ }
+ });
+
+ after(async () => {
+ await driver.quit();
+ console.log("Quit driver!");
+ });
+
+ it("should find platform specific items", async () => {
+ const items = await getItems();
+ assert.isTrue(items.length > 1);
+ });
+
+ // it("should have CSS applied on items", async () => {
+ // const screen = await driver.compareScreen("items-component");
+ // assert.isTrue(screen);
+ // });
+
+ it("should find Ninjas", async () => {
+ const btnNinjas = await driver.findElementByText("Ninjas");
+ await btnNinjas.click();
+ const lblNinjas = await driver.findElementByText("Ninjas!");
+ });
+
+ // it("should have CSS applied on Ninjas", async () => {
+ // const screen = await driver.compareScreen("ninjas-component");
+ // assert.isTrue(screen);
+ // });
+
+ const getItems = async () => { return driver.isAndroid ? await driver.findElementsByText("(Android)") : await driver.findElementsByText("(ios)"); }
+});
diff --git a/demo/AngularApp/e2e/setup.ts b/demo/AngularApp/e2e/setup.ts
new file mode 100644
index 00000000..8b26e66e
--- /dev/null
+++ b/demo/AngularApp/e2e/setup.ts
@@ -0,0 +1,9 @@
+import { startServer, stopServer } from "nativescript-dev-appium";
+
+before("start server", async () => {
+ await startServer();
+});
+
+after("stop server", async () => {
+ await stopServer();
+});
diff --git a/demo/AngularApp/e2e/tsconfig.json b/demo/AngularApp/e2e/tsconfig.json
new file mode 100644
index 00000000..6517ca58
--- /dev/null
+++ b/demo/AngularApp/e2e/tsconfig.json
@@ -0,0 +1,19 @@
+{
+ "compilerOptions": {
+ "module": "commonjs",
+ "target": "es6",
+ "experimentalDecorators": true,
+ "emitDecoratorMetadata": true,
+ "importHelpers": false,
+ "sourceMap": true,
+ "types": [
+ "node",
+ "mocha",
+ "chai"
+ ],
+ "lib": [
+ "es2015",
+ "dom"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/demo/AngularApp/package.json b/demo/AngularApp/package.json
new file mode 100644
index 00000000..b4d6cadc
--- /dev/null
+++ b/demo/AngularApp/package.json
@@ -0,0 +1,74 @@
+{
+ "description": "NativeScript Application",
+ "license": "SEE LICENSE IN ",
+ "readme": "NativeScript Application",
+ "repository": "",
+ "nativescript": {
+ "id": "org.nativescript.AngularApp",
+ "tns-android": {
+ "version": "3.4.0-2017-11-8-1"
+ },
+ "tns-ios": {
+ "version": "3.4.0-2017-11-21-2"
+ }
+ },
+ "dependencies": {
+ "@angular/common": "~5.0.0",
+ "@angular/compiler": "~5.0.0",
+ "@angular/core": "~5.0.0",
+ "@angular/forms": "~5.0.0",
+ "@angular/http": "~5.0.0",
+ "@angular/platform-browser": "~5.0.0",
+ "@angular/platform-browser-dynamic": "~5.0.0",
+ "@angular/router": "~5.0.0",
+ "nativescript-angular": "next",
+ "nativescript-theme-core": "~1.0.2",
+ "reflect-metadata": "~0.1.8",
+ "rxjs": "^5.5.0",
+ "tns-core-modules": "next",
+ "zone.js": "^0.8.4"
+ },
+ "devDependencies": {
+ "@angular/compiler-cli": "~5.0.0",
+ "@ngtools/webpack": "^1.8.0",
+ "@types/chai": "^4.0.2",
+ "@types/mocha": "^2.2.41",
+ "@types/node": "^7.0.5",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "chai": "~4.1.1",
+ "chai-as-promised": "~7.1.1",
+ "copy-webpack-plugin": "~4.0.1",
+ "css-loader": "~0.28.7",
+ "extract-text-webpack-plugin": "~3.0.0",
+ "lazy": "1.0.11",
+ "mocha": "~3.5.0",
+ "mocha-junit-reporter": "^1.13.0",
+ "mocha-multi": "^0.11.0",
+ "nativescript-dev-appium": "next",
+ "nativescript-dev-sass": "^1.3.5",
+ "nativescript-dev-typescript": "~0.5.0",
+ "nativescript-dev-webpack": "file:../..",
+ "nativescript-worker-loader": "~0.8.1",
+ "node-sass": "^4.7.1",
+ "raw-loader": "~0.5.1",
+ "resolve-url-loader": "~2.1.0",
+ "sass-loader": "^6.0.6",
+ "typescript": "~2.4.2",
+ "webpack": "~3.8.1",
+ "webpack-bundle-analyzer": "^2.8.2",
+ "webpack-sources": "^1.0.2"
+ },
+ "scripts": {
+ "ns-bundle": "ns-bundle",
+ "start-android-bundle": "npm run ns-bundle --android --run-app",
+ "start-ios-bundle": "npm run ns-bundle --ios --run-app",
+ "build-android-bundle": "npm run ns-bundle --android --build-app",
+ "build-ios-bundle": "npm run ns-bundle --ios --build-app",
+ "publish-ios-bundle": "npm run ns-bundle --ios --publish-app",
+ "generate-android-snapshot": "generate-android-snapshot --targetArchs arm,arm64,ia32 --install",
+ "e2e": "tsc -p e2e && mocha --opts ./e2e/config/mocha.opts",
+ "compile-tests": "tsc -p e2e --watch"
+ }
+}
diff --git a/demo/AngularApp/tsconfig.json b/demo/AngularApp/tsconfig.json
new file mode 100644
index 00000000..daaafd10
--- /dev/null
+++ b/demo/AngularApp/tsconfig.json
@@ -0,0 +1,30 @@
+{
+ "compilerOptions": {
+ "module": "commonjs",
+ "target": "es5",
+ "experimentalDecorators": true,
+ "emitDecoratorMetadata": true,
+ "noEmitHelpers": true,
+ "noEmitOnError": true,
+ "lib": [
+ "es6",
+ "dom",
+ "es2015.iterable"
+ ],
+ "baseUrl": ".",
+ "paths": {
+ "~/*": [
+ "app/*"
+ ],
+ "*": [
+ "./node_modules/tns-core-modules/*",
+ "./node_modules/*"
+ ]
+ }
+ },
+ "exclude": [
+ "e2e",
+ "node_modules",
+ "platforms"
+ ]
+}
\ No newline at end of file
diff --git a/demo/JavaScriptApp/.gitignore b/demo/JavaScriptApp/.gitignore
new file mode 100644
index 00000000..e4b64c6a
--- /dev/null
+++ b/demo/JavaScriptApp/.gitignore
@@ -0,0 +1,2 @@
+app/main-page.android.css
+app/main-page.ios.css
\ No newline at end of file
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/AndroidManifest.xml b/demo/JavaScriptApp/app/App_Resources/Android/AndroidManifest.xml
new file mode 100644
index 00000000..9db83215
--- /dev/null
+++ b/demo/JavaScriptApp/app/App_Resources/Android/AndroidManifest.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/app.gradle b/demo/JavaScriptApp/app/App_Resources/Android/app.gradle
new file mode 100644
index 00000000..493f4a45
--- /dev/null
+++ b/demo/JavaScriptApp/app/App_Resources/Android/app.gradle
@@ -0,0 +1,23 @@
+// Add your native dependencies here:
+
+// Uncomment to add recyclerview-v7 dependency
+//dependencies {
+// compile 'com.android.support:recyclerview-v7:+'
+//}
+
+android {
+ defaultConfig {
+ generatedDensities = []
+ applicationId = "org.nativescript.JavaScriptApp"
+
+ //override supported platforms
+ // ndk {
+ // abiFilters.clear()
+ // abiFilters "armeabi-v7a"
+ // }
+
+ }
+ aaptOptions {
+ additionalParameters "--no-version-vectors"
+ }
+}
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/drawable-hdpi/background.png b/demo/JavaScriptApp/app/App_Resources/Android/drawable-hdpi/background.png
new file mode 100644
index 00000000..eb381c25
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/Android/drawable-hdpi/background.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/drawable-hdpi/icon.png b/demo/JavaScriptApp/app/App_Resources/Android/drawable-hdpi/icon.png
new file mode 100755
index 00000000..9cde84cd
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/Android/drawable-hdpi/icon.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/drawable-hdpi/logo.png b/demo/JavaScriptApp/app/App_Resources/Android/drawable-hdpi/logo.png
new file mode 100644
index 00000000..5218f4c9
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/Android/drawable-hdpi/logo.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/drawable-ldpi/background.png b/demo/JavaScriptApp/app/App_Resources/Android/drawable-ldpi/background.png
new file mode 100644
index 00000000..748b2adf
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/Android/drawable-ldpi/background.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/drawable-ldpi/icon.png b/demo/JavaScriptApp/app/App_Resources/Android/drawable-ldpi/icon.png
new file mode 100755
index 00000000..4d6a674b
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/Android/drawable-ldpi/icon.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/drawable-ldpi/logo.png b/demo/JavaScriptApp/app/App_Resources/Android/drawable-ldpi/logo.png
new file mode 100644
index 00000000..b9e102a7
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/Android/drawable-ldpi/logo.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/drawable-mdpi/background.png b/demo/JavaScriptApp/app/App_Resources/Android/drawable-mdpi/background.png
new file mode 100644
index 00000000..efeaf290
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/Android/drawable-mdpi/background.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/drawable-mdpi/icon.png b/demo/JavaScriptApp/app/App_Resources/Android/drawable-mdpi/icon.png
new file mode 100755
index 00000000..92ccc85a
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/Android/drawable-mdpi/icon.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/drawable-mdpi/logo.png b/demo/JavaScriptApp/app/App_Resources/Android/drawable-mdpi/logo.png
new file mode 100644
index 00000000..62633876
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/Android/drawable-mdpi/logo.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/drawable-nodpi/splash_screen.xml b/demo/JavaScriptApp/app/App_Resources/Android/drawable-nodpi/splash_screen.xml
new file mode 100644
index 00000000..ada77f92
--- /dev/null
+++ b/demo/JavaScriptApp/app/App_Resources/Android/drawable-nodpi/splash_screen.xml
@@ -0,0 +1,8 @@
+
+
-
+
+
+ -
+
+
+
\ No newline at end of file
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/drawable-xhdpi/background.png b/demo/JavaScriptApp/app/App_Resources/Android/drawable-xhdpi/background.png
new file mode 100644
index 00000000..612bbd07
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/Android/drawable-xhdpi/background.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/drawable-xhdpi/icon.png b/demo/JavaScriptApp/app/App_Resources/Android/drawable-xhdpi/icon.png
new file mode 100644
index 00000000..8bcde627
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/Android/drawable-xhdpi/icon.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/drawable-xhdpi/logo.png b/demo/JavaScriptApp/app/App_Resources/Android/drawable-xhdpi/logo.png
new file mode 100644
index 00000000..ad8ee2f4
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/Android/drawable-xhdpi/logo.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/drawable-xxhdpi/background.png b/demo/JavaScriptApp/app/App_Resources/Android/drawable-xxhdpi/background.png
new file mode 100644
index 00000000..0fa88e23
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/Android/drawable-xxhdpi/background.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/drawable-xxhdpi/icon.png b/demo/JavaScriptApp/app/App_Resources/Android/drawable-xxhdpi/icon.png
new file mode 100644
index 00000000..9d81c85d
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/Android/drawable-xxhdpi/icon.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/drawable-xxhdpi/logo.png b/demo/JavaScriptApp/app/App_Resources/Android/drawable-xxhdpi/logo.png
new file mode 100644
index 00000000..66832783
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/Android/drawable-xxhdpi/logo.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/drawable-xxxhdpi/background.png b/demo/JavaScriptApp/app/App_Resources/Android/drawable-xxxhdpi/background.png
new file mode 100644
index 00000000..c650f643
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/Android/drawable-xxxhdpi/background.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/drawable-xxxhdpi/icon.png b/demo/JavaScriptApp/app/App_Resources/Android/drawable-xxxhdpi/icon.png
new file mode 100644
index 00000000..9a34d0d4
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/Android/drawable-xxxhdpi/icon.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/drawable-xxxhdpi/logo.png b/demo/JavaScriptApp/app/App_Resources/Android/drawable-xxxhdpi/logo.png
new file mode 100644
index 00000000..fa6331c8
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/Android/drawable-xxxhdpi/logo.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/values-v21/colors.xml b/demo/JavaScriptApp/app/App_Resources/Android/values-v21/colors.xml
new file mode 100644
index 00000000..a64641a9
--- /dev/null
+++ b/demo/JavaScriptApp/app/App_Resources/Android/values-v21/colors.xml
@@ -0,0 +1,4 @@
+
+
+ #3d5afe
+
\ No newline at end of file
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/values-v21/styles.xml b/demo/JavaScriptApp/app/App_Resources/Android/values-v21/styles.xml
new file mode 100644
index 00000000..dac8727c
--- /dev/null
+++ b/demo/JavaScriptApp/app/App_Resources/Android/values-v21/styles.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/values/colors.xml b/demo/JavaScriptApp/app/App_Resources/Android/values/colors.xml
new file mode 100644
index 00000000..74ad8829
--- /dev/null
+++ b/demo/JavaScriptApp/app/App_Resources/Android/values/colors.xml
@@ -0,0 +1,7 @@
+
+
+ #F5F5F5
+ #757575
+ #33B5E5
+ #272734
+
\ No newline at end of file
diff --git a/demo/JavaScriptApp/app/App_Resources/Android/values/styles.xml b/demo/JavaScriptApp/app/App_Resources/Android/values/styles.xml
new file mode 100644
index 00000000..c793e6d4
--- /dev/null
+++ b/demo/JavaScriptApp/app/App_Resources/Android/values/styles.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 00000000..4034b76e
--- /dev/null
+++ b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,98 @@
+{
+ "images" : [
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "icon-29.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "icon-29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "icon-29@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "icon-40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "icon-40@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "icon-60@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "icon-60@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "icon-29.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "icon-29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "icon-40.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "icon-40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "icon-76.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "icon-76@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "83.5x83.5",
+ "idiom" : "ipad",
+ "filename" : "icon-83.5@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "1024x1024",
+ "idiom" : "ios-marketing",
+ "filename" : "icon-1024.png",
+ "scale" : "1x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png
new file mode 100644
index 00000000..a1d7eb47
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png
new file mode 100644
index 00000000..bb9b9e86
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png
new file mode 100644
index 00000000..ec609dcf
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png
new file mode 100644
index 00000000..a9718080
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png
new file mode 100644
index 00000000..214800ee
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png
new file mode 100644
index 00000000..8554b88a
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png
new file mode 100644
index 00000000..a22626ba
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png
new file mode 100644
index 00000000..a22626ba
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png
new file mode 100644
index 00000000..492c9c8e
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png
new file mode 100644
index 00000000..9208113c
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png
new file mode 100644
index 00000000..24415e5a
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png
new file mode 100644
index 00000000..b3ef1bf0
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/Contents.json b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/Contents.json
new file mode 100644
index 00000000..da4a164c
--- /dev/null
+++ b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Contents.json b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Contents.json
new file mode 100644
index 00000000..4414bad0
--- /dev/null
+++ b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Contents.json
@@ -0,0 +1,158 @@
+{
+ "images" : [
+ {
+ "extent" : "full-screen",
+ "idiom" : "iphone",
+ "subtype" : "736h",
+ "filename" : "Default-736h@3x.png",
+ "minimum-system-version" : "8.0",
+ "orientation" : "portrait",
+ "scale" : "3x"
+ },
+ {
+ "extent" : "full-screen",
+ "idiom" : "iphone",
+ "subtype" : "736h",
+ "filename" : "Default-Landscape@3x.png",
+ "minimum-system-version" : "8.0",
+ "orientation" : "landscape",
+ "scale" : "3x"
+ },
+ {
+ "extent" : "full-screen",
+ "idiom" : "iphone",
+ "subtype" : "667h",
+ "filename" : "Default-667h@2x.png",
+ "minimum-system-version" : "8.0",
+ "orientation" : "portrait",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "iphone",
+ "filename" : "Default@2x.png",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "2x"
+ },
+ {
+ "extent" : "full-screen",
+ "idiom" : "iphone",
+ "subtype" : "retina4",
+ "filename" : "Default-568h@2x.png",
+ "minimum-system-version" : "7.0",
+ "orientation" : "portrait",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "filename" : "Default-Portrait.png",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "filename" : "Default-Landscape.png",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "filename" : "Default-Portrait@2x.png",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "filename" : "Default-Landscape@2x.png",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "iphone",
+ "filename" : "Default.png",
+ "extent" : "full-screen",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "iphone",
+ "filename" : "Default@2x.png",
+ "extent" : "full-screen",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "iphone",
+ "filename" : "Default-568h@2x.png",
+ "extent" : "full-screen",
+ "subtype" : "retina4",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "extent" : "to-status-bar",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "filename" : "Default-Portrait.png",
+ "extent" : "full-screen",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "extent" : "to-status-bar",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "filename" : "Default-Landscape.png",
+ "extent" : "full-screen",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "extent" : "to-status-bar",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "filename" : "Default-Portrait@2x.png",
+ "extent" : "full-screen",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "extent" : "to-status-bar",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "filename" : "Default-Landscape@2x.png",
+ "extent" : "full-screen",
+ "scale" : "2x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png
new file mode 100644
index 00000000..d7f17fcd
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png
new file mode 100644
index 00000000..b8841540
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-736h@3x.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-736h@3x.png
new file mode 100644
index 00000000..faab4b63
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-736h@3x.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape.png
new file mode 100644
index 00000000..3365ba3c
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@2x.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@2x.png
new file mode 100644
index 00000000..a44945c1
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@2x.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@3x.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@3x.png
new file mode 100644
index 00000000..e6dca626
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@3x.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait.png
new file mode 100644
index 00000000..1a500796
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png
new file mode 100644
index 00000000..73d8b920
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default.png
new file mode 100644
index 00000000..9f1f6ce3
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default@2x.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default@2x.png
new file mode 100644
index 00000000..514fc5cd
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default@2x.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json
new file mode 100644
index 00000000..4f4e9c50
--- /dev/null
+++ b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchScreen-AspectFill.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchScreen-AspectFill@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png
new file mode 100644
index 00000000..c293f9c7
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png
new file mode 100644
index 00000000..233693a6
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json
new file mode 100644
index 00000000..23c0ffd7
--- /dev/null
+++ b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchScreen-Center.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchScreen-Center@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png
new file mode 100644
index 00000000..a5a775a2
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png
new file mode 100644
index 00000000..154c1934
Binary files /dev/null and b/demo/JavaScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png differ
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/Info.plist b/demo/JavaScriptApp/app/App_Resources/iOS/Info.plist
new file mode 100644
index 00000000..ea3e3ea2
--- /dev/null
+++ b/demo/JavaScriptApp/app/App_Resources/iOS/Info.plist
@@ -0,0 +1,47 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleDisplayName
+ ${PRODUCT_NAME}
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1.0
+ LSRequiresIPhoneOS
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIRequiresFullScreen
+
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+
+
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/LaunchScreen.storyboard b/demo/JavaScriptApp/app/App_Resources/iOS/LaunchScreen.storyboard
new file mode 100644
index 00000000..2ad9471e
--- /dev/null
+++ b/demo/JavaScriptApp/app/App_Resources/iOS/LaunchScreen.storyboard
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/JavaScriptApp/app/App_Resources/iOS/build.xcconfig b/demo/JavaScriptApp/app/App_Resources/iOS/build.xcconfig
new file mode 100644
index 00000000..4b011849
--- /dev/null
+++ b/demo/JavaScriptApp/app/App_Resources/iOS/build.xcconfig
@@ -0,0 +1,7 @@
+// You can add custom settings here
+// for example you can uncomment the following line to force distribution code signing
+// CODE_SIGN_IDENTITY = iPhone Distribution
+// To build for device with Xcode 8 you need to specify your development team. More info: https://developer.apple.com/library/prerelease/content/releasenotes/DeveloperTools/RN-Xcode/Introduction.html
+// DEVELOPMENT_TEAM = YOUR_TEAM_ID;
+ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
diff --git a/demo/JavaScriptApp/app/app.android.css b/demo/JavaScriptApp/app/app.android.css
new file mode 100644
index 00000000..fd5d1243
--- /dev/null
+++ b/demo/JavaScriptApp/app/app.android.css
@@ -0,0 +1,20 @@
+/*
+In NativeScript, the app.css file is where you place CSS rules that
+you would like to apply to your entire application. Check out
+http://docs.nativescript.org/ui/styling for a full list of the CSS
+selectors and properties you can use to style UI components.
+
+/*
+In many cases you may want to use the NativeScript core theme instead
+of writing your own CSS rules. For a full list of class names in the theme
+refer to http://docs.nativescript.org/ui/theme.
+*/
+@import '~nativescript-theme-core/css/core.light.css';
+
+ActionBar {
+ background-color: #7F9;
+}
+
+.app-class {
+ background-color: #7F9;
+}
\ No newline at end of file
diff --git a/demo/JavaScriptApp/app/app.ios.css b/demo/JavaScriptApp/app/app.ios.css
new file mode 100644
index 00000000..ea07d338
--- /dev/null
+++ b/demo/JavaScriptApp/app/app.ios.css
@@ -0,0 +1,20 @@
+/*
+In NativeScript, the app.css file is where you place CSS rules that
+you would like to apply to your entire application. Check out
+http://docs.nativescript.org/ui/styling for a full list of the CSS
+selectors and properties you can use to style UI components.
+
+/*
+In many cases you may want to use the NativeScript core theme instead
+of writing your own CSS rules. For a full list of class names in the theme
+refer to http://docs.nativescript.org/ui/theme.
+*/
+@import '~nativescript-theme-core/css/core.light.css';
+
+ActionBar {
+ background-color: #999;
+}
+
+.app-class {
+ background-color: #999;
+}
\ No newline at end of file
diff --git a/demo/JavaScriptApp/app/app.js b/demo/JavaScriptApp/app/app.js
new file mode 100644
index 00000000..0f9c0327
--- /dev/null
+++ b/demo/JavaScriptApp/app/app.js
@@ -0,0 +1,15 @@
+/*
+In NativeScript, the app.js file is the entry point to your application.
+You can use this file to perform app-level initialization, but the primary
+purpose of the file is to pass control to the app’s first module.
+*/
+
+require("./bundle-config");
+var application = require("application");
+
+application.start({ moduleName: "main-page" });
+
+/*
+Do not place any code after the application has been started as it will not
+be executed on iOS.
+*/
diff --git a/demo/JavaScriptApp/app/bundle-config.js b/demo/JavaScriptApp/app/bundle-config.js
new file mode 100644
index 00000000..18b6c2eb
--- /dev/null
+++ b/demo/JavaScriptApp/app/bundle-config.js
@@ -0,0 +1,9 @@
+if (global.TNS_WEBPACK) {
+ // registers tns-core-modules UI framework modules
+ require("bundle-entry-points");
+
+ // register application modules
+ // This will register each xml, css, js, ts, scss etc. in the app/ folder
+ const context = require.context("~/", true, /page\.(xml|css|js|ts|scss)$/);
+ global.registerWebpackModules(context);
+}
diff --git a/demo/JavaScriptApp/app/main-page.android.js b/demo/JavaScriptApp/app/main-page.android.js
new file mode 100644
index 00000000..31b03cd3
--- /dev/null
+++ b/demo/JavaScriptApp/app/main-page.android.js
@@ -0,0 +1,39 @@
+var frameModule = require("ui/frame");
+var createViewModel = require("./main-view-model").createViewModel;
+
+function onNavigatingTo(args) {
+ /*
+ This gets a reference this page’s UI component. You can
+ view the API reference of the Page to see what’s available at
+ https://docs.nativescript.org/api-reference/classes/_ui_page_.page.html
+ */
+ var page = args.object;
+
+ /*
+ A page’s bindingContext is an object that should be used to perform
+ data binding between XML markup and JavaScript code. Properties
+ on the bindingContext can be accessed using the {{ }} syntax in XML.
+ In this example, the {{ message }} and {{ onTap }} bindings are resolved
+ against the object returned by createViewModel().
+
+ You can learn more about data binding in NativeScript at
+ https://docs.nativescript.org/core-concepts/data-binding.
+ */
+ page.bindingContext = createViewModel();
+
+ page.getViewById("platform").text = "android";
+}
+
+/*
+Exporting a function in a NativeScript code-behind file makes it accessible
+to the file’s corresponding XML file. In this case, exporting the onNavigatingTo
+function here makes the navigatingTo="onNavigatingTo" binding in this page’s XML
+file work.
+*/
+exports.onNavigatingTo = onNavigatingTo;
+
+function goToSecondPage(args) {
+ var topmost = frameModule.topmost();
+ topmost.navigate("views/second-page");
+}
+exports.goToSecondPage = goToSecondPage;
diff --git a/demo/JavaScriptApp/app/main-page.android.scss b/demo/JavaScriptApp/app/main-page.android.scss
new file mode 100644
index 00000000..3eec5220
--- /dev/null
+++ b/demo/JavaScriptApp/app/main-page.android.scss
@@ -0,0 +1,9 @@
+StackLayout {
+ Button {
+ background-color: #7F9;
+ }
+}
+
+.page-class {
+ background-color: #7F9;
+}
\ No newline at end of file
diff --git a/demo/JavaScriptApp/app/main-page.android.xml b/demo/JavaScriptApp/app/main-page.android.xml
new file mode 100644
index 00000000..35578b2c
--- /dev/null
+++ b/demo/JavaScriptApp/app/main-page.android.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/JavaScriptApp/app/main-page.ios.js b/demo/JavaScriptApp/app/main-page.ios.js
new file mode 100644
index 00000000..1330474f
--- /dev/null
+++ b/demo/JavaScriptApp/app/main-page.ios.js
@@ -0,0 +1,39 @@
+var frameModule = require("ui/frame");
+var createViewModel = require("./main-view-model").createViewModel;
+
+function onNavigatingTo(args) {
+ /*
+ This gets a reference this page’s UI component. You can
+ view the API reference of the Page to see what’s available at
+ https://docs.nativescript.org/api-reference/classes/_ui_page_.page.html
+ */
+ var page = args.object;
+
+ /*
+ A page’s bindingContext is an object that should be used to perform
+ data binding between XML markup and JavaScript code. Properties
+ on the bindingContext can be accessed using the {{ }} syntax in XML.
+ In this example, the {{ message }} and {{ onTap }} bindings are resolved
+ against the object returned by createViewModel().
+
+ You can learn more about data binding in NativeScript at
+ https://docs.nativescript.org/core-concepts/data-binding.
+ */
+ page.bindingContext = createViewModel();
+
+ page.getViewById("platform").text = "ios";
+}
+
+/*
+Exporting a function in a NativeScript code-behind file makes it accessible
+to the file’s corresponding XML file. In this case, exporting the onNavigatingTo
+function here makes the navigatingTo="onNavigatingTo" binding in this page’s XML
+file work.
+*/
+exports.onNavigatingTo = onNavigatingTo;
+
+function goToSecondPage(args) {
+ var topmost = frameModule.topmost();
+ topmost.navigate("views/second-page");
+}
+exports.goToSecondPage = goToSecondPage;
diff --git a/demo/JavaScriptApp/app/main-page.ios.scss b/demo/JavaScriptApp/app/main-page.ios.scss
new file mode 100644
index 00000000..a067733a
--- /dev/null
+++ b/demo/JavaScriptApp/app/main-page.ios.scss
@@ -0,0 +1,9 @@
+StackLayout {
+ Button {
+ background-color: #999;
+ }
+}
+
+.page-class {
+ background-color: #999;
+}
\ No newline at end of file
diff --git a/demo/JavaScriptApp/app/main-page.ios.xml b/demo/JavaScriptApp/app/main-page.ios.xml
new file mode 100644
index 00000000..bfe7f17f
--- /dev/null
+++ b/demo/JavaScriptApp/app/main-page.ios.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/JavaScriptApp/app/main-view-model.js b/demo/JavaScriptApp/app/main-view-model.js
new file mode 100644
index 00000000..c0993f5a
--- /dev/null
+++ b/demo/JavaScriptApp/app/main-view-model.js
@@ -0,0 +1,24 @@
+var Observable = require("data/observable").Observable;
+
+function getMessage(counter) {
+ if (counter <= 0) {
+ return "Hoorraaay! You unlocked the NativeScript clicker achievement!";
+ } else {
+ return counter + " taps left";
+ }
+}
+
+function createViewModel() {
+ var viewModel = new Observable();
+ viewModel.counter = 42;
+ viewModel.message = getMessage(viewModel.counter);
+
+ viewModel.onTap = function() {
+ this.counter--;
+ this.set("message", getMessage(this.counter));
+ }
+
+ return viewModel;
+}
+
+exports.createViewModel = createViewModel;
\ No newline at end of file
diff --git a/demo/JavaScriptApp/app/package.json b/demo/JavaScriptApp/app/package.json
new file mode 100644
index 00000000..fa35743e
--- /dev/null
+++ b/demo/JavaScriptApp/app/package.json
@@ -0,0 +1,8 @@
+{
+ "android": {
+ "v8Flags": "--expose_gc"
+ },
+ "main": "app.js",
+ "name": "tns-template-hello-world",
+ "version": "3.3.0"
+}
\ No newline at end of file
diff --git a/demo/JavaScriptApp/app/references.d.ts b/demo/JavaScriptApp/app/references.d.ts
new file mode 100644
index 00000000..db28a5d7
--- /dev/null
+++ b/demo/JavaScriptApp/app/references.d.ts
@@ -0,0 +1 @@
+/// Enable smart suggestions and completions in Visual Studio Code JavaScript projects.
diff --git a/demo/JavaScriptApp/app/views/second-page.css b/demo/JavaScriptApp/app/views/second-page.css
new file mode 100644
index 00000000..a0b1ae7d
--- /dev/null
+++ b/demo/JavaScriptApp/app/views/second-page.css
@@ -0,0 +1,8 @@
+Button {
+ width: 110;
+ height: 110;
+ border-width: 1;
+ border-color: darkgray;
+ background-color: lightgray;
+ border-radius: 55;
+}
diff --git a/demo/JavaScriptApp/app/views/second-page.js b/demo/JavaScriptApp/app/views/second-page.js
new file mode 100644
index 00000000..f80d6e08
--- /dev/null
+++ b/demo/JavaScriptApp/app/views/second-page.js
@@ -0,0 +1,3 @@
+exports.secondPageTap = function(args) {
+ args.object.text = parseInt(args.object.text) + 1;
+}
\ No newline at end of file
diff --git a/demo/JavaScriptApp/app/views/second-page.xml b/demo/JavaScriptApp/app/views/second-page.xml
new file mode 100644
index 00000000..42cee254
--- /dev/null
+++ b/demo/JavaScriptApp/app/views/second-page.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/demo/JavaScriptApp/package.json b/demo/JavaScriptApp/package.json
new file mode 100644
index 00000000..8b487cfc
--- /dev/null
+++ b/demo/JavaScriptApp/package.json
@@ -0,0 +1,47 @@
+{
+ "description": "NativeScript Application",
+ "license": "SEE LICENSE IN ",
+ "readme": "NativeScript Application",
+ "repository": "",
+ "nativescript": {
+ "id": "org.nativescript.JavaScriptApp",
+ "tns-ios": {
+ "version": "next"
+ },
+ "tns-android": {
+ "version": "next"
+ }
+ },
+ "dependencies": {
+ "nativescript-theme-core": "~1.0.2",
+ "tns-core-modules": "next"
+ },
+ "devDependencies": {
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "copy-webpack-plugin": "~4.0.1",
+ "css-loader": "~0.28.7",
+ "extract-text-webpack-plugin": "~3.0.0",
+ "lazy": "1.0.11",
+ "nativescript-dev-sass": "^1.3.5",
+ "nativescript-dev-webpack": "file:../..",
+ "nativescript-worker-loader": "~0.8.1",
+ "node-sass": "^4.7.1",
+ "raw-loader": "~0.5.1",
+ "resolve-url-loader": "~2.1.0",
+ "sass-loader": "^6.0.6",
+ "webpack": "~3.8.1",
+ "webpack-bundle-analyzer": "^2.8.2",
+ "webpack-sources": "~1.0.1"
+ },
+ "scripts": {
+ "ns-bundle": "ns-bundle",
+ "start-android-bundle": "npm run ns-bundle --android --run-app",
+ "start-ios-bundle": "npm run ns-bundle --ios --run-app",
+ "build-android-bundle": "npm run ns-bundle --android --build-app",
+ "build-ios-bundle": "npm run ns-bundle --ios --build-app",
+ "publish-ios-bundle": "npm run ns-bundle --ios --publish-app",
+ "generate-android-snapshot": "generate-android-snapshot --targetArchs arm,arm64,ia32 --install"
+ }
+}
diff --git a/demo/TypeScriptApp/.gitignore b/demo/TypeScriptApp/.gitignore
new file mode 100644
index 00000000..0d71390f
--- /dev/null
+++ b/demo/TypeScriptApp/.gitignore
@@ -0,0 +1,5 @@
+app/**/*.js
+e2e/**/*.js
+
+app/main-page.android.css
+app/main-page.ios.css
\ No newline at end of file
diff --git a/demo/TypeScriptApp/.vscode/launch.json b/demo/TypeScriptApp/.vscode/launch.json
new file mode 100644
index 00000000..f0519850
--- /dev/null
+++ b/demo/TypeScriptApp/.vscode/launch.json
@@ -0,0 +1,54 @@
+{
+ // Use IntelliSense to learn about possible attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "type": "node",
+ "request": "launch",
+ "name": "Android",
+ "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
+ "args": [
+ "-u",
+ "tdd",
+ "--timeout",
+ "999999",
+ "--colors",
+ "--opts",
+ "./e2e/config/mocha.opts",
+ "--runType",
+ "android23",
+ "--reuseDevice"
+ // "${workspaceFolder}/test"
+ ],
+ "internalConsoleOptions": "openOnSessionStart"
+ },
+ {
+ "type": "node",
+ "request": "launch",
+ "name": "IOS",
+ "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
+ "args": [
+ "-u",
+ "tdd",
+ "--timeout",
+ "999999",
+ "--colors",
+ "--opts",
+ "./e2e/config/mocha.opts",
+ "--runType",
+ "sim.iPhoneX.iOS111",
+ "--reuseDevice"
+ // "${workspaceFolder}/test"
+ ],
+ "internalConsoleOptions": "openOnSessionStart"
+ },
+ {
+ "type": "node",
+ "request": "launch",
+ "name": "Launch Program",
+ "program": "${file}"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/AndroidManifest.xml b/demo/TypeScriptApp/app/App_Resources/Android/AndroidManifest.xml
new file mode 100644
index 00000000..9db83215
--- /dev/null
+++ b/demo/TypeScriptApp/app/App_Resources/Android/AndroidManifest.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/app.gradle b/demo/TypeScriptApp/app/App_Resources/Android/app.gradle
new file mode 100644
index 00000000..4769670e
--- /dev/null
+++ b/demo/TypeScriptApp/app/App_Resources/Android/app.gradle
@@ -0,0 +1,16 @@
+// Add your native dependencies here:
+
+// Uncomment to add recyclerview-v7 dependency
+//dependencies {
+// compile 'com.android.support:recyclerview-v7:+'
+//}
+
+android {
+ defaultConfig {
+ generatedDensities = []
+ applicationId = "org.nativescript.TypeScriptApp"
+ }
+ aaptOptions {
+ additionalParameters "--no-version-vectors"
+ }
+}
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/drawable-hdpi/background.png b/demo/TypeScriptApp/app/App_Resources/Android/drawable-hdpi/background.png
new file mode 100644
index 00000000..eb381c25
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/Android/drawable-hdpi/background.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/drawable-hdpi/icon.png b/demo/TypeScriptApp/app/App_Resources/Android/drawable-hdpi/icon.png
new file mode 100755
index 00000000..9cde84cd
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/Android/drawable-hdpi/icon.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/drawable-hdpi/logo.png b/demo/TypeScriptApp/app/App_Resources/Android/drawable-hdpi/logo.png
new file mode 100644
index 00000000..5218f4c9
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/Android/drawable-hdpi/logo.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/drawable-ldpi/background.png b/demo/TypeScriptApp/app/App_Resources/Android/drawable-ldpi/background.png
new file mode 100644
index 00000000..748b2adf
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/Android/drawable-ldpi/background.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/drawable-ldpi/icon.png b/demo/TypeScriptApp/app/App_Resources/Android/drawable-ldpi/icon.png
new file mode 100755
index 00000000..4d6a674b
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/Android/drawable-ldpi/icon.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/drawable-ldpi/logo.png b/demo/TypeScriptApp/app/App_Resources/Android/drawable-ldpi/logo.png
new file mode 100644
index 00000000..b9e102a7
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/Android/drawable-ldpi/logo.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/drawable-mdpi/background.png b/demo/TypeScriptApp/app/App_Resources/Android/drawable-mdpi/background.png
new file mode 100644
index 00000000..efeaf290
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/Android/drawable-mdpi/background.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/drawable-mdpi/icon.png b/demo/TypeScriptApp/app/App_Resources/Android/drawable-mdpi/icon.png
new file mode 100755
index 00000000..92ccc85a
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/Android/drawable-mdpi/icon.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/drawable-mdpi/logo.png b/demo/TypeScriptApp/app/App_Resources/Android/drawable-mdpi/logo.png
new file mode 100644
index 00000000..62633876
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/Android/drawable-mdpi/logo.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/drawable-nodpi/splash_screen.xml b/demo/TypeScriptApp/app/App_Resources/Android/drawable-nodpi/splash_screen.xml
new file mode 100644
index 00000000..ada77f92
--- /dev/null
+++ b/demo/TypeScriptApp/app/App_Resources/Android/drawable-nodpi/splash_screen.xml
@@ -0,0 +1,8 @@
+
+ -
+
+
+ -
+
+
+
\ No newline at end of file
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/drawable-xhdpi/background.png b/demo/TypeScriptApp/app/App_Resources/Android/drawable-xhdpi/background.png
new file mode 100644
index 00000000..612bbd07
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/Android/drawable-xhdpi/background.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/drawable-xhdpi/icon.png b/demo/TypeScriptApp/app/App_Resources/Android/drawable-xhdpi/icon.png
new file mode 100644
index 00000000..8bcde627
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/Android/drawable-xhdpi/icon.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/drawable-xhdpi/logo.png b/demo/TypeScriptApp/app/App_Resources/Android/drawable-xhdpi/logo.png
new file mode 100644
index 00000000..ad8ee2f4
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/Android/drawable-xhdpi/logo.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/drawable-xxhdpi/background.png b/demo/TypeScriptApp/app/App_Resources/Android/drawable-xxhdpi/background.png
new file mode 100644
index 00000000..0fa88e23
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/Android/drawable-xxhdpi/background.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/drawable-xxhdpi/icon.png b/demo/TypeScriptApp/app/App_Resources/Android/drawable-xxhdpi/icon.png
new file mode 100644
index 00000000..9d81c85d
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/Android/drawable-xxhdpi/icon.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/drawable-xxhdpi/logo.png b/demo/TypeScriptApp/app/App_Resources/Android/drawable-xxhdpi/logo.png
new file mode 100644
index 00000000..66832783
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/Android/drawable-xxhdpi/logo.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/drawable-xxxhdpi/background.png b/demo/TypeScriptApp/app/App_Resources/Android/drawable-xxxhdpi/background.png
new file mode 100644
index 00000000..c650f643
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/Android/drawable-xxxhdpi/background.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/drawable-xxxhdpi/icon.png b/demo/TypeScriptApp/app/App_Resources/Android/drawable-xxxhdpi/icon.png
new file mode 100644
index 00000000..9a34d0d4
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/Android/drawable-xxxhdpi/icon.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/drawable-xxxhdpi/logo.png b/demo/TypeScriptApp/app/App_Resources/Android/drawable-xxxhdpi/logo.png
new file mode 100644
index 00000000..fa6331c8
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/Android/drawable-xxxhdpi/logo.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/values-v21/colors.xml b/demo/TypeScriptApp/app/App_Resources/Android/values-v21/colors.xml
new file mode 100644
index 00000000..a64641a9
--- /dev/null
+++ b/demo/TypeScriptApp/app/App_Resources/Android/values-v21/colors.xml
@@ -0,0 +1,4 @@
+
+
+ #3d5afe
+
\ No newline at end of file
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/values-v21/styles.xml b/demo/TypeScriptApp/app/App_Resources/Android/values-v21/styles.xml
new file mode 100644
index 00000000..dac8727c
--- /dev/null
+++ b/demo/TypeScriptApp/app/App_Resources/Android/values-v21/styles.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/values/colors.xml b/demo/TypeScriptApp/app/App_Resources/Android/values/colors.xml
new file mode 100644
index 00000000..74ad8829
--- /dev/null
+++ b/demo/TypeScriptApp/app/App_Resources/Android/values/colors.xml
@@ -0,0 +1,7 @@
+
+
+ #F5F5F5
+ #757575
+ #33B5E5
+ #272734
+
\ No newline at end of file
diff --git a/demo/TypeScriptApp/app/App_Resources/Android/values/styles.xml b/demo/TypeScriptApp/app/App_Resources/Android/values/styles.xml
new file mode 100644
index 00000000..c793e6d4
--- /dev/null
+++ b/demo/TypeScriptApp/app/App_Resources/Android/values/styles.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 00000000..4034b76e
--- /dev/null
+++ b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,98 @@
+{
+ "images" : [
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "icon-29.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "icon-29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "icon-29@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "icon-40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "icon-40@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "icon-60@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "icon-60@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "icon-29.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "icon-29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "icon-40.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "icon-40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "icon-76.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "icon-76@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "83.5x83.5",
+ "idiom" : "ipad",
+ "filename" : "icon-83.5@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "1024x1024",
+ "idiom" : "ios-marketing",
+ "filename" : "icon-1024.png",
+ "scale" : "1x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png
new file mode 100644
index 00000000..a1d7eb47
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png
new file mode 100644
index 00000000..bb9b9e86
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png
new file mode 100644
index 00000000..ec609dcf
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png
new file mode 100644
index 00000000..a9718080
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png
new file mode 100644
index 00000000..214800ee
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png
new file mode 100644
index 00000000..8554b88a
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png
new file mode 100644
index 00000000..a22626ba
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png
new file mode 100644
index 00000000..a22626ba
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png
new file mode 100644
index 00000000..492c9c8e
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png
new file mode 100644
index 00000000..9208113c
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png
new file mode 100644
index 00000000..24415e5a
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png
new file mode 100644
index 00000000..b3ef1bf0
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/Contents.json b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/Contents.json
new file mode 100644
index 00000000..da4a164c
--- /dev/null
+++ b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Contents.json b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Contents.json
new file mode 100644
index 00000000..4414bad0
--- /dev/null
+++ b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Contents.json
@@ -0,0 +1,158 @@
+{
+ "images" : [
+ {
+ "extent" : "full-screen",
+ "idiom" : "iphone",
+ "subtype" : "736h",
+ "filename" : "Default-736h@3x.png",
+ "minimum-system-version" : "8.0",
+ "orientation" : "portrait",
+ "scale" : "3x"
+ },
+ {
+ "extent" : "full-screen",
+ "idiom" : "iphone",
+ "subtype" : "736h",
+ "filename" : "Default-Landscape@3x.png",
+ "minimum-system-version" : "8.0",
+ "orientation" : "landscape",
+ "scale" : "3x"
+ },
+ {
+ "extent" : "full-screen",
+ "idiom" : "iphone",
+ "subtype" : "667h",
+ "filename" : "Default-667h@2x.png",
+ "minimum-system-version" : "8.0",
+ "orientation" : "portrait",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "iphone",
+ "filename" : "Default@2x.png",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "2x"
+ },
+ {
+ "extent" : "full-screen",
+ "idiom" : "iphone",
+ "subtype" : "retina4",
+ "filename" : "Default-568h@2x.png",
+ "minimum-system-version" : "7.0",
+ "orientation" : "portrait",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "filename" : "Default-Portrait.png",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "filename" : "Default-Landscape.png",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "filename" : "Default-Portrait@2x.png",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "filename" : "Default-Landscape@2x.png",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "iphone",
+ "filename" : "Default.png",
+ "extent" : "full-screen",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "iphone",
+ "filename" : "Default@2x.png",
+ "extent" : "full-screen",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "iphone",
+ "filename" : "Default-568h@2x.png",
+ "extent" : "full-screen",
+ "subtype" : "retina4",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "extent" : "to-status-bar",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "filename" : "Default-Portrait.png",
+ "extent" : "full-screen",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "extent" : "to-status-bar",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "filename" : "Default-Landscape.png",
+ "extent" : "full-screen",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "extent" : "to-status-bar",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "filename" : "Default-Portrait@2x.png",
+ "extent" : "full-screen",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "extent" : "to-status-bar",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "filename" : "Default-Landscape@2x.png",
+ "extent" : "full-screen",
+ "scale" : "2x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png
new file mode 100644
index 00000000..d7f17fcd
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png
new file mode 100644
index 00000000..b8841540
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-736h@3x.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-736h@3x.png
new file mode 100644
index 00000000..faab4b63
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-736h@3x.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape.png
new file mode 100644
index 00000000..3365ba3c
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@2x.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@2x.png
new file mode 100644
index 00000000..a44945c1
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@2x.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@3x.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@3x.png
new file mode 100644
index 00000000..e6dca626
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@3x.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait.png
new file mode 100644
index 00000000..1a500796
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png
new file mode 100644
index 00000000..73d8b920
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default.png
new file mode 100644
index 00000000..9f1f6ce3
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default@2x.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default@2x.png
new file mode 100644
index 00000000..514fc5cd
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default@2x.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json
new file mode 100644
index 00000000..4f4e9c50
--- /dev/null
+++ b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchScreen-AspectFill.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchScreen-AspectFill@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png
new file mode 100644
index 00000000..c293f9c7
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png
new file mode 100644
index 00000000..233693a6
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json
new file mode 100644
index 00000000..23c0ffd7
--- /dev/null
+++ b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchScreen-Center.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchScreen-Center@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png
new file mode 100644
index 00000000..a5a775a2
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png
new file mode 100644
index 00000000..154c1934
Binary files /dev/null and b/demo/TypeScriptApp/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png differ
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/Info.plist b/demo/TypeScriptApp/app/App_Resources/iOS/Info.plist
new file mode 100644
index 00000000..ea3e3ea2
--- /dev/null
+++ b/demo/TypeScriptApp/app/App_Resources/iOS/Info.plist
@@ -0,0 +1,47 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleDisplayName
+ ${PRODUCT_NAME}
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1.0
+ LSRequiresIPhoneOS
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIRequiresFullScreen
+
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+
+
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/LaunchScreen.storyboard b/demo/TypeScriptApp/app/App_Resources/iOS/LaunchScreen.storyboard
new file mode 100644
index 00000000..2ad9471e
--- /dev/null
+++ b/demo/TypeScriptApp/app/App_Resources/iOS/LaunchScreen.storyboard
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/TypeScriptApp/app/App_Resources/iOS/build.xcconfig b/demo/TypeScriptApp/app/App_Resources/iOS/build.xcconfig
new file mode 100644
index 00000000..9d738435
--- /dev/null
+++ b/demo/TypeScriptApp/app/App_Resources/iOS/build.xcconfig
@@ -0,0 +1,7 @@
+// You can add custom settings here
+// for example you can uncomment the following line to force distribution code signing
+// CODE_SIGN_IDENTITY = iPhone Distribution
+// To build for device with XCode 8 you need to specify your development team. More info: https://developer.apple.com/library/prerelease/content/releasenotes/DeveloperTools/RN-Xcode/Introduction.html
+// DEVELOPMENT_TEAM = YOUR_TEAM_ID;
+ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
diff --git a/demo/TypeScriptApp/app/README.md b/demo/TypeScriptApp/app/README.md
new file mode 100644
index 00000000..9c4d225e
--- /dev/null
+++ b/demo/TypeScriptApp/app/README.md
@@ -0,0 +1,24 @@
+# NativeScript TypeScript Template
+
+This template creates a NativeScript app with the NativeScript hello world example,
+however, in this template the example is built with TypeScript.
+
+You can create a new app that uses this template with either the `--template` option.
+
+```
+tns create my-app-name --template tns-template-hello-world-ts
+```
+
+Or the `--tsc` shorthand.
+
+```
+tns create my-app-name --tsc
+```
+
+> Note: Both commands will create a new NativeScript app that uses the latest version of this template published to [npm] (https://www.npmjs.com/package/tns-template-hello-world-ts).
+
+If you want to create a new app that uses the source of the template from the `master` branch, you can execute the following:
+
+```
+tns create my-app-name --template https://github.com/NativeScript/template-hello-world-ts.git#master
+```
diff --git a/demo/TypeScriptApp/app/app.android.css b/demo/TypeScriptApp/app/app.android.css
new file mode 100644
index 00000000..fd5d1243
--- /dev/null
+++ b/demo/TypeScriptApp/app/app.android.css
@@ -0,0 +1,20 @@
+/*
+In NativeScript, the app.css file is where you place CSS rules that
+you would like to apply to your entire application. Check out
+http://docs.nativescript.org/ui/styling for a full list of the CSS
+selectors and properties you can use to style UI components.
+
+/*
+In many cases you may want to use the NativeScript core theme instead
+of writing your own CSS rules. For a full list of class names in the theme
+refer to http://docs.nativescript.org/ui/theme.
+*/
+@import '~nativescript-theme-core/css/core.light.css';
+
+ActionBar {
+ background-color: #7F9;
+}
+
+.app-class {
+ background-color: #7F9;
+}
\ No newline at end of file
diff --git a/demo/TypeScriptApp/app/app.ios.css b/demo/TypeScriptApp/app/app.ios.css
new file mode 100644
index 00000000..ea07d338
--- /dev/null
+++ b/demo/TypeScriptApp/app/app.ios.css
@@ -0,0 +1,20 @@
+/*
+In NativeScript, the app.css file is where you place CSS rules that
+you would like to apply to your entire application. Check out
+http://docs.nativescript.org/ui/styling for a full list of the CSS
+selectors and properties you can use to style UI components.
+
+/*
+In many cases you may want to use the NativeScript core theme instead
+of writing your own CSS rules. For a full list of class names in the theme
+refer to http://docs.nativescript.org/ui/theme.
+*/
+@import '~nativescript-theme-core/css/core.light.css';
+
+ActionBar {
+ background-color: #999;
+}
+
+.app-class {
+ background-color: #999;
+}
\ No newline at end of file
diff --git a/demo/TypeScriptApp/app/app.ts b/demo/TypeScriptApp/app/app.ts
new file mode 100644
index 00000000..e445c167
--- /dev/null
+++ b/demo/TypeScriptApp/app/app.ts
@@ -0,0 +1,15 @@
+/*
+In NativeScript, the app.ts file is the entry point to your application.
+You can use this file to perform app-level initialization, but the primary
+purpose of the file is to pass control to the app’s first module.
+*/
+
+import "./bundle-config";
+import * as app from 'application';
+
+app.start({ moduleName: 'main-page' });
+
+/*
+Do not place any code after the application has been started as it will not
+be executed on iOS.
+*/
diff --git a/demo/TypeScriptApp/app/bundle-config.ts b/demo/TypeScriptApp/app/bundle-config.ts
new file mode 100644
index 00000000..89587488
--- /dev/null
+++ b/demo/TypeScriptApp/app/bundle-config.ts
@@ -0,0 +1,15 @@
+if ((global).TNS_WEBPACK) {
+ //registers tns-core-modules UI framework modules
+ require("bundle-entry-points");
+
+ // register application modules
+ // This will register each xml, css, js, ts, scss etc. in the app/ folder
+ const context = (require).context("~/", true, /page\.(xml|css|js|ts|scss)$/);
+ global.registerWebpackModules(context);
+
+ console.log("Register:");
+ context.keys().forEach(key => {
+ console.log(" - " + key);
+ });
+
+}
diff --git a/demo/TypeScriptApp/app/main-page.android.scss b/demo/TypeScriptApp/app/main-page.android.scss
new file mode 100644
index 00000000..3eec5220
--- /dev/null
+++ b/demo/TypeScriptApp/app/main-page.android.scss
@@ -0,0 +1,9 @@
+StackLayout {
+ Button {
+ background-color: #7F9;
+ }
+}
+
+.page-class {
+ background-color: #7F9;
+}
\ No newline at end of file
diff --git a/demo/TypeScriptApp/app/main-page.android.ts b/demo/TypeScriptApp/app/main-page.android.ts
new file mode 100644
index 00000000..6e8a6eef
--- /dev/null
+++ b/demo/TypeScriptApp/app/main-page.android.ts
@@ -0,0 +1,40 @@
+/*
+In NativeScript, a file with the same name as an XML file is known as
+a code-behind file. The code-behind is a great place to place your view
+logic, and to set up your page’s data binding.
+*/
+
+import { EventData } from 'data/observable';
+import { Page } from 'ui/page';
+import { HelloWorldModel } from './main-view-model';
+import { Label } from 'ui/label';
+import * as frameModule from 'ui/frame';
+
+// Event handler for Page "navigatingTo" event attached in main-page.xml
+export function onNavigatingTo(args: EventData) {
+ /*
+ This gets a reference this page’s UI component. You can
+ view the API reference of the Page to see what’s available at
+ https://docs.nativescript.org/api-reference/classes/_ui_page_.page.html
+ */
+ let page = args.object;
+
+ /*
+ A page’s bindingContext is an object that should be used to perform
+ data binding between XML markup and TypeScript code. Properties
+ on the bindingContext can be accessed using the {{ }} syntax in XML.
+ In this example, the {{ message }} and {{ onTap }} bindings are resolved
+ against the object returned by createViewModel().
+
+ You can learn more about data binding in NativeScript at
+ https://docs.nativescript.org/core-concepts/data-binding.
+ */
+ page.bindingContext = new HelloWorldModel();
+
+ page.getViewById