open-index/open-npm huggingface dataset:
npm package: @lszanata/climate
Description: A JavaScript library for weather information
Latest version: 0.1.3

# climate
[![Build Status](https://travis-ci.org/lszanata/climate.svg?branch=master)](https://travis-ci.org/lszanata/climate)
[![codecov](https://codecov.io/gh/lszanata/climate/branch/master/graph/badge.svg)](https://codecov.io/gh/lszanata/climate)



A simple JavaScript library for weather information.

Weather data is fetched from [APIXU](https://www.apixu.com/).

## Usage

```js
const climate = require( './' );

// Supply your API key
climate.init( 'YOUR_API_KEY' );

// Pass a location's latitude and longitude, in decimal degrees
// Middle of London
const result = await climate.getTemperature( 51.513214, -0.094938 )
```

*climate* returns a `Promise`, which resolves to a `object` with weather information, like this:

```js
{
  location: 'London, City of London, Greater London, United Kingdom',
  coordinates: {
    latitude: 51.51,
    longitude: -0.09
  },
  temperature: {
    current: 10,
    apparent: 10,
    min: 7.7,
    max: 14
  }
}
```

```js
// You can also pass a string with a location name
await climate.getTemperature( 'los angeles' );

// will return
{
  location: 'Los Angeles, California, United States of America',
  coordinates: {
    latitude: 34.05,
    longitude: -118.24
  },
  temperature: {
    current: 18.9,
    apparent: 18.9,
    min: 15.6,
    max: 22.3
  }
}
```

In case of an error, *climate* resolves to an `error`. For example:

```js
await climate.getTemperature( 'tatooine' );

// Will throw
{
  error: {
    code: 1006,
    message: 'No matching location found.'
  }
}
```

Temperatrue information is given in **degrees Celsius**.

## License

[MIT](./LICENSE)
npm package: @lt-utils/class-list
Description: Class list helpers
Author: Luke Todd
Latest version: 1.0.5

# Typescript Starter

[![Codecov Coverage](https://img.shields.io/codecov/c/github/lukeajtodd/typescript-package-starter/master.svg?style=flat-square)](https://codecov.io/gh/lukeajtodd/typescript-package-starter)

- Typescript
- TSLint
- Prettier
- Jest
npm package: @lt-utils/contains
Description: Checks if string contains character
Author: Luke Todd
Latest version: 1.0.12

# Typescript Starter

[![Codecov Coverage](https://img.shields.io/codecov/c/github/lukeajtodd/typescript-package-starter/master.svg?style=flat-square)](https://codecov.io/gh/lukeajtodd/typescript-package-starter)

- Typescript
- TSLint
- Prettier
- Jest
npm package: @ltaoo/synology
Description: A simple wrapper for the Synology FileStation API
Latest version: 1.4.1

# synology-api

Synology api 的一层封装，方便调用，其他类似的库都不支持上传文件，google 后找到了正确的上传方式。

## Usage

```bash
yarn add @ltaoo/synology-api
```

### Init

- internal IP
```js
const synology = new Synology({
    protocol: 'http',
    host: '192.168.1.4',
    port: 5000,
});
```
- external URL
```js
const synology = new Synology({
    protocol: 'https',
    host: 'john.synology.me',
    port: 5001,
});
```

### Login

```js
async function init () {
    try {
        await synology.Auth.auth({
            username: USERNAME,
            password: PASSWORD,
        });
    } catch(err) {
        console.error(err);
    }
}

init();
```

以下所有方法必须在登录成功后使用。

### Upload

```js
async function init () {
    try {
        await synology.Auth.auth({
            username: USERNAME,
            password: PASSWORD,
        });
        await synology.FileStation.upload({
            path: '/home',
            file: path.join(__dirname, './example.jpg'),
            // 支持下载网络图片，如果网络地址最后不带后缀，必须添加 name 参数
            // file: 'http://imgpolitics.gmw.cn/attachement/jpg/site2/20190428/f44d305ea48e1e2f58565d.jpg',
            // name: 'xxx.jpg',
        });
        //
    } catch(err) {
        console.error(err);
    }
}

init();
```

### Download

```js
await synology.FileStation.download({
    path: '/home/6xmt_b.jpg',
    to: path.join(__dirname, './image/example1.jpg'),
    mode: 'download'
});
```

### Search

```javascript
// search
const data = await synology.FileStation.search({
    folder_path: '/home',
    // 包含的文件名
    pattern: '6x',
});
console.log(data);
```

### Create Folder

```js
await synology.FileStation.createFolder({
    folder_path: '/home',
    name: 'test',
});
```

### Rename

```js
await synology.FileStation.rename({
    path: '/home/6xmt_b.jpg',
    name: 'e.jpg',
});
```

### MoveOrCopy

```js
await synology.FileStation.copyMove({
    path: '/home/e.jpg',
    dest_folder_path: '/home/test1',
});
```

### Delete

```js
await synology.FileStation.delete({
    path: '/home/test1/e.jpg',
});
```

## example

在项目根目录增加 `.env` 文件，并填写如下内容：

```
ACCOUNT = your account username
PASSWD = your account password
HOST = host like 192.168.1.4
PORT = 5000
NODE_ENV = dev
```

然后执行 `node example/index.js`，终端会显示当前请求的地址与结果。
如果出现 `auth success {"data":{"sid":"jiEIqBgVWZuCU1840QMRH4C3AV"},"success":true}` 这种数据就表示登录成功。

## TODO
[√] 使用自定义日志打印替代 console.log

### download
[]文件不存在时返回正确的错误信息

## 参考

- [How can I upload a file to a Synology diskstation with PHP
](https://stackoverflow.com/questions/45137195/how-can-i-upload-a-file-to-a-synology-diskstation-with-php/48637467#48637467)
npm package: @ltatarev/eslint-config-react
Description: Eslint config for React projects
Author: ltatarev
Latest version: 3.0.3

# 🗂️ eslint-config-react

[![NPM](https://img.shields.io/npm/v/@ltatarev/eslint-config-react?style=flat-square)](https://www.npmjs.com/package/@ltatarev/eslint-config-react) [![NPM License](https://img.shields.io/npm/l/@ltatarev/eslint-config-react?style=flat-square)](https://opensource.org/licenses/MIT)

Eslint config for React TypeScript projects. Contains recommended rules extended from `airbnb`, `airbnb/hooks`, `plugin:react`, `plugin:react-hooks`. Added rules contain import and prop sorting.

## 🖥️ Installation

1. Install the desired package using the below command.

```sh
npx install-peerdeps --dev @ltatarev/eslint-config-react
```

2. Add `"extends": "@ltatarev/react"` to your .eslintrc.
npm package: @ltatarev/eslint-config-react-native
Description: Eslint config for React Native projects
Author: ltatarev
Latest version: 3.0.2

# 🗂️ eslint-config-react-native

[![NPM](https://img.shields.io/npm/v/@ltatarev/eslint-config-react-native?style=flat-square)](https://www.npmjs.com/package/@ltatarev/eslint-config-react-native) [![NPM License](https://img.shields.io/npm/l/@ltatarev/eslint-config-react?style=flat-square)](https://opensource.org/licenses/MIT)

Eslint config for React Native Typescript projects. Contains recommended rules extended from `airbnb`, `airbnb/hooks`, `plugin:react`, `plugin:react-hooks`. Added rules contain import and prop sorting, as well as most available `react-native` rules.

## 🖥️ Installation

1. Install the config and all required peer dependencies:

```sh
npx install-peerdeps --dev @ltatarev/eslint-config-react-native
```

2. Add `"extends": "@ltatarev/react-native"` to your `.eslintrc`.
npm package: @ltbuses/gtfs-parser
Description: Parses GTFS data into usable structures using streams
Author: Michael Gossmann
Latest version: 2.1.0

# LTBuses GTFS Parse

This is a simple parser the takes a stream containing a GTFS-formatted zip
file, and extracts the data relevant to the LTBuses applications.

It uses [unzip-stream](https://www.npmjs.com/package/unzip-stream) to extract
the data on the fly, without having to completely unpack the entire zip file.

The current result format is *very specific* to what is needed for the LTBuses
apps, which currently only supports the LTC buses in London, Ontario.

## Installation

```sh
npm install @ltbuses/gtfs-parser
```

## Usage

```js
const fs = require('fs');
const GtfsParser = require('@ltbuses/gtfs-parser');

const transitZip = fs.createReadStream('google_transit.zip');
const gtfsParser = new GtfsParser(transitZip);

gtfsParser.getData().then((gtfs) => {
  console.log(gtfs.getStops());
});
```

See the [developer documentation](https://ltbuses.gitlab.io/docs/gtfs-parser/)
for full details.
npm package: @ltcode/crosshot
Description: Cross-platform desktop screenshot utility
Author: Lucas Tiago
Latest version: 1.1.6

# @ltcode/crosshot

> Cross-platform desktop screenshot utility for Node.js applications

[![npm version](https://badge.fury.io/js/%40ltcode%2Fcrosshot.svg)](https://badge.fury.io/js/%40ltcode%2Fcrosshot)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

## 🚀 Quick Start

```bash
# Install globally
npm install -g @ltcode/crosshot

# Use CLI
crosshot --help
crosshot -n="screenshot" -f="jpg" -q=85
```

```javascript
// Use as library
import { captureScreen } from '@ltcode/crosshot';

const result = await captureScreen({
  filename: 'my-screenshot',
  format: 'png',
  returnBase64: true  // ✨ NEW: Get base64 data
});

console.log(result.filepath);  // File saved
console.log(result.base64);    // Data URL for web use
```

## ✨ Features

- 🖥️ **Cross-platform**: Linux, Windows, macOS
- 📸 **Multiple formats**: PNG, JPG, WebP, BMP
- 📦 **Library & CLI**: Use as package or command-line tool
- 🎨 **Base64 support**: Get screenshots as base64 data URLs
- 🎯 **Smart detection**: Auto-detects best screenshot tool
- 🔧 **TypeScript**: Full type definitions included

## 📖 API Reference

### `captureScreen(options)`

```javascript
const result = await captureScreen({
  outputDir: './screenshots/',     // Output directory
  filename: 'capture',             // Filename (without extension)
  format: 'png',                   // png, jpg, webp, bmp
  quality: 100,                    // 1-100 for lossy formats
  returnBase64: false,             // Include base64 in result
  silent: true                     // Suppress console output
});
```

**Returns:**
```javascript
{
  success: true,
  filename: "capture.png",
  filepath: "./screenshots/capture.png",
  size: { bytes: 1024, kb: 1.0, mb: 0.001 },
  tool: "spectacle",
  platform: "linux",
  format: "png",
  base64?: "data:image/png;base64,iVBORw0KGg...",  // if returnBase64: true
  base64Raw?: "iVBORw0KGg..."                      // if returnBase64: true
}
```

### CLI Usage

```bash
# Basic usage
crosshot

# Custom filename and format  
crosshot -n="screenshot" -f="jpg" -q=85

# Custom output directory
crosshot -o="~/Screenshots/" -f="webp"

# Help
crosshot --help
```

## 🛠️ Supported Tools

**Linux**: grim, spectacle, gnome-screenshot, wayshot, scrot, maim  
**Windows**: PowerShell (native), NirCmd  
**macOS**: screencapture (native)

## 💻 Use Cases

- **Web Applications**: Screenshots as base64 data URLs
- **Desktop Apps**: Capture screenshots in Electron/Node.js apps
- **CI/CD**: Automated screenshot generation
- **Testing**: Visual regression testing
- **Documentation**: Automated screenshot generation

## 📝 License

MIT © [Lucas Tiago](https://github.com/ltcodedev)

## 🔗 Links

- [GitHub Repository](https://github.com/ltcodedev/crosshot)
- [npm Package](https://www.npmjs.com/package/@ltcode/crosshot)
- [Issues](https://github.com/ltcodedev/crosshot/issues)
npm package: @ltdp/micro-app
Description: 基于codemirror5封装的vue3代码编辑器组件
Author: xmf
Latest version: 1.0.23

# @ltdp/micro-app

> 微应用架构

## setup
```base
yarn add @ltdp/micro-app
```

## vue3

```js
// main.js
import { microAppRender } from '@ltdp/micro-app/v3/sub'
// render支持异步，入参为基座下发的数据{routerBase, store}等，需要返回createApp的实例，和vue-router的实例即 { instance, router }
// subPages为非菜单页，即hideInMenu的页面，格式为 {name: '', pName: '', title: ''}
// 路由需要采用 createMemoryHistory
microAppRender(render, subPages)


// framework 
import { useSubMenu } from '@ltdp/micro-app/v3/sub'

const menu = ref([])
// 任意操作
if(window.__MICRO_APP_ENVIRONMENT__){
  useSubMenu(menu) // 此时会同步基座的菜单
}
```
npm package: @ltht-react/allergy-summary
Description: > TODO: description
Author: Jonny Smith
Latest version: 2.0.205

# Allergy Summary

### Import

```js
import AllergySummary from '@ltht-react/allergy-summary'
```

### Usage

```jsx
<AllergySummary allergy={allergy} />
```

### Properties

| Prop      | Required | Default | Type               | Description        |
| :-------- | :------- | :------ | :----------------- | :----------------- |
| `allergy` | Yes      |         | AllergyIntolerance | Allergy to display |
npm package: @ltht-react/appointment-summary
Description: ltht-react clinical AppointmentSummary component.
Author: LTHT
Latest version: 2.0.205

# Appointment Summary

### Import

```js
import AppointmentSummary from '@ltht-react/appointment-summary'
```

### Usage

```jsx
<AppointmentSummary title="Appointments" appointments={appointments} clickHandler={handleClick} />
```

### Properties

| Prop           | Required | Default      | Type        | Description                                                     |
| :------------- | :------- | :----------- | :---------- | :-------------------------------------------------------------- |
| `title`        | No       | Appointments | string      | Header text                                                     |
| `appointments` | Yes      |              | Encounter[] | Array of appointments to display                                |
| `clickHandler` | No       | undefined    | Function    | Callback click handler containing the selected appointment item |
npm package: @ltht-react/banner
Description: ltht-react Banner Component.
Author: LTHT
Latest version: 2.0.205

# Banner

### Import

```js
import Banner from '@ltht-react/banner'
```

### Usage

```jsx
<Banner type="info">
  This is an info alert with{' '}
  <a href="#" class="alert-link">
    an example link
  </a>
  .
</Banner>
```

### Properties

| Prop       | Required | Default | Type                           | Description                                           |
| :--------- | :------- | :------ | :----------------------------- | :---------------------------------------------------- |
| `type`     | No       | 'info'  | 'info', 'danger', 'warning'    | Type of styling for the banner                        |
| `icon`     | No       | None    | ReactNode                      | Custom <Icon /> to render                             |
| `children` | No       | None    | Element                        | Child elements to render within the banner            |
| `...rest`  | No       | None    | HTMLAttributes<HTMLDivElement> | Any additional props supported by an HTML Div Element |
npm package: @ltht-react/care-plan-summary
Description: ltht-react clinical CarePlanSummary component.
Author: LTHT
Latest version: 2.0.205

# Care Plan Summary

### Import

```js
import CarePlanSummary from '@ltht-react/care-plan-summary'
```

### Usage

```jsx
<CarePlanSummary title="Care Plans" carePlans={carePlans} clickHandler={handleClick} />
```

### Properties

| Prop           | Required | Default    | Type       | Description                                                   |
| :------------- | :------- | :--------- | :--------- | :------------------------------------------------------------ |
| `title`        | No       | Care Plans | string     | Header text                                                   |
| `carePlans`    | Yes      |            | CarePlan[] | Array of care plans to display                                |
| `clickHandler` | No       | undefined  | Function   | Callback click handler containing the selected care plan item |
npm package: @ltht-react/chevron-icon
Description: ltht-react ChevronIcon component.
Author: LTHT
Latest version: 0.0.1

# Chevron Icon

### Import

```js
import ChevronIcon from '@ltht-react/chevron-icon'
```

### Usage

```jsx
<ChevronIcon direction="up" size="medium" />
```

### Properties

| Prop        | Required | Options                       | Type   | Description    |
| :---------- | :------- | :---------------------------- | :----- | :------------- |
| `direction` | Yes      | 'up', 'down', 'left', 'right' | string | icon direction |
| `size`      | Yes      | 'small', 'medium', 'large'    | string | icon size      |
npm package: @ltht-react/community-treatment-order-detail
Description: ltht-react clinical CommunityTreatmentOrderDetail component.
Author: LTHT
Latest version: 2.0.205

# CommunityTreatmentOrderDetail

<!-- STORY -->

### Import

```js
import CommunityTreatmentOrderDetail from '@ltht-react/community-treatment-order-detail'
```

### Usage

```jsx
<CommunityTreatmentOrderDetail />
```
npm package: @ltht-react/community-treatment-order-summary
Description: ltht-react clinical CommunityTreatmentOrderSummary component.
Author: LTHT
Latest version: 2.0.205

# Community Treatment Order Summary

<!-- STORY -->

### Import

```js
import CommunityTreatmentOrderSummary from '@ltht-react/community-treatment-order-summary'
```

### Usage

```jsx
<CommunityTreatmentOrderSummary
  title="Community Treatment Orders"
  communityTreatmentOrders={communityTreatmentOrders}
  clickHandler={handleClick}
/>
```

### Properties

| Prop                       | Required | Default                    | Type                           | Description                                         |
| :------------------------- | :------- | :------------------------- | :----------------------------- | :-------------------------------------------------- |
| `title`                    | No       | Community Treatment Orders | string                         | Header text                                         |
| `communityTreatmentOrders` | Yes      |                            | LypftCommunityTreatmentOrder[] | Array of community treatment orders to display      |
| `clickHandler`             | No       | undefined                  | Function                       | Callback click handler containing the selected item |
npm package: @ltht-react/condition-summary
Description: ltht-react clinical ConditionSummary component.
Author: LTHT
Latest version: 1.1.2

# ConditionSummary

<!-- STORY -->

### Import

```js
import ConditionSummary from '@ltht-react/condition-summary'
```

### Usage

```jsx
<ConditionSummary title="Conditions" conditions={conditions} clickHandler={handleCLick} />
```

### Properties

| Prop           | Required | Default   | Type        | Description                                                   |
| :------------- | :------- | :-------- | :---------- | :------------------------------------------------------------ |
| `conditions`   | Yes      |           | Condition[] | Array of conditions to display                                |
| `clickHandler` | No       | undefined | Function    | Callback click handler containing the selected condition item |
npm package: @ltht-react/diagnosis-summary
Description: ltht-react clinical DiagnosisSummary component.
Author: LTHT
Latest version: 2.0.205

# DiagnosisSummary

<!-- STORY -->

### Import

```js
import DiagnosisSummary from '@ltht-react/diagnosis-summary'
```

### Usage

```jsx
<DiagnosisSummary title="Conditions" conditions={conditions} clickHandler={handleCLick} />
```

### Properties

| Prop           | Required | Default   | Type        | Description                                                   |
| :------------- | :------- | :-------- | :---------- | :------------------------------------------------------------ |
| `conditions`   | Yes      |           | Condition[] | Array of conditions to display                                |
| `clickHandler` | No       | undefined | Function    | Callback click handler containing the selected condition item |
npm package: @ltht-react/document-summary
Description: ltht-react clinical DocumentSummary component.
Author: LTHT
Latest version: 2.0.205

# DocumentSummary

<!-- STORY -->

### Import

```js
import DocumentSummary from '@ltht-react/document-summary'
```

### Usage

```jsx
<DocumentSummary documents={documentReferences} />
```

### Properties

| Prop           | Required | Default | Type                                      | Description                                            |
| :------------- | :------- | :------ | :---------------------------------------- | :----------------------------------------------------- |
| `documents`    | No       |         | DocumentReference[]                       | An array of document references                        |
| `clickHandler` | No       |         | clickHandler(document: DocumentReference) | A click handler that will return the selected document |
npm package: @ltht-react/exclamation-icon
Description: > TODO: description
Author: LTHT
Latest version: 0.0.9

# Exclamation Icon

### Import

```js
import ExclamationIcon from '@ltht-react/exclamation-icon'
```

### Usage

```jsx
<ExclamationIcon status="red" size="medium" />
```

### Properties

| Prop     | Required | Options                    | Type   | Description  |
| :------- | :------- | :------------------------- | :----- | :----------- |
| `status` | Yes      | "red", "green", "amber"    | string | icons colour |
| `size`   | Yes      | 'small', 'medium', 'large' | string | icon size    |
npm package: @ltht-react/flag-summary
Description: > TODO: description
Author: Jonny Smith
Latest version: 2.0.205

# Flag Summary

### Import

```js
import FlagSummary from '@ltht-react/flag-summary'
```

### Usage

```jsx
<FlagSummary title="Alerts" flags={flags} clickHandler={handleClick} />
```

### Properties

| Prop           | Required | Default      | Type     | Description                                              |
| :------------- | :------- | :----------- | :------- | :------------------------------------------------------- |
| `title`        | No       | Flag Summary | string   | Header text                                              |
| `flags`        | Yes      |              | Flag[]   | Array of flags to display                                |
| `clickHandler` | No       | undefined    | Function | Callback click handler containing the selected flag item |
npm package: @ltht-react/guidance-detail
Description: ltht-react organisms GuidanceDetail component.
Author: LTHT
Latest version: 0.0.3

# GuidanceDetail

<!-- STORY -->

### Import

```js
import GuidanceDetail from '@ltht-react/guidance-detail'
```

### Usage

```jsx
<GuidanceDetail />
```

### Properties

| Prop       | Required | Default | Type     | Description                                     |
| :--------- | :------- | :------ | :------- | :---------------------------------------------- |
| `guidance` | No       |         | Guidance | An object containing an array of guidance notes |
npm package: @ltht-react/guidance-summary
Description: ltht-react clinical GuidanceSummary component.
Author: LTHT
Latest version: 2.0.205

# GuidanceSummary

<!-- STORY -->

### Import

```js
import GuidanceSummary from '@ltht-react/guidance-summary'
```

### Usage

```jsx
<GuidanceSummary guidanceList={data} />
```

### Properties

| Prop           | Required | Default | Type     | Description                                     |
| :------------- | :------- | :------ | :------- | :---------------------------------------------- |
| `guidanceList` | No       |         | Guidance | An object containing an array of guidance notes |
npm package: @ltht-react/hospital-stay-detail
Description: ltht-react clinical HospitalStayDetail component.
Author: LTHT
Latest version: 2.0.205

# HospitalStayDetail

<!-- STORY -->

### Import

```js
import HospitalStayDetail from '@ltht-react/hospital-stay-detail'
```

### Usage

```jsx
<HospitalStayDetail />
```
npm package: @ltht-react/hospital-stay-summary
Description: ltht-react clinical HospitalStaySummary component.
Author: LTHT
Latest version: 2.0.205

# Hospital Stay Summary

<!-- STORY -->

### Import

```js
import HospitalStaySummary from '@ltht-react/hospital-stay-summary'
```

### Usage

```jsx
<HospitalStaySummary title="Hospital Stays" hospitalStays={hospitalStays} clickHandler={handleClick} />
```

### Properties

| Prop            | Required | Default               | Type        | Description                                                       |
| :-------------- | :------- | :-------------------- | :---------- | :---------------------------------------------------------------- |
| `title`         | No       | Hospital Stay Summary | string      | Header text                                                       |
| `hospitalStays` | Yes      |                       | Encounter[] | Array of Hospital Stays to display                                |
| `clickHandler`  | No       | undefined             | Function    | Callback click handler containing the selected hospital stay item |
npm package: @ltht-react/involved-team-detail
Description: ltht-react clinical InvolvedTeamDetail component.
Author: LTHT
Latest version: 2.0.205

# InvolvedTeamDetail

<!-- STORY -->

### Import

```js
import InvolvedTeamDetail from '@ltht-react/involved-team-detail'
```

### Usage

```jsx
<InvolvedTeamDetail />
```
npm package: @ltht-react/involved-team-summary
Description: ltht-react clinical InvolvedTeamSummary component.
Author: LTHT
Latest version: 2.0.205

# Involved Team Summary

### Import

```js
import InvolvedTeamSummary from '@ltht-react/involved-team-summary'
```

### Usage

```jsx
<InvolvedTeamSummary title="Involved Teams" episodeOfCares={episodeOfCares} clickHandler={handleClick} />
```

### Properties

| Prop             | Required | Default        | Type             | Description                                                         |
| :--------------- | :------- | :------------- | :--------------- | :------------------------------------------------------------------ |
| `title`          | No       | Involved Teams | string           | Header text                                                         |
| `episodeOfCares` | Yes      |                | EpisodeOfCares[] | Array of episode of care to display                                 |
| `clickHandler`   | No       | undefined      | Function         | Callback click handler containing the selected episode of care item |
npm package: @ltht-react/medication-detail
Description: Detail of a medication
Author: Phil McVay
Latest version: 2.0.205

# Medication Detail

<!-- STORY -->

### Import

```js
import MedicationDetail from '@ltht-react/medication-detail'
```

### Usage

```jsx
<MedicationDetail medication={medication} />
```

### Properties

| Prop         | Required | Default | Type                         | Description             |
| :----------- | :------- | :------ | :--------------------------- | :---------------------- |
| `medication` | Yes      |         | `<Maybe<MedicationRequest>>` | Details of a medication |
npm package: @ltht-react/medication-summary
Description: ltht-react clinical MedicationSummary component.
Author: LTHT
Latest version: 2.0.205

# MedicationSummary

<!-- STORY -->

### Import

```js
import MedicationSummary from '@ltht-react/medication-summary'
```

### Usage

```jsx
<MedicationSummary medicationList={medicationList} />
```

### Properties

| Prop             | Required | Default | Type           | Description                                        |
| :--------------- | :------- | :------ | :------------- | :------------------------------------------------- |
| `medicationList` | No       |         | MedicationList | Container object for patient medication statements |
npm package: @ltht-react/observation-summary
Description: ltht-react clinical ObservationSummary component.
Author: LTHT
Latest version: 2.0.205

# ObservationSummary

<!-- STORY -->

### Import

```js
import ObservationSummary from '@ltht-react/observation-summary'
```

### Usage

```jsx
<ObservationSummary />
```
npm package: @ltht-react/plan-definition-editor
Description: ltht-react component for selecting problems from a PlanDefinition.
Author: LTHT
Latest version: 2.0.205

# PlanDefinitionEditor

<!-- STORY -->

### Import

```js
import PlanDefinitionEditor from '@ltht-react/plan-detail-editor'
```

### Usage

```jsx
<PlanDefinitionEditor planDefinition={planDefinition} selectedProblemIds={[]} onChange={(newProblemIds) => {}} />
```
npm package: @ltht-react/spinner-icon
Description: ltht-react SpinnerIcon component.
Author: LTHT
Latest version: 0.0.5

# Spinner Icon

### Import

```js
import SpinnerIcon from '@ltht-react/spinner-icon'
```

### Usage

```jsx
<SpinnerIcon size="medium" />
```

### Properties

| Prop   | Required | Options                    | Type   | Description |
| :----- | :------- | :------------------------- | :----- | :---------- |
| `size` | Yes      | 'small', 'medium', 'large' | string | icon size   |
npm package: @ltht-react/timeline
Description: > TODO: description
Author: Jonny Dyson
Latest version: 2.0.205

# Timeline

### Import

```js
import Timeline from '@ltht-react/timeline'
```

### Usage

```jsx
<Timeline auditTrail={auditTrail} />
```

### Properties

| Prop         | Required | Default | Type                  | Description        |
| :----------- | :------- | :------ | :-------------------- | :----------------- |
| `auditTrail` | Yes      |         | `Maybe<AuditEvent>[]` | Timeline of events |
npm package: @ltht-react/tooltip
Description: ltht-react styled Tooltip component.
Author: M Saqib
Latest version: 2.0.205

# Tooltip

<!-- STORY -->

### Import

```js
import Tooltip from '@ltht-react/tooltip'
```

### Usage

```jsx
<Tooltip content={'This is a tooltip'}>
  <div>Component That Needs Tooltip</div>
</Tooltip>
```

Control Placement

```jsx
<Tooltip content={'This is a tooltip'} placement="bottom">
  <div>Component That Needs Tooltip</div>
</Tooltip>
```
npm package: @ltht-react/widget
Description: ltht-react Widget component.
Author: LTHT
Latest version: 0.0.11

# Widget

<!-- STORY -->

### Import

```js
import Widget from '@ltht-react/widget'
```

### Usage

```jsx
<Widget>
  <WidgetHeader>
    <h3>{title}</h3>
  </WidgetHeader>
  <WidgetBody>
    <p>Body</p>
  </WidgetBody>
  <WidgetFooter>
    <p>Footer</p>
  </WidgetFooter>
</Widget>
```
npm package: @lti-tool/core
Description: LTI 1.3 implementation for Node.js
Author: jamesjoplin
Latest version: 1.0.7

# lti-tool core

<p align="center">
  <a href="https://www.npmjs.com/package/@lti-tool/core"><img alt="npm" src="https://img.shields.io/npm/dm/%40lti-tool%2Fcore?style=flat-square" /></a>
  <a href="https://github.com/lti-tool/lti-tool/actions/workflows/release.yml"><img alt="Build status" src="https://img.shields.io/github/actions/workflow/status/lti-tool/lti-tool/ci.yml?style=flat-square&branch=dev" /></a>
</p>
<p align="center">Modern LTI 1.3 toolkit, built for TypeScript.</p>

## Core Features

- **LTI 1.3 OIDC Flow** - Complete authentication and launch verification
- **Security** - JWT verification, nonce validation, replay attack prevention
- **Assignment and Grade Services (AGS)** - Score submission to LMS
- **Session Management** - Secure session creation and retrieval
- **Client Management** - Platform and deployment configuration

## Installation

```bash
npm install @lti-tool/core
```

## Quick Start

```typescript
import { LTITool } from '@lti-tool/core';

const ltiTool = new LTITool({
  stateSecret: new TextEncoder().encode('your-secret-key'),
  keyPair, // Your RSA keypair
  storage: new MemoryStorage(),
});

// Configure your LMS
const clientId = await ltiTool.addClient({
  /* ... */
});
await ltiTool.addDeployment(clientId, {
  /* ... */
});

// Handle LTI flow
const authUrl = await ltiTool.handleLogin(loginParams);
const payload = await ltiTool.verifyLaunch(idToken, state);
const session = await ltiTool.createSession(payload);
```

## Documentation

- [API Reference](https://docs.lti-tool.dev) - Complete API documentation
- [Examples](https://github.com/lti-tool/lti-tool-examples) - (Coming soon) Working examples

## Security

Production security features

- JWT signature verification using platform JWKS
- Nonce validation prevents replay attacks
- State verification prevents CSRF
- Client ID and deployment validation
npm package: @lti-tool/memory
Description: Memory storage for LTI 1.3 @lti-tool
Author: jamesjoplin
Latest version: 1.0.4

# @lti-tool/memory

<p align="center">In-memory storage adapter for LTI 1.3. Perfect for development, testing, and proof of concept single-instance deployments.</p>

<p align="center">
  <a href="https://www.npmjs.com/package/@lti-tool/memory"><img alt="npm" src="https://img.shields.io/npm/v/%40lti-tool%2Fmemory" /></a>
</p>

## Installation

```bash
npm install @lti-tool/memory
```

## Quick Start

```typescript
import { LTITool } from '@lti-tool/core';
import { MemoryStorage } from '@lti-tool/memory';

// Generate keypair (use proper key management in production)
const keyPair = await crypto.subtle.generateKey(
  {
    name: 'RSASSA-PKCS1-v1_5',
    modulusLength: 2048,
    publicExponent: new Uint8Array([1, 0, 1]),
    hash: 'SHA-256',
  },
  true,
  ['sign', 'verify'],
);

const storage = new MemoryStorage();

const ltiTool = new LTITool({
  stateSecret: new TextEncoder().encode('your-secret'),
  keyPair,
  storage,
});
```

## Features

- **Zero Dependencies** - No external storage required
- **Fast Performance** - Sub-millisecond operations
- **Development Ready** - Perfect for local development
- **Auto-cleanup** - Expired nonces and sessions removed automatically

## API Reference

- [API Reference](https://docs.lti-tool.dev/modules/_lti-tool_memory.html) - Complete API documentation

## Configuration

### Basic Usage

```typescript
const storage = new MemoryStorage();
```

### With Logger

```typescript
import pino from 'pino';

const storage = new MemoryStorage({
  logger: pino(),
});
```

## Limitations

- **No Persistence** - Data lost on restart
- **Single Instance** - Not suitable for multi-server deployments
- **Memory Usage** - All data stored in RAM
- **No Clustering** - Cannot share state across processes

## Performance

- **All operations**: <1ms
- **Memory efficient**: Automatic cleanup of expired data
- **No I/O blocking**: Synchronous operations
npm package: @ltipton/args-parse
Description: Parse command line arguments
Author: lancetipton
Latest version: 1.1.0

# argsParse
Parse command line arguments

## Setup

### Install It
Add to your package.json

  ```js
    "argsParse": "git+https://github.com/lancetipton/argsParse.git"
  ```

### Use It
See test [examples](https://github.com/lancetipton/argsParse/blob/master/__tests__/argsParse.js)

```js
;(() => {

  const { argsParse } = require('argsParse')
  const task = {
    options: {
      // Define required
      doo: {
        description: "dew the doo",
        require: true,
      },
      // Define defaults
      foo: {
        description: 'I am foo bar',
        default: 'bar'
      },
      baz: {
      // Define alias
        alias: [ 'zoo' ],
        description: 'The baz with bas',
      },
    }
  }
  
  const parsed = await argsParse({
    task,
    args: [ 'doo=f', '--zoo', 'bas', ],
  })
  
  expect(parsed.doo).toBe(false)
  expect(parsed.foo).toBe('bar')
  expect(parsed.baz).toBe('bas')

})()

```

## Custom Config
* Use the `PARSE_CONFIG_PATH` environment vairable to overwrite the path to the parse config
  * Path should be relative to the applications root directory
* See default [config](https://github.com/lancetipton/argsParse/blob/master/configs/parse.config.js)
* Custom Configs should match the keys within the default config
  * `bools` && `environment`
npm package: @ltipton/chrome-devtools
Description: chrome-devtools-frontend built version
Author: Lance Tipton
Latest version: 0.0.1

# Automated Chrome DevTools frontend builder


This repository contains a [Github Action](.github/workflows/build.yml) that runs once a week on a schedule, builds the [Chrome DevTools frontend](https://chromium.googlesource.com/devtools/devtools-frontend) source code, and sends the build code to the [main](https://github.com/lancetipton/chrome-devtools/tree/main) branch via [PR](https://github.com/lancetipton/chrome-devtools/pulls?q=is%3Apr+label%3Aauto-build).

## Original Fork

This code was originally forked from https://github.com/iam-medvedev/chrome-devtools

## Workflow

### Build and Merge

- **Schedule:** Runs once a week.
- **Build Action:** Automatically triggers a build process.
- **PR Creation and merge:** Creates a Pull Request with the changes and automatically merges into the main branch.

### Deployment and Release

- **Github Pages deploy**
- **NPM release**

## Deployed version

For your hack needs there is a [deployed version](https://lancetipton.github.io/chrome-devtools/) which will be updated after each build.

## NPM package

[![npm version](https://badge.fury.io/js/chrome-devtools-built.svg)](https://www.npmjs.com/package/chrome-devtools-built)

Also every build is published in the NPM.

Package versioning works as follows: `1.20232611.0` where `1.${current_date}.{patch_number}`.

## License

The [devtools-frontend](https://chromium.googlesource.com/devtools/devtools-frontend) code is subject to its own license terms. Please refer to the [Chromium DevTools Frontend License](https://chromium.googlesource.com/devtools/devtools-frontend/+/main/LICENSE) for details.

The code in this repository, specific to the automation process, is licensed under [MIT](LICENSE).

Feel free to use and modify this workflow to suit your needs.
npm package: @ltipton/esb-node
Description: Build your Typescript Node.js projects using blazing fast esbuild
Latest version: 0.0.3

# esb-node
This is starting out as a fork of this [repo](https://github.com/a7ul/esbuild-node-tsc)
But because they don't think bundle in node.js should be allowed, I had to fork it.
I plan to make a few other changes, so I just made it it's own repo.
But, as of right now, the repo is the same except it gives you full access to the esbuild config.
For more information see the [Readme in the parent repo](https://github.com/a7ul/esbuild-node-tsc)

## Notes
* I changed the bin file name from `etsc` to `esbn` to not conflict with the parent repo
* If you were using that repo previously, be sure to update your scripts to use `esbn`

## Install
```sh
yarn add @ltipton/esb-node --dev
```

## Usage
* Add an `esbn` script to your package.json scripts section
  ```json
    "scripts": {
      "dev": "esbn --config=path/to/my/config.js"
    }
  ```
* Next, run the command `yarn dev` from the same directory as the `package.json`

## Configuration
* See esbuild options [here](https://esbuild.github.io/api/#build-api)
```ts

module.exports = {
  outDir: "./dist",
  esbuild: {
    bundle: true,
    // any other esbuild option
  },
  assets: {
    baseDir: "src",
    outDir: "./dist",
    filePatterns: ["**/*.json"],
  },
}
```
npm package: @ltipton/jsutils
Description: common javascript utils
Author: lancetipton
Latest version: 5.1.0

# jsutils

A small utility library for commonly used helper methods. Similar to lodash, underscore, etc...

See docs [here](https://lancetipton.github.io/jsutils)

## Install

  * Download the repo
    ```js
      // Clone repo
      git clone https://github.com/lancetipton/jsutils.git
      // Or Add to package.json
      "dependencies": {
        "jsutils": "git+https://github.com/lancetipton/jsutils.git"
        ...
      },
    ```
  * Add to your code
    ```js
      // * Import into code
        import jsutils from 'jsutils'
        // Or only the methods you need
        import { capitalize } from 'jsutils/string'
        import { reduceObj, mapObj } from 'jsutils/object'

      // * Or require code
        const jsutils = require('jsutils')
      
      // * Add as html script
        <script src='/path/to/jsutils/build/jsutils.min.js'></script>
        // jsutils will be available on the window 
        <script>
          const jsutils = window.jsutils
          
        </script>
    ```
npm package: @ltipton/react-gherkin-editor
Description: A Gherkin language editor for React.
Author: SmartBear Software
Latest version: 0.0.2

# React Gherkin Editor

A Gherkin language editor for React.

[![Version][version-badge]][package]
[![CI][ci-badge]][ci]
[![Dependencies][dependencies-badge]][dependencies]
[![License][license-badge]][license]

## Introduction

React Gherkin Editor is a wrapper arround [React Ace Editor](https://github.com/securingsincity/react-ace) specially designed for Gherkin.

It was originally forked from [this repo](https://github.com/SmartBear/react-gherkin-editor). I removed a number of dependencies, and changed the styles to better suite my needs

Features:

- Gherkin syntax highlighting
- Gherkin keyword snippets
- Easy to provide step autocompletions (Promise based)
- Gherkin I18n support
- Special theme herkin for writing feature files

## Installation

Using npm:

```
npm install --save @ltipton/react-gherkin-editor
```

Using yarn:

```
yarn add @ltipton/react-gherkin-editor
```

## Basic Usage

```javascript
import React from 'react'
import { render } from 'react-dom'
import ReactGherkinEditor from '@ltipton/react-gherkin-editor'

const root = document.createElement('div')
document.body.appendChild(root)

const initialValue = `Feature: Serve coffee
  As a coffee lover
  I can get coffee from the machine
  So I can enjoy the rest of the day

  Scenario: Simple use
    # Well, sometimes, you just get a coffee.
    Given the coffee machine is started
    When I take a coffee
    Then coffee should be served
    And message "Please take your coffee" should be printed`

const steps = [
  'I start the coffee machine using language "lang"',
  'I shutdown the coffee machine',
  'message "message" should be displayed'
]

const onValueChange = console.log

const autoCompleteFunction = async (_keyword, text) => {
  const matches = steps.filter(step => step.startsWith(text))

  const completions = matches.map(match => ({
    caption: match,
    value: match,
    score: Math.floor(Math.random() * Math.floor(100)),
    meta: 'Step'
  }))

  return completions
}

render(
  <ReactGherkinEditor
    initialValue={initialValue}
    onValueChange={onValueChange}
    autoCompleteFunction={autoCompleteFunction}
    language='en'
    theme='cucumber'
  />,
  root
)
```

## Ace Documentation

[React Ace Editor](https://github.com/securingsincity/react-ace)

[version-badge]: https://img.shields.io/npm/v/@ltipton/react-gherkin-editor
[package]: https://www.npmjs.com/package/@ltipton/react-gherkin-editor
[ci-badge]: https://img.shields.io/github/workflow/status/ltipton/react-gherkin-editor/CI?logo=github
[ci]: https://github.com/ltipton/react-gherkin-editor/actions?query=workflow%3ACI
[dependencies-badge]: https://img.shields.io/david/ltipton/react-gherkin-editor
[dependencies]: https://david-dm.org/ltipton/react-gherkin-editor
[license-badge]: https://img.shields.io/npm/l/@ltipton/react-gherkin-editor
[license]: https://github.com/ltipton/react-gherkin-editor/blob/master/LICENSE
npm package: @ltipton/rga4
Description: React Components and hooks for integrating Google Analytics 4 into an application
Author: lancetipton
Latest version: 0.0.3

# RGA4
React Components and hooks for integrating Google Analytics 4 into an application

### Add / Install

```js
  yarn add @ltipton/rga4
  npm install @ltipton/rga4
```

## Setup

**Important**
* A Google Analytic 4 Measurement ID is required
* See this [page for more information](https://support.google.com/analytics/answer/9306384?visit_id=637436678402332999-753716772&rd=1)


## Example

  ```javascript
    import React, { useEffect, useCallback } from 'react'
    import { RGA4Provider, useRGA4 } from '@ltipton/rga4'

    const Child = (props) => {

      // Use the hook to get access to the Google Analytics Context
      const rga4 = useRGA4()
      
      useEffect(() => {
        // Call the rga4.event method to send an analytics event
        rga4.event('page_view', {
          label: 'Github Readme',
          category: 'engagement',
        })
      }, [])

      // Custom analytics event when a button is clicked
      const onClick = useCallback(() => {
        // Call the rga4.event method to send an analytics event
        rga4.event('button_click', {
          event_label: 'Demo Button',
          event_category: 'engagement',
        })
      }, [ rga4 ])

      return (
        <div>
          <button onClick={onClick}>
            Demo Analytics Event
          </button>
        </div>
      )
    }

    export const Component = (props) => {
      const measurementID = `Replace with your GA4 Measurement ID`
      
      return (
        <RGA4Provider code={measurementID}>
          <Child />
        </RGA4Provider>
      )
    }
  ```
npm package: @ltmp/components
Description: A reusable template for getting started with Microsoft's FAST Element web component library.
Latest version: 0.3.0

# Purpose

A reusable template for getting started with Microsoft's FAST Element
web component library.

## What's included?

- Typescript setup
- Web-dev-server
- Web-test-runner
- Initial structure
- Example counter component with tests.
- Changelog generation with `standard-changelog`
- Linting with `ts-standard`
- [Custom Elements manifest generation](https://custom-elements-manifest.open-wc.org/analyzer/getting-started/)

## Getting started

Click the `clone from template` button on Github.

Then, in your new repo do the following:

```bash
yarn install
yarn start
```

Navigate to `localhost:8000` and find the magic of the counter
component.

## Moving forward

Check out the `package.json` for all possible scripts.

## Documentation

### `<audio-playlist>`

The `<audio-playlist>` is a web component designed to make it easy to
setup a playlist.

The `<audio-playlist>` elements has a number of internal methods you can
use to create your own controls.

#### Usage

```js
import "@ltmp/components"
```

##### Controls

`<audio-playlist controls></audio-playlist>` will render an
audio-playlist with controls on it for play, pause, forward, backwards,
scrubbing, etc.

##### Hls

To use hls, you must first bind
[hls.js](https://github.com/video-dev/hls.js/) to the window. If your
bundler doesnt support UMD format, you may have to import Hls from a CDN
and attach it to `window.Hls`. Regardless, the audio-playlist component
will look for `window.Hls` from hls.js to be able to attach HLS
behavior.

Once you have `window.Hls` bound, you can do this:

`<audio-playlist controls hls></audio-playlist>` and then you have an
HLS audio playlist player!
npm package: @ltmp/rcrdshp-flow-templates
Description: In order to generate all the transactions needed for each environment, please run the ``generate.js`` script, it will generate all the  CDC code for the following environments:
Author: Pablo Castro and Nathan Pahucki
Latest version: 1.1.3

# Dapper Wallet transactions

In order to generate all the transactions needed for each environment, please run the ``generate.js`` script, it will generate all the 
CDC code for the following environments:

* testnet
* mainnet
* emulator


So if we want to generate all the transactions for the testnet we do: 

```
% node generate.js
```

And the generated transactions will be stored inside new folders named after each environment under 'generated'


The generated files can then be used to paste into the dapper developer portal: 

- [Production](https://developers.meetdapper.com)
- [Testing](https://developers.staging.meetdapper.com) 

# NPM Package 
To publish the npm package so it can be consumed by javascript clients, update the 
package version then run:
```bash
npm publish
```