@superblocksteam/sdk 2.0.102 → 2.0.103-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/dist/application-build.d.mts.map +1 -1
  3. package/dist/application-build.mjs +1 -1
  4. package/dist/application-build.mjs.map +1 -1
  5. package/dist/cli-replacement/auth-hot-reload.d.mts.map +1 -1
  6. package/dist/cli-replacement/auth-hot-reload.mjs.map +1 -1
  7. package/dist/cli-replacement/automatic-upgrades.d.ts +1 -1
  8. package/dist/cli-replacement/automatic-upgrades.d.ts.map +1 -1
  9. package/dist/cli-replacement/automatic-upgrades.js +1 -1
  10. package/dist/cli-replacement/automatic-upgrades.js.map +1 -1
  11. package/dist/cli-replacement/dev.d.mts.map +1 -1
  12. package/dist/cli-replacement/dev.mjs +5 -7
  13. package/dist/cli-replacement/dev.mjs.map +1 -1
  14. package/dist/cli-replacement/git-repo-setup.d.mts.map +1 -1
  15. package/dist/cli-replacement/git-repo-setup.mjs +30 -0
  16. package/dist/cli-replacement/git-repo-setup.mjs.map +1 -1
  17. package/dist/cli-replacement/git-repo-setup.test.mjs.map +1 -1
  18. package/dist/cli-replacement/init.d.ts +2 -2
  19. package/dist/cli-replacement/init.d.ts.map +1 -1
  20. package/dist/cli-replacement/init.js.map +1 -1
  21. package/dist/cli-replacement/version-detection.d.ts.map +1 -1
  22. package/dist/cli-replacement/version-detection.js.map +1 -1
  23. package/dist/cli-replacement/version-detection.test.js.map +1 -1
  24. package/dist/client-sync.test.mjs.map +1 -1
  25. package/dist/client.d.ts +252 -3
  26. package/dist/client.d.ts.map +1 -1
  27. package/dist/client.fetch-audit-events.test.d.ts +2 -0
  28. package/dist/client.fetch-audit-events.test.d.ts.map +1 -0
  29. package/dist/client.fetch-audit-events.test.js +69 -0
  30. package/dist/client.fetch-audit-events.test.js.map +1 -0
  31. package/dist/client.js +762 -5
  32. package/dist/client.js.map +1 -1
  33. package/dist/collect-sdk-apis.d.mts.map +1 -1
  34. package/dist/collect-sdk-apis.mjs.map +1 -1
  35. package/dist/collect-sdk-apis.test.mjs.map +1 -1
  36. package/dist/dbfs/client.d.ts.map +1 -1
  37. package/dist/dbfs/client.js.map +1 -1
  38. package/dist/dbfs/client.test.js +1 -1
  39. package/dist/dbfs/client.test.js.map +1 -1
  40. package/dist/dbfs/local.d.ts.map +1 -1
  41. package/dist/dbfs/local.js.map +1 -1
  42. package/dist/dev-utils/custom-build.d.mts.map +1 -1
  43. package/dist/dev-utils/custom-build.mjs.map +1 -1
  44. package/dist/dev-utils/custom-config.d.mts.map +1 -1
  45. package/dist/dev-utils/custom-config.mjs.map +1 -1
  46. package/dist/dev-utils/dev-server.d.mts +2 -2
  47. package/dist/dev-utils/dev-server.d.mts.map +1 -1
  48. package/dist/dev-utils/dev-server.mjs +5 -4
  49. package/dist/dev-utils/dev-server.mjs.map +1 -1
  50. package/dist/dev-utils/token-manager.d.ts.map +1 -1
  51. package/dist/dev-utils/token-manager.js.map +1 -1
  52. package/dist/extract-api-integrations.d.mts +1 -16
  53. package/dist/extract-api-integrations.d.mts.map +1 -1
  54. package/dist/extract-api-integrations.mjs +1 -232
  55. package/dist/extract-api-integrations.mjs.map +1 -1
  56. package/dist/extract-api-integrations.test.mjs.map +1 -1
  57. package/dist/flag.d.ts.map +1 -1
  58. package/dist/flag.js.map +1 -1
  59. package/dist/index.d.ts +1 -1
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js.map +1 -1
  62. package/dist/parse-sdk-registry.d.mts.map +1 -1
  63. package/dist/parse-sdk-registry.mjs.map +1 -1
  64. package/dist/parse-sdk-registry.test.mjs.map +1 -1
  65. package/dist/sdk.d.ts +59 -4
  66. package/dist/sdk.d.ts.map +1 -1
  67. package/dist/sdk.js +184 -1
  68. package/dist/sdk.js.map +1 -1
  69. package/dist/sdk.test.js +72 -2
  70. package/dist/sdk.test.js.map +1 -1
  71. package/dist/socket/handlers.d.ts +1 -1
  72. package/dist/socket/handlers.d.ts.map +1 -1
  73. package/dist/socket/handlers.js.map +1 -1
  74. package/dist/socket/index.d.ts +1 -1
  75. package/dist/socket/index.d.ts.map +1 -1
  76. package/dist/socket/index.js.map +1 -1
  77. package/dist/socket/signing.d.ts +1 -1
  78. package/dist/socket/signing.d.ts.map +1 -1
  79. package/dist/socket/signing.js.map +1 -1
  80. package/dist/telemetry/index.d.ts.map +1 -1
  81. package/dist/telemetry/index.js.map +1 -1
  82. package/dist/telemetry/logging.d.ts.map +1 -1
  83. package/dist/telemetry/logging.js +1 -1
  84. package/dist/telemetry/logging.js.map +1 -1
  85. package/dist/types/common.d.ts +1 -1
  86. package/dist/types/common.d.ts.map +1 -1
  87. package/dist/types/common.js.map +1 -1
  88. package/dist/utils.d.ts +1 -1
  89. package/dist/utils.d.ts.map +1 -1
  90. package/dist/utils.js.map +1 -1
  91. package/dist/version-control.d.mts +1 -1
  92. package/dist/version-control.d.mts.map +1 -1
  93. package/dist/version-control.mjs +2 -2
  94. package/dist/version-control.mjs.map +1 -1
  95. package/dist/vite-plugin-generate-api-build-manifest.d.mts.map +1 -1
  96. package/dist/vite-plugin-generate-api-build-manifest.mjs +3 -3
  97. package/dist/vite-plugin-generate-api-build-manifest.mjs.map +1 -1
  98. package/dist/vite-plugin-inject-sb-ids-transform.d.mts.map +1 -1
  99. package/dist/vite-plugin-inject-sb-ids-transform.mjs +1 -1
  100. package/dist/vite-plugin-inject-sb-ids-transform.mjs.map +1 -1
  101. package/dist/vite-plugin-sdk-api-entry-point.d.mts.map +1 -1
  102. package/dist/vite-plugin-sdk-api-entry-point.mjs.map +1 -1
  103. package/dist/vite-plugin-sdk-api-entry-point.test.mjs.map +1 -1
  104. package/eslint.config.js +2 -17
  105. package/package.json +6 -6
  106. package/src/application-build.mts +4 -1
  107. package/src/cli-replacement/auth-hot-reload.mts +2 -2
  108. package/src/cli-replacement/automatic-upgrades.ts +10 -7
  109. package/src/cli-replacement/dev.mts +17 -17
  110. package/src/cli-replacement/git-repo-setup.mts +34 -1
  111. package/src/cli-replacement/git-repo-setup.test.mts +4 -1
  112. package/src/cli-replacement/init.ts +5 -4
  113. package/src/cli-replacement/version-detection.test.ts +2 -0
  114. package/src/cli-replacement/version-detection.ts +1 -0
  115. package/src/client-sync.test.mts +1 -0
  116. package/src/client.fetch-audit-events.test.ts +82 -0
  117. package/src/client.ts +1204 -21
  118. package/src/collect-sdk-apis.mts +1 -0
  119. package/src/collect-sdk-apis.test.mts +2 -0
  120. package/src/dbfs/client.test.ts +2 -1
  121. package/src/dbfs/client.ts +1 -0
  122. package/src/dbfs/local.ts +2 -0
  123. package/src/dev-utils/custom-build.mts +3 -1
  124. package/src/dev-utils/custom-config.mts +1 -0
  125. package/src/dev-utils/dev-server.mts +22 -19
  126. package/src/dev-utils/token-manager.ts +1 -0
  127. package/src/extract-api-integrations.mts +5 -345
  128. package/src/extract-api-integrations.test.mts +1 -0
  129. package/src/flag.ts +1 -0
  130. package/src/index.ts +7 -0
  131. package/src/parse-sdk-registry.mts +1 -0
  132. package/src/parse-sdk-registry.test.mts +2 -0
  133. package/src/sdk.test.ts +85 -5
  134. package/src/sdk.ts +324 -14
  135. package/src/socket/handlers.ts +3 -2
  136. package/src/socket/index.ts +4 -3
  137. package/src/socket/signing.ts +5 -3
  138. package/src/telemetry/index.ts +5 -2
  139. package/src/telemetry/logging.ts +4 -3
  140. package/src/types/common.ts +2 -1
  141. package/src/utils.ts +4 -2
  142. package/src/version-control.mts +21 -18
  143. package/src/vite-plugin-generate-api-build-manifest.mts +10 -7
  144. package/src/vite-plugin-inject-sb-ids-transform.mts +5 -2
  145. package/src/vite-plugin-sdk-api-entry-point.mts +1 -0
  146. package/src/vite-plugin-sdk-api-entry-point.test.mts +2 -0
  147. package/test/clients.test.mts +4 -1
  148. package/test/safe-stringify.test.mts +1 -0
  149. package/test/version-control.test.mts +17 -14
  150. package/tsconfig.tsbuildinfo +1 -1
