open-index/open-npm huggingface dataset:
npm package: @moosesaeed/ga-gtag-partytown
Description: ES module for the Google Analytics Global Site Tag with partytown option.
Latest version: 0.0.9

# Global site tag (gtag.js) - Google Analytics
[![npm](https://img.shields.io/npm/v/ga-gtag.svg)](https://www.npmjs.com/package/ga-gtag)
![npm bundle size (minified)](https://img.shields.io/bundlephobia/min/ga-gtag.svg)

ES module for the Google Analytics Global Site Tag.

## Install
```sh
$ npm install --save ga-gtag
```

## Usage
```js
import { gtag, install } from 'ga-gtag';

// Substitute your tracking ID (begins with "G-", "UA-", "AW-" or "DC-")
install('G-##########'); 
```
`install()` adds the Global Site Tag script element into `<head>`. It only needs to be called once, but can safely be called multiple times (the script won't be re-added).

`install()` also has a second, optional argument that can be used to specify additional config info for the initialization (for instance to [disable pageview measurement](https://developers.google.com/analytics/devguides/collection/ga4/views?technology=websites#disable_pageviews)):
```js
install('G-##########', { 'send_page_view': false });
```

From there, `gtag()` can be used as specified in [Google's documentation](https://developers.google.com/tag-platform/gtagjs/configure):
```js
gtag('event', 'login', { 'method': 'Google' });
```
npm package: @moosesaeed/partytown-ga-gtag
Description: ES module for the Google Analytics Global Site Tag with partytown attribute.
Latest version: 0.0.12

# Global site tag (gtag.js) - Google Analytics
[![npm](https://img.shields.io/npm/v/ga-gtag.svg)](https://www.npmjs.com/package/ga-gtag)
![npm bundle size (minified)](https://img.shields.io/bundlephobia/min/ga-gtag.svg)

ES module for the Google Analytics Global Site Tag.

## Install
```sh
$ npm install --save ga-gtag
```

## Usage
```js
import { gtag, install } from 'ga-gtag';

// Substitute your tracking ID (begins with "G-", "UA-", "AW-" or "DC-")
install('G-##########'); 
```
`install()` adds the Global Site Tag script element into `<head>`. It only needs to be called once, but can safely be called multiple times (the script won't be re-added).

`install()` also has a second, optional argument that can be used to specify additional config info for the initialization (for instance to [disable pageview measurement](https://developers.google.com/analytics/devguides/collection/ga4/views?technology=websites#disable_pageviews)):
```js
install('G-##########', { 'send_page_view': false });
```

From there, `gtag()` can be used as specified in [Google's documentation](https://developers.google.com/tag-platform/gtagjs/configure):
```js
gtag('event', 'login', { 'method': 'Google' });
```
npm package: @moosesaeed/vue-countdown
Description: Countdown component for Vue 3.
Author: Chen Fengyuan
Latest version: 1.0.0

# vue-countdown

[![Coverage Status](https://img.shields.io/codecov/c/github/fengyuanchen/vue-countdown.svg)](https://codecov.io/gh/fengyuanchen/vue-countdown) [![Downloads](https://img.shields.io/npm/dm/@chenfengyuan/vue-countdown.svg)](https://www.npmjs.com/package/@chenfengyuan/vue-countdown) [![Version](https://img.shields.io/npm/v/@chenfengyuan/vue-countdown.svg)](https://www.npmjs.com/package/@chenfengyuan/vue-countdown) [![Gzip Size](https://img.shields.io/bundlephobia/minzip/@chenfengyuan/vue-countdown.svg)](https://unpkg.com/@chenfengyuan/vue-countdown/dist/vue-countdown.js)

> Countdown component for Vue 3. For Vue 2, check out the [`v1`](https://github.com/fengyuanchen/vue-countdown/tree/v1) branch.

- [Docs](src/README.md)
- [Demo](https://fengyuanchen.github.io/vue-countdown)

## Main npm package files

```text
dist/
├── vue-countdown.js         (UMD, default)
├── vue-countdown.min.js     (UMD, compressed)
├── vue-countdown.esm.js     (ECMAScript Module)
├── vue-countdown.esm.min.js (ECMAScript Module, compressed)
└── vue-countdown.d.ts       (TypeScript Declaration File)
```

## Getting started

### Installation

Using npm:

```shell
npm install vue@3 @chenfengyuan/vue-countdown@2
```

Using pnpm:

```shell
pnpm add vue@3 @chenfengyuan/vue-countdown@2
```

Using Yarn:

```shell
yarn add vue@3 @chenfengyuan/vue-countdown@2
```

Using CDN:

```html
<script src="https://unpkg.com/vue@3"></script><!-- Vue.js is required -->
<script src="https://unpkg.com/@chenfengyuan/vue-countdown@2"></script>
```

### Usage

```js
import { createApp } from 'vue';
import VueCountdown from '@chenfengyuan/vue-countdown';

const app = createApp({});

app.component(VueCountdown.name, VueCountdown);
```

```html
<vue-countdown :time="2 * 24 * 60 * 60 * 1000" v-slot="{ days, hours, minutes, seconds }">
  Time Remaining：{{ days }} days, {{ hours }} hours, {{ minutes }} minutes, {{ seconds }} seconds.
</vue-countdown>
<!-- <span>Time Remaining：1 days, 23 hours, 59 minutes, 59 seconds.</span> -->
```

## Browser support

Same as Vue 3.

## Versioning

Maintained under the [Semantic Versioning guidelines](https://semver.org/).

## License

[MIT](https://opensource.org/licenses/MIT) © [Chen Fengyuan](https://chenfengyuan.com/)
npm package: @moostjs/arbac
Description: Access Control @prostojs/arbac
Author: Artem Maltsev
Latest version: 0.6.6

# @moostjs/arbac

Advanced Role-Based Access Control (ARBAC) integration for MoostJS, enabling seamless authorization management with `@prostojs/arbac` while leveraging Moost's dependency injection and metadata-driven event processing capabilities.

## Features

- **MoostJS Integration** – Provides decorators and utilities for enforcing access control.
- **Role & Scope-Based Authorization** – Supports fine-grained access control based on user roles and attributes.
- **Dependency Injection Support** – Utilizes MoostJS's DI system for injecting ARBAC services.
- **Easy Decorators** – Define resource-based access rules with simple decorators.

## Installation

```sh
npm install @moostjs/arbac
```

or using pnpm:

```sh
pnpm i @moostjs/arbac
```

## Quick Start

### Setup `MoostArbac`

To integrate ARBAC into your MoostJS application, define an instance of `MoostArbac`, register roles, and provide it as a dependency.

```typescript
import { createProvideRegistry } from 'moost'
import { MoostArbac } from '@moostjs/arbac'
import * as roles from './roles'
import type { TRoleScope, TUserAttrs } from './types'

export const ArbacProvideRegistry = createProvideRegistry([
  MoostArbac,
  () => {
    const instance = new MoostArbac<TUserAttrs, TRoleScope>()
    for (const role of roles) {
      instance.registerRole(role)
    }
    return instance
  },
])
```

### Define a Custom User Provider

To integrate user attributes and roles dynamically, replace the generic `ArbacUserProvider` with an application-specific implementation.

```typescript
import { createReplaceRegistry } from 'moost'
import { ArbacUserProvider } from '@moostjs/arbac'
import { CustomUserProvider } from './custom-user-provider'

export const ArbacReplaceRegistry = createReplaceRegistry([ArbacUserProvider, CustomUserProvider])
```

### Register ARBAC in Moost Application

```typescript
import { App } from 'moost'
import { ArbacProvideRegistry, ArbacReplaceRegistry } from './arbac-setup'

const app = new App()
app.setProvideRegistry(ArbacProvideRegistry)
app.setReplaceRegistry(ArbacReplaceRegistry)
```

### Protect Routes with `@Authorized()`

```typescript
import { ArbacAuthorize, ArbacPublic } from '@moostjs/arbac'
import { Controller, Get } from 'moost'

@Controller('/data')
@ArbacAuthorize()
export class DataController {
  @Get()
  getProtectedData() {
    return { data: 'secured' }
  }

  @Get('/public')
  @ArbacPublic()
  getPublicData() {
    return { data: 'open' }
  }
}
```

## API

### `MoostArbac<TUserAttrs, TScope>`

Extends `@prostojs/arbac` and integrates with MoostJS DI.

### `ArbacUserProvider<TUserAttrs>`

Abstract class for defining user-related access control logic.

### `@ArbacAuthorize()`

Method decorator to enforce ARBAC checks.

### `@ArbacPublic()`

Marks a route as publicly accessible, bypassing authorization.

### `useArbac()`

Composable function for evaluating access control dynamically.

## License

MIT
npm package: @moostjs/event-cli
Description: @moostjs/event-cli
Author: Artem Maltsev
Latest version: 0.6.6

# @moostjs/event-cli

<p align="center">
<img src="../../moost-logo.png" width="450px"><br>
<a  href="https://github.com/moostjs/moostjs/blob/main/LICENSE">
    <img src="https://img.shields.io/badge/License-MIT-green?style=for-the-badge" />
</a>
</p>

Welcome to `@moostjs/event-cli`, a Moostjs library designed to handle CLI events within your Moost application. This package provides decorators that simplify the creation of command line interface handlers in a structured and declarative manner.

**Note:** As `@moostjs/event-cli` is under active development, breaking changes can be expected.

## Overview

The `@moostjs/event-cli` module is crucial for making Moost applications responsive to CLI events. By leveraging this module, you can create handlers for these events in a structured, and clear manner.

## Getting Started

To start a new Moost CLI project, you can run the following command:

```bash
npm create moost -- --cli
```

You can also provide a name for your project:

```bash
npm create moost my-cli-app -- --cli
```

This command will initiate a setup tool that will guide you through the project initialization process. It will prompt you to configure:

- Project and package name.
- Whether to add do-me-lint (smart eslint installer).

## [Official Documentation](https://moost.org/cliapp/)

## AI Agent Skills

This package ships with structured skill files for AI coding agents (Claude Code, Cursor, Windsurf, Codex, etc.).

```bash
# Project-local (recommended — version-locked, commits with your repo)
npx moostjs-event-cli-skill

# Global (available across all your projects)
npx moostjs-event-cli-skill --global
```

To keep skills automatically up-to-date, add a postinstall script to your `package.json`:

```json
{
  "scripts": {
    "postinstall": "moostjs-event-cli-skill --postinstall"
  }
}
```

## Contributing

We are excited to welcome contributors who are passionate about improving Moostjs. No matter your level of experience, your unique perspective and skills can make valuable contributions to our growing community.

Here are some basic steps to get you started:

1. **Fork the Repo:** Navigate to [moostjs](https://github.com/moostjs/moostjs) and fork the repository to your own GitHub account.

2. **Clone the Repo:** Clone the forked repository to your local machine.

3. **Create a Branch:** Make a new branch for your feature or bug fix.

4. **Make your Changes:** Implement your feature or fix the bug and commit the changes to your branch.

5. **Make a Pull Request:** Navigate back to your forked repo and press the "New pull request" button.

Don't hesitate to ask for help if you need it. We believe in fostering a friendly and respectful environment for all contributors.

Thank you for your interest in Moostjs. We look forward to building something amazing together!
npm package: @moostjs/event-wf
Description: @moostjs/event-wf
Author: Artem Maltsev
Latest version: 0.6.6

# @moostjs/event-wf

Workflow event adapter for [Moost](https://moost.org), wrapping [@wooksjs/event-wf](https://github.com/wooksjs/wooksjs/tree/main/packages/event-wf) and [@prostojs/wf](https://github.com/prostojs/wf). Define workflow steps and flows using decorators, with full access to Moost's dependency injection, interceptors, and pipes.

## Installation

```bash
npm install @moostjs/event-wf
```

## Quick Start

```ts
import { MoostWf, Step, Workflow, WorkflowSchema, WorkflowParam } from '@moostjs/event-wf'
import { Controller, Moost } from 'moost'

@Controller()
class MyWorkflows {
  @Step('greet')
  greet(@WorkflowParam('input') input: string) {
    return `Hello, ${input}!`
  }

  @Workflow('my-flow')
  @WorkflowSchema([{ step: 'greet' }])
  myFlow() {}
}

const app = new Moost()
const wf = new MoostWf()
app.adapter(wf).controllers(MyWorkflows).init()

// Start a workflow
const result = await wf.start('my-flow', {}, 'World')
```

## AI Agent Skills

This package includes skill files for AI coding agents (Claude Code, Cursor, Windsurf, Codex, OpenCode). Install them to give your agent deep knowledge of the `@moostjs/event-wf` API:

```bash
# Project-local (recommended — version-locked, commits with your repo)
npx moostjs-event-wf-skill

# Global (available across all your projects)
npx moostjs-event-wf-skill --global
```

To auto-install on `npm install`, add a postinstall script to your `package.json`:

```json
{
  "scripts": {
    "postinstall": "moostjs-event-wf-skill --postinstall"
  }
}
```

## [Official Documentation](https://moost.org/wf/)

## License

MIT
npm package: @moostjs/otel
Description: @moostjs/otel
Author: Artem Maltsev
Latest version: 0.6.6

# @moostjs/otel

OpenTelemetry integration for [Moost](https://moost.org). Provides automatic tracing for event handlers, custom span creation, metrics collection, and trace propagation. Works by replacing Moost's context injector with a span-aware implementation.

## Installation

```bash
npm install @moostjs/otel @opentelemetry/api @opentelemetry/sdk-trace-base
```

## Quick Start

```ts
import { enableOtelForMoost } from '@moostjs/otel'

// Call before creating your Moost app
enableOtelForMoost()
```

## Composables

- `useOtelContext()` — Access tracing utilities (span, propagation headers, custom attributes).
- `useTrace()` — Get the OpenTelemetry `trace` API.
- `useSpan()` — Get the current event's root span.
- `useOtelPropagation()` — Get W3C trace-context headers for outgoing requests.

## Decorators

- `@OtelIgnoreSpan()` — Suppress span export for a controller or handler.
- `@OtelIgnoreMeter()` — Suppress metrics for a controller or handler.

## Span Processors

- `MoostBatchSpanProcessor` — Batch processor that respects `@OtelIgnoreSpan()`.
- `MoostSimpleSpanProcessor` — Simple processor that respects `@OtelIgnoreSpan()`.

## [Official Documentation](https://moost.org/moost/otel)

## License

MIT