@replanejs/admin 0.8.11

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Dmitry Tilyupo
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/dist/index.cjs ADDED
@@ -0,0 +1,232 @@
1
+
2
+ //#region src/version.ts
3
+ const VERSION = "0.8.11";
4
+ const DEFAULT_AGENT = `replane-js-admin/${VERSION}`;
5
+
6
+ //#endregion
7
+ //#region src/client.ts
8
+ /**
9
+ * Error thrown by the Admin API client
10
+ */
11
+ var ReplaneAdminError = class extends Error {
12
+ constructor(message, status, response) {
13
+ super(message);
14
+ this.status = status;
15
+ this.response = response;
16
+ this.name = "ReplaneAdminError";
17
+ }
18
+ };
19
+ /**
20
+ * Admin API client for Replane
21
+ *
22
+ * Provides programmatic access to manage projects, configs, environments,
23
+ * SDK keys, and members.
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * import { ReplaneAdmin } from "@replanejs/admin";
28
+ *
29
+ * const admin = new ReplaneAdmin({
30
+ * baseUrl: "https://app.replane.dev",
31
+ * apiKey: "rpa_...",
32
+ * });
33
+ *
34
+ * // List all projects
35
+ * const { projects } = await admin.projects.list();
36
+ *
37
+ * // Create a new config
38
+ * const { id } = await admin.configs.create("project-id", {
39
+ * name: "my-config",
40
+ * description: "My config",
41
+ * editors: [],
42
+ * maintainers: [],
43
+ * base: { value: true, schema: null, overrides: [] },
44
+ * variants: [],
45
+ * });
46
+ * ```
47
+ */
48
+ var ReplaneAdmin = class {
49
+ apiKey;
50
+ baseUrl;
51
+ agent;
52
+ fetchFn;
53
+ projects;
54
+ configs;
55
+ environments;
56
+ sdkKeys;
57
+ members;
58
+ constructor(options) {
59
+ this.apiKey = options.apiKey;
60
+ this.baseUrl = `${options.baseUrl.replace(/\/$/, "")}/api/admin/v1`;
61
+ this.agent = options.agent ?? DEFAULT_AGENT;
62
+ this.fetchFn = options.fetchFn ?? globalThis.fetch;
63
+ this.projects = new ProjectsApi(this);
64
+ this.configs = new ConfigsApi(this);
65
+ this.environments = new EnvironmentsApi(this);
66
+ this.sdkKeys = new SdkKeysApi(this);
67
+ this.members = new MembersApi(this);
68
+ }
69
+ /**
70
+ * Make an authenticated request to the Admin API
71
+ * @internal
72
+ */
73
+ async request(method, path, body) {
74
+ const url = `${this.baseUrl}${path}`;
75
+ const headers = {
76
+ Authorization: `Bearer ${this.apiKey}`,
77
+ "User-Agent": this.agent
78
+ };
79
+ if (body !== void 0) headers["Content-Type"] = "application/json";
80
+ const response = await this.fetchFn(url, {
81
+ method,
82
+ headers,
83
+ body: body !== void 0 ? JSON.stringify(body) : void 0
84
+ });
85
+ if (!response.ok) {
86
+ let errorResponse;
87
+ try {
88
+ errorResponse = await response.json();
89
+ } catch {}
90
+ throw new ReplaneAdminError(errorResponse?.error ?? `Request failed with status ${response.status}`, response.status, errorResponse);
91
+ }
92
+ if (response.status === 204) return void 0;
93
+ return response.json();
94
+ }
95
+ };
96
+ /**
97
+ * Projects API
98
+ */
99
+ var ProjectsApi = class {
100
+ constructor(client) {
101
+ this.client = client;
102
+ }
103
+ /**
104
+ * List all projects
105
+ */
106
+ async list() {
107
+ return this.client.request("GET", "/projects");
108
+ }
109
+ /**
110
+ * Get a project by ID
111
+ */
112
+ async get(projectId) {
113
+ return this.client.request("GET", `/projects/${projectId}`);
114
+ }
115
+ /**
116
+ * Create a new project
117
+ */
118
+ async create(data) {
119
+ return this.client.request("POST", "/projects", data);
120
+ }
121
+ /**
122
+ * Update a project
123
+ */
124
+ async update(projectId, data) {
125
+ return this.client.request("PATCH", `/projects/${projectId}`, data);
126
+ }
127
+ /**
128
+ * Delete a project
129
+ */
130
+ async delete(projectId) {
131
+ return this.client.request("DELETE", `/projects/${projectId}`);
132
+ }
133
+ };
134
+ /**
135
+ * Configs API
136
+ */
137
+ var ConfigsApi = class {
138
+ constructor(client) {
139
+ this.client = client;
140
+ }
141
+ /**
142
+ * List all configs in a project
143
+ */
144
+ async list(projectId) {
145
+ return this.client.request("GET", `/projects/${projectId}/configs`);
146
+ }
147
+ /**
148
+ * Get a config by name
149
+ */
150
+ async get(projectId, configName) {
151
+ return this.client.request("GET", `/projects/${projectId}/configs/${encodeURIComponent(configName)}`);
152
+ }
153
+ /**
154
+ * Create a new config
155
+ */
156
+ async create(projectId, data) {
157
+ return this.client.request("POST", `/projects/${projectId}/configs`, data);
158
+ }
159
+ /**
160
+ * Update a config
161
+ */
162
+ async update(projectId, configName, data) {
163
+ return this.client.request("PUT", `/projects/${projectId}/configs/${encodeURIComponent(configName)}`, data);
164
+ }
165
+ /**
166
+ * Delete a config
167
+ */
168
+ async delete(projectId, configName) {
169
+ return this.client.request("DELETE", `/projects/${projectId}/configs/${encodeURIComponent(configName)}`);
170
+ }
171
+ };
172
+ /**
173
+ * Environments API
174
+ */
175
+ var EnvironmentsApi = class {
176
+ constructor(client) {
177
+ this.client = client;
178
+ }
179
+ /**
180
+ * List all environments in a project
181
+ */
182
+ async list(projectId) {
183
+ return this.client.request("GET", `/projects/${projectId}/environments`);
184
+ }
185
+ };
186
+ /**
187
+ * SDK Keys API
188
+ */
189
+ var SdkKeysApi = class {
190
+ constructor(client) {
191
+ this.client = client;
192
+ }
193
+ /**
194
+ * List all SDK keys in a project
195
+ */
196
+ async list(projectId) {
197
+ return this.client.request("GET", `/projects/${projectId}/sdk-keys`);
198
+ }
199
+ /**
200
+ * Create a new SDK key
201
+ * Note: The returned key is only shown once and cannot be retrieved again
202
+ */
203
+ async create(projectId, data) {
204
+ return this.client.request("POST", `/projects/${projectId}/sdk-keys`, data);
205
+ }
206
+ /**
207
+ * Delete an SDK key
208
+ */
209
+ async delete(projectId, sdkKeyId) {
210
+ return this.client.request("DELETE", `/projects/${projectId}/sdk-keys/${sdkKeyId}`);
211
+ }
212
+ };
213
+ /**
214
+ * Members API
215
+ */
216
+ var MembersApi = class {
217
+ constructor(client) {
218
+ this.client = client;
219
+ }
220
+ /**
221
+ * List all members in a project
222
+ */
223
+ async list(projectId) {
224
+ return this.client.request("GET", `/projects/${projectId}/members`);
225
+ }
226
+ };
227
+
228
+ //#endregion
229
+ exports.DEFAULT_AGENT = DEFAULT_AGENT;
230
+ exports.ReplaneAdmin = ReplaneAdmin;
231
+ exports.ReplaneAdminError = ReplaneAdminError;
232
+ exports.VERSION = VERSION;
@@ -0,0 +1,313 @@
1
+ //#region src/types.d.ts
2
+ /**
3
+ * Admin API Types for Replane
4
+ */
5
+ type ConfigValue = unknown;
6
+ type ConfigSchema = unknown;
7
+ interface Override {
8
+ condition: OverrideCondition;
9
+ value: ConfigValue;
10
+ }
11
+ interface OverrideCondition {
12
+ type: string;
13
+ [key: string]: unknown;
14
+ }
15
+ interface Project {
16
+ id: string;
17
+ name: string;
18
+ description: string;
19
+ createdAt: string;
20
+ updatedAt: string;
21
+ }
22
+ interface CreateProjectRequest {
23
+ name: string;
24
+ description: string;
25
+ }
26
+ interface UpdateProjectRequest {
27
+ name?: string;
28
+ description?: string;
29
+ }
30
+ interface ProjectListResponse {
31
+ projects: Project[];
32
+ }
33
+ interface CreateProjectResponse {
34
+ id: string;
35
+ }
36
+ interface UpdateProjectResponse {
37
+ id: string;
38
+ }
39
+ interface ConfigBase {
40
+ value: ConfigValue;
41
+ schema: ConfigSchema | null;
42
+ overrides: Override[];
43
+ }
44
+ interface ConfigVariant {
45
+ environmentId: string;
46
+ value: ConfigValue;
47
+ schema: ConfigSchema | null;
48
+ overrides: Override[];
49
+ useBaseSchema: boolean;
50
+ }
51
+ interface Config {
52
+ id: string;
53
+ name: string;
54
+ description?: string;
55
+ version: number;
56
+ base: ConfigBase;
57
+ variants: ConfigVariant[];
58
+ editors: string[];
59
+ createdAt: string;
60
+ updatedAt: string;
61
+ }
62
+ interface ConfigListItem {
63
+ id: string;
64
+ name: string;
65
+ description?: string;
66
+ version: number;
67
+ createdAt: string;
68
+ updatedAt: string;
69
+ }
70
+ interface ConfigListResponse {
71
+ configs: ConfigListItem[];
72
+ }
73
+ interface CreateConfigRequest {
74
+ name: string;
75
+ description: string;
76
+ editors: string[];
77
+ maintainers: string[];
78
+ base: ConfigBase;
79
+ variants: ConfigVariant[];
80
+ }
81
+ interface UpdateConfigRequest {
82
+ description: string;
83
+ editors: string[];
84
+ base: ConfigBase;
85
+ variants: ConfigVariant[];
86
+ }
87
+ interface CreateConfigResponse {
88
+ id: string;
89
+ }
90
+ interface UpdateConfigResponse {
91
+ id: string;
92
+ version: number;
93
+ }
94
+ interface Environment {
95
+ id: string;
96
+ name: string;
97
+ order: number;
98
+ }
99
+ interface EnvironmentListResponse {
100
+ environments: Environment[];
101
+ }
102
+ interface SdkKey {
103
+ id: string;
104
+ name: string;
105
+ description: string;
106
+ environmentId: string;
107
+ createdAt: string;
108
+ }
109
+ interface SdkKeyWithToken extends SdkKey {
110
+ key: string;
111
+ }
112
+ interface SdkKeyListResponse {
113
+ sdkKeys: SdkKey[];
114
+ }
115
+ interface CreateSdkKeyRequest {
116
+ name: string;
117
+ description?: string;
118
+ environmentId: string;
119
+ }
120
+ interface Member {
121
+ email: string;
122
+ role: string;
123
+ }
124
+ interface MemberListResponse {
125
+ members: Member[];
126
+ }
127
+ interface ApiError {
128
+ error: string;
129
+ }
130
+ interface ReplaneAdminOptions {
131
+ /**
132
+ * Admin API key (starts with rpa_)
133
+ */
134
+ apiKey: string;
135
+ /**
136
+ * Base URL for Replane instance
137
+ * @example "https://app.replane.dev"
138
+ */
139
+ baseUrl: string;
140
+ /**
141
+ * Custom agent identifier for tracking SDK usage
142
+ * @default "replane-admin/{version}"
143
+ */
144
+ agent?: string;
145
+ /**
146
+ * Custom fetch function for making HTTP requests.
147
+ * Useful for testing or environments without global fetch.
148
+ * @default globalThis.fetch
149
+ */
150
+ fetchFn?: typeof fetch;
151
+ }
152
+ //# sourceMappingURL=types.d.ts.map
153
+ //#endregion
154
+ //#region src/client.d.ts
155
+ /**
156
+ * Error thrown by the Admin API client
157
+ */
158
+ declare class ReplaneAdminError extends Error {
159
+ readonly status: number;
160
+ readonly response?: ApiError | undefined;
161
+ constructor(message: string, status: number, response?: ApiError | undefined);
162
+ }
163
+ /**
164
+ * Admin API client for Replane
165
+ *
166
+ * Provides programmatic access to manage projects, configs, environments,
167
+ * SDK keys, and members.
168
+ *
169
+ * @example
170
+ * ```typescript
171
+ * import { ReplaneAdmin } from "@replanejs/admin";
172
+ *
173
+ * const admin = new ReplaneAdmin({
174
+ * baseUrl: "https://app.replane.dev",
175
+ * apiKey: "rpa_...",
176
+ * });
177
+ *
178
+ * // List all projects
179
+ * const { projects } = await admin.projects.list();
180
+ *
181
+ * // Create a new config
182
+ * const { id } = await admin.configs.create("project-id", {
183
+ * name: "my-config",
184
+ * description: "My config",
185
+ * editors: [],
186
+ * maintainers: [],
187
+ * base: { value: true, schema: null, overrides: [] },
188
+ * variants: [],
189
+ * });
190
+ * ```
191
+ */
192
+ declare class ReplaneAdmin {
193
+ private readonly apiKey;
194
+ private readonly baseUrl;
195
+ private readonly agent;
196
+ private readonly fetchFn;
197
+ readonly projects: ProjectsApi;
198
+ readonly configs: ConfigsApi;
199
+ readonly environments: EnvironmentsApi;
200
+ readonly sdkKeys: SdkKeysApi;
201
+ readonly members: MembersApi;
202
+ constructor(options: ReplaneAdminOptions);
203
+ /**
204
+ * Make an authenticated request to the Admin API
205
+ * @internal
206
+ */
207
+ request<T>(method: "GET" | "POST" | "PUT" | "DELETE" | "PATCH", path: string, body?: unknown): Promise<T>;
208
+ }
209
+ /**
210
+ * Projects API
211
+ */
212
+ declare class ProjectsApi {
213
+ private readonly client;
214
+ constructor(client: ReplaneAdmin);
215
+ /**
216
+ * List all projects
217
+ */
218
+ list(): Promise<ProjectListResponse>;
219
+ /**
220
+ * Get a project by ID
221
+ */
222
+ get(projectId: string): Promise<Project>;
223
+ /**
224
+ * Create a new project
225
+ */
226
+ create(data: CreateProjectRequest): Promise<CreateProjectResponse>;
227
+ /**
228
+ * Update a project
229
+ */
230
+ update(projectId: string, data: UpdateProjectRequest): Promise<UpdateProjectResponse>;
231
+ /**
232
+ * Delete a project
233
+ */
234
+ delete(projectId: string): Promise<void>;
235
+ }
236
+ /**
237
+ * Configs API
238
+ */
239
+ declare class ConfigsApi {
240
+ private readonly client;
241
+ constructor(client: ReplaneAdmin);
242
+ /**
243
+ * List all configs in a project
244
+ */
245
+ list(projectId: string): Promise<ConfigListResponse>;
246
+ /**
247
+ * Get a config by name
248
+ */
249
+ get(projectId: string, configName: string): Promise<Config>;
250
+ /**
251
+ * Create a new config
252
+ */
253
+ create(projectId: string, data: CreateConfigRequest): Promise<CreateConfigResponse>;
254
+ /**
255
+ * Update a config
256
+ */
257
+ update(projectId: string, configName: string, data: UpdateConfigRequest): Promise<UpdateConfigResponse>;
258
+ /**
259
+ * Delete a config
260
+ */
261
+ delete(projectId: string, configName: string): Promise<void>;
262
+ }
263
+ /**
264
+ * Environments API
265
+ */
266
+ declare class EnvironmentsApi {
267
+ private readonly client;
268
+ constructor(client: ReplaneAdmin);
269
+ /**
270
+ * List all environments in a project
271
+ */
272
+ list(projectId: string): Promise<EnvironmentListResponse>;
273
+ }
274
+ /**
275
+ * SDK Keys API
276
+ */
277
+ declare class SdkKeysApi {
278
+ private readonly client;
279
+ constructor(client: ReplaneAdmin);
280
+ /**
281
+ * List all SDK keys in a project
282
+ */
283
+ list(projectId: string): Promise<SdkKeyListResponse>;
284
+ /**
285
+ * Create a new SDK key
286
+ * Note: The returned key is only shown once and cannot be retrieved again
287
+ */
288
+ create(projectId: string, data: CreateSdkKeyRequest): Promise<SdkKeyWithToken>;
289
+ /**
290
+ * Delete an SDK key
291
+ */
292
+ delete(projectId: string, sdkKeyId: string): Promise<void>;
293
+ }
294
+ /**
295
+ * Members API
296
+ */
297
+ declare class MembersApi {
298
+ private readonly client;
299
+ constructor(client: ReplaneAdmin);
300
+ /**
301
+ * List all members in a project
302
+ */
303
+ list(projectId: string): Promise<MemberListResponse>;
304
+ }
305
+ //#endregion
306
+ //#region src/version.d.ts
307
+ declare const VERSION = "0.8.11";
308
+ declare const DEFAULT_AGENT = "replane-js-admin/0.8.11";
309
+ //# sourceMappingURL=version.d.ts.map
310
+
311
+ //#endregion
312
+ export { type ApiError, type Config, type ConfigBase, type ConfigListItem, type ConfigListResponse, type ConfigSchema, type ConfigValue, type ConfigVariant, type CreateConfigRequest, type CreateConfigResponse, type CreateProjectRequest, type CreateProjectResponse, type CreateSdkKeyRequest, DEFAULT_AGENT, type Environment, type EnvironmentListResponse, type Member, type MemberListResponse, type Override, type OverrideCondition, type Project, type ProjectListResponse, ReplaneAdmin, ReplaneAdminError, type ReplaneAdminOptions, type SdkKey, type SdkKeyListResponse, type SdkKeyWithToken, type UpdateConfigRequest, type UpdateConfigResponse, type UpdateProjectRequest, type UpdateProjectResponse, VERSION };
313
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/client.ts","../src/version.ts"],"sourcesContent":[],"mappings":";;AAMA;AACA;AAEiB,KAHL,WAAA,GAGa,OAAA;AAAA,KAFb,YAAA,GAEa,OAAA;AACZ,UADI,QAAA,CACJ;EAAiB,SACrB,EADI,iBACJ;EAAW,KAAA,EAAX,WAAW;AAGpB;AAOiB,UAPA,iBAAA,CAOO;EAQP,IAAA,EAAA,MAAA;EAKA,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;AAKjB;AAIiB,UAtBA,OAAA,CAsBA;EAIA,EAAA,EAAA,MAAA;EAMA,IAAA,EAAA,MAAA;EAAU,WAAA,EAAA,MAAA;EAAA,SAClB,EAAA,MAAA;EAAW,SACV,EAAA,MAAA;;AACW,UA3BJ,oBAAA,CA2BI;EAGJ,IAAA,EAAA,MAAA;EAAa,WAAA,EAAA,MAAA;;AAGpB,UA5BO,oBAAA,CA4BP;EAAY,IACT,CAAA,EAAA,MAAA;EAAQ,WAAA,CAAA,EAAA,MAAA;AAIrB;AAAuB,UA5BN,mBAAA,CA4BM;EAAA,QAKf,EAhCI,OAgCJ,EAAA;;AACiB,UA9BR,qBAAA,CA8BQ;EAMR,EAAA,EAAA,MAAA;AASjB;AAIiB,UA7CA,qBAAA,CA6CmB;EAAA,EAAA,EAAA,MAAA;;AAMxB,UA7CK,UAAA,CA6CL;EAAa,KAAA,EA5ChB,WA4CgB;EAGR,MAAA,EA9CP,YA8CO,GAAmB,IAAA;EAAA,SAAA,EA7CvB,QA6CuB,EAAA;;AAIxB,UA9CK,aAAA,CA8CL;EAAa,aAAA,EAAA,MAAA;EAGR,KAAA,EA/CR,WA+CQ;EAIA,MAAA,EAlDP,YAkDO,GAAoB,IAAA;EAOpB,SAAA,EAxDJ,QAwDe,EAAA;EAMX,aAAA,EAAA,OAAA;AAMjB;AAQiB,UAxEA,MAAA,CAwEgB;EAIhB,EAAA,EAAA,MAAA;EAIA,IAAA,EAAA,MAAA;EAQA,WAAM,CAAA,EAAA,MAAA;EAKN,OAAA,EAAA,MAAA;EAMA,IAAA,EA9FT,UA8FiB;EAMR,QAAA,EAnGL,aAmGwB,EAAA;;;;AClJpC;AAA+B,UDqDd,cAAA,CCrDc;EAAA,EAAA,EAIA,MAAA;EAAQ,IAAR,EAAA,MAAA;EAAQ,WAJA,CAAA,EAAA,MAAA;EAAK,OAAA,EAAA,MAAA;EAwC/B,SAAA,EAAA,MAAY;EAAA,SAAA,EAAA,MAAA;;AAOE,UDeV,kBAAA,CCfU;EAAU,OACL,EDerB,cCfqB,EAAA;;AAEL,UDgBV,mBAAA,CChBU;EAAU,IAEd,EAAA,MAAA;EAAmB,WAqB7B,EAAA,MAAA;EAAC,OAAT,EAAA,MAAA,EAAA;EAAO,WAAA,EAAA,MAAA,EAAA;EA4CN,IAAA,ED9CE,UC8CS;EAAA,QAAA,ED7CL,aC6CK,EAAA;;AAMO,UDhDP,mBAAA,CCgDO;EAAmB,WAA3B,EAAA,MAAA;EAAO,OAOiB,EAAA,MAAA,EAAA;EAAO,IAAf,EDpDxB,UCoDwB;EAAO,QAOlB,ED1DT,aC0DS,EAAA;;AAAuB,UDvD3B,oBAAA,CCuD2B;EAAO,EAAA,EAOX,MAAA;;AAAuB,UD1D9C,oBAAA,CC0D8C;EAAO,EAAA,EAOnC,MAAA;EAAO,OAAA,EAAA,MAAA;AAAA;AAQ1B,UDlEC,WAAA,CCkED;EAAA,EAAA,EACuB,MAAA;EAAY,IAKV,EAAA,MAAA;EAAkB,KAA1B,EAAA,MAAA;;AAOmB,UDzEnC,uBAAA,CCyEmC;EAAO,YAUnB,EDlFxB,WCkFwB,EAAA;;AAAsB,UD7E7C,MAAA,CC6E6C;EAAO,EAAA,EAc3D,MAAA;EAAmB,IAChB,EAAA,MAAA;EAAoB,WAA5B,EAAA,MAAA;EAAO,aAW2C,EAAA,MAAA;EAAO,SAAA,EAAA,MAAA;AAAA;AAWzC,UD1GJ,eAAA,SAAwB,MC0GpB,CAAA;EAAA,GACkB,EAAA,MAAA;;AAKN,UD5GhB,kBAAA,CC4GgB;EAAO,OAAA,ED3G7B,MC2G6B,EAAA;AAAA;AAWxB,UDnHC,mBAAA,CCmHD;EAAA,IACuB,EAAA,MAAA;EAAY,WAKV,CAAA,EAAA,MAAA;EAAkB,aAA1B,EAAA,MAAA;;AAQqC,UDzHrD,MAAA,CCyHqD;EAAe,KAAvB,EAAA,MAAA;EAAO,IAOhB,EAAA,MAAA;AAAO;AAQtD,UDnIW,kBAAA,CCmID;EAAA,OAAA,EDlIL,MCkIK,EAAA;;AAMyB,UDnIxB,QAAA,CCmIwB;EAAkB,KAA1B,EAAA,MAAA;AAAO;UD7HvB,mBAAA;;;AE3KjB;EACa,MAAA,EAAA,MAAA;;;;;;;;;;;;;;;;mBFiMM;;;;;AA7LnB;AACA;AAEA;AAAyB,cCiBZ,iBAAA,SAA0B,KAAA,CDjBd;EAAA,SACZ,MAAA,EAAA,MAAA;EAAiB,SACrB,QAAA,CAAA,ECmBsB,QDnBtB,GAAA,SAAA;EAAW,WAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,CAAA,ECmBW,QDnBX,GAAA,SAAA;AAGpB;AAOA;AAQA;AAKA;AAKA;AAIA;AAIA;AAMA;;;;;AAGqB;AAGrB;;;;;AAIqB;AAIrB;;;;AAMyB;AAMzB;AASA;AAIA;;;;AAMyB,cChCZ,YAAA,CDgCY;EAGR,iBAAA,MAAmB;EAAA,iBAAA,OAAA;EAAA,iBAG5B,KAAA;EAAU,iBACN,OAAA;EAAa,SAAA,QAAA,ECjCG,WDiCH;EAGR,SAAA,OAAA,ECnCU,UDmCU;EAIpB,SAAA,YAAA,ECtCe,eDsCK;EAOpB,SAAA,OAAW,EC5CD,UD4CC;EAMX,SAAA,OAAA,ECjDU,UDiDa;EAMvB,WAAM,CAAA,OAAA,ECrDA,mBDqDA;EAQN;AAIjB;AAIA;AAQA;EAKiB,OAAA,CAAA,CAAA,CAAA,CAAA,MAAA,EAAA,KAAkB,GAAA,MACxB,GAAA,KAAM,GAAA,QAAA,GAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA,OAAA,CAAA,EC9DZ,OD8DY,CC9DJ,CD8DI,CAAA;AAKjB;AAMA;;;cC7BM,WAAA;EArHO,iBAAA,MAAkB;EAAA,WAAA,CAAA,MAAA,EAsHQ,YAtHR;EAAA;;;EAAa,IAAA,CAAA,CAAA,EA2H5B,OA3H4B,CA2HpB,mBA3HoB,CAAA;EAwC/B;;;EAM0B,GACZ,CAAA,SAAA,EAAA,MAAA,CAAA,EAmFK,OAnFL,CAmFa,OAnFb,CAAA;EAAU;;;EAGA,MAEd,CAAA,IAAA,EAqFF,oBArFE,CAAA,EAqFqB,OArFrB,CAqF6B,qBArF7B,CAAA;EAAmB;;AAqB9B;EA4CN,MAAA,CAAA,SAAW,EAAA,MAAA,EAAA,IAAA,EA2BuB,oBA3BvB,CAAA,EA2B8C,OA3B9C,CA2BsD,qBA3BtD,CAAA;EAAA;;;EAM0B,MAA3B,CAAA,SAAA,EAAA,MAAA,CAAA,EA4BmB,OA5BnB,CAAA,IAAA,CAAA;;;;;cAoCV,UAAA,CAtBsC;EAAO,iBAOX,MAAA;EAAoB,WAAW,CAAA,MAAA,EAgBhC,YAhBgC;EAAqB;;AAOlD;EAQpC,IAAA,CAAA,SAAU,EAAA,MAAA,CAAA,EAMiB,OANjB,CAMyB,kBANzB,CAAA;EAAA;;;EAM2C,GAA1B,CAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAOmB,OAPnB,CAO2B,MAP3B,CAAA;EAAO;;;EAiBmB,MAAW,CAAA,SAAA,EAAA,MAAA,EAAA,IAAA,EAA9B,mBAA8B,CAAA,EAAR,OAAQ,CAAA,oBAAA,CAAA;EAAoB;;;EAezD,MAA5B,CAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,IAAA,EADK,mBACL,CAAA,EAAA,OAAA,CAAQ,oBAAR,CAAA;EAAO;AAWkD;AAAA;EAWzC,MAAA,CAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAXkC,OAWlC,CAAA,IAAA,CAAA;;;;AAMmB;AAAA,cANlC,eAAA,CAiBU;EAAA,iBAAA,MAAA;EAAA,WACuB,CAAA,MAAA,EAjBA,YAiBA;EAAY;;;EAaQ,IAAW,CAAA,SAAA,EAAA,MAAA,CAAA,EAzBrC,OAyBqC,CAzB7B,uBAyB6B,CAAA;;;AAOV;AAAA;cArBtD,UAAA,CA6BU;EAAA,iBACuB,MAAA;EAAY,WAKV,CAAA,MAAA,EAlCF,YAkCE;EAAkB;AAAnB;;2BA7BP,QAAQ;;AC3QzC;AACA;;kCDkRwC,sBAAsB,QAAQ;;;;+CAOjB;;;;;cAQ/C,UAAA;;sBACiC;;;;2BAKN,QAAQ;;;;cCxS5B,OAAA;AFKD,cEJC,aAAA,GFIU,yBAAA;AACvB"}
@@ -0,0 +1,313 @@
1
+ //#region src/types.d.ts
2
+ /**
3
+ * Admin API Types for Replane
4
+ */
5
+ type ConfigValue = unknown;
6
+ type ConfigSchema = unknown;
7
+ interface Override {
8
+ condition: OverrideCondition;
9
+ value: ConfigValue;
10
+ }
11
+ interface OverrideCondition {
12
+ type: string;
13
+ [key: string]: unknown;
14
+ }
15
+ interface Project {
16
+ id: string;
17
+ name: string;
18
+ description: string;
19
+ createdAt: string;
20
+ updatedAt: string;
21
+ }
22
+ interface CreateProjectRequest {
23
+ name: string;
24
+ description: string;
25
+ }
26
+ interface UpdateProjectRequest {
27
+ name?: string;
28
+ description?: string;
29
+ }
30
+ interface ProjectListResponse {
31
+ projects: Project[];
32
+ }
33
+ interface CreateProjectResponse {
34
+ id: string;
35
+ }
36
+ interface UpdateProjectResponse {
37
+ id: string;
38
+ }
39
+ interface ConfigBase {
40
+ value: ConfigValue;
41
+ schema: ConfigSchema | null;
42
+ overrides: Override[];
43
+ }
44
+ interface ConfigVariant {
45
+ environmentId: string;
46
+ value: ConfigValue;
47
+ schema: ConfigSchema | null;
48
+ overrides: Override[];
49
+ useBaseSchema: boolean;
50
+ }
51
+ interface Config {
52
+ id: string;
53
+ name: string;
54
+ description?: string;
55
+ version: number;
56
+ base: ConfigBase;
57
+ variants: ConfigVariant[];
58
+ editors: string[];
59
+ createdAt: string;
60
+ updatedAt: string;
61
+ }
62
+ interface ConfigListItem {
63
+ id: string;
64
+ name: string;
65
+ description?: string;
66
+ version: number;
67
+ createdAt: string;
68
+ updatedAt: string;
69
+ }
70
+ interface ConfigListResponse {
71
+ configs: ConfigListItem[];
72
+ }
73
+ interface CreateConfigRequest {
74
+ name: string;
75
+ description: string;
76
+ editors: string[];
77
+ maintainers: string[];
78
+ base: ConfigBase;
79
+ variants: ConfigVariant[];
80
+ }
81
+ interface UpdateConfigRequest {
82
+ description: string;
83
+ editors: string[];
84
+ base: ConfigBase;
85
+ variants: ConfigVariant[];
86
+ }
87
+ interface CreateConfigResponse {
88
+ id: string;
89
+ }
90
+ interface UpdateConfigResponse {
91
+ id: string;
92
+ version: number;
93
+ }
94
+ interface Environment {
95
+ id: string;
96
+ name: string;
97
+ order: number;
98
+ }
99
+ interface EnvironmentListResponse {
100
+ environments: Environment[];
101
+ }
102
+ interface SdkKey {
103
+ id: string;
104
+ name: string;
105
+ description: string;
106
+ environmentId: string;
107
+ createdAt: string;
108
+ }
109
+ interface SdkKeyWithToken extends SdkKey {
110
+ key: string;
111
+ }
112
+ interface SdkKeyListResponse {
113
+ sdkKeys: SdkKey[];
114
+ }
115
+ interface CreateSdkKeyRequest {
116
+ name: string;
117
+ description?: string;
118
+ environmentId: string;
119
+ }
120
+ interface Member {
121
+ email: string;
122
+ role: string;
123
+ }
124
+ interface MemberListResponse {
125
+ members: Member[];
126
+ }
127
+ interface ApiError {
128
+ error: string;
129
+ }
130
+ interface ReplaneAdminOptions {
131
+ /**
132
+ * Admin API key (starts with rpa_)
133
+ */
134
+ apiKey: string;
135
+ /**
136
+ * Base URL for Replane instance
137
+ * @example "https://app.replane.dev"
138
+ */
139
+ baseUrl: string;
140
+ /**
141
+ * Custom agent identifier for tracking SDK usage
142
+ * @default "replane-admin/{version}"
143
+ */
144
+ agent?: string;
145
+ /**
146
+ * Custom fetch function for making HTTP requests.
147
+ * Useful for testing or environments without global fetch.
148
+ * @default globalThis.fetch
149
+ */
150
+ fetchFn?: typeof fetch;
151
+ }
152
+ //# sourceMappingURL=types.d.ts.map
153
+ //#endregion
154
+ //#region src/client.d.ts
155
+ /**
156
+ * Error thrown by the Admin API client
157
+ */
158
+ declare class ReplaneAdminError extends Error {
159
+ readonly status: number;
160
+ readonly response?: ApiError | undefined;
161
+ constructor(message: string, status: number, response?: ApiError | undefined);
162
+ }
163
+ /**
164
+ * Admin API client for Replane
165
+ *
166
+ * Provides programmatic access to manage projects, configs, environments,
167
+ * SDK keys, and members.
168
+ *
169
+ * @example
170
+ * ```typescript
171
+ * import { ReplaneAdmin } from "@replanejs/admin";
172
+ *
173
+ * const admin = new ReplaneAdmin({
174
+ * baseUrl: "https://app.replane.dev",
175
+ * apiKey: "rpa_...",
176
+ * });
177
+ *
178
+ * // List all projects
179
+ * const { projects } = await admin.projects.list();
180
+ *
181
+ * // Create a new config
182
+ * const { id } = await admin.configs.create("project-id", {
183
+ * name: "my-config",
184
+ * description: "My config",
185
+ * editors: [],
186
+ * maintainers: [],
187
+ * base: { value: true, schema: null, overrides: [] },
188
+ * variants: [],
189
+ * });
190
+ * ```
191
+ */
192
+ declare class ReplaneAdmin {
193
+ private readonly apiKey;
194
+ private readonly baseUrl;
195
+ private readonly agent;
196
+ private readonly fetchFn;
197
+ readonly projects: ProjectsApi;
198
+ readonly configs: ConfigsApi;
199
+ readonly environments: EnvironmentsApi;
200
+ readonly sdkKeys: SdkKeysApi;
201
+ readonly members: MembersApi;
202
+ constructor(options: ReplaneAdminOptions);
203
+ /**
204
+ * Make an authenticated request to the Admin API
205
+ * @internal
206
+ */
207
+ request<T>(method: "GET" | "POST" | "PUT" | "DELETE" | "PATCH", path: string, body?: unknown): Promise<T>;
208
+ }
209
+ /**
210
+ * Projects API
211
+ */
212
+ declare class ProjectsApi {
213
+ private readonly client;
214
+ constructor(client: ReplaneAdmin);
215
+ /**
216
+ * List all projects
217
+ */
218
+ list(): Promise<ProjectListResponse>;
219
+ /**
220
+ * Get a project by ID
221
+ */
222
+ get(projectId: string): Promise<Project>;
223
+ /**
224
+ * Create a new project
225
+ */
226
+ create(data: CreateProjectRequest): Promise<CreateProjectResponse>;
227
+ /**
228
+ * Update a project
229
+ */
230
+ update(projectId: string, data: UpdateProjectRequest): Promise<UpdateProjectResponse>;
231
+ /**
232
+ * Delete a project
233
+ */
234
+ delete(projectId: string): Promise<void>;
235
+ }
236
+ /**
237
+ * Configs API
238
+ */
239
+ declare class ConfigsApi {
240
+ private readonly client;
241
+ constructor(client: ReplaneAdmin);
242
+ /**
243
+ * List all configs in a project
244
+ */
245
+ list(projectId: string): Promise<ConfigListResponse>;
246
+ /**
247
+ * Get a config by name
248
+ */
249
+ get(projectId: string, configName: string): Promise<Config>;
250
+ /**
251
+ * Create a new config
252
+ */
253
+ create(projectId: string, data: CreateConfigRequest): Promise<CreateConfigResponse>;
254
+ /**
255
+ * Update a config
256
+ */
257
+ update(projectId: string, configName: string, data: UpdateConfigRequest): Promise<UpdateConfigResponse>;
258
+ /**
259
+ * Delete a config
260
+ */
261
+ delete(projectId: string, configName: string): Promise<void>;
262
+ }
263
+ /**
264
+ * Environments API
265
+ */
266
+ declare class EnvironmentsApi {
267
+ private readonly client;
268
+ constructor(client: ReplaneAdmin);
269
+ /**
270
+ * List all environments in a project
271
+ */
272
+ list(projectId: string): Promise<EnvironmentListResponse>;
273
+ }
274
+ /**
275
+ * SDK Keys API
276
+ */
277
+ declare class SdkKeysApi {
278
+ private readonly client;
279
+ constructor(client: ReplaneAdmin);
280
+ /**
281
+ * List all SDK keys in a project
282
+ */
283
+ list(projectId: string): Promise<SdkKeyListResponse>;
284
+ /**
285
+ * Create a new SDK key
286
+ * Note: The returned key is only shown once and cannot be retrieved again
287
+ */
288
+ create(projectId: string, data: CreateSdkKeyRequest): Promise<SdkKeyWithToken>;
289
+ /**
290
+ * Delete an SDK key
291
+ */
292
+ delete(projectId: string, sdkKeyId: string): Promise<void>;
293
+ }
294
+ /**
295
+ * Members API
296
+ */
297
+ declare class MembersApi {
298
+ private readonly client;
299
+ constructor(client: ReplaneAdmin);
300
+ /**
301
+ * List all members in a project
302
+ */
303
+ list(projectId: string): Promise<MemberListResponse>;
304
+ }
305
+ //#endregion
306
+ //#region src/version.d.ts
307
+ declare const VERSION = "0.8.11";
308
+ declare const DEFAULT_AGENT = "replane-js-admin/0.8.11";
309
+ //# sourceMappingURL=version.d.ts.map
310
+
311
+ //#endregion
312
+ export { type ApiError, type Config, type ConfigBase, type ConfigListItem, type ConfigListResponse, type ConfigSchema, type ConfigValue, type ConfigVariant, type CreateConfigRequest, type CreateConfigResponse, type CreateProjectRequest, type CreateProjectResponse, type CreateSdkKeyRequest, DEFAULT_AGENT, type Environment, type EnvironmentListResponse, type Member, type MemberListResponse, type Override, type OverrideCondition, type Project, type ProjectListResponse, ReplaneAdmin, ReplaneAdminError, type ReplaneAdminOptions, type SdkKey, type SdkKeyListResponse, type SdkKeyWithToken, type UpdateConfigRequest, type UpdateConfigResponse, type UpdateProjectRequest, type UpdateProjectResponse, VERSION };
313
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/client.ts","../src/version.ts"],"sourcesContent":[],"mappings":";;AAMA;AACA;AAEiB,KAHL,WAAA,GAGa,OAAA;AAAA,KAFb,YAAA,GAEa,OAAA;AACZ,UADI,QAAA,CACJ;EAAiB,SACrB,EADI,iBACJ;EAAW,KAAA,EAAX,WAAW;AAGpB;AAOiB,UAPA,iBAAA,CAOO;EAQP,IAAA,EAAA,MAAA;EAKA,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;AAKjB;AAIiB,UAtBA,OAAA,CAsBA;EAIA,EAAA,EAAA,MAAA;EAMA,IAAA,EAAA,MAAA;EAAU,WAAA,EAAA,MAAA;EAAA,SAClB,EAAA,MAAA;EAAW,SACV,EAAA,MAAA;;AACW,UA3BJ,oBAAA,CA2BI;EAGJ,IAAA,EAAA,MAAA;EAAa,WAAA,EAAA,MAAA;;AAGpB,UA5BO,oBAAA,CA4BP;EAAY,IACT,CAAA,EAAA,MAAA;EAAQ,WAAA,CAAA,EAAA,MAAA;AAIrB;AAAuB,UA5BN,mBAAA,CA4BM;EAAA,QAKf,EAhCI,OAgCJ,EAAA;;AACiB,UA9BR,qBAAA,CA8BQ;EAMR,EAAA,EAAA,MAAA;AASjB;AAIiB,UA7CA,qBAAA,CA6CmB;EAAA,EAAA,EAAA,MAAA;;AAMxB,UA7CK,UAAA,CA6CL;EAAa,KAAA,EA5ChB,WA4CgB;EAGR,MAAA,EA9CP,YA8CO,GAAmB,IAAA;EAAA,SAAA,EA7CvB,QA6CuB,EAAA;;AAIxB,UA9CK,aAAA,CA8CL;EAAa,aAAA,EAAA,MAAA;EAGR,KAAA,EA/CR,WA+CQ;EAIA,MAAA,EAlDP,YAkDO,GAAoB,IAAA;EAOpB,SAAA,EAxDJ,QAwDe,EAAA;EAMX,aAAA,EAAA,OAAA;AAMjB;AAQiB,UAxEA,MAAA,CAwEgB;EAIhB,EAAA,EAAA,MAAA;EAIA,IAAA,EAAA,MAAA;EAQA,WAAM,CAAA,EAAA,MAAA;EAKN,OAAA,EAAA,MAAA;EAMA,IAAA,EA9FT,UA8FiB;EAMR,QAAA,EAnGL,aAmGwB,EAAA;;;;AClJpC;AAA+B,UDqDd,cAAA,CCrDc;EAAA,EAAA,EAIA,MAAA;EAAQ,IAAR,EAAA,MAAA;EAAQ,WAJA,CAAA,EAAA,MAAA;EAAK,OAAA,EAAA,MAAA;EAwC/B,SAAA,EAAA,MAAY;EAAA,SAAA,EAAA,MAAA;;AAOE,UDeV,kBAAA,CCfU;EAAU,OACL,EDerB,cCfqB,EAAA;;AAEL,UDgBV,mBAAA,CChBU;EAAU,IAEd,EAAA,MAAA;EAAmB,WAqB7B,EAAA,MAAA;EAAC,OAAT,EAAA,MAAA,EAAA;EAAO,WAAA,EAAA,MAAA,EAAA;EA4CN,IAAA,ED9CE,UC8CS;EAAA,QAAA,ED7CL,aC6CK,EAAA;;AAMO,UDhDP,mBAAA,CCgDO;EAAmB,WAA3B,EAAA,MAAA;EAAO,OAOiB,EAAA,MAAA,EAAA;EAAO,IAAf,EDpDxB,UCoDwB;EAAO,QAOlB,ED1DT,aC0DS,EAAA;;AAAuB,UDvD3B,oBAAA,CCuD2B;EAAO,EAAA,EAOX,MAAA;;AAAuB,UD1D9C,oBAAA,CC0D8C;EAAO,EAAA,EAOnC,MAAA;EAAO,OAAA,EAAA,MAAA;AAAA;AAQ1B,UDlEC,WAAA,CCkED;EAAA,EAAA,EACuB,MAAA;EAAY,IAKV,EAAA,MAAA;EAAkB,KAA1B,EAAA,MAAA;;AAOmB,UDzEnC,uBAAA,CCyEmC;EAAO,YAUnB,EDlFxB,WCkFwB,EAAA;;AAAsB,UD7E7C,MAAA,CC6E6C;EAAO,EAAA,EAc3D,MAAA;EAAmB,IAChB,EAAA,MAAA;EAAoB,WAA5B,EAAA,MAAA;EAAO,aAW2C,EAAA,MAAA;EAAO,SAAA,EAAA,MAAA;AAAA;AAWzC,UD1GJ,eAAA,SAAwB,MC0GpB,CAAA;EAAA,GACkB,EAAA,MAAA;;AAKN,UD5GhB,kBAAA,CC4GgB;EAAO,OAAA,ED3G7B,MC2G6B,EAAA;AAAA;AAWxB,UDnHC,mBAAA,CCmHD;EAAA,IACuB,EAAA,MAAA;EAAY,WAKV,CAAA,EAAA,MAAA;EAAkB,aAA1B,EAAA,MAAA;;AAQqC,UDzHrD,MAAA,CCyHqD;EAAe,KAAvB,EAAA,MAAA;EAAO,IAOhB,EAAA,MAAA;AAAO;AAQtD,UDnIW,kBAAA,CCmID;EAAA,OAAA,EDlIL,MCkIK,EAAA;;AAMyB,UDnIxB,QAAA,CCmIwB;EAAkB,KAA1B,EAAA,MAAA;AAAO;UD7HvB,mBAAA;;;AE3KjB;EACa,MAAA,EAAA,MAAA;;;;;;;;;;;;;;;;mBFiMM;;;;;AA7LnB;AACA;AAEA;AAAyB,cCiBZ,iBAAA,SAA0B,KAAA,CDjBd;EAAA,SACZ,MAAA,EAAA,MAAA;EAAiB,SACrB,QAAA,CAAA,ECmBsB,QDnBtB,GAAA,SAAA;EAAW,WAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,CAAA,ECmBW,QDnBX,GAAA,SAAA;AAGpB;AAOA;AAQA;AAKA;AAKA;AAIA;AAIA;AAMA;;;;;AAGqB;AAGrB;;;;;AAIqB;AAIrB;;;;AAMyB;AAMzB;AASA;AAIA;;;;AAMyB,cChCZ,YAAA,CDgCY;EAGR,iBAAA,MAAmB;EAAA,iBAAA,OAAA;EAAA,iBAG5B,KAAA;EAAU,iBACN,OAAA;EAAa,SAAA,QAAA,ECjCG,WDiCH;EAGR,SAAA,OAAA,ECnCU,UDmCU;EAIpB,SAAA,YAAA,ECtCe,eDsCK;EAOpB,SAAA,OAAW,EC5CD,UD4CC;EAMX,SAAA,OAAA,ECjDU,UDiDa;EAMvB,WAAM,CAAA,OAAA,ECrDA,mBDqDA;EAQN;AAIjB;AAIA;AAQA;EAKiB,OAAA,CAAA,CAAA,CAAA,CAAA,MAAA,EAAA,KAAkB,GAAA,MACxB,GAAA,KAAM,GAAA,QAAA,GAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA,OAAA,CAAA,EC9DZ,OD8DY,CC9DJ,CD8DI,CAAA;AAKjB;AAMA;;;cC7BM,WAAA;EArHO,iBAAA,MAAkB;EAAA,WAAA,CAAA,MAAA,EAsHQ,YAtHR;EAAA;;;EAAa,IAAA,CAAA,CAAA,EA2H5B,OA3H4B,CA2HpB,mBA3HoB,CAAA;EAwC/B;;;EAM0B,GACZ,CAAA,SAAA,EAAA,MAAA,CAAA,EAmFK,OAnFL,CAmFa,OAnFb,CAAA;EAAU;;;EAGA,MAEd,CAAA,IAAA,EAqFF,oBArFE,CAAA,EAqFqB,OArFrB,CAqF6B,qBArF7B,CAAA;EAAmB;;AAqB9B;EA4CN,MAAA,CAAA,SAAW,EAAA,MAAA,EAAA,IAAA,EA2BuB,oBA3BvB,CAAA,EA2B8C,OA3B9C,CA2BsD,qBA3BtD,CAAA;EAAA;;;EAM0B,MAA3B,CAAA,SAAA,EAAA,MAAA,CAAA,EA4BmB,OA5BnB,CAAA,IAAA,CAAA;;;;;cAoCV,UAAA,CAtBsC;EAAO,iBAOX,MAAA;EAAoB,WAAW,CAAA,MAAA,EAgBhC,YAhBgC;EAAqB;;AAOlD;EAQpC,IAAA,CAAA,SAAU,EAAA,MAAA,CAAA,EAMiB,OANjB,CAMyB,kBANzB,CAAA;EAAA;;;EAM2C,GAA1B,CAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAOmB,OAPnB,CAO2B,MAP3B,CAAA;EAAO;;;EAiBmB,MAAW,CAAA,SAAA,EAAA,MAAA,EAAA,IAAA,EAA9B,mBAA8B,CAAA,EAAR,OAAQ,CAAA,oBAAA,CAAA;EAAoB;;;EAezD,MAA5B,CAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,IAAA,EADK,mBACL,CAAA,EAAA,OAAA,CAAQ,oBAAR,CAAA;EAAO;AAWkD;AAAA;EAWzC,MAAA,CAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAXkC,OAWlC,CAAA,IAAA,CAAA;;;;AAMmB;AAAA,cANlC,eAAA,CAiBU;EAAA,iBAAA,MAAA;EAAA,WACuB,CAAA,MAAA,EAjBA,YAiBA;EAAY;;;EAaQ,IAAW,CAAA,SAAA,EAAA,MAAA,CAAA,EAzBrC,OAyBqC,CAzB7B,uBAyB6B,CAAA;;;AAOV;AAAA;cArBtD,UAAA,CA6BU;EAAA,iBACuB,MAAA;EAAY,WAKV,CAAA,MAAA,EAlCF,YAkCE;EAAkB;AAAnB;;2BA7BP,QAAQ;;AC3QzC;AACA;;kCDkRwC,sBAAsB,QAAQ;;;;+CAOjB;;;;;cAQ/C,UAAA;;sBACiC;;;;2BAKN,QAAQ;;;;cCxS5B,OAAA;AFKD,cEJC,aAAA,GFIU,yBAAA;AACvB"}
package/dist/index.js ADDED
@@ -0,0 +1,229 @@
1
+ //#region src/version.ts
2
+ const VERSION = "0.8.11";
3
+ const DEFAULT_AGENT = `replane-js-admin/${VERSION}`;
4
+
5
+ //#endregion
6
+ //#region src/client.ts
7
+ /**
8
+ * Error thrown by the Admin API client
9
+ */
10
+ var ReplaneAdminError = class extends Error {
11
+ constructor(message, status, response) {
12
+ super(message);
13
+ this.status = status;
14
+ this.response = response;
15
+ this.name = "ReplaneAdminError";
16
+ }
17
+ };
18
+ /**
19
+ * Admin API client for Replane
20
+ *
21
+ * Provides programmatic access to manage projects, configs, environments,
22
+ * SDK keys, and members.
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * import { ReplaneAdmin } from "@replanejs/admin";
27
+ *
28
+ * const admin = new ReplaneAdmin({
29
+ * baseUrl: "https://app.replane.dev",
30
+ * apiKey: "rpa_...",
31
+ * });
32
+ *
33
+ * // List all projects
34
+ * const { projects } = await admin.projects.list();
35
+ *
36
+ * // Create a new config
37
+ * const { id } = await admin.configs.create("project-id", {
38
+ * name: "my-config",
39
+ * description: "My config",
40
+ * editors: [],
41
+ * maintainers: [],
42
+ * base: { value: true, schema: null, overrides: [] },
43
+ * variants: [],
44
+ * });
45
+ * ```
46
+ */
47
+ var ReplaneAdmin = class {
48
+ apiKey;
49
+ baseUrl;
50
+ agent;
51
+ fetchFn;
52
+ projects;
53
+ configs;
54
+ environments;
55
+ sdkKeys;
56
+ members;
57
+ constructor(options) {
58
+ this.apiKey = options.apiKey;
59
+ this.baseUrl = `${options.baseUrl.replace(/\/$/, "")}/api/admin/v1`;
60
+ this.agent = options.agent ?? DEFAULT_AGENT;
61
+ this.fetchFn = options.fetchFn ?? globalThis.fetch;
62
+ this.projects = new ProjectsApi(this);
63
+ this.configs = new ConfigsApi(this);
64
+ this.environments = new EnvironmentsApi(this);
65
+ this.sdkKeys = new SdkKeysApi(this);
66
+ this.members = new MembersApi(this);
67
+ }
68
+ /**
69
+ * Make an authenticated request to the Admin API
70
+ * @internal
71
+ */
72
+ async request(method, path, body) {
73
+ const url = `${this.baseUrl}${path}`;
74
+ const headers = {
75
+ Authorization: `Bearer ${this.apiKey}`,
76
+ "User-Agent": this.agent
77
+ };
78
+ if (body !== void 0) headers["Content-Type"] = "application/json";
79
+ const response = await this.fetchFn(url, {
80
+ method,
81
+ headers,
82
+ body: body !== void 0 ? JSON.stringify(body) : void 0
83
+ });
84
+ if (!response.ok) {
85
+ let errorResponse;
86
+ try {
87
+ errorResponse = await response.json();
88
+ } catch {}
89
+ throw new ReplaneAdminError(errorResponse?.error ?? `Request failed with status ${response.status}`, response.status, errorResponse);
90
+ }
91
+ if (response.status === 204) return void 0;
92
+ return response.json();
93
+ }
94
+ };
95
+ /**
96
+ * Projects API
97
+ */
98
+ var ProjectsApi = class {
99
+ constructor(client) {
100
+ this.client = client;
101
+ }
102
+ /**
103
+ * List all projects
104
+ */
105
+ async list() {
106
+ return this.client.request("GET", "/projects");
107
+ }
108
+ /**
109
+ * Get a project by ID
110
+ */
111
+ async get(projectId) {
112
+ return this.client.request("GET", `/projects/${projectId}`);
113
+ }
114
+ /**
115
+ * Create a new project
116
+ */
117
+ async create(data) {
118
+ return this.client.request("POST", "/projects", data);
119
+ }
120
+ /**
121
+ * Update a project
122
+ */
123
+ async update(projectId, data) {
124
+ return this.client.request("PATCH", `/projects/${projectId}`, data);
125
+ }
126
+ /**
127
+ * Delete a project
128
+ */
129
+ async delete(projectId) {
130
+ return this.client.request("DELETE", `/projects/${projectId}`);
131
+ }
132
+ };
133
+ /**
134
+ * Configs API
135
+ */
136
+ var ConfigsApi = class {
137
+ constructor(client) {
138
+ this.client = client;
139
+ }
140
+ /**
141
+ * List all configs in a project
142
+ */
143
+ async list(projectId) {
144
+ return this.client.request("GET", `/projects/${projectId}/configs`);
145
+ }
146
+ /**
147
+ * Get a config by name
148
+ */
149
+ async get(projectId, configName) {
150
+ return this.client.request("GET", `/projects/${projectId}/configs/${encodeURIComponent(configName)}`);
151
+ }
152
+ /**
153
+ * Create a new config
154
+ */
155
+ async create(projectId, data) {
156
+ return this.client.request("POST", `/projects/${projectId}/configs`, data);
157
+ }
158
+ /**
159
+ * Update a config
160
+ */
161
+ async update(projectId, configName, data) {
162
+ return this.client.request("PUT", `/projects/${projectId}/configs/${encodeURIComponent(configName)}`, data);
163
+ }
164
+ /**
165
+ * Delete a config
166
+ */
167
+ async delete(projectId, configName) {
168
+ return this.client.request("DELETE", `/projects/${projectId}/configs/${encodeURIComponent(configName)}`);
169
+ }
170
+ };
171
+ /**
172
+ * Environments API
173
+ */
174
+ var EnvironmentsApi = class {
175
+ constructor(client) {
176
+ this.client = client;
177
+ }
178
+ /**
179
+ * List all environments in a project
180
+ */
181
+ async list(projectId) {
182
+ return this.client.request("GET", `/projects/${projectId}/environments`);
183
+ }
184
+ };
185
+ /**
186
+ * SDK Keys API
187
+ */
188
+ var SdkKeysApi = class {
189
+ constructor(client) {
190
+ this.client = client;
191
+ }
192
+ /**
193
+ * List all SDK keys in a project
194
+ */
195
+ async list(projectId) {
196
+ return this.client.request("GET", `/projects/${projectId}/sdk-keys`);
197
+ }
198
+ /**
199
+ * Create a new SDK key
200
+ * Note: The returned key is only shown once and cannot be retrieved again
201
+ */
202
+ async create(projectId, data) {
203
+ return this.client.request("POST", `/projects/${projectId}/sdk-keys`, data);
204
+ }
205
+ /**
206
+ * Delete an SDK key
207
+ */
208
+ async delete(projectId, sdkKeyId) {
209
+ return this.client.request("DELETE", `/projects/${projectId}/sdk-keys/${sdkKeyId}`);
210
+ }
211
+ };
212
+ /**
213
+ * Members API
214
+ */
215
+ var MembersApi = class {
216
+ constructor(client) {
217
+ this.client = client;
218
+ }
219
+ /**
220
+ * List all members in a project
221
+ */
222
+ async list(projectId) {
223
+ return this.client.request("GET", `/projects/${projectId}/members`);
224
+ }
225
+ };
226
+
227
+ //#endregion
228
+ export { DEFAULT_AGENT, ReplaneAdmin, ReplaneAdminError, VERSION };
229
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["message: string","status: number","response?: ApiError","options: ReplaneAdminOptions","method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\"","path: string","body?: unknown","headers: Record<string, string>","errorResponse: ApiError | undefined","client: ReplaneAdmin","projectId: string","data: CreateProjectRequest","data: UpdateProjectRequest","configName: string","data: CreateConfigRequest","data: UpdateConfigRequest","data: CreateSdkKeyRequest","sdkKeyId: string"],"sources":["../src/version.ts","../src/client.ts"],"sourcesContent":["// Auto-generated - do not edit manually\nexport const VERSION = \"0.8.11\";\nexport const DEFAULT_AGENT = `replane-js-admin/${VERSION}`;\n","import type {\n ReplaneAdminOptions,\n Project,\n ProjectListResponse,\n CreateProjectRequest,\n CreateProjectResponse,\n UpdateProjectRequest,\n UpdateProjectResponse,\n Config,\n ConfigListResponse,\n CreateConfigRequest,\n CreateConfigResponse,\n UpdateConfigRequest,\n UpdateConfigResponse,\n EnvironmentListResponse,\n SdkKeyListResponse,\n SdkKeyWithToken,\n CreateSdkKeyRequest,\n MemberListResponse,\n ApiError,\n} from \"./types.js\";\nimport { DEFAULT_AGENT } from \"./version.js\";\n\n/**\n * Error thrown by the Admin API client\n */\nexport class ReplaneAdminError extends Error {\n constructor(\n message: string,\n public readonly status: number,\n public readonly response?: ApiError\n ) {\n super(message);\n this.name = \"ReplaneAdminError\";\n }\n}\n\n/**\n * Admin API client for Replane\n *\n * Provides programmatic access to manage projects, configs, environments,\n * SDK keys, and members.\n *\n * @example\n * ```typescript\n * import { ReplaneAdmin } from \"@replanejs/admin\";\n *\n * const admin = new ReplaneAdmin({\n * baseUrl: \"https://app.replane.dev\",\n * apiKey: \"rpa_...\",\n * });\n *\n * // List all projects\n * const { projects } = await admin.projects.list();\n *\n * // Create a new config\n * const { id } = await admin.configs.create(\"project-id\", {\n * name: \"my-config\",\n * description: \"My config\",\n * editors: [],\n * maintainers: [],\n * base: { value: true, schema: null, overrides: [] },\n * variants: [],\n * });\n * ```\n */\nexport class ReplaneAdmin {\n private readonly apiKey: string;\n private readonly baseUrl: string;\n private readonly agent: string;\n private readonly fetchFn: typeof fetch;\n\n public readonly projects: ProjectsApi;\n public readonly configs: ConfigsApi;\n public readonly environments: EnvironmentsApi;\n public readonly sdkKeys: SdkKeysApi;\n public readonly members: MembersApi;\n\n constructor(options: ReplaneAdminOptions) {\n this.apiKey = options.apiKey;\n this.baseUrl = `${options.baseUrl.replace(/\\/$/, \"\")}/api/admin/v1`;\n this.agent = options.agent ?? DEFAULT_AGENT;\n this.fetchFn = options.fetchFn ?? globalThis.fetch;\n\n this.projects = new ProjectsApi(this);\n this.configs = new ConfigsApi(this);\n this.environments = new EnvironmentsApi(this);\n this.sdkKeys = new SdkKeysApi(this);\n this.members = new MembersApi(this);\n }\n\n /**\n * Make an authenticated request to the Admin API\n * @internal\n */\n async request<T>(\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\",\n path: string,\n body?: unknown\n ): Promise<T> {\n const url = `${this.baseUrl}${path}`;\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n \"User-Agent\": this.agent,\n };\n\n if (body !== undefined) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n\n const response = await this.fetchFn(url, {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n\n if (!response.ok) {\n let errorResponse: ApiError | undefined;\n try {\n errorResponse = await response.json();\n } catch {\n // Ignore JSON parse errors\n }\n throw new ReplaneAdminError(\n errorResponse?.error ?? `Request failed with status ${response.status}`,\n response.status,\n errorResponse\n );\n }\n\n // Handle 204 No Content\n if (response.status === 204) {\n return undefined as T;\n }\n\n return response.json();\n }\n}\n\n/**\n * Projects API\n */\nclass ProjectsApi {\n constructor(private readonly client: ReplaneAdmin) {}\n\n /**\n * List all projects\n */\n async list(): Promise<ProjectListResponse> {\n return this.client.request<ProjectListResponse>(\"GET\", \"/projects\");\n }\n\n /**\n * Get a project by ID\n */\n async get(projectId: string): Promise<Project> {\n return this.client.request<Project>(\"GET\", `/projects/${projectId}`);\n }\n\n /**\n * Create a new project\n */\n async create(data: CreateProjectRequest): Promise<CreateProjectResponse> {\n return this.client.request<CreateProjectResponse>(\"POST\", \"/projects\", data);\n }\n\n /**\n * Update a project\n */\n async update(projectId: string, data: UpdateProjectRequest): Promise<UpdateProjectResponse> {\n return this.client.request<UpdateProjectResponse>(\"PATCH\", `/projects/${projectId}`, data);\n }\n\n /**\n * Delete a project\n */\n async delete(projectId: string): Promise<void> {\n return this.client.request<void>(\"DELETE\", `/projects/${projectId}`);\n }\n}\n\n/**\n * Configs API\n */\nclass ConfigsApi {\n constructor(private readonly client: ReplaneAdmin) {}\n\n /**\n * List all configs in a project\n */\n async list(projectId: string): Promise<ConfigListResponse> {\n return this.client.request<ConfigListResponse>(\"GET\", `/projects/${projectId}/configs`);\n }\n\n /**\n * Get a config by name\n */\n async get(projectId: string, configName: string): Promise<Config> {\n return this.client.request<Config>(\n \"GET\",\n `/projects/${projectId}/configs/${encodeURIComponent(configName)}`\n );\n }\n\n /**\n * Create a new config\n */\n async create(projectId: string, data: CreateConfigRequest): Promise<CreateConfigResponse> {\n return this.client.request<CreateConfigResponse>(\n \"POST\",\n `/projects/${projectId}/configs`,\n data\n );\n }\n\n /**\n * Update a config\n */\n async update(\n projectId: string,\n configName: string,\n data: UpdateConfigRequest\n ): Promise<UpdateConfigResponse> {\n return this.client.request<UpdateConfigResponse>(\n \"PUT\",\n `/projects/${projectId}/configs/${encodeURIComponent(configName)}`,\n data\n );\n }\n\n /**\n * Delete a config\n */\n async delete(projectId: string, configName: string): Promise<void> {\n return this.client.request<void>(\n \"DELETE\",\n `/projects/${projectId}/configs/${encodeURIComponent(configName)}`\n );\n }\n}\n\n/**\n * Environments API\n */\nclass EnvironmentsApi {\n constructor(private readonly client: ReplaneAdmin) {}\n\n /**\n * List all environments in a project\n */\n async list(projectId: string): Promise<EnvironmentListResponse> {\n return this.client.request<EnvironmentListResponse>(\n \"GET\",\n `/projects/${projectId}/environments`\n );\n }\n}\n\n/**\n * SDK Keys API\n */\nclass SdkKeysApi {\n constructor(private readonly client: ReplaneAdmin) {}\n\n /**\n * List all SDK keys in a project\n */\n async list(projectId: string): Promise<SdkKeyListResponse> {\n return this.client.request<SdkKeyListResponse>(\"GET\", `/projects/${projectId}/sdk-keys`);\n }\n\n /**\n * Create a new SDK key\n * Note: The returned key is only shown once and cannot be retrieved again\n */\n async create(projectId: string, data: CreateSdkKeyRequest): Promise<SdkKeyWithToken> {\n return this.client.request<SdkKeyWithToken>(\"POST\", `/projects/${projectId}/sdk-keys`, data);\n }\n\n /**\n * Delete an SDK key\n */\n async delete(projectId: string, sdkKeyId: string): Promise<void> {\n return this.client.request<void>(\"DELETE\", `/projects/${projectId}/sdk-keys/${sdkKeyId}`);\n }\n}\n\n/**\n * Members API\n */\nclass MembersApi {\n constructor(private readonly client: ReplaneAdmin) {}\n\n /**\n * List all members in a project\n */\n async list(projectId: string): Promise<MemberListResponse> {\n return this.client.request<MemberListResponse>(\"GET\", `/projects/${projectId}/members`);\n }\n}\n"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@replanejs/admin",
3
+ "version": "0.8.11",
4
+ "description": "Admin API SDK for Replane - programmatic management of projects, configs, environments, and SDK keys",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.cjs"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "sideEffects": false,
20
+ "keywords": [
21
+ "replane",
22
+ "admin",
23
+ "api",
24
+ "sdk",
25
+ "feature-flags",
26
+ "remote-config",
27
+ "configuration",
28
+ "management"
29
+ ],
30
+ "author": "",
31
+ "license": "MIT",
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "https://github.com/replane-dev/replane-javascript",
35
+ "directory": "packages/admin"
36
+ },
37
+ "bugs": {
38
+ "url": "https://github.com/replane-dev/replane-javascript/issues"
39
+ },
40
+ "homepage": "https://github.com/replane-dev/replane-javascript#readme",
41
+ "devDependencies": {
42
+ "tsdown": "^0.11.9",
43
+ "typescript": "^5.4.0",
44
+ "vitest": "^3.2.4"
45
+ },
46
+ "engines": {
47
+ "node": ">=18.0.0"
48
+ },
49
+ "publishConfig": {
50
+ "access": "public"
51
+ },
52
+ "scripts": {
53
+ "prebuild": "node ../../scripts/update-version.js .",
54
+ "build": "tsdown",
55
+ "dev": "tsdown --watch",
56
+ "test": "vitest run",
57
+ "typecheck": "tsc --noEmit"
58
+ }
59
+ }