package/dist/client.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import * as fs from "node:fs";
2
2
  import path from "node:path";
3
- import { Bucketeer, FileDescriptor } from "@superblocksteam/bucketeer-sdk";
4
- import { CommitType, ExportViewMode, } from "@superblocksteam/shared";
5
- import { COMPONENT_EVENT_HEADER, ComponentEvent, ForbiddenError, getBucketeerUrlFromSuperblocksUrl, getContentType, NotFoundError, BadRequestError, unreachable, getSuperblocksDevEnvironmentConfigJson, } from "@superblocksteam/util";
6
3
  import axios, { AxiosError } from "axios";
7
4
  import FormData from "form-data";
8
5
  import { isEqual, isEmpty } from "lodash-es";
6
+ import { Bucketeer, FileDescriptor } from "@superblocksteam/bucketeer-sdk";
7
+ import { CommitType, ExportViewMode, } from "@superblocksteam/shared";
8
+ import { COMPONENT_EVENT_HEADER, ComponentEvent, ForbiddenError, getBucketeerUrlFromSuperblocksUrl, getContentType, NotFoundError, BadRequestError, unreachable, getSuperblocksDevEnvironmentConfigJson, } from "@superblocksteam/util";
9
9
  import { doUploadLocalDirectory } from "./dbfs/local.js";
