@ax-hub/sdk 0.3.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/README.md +25 -15
- package/dist/cli/doctor.cjs +1 -1
- package/dist/cli/doctor.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +901 -385
- package/dist/index.d.ts +901 -385
- package/dist/index.js +1 -1
- package/package.json +9 -36
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,39 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [1.0.0] — 2026-05-29
|
|
6
|
+
|
|
7
|
+
First stable major. `@ax-hub/sdk` ↔ backend `main` 정렬 (110→177 routes, 36→42 error codes) + 단일 패키지에서 npm workspaces 모노레포로 전환. 거버넌스(admin) surface 36 op 을 신규 공개 패키지 **`@ax-hub/admin-sdk`** 로 분리. SDK 1차 사용자(코딩 에이전트 + member/PAT 앱)는 admin 메서드로 항상 403 을 받았으므로 main SDK 표면에서 제거하는 것이 정상화다. 마이그레이션 매핑은 [`docs/MIGRATION-1.0.md`](docs/MIGRATION-1.0.md) 참조 (ADR-0042 / ADR-0043 / ADR-0044).
|
|
8
|
+
|
|
9
|
+
### BREAKING
|
|
10
|
+
|
|
11
|
+
- **admin 거버넌스 36 op 이동 — `@ax-hub/sdk` 에서 제거, 신규 `@ax-hub/admin-sdk` 로 이동.** 접근은 `new AdminClient({ token, tokenType })` (from `@ax-hub/admin-sdk`) 로. 매핑:
|
|
12
|
+
- `sdk.audit.*` (events `list`/`get`, `integrityCheck`, `anonymize`) → `adminSdk.audit.*`
|
|
13
|
+
- `sdk.authz.{tags,subjects,grants}` → `adminSdk.authz.*`
|
|
14
|
+
- `sdk.authz.evaluator` / `decide` **제거-only** — backend 공식 route 부재. backend 노출 시 후속 admin-sdk 에서 재도입.
|
|
15
|
+
- `sdk.tenants.{create,list,update,delete}` + members / invitations / email-domains / icon → `adminSdk.tenants.*`. **`sdk.tenants.get` 은 main 유지.**
|
|
16
|
+
- `sdk.identity.idp` (`IdentityProviderClient`) → `adminSdk.identityProviders.*`
|
|
17
|
+
- `sdk.apps.categories.{create,update,delete}` → `adminSdk.categories.*`. **`sdk.apps.categories.list`/`get` 은 main 유지.**
|
|
18
|
+
- **`sdk.apps.create()` 는 이제 tenant UUID(`defaultTenantId`) 를 요구**하고 미설정 시 `TenantIdRequiredError` 를 throw. 구 `POST /api/v1/apps` 404-fallback 경로 제거. `apps.list()` 는 `defaultTenantId` 설정 시 tenant-scoped, 미설정 시 live alias 호출 (US1).
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
|
|
22
|
+
- **신규 capability ~25 (US3, non-breaking):** apps `suspend`/`resume`, app invitations `create`/`delete`, `members.list`, `discover`(global + tenant), `me/apps` (owned + received), `check-availability` + icon pre-create, tables `check-availability`/`column-types`/`browse-rows`, deploy `logs`/`app-bootstraps`/github accounts+repos, `gateway.engines`, identity github oauth `start`/`callback`, `config.public` (tokenless), reviewer review-requests history.
|
|
23
|
+
- **MCP + OAuth (US4):** `registerMcpClient` (Dynamic Client Registration, unauthenticated), RFC 8707 `resource`/audience binding on authorize + token, oauth-client `allowedResources`, 9 typed OAuth errors incl. 전용 `InvalidTargetError`.
|
|
24
|
+
- **입력/필드 drift (US5):** `CreateAppInput`/`UpdateAppInput` 신규 필드 (`authMode`, `dataScopes`, `deployMethod`, `resourceTier`, `subdomain`, `clearSubdomain`, `iconDarkUrl`), oauth-client 신규 필드, env-var `stage`, table `description`, app-list `filter`/`sort`/`page` 파라미터.
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
|
|
28
|
+
- backend contract pin 을 spec-278 → backend `main` 으로 전진 (110→177 routes, 36→42 error codes). error catalog 6 코드 추가 (`codes.go.snapshot` 갱신, `extract-codes` 재생성).
|
|
29
|
+
- OAuth 9 코드 매핑에 `invalid_target` 전용 구분 추가 (US5).
|
|
30
|
+
|
|
31
|
+
### Infrastructure
|
|
32
|
+
|
|
33
|
+
- 단일 패키지 `@ax-hub/sdk` → **npm workspaces 모노레포** (`packages/*`). 공유 infra(http/auth/error/pagination/retry/redaction/branded-id/resource helpers)를 private **`@ax-hub/core`** (`private:true`, **미발행**) 로 추출, tsup `noExternal` 로 `@ax-hub/sdk` + `@ax-hub/admin-sdk` dist 에 inline. publish `.d.ts` 에 private core import 0 (SC-009, `check:dts-no-private-core` gate).
|
|
34
|
+
- 신규 공개 패키지 **`@ax-hub/admin-sdk`** (governance surface, `AdminClient`).
|
|
35
|
+
- public packages(sdk/admin-sdk) semver major 1.0.0 동반, private core 버전 동기화. release CI 가 두 공개 패키지를 발행 (core 는 비발행).
|
|
36
|
+
- ADR 신규: ADR-0042 (monorepo workspaces), ADR-0043 (BC relocation → admin-sdk), ADR-0044 (public API whitelist 재정의).
|
|
37
|
+
|
|
5
38
|
## [0.3.0] — 2026-05-26
|
|
6
39
|
|
|
7
40
|
gateway 거버넌스 surface(`engines`/`connectors`/`resources`, `@adminOnly`)를 SDK 에서 제거하고 member-facing surface(`query` + `catalog`)만 유지 (ADR-0041). SDK 1차 사용자(코딩 에이전트 + member-token 앱)는 거버넌스 메서드로 항상 403 을 받았고, connector/engine 관리는 콘솔 관리자 작업이다.
|
package/README.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
agent-first Node.js SDK for AX Hub. Designed for Claude, Codex, and other coding agents — one client, 8 bounded contexts, typed errors, async iterators for SSE streams, generated drift inventory, and no hidden Korean substring matching.
|
|
4
4
|
|
|
5
|
+
> **이 SDK를 개발/유지보수하려는 컨트리뷰터라면** → 내부 아키텍쳐·동작 원리·하네스·e2e 플로우를 설명한 온보딩 문서 [`docs/ARCHITECTURE.md`](../../docs/ARCHITECTURE.md)부터 읽으세요. (이 README는 SDK *사용자*용 API 가이드입니다.)
|
|
6
|
+
|
|
7
|
+
> **거버넌스(admin) surface 를 찾고 있다면** → tenants CRUD / authz / audit / identity-providers / category CUD 는 `@ax-hub/sdk` 에서 분리되어 별도 패키지 [`@ax-hub/admin-sdk`](../admin-sdk/README.md) 로 이동했습니다 (1.0.0). 0.x 에서 올라온다면 [`docs/MIGRATION-1.0.md`](../../docs/MIGRATION-1.0.md) 의 매핑 표를 보세요.
|
|
8
|
+
|
|
5
9
|
## I want to...
|
|
6
10
|
|
|
7
11
|
| Goal | Section |
|
|
@@ -11,6 +15,7 @@ agent-first Node.js SDK for AX Hub. Designed for Claude, Codex, and other coding
|
|
|
11
15
|
| choose JWT vs PAT or OAuth | [Authentication](#authentication) |
|
|
12
16
|
| query dynamic tables | [Dynamic Data + Query DSL](#dynamic-data--query-dsl) |
|
|
13
17
|
| debug an error | [Errors & Debugging](#errors--debugging) |
|
|
18
|
+
| use admin/governance APIs | [`@ax-hub/admin-sdk`](../admin-sdk/README.md) |
|
|
14
19
|
| upgrade from 0.x | [Migration & Upgrade](#migration--upgrade) |
|
|
15
20
|
|
|
16
21
|
## Magic Moment
|
|
@@ -54,16 +59,14 @@ console.log(app.slug, paid.total)
|
|
|
54
59
|
| `sdk.apps.comments` | `add`, `list`, `listAll`, `delete` (1-500 char client-side validation) |
|
|
55
60
|
| `sdk.apps.oauthClients` | `create` (⚠ `clientSecret` surfaced ONCE), `delete` |
|
|
56
61
|
| `sdk.apps.git` | `connect`, `installStart` (GitHub App install flow) |
|
|
57
|
-
| `sdk.apps.categories` | tenant category
|
|
62
|
+
| `sdk.apps.categories` | tenant category read (`list`, `get`); CUD moved to `@ax-hub/admin-sdk` |
|
|
58
63
|
| `sdk.apps.discover` | catalog search facade |
|
|
59
64
|
| `sdk.apps.templates` | app template listing |
|
|
60
65
|
| `sdk.apps.tables` | `list`, `create`, `delete`, `addColumn`, `dropColumn`, `listGrants`, `addGrant`, `revokeGrant` (schema admin) |
|
|
61
66
|
| `sdk.publicationRequests` | `get`, `approve`, `reject`, `listPending` (reviewer/admin namespace — separate from owner-scoped `sdk.apps.publication`) |
|
|
62
67
|
| `sdk.deployments` | `create`, `list`, `listAll`, `get`, `cancel`, `rollback` |
|
|
63
|
-
| `sdk.identity` | `pat.*`, `oauth.*`, `oidc.*`, `deviceCode.*`, `
|
|
64
|
-
| `sdk.tenants` | tenant CRUD
|
|
65
|
-
| `sdk.authz` | PBAC tags/subjects/grants + `evaluator.decide/decideMany` |
|
|
66
|
-
| `sdk.audit` | events, integrity check, anonymize, server-only emit |
|
|
68
|
+
| `sdk.identity` | `pat.*`, `oauth.*`, `oidc.*`, `deviceCode.*`, `systemOAuthClients.get`, `me` (identity-provider governance moved to `@ax-hub/admin-sdk`) |
|
|
69
|
+
| `sdk.tenants` | `get` (read own tenant); CRUD + members/invitations/email-domains/icon moved to `@ax-hub/admin-sdk` |
|
|
67
70
|
| `sdk.gateway` | `query.run` (parameterized read), `catalog` (member: list / getResource / invoke) |
|
|
68
71
|
| `sdk.data` | `/data/{tenantSlug}/{appSlug}/{table}` CRUD + bulk + typed DSL |
|
|
69
72
|
|
|
@@ -71,9 +74,11 @@ The committed generated route inventory currently tracks the pinned backend swag
|
|
|
71
74
|
|
|
72
75
|
### `sdk.apps.list` vs `sdk.apps.listMine`
|
|
73
76
|
|
|
74
|
-
- `list()` — returns apps in the **resolved tenant** (via `defaultTenantSlug` or `withTenant`). Tenant-scoped.
|
|
77
|
+
- `list()` — returns apps in the **resolved tenant** (via `defaultTenantId`/`defaultTenantSlug` or `withTenant`). Tenant-scoped.
|
|
75
78
|
- `listMine()` — returns the caller's **workspace** apps (owned + apps they've been granted access to), regardless of tenant ownership. Useful for per-user "my dashboard" views. Wraps `GET /me/apps/workspace`.
|
|
76
79
|
|
|
80
|
+
> **1.0:** `apps.create()` requires a tenant context (`defaultTenantId` or `sdk.tenant(...)`). Without one it throws `TenantIdRequiredError`. See [Migration](#migration--upgrade).
|
|
81
|
+
|
|
77
82
|
### `sdk.apps.publication` vs `sdk.publicationRequests`
|
|
78
83
|
|
|
79
84
|
- `sdk.apps.publication.*` — **owner-scoped**: submit/list/unpublish own app. App ID is the input.
|
|
@@ -235,7 +240,7 @@ Production mock mode throws `MockInProductionError` unless `AX_HUB_ALLOW_MOCK_IN
|
|
|
235
240
|
|
|
236
241
|
### Error Types
|
|
237
242
|
|
|
238
|
-
All `/api/v1/*` 4xx/5xx responses become typed `AxHubError` subclasses. `error.category` (9 enum from backend spec
|
|
243
|
+
All `/api/v1/*` 4xx/5xx responses become typed `AxHubError` subclasses. `error.category` (9 enum from backend spec) drives base class, `error.code` selects specific subclass.
|
|
239
244
|
|
|
240
245
|
| Class | Status | `retryable` | Hint |
|
|
241
246
|
|-------|--------|-------------|------|
|
|
@@ -249,7 +254,7 @@ All `/api/v1/*` 4xx/5xx responses become typed `AxHubError` subclasses. `error.c
|
|
|
249
254
|
| `InternalServerError` | 500 | **false** | escalate to human |
|
|
250
255
|
| `UnavailableError` (+ `AppUnavailableError`) | 502 / 503 / 504 | true | exponential backoff |
|
|
251
256
|
| `NetworkError`, `TimeoutError`, `DecodeError`, `AbortError` | — | varies | — |
|
|
252
|
-
| `OAuthError` (+ specific RFC 6749 codes) | — | varies (per code) | — |
|
|
257
|
+
| `OAuthError` (+ specific RFC 6749 codes incl. `InvalidTargetError`) | — | varies (per code) | — |
|
|
253
258
|
|
|
254
259
|
```ts
|
|
255
260
|
try {
|
|
@@ -261,14 +266,14 @@ try {
|
|
|
261
266
|
}
|
|
262
267
|
```
|
|
263
268
|
|
|
264
|
-
### Gateway catalog + query
|
|
269
|
+
### Gateway catalog + query
|
|
265
270
|
|
|
266
271
|
`sdk.tenant(slug).gateway` is member-facing — discover what you can read, then query it:
|
|
267
272
|
|
|
268
273
|
- **`catalog.*`** — `listKinds` / `listConnectors` / `listResources` / `getResource` / `invoke` (+ `hasAccess`, `listResourcesWithDetail`).
|
|
269
274
|
- **`query.run(...)`** — parameterized read against a connector resource (pass `connectorId` from `catalog.listConnectors()`).
|
|
270
275
|
|
|
271
|
-
> Admin-only connector/resource/engine governance is **not** in the SDK
|
|
276
|
+
> Admin-only connector/resource/engine governance is **not** in the SDK — manage those in the AX Hub console.
|
|
272
277
|
|
|
273
278
|
| Situation | What you get |
|
|
274
279
|
|-----------|--------------|
|
|
@@ -319,17 +324,22 @@ CI fails if swagger route inventory and generated files drift.
|
|
|
319
324
|
|
|
320
325
|
## Migration & Upgrade
|
|
321
326
|
|
|
322
|
-
|
|
327
|
+
**0.x → 1.0.0** is a hard cut (no prior deprecation). Two breaking changes:
|
|
328
|
+
|
|
329
|
+
1. **admin governance 36 op moved** to the new [`@ax-hub/admin-sdk`](../admin-sdk/README.md) package.
|
|
330
|
+
2. **`apps.create()` requires a tenant context** (`defaultTenantId` or `sdk.tenant(...)`).
|
|
331
|
+
|
|
332
|
+
See [`docs/MIGRATION-1.0.md`](../../docs/MIGRATION-1.0.md) for the full old→new mapping table and `CHANGELOG.md` `[1.0.0]` for the complete change list.
|
|
323
333
|
|
|
324
334
|
## Concepts
|
|
325
335
|
|
|
326
|
-
- **Tenant scoping.** `defaultTenantSlug` on constructor, `client.withTenant(slug)` for per-call switching, `TenantSlugRequiredError` when ambiguous.
|
|
336
|
+
- **Tenant scoping.** `defaultTenantId`/`defaultTenantSlug` on constructor, `client.withTenant(slug)` for per-call switching, `TenantSlugRequiredError`/`TenantIdRequiredError` when ambiguous/missing.
|
|
327
337
|
- **Pagination.** `list({ pageSize, cursor })` for single page. `listAll({ pageSize })` for async iterator that yields `{type:'item', value:T}` or `{type:'drift', addedSince}` when the backend's total grows mid-iteration.
|
|
328
338
|
- **Rate limiting.** Default strategy `'sleep'` — SDK honors `Retry-After` and silently retries. Use `rateLimitStrategy: 'throw'` to surface `RateLimitedError(retry.afterMs)` to caller.
|
|
329
339
|
- **Request correlation.** SDK auto-generates `X-Request-Id` (ULID) on every request. Backend echoes it OR replaces with its own `req_xxx` prefix if absent. `AxHubError.requestId` always present.
|
|
330
340
|
- **Token redaction.** Authorization / X-Api-Key / Cookie are always replaced with `***REDACTED***` in debug logs and `Error.toJSON()` output.
|
|
331
341
|
- **Debug mode.** `new AxHubClient({ debug: true, logger: pino() })` — opt-in structured request/response logging. Default off.
|
|
332
|
-
- **Language.** Backend `error.message` is Korean (user-facing) by design. `error.code` and `error.category` are machine-readable (snake_case English) and stable across translations. Agents should branch on `code`/`category`; humans see the Korean `message`.
|
|
342
|
+
- **Language.** Backend `error.message` is Korean (user-facing) by design. `error.code` and `error.category` are machine-readable (snake_case English) and stable across translations. Agents should branch on `code`/`category`; humans see the Korean `message`.
|
|
333
343
|
|
|
334
344
|
## Branded ID types (optional)
|
|
335
345
|
|
|
@@ -362,8 +372,8 @@ Target was < 10ms p99 — 100x+ headroom in every path.
|
|
|
362
372
|
|
|
363
373
|
## Backend dependency
|
|
364
374
|
|
|
365
|
-
Pinned against backend
|
|
375
|
+
Pinned against backend `main` (177 routes, 42 error codes). Re-generate types via `npm run generate` + `npm run extract-codes` after backend swagger updates.
|
|
366
376
|
|
|
367
377
|
## License
|
|
368
378
|
|
|
369
|
-
|
|
379
|
+
Apache-2.0. See [`LICENSE`](./LICENSE).
|
package/dist/cli/doctor.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
'use strict';var
|
|
2
|
+
'use strict';var j=f;(function(b,H){var G=f,D=b();while(!![]){try{var a=-parseInt(G(0x19a))/(-0x81d*-0x3+-0x1ce9+0x493)*(parseInt(G(0x18a))/(0x15d+0x28d+-0x3e8))+-parseInt(G(0x18b))/(0xd*0x6b+-0xf6+0x1*-0x476)*(-parseInt(G(0x19c))/(0xa73+0x1b5a+-0x25c9))+parseInt(G(0x194))/(0x7ba+-0x10f+-0x2e*0x25)*(parseInt(G(0x1b3))/(-0x2*-0xf51+0xbc1+0x5*-0x879))+parseInt(G(0x199))/(0x116e+-0x1dc1+-0x22*-0x5d)+parseInt(G(0x1af))/(-0x1*-0x19cf+-0x8f6+-0x10d1)*(-parseInt(G(0x1ae))/(0x10*-0x2+0x88d+-0xc*0xb3))+parseInt(G(0x1b0))/(0x1c8f+-0x18c*0x17+0x1*0x70f)*(-parseInt(G(0x1a9))/(0x1437+0xc*-0x263+0x878))+-parseInt(G(0x1b2))/(0x1356+-0x175d+0x7*0x95)*(-parseInt(G(0x1b5))/(0x3*-0xa3e+0x4*0x3da+0x313*0x5));if(a===H)break;else D['push'](D['shift']());}catch(l){D['push'](D['shift']());}}}(X,-0x98a9a+-0xf*0x8f5+0x1010bd));var fs=require('fs'),path=require(j(0x19f)),_documentCurrentScript=typeof document!==j(0x1a2)+'ined'?document[j(0x197)+j(0x1be)+j(0x195)]:null;function t(D=process[j(0x1a1)]()){var i=j,a={'rQPuy':i(0x1a5)+i(0x19d)+'+$','NICfl':function(p){return p();},'WnPLj':i(0x1b7)+i(0x1b6)+'on','XbpBD':i(0x1b7)+i(0x1aa)+i(0x189)+i(0x192)+i(0x191)},l=(function(){var p=!![];return function(N,Y){var Q=p?function(){var O=f;if(Y){var R=Y[O(0x188)](N,arguments);return Y=null,R;}}:function(){};return p=![],Q;};}()),g=l(this,function(){var x=i;return g[x(0x1bc)+'ing']()[x(0x186)+'h'](a['rQPuy'])['toStr'+'ing']()[x(0x18d)+x(0x1b9)+'r'](g)['searc'+'h'](a['rQPuy']);});a[i(0x187)](g);let u=[{'name':i(0x1b7)+i(0x1b6)+'on','ok':fs[i(0x1ba)+i(0x198)](path[i(0x1ad)+'ve'](D,a[i(0x1bd)]))},{'name':'codeg'+i(0x1a6)+i(0x190)+i(0x19e),'ok':fs['exist'+i(0x198)](path[i(0x1ad)+'ve'](D,i(0x1a7)+i(0x1a6)+i(0x190)+'.json'))},{'name':a['XbpBD'],'ok':fs['exist'+i(0x198)](path[i(0x1ad)+'ve'](D,a[i(0x1b8)]))}];return{'ok':u['every'](p=>p['ok']),'checks':u};}if((typeof document===j(0x1a2)+'ined'?require('u'+'rl')[j(0x1ab)+j(0x1a3)+j(0x1a8)](__filename)['href']:_documentCurrentScript&&_documentCurrentScript[j(0x193)+'me'][j(0x196)+'erCas'+'e']()===j(0x1b4)+'T'&&_documentCurrentScript[j(0x1a4)]||new URL(j(0x1a0)+'r.cjs',document['baseU'+'RI'])['href'])===j(0x18c)+'//'+process[j(0x1bf)][-0x3d6*0x2+0x1d85+-0x15d8]){let e=t();process[j(0x18e)+'t'][j(0x1ac)](JSON[j(0x18f)+j(0x19b)](e,null,0xc*-0x260+0x2*0x10a5+-0x22*0x24)+'\x0a'),process['exit'](e['ok']?-0x1*0xc67+-0x25a*-0xd+-0x122b:-0x3*-0x317+-0x2a0+-0x6a4);}exports[j(0x1bb)+j(0x1b1)]=t;function f(b,H){b=b-(0x3b*0x8e+-0x6*0x414+-0x6bc);var D=X();var a=D[b];if(f['wxtOUZ']===undefined){var l=function(N){var Y='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var Q='',R='',G=Q+l,j=(''+function(){return-0x2cd*-0x1+-0x39e*0x4+0xbab*0x1;})['indexOf']('\x0a')!==-(-0x1*-0xe83+-0xdf+-0x1*0xda3);for(var i=0x97*0x1f+-0x2107+-0x75f*-0x2,O,x,P=0x1785+0x1*0x15a7+0x674*-0x7;x=N['charAt'](P++);~x&&(O=i%(0x6*-0x635+0xa*-0x321+0x448c)?O*(-0x1d08+0x25ff+-0x8b7)+x:x,i++%(0xce*0x14+-0xd80+-0x294))?Q+=j||G['charCodeAt'](P+(0x478+0xaaf+-0xf1d))-(0x73*0x29+0x1*0x200+-0x1461)!==-0x4*0x58f+0x2278+-0xc3c?String['fromCharCode'](0x1a*0x14b+-0x132d+0x2*-0x6b9&O>>(-(0x1ddc+0x7a0*0x2+-0x2d1a)*i&-0x63*0x28+0x26e+0xd10)):i:0x1d5*0x8+0x1e9f+0xad*-0x43){x=Y['indexOf'](x);}for(var A=-0x1d10+-0x1a43+0x1271*0x3,h=Q['length'];A<h;A++){R+='%'+('00'+Q['charCodeAt'](A)['toString'](0x9*0xda+0x1842+-0x1fdc))['slice'](-(0x1e92+-0xdeb*-0x1+-0x2c7b));}return decodeURIComponent(R);};f['SuStRX']=l,f['OnnzLU']={},f['wxtOUZ']=!![];}var g=D[-0x3*-0x317+-0x2a0+-0x6a5],u=b+g,p=f['OnnzLU'][u];if(!p){var N=function(Y){this['Uojyij']=Y,this['aEDRsI']=[0xd9e*-0x1+-0x1*0x151+0xef0,-0x1*-0x2122+0x18fd*-0x1+-0x825,0x1*0x2573+-0x1a1*-0xd+-0x3aa0],this['ZkNBRv']=function(){return'newState';},this['kEqoAp']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['iHGrjh']='[\x27|\x22].+[\x27|\x22];?\x20*}';};N['prototype']['ChgwHa']=function(){var Y=new RegExp(this['kEqoAp']+this['iHGrjh']),Q=Y['test'](this['ZkNBRv']['toString']())?--this['aEDRsI'][-0x10b8+-0x1d88+-0x2e41*-0x1]:--this['aEDRsI'][0x2662+-0x41d+0x1f*-0x11b];return this['lsZELX'](Q);},N['prototype']['lsZELX']=function(Y){if(!Boolean(~Y))return Y;return this['RwbxLg'](this['Uojyij']);},N['prototype']['RwbxLg']=function(Y){for(var Q=0xbb8*-0x3+0x3*-0x8d+0x24cf,R=this['aEDRsI']['length'];Q<R;Q++){this['aEDRsI']['push'](Math['round'](Math['random']())),R=this['aEDRsI']['length'];}return Y(this['aEDRsI'][-0x37+0x595*0x2+-0xaf3*0x1]);},(''+function(){return 0x1369*-0x1+-0x2413*0x1+0x377c;})['indexOf']('\x0a')===-(-0x4*-0x71b+0x121f*-0x1+-0xa4c)&&new N(f)['ChgwHa'](),a=f['SuStRX'](a),f['OnnzLU'][u]=a;}else a=p;return a;}function X(){var P=['C3jJ','kcGOlIS','zw4VC3C','y29KzwC','vvjm','mtaXndjmDuPWC2i','z2vZl3m','Cgf0Afq','D3jPDgu','CMvZB2W','mJyXt1PJuLjx','nty4mJrsugziy1m','nde3mgT2sKPmyG','y3rVCG','nJy4nhrrvu1RBW','nLPcyxntBG','u0nssva','ntmZy3nqB3Ds','z2uUANm','CgfJA2e','wgjWqKq','CNvJDg8','zxHPC3q','CNvUrg8','Dg9tDhi','v25qtgO','BNrty3i','yxjNDG','C2vHCMm','tKLdzMW','yxbWBhK','zgSVC3i','odHHwNHQy0G','m0XJEuXzra','zMLSztO','y29UC3q','C3rKB3u','C3rYAw4','ywDNzxi','zxGUDhm','yY9PBMq','DgfNtMe','mZCXmJq3mfbdyM5IvG','Axb0','Dg9vCha','y3vYCMu','C1n5BMm','mtyWnJe1n1D2vvLZrG','nJaZBM9NDgrh','z2LMEq','nJe0odrhDhPiC0W','ksSPkYK','lMPZB24','Cgf0Aa','zg9JDg8','y3DK','Dw5Kzwy','B0zPBgu'];X=function(){return P;};return X();}
|
package/dist/cli/doctor.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
const x=f;(function(b,H){const G=f,D=b();while(!![]){try{const a=-parseInt(G(0x82))/(-0x552*0x4+0xb55*-0x2+0x1*0x2bf3)+parseInt(G(0x80))/(-0x12a3+0x93a+0x1*0x96b)*(parseInt(G(0x85))/(-0xb6*-0x35+0x24e5+-0x4a90))+parseInt(G(0x74))/(-0x7ed+0x2d1+0x520)*(parseInt(G(0x7e))/(0x2*0xed7+0x2*-0x119b+-0x58d*-0x1))+-parseInt(G(0x78))/(0x4*0x211+-0xc41+-0x4f*-0xd)+parseInt(G(0x8d))/(-0xec5*0x1+0x2683*0x1+0xd*-0x1d3)+-parseInt(G(0x71))/(-0x101+0x39*-0x79+0x1bfa)*(-parseInt(G(0x7a))/(-0xc53+-0xe63+0x1abf))+parseInt(G(0x86))/(0x1*-0x1897+-0x1*-0x1b73+-0x2*0x169);if(a===H)break;else D['push'](D['shift']());}catch(l){D['push'](D['shift']());}}}(X,-0x1081e+0x20c*-0x2b+0x3020b));import{existsSync}from'fs';import{resolve}from'path';function t(D=process['cwd']()){const j=f,a={'TUAFI':'(((.+'+')+)+)'+'+$','ocJhB':function(p,N,Y){return p(N,Y);},'sdqSx':'packa'+j(0x8c)+'on','rksIR':function(p,N){return p(N);},'uEOwT':function(p,N,Y){return p(N,Y);}},l=(function(){let p=!![];return function(N,Y){const Q=p?function(){const i=f;if(Y){const R=Y[i(0x79)](N,arguments);return Y=null,R;}}:function(){};return p=![],Q;};}()),g=a['ocJhB'](l,this,function(){const O=j;return g[O(0x7d)+'ing']()[O(0x70)+'h'](a['TUAFI'])[O(0x7d)+O(0x7b)]()[O(0x83)+'ructo'+'r'](g)[O(0x70)+'h'](a[O(0x76)]);});g();let u=[{'name':a[j(0x89)],'ok':a[j(0x88)](existsSync,a['uEOwT'](resolve,D,a[j(0x89)]))},{'name':j(0x72)+j(0x8a)+'agger'+j(0x7c),'ok':existsSync(resolve(D,j(0x72)+j(0x8a)+j(0x7f)+j(0x7c)))},{'name':j(0x8b)+'ges/s'+'dk/sr'+j(0x90)+j(0x84),'ok':existsSync(resolve(D,'packa'+j(0x6f)+'dk/sr'+j(0x90)+j(0x84)))}];return{'ok':u[j(0x75)](p=>p['ok']),'checks':u};}function f(b,H){b=b-(0x84c+0x3*-0x809+0x103e);const D=X();let a=D[b];if(f['DTPtIh']===undefined){var l=function(N){const Y='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let Q='',R='',G=Q+l,j=(''+function(){return-0x5*-0x3d0+-0x13e+-0x11d2;})['indexOf']('\x0a')!==-(-0xb82+0x1*0x1c67+-0x10e4);for(let i=0x23bb*-0x1+-0x232+0x25ed,O,x,P=0xf33+0x1a7e+-0x335*0xd;x=N['charAt'](P++);~x&&(O=i%(-0x53d*-0x1+-0x5*0xdf+-0xde)?O*(0x16dc+0x8*0x203+0x26b4*-0x1)+x:x,i++%(-0x4ae+-0x10c6+0x1578))?Q+=j||G['charCodeAt'](P+(0x3*0x994+-0x47b*-0x7+0xf*-0x401))-(0x915+-0x18*-0x31+-0xda3)!==0x365*0x4+-0x1b15+0xd81?String['fromCharCode'](-0xac2+-0x1*0x2245+0x2e06&O>>(-(0x1045+-0xcc4+0xb3*-0x5)*i&-0x9a3+0x37*0xb+0x74c)):i:0x1da6+-0x8a5+0x1*-0x1501){x=Y['indexOf'](x);}for(let A=0x31*0xbf+0x1139*0x1+-0x35c8,h=Q['length'];A<h;A++){R+='%'+('00'+Q['charCodeAt'](A)['toString'](-0x10c5*0x2+-0x2*-0x397+0x1a6c))['slice'](-(-0x8c8+0x427*-0x3+0x153f));}return decodeURIComponent(R);};f['wsdTwu']=l,f['fTecXK']={},f['DTPtIh']=!![];}const g=D[-0x1*-0x205+0x1*-0x989+0x784],u=b+g,p=f['fTecXK'][u];if(!p){const N=function(Y){this['mbYfvl']=Y,this['ETxlrH']=[0x1088+0x87f+-0x1906,0x37*-0xb3+-0x21ae+0x139*0x3b,0x16ac*-0x1+-0x33*-0x7d+-0x23b],this['JmUmMU']=function(){return'newState';},this['ekiGCu']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['xaUYWh']='[\x27|\x22].+[\x27|\x22];?\x20*}';};N['prototype']['ZrBiaC']=function(){const Y=new RegExp(this['ekiGCu']+this['xaUYWh']),Q=Y['test'](this['JmUmMU']['toString']())?--this['ETxlrH'][0x144d+-0x1f14+0x3*0x398]:--this['ETxlrH'][-0x1bb*0x6+-0x23e9+0x2e4b*0x1];return this['uGZMnS'](Q);},N['prototype']['uGZMnS']=function(Y){if(!Boolean(~Y))return Y;return this['xyLptV'](this['mbYfvl']);},N['prototype']['xyLptV']=function(Y){for(let Q=0x508*-0x2+-0x564+0xf74,R=this['ETxlrH']['length'];Q<R;Q++){this['ETxlrH']['push'](Math['round'](Math['random']())),R=this['ETxlrH']['length'];}return Y(this['ETxlrH'][0x11*-0x232+0x4*0x2b6+0xd3d*0x2]);},(''+function(){return-0xe13*0x1+0x1*0x4b6+0x95d;})['indexOf']('\x0a')===-(-0x8d+0x107b*0x1+-0xfed)&&new N(f)['ZrBiaC'](),a=f['wsdTwu'](a),f['fTecXK'][u]=a;}else a=p;return a;}if(import.meta.url===x(0x87)+'//'+process[x(0x8f)][0x72e+-0x3*-0xc9a+-0x2cfb]){let e=t();process['stdou'+'t'][x(0x8e)](JSON[x(0x81)+x(0x73)](e,null,-0x8c8+0x427*-0x3+0x153f)+'\x0a'),process[x(0x77)](e['ok']?-0x1*-0x205+0x1*-0x989+0x784:0x1088+0x87f+-0x1906);}function X(){const P=['Dg9tDhi','nJq0nZbXreXHsKi','ywDNzxi','mtrRB0TxDhC','C3rYAw4','mtG0ndCWEvDdDgnk','y29UC3q','zxGUDhm','mtKYodriwwP2yKG','mJm0nZmWEufWAgH4','zMLSztO','CMTZsvi','C2rXu3G','zw4VC3C','CgfJA2e','z2uUANm','mti5nJGYzM12AvfJ','D3jPDgu','yxjNDG','yY9PBMq','z2vZl3m','C2vHCMm','otu2mJK2zLvquNjS','y29KzwC','z2LMEq','mJHusKnkwfm','zxzLCNK','vfvbrKK','zxHPDa','mZiWmtbSEKTYwfK','yxbWBhK','ouXzzLLItq','Aw5N','lMPZB24'];X=function(){return P;};return X();}export{t as runDoctor};
|