@volant-autonomy/via-sdk 1.3556.1 → 1.3583.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/README.md +1 -1
- package/dist/direct.d.ts +0 -64
- package/dist/index.cjs.d.ts +7 -0
- package/dist/index.cjs.js +908 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.esm.d.ts +7 -0
- package/dist/index.esm.js +903 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/volant-schema.d.ts +28 -187
- package/package.json +15 -4
- package/dist/client.js +0 -21
- package/dist/composite.js +0 -104
- package/dist/direct.js +0 -507
- package/dist/docstringTransformer.d.ts +0 -3
- package/dist/docstringTransformer.js +0 -194
- package/dist/fetch.js +0 -201
- package/dist/index.js +0 -22
- package/dist/types.js +0 -19
- package/dist/utils.js +0 -59
- package/dist/volant-schema.js +0 -6
|
@@ -0,0 +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 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']\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> = T extends { requestBody: { content: { 'application/json': infer P } } }\n ? P\n : never\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 } from './direct'\n\nimport { schemas, sleep, Waypoint } from './types'\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 /** Handles creating and polling a pathing task for you */\n public async doPathingTask(\n args: createPathingTask['requestBody']['content']['application/json']\n ) {\n const { error, data } = await this.direct.createPathingTask(args)\n if (error) {\n return { error }\n }\n\n const id = data!.id\n\n while (true) {\n const { data, error } = await this.direct.getPathingTask(id)\n if (error) {\n return { error }\n }\n\n switch (data!.meta.state) {\n case 'queued':\n await sleep(500)\n continue\n case 'in-progress':\n await sleep(50)\n continue\n case 'successful':\n if (data!.attributes?.waypoints) {\n return { data: data!.attributes?.waypoints as Waypoint[] }\n } else {\n throw new Error(`endpoint did not return waypoints ${data}`) // TODO:\n }\n case 'failed':\n // TODO: this is bad, do this better.\n return { error: data!.meta.error_code! }\n }\n }\n }\n}\n","import createFetcher from './fetch'\nimport { bodyOf, queryOf, pathOf } from './types'\nimport type { paths } from './volant-schema'\n\ntype requestOptions = {\n abortKey?: string\n fetch?: typeof globalThis.fetch\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 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']\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 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 getFlightplanStatistics<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanStatistics>['flightplan_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/statistics',\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 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 /// 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 /// 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 { schemas, UnauthenticatedError, Expand, bodyOf } from './types'\n\ntype requestOptions = {\n abortKey?: string\n fetch?: typeof globalThis.fetch\n parseAs?: ParseAs\n}\n\ntype requestData = {\n query?: Record<string, unknown>\n path?: Record<string, string>\n header?: Record<string, string>\n body?: Record<string, unknown>\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> }\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' }\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) {\n const error = (await response.json()) as schemas['JsonApiExceptionResponse']\n // NOTE: throws away the status codes inside of the individual errors\n if (error?.errors?.length === 0) {\n return {\n status: String(response.status),\n errors: [\n {\n status: String(response.status),\n detail: ''\n }\n ]\n } as SdkErrorModel\n } else {\n return {\n status: String(response.status),\n errors: error?.errors.map((err) => {\n return {\n status: String(err.status),\n detail: err.detail\n }\n })\n } as SdkErrorModel\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\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: JSON.stringify(data?.body),\n headers: { 'Content-Type': 'application/json', ...data?.header },\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\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]}
|
package/dist/volant-schema.d.ts
CHANGED
|
@@ -339,48 +339,6 @@ export interface paths {
|
|
|
339
339
|
patch?: never;
|
|
340
340
|
trace?: never;
|
|
341
341
|
};
|
|
342
|
-
"/aircraft/": {
|
|
343
|
-
parameters: {
|
|
344
|
-
query?: never;
|
|
345
|
-
header?: never;
|
|
346
|
-
path?: never;
|
|
347
|
-
cookie?: never;
|
|
348
|
-
};
|
|
349
|
-
/**
|
|
350
|
-
* List available aircraft
|
|
351
|
-
* @deprecated
|
|
352
|
-
* @description List available aircraft.
|
|
353
|
-
*/
|
|
354
|
-
get: operations["aircraft_list_v1_aircraft__get"];
|
|
355
|
-
put?: never;
|
|
356
|
-
post?: never;
|
|
357
|
-
delete?: never;
|
|
358
|
-
options?: never;
|
|
359
|
-
head?: never;
|
|
360
|
-
patch?: never;
|
|
361
|
-
trace?: never;
|
|
362
|
-
};
|
|
363
|
-
"/aircraft/{aircraft_id}": {
|
|
364
|
-
parameters: {
|
|
365
|
-
query?: never;
|
|
366
|
-
header?: never;
|
|
367
|
-
path?: never;
|
|
368
|
-
cookie?: never;
|
|
369
|
-
};
|
|
370
|
-
/**
|
|
371
|
-
* Retrieve the specified aircraft
|
|
372
|
-
* @deprecated
|
|
373
|
-
* @description Retrieve the specified aircraft.
|
|
374
|
-
*/
|
|
375
|
-
get: operations["aircraft_single_v1_aircraft__aircraft_id__get"];
|
|
376
|
-
put?: never;
|
|
377
|
-
post?: never;
|
|
378
|
-
delete?: never;
|
|
379
|
-
options?: never;
|
|
380
|
-
head?: never;
|
|
381
|
-
patch?: never;
|
|
382
|
-
trace?: never;
|
|
383
|
-
};
|
|
384
342
|
"/charts/": {
|
|
385
343
|
parameters: {
|
|
386
344
|
query?: never;
|
|
@@ -974,39 +932,6 @@ export interface components {
|
|
|
974
932
|
*/
|
|
975
933
|
characteristic_dimension: number;
|
|
976
934
|
};
|
|
977
|
-
/** AircraftAttributes */
|
|
978
|
-
AircraftAttributes: {
|
|
979
|
-
/**
|
|
980
|
-
* Aircraft Name
|
|
981
|
-
* @description Human readable name for an aircraft.
|
|
982
|
-
*/
|
|
983
|
-
name: string;
|
|
984
|
-
/**
|
|
985
|
-
* Characteristic Dimension
|
|
986
|
-
* @description Characteristic dimension refers to either the Wingspan for fixed wing aircraft, Blade diameter for rotorcraft, or Maximum dimension for multicopters. You can find more info at `https://uas.gov.ge/dashboard/pdf/SORA%20methodology%20SAIL%20Step%209.pdf` section 2.3.1b
|
|
987
|
-
*/
|
|
988
|
-
characteristic_dimension: number;
|
|
989
|
-
/**
|
|
990
|
-
* Max Cruise Speed
|
|
991
|
-
* @description Max cruise speed of the aircraft in Metres/second
|
|
992
|
-
*/
|
|
993
|
-
max_cruise_speed: number;
|
|
994
|
-
};
|
|
995
|
-
/** AircraftResponse */
|
|
996
|
-
AircraftResponse: {
|
|
997
|
-
/**
|
|
998
|
-
* Aircraft ID
|
|
999
|
-
* @description Unique identifier for an aircraft.
|
|
1000
|
-
*/
|
|
1001
|
-
id: string;
|
|
1002
|
-
/**
|
|
1003
|
-
* Type
|
|
1004
|
-
* @default aircraft
|
|
1005
|
-
* @constant
|
|
1006
|
-
*/
|
|
1007
|
-
type?: "aircraft";
|
|
1008
|
-
attributes: components["schemas"]["AircraftAttributes"];
|
|
1009
|
-
};
|
|
1010
935
|
/**
|
|
1011
936
|
* AirspaceConstraint
|
|
1012
937
|
* @description Common attributes for creating, updating and reading Airspace Constraints
|
|
@@ -1262,7 +1187,9 @@ export interface components {
|
|
|
1262
1187
|
*
|
|
1263
1188
|
* Must be of the form of a **JSON string** that abides by the following schema:
|
|
1264
1189
|
*
|
|
1265
|
-
*
|
|
1190
|
+
*
|
|
1191
|
+
* ```json
|
|
1192
|
+
* {
|
|
1266
1193
|
* "$defs": {
|
|
1267
1194
|
* "RasterValidityTime": {
|
|
1268
1195
|
* "additionalProperties": false,
|
|
@@ -1327,13 +1254,26 @@ export interface components {
|
|
|
1327
1254
|
* ],
|
|
1328
1255
|
* "title": "RasterValidityTimeList",
|
|
1329
1256
|
* "type": "object"
|
|
1330
|
-
* }
|
|
1257
|
+
* }
|
|
1258
|
+
* ```
|
|
1331
1259
|
*
|
|
1332
1260
|
*/
|
|
1333
1261
|
valid_time_ranges: string;
|
|
1334
1262
|
/**
|
|
1335
|
-
*
|
|
1263
|
+
* Cost Dataset GeoTiff
|
|
1336
1264
|
* Format: binary
|
|
1265
|
+
* @description
|
|
1266
|
+
* GeoTiff file for a Cost Dataset.
|
|
1267
|
+
*
|
|
1268
|
+
* The file must:
|
|
1269
|
+
* * Match georeference information for the specified `chart_id` that can be retrieved using the `/charts` endpoints,
|
|
1270
|
+
* exactly matching all fields.
|
|
1271
|
+
* * Contain bands equal to that of the number of `valid_time_ranges` specified.
|
|
1272
|
+
* * Use a dtype of `float32`
|
|
1273
|
+
*
|
|
1274
|
+
* To declare a cell that can never be entered, a `NaN` value can be used. It is otherwise recommended to use `0` where
|
|
1275
|
+
* there is no cost (or no known cost) associated but entry is allowed.
|
|
1276
|
+
*
|
|
1337
1277
|
*/
|
|
1338
1278
|
geotiff: string;
|
|
1339
1279
|
};
|
|
@@ -1799,7 +1739,7 @@ export interface components {
|
|
|
1799
1739
|
* Used to transform pixel coordinates (col, row) to spatial coordinates (x, y) as:
|
|
1800
1740
|
* x = a * col + b * row + c
|
|
1801
1741
|
* y = d * col + e * row + f
|
|
1802
|
-
* Note that this transform is created assuming North-
|
|
1742
|
+
* Note that this transform is created assuming North-Up convention such that the cell (0,0) represents the NW cell of the raster with the y-coordinate decreasing with increasing y-index.
|
|
1803
1743
|
*
|
|
1804
1744
|
*/
|
|
1805
1745
|
affine_transform: number[];
|
|
@@ -2034,12 +1974,6 @@ export interface components {
|
|
|
2034
1974
|
/** Errors */
|
|
2035
1975
|
errors: components["schemas"]["JsonApiException"][];
|
|
2036
1976
|
};
|
|
2037
|
-
/** JsonApiListResponse[JsonApiResponse[AircraftResponse]] */
|
|
2038
|
-
JsonApiListResponse_JsonApiResponse_AircraftResponse__: {
|
|
2039
|
-
/** Data */
|
|
2040
|
-
data: components["schemas"]["JsonApiResponse_AircraftResponse_"][];
|
|
2041
|
-
links: components["schemas"]["Links"];
|
|
2042
|
-
};
|
|
2043
1977
|
/** JsonApiListResponse[JsonApiResponse[AirspaceConstraintResponse]] */
|
|
2044
1978
|
JsonApiListResponse_JsonApiResponse_AirspaceConstraintResponse__: {
|
|
2045
1979
|
/** Data */
|
|
@@ -2100,11 +2034,6 @@ export interface components {
|
|
|
2100
2034
|
data: components["schemas"]["JsonApiResponse_VolumeResponse_"][];
|
|
2101
2035
|
links: components["schemas"]["Links"];
|
|
2102
2036
|
};
|
|
2103
|
-
/** JsonApiResponse[AircraftResponse] */
|
|
2104
|
-
JsonApiResponse_AircraftResponse_: {
|
|
2105
|
-
data: components["schemas"]["AircraftResponse"];
|
|
2106
|
-
links: components["schemas"]["Links"];
|
|
2107
|
-
};
|
|
2108
2037
|
/** JsonApiResponse[AirspaceConstraintResponse] */
|
|
2109
2038
|
JsonApiResponse_AirspaceConstraintResponse_: {
|
|
2110
2039
|
data: components["schemas"]["AirspaceConstraintResponse"];
|
|
@@ -4483,103 +4412,6 @@ export interface operations {
|
|
|
4483
4412
|
};
|
|
4484
4413
|
};
|
|
4485
4414
|
};
|
|
4486
|
-
aircraft_list_v1_aircraft__get: {
|
|
4487
|
-
parameters: {
|
|
4488
|
-
query?: never;
|
|
4489
|
-
header?: never;
|
|
4490
|
-
path?: never;
|
|
4491
|
-
cookie?: never;
|
|
4492
|
-
};
|
|
4493
|
-
requestBody?: never;
|
|
4494
|
-
responses: {
|
|
4495
|
-
/** @description Successful Response */
|
|
4496
|
-
200: {
|
|
4497
|
-
headers: {
|
|
4498
|
-
[name: string]: unknown;
|
|
4499
|
-
};
|
|
4500
|
-
content: {
|
|
4501
|
-
"application/json": components["schemas"]["JsonApiListResponse_JsonApiResponse_AircraftResponse__"];
|
|
4502
|
-
};
|
|
4503
|
-
};
|
|
4504
|
-
/** @description One or more input parameters were missing or invalid. */
|
|
4505
|
-
400: {
|
|
4506
|
-
headers: {
|
|
4507
|
-
[name: string]: unknown;
|
|
4508
|
-
};
|
|
4509
|
-
content: {
|
|
4510
|
-
"application/json": components["schemas"]["JsonApiExceptionResponse"];
|
|
4511
|
-
};
|
|
4512
|
-
};
|
|
4513
|
-
/** @description Bearer access token was not provided in Authorization header, token could not be decoded, or token was invalid. */
|
|
4514
|
-
401: {
|
|
4515
|
-
headers: {
|
|
4516
|
-
[name: string]: unknown;
|
|
4517
|
-
};
|
|
4518
|
-
content: {
|
|
4519
|
-
"application/json": components["schemas"]["JsonApiExceptionResponse"];
|
|
4520
|
-
};
|
|
4521
|
-
};
|
|
4522
|
-
};
|
|
4523
|
-
};
|
|
4524
|
-
aircraft_single_v1_aircraft__aircraft_id__get: {
|
|
4525
|
-
parameters: {
|
|
4526
|
-
query?: never;
|
|
4527
|
-
header?: never;
|
|
4528
|
-
path: {
|
|
4529
|
-
/** @description Unique identifier for an aircraft. */
|
|
4530
|
-
aircraft_id: string;
|
|
4531
|
-
};
|
|
4532
|
-
cookie?: never;
|
|
4533
|
-
};
|
|
4534
|
-
requestBody?: never;
|
|
4535
|
-
responses: {
|
|
4536
|
-
/** @description Successful Response */
|
|
4537
|
-
200: {
|
|
4538
|
-
headers: {
|
|
4539
|
-
[name: string]: unknown;
|
|
4540
|
-
};
|
|
4541
|
-
content: {
|
|
4542
|
-
"application/json": components["schemas"]["JsonApiResponse_AircraftResponse_"];
|
|
4543
|
-
};
|
|
4544
|
-
};
|
|
4545
|
-
/** @description One or more input parameters were missing or invalid. */
|
|
4546
|
-
400: {
|
|
4547
|
-
headers: {
|
|
4548
|
-
[name: string]: unknown;
|
|
4549
|
-
};
|
|
4550
|
-
content: {
|
|
4551
|
-
"application/json": components["schemas"]["JsonApiExceptionResponse"];
|
|
4552
|
-
};
|
|
4553
|
-
};
|
|
4554
|
-
/** @description Bearer access token was not provided in Authorization header, token could not be decoded, or token was invalid. */
|
|
4555
|
-
401: {
|
|
4556
|
-
headers: {
|
|
4557
|
-
[name: string]: unknown;
|
|
4558
|
-
};
|
|
4559
|
-
content: {
|
|
4560
|
-
"application/json": components["schemas"]["JsonApiExceptionResponse"];
|
|
4561
|
-
};
|
|
4562
|
-
};
|
|
4563
|
-
/** @description The requested resource could not be found */
|
|
4564
|
-
404: {
|
|
4565
|
-
headers: {
|
|
4566
|
-
[name: string]: unknown;
|
|
4567
|
-
};
|
|
4568
|
-
content: {
|
|
4569
|
-
"application/json": components["schemas"]["JsonApiExceptionResponse"];
|
|
4570
|
-
};
|
|
4571
|
-
};
|
|
4572
|
-
/** @description Validation Error */
|
|
4573
|
-
422: {
|
|
4574
|
-
headers: {
|
|
4575
|
-
[name: string]: unknown;
|
|
4576
|
-
};
|
|
4577
|
-
content: {
|
|
4578
|
-
"application/json": components["schemas"]["HTTPValidationError"];
|
|
4579
|
-
};
|
|
4580
|
-
};
|
|
4581
|
-
};
|
|
4582
|
-
};
|
|
4583
4415
|
chart_list_v1_charts__get: {
|
|
4584
4416
|
parameters: {
|
|
4585
4417
|
query?: never;
|
|
@@ -6579,6 +6411,15 @@ export interface operations {
|
|
|
6579
6411
|
"application/json": components["schemas"]["JsonApiExceptionResponse"];
|
|
6580
6412
|
};
|
|
6581
6413
|
};
|
|
6414
|
+
/** @description Attempted request is forbidden */
|
|
6415
|
+
403: {
|
|
6416
|
+
headers: {
|
|
6417
|
+
[name: string]: unknown;
|
|
6418
|
+
};
|
|
6419
|
+
content: {
|
|
6420
|
+
"application/json": components["schemas"]["JsonApiExceptionResponse"];
|
|
6421
|
+
};
|
|
6422
|
+
};
|
|
6582
6423
|
/** @description Validation Error */
|
|
6583
6424
|
422: {
|
|
6584
6425
|
headers: {
|
package/package.json
CHANGED
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volant-autonomy/via-sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3583.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
-
"main": "dist/index.js",
|
|
8
|
-
"module": "dist/index.js",
|
|
7
|
+
"main": "dist/index.cjs.js",
|
|
8
|
+
"module": "dist/index.esm.js",
|
|
9
9
|
"files": [
|
|
10
10
|
"dist/**"
|
|
11
11
|
],
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"require": "./dist/index.cjs.js",
|
|
15
|
+
"import": "./dist/index.esm.js"
|
|
16
|
+
},
|
|
17
|
+
"./dist/*": "./dist/*.js"
|
|
18
|
+
},
|
|
12
19
|
"tsp": {
|
|
13
20
|
"tscOptions": {
|
|
14
21
|
"parseAllJsDoc": true
|
|
@@ -16,6 +23,9 @@
|
|
|
16
23
|
},
|
|
17
24
|
"devDependencies": {
|
|
18
25
|
"@jest/globals": "^29.6.4",
|
|
26
|
+
"@rollup/plugin-commonjs": "^28.0.2",
|
|
27
|
+
"@rollup/plugin-node-resolve": "^16.0.0",
|
|
28
|
+
"@rollup/plugin-typescript": "^12.1.2",
|
|
19
29
|
"@types/jest": "^29.5.11",
|
|
20
30
|
"@typescript-eslint/eslint-plugin": "^7.15.0",
|
|
21
31
|
"@typescript-eslint/parser": "^7.15.0",
|
|
@@ -29,10 +39,11 @@
|
|
|
29
39
|
"openapi-typescript": "^7.1.0",
|
|
30
40
|
"prettier": "^3.3.2",
|
|
31
41
|
"prettier-eslint": "^16.3.0",
|
|
42
|
+
"rollup": "^4.32.0",
|
|
43
|
+
"rollup-plugin-dts": "^6.1.1",
|
|
32
44
|
"standard": "^17.0.0",
|
|
33
45
|
"ts-jest": "^29.1.5",
|
|
34
46
|
"ts-node": "^10.9.2",
|
|
35
|
-
"ts-patch": "^3.3.0",
|
|
36
47
|
"typescript": "^5.7.2"
|
|
37
48
|
},
|
|
38
49
|
"scripts": {
|
package/dist/client.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.createSDK = createSDK;
|
|
7
|
-
const composite_1 = require("./composite");
|
|
8
|
-
const direct_1 = require("./direct");
|
|
9
|
-
const fetch_1 = __importDefault(require("./fetch"));
|
|
10
|
-
const types_1 = require("./types");
|
|
11
|
-
function createSDK(opts) {
|
|
12
|
-
if (!opts.ignoreAuth && (opts.username === undefined || opts.password === undefined)) {
|
|
13
|
-
throw new types_1.UnauthenticatedError('ignoreAuth is not true and either username or password is missing');
|
|
14
|
-
}
|
|
15
|
-
const fetcher = (0, fetch_1.default)(opts);
|
|
16
|
-
const newDirect = new direct_1.Direct(fetcher);
|
|
17
|
-
return {
|
|
18
|
-
direct: newDirect,
|
|
19
|
-
composite: new composite_1.Composite(newDirect)
|
|
20
|
-
};
|
|
21
|
-
}
|