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

mongoose-activitylog

v1.0.2

Published

A mongoose plugin for logging activities

Downloads

22

Readme

mongoose-activitylog

NPM version Build Status Coverage Status

A mongoose plugin for logging activities

Install

$ npm install --save mongoose-activitylog

Usage

Define the Activity model

Add plugin to your Activity schema and then use the model methods.

const mongoose = require('mongoose')
const activitylog = require('mongoose-activitylog')

const ActivitySchema = new mongoose.Schema()
ActivitySchema.plugin(activitylog)

const Activity = mongoose.model('Activity', ActivitySchema)

Log an activity

This is the most basic way to log activity:

await new Activity().log('Look mum, I logged something')

You can retrieve the activity using the Activity model.

const activity = await Activity.findOne().sort('-createdAt').exec() // returns the last logged activity
activity.description // returns 'Look mum, I logged something'

Set a subject

You can specify on which object the activity is performed by using performedOn:

await new Activity()
  .performedOn(someContentDocument)
  .log('edited')

const activity = await Activity.findOne().sort('-createdAt').exec() // returns the last logged activity
activity.subject // returns the document that was passed to `performedOn`

The performedOn() function has a shorter alias name: on

Set a causer

You can set who or what caused the activity by using causedBy:

await new Activity()
  .performedOn(someContentDocument)
  .causedBy(someUserDocument)
  .log('edited')

const activity = await Activity.findOne().sort('-createdAt').exec() // returns the last logged activity
activity.causer // returns the document that was passed to `causedBy`

The causedBy() function has a shorter alias named: by

Set custom properties

You can add any property you want to an activity by using withProperties:

await new Activity()
  .performedOn(someContentDocument)
  .causedBy(someUserDocument)
  .withProperties({ key: 'value' })
  .log('edited')

const activity = await Activity.findOne().sort('-createdAt').exec() // returns the last logged activity
activity.properties // returns `{ key: 'value' }`
activity.getExtraProperty('key') // returns 'value'

The withProperties() function has a shorter alias named: with

API

log()

log(description: string): Promise

Log an activity.

performedOn()

performedOn(doc: Document): this

Specify on which object the activity is performed.

causedBy()

causedBy(doc: Document): this

Set who or what caused the activity.

withProperties()

withProperties(properties: object): this

Add properties to the activity.

withProperty()

withProperty(key: string, value: any): this

Add a property to the activity by key.

useLog()

useLog(logName: string): this

Specify log name of the activity.

use()

use(logName: string): this

Alias of useLog().

on()

on(doc: Document): this

Alias of performedOn().

by()

by(doc: Document): this

Alias of causedBy().

with()

with(properties: object): this
with(key: string, value: any): this

Alias of withProperties() / withProperty().

Note

Inspired by laravel-activitylog

License

MIT © Chun-Kai Wang