10
10
  import { BranchNotCheckedOutError, CommitAlreadyExistsError, ValidateGitSetupError, } from "./errors.js";
11
11
  import { signingEnabled } from "./flag.js";
@@ -14,6 +14,7 @@ import { AgentType } from "./types/index.js";
14
14
  import { getAgentUrl } from "./utils.js";
15
15
  import { DEFAULT_BRANCH, findGitRepositoryRoot, getCurrentGitBranchIfGit, } from "./version-control.mjs";
16
16
  const BASE_BUCKETEER_URL = "api";
17
+ const BASE_SERVER_API_URL_V1 = "api/v1";
17
18
  const BASE_SERVER_PUBLIC_API_URL_V1 = "api/v1/public";
18
19
  const BASE_SERVER_PUBLIC_API_URL_v2 = "api/v2/public";
19
20
  const BASE_SERVER_API_URL_V2 = "api/v2";
@@ -621,6 +622,49 @@ export async function fetchOrganizationSummary(cliVersion, token, superblocksBas
621
622
  throw new Error(`Could not fetch organization summary: ${message}`);
622
623
  }
623
624
  }
625
+ export async function createApplication({ cliVersion, token, superblocksBaseUrl, name, organizationId, codeMode = true, templateName, folderId, }) {
626
+ const body = {
627
+ name,
628
+ organizationId,
629
+ };
630
+ if (codeMode) {
631
+ body.createUsingReact = true;
632
+ if (templateName) {
633
+ body.templateName = templateName;
634
+ }
635
+ }
636
+ if (folderId) {
637
+ body.folderId = folderId;
638
+ }
639
+ try {
640
+ const config = {
641
+ method: "post",
642
+ url: new URL(`${BASE_SERVER_API_URL_V2}/applications/`, superblocksBaseUrl).toString(),
643
+ headers: {
644
+ Authorization: "Bearer " + token,
645
+ "Content-Type": "application/json",
646
+ [CLI_VERSION_HEADER]: cliVersion,
647
+ },
648
+ data: body,
649
+ };
650
+ const response = await axios(config);
651
+ return response.data.data;
652
+ }
653
+ catch (e) {
654
+ let message;
655
+ if (e instanceof AxiosError) {
656
+ message =
657
+ e.response?.data?.responseMeta?.message ??
658
+ JSON.stringify(e.response?.data) ??
659
+ e.response?.statusText ??
660
+ e?.message;
661
+ }
662
+ else {
663
+ message = `${e?.message ? e?.message : e}`;
664
+ }
665
+ throw new Error(`Could not create application: ${message}`);
666
+ }
667
+ }
624
668
  const createSocketConnectionIfNeeded = async (cliVersion, token, superblocksBaseUrl) => {
625
669
  const userMe = await fetchCurrentUser(cliVersion, token, superblocksBaseUrl);
626
670
  const organization = userMe.organizations[0];
@@ -913,9 +957,9 @@ export async function fetchApiCommits({ cliVersion, applicationId, branch, commi
913
957
  }
914
958
  catch (e) {
915
959
  if (axios.isAxiosError(e) && e.response?.status === 404) {
916
- throw new NotFoundError(`Application ${applicationId} was not found`);
960
+ throw new NotFoundError(`API ${applicationId} was not found`);
917
961
  }
918
- throw new Error("Could not fetch application");
962
+ throw new Error("Could not fetch API commits");
919
963
  }
920
964
  }
921
965
  export async function deployApplication(cliVersion, applicationId, token, superblocksBaseUrl, commitId) {
@@ -983,6 +1027,719 @@ export async function uploadApplication({ files, scopedJwt, url, cliVersion, app
983
1027
  });
984
1028
  await bucketeer.uploadApplication(fds);
985
1029
  }
1030
+ export async function fetchRbacAssignments({ cliVersion, token, superblocksBaseUrl, resourceType, resourceId, }) {
1031
+ try {
1032
+ const url = new URL(`${BASE_SERVER_API_URL_V2}/rbac/assignments`, superblocksBaseUrl);
1033
+ url.searchParams.set("resourceType", resourceType);
1034
+ url.searchParams.set("resourceId", resourceId);
1035
+ const config = {
1036
+ method: "get",
1037
+ url: url.toString(),
1038
+ headers: {
1039
+ Authorization: "Bearer " + token,
1040
+ [CLI_VERSION_HEADER]: cliVersion,
1041
+ },
1042
+ };
1043
+ const response = await axios(config);
1044
+ return response.data.data;
1045
+ }
1046
+ catch (e) {
1047
+ let message;
1048
+ if (e instanceof AxiosError) {
1049
+ message =
1050
+ e.response?.data?.responseMeta?.message ??
1051
+ JSON.stringify(e.response?.data) ??
1052
+ e.response?.statusText ??
1053
+ e?.message;
1054
+ }
1055
+ else {
1056
+ message = `${e?.message ? e?.message : e}`;
1057
+ }
1058
+ throw new Error(`Could not fetch RBAC assignments: ${message}`);
1059
+ }
1060
+ }
1061
+ export async function createRbacAssignments({ cliVersion, token, superblocksBaseUrl, payload, }) {
1062
+ try {
1063
+ const url = new URL(`${BASE_SERVER_API_URL_V2}/rbac/assignments`, superblocksBaseUrl);
1064
+ const config = {
1065
+ method: "post",
1066
+ url: url.toString(),
1067
+ data: payload,
1068
+ headers: {
1069
+ Authorization: "Bearer " + token,
1070
+ [CLI_VERSION_HEADER]: cliVersion,
1071
+ },
1072
+ };
1073
+ const response = await axios(config);
1074
+ return response.data.data;
1075
+ }
1076
+ catch (e) {
1077
+ let message;
1078
+ if (e instanceof AxiosError) {
1079
+ message =
1080
+ e.response?.data?.responseMeta?.message ??
1081
+ JSON.stringify(e.response?.data) ??
1082
+ e.response?.statusText ??
1083
+ e?.message;
1084
+ }
1085
+ else {
1086
+ message = `${e?.message ? e?.message : e}`;
1087
+ }
1088
+ throw new Error(`Could not create RBAC assignments: ${message}`);
1089
+ }
1090
+ }
1091
+ export async function updateRbacAssignment({ cliVersion, token, superblocksBaseUrl, assignmentRecordId, payload, }) {
1092
+ try {
1093
+ const url = new URL(`${BASE_SERVER_API_URL_V2}/rbac/assignments/${assignmentRecordId}`, superblocksBaseUrl);
1094
+ const config = {
1095
+ method: "put",
1096
+ url: url.toString(),
1097
+ data: payload,
1098
+ headers: {
1099
+ Authorization: "Bearer " + token,
1100
+ [CLI_VERSION_HEADER]: cliVersion,
1101
+ },
1102
+ };
1103
+ const response = await axios(config);
1104
+ return response.data.data;
1105
+ }
1106
+ catch (e) {
1107
+ let message;
1108
+ if (e instanceof AxiosError) {
1109
+ message =
1110
+ e.response?.data?.responseMeta?.message ??
1111
+ JSON.stringify(e.response?.data) ??
1112
+ e.response?.statusText ??
1113
+ e?.message;
1114
+ }
1115
+ else {
1116
+ message = `${e?.message ? e?.message : e}`;
1117
+ }
1118
+ throw new Error(`Could not update RBAC assignment: ${message}`);
1119
+ }
1120
+ }
1121
+ export async function deleteRbacAssignment({ cliVersion, token, superblocksBaseUrl, assignmentRecordId, }) {
1122
+ try {
1123
+ const url = new URL(`${BASE_SERVER_API_URL_V2}/rbac/assignments/${assignmentRecordId}`, superblocksBaseUrl);
1124
+ const config = {
1125
+ method: "delete",
1126
+ url: url.toString(),
1127
+ headers: {
1128
+ Authorization: "Bearer " + token,
1129
+ [CLI_VERSION_HEADER]: cliVersion,
1130
+ },
1131
+ };
1132
+ const response = await axios(config);
1133
+ return response.data.data;
1134
+ }
1135
+ catch (e) {
1136
+ let message;
1137
+ if (e instanceof AxiosError) {
1138
+ message =
1139
+ e.response?.data?.responseMeta?.message ??
1140
+ JSON.stringify(e.response?.data) ??
1141
+ e.response?.statusText ??
1142
+ e?.message;
1143
+ }
1144
+ else {
1145
+ message = `${e?.message ? e?.message : e}`;
1146
+ }
1147
+ throw new Error(`Could not delete RBAC assignment: ${message}`);
1148
+ }
1149
+ }
1150
+ export async function fetchAuditLogs({ cliVersion, token, superblocksBaseUrl, filters, }) {
1151
+ try {
1152
+ const url = new URL(`${BASE_SERVER_API_URL_V2}/audit`, superblocksBaseUrl);
1153
+ url.searchParams.set("startTime", filters.startTime);
1154
+ url.searchParams.set("endTime", filters.endTime);
1155
+ if (filters.entityType !== undefined) {
1156
+ url.searchParams.set("entity_type", String(filters.entityType));
1157
+ }
1158
+ if (filters.auditEntityId !== undefined) {
1159
+ url.searchParams.set("audit_entity_id", filters.auditEntityId);
1160
+ }
1161
+ if (filters.auditEntityType !== undefined) {
1162
+ url.searchParams.set("audit_entity_type", String(filters.auditEntityType));
1163
+ }
1164
+ if (filters.status !== undefined) {
1165
+ url.searchParams.set("status", filters.status);
1166
+ }
1167
+ if (filters.deployed !== undefined) {
1168
+ url.searchParams.set("deployed", String(filters.deployed));
1169
+ }
1170
+ if (filters.triggeredBy?.length) {
1171
+ for (const src of filters.triggeredBy) {
1172
+ url.searchParams.append("triggered_by", src);
1173
+ }
1174
+ }
1175
+ const config = {
1176
+ method: "get",
1177
+ url: url.toString(),
1178
+ headers: {
1179
+ Authorization: "Bearer " + token,
1180
+ [CLI_VERSION_HEADER]: cliVersion,
1181
+ },
1182
+ };
1183
+ const response = await axios(config);
1184
+ return response.data.data;
1185
+ }
1186
+ catch (e) {
1187
+ let message;
1188
+ if (e instanceof AxiosError) {
1189
+ message =
1190
+ e.response?.data?.responseMeta?.message ??
1191
+ JSON.stringify(e.response?.data) ??
1192
+ e.response?.statusText ??
1193
+ e?.message;
1194
+ }
1195
+ else {
1196
+ message = `${e?.message ? e?.message : e}`;
1197
+ }
1198
+ throw new Error(`Could not fetch audit logs: ${message}`);
1199
+ }
1200
+ }
1201
+ export async function fetchAuditEvents({ cliVersion, token, superblocksBaseUrl, filters, }) {
1202
+ try {
1203
+ const url = new URL(`${BASE_SERVER_API_URL_V2}/audit/events`, superblocksBaseUrl);
1204
+ url.searchParams.set("time_start", filters.timeStart);
1205
+ url.searchParams.set("time_end", filters.timeEnd);
1206
+ if (filters.classUid !== undefined) {
1207
+ url.searchParams.set("class_uid", String(filters.classUid));
1208
+ }
1209
+ if (filters.status !== undefined) {
1210
+ url.searchParams.set("status", String(filters.status));
1211
+ }
1212
+ if (filters.severity !== undefined) {
1213
+ url.searchParams.set("severity", String(filters.severity));
1214
+ }
1215
+ if (filters.actor !== undefined) {
1216
+ url.searchParams.set("actor", filters.actor);
1217
+ }
1218
+ if (filters.resourceType !== undefined) {
1219
+ url.searchParams.set("resource_type", filters.resourceType);
1220
+ }
1221
+ if (filters.resourceId !== undefined) {
1222
+ url.searchParams.set("resource_id", filters.resourceId);
1223
+ }
1224
+ if (filters.search !== undefined) {
1225
+ url.searchParams.set("search", filters.search);
1226
+ }
1227
+ if (filters.cursor !== undefined) {
1228
+ url.searchParams.set("cursor", filters.cursor);
1229
+ }
1230
+ if (filters.limit !== undefined) {
1231
+ url.searchParams.set("limit", String(filters.limit));
1232
+ }
1233
+ const config = {
1234
+ method: "get",
1235
+ url: url.toString(),
1236
+ headers: {
1237
+ Authorization: "Bearer " + token,
1238
+ [CLI_VERSION_HEADER]: cliVersion,
1239
+ },
1240
+ };
1241
+ const response = await axios(config);
1242
+ const responseData = response.data;
1243
+ if (responseData &&
1244
+ typeof responseData === "object" &&
1245
+ "data" in responseData &&
1246
+ responseData.data !== undefined) {
1247
+ return responseData.data;
1248
+ }
1249
+ return responseData;
1250
+ }
1251
+ catch (e) {
1252
+ let message;
1253
+ if (e instanceof AxiosError) {
1254
+ message =
1255
+ e.response?.data?.responseMeta?.message ??
1256
+ JSON.stringify(e.response?.data) ??
1257
+ e.response?.statusText ??
1258
+ e?.message;
1259
+ }
1260
+ else {
1261
+ message = `${e?.message ? e?.message : e}`;
1262
+ }
1263
+ throw new Error(`Could not fetch audit events: ${message}`);
1264
+ }
1265
+ }
1266
+ export async function fetchIntegrations({ cliVersion, token, superblocksBaseUrl, filters, }) {
1267
+ try {
1268
+ const url = new URL(`${BASE_SERVER_API_URL_V1}/integrations`, superblocksBaseUrl);
1269
+ if (filters?.kind) {
1270
+ for (const k of filters.kind) {
1271
+ url.searchParams.append("kind", k);
1272
+ }
1273
+ }
1274
+ if (filters?.slug) {
1275
+ for (const s of filters.slug) {
1276
+ url.searchParams.append("slug", s);
1277
+ }
1278
+ }
1279
+ const config = {
1280
+ method: "get",
1281
+ url: url.toString(),
1282
+ headers: {
1283
+ Authorization: "Bearer " + token,
1284
+ [CLI_VERSION_HEADER]: cliVersion,
1285
+ },
1286
+ };
1287
+ const response = await axios(config);
1288
+ return response.data.data;
1289
+ }
1290
+ catch (e) {
1291
+ let message;
1292
+ if (e instanceof AxiosError) {
1293
+ message =
1294
+ e.response?.data?.responseMeta?.message ??
1295
+ JSON.stringify(e.response?.data) ??
1296
+ e.response?.statusText ??
1297
+ e?.message;
1298
+ }
1299
+ else {
1300
+ message = `${e?.message ? e?.message : e}`;
1301
+ }
1302
+ throw new Error(`Could not fetch integrations: ${message}`);
1303
+ }
1304
+ }
1305
+ export async function fetchIntegrationById({ cliVersion, token, superblocksBaseUrl, integrationId, }) {
1306
+ try {
1307
+ const url = new URL(`${BASE_SERVER_API_URL_V1}/integrations/${integrationId}`, superblocksBaseUrl);
1308
+ const config = {
1309
+ method: "get",
1310
+ url: url.toString(),
1311
+ headers: {
1312
+ Authorization: "Bearer " + token,
1313
+ [CLI_VERSION_HEADER]: cliVersion,
1314
+ },
1315
+ };
1316
+ const response = await axios(config);
1317
+ return response.data.data;
1318
+ }
1319
+ catch (e) {
1320
+ let message;
1321
+ if (e instanceof AxiosError) {
1322
+ message =
1323
+ e.response?.data?.responseMeta?.message ??
1324
+ JSON.stringify(e.response?.data) ??
1325
+ e.response?.statusText ??
1326
+ e?.message;
1327
+ }
1328
+ else {
1329
+ message = `${e?.message ? e?.message : e}`;
1330
+ }
1331
+ throw new Error(`Could not fetch integration: ${message}`);
1332
+ }
1333
+ }
1334
+ export async function createIntegration({ cliVersion, token, superblocksBaseUrl, payload, }) {
1335
+ try {
1336
+ const url = new URL(`${BASE_SERVER_API_URL_V1}/integrations`, superblocksBaseUrl);
1337
+ const config = {
1338
+ method: "post",
1339
+ url: url.toString(),
1340
+ data: payload,
1341
+ headers: {
1342
+ Authorization: "Bearer " + token,
1343
+ [CLI_VERSION_HEADER]: cliVersion,
1344
+ },
1345
+ };
1346
+ const response = await axios(config);
1347
+ return response.data.data;
1348
+ }
1349
+ catch (e) {
1350
+ let message;
1351
+ if (e instanceof AxiosError) {
1352
+ message =
1353
+ e.response?.data?.responseMeta?.message ??
1354
+ JSON.stringify(e.response?.data) ??
1355
+ e.response?.statusText ??
1356
+ e?.message;
1357
+ }
1358
+ else {
1359
+ message = `${e?.message ? e?.message : e}`;
1360
+ }
1361
+ throw new Error(`Could not create integration: ${message}`);
1362
+ }
1363
+ }
1364
+ export async function updateIntegration({ cliVersion, token, superblocksBaseUrl, integrationId, payload, }) {
1365
+ try {
1366
+ const url = new URL(`${BASE_SERVER_API_URL_V1}/integrations/${integrationId}`, superblocksBaseUrl);
1367
+ const config = {
1368
+ method: "put",
1369
+ url: url.toString(),
1370
+ data: payload,
1371
+ headers: {
1372
+ Authorization: "Bearer " + token,
1373
+ [CLI_VERSION_HEADER]: cliVersion,
1374
+ },
1375
+ };
1376
+ const response = await axios(config);
1377
+ return response.data.data;
1378
+ }
1379
+ catch (e) {
1380
+ let message;
1381
+ if (e instanceof AxiosError) {
1382
+ message =
1383
+ e.response?.data?.responseMeta?.message ??
1384
+ JSON.stringify(e.response?.data) ??
1385
+ e.response?.statusText ??
1386
+ e?.message;
1387
+ }
1388
+ else {
1389
+ message = `${e?.message ? e?.message : e}`;
1390
+ }
1391
+ throw new Error(`Could not update integration: ${message}`);
1392
+ }
1393
+ }
1394
+ export async function deleteIntegration({ cliVersion, token, superblocksBaseUrl, integrationId, }) {
1395
+ try {
1396
+ const url = new URL(`${BASE_SERVER_API_URL_V1}/integrations/${integrationId}`, superblocksBaseUrl);
1397
+ const config = {
1398
+ method: "delete",
1399
+ url: url.toString(),
1400
+ headers: {
1401
+ Authorization: "Bearer " + token,
1402
+ [CLI_VERSION_HEADER]: cliVersion,
1403
+ },
1404
+ };
1405
+ const response = await axios(config);
1406
+ return response.data.data;
1407
+ }
1408
+ catch (e) {
1409
+ let message;
1410
+ if (e instanceof AxiosError) {
1411
+ message =
1412
+ e.response?.data?.responseMeta?.message ??
1413
+ JSON.stringify(e.response?.data) ??
1414
+ e.response?.statusText ??
1415
+ e?.message;
1416
+ }
1417
+ else {
1418
+ message = `${e?.message ? e?.message : e}`;
1419
+ }
1420
+ throw new Error(`Could not delete integration: ${message}`);
1421
+ }
1422
+ }
1423
+ export async function fetchFolders({ cliVersion, token, superblocksBaseUrl, }) {
1424
+ try {
1425
+ const url = new URL(`${BASE_SERVER_API_URL_V1}/folders`, superblocksBaseUrl);
1426
+ const config = {
1427
+ method: "get",
1428
+ url: url.toString(),
1429
+ headers: {
1430
+ Authorization: "Bearer " + token,
1431
+ [CLI_VERSION_HEADER]: cliVersion,
1432
+ },
1433
+ };
1434
+ const response = await axios(config);
1435
+ return response.data.data;
1436
+ }
1437
+ catch (e) {
1438
+ let message;
1439
+ if (e instanceof AxiosError) {
1440
+ message =
1441
+ e.response?.data?.responseMeta?.message ??
1442
+ JSON.stringify(e.response?.data) ??
1443
+ e.response?.statusText ??
1444
+ e?.message;
1445
+ }
1446
+ else {
1447
+ message = `${e?.message ? e?.message : e}`;
1448
+ }
1449
+ throw new Error(`Could not fetch folders: ${message}`);
1450
+ }
1451
+ }
1452
+ export async function createFolder({ cliVersion, token, superblocksBaseUrl, payload, }) {
1453
+ try {
1454
+ const url = new URL(`${BASE_SERVER_API_URL_V1}/folders`, superblocksBaseUrl);
1455
+ const config = {
1456
+ method: "post",
1457
+ url: url.toString(),
1458
+ data: { folder: payload },
1459
+ headers: {
1460
+ Authorization: "Bearer " + token,
1461
+ [CLI_VERSION_HEADER]: cliVersion,
1462
+ },
1463
+ };
1464
+ const response = await axios(config);
1465
+ return response.data.data;
1466
+ }
1467
+ catch (e) {
1468
+ let message;
1469
+ if (e instanceof AxiosError) {
1470
+ message =
1471
+ e.response?.data?.responseMeta?.message ??
1472
+ JSON.stringify(e.response?.data) ??
1473
+ e.response?.statusText ??
1474
+ e?.message;
1475
+ }
1476
+ else {
1477
+ message = `${e?.message ? e?.message : e}`;
1478
+ }
1479
+ throw new Error(`Could not create folder: ${message}`);
1480
+ }
1481
+ }
1482
+ export async function updateFolder({ cliVersion, token, superblocksBaseUrl, folderId, payload, }) {
1483
+ try {
1484
+ const url = new URL(`${BASE_SERVER_API_URL_V1}/folders/${folderId}`, superblocksBaseUrl);
1485
+ const config = {
1486
+ method: "put",
1487
+ url: url.toString(),
1488
+ data: { folder: payload },
1489
+ headers: {
1490
+ Authorization: "Bearer " + token,
1491
+ [CLI_VERSION_HEADER]: cliVersion,
1492
+ },
1493
+ };
1494
+ const response = await axios(config);
1495
+ return response.data.data;
1496
+ }
1497
+ catch (e) {
1498
+ let message;
1499
+ if (e instanceof AxiosError) {
1500
+ message =
1501
+ e.response?.data?.responseMeta?.message ??
1502
+ JSON.stringify(e.response?.data) ??
1503
+ e.response?.statusText ??
1504
+ e?.message;
1505
+ }
1506
+ else {
1507
+ message = `${e?.message ? e?.message : e}`;
1508
+ }
1509
+ throw new Error(`Could not update folder: ${message}`);
1510
+ }
1511
+ }
1512
+ export async function deleteFolder({ cliVersion, token, superblocksBaseUrl, folderId, }) {
1513
+ try {
1514
+ const url = new URL(`${BASE_SERVER_API_URL_V1}/folders/${folderId}`, superblocksBaseUrl);
1515
+ const config = {
1516
+ method: "delete",
1517
+ url: url.toString(),
1518
+ headers: {
1519
+ Authorization: "Bearer " + token,
1520
+ [CLI_VERSION_HEADER]: cliVersion,
1521
+ },
1522
+ };
1523
+ const response = await axios(config);
1524
+ return response.data.data;
1525
+ }
1526
+ catch (e) {
1527
+ let message;
1528
+ if (e instanceof AxiosError) {
1529
+ message =
1530
+ e.response?.data?.responseMeta?.message ??
1531
+ JSON.stringify(e.response?.data) ??
1532
+ e.response?.statusText ??
1533
+ e?.message;
1534
+ }
1535
+ else {
1536
+ message = `${e?.message ? e?.message : e}`;
1537
+ }
1538
+ throw new Error(`Could not delete folder: ${message}`);
1539
+ }
1540
+ }
1541
+ export async function fetchBillingUsageDaily({ cliVersion, token, superblocksBaseUrl, startDate, endDate, }) {
1542
+ try {
1543
+ const url = new URL(`${BASE_SERVER_API_URL_V1}/billing/usage-daily`, superblocksBaseUrl);
1544
+ url.searchParams.set("start", startDate);
1545
+ url.searchParams.set("end", endDate);
1546
+ const config = {
1547
+ method: "get",
1548
+ url: url.toString(),
1549
+ headers: {
1550
+ Authorization: "Bearer " + token,
1551
+ [CLI_VERSION_HEADER]: cliVersion,
1552
+ },
1553
+ };
1554
+ const response = await axios(config);
1555
+ return response.data.data.dailyUsage;
1556
+ }
1557
+ catch (e) {
1558
+ let message;
1559
+ if (e instanceof AxiosError) {
1560
+ message =
1561
+ e.response?.data?.responseMeta?.message ??
1562
+ JSON.stringify(e.response?.data) ??
1563
+ e.response?.statusText ??
1564
+ e?.message;
1565
+ }
1566
+ else {
1567
+ message = `${e?.message ? e?.message : e}`;
1568
+ }
1569
+ throw new Error(`Could not fetch billing daily usage: ${message}`);
1570
+ }
1571
+ }
1572
+ export async function fetchBillingUsageRecords({ cliVersion, token, superblocksBaseUrl, startDate, endDate, }) {
1573
+ try {
1574
+ const url = new URL(`${BASE_SERVER_API_URL_V1}/billing/usage-records`, superblocksBaseUrl);
1575
+ url.searchParams.set("start", startDate);
1576
+ url.searchParams.set("end", endDate);
1577
+ const config = {
1578
+ method: "get",
1579
+ url: url.toString(),
1580
+ headers: {
1581
+ Authorization: "Bearer " + token,
1582
+ [CLI_VERSION_HEADER]: cliVersion,
1583
+ },
1584
+ };
1585
+ const response = await axios(config);
1586
+ return response.data.data.rows;
1587
+ }
1588
+ catch (e) {
1589
+ let message;
1590
+ if (e instanceof AxiosError) {
1591
+ message =
1592
+ e.response?.data?.responseMeta?.message ??
1593
+ JSON.stringify(e.response?.data) ??
1594
+ e.response?.statusText ??
1595
+ e?.message;
1596
+ }
1597
+ else {
1598
+ message = `${e?.message ? e?.message : e}`;
1599
+ }
1600
+ throw new Error(`Could not fetch billing usage records: ${message}`);
1601
+ }
1602
+ }
1603
+ export async function fetchBillingPlanSummary({ cliVersion, token, superblocksBaseUrl, }) {
1604
+ try {
1605
+ const url = new URL(`${BASE_SERVER_API_URL_V1}/billing/plan-summary`, superblocksBaseUrl);
1606
+ const config = {
1607
+ method: "get",
1608
+ url: url.toString(),
1609
+ headers: {
1610
+ Authorization: "Bearer " + token,
1611
+ [CLI_VERSION_HEADER]: cliVersion,
1612
+ },
1613
+ };
1614
+ const response = await axios(config);
1615
+ return response.data.data;
1616
+ }
1617
+ catch (e) {
1618
+ let message;
1619
+ if (e instanceof AxiosError) {
1620
+ message =
1621
+ e.response?.data?.responseMeta?.message ??
1622
+ JSON.stringify(e.response?.data) ??
1623
+ e.response?.statusText ??
1624
+ e?.message;
1625
+ }
1626
+ else {
1627
+ message = `${e?.message ? e?.message : e}`;
1628
+ }
1629
+ throw new Error(`Could not fetch billing plan summary: ${message}`);
1630
+ }
1631
+ }
1632
+ // ---------------------------------------------------------------------------
1633
+ // Knowledge (Facts)
1634
+ // ---------------------------------------------------------------------------
1635
+ export async function fetchFacts({ cliVersion, token, superblocksBaseUrl, query, }) {
1636
+ try {
1637
+ const url = new URL(`${BASE_SERVER_API_URL_V1}/facts`, superblocksBaseUrl);
1638
+ if (query?.entityScope)
1639
+ url.searchParams.set("entityScope", query.entityScope);
1640
+ if (query?.entityId)
1641
+ url.searchParams.set("entityId", query.entityId);
1642
+ if (query?.accessType)
1643
+ url.searchParams.set("accessType", query.accessType);
1644
+ if (query?.isEnabled !== undefined)
1645
+ url.searchParams.set("isEnabled", String(query.isEnabled));
1646
+ if (query?.search)
1647
+ url.searchParams.set("search", query.search);
1648
+ if (query?.limit !== undefined)
1649
+ url.searchParams.set("limit", String(query.limit));
1650
+ if (query?.offset !== undefined)
1651
+ url.searchParams.set("offset", String(query.offset));
1652
+ if (query?.sortBy)
1653
+ url.searchParams.set("sortBy", query.sortBy);
1654
+ if (query?.sortOrder)
1655
+ url.searchParams.set("sortOrder", query.sortOrder);
1656
+ const config = {
1657
+ method: "get",
1658
+ url: url.toString(),
1659
+ headers: {
1660
+ Authorization: "Bearer " + token,
1661
+ [CLI_VERSION_HEADER]: cliVersion,
1662
+ },
1663
+ };
1664
+ const response = await axios(config);
1665
+ return response.data.data.facts;
1666
+ }
1667
+ catch (e) {
1668
+ let message;
1669
+ if (e instanceof AxiosError) {
1670
+ message =
1671
+ e.response?.data?.responseMeta?.message ??
1672
+ JSON.stringify(e.response?.data) ??
1673
+ e.response?.statusText ??
1674
+ e?.message;
1675
+ }
1676
+ else {
1677
+ message = `${e?.message ? e?.message : e}`;
1678
+ }
1679
+ throw new Error(`Could not fetch knowledge entries: ${message}`);
1680
+ }
1681
+ }
1682
+ export async function fetchFact({ cliVersion, token, superblocksBaseUrl, factId, }) {
1683
+ try {
1684
+ const url = new URL(`${BASE_SERVER_API_URL_V1}/facts/${encodeURIComponent(factId)}`, superblocksBaseUrl);
1685
+ const config = {
1686
+ method: "get",
1687
+ url: url.toString(),
1688
+ headers: {
1689
+ Authorization: "Bearer " + token,
1690
+ [CLI_VERSION_HEADER]: cliVersion,
1691
+ },
1692
+ };
1693
+ const response = await axios(config);
1694
+ return response.data.data;
1695
+ }
1696
+ catch (e) {
1697
+ let message;
1698
+ if (e instanceof AxiosError) {
1699
+ message =
1700
+ e.response?.data?.responseMeta?.message ??
1701
+ JSON.stringify(e.response?.data) ??
1702
+ e.response?.statusText ??
1703
+ e?.message;
1704
+ }
1705
+ else {
1706
+ message = `${e?.message ? e?.message : e}`;
1707
+ }
1708
+ throw new Error(`Could not fetch knowledge entry: ${message}`);
1709
+ }
1710
+ }
1711
+ // ---------------------------------------------------------------------------
1712
+ // Audit entities
1713
+ // ---------------------------------------------------------------------------
1714
+ export async function fetchAuditEntities({ cliVersion, token, superblocksBaseUrl, }) {
1715
+ try {
1716
+ const url = new URL(`${BASE_SERVER_API_URL_V2}/audit/entities`, superblocksBaseUrl);
1717
+ const config = {
1718
+ method: "get",
1719
+ url: url.toString(),
1720
+ headers: {
1721
+ Authorization: "Bearer " + token,
1722
+ [CLI_VERSION_HEADER]: cliVersion,
1723
+ },
1724
+ };
1725
+ const response = await axios(config);
1726
+ return response.data.data;
1727
+ }
1728
+ catch (e) {
1729
+ let message;
1730
+ if (e instanceof AxiosError) {
1731
+ message =
1732
+ e.response?.data?.responseMeta?.message ??
1733
+ JSON.stringify(e.response?.data) ??
1734
+ e.response?.statusText ??
1735
+ e?.message;
1736
+ }
1737
+ else {
1738
+ message = `${e?.message ? e?.message : e}`;
1739
+ }
1740
+ throw new Error(`Could not fetch audit entities: ${message}`);
1741
+ }
1742
+ }
986
1743
  function filesToFileDescriptors(files, appRoot) {
987
1744
  const fds = files.map((file) => {
988
1745
  const relativePath = appRoot ? path.relative(appRoot, file) : undefined;