npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

angular-application-insights-v2

v0.0.2

Published

Angular implementation for Microsoft Azure Application Insights Javascript SDK V2

Downloads

35

Readme

Angular Azure Application Insights implementation for JS SDK V2

Connect your Angular client-side to Microsofts Application Insights with this easy-to-use Module.

Application Insights is an extensible Application Performance Management (APM) service for web developers on multiple platforms. Use it to monitor your live web application. It will automatically detect performance anomalies. It includes powerful analytics tools to help you diagnose issues and to understand what users actually do with your app.

npm NPM Downloads MIT License


Installation

Install & save the library to your package.json:

$ npm i --save angular-application-insights-v2

How to setup the AppModule configuration?

Now add ApplicationInsightsModule to your Angular Root AppModule:

  • Import the Application Insights module and the service provider
  • Add the Module to your imports
  • Add ApplicationInsightsService to your providers list
  • Initialize the Application Insights Service inside app root module constructor
// 1) Import the Application Insights module and the service provider
import { ApplicationInsightsModule, ApplicationInsightsService } from 'angular-application-insights-v2';

@NgModule({
  imports: [
    // 2) Add the Module to your imports
    ApplicationInsightsModule.forRoot({
      instrumentationKey: 'Your-Application-Insights-instrumentationKey'
    })
  ],
  providers: [ 
     // 3) Add AppInsightsService to your providers list
     ApplicationInsightsService
  ]
})
export class AppRootModule { 
  // 4) Initialize the Application Insights Service inside app root module constructor
  constructor(applicationInsightsService:ApplicationInsightsService,router:Router){
    applicationInsightsService.init(router);
  }
}

How to track the page view?

This library automatically track the initial request of a page. If you want to additionally track page requests then you can use the 'trackPageView' function from ApApplicationInsightsService.

this.appInsightsService.trackPageView({name:'Home Page Product List Tab', uri:"https://www.products.com",isLoggedIn:true,properties: { 'user': user.id, "action": "ProductList" }});

How to send custom events to Application Insights?

Through out your application you can now use the ApplicationInsightsService class to fire off Application Insights functionality.

import { ApplicationInsightsService } from 'angular-application-insights-v2';

export class ShoppingCartComponent {
  public cart: [];
  constructor(private appInsightsService: ApplicationInsightsService) {}

  saveCart(user) {
    // Saving some sample user & cart product data
    this.appInsightsService.trackEvent({name:'ShoppingCart Saved',properties: { 'user': user.id, 'cart': cart.id }});
  }
}

Usage with Aspnetcore-Angular2-Universal repo or JavaScriptServices ( apps w/ Server-side rendering )

ie: https://github.com/TrilonIO/aspnetcore-angular-universal

First, make sure you are only importing the library & the server within the browser-app.module NgModule (do not share it within a common one, as the server isn't able to use this library during it's server-renders).

Secondly, make sure you are calling the injector to get AppInsightsService during ngOnInit:

export class HomeComponent implements OnInit {

    private appInsightsService: ApplicationInsightsService;
    private isBrowser: boolean;

    constructor(@Inject(PLATFORM_ID) private platformId, private injector: Injector) {
        this.isBrowser = isPlatformBrowser(this.platformId);
    }

    ngOnInit() { // <-- 
        if (this.isBrowser) { // <-- only run if isBrowser
            this.appInsightsService = <ApplicationInsightsService>this.injector.get(ApplicationInsightsService); // <-- using the Injector, get the Service
            this.appInsightsService.trackEvent({name:'Testing', properties: { 'user': 'me' }});
        } 
    }
}

API

ApplicationInsightsService is an angular service which provides the wrapper the Application Insights instance and it has following API functions.

applicationInsightsService.trackEvent(event: Microsoft.ApplicationInsights.IEventTelemetry, customProperties:object);
applicationInsightsService.startTrackEvent(name: string);
applicationInsightsService.stopTrackEvent(name: string, properties?: object, measurements?:object);
applicationInsightsService.trackPageView(pageView: Microsoft.ApplicationInsights.IPageViewTelemetry);
applicationInsightsService.startTrackPage(name?: string);
applicationInsightsService.stopTrackPage(name?: string, url?: string, customProperties?: object);
applicationInsightsService.trackMetric(metric: Microsoft.ApplicationInsights.IMetricTelemetry, customProperties?:object);
applicationInsightsService.trackException(exception: Microsoft.ApplicationInsights.IExceptionTelemetry);
applicationInsightsService.trackTrace(trace: Microsoft.ApplicationInsights.ITraceTelemetry, customProperties?: object);
applicationInsightsService.setUserId(authenticatedUserId: string);
applicationInsightsService.clearUserId();
applicationInsightsService._onerror(exception: Microsoft.ApplicationInsights.IAutoExceptionTelemetry);
applicationInsightsService.trackPageViewPerformance(pageViewPerformance: Microsoft.ApplicationInsights.IPageViewPerformanceTelemetry);
applicationInsightsService.addTelemetryInitializer(telemetryInitializer: (item: Microsoft.ApplicationInsights.ITelemetryItem) => boolean | void);

How to build from source?

npm run build

To lint all *.ts files:

npm run lint

Credits

This project inspired by TrilonIO/angular-application-insights. Special thanks to @MarkPieszak

License

MIT License


Follow online:

Twitter: @tamvasan