open-index/open-npm huggingface dataset:
npm package: @secretarium/react-native-ble
Description: Secretarium BLE component for C3PO
Author: Florian Guitton
Latest version: 0.1.2

# @secretarium/react-native-ble

Secretarium BLE component for C3PO.
This component aims are providing Bluetooth LE advertising (peripheral) and scanning (central) for react-native. It it coded in Kotlin for Android and Swift for iOS.

The original motivation for this package was the creation of a proof-of-concept and technological demonstration in confidential computing privacy-first application for mitigation of population risk in the dawn of the Covid-19 crisis.

The current package supports the following:

- [x] Android Peripheral (Advertiser)
- [x] Android Central (Scanner)
- [x] iOS Peripheral (Advertiser)
- [x] iOS Central (Scanner)

## Limitations

There are multiple mismatch and OS limitations to the component's functioning on both implementations. This is because Android doesn't offer cutomised complete local name advertising by default (https://android.googlesource.com/platform/packages/apps/Bluetooth/+/master/src/com/android/bluetooth/gatt/AdvertiseHelper.java#43) and iOS doesn't permit tranditional named advertising in background apps (https://developer.apple.com/documentation/corebluetooth/cbperipheralmanager/1393252-startadvertising).


## Installation

```sh
yarn install @secretarium/react-native-ble
```

### Setting up the Android Project

In `AndroidManifest.xml`, add Bluetooth permissions and update <uses-sdk/>:
```xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="...">
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    ...
</manifest>

```

### Setting up the iOS Project

On your `Info.plist` file, include: 
```xml
<dict>
    ...
    <key>NSBluetoothAlwaysUsageDescription</key>
    <string>We uses Bluetooth to scan other beacons around.</string>
    <key>UIBackgroundModes</key>
    <array>
        <string>bluetooth-central</string>
        <string>bluetooth-peripheral</string>
        ...
    </array>
    <key>UIRequiredDeviceCapabilities</key>
    <array>
        <string>bluetooth-le</string>
        ...
    </array>
</dict>
```

## Usage

```js
import C3POReactNativeBle from "@secretarium/react-native-ble";

await C3POReactNativeBle.setManufacturerId(0xFFFF);
```

## License

MIT
npm package: @secretarium/trustless-app
Description: Secretarium Trustless Apps helpers and definitions
Author: Florian Guitton
Latest version: 0.4.1

# trustless-app-sdk

This library was generated with [Nx](https://nx.dev).

## Building

Run `nx build trustless-app-sdk` to build the library.

## Running unit tests

Run `nx test trustless-app-sdk` to execute the unit tests via [Jest](https://jestjs.io).
npm package: @secretary/aws-secrets-manager
Description: AWS SecretsManager adapter for Secretary
Author: Aaron Scherer
Latest version: 1.0.1-alpha.9
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# Secretary - AWS Secrets Manager Adapter

This is the [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) adapter for [Secretary](https://github.com/secretarysecrets/node)

## Installation 

```bash
$ npm install @secretary/core @secretary/aws-secrets-manager
```

## Usage

### Creating the manager
```typescript
import {Adapter, Secretary} from '@secretary/aws-secrets-manager';
import {SecretsManager} from 'aws-sdk';

const manager = new Secretary(new Adapter({client: new SecretsManager({region: 'us-east-1'})}));
```

### Fetching a secret

```typescript
const someSecret = await manager.getSecret({path: 'databases/redis', key: 'dsn'});
console.log(someSecret); // redis://localhost:6379
```

### Fetching a secret path

```typescript
const someSecrets = await manager.getSecrets({path: 'databases/redis'});
console.log(someSecrets); // {dsn: 'redis://localhost:6379', auth: 'foo'}
```

### Create / Update a secret

```typescript
await manager.putSecret({path: 'databases/redis', key: 'dsn', value: 'redis://localhost:6379'});
await manager.putSecret({path: 'databases/redis', key: 'auth', value: 'foo'});
```

### Create / Update multiple secrets

> Note, this fires off a request for every secret that you send. 


```typescript
await manager.putSecrets([
    {path: 'databases/redis', key: 'dsn', value: 'redis://localhost:6379'},
    {path: 'databases/redis', key: 'auth', value: 'foo'},
]);
```
npm package: @secretary/aws-secrets-manager-adapter
Description: AWS SecretsManager adapter for Secretary
Author: Aaron Scherer
Latest version: 4.2.2

# Secretary - AWS Secrets Manager Adapter

This is the [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) adapter
for [Secretary](https://github.com/secretarysecrets/node)

## Installation

```bash
$ npm install @secretary/core @secretary/aws-secrets-manager-adapter
```

## Usage

### Creating the manager

```typescript
import {Manager} from '@secretary/core';
import {Adapter} from '@secretary/aws-secrets-manager-adapter';
import {SecretsManager} from '@aws-sdk/client-secrets-manager';

const manager = new Manager({aws: new Adapter(new SecretsManager({region: 'us-east-1'}))});
```
npm package: @secretary/azure-key-vault-adapter
Description: Azure Key Vault adapter for Secretary
Author: Aaron Scherer
Latest version: 4.2.1

# Secretary - Azure Key Vault Adapter

This is the [Azure Key Vault](https://azure.microsoft.com/en-us/services/key-vault/) adapter
for [Secretary](https://github.com/secretarysecrets/node)

## Installation

```bash
$ npm install @secretary/core @secretary/aws-secrets-manager
```

## Usage

### Creating the manager

```typescript
import {Manager} from '@secretary/core';
import {Adapter} from '@secretary/azure-key-vault-adapter';

const manager = new Manager({
    azure: new Adapter({
        clientId: 'client_id_here',
        clientSecret: 'client_secret_here',
        vaultUri: 'vault_uri_here',
    })
});
```
npm package: @secretary/cli
Description: Secretary CLI
Author: Secretary
Latest version: 4.2.1

Secretary CLI
=================

Secretary CLI

<!-- toc -->
* [Usage](#usage)
* [Commands](#commands)
<!-- tocstop -->

# Usage

<!-- usage -->
```sh-session
$ npm install -g @secretary/cli
$ secretary COMMAND
running command...
$ secretary (--version)
@secretary/cli/4.2.1 linux-x64 node-v18.12.1
$ secretary --help [COMMAND]
USAGE
  $ secretary COMMAND
...
```
<!-- usagestop -->

# Commands

<!-- commands -->
* [`secretary help [COMMANDS]`](#secretary-help-commands)
* [`secretary inject COMMAND`](#secretary-inject-command)

## `secretary help [COMMANDS]`

Display help for secretary.

```
USAGE
  $ secretary help [COMMANDS] [-n]

ARGUMENTS
  COMMANDS  Command to show help for.

FLAGS
  -n, --nested-commands  Include all nested commands in the output.

DESCRIPTION
  Display help for secretary.
```

_See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.2.8/src/commands/help.ts)_

## `secretary inject COMMAND`

Inject secrets into the environment of the given command

```
USAGE
  $ secretary inject COMMAND [-c <value>]

ARGUMENTS
  COMMAND  Command to run

FLAGS
  -c, --config=<value>  [default: /home/aequasi/projects/secretary/node/packages/cli/.secretaryrc.js] SecretaryConfig
                        file to read mapping from

DESCRIPTION
  Inject secrets into the environment of the given command

EXAMPLES
  $ secretary inject yarn build
  // output from yarn build
```

_See code: [dist/commands/inject/index.ts](https://github.com/secretary/node/blob/v4.2.1/dist/commands/inject/index.ts)_
<!-- commandsstop -->
npm package: @secretary/core
Description: Secrets Manager for NodeJS
Author: Aaron Scherer
Latest version: 4.2.1

# Secretary - NodeJS Secrets Management

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

___

Secretary (etymology: Keeper of secrets) provides an abstract way to manage secrets.

Currently supports the following adapters:

* [AWS Secrets Manager](https://github.com/secretary/node/tree/master/packages/aws-secrets-manager-adapter)
* [Credstash](https://github.com/secretary/node/tree/master/packages/credstash-adapter)
* [Hashicorp Vault](https://github.com/secretary/node/tree/master/packages/hashicorp-vault-adater)
* [JSON File](https://github.com/secretary/node/tree/master/packages/json-file-adapter)

## Installation

```bash
// If you want to use AWS Secrets Manager
$ npm install @secretary/core @secretary/aws-secrets-manager-adapter

// If you want to use Hashicorp Vault
$ npm install @secretary/core @secretary/hashicorp-vault-adapter
```

Check the install docs of the adapter you want to use for specific instructions.

## Usage

```typescript
import {Manager} from '@secretary/core';
import {Adapter} from '@secretary/aws-secrets-manager-adapter';
import {SecretsManager} from 'aws-sdk';

const manager = new Manager({
    aws: new Adapter({client: new SecretsManager()})
});

```

### Fetch Secrets

```typescript
const someSecret = await manager.getSecret('some/database/secret', 'aws');
// or, aws as the first (and only) adapter in the manager, `default` is another key that works,
// which is what source getSecret defaults to
const someSecret = await manager.getSecret('some/database/secret');

console.log(someSecret.value.dsn); // redis://localhost:6379
```

### Create Secrets

```typescript
const secret = new Secret('some/database/secret', {dsn: 'redis://localhost:6379'});
await manager.putSecret(secret, 'aws');

console.log(someSecret.value.dsn); // redis://localhost:6379
```

### Delete Secrets

```typescript
const secret = await manager.getSecret('some/database/secret');

await manager.deleteSecret(secret, 'aws');
```

Check the usage docs of the adapter you want to use for specific instructions.
npm package: @secretary/hashicorp-vault-adapter
Description: Hashicorp Vault adapter for Secretary
Author: Aaron Scherer
Latest version: 4.2.1

# Secretary - Hashicorp Vault Adapter

This is the [Hashicorp Vault](https://www.vaultproject.io/) adapter
for [Secretary](https://github.com/secretarysecrets/node)

## Installation

```bash
$ npm install @secretary/core @secretary/vault
```

## Usage

### Creating the manager

```typescript
import {Manager} from '@secretary/core';
import {Adapter} from '@secretary/hashicorp-vault-adapter';
import * as nodeVault from 'node-vault';

const manager = new Manager({vault: new Adapter({client: nodeVault()})});
```
npm package: @secretary/json-file-adapter
Description: JSON File adapter for Secretary
Author: Aaron Scherer
Latest version: 4.2.1

# Secretary - JSON File Adapter

This is the JSON File adapter for [Secretary](https://github.com/secretarysecrets/node)

### Important

This adapter does NOT use any encryption. It should ***NOT*** be used in production.

## Installation

```bash
$ npm install @secretary/core @secretary/json-file-adapter
```

## Usage

### Creating the manager

```typescript
import {Manager} from '@secretary/core';
import {Adapter} from '@secretary/hashicorp-vault-adapter';

const manager = new Manager({file: new Adapter({file: '../path/to/my/secrets'})});
```
npm package: @secretcxman/react-scripts
Description: Configuration and scripts for Create React App.
Latest version: 2.1.1

# react-scripts

This package includes scripts and configuration used by [Create React App](https://github.com/facebook/create-react-app).<br>
Please refer to its documentation:

- [Getting Started](https://facebook.github.io/create-react-app/docs/getting-started) – How to create a new app.
- [User Guide](https://facebook.github.io/create-react-app/) – How to develop apps bootstrapped with Create React App.
npm package: @secretdef/aws
Description: Secret definitions for AWS
Latest version: 0.0.1

# @secretdef/aws

Like `@types` but for environment variables — so your app (and AI coding agents) know exactly which secrets are needed before runtime.

Pre-built [secretdef](https://www.npmjs.com/package/secretdef) definitions for [**AWS**](https://www.npmjs.com/package/@aws-sdk/client-s3) (`@aws-sdk/client-s3`) environment variables.

> This package declares the secrets required by [`@aws-sdk/client-s3`](https://www.npmjs.com/package/@aws-sdk/client-s3). It does **not** install or replace the official SDK — install both side by side.

## Install

```bash
npm install @aws-sdk/client-s3 @secretdef/aws secretdef
```

## Usage

Every `import` of a `@secretdef/*` package calls `defineSecrets()` under the hood, registering its secrets globally. You then call `validateSecrets()` **once** at startup — with no arguments — to validate everything that was defined:

```ts
// app entry point
import { validateSecrets } from 'secretdef';

import '@secretdef/aws';
// import '@secretdef/...';  ← other services

// Validates ALL secrets defined by any prior defineSecrets() call
validateSecrets();
```

You can also compose explicitly in a `secrets.ts` file — useful if you want to add your own app secrets alongside:

```ts
// secrets.ts
import { defineSecrets } from 'secretdef';
import { secrets as awsSecrets } from '@secretdef/aws';

export const secrets = defineSecrets({
  ...awsSecrets,
  // Add your own app secrets
  // MY_APP_SECRET: { description: 'My app secret' },
});
```

```ts
// app entry point
import { validateSecrets } from 'secretdef';
import './secrets'; // defineSecrets() was called, secrets are registered

validateSecrets(); // no args — validates everything
```

> **Note:** `validateSecrets()` can also accept an explicit secrets object if you prefer full control: `validateSecrets(secrets)`.

## Secrets

| Variable | Description | Required |
|----------|-------------|----------|
| `AWS_ACCESS_KEY_ID` | AWS access key ID | Yes |
| `AWS_SECRET_ACCESS_KEY` | AWS secret access key | Yes |
| `AWS_REGION` | AWS region | No |
| `AWS_PROFILE` | AWS named profile | No |

## What are Secret Definitions?

[secretdef](https://secretdef.com) is an open standard for declaring which environment variables (secrets) a package or app requires — their names, descriptions, and constraints.

Instead of discovering missing secrets through cryptic runtime errors, secret definitions let you **validate everything at startup** with clear, actionable error messages. AI coding agents can also read these definitions to configure secrets automatically.

Learn more at [secretdef.com](https://secretdef.com)

## Links

- [`@aws-sdk/client-s3`](https://www.npmjs.com/package/@aws-sdk/client-s3) — Official AWS SDK
- [AWS on GitHub](https://github.com/aws/aws-sdk-js-v3) — Source
- [secretdef.com](https://secretdef.com) — Full documentation
- [secretdef on npm](https://www.npmjs.com/package/secretdef) — Core library
npm package: @secretdef/neon
Description: Secret definitions for Neon
Latest version: 0.0.1

# @secretdef/neon

Like `@types` but for environment variables — so your app (and AI coding agents) know exactly which secrets are needed before runtime.

Pre-built [secretdef](https://www.npmjs.com/package/secretdef) definitions for [**Neon**](https://www.npmjs.com/package/@neondatabase/serverless) (`@neondatabase/serverless`) environment variables.

> This package declares the secrets required by [`@neondatabase/serverless`](https://www.npmjs.com/package/@neondatabase/serverless). It does **not** install or replace the official SDK — install both side by side.

## Install

```bash
npm install @neondatabase/serverless @secretdef/neon secretdef
```

## Usage

Every `import` of a `@secretdef/*` package calls `defineSecrets()` under the hood, registering its secrets globally. You then call `validateSecrets()` **once** at startup — with no arguments — to validate everything that was defined:

```ts
// app entry point
import { validateSecrets } from 'secretdef';

import '@secretdef/neon';
// import '@secretdef/...';  ← other services

// Validates ALL secrets defined by any prior defineSecrets() call
validateSecrets();
```

You can also compose explicitly in a `secrets.ts` file — useful if you want to add your own app secrets alongside:

```ts
// secrets.ts
import { defineSecrets } from 'secretdef';
import { secrets as neonSecrets } from '@secretdef/neon';

export const secrets = defineSecrets({
  ...neonSecrets,
  // Add your own app secrets
  // MY_APP_SECRET: { description: 'My app secret' },
});
```

```ts
// app entry point
import { validateSecrets } from 'secretdef';
import './secrets'; // defineSecrets() was called, secrets are registered

validateSecrets(); // no args — validates everything
```

> **Note:** `validateSecrets()` can also accept an explicit secrets object if you prefer full control: `validateSecrets(secrets)`.

## Secrets

| Variable | Description | Required |
|----------|-------------|----------|
| `DATABASE_URL` | Neon Postgres connection string | Yes |
| `PGHOST` | Postgres host (used by @neondatabase/serverless) | No |

## What are Secret Definitions?

[secretdef](https://secretdef.com) is an open standard for declaring which environment variables (secrets) a package or app requires — their names, descriptions, and constraints.

Instead of discovering missing secrets through cryptic runtime errors, secret definitions let you **validate everything at startup** with clear, actionable error messages. AI coding agents can also read these definitions to configure secrets automatically.

Learn more at [secretdef.com](https://secretdef.com)

## Links

- [`@neondatabase/serverless`](https://www.npmjs.com/package/@neondatabase/serverless) — Official Neon SDK
- [Neon on GitHub](https://github.com/neondatabase/serverless) — Source
- [secretdef.com](https://secretdef.com) — Full documentation
- [secretdef on npm](https://www.npmjs.com/package/secretdef) — Core library
npm package: @secretdef/resend
Description: Secret definitions for Resend
Latest version: 0.0.1

# @secretdef/resend

Like `@types` but for environment variables — so your app (and AI coding agents) know exactly which secrets are needed before runtime.

Pre-built [secretdef](https://www.npmjs.com/package/secretdef) definitions for [**Resend**](https://www.npmjs.com/package/resend) (`resend`) environment variables.

> This package declares the secrets required by [`resend`](https://www.npmjs.com/package/resend). It does **not** install or replace the official SDK — install both side by side.

## Install

```bash
npm install resend @secretdef/resend secretdef
```

## Usage

Every `import` of a `@secretdef/*` package calls `defineSecrets()` under the hood, registering its secrets globally. You then call `validateSecrets()` **once** at startup — with no arguments — to validate everything that was defined:

```ts
// app entry point
import { validateSecrets } from 'secretdef';

import '@secretdef/resend';
// import '@secretdef/...';  ← other services

// Validates ALL secrets defined by any prior defineSecrets() call
validateSecrets();
```

You can also compose explicitly in a `secrets.ts` file — useful if you want to add your own app secrets alongside:

```ts
// secrets.ts
import { defineSecrets } from 'secretdef';
import { secrets as resendSecrets } from '@secretdef/resend';

export const secrets = defineSecrets({
  ...resendSecrets,
  // Add your own app secrets
  // MY_APP_SECRET: { description: 'My app secret' },
});
```

```ts
// app entry point
import { validateSecrets } from 'secretdef';
import './secrets'; // defineSecrets() was called, secrets are registered

validateSecrets(); // no args — validates everything
```

> **Note:** `validateSecrets()` can also accept an explicit secrets object if you prefer full control: `validateSecrets(secrets)`.

## Secrets

| Variable | Description | Required |
|----------|-------------|----------|
| `RESEND_API_KEY` | Resend API key | Yes |
| `RESEND_BASE_URL` | Override Resend API base URL | No |

## What are Secret Definitions?

[secretdef](https://secretdef.com) is an open standard for declaring which environment variables (secrets) a package or app requires — their names, descriptions, and constraints.

Instead of discovering missing secrets through cryptic runtime errors, secret definitions let you **validate everything at startup** with clear, actionable error messages. AI coding agents can also read these definitions to configure secrets automatically.

Learn more at [secretdef.com](https://secretdef.com)

## Links

- [`resend`](https://www.npmjs.com/package/resend) — Official Resend SDK
- [Resend on GitHub](https://github.com/resend/resend-node) — Source
- [secretdef.com](https://secretdef.com) — Full documentation
- [secretdef on npm](https://www.npmjs.com/package/secretdef) — Core library
npm package: @secretdef/sendgrid
Description: Secret definitions for SendGrid
Latest version: 0.0.1

# @secretdef/sendgrid

Like `@types` but for environment variables — so your app (and AI coding agents) know exactly which secrets are needed before runtime.

Pre-built [secretdef](https://www.npmjs.com/package/secretdef) definitions for [**SendGrid**](https://www.npmjs.com/package/@sendgrid/mail) (`@sendgrid/mail`) environment variables.

> This package declares the secrets required by [`@sendgrid/mail`](https://www.npmjs.com/package/@sendgrid/mail). It does **not** install or replace the official SDK — install both side by side.

## Install

```bash
npm install @sendgrid/mail @secretdef/sendgrid secretdef
```

## Usage

Every `import` of a `@secretdef/*` package calls `defineSecrets()` under the hood, registering its secrets globally. You then call `validateSecrets()` **once** at startup — with no arguments — to validate everything that was defined:

```ts
// app entry point
import { validateSecrets } from 'secretdef';

import '@secretdef/sendgrid';
// import '@secretdef/...';  ← other services

// Validates ALL secrets defined by any prior defineSecrets() call
validateSecrets();
```

You can also compose explicitly in a `secrets.ts` file — useful if you want to add your own app secrets alongside:

```ts
// secrets.ts
import { defineSecrets } from 'secretdef';
import { secrets as sendgridSecrets } from '@secretdef/sendgrid';

export const secrets = defineSecrets({
  ...sendgridSecrets,
  // Add your own app secrets
  // MY_APP_SECRET: { description: 'My app secret' },
});
```

```ts
// app entry point
import { validateSecrets } from 'secretdef';
import './secrets'; // defineSecrets() was called, secrets are registered

validateSecrets(); // no args — validates everything
```

> **Note:** `validateSecrets()` can also accept an explicit secrets object if you prefer full control: `validateSecrets(secrets)`.

## Secrets

| Variable | Description | Required |
|----------|-------------|----------|
| `SENDGRID_API_KEY` | SendGrid API key | Yes |

## What are Secret Definitions?

[secretdef](https://secretdef.com) is an open standard for declaring which environment variables (secrets) a package or app requires — their names, descriptions, and constraints.

Instead of discovering missing secrets through cryptic runtime errors, secret definitions let you **validate everything at startup** with clear, actionable error messages. AI coding agents can also read these definitions to configure secrets automatically.

Learn more at [secretdef.com](https://secretdef.com)

## Links

- [`@sendgrid/mail`](https://www.npmjs.com/package/@sendgrid/mail) — Official SendGrid SDK
- [SendGrid on GitHub](https://github.com/sendgrid/sendgrid-nodejs) — Source
- [secretdef.com](https://secretdef.com) — Full documentation
- [secretdef on npm](https://www.npmjs.com/package/secretdef) — Core library
npm package: @secretdef/stripe
Description: Secret definitions for Stripe
Latest version: 0.0.1

# @secretdef/stripe

Like `@types` but for environment variables — so your app (and AI coding agents) know exactly which secrets are needed before runtime.

Pre-built [secretdef](https://www.npmjs.com/package/secretdef) definitions for [**Stripe**](https://www.npmjs.com/package/stripe) (`stripe`) environment variables.

> This package declares the secrets required by [`stripe`](https://www.npmjs.com/package/stripe). It does **not** install or replace the official SDK — install both side by side.

## Install

```bash
npm install stripe @secretdef/stripe secretdef
```

## Usage

Every `import` of a `@secretdef/*` package calls `defineSecrets()` under the hood, registering its secrets globally. You then call `validateSecrets()` **once** at startup — with no arguments — to validate everything that was defined:

```ts
// app entry point
import { validateSecrets } from 'secretdef';

import '@secretdef/stripe';
// import '@secretdef/...';  ← other services

// Validates ALL secrets defined by any prior defineSecrets() call
validateSecrets();
```

You can also compose explicitly in a `secrets.ts` file — useful if you want to add your own app secrets alongside:

```ts
// secrets.ts
import { defineSecrets } from 'secretdef';
import { secrets as stripeSecrets } from '@secretdef/stripe';

export const secrets = defineSecrets({
  ...stripeSecrets,
  // Add your own app secrets
  // MY_APP_SECRET: { description: 'My app secret' },
});
```

```ts
// app entry point
import { validateSecrets } from 'secretdef';
import './secrets'; // defineSecrets() was called, secrets are registered

validateSecrets(); // no args — validates everything
```

> **Note:** `validateSecrets()` can also accept an explicit secrets object if you prefer full control: `validateSecrets(secrets)`.

## Secrets

| Variable | Description | Required |
|----------|-------------|----------|
| `STRIPE_SECRET_KEY` | Stripe API secret key | Yes |
| `STRIPE_PUBLISHABLE_KEY` | Publishable key | Yes |
| `STRIPE_WEBHOOK_SECRET` | Webhook signing secret | No |

## What are Secret Definitions?

[secretdef](https://secretdef.com) is an open standard for declaring which environment variables (secrets) a package or app requires — their names, descriptions, and constraints.

Instead of discovering missing secrets through cryptic runtime errors, secret definitions let you **validate everything at startup** with clear, actionable error messages. AI coding agents can also read these definitions to configure secrets automatically.

Learn more at [secretdef.com](https://secretdef.com)

## Links

- [`stripe`](https://www.npmjs.com/package/stripe) — Official Stripe SDK
- [Stripe on GitHub](https://github.com/stripe/stripe-node) — Source
- [secretdef.com](https://secretdef.com) — Full documentation
- [secretdef on npm](https://www.npmjs.com/package/secretdef) — Core library
npm package: @secretdef/supabase
Description: Secret definitions for Supabase
Latest version: 0.0.1

# @secretdef/supabase

Like `@types` but for environment variables — so your app (and AI coding agents) know exactly which secrets are needed before runtime.

Pre-built [secretdef](https://www.npmjs.com/package/secretdef) definitions for [**Supabase**](https://www.npmjs.com/package/@supabase/supabase-js) (`@supabase/supabase-js`) environment variables.

> This package declares the secrets required by [`@supabase/supabase-js`](https://www.npmjs.com/package/@supabase/supabase-js). It does **not** install or replace the official SDK — install both side by side.

## Install

```bash
npm install @supabase/supabase-js @secretdef/supabase secretdef
```

## Usage

Every `import` of a `@secretdef/*` package calls `defineSecrets()` under the hood, registering its secrets globally. You then call `validateSecrets()` **once** at startup — with no arguments — to validate everything that was defined:

```ts
// app entry point
import { validateSecrets } from 'secretdef';

import '@secretdef/supabase';
// import '@secretdef/...';  ← other services

// Validates ALL secrets defined by any prior defineSecrets() call
validateSecrets();
```

You can also compose explicitly in a `secrets.ts` file — useful if you want to add your own app secrets alongside:

```ts
// secrets.ts
import { defineSecrets } from 'secretdef';
import { secrets as supabaseSecrets } from '@secretdef/supabase';

export const secrets = defineSecrets({
  ...supabaseSecrets,
  // Add your own app secrets
  // MY_APP_SECRET: { description: 'My app secret' },
});
```

```ts
// app entry point
import { validateSecrets } from 'secretdef';
import './secrets'; // defineSecrets() was called, secrets are registered

validateSecrets(); // no args — validates everything
```

> **Note:** `validateSecrets()` can also accept an explicit secrets object if you prefer full control: `validateSecrets(secrets)`.

## Secrets

| Variable | Description | Required |
|----------|-------------|----------|
| `SUPABASE_URL` | Supabase project URL | Yes |
| `SUPABASE_ANON_KEY` | Supabase anon/public key | Yes |
| `SUPABASE_SERVICE_ROLE_KEY` | Supabase service role key | Yes |

## What are Secret Definitions?

[secretdef](https://secretdef.com) is an open standard for declaring which environment variables (secrets) a package or app requires — their names, descriptions, and constraints.

Instead of discovering missing secrets through cryptic runtime errors, secret definitions let you **validate everything at startup** with clear, actionable error messages. AI coding agents can also read these definitions to configure secrets automatically.

Learn more at [secretdef.com](https://secretdef.com)

## Links

- [`@supabase/supabase-js`](https://www.npmjs.com/package/@supabase/supabase-js) — Official Supabase SDK
- [Supabase on GitHub](https://github.com/supabase/supabase-js) — Source
- [secretdef.com](https://secretdef.com) — Full documentation
- [secretdef on npm](https://www.npmjs.com/package/secretdef) — Core library
npm package: @secretdef/twilio
Description: Secret definitions for Twilio
Latest version: 0.0.1

# @secretdef/twilio

Like `@types` but for environment variables — so your app (and AI coding agents) know exactly which secrets are needed before runtime.

Pre-built [secretdef](https://www.npmjs.com/package/secretdef) definitions for [**Twilio**](https://www.npmjs.com/package/twilio) (`twilio`) environment variables.

> This package declares the secrets required by [`twilio`](https://www.npmjs.com/package/twilio). It does **not** install or replace the official SDK — install both side by side.

## Install

```bash
npm install twilio @secretdef/twilio secretdef
```

## Usage

Every `import` of a `@secretdef/*` package calls `defineSecrets()` under the hood, registering its secrets globally. You then call `validateSecrets()` **once** at startup — with no arguments — to validate everything that was defined:

```ts
// app entry point
import { validateSecrets } from 'secretdef';

import '@secretdef/twilio';
// import '@secretdef/...';  ← other services

// Validates ALL secrets defined by any prior defineSecrets() call
validateSecrets();
```

You can also compose explicitly in a `secrets.ts` file — useful if you want to add your own app secrets alongside:

```ts
// secrets.ts
import { defineSecrets } from 'secretdef';
import { secrets as twilioSecrets } from '@secretdef/twilio';

export const secrets = defineSecrets({
  ...twilioSecrets,
  // Add your own app secrets
  // MY_APP_SECRET: { description: 'My app secret' },
});
```

```ts
// app entry point
import { validateSecrets } from 'secretdef';
import './secrets'; // defineSecrets() was called, secrets are registered

validateSecrets(); // no args — validates everything
```

> **Note:** `validateSecrets()` can also accept an explicit secrets object if you prefer full control: `validateSecrets(secrets)`.

## Secrets

| Variable | Description | Required |
|----------|-------------|----------|
| `TWILIO_ACCOUNT_SID` | Twilio account SID | Yes |
| `TWILIO_AUTH_TOKEN` | Twilio auth token | Yes |
| `TWILIO_REGION` | Twilio API region | No |
| `TWILIO_EDGE` | Twilio edge location | No |
| `TWILIO_LOG_LEVEL` | Twilio SDK log level | No |

## What are Secret Definitions?

[secretdef](https://secretdef.com) is an open standard for declaring which environment variables (secrets) a package or app requires — their names, descriptions, and constraints.

Instead of discovering missing secrets through cryptic runtime errors, secret definitions let you **validate everything at startup** with clear, actionable error messages. AI coding agents can also read these definitions to configure secrets automatically.

Learn more at [secretdef.com](https://secretdef.com)

## Links

- [`twilio`](https://www.npmjs.com/package/twilio) — Official Twilio SDK
- [Twilio on GitHub](https://github.com/twilio/twilio-node) — Source
- [secretdef.com](https://secretdef.com) — Full documentation
- [secretdef on npm](https://www.npmjs.com/package/secretdef) — Core library
npm package: @secretflow/commitlint-config
Description: Shared commitlint config for SecretFlow
Author: bubkoo
Latest version: 1.0.0

# commitlint-config

> Shared commitlint config for SecretFlow.

## Install

```sh
npm install --save-dev @secretflow/commitlint-config
```

## Usage

Add `commitlint` config in the `package.json`.

```json
{
  "commitlint": {
    "extends": [
      "@secretflow/commitlint-config"
    ]
  },
}
```
npm package: @secretflow/dumi-mdx-loader-core
Description: Use proper .mdx files in Dumi.
Author: Tony Wu
Latest version: 0.2.0

# dumi-mdx-loader-core

Use proper [.mdx] files in Dumi, via [@mdx-js/loader](https://mdxjs.com/packages/loader/).

---

This is part of [secretflow/doctools], [SecretFlow]'s documentation toolchain.

[.mdx]: https://mdxjs.com/
[@mdx-js/loader]: https://mdxjs.com/packages/loader/
[secretflow/doctools]: https://github.com/secretflow/doctools
[SecretFlow]: https://www.secretflow.org.cn/
npm package: @secretflow/dumi-plugin-mdx
Description: Dumi plugin to enable compiling .mdx files.
Author: Tony Wu
Latest version: 0.3.0

# dumi-plugin-mdx

[![npm](https://img.shields.io/npm/v/%40mdx-js%2Fmdx?label=Powered%20by%20%40mdx-js%2Fmdx)](https://www.npmjs.com/package/@mdx-js/mdx)

Write your Dumi docs in [MDX](https://mdxjs.com/).

MDX lets you use proper JSX syntax in Markdown documents. No more
[fenced code magic](https://d.umijs.org/guide/write-demo#代码块) or [pretending it's HTML](https://d.umijs.org/theme/global-component#实践与限制).

```md
import { CoolComponent } from 'cool-component';
import { version } from 'cool-component/package.json';

# Cool react component

[![npm](https://img.shields.io/npm/v/%40mdx-js%2Fmdx?label=Powered%20by%20%40mdx-js%2Fmdx)](https://www.npmjs.com/package/@mdx-js/mdx)

> Version: {version}

Check out this cool component:

<CoolComponent coolness={10} style={{ color: "#fcb32c" }} />
```

## Who is using this?

- [隐语 SecretFlow 文档](https://www.secretflow.org.cn/docs/secretflow)

## Install and use

**This package is NOT PRODUCTION-READY.** It does not support all Dumi features, such as
component demos. Use at your own risk.

1. Install in a Dumi project.

   ```bash
   npm i -D dumi-plugin-mdx
   # or yarn, or pnpm
   ```

2. Add `dumi-plugin-mdx` to your `.dumirc.ts`.

   ```diff
   import { defineConfig } from 'dumi';

   export default defineConfig({
   + plugins: ['dumi-plugin-mdx'],
   });
   ```

3. Put .mdx files in your `docs` folder. See [MDX documentation](https://mdxjs.com/docs/what-is-mdx/) on how to write one.

   > You MUST use the `.mdx` extension. `.md` files will still be parsed as Markdown.

   ```md
   # Hello, world!

   <div className="note">
     > Some notable things in a block quote!
   </div>
   ```

4. Build away!

   ```bash
   npm run build
   # npm exec dumi build, or yarn, or pnpm
   ```

You can write .mdx files along side your existing .md files. Dumi's [routing](https://d.umijs.org/guide/conventional-routing) behavior will still apply.

```
docs
├── index.mdx
├── stable
│   └── existing-doc.md
└── next
    └── new-doc.mdx
.dumirc.ts
```

---

This is part of [secretflow/doctools], [SecretFlow]'s documentation toolchain.

[secretflow/doctools]: https://github.com/secretflow/doctools
[SecretFlow]: https://www.secretflow.org.cn/
npm package: @secretflow/dumi-plugin-search
Description: Better search for Dumi
Author: Tony Wu
Latest version: 0.6.1

# dumi-plugin-search

Better search for Dumi, currently a work in progress.

---

This is part of [secretflow/doctools], [SecretFlow]'s documentation toolchain.

[secretflow/doctools]: https://github.com/secretflow/doctools
[SecretFlow]: https://www.secretflow.org.cn/
npm package: @secretflow/dumi-plugin-yuque
Description: 在 Dumi 中使用语雀导出的 HTML 文件作为文档。
Latest version: 0.3.0

# dumi-plugin-yuque

在 Dumi 中使用语雀导出的 HTML 文件作为文档。

---

This is part of [secretflow/doctools], [SecretFlow]'s documentation toolchain.

[secretflow/doctools]: https://github.com/secretflow/doctools
[SecretFlow]: https://www.secretflow.org.cn/
npm package: @secretflow/dumi-theme-sphinx-mdx
Description: Dumi theme for SecretFlow's documentation.
Author: Tony Wu
Latest version: 0.6.6

# dumi-theme-sphinx-mdx

A [Dumi] [theme].

[Dumi]: https://d.umijs.org/
[theme]: https://d.umijs.org/theme

---

This is part of [secretflow/doctools], [SecretFlow]'s documentation toolchain.

[secretflow/doctools]: https://github.com/secretflow/doctools
[SecretFlow]: https://www.secretflow.org.cn/
npm package: @secretflow/eslint-config
Description: Shared eslint config for SecretFlow
Author: bubkoo
Latest version: 1.0.0

# eslint-config

> Shared eslint config for SecretFlow.

## Install

```sh
npm install --save-dev eslint prettier typescript @secretflow/eslint-config
```
## Usage

`.eslintrc`

```json
{
  "extends": "@secretflow/eslint-config"
}
```
npm package: @secretflow/lint-staged-config
Description: Shared lint-staged config for SecretFlow
Author: bubkoo
Latest version: 1.0.0

# lint-staged-config

> Shared lint-staged config for SecretFlow.

## Install

```sh
npm install --save-dev prettier @secretflow/lint-staged-config
```

## Usage

`.lintstagedrc.js`

```js
module.exports = require('@secretflow/lint-staged-config')
```
npm package: @secretflow/semantic-release-config
Description: Sharable configuration for semantic-release, extends experience for publishing to NPM & Github
Author: bubkoo
Latest version: 1.0.0

# semantic-release-config

> [**semantic-release**](https://github.com/semantic-release/semantic-release) shareable configuration for npm & GitHub

## Plugins

This [shareable configuration](https://github.com/jedmao/semantic-release-npm-github-config/blob/master/.releaserc.json) uses the following plugins:

- [`@semantic-release/commit-analyzer`](https://github.com/semantic-release/commit-analyzer)
- [`@semantic-release/release-notes-generator`](https://github.com/semantic-release/release-notes-generator)
- [`@semantic-release/npm`](https://github.com/semantic-release/npm)
- [`@semantic-release/github`](https://github.com/semantic-release/github)
- [`@semantic-release/git`](https://github.com/semantic-release/git)

## Summary

- Provides an informative [git](https://github.com/semantic-release/git) commit message for the release commit that does not trigger continuous integration and conforms to the [conventional commits specification](https://www.conventionalcommits.org/) (e.g., "chore(release): 1.2.3 [skip ci]\n\nnotes").
- Creates a tarball that gets uploaded with each [GitHub release](https://github.com/semantic-release/github).
- Publishes the same tarball to [npm](https://github.com/semantic-release/npm).
- Commits the version change in `package.json`.
- Creates or updates a [changelog](https://github.com/semantic-release/changelog) file.

## Install

```bash
$ npm install --save-dev semantic-release @secretflow/semantic-release-config
```

## Usage

The shareable config can be configured in the [**semantic-release** configuration file](https://github.com/semantic-release/semantic-release/blob/master/docs/usage/configuration.md#configuration) with default configuration:
```json
{
  "extends": "@secretflow/semantic-release-config"
}
```

We can also specify plugin options in `.releaserc.js` file:
```js
var config = require('@secretflow/semantic-release-config/config');
module.exports = config({
  commitAnalyzer: {...},
  releaseNotesGenerator: {...},
  changelog: {...},
  npm: {...},
  github: {...},
  git: {...},
})
```
npm package: @secretflow/unified-toolkit
Description: Suite of unified plugins and tools for processing Markdown documents using Dumi.
Author: Tony Wu
Latest version: 0.4.0

# unified-toolkit

A collection of [unified](https://github.com/unifiedjs/unified) plugins.

---

This is part of [secretflow/doctools], [SecretFlow]'s documentation toolchain.

[secretflow/doctools]: https://github.com/secretflow/doctools
[SecretFlow]: https://www.secretflow.org.cn/
npm package: @secretlint/binary-compiler
Description: A binary compiler for secretlint.
Author: azu
Latest version: 0.7.4

# @secretlint/binary-compiler

A binary compiler for secretlint.

## Install

Install with [npm](https://www.npmjs.com/):

    npm install @secretlint/binary

## Usage

- [ ] Write usage instructions

## Changelog

See [Releases page](https://github.com/secretlint/secretlint/releases).

## Running tests

Install devDependencies and Run `npm test`:

    npm test

## Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, [please create an issue](https://github.com/secretlint/secretlint/issues).

1. Fork it!
2. Create your feature branch: `git checkout -b my-new-feature`
3. Commit your changes: `git commit -am 'Add some feature'`
4. Push to the branch: `git push origin my-new-feature`
5. Submit a pull request :D

## Author

- [github/azu](https://github.com/azu)
- [twitter/azu_re](https://twitter.com/azu_re)

## License

MIT © azu
npm package: @secretlint/config-creator
Description: Config file creator for secretlint.
Author: azu
Latest version: 11.6.0

# @secretlint/config-creator

Config file creator for secretlint.

## Install

Install with [npm](https://www.npmjs.com/):

    npm install @secretlint/config-creator

## Usage

- [ ] Write usage instructions

## Changelog

See [Releases page](https://github.com/secretlint/secretlint/releases).

## Running tests

Install devDependencies and Run `npm test`:

    npm test

## Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, [please create an issue](https://github.com/secretlint/secretlint/issues).

1. Fork it!
2. Create your feature branch: `git checkout -b my-new-feature`
3. Commit your changes: `git commit -am 'Add some feature'`
4. Push to the branch: `git push origin my-new-feature`
5. Submit a pull request :D

## Author

- [github/azu](https://github.com/azu)
- [twitter/azu_re](https://twitter.com/azu_re)

## License

MIT © azu
npm package: @secretlint/config-loader
Description: Config loader for secretlint.
Author: azu
Latest version: 11.6.0

# @secretlint/config-loader

Config loader for secretlint.

## Install

Install with [npm](https://www.npmjs.com/):

    npm install @secretlint/config-loader

## Usage

### API Interface

```ts 
import { SecretLintConfigDescriptor, SecretLintCoreDescriptor } from "@secretlint/types";
export declare type SecretLintConfigLoaderOptions = {
    cwd?: string;
};
export declare type SecretLintConfigLoaderResult = {
    ok: true;
    configFilePath: string;
    config: SecretLintCoreDescriptor;
} | {
    ok: false;
    configFilePath: null;
    config: null;
    errors: Error[];
};
export declare type SecretLintConfigLoaderRawResult = {
    ok: true;
    configFilePath: string;
    config: SecretLintConfigDescriptor;
} | {
    ok: false;
    errors: Error[];
};
/**
 * Load config file and return config object that is loaded rule instance. 
 * @param options
 */
export declare const loadConfig: (options: SecretLintConfigLoaderOptions) => SecretLintConfigLoaderResult;
export declare const loadConfigRaw: (options: SecretLintConfigLoaderOptions) => SecretLintConfigLoaderRawResult;
```

### Example

```js 
impor { loadConfig } from "@secretlint/config-loader";
// Load <CurrentDir>/.secretlintrc.{json,yml,js}
const { ok, config, configFilePath, errors } = loadConfig({ cwd: process.cwd() });
if(ok) {
  console.log("load from configFile:" + configFilePath);
  console.log("config", config);
} else{
  console.error(errors);
}
```

## Terminology

- ConfigDescriptor: config file literal that is not loaded yet
- Config: loaded object

## Workflow

- Validate `ConfigDescriptor`
- Load `ConfigDescriptor` and create `Config` object - imports each rule modules
- Validate Loaded `Config` with `ConfigDescriptor`
    - Invalid option, Invalid allowMessageIds, Invalid id specify for a preset 
- If all validation is passed, get a Config.

## Changelog

See [Releases page](https://github.com/secretlint/secretlint/releases).

## Running tests

Install devDependencies and Run `npm test`:

    npm test

## Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, [please create an issue](https://github.com/secretlint/secretlint/issues).

1. Fork it!
2. Create your feature branch: `git checkout -b my-new-feature`
3. Commit your changes: `git commit -am 'Add some feature'`
4. Push to the branch: `git push origin my-new-feature`
5. Submit a pull request :D

## Author

- [github/azu](https://github.com/azu)
- [twitter/azu_re](https://twitter.com/azu_re)

## License

MIT © azu
npm package: @secretlint/config-validator
Description: .secretlintrc config validation library
Author: azu
Latest version: 4.2.0

# @secretlint/config-validator

.secretlintrc config validation library

## Install

Install with [npm](https://www.npmjs.com/):

    npm install @secretlint/config-validator

## Usage

```ts
import { validateRawConfig } from "@secretlint/config-validator";
import fs from "fs";
const secretlintrc = require("./.secretlintrc.json");
const { ok, error } = validateRawConfig(secretlintrc);
if (!ok) {
  console.error(error);
}
```

## Changelog

See [Releases page](https://github.com/secretlint/secretlint/releases).

## Running tests

Install devDependencies and Run `npm test`:

    npm test

## Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, [please create an issue](https://github.com/secretlint/secretlint/issues).

1. Fork it!
2. Create your feature branch: `git checkout -b my-new-feature`
3. Commit your changes: `git commit -am 'Add some feature'`
4. Push to the branch: `git push origin my-new-feature`
5. Submit a pull request :D

## Author

- [github/azu](https://github.com/azu)
- [twitter/azu_re](https://twitter.com/azu_re)

## License

MIT © azu
npm package: @secretlint/core
Description: Core library for @secretlint.
Author: azu
Latest version: 11.6.0

# @secretlint/core

Core library for @secretlint.

The core is written by Pure JavaScript.
It work on Browser and Node.js.

## Install

Install with [npm](https://www.npmjs.com/):

    npm install @secretlint/core

## Usage

- [ ] Write usage instructions

## Changelog

See [Releases page](https://github.com/secretlint/secretlint/releases).

## Running tests

Install devDependencies and Run `npm test`:

    npm test

## Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, [please create an issue](https://github.com/secretlint/secretlint/issues).

1. Fork it!
2. Create your feature branch: `git checkout -b my-new-feature`
3. Commit your changes: `git commit -am 'Add some feature'`
4. Push to the branch: `git push origin my-new-feature`
5. Submit a pull request :D

## Author

- [github/azu](https://github.com/azu)
- [twitter/azu_re](https://twitter.com/azu_re)

## License

MIT © azu
npm package: @secretlint/formatter
Description: A formatter collection for Secretlint.
Author: azu
Latest version: 11.6.0

# @secretlint/formatter

A formatter collection for Secretlint.

These formatter come from textlint and create compatible layer between Secretlint and textlint

We will re-implement formatter for Secretlint.

## Install

Install with [npm](https://www.npmjs.com/):

    npm install @secretlint/formatter

## Usage

- [ ] Write usage instructions

## Changelog

See [Releases page](https://github.com/secretlint/secretlint/releases).

## Running tests

Install devDependencies and Run `npm test`:

    npm test

## Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, [please create an issue](https://github.com/secretlint/secretlint/issues).

1. Fork it!
2. Create your feature branch: `git checkout -b my-new-feature`
3. Commit your changes: `git commit -am 'Add some feature'`
4. Push to the branch: `git push origin my-new-feature`
5. Submit a pull request :D

## Author

- [github/azu](https://github.com/azu)
- [twitter/azu_re](https://twitter.com/azu_re)

## License

MIT © azu