@ninedeploy/sdk 0.10.5 → 0.16.0

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.
Files changed (129) hide show
  1. package/LICENSE +21 -21
  2. package/dist/apiPath.d.ts +5 -0
  3. package/dist/apiPath.d.ts.map +1 -0
  4. package/dist/apiPath.js +18 -0
  5. package/dist/apiPath.js.map +1 -0
  6. package/dist/client.d.ts +29 -0
  7. package/dist/client.d.ts.map +1 -0
  8. package/dist/client.js +51 -0
  9. package/dist/client.js.map +1 -0
  10. package/dist/databaseImport.d.ts +138 -0
  11. package/dist/databaseImport.d.ts.map +1 -0
  12. package/dist/databaseImport.js +126 -0
  13. package/dist/databaseImport.js.map +1 -0
  14. package/dist/errors.js +1 -1
  15. package/dist/errors.js.map +1 -1
  16. package/dist/index.d.ts +12 -1973
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +9 -641
  19. package/dist/index.js.map +1 -1
  20. package/dist/manifest.d.ts.map +1 -1
  21. package/dist/manifest.js +25 -21
  22. package/dist/manifest.js.map +1 -1
  23. package/dist/resources/auth.d.ts +282 -0
  24. package/dist/resources/auth.d.ts.map +1 -0
  25. package/dist/resources/auth.js +111 -0
  26. package/dist/resources/auth.js.map +1 -0
  27. package/dist/resources/databases.d.ts +178 -0
  28. package/dist/resources/databases.d.ts.map +1 -0
  29. package/dist/resources/databases.js +82 -0
  30. package/dist/resources/databases.js.map +1 -0
  31. package/dist/resources/deploys.d.ts +125 -0
  32. package/dist/resources/deploys.d.ts.map +1 -0
  33. package/dist/resources/deploys.js +46 -0
  34. package/dist/resources/deploys.js.map +1 -0
  35. package/dist/resources/domains.d.ts +101 -0
  36. package/dist/resources/domains.d.ts.map +1 -0
  37. package/dist/resources/domains.js +28 -0
  38. package/dist/resources/domains.js.map +1 -0
  39. package/dist/resources/env.d.ts +55 -0
  40. package/dist/resources/env.d.ts.map +1 -0
  41. package/dist/resources/env.js +33 -0
  42. package/dist/resources/env.js.map +1 -0
  43. package/dist/resources/logs.d.ts +27 -0
  44. package/dist/resources/logs.d.ts.map +1 -0
  45. package/dist/resources/logs.js +18 -0
  46. package/dist/resources/logs.js.map +1 -0
  47. package/dist/resources/network.d.ts +134 -0
  48. package/dist/resources/network.d.ts.map +1 -0
  49. package/dist/resources/network.js +33 -0
  50. package/dist/resources/network.js.map +1 -0
  51. package/dist/resources/plugins.d.ts +42 -0
  52. package/dist/resources/plugins.d.ts.map +1 -0
  53. package/dist/resources/plugins.js +22 -0
  54. package/dist/resources/plugins.js.map +1 -0
  55. package/dist/resources/servers.d.ts +130 -0
  56. package/dist/resources/servers.d.ts.map +1 -0
  57. package/dist/resources/servers.js +37 -0
  58. package/dist/resources/servers.js.map +1 -0
  59. package/dist/resources/services.d.ts +185 -0
  60. package/dist/resources/services.d.ts.map +1 -0
  61. package/dist/resources/services.js +83 -0
  62. package/dist/resources/services.js.map +1 -0
  63. package/dist/resources/settings.d.ts +312 -0
  64. package/dist/resources/settings.d.ts.map +1 -0
  65. package/dist/resources/settings.js +85 -0
  66. package/dist/resources/settings.js.map +1 -0
  67. package/dist/resources/sources.d.ts +87 -0
  68. package/dist/resources/sources.d.ts.map +1 -0
  69. package/dist/resources/sources.js +39 -0
  70. package/dist/resources/sources.js.map +1 -0
  71. package/dist/resources/system.d.ts +240 -0
  72. package/dist/resources/system.d.ts.map +1 -0
  73. package/dist/resources/system.js +86 -0
  74. package/dist/resources/system.js.map +1 -0
  75. package/dist/resources/templates.d.ts +36 -0
  76. package/dist/resources/templates.d.ts.map +1 -0
  77. package/dist/resources/templates.js +17 -0
  78. package/dist/resources/templates.js.map +1 -0
  79. package/dist/resources/terminals.d.ts +60 -0
  80. package/dist/resources/terminals.d.ts.map +1 -0
  81. package/dist/resources/terminals.js +35 -0
  82. package/dist/resources/terminals.js.map +1 -0
  83. package/dist/resources/traefik.d.ts +84 -0
  84. package/dist/resources/traefik.d.ts.map +1 -0
  85. package/dist/resources/traefik.js +35 -0
  86. package/dist/resources/traefik.js.map +1 -0
  87. package/dist/resources/volumes.d.ts +114 -0
  88. package/dist/resources/volumes.d.ts.map +1 -0
  89. package/dist/resources/volumes.js +47 -0
  90. package/dist/resources/volumes.js.map +1 -0
  91. package/dist/terminal.d.ts +98 -0
  92. package/dist/terminal.d.ts.map +1 -0
  93. package/dist/terminal.js +180 -0
  94. package/dist/terminal.js.map +1 -0
  95. package/dist/transport.d.ts +61 -0
  96. package/dist/transport.d.ts.map +1 -0
  97. package/dist/transport.js +90 -0
  98. package/dist/transport.js.map +1 -0
  99. package/dist/types.d.ts +539 -0
  100. package/dist/types.d.ts.map +1 -0
  101. package/dist/types.js +5 -0
  102. package/dist/types.js.map +1 -0
  103. package/package.json +5 -4
  104. package/src/apiPath.ts +23 -0
  105. package/src/client.ts +70 -0
  106. package/src/databaseImport.ts +174 -0
  107. package/src/errors.ts +27 -0
  108. package/src/index.ts +118 -0
  109. package/src/manifest.ts +414 -0
  110. package/src/resources/auth.ts +357 -0
  111. package/src/resources/databases.ts +227 -0
  112. package/src/resources/deploys.ts +161 -0
  113. package/src/resources/domains.ts +142 -0
  114. package/src/resources/env.ts +84 -0
  115. package/src/resources/logs.ts +48 -0
  116. package/src/resources/network.ts +126 -0
  117. package/src/resources/plugins.ts +52 -0
  118. package/src/resources/servers.ts +141 -0
  119. package/src/resources/services.ts +250 -0
  120. package/src/resources/settings.ts +275 -0
  121. package/src/resources/sources.ts +131 -0
  122. package/src/resources/system.ts +281 -0
  123. package/src/resources/templates.ts +55 -0
  124. package/src/resources/terminals.ts +112 -0
  125. package/src/resources/traefik.ts +116 -0
  126. package/src/resources/volumes.ts +138 -0
  127. package/src/terminal.ts +254 -0
  128. package/src/transport.ts +154 -0
  129. package/src/types.ts +588 -0
