@volant-autonomy/via-sdk 1.4291.1 → 1.4314.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -1,4 +1,3 @@
1
- // eslint-disable-next-line promise/param-names
2
1
  const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
3
2
  class UnauthenticatedError extends Error {
4
3
  constructor() {
@@ -143,8 +142,7 @@ class Composite {
143
142
  if (pathingTaskResult.error) {
144
143
  return pathingTaskResult.error;
145
144
  }
146
- if (pathingTaskResult.data.meta.state === 'successful' ||
147
- pathingTaskResult.data.meta.state === 'failed') {
145
+ if (pathingTaskResult.data.meta.state === 'successful' || pathingTaskResult.data.meta.state === 'failed') {
148
146
  return;
149
147
  }
150
148
  const pathingTaskPayload = {
@@ -791,7 +789,7 @@ function defaultPathSerializer(pathname, pathParams) {
791
789
  return nextURL;
792
790
  }
793
791
 
794
- var version = "1.4291.1";
792
+ var version = "1.4314.1";
795
793
 
796
794
  const querySerializer = createQuerySerializer();
797
795
  class Fetcher {
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/types.ts","../src/composite.ts","../src/direct.ts","../node_modules/openapi-fetch/dist/index.js","../src/fetch.ts","../src/client.ts","../src/utils.ts"],"sourcesContent":["import { OperationRequestBodyContent } from 'openapi-typescript-helpers'\nimport type { components } from './volant-schema'\n\n// eslint-disable-next-line promise/param-names\nexport const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms))\n\n/**\n * Coerces typescript into more fully evaluating a type to make it more readable\n * @example\n * type X = {\n * a: string | number\n * } & {\n * a: string\n * }\n * Expand<X> == {a: string}\n * // without expand it is not simplified by TS when being shown,\n * // even though it is equivalent to just {a: string}\n */\nexport type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never\n\n/** The raw API schemas from openapi.json */\nexport type schemas = components['schemas']\nexport type Waypoint = schemas['StartWaypoint'] | schemas['GotoWaypoint-Input']\nexport type Checkpoint = schemas['GotoPathingCheckpoint'] | schemas['StartPathingCheckpoint']\nexport type PathingTaskState = schemas['PathingTaskState']\n\nexport class UnauthenticatedError extends Error {\n // Both properties are needed to allow for errors to be identified when used in scenarios such\n // as 'PromiseRejectionEvent' such as:\n // `if (errorEvent.reason.name === UnauthenticatedError.name)`\n // In the above, the first is the instance property and the latter a class property\n public override name = 'Unauthenticated'\n // FIXME: this was valid in the via codebase for some reason.\n // public static override name = 'Unauthenticated'\n}\n\n/**\n * Gets the type of the body input for an endpoint\n * @example\n * bodyOf<paths[\"/login\"][\"post\"]> = {username: string, password: string}\n */\nexport type bodyOf<T> = OperationRequestBodyContent<T>\n/** Gets the type of the query input for an endpoint */\nexport type queryOf<T> = T extends { parameters: { query?: infer P } } ? P : never\n/** Gets the type of the path input for an endpoint */\nexport type pathOf<T> = T extends { parameters: { path?: infer P } } ? P : never\n/** Gets the type of the header input for an endpoint */\nexport type headerOf<T> = T extends { parameters: { header?: infer P } } ? P : never\n","import { createPathingTask, Direct, PathingTaskEvent } from './direct'\n\nimport { schemas, sleep } from './types'\n\nexport type StreamError = {\n errors: {\n detail: string\n status: string\n }[]\n status: string\n}\n\nclass StreamFailedError extends Error {}\n\nclass TaskTimeoutError extends Error {}\n\nconst PathingTaskTimeout = 30_000\nconst ValidStreamTimeout = 5_000\n\nexport class Composite {\n private direct: Direct\n public constructor(direct: Direct) {\n this.direct = direct\n }\n /// flightplans\n\n public async upsertFlightplan(args: schemas['Flightplan-Input'], id: string | null | undefined) {\n if (id) {\n return this.direct.modifyDraftFlightplan(id, args)\n } else {\n return this.direct.createDraftFlightplan(args)\n }\n }\n\n public async getAllDraftFlightplans() {\n return this.direct.getAllFlightplans({ 'filter[state]': ['Draft'] })\n }\n\n public async getAllClosedFlightplans() {\n return this.direct.getAllFlightplans({ 'filter[state]': ['Closed'] })\n }\n\n public async getAllPendingFlightplans() {\n return this.direct.getAllFlightplans({ 'filter[state]': ['Pending'] })\n }\n\n public async getAllAcceptedFlightplans() {\n return this.direct.getAllFlightplans({ 'filter[state]': ['Accepted'] })\n }\n\n // TODO: make error 409 more obvious, as it is different\n public async attemptAcceptFlightplan(id: string) {\n return this.direct.changeFlightplanState(id, 'Accepted')\n }\n\n public async attemptTemporalDeconfliction(id: string, timeInterval: number = 60) {\n const startTimeDeconflictArgs = {\n time_interval: timeInterval\n }\n\n const { data, error } = await this.direct.getFlightplanDeconflictedStartTime(\n id,\n startTimeDeconflictArgs\n )\n if (error) {\n return { error }\n }\n\n return this.direct.modifyDraftFlightplan(id, data.attributes)\n }\n\n /// pathing tasks\n\n /**\n * Handles fetching a pathing task once it has reached a final state. This will be completed through one of two\n * methods:\n *\n * - Event stream (default) - Opens an event stream and optionally calls onMessage when the state changes. The\n * callback will not be called once the task is complete as the task being complete can be inferred from the stream\n * being closed.\n *\n * - Polling (fallback) - Occurs automatically if the connection to the event stream is unsuccessful or the stream\n * fails. Polls every 0.5s whilst queuing and every 0.2s whilst in progress. Note if onMessage is defined it is\n * called on every poll.\n * @param taskId - A UUID value that identifies a pathing task\n * @param onMessage - Callback that is called upon receiving details on the state of the pathing task\n * @returns - The result of the pathing task\n */\n public async getPathingTaskResult(\n taskId: string,\n onMessage?: (payload: PathingTaskEvent) => void\n ) {\n try {\n await this.pathingTaskStreamResult(taskId, onMessage)\n } catch (error: unknown) {\n if (error instanceof StreamFailedError) {\n await this.pathingTaskPollResult(taskId, onMessage)\n }\n }\n return this.direct.getPathingTask(taskId)\n }\n\n /** Handles creating and waiting for the result of a pathing task. */\n public async doPathingTask(\n args: createPathingTask['requestBody']['content']['application/json']\n ) {\n const createdTask = await this.direct.createPathingTask(args)\n if (createdTask.error) {\n return createdTask.error\n }\n\n const id = createdTask.data.id\n\n return await this.getPathingTaskResult(id)\n }\n\n private async pathingTaskStreamResult(\n taskId: string,\n onMessage?: (payload: PathingTaskEvent) => void\n ) {\n let streamConnectionTimeout: ReturnType<typeof setTimeout>\n let streamNotSuccessfulTimeout: ReturnType<typeof setTimeout>\n\n const promise = new Promise((resolve, reject) => {\n const stream = this.direct.getPathingTaskStateStream(taskId)\n\n streamConnectionTimeout = setTimeout(() => {\n if (stream.readyState !== EventSource.OPEN) {\n stream.close()\n reject(new StreamFailedError('Timeout connecting'))\n }\n }, ValidStreamTimeout)\n\n streamNotSuccessfulTimeout = setTimeout(() => {\n stream.close()\n reject(new TaskTimeoutError('Timeout whilst waiting for successful result'))\n }, PathingTaskTimeout)\n\n stream.onmessage = async (event: MessageEvent) => {\n // TODO(Jack): Use a discriminated union\n const data = JSON.parse(event.data) as {\n payload: PathingTaskEvent\n error: boolean\n }\n\n if (data.error === true) {\n stream.close()\n reject(new Error(`Task stream returned error: ${data.payload}`))\n return\n }\n\n onMessage?.(data.payload)\n\n if (data.payload.terminated === true) {\n stream.close()\n resolve(data.payload)\n }\n }\n\n stream.onerror = (error: Event) => {\n stream.close()\n reject(new StreamFailedError(`Stream failed: ${error}`))\n }\n })\n\n return promise.finally(() => {\n clearTimeout(streamConnectionTimeout)\n clearTimeout(streamNotSuccessfulTimeout)\n })\n }\n\n private async pathingTaskPollResult(\n taskId: string,\n onMessage?: (payload: PathingTaskEvent) => void\n ): Promise<void | StreamError> {\n let runPathing = true\n\n while (runPathing) {\n setTimeout(() => {\n runPathing = false\n }, PathingTaskTimeout)\n\n const pathingTaskResult = await this.direct.getPathingTask(taskId)\n if (pathingTaskResult.error) {\n return pathingTaskResult.error\n }\n if (\n pathingTaskResult.data.meta.state === 'successful' ||\n pathingTaskResult.data.meta.state === 'failed'\n ) {\n return\n }\n\n const pathingTaskPayload = {\n state: pathingTaskResult.data.meta.state,\n terminated: false\n }\n\n // TODO: Make this only on change from previous\n onMessage?.(pathingTaskPayload)\n\n switch (pathingTaskResult.data.meta.state) {\n case 'queued':\n await sleep(500)\n break\n case 'in-progress':\n await sleep(200)\n break\n }\n }\n }\n}\n","import createFetcher from './fetch'\nimport { bodyOf, queryOf, pathOf, schemas, PathingTaskState } from './types'\nimport type { paths } from './volant-schema'\n\ntype requestOptions = {\n abortKey?: string\n fetch?: typeof globalThis.fetch\n}\n\nexport type PathingTaskEvent = {\n state: PathingTaskState\n terminated: boolean\n}\n\n// These type names must match their function names, so the docstrings\n// can be copied over from the schema\nexport type getAllFlightplans = paths['/flightplans/']['get']\nexport type createDraftFlightplan = paths['/flightplans/']['post']\nexport type modifyDraftFlightplan = paths['/flightplans/{flightplan_id}']['put']\nexport type getFlightplan = paths['/flightplans/{flightplan_id}']['get']\nexport type getFlightplanWaypointsDetailed =\n paths['/flightplans/{flightplan_id}/waypoints_detail']['get']\nexport type getFlightplanStatistics = paths['/flightplans/{flightplan_id}/statistics']['get']\nexport type getFlightplanVolumes = paths['/flightplans/{flightplan_id}/volumes']['get']\nexport type getFlightplanDeconflictedStartTime =\n paths['/flightplans/{flightplan_id}/start_time_deconflict']['get']\nexport type getFlightplanTerrainProfile =\n paths['/flightplans/{flightplan_id}/terrain_profile']['get']\nexport type changeFlightplanState = paths['/flightplans/{flightplan_id}/state']['post']\nexport type getFlightplanAsFile = paths['/flightplans/{flightplan_id}/content']['get']\n\nexport type createAirspaceConstraint = paths['/airspace_constraints/']['post']\nexport type getAllAirspaceConstraints = paths['/airspace_constraints/']['get']\nexport type getAirspaceConstraint = paths['/airspace_constraints/{airspace_constraint_id}']['get']\nexport type modifyAirspaceConstraint =\n paths['/airspace_constraints/{airspace_constraint_id}']['put']\nexport type changeAirspaceConstraintState =\n paths['/airspace_constraints/{airspace_constraints_id}/state']['post']\n\nexport type createPathingTask = paths['/pathing_tasks/']['post']\nexport type getPathingTask = paths['/pathing_tasks/{pathing_task_id}']['get']\nexport type getPathingTaskStateStream = paths['/pathing_tasks/{pathing_task_id}/state']['get']\n\nexport type getAllCharts = paths['/charts/']['get']\nexport type getChart = paths['/charts/{chart_id}']['get']\n\nexport type getSailV2_5 = paths['/risk_assessment/sora/v2.5/sail']['get']\nexport type calculateResidualArcV2_5 = paths['/risk_assessment/sora/v2.5/residual_arc']['post']\nexport type getAllArcsV2_5 = paths['/risk_assessment/sora/v2.5/air_risk_classifications']['get']\nexport type getArcV2_5 =\n paths['/risk_assessment/sora/v2.5/air_risk_classifications/{arc_id}']['get']\nexport type generateSoraReportV2_5 = paths['/risk_assessment/sora/v2.5/report']['post']\nexport type generateSoraSemanticModelVolumesV2_5 =\n paths['/risk_assessment/sora/v2.5/semantic_model_volumes']['post']\n\nexport type getAllArcsUk = paths['/risk_assessment/sora/uk/air_risk_classifications']['get']\nexport type getArcUk = paths['/risk_assessment/sora/uk/air_risk_classifications/{arc_id}']['get']\nexport type getSailUk = paths['/risk_assessment/sora/uk/sail']['get']\nexport type calculateResidualArcUk = paths['/risk_assessment/sora/uk/residual_arc']['post']\nexport type createSoraReportUk = paths['/risk_assessment/sora/uk/report']['post']\nexport type createSoraSemanticModelVolumesUk =\n paths['/risk_assessment/sora/uk/semantic_model_volumes']['post']\n\nexport type createSoraClassification = paths['/risk_assessment/sora/classifications']['post']\nexport type updateSoraClassification =\n paths['/risk_assessment/sora/classifications/{classification_id}']['put']\nexport type getSoraClassification =\n paths['/risk_assessment/sora/classifications/{classification_id}']['get']\n\nexport type getAllControlledGroundAreas =\n paths['/risk_assessment/sora/controlled_ground_areas/']['get']\nexport type createControlledGroundArea =\n paths['/risk_assessment/sora/controlled_ground_areas/']['post']\nexport type getControlledGroundArea =\n paths['/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}']['get']\nexport type updateControlledGroundArea =\n paths['/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}']['put']\nexport type deleteControlledGroundArea =\n paths['/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}']['delete']\n\nexport type getAllAtypicalAirspaces = paths['/risk_assessment/sora/atypical_airspaces/']['get']\nexport type createAtypicalAirspace = paths['/risk_assessment/sora/atypical_airspaces/']['post']\nexport type getAtypicalAirspace =\n paths['/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}']['get']\nexport type updateAtypicalAirspace =\n paths['/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}']['put']\nexport type deleteAtypicalAirspace =\n paths['/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}']['delete']\n\nexport type createRasterPattern = paths['/flight_patterns/raster']['post']\n\nexport type getGeocage = paths['/geocages/{geocage_id}']['get']\nexport type getAllGeocages = paths['/geocages/']['get']\nexport type createGeocage = paths['/geocages/']['post']\nexport type updateGeocage = paths['/geocages/{geocage_id}']['put']\nexport type deleteGeocage = paths['/geocages/{geocage_id}']['delete']\n\nexport type getCostDataset = paths['/cost_datasets/{cost_dataset_id}']['get']\nexport type getAllCostDatasets = paths['/cost_datasets/']['get']\nexport type createCostDataset = paths['/cost_datasets/']['post']\nexport type deleteCostDataset = paths['/cost_datasets/{cost_dataset_id}']['delete']\n\nexport class Direct {\n private fetcher: ReturnType<typeof createFetcher<paths>>\n public constructor(fetcher: ReturnType<typeof createFetcher<paths>>) {\n this.fetcher = fetcher\n }\n\n /// flightplans\n\n public async getAllFlightplans<Opts extends requestOptions = {}>(\n args: queryOf<getAllFlightplans>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/flightplans/', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((flightplan) => flightplan.data) }\n } else {\n return resp\n }\n }\n\n public async createDraftFlightplan<Opts extends requestOptions = {}>(\n args: bodyOf<createDraftFlightplan>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/flightplans/', { body: args }, opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async modifyDraftFlightplan<Opts extends requestOptions = {}>(\n id: pathOf<modifyDraftFlightplan>['flightplan_id'],\n args: bodyOf<modifyDraftFlightplan>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/flightplans/{flightplan_id}',\n { body: args, path: { flightplan_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getFlightplan<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplan>['flightplan_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}',\n { path: { flightplan_id: id } },\n opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n // FIXME: this name is poor\n public async getFlightplanWaypointsDetailed<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanWaypointsDetailed>['flightplan_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/waypoints_detail',\n { path: { flightplan_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getFlightplanTerrainProfile<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanTerrainProfile>['flightplan_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/terrain_profile',\n { path: { flightplan_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getFlightplanStatistics<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanStatistics>['flightplan_id'],\n args: queryOf<getFlightplanStatistics>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/statistics',\n { path: { flightplan_id: id }, query: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getFlightplanVolumes<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanVolumes>['flightplan_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/volumes',\n { path: { flightplan_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n // TODO: make a wrapper for this which updates the existing flightplan to have this new start time\n public async getFlightplanDeconflictedStartTime<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanDeconflictedStartTime>['flightplan_id'],\n args: queryOf<getFlightplanDeconflictedStartTime>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/start_time_deconflict',\n { path: { flightplan_id: id }, query: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async changeFlightplanState<Opts extends requestOptions = {}>(\n id: pathOf<changeFlightplanState>['flightplan_id'],\n state: bodyOf<changeFlightplanState>['state'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/flightplans/{flightplan_id}/state',\n { path: { flightplan_id: id }, body: { state } },\n opts as Opts\n )\n if (!resp.error && resp.aborted === false) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n // TODO: use `args` instead of fileFormat\n public async getFlightplanAsFile<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanAsFile>['flightplan_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/content',\n { path: { flightplan_id: id }, header: { accept: 'application/vnd.google-earth.kml+xml' } },\n { ...(opts as Opts), parseAs: 'blob' }\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: { file: resp.data, fileName: resp.response.headers.get('filename') } }\n }\n return resp\n }\n\n /// airspace constraints\n\n public async createAirspaceConstraint<Opts extends requestOptions = {}>(\n args: bodyOf<createAirspaceConstraint>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/airspace_constraints/', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllAirspaceConstraints<Opts extends requestOptions = {}>(\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/airspace_constraints/', {}, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((constraint) => constraint.data) }\n }\n return resp\n }\n\n public async getAirspaceConstraint<Opts extends requestOptions = {}>(\n id: pathOf<getAirspaceConstraint>['airspace_constraint_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/airspace_constraints/{airspace_constraint_id}',\n { path: { airspace_constraint_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async modifyAirspaceConstraint<Opts extends requestOptions = {}>(\n id: pathOf<modifyAirspaceConstraint>['airspace_constraint_id'],\n args: bodyOf<modifyAirspaceConstraint>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/airspace_constraints/{airspace_constraint_id}',\n { path: { airspace_constraint_id: id }, body: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async changeAirspaceConstraintState<Opts extends requestOptions = {}>(\n id: pathOf<changeAirspaceConstraintState>['airspace_constraints_id'],\n state: bodyOf<changeAirspaceConstraintState>['state'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/airspace_constraints/{airspace_constraints_id}/state',\n { path: { airspace_constraints_id: id }, body: { state } },\n opts as Opts\n )\n if (!resp.error && resp.aborted === false) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n /// pathing tasks\n\n public async createPathingTask<Opts extends requestOptions = {}>(\n args: bodyOf<createPathingTask>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/pathing_tasks/', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getPathingTask<Opts extends requestOptions = {}>(\n id: pathOf<getPathingTask>['pathing_task_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/pathing_tasks/{pathing_task_id}',\n { path: { pathing_task_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public getPathingTaskStateStream(\n id: pathOf<getPathingTaskStateStream>['pathing_task_id']\n ): EventSource {\n return this.fetcher.STREAM(`/pathing_tasks/{pathing_task_id}/state`, {\n path: { pathing_task_id: id }\n })\n }\n\n /// charts\n\n public async getAllCharts<Opts extends requestOptions = {}>(opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/charts/', {}, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((chart) => chart.data) }\n }\n return resp\n }\n\n public async getChart<Opts extends requestOptions = {}>(\n id: pathOf<getChart>['chart_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/charts/{chart_id}',\n { path: { chart_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n /// risk assessment\n public async getSailV2_5<Opts extends requestOptions = {}>(\n args: queryOf<getSailV2_5>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/v2.5/sail',\n { query: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async calculateResidualArcV2_5<Opts extends requestOptions = {}>(\n args: bodyOf<calculateResidualArcV2_5>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/risk_assessment/sora/v2.5/residual_arc',\n { body: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllArcsV2_5<Opts extends requestOptions = {}>(opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/v2.5/air_risk_classifications',\n {},\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((arc) => arc.data) }\n }\n return resp\n }\n\n public async getArcV2_5<Opts extends requestOptions = {}>(\n args: pathOf<getArcV2_5>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/v2.5/air_risk_classifications/{arc_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async generateSoraReportV2_5<Opts extends requestOptions = {}>(\n args: bodyOf<generateSoraReportV2_5>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/risk_assessment/sora/v2.5/report',\n { body: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async generateSoraSemanticModelVolumesV2_5<Opts extends requestOptions = {}>(\n args: bodyOf<generateSoraSemanticModelVolumesV2_5>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/risk_assessment/sora/v2.5/semantic_model_volumes',\n { body: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllArcsUk<Opts extends requestOptions = {}>(opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/uk/air_risk_classifications',\n {},\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((arc) => arc.data) }\n }\n return resp\n }\n\n public async getArcUk<Opts extends requestOptions = {}>(\n args: pathOf<getArcUk>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/uk/air_risk_classifications/{arc_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getSailUk<Opts extends requestOptions = {}>(\n args: queryOf<getSailUk>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/uk/sail',\n { query: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async calculateResidualArcUk<Opts extends requestOptions = {}>(\n args: bodyOf<calculateResidualArcUk>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/risk_assessment/sora/uk/residual_arc',\n { body: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async generateSoraReportUk<Opts extends requestOptions = {}>(\n args: bodyOf<createSoraReportUk>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/risk_assessment/sora/uk/report',\n { body: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async generateSoraSemanticModelVolumesUk<Opts extends requestOptions = {}>(\n args: bodyOf<generateSoraSemanticModelVolumesV2_5>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/risk_assessment/sora/uk/semantic_model_volumes',\n { body: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async createSoraClassification<Opts extends requestOptions = {}>(\n args: bodyOf<createSoraClassification>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/risk_assessment/sora/classifications',\n { body: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async updateSoraClassification<Opts extends requestOptions = {}>(\n id: pathOf<updateSoraClassification>['classification_id'],\n args: bodyOf<updateSoraClassification>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/risk_assessment/sora/classifications/{classification_id}',\n { body: args, path: { classification_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getSoraClassification<Opts extends requestOptions = {}>(\n id: pathOf<getSoraClassification>['classification_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/classifications/{classification_id}',\n { path: { classification_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n /// controlled ground areas\n public async getAllControlledGroundAreas<Opts extends requestOptions = {}>(\n args: queryOf<getAllControlledGroundAreas>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/controlled_ground_areas/',\n { query: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return {\n ...resp,\n data: resp.data.data.map((controlledGroundArea) => controlledGroundArea.data)\n }\n } else {\n return resp\n }\n }\n\n public async createControlledGroundArea<Opts extends requestOptions = {}>(\n args: bodyOf<createControlledGroundArea>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/risk_assessment/sora/controlled_ground_areas/',\n { body: args },\n opts as Opts\n )\n\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getControlledGroundArea<Opts extends requestOptions = {}>(\n args: pathOf<getControlledGroundArea>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async updateControlledGroundArea<Opts extends requestOptions = {}>(\n id: pathOf<updateControlledGroundArea>['controlled_ground_area_id'],\n args: bodyOf<updateControlledGroundArea>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}',\n { body: args, path: { controlled_ground_area_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async deleteControlledGroundArea<Opts extends requestOptions = {}>(\n args: pathOf<deleteControlledGroundArea>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.DELETE(\n '/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n /// atypical airspaces\n public async getAllAtypicalAirspaces<Opts extends requestOptions = {}>(\n args: queryOf<getAllAtypicalAirspaces>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/atypical_airspaces/',\n { query: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((atypicalAirspace) => atypicalAirspace.data) }\n } else {\n return resp\n }\n }\n\n public async createAtypicalAirspace<Opts extends requestOptions = {}>(\n args: bodyOf<createAtypicalAirspace>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/risk_assessment/sora/atypical_airspaces/',\n { body: args },\n opts as Opts\n )\n\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAtypicalAirspace<Opts extends requestOptions = {}>(\n args: pathOf<getAtypicalAirspace>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async updateAtypicalAirspace<Opts extends requestOptions = {}>(\n id: pathOf<updateAtypicalAirspace>['atypical_airspace_id'],\n args: bodyOf<updateAtypicalAirspace>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}',\n { body: args, path: { atypical_airspace_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async deleteAtypicalAirspace<Opts extends requestOptions = {}>(\n args: pathOf<deleteAtypicalAirspace>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.DELETE(\n '/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n /// geocages\n public async createGeocage<Opts extends requestOptions = {}>(\n args: bodyOf<createGeocage>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/geocages/', { body: args }, opts as Opts)\n\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getGeocage<Opts extends requestOptions = {}>(\n args: pathOf<getGeocage>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/geocages/{geocage_id}', { path: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllGeocages<Opts extends requestOptions = {}>(\n args: queryOf<getAllGeocages>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/geocages/', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n } else {\n return resp\n }\n }\n\n public async updateGeocage<Opts extends requestOptions = {}>(\n id: pathOf<updateGeocage>['geocage_id'],\n args: bodyOf<updateGeocage>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/geocages/{geocage_id}',\n { body: args, path: { geocage_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async deleteGeocage<Opts extends requestOptions = {}>(\n args: pathOf<deleteGeocage>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.DELETE('/geocages/{geocage_id}', { path: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n /// cost datasets\n\n public async getCostDataset<Opts extends requestOptions = {}>(\n id: pathOf<getCostDataset>['cost_dataset_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/cost_datasets/{cost_dataset_id}',\n { path: { cost_dataset_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllCostDatasets<Opts extends requestOptions = {}>(\n args: queryOf<getAllCostDatasets>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/cost_datasets/', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((x) => x.data) }\n }\n return resp\n }\n\n public async createCostDataset<Opts extends requestOptions = {}>(\n args: {\n chart_id: string\n name: schemas['CostDatasetResponse']['name']\n valid_time_ranges: schemas['RasterValidityTime'][]\n geotiff: Blob\n },\n opts?: Opts | requestOptions\n ) {\n const formData = new FormData()\n formData.append('chart_id', args.chart_id)\n formData.append('name', args.name)\n formData.append('valid_time_ranges', JSON.stringify(args.valid_time_ranges))\n formData.append('geotiff', args.geotiff)\n\n const resp = await this.fetcher.POST(\n '/cost_datasets/',\n { body: formData },\n {\n ...(opts as Opts),\n // when sending a FormData object the browser will automatically\n // set the Content-Type header to the correct value, if (and only if)\n // you don't set it yourself\n contentType: 'none'\n }\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async deleteCostDataset<Opts extends requestOptions = {}>(\n id: pathOf<deleteCostDataset>['cost_dataset_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.DELETE(\n '/cost_datasets/{cost_dataset_id}',\n { path: { cost_dataset_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n /// flight patterns\n\n public async createRasterPattern<Opts extends requestOptions = {}>(\n args: bodyOf<createRasterPattern>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/flight_patterns/raster', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n}\n","// settings & const\nconst DEFAULT_HEADERS = {\n \"Content-Type\": \"application/json\",\n};\n\nconst PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\n/** Add custom parameters to Request object */\nclass CustomRequest extends Request {\n constructor(input, init) {\n super(input, init);\n\n // add custom parameters\n for (const key in init) {\n if (!(key in this)) {\n this[key] = init[key];\n }\n }\n }\n}\n\n/**\n * Returns a cheap, non-cryptographically-secure random ID\n * Courtesy of @imranbarbhuiya (https://github.com/imranbarbhuiya)\n */\nexport function randomID() {\n return Math.random().toString(36).slice(2, 11);\n}\n\n/**\n * Create an openapi-fetch client.\n * @type {import(\"./index.js\").default}\n */\nexport default function createClient(clientOptions) {\n let {\n baseUrl = \"\",\n fetch: baseFetch = globalThis.fetch,\n querySerializer: globalQuerySerializer,\n bodySerializer: globalBodySerializer,\n headers: baseHeaders,\n ...baseOptions\n } = { ...clientOptions };\n if (baseUrl.endsWith(\"/\")) {\n baseUrl = baseUrl.substring(0, baseUrl.length - 1);\n }\n baseHeaders = mergeHeaders(DEFAULT_HEADERS, baseHeaders);\n const middlewares = [];\n\n /**\n * Per-request fetch (keeps settings created in createClient()\n * @param {T} url\n * @param {import('./index.js').FetchOptions<T>} fetchOptions\n */\n async function coreFetch(schemaPath, fetchOptions) {\n const {\n fetch = baseFetch,\n headers,\n params = {},\n parseAs = \"json\",\n querySerializer: requestQuerySerializer,\n bodySerializer = globalBodySerializer ?? defaultBodySerializer,\n ...init\n } = fetchOptions || {};\n\n let querySerializer =\n typeof globalQuerySerializer === \"function\"\n ? globalQuerySerializer\n : createQuerySerializer(globalQuerySerializer);\n if (requestQuerySerializer) {\n querySerializer =\n typeof requestQuerySerializer === \"function\"\n ? requestQuerySerializer\n : createQuerySerializer({\n ...(typeof globalQuerySerializer === \"object\" ? globalQuerySerializer : {}),\n ...requestQuerySerializer,\n });\n }\n\n const requestInit = {\n redirect: \"follow\",\n ...baseOptions,\n ...init,\n headers: mergeHeaders(baseHeaders, headers, params.header),\n };\n if (requestInit.body) {\n requestInit.body = bodySerializer(requestInit.body);\n }\n // remove `Content-Type` if serialized body is FormData; browser will correctly set Content-Type & boundary expression\n if (requestInit.body instanceof FormData) {\n requestInit.headers.delete(\"Content-Type\");\n }\n\n let id;\n let options;\n let request = new CustomRequest(createFinalURL(schemaPath, { baseUrl, params, querySerializer }), requestInit);\n\n if (middlewares.length) {\n id = randomID();\n\n // middleware (request)\n options = Object.freeze({\n baseUrl,\n fetch,\n parseAs,\n querySerializer,\n bodySerializer,\n });\n for (const m of middlewares) {\n if (m && typeof m === \"object\" && typeof m.onRequest === \"function\") {\n const result = await m.onRequest({\n request,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n if (!(result instanceof Request)) {\n throw new Error(\"onRequest: must return new Request() when modifying the request\");\n }\n request = result;\n }\n }\n }\n }\n\n // fetch!\n let response = await fetch(request);\n\n // middleware (response)\n // execute in reverse-array order (first priority gets last transform)\n if (middlewares.length) {\n for (let i = middlewares.length - 1; i >= 0; i--) {\n const m = middlewares[i];\n if (m && typeof m === \"object\" && typeof m.onResponse === \"function\") {\n const result = await m.onResponse({\n request,\n response,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n if (!(result instanceof Response)) {\n throw new Error(\"onResponse: must return new Response() when modifying the response\");\n }\n response = result;\n }\n }\n }\n }\n\n // handle empty content\n // note: we return `{}` because we want user truthy checks for `.data` or `.error` to succeed\n if (response.status === 204 || response.headers.get(\"Content-Length\") === \"0\") {\n return response.ok ? { data: {}, response } : { error: {}, response };\n }\n\n // parse response (falling back to .text() when necessary)\n if (response.ok) {\n // if \"stream\", skip parsing entirely\n if (parseAs === \"stream\") {\n return { data: response.body, response };\n }\n return { data: await response[parseAs](), response };\n }\n\n // handle errors\n let error = await response.text();\n try {\n error = JSON.parse(error); // attempt to parse as JSON\n } catch {\n // noop\n }\n return { error, response };\n }\n\n return {\n /** Call a GET endpoint */\n async GET(url, init) {\n return coreFetch(url, { ...init, method: \"GET\" });\n },\n /** Call a PUT endpoint */\n async PUT(url, init) {\n return coreFetch(url, { ...init, method: \"PUT\" });\n },\n /** Call a POST endpoint */\n async POST(url, init) {\n return coreFetch(url, { ...init, method: \"POST\" });\n },\n /** Call a DELETE endpoint */\n async DELETE(url, init) {\n return coreFetch(url, { ...init, method: \"DELETE\" });\n },\n /** Call a OPTIONS endpoint */\n async OPTIONS(url, init) {\n return coreFetch(url, { ...init, method: \"OPTIONS\" });\n },\n /** Call a HEAD endpoint */\n async HEAD(url, init) {\n return coreFetch(url, { ...init, method: \"HEAD\" });\n },\n /** Call a PATCH endpoint */\n async PATCH(url, init) {\n return coreFetch(url, { ...init, method: \"PATCH\" });\n },\n /** Call a TRACE endpoint */\n async TRACE(url, init) {\n return coreFetch(url, { ...init, method: \"TRACE\" });\n },\n /** Register middleware */\n use(...middleware) {\n for (const m of middleware) {\n if (!m) {\n continue;\n }\n if (typeof m !== \"object\" || !(\"onRequest\" in m || \"onResponse\" in m)) {\n throw new Error(\"Middleware must be an object with one of `onRequest()` or `onResponse()`\");\n }\n middlewares.push(m);\n }\n },\n /** Unregister middleware */\n eject(...middleware) {\n for (const m of middleware) {\n const i = middlewares.indexOf(m);\n if (i !== -1) {\n middlewares.splice(i, 1);\n }\n }\n },\n };\n}\n\n// utils\n\n/**\n * Serialize primitive param values\n * @type {import(\"./index.js\").serializePrimitiveParam}\n */\nexport function serializePrimitiveParam(name, value, options) {\n if (value === undefined || value === null) {\n return \"\";\n }\n if (typeof value === \"object\") {\n throw new Error(\n \"Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.\",\n );\n }\n return `${name}=${options?.allowReserved === true ? value : encodeURIComponent(value)}`;\n}\n\n/**\n * Serialize object param (shallow only)\n * @type {import(\"./index.js\").serializeObjectParam}\n */\nexport function serializeObjectParam(name, value, options) {\n if (!value || typeof value !== \"object\") {\n return \"\";\n }\n const values = [];\n const joiner =\n {\n simple: \",\",\n label: \".\",\n matrix: \";\",\n }[options.style] || \"&\";\n\n // explode: false\n if (options.style !== \"deepObject\" && options.explode === false) {\n for (const k in value) {\n values.push(k, options.allowReserved === true ? value[k] : encodeURIComponent(value[k]));\n }\n const final = values.join(\",\"); // note: values are always joined by comma in explode: false (but joiner can prefix)\n switch (options.style) {\n case \"form\": {\n return `${name}=${final}`;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n default: {\n return final;\n }\n }\n }\n\n // explode: true\n for (const k in value) {\n const finalName = options.style === \"deepObject\" ? `${name}[${k}]` : k;\n values.push(serializePrimitiveParam(finalName, value[k], options));\n }\n const final = values.join(joiner);\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${final}` : final;\n}\n\n/**\n * Serialize array param (shallow only)\n * @type {import(\"./index.js\").serializeArrayParam}\n */\nexport function serializeArrayParam(name, value, options) {\n if (!Array.isArray(value)) {\n return \"\";\n }\n\n // explode: false\n if (options.explode === false) {\n const joiner = { form: \",\", spaceDelimited: \"%20\", pipeDelimited: \"|\" }[options.style] || \",\"; // note: for arrays, joiners vary wildly based on style + explode behavior\n const final = (options.allowReserved === true ? value : value.map((v) => encodeURIComponent(v))).join(joiner);\n switch (options.style) {\n case \"simple\": {\n return final;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n // case \"spaceDelimited\":\n // case \"pipeDelimited\":\n default: {\n return `${name}=${final}`;\n }\n }\n }\n\n // explode: true\n const joiner = { simple: \",\", label: \".\", matrix: \";\" }[options.style] || \"&\";\n const values = [];\n for (const v of value) {\n if (options.style === \"simple\" || options.style === \"label\") {\n values.push(options.allowReserved === true ? v : encodeURIComponent(v));\n } else {\n values.push(serializePrimitiveParam(name, v, options));\n }\n }\n return options.style === \"label\" || options.style === \"matrix\"\n ? `${joiner}${values.join(joiner)}`\n : values.join(joiner);\n}\n\n/**\n * Serialize query params to string\n * @type {import(\"./index.js\").createQuerySerializer}\n */\nexport function createQuerySerializer(options) {\n return function querySerializer(queryParams) {\n const search = [];\n if (queryParams && typeof queryParams === \"object\") {\n for (const name in queryParams) {\n const value = queryParams[name];\n if (value === undefined || value === null) {\n continue;\n }\n if (Array.isArray(value)) {\n search.push(\n serializeArrayParam(name, value, {\n style: \"form\",\n explode: true,\n ...options?.array,\n allowReserved: options?.allowReserved || false,\n }),\n );\n continue;\n }\n if (typeof value === \"object\") {\n search.push(\n serializeObjectParam(name, value, {\n style: \"deepObject\",\n explode: true,\n ...options?.object,\n allowReserved: options?.allowReserved || false,\n }),\n );\n continue;\n }\n search.push(serializePrimitiveParam(name, value, options));\n }\n }\n return search.join(\"&\");\n };\n}\n\n/**\n * Handle different OpenAPI 3.x serialization styles\n * @type {import(\"./index.js\").defaultPathSerializer}\n * @see https://swagger.io/docs/specification/serialization/#path\n */\nexport function defaultPathSerializer(pathname, pathParams) {\n let nextURL = pathname;\n for (const match of pathname.match(PATH_PARAM_RE) ?? []) {\n let name = match.substring(1, match.length - 1);\n let explode = false;\n let style = \"simple\";\n if (name.endsWith(\"*\")) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n if (name.startsWith(\".\")) {\n style = \"label\";\n name = name.substring(1);\n } else if (name.startsWith(\";\")) {\n style = \"matrix\";\n name = name.substring(1);\n }\n if (!pathParams || pathParams[name] === undefined || pathParams[name] === null) {\n continue;\n }\n const value = pathParams[name];\n if (Array.isArray(value)) {\n nextURL = nextURL.replace(match, serializeArrayParam(name, value, { style, explode }));\n continue;\n }\n if (typeof value === \"object\") {\n nextURL = nextURL.replace(match, serializeObjectParam(name, value, { style, explode }));\n continue;\n }\n if (style === \"matrix\") {\n nextURL = nextURL.replace(match, `;${serializePrimitiveParam(name, value)}`);\n continue;\n }\n nextURL = nextURL.replace(match, style === \"label\" ? `.${encodeURIComponent(value)}` : encodeURIComponent(value));\n }\n return nextURL;\n}\n\n/**\n * Serialize body object to string\n * @type {import(\"./index.js\").defaultBodySerializer}\n */\nexport function defaultBodySerializer(body) {\n return JSON.stringify(body);\n}\n\n/**\n * Construct URL string from baseUrl and handle path and query params\n * @type {import(\"./index.js\").createFinalURL}\n */\nexport function createFinalURL(pathname, options) {\n let finalURL = `${options.baseUrl}${pathname}`;\n if (options.params?.path) {\n finalURL = defaultPathSerializer(finalURL, options.params.path);\n }\n let search = options.querySerializer(options.params.query ?? {});\n if (search.startsWith(\"?\")) {\n search = search.substring(1);\n }\n if (search) {\n finalURL += `?${search}`;\n }\n return finalURL;\n}\n\n/**\n * Merge headers a and b, with b taking priority\n * @type {import(\"./index.js\").mergeHeaders}\n */\nexport function mergeHeaders(...allHeaders) {\n const finalHeaders = new Headers();\n for (const h of allHeaders) {\n if (!h || typeof h !== \"object\") {\n continue;\n }\n const iterator = h instanceof Headers ? h.entries() : Object.entries(h);\n for (const [k, v] of iterator) {\n if (v === null) {\n finalHeaders.delete(k);\n } else if (Array.isArray(v)) {\n for (const v2 of v) {\n finalHeaders.append(k, v2);\n }\n } else if (v !== undefined) {\n finalHeaders.set(k, v);\n }\n }\n }\n return finalHeaders;\n}\n","import {\n createQuerySerializer,\n defaultPathSerializer,\n ParseAs,\n ParseAsResponse\n} from 'openapi-fetch'\nimport {\n HttpMethod,\n PathsWithMethod,\n HasRequiredKeys,\n FilterKeys,\n SuccessResponse,\n ResponseObjectMap,\n OkStatus\n} from 'openapi-typescript-helpers'\nimport { version } from '../package.json'\nimport { schemas, UnauthenticatedError, Expand, bodyOf } from './types'\n\ntype requestOptions = {\n abortKey?: string\n fetch?: typeof globalThis.fetch\n parseAs?: ParseAs\n // if 'none' is provided, then no Content-Type will be set\n contentType?: 'application/json' | 'none'\n}\n\ntype requestData = {\n query?: Record<string, unknown>\n path?: Record<string, string>\n header?: Record<string, string>\n body?: BodyInit\n}\n\n/**\n * Get the types of the parameters of an endpoint but if it does not have any\n * typing for some reason then fallback to a reasonable default\n */\ntype ParamsOption<T> = T extends {\n parameters: any\n}\n ? T['parameters']\n : { query?: Record<string, unknown> }\n\n/**\n * Get the type of the bodyOf an endpoint but if it does not have any required keys, then\n * make it optional\n */\ntype BodyOption<Endpoint> = Endpoint extends {\n requestBody: { content: { 'application/json': any } }\n}\n ? HasRequiredKeys<bodyOf<Endpoint>> extends never\n ? { body?: bodyOf<Endpoint> | undefined }\n : { body: bodyOf<Endpoint> }\n : { body?: Record<string, unknown> | BodyInit }\n\n/**\n * Combines the body and other parameters into one type, with stuff being optional\n */\ntype MaybeOptionalParams<\n Params extends Record<HttpMethod, {}>,\n Location extends keyof Params\n> = ParamsOption<FilterKeys<Params, Location>> & BodyOption<FilterKeys<Params, Location>>\n\n/**\n * Gets the error statuses of an endpoint\n */\ntype ErrorStatusOf<T> = T extends { responses: Record<number, any> }\n ? keyof T['responses'] extends number | string\n ? `${Exclude<keyof T['responses'], OkStatus>}`\n : string\n : string\n\n/**\n * An {@link SdkErrorModel} but with narrowed status codes\n */\ntype SdkErrorModelGeneric<T = undefined> = {\n errors: Array<{\n detail: string\n /** some status code */\n status: ErrorStatusOf<T>\n }>\n status: ErrorStatusOf<T>\n}\n\n/**\n * The error model returned from the SDK\n * Will always contain at least one element!\n */\nexport type SdkErrorModel = {\n errors: Array<{\n detail: string\n /** some status code */\n status: string\n }>\n status: string\n}\n\ntype EndpointWithResponses = { responses: Record<number, any> }\n\ntype FetchResponse<T, Opts extends requestOptions> =\n | {\n data: T extends EndpointWithResponses\n ? ParseAsResponse<SuccessResponse<ResponseObjectMap<T>>, Opts>\n : unknown\n error?: never\n response: Response\n aborted: false\n }\n | {\n data?: never\n error: Expand<T extends EndpointWithResponses ? SdkErrorModelGeneric<T> : unknown>\n response: Response\n aborted: false\n }\n // If Opts is not {} and Opts[\"abortKey\"] is either\n // 'string | undefined' or 'string' but not just 'undefined'\n // then we could return `aborted: true`\n | (keyof Opts extends never\n ? never\n : Opts['abortKey'] extends undefined\n ? never\n : Opts['abortKey'] extends string | undefined\n ? {\n data?: never\n error?: never\n response?: never\n aborted: true\n }\n : never)\n\nconst querySerializer = createQuerySerializer()\n\nexport type FetcherArgs = {\n /** Base url for all fetch requests */\n url: string\n /** Override the fetch function used for requests */\n fetchFn?: typeof globalThis.fetch\n /** Override the fetch function used for auth requests */\n authFetchFn?: typeof globalThis.fetch\n /** Used for auth, needed unless ignoreAuth is true */\n username?: string\n /** Used for auth, needed unless ignoreAuth is true */\n password?: string\n /** Do not do the automatic /login requests */\n ignoreAuth: boolean\n}\n\nexport class Fetcher<Paths extends Record<string, Record<HttpMethod, {}>>> {\n private opts: FetcherArgs\n\n private aborts: Record<string, AbortController>\n private accessToken: string | undefined\n private expiry: number\n\n public constructor(args: Partial<FetcherArgs>) {\n this.opts = {\n url: args.url ?? 'https://via.volantautonomy.com/api/v1.0',\n fetchFn: args.fetchFn ?? undefined,\n authFetchFn: args.authFetchFn ?? undefined,\n username: args.username,\n password: args.password,\n ignoreAuth: args.ignoreAuth ?? false\n }\n this.aborts = {}\n this.accessToken = undefined\n this.expiry = Date.now() - 5\n }\n\n private async doAuth() {\n // NOTE: THIS REQUEST IS NOT TYPE CHECKED PROPERLY AS paths IS NOT KNOWN HERE!\n if (this.opts.username === undefined || this.opts.password === undefined) {\n throw new UnauthenticatedError(\n 'ignoreAuth is not true and either username or password is missing'\n )\n }\n\n const authFetchFn = this.opts.authFetchFn ?? globalThis.fetch\n const resp = await authFetchFn(this.opts.url + '/login', {\n body: JSON.stringify({\n username: this.opts.username,\n password: this.opts.password\n }),\n redirect: 'follow',\n method: 'post',\n headers: { 'Content-Type': 'application/json', 'X-Via-Sdk-Version': version }\n })\n\n if (resp.ok) {\n const data = (await resp.json()) as schemas['LoginResponse']\n this.expiry = Date.now() + data.expires_in - 10\n this.accessToken = data.access_token\n } else {\n throw new UnauthenticatedError('Invalid credentials')\n }\n }\n\n /** Takes in an abort key to determine what abort signals should be fired and a new signal */\n private handleAbortKey(abortKey?: string) {\n if (abortKey) {\n this.aborts[abortKey]?.abort()\n\n const abortController = new AbortController()\n this.aborts[abortKey] = abortController\n return abortController.signal\n }\n return undefined\n }\n\n /** Transforms an error from the api into an {@link SdkErrorModel} */\n private async parseError(response: Response): Promise<SdkErrorModel> {\n const data = await response.text()\n let errorData: schemas['JsonApiExceptionResponse']\n // NOTE: This function does not handle the case where the API returns valid json\n // that does not fit the schema (as in the `errors` list is missing)\n\n try {\n errorData = JSON.parse(data) as schemas['JsonApiExceptionResponse']\n } catch (err) {\n if (err instanceof SyntaxError) {\n return {\n status: String(response.status),\n errors: [\n {\n status: String(response.status),\n detail: data\n }\n ]\n }\n } else {\n throw err\n }\n }\n\n if (errorData.errors.length === 0) {\n return {\n status: String(response.status),\n errors: [\n {\n status: String(response.status),\n detail: ''\n }\n ]\n }\n } else {\n return {\n status: String(response.status),\n errors: errorData.errors.map((err) => {\n return {\n status: String(err.status),\n detail: err.detail\n }\n })\n }\n }\n }\n\n // source: https://github.com/openapi-ts/openapi-typescript/blob/f21c05b9afcc89ee6ef73edab4045620b410eb01/packages/openapi-fetch/src/index.js#L447\n private createFinalURL(\n path: string,\n options: {\n query?: Record<string, unknown>\n path?: Record<string, unknown>\n }\n ) {\n let finalURL = `${this.opts.url}${path}`\n if (options?.path) {\n finalURL = defaultPathSerializer(finalURL, options.path)\n }\n const search = querySerializer(options.query ?? {})\n if (search) {\n finalURL += `?${search}`\n }\n return finalURL\n }\n\n /** The actual fetch wrapper. It is type inference blind, beyond the parseAs type */\n private async fetcher<Opts extends requestOptions>(\n method: HttpMethod,\n path: string,\n data?: requestData,\n opts?: Opts\n ) {\n if (!this.opts.ignoreAuth) {\n if (!this.accessToken || this.expiry <= Date.now()) {\n await this.doAuth()\n }\n }\n\n const fetchFn = opts?.fetch ?? this.opts.fetchFn ?? globalThis.fetch\n const parseAs: ParseAs = opts?.parseAs ?? 'json'\n const contentType = opts?.contentType ?? 'application/json'\n const body = contentType === 'application/json' ? JSON.stringify(data?.body) : data?.body\n\n const headers: HeadersInit = { 'X-Via-Sdk-Version': version }\n if (contentType !== 'none') {\n headers['Content-Type'] = contentType\n }\n\n const request = new Request(\n this.createFinalURL(path, { query: data?.query, path: data?.path }),\n {\n redirect: 'follow',\n signal: this.handleAbortKey(opts?.abortKey),\n body,\n headers: {\n ...headers,\n ...data?.header\n },\n method\n }\n )\n\n if (!this.opts.ignoreAuth) {\n request.headers.set('Authorization', `Bearer ${this.accessToken}`)\n }\n\n let response: Response\n try {\n response = await fetchFn(request)\n } catch (err: any) {\n if (err.name === 'AbortError') {\n return { aborted: true as const }\n }\n throw err\n }\n\n if (response.status === 401) {\n throw new UnauthenticatedError('Unauthenticated')\n }\n\n // handle empty content\n // note: we return `{}` because we want user truthy checks for `.data` or `.error` to succeed\n // NOTE: this does lie to the user, as we say it is undefined\n if (response.status === 204 || response.headers.get('Content-Length') === '0') {\n return response.ok\n ? { data: {}, aborted: false as const, response }\n : { error: {}, aborted: false as const, response }\n }\n\n if (response.ok) {\n // if \"stream\", skip parsing entirely\n if (parseAs === 'stream') {\n return { data: response.body, aborted: false as const, response }\n }\n return { data: await response[parseAs](), aborted: false as const, response }\n }\n\n return { error: await this.parseError(response), aborted: false as const }\n }\n\n public async GET<\n Path extends PathsWithMethod<Paths, 'get'>,\n Data extends MaybeOptionalParams<Paths[Path], 'get'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('get', path as string, data, opts) as Promise<\n FetchResponse<Paths[Path]['get'], Opts>\n >\n }\n\n public async PUT<\n Path extends PathsWithMethod<Paths, 'put'>,\n Data extends MaybeOptionalParams<Paths[Path], 'put'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('put', path as string, data, opts) as Promise<\n FetchResponse<Paths[Path]['put'], Opts>\n >\n }\n\n public async POST<\n Path extends PathsWithMethod<Paths, 'post'>,\n Data extends MaybeOptionalParams<Paths[Path], 'post'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('post', path as string, data, opts) as Promise<\n FetchResponse<Paths[Path]['post'], Opts>\n >\n }\n\n public async DELETE<\n Path extends PathsWithMethod<Paths, 'delete'>,\n Data extends MaybeOptionalParams<Paths[Path], 'delete'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('delete', path as string, data, opts) as Promise<\n FetchResponse<Paths[Path]['delete'], Opts>\n >\n }\n\n public async OPTIONS<\n Path extends PathsWithMethod<Paths, 'options'>,\n Data extends MaybeOptionalParams<Paths[Path], 'options'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('options', path as string, data, opts) as Promise<\n FetchResponse<Paths[Path]['options'], Opts>\n >\n }\n\n public async HEAD<\n Path extends PathsWithMethod<Paths, 'head'>,\n Data extends MaybeOptionalParams<Paths[Path], 'head'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('post', path as string, data, opts) as Promise<\n FetchResponse<Paths[Path]['head'], Opts>\n >\n }\n\n public STREAM<\n Path extends PathsWithMethod<Paths, 'get'>,\n Data extends MaybeOptionalParams<Paths[Path], 'get'>\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data) {\n const downcastedData = data as requestData\n const url = this.createFinalURL(path as string, {\n query: downcastedData?.query,\n path: downcastedData?.path\n })\n return new EventSource(url)\n }\n}\n\n// indirection is required to get ts to accept the type magic\n//* * `paths` MUST be passed in as a generic type arg or type inference falls apart */\nexport default function createFetcher<Paths extends {}>(\n ...args: ConstructorParameters<typeof Fetcher>\n) {\n return new Fetcher<Paths>(...args)\n}\n","import { Composite } from './composite'\nimport { Direct } from './direct'\nimport createFetcher, { FetcherArgs } from './fetch'\nimport { UnauthenticatedError } from './types'\nimport type { paths } from './volant-schema'\n\nexport function createSDK(opts: Partial<FetcherArgs>) {\n if (!opts.ignoreAuth && (opts.username === undefined || opts.password === undefined)) {\n throw new UnauthenticatedError(\n 'ignoreAuth is not true and either username or password is missing'\n )\n }\n const fetcher = createFetcher<paths>(opts)\n\n const newDirect = new Direct(fetcher)\n return {\n direct: newDirect,\n composite: new Composite(newDirect)\n }\n}\n","import { schemas, Checkpoint, Waypoint } from './types'\n\n/** Takes in an array of coordinates and flight options, and returns an array of checkpoints for use in the other functions */\nexport function generateCheckpointsFromCoordinates(args: {\n coordinates: Array<schemas['Wgs84Position']>\n options: schemas['PathingCheckpointParameters']\n}): Checkpoint[] {\n const { coordinates, options } = args\n\n if (coordinates.length <= 2) {\n throw Error('Must have at least two coordinates')\n }\n\n const waypoints: Checkpoint[] = [\n {\n type: 'start',\n position: coordinates[0]! // first coord exists because of length check above\n }\n ]\n for (const position of coordinates.slice(1)) {\n waypoints.push({\n type: 'goto',\n position,\n parameters: options\n })\n }\n\n return waypoints\n}\n\n/** Takes in an array of coordinates and flight options, and returns an array of waypoints for use in the other functions */\nexport function generateWaypointsFromCoordinates(args: {\n coordinates: Array<schemas['Wgs84Position']>\n options: {\n flight_parameters: schemas['FlightParameters']\n wind_parameters?: schemas['WindParameters']\n }\n}): Waypoint[] {\n const { coordinates, options } = args\n\n if (coordinates.length <= 2) {\n throw Error('Must have at least two coordinates')\n }\n\n const waypoints: Waypoint[] = [\n {\n type: 'start',\n position: coordinates[0]! // first coord exists because of length check above\n }\n ]\n for (const position of coordinates.slice(1)) {\n if (options.wind_parameters)\n waypoints.push({\n type: 'goto',\n position,\n flight_parameters: options.flight_parameters,\n wind_parameters: options.wind_parameters\n })\n else\n waypoints.push({\n type: 'goto',\n position,\n flight_parameters: options.flight_parameters\n })\n }\n\n return waypoints\n}\n\n/** Converts from seconds since epoch to a RFC3339-formatted datetime string */\nexport function rfcDateTime(secondsEpoch: EpochTimeStamp): string {\n return new Date(secondsEpoch * 1000).toISOString().slice(0, 16) + 'Z'\n}\n"],"names":[],"mappings":"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","x_google_ignoreList":[3]}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/types.ts","../src/composite.ts","../src/direct.ts","../node_modules/.pnpm/openapi-fetch@0.10.2/node_modules/openapi-fetch/dist/index.js","../src/fetch.ts","../src/client.ts","../src/utils.ts"],"sourcesContent":["import { OperationRequestBodyContent } from 'openapi-typescript-helpers'\n\nimport type { components } from './volant-schema'\n\nexport const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms))\n\n/**\n * Coerces typescript into more fully evaluating a type to make it more readable\n * @example\n * type X = {\n * a: string | number\n * } & {\n * a: string\n * }\n * Expand<X> == {a: string}\n * // without expand it is not simplified by TS when being shown,\n * // even though it is equivalent to just {a: string}\n */\nexport type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never\n\n/** The raw API schemas from openapi.json */\nexport type schemas = components['schemas']\nexport type Waypoint = schemas['StartWaypoint'] | schemas['GotoWaypoint-Input']\nexport type Checkpoint = schemas['GotoPathingCheckpoint'] | schemas['StartPathingCheckpoint']\nexport type PathingTaskState = schemas['PathingTaskState']\n\nexport class UnauthenticatedError extends Error {\n // Both properties are needed to allow for errors to be identified when used in scenarios such\n // as 'PromiseRejectionEvent' such as:\n // `if (errorEvent.reason.name === UnauthenticatedError.name)`\n // In the above, the first is the instance property and the latter a class property\n public override name = 'Unauthenticated'\n // FIXME: this was valid in the via codebase for some reason.\n // public static override name = 'Unauthenticated'\n}\n\n/**\n * Gets the type of the body input for an endpoint\n * @example\n * bodyOf<paths[\"/login\"][\"post\"]> = {username: string, password: string}\n */\nexport type bodyOf<T> = OperationRequestBodyContent<T>\n/** Gets the type of the query input for an endpoint */\nexport type queryOf<T> = T extends { parameters: { query?: infer P } } ? P : never\n/** Gets the type of the path input for an endpoint */\nexport type pathOf<T> = T extends { parameters: { path?: infer P } } ? P : never\n/** Gets the type of the header input for an endpoint */\nexport type headerOf<T> = T extends { parameters: { header?: infer P } } ? P : never\n","import { createPathingTask, Direct, PathingTaskEvent } from './direct'\nimport { schemas, sleep } from './types'\n\nexport type StreamError = {\n errors: {\n detail: string\n status: string\n }[]\n status: string\n}\n\nclass StreamFailedError extends Error {}\n\nclass TaskTimeoutError extends Error {}\n\nconst PathingTaskTimeout = 30_000\nconst ValidStreamTimeout = 5_000\n\nexport class Composite {\n private direct: Direct\n public constructor(direct: Direct) {\n this.direct = direct\n }\n /// flightplans\n\n public async upsertFlightplan(args: schemas['Flightplan-Input'], id: string | null | undefined) {\n if (id) {\n return this.direct.modifyDraftFlightplan(id, args)\n } else {\n return this.direct.createDraftFlightplan(args)\n }\n }\n\n public async getAllDraftFlightplans() {\n return this.direct.getAllFlightplans({ 'filter[state]': ['Draft'] })\n }\n\n public async getAllClosedFlightplans() {\n return this.direct.getAllFlightplans({ 'filter[state]': ['Closed'] })\n }\n\n public async getAllPendingFlightplans() {\n return this.direct.getAllFlightplans({ 'filter[state]': ['Pending'] })\n }\n\n public async getAllAcceptedFlightplans() {\n return this.direct.getAllFlightplans({ 'filter[state]': ['Accepted'] })\n }\n\n // TODO: make error 409 more obvious, as it is different\n public async attemptAcceptFlightplan(id: string) {\n return this.direct.changeFlightplanState(id, 'Accepted')\n }\n\n public async attemptTemporalDeconfliction(id: string, timeInterval: number = 60) {\n const startTimeDeconflictArgs = {\n time_interval: timeInterval\n }\n\n const { data, error } = await this.direct.getFlightplanDeconflictedStartTime(id, startTimeDeconflictArgs)\n if (error) {\n return { error }\n }\n\n return this.direct.modifyDraftFlightplan(id, data.attributes)\n }\n\n /// pathing tasks\n\n /**\n * Handles fetching a pathing task once it has reached a final state. This will be completed through one of two\n * methods:\n *\n * - Event stream (default) - Opens an event stream and optionally calls onMessage when the state changes. The\n * callback will not be called once the task is complete as the task being complete can be inferred from the stream\n * being closed.\n *\n * - Polling (fallback) - Occurs automatically if the connection to the event stream is unsuccessful or the stream\n * fails. Polls every 0.5s whilst queuing and every 0.2s whilst in progress. Note if onMessage is defined it is\n * called on every poll.\n * @param taskId - A UUID value that identifies a pathing task\n * @param onMessage - Callback that is called upon receiving details on the state of the pathing task\n * @returns - The result of the pathing task\n */\n public async getPathingTaskResult(taskId: string, onMessage?: (payload: PathingTaskEvent) => void) {\n try {\n await this.pathingTaskStreamResult(taskId, onMessage)\n } catch (error: unknown) {\n if (error instanceof StreamFailedError) {\n await this.pathingTaskPollResult(taskId, onMessage)\n }\n }\n return this.direct.getPathingTask(taskId)\n }\n\n /** Handles creating and waiting for the result of a pathing task. */\n public async doPathingTask(args: createPathingTask['requestBody']['content']['application/json']) {\n const createdTask = await this.direct.createPathingTask(args)\n if (createdTask.error) {\n return createdTask.error\n }\n\n const id = createdTask.data.id\n\n return await this.getPathingTaskResult(id)\n }\n\n private async pathingTaskStreamResult(taskId: string, onMessage?: (payload: PathingTaskEvent) => void) {\n let streamConnectionTimeout: ReturnType<typeof setTimeout>\n let streamNotSuccessfulTimeout: ReturnType<typeof setTimeout>\n\n const promise = new Promise((resolve, reject) => {\n const stream = this.direct.getPathingTaskStateStream(taskId)\n\n streamConnectionTimeout = setTimeout(() => {\n if (stream.readyState !== EventSource.OPEN) {\n stream.close()\n reject(new StreamFailedError('Timeout connecting'))\n }\n }, ValidStreamTimeout)\n\n streamNotSuccessfulTimeout = setTimeout(() => {\n stream.close()\n reject(new TaskTimeoutError('Timeout whilst waiting for successful result'))\n }, PathingTaskTimeout)\n\n stream.onmessage = async (event: MessageEvent) => {\n // TODO(Jack): Use a discriminated union\n const data = JSON.parse(event.data) as {\n payload: PathingTaskEvent\n error: boolean\n }\n\n if (data.error === true) {\n stream.close()\n reject(new Error(`Task stream returned error: ${data.payload}`))\n return\n }\n\n onMessage?.(data.payload)\n\n if (data.payload.terminated === true) {\n stream.close()\n resolve(data.payload)\n }\n }\n\n stream.onerror = (error: Event) => {\n stream.close()\n reject(new StreamFailedError(`Stream failed: ${error}`))\n }\n })\n\n return promise.finally(() => {\n clearTimeout(streamConnectionTimeout)\n clearTimeout(streamNotSuccessfulTimeout)\n })\n }\n\n private async pathingTaskPollResult(\n taskId: string,\n onMessage?: (payload: PathingTaskEvent) => void\n ): Promise<void | StreamError> {\n let runPathing = true\n\n while (runPathing) {\n setTimeout(() => {\n runPathing = false\n }, PathingTaskTimeout)\n\n const pathingTaskResult = await this.direct.getPathingTask(taskId)\n if (pathingTaskResult.error) {\n return pathingTaskResult.error\n }\n if (pathingTaskResult.data.meta.state === 'successful' || pathingTaskResult.data.meta.state === 'failed') {\n return\n }\n\n const pathingTaskPayload = {\n state: pathingTaskResult.data.meta.state,\n terminated: false\n }\n\n // TODO: Make this only on change from previous\n onMessage?.(pathingTaskPayload)\n\n switch (pathingTaskResult.data.meta.state) {\n case 'queued':\n await sleep(500)\n break\n case 'in-progress':\n await sleep(200)\n break\n }\n }\n }\n}\n","import createFetcher from './fetch'\nimport { bodyOf, PathingTaskState, pathOf, queryOf, schemas } from './types'\nimport type { paths } from './volant-schema'\n\ntype requestOptions = {\n abortKey?: string\n fetch?: typeof globalThis.fetch\n}\n\nexport type PathingTaskEvent = {\n state: PathingTaskState\n terminated: boolean\n}\n\n// These type names must match their function names, so the docstrings\n// can be copied over from the schema\nexport type getAllFlightplans = paths['/flightplans/']['get']\nexport type createDraftFlightplan = paths['/flightplans/']['post']\nexport type modifyDraftFlightplan = paths['/flightplans/{flightplan_id}']['put']\nexport type getFlightplan = paths['/flightplans/{flightplan_id}']['get']\nexport type getFlightplanWaypointsDetailed = paths['/flightplans/{flightplan_id}/waypoints_detail']['get']\nexport type getFlightplanStatistics = paths['/flightplans/{flightplan_id}/statistics']['get']\nexport type getFlightplanVolumes = paths['/flightplans/{flightplan_id}/volumes']['get']\nexport type getFlightplanDeconflictedStartTime = paths['/flightplans/{flightplan_id}/start_time_deconflict']['get']\nexport type getFlightplanTerrainProfile = paths['/flightplans/{flightplan_id}/terrain_profile']['get']\nexport type changeFlightplanState = paths['/flightplans/{flightplan_id}/state']['post']\nexport type getFlightplanAsFile = paths['/flightplans/{flightplan_id}/content']['get']\n\nexport type createAirspaceConstraint = paths['/airspace_constraints/']['post']\nexport type getAllAirspaceConstraints = paths['/airspace_constraints/']['get']\nexport type getAirspaceConstraint = paths['/airspace_constraints/{airspace_constraint_id}']['get']\nexport type modifyAirspaceConstraint = paths['/airspace_constraints/{airspace_constraint_id}']['put']\nexport type changeAirspaceConstraintState = paths['/airspace_constraints/{airspace_constraints_id}/state']['post']\n\nexport type createPathingTask = paths['/pathing_tasks/']['post']\nexport type getPathingTask = paths['/pathing_tasks/{pathing_task_id}']['get']\nexport type getPathingTaskStateStream = paths['/pathing_tasks/{pathing_task_id}/state']['get']\n\nexport type getAllCharts = paths['/charts/']['get']\nexport type getChart = paths['/charts/{chart_id}']['get']\n\nexport type getSailV2_5 = paths['/risk_assessment/sora/v2.5/sail']['get']\nexport type calculateResidualArcV2_5 = paths['/risk_assessment/sora/v2.5/residual_arc']['post']\nexport type getAllArcsV2_5 = paths['/risk_assessment/sora/v2.5/air_risk_classifications']['get']\nexport type getArcV2_5 = paths['/risk_assessment/sora/v2.5/air_risk_classifications/{arc_id}']['get']\nexport type generateSoraReportV2_5 = paths['/risk_assessment/sora/v2.5/report']['post']\nexport type generateSoraSemanticModelVolumesV2_5 = paths['/risk_assessment/sora/v2.5/semantic_model_volumes']['post']\n\nexport type getAllArcsUk = paths['/risk_assessment/sora/uk/air_risk_classifications']['get']\nexport type getArcUk = paths['/risk_assessment/sora/uk/air_risk_classifications/{arc_id}']['get']\nexport type getSailUk = paths['/risk_assessment/sora/uk/sail']['get']\nexport type calculateResidualArcUk = paths['/risk_assessment/sora/uk/residual_arc']['post']\nexport type createSoraReportUk = paths['/risk_assessment/sora/uk/report']['post']\nexport type createSoraSemanticModelVolumesUk = paths['/risk_assessment/sora/uk/semantic_model_volumes']['post']\n\nexport type createSoraClassification = paths['/risk_assessment/sora/classifications']['post']\nexport type updateSoraClassification = paths['/risk_assessment/sora/classifications/{classification_id}']['put']\nexport type getSoraClassification = paths['/risk_assessment/sora/classifications/{classification_id}']['get']\n\nexport type getAllControlledGroundAreas = paths['/risk_assessment/sora/controlled_ground_areas/']['get']\nexport type createControlledGroundArea = paths['/risk_assessment/sora/controlled_ground_areas/']['post']\nexport type getControlledGroundArea =\n paths['/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}']['get']\nexport type updateControlledGroundArea =\n paths['/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}']['put']\nexport type deleteControlledGroundArea =\n paths['/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}']['delete']\n\nexport type getAllAtypicalAirspaces = paths['/risk_assessment/sora/atypical_airspaces/']['get']\nexport type createAtypicalAirspace = paths['/risk_assessment/sora/atypical_airspaces/']['post']\nexport type getAtypicalAirspace = paths['/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}']['get']\nexport type updateAtypicalAirspace = paths['/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}']['put']\nexport type deleteAtypicalAirspace = paths['/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}']['delete']\n\nexport type createRasterPattern = paths['/flight_patterns/raster']['post']\n\nexport type getGeocage = paths['/geocages/{geocage_id}']['get']\nexport type getAllGeocages = paths['/geocages/']['get']\nexport type createGeocage = paths['/geocages/']['post']\nexport type updateGeocage = paths['/geocages/{geocage_id}']['put']\nexport type deleteGeocage = paths['/geocages/{geocage_id}']['delete']\n\nexport type getCostDataset = paths['/cost_datasets/{cost_dataset_id}']['get']\nexport type getAllCostDatasets = paths['/cost_datasets/']['get']\nexport type createCostDataset = paths['/cost_datasets/']['post']\nexport type deleteCostDataset = paths['/cost_datasets/{cost_dataset_id}']['delete']\n\nexport class Direct {\n private fetcher: ReturnType<typeof createFetcher<paths>>\n public constructor(fetcher: ReturnType<typeof createFetcher<paths>>) {\n this.fetcher = fetcher\n }\n\n /// flightplans\n\n public async getAllFlightplans<Opts extends requestOptions = {}>(\n args: queryOf<getAllFlightplans>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/flightplans/', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((flightplan) => flightplan.data) }\n } else {\n return resp\n }\n }\n\n public async createDraftFlightplan<Opts extends requestOptions = {}>(\n args: bodyOf<createDraftFlightplan>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/flightplans/', { body: args }, opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async modifyDraftFlightplan<Opts extends requestOptions = {}>(\n id: pathOf<modifyDraftFlightplan>['flightplan_id'],\n args: bodyOf<modifyDraftFlightplan>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/flightplans/{flightplan_id}',\n { body: args, path: { flightplan_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getFlightplan<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplan>['flightplan_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/flightplans/{flightplan_id}', { path: { flightplan_id: id } }, opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n // FIXME: this name is poor\n public async getFlightplanWaypointsDetailed<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanWaypointsDetailed>['flightplan_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/waypoints_detail',\n { path: { flightplan_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getFlightplanTerrainProfile<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanTerrainProfile>['flightplan_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/terrain_profile',\n { path: { flightplan_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getFlightplanStatistics<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanStatistics>['flightplan_id'],\n args: queryOf<getFlightplanStatistics>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/statistics',\n { path: { flightplan_id: id }, query: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getFlightplanVolumes<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanVolumes>['flightplan_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/volumes',\n { path: { flightplan_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n // TODO: make a wrapper for this which updates the existing flightplan to have this new start time\n public async getFlightplanDeconflictedStartTime<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanDeconflictedStartTime>['flightplan_id'],\n args: queryOf<getFlightplanDeconflictedStartTime>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/start_time_deconflict',\n { path: { flightplan_id: id }, query: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async changeFlightplanState<Opts extends requestOptions = {}>(\n id: pathOf<changeFlightplanState>['flightplan_id'],\n state: bodyOf<changeFlightplanState>['state'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/flightplans/{flightplan_id}/state',\n { path: { flightplan_id: id }, body: { state } },\n opts as Opts\n )\n if (!resp.error && resp.aborted === false) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n // TODO: use `args` instead of fileFormat\n public async getFlightplanAsFile<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanAsFile>['flightplan_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/content',\n { path: { flightplan_id: id }, header: { accept: 'application/vnd.google-earth.kml+xml' } },\n { ...(opts as Opts), parseAs: 'blob' }\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: { file: resp.data, fileName: resp.response.headers.get('filename') } }\n }\n return resp\n }\n\n /// airspace constraints\n\n public async createAirspaceConstraint<Opts extends requestOptions = {}>(\n args: bodyOf<createAirspaceConstraint>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/airspace_constraints/', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllAirspaceConstraints<Opts extends requestOptions = {}>(opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/airspace_constraints/', {}, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((constraint) => constraint.data) }\n }\n return resp\n }\n\n public async getAirspaceConstraint<Opts extends requestOptions = {}>(\n id: pathOf<getAirspaceConstraint>['airspace_constraint_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/airspace_constraints/{airspace_constraint_id}',\n { path: { airspace_constraint_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async modifyAirspaceConstraint<Opts extends requestOptions = {}>(\n id: pathOf<modifyAirspaceConstraint>['airspace_constraint_id'],\n args: bodyOf<modifyAirspaceConstraint>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/airspace_constraints/{airspace_constraint_id}',\n { path: { airspace_constraint_id: id }, body: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async changeAirspaceConstraintState<Opts extends requestOptions = {}>(\n id: pathOf<changeAirspaceConstraintState>['airspace_constraints_id'],\n state: bodyOf<changeAirspaceConstraintState>['state'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/airspace_constraints/{airspace_constraints_id}/state',\n { path: { airspace_constraints_id: id }, body: { state } },\n opts as Opts\n )\n if (!resp.error && resp.aborted === false) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n /// pathing tasks\n\n public async createPathingTask<Opts extends requestOptions = {}>(\n args: bodyOf<createPathingTask>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/pathing_tasks/', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getPathingTask<Opts extends requestOptions = {}>(\n id: pathOf<getPathingTask>['pathing_task_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/pathing_tasks/{pathing_task_id}',\n { path: { pathing_task_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public getPathingTaskStateStream(id: pathOf<getPathingTaskStateStream>['pathing_task_id']): EventSource {\n return this.fetcher.STREAM(`/pathing_tasks/{pathing_task_id}/state`, {\n path: { pathing_task_id: id }\n })\n }\n\n /// charts\n\n public async getAllCharts<Opts extends requestOptions = {}>(opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/charts/', {}, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((chart) => chart.data) }\n }\n return resp\n }\n\n public async getChart<Opts extends requestOptions = {}>(\n id: pathOf<getChart>['chart_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/charts/{chart_id}', { path: { chart_id: id } }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n /// risk assessment\n public async getSailV2_5<Opts extends requestOptions = {}>(args: queryOf<getSailV2_5>, opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/risk_assessment/sora/v2.5/sail', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async calculateResidualArcV2_5<Opts extends requestOptions = {}>(\n args: bodyOf<calculateResidualArcV2_5>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/v2.5/residual_arc', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllArcsV2_5<Opts extends requestOptions = {}>(opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/risk_assessment/sora/v2.5/air_risk_classifications', {}, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((arc) => arc.data) }\n }\n return resp\n }\n\n public async getArcV2_5<Opts extends requestOptions = {}>(args: pathOf<getArcV2_5>, opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/v2.5/air_risk_classifications/{arc_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async generateSoraReportV2_5<Opts extends requestOptions = {}>(\n args: bodyOf<generateSoraReportV2_5>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/v2.5/report', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async generateSoraSemanticModelVolumesV2_5<Opts extends requestOptions = {}>(\n args: bodyOf<generateSoraSemanticModelVolumesV2_5>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/risk_assessment/sora/v2.5/semantic_model_volumes',\n { body: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllArcsUk<Opts extends requestOptions = {}>(opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/risk_assessment/sora/uk/air_risk_classifications', {}, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((arc) => arc.data) }\n }\n return resp\n }\n\n public async getArcUk<Opts extends requestOptions = {}>(args: pathOf<getArcUk>, opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/uk/air_risk_classifications/{arc_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getSailUk<Opts extends requestOptions = {}>(args: queryOf<getSailUk>, opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/risk_assessment/sora/uk/sail', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async calculateResidualArcUk<Opts extends requestOptions = {}>(\n args: bodyOf<calculateResidualArcUk>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/uk/residual_arc', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async generateSoraReportUk<Opts extends requestOptions = {}>(\n args: bodyOf<createSoraReportUk>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/uk/report', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async generateSoraSemanticModelVolumesUk<Opts extends requestOptions = {}>(\n args: bodyOf<generateSoraSemanticModelVolumesV2_5>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/risk_assessment/sora/uk/semantic_model_volumes',\n { body: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async createSoraClassification<Opts extends requestOptions = {}>(\n args: bodyOf<createSoraClassification>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/classifications', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async updateSoraClassification<Opts extends requestOptions = {}>(\n id: pathOf<updateSoraClassification>['classification_id'],\n args: bodyOf<updateSoraClassification>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/risk_assessment/sora/classifications/{classification_id}',\n { body: args, path: { classification_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getSoraClassification<Opts extends requestOptions = {}>(\n id: pathOf<getSoraClassification>['classification_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/classifications/{classification_id}',\n { path: { classification_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n /// controlled ground areas\n public async getAllControlledGroundAreas<Opts extends requestOptions = {}>(\n args: queryOf<getAllControlledGroundAreas>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/risk_assessment/sora/controlled_ground_areas/', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return {\n ...resp,\n data: resp.data.data.map((controlledGroundArea) => controlledGroundArea.data)\n }\n } else {\n return resp\n }\n }\n\n public async createControlledGroundArea<Opts extends requestOptions = {}>(\n args: bodyOf<createControlledGroundArea>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/controlled_ground_areas/', { body: args }, opts as Opts)\n\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getControlledGroundArea<Opts extends requestOptions = {}>(\n args: pathOf<getControlledGroundArea>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async updateControlledGroundArea<Opts extends requestOptions = {}>(\n id: pathOf<updateControlledGroundArea>['controlled_ground_area_id'],\n args: bodyOf<updateControlledGroundArea>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}',\n { body: args, path: { controlled_ground_area_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async deleteControlledGroundArea<Opts extends requestOptions = {}>(\n args: pathOf<deleteControlledGroundArea>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.DELETE(\n '/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n /// atypical airspaces\n public async getAllAtypicalAirspaces<Opts extends requestOptions = {}>(\n args: queryOf<getAllAtypicalAirspaces>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/risk_assessment/sora/atypical_airspaces/', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((atypicalAirspace) => atypicalAirspace.data) }\n } else {\n return resp\n }\n }\n\n public async createAtypicalAirspace<Opts extends requestOptions = {}>(\n args: bodyOf<createAtypicalAirspace>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/atypical_airspaces/', { body: args }, opts as Opts)\n\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAtypicalAirspace<Opts extends requestOptions = {}>(\n args: pathOf<getAtypicalAirspace>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async updateAtypicalAirspace<Opts extends requestOptions = {}>(\n id: pathOf<updateAtypicalAirspace>['atypical_airspace_id'],\n args: bodyOf<updateAtypicalAirspace>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}',\n { body: args, path: { atypical_airspace_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async deleteAtypicalAirspace<Opts extends requestOptions = {}>(\n args: pathOf<deleteAtypicalAirspace>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.DELETE(\n '/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n /// geocages\n public async createGeocage<Opts extends requestOptions = {}>(\n args: bodyOf<createGeocage>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/geocages/', { body: args }, opts as Opts)\n\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getGeocage<Opts extends requestOptions = {}>(args: pathOf<getGeocage>, opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/geocages/{geocage_id}', { path: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllGeocages<Opts extends requestOptions = {}>(\n args: queryOf<getAllGeocages>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/geocages/', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n } else {\n return resp\n }\n }\n\n public async updateGeocage<Opts extends requestOptions = {}>(\n id: pathOf<updateGeocage>['geocage_id'],\n args: bodyOf<updateGeocage>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/geocages/{geocage_id}',\n { body: args, path: { geocage_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async deleteGeocage<Opts extends requestOptions = {}>(\n args: pathOf<deleteGeocage>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.DELETE('/geocages/{geocage_id}', { path: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n /// cost datasets\n\n public async getCostDataset<Opts extends requestOptions = {}>(\n id: pathOf<getCostDataset>['cost_dataset_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/cost_datasets/{cost_dataset_id}',\n { path: { cost_dataset_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllCostDatasets<Opts extends requestOptions = {}>(\n args: queryOf<getAllCostDatasets>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/cost_datasets/', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((x) => x.data) }\n }\n return resp\n }\n\n public async createCostDataset<Opts extends requestOptions = {}>(\n args: {\n chart_id: string\n name: schemas['CostDatasetResponse']['name']\n valid_time_ranges: schemas['RasterValidityTime'][]\n geotiff: Blob\n },\n opts?: Opts | requestOptions\n ) {\n const formData = new FormData()\n formData.append('chart_id', args.chart_id)\n formData.append('name', args.name)\n formData.append('valid_time_ranges', JSON.stringify(args.valid_time_ranges))\n formData.append('geotiff', args.geotiff)\n\n const resp = await this.fetcher.POST(\n '/cost_datasets/',\n { body: formData },\n {\n ...(opts as Opts),\n // when sending a FormData object the browser will automatically\n // set the Content-Type header to the correct value, if (and only if)\n // you don't set it yourself\n contentType: 'none'\n }\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async deleteCostDataset<Opts extends requestOptions = {}>(\n id: pathOf<deleteCostDataset>['cost_dataset_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.DELETE(\n '/cost_datasets/{cost_dataset_id}',\n { path: { cost_dataset_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n /// flight patterns\n\n public async createRasterPattern<Opts extends requestOptions = {}>(\n args: bodyOf<createRasterPattern>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/flight_patterns/raster', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n}\n","// settings & const\nconst DEFAULT_HEADERS = {\n \"Content-Type\": \"application/json\",\n};\n\nconst PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\n/** Add custom parameters to Request object */\nclass CustomRequest extends Request {\n constructor(input, init) {\n super(input, init);\n\n // add custom parameters\n for (const key in init) {\n if (!(key in this)) {\n this[key] = init[key];\n }\n }\n }\n}\n\n/**\n * Returns a cheap, non-cryptographically-secure random ID\n * Courtesy of @imranbarbhuiya (https://github.com/imranbarbhuiya)\n */\nexport function randomID() {\n return Math.random().toString(36).slice(2, 11);\n}\n\n/**\n * Create an openapi-fetch client.\n * @type {import(\"./index.js\").default}\n */\nexport default function createClient(clientOptions) {\n let {\n baseUrl = \"\",\n fetch: baseFetch = globalThis.fetch,\n querySerializer: globalQuerySerializer,\n bodySerializer: globalBodySerializer,\n headers: baseHeaders,\n ...baseOptions\n } = { ...clientOptions };\n if (baseUrl.endsWith(\"/\")) {\n baseUrl = baseUrl.substring(0, baseUrl.length - 1);\n }\n baseHeaders = mergeHeaders(DEFAULT_HEADERS, baseHeaders);\n const middlewares = [];\n\n /**\n * Per-request fetch (keeps settings created in createClient()\n * @param {T} url\n * @param {import('./index.js').FetchOptions<T>} fetchOptions\n */\n async function coreFetch(schemaPath, fetchOptions) {\n const {\n fetch = baseFetch,\n headers,\n params = {},\n parseAs = \"json\",\n querySerializer: requestQuerySerializer,\n bodySerializer = globalBodySerializer ?? defaultBodySerializer,\n ...init\n } = fetchOptions || {};\n\n let querySerializer =\n typeof globalQuerySerializer === \"function\"\n ? globalQuerySerializer\n : createQuerySerializer(globalQuerySerializer);\n if (requestQuerySerializer) {\n querySerializer =\n typeof requestQuerySerializer === \"function\"\n ? requestQuerySerializer\n : createQuerySerializer({\n ...(typeof globalQuerySerializer === \"object\" ? globalQuerySerializer : {}),\n ...requestQuerySerializer,\n });\n }\n\n const requestInit = {\n redirect: \"follow\",\n ...baseOptions,\n ...init,\n headers: mergeHeaders(baseHeaders, headers, params.header),\n };\n if (requestInit.body) {\n requestInit.body = bodySerializer(requestInit.body);\n }\n // remove `Content-Type` if serialized body is FormData; browser will correctly set Content-Type & boundary expression\n if (requestInit.body instanceof FormData) {\n requestInit.headers.delete(\"Content-Type\");\n }\n\n let id;\n let options;\n let request = new CustomRequest(createFinalURL(schemaPath, { baseUrl, params, querySerializer }), requestInit);\n\n if (middlewares.length) {\n id = randomID();\n\n // middleware (request)\n options = Object.freeze({\n baseUrl,\n fetch,\n parseAs,\n querySerializer,\n bodySerializer,\n });\n for (const m of middlewares) {\n if (m && typeof m === \"object\" && typeof m.onRequest === \"function\") {\n const result = await m.onRequest({\n request,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n if (!(result instanceof Request)) {\n throw new Error(\"onRequest: must return new Request() when modifying the request\");\n }\n request = result;\n }\n }\n }\n }\n\n // fetch!\n let response = await fetch(request);\n\n // middleware (response)\n // execute in reverse-array order (first priority gets last transform)\n if (middlewares.length) {\n for (let i = middlewares.length - 1; i >= 0; i--) {\n const m = middlewares[i];\n if (m && typeof m === \"object\" && typeof m.onResponse === \"function\") {\n const result = await m.onResponse({\n request,\n response,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n if (!(result instanceof Response)) {\n throw new Error(\"onResponse: must return new Response() when modifying the response\");\n }\n response = result;\n }\n }\n }\n }\n\n // handle empty content\n // note: we return `{}` because we want user truthy checks for `.data` or `.error` to succeed\n if (response.status === 204 || response.headers.get(\"Content-Length\") === \"0\") {\n return response.ok ? { data: {}, response } : { error: {}, response };\n }\n\n // parse response (falling back to .text() when necessary)\n if (response.ok) {\n // if \"stream\", skip parsing entirely\n if (parseAs === \"stream\") {\n return { data: response.body, response };\n }\n return { data: await response[parseAs](), response };\n }\n\n // handle errors\n let error = await response.text();\n try {\n error = JSON.parse(error); // attempt to parse as JSON\n } catch {\n // noop\n }\n return { error, response };\n }\n\n return {\n /** Call a GET endpoint */\n async GET(url, init) {\n return coreFetch(url, { ...init, method: \"GET\" });\n },\n /** Call a PUT endpoint */\n async PUT(url, init) {\n return coreFetch(url, { ...init, method: \"PUT\" });\n },\n /** Call a POST endpoint */\n async POST(url, init) {\n return coreFetch(url, { ...init, method: \"POST\" });\n },\n /** Call a DELETE endpoint */\n async DELETE(url, init) {\n return coreFetch(url, { ...init, method: \"DELETE\" });\n },\n /** Call a OPTIONS endpoint */\n async OPTIONS(url, init) {\n return coreFetch(url, { ...init, method: \"OPTIONS\" });\n },\n /** Call a HEAD endpoint */\n async HEAD(url, init) {\n return coreFetch(url, { ...init, method: \"HEAD\" });\n },\n /** Call a PATCH endpoint */\n async PATCH(url, init) {\n return coreFetch(url, { ...init, method: \"PATCH\" });\n },\n /** Call a TRACE endpoint */\n async TRACE(url, init) {\n return coreFetch(url, { ...init, method: \"TRACE\" });\n },\n /** Register middleware */\n use(...middleware) {\n for (const m of middleware) {\n if (!m) {\n continue;\n }\n if (typeof m !== \"object\" || !(\"onRequest\" in m || \"onResponse\" in m)) {\n throw new Error(\"Middleware must be an object with one of `onRequest()` or `onResponse()`\");\n }\n middlewares.push(m);\n }\n },\n /** Unregister middleware */\n eject(...middleware) {\n for (const m of middleware) {\n const i = middlewares.indexOf(m);\n if (i !== -1) {\n middlewares.splice(i, 1);\n }\n }\n },\n };\n}\n\n// utils\n\n/**\n * Serialize primitive param values\n * @type {import(\"./index.js\").serializePrimitiveParam}\n */\nexport function serializePrimitiveParam(name, value, options) {\n if (value === undefined || value === null) {\n return \"\";\n }\n if (typeof value === \"object\") {\n throw new Error(\n \"Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.\",\n );\n }\n return `${name}=${options?.allowReserved === true ? value : encodeURIComponent(value)}`;\n}\n\n/**\n * Serialize object param (shallow only)\n * @type {import(\"./index.js\").serializeObjectParam}\n */\nexport function serializeObjectParam(name, value, options) {\n if (!value || typeof value !== \"object\") {\n return \"\";\n }\n const values = [];\n const joiner =\n {\n simple: \",\",\n label: \".\",\n matrix: \";\",\n }[options.style] || \"&\";\n\n // explode: false\n if (options.style !== \"deepObject\" && options.explode === false) {\n for (const k in value) {\n values.push(k, options.allowReserved === true ? value[k] : encodeURIComponent(value[k]));\n }\n const final = values.join(\",\"); // note: values are always joined by comma in explode: false (but joiner can prefix)\n switch (options.style) {\n case \"form\": {\n return `${name}=${final}`;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n default: {\n return final;\n }\n }\n }\n\n // explode: true\n for (const k in value) {\n const finalName = options.style === \"deepObject\" ? `${name}[${k}]` : k;\n values.push(serializePrimitiveParam(finalName, value[k], options));\n }\n const final = values.join(joiner);\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${final}` : final;\n}\n\n/**\n * Serialize array param (shallow only)\n * @type {import(\"./index.js\").serializeArrayParam}\n */\nexport function serializeArrayParam(name, value, options) {\n if (!Array.isArray(value)) {\n return \"\";\n }\n\n // explode: false\n if (options.explode === false) {\n const joiner = { form: \",\", spaceDelimited: \"%20\", pipeDelimited: \"|\" }[options.style] || \",\"; // note: for arrays, joiners vary wildly based on style + explode behavior\n const final = (options.allowReserved === true ? value : value.map((v) => encodeURIComponent(v))).join(joiner);\n switch (options.style) {\n case \"simple\": {\n return final;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n // case \"spaceDelimited\":\n // case \"pipeDelimited\":\n default: {\n return `${name}=${final}`;\n }\n }\n }\n\n // explode: true\n const joiner = { simple: \",\", label: \".\", matrix: \";\" }[options.style] || \"&\";\n const values = [];\n for (const v of value) {\n if (options.style === \"simple\" || options.style === \"label\") {\n values.push(options.allowReserved === true ? v : encodeURIComponent(v));\n } else {\n values.push(serializePrimitiveParam(name, v, options));\n }\n }\n return options.style === \"label\" || options.style === \"matrix\"\n ? `${joiner}${values.join(joiner)}`\n : values.join(joiner);\n}\n\n/**\n * Serialize query params to string\n * @type {import(\"./index.js\").createQuerySerializer}\n */\nexport function createQuerySerializer(options) {\n return function querySerializer(queryParams) {\n const search = [];\n if (queryParams && typeof queryParams === \"object\") {\n for (const name in queryParams) {\n const value = queryParams[name];\n if (value === undefined || value === null) {\n continue;\n }\n if (Array.isArray(value)) {\n search.push(\n serializeArrayParam(name, value, {\n style: \"form\",\n explode: true,\n ...options?.array,\n allowReserved: options?.allowReserved || false,\n }),\n );\n continue;\n }\n if (typeof value === \"object\") {\n search.push(\n serializeObjectParam(name, value, {\n style: \"deepObject\",\n explode: true,\n ...options?.object,\n allowReserved: options?.allowReserved || false,\n }),\n );\n continue;\n }\n search.push(serializePrimitiveParam(name, value, options));\n }\n }\n return search.join(\"&\");\n };\n}\n\n/**\n * Handle different OpenAPI 3.x serialization styles\n * @type {import(\"./index.js\").defaultPathSerializer}\n * @see https://swagger.io/docs/specification/serialization/#path\n */\nexport function defaultPathSerializer(pathname, pathParams) {\n let nextURL = pathname;\n for (const match of pathname.match(PATH_PARAM_RE) ?? []) {\n let name = match.substring(1, match.length - 1);\n let explode = false;\n let style = \"simple\";\n if (name.endsWith(\"*\")) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n if (name.startsWith(\".\")) {\n style = \"label\";\n name = name.substring(1);\n } else if (name.startsWith(\";\")) {\n style = \"matrix\";\n name = name.substring(1);\n }\n if (!pathParams || pathParams[name] === undefined || pathParams[name] === null) {\n continue;\n }\n const value = pathParams[name];\n if (Array.isArray(value)) {\n nextURL = nextURL.replace(match, serializeArrayParam(name, value, { style, explode }));\n continue;\n }\n if (typeof value === \"object\") {\n nextURL = nextURL.replace(match, serializeObjectParam(name, value, { style, explode }));\n continue;\n }\n if (style === \"matrix\") {\n nextURL = nextURL.replace(match, `;${serializePrimitiveParam(name, value)}`);\n continue;\n }\n nextURL = nextURL.replace(match, style === \"label\" ? `.${encodeURIComponent(value)}` : encodeURIComponent(value));\n }\n return nextURL;\n}\n\n/**\n * Serialize body object to string\n * @type {import(\"./index.js\").defaultBodySerializer}\n */\nexport function defaultBodySerializer(body) {\n return JSON.stringify(body);\n}\n\n/**\n * Construct URL string from baseUrl and handle path and query params\n * @type {import(\"./index.js\").createFinalURL}\n */\nexport function createFinalURL(pathname, options) {\n let finalURL = `${options.baseUrl}${pathname}`;\n if (options.params?.path) {\n finalURL = defaultPathSerializer(finalURL, options.params.path);\n }\n let search = options.querySerializer(options.params.query ?? {});\n if (search.startsWith(\"?\")) {\n search = search.substring(1);\n }\n if (search) {\n finalURL += `?${search}`;\n }\n return finalURL;\n}\n\n/**\n * Merge headers a and b, with b taking priority\n * @type {import(\"./index.js\").mergeHeaders}\n */\nexport function mergeHeaders(...allHeaders) {\n const finalHeaders = new Headers();\n for (const h of allHeaders) {\n if (!h || typeof h !== \"object\") {\n continue;\n }\n const iterator = h instanceof Headers ? h.entries() : Object.entries(h);\n for (const [k, v] of iterator) {\n if (v === null) {\n finalHeaders.delete(k);\n } else if (Array.isArray(v)) {\n for (const v2 of v) {\n finalHeaders.append(k, v2);\n }\n } else if (v !== undefined) {\n finalHeaders.set(k, v);\n }\n }\n }\n return finalHeaders;\n}\n","import { createQuerySerializer, defaultPathSerializer, ParseAs, ParseAsResponse } from 'openapi-fetch'\nimport {\n FilterKeys,\n HasRequiredKeys,\n HttpMethod,\n OkStatus,\n PathsWithMethod,\n ResponseObjectMap,\n SuccessResponse\n} from 'openapi-typescript-helpers'\n\nimport { version } from '../package.json'\nimport { bodyOf, Expand, schemas, UnauthenticatedError } from './types'\n\ntype requestOptions = {\n abortKey?: string\n fetch?: typeof globalThis.fetch\n parseAs?: ParseAs\n // if 'none' is provided, then no Content-Type will be set\n contentType?: 'application/json' | 'none'\n}\n\ntype requestData = {\n query?: Record<string, unknown>\n path?: Record<string, string>\n header?: Record<string, string>\n body?: BodyInit\n}\n\n/**\n * Get the types of the parameters of an endpoint but if it does not have any\n * typing for some reason then fallback to a reasonable default\n */\ntype ParamsOption<T> = T extends {\n parameters: any\n}\n ? T['parameters']\n : { query?: Record<string, unknown> }\n\n/**\n * Get the type of the bodyOf an endpoint but if it does not have any required keys, then\n * make it optional\n */\ntype BodyOption<Endpoint> = Endpoint extends {\n requestBody: { content: { 'application/json': any } }\n}\n ? HasRequiredKeys<bodyOf<Endpoint>> extends never\n ? { body?: bodyOf<Endpoint> | undefined }\n : { body: bodyOf<Endpoint> }\n : { body?: Record<string, unknown> | BodyInit }\n\n/**\n * Combines the body and other parameters into one type, with stuff being optional\n */\ntype MaybeOptionalParams<Params extends Record<HttpMethod, {}>, Location extends keyof Params> = ParamsOption<\n FilterKeys<Params, Location>\n> &\n BodyOption<FilterKeys<Params, Location>>\n\n/**\n * Gets the error statuses of an endpoint\n */\ntype ErrorStatusOf<T> = T extends { responses: Record<number, any> }\n ? keyof T['responses'] extends number | string\n ? `${Exclude<keyof T['responses'], OkStatus>}`\n : string\n : string\n\n/**\n * An {@link SdkErrorModel} but with narrowed status codes\n */\ntype SdkErrorModelGeneric<T = undefined> = {\n errors: Array<{\n detail: string\n /** some status code */\n status: ErrorStatusOf<T>\n }>\n status: ErrorStatusOf<T>\n}\n\n/**\n * The error model returned from the SDK\n * Will always contain at least one element!\n */\nexport type SdkErrorModel = {\n errors: Array<{\n detail: string\n /** some status code */\n status: string\n }>\n status: string\n}\n\ntype EndpointWithResponses = { responses: Record<number, any> }\n\ntype FetchResponse<T, Opts extends requestOptions> =\n | {\n data: T extends EndpointWithResponses ? ParseAsResponse<SuccessResponse<ResponseObjectMap<T>>, Opts> : unknown\n error?: never\n response: Response\n aborted: false\n }\n | {\n data?: never\n error: Expand<T extends EndpointWithResponses ? SdkErrorModelGeneric<T> : unknown>\n response: Response\n aborted: false\n }\n // If Opts is not {} and Opts[\"abortKey\"] is either\n // 'string | undefined' or 'string' but not just 'undefined'\n // then we could return `aborted: true`\n | (keyof Opts extends never\n ? never\n : Opts['abortKey'] extends undefined\n ? never\n : Opts['abortKey'] extends string | undefined\n ? {\n data?: never\n error?: never\n response?: never\n aborted: true\n }\n : never)\n\nconst querySerializer = createQuerySerializer()\n\nexport type FetcherArgs = {\n /** Base url for all fetch requests */\n url: string\n /** Override the fetch function used for requests */\n fetchFn?: typeof globalThis.fetch\n /** Override the fetch function used for auth requests */\n authFetchFn?: typeof globalThis.fetch\n /** Used for auth, needed unless ignoreAuth is true */\n username?: string\n /** Used for auth, needed unless ignoreAuth is true */\n password?: string\n /** Do not do the automatic /login requests */\n ignoreAuth: boolean\n}\n\nexport class Fetcher<Paths extends Record<string, Record<HttpMethod, {}>>> {\n private opts: FetcherArgs\n\n private aborts: Record<string, AbortController>\n private accessToken: string | undefined\n private expiry: number\n\n public constructor(args: Partial<FetcherArgs>) {\n this.opts = {\n url: args.url ?? 'https://via.volantautonomy.com/api/v1.0',\n fetchFn: args.fetchFn ?? undefined,\n authFetchFn: args.authFetchFn ?? undefined,\n username: args.username,\n password: args.password,\n ignoreAuth: args.ignoreAuth ?? false\n }\n this.aborts = {}\n this.accessToken = undefined\n this.expiry = Date.now() - 5\n }\n\n private async doAuth() {\n // NOTE: THIS REQUEST IS NOT TYPE CHECKED PROPERLY AS paths IS NOT KNOWN HERE!\n if (this.opts.username === undefined || this.opts.password === undefined) {\n throw new UnauthenticatedError('ignoreAuth is not true and either username or password is missing')\n }\n\n const authFetchFn = this.opts.authFetchFn ?? globalThis.fetch\n const resp = await authFetchFn(this.opts.url + '/login', {\n body: JSON.stringify({\n username: this.opts.username,\n password: this.opts.password\n }),\n redirect: 'follow',\n method: 'post',\n headers: { 'Content-Type': 'application/json', 'X-Via-Sdk-Version': version }\n })\n\n if (resp.ok) {\n const data = (await resp.json()) as schemas['LoginResponse']\n this.expiry = Date.now() + data.expires_in - 10\n this.accessToken = data.access_token\n } else {\n throw new UnauthenticatedError('Invalid credentials')\n }\n }\n\n /** Takes in an abort key to determine what abort signals should be fired and a new signal */\n private handleAbortKey(abortKey?: string) {\n if (abortKey) {\n this.aborts[abortKey]?.abort()\n\n const abortController = new AbortController()\n this.aborts[abortKey] = abortController\n return abortController.signal\n }\n return undefined\n }\n\n /** Transforms an error from the api into an {@link SdkErrorModel} */\n private async parseError(response: Response): Promise<SdkErrorModel> {\n const data = await response.text()\n let errorData: schemas['JsonApiExceptionResponse']\n // NOTE: This function does not handle the case where the API returns valid json\n // that does not fit the schema (as in the `errors` list is missing)\n\n try {\n errorData = JSON.parse(data) as schemas['JsonApiExceptionResponse']\n } catch (err) {\n if (err instanceof SyntaxError) {\n return {\n status: String(response.status),\n errors: [\n {\n status: String(response.status),\n detail: data\n }\n ]\n }\n } else {\n throw err\n }\n }\n\n if (errorData.errors.length === 0) {\n return {\n status: String(response.status),\n errors: [\n {\n status: String(response.status),\n detail: ''\n }\n ]\n }\n } else {\n return {\n status: String(response.status),\n errors: errorData.errors.map((err) => {\n return {\n status: String(err.status),\n detail: err.detail\n }\n })\n }\n }\n }\n\n // source: https://github.com/openapi-ts/openapi-typescript/blob/f21c05b9afcc89ee6ef73edab4045620b410eb01/packages/openapi-fetch/src/index.js#L447\n private createFinalURL(\n path: string,\n options: {\n query?: Record<string, unknown>\n path?: Record<string, unknown>\n }\n ) {\n let finalURL = `${this.opts.url}${path}`\n if (options?.path) {\n finalURL = defaultPathSerializer(finalURL, options.path)\n }\n const search = querySerializer(options.query ?? {})\n if (search) {\n finalURL += `?${search}`\n }\n return finalURL\n }\n\n /** The actual fetch wrapper. It is type inference blind, beyond the parseAs type */\n private async fetcher<Opts extends requestOptions>(\n method: HttpMethod,\n path: string,\n data?: requestData,\n opts?: Opts\n ) {\n if (!this.opts.ignoreAuth) {\n if (!this.accessToken || this.expiry <= Date.now()) {\n await this.doAuth()\n }\n }\n\n const fetchFn = opts?.fetch ?? this.opts.fetchFn ?? globalThis.fetch\n const parseAs: ParseAs = opts?.parseAs ?? 'json'\n const contentType = opts?.contentType ?? 'application/json'\n const body = contentType === 'application/json' ? JSON.stringify(data?.body) : data?.body\n\n const headers: HeadersInit = { 'X-Via-Sdk-Version': version }\n if (contentType !== 'none') {\n headers['Content-Type'] = contentType\n }\n\n const request = new Request(this.createFinalURL(path, { query: data?.query, path: data?.path }), {\n redirect: 'follow',\n signal: this.handleAbortKey(opts?.abortKey),\n body,\n headers: {\n ...headers,\n ...data?.header\n },\n method\n })\n\n if (!this.opts.ignoreAuth) {\n request.headers.set('Authorization', `Bearer ${this.accessToken}`)\n }\n\n let response: Response\n try {\n response = await fetchFn(request)\n } catch (err: any) {\n if (err.name === 'AbortError') {\n return { aborted: true as const }\n }\n throw err\n }\n\n if (response.status === 401) {\n throw new UnauthenticatedError('Unauthenticated')\n }\n\n // handle empty content\n // note: we return `{}` because we want user truthy checks for `.data` or `.error` to succeed\n // NOTE: this does lie to the user, as we say it is undefined\n if (response.status === 204 || response.headers.get('Content-Length') === '0') {\n return response.ok\n ? { data: {}, aborted: false as const, response }\n : { error: {}, aborted: false as const, response }\n }\n\n if (response.ok) {\n // if \"stream\", skip parsing entirely\n if (parseAs === 'stream') {\n return { data: response.body, aborted: false as const, response }\n }\n return { data: await response[parseAs](), aborted: false as const, response }\n }\n\n return { error: await this.parseError(response), aborted: false as const }\n }\n\n public async GET<\n Path extends PathsWithMethod<Paths, 'get'>,\n Data extends MaybeOptionalParams<Paths[Path], 'get'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('get', path as string, data, opts) as Promise<FetchResponse<Paths[Path]['get'], Opts>>\n }\n\n public async PUT<\n Path extends PathsWithMethod<Paths, 'put'>,\n Data extends MaybeOptionalParams<Paths[Path], 'put'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('put', path as string, data, opts) as Promise<FetchResponse<Paths[Path]['put'], Opts>>\n }\n\n public async POST<\n Path extends PathsWithMethod<Paths, 'post'>,\n Data extends MaybeOptionalParams<Paths[Path], 'post'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('post', path as string, data, opts) as Promise<FetchResponse<Paths[Path]['post'], Opts>>\n }\n\n public async DELETE<\n Path extends PathsWithMethod<Paths, 'delete'>,\n Data extends MaybeOptionalParams<Paths[Path], 'delete'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('delete', path as string, data, opts) as Promise<FetchResponse<Paths[Path]['delete'], Opts>>\n }\n\n public async OPTIONS<\n Path extends PathsWithMethod<Paths, 'options'>,\n Data extends MaybeOptionalParams<Paths[Path], 'options'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('options', path as string, data, opts) as Promise<FetchResponse<Paths[Path]['options'], Opts>>\n }\n\n public async HEAD<\n Path extends PathsWithMethod<Paths, 'head'>,\n Data extends MaybeOptionalParams<Paths[Path], 'head'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('post', path as string, data, opts) as Promise<FetchResponse<Paths[Path]['head'], Opts>>\n }\n\n public STREAM<Path extends PathsWithMethod<Paths, 'get'>, Data extends MaybeOptionalParams<Paths[Path], 'get'>>(\n path: Path,\n data: HasRequiredKeys<Data> extends never ? Data | undefined : Data\n ) {\n const downcastedData = data as requestData\n const url = this.createFinalURL(path as string, {\n query: downcastedData?.query,\n path: downcastedData?.path\n })\n return new EventSource(url)\n }\n}\n\n// indirection is required to get ts to accept the type magic\n//* * `paths` MUST be passed in as a generic type arg or type inference falls apart */\nexport default function createFetcher<Paths extends {}>(...args: ConstructorParameters<typeof Fetcher>) {\n return new Fetcher<Paths>(...args)\n}\n","import { Composite } from './composite'\nimport { Direct } from './direct'\nimport createFetcher, { FetcherArgs } from './fetch'\nimport { UnauthenticatedError } from './types'\nimport type { paths } from './volant-schema'\n\nexport function createSDK(opts: Partial<FetcherArgs>) {\n if (!opts.ignoreAuth && (opts.username === undefined || opts.password === undefined)) {\n throw new UnauthenticatedError('ignoreAuth is not true and either username or password is missing')\n }\n const fetcher = createFetcher<paths>(opts)\n\n const newDirect = new Direct(fetcher)\n return {\n direct: newDirect,\n composite: new Composite(newDirect)\n }\n}\n","import { Checkpoint, schemas, Waypoint } from './types'\n\n/** Takes in an array of coordinates and flight options, and returns an array of checkpoints for use in the other functions */\nexport function generateCheckpointsFromCoordinates(args: {\n coordinates: Array<schemas['Wgs84Position']>\n options: schemas['PathingCheckpointParameters']\n}): Checkpoint[] {\n const { coordinates, options } = args\n\n if (coordinates.length <= 2) {\n throw Error('Must have at least two coordinates')\n }\n\n const waypoints: Checkpoint[] = [\n {\n type: 'start',\n position: coordinates[0]! // first coord exists because of length check above\n }\n ]\n for (const position of coordinates.slice(1)) {\n waypoints.push({\n type: 'goto',\n position,\n parameters: options\n })\n }\n\n return waypoints\n}\n\n/** Takes in an array of coordinates and flight options, and returns an array of waypoints for use in the other functions */\nexport function generateWaypointsFromCoordinates(args: {\n coordinates: Array<schemas['Wgs84Position']>\n options: {\n flight_parameters: schemas['FlightParameters']\n wind_parameters?: schemas['WindParameters']\n }\n}): Waypoint[] {\n const { coordinates, options } = args\n\n if (coordinates.length <= 2) {\n throw Error('Must have at least two coordinates')\n }\n\n const waypoints: Waypoint[] = [\n {\n type: 'start',\n position: coordinates[0]! // first coord exists because of length check above\n }\n ]\n for (const position of coordinates.slice(1)) {\n if (options.wind_parameters)\n waypoints.push({\n type: 'goto',\n position,\n flight_parameters: options.flight_parameters,\n wind_parameters: options.wind_parameters\n })\n else\n waypoints.push({\n type: 'goto',\n position,\n flight_parameters: options.flight_parameters\n })\n }\n\n return waypoints\n}\n\n/** Converts from seconds since epoch to a RFC3339-formatted datetime string */\nexport function rfcDateTime(secondsEpoch: EpochTimeStamp): string {\n return new Date(secondsEpoch * 1000).toISOString().slice(0, 16) + 'Z'\n}\n"],"names":[],"mappings":"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","x_google_ignoreList":[3]}
package/dist/utils.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { schemas, Checkpoint, Waypoint } from './types';
1
+ import { Checkpoint, schemas, Waypoint } from './types';
2
2
  /** Takes in an array of coordinates and flight options, and returns an array of checkpoints for use in the other functions */
3
3
  export declare function generateCheckpointsFromCoordinates(args: {
4
4
  coordinates: Array<schemas['Wgs84Position']>;