diff --git a/.gitignore b/.gitignore
index 4d08210..8f1faee 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,18 +1 @@
-*.js
-*.js.map
-*.log
-!scripts/*.js
-demo/app/*.js
-!demo/karma.conf.js
-!demo/app/tests/*.js
-demo/*.d.ts
-!demo/references.d.ts
-demo/lib
-demo/platforms
-demo/node_modules
-demo-angular/app/*.js
-demo-angular/*.d.ts
-demo-angular/platforms
-demo-angular/node_modules
-src/node_modules
-/.vscode/
\ No newline at end of file
+/.vscode/
diff --git a/README.md b/README.md
index 24689cd..abadc35 100644
--- a/README.md
+++ b/README.md
@@ -17,7 +17,7 @@ NativeScript : Facebook SDK 
- [Facebook Login Button](#facebook-login-button)
- [Custom Login Button](#custom-login-button)
-- [NativeScript + Angular](#nativescript--angular)
+- [NativeScript Angular](#nativescript--angular)
- [Initialization](#initialization-1)
- [Login](#login-1)
- [Facebook Login Button](#facebook-login-button-1)
@@ -144,13 +144,13 @@ export class HelloWorldModel extends Observable {
}
```
-## NativeScript + Angular
+## NativeScript Angular
### Initialization
Call init of nativescript-facebook module on application launch.
-main.ts
+app.module.ts
```TypeScript
-import { platformNativeScriptDynamic } from "nativescript-angular/platform";
+...
import * as application from 'application';
var nsFacebook = require('nativescript-facebook');
@@ -159,8 +159,7 @@ import { AppModule } from "./app.module";
application.on(application.launchEvent, function (args) {
nsFacebook.init("{facebook_app_id}");
});
-
-platformNativeScriptDynamic().bootstrapModule(AppModule);
+...
```
### Login
diff --git a/demo-angular/.gitignore b/demo-angular/.gitignore
new file mode 100644
index 0000000..6b1e5df
--- /dev/null
+++ b/demo-angular/.gitignore
@@ -0,0 +1,4 @@
+platforms
+node_modules
+hooks
+app/**/*.js
diff --git a/demo-angular/app/app.component.html b/demo-angular/app/app.component.html
index a0b9786..c4ea399 100644
--- a/demo-angular/app/app.component.html
+++ b/demo-angular/app/app.component.html
@@ -1,4 +1,4 @@
-
+
-
\ No newline at end of file
+
diff --git a/demo-angular/app/app.module.ts b/demo-angular/app/app.module.ts
index 600763a..bd14153 100644
--- a/demo-angular/app/app.module.ts
+++ b/demo-angular/app/app.module.ts
@@ -2,21 +2,22 @@ import { NgModule, NO_ERRORS_SCHEMA } from "@angular/core";
import { NativeScriptModule } from "nativescript-angular/nativescript.module";
import { AppComponent } from "./app.component";
-import { NativescriptFacebookModule } from "nativescript-facebook/angular";
+import { NativeScriptFacebookModule } from "nativescript-facebook/angular";
+
+import * as application from 'application';
+var nsFacebook = require('nativescript-facebook');
+
+application.on(application.launchEvent, function (args) {
+ nsFacebook.init("1771472059772879");
+});
@NgModule({
- bootstrap: [
- AppComponent
- ],
+ bootstrap: [ AppComponent ],
imports: [
NativeScriptModule,
- NativescriptFacebookModule
- ],
- declarations: [
- AppComponent
+ NativeScriptFacebookModule
],
- schemas: [
- NO_ERRORS_SCHEMA
- ]
+ declarations: [ AppComponent ],
+ schemas: [ NO_ERRORS_SCHEMA ]
})
export class AppModule { }
diff --git a/demo-angular/app/main.aot.ts b/demo-angular/app/main.aot.ts
index 8f033e9..98bf134 100644
--- a/demo-angular/app/main.aot.ts
+++ b/demo-angular/app/main.aot.ts
@@ -1,6 +1,4 @@
-// this import should be first in order to load some required settings (like globals and reflect-metadata)
import { platformNativeScript } from "nativescript-angular/platform-static";
-
import { AppModuleNgFactory } from "./app.module.ngfactory";
platformNativeScript().bootstrapModuleFactory(AppModuleNgFactory);
diff --git a/demo-angular/app/main.ts b/demo-angular/app/main.ts
index 66aa42f..639bfd5 100644
--- a/demo-angular/app/main.ts
+++ b/demo-angular/app/main.ts
@@ -1,12 +1,4 @@
-// this import should be first in order to load some required settings (like globals and reflect-metadata)
import { platformNativeScriptDynamic } from "nativescript-angular/platform";
-import * as application from 'application';
-var nsFacebook = require('nativescript-facebook');
-
import { AppModule } from "./app.module";
-application.on(application.launchEvent, function (args) {
- nsFacebook.init("1771472059772879");
-});
-
platformNativeScriptDynamic().bootstrapModule(AppModule);
diff --git a/demo-angular/app/vendor-platform.android.ts b/demo-angular/app/vendor-platform.android.ts
new file mode 100644
index 0000000..ba9742f
--- /dev/null
+++ b/demo-angular/app/vendor-platform.android.ts
@@ -0,0 +1,25 @@
+// Resolve JavaScript classes that extend a Java class, and need to resolve
+// their JavaScript module from a bundled script. For example:
+// NativeScriptApplication, NativeScriptActivity, etc.
+//
+// This module gets bundled together with the rest of the app code and the
+// `require` calls get resolved to the correct bundling import call.
+//
+// At runtime the module gets loaded *before* the rest of the app code, so code
+// placed here needs to be careful about its dependencies.
+
+require("application");
+require("ui/frame");
+require("ui/frame/activity");
+
+if (global.TNS_WEBPACK) {
+ global.__requireOverride = function (name, dir) {
+ if (name === "./tns_modules/application/application.js") {
+ return require("application");
+ } else if (name === "./tns_modules/ui/frame/frame.js") {
+ return require("ui/frame");
+ } else if (name === "./tns_modules/ui/frame/activity.js") {
+ return require("ui/frame/activity");
+ }
+ };
+}
diff --git a/demo-angular/app/vendor-platform.ios.ts b/demo-angular/app/vendor-platform.ios.ts
new file mode 100644
index 0000000..e69de29
diff --git a/demo-angular/app/vendor.ts b/demo-angular/app/vendor.ts
new file mode 100644
index 0000000..0d96965
--- /dev/null
+++ b/demo-angular/app/vendor.ts
@@ -0,0 +1,13 @@
+require("./vendor-platform");
+
+require("reflect-metadata");
+require("@angular/platform-browser");
+require("@angular/core");
+require("@angular/common");
+require("@angular/forms");
+require("@angular/http");
+require("@angular/router");
+
+require("nativescript-angular/platform-static");
+require("nativescript-angular/forms");
+require("nativescript-angular/router");
diff --git a/demo-angular/package.json b/demo-angular/package.json
index cadce01..d94bc6c 100644
--- a/demo-angular/package.json
+++ b/demo-angular/package.json
@@ -9,34 +9,54 @@
"version": "3.0.0-rc.1"
},
"tns-ios": {
- "version": "3.0.0-rc.1-2017-3-28-2"
+ "version": "3.0.0-rc.1"
}
},
"dependencies": {
- "@angular/common": "4.0.0",
- "@angular/compiler": "4.0.0",
- "@angular/core": "4.0.0",
- "@angular/forms": "4.0.0",
- "@angular/http": "4.0.0",
- "@angular/platform-browser": "4.0.0",
- "@angular/platform-browser-dynamic": "4.0.0",
- "@angular/router": "4.0.0",
- "nativescript-facebook": "file:///../src",
+ "@angular/common": "~4.0.0",
+ "@angular/compiler": "~4.0.0",
+ "@angular/core": "~4.0.0",
+ "@angular/forms": "~4.0.0",
+ "@angular/http": "~4.0.0",
+ "@angular/platform-browser": "~4.0.0",
+ "@angular/platform-browser-dynamic": "~4.0.0",
+ "@angular/router": "~4.0.0",
+ "nativescript-angular": "^3.0.0 || ^2.0.0-rc.1",
+ "nativescript-facebook": "../src",
"nativescript-theme-core": "^1.0.2",
"nativescript-unit-test-runner": "^0.3.4",
- "tns-core-modules": "rc"
+ "rxjs": "~5.3.0",
+ "tns-core-modules": "^3.0.0 || ^3.0.0-rc.1",
+ "zone.js": "^0.8.4"
},
"devDependencies": {
+ "@angular/compiler-cli": "~4.0.0",
+ "@ngtools/webpack": "1.3.0",
"babel-traverse": "6.12.0",
"babel-types": "6.11.1",
"babylon": "6.8.4",
+ "copy-webpack-plugin": "~4.0.1",
+ "extract-text-webpack-plugin": "~2.1.0",
"filewalker": "0.1.2",
"jasmine-core": "^2.5.2",
"karma": "^1.3.0",
"karma-jasmine": "^1.0.2",
"karma-nativescript-launcher": "^0.4.0",
"lazy": "1.0.11",
- "nativescript-dev-typescript": "0.4",
- "typescript": "2.2.2"
+ "nativescript-css-loader": "~0.26.0",
+ "nativescript-dev-typescript": "^0.4.0",
+ "nativescript-dev-webpack": "^0.4.0",
+ "raw-loader": "~0.5.1",
+ "resolve-url-loader": "~2.0.2",
+ "typescript": "~2.2.2",
+ "webpack": "~2.3.3",
+ "webpack-sources": "~0.2.3"
+ },
+ "scripts": {
+ "ns-bundle": "ns-bundle",
+ "start-android-bundle": "npm run ns-bundle --android --start-app",
+ "start-ios-bundle": "npm run ns-bundle --ios --start-app",
+ "build-android-bundle": "npm run ns-bundle --android --build-app",
+ "build-ios-bundle": "npm run ns-bundle --ios --build-app"
}
}
diff --git a/demo-angular/tsconfig.aot.json b/demo-angular/tsconfig.aot.json
new file mode 100644
index 0000000..23e3021
--- /dev/null
+++ b/demo-angular/tsconfig.aot.json
@@ -0,0 +1,39 @@
+{
+ "extends": "./tsconfig",
+ "compilerOptions": {
+ "baseUrl": ".",
+ "paths": {
+ "ui/*": ["node_modules/tns-core-modules/ui/*"],
+ "platform": ["node_modules/tns-core-modules/platform"],
+ "image-source": ["node_modules/tns-core-modules/image-source"],
+ "xml": ["node_modules/tns-core-modules/xml"],
+ "xhr": ["node_modules/tns-core-modules/xhr"],
+ "text": ["node_modules/tns-core-modules/text"],
+ "data": ["node_modules/tns-core-modules/data"],
+ "fetch": ["node_modules/tns-core-modules/fetch"],
+ "trace": ["node_modules/tns-core-modules/trace"],
+ "fps-meter": ["node_modules/tns-core-modules/fps-meter"],
+ "color": ["node_modules/tns-core-modules/color"],
+ "application-settings": ["node_modules/tns-core-modules/application-settings"],
+ "http": ["node_modules/tns-core-modules/http"],
+ "camera": ["node_modules/tns-core-modules/camera"],
+ "console": ["node_modules/tns-core-modules/console"],
+ "timer": ["node_modules/tns-core-modules/timer"],
+ "utils": ["node_modules/tns-core-modules/utils"],
+ "location": ["node_modules/tns-core-modules/location"],
+ "file-system": ["node_modules/tns-core-modules/file-system"],
+ "application": ["node_modules/tns-core-modules/application"],
+ "image-asset": ["node_modules/tns-core-modules/image-asset"],
+ "connectivity": ["node_modules/tns-core-modules/connectivity"],
+ "globals": ["node_modules/tns-core-modules/globals"]
+ }
+ },
+ "exclude": [
+ "node_modules",
+ "platforms"
+ ],
+ "angularCompilerOptions": {
+ "skipMetadataEmit": true,
+ "genDir": "./"
+ }
+}
diff --git a/demo-angular/tsconfig.json b/demo-angular/tsconfig.json
index 069dc21..145cbfc 100644
--- a/demo-angular/tsconfig.json
+++ b/demo-angular/tsconfig.json
@@ -9,7 +9,8 @@
"experimentalDecorators": true,
"lib": [
"es6",
- "dom"
+ "dom",
+ "es2015.iterable"
],
"baseUrl": ".",
"paths": {
diff --git a/demo-angular/webpack.android.js b/demo-angular/webpack.android.js
new file mode 100644
index 0000000..968e93b
--- /dev/null
+++ b/demo-angular/webpack.android.js
@@ -0,0 +1,2 @@
+var makeConfig = require("./webpack.common");
+module.exports = makeConfig("android");
diff --git a/demo-angular/webpack.common.js b/demo-angular/webpack.common.js
new file mode 100644
index 0000000..0d017eb
--- /dev/null
+++ b/demo-angular/webpack.common.js
@@ -0,0 +1,151 @@
+var webpack = require("webpack");
+var nsWebpack = require("nativescript-dev-webpack");
+var nativescriptTarget = require("nativescript-dev-webpack/nativescript-target");
+var path = require("path");
+var CopyWebpackPlugin = require("copy-webpack-plugin");
+var ExtractTextPlugin = require("extract-text-webpack-plugin");
+var AotPlugin = require("@ngtools/webpack").AotPlugin;
+
+module.exports = function (platform, destinationApp) {
+ if (!destinationApp) {
+ //Default destination inside platforms//...
+ destinationApp = nsWebpack.getAppPath(platform);
+ }
+ var entry = {};
+ // Discover entry module from package.json
+ entry.bundle = "./" + nsWebpack.getEntryModule();
+ //Vendor entry with third party libraries.
+ entry.vendor = "./vendor";
+ // app.css bundle
+ entry["app.css"] = "./app.css";
+
+ var plugins = [
+ new ExtractTextPlugin("app.css"),
+ // Vendor libs go to the vendor.js chunk
+ new webpack.optimize.CommonsChunkPlugin({
+ name: ["vendor"]
+ }),
+ // Define useful constants like TNS_WEBPACK
+ new webpack.DefinePlugin({
+ "global.TNS_WEBPACK": "true",
+ }),
+ // Copy assets to out dir. Add your own globs as needed.
+ new CopyWebpackPlugin([
+ { from: "app.css" },
+ { from: "css/**" },
+ { from: "fonts/**" },
+ { from: "**/*.jpg" },
+ { from: "**/*.png" },
+ { from: "**/*.xml" },
+ ], { ignore: ["App_Resources/**"] }),
+ // Generate a bundle starter script and activate it in package.json
+ new nsWebpack.GenerateBundleStarterPlugin([
+ "./vendor",
+ "./bundle",
+ ]),
+
+ // Angular AOT compiler
+ new AotPlugin({
+ tsConfigPath: "tsconfig.aot.json",
+ entryModule: path.resolve(__dirname, "app/app.module#AppModule"),
+ typeChecking: false
+ }),
+ new nsWebpack.StyleUrlResolvePlugin({platform}),
+ ];
+
+ if (process.env.npm_config_uglify) {
+ plugins.push(new webpack.LoaderOptionsPlugin({
+ minimize: true
+ }));
+
+ // Work around an Android issue by setting compress = false
+ var compress = platform !== "android";
+ plugins.push(new webpack.optimize.UglifyJsPlugin({
+ mangle: {
+ except: nsWebpack.uglifyMangleExcludes,
+ },
+ compress: compress,
+ }));
+ }
+
+ return {
+ context: path.resolve("./app"),
+ target: nativescriptTarget,
+ entry: entry,
+ output: {
+ pathinfo: true,
+ path: path.resolve(destinationApp),
+ libraryTarget: "commonjs2",
+ filename: "[name].js",
+ },
+ resolve: {
+ // Resolve platform-specific modules like module.android.js
+ extensions: [
+ ".aot.ts",
+ ".ts",
+ ".js",
+ ".css",
+ "." + platform + ".ts",
+ "." + platform + ".js",
+ "." + platform + ".css",
+ ],
+ // Resolve {N} system modules from tns-core-modules
+ modules: [
+ "node_modules/tns-core-modules",
+ "node_modules",
+ ]
+ },
+ node: {
+ // Disable node shims that conflict with NativeScript
+ "http": false,
+ "timers": false,
+ "setImmediate": false,
+ "fs": "empty",
+ },
+ module: {
+ loaders: [
+ {
+ test: /\.html$|\.xml$/,
+ loaders: [
+ "raw-loader",
+ ]
+ },
+ // Root app.css file gets extracted with bundled dependencies
+ {
+ test: /app\.css$/,
+ loader: ExtractTextPlugin.extract([
+ "resolve-url-loader",
+ "nativescript-css-loader",
+ "nativescript-dev-webpack/platform-css-loader",
+ ]),
+ },
+ // Other CSS files get bundled using the raw loader
+ {
+ test: /\.css$/,
+ exclude: /app\.css$/,
+ loaders: [
+ "raw-loader",
+ ]
+ },
+ // Compile TypeScript files with ahead-of-time compiler.
+ {
+ test: /\.ts$/,
+ loaders: [
+ "nativescript-dev-webpack/tns-aot-loader",
+ "@ngtools/webpack",
+ ]
+ },
+ // SASS support
+ {
+ test: /\.scss$/,
+ loaders: [
+ "raw-loader",
+ "resolve-url-loader",
+ "sass-loader",
+ ]
+ },
+ ]
+ },
+ plugins: plugins,
+ };
+};
diff --git a/demo-angular/webpack.ios.js b/demo-angular/webpack.ios.js
new file mode 100644
index 0000000..806f3ef
--- /dev/null
+++ b/demo-angular/webpack.ios.js
@@ -0,0 +1,2 @@
+var makeConfig = require("./webpack.common");
+module.exports = makeConfig("ios");
diff --git a/demo/.gitignore b/demo/.gitignore
new file mode 100644
index 0000000..5c1c079
--- /dev/null
+++ b/demo/.gitignore
@@ -0,0 +1,4 @@
+node_modules
+platforms
+hooks
+app/**/*.js
diff --git a/demo/app/app.ts b/demo/app/app.ts
index 81b6356..50313e5 100644
--- a/demo/app/app.ts
+++ b/demo/app/app.ts
@@ -1,8 +1,10 @@
-import * as application from 'application';
-var nsFacebook = require('nativescript-facebook');
+import "./bundle-config";
+
+import * as application from 'application';
+import { init } from "nativescript-facebook";
application.on(application.launchEvent, function (args) {
- nsFacebook.init("1771472059772879");
+ init("1771472059772879");
});
application.start({ moduleName: "main-page" });
diff --git a/demo/app/bundle-config.ts b/demo/app/bundle-config.ts
new file mode 100644
index 0000000..a88fa89
--- /dev/null
+++ b/demo/app/bundle-config.ts
@@ -0,0 +1,8 @@
+if ((global).TNS_WEBPACK) {
+ require("bundle-entry-points");
+
+ global.registerModule("main-page", () => require("./main-page"));
+
+ // register application modules
+ global.registerModule("nativescript-facebook", () => require("nativescript-facebook"));
+}
diff --git a/demo/app/main-page.ts b/demo/app/main-page.ts
index 231d655..dca878e 100644
--- a/demo/app/main-page.ts
+++ b/demo/app/main-page.ts
@@ -1,10 +1,10 @@
-import * as observable from 'data/observable';
-import * as pages from 'ui/page';
-import {HelloWorldModel} from './main-view-model';
+import { EventData } from 'data/observable';
+import { Page } from 'ui/page';
+import { HelloWorldModel } from './main-view-model';
// Event handler for Page 'loaded' event attached in main-page.xml
-export function pageLoaded(args: observable.EventData) {
+export function pageLoaded(args: EventData) {
// Get the event sender
- let page = args.object;
+ let page = args.object;
page.bindingContext = new HelloWorldModel();
-}
\ No newline at end of file
+}
diff --git a/demo/app/main-page.xml b/demo/app/main-page.xml
index ecf6aca..2fddc4f 100644
--- a/demo/app/main-page.xml
+++ b/demo/app/main-page.xml
@@ -3,7 +3,7 @@
loaded="pageLoaded" class="page">
-
+
-
\ No newline at end of file
+
diff --git a/demo/app/main-view-model.ts b/demo/app/main-view-model.ts
index 8edd917..b1cb8c7 100644
--- a/demo/app/main-view-model.ts
+++ b/demo/app/main-view-model.ts
@@ -1,9 +1,7 @@
import { Observable } from 'data/observable';
-let Facebook = require('nativescript-facebook');
-// Facebook Authentication CODE
-import * as application from "application";
-var view = require("ui/core/view");
+import { login } from "nativescript-facebook";
+// Facebook Authentication CODE
export class HelloWorldModel extends Observable {
public onLogin(error, data) {
@@ -11,8 +9,6 @@ export class HelloWorldModel extends Observable {
}
public testAction() {
- Facebook.login((error, data) => {
- console.log("Success!");
- });
+ login((error, data) => console.log("Success!"));
}
-}
\ No newline at end of file
+}
diff --git a/demo/app/vendor-platform.android.ts b/demo/app/vendor-platform.android.ts
new file mode 100644
index 0000000..ba9742f
--- /dev/null
+++ b/demo/app/vendor-platform.android.ts
@@ -0,0 +1,25 @@
+// Resolve JavaScript classes that extend a Java class, and need to resolve
+// their JavaScript module from a bundled script. For example:
+// NativeScriptApplication, NativeScriptActivity, etc.
+//
+// This module gets bundled together with the rest of the app code and the
+// `require` calls get resolved to the correct bundling import call.
+//
+// At runtime the module gets loaded *before* the rest of the app code, so code
+// placed here needs to be careful about its dependencies.
+
+require("application");
+require("ui/frame");
+require("ui/frame/activity");
+
+if (global.TNS_WEBPACK) {
+ global.__requireOverride = function (name, dir) {
+ if (name === "./tns_modules/application/application.js") {
+ return require("application");
+ } else if (name === "./tns_modules/ui/frame/frame.js") {
+ return require("ui/frame");
+ } else if (name === "./tns_modules/ui/frame/activity.js") {
+ return require("ui/frame/activity");
+ }
+ };
+}
diff --git a/demo/app/vendor-platform.ios.ts b/demo/app/vendor-platform.ios.ts
new file mode 100644
index 0000000..e69de29
diff --git a/demo/app/vendor.ts b/demo/app/vendor.ts
new file mode 100644
index 0000000..5c562b3
--- /dev/null
+++ b/demo/app/vendor.ts
@@ -0,0 +1,3 @@
+require("./vendor-platform");
+
+require("bundle-entry-points");
diff --git a/demo/package.json b/demo/package.json
index efd4abe..f17746e 100644
--- a/demo/package.json
+++ b/demo/package.json
@@ -9,22 +9,38 @@
}
},
"dependencies": {
- "nativescript-facebook": "file:///../src",
+ "nativescript-facebook": "../src",
"nativescript-theme-core": "^1.0.2",
"nativescript-unit-test-runner": "^0.3.4",
- "tns-core-modules": "rc"
+ "tns-core-modules": "^3.0.0 || ^3.0.0-rc.2"
},
"devDependencies": {
+ "awesome-typescript-loader": "~3.1.2",
"babel-traverse": "6.12.0",
"babel-types": "6.11.1",
"babylon": "6.8.4",
+ "copy-webpack-plugin": "~4.0.1",
+ "extract-text-webpack-plugin": "~2.1.0",
"filewalker": "0.1.2",
"jasmine-core": "^2.5.2",
"karma": "^1.3.0",
"karma-jasmine": "^1.0.2",
"karma-nativescript-launcher": "^0.4.0",
"lazy": "1.0.11",
- "nativescript-dev-typescript": "0.4",
- "typescript": "2.2.2"
+ "nativescript-css-loader": "~0.26.0",
+ "nativescript-dev-typescript": "^0.4.0",
+ "nativescript-dev-webpack": "^0.4.0",
+ "raw-loader": "~0.5.1",
+ "resolve-url-loader": "~2.0.2",
+ "typescript": "~2.2.2",
+ "webpack": "~2.3.3",
+ "webpack-sources": "~0.2.3"
+ },
+ "scripts": {
+ "ns-bundle": "ns-bundle",
+ "start-android-bundle": "npm run ns-bundle --android --start-app",
+ "start-ios-bundle": "npm run ns-bundle --ios --start-app",
+ "build-android-bundle": "npm run ns-bundle --android --build-app",
+ "build-ios-bundle": "npm run ns-bundle --ios --build-app"
}
}
diff --git a/demo/webpack.android.js b/demo/webpack.android.js
new file mode 100644
index 0000000..968e93b
--- /dev/null
+++ b/demo/webpack.android.js
@@ -0,0 +1,2 @@
+var makeConfig = require("./webpack.common");
+module.exports = makeConfig("android");
diff --git a/demo/webpack.common.js b/demo/webpack.common.js
new file mode 100644
index 0000000..8427c54
--- /dev/null
+++ b/demo/webpack.common.js
@@ -0,0 +1,138 @@
+var webpack = require("webpack");
+var nsWebpack = require("nativescript-dev-webpack");
+var nativescriptTarget = require("nativescript-dev-webpack/nativescript-target");
+var path = require("path");
+var CopyWebpackPlugin = require("copy-webpack-plugin");
+var ExtractTextPlugin = require("extract-text-webpack-plugin");
+
+module.exports = function (platform, destinationApp) {
+ if (!destinationApp) {
+ // Default destination inside platforms//...
+ destinationApp = nsWebpack.getAppPath(platform);
+ }
+ var entry = {};
+ // Discover entry module from package.json
+ entry.bundle = "./" + nsWebpack.getEntryModule();
+ // Vendor entry with third party libraries.
+ entry.vendor = "./vendor";
+ // app.css bundle
+ entry["app.css"] = "./app.css";
+
+ var plugins = [
+ new ExtractTextPlugin("app.css"),
+ // Vendor libs go to the vendor.js chunk
+ new webpack.optimize.CommonsChunkPlugin({
+ name: ["vendor"]
+ }),
+ // Define useful constants like TNS_WEBPACK
+ new webpack.DefinePlugin({
+ "global.TNS_WEBPACK": "true",
+ }),
+ // Copy assets to out dir. Add your own globs as needed.
+ new CopyWebpackPlugin([
+ { from: "app.css" },
+ { from: "css/**" },
+ { from: "fonts/**" },
+ { from: "**/*.jpg" },
+ { from: "**/*.png" },
+ { from: "**/*.xml" },
+ ], { ignore: ["App_Resources/**"] }),
+ // Generate a bundle starter script and activate it in package.json
+ new nsWebpack.GenerateBundleStarterPlugin([
+ "./vendor",
+ "./bundle",
+ ]),
+ ];
+
+ if (process.env.npm_config_uglify) {
+ plugins.push(new webpack.LoaderOptionsPlugin({
+ minimize: true
+ }));
+
+ // Work around an Android issue by setting compress = false
+ var compress = platform !== "android";
+ plugins.push(new webpack.optimize.UglifyJsPlugin({
+ mangle: {
+ except: nsWebpack.uglifyMangleExcludes,
+ },
+ compress: compress,
+ }));
+ }
+
+ return {
+ context: path.resolve("./app"),
+ target: nativescriptTarget,
+ entry: entry,
+ output: {
+ pathinfo: true,
+ path: path.resolve(destinationApp),
+ libraryTarget: "commonjs2",
+ filename: "[name].js",
+ },
+ resolve: {
+ // Resolve platform-specific modules like module.android.js
+ extensions: [
+ ".ts",
+ ".js",
+ ".css",
+ "." + platform + ".ts",
+ "." + platform + ".js",
+ "." + platform + ".css",
+ ],
+ // Resolve {N} system modules from tns-core-modules
+ modules: [
+ "node_modules/tns-core-modules",
+ "node_modules",
+ ]
+ },
+ node: {
+ // Disable node shims that conflict with NativeScript
+ "http": false,
+ "timers": false,
+ "setImmediate": false,
+ "fs": "empty",
+ },
+ module: {
+ loaders: [
+ {
+ test: /\.html$/,
+ loader: "raw-loader"
+ },
+ // Root app.css file gets extracted with bundled dependencies
+ {
+ test: /app\.css$/,
+ loader: ExtractTextPlugin.extract([
+ "resolve-url-loader",
+ "nativescript-css-loader",
+ "nativescript-dev-webpack/platform-css-loader",
+ ]),
+ },
+ // Other CSS files get bundled using the raw loader
+ {
+ test: /\.css$/,
+ exclude: /app\.css$/,
+ loaders: [
+ "raw-loader",
+ ]
+ },
+ // Compile TypeScript files, replace templateUrl and styleUrls.
+ {
+ test: /\.ts$/,
+ loaders: [
+ "awesome-typescript-loader",
+ ]
+ },
+ // SASS support
+ {
+ test: /\.scss$/,
+ loaders: [
+ "raw-loader",
+ "resolve-url-loader",
+ "sass-loader",
+ ]
+ },
+ ]
+ },
+ plugins: plugins,
+ };
+};
diff --git a/demo/webpack.ios.js b/demo/webpack.ios.js
new file mode 100644
index 0000000..806f3ef
--- /dev/null
+++ b/demo/webpack.ios.js
@@ -0,0 +1,2 @@
+var makeConfig = require("./webpack.common");
+module.exports = makeConfig("ios");
diff --git a/src/.gitignore b/src/.gitignore
new file mode 100644
index 0000000..1f1f02c
--- /dev/null
+++ b/src/.gitignore
@@ -0,0 +1,2 @@
+node_modules
+**/*.js
diff --git a/src/.npmignore b/src/.npmignore
new file mode 100644
index 0000000..fbfd1e9
--- /dev/null
+++ b/src/.npmignore
@@ -0,0 +1,10 @@
+*.ts
+*.tgz
+
+*.ts
+!*.d.ts
+
+*.js.map
+
+tsconfig.json
+.npmignore
diff --git a/src/angular/index.metadata.json b/src/angular/index.metadata.json
new file mode 100644
index 0000000..ad233f0
--- /dev/null
+++ b/src/angular/index.metadata.json
@@ -0,0 +1 @@
+[{"__symbolic":"module","version":3,"metadata":{},"exports":[{"from":"./nativescript-facebook-module"}]},{"__symbolic":"module","version":1,"metadata":{},"exports":[{"from":"./nativescript-facebook-module"}]}]
\ No newline at end of file
diff --git a/src/angular/nativescript-facebook-directives.metadata.json b/src/angular/nativescript-facebook-directives.metadata.json
new file mode 100644
index 0000000..eb2e731
--- /dev/null
+++ b/src/angular/nativescript-facebook-directives.metadata.json
@@ -0,0 +1 @@
+[{"__symbolic":"module","version":3,"metadata":{"FacebookLoginButtonDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"FacebookLoginButton"}]}]},"DIRECTIVES":[{"__symbolic":"reference","name":"FacebookLoginButtonDirective"}]}},{"__symbolic":"module","version":1,"metadata":{"FacebookLoginButtonDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"FacebookLoginButton"}]}]},"DIRECTIVES":[{"__symbolic":"reference","name":"FacebookLoginButtonDirective"}]}}]
\ No newline at end of file
diff --git a/src/angular/nativescript-facebook-directives.ts b/src/angular/nativescript-facebook-directives.ts
index 114ab9e..52a4667 100644
--- a/src/angular/nativescript-facebook-directives.ts
+++ b/src/angular/nativescript-facebook-directives.ts
@@ -1,10 +1,8 @@
-import { Directive } from '@angular/core'; // TODO: check require .Directive without hacks
+import { Directive } from "@angular/core"; // TODO: check require .Directive without hacks
@Directive({
selector: "FacebookLoginButton"
})
-export class FacebookLoginButtonDirective {
- constructor() { }
-}
+export class FacebookLoginButtonDirective { }
-export const DIRECTIVES = [FacebookLoginButtonDirective];
\ No newline at end of file
+export const DIRECTIVES = [FacebookLoginButtonDirective];
diff --git a/src/angular/nativescript-facebook-module.d.ts b/src/angular/nativescript-facebook-module.d.ts
index b2baf6b..633c5dd 100644
--- a/src/angular/nativescript-facebook-module.d.ts
+++ b/src/angular/nativescript-facebook-module.d.ts
@@ -1,2 +1,2 @@
-export declare class NativescriptFacebookModule {
+export declare class NativeScriptFacebookModule {
}
diff --git a/src/angular/nativescript-facebook-module.metadata.json b/src/angular/nativescript-facebook-module.metadata.json
new file mode 100644
index 0000000..09d9f00
--- /dev/null
+++ b/src/angular/nativescript-facebook-module.metadata.json
@@ -0,0 +1 @@
+[{"__symbolic":"module","version":3,"metadata":{"NativeScriptFacebookModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule"},"arguments":[{"declarations":[{"__symbolic":"reference","module":"./nativescript-facebook-directives","name":"DIRECTIVES"}],"exports":[{"__symbolic":"reference","module":"./nativescript-facebook-directives","name":"DIRECTIVES"}]}]}]}}},{"__symbolic":"module","version":1,"metadata":{"NativeScriptFacebookModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule"},"arguments":[{"declarations":[{"__symbolic":"reference","module":"./nativescript-facebook-directives","name":"DIRECTIVES"}],"exports":[{"__symbolic":"reference","module":"./nativescript-facebook-directives","name":"DIRECTIVES"}]}]}]}}}]
\ No newline at end of file
diff --git a/src/angular/nativescript-facebook-module.ts b/src/angular/nativescript-facebook-module.ts
index b6c8f58..f780d7a 100644
--- a/src/angular/nativescript-facebook-module.ts
+++ b/src/angular/nativescript-facebook-module.ts
@@ -7,6 +7,6 @@ import { DIRECTIVES } from "./nativescript-facebook-directives";
declarations: [DIRECTIVES],
exports: [DIRECTIVES],
})
-export class NativescriptFacebookModule { }
+export class NativeScriptFacebookModule { }
-registerElement("FacebookLoginButton", () => require("../").LoginButton);
\ No newline at end of file
+registerElement("FacebookLoginButton", () => require("../").LoginButton);
diff --git a/src/index.android.metadata.json b/src/index.android.metadata.json
new file mode 100644
index 0000000..6f9ff5a
--- /dev/null
+++ b/src/index.android.metadata.json
@@ -0,0 +1 @@
+[{"__symbolic":"module","version":3,"metadata":{},"exports":[{"from":"./login-manager"},{"from":"./login-button"}]},{"__symbolic":"module","version":1,"metadata":{},"exports":[{"from":"./login-manager"},{"from":"./login-button"}]}]
\ No newline at end of file
diff --git a/src/index.ios.metadata.json b/src/index.ios.metadata.json
new file mode 100644
index 0000000..6d119d6
--- /dev/null
+++ b/src/index.ios.metadata.json
@@ -0,0 +1 @@
+[{"__symbolic":"module","version":3,"metadata":{},"exports":[{"from":"./login-button"},{"from":"./login-manager"}]},{"__symbolic":"module","version":1,"metadata":{},"exports":[{"from":"./login-button"},{"from":"./login-manager"}]}]
\ No newline at end of file
diff --git a/src/login-button.android.metadata.json b/src/login-button.android.metadata.json
new file mode 100644
index 0000000..16ddc8f
--- /dev/null
+++ b/src/login-button.android.metadata.json
@@ -0,0 +1 @@
+[{"__symbolic":"module","version":3,"metadata":{"LoginButton":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"./login-button.common","name":"LoginButtonBase"},"members":{"createNativeView":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"LoginButton":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"./login-button.common","name":"LoginButtonBase"},"members":{"createNativeView":[{"__symbolic":"method"}]}}}}]
\ No newline at end of file
diff --git a/src/login-button.android.ts b/src/login-button.android.ts
index f5f6ed2..8932988 100644
--- a/src/login-button.android.ts
+++ b/src/login-button.android.ts
@@ -1,6 +1,6 @@
//NativeScript modules
import * as applicationModule from "application";
-import { LoginButton as LoginButtonBase } from './login-button.common';
+import { LoginButtonBase } from './login-button.common';
declare let com: any;
@@ -8,4 +8,4 @@ export class LoginButton extends LoginButtonBase {
public createNativeView() {
return new com.facebook.login.widget.LoginButton(this._context);
}
-}
\ No newline at end of file
+}
diff --git a/src/login-button.common.metadata.json b/src/login-button.common.metadata.json
new file mode 100644
index 0000000..ed28586
--- /dev/null
+++ b/src/login-button.common.metadata.json
@@ -0,0 +1 @@
+[{"__symbolic":"module","version":3,"metadata":{"LoginButtonBase":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"ui/core/view","name":"View"},"members":{"onLoginPropertyChanged":[{"__symbolic":"method"}]}},"onLoginProperty":{"__symbolic":"error","message":"Function call not supported","line":10,"character":31}}},{"__symbolic":"module","version":1,"metadata":{"LoginButtonBase":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"ui/core/view","name":"View"},"members":{"onLoginPropertyChanged":[{"__symbolic":"method"}]}},"onLoginProperty":{"__symbolic":"error","message":"Function call not supported","line":10,"character":31}}}]
\ No newline at end of file
diff --git a/src/login-button.common.ts b/src/login-button.common.ts
index 81cf836..6f31f12 100644
--- a/src/login-button.common.ts
+++ b/src/login-button.common.ts
@@ -1,15 +1,15 @@
import { View, Property } from "ui/core/view"
import * as loginManager from './login-manager';
-export abstract class LoginButton extends View {
+export abstract class LoginButtonBase extends View {
onLoginPropertyChanged(callback: any) {
loginManager._registerLoginCallback(callback);
}
}
-export const onLoginProperty = new Property({
- name: "onLogin", defaultValue: undefined, valueChanged: (btn, oldV, newV) => {
+export const onLoginProperty = new Property({
+ name: "login", valueChanged: (btn, oldV, newV) => {
btn.onLoginPropertyChanged(newV);
}
});
-onLoginProperty.register(LoginButton);
\ No newline at end of file
+onLoginProperty.register(LoginButtonBase);
diff --git a/src/login-button.ios.metadata.json b/src/login-button.ios.metadata.json
new file mode 100644
index 0000000..7ca141a
--- /dev/null
+++ b/src/login-button.ios.metadata.json
@@ -0,0 +1 @@
+[{"__symbolic":"module","version":3,"metadata":{"LoginButton":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"./login-button.common","name":"LoginButtonBase"},"members":{"__ctor__":[{"__symbolic":"constructor"}],"onLoaded":[{"__symbolic":"method"}],"onUnloaded":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"LoginButton":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"./login-button.common","name":"LoginButtonBase"},"members":{"__ctor__":[{"__symbolic":"constructor"}],"onLoaded":[{"__symbolic":"method"}],"onUnloaded":[{"__symbolic":"method"}]}}}}]
\ No newline at end of file
diff --git a/src/login-button.ios.ts b/src/login-button.ios.ts
index 1e25737..4076269 100644
--- a/src/login-button.ios.ts
+++ b/src/login-button.ios.ts
@@ -1,5 +1,5 @@
import * as applicationModule from "application";
-import { LoginButton as LoginButtonBase } from './login-button.common';
+import { LoginButtonBase } from './login-button.common';
import * as loginManager from './login-manager';
declare let FBSDKLoginButton: any;
@@ -43,4 +43,4 @@ class LoginButtonDelegate extends NSObject implements FBSDKLoginButtonDelegate {
loginButtonWillLogin(loginButton: any) {
return true;
}
-}
\ No newline at end of file
+}
diff --git a/src/login-manager.android.metadata.json b/src/login-manager.android.metadata.json
new file mode 100644
index 0000000..94aa44b
--- /dev/null
+++ b/src/login-manager.android.metadata.json
@@ -0,0 +1 @@
+[{"__symbolic":"module","version":3,"metadata":{"init":{"__symbolic":"function"},"_registerLoginCallback":{"__symbolic":"function"},"requestPublishPermissions":{"__symbolic":"function"},"requestReadPermissions":{"__symbolic":"function"},"login":{"__symbolic":"function"}}},{"__symbolic":"module","version":1,"metadata":{"init":{"__symbolic":"function"},"_registerLoginCallback":{"__symbolic":"function"},"requestPublishPermissions":{"__symbolic":"function"},"requestReadPermissions":{"__symbolic":"function"},"login":{"__symbolic":"function"}}}]
\ No newline at end of file
diff --git a/src/login-manager.android.ts b/src/login-manager.android.ts
index 10148f7..67b7269 100644
--- a/src/login-manager.android.ts
+++ b/src/login-manager.android.ts
@@ -89,6 +89,7 @@ export function requestReadPermissions(permissions: string[], callback: Function
}
export function login(callback: Function) {
+ console.log("requesting read permissions .... .")
requestReadPermissions(LOGIN_PERMISSIONS, callback);
}
diff --git a/src/login-manager.d.ts b/src/login-manager.d.ts
index f8dc9be..9983021 100644
--- a/src/login-manager.d.ts
+++ b/src/login-manager.d.ts
@@ -1,24 +1,24 @@
export declare function _registerLoginCallback(callback: Function): void;
export declare let _onLoginCallback: Function;
-/**
+/**
* Sets the Facebook application Id for the current app and init the native facebook sdk.
* @param {string} fbAppId the application Id
*/
export declare function init(fbId: string): void;
-/**
+/**
* Request the specified publish permissions.
* @param {string[]} permissions Array of the requested publish permissions.
* @param {Function} callback Function reference to be executed when the requested permissions are granted or denied.
*/
export declare function requestPublishPermissions(permissions: string[], callback: Function): void;
-/**
+/**
* Request the specified read permissions.
* @param {string[]} permissions Array of the requested read permissions.
* @param {Function} callback Function reference to be executed when the requested permissions are granted or denied.
*/
export declare function requestReadPermissions(permissions: string[], callback: Function): void;
-/**
+/**
* Trigger a login procedure by requesting the "public_profile" and "email" read permissions.
* @param {Function} callback Function reference to be executed when the requested permissions are granted or denied.
*/
diff --git a/src/login-manager.ios.metadata.json b/src/login-manager.ios.metadata.json
new file mode 100644
index 0000000..c17bbf0
--- /dev/null
+++ b/src/login-manager.ios.metadata.json
@@ -0,0 +1 @@
+[{"__symbolic":"module","version":3,"metadata":{"onLoginCallback":{"__symbolic":"error","message":"Variable not initialized","line":15,"character":11},"init":{"__symbolic":"function"},"_registerLoginCallback":{"__symbolic":"function"},"requestPublishPermissions":{"__symbolic":"function"},"requestReadPermissions":{"__symbolic":"function"},"login":{"__symbolic":"function"}}},{"__symbolic":"module","version":1,"metadata":{"onLoginCallback":{"__symbolic":"error","message":"Variable not initialized","line":15,"character":11},"init":{"__symbolic":"function"},"_registerLoginCallback":{"__symbolic":"function"},"requestPublishPermissions":{"__symbolic":"function"},"requestReadPermissions":{"__symbolic":"function"},"login":{"__symbolic":"function"}}}]
\ No newline at end of file
diff --git a/src/login-response.metadata.json b/src/login-response.metadata.json
new file mode 100644
index 0000000..980b460
--- /dev/null
+++ b/src/login-response.metadata.json
@@ -0,0 +1 @@
+[{"__symbolic":"module","version":3,"metadata":{"LoginResponse":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"}]}]}}}},{"__symbolic":"module","version":1,"metadata":{"LoginResponse":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"}]}]}}}}]
\ No newline at end of file
diff --git a/src/package.json b/src/package.json
index de1cdab..e6d898b 100644
--- a/src/package.json
+++ b/src/package.json
@@ -9,7 +9,9 @@
}
},
"scripts": {
- "build": "tsc",
+ "tsc": "tsc",
+ "ngc": "node --max-old-space-size=8192 ./node_modules/.bin/ngc",
+ "build": "tsc && ngc",
"demo.ios": "npm run preparedemo && cd ../demo && tns run ios --emulator",
"demo.ios.device": "npm run preparedemo && cd ../demo && tns run ios",
"demo.android": "npm run preparedemo && cd ../demo && tns debug android --justlaunch",
@@ -45,16 +47,19 @@
"license": "MIT",
"homepage": "https://github.com/angeltsvetkov/nativescript-facebook",
"readmeFilename": "README.md",
- "dependencies": {
- "nativescript-angular": "rc",
- "tns-core-modules": "rc",
- "tns-platform-declarations": "rc",
- "typescript": "2.2.2",
- "@angular/core": "4.0.1",
- "@angular/common": "4.0.1",
- "@angular/compiler": "4.0.1",
- "rxjs": "5.2.0",
- "reflect-metadata": "0.1.8",
- "zone.js": "0.8.4"
+ "devDependencies": {
+ "tns-core-modules": "^3.0.0 || ^3.0.0-rc.2",
+ "tns-platform-declarations": "^3.0.0 || ^3.0.0-rc.2",
+ "typescript": "~2.2.2",
+ "nativescript-angular": "^3.0.0 || ^2.0.0-rc.1",
+ "@angular/core": "~4.0.1",
+ "@angular/common": "~4.0.1",
+ "@angular/compiler": "~4.0.1",
+ "@angular/compiler-cli": "~4.0.1",
+ "rxjs": "~5.3.0",
+ "zone.js": "~0.8.4"
+ },
+ "peerDependencies": {
+ "tns-core-modules": "^3.0.0 || ^3.0.0-rc.2"
}
-}
\ No newline at end of file
+}
diff --git a/src/tsconfig.json b/src/tsconfig.json
index e7b4ab6..02b09bb 100644
--- a/src/tsconfig.json
+++ b/src/tsconfig.json
@@ -17,9 +17,15 @@
"pretty": true
},
"exclude": [
- "demo",
- "demo-angular",
- "node_modules"
+ "node_modules",
+ "platforms",
+ "hooks"
],
- "compileOnSave": false
-}
\ No newline at end of file
+ "compileOnSave": false,
+ "angularCompilerOptions": {
+ "annotateForClosureCompiler": true,
+ "strictMetadataEmit": true,
+ "skipTemplateCodegen": true,
+ "genDir": "."
+ }
+}