@@ -0,0 +1,101 @@
1
+ import type { CreateDomainInput, Domain, DomainPatch, DomainEntry } from '@ninedeploy/schemas';
2
+ import type { CreatedDomain, DomainVerifyResult, StartDomainTransferResult, DomainTransferPreview, AcceptDomainTransferInput, AcceptDomainTransferResult } from '../types.js';
3
+ import type { Transport } from '../transport.js';
4
+ export interface DomainsApi {
5
+ domains: {
6
+ list: (serviceId: number) => Promise<Domain[]>;
7
+ /** Add a domain. A non-operator's hostname outside the instance zone comes back `pending` with a TXT `verification` challenge. */
8
+ create: (serviceId: number, input: CreateDomainInput) => Promise<CreatedDomain>;
9
+ /**
10
+ * r332: prove ownership of a `pending` domain and bring it live. Checks
11
+ * the TXT challenge `create` returned; idempotent (an `active` domain
12
+ * answers `verified: true`) and safe to poll while DNS propagates.
13
+ */
14
+ verify: (serviceId: number, domainId: number) => Promise<DomainVerifyResult>;
15
+ remove: (serviceId: number, domainId: number) => Promise<void>;
16
+ /**
17
+ * DNS status for a domain: does the hostname resolve to the addresses
18
+ * this panel expects? Advisory — routing is governed by ownership.
19
+ */
20
+ dnsCheck: (serviceId: number, domainId: number) => Promise<{
21
+ hostname: string;
22
+ status: 'ok' | 'mismatch' | 'unresolved';
23
+ addresses: {
24
+ a: string[];
25
+ aaaa: string[];
26
+ };
27
+ expected: string[];
28
+ }>;
29
+ /** Update routing extras: ssl toggle, www→apex redirect, custom headers, basicAuth, ipAllowlist, rateLimit. */
30
+ update: (serviceId: number, domainId: number, input: DomainPatch) => Promise<Domain>;
31
+ all: () => Promise<DomainEntry[]>;
32
+ setSsl: (domainId: number, ssl: boolean) => Promise<{
33
+ id: number;
34
+ ssl: boolean;
35
+ }>;
36
+ /** Toggle sticky-session routing for the service (G-28). */
37
+ setStickySession: (serviceId: number, enabled: boolean) => Promise<{
38
+ id: number;
39
+ enabled: boolean;
40
+ active: boolean;
41
+ }>;
42
+ /**
43
+ * Start a domain transfer (G-29). The source user (admin
44
+ * on the source service) names the target email; the
45
+ * server returns a one-time `acceptUrl` to forward. The
46
+ * target user accepts via `acceptDomainTransfer(token,
47
+ * { targetServiceId })`. The transfer expires after 7
48
+ * days; cancelling is one call.
49
+ */
50
+ transfer: (domainId: number, input: {
51
+ targetEmail: string;
52
+ }) => Promise<StartDomainTransferResult>;
53
+ /**
54
+ * Preview a transfer by token. Does NOT require auth
55
+ * (the token is the secret) — the panel uses this to
56
+ * render the accept page to a logged-out visitor.
57
+ */
58
+ previewTransfer: (token: string) => Promise<DomainTransferPreview>;
59
+ /**
60
+ * Accept a transfer. The caller must be authenticated
61
+ * and the caller's email must equal the transfer's
62
+ * target email; the panel / CLI surfaces the preview
63
+ * first so the user knows what they're signing in to.
64
+ */
65
+ acceptTransfer: (token: string, input: AcceptDomainTransferInput) => Promise<AcceptDomainTransferResult>;
66
+ /**
67
+ * Cancel a pending transfer. Only the source user
68
+ * (or an instance operator) can cancel.
69
+ */
70
+ cancelTransfer: (token: string) => Promise<{
71
+ transferId: number;
72
+ status: 'cancelled';
73
+ }>;
74
+ };
75
+ domainPresets: {
76
+ /** Every `IDomainProvider` the running kernel has registered. */
77
+ list: () => Promise<{
78
+ providers: string[];
79
+ }>;
80
+ /**
81
+ * Manually create the DNS record for `hostname` via the operator's
82
+ * active provider. `content` is optional: when omitted the route
83
+ * falls back to the panel's `dns_records_content` setting, then to
84
+ * `detectPublicIp()`. Returns the upstream recordId so the caller
85
+ * can correlate.
86
+ */
87
+ apply: (input: {
88
+ hostname: string;
89
+ content?: string;
90
+ }) => Promise<{
91
+ hostname: string;
92
+ provider: string;
93
+ zone: string;
94
+ recordId: string;
95
+ type: 'A' | 'CNAME';
96
+ content: string;
97
+ }>;
98
+ };
99
+ }
100
+ export declare function domainsApi(t: Transport): DomainsApi;
101
+ //# sourceMappingURL=domains.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../src/resources/domains.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export function domainsApi(t) {
2
+ const { get, send, request } = t;
3
+ return {
4
+ domains: {
5
+ list: (serviceId) => get(`/v1/services/${serviceId}/domains`),
6
+ create: (serviceId, input) => send('POST', `/v1/services/${serviceId}/domains`, input),
7
+ verify: (serviceId, domainId) => send('POST', `/v1/services/${serviceId}/domains/${domainId}/verify`, {}),
8
+ dnsCheck: (serviceId, domainId) => get(`/v1/services/${serviceId}/domains/${domainId}/dns`),
9
+ update: (serviceId, domainId, input) => send('PATCH', `/v1/services/${serviceId}/domains/${domainId}`, input),
10
+ remove: async (serviceId, domainId) => {
11
+ await request(`/v1/services/${serviceId}/domains/${domainId}`, { method: 'DELETE' });
12
+ },
13
+ all: () => get('/v1/domains'),
14
+ setSsl: (domainId, ssl) => send('PATCH', `/v1/domains/${domainId}`, { ssl }),
15
+ /** Toggle sticky-session routing (G-28) — sits under `/domains` for legacy compatibility. */
16
+ setStickySession: (serviceId, enabled) => send('POST', `/v1/services/${serviceId}/sticky-session`, { enabled }),
17
+ transfer: (domainId, input) => send('POST', `/v1/domains/${domainId}/transfer`, input),
18
+ previewTransfer: (token) => get(`/v1/domain-transfers/${token}`),
19
+ acceptTransfer: (token, input) => send('POST', `/v1/domain-transfers/${token}/accept`, input),
20
+ cancelTransfer: (token) => send('POST', `/v1/domain-transfers/${token}/cancel`, {}),
21
+ },
22
+ domainPresets: {
23
+ list: () => get('/v1/domain-presets'),
24
+ apply: (input) => send('POST', '/v1/domain-presets/apply', input),
25
+ },
26
+ };
27
+ }
28
+ //# sourceMappingURL=domains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/resources/domains.ts"],"names":[],"mappings":"AA4FA,MAAM,UAAU,UAAU,CAAC,CAAY;IACrC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO;QACL,OAAO,EAAE;YACP,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAW,gBAAgB,SAAS,UAAU,CAAC;YACvE,MAAM,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAgB,MAAM,EAAE,gBAAgB,SAAS,UAAU,EAAE,KAAK,CAAC;YACrG,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAC9B,IAAI,CAAqB,MAAM,EAAE,gBAAgB,SAAS,YAAY,QAAQ,SAAS,EAAE,EAAE,CAAC;YAC9F,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAChC,GAAG,CAKA,gBAAgB,SAAS,YAAY,QAAQ,MAAM,CAAC;YACzD,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CACrC,IAAI,CAAS,OAAO,EAAE,gBAAgB,SAAS,YAAY,QAAQ,EAAE,EAAE,KAAK,CAAC;YAC/E,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;gBACpC,MAAM,OAAO,CAAC,gBAAgB,SAAS,YAAY,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAgB,aAAa,CAAC;YAC5C,MAAM,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAA+B,OAAO,EAAE,eAAe,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;YAC1G,6FAA6F;YAC7F,gBAAgB,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,CACvC,IAAI,CACF,MAAM,EACN,gBAAgB,SAAS,iBAAiB,EAC1C,EAAE,OAAO,EAAE,CACZ;YACH,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAC5B,IAAI,CAA4B,MAAM,EAAE,eAAe,QAAQ,WAAW,EAAE,KAAK,CAAC;YACpF,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAwB,wBAAwB,KAAK,EAAE,CAAC;YACvF,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAC/B,IAAI,CAA6B,MAAM,EAAE,wBAAwB,KAAK,SAAS,EAAE,KAAK,CAAC;YACzF,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CACxB,IAAI,CAA8C,MAAM,EAAE,wBAAwB,KAAK,SAAS,EAAE,EAAE,CAAC;SACxG;QACD,aAAa,EAAE;YACb,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAA0B,oBAAoB,CAAC;YAC9D,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAOnB,MAAM,EAAE,0BAA0B,EAAE,KAAK,CAAC;SAC9C;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,55 @@
1
+ import type { EnvVar, UpsertEnvVarInput } from '@ninedeploy/schemas';
2
+ import type { Transport } from '../transport.js';
3
+ export interface EnvApi {
4
+ env: {
5
+ list: (serviceId: number) => Promise<EnvVar[]>;
6
+ create: (serviceId: number, input: UpsertEnvVarInput) => Promise<EnvVar>;
7
+ update: (serviceId: number, varId: number, input: UpsertEnvVarInput) => Promise<EnvVar>;
8
+ remove: (serviceId: number, varId: number) => Promise<void>;
9
+ /** Bulk import from a .env-formatted string. Returns imported/skipped counts. */
10
+ import: (serviceId: number, content: string) => Promise<{
11
+ imported: number;
12
+ skipped: number;
13
+ errors: Array<{
14
+ line: number;
15
+ message: string;
16
+ }>;
17
+ }>;
18
+ /** Export non-secret env vars as a .env-formatted string (admin floor). */
19
+ export: (serviceId: number) => Promise<{
20
+ content: string;
21
+ count: number;
22
+ }>;
23
+ /** Cross-scope key search: where a given env key is defined. */
24
+ search: (q: string) => Promise<{
25
+ results: Array<{
26
+ key: string;
27
+ isSecret: boolean;
28
+ scope: string;
29
+ serviceId: number | null;
30
+ serviceName: string | null;
31
+ }>;
32
+ }>;
33
+ };
34
+ projectEnv: {
35
+ /** Shared env vars applied to every service in a project (service env wins). */
36
+ list: (projectId: number) => Promise<EnvVar[]>;
37
+ create: (projectId: number, input: UpsertEnvVarInput) => Promise<EnvVar>;
38
+ update: (projectId: number, varId: number, input: UpsertEnvVarInput) => Promise<EnvVar>;
39
+ remove: (projectId: number, varId: number) => Promise<void>;
40
+ };
41
+ /**
42
+ * 0.12 preview-only env: values a service hands ONLY to its PR previews
43
+ * (they override the parent's non-secret values there; production never
44
+ * sees them). Same floors as `env`: viewer reads, member writes. A panel
45
+ * older than 0.12 answers 404.
46
+ */
47
+ previewEnv: {
48
+ list: (serviceId: number) => Promise<EnvVar[]>;
49
+ create: (serviceId: number, input: UpsertEnvVarInput) => Promise<EnvVar>;
50
+ update: (serviceId: number, varId: number, input: UpsertEnvVarInput) => Promise<EnvVar>;
51
+ remove: (serviceId: number, varId: number) => Promise<void>;
52
+ };
53
+ }
54
+ export declare function envApi(t: Transport): EnvApi;
55
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/resources/env.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,MAAM,EACN,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE;QACH,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/C,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QACzE,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QACxF,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5D,iFAAiF;QACjF,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAC,CAAC;QACjJ,2EAA2E;QAC3E,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC3E,gEAAgE;QAChE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,OAAO,EAAE,KAAK,CAAC;gBAAE,GAAG,EAAE,MAAM,CAAC;gBAAC,QAAQ,EAAE,OAAO,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAC;gBAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;gBAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;aAAE,CAAC,CAAA;SAAE,CAAC,CAAC;KAC7J,CAAC;IACF,UAAU,EAAE;QACV,gFAAgF;QAChF,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/C,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QACzE,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QACxF,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7D,CAAC;IACF;;;;;OAKG;IACH,UAAU,EAAE;QACV,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/C,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QACzE,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QACxF,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7D,CAAC;CACH;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAwC3C"}
@@ -0,0 +1,33 @@
1
+ export function envApi(t) {
2
+ const { get, send, request } = t;
3
+ return {
4
+ env: {
5
+ list: (serviceId) => get(`/v1/services/${serviceId}/env`),
6
+ create: (serviceId, input) => send('POST', `/v1/services/${serviceId}/env`, input),
7
+ update: (serviceId, varId, input) => send('PATCH', `/v1/services/${serviceId}/env/${varId}`, input),
8
+ remove: async (serviceId, varId) => {
9
+ await request(`/v1/services/${serviceId}/env/${varId}`, { method: 'DELETE' });
10
+ },
11
+ import: (serviceId, content) => send('POST', `/v1/services/${serviceId}/env/import`, { content }),
12
+ export: (serviceId) => get(`/v1/services/${serviceId}/env/export`),
13
+ search: (q) => get(`/v1/env/search?q=${encodeURIComponent(q)}`),
14
+ },
15
+ projectEnv: {
16
+ list: (projectId) => get(`/v1/projects/${projectId}/env`),
17
+ create: (projectId, input) => send('POST', `/v1/projects/${projectId}/env`, input),
18
+ update: (projectId, varId, input) => send('PATCH', `/v1/projects/${projectId}/env/${varId}`, input),
19
+ remove: async (projectId, varId) => {
20
+ await request(`/v1/projects/${projectId}/env/${varId}`, { method: 'DELETE' });
21
+ },
22
+ },
23
+ previewEnv: {
24
+ list: (serviceId) => get(`/v1/services/${serviceId}/env/preview`),
25
+ create: (serviceId, input) => send('POST', `/v1/services/${serviceId}/env/preview`, input),
26
+ update: (serviceId, varId, input) => send('PATCH', `/v1/services/${serviceId}/env/preview/${varId}`, input),
27
+ remove: async (serviceId, varId) => {
28
+ await request(`/v1/services/${serviceId}/env/preview/${varId}`, { method: 'DELETE' });
29
+ },
30
+ },
31
+ };
32
+ }
33
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/resources/env.ts"],"names":[],"mappings":"AA2CA,MAAM,UAAU,MAAM,CAAC,CAAY;IACjC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO;QACL,GAAG,EAAE;YACH,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAW,gBAAgB,SAAS,MAAM,CAAC;YACnE,MAAM,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAS,MAAM,EAAE,gBAAgB,SAAS,MAAM,EAAE,KAAK,CAAC;YAC1F,MAAM,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAS,OAAO,EAAE,gBAAgB,SAAS,QAAQ,KAAK,EAAE,EAAE,KAAK,CAAC;YAC3G,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;gBACjC,MAAM,OAAO,CAAC,gBAAgB,SAAS,QAAQ,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAChF,CAAC;YACD,MAAM,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,CAC7B,IAAI,CACF,MAAM,EACN,gBAAgB,SAAS,aAAa,EACtC,EAAE,OAAO,EAAE,CACZ;YACH,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CACpB,GAAG,CAAqC,gBAAgB,SAAS,aAAa,CAAC;YACjF,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CACZ,GAAG,CACD,oBAAoB,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAC5C;SACJ;QACD,UAAU,EAAE;YACV,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAW,gBAAgB,SAAS,MAAM,CAAC;YACnE,MAAM,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAS,MAAM,EAAE,gBAAgB,SAAS,MAAM,EAAE,KAAK,CAAC;YAC1F,MAAM,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAS,OAAO,EAAE,gBAAgB,SAAS,QAAQ,KAAK,EAAE,EAAE,KAAK,CAAC;YAC3G,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;gBACjC,MAAM,OAAO,CAAC,gBAAgB,SAAS,QAAQ,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAChF,CAAC;SACF;QACD,UAAU,EAAE;YACV,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAW,gBAAgB,SAAS,cAAc,CAAC;YAC3E,MAAM,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAS,MAAM,EAAE,gBAAgB,SAAS,cAAc,EAAE,KAAK,CAAC;YAClG,MAAM,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAS,OAAO,EAAE,gBAAgB,SAAS,gBAAgB,KAAK,EAAE,EAAE,KAAK,CAAC;YACnH,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;gBACjC,MAAM,OAAO,CAAC,gBAAgB,SAAS,gBAAgB,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YACxF,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { LogDrain, LogDrainCreateInput, LogDrainUpdateInput, LogDrainTestResult } from '@ninedeploy/schemas';
2
+ import type { LogSearchInput, LogSearchResult } from '../types.js';
3
+ import type { Transport } from '../transport.js';
4
+ export interface LogsApi {
5
+ logDrains: {
6
+ list: (query?: {
7
+ serviceId?: number;
8
+ }) => Promise<LogDrain[]>;
9
+ get: (id: number) => Promise<LogDrain>;
10
+ create: (input: LogDrainCreateInput) => Promise<LogDrain>;
11
+ update: (id: number, input: LogDrainUpdateInput) => Promise<LogDrain>;
12
+ remove: (id: number) => Promise<{
13
+ ok: boolean;
14
+ }>;
15
+ test: (id: number) => Promise<LogDrainTestResult>;
16
+ /**
17
+ * Search the configured Loki drain for `query` over
18
+ * the last `sinceMinutes` (default 15). The route
19
+ * round-trips to the drain's `url` so the upstream
20
+ * does the heavy lifting; this is the same shape
21
+ * the operator sees in the Loki Grafana panel.
22
+ */
23
+ search: (input: LogSearchInput) => Promise<LogSearchResult>;
24
+ };
25
+ }
26
+ export declare function logsApi(t: Transport): LogsApi;
27
+ //# sourceMappingURL=logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/resources/logs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,QAAQ,EACR,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE;QACT,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9D,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,EAAE,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QACjD,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAClD;;;;;;WAMG;QACH,MAAM,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;KAC7D,CAAC;CACH;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,CAgB7C"}
@@ -0,0 +1,18 @@
1
+ export function logsApi(t) {
2
+ const { get, send } = t;
3
+ return {
4
+ logDrains: {
5
+ list: (query) => {
6
+ const qs = query?.serviceId !== undefined ? `?serviceId=${encodeURIComponent(String(query.serviceId))}` : '';
7
+ return get(`/v1/log-drains${qs}`);
8
+ },
9
+ get: (id) => get(`/v1/log-drains/${id}`),
10
+ create: (input) => send('POST', '/v1/log-drains', input),
11
+ update: (id, input) => send('PATCH', `/v1/log-drains/${id}`, input),
12
+ remove: (id) => send('DELETE', `/v1/log-drains/${id}`),
13
+ test: (id) => send('POST', `/v1/log-drains/${id}/test`),
14
+ search: (input) => send('POST', '/v1/log-drains/search', input),
15
+ },
16
+ };
17
+ }
18
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/resources/logs.ts"],"names":[],"mappings":"AA+BA,MAAM,UAAU,OAAO,CAAC,CAAY;IAClC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACxB,OAAO;QACL,SAAS,EAAE;YACT,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;gBACd,MAAM,EAAE,GAAG,KAAK,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7G,OAAO,GAAG,CAAa,iBAAiB,EAAE,EAAE,CAAC,CAAC;YAChD,CAAC;YACD,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAW,kBAAkB,EAAE,EAAE,CAAC;YAClD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAW,MAAM,EAAE,gBAAgB,EAAE,KAAK,CAAC;YAClE,MAAM,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAW,OAAO,EAAE,kBAAkB,EAAE,EAAE,EAAE,KAAK,CAAC;YAC7E,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAkB,QAAQ,EAAE,kBAAkB,EAAE,EAAE,CAAC;YACvE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAqB,MAAM,EAAE,kBAAkB,EAAE,OAAO,CAAC;YAC3E,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAkB,MAAM,EAAE,uBAAuB,EAAE,KAAK,CAAC;SACjF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,134 @@
1
+ import type { CreateTunnelInput, TunnelEntry } from '@ninedeploy/schemas';
2
+ import type { Transport } from '../transport.js';
3
+ export interface NetworkApi {
4
+ networks: {
5
+ list: () => Promise<{
6
+ networks: Array<{
7
+ name: string;
8
+ driver: string;
9
+ members: string[];
10
+ /** True when the network is reserved by NineDeploy (cannot be removed). */
11
+ isManaged?: boolean;
12
+ }>;
13
+ remote: number | null;
14
+ }>;
15
+ create: (input: {
16
+ name: string;
17
+ driver?: 'bridge' | 'overlay';
18
+ serverId?: number | null;
19
+ }) => Promise<{
20
+ ok: boolean;
21
+ name: string;
22
+ }>;
23
+ remove: (name: string, serverId?: number) => Promise<{
24
+ ok: boolean;
25
+ }>;
26
+ attach: (input: {
27
+ network: string;
28
+ container: string;
29
+ serverId?: number | null;
30
+ }) => Promise<{
31
+ ok: boolean;
32
+ }>;
33
+ detach: (input: {
34
+ network: string;
35
+ container: string;
36
+ serverId?: number | null;
37
+ }) => Promise<{
38
+ ok: boolean;
39
+ }>;
40
+ /**
41
+ * r557: container names attached to one network (operator-only). The
42
+ * server answers `{ members: [] }` when docker cannot inspect it.
43
+ */
44
+ members: (name: string) => Promise<{
45
+ members: string[];
46
+ }>;
47
+ };
48
+ tunnels: {
49
+ list: () => Promise<TunnelEntry[]>;
50
+ create: (input: CreateTunnelInput) => Promise<TunnelEntry>;
51
+ remove: (id: number) => Promise<void>;
52
+ };
53
+ firewall: {
54
+ status: () => Promise<{
55
+ installed: boolean;
56
+ active: boolean;
57
+ supported: boolean;
58
+ rules: Array<{
59
+ id: number;
60
+ to: string;
61
+ action: string;
62
+ from: string;
63
+ comment?: string;
64
+ }>;
65
+ defaultIncoming: string;
66
+ defaultOutgoing: string;
67
+ }>;
68
+ toggle: (enabled: boolean) => Promise<{
69
+ ok: boolean;
70
+ status: any;
71
+ }>;
72
+ addRule: (input: {
73
+ port: number | string;
74
+ proto?: 'tcp' | 'udp' | 'any';
75
+ action?: 'allow' | 'deny' | 'limit';
76
+ from?: string;
77
+ comment?: string;
78
+ }) => Promise<{
79
+ ok: boolean;
80
+ status: any;
81
+ }>;
82
+ deleteRule: (id: number | string) => Promise<{
83
+ ok: boolean;
84
+ status: any;
85
+ }>;
86
+ applyRecommended: () => Promise<{
87
+ ok: boolean;
88
+ status: any;
89
+ }>;
90
+ };
91
+ egress: {
92
+ /** Every egress IP rule across every registered driver. G-15. */
93
+ list: () => Promise<{
94
+ drivers: Array<{
95
+ name: string;
96
+ rules: Array<{
97
+ selector: {
98
+ projectId: number;
99
+ sourceCidr?: string;
100
+ };
101
+ ip: string;
102
+ createdAt: string;
103
+ }>;
104
+ }>;
105
+ }>;
106
+ /** Attach an egress IP to a project on the named (or first) driver. */
107
+ set: (input: {
108
+ projectId: number;
109
+ ip: string;
110
+ driver?: string;
111
+ }) => Promise<{
112
+ ok: boolean;
113
+ driver: string;
114
+ rule: {
115
+ selector: {
116
+ projectId: number;
117
+ sourceCidr?: string;
118
+ };
119
+ ip: string;
120
+ createdAt: string;
121
+ };
122
+ /** Present (with `ok: false`) when the route refused the request. */
123
+ error?: string;
124
+ }>;
125
+ /** Detach the rule for a project (on the named or first driver). */
126
+ clear: (projectId: number, driver?: string) => Promise<{
127
+ ok: boolean;
128
+ driver: string;
129
+ error?: string;
130
+ }>;
131
+ };
132
+ }
133
+ export declare function networkApi(t: Transport): NetworkApi;
134
+ //# sourceMappingURL=network.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/resources/network.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export function networkApi(t) {
2
+ const { get, send, request } = t;
3
+ return {
4
+ networks: {
5
+ list: () => get('/v1/networks'),
6
+ create: (input) => send('POST', '/v1/networks', { driver: 'bridge', ...input }),
7
+ remove: (name, serverId) => send('DELETE', `/v1/networks/${encodeURIComponent(name)}${serverId != null ? `?serverId=${serverId}` : ''}`),
8
+ attach: (input) => send('POST', '/v1/networks/attach', input),
9
+ detach: (input) => send('POST', '/v1/networks/detach', input),
10
+ members: (name) => get(`/v1/networks/${encodeURIComponent(name)}/members`),
11
+ },
12
+ tunnels: {
13
+ list: () => get('/v1/tunnels'),
14
+ create: (input) => send('POST', '/v1/tunnels', input),
15
+ remove: async (id) => {
16
+ await request(`/v1/tunnels/${id}`, { method: 'DELETE' });
17
+ },
18
+ },
19
+ firewall: {
20
+ status: () => get('/v1/firewall'),
21
+ toggle: (enabled) => send('POST', '/v1/firewall/toggle', { enabled }),
22
+ addRule: (input) => send('POST', '/v1/firewall/rules', input),
23
+ deleteRule: (id) => request(`/v1/firewall/rules/${id}`, { method: 'DELETE' }),
24
+ applyRecommended: () => send('POST', '/v1/firewall/recommended'),
25
+ },
26
+ egress: {
27
+ list: () => get('/v1/egress'),
28
+ set: (input) => send('POST', '/v1/egress', input),
29
+ clear: (projectId, driver) => send('DELETE', `/v1/egress/${projectId}${driver ? `?driver=${encodeURIComponent(driver)}` : ''}`),
30
+ },
31
+ };
32
+ }
33
+ //# sourceMappingURL=network.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/resources/network.ts"],"names":[],"mappings":"AA2EA,MAAM,UAAU,UAAU,CAAC,CAAY;IACrC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO;QACL,QAAQ,EAAE;YACR,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAkG,cAAc,CAAC;YAChI,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAgC,MAAM,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,CAAC;YAC9G,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CACzB,IAAI,CAAkB,QAAQ,EAAE,gBAAgB,kBAAkB,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC/H,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAkB,MAAM,EAAE,qBAAqB,EAAE,KAAK,CAAC;YAC9E,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAkB,MAAM,EAAE,qBAAqB,EAAE,KAAK,CAAC;YAC9E,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAwB,gBAAgB,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;SAClG;QACD,OAAO,EAAE;YACP,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAgB,aAAa,CAAC;YAC7C,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAc,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC;YAClE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;gBACnB,MAAM,OAAO,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC3D,CAAC;SACF;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAM,cAAc,CAAC;YACtC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAM,MAAM,EAAE,qBAAqB,EAAE,EAAE,OAAO,EAAE,CAAC;YAC1E,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAM,MAAM,EAAE,oBAAoB,EAAE,KAAK,CAAC;YAClE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YAC7E,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAM,MAAM,EAAE,0BAA0B,CAAC;SACtE;QACD,MAAM,EAAE;YACN,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CASZ,YAAY,CAAC;YAChB,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAKjB,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC;YAC/B,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAC3B,IAAI,CACF,QAAQ,EACR,cAAc,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAClF;SACJ;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,42 @@
1
+ import type { PluginListResponse, PluginInspectResponse, InstallPluginInput, MarketplaceCatalogResponse, MenuListResponse } from '@ninedeploy/schemas';
2
+ import type { Transport } from '../transport.js';
3
+ export interface PluginsApi {
4
+ plugins: {
5
+ list: () => Promise<PluginListResponse>;
6
+ marketplace: (opts?: {
7
+ refresh?: boolean;
8
+ }) => Promise<MarketplaceCatalogResponse>;
9
+ install: (input: InstallPluginInput) => Promise<{
10
+ ok: boolean;
11
+ id: string;
12
+ status: string;
13
+ }>;
14
+ enable: (id: string) => Promise<{
15
+ ok: boolean;
16
+ id: string;
17
+ status: string;
18
+ }>;
19
+ disable: (id: string) => Promise<{
20
+ ok: boolean;
21
+ id: string;
22
+ status: string;
23
+ }>;
24
+ reload: (id: string) => Promise<{
25
+ ok: boolean;
26
+ id: string;
27
+ status: string;
28
+ }>;
29
+ inspect: (id: string) => Promise<PluginInspectResponse>;
30
+ uninstall: (id: string) => Promise<{
31
+ ok: boolean;
32
+ id: string;
33
+ }>;
34
+ };
35
+ menus: {
36
+ list: (query?: {
37
+ slot?: string;
38
+ }) => Promise<MenuListResponse>;
39
+ };
40
+ }
41
+ export declare function pluginsApi(t: Transport): PluginsApi;
42
+ //# sourceMappingURL=plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/resources/plugins.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,0BAA0B,EAC1B,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACxC,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,KAAK,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACnF,OAAO,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC;YAAE,EAAE,EAAE,OAAO,CAAC;YAAC,EAAE,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC7F,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,EAAE,EAAE,OAAO,CAAC;YAAC,EAAE,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC7E,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,EAAE,EAAE,OAAO,CAAC;YAAC,EAAE,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC9E,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,EAAE,EAAE,OAAO,CAAC;YAAC,EAAE,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC7E,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACxD,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,EAAE,EAAE,OAAO,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACjE,CAAC;IACF,KAAK,EAAE;QACL,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;KAChE,CAAC;CACH;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,GAAG,UAAU,CAuBnD"}
@@ -0,0 +1,22 @@
1
+ export function pluginsApi(t) {
2
+ const { get, send } = t;
3
+ return {
4
+ plugins: {
5
+ list: () => get('/v1/plugins'),
6
+ marketplace: (opts) => get(`/v1/plugins/marketplace${opts?.refresh ? '?refresh=true' : ''}`),
7
+ install: (input) => send('POST', '/v1/plugins/install', input),
8
+ enable: (id) => send('POST', `/v1/plugins/${encodeURIComponent(id)}/enable`),
9
+ disable: (id) => send('POST', `/v1/plugins/${encodeURIComponent(id)}/disable`),
10
+ reload: (id) => send('POST', `/v1/plugins/${encodeURIComponent(id)}/reload`),
11
+ inspect: (id) => get(`/v1/plugins/${encodeURIComponent(id)}/inspect`),
12
+ uninstall: (id) => send('POST', `/v1/plugins/${encodeURIComponent(id)}/uninstall`),
13
+ },
14
+ menus: {
15
+ list: (query) => {
16
+ const qs = query?.slot ? `?slot=${encodeURIComponent(query.slot)}` : '';
17
+ return get(`/v1/menus${qs}`);
18
+ },
19
+ },
20
+ };
21
+ }
22
+ //# sourceMappingURL=plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/resources/plugins.ts"],"names":[],"mappings":"AA4BA,MAAM,UAAU,UAAU,CAAC,CAAY;IACrC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACxB,OAAO;QACL,OAAO,EAAE;YACP,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAqB,aAAa,CAAC;YAClD,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CACpB,GAAG,CACD,0BAA0B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,CACjE;YACH,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAA8C,MAAM,EAAE,qBAAqB,EAAE,KAAK,CAAC;YAC3G,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAA8C,MAAM,EAAE,eAAe,kBAAkB,CAAC,EAAE,CAAC,SAAS,CAAC;YACzH,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAA8C,MAAM,EAAE,eAAe,kBAAkB,CAAC,EAAE,CAAC,UAAU,CAAC;YAC3H,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAA8C,MAAM,EAAE,eAAe,kBAAkB,CAAC,EAAE,CAAC,SAAS,CAAC;YACzH,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAwB,eAAe,kBAAkB,CAAC,EAAE,CAAC,UAAU,CAAC;YAC5F,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAA8B,MAAM,EAAE,eAAe,kBAAkB,CAAC,EAAE,CAAC,YAAY,CAAC;SAChH;QACD,KAAK,EAAE;YACL,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;gBACd,MAAM,EAAE,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxE,OAAO,GAAG,CAAmB,YAAY,EAAE,EAAE,CAAC,CAAC;YACjD,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}