This commit is contained in:
2025-08-18 23:06:34 +08:00
parent 0bc04fb659
commit ed18af0cad
1926 changed files with 275098 additions and 0 deletions

13
package/node_modules/libnpmorg/LICENSE generated vendored Normal file
View File

@@ -0,0 +1,13 @@
Copyright npm, Inc
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

148
package/node_modules/libnpmorg/README.md generated vendored Normal file
View File

@@ -0,0 +1,148 @@
# libnpmorg
[![npm version](https://img.shields.io/npm/v/libnpmorg.svg)](https://npm.im/libnpmorg)
[![license](https://img.shields.io/npm/l/libnpmorg.svg)](https://npm.im/libnpmorg)
[![CI - libnpmorg](https://github.com/npm/cli/actions/workflows/ci-libnpmorg.yml/badge.svg)](https://github.com/npm/cli/actions/workflows/ci-libnpmorg.yml)
[`libnpmorg`](https://github.com/npm/libnpmorg) is a Node.js library for
programmatically accessing the [npm Org membership
API](https://github.com/npm/registry/blob/master/docs/orgs/memberships.md#membership-detail).
## Table of Contents
* [Example](#example)
* [Install](#install)
* [Contributing](#contributing)
* [API](#api)
* [hook opts](#opts)
* [`set()`](#set)
* [`rm()`](#rm)
* [`ls()`](#ls)
* [`ls.stream()`](#ls-stream)
## Example
```js
const org = require('libnpmorg')
console.log(await org.ls('myorg', {token: 'deadbeef'}))
=>
Roster {
zkat: 'developer',
iarna: 'admin',
isaacs: 'owner'
}
```
## Install
`$ npm install libnpmorg`
### API
#### <a name="opts"></a> `opts` for `libnpmorg` commands
`libnpmorg` uses [`npm-registry-fetch`](https://npm.im/npm-registry-fetch).
All options are passed through directly to that library, so please refer to [its
own `opts`
documentation](https://www.npmjs.com/package/npm-registry-fetch#fetch-options)
for options that can be passed in.
A couple of options of note for those in a hurry:
* `opts.token` - can be passed in and will be used as the authentication token for the registry. For other ways to pass in auth details, see the n-r-f docs.
* `opts.otp` - certain operations will require an OTP token to be passed in. If a `libnpmorg` command fails with `err.code === EOTP`, please retry the request with `{otp: <2fa token>}`
#### <a name="set"></a> `> org.set(org, user, [role], [opts]) -> Promise`
The returned Promise resolves to a [Membership
Detail](https://github.com/npm/registry/blob/master/docs/orgs/memberships.md#membership-detail)
object.
The `role` is optional and should be one of `admin`, `owner`, or `developer`.
`developer` is the default if no `role` is provided.
`org` and `user` must be scope names for the org name and user name
respectively. They can optionally be prefixed with `@`.
See also: [`PUT
/-/org/:scope/user`](https://github.com/npm/registry/blob/master/docs/orgs/memberships.md#org-membership-replace)
##### Example
```javascript
await org.set('@myorg', '@myuser', 'admin', {token: 'deadbeef'})
=>
MembershipDetail {
org: {
name: 'myorg',
size: 15
},
user: 'myuser',
role: 'admin'
}
```
#### <a name="rm"></a> `> org.rm(org, user, [opts]) -> Promise`
The Promise resolves to `null` on success.
`org` and `user` must be scope names for the org name and user name
respectively. They can optionally be prefixed with `@`.
See also: [`DELETE
/-/org/:scope/user`](https://github.com/npm/registry/blob/master/docs/orgs/memberships.md#org-membership-delete)
##### Example
```javascript
await org.rm('myorg', 'myuser', {token: 'deadbeef'})
```
#### <a name="ls"></a> `> org.ls(org, [opts]) -> Promise`
The Promise resolves to a
[Roster](https://github.com/npm/registry/blob/master/docs/orgs/memberships.md#roster)
object.
`org` must be a scope name for an org, and can be optionally prefixed with `@`.
See also: [`GET
/-/org/:scope/user`](https://github.com/npm/registry/blob/master/docs/orgs/memberships.md#org-roster)
##### Example
```javascript
await org.ls('myorg', {token: 'deadbeef'})
=>
Roster {
zkat: 'developer',
iarna: 'admin',
isaacs: 'owner'
}
```
#### <a name="ls-stream"></a> `> org.ls.stream(org, [opts]) -> Stream`
Returns a stream of entries for a
[Roster](https://github.com/npm/registry/blob/master/docs/orgs/memberships.md#roster),
with each emitted entry in `[key, value]` format.
`org` must be a scope name for an org, and can be optionally prefixed with `@`.
The returned stream is a valid `Symbol.asyncIterator`.
See also: [`GET
/-/org/:scope/user`](https://github.com/npm/registry/blob/master/docs/orgs/memberships.md#org-roster)
##### Example
```javascript
for await (let [user, role] of org.ls.stream('myorg', {token: 'deadbeef'})) {
console.log(`user: ${user} (${role})`)
}
=>
user: zkat (developer)
user: iarna (admin)
user: isaacs (owner)
```

64
package/node_modules/libnpmorg/lib/index.js generated vendored Normal file
View File

@@ -0,0 +1,64 @@
'use strict'
const eu = encodeURIComponent
const fetch = require('npm-registry-fetch')
const validate = require('aproba')
// From https://github.com/npm/registry/blob/master/docs/orgs/memberships.md
const cmd = module.exports
class MembershipDetail {}
cmd.set = (org, user, role, opts = {}) => {
if (
typeof role === 'object' &&
Object.keys(opts).length === 0
) {
opts = role
role = undefined
}
validate('SSSO|SSZO', [org, user, role, opts])
user = user.replace(/^@?/, '')
org = org.replace(/^@?/, '')
return fetch.json(`/-/org/${eu(org)}/user`, {
...opts,
method: 'PUT',
body: { user, role },
}).then(ret => Object.assign(new MembershipDetail(), ret))
}
cmd.rm = (org, user, opts = {}) => {
validate('SSO', [org, user, opts])
user = user.replace(/^@?/, '')
org = org.replace(/^@?/, '')
return fetch(`/-/org/${eu(org)}/user`, {
...opts,
method: 'DELETE',
body: { user },
ignoreBody: true,
}).then(() => null)
}
class Roster {}
cmd.ls = (org, opts = {}) => {
return cmd.ls.stream(org, opts)
.collect()
.then(data => data.reduce((acc, [key, val]) => {
if (!acc) {
acc = {}
}
acc[key] = val
return acc
}, null))
.then(ret => Object.assign(new Roster(), ret))
}
cmd.ls.stream = (org, opts = {}) => {
validate('SO', [org, opts])
org = org.replace(/^@?/, '')
return fetch.json.stream(`/-/org/${eu(org)}/user`, '*', {
...opts,
mapJSON: (value, [key]) => {
return [key, value]
},
})
}

61
package/node_modules/libnpmorg/package.json generated vendored Normal file
View File

@@ -0,0 +1,61 @@
{
"name": "libnpmorg",
"version": "6.0.6",
"description": "Programmatic api for `npm org` commands",
"author": "GitHub Inc.",
"main": "lib/index.js",
"keywords": [
"libnpm",
"npm",
"package manager",
"api",
"orgs",
"teams"
],
"license": "ISC",
"scripts": {
"lint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\"",
"test": "tap",
"posttest": "npm run lint",
"postlint": "template-oss-check",
"lintfix": "npm run lint -- --fix",
"snap": "tap",
"template-oss-apply": "template-oss-apply --force"
},
"files": [
"bin/",
"lib/"
],
"devDependencies": {
"@npmcli/eslint-config": "^4.0.0",
"@npmcli/template-oss": "4.22.0",
"minipass": "^7.1.1",
"nock": "^13.3.3",
"tap": "^16.3.8"
},
"repository": {
"type": "git",
"url": "git+https://github.com/npm/cli.git",
"directory": "workspaces/libnpmorg"
},
"bugs": "https://github.com/npm/libnpmorg/issues",
"homepage": "https://npmjs.com/package/libnpmorg",
"dependencies": {
"aproba": "^2.0.0",
"npm-registry-fetch": "^17.0.1"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
},
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
"version": "4.22.0",
"content": "../../scripts/template-oss/index.js"
},
"tap": {
"nyc-arg": [
"--exclude",
"tap-snapshots/**"
]
}
}