@neon/sdk 1.5.0 → 2.0.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.
- package/README.md +194 -28
- package/dist/client/client/client.gen.js +1 -3
- package/dist/client/client/client.gen.js.map +1 -1
- package/dist/client/client/utils.gen.js +1 -3
- package/dist/client/client/utils.gen.js.map +1 -1
- package/dist/client/index.d.ts +3 -3
- package/dist/client/index.js +2 -2
- package/dist/client/raw.gen.d.ts +146 -16
- package/dist/client/raw.gen.d.ts.map +1 -1
- package/dist/client/raw.gen.js +8 -3
- package/dist/client/raw.gen.js.map +1 -1
- package/dist/client/sdk.gen.d.ts +137 -78
- package/dist/client/sdk.gen.d.ts.map +1 -1
- package/dist/client/sdk.gen.js +258 -96
- package/dist/client/sdk.gen.js.map +1 -1
- package/dist/client/types.gen.d.ts +1397 -315
- package/dist/client/types.gen.d.ts.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/neon/client.d.ts +2 -0
- package/dist/neon/client.d.ts.map +1 -1
- package/dist/neon/client.js +2 -0
- package/dist/neon/client.js.map +1 -1
- package/dist/neon/context.js +2 -1
- package/dist/neon/context.js.map +1 -1
- package/dist/neon/coverage.d.ts.map +1 -1
- package/dist/neon/coverage.js +12 -2
- package/dist/neon/coverage.js.map +1 -1
- package/dist/neon/paginate.d.ts.map +1 -1
- package/dist/neon/paginate.js +5 -2
- package/dist/neon/paginate.js.map +1 -1
- package/dist/neon/resources/branches.d.ts +0 -7
- package/dist/neon/resources/branches.d.ts.map +1 -1
- package/dist/neon/resources/branches.js +6 -15
- package/dist/neon/resources/branches.js.map +1 -1
- package/dist/neon/resources/logs.d.ts +76 -0
- package/dist/neon/resources/logs.d.ts.map +1 -0
- package/dist/neon/resources/logs.js +90 -0
- package/dist/neon/resources/logs.js.map +1 -0
- package/dist/neon/resources/postgres.js +2 -1
- package/dist/neon/resources/postgres.js.map +1 -1
- package/dist/neon/resources/projects.d.ts +61 -4
- package/dist/neon/resources/projects.d.ts.map +1 -1
- package/dist/neon/resources/projects.js +71 -5
- package/dist/neon/resources/projects.js.map +1 -1
- package/dist/raw.d.ts +3 -3
- package/dist/raw.js +8 -3
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ListProjectsData, Project, ProjectCreateRequest, ProjectListItem, ProjectPermission, ProjectUpdateRequest } from "../../client/types.gen.js";
|
|
1
|
+
import { ListProjectMembersData, ListProjectsData, Project, ProjectCreateRequest, ProjectListItem, ProjectMember, ProjectMemberRoleResponse, ProjectPermission, ProjectRole, ProjectUpdateRequest } from "../../client/types.gen.js";
|
|
2
2
|
import { Outcome } from "../result.js";
|
|
3
3
|
import { CallOptions, RequestContext } from "../context.js";
|
|
4
4
|
import { Paginated } from "../paginate.js";
|
|
@@ -15,6 +15,23 @@ interface TransferProjectsInput {
|
|
|
15
15
|
type ListQuery = Omit<NonNullable<ListProjectsData["query"]>, "cursor">;
|
|
16
16
|
type CreateInput = ProjectCreateRequest["project"];
|
|
17
17
|
type UpdateInput = ProjectUpdateRequest["project"];
|
|
18
|
+
type MemberListQuery = Omit<NonNullable<ListProjectMembersData["query"]>, "cursor">;
|
|
19
|
+
/** Per-call options for {@link Members.setRole}. */
|
|
20
|
+
interface SetRoleOptions<Throw extends boolean = boolean> extends CallOptions<Throw> {
|
|
21
|
+
/**
|
|
22
|
+
* Acknowledge that the call lowers the caller's own role. The API rejects a
|
|
23
|
+
* self-demotion without it, so it is left off by default.
|
|
24
|
+
*/
|
|
25
|
+
confirmSelfDemotion?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/** Per-call options for {@link Members.removeRole}. */
|
|
28
|
+
interface RemoveRoleOptions<Throw extends boolean = boolean> extends CallOptions<Throw> {
|
|
29
|
+
/**
|
|
30
|
+
* Acknowledge that the call can cost the caller management access. The API
|
|
31
|
+
* rejects such a self-removal without it, so it is left off by default.
|
|
32
|
+
*/
|
|
33
|
+
confirmSelfLockout?: boolean;
|
|
34
|
+
}
|
|
18
35
|
/** Per-call options for the connect workflow. */
|
|
19
36
|
interface WorkflowOptions<Throw extends boolean> extends CallOptions<Throw> {
|
|
20
37
|
/** Return a pooled connection string (default `true`). */
|
|
@@ -39,11 +56,52 @@ declare class Permissions<DThrow extends boolean> {
|
|
|
39
56
|
revoke(projectId: string, permissionId: string): Promise<Outcome<ProjectPermission, DThrow>>;
|
|
40
57
|
revoke<Throw extends boolean = DThrow>(projectId: string, permissionId: string, opts: CallOptions<Throw>): Promise<Outcome<ProjectPermission, Throw>>;
|
|
41
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Per-project roles for members of the owning organization.
|
|
61
|
+
*
|
|
62
|
+
* Distinct from {@link Permissions}, which shares a project with an individual by
|
|
63
|
+
* email address: these act on existing org members by member id, and clearing a
|
|
64
|
+
* grant leaves the member's organization-role default in force rather than
|
|
65
|
+
* removing their access.
|
|
66
|
+
*/
|
|
67
|
+
declare class Members<DThrow extends boolean> {
|
|
68
|
+
#private;
|
|
69
|
+
constructor(ctx: RequestContext);
|
|
70
|
+
/**
|
|
71
|
+
* List org members and their project roles (cursor-paginated). Org-owned
|
|
72
|
+
* projects only — a personal project answers `404`, as does an org with
|
|
73
|
+
* per-project role management disabled.
|
|
74
|
+
*
|
|
75
|
+
* @apiCall GET /projects/{project_id}/members (cursor-paginated)
|
|
76
|
+
*/
|
|
77
|
+
list(projectId: string, query?: MemberListQuery, opts?: CallOptions): Paginated<ProjectMember>;
|
|
78
|
+
/**
|
|
79
|
+
* Set a member's explicit project role, replacing any existing grant.
|
|
80
|
+
* Idempotent. Check `credential_rotation_recommended` and
|
|
81
|
+
* `org_api_key_rotation_recommended` on the result — a downgrade can leave
|
|
82
|
+
* credentials the member still holds.
|
|
83
|
+
*
|
|
84
|
+
* @apiCall PUT /projects/{project_id}/members/{member_id}/role
|
|
85
|
+
*/
|
|
86
|
+
setRole(projectId: string, memberId: string, role: ProjectRole): Promise<Outcome<ProjectMemberRoleResponse, DThrow>>;
|
|
87
|
+
setRole<Throw extends boolean = DThrow>(projectId: string, memberId: string, role: ProjectRole, opts: SetRoleOptions<Throw>): Promise<Outcome<ProjectMemberRoleResponse, Throw>>;
|
|
88
|
+
/**
|
|
89
|
+
* Clear a member's explicit project grant. Idempotent, and a no-op when no
|
|
90
|
+
* explicit grant exists. The member keeps whatever their organization role
|
|
91
|
+
* grants by default, so this narrows access rather than removing it.
|
|
92
|
+
*
|
|
93
|
+
* @apiCall DELETE /projects/{project_id}/members/{member_id}/role
|
|
94
|
+
*/
|
|
95
|
+
removeRole(projectId: string, memberId: string): Promise<Outcome<ProjectMemberRoleResponse, DThrow>>;
|
|
96
|
+
removeRole<Throw extends boolean = DThrow>(projectId: string, memberId: string, opts: RemoveRoleOptions<Throw>): Promise<Outcome<ProjectMemberRoleResponse, Throw>>;
|
|
97
|
+
}
|
|
42
98
|
/** Project resource — one API call per method (`list` is cursor-paginated). */
|
|
43
99
|
declare class Projects<DThrow extends boolean> {
|
|
44
100
|
#private;
|
|
45
101
|
/** Project access grants (share by email). */
|
|
46
102
|
readonly permissions: Permissions<DThrow>;
|
|
103
|
+
/** Per-project roles for members of the owning organization. */
|
|
104
|
+
readonly members: Members<DThrow>;
|
|
47
105
|
constructor(ctx: RequestContext);
|
|
48
106
|
/**
|
|
49
107
|
* List projects (cursor-paginated). Returns a lazy list — `await .all()`, `.page()`,
|
|
@@ -74,8 +132,7 @@ declare class Projects<DThrow extends boolean> {
|
|
|
74
132
|
delete(id: string): Promise<Outcome<Project, DThrow>>;
|
|
75
133
|
delete<Throw extends boolean = DThrow>(id: string, opts: CallOptions<Throw>): Promise<Outcome<Project, Throw>>;
|
|
76
134
|
/**
|
|
77
|
-
* Recover a soft-deleted project within its retention window (beta).
|
|
78
|
-
* `branches.recover` at the project level.
|
|
135
|
+
* Recover a soft-deleted project within its retention window (beta).
|
|
79
136
|
*
|
|
80
137
|
* @apiCall POST /projects/{project_id}/recover
|
|
81
138
|
*/
|
|
@@ -104,5 +161,5 @@ declare class Projects<DThrow extends boolean> {
|
|
|
104
161
|
}, opts: CallOptions<Throw>): Promise<Outcome<void, Throw>>;
|
|
105
162
|
}
|
|
106
163
|
//#endregion
|
|
107
|
-
export { Permissions, ProjectConnection, Projects, TransferProjectsInput };
|
|
164
|
+
export { Members, Permissions, ProjectConnection, Projects, RemoveRoleOptions, SetRoleOptions, TransferProjectsInput };
|
|
108
165
|
//# sourceMappingURL=projects.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.d.ts","names":[],"sources":["../../../src/neon/resources/projects.ts"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"projects.d.ts","names":[],"sources":["../../../src/neon/resources/projects.ts"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NeonError } from "../errors.js";
|
|
2
2
|
import { err, finalize } from "../result.js";
|
|
3
|
-
import { createProject, deleteProject, getProject, grantPermissionToProject, listProjectPermissions, listProjects, recoverProject, revokePermissionFromProject, transferProjectsFromOrgToOrg, transferProjectsFromUserToOrg, updateProject } from "../../client/sdk.gen.js";
|
|
3
|
+
import { createProject, deleteProject, getProject, grantPermissionToProject, listProjectMembers, listProjectPermissions, listProjects, recoverProject, removeProjectMemberRole, revokePermissionFromProject, setProjectMemberRole, transferProjectsFromOrgToOrg, transferProjectsFromUserToOrg, updateProject } from "../../client/sdk.gen.js";
|
|
4
4
|
import { withConnectionString } from "../connection.js";
|
|
5
5
|
import { paginate } from "../paginate.js";
|
|
6
6
|
//#region src/neon/resources/projects.ts
|
|
@@ -39,14 +39,78 @@ var Permissions = class {
|
|
|
39
39
|
}), (data) => data);
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
|
+
/**
|
|
43
|
+
* Per-project roles for members of the owning organization.
|
|
44
|
+
*
|
|
45
|
+
* Distinct from {@link Permissions}, which shares a project with an individual by
|
|
46
|
+
* email address: these act on existing org members by member id, and clearing a
|
|
47
|
+
* grant leaves the member's organization-role default in force rather than
|
|
48
|
+
* removing their access.
|
|
49
|
+
*/
|
|
50
|
+
var Members = class {
|
|
51
|
+
#ctx;
|
|
52
|
+
constructor(ctx) {
|
|
53
|
+
this.#ctx = ctx;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* List org members and their project roles (cursor-paginated). Org-owned
|
|
57
|
+
* projects only — a personal project answers `404`, as does an org with
|
|
58
|
+
* per-project role management disabled.
|
|
59
|
+
*
|
|
60
|
+
* @apiCall GET /projects/{project_id}/members (cursor-paginated)
|
|
61
|
+
*/
|
|
62
|
+
list(projectId, query, opts) {
|
|
63
|
+
return paginate((cursor, signal) => listProjectMembers({
|
|
64
|
+
client: this.#ctx.client,
|
|
65
|
+
path: { project_id: projectId },
|
|
66
|
+
query: {
|
|
67
|
+
...query,
|
|
68
|
+
cursor
|
|
69
|
+
},
|
|
70
|
+
throwOnError: false,
|
|
71
|
+
signal
|
|
72
|
+
}), (data) => ({
|
|
73
|
+
items: data?.project_members ?? [],
|
|
74
|
+
cursor: data?.pagination?.next
|
|
75
|
+
}), () => this.#ctx.deadlineFor(opts));
|
|
76
|
+
}
|
|
77
|
+
setRole(projectId, memberId, role, opts) {
|
|
78
|
+
return this.#ctx.run(opts, (client, signal) => setProjectMemberRole({
|
|
79
|
+
client,
|
|
80
|
+
path: {
|
|
81
|
+
project_id: projectId,
|
|
82
|
+
member_id: memberId
|
|
83
|
+
},
|
|
84
|
+
query: opts?.confirmSelfDemotion ? { confirm_self_demotion: true } : void 0,
|
|
85
|
+
body: { role },
|
|
86
|
+
throwOnError: false,
|
|
87
|
+
signal
|
|
88
|
+
}), (data) => data);
|
|
89
|
+
}
|
|
90
|
+
removeRole(projectId, memberId, opts) {
|
|
91
|
+
return this.#ctx.run(opts, (client, signal) => removeProjectMemberRole({
|
|
92
|
+
client,
|
|
93
|
+
path: {
|
|
94
|
+
project_id: projectId,
|
|
95
|
+
member_id: memberId
|
|
96
|
+
},
|
|
97
|
+
query: opts?.confirmSelfLockout ? { confirm_self_lockout: true } : void 0,
|
|
98
|
+
throwOnError: false,
|
|
99
|
+
signal
|
|
100
|
+
}), (data) => data);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
42
103
|
/** Project resource — one API call per method (`list` is cursor-paginated). */
|
|
43
104
|
var Projects = class {
|
|
44
105
|
#ctx;
|
|
45
106
|
/** Project access grants (share by email). */
|
|
46
107
|
permissions;
|
|
108
|
+
/** Per-project roles for members of the owning organization. */
|
|
109
|
+
members;
|
|
47
110
|
constructor(ctx) {
|
|
48
111
|
this.#ctx = ctx;
|
|
49
112
|
this.permissions = new Permissions(ctx);
|
|
113
|
+
this.members = new Members(ctx);
|
|
50
114
|
}
|
|
51
115
|
/**
|
|
52
116
|
* List projects (cursor-paginated). Returns a lazy list — `await .all()`, `.page()`,
|
|
@@ -90,7 +154,7 @@ var Projects = class {
|
|
|
90
154
|
}
|
|
91
155
|
async createAndConnect(input, opts) {
|
|
92
156
|
const shouldThrow = opts?.throwOnError ?? this.#ctx.defaults.throwOnError;
|
|
93
|
-
|
|
157
|
+
const result = await this.#ctx.execute({
|
|
94
158
|
...opts,
|
|
95
159
|
waitForReadiness: opts?.waitForReadiness ?? true
|
|
96
160
|
}, (client, signal) => createProject({
|
|
@@ -101,10 +165,12 @@ var Projects = class {
|
|
|
101
165
|
} },
|
|
102
166
|
throwOnError: false,
|
|
103
167
|
signal
|
|
104
|
-
}), (data) => data)
|
|
168
|
+
}), (data) => data);
|
|
169
|
+
const out = withConnectionString(result, (data) => data.connection_uris, (data, connectionString) => ({
|
|
105
170
|
project: data.project,
|
|
106
171
|
connectionString
|
|
107
|
-
}), opts?.pooled ?? true)
|
|
172
|
+
}), opts?.pooled ?? true);
|
|
173
|
+
return finalize(out, shouldThrow);
|
|
108
174
|
}
|
|
109
175
|
update(id, input, opts) {
|
|
110
176
|
return this.#ctx.run(opts, (client, signal) => updateProject({
|
|
@@ -159,6 +225,6 @@ var Projects = class {
|
|
|
159
225
|
}
|
|
160
226
|
};
|
|
161
227
|
//#endregion
|
|
162
|
-
export { Permissions, Projects };
|
|
228
|
+
export { Members, Permissions, Projects };
|
|
163
229
|
|
|
164
230
|
//# sourceMappingURL=projects.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.js","names":["#ctx"],"sources":["../../../src/neon/resources/projects.ts"],"sourcesContent":["import {\n\tcreateProject,\n\tdeleteProject,\n\tgetProject,\n\tgrantPermissionToProject,\n\tlistProjectPermissions,\n\tlistProjects,\n\trecoverProject,\n\trevokePermissionFromProject,\n\ttransferProjectsFromOrgToOrg,\n\ttransferProjectsFromUserToOrg,\n\tupdateProject,\n} from \"../../client/sdk.gen.js\";\nimport type {\n\tListProjectsData,\n\tProject,\n\tProjectCreateRequest,\n\tProjectListItem,\n\tProjectPermission,\n\tProjectUpdateRequest,\n} from \"../../client/types.gen.js\";\nimport { withConnectionString } from \"../connection.js\";\nimport type { CallOptions, RequestContext } from \"../context.js\";\nimport { NeonError } from \"../errors.js\";\nimport { type Paginated, paginate } from \"../paginate.js\";\nimport { err, finalize, type NeonResult, type Outcome } from \"../result.js\";\n\n/** Input for {@link Projects.transfer} (org → org). */\nexport interface TransferProjectsInput {\n\t/** Source org. Defaults to the client's `orgId`. */\n\tfromOrgId?: string;\n\t/** Destination org. */\n\ttoOrgId: string;\n\tprojectIds: string[];\n}\n\ntype ListQuery = Omit<NonNullable<ListProjectsData[\"query\"]>, \"cursor\">;\ntype CreateInput = ProjectCreateRequest[\"project\"];\ntype UpdateInput = ProjectUpdateRequest[\"project\"];\n\n/** Per-call options for the connect workflow. */\ninterface WorkflowOptions<Throw extends boolean> extends CallOptions<Throw> {\n\t/** Return a pooled connection string (default `true`). */\n\tpooled?: boolean;\n}\n\n/** A project with a ready-to-use connection string to its default branch. */\nexport interface ProjectConnection {\n\tproject: Project;\n\tconnectionString: string;\n}\n\n/** Project access grants (share a project with additional users by email). */\nexport class Permissions<DThrow extends boolean> {\n\treadonly #ctx: RequestContext;\n\n\tconstructor(ctx: RequestContext) {\n\t\tthis.#ctx = ctx;\n\t}\n\n\t/** @apiCall GET /projects/{project_id}/permissions */\n\tlist(projectId: string): Promise<Outcome<ProjectPermission[], DThrow>>;\n\tlist<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<ProjectPermission[], Throw>>;\n\tlist(\n\t\tprojectId: string,\n\t\topts?: CallOptions,\n\t): Promise<ProjectPermission[] | NeonResult<ProjectPermission[]>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\tlistProjectPermissions({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data.project_permissions,\n\t\t);\n\t}\n\n\t/** @apiCall POST /projects/{project_id}/permissions */\n\tgrant(\n\t\tprojectId: string,\n\t\temail: string,\n\t): Promise<Outcome<ProjectPermission, DThrow>>;\n\tgrant<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\temail: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<ProjectPermission, Throw>>;\n\tgrant(\n\t\tprojectId: string,\n\t\temail: string,\n\t\topts?: CallOptions,\n\t): Promise<ProjectPermission | NeonResult<ProjectPermission>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\tgrantPermissionToProject({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId },\n\t\t\t\t\tbody: { email },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data,\n\t\t);\n\t}\n\n\t/** @apiCall DELETE /projects/{project_id}/permissions/{permission_id} */\n\trevoke(\n\t\tprojectId: string,\n\t\tpermissionId: string,\n\t): Promise<Outcome<ProjectPermission, DThrow>>;\n\trevoke<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tpermissionId: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<ProjectPermission, Throw>>;\n\trevoke(\n\t\tprojectId: string,\n\t\tpermissionId: string,\n\t\topts?: CallOptions,\n\t): Promise<ProjectPermission | NeonResult<ProjectPermission>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\trevokePermissionFromProject({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: {\n\t\t\t\t\t\tproject_id: projectId,\n\t\t\t\t\t\tpermission_id: permissionId,\n\t\t\t\t\t},\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data,\n\t\t);\n\t}\n}\n\n/** Project resource — one API call per method (`list` is cursor-paginated). */\nexport class Projects<DThrow extends boolean> {\n\treadonly #ctx: RequestContext;\n\t/** Project access grants (share by email). */\n\treadonly permissions: Permissions<DThrow>;\n\n\tconstructor(ctx: RequestContext) {\n\t\tthis.#ctx = ctx;\n\t\tthis.permissions = new Permissions<DThrow>(ctx);\n\t}\n\n\t/**\n\t * List projects (cursor-paginated). Returns a lazy list — `await .all()`, `.page()`,\n\t * or `for await (… of …)`.\n\t *\n\t * @apiCall GET /projects\n\t */\n\tlist(query?: ListQuery, opts?: CallOptions): Paginated<ProjectListItem> {\n\t\treturn paginate(\n\t\t\t(cursor, signal) =>\n\t\t\t\tlistProjects({\n\t\t\t\t\tclient: this.#ctx.client,\n\t\t\t\t\tquery: {\n\t\t\t\t\t\torg_id: this.#ctx.defaults.orgId,\n\t\t\t\t\t\t...query,\n\t\t\t\t\t\tcursor,\n\t\t\t\t\t},\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => ({\n\t\t\t\titems: data?.projects ?? [],\n\t\t\t\tcursor: data?.pagination?.cursor,\n\t\t\t}),\n\t\t\t() => this.#ctx.deadlineFor(opts),\n\t\t);\n\t}\n\n\t/** @apiCall GET /projects/{project_id} */\n\tget(id: string): Promise<Outcome<Project, DThrow>>;\n\tget<Throw extends boolean = DThrow>(\n\t\tid: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Project, Throw>>;\n\tget(\n\t\tid: string,\n\t\topts?: CallOptions,\n\t): Promise<Project | NeonResult<Project>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\tgetProject({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: id },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data.project,\n\t\t);\n\t}\n\n\t/** @apiCall POST /projects */\n\tcreate(input?: CreateInput): Promise<Outcome<Project, DThrow>>;\n\tcreate<Throw extends boolean = DThrow>(\n\t\tinput: CreateInput | undefined,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Project, Throw>>;\n\tcreate(\n\t\tinput?: CreateInput,\n\t\topts?: CallOptions,\n\t): Promise<Project | NeonResult<Project>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\tcreateProject({\n\t\t\t\t\tclient,\n\t\t\t\t\tbody: {\n\t\t\t\t\t\tproject: {\n\t\t\t\t\t\t\t...(this.#ctx.defaults.orgId\n\t\t\t\t\t\t\t\t? { org_id: this.#ctx.defaults.orgId }\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t...input,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data.project,\n\t\t);\n\t}\n\n\t/**\n\t * Create a project and return a ready-to-use connection string to its default branch.\n\t * One API call plus readiness polling (the create response already carries the\n\t * connection URI).\n\t *\n\t * @workflow createProject + waitForReadiness\n\t */\n\tcreateAndConnect(\n\t\tinput?: CreateInput,\n\t): Promise<Outcome<ProjectConnection, DThrow>>;\n\tcreateAndConnect<Throw extends boolean = DThrow>(\n\t\tinput: CreateInput | undefined,\n\t\topts: WorkflowOptions<Throw>,\n\t): Promise<Outcome<ProjectConnection, Throw>>;\n\tasync createAndConnect(\n\t\tinput?: CreateInput,\n\t\topts?: WorkflowOptions<boolean>,\n\t): Promise<ProjectConnection | NeonResult<ProjectConnection>> {\n\t\tconst shouldThrow =\n\t\t\topts?.throwOnError ?? this.#ctx.defaults.throwOnError;\n\t\tconst result = await this.#ctx.execute(\n\t\t\t{ ...opts, waitForReadiness: opts?.waitForReadiness ?? true },\n\t\t\t(client, signal) =>\n\t\t\t\tcreateProject({\n\t\t\t\t\tclient,\n\t\t\t\t\tbody: {\n\t\t\t\t\t\tproject: {\n\t\t\t\t\t\t\t...(this.#ctx.defaults.orgId\n\t\t\t\t\t\t\t\t? { org_id: this.#ctx.defaults.orgId }\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t...input,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data,\n\t\t);\n\t\tconst out = withConnectionString(\n\t\t\tresult,\n\t\t\t(data) => data.connection_uris,\n\t\t\t(data, connectionString) => ({\n\t\t\t\tproject: data.project,\n\t\t\t\tconnectionString,\n\t\t\t}),\n\t\t\topts?.pooled ?? true,\n\t\t);\n\t\treturn finalize(out, shouldThrow);\n\t}\n\n\t/** @apiCall PATCH /projects/{project_id} */\n\tupdate(id: string, input: UpdateInput): Promise<Outcome<Project, DThrow>>;\n\tupdate<Throw extends boolean = DThrow>(\n\t\tid: string,\n\t\tinput: UpdateInput,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Project, Throw>>;\n\tupdate(\n\t\tid: string,\n\t\tinput: UpdateInput,\n\t\topts?: CallOptions,\n\t): Promise<Project | NeonResult<Project>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\tupdateProject({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: id },\n\t\t\t\t\tbody: { project: input },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data.project,\n\t\t);\n\t}\n\n\t/** @apiCall DELETE /projects/{project_id} */\n\tdelete(id: string): Promise<Outcome<Project, DThrow>>;\n\tdelete<Throw extends boolean = DThrow>(\n\t\tid: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Project, Throw>>;\n\tdelete(\n\t\tid: string,\n\t\topts?: CallOptions,\n\t): Promise<Project | NeonResult<Project>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\tdeleteProject({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: id },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data.project,\n\t\t);\n\t}\n\n\t/**\n\t * Recover a soft-deleted project within its retention window (beta). Mirrors\n\t * `branches.recover` at the project level.\n\t *\n\t * @apiCall POST /projects/{project_id}/recover\n\t */\n\trecover(id: string): Promise<Outcome<Project, DThrow>>;\n\trecover<Throw extends boolean = DThrow>(\n\t\tid: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Project, Throw>>;\n\trecover(\n\t\tid: string,\n\t\topts?: CallOptions,\n\t): Promise<Project | NeonResult<Project>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\trecoverProject({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: id },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data.project,\n\t\t);\n\t}\n\n\t/**\n\t * Transfer projects from one organization to another (e.g. sponsored → paid). The\n\t * source org defaults to the client's `orgId`. Requires a key with access to both orgs.\n\t *\n\t * @apiCall POST /organizations/{source_org_id}/projects/transfer\n\t */\n\ttransfer(input: TransferProjectsInput): Promise<Outcome<void, DThrow>>;\n\ttransfer<Throw extends boolean = DThrow>(\n\t\tinput: TransferProjectsInput,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<void, Throw>>;\n\tasync transfer(\n\t\tinput: TransferProjectsInput,\n\t\topts?: CallOptions,\n\t): Promise<void | NeonResult<void>> {\n\t\tconst shouldThrow =\n\t\t\topts?.throwOnError ?? this.#ctx.defaults.throwOnError;\n\t\tconst fromOrgId = input.fromOrgId ?? this.#ctx.defaults.orgId;\n\t\tif (!fromOrgId) {\n\t\t\treturn finalize(\n\t\t\t\terr<void>(\n\t\t\t\t\tnew NeonError(\n\t\t\t\t\t\t\"Pass fromOrgId or set orgId on the client.\",\n\t\t\t\t\t\t\"client\",\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t\tshouldThrow,\n\t\t\t);\n\t\t}\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\ttransferProjectsFromOrgToOrg({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { source_org_id: fromOrgId },\n\t\t\t\t\tbody: {\n\t\t\t\t\t\tdestination_org_id: input.toOrgId,\n\t\t\t\t\t\tproject_ids: input.projectIds,\n\t\t\t\t\t},\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t() => undefined,\n\t\t);\n\t}\n\n\t/**\n\t * Transfer projects from the personal account to an organization.\n\t *\n\t * @apiCall POST /users/me/projects/transfer\n\t */\n\ttransferFromUser(input: {\n\t\ttoOrgId: string;\n\t\tprojectIds: string[];\n\t}): Promise<Outcome<void, DThrow>>;\n\ttransferFromUser<Throw extends boolean = DThrow>(\n\t\tinput: { toOrgId: string; projectIds: string[] },\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<void, Throw>>;\n\ttransferFromUser(\n\t\tinput: { toOrgId: string; projectIds: string[] },\n\t\topts?: CallOptions,\n\t): Promise<void | NeonResult<void>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\ttransferProjectsFromUserToOrg({\n\t\t\t\t\tclient,\n\t\t\t\t\tbody: {\n\t\t\t\t\t\tdestination_org_id: input.toOrgId,\n\t\t\t\t\t\tproject_ids: input.projectIds,\n\t\t\t\t\t},\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t() => undefined,\n\t\t);\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"projects.js","names":["#ctx"],"sources":["../../../src/neon/resources/projects.ts"],"sourcesContent":["import {\n\tcreateProject,\n\tdeleteProject,\n\tgetProject,\n\tgrantPermissionToProject,\n\tlistProjectMembers,\n\tlistProjectPermissions,\n\tlistProjects,\n\trecoverProject,\n\tremoveProjectMemberRole,\n\trevokePermissionFromProject,\n\tsetProjectMemberRole,\n\ttransferProjectsFromOrgToOrg,\n\ttransferProjectsFromUserToOrg,\n\tupdateProject,\n} from \"../../client/sdk.gen.js\";\nimport type {\n\tListProjectMembersData,\n\tListProjectsData,\n\tProject,\n\tProjectCreateRequest,\n\tProjectListItem,\n\tProjectMember,\n\tProjectMemberRoleResponse,\n\tProjectPermission,\n\tProjectRole,\n\tProjectUpdateRequest,\n} from \"../../client/types.gen.js\";\nimport { withConnectionString } from \"../connection.js\";\nimport type { CallOptions, RequestContext } from \"../context.js\";\nimport { NeonError } from \"../errors.js\";\nimport { type Paginated, paginate } from \"../paginate.js\";\nimport { err, finalize, type NeonResult, type Outcome } from \"../result.js\";\n\n/** Input for {@link Projects.transfer} (org → org). */\nexport interface TransferProjectsInput {\n\t/** Source org. Defaults to the client's `orgId`. */\n\tfromOrgId?: string;\n\t/** Destination org. */\n\ttoOrgId: string;\n\tprojectIds: string[];\n}\n\ntype ListQuery = Omit<NonNullable<ListProjectsData[\"query\"]>, \"cursor\">;\ntype CreateInput = ProjectCreateRequest[\"project\"];\ntype UpdateInput = ProjectUpdateRequest[\"project\"];\ntype MemberListQuery = Omit<\n\tNonNullable<ListProjectMembersData[\"query\"]>,\n\t\"cursor\"\n>;\n\n/** Per-call options for {@link Members.setRole}. */\nexport interface SetRoleOptions<Throw extends boolean = boolean>\n\textends CallOptions<Throw> {\n\t/**\n\t * Acknowledge that the call lowers the caller's own role. The API rejects a\n\t * self-demotion without it, so it is left off by default.\n\t */\n\tconfirmSelfDemotion?: boolean;\n}\n\n/** Per-call options for {@link Members.removeRole}. */\nexport interface RemoveRoleOptions<Throw extends boolean = boolean>\n\textends CallOptions<Throw> {\n\t/**\n\t * Acknowledge that the call can cost the caller management access. The API\n\t * rejects such a self-removal without it, so it is left off by default.\n\t */\n\tconfirmSelfLockout?: boolean;\n}\n\n/** Per-call options for the connect workflow. */\ninterface WorkflowOptions<Throw extends boolean> extends CallOptions<Throw> {\n\t/** Return a pooled connection string (default `true`). */\n\tpooled?: boolean;\n}\n\n/** A project with a ready-to-use connection string to its default branch. */\nexport interface ProjectConnection {\n\tproject: Project;\n\tconnectionString: string;\n}\n\n/** Project access grants (share a project with additional users by email). */\nexport class Permissions<DThrow extends boolean> {\n\treadonly #ctx: RequestContext;\n\n\tconstructor(ctx: RequestContext) {\n\t\tthis.#ctx = ctx;\n\t}\n\n\t/** @apiCall GET /projects/{project_id}/permissions */\n\tlist(projectId: string): Promise<Outcome<ProjectPermission[], DThrow>>;\n\tlist<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<ProjectPermission[], Throw>>;\n\tlist(\n\t\tprojectId: string,\n\t\topts?: CallOptions,\n\t): Promise<ProjectPermission[] | NeonResult<ProjectPermission[]>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\tlistProjectPermissions({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data.project_permissions,\n\t\t);\n\t}\n\n\t/** @apiCall POST /projects/{project_id}/permissions */\n\tgrant(\n\t\tprojectId: string,\n\t\temail: string,\n\t): Promise<Outcome<ProjectPermission, DThrow>>;\n\tgrant<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\temail: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<ProjectPermission, Throw>>;\n\tgrant(\n\t\tprojectId: string,\n\t\temail: string,\n\t\topts?: CallOptions,\n\t): Promise<ProjectPermission | NeonResult<ProjectPermission>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\tgrantPermissionToProject({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId },\n\t\t\t\t\tbody: { email },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data,\n\t\t);\n\t}\n\n\t/** @apiCall DELETE /projects/{project_id}/permissions/{permission_id} */\n\trevoke(\n\t\tprojectId: string,\n\t\tpermissionId: string,\n\t): Promise<Outcome<ProjectPermission, DThrow>>;\n\trevoke<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tpermissionId: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<ProjectPermission, Throw>>;\n\trevoke(\n\t\tprojectId: string,\n\t\tpermissionId: string,\n\t\topts?: CallOptions,\n\t): Promise<ProjectPermission | NeonResult<ProjectPermission>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\trevokePermissionFromProject({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: {\n\t\t\t\t\t\tproject_id: projectId,\n\t\t\t\t\t\tpermission_id: permissionId,\n\t\t\t\t\t},\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data,\n\t\t);\n\t}\n}\n\n/**\n * Per-project roles for members of the owning organization.\n *\n * Distinct from {@link Permissions}, which shares a project with an individual by\n * email address: these act on existing org members by member id, and clearing a\n * grant leaves the member's organization-role default in force rather than\n * removing their access.\n */\nexport class Members<DThrow extends boolean> {\n\treadonly #ctx: RequestContext;\n\n\tconstructor(ctx: RequestContext) {\n\t\tthis.#ctx = ctx;\n\t}\n\n\t/**\n\t * List org members and their project roles (cursor-paginated). Org-owned\n\t * projects only — a personal project answers `404`, as does an org with\n\t * per-project role management disabled.\n\t *\n\t * @apiCall GET /projects/{project_id}/members (cursor-paginated)\n\t */\n\tlist(\n\t\tprojectId: string,\n\t\tquery?: MemberListQuery,\n\t\topts?: CallOptions,\n\t): Paginated<ProjectMember> {\n\t\treturn paginate(\n\t\t\t(cursor, signal) =>\n\t\t\t\tlistProjectMembers({\n\t\t\t\t\tclient: this.#ctx.client,\n\t\t\t\t\tpath: { project_id: projectId },\n\t\t\t\t\tquery: { ...query, cursor },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => ({\n\t\t\t\titems: data?.project_members ?? [],\n\t\t\t\tcursor: data?.pagination?.next,\n\t\t\t}),\n\t\t\t() => this.#ctx.deadlineFor(opts),\n\t\t);\n\t}\n\n\t/**\n\t * Set a member's explicit project role, replacing any existing grant.\n\t * Idempotent. Check `credential_rotation_recommended` and\n\t * `org_api_key_rotation_recommended` on the result — a downgrade can leave\n\t * credentials the member still holds.\n\t *\n\t * @apiCall PUT /projects/{project_id}/members/{member_id}/role\n\t */\n\tsetRole(\n\t\tprojectId: string,\n\t\tmemberId: string,\n\t\trole: ProjectRole,\n\t): Promise<Outcome<ProjectMemberRoleResponse, DThrow>>;\n\tsetRole<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tmemberId: string,\n\t\trole: ProjectRole,\n\t\topts: SetRoleOptions<Throw>,\n\t): Promise<Outcome<ProjectMemberRoleResponse, Throw>>;\n\tsetRole(\n\t\tprojectId: string,\n\t\tmemberId: string,\n\t\trole: ProjectRole,\n\t\topts?: SetRoleOptions<boolean>,\n\t): Promise<\n\t\tProjectMemberRoleResponse | NeonResult<ProjectMemberRoleResponse>\n\t> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\tsetProjectMemberRole({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId, member_id: memberId },\n\t\t\t\t\tquery: opts?.confirmSelfDemotion\n\t\t\t\t\t\t? { confirm_self_demotion: true }\n\t\t\t\t\t\t: undefined,\n\t\t\t\t\tbody: { role },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data,\n\t\t);\n\t}\n\n\t/**\n\t * Clear a member's explicit project grant. Idempotent, and a no-op when no\n\t * explicit grant exists. The member keeps whatever their organization role\n\t * grants by default, so this narrows access rather than removing it.\n\t *\n\t * @apiCall DELETE /projects/{project_id}/members/{member_id}/role\n\t */\n\tremoveRole(\n\t\tprojectId: string,\n\t\tmemberId: string,\n\t): Promise<Outcome<ProjectMemberRoleResponse, DThrow>>;\n\tremoveRole<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tmemberId: string,\n\t\topts: RemoveRoleOptions<Throw>,\n\t): Promise<Outcome<ProjectMemberRoleResponse, Throw>>;\n\tremoveRole(\n\t\tprojectId: string,\n\t\tmemberId: string,\n\t\topts?: RemoveRoleOptions<boolean>,\n\t): Promise<\n\t\tProjectMemberRoleResponse | NeonResult<ProjectMemberRoleResponse>\n\t> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\tremoveProjectMemberRole({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId, member_id: memberId },\n\t\t\t\t\tquery: opts?.confirmSelfLockout\n\t\t\t\t\t\t? { confirm_self_lockout: true }\n\t\t\t\t\t\t: undefined,\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data,\n\t\t);\n\t}\n}\n\n/** Project resource — one API call per method (`list` is cursor-paginated). */\nexport class Projects<DThrow extends boolean> {\n\treadonly #ctx: RequestContext;\n\t/** Project access grants (share by email). */\n\treadonly permissions: Permissions<DThrow>;\n\t/** Per-project roles for members of the owning organization. */\n\treadonly members: Members<DThrow>;\n\n\tconstructor(ctx: RequestContext) {\n\t\tthis.#ctx = ctx;\n\t\tthis.permissions = new Permissions<DThrow>(ctx);\n\t\tthis.members = new Members<DThrow>(ctx);\n\t}\n\n\t/**\n\t * List projects (cursor-paginated). Returns a lazy list — `await .all()`, `.page()`,\n\t * or `for await (… of …)`.\n\t *\n\t * @apiCall GET /projects\n\t */\n\tlist(query?: ListQuery, opts?: CallOptions): Paginated<ProjectListItem> {\n\t\treturn paginate(\n\t\t\t(cursor, signal) =>\n\t\t\t\tlistProjects({\n\t\t\t\t\tclient: this.#ctx.client,\n\t\t\t\t\tquery: {\n\t\t\t\t\t\torg_id: this.#ctx.defaults.orgId,\n\t\t\t\t\t\t...query,\n\t\t\t\t\t\tcursor,\n\t\t\t\t\t},\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => ({\n\t\t\t\titems: data?.projects ?? [],\n\t\t\t\tcursor: data?.pagination?.cursor,\n\t\t\t}),\n\t\t\t() => this.#ctx.deadlineFor(opts),\n\t\t);\n\t}\n\n\t/** @apiCall GET /projects/{project_id} */\n\tget(id: string): Promise<Outcome<Project, DThrow>>;\n\tget<Throw extends boolean = DThrow>(\n\t\tid: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Project, Throw>>;\n\tget(\n\t\tid: string,\n\t\topts?: CallOptions,\n\t): Promise<Project | NeonResult<Project>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\tgetProject({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: id },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data.project,\n\t\t);\n\t}\n\n\t/** @apiCall POST /projects */\n\tcreate(input?: CreateInput): Promise<Outcome<Project, DThrow>>;\n\tcreate<Throw extends boolean = DThrow>(\n\t\tinput: CreateInput | undefined,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Project, Throw>>;\n\tcreate(\n\t\tinput?: CreateInput,\n\t\topts?: CallOptions,\n\t): Promise<Project | NeonResult<Project>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\tcreateProject({\n\t\t\t\t\tclient,\n\t\t\t\t\tbody: {\n\t\t\t\t\t\tproject: {\n\t\t\t\t\t\t\t...(this.#ctx.defaults.orgId\n\t\t\t\t\t\t\t\t? { org_id: this.#ctx.defaults.orgId }\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t...input,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data.project,\n\t\t);\n\t}\n\n\t/**\n\t * Create a project and return a ready-to-use connection string to its default branch.\n\t * One API call plus readiness polling (the create response already carries the\n\t * connection URI).\n\t *\n\t * @workflow createProject + waitForReadiness\n\t */\n\tcreateAndConnect(\n\t\tinput?: CreateInput,\n\t): Promise<Outcome<ProjectConnection, DThrow>>;\n\tcreateAndConnect<Throw extends boolean = DThrow>(\n\t\tinput: CreateInput | undefined,\n\t\topts: WorkflowOptions<Throw>,\n\t): Promise<Outcome<ProjectConnection, Throw>>;\n\tasync createAndConnect(\n\t\tinput?: CreateInput,\n\t\topts?: WorkflowOptions<boolean>,\n\t): Promise<ProjectConnection | NeonResult<ProjectConnection>> {\n\t\tconst shouldThrow =\n\t\t\topts?.throwOnError ?? this.#ctx.defaults.throwOnError;\n\t\tconst result = await this.#ctx.execute(\n\t\t\t{ ...opts, waitForReadiness: opts?.waitForReadiness ?? true },\n\t\t\t(client, signal) =>\n\t\t\t\tcreateProject({\n\t\t\t\t\tclient,\n\t\t\t\t\tbody: {\n\t\t\t\t\t\tproject: {\n\t\t\t\t\t\t\t...(this.#ctx.defaults.orgId\n\t\t\t\t\t\t\t\t? { org_id: this.#ctx.defaults.orgId }\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t...input,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data,\n\t\t);\n\t\tconst out = withConnectionString(\n\t\t\tresult,\n\t\t\t(data) => data.connection_uris,\n\t\t\t(data, connectionString) => ({\n\t\t\t\tproject: data.project,\n\t\t\t\tconnectionString,\n\t\t\t}),\n\t\t\topts?.pooled ?? true,\n\t\t);\n\t\treturn finalize(out, shouldThrow);\n\t}\n\n\t/** @apiCall PATCH /projects/{project_id} */\n\tupdate(id: string, input: UpdateInput): Promise<Outcome<Project, DThrow>>;\n\tupdate<Throw extends boolean = DThrow>(\n\t\tid: string,\n\t\tinput: UpdateInput,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Project, Throw>>;\n\tupdate(\n\t\tid: string,\n\t\tinput: UpdateInput,\n\t\topts?: CallOptions,\n\t): Promise<Project | NeonResult<Project>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\tupdateProject({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: id },\n\t\t\t\t\tbody: { project: input },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data.project,\n\t\t);\n\t}\n\n\t/** @apiCall DELETE /projects/{project_id} */\n\tdelete(id: string): Promise<Outcome<Project, DThrow>>;\n\tdelete<Throw extends boolean = DThrow>(\n\t\tid: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Project, Throw>>;\n\tdelete(\n\t\tid: string,\n\t\topts?: CallOptions,\n\t): Promise<Project | NeonResult<Project>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\tdeleteProject({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: id },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data.project,\n\t\t);\n\t}\n\n\t/**\n\t * Recover a soft-deleted project within its retention window (beta).\n\t *\n\t * @apiCall POST /projects/{project_id}/recover\n\t */\n\trecover(id: string): Promise<Outcome<Project, DThrow>>;\n\trecover<Throw extends boolean = DThrow>(\n\t\tid: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Project, Throw>>;\n\trecover(\n\t\tid: string,\n\t\topts?: CallOptions,\n\t): Promise<Project | NeonResult<Project>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\trecoverProject({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: id },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => data.project,\n\t\t);\n\t}\n\n\t/**\n\t * Transfer projects from one organization to another (e.g. sponsored → paid). The\n\t * source org defaults to the client's `orgId`. Requires a key with access to both orgs.\n\t *\n\t * @apiCall POST /organizations/{source_org_id}/projects/transfer\n\t */\n\ttransfer(input: TransferProjectsInput): Promise<Outcome<void, DThrow>>;\n\ttransfer<Throw extends boolean = DThrow>(\n\t\tinput: TransferProjectsInput,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<void, Throw>>;\n\tasync transfer(\n\t\tinput: TransferProjectsInput,\n\t\topts?: CallOptions,\n\t): Promise<void | NeonResult<void>> {\n\t\tconst shouldThrow =\n\t\t\topts?.throwOnError ?? this.#ctx.defaults.throwOnError;\n\t\tconst fromOrgId = input.fromOrgId ?? this.#ctx.defaults.orgId;\n\t\tif (!fromOrgId) {\n\t\t\treturn finalize(\n\t\t\t\terr<void>(\n\t\t\t\t\tnew NeonError(\n\t\t\t\t\t\t\"Pass fromOrgId or set orgId on the client.\",\n\t\t\t\t\t\t\"client\",\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t\tshouldThrow,\n\t\t\t);\n\t\t}\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\ttransferProjectsFromOrgToOrg({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { source_org_id: fromOrgId },\n\t\t\t\t\tbody: {\n\t\t\t\t\t\tdestination_org_id: input.toOrgId,\n\t\t\t\t\t\tproject_ids: input.projectIds,\n\t\t\t\t\t},\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t() => undefined,\n\t\t);\n\t}\n\n\t/**\n\t * Transfer projects from the personal account to an organization.\n\t *\n\t * @apiCall POST /users/me/projects/transfer\n\t */\n\ttransferFromUser(input: {\n\t\ttoOrgId: string;\n\t\tprojectIds: string[];\n\t}): Promise<Outcome<void, DThrow>>;\n\ttransferFromUser<Throw extends boolean = DThrow>(\n\t\tinput: { toOrgId: string; projectIds: string[] },\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<void, Throw>>;\n\ttransferFromUser(\n\t\tinput: { toOrgId: string; projectIds: string[] },\n\t\topts?: CallOptions,\n\t): Promise<void | NeonResult<void>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client, signal) =>\n\t\t\t\ttransferProjectsFromUserToOrg({\n\t\t\t\t\tclient,\n\t\t\t\t\tbody: {\n\t\t\t\t\t\tdestination_org_id: input.toOrgId,\n\t\t\t\t\t\tproject_ids: input.projectIds,\n\t\t\t\t\t},\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t() => undefined,\n\t\t);\n\t}\n}\n"],"mappings":"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"}
|