swcombine.js 0.0.10 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/LICENSE +5 -17
  2. package/README.md +668 -97
  3. package/dist/index.d.ts +5 -510
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +3 -0
  6. package/dist/index.js.map +23 -0
  7. package/dist/src/auth/index.d.ts +8 -0
  8. package/dist/src/auth/index.d.ts.map +1 -0
  9. package/dist/src/auth/oauth-manager.d.ts +168 -0
  10. package/dist/src/auth/oauth-manager.d.ts.map +1 -0
  11. package/dist/src/auth/oauth.d.ts +101 -0
  12. package/dist/src/auth/oauth.d.ts.map +1 -0
  13. package/dist/src/auth/scopes.d.ts +61 -0
  14. package/dist/src/auth/scopes.d.ts.map +1 -0
  15. package/dist/src/auth/types.d.ts +118 -0
  16. package/dist/src/auth/types.d.ts.map +1 -0
  17. package/dist/src/client/base-resource.d.ts +33 -0
  18. package/dist/src/client/base-resource.d.ts.map +1 -0
  19. package/dist/src/client/client.d.ts +85 -0
  20. package/dist/src/client/client.d.ts.map +1 -0
  21. package/dist/src/client/errors.d.ts +63 -0
  22. package/dist/src/client/errors.d.ts.map +1 -0
  23. package/dist/src/client/http-client.d.ts +35 -0
  24. package/dist/src/client/http-client.d.ts.map +1 -0
  25. package/dist/src/client/index.d.ts +15 -0
  26. package/dist/src/client/index.d.ts.map +1 -0
  27. package/dist/src/client/rate-limit.d.ts +12 -0
  28. package/dist/src/client/rate-limit.d.ts.map +1 -0
  29. package/dist/src/client/resources/api.d.ts +42 -0
  30. package/dist/src/client/resources/api.d.ts.map +1 -0
  31. package/dist/src/client/resources/character.d.ts +98 -0
  32. package/dist/src/client/resources/character.d.ts.map +1 -0
  33. package/dist/src/client/resources/faction.d.ts +70 -0
  34. package/dist/src/client/resources/faction.d.ts.map +1 -0
  35. package/dist/src/client/resources/index.d.ts +8 -0
  36. package/dist/src/client/resources/index.d.ts.map +1 -0
  37. package/dist/src/client/resources/inventory.d.ts +205 -0
  38. package/dist/src/client/resources/inventory.d.ts.map +1 -0
  39. package/dist/src/client/types.d.ts +78 -0
  40. package/dist/src/client/types.d.ts.map +1 -0
  41. package/dist/src/index.d.ts +11 -0
  42. package/dist/src/index.d.ts.map +1 -0
  43. package/dist/src/utils/index.d.ts +6 -0
  44. package/dist/src/utils/index.d.ts.map +1 -0
  45. package/dist/src/utils/timestamp.d.ts +188 -0
  46. package/dist/src/utils/timestamp.d.ts.map +1 -0
  47. package/dist/src/utils/types.d.ts +42 -0
  48. package/dist/src/utils/types.d.ts.map +1 -0
  49. package/package.json +35 -55
  50. package/dist/index.cjs.js +0 -704
  51. package/dist/index.esm.js +0 -704
package/dist/index.d.ts CHANGED
@@ -1,510 +1,5 @@
1
- declare class AuthenticatedCharacterResource extends PublicCharacterResource {
2
- private auth;
3
- constructor(auth: AuthService);
4
- getCurrentCharacter(): Promise<CharacterResponse>;
5
- }
6
-
7
- export declare class AuthService {
8
- private config;
9
- private tokenInfo?;
10
- constructor(config: OAuthConfig);
11
- get isAuthenticated(): boolean;
12
- getAccessToken(): Promise<string>;
13
- /**
14
- *
15
- * @param scopesToRequest Indicates the resource access your application is requesting. The values passed in this parameter inform the consent page shown to the user. There is an inverse relationship between the number of permissions requested and the likelihood of obtaining user consent
16
- * @param stateToAdd Indicates any state which may be useful to your application upon receipt of the response. The Web Service Authorization Server roundtrips this parameter, so your application receives the same value it sent. Possible uses include redirecting the user to the correct resource in your site, nonces, and cross-site-request-forgery mitigations.
17
- */
18
- getAuthorizationUrl(scopesToRequest?: string[], stateToAdd?: string): string;
19
- exchangeCode(code: string): Promise<void>;
20
- setTokenInfo(tokenInfo: TokenInfo): void;
21
- getTokenInfo(): TokenInfo | undefined;
22
- private refreshToken;
23
- }
24
-
25
- declare interface CharacterFaction {
26
- uid: SwcUid;
27
- name: string;
28
- isPrimary: boolean;
29
- }
30
-
31
- declare type CharacterFactionPrivileges = {
32
- factionId: number;
33
- factionName: string;
34
- privilegeCount: number;
35
- privileges: {
36
- setInfoFields: boolean;
37
- viewMemberList: boolean;
38
- acceptOrDeclineMembers: boolean;
39
- expelMembers: boolean;
40
- isFactionLeader: boolean;
41
- viewCredits: boolean;
42
- sendCredits: boolean;
43
- viewTransactions: boolean;
44
- viewBudgets: boolean;
45
- modifyBudgets: boolean;
46
- setTaxLevels: boolean;
47
- operateVendors: boolean;
48
- givePrivileges: boolean;
49
- changePasscode: boolean;
50
- protectAssets: boolean;
51
- combatEvents: boolean;
52
- manageTemplates: boolean;
53
- canSeeOverview: boolean;
54
- canViewPanelRequests: boolean;
55
- enforceArrestWarrant: boolean;
56
- enforceDeathWarrant: boolean;
57
- releasePrisoners: boolean;
58
- issueArrestWarrant: boolean;
59
- issueDeathWarrant: boolean;
60
- modifyFriendFoeList: boolean;
61
- hasSecurityAuthorisation: boolean;
62
- postGnsSocial: boolean;
63
- postGnsMilitary: boolean;
64
- postGnsPolitics: boolean;
65
- postGnsEconomics: boolean;
66
- gnsCensorship: boolean;
67
- produceInFacilities: boolean;
68
- produceInStations: boolean;
69
- canAbortProduction: boolean;
70
- assignDatacards: boolean;
71
- revokeAssignedDatacards: boolean;
72
- constructFacilities: boolean;
73
- constructCities: boolean;
74
- constructStations: boolean;
75
- canAbortConstruction: boolean;
76
- performAsteroidMining: boolean;
77
- performRecycling: boolean;
78
- purchaseNpcs: boolean;
79
- editNpcs: boolean;
80
- fireNpcs: boolean;
81
- isSecondInCommand: boolean;
82
- assignTags: boolean;
83
- renameTags: boolean;
84
- createTags: boolean;
85
- deleteTags: boolean;
86
- viewCombatReports: boolean;
87
- launchGarrisonSquad: boolean;
88
- modifyGarrisonReserve: boolean;
89
- launchCargoSquad: boolean;
90
- linkCargoBase: boolean;
91
- viewCargoSquad: boolean;
92
- changeFactionProfile: boolean;
93
- renameFaction: boolean;
94
- factionCustomImages: boolean;
95
- createSubfactions: boolean;
96
- manageSubfactionMembers: boolean;
97
- subfactionFullPrivileges: boolean;
98
- manageFactionModules: boolean;
99
- manageAlliance: boolean;
100
- viewShips: boolean;
101
- assignShips: boolean;
102
- renameShips: boolean;
103
- makeoverShips: boolean;
104
- viewVehicles: boolean;
105
- assignVehicles: boolean;
106
- renameVehicles: boolean;
107
- makeoverVehicles: boolean;
108
- viewItems: boolean;
109
- assignItems: boolean;
110
- renameItems: boolean;
111
- makeoverItems: boolean;
112
- viewDroids: boolean;
113
- assignDroids: boolean;
114
- renameDroids: boolean;
115
- makeoverDroids: boolean;
116
- viewStations: boolean;
117
- assignStations: boolean;
118
- renameStations: boolean;
119
- makeoverStations: boolean;
120
- stationControlRoom: boolean;
121
- manageStationPermissions: boolean;
122
- viewFacilities: boolean;
123
- assignFacilities: boolean;
124
- renameFacilities: boolean;
125
- makeoverFacilities: boolean;
126
- facilityControlRoom: boolean;
127
- manageFacilityPermissions: boolean;
128
- viewMaterials: boolean;
129
- assignMaterials: boolean;
130
- renameMaterials: boolean;
131
- makeoverMaterials: boolean;
132
- viewNpcs: boolean;
133
- assignNpcs: boolean;
134
- renameNpcs: boolean;
135
- makeoverNpcs: boolean;
136
- viewCities: boolean;
137
- assignCities: boolean;
138
- renameCities: boolean;
139
- makeoverCities: boolean;
140
- manageCityPermissions: boolean;
141
- viewCreatures: boolean;
142
- assignCreatures: boolean;
143
- renameCreatures: boolean;
144
- makeoverCreatures: boolean;
145
- viewPlanets: boolean;
146
- assignPlanets: boolean;
147
- viewStocks: boolean;
148
- makeoverStocks: boolean;
149
- viewDatacards: boolean;
150
- };
151
- };
152
-
153
- declare interface CharacterLocation {
154
- container?: {
155
- type: 'ship' | 'vehicle' | 'station' | 'facility';
156
- uid: SwcUid;
157
- name: string;
158
- };
159
- sector?: {
160
- uid: SwcUid;
161
- name: string;
162
- };
163
- system?: {
164
- uid: SwcUid;
165
- name: string;
166
- };
167
- planet?: {
168
- uid: SwcUid;
169
- name: string;
170
- };
171
- city?: {
172
- uid: SwcUid;
173
- name: string;
174
- };
175
- coordinates: {
176
- galaxy: {
177
- x: number | null;
178
- y: number | null;
179
- };
180
- system: {
181
- x: number | null;
182
- y: number | null;
183
- };
184
- surface: {
185
- x: number | null;
186
- y: number | null;
187
- };
188
- ground: {
189
- x: number | null;
190
- y: number | null;
191
- };
192
- };
193
- }
194
-
195
- declare type CharacterResource<TOAuth extends boolean> = TOAuth extends true ? AuthenticatedCharacterResource : PublicCharacterResource;
196
-
197
- declare interface CharacterResponse {
198
- /** Unique ID referring to this character */
199
- uid: SwcUid;
200
- /** Character's handle. Always available */
201
- name: string;
202
- /** Link to the character's avatar. Always available. */
203
- image: string;
204
- /** The character's current HP. Visible if you have the character_stats scope. */
205
- hp?: number;
206
- /** The character's maximum HP. Visible if you have the character_stats scope. */
207
- maxHp?: number;
208
- /** The character's current XP. Visible if you have the character_stats scope. */
209
- xp?: number;
210
- /** The character's current level. Visible if you have the character_stats scope. */
211
- level?: number;
212
- /** Whether the character's profile is private. */
213
- isProfilePrivate: boolean;
214
- /** The character's gender. Visible if their profile is NOT private. */
215
- gender?: 'Male' | 'Female';
216
- /** The character's biography. Visible if their profile is NOT private. */
217
- biography?: string;
218
- /** Last login time of this character. Visible if their profile is NOT private. */
219
- lastLogin?: SwcTimestamp;
220
- /** short description for this character. Visible if their profile is NOT private. */
221
- shortDescription?: string;
222
- /** The character's race. Visible if their profile is NOT private. */
223
- race?: {
224
- uid: SwcUid;
225
- name: string;
226
- };
227
- /** Whether the character is aware of the force. Visible if you have the character_force scope. */
228
- isForceAware?: boolean;
229
- /** The character's factions. Always visible. */
230
- factions: Array<CharacterFaction>;
231
- /** The character's skill sheet. Visible if you have the character_skills scope. */
232
- skills?: CharacterSkills;
233
- /** The character's privileges within their factions. Visible if you have the character_privileges scope. */
234
- factionPrivileges?: CharacterFactionPrivileges;
235
- /** The amount of credits the character has. Visible if you have the character_location scope. */
236
- location?: CharacterLocation;
237
- /** The amount of credits the character has. Visible if you have the character_credits scope. */
238
- credits?: number;
239
- }
240
-
241
- declare interface CharacterSkills {
242
- strength: SkillLevel;
243
- dexterity: SkillLevel;
244
- speed: SkillLevel;
245
- dodge: SkillLevel;
246
- projectileWeapons: SkillLevel;
247
- nonProjectileWeapons: SkillLevel;
248
- medical: SkillLevel;
249
- diplomacy: SkillLevel;
250
- crafting: SkillLevel;
251
- management: SkillLevel;
252
- perception: SkillLevel;
253
- stealth: SkillLevel;
254
- rndHull: SkillLevel;
255
- rndElectronics: SkillLevel;
256
- rndEngines: SkillLevel;
257
- rndWeapons: SkillLevel;
258
- repair: SkillLevel;
259
- computerOperations: SkillLevel;
260
- fighterPiloting: SkillLevel;
261
- fighterCombat: SkillLevel;
262
- capitalPiloting: SkillLevel;
263
- capitalCombat: SkillLevel;
264
- spaceCommand: SkillLevel;
265
- vehiclePiloting: SkillLevel;
266
- vehicleCombat: SkillLevel;
267
- infantryCommand: SkillLevel;
268
- vehicleCommand: SkillLevel;
269
- heavyWeapons: SkillLevel;
270
- }
271
-
272
- export declare interface Duration {
273
- years: number;
274
- days: number;
275
- hours: number;
276
- minutes: number;
277
- seconds: number;
278
- }
279
-
280
- declare abstract class GenericResource {
281
- private resourceName;
282
- protected constructor(resourceName: string);
283
- protected get<T>(endpointUrl: string, accessToken?: string): Promise<SwcApiResponse<T> | SwcApiError>;
284
- }
285
-
286
- declare interface HandleCheckResult {
287
- uid: SwcUid;
288
- handle: string;
289
- }
290
-
291
- export declare interface OAuthConfig {
292
- clientId: string;
293
- clientSecret: string;
294
- redirectUri: string;
295
- /** Indicates if your application needs to access a Resource when the user is not present at the browser. This parameter defaults to online. If your application needs to refresh access tokens when the user is not present at the browser, then use offline. This will result in your application obtaining a refresh token the first time your application exchanges an authorization code for a user. */
296
- accessType: 'online' | 'offline';
297
- /** Indicates whether previously granted permissions should be renewed if not explicitly included within the scope parameter. Defaults to not renewing previously granted permissions. **/
298
- renewPreviouslyGranted?: boolean;
299
- /** Indicates the resource access your application is requesting. The values passed in this parameter inform the consent page shown to the user. There is an inverse relationship between the number of permissions requested and the likelihood of obtaining user consent */
300
- defaultScopes?: string[];
301
- }
302
-
303
- declare interface Permission {
304
- name: string;
305
- description: string;
306
- inheritedPermissions: Permission[];
307
- }
308
-
309
- /**
310
- *
311
- * @method getPermissions
312
- */
313
- declare class PublicApiResource extends GenericResource {
314
- constructor();
315
- /**
316
- * Get a list of all permissions in the SWC webservices.
317
- */
318
- getPermissions(): Promise<Permission[]>;
319
- }
320
-
321
- declare class PublicCharacterResource extends GenericResource {
322
- constructor();
323
- handleCheck(handle: string): Promise<HandleCheckResult | undefined>;
324
- }
325
-
326
- declare type SkillLevel = 0 | 1 | 2 | 3 | 4 | 5;
327
-
328
- declare type SwcApiError = SwcApiResponse<{
329
- error_code: number;
330
- error_message: string;
331
- }>;
332
-
333
- declare interface SwcApiResponse<T> {
334
- version: string;
335
- timestamp: number;
336
- resource: string;
337
- request: string;
338
- swcapi: T;
339
- }
340
-
341
- export declare class SwcClient<TOAuth extends boolean> {
342
- api: PublicApiResource;
343
- character: CharacterResource<TOAuth>;
344
- protected constructor();
345
- static public(): SwcClient<false>;
346
- static withOAuth(oAuthConfig: OAuthConfig): SwcClientWithOAuth;
347
- }
348
-
349
- export declare class SwcClientWithOAuth extends SwcClient<true> {
350
- auth: AuthService;
351
- constructor(config: OAuthConfig);
352
- }
353
-
354
- /**
355
- * Utility class for working with Star Wars Combine timestamps. Represents Combine Galactic Time and can convert unix timestamps and Date objects to/from CGT.
356
- * @method toUnixTimestamp
357
- * @method toDate
358
- * @method getYear
359
- * @method getDay
360
- * @method getHour
361
- * @method getMinute
362
- * @method getSecond
363
- */
364
- export declare class SwcTimestamp {
365
- private static swcStart;
366
- protected year: number;
367
- protected day: number;
368
- protected hour: number;
369
- protected minute: number;
370
- protected second: number;
371
- /**
372
- * Create a new SwcTimestamp object for a specific moment in Combine Galactic Time.
373
- * @param {TimestampMoment} source
374
- */
375
- constructor(source: TimestampMoment);
376
- /**
377
- * Convert a unix timestamp to Combine Galactic Time.
378
- * @param {number} unixTimestamp timestamp to convert. Can be either seconds or milliseconds, the code will detect which units to use.
379
- * @returns {SwcTimestamp}
380
- */
381
- static fromUnixTimestamp(unixTimestamp: number): SwcTimestamp;
382
- /**
383
- * Convert a Date object into Combine Galactic Time.
384
- * @param {Date} date
385
- * @returns {SwcTimestamp}
386
- */
387
- static fromDate(date: Date): SwcTimestamp;
388
- /**
389
- * Get the current Combine Galactic Time.
390
- * @returns {SwcTimestamp}
391
- */
392
- static now(): SwcTimestamp;
393
- /**
394
- *
395
- * @param {number} msSinceSwcStart
396
- * @returns {SwcTimestamp}
397
- * @private
398
- */
399
- private static calculateSwcTimestampFromMillisecondsSinceStart;
400
- /**
401
- * Convert the SWC timestamp into a unix timestamp
402
- * @param {'sec' | 'ms' | 'seconds' | 'milliseconds'} unit Whether the unix timestamp should be in seconds or milliseconds.
403
- * @returns {number}
404
- */
405
- toUnixTimestamp(unit: 'sec' | 'ms' | 'seconds' | 'milliseconds'): number;
406
- /**
407
- * Convert the SWC timestamp into a Date object.
408
- * @returns {Date}
409
- */
410
- toDate(): Date;
411
- asMoment(): TimestampMoment;
412
- /**
413
- * @returns {number}
414
- */
415
- getYear(): number;
416
- /**
417
- * @returns {number}
418
- */
419
- getDay(): number;
420
- /**
421
- * @returns {number}
422
- */
423
- getHour(): number;
424
- /**
425
- * @returns {number}
426
- */
427
- getMinute(): number;
428
- /**
429
- * @returns {number}
430
- */
431
- getSecond(): number;
432
- /**
433
- * Calculate a new timestamp by adding time to this timestamp, and return the newly calculated timestamp.
434
- * @param duration
435
- */
436
- add(duration: Partial<Duration>): SwcTimestamp;
437
- /**
438
- * Calculate a new timestamp by subtracting time from this timestamp, and return the newly calculated timestamp.
439
- * @param duration
440
- */
441
- subtract(duration: Partial<Duration>): SwcTimestamp;
442
- getDurationTo(otherTimestamp: SwcTimestamp): Duration;
443
- /**
444
- * Convert the SWC timestamp to a string (i.e. Year 25 Day 60, 12:45:21)
445
- * The following formats are available:
446
- *
447
- * 'full': Year 25 Day 60, 6:03:12<br>
448
- * 'minute': Year 25 Day 60, 6:03<br>
449
- * 'day': Year 25 Day 60<br>
450
- * 'shortFull': Y25 D60, 6:03:12<br>
451
- * 'shortMinute': Y25 D60, 6:03<br>
452
- * 'shortDay': Y26 D60
453
- * @param format format to use
454
- */
455
- toString(format?: 'full' | 'minute' | 'day' | 'shortFull' | 'shortMinute' | 'shortDay'): string;
456
- /**
457
- * @returns {number}
458
- * @private
459
- */
460
- private calculateMillisecondsSinceStartFromSwcTimestamp;
461
- }
462
-
463
- declare class SwcUid {
464
- private readonly _entityType;
465
- private readonly _id;
466
- constructor(entityType: SwcUidType, id: number);
467
- constructor(uid: string);
468
- get entityType(): SwcUidType;
469
- get id(): number;
470
- get uid(): string;
471
- }
472
-
473
- declare enum SwcUidType {
474
- character = 1,
475
- ship = 2,
476
- vehicle = 3,
477
- facility = 4,
478
- station = 5,
479
- city = 7,
480
- planet = 8,
481
- system = 9,
482
- npc = 10,
483
- creature = 11,
484
- item = 12,
485
- droid = 13,
486
- datacard = 14,
487
- material = 16,
488
- stock = 17,
489
- weapon = 18,
490
- faction = 20,
491
- race = 22,
492
- sector = 25,
493
- customImage = 37
494
- }
495
-
496
- export declare interface TimestampMoment {
497
- year: number;
498
- day: number;
499
- hour?: number;
500
- minute?: number;
501
- second?: number;
502
- }
503
-
504
- export declare interface TokenInfo {
505
- accessToken: string;
506
- refreshToken?: string;
507
- expiryTime: Date;
508
- }
509
-
510
- export { }
1
+ /**
2
+ * SWC Combine API SDK - Main entry point
3
+ */
4
+ export * from "./src/index.ts";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ var E={character_auth:{name:"character_auth",description:"Solely provides the character name and ID for use by clients who want to verify a character's identity",inherits:[]},character_read:{name:"character_read",description:"Read basic character information. If your profile is private, this will return unique ID, handle, and image. If your profile is not private, this will also return your race, gender, last login, description, and biography.",inherits:[]},character_stats:{name:"character_stats",description:"Read information about the character's HP and XP",inherits:["character_read"]},character_privileges:{name:"character_privileges",description:"Read character privileges",inherits:["character_read"]},character_skills:{name:"character_skills",description:"Read character skills",inherits:["character_read"]},character_credits:{name:"character_credits",description:"Read character credit information",inherits:["character_read"]},character_credits_write:{name:"character_credits_write",description:"Transfer character credits",inherits:["character_credits","character_read"]},character_force:{name:"character_force",description:"Read character force-related information. If you are Force-aware, this will return Master or Student where applicable, as well as FP, FXP, regen rate, and Force Meter.",inherits:["character_read"]},character_location:{name:"character_location",description:"Read your location in-game",inherits:["character_read"]},character_events:{name:"character_events",description:"Read the characters' events",inherits:["character_read"]},character_all:{name:"character_all",description:"Access all character information",inherits:["character_credits_write","character_events","character_location","character_force","character_skills","character_privileges","character_stats","character_credits","character_read"]},messages_read:{name:"messages_read",description:"Read messages sent to or by the character",inherits:["character_read"]},messages_send:{name:"messages_send",description:"Send messages to or from the character",inherits:["messages_read","character_read"]},messages_delete:{name:"messages_delete",description:"Delete messages to or from the character",inherits:["messages_read","character_read"]},messages_all:{name:"messages_all",description:"Read, send and delete messages to or from the character",inherits:["messages_send","messages_delete","messages_read","character_read"]},personal_inv_overview:{name:"personal_inv_overview",description:"Read basic information about your inventories",inherits:[]},personal_inv_ships_read:{name:"personal_inv_ships_read",description:"Read basic information about your ships",inherits:["personal_inv_ships_tags_read","personal_inv_overview","character_read"]},personal_inv_ships_rename:{name:"personal_inv_ships_rename",description:"Rename your ships",inherits:["personal_inv_ships_read","personal_inv_ships_tags_read","personal_inv_overview","character_read"]},personal_inv_ships_assign:{name:"personal_inv_ships_assign",description:"Assign your ships",inherits:["personal_inv_ships_read","personal_inv_ships_tags_read","personal_inv_overview","character_read"]},personal_inv_ships_makeover:{name:"personal_inv_ships_makeover",description:"Make over your ships",inherits:["personal_inv_ships_read","personal_inv_ships_tags_read","personal_inv_overview","character_read"]},personal_inv_ships_tags_read:{name:"personal_inv_ships_tags_read",description:"Read the tags assigned to your ships",inherits:["personal_inv_overview","character_read"]},personal_inv_ships_tags_write:{name:"personal_inv_ships_tags_write",description:"Modify the tags assigned to your ships",inherits:["personal_inv_ships_assign","personal_inv_ships_read","personal_inv_ships_tags_read","personal_inv_overview","character_read"]},personal_inv_ships_all:{name:"personal_inv_ships_all",description:"Access and change anything in your ship inventory",inherits:["personal_inv_ships_tags_write","personal_inv_ships_makeover","personal_inv_ships_rename","personal_inv_ships_assign","personal_inv_ships_read","personal_inv_ships_tags_read","personal_inv_overview","character_read"]},personal_inv_vehicles_read:{name:"personal_inv_vehicles_read",description:"Read basic information about your vehicles",inherits:["personal_inv_vehicles_tags_read","personal_inv_overview","character_read"]},personal_inv_vehicles_rename:{name:"personal_inv_vehicles_rename",description:"Rename your vehicles",inherits:["personal_inv_vehicles_read","personal_inv_vehicles_tags_read","personal_inv_overview","character_read"]},personal_inv_vehicles_assign:{name:"personal_inv_vehicles_assign",description:"Assign your vehicles",inherits:["personal_inv_vehicles_read","personal_inv_vehicles_tags_read","personal_inv_overview","character_read"]},personal_inv_vehicles_makeover:{name:"personal_inv_vehicles_makeover",description:"Make over your vehicles",inherits:["personal_inv_vehicles_read","personal_inv_vehicles_tags_read","personal_inv_overview","character_read"]},personal_inv_vehicles_tags_read:{name:"personal_inv_vehicles_tags_read",description:"Read the tags assigned to your vehicles",inherits:["personal_inv_overview","character_read"]},personal_inv_vehicles_tags_write:{name:"personal_inv_vehicles_tags_write",description:"Modify the tags assigned to your vehicles",inherits:["personal_inv_vehicles_assign","personal_inv_vehicles_read","personal_inv_vehicles_tags_read","personal_inv_overview","character_read"]},personal_inv_vehicles_all:{name:"personal_inv_vehicles_all",description:"Access and change anything in your vehicle inventory",inherits:["personal_inv_vehicles_tags_write","personal_inv_vehicles_makeover","personal_inv_vehicles_rename","personal_inv_vehicles_assign","personal_inv_vehicles_read","personal_inv_vehicles_tags_read","personal_inv_overview","character_read"]},personal_inv_stations_read:{name:"personal_inv_stations_read",description:"Read basic information about your space stations",inherits:["personal_inv_stations_tags_read","personal_inv_overview","character_read"]},personal_inv_stations_rename:{name:"personal_inv_stations_rename",description:"Rename your space stations",inherits:["personal_inv_stations_read","personal_inv_stations_tags_read","personal_inv_overview","character_read"]},personal_inv_stations_assign:{name:"personal_inv_stations_assign",description:"Assign your space stations",inherits:["personal_inv_stations_read","personal_inv_stations_tags_read","personal_inv_overview","character_read"]},personal_inv_stations_makeover:{name:"personal_inv_stations_makeover",description:"Make over your space stations",inherits:["personal_inv_stations_read","personal_inv_stations_tags_read","personal_inv_overview","character_read"]},personal_inv_stations_tags_read:{name:"personal_inv_stations_tags_read",description:"Read the tags assigned to your space stations",inherits:["personal_inv_overview","character_read"]},personal_inv_stations_tags_write:{name:"personal_inv_stations_tags_write",description:"Modify the tags assigned to your space stations",inherits:["personal_inv_stations_assign","personal_inv_stations_read","personal_inv_stations_tags_read","personal_inv_overview","character_read"]},personal_inv_stations_all:{name:"personal_inv_stations_all",description:"Access and change anything in your space station inventory",inherits:["personal_inv_stations_tags_write","personal_inv_stations_makeover","personal_inv_stations_rename","personal_inv_stations_assign","personal_inv_stations_read","personal_inv_stations_tags_read","personal_inv_overview","character_read"]},personal_inv_cities_read:{name:"personal_inv_cities_read",description:"Read basic information about your cities",inherits:["personal_inv_cities_tags_read","personal_inv_overview","character_read"]},personal_inv_cities_rename:{name:"personal_inv_cities_rename",description:"Rename your cities",inherits:["personal_inv_cities_read","personal_inv_cities_tags_read","personal_inv_overview","character_read"]},personal_inv_cities_assign:{name:"personal_inv_cities_assign",description:"Assign your cities",inherits:["personal_inv_cities_read","personal_inv_cities_tags_read","personal_inv_overview","character_read"]},personal_inv_cities_makeover:{name:"personal_inv_cities_makeover",description:"Make over your cities",inherits:["personal_inv_cities_read","personal_inv_cities_tags_read","personal_inv_overview","character_read"]},personal_inv_cities_tags_read:{name:"personal_inv_cities_tags_read",description:"Read the tags assigned to your cities",inherits:["personal_inv_overview","character_read"]},personal_inv_cities_tags_write:{name:"personal_inv_cities_tags_write",description:"Modify the tags assigned to your cities",inherits:["personal_inv_cities_assign","personal_inv_cities_read","personal_inv_cities_tags_read","personal_inv_overview","character_read"]},personal_inv_cities_all:{name:"personal_inv_cities_all",description:"Access and change anything in your city inventory",inherits:["personal_inv_cities_tags_write","personal_inv_cities_makeover","personal_inv_cities_rename","personal_inv_cities_assign","personal_inv_cities_read","personal_inv_cities_tags_read","personal_inv_overview","character_read"]},personal_inv_facilities_read:{name:"personal_inv_facilities_read",description:"Read basic information about your facilities",inherits:["personal_inv_facilities_tags_read","personal_inv_overview","character_read"]},personal_inv_facilities_rename:{name:"personal_inv_facilities_rename",description:"Rename your facilities",inherits:["personal_inv_facilities_read","personal_inv_facilities_tags_read","personal_inv_overview","character_read"]},personal_inv_facilities_assign:{name:"personal_inv_facilities_assign",description:"Assign your facilities",inherits:["personal_inv_facilities_read","personal_inv_facilities_tags_read","personal_inv_overview","character_read"]},personal_inv_facilities_makeover:{name:"personal_inv_facilities_makeover",description:"Make over your facilities",inherits:["personal_inv_facilities_read","personal_inv_facilities_tags_read","personal_inv_overview","character_read"]},personal_inv_facilities_tags_read:{name:"personal_inv_facilities_tags_read",description:"Read the tags assigned to your facilities",inherits:["personal_inv_overview","character_read"]},personal_inv_facilities_tags_write:{name:"personal_inv_facilities_tags_write",description:"Modify the tags assigned to your facilities",inherits:["personal_inv_facilities_assign","personal_inv_facilities_read","personal_inv_facilities_tags_read","personal_inv_overview","character_read"]},personal_inv_facilities_all:{name:"personal_inv_facilities_all",description:"Access and change anything in your facility inventory",inherits:["personal_inv_facilities_tags_write","personal_inv_facilities_makeover","personal_inv_facilities_rename","personal_inv_facilities_assign","personal_inv_facilities_read","personal_inv_facilities_tags_read","personal_inv_overview","character_read"]},personal_inv_planets_read:{name:"personal_inv_planets_read",description:"Read basic information about your planets",inherits:["personal_inv_planets_tags_read","personal_inv_overview","character_read"]},personal_inv_planets_assign:{name:"personal_inv_planets_assign",description:"Assign your planets",inherits:["personal_inv_planets_read","personal_inv_planets_tags_read","personal_inv_overview","character_read"]},personal_inv_planets_tags_read:{name:"personal_inv_planets_tags_read",description:"Read the tags assigned to your planets",inherits:["personal_inv_overview","character_read"]},personal_inv_planets_tags_write:{name:"personal_inv_planets_tags_write",description:"Modify the tags assigned to your planets",inherits:["personal_inv_planets_assign","personal_inv_planets_read","personal_inv_planets_tags_read","personal_inv_overview","character_read"]},personal_inv_planets_all:{name:"personal_inv_planets_all",description:"Access and change anything in your planet inventory",inherits:["personal_inv_planets_tags_write","personal_inv_planets_assign","personal_inv_planets_read","personal_inv_planets_tags_read","personal_inv_overview","character_read"]},personal_inv_items_read:{name:"personal_inv_items_read",description:"Read basic information about your items",inherits:["personal_inv_items_tags_read","personal_inv_overview","character_read"]},personal_inv_items_rename:{name:"personal_inv_items_rename",description:"Rename your items",inherits:["personal_inv_items_read","personal_inv_items_tags_read","personal_inv_overview","character_read"]},personal_inv_items_assign:{name:"personal_inv_items_assign",description:"Assign your items",inherits:["personal_inv_items_read","personal_inv_items_tags_read","personal_inv_overview","character_read"]},personal_inv_items_makeover:{name:"personal_inv_items_makeover",description:"Make over your items",inherits:["personal_inv_items_read","personal_inv_items_tags_read","personal_inv_overview","character_read"]},personal_inv_items_tags_read:{name:"personal_inv_items_tags_read",description:"Read the tags assigned to your items",inherits:["personal_inv_overview","character_read"]},personal_inv_items_tags_write:{name:"personal_inv_items_tags_write",description:"Modify the tags assigned to your items",inherits:["personal_inv_items_assign","personal_inv_items_read","personal_inv_items_tags_read","personal_inv_overview","character_read"]},personal_inv_items_all:{name:"personal_inv_items_all",description:"Access and change anything in your item inventory",inherits:["personal_inv_items_tags_write","personal_inv_items_makeover","personal_inv_items_rename","personal_inv_items_assign","personal_inv_items_read","personal_inv_items_tags_read","personal_inv_overview","character_read"]},personal_inv_npcs_read:{name:"personal_inv_npcs_read",description:"Read basic information about your NPCs",inherits:["personal_inv_npcs_tags_read","personal_inv_overview","character_read"]},personal_inv_npcs_assign:{name:"personal_inv_npcs_assign",description:"Assign your NPCs",inherits:["personal_inv_npcs_read","personal_inv_npcs_tags_read","personal_inv_overview","character_read"]},personal_inv_npcs_makeover:{name:"personal_inv_npcs_makeover",description:"Make over your NPCs",inherits:["personal_inv_npcs_read","personal_inv_npcs_tags_read","personal_inv_overview","character_read"]},personal_inv_npcs_tags_read:{name:"personal_inv_npcs_tags_read",description:"Read the tags assigned to your NPCs",inherits:["personal_inv_overview","character_read"]},personal_inv_npcs_tags_write:{name:"personal_inv_npcs_tags_write",description:"Modify the tags assigned to your NPCs",inherits:["personal_inv_npcs_assign","personal_inv_npcs_read","personal_inv_npcs_tags_read","personal_inv_overview","character_read"]},personal_inv_npcs_all:{name:"personal_inv_npcs_all",description:"Access and change anything in your NPC inventory",inherits:["personal_inv_npcs_tags_write","personal_inv_npcs_makeover","personal_inv_npcs_assign","personal_inv_npcs_read","personal_inv_npcs_tags_read","personal_inv_overview","character_read"]},personal_inv_droids_read:{name:"personal_inv_droids_read",description:"Read basic information about your droids",inherits:["personal_inv_droids_tags_read","personal_inv_overview","character_read"]},personal_inv_droids_rename:{name:"personal_inv_droids_rename",description:"Rename your droids",inherits:["personal_inv_droids_read","personal_inv_droids_tags_read","personal_inv_overview","character_read"]},personal_inv_droids_assign:{name:"personal_inv_droids_assign",description:"Assign your droids",inherits:["personal_inv_droids_read","personal_inv_droids_tags_read","personal_inv_overview","character_read"]},personal_inv_droids_makeover:{name:"personal_inv_droids_makeover",description:"Make over your droids",inherits:["personal_inv_droids_read","personal_inv_droids_tags_read","personal_inv_overview","character_read"]},personal_inv_droids_tags_read:{name:"personal_inv_droids_tags_read",description:"Read the tags assigned to your droids",inherits:["personal_inv_overview","character_read"]},personal_inv_droids_tags_write:{name:"personal_inv_droids_tags_write",description:"Modify the tags assigned to your droids",inherits:["personal_inv_droids_assign","personal_inv_droids_read","personal_inv_droids_tags_read","personal_inv_overview","character_read"]},personal_inv_droids_all:{name:"personal_inv_droids_all",description:"Access and change anything in your droid inventory",inherits:["personal_inv_droids_tags_write","personal_inv_droids_makeover","personal_inv_droids_rename","personal_inv_droids_assign","personal_inv_droids_read","personal_inv_droids_tags_read","personal_inv_overview","character_read"]},personal_inv_materials_read:{name:"personal_inv_materials_read",description:"Read basic information about your materials",inherits:["personal_inv_materials_tags_read","personal_inv_overview","character_read"]},personal_inv_materials_rename:{name:"personal_inv_materials_rename",description:"Rename your materials",inherits:["personal_inv_materials_read","personal_inv_materials_tags_read","personal_inv_overview","character_read"]},personal_inv_materials_makeover:{name:"personal_inv_materials_makeover",description:"Make over your materials",inherits:["personal_inv_materials_read","personal_inv_materials_tags_read","personal_inv_overview","character_read"]},personal_inv_materials_tags_read:{name:"personal_inv_materials_tags_read",description:"Read the tags assigned to your materials",inherits:["personal_inv_overview","character_read"]},personal_inv_materials_tags_write:{name:"personal_inv_materials_tags_write",description:"Modify the tags assigned to your materials",inherits:["personal_inv_materials_read","personal_inv_materials_tags_read","personal_inv_overview","character_read"]},personal_inv_materials_all:{name:"personal_inv_materials_all",description:"Access and change anything in your material inventory",inherits:["personal_inv_materials_tags_write","personal_inv_materials_makeover","personal_inv_materials_rename","personal_inv_materials_read","personal_inv_materials_tags_read","personal_inv_overview","character_read"]},personal_inv_creatures_read:{name:"personal_inv_creatures_read",description:"Read basic information about your creatures",inherits:["personal_inv_creatures_tags_read","personal_inv_overview","character_read"]},personal_inv_creatures_rename:{name:"personal_inv_creatures_rename",description:"Rename your creatures",inherits:["personal_inv_creatures_read","personal_inv_creatures_tags_read","personal_inv_overview","character_read"]},personal_inv_creatures_assign:{name:"personal_inv_creatures_assign",description:"Assign your creatures",inherits:["personal_inv_creatures_read","personal_inv_creatures_tags_read","personal_inv_overview","character_read"]},personal_inv_creatures_makeover:{name:"personal_inv_creatures_makeover",description:"Make over your creatures",inherits:["personal_inv_creatures_read","personal_inv_creatures_tags_read","personal_inv_overview","character_read"]},personal_inv_creatures_tags_read:{name:"personal_inv_creatures_tags_read",description:"Read the tags assigned to your creatures",inherits:["personal_inv_overview","character_read"]},personal_inv_creatures_tags_write:{name:"personal_inv_creatures_tags_write",description:"Modify the tags assigned to your creatures",inherits:["personal_inv_creatures_assign","personal_inv_creatures_read","personal_inv_creatures_tags_read","personal_inv_overview","character_read"]},personal_inv_creatures_all:{name:"personal_inv_creatures_all",description:"Access and change anything in your creature inventory",inherits:["personal_inv_creatures_tags_write","personal_inv_creatures_makeover","personal_inv_creatures_rename","personal_inv_creatures_assign","personal_inv_creatures_read","personal_inv_creatures_tags_read","personal_inv_overview","character_read"]},faction_inv_overview:{name:"faction_inv_overview",description:"Read basic information about your faction's inventories",inherits:[]},faction_inv_ships_read:{name:"faction_inv_ships_read",description:"Read basic information about your faction's ships",inherits:["faction_inv_ships_tags_read","faction_inv_overview","faction_read"]},faction_inv_ships_rename:{name:"faction_inv_ships_rename",description:"Rename your faction's ships",inherits:["faction_inv_ships_read","faction_inv_ships_tags_read","faction_inv_overview","faction_read"]},faction_inv_ships_assign:{name:"faction_inv_ships_assign",description:"Assign your faction's ships",inherits:["faction_inv_ships_read","faction_inv_ships_tags_read","faction_inv_overview","faction_read"]},faction_inv_ships_makeover:{name:"faction_inv_ships_makeover",description:"Make over your faction's ships",inherits:["faction_inv_ships_read","faction_inv_ships_tags_read","faction_inv_overview","faction_read"]},faction_inv_ships_tags_read:{name:"faction_inv_ships_tags_read",description:"Read the tags assigned to your faction's ships",inherits:["faction_inv_overview","faction_read"]},faction_inv_ships_tags_write:{name:"faction_inv_ships_tags_write",description:"Modify the tags assigned to your faction's ships",inherits:["faction_inv_ships_assign","faction_inv_ships_read","faction_inv_ships_tags_read","faction_inv_overview","faction_read"]},faction_inv_ships_all:{name:"faction_inv_ships_all",description:"Access and change anything in your faction's ship inventory",inherits:["faction_inv_ships_tags_write","faction_inv_ships_makeover","faction_inv_ships_rename","faction_inv_ships_assign","faction_inv_ships_read","faction_inv_ships_tags_read","faction_inv_overview","faction_read"]},faction_inv_vehicles_read:{name:"faction_inv_vehicles_read",description:"Read basic information about your faction's vehicles",inherits:["faction_inv_vehicles_tags_read","faction_inv_overview","faction_read"]},faction_inv_vehicles_rename:{name:"faction_inv_vehicles_rename",description:"Rename your faction's vehicles",inherits:["faction_inv_vehicles_read","faction_inv_vehicles_tags_read","faction_inv_overview","faction_read"]},faction_inv_vehicles_assign:{name:"faction_inv_vehicles_assign",description:"Assign your faction's vehicles",inherits:["faction_inv_vehicles_read","faction_inv_vehicles_tags_read","faction_inv_overview","faction_read"]},faction_inv_vehicles_makeover:{name:"faction_inv_vehicles_makeover",description:"Make over your faction's vehicles",inherits:["faction_inv_vehicles_read","faction_inv_vehicles_tags_read","faction_inv_overview","faction_read"]},faction_inv_vehicles_tags_read:{name:"faction_inv_vehicles_tags_read",description:"Read the tags assigned to your faction's vehicles",inherits:["faction_inv_overview","faction_read"]},faction_inv_vehicles_tags_write:{name:"faction_inv_vehicles_tags_write",description:"Modify the tags assigned to your faction's vehicles",inherits:["faction_inv_vehicles_assign","faction_inv_vehicles_read","faction_inv_vehicles_tags_read","faction_inv_overview","faction_read"]},faction_inv_vehicles_all:{name:"faction_inv_vehicles_all",description:"Access and change anything in your faction's vehicle inventory",inherits:["faction_inv_vehicles_tags_write","faction_inv_vehicles_makeover","faction_inv_vehicles_rename","faction_inv_vehicles_assign","faction_inv_vehicles_read","faction_inv_vehicles_tags_read","faction_inv_overview","faction_read"]},faction_inv_stations_read:{name:"faction_inv_stations_read",description:"Read basic information about your faction's space stations",inherits:["faction_inv_stations_tags_read","faction_inv_overview","faction_read"]},faction_inv_stations_rename:{name:"faction_inv_stations_rename",description:"Rename your faction's space stations",inherits:["faction_inv_stations_read","faction_inv_stations_tags_read","faction_inv_overview","faction_read"]},faction_inv_stations_assign:{name:"faction_inv_stations_assign",description:"Assign your faction's space stations",inherits:["faction_inv_stations_read","faction_inv_stations_tags_read","faction_inv_overview","faction_read"]},faction_inv_stations_makeover:{name:"faction_inv_stations_makeover",description:"Make over your faction's space stations",inherits:["faction_inv_stations_read","faction_inv_stations_tags_read","faction_inv_overview","faction_read"]},faction_inv_stations_tags_read:{name:"faction_inv_stations_tags_read",description:"Read the tags assigned to your faction's space stations",inherits:["faction_inv_overview","faction_read"]},faction_inv_stations_tags_write:{name:"faction_inv_stations_tags_write",description:"Modify the tags assigned to your faction's space stations",inherits:["faction_inv_stations_assign","faction_inv_stations_read","faction_inv_stations_tags_read","faction_inv_overview","faction_read"]},faction_inv_stations_all:{name:"faction_inv_stations_all",description:"Access and change anything in your faction's space station inventory",inherits:["faction_inv_stations_tags_write","faction_inv_stations_makeover","faction_inv_stations_rename","faction_inv_stations_assign","faction_inv_stations_read","faction_inv_stations_tags_read","faction_inv_overview","faction_read"]},faction_inv_cities_read:{name:"faction_inv_cities_read",description:"Read basic information about your faction's cities",inherits:["faction_inv_cities_tags_read","faction_inv_overview","faction_read"]},faction_inv_cities_rename:{name:"faction_inv_cities_rename",description:"Rename your faction's cities",inherits:["faction_inv_cities_read","faction_inv_cities_tags_read","faction_inv_overview","faction_read"]},faction_inv_cities_assign:{name:"faction_inv_cities_assign",description:"Assign your faction's cities",inherits:["faction_inv_cities_read","faction_inv_cities_tags_read","faction_inv_overview","faction_read"]},faction_inv_cities_makeover:{name:"faction_inv_cities_makeover",description:"Make over your faction's cities",inherits:["faction_inv_cities_read","faction_inv_cities_tags_read","faction_inv_overview","faction_read"]},faction_inv_cities_tags_read:{name:"faction_inv_cities_tags_read",description:"Read the tags assigned to your faction's cities",inherits:["faction_inv_overview","faction_read"]},faction_inv_cities_tags_write:{name:"faction_inv_cities_tags_write",description:"Modify the tags assigned to your faction's cities",inherits:["faction_inv_cities_assign","faction_inv_cities_read","faction_inv_cities_tags_read","faction_inv_overview","faction_read"]},faction_inv_cities_all:{name:"faction_inv_cities_all",description:"Access and change anything in your faction's city inventory",inherits:["faction_inv_cities_tags_write","faction_inv_cities_makeover","faction_inv_cities_rename","faction_inv_cities_assign","faction_inv_cities_read","faction_inv_cities_tags_read","faction_inv_overview","faction_read"]},faction_inv_facilities_read:{name:"faction_inv_facilities_read",description:"Read basic information about your faction's facilities",inherits:["faction_inv_facilities_tags_read","faction_inv_overview","faction_read"]},faction_inv_facilities_rename:{name:"faction_inv_facilities_rename",description:"Rename your faction's facilities",inherits:["faction_inv_facilities_read","faction_inv_facilities_tags_read","faction_inv_overview","faction_read"]},faction_inv_facilities_assign:{name:"faction_inv_facilities_assign",description:"Assign your faction's facilities",inherits:["faction_inv_facilities_read","faction_inv_facilities_tags_read","faction_inv_overview","faction_read"]},faction_inv_facilities_makeover:{name:"faction_inv_facilities_makeover",description:"Make over your faction's facilities",inherits:["faction_inv_facilities_read","faction_inv_facilities_tags_read","faction_inv_overview","faction_read"]},faction_inv_facilities_tags_read:{name:"faction_inv_facilities_tags_read",description:"Read the tags assigned to your faction's facilities",inherits:["faction_inv_overview","faction_read"]},faction_inv_facilities_tags_write:{name:"faction_inv_facilities_tags_write",description:"Modify the tags assigned to your faction's facilities",inherits:["faction_inv_facilities_assign","faction_inv_facilities_read","faction_inv_facilities_tags_read","faction_inv_overview","faction_read"]},faction_inv_facilities_all:{name:"faction_inv_facilities_all",description:"Access and change anything in your faction's facility inventory",inherits:["faction_inv_facilities_tags_write","faction_inv_facilities_makeover","faction_inv_facilities_rename","faction_inv_facilities_assign","faction_inv_facilities_read","faction_inv_facilities_tags_read","faction_inv_overview","faction_read"]},faction_inv_planets_read:{name:"faction_inv_planets_read",description:"Read basic information about your faction's planets",inherits:["faction_inv_planets_tags_read","faction_inv_overview","faction_read"]},faction_inv_planets_assign:{name:"faction_inv_planets_assign",description:"Assign your faction's planets",inherits:["faction_inv_planets_read","faction_inv_planets_tags_read","faction_inv_overview","faction_read"]},faction_inv_planets_tags_read:{name:"faction_inv_planets_tags_read",description:"Read the tags assigned to your faction's planets",inherits:["faction_inv_overview","faction_read"]},faction_inv_planets_tags_write:{name:"faction_inv_planets_tags_write",description:"Modify the tags assigned to your faction's planets",inherits:["faction_inv_planets_assign","faction_inv_planets_read","faction_inv_planets_tags_read","faction_inv_overview","faction_read"]},faction_inv_planets_all:{name:"faction_inv_planets_all",description:"Access and change anything in your faction's planet inventory",inherits:["faction_inv_planets_tags_write","faction_inv_planets_assign","faction_inv_planets_read","faction_inv_planets_tags_read","faction_inv_overview","faction_read"]},faction_inv_items_read:{name:"faction_inv_items_read",description:"Read basic information about your faction's items",inherits:["faction_inv_items_tags_read","faction_inv_overview","faction_read"]},faction_inv_items_rename:{name:"faction_inv_items_rename",description:"Rename your faction's items",inherits:["faction_inv_items_read","faction_inv_items_tags_read","faction_inv_overview","faction_read"]},faction_inv_items_assign:{name:"faction_inv_items_assign",description:"Assign your faction's items",inherits:["faction_inv_items_read","faction_inv_items_tags_read","faction_inv_overview","faction_read"]},faction_inv_items_makeover:{name:"faction_inv_items_makeover",description:"Make over your faction's items",inherits:["faction_inv_items_read","faction_inv_items_tags_read","faction_inv_overview","faction_read"]},faction_inv_items_tags_read:{name:"faction_inv_items_tags_read",description:"Read the tags assigned to your faction's items",inherits:["faction_inv_overview","faction_read"]},faction_inv_items_tags_write:{name:"faction_inv_items_tags_write",description:"Modify the tags assigned to your faction's items",inherits:["faction_inv_items_assign","faction_inv_items_read","faction_inv_items_tags_read","faction_inv_overview","faction_read"]},faction_inv_items_all:{name:"faction_inv_items_all",description:"Access and change anything in your faction's item inventory",inherits:["faction_inv_items_tags_write","faction_inv_items_makeover","faction_inv_items_rename","faction_inv_items_assign","faction_inv_items_read","faction_inv_items_tags_read","faction_inv_overview","faction_read"]},faction_inv_npcs_read:{name:"faction_inv_npcs_read",description:"Read basic information about your faction's NPCs",inherits:["faction_inv_npcs_tags_read","faction_inv_overview","faction_read"]},faction_inv_npcs_assign:{name:"faction_inv_npcs_assign",description:"Assign your faction's NPCs",inherits:["faction_inv_npcs_read","faction_inv_npcs_tags_read","faction_inv_overview","faction_read"]},faction_inv_npcs_makeover:{name:"faction_inv_npcs_makeover",description:"Make over your faction's NPCs",inherits:["faction_inv_npcs_read","faction_inv_npcs_tags_read","faction_inv_overview","faction_read"]},faction_inv_npcs_tags_read:{name:"faction_inv_npcs_tags_read",description:"Read the tags assigned to your faction's NPCs",inherits:["faction_inv_overview","faction_read"]},faction_inv_npcs_tags_write:{name:"faction_inv_npcs_tags_write",description:"Modify the tags assigned to your faction's NPCs",inherits:["faction_inv_npcs_assign","faction_inv_npcs_read","faction_inv_npcs_tags_read","faction_inv_overview","faction_read"]},faction_inv_npcs_all:{name:"faction_inv_npcs_all",description:"Access and change anything in your faction's NPC inventory",inherits:["faction_inv_npcs_tags_write","faction_inv_npcs_makeover","faction_inv_npcs_assign","faction_inv_npcs_read","faction_inv_npcs_tags_read","faction_inv_overview","faction_read"]},faction_inv_droids_read:{name:"faction_inv_droids_read",description:"Read basic information about your faction's droids",inherits:["faction_inv_droids_tags_read","faction_inv_overview","faction_read"]},faction_inv_droids_rename:{name:"faction_inv_droids_rename",description:"Rename your faction's droids",inherits:["faction_inv_droids_read","faction_inv_droids_tags_read","faction_inv_overview","faction_read"]},faction_inv_droids_assign:{name:"faction_inv_droids_assign",description:"Assign your faction's droids",inherits:["faction_inv_droids_read","faction_inv_droids_tags_read","faction_inv_overview","faction_read"]},faction_inv_droids_makeover:{name:"faction_inv_droids_makeover",description:"Make over your faction's droids",inherits:["faction_inv_droids_read","faction_inv_droids_tags_read","faction_inv_overview","faction_read"]},faction_inv_droids_tags_read:{name:"faction_inv_droids_tags_read",description:"Read the tags assigned to your faction's droids",inherits:["faction_inv_overview","faction_read"]},faction_inv_droids_tags_write:{name:"faction_inv_droids_tags_write",description:"Modify the tags assigned to your faction's droids",inherits:["faction_inv_droids_assign","faction_inv_droids_read","faction_inv_droids_tags_read","faction_inv_overview","faction_read"]},faction_inv_droids_all:{name:"faction_inv_droids_all",description:"Access and change anything in your faction's droid inventory",inherits:["faction_inv_droids_tags_write","faction_inv_droids_makeover","faction_inv_droids_rename","faction_inv_droids_assign","faction_inv_droids_read","faction_inv_droids_tags_read","faction_inv_overview","faction_read"]},faction_inv_materials_read:{name:"faction_inv_materials_read",description:"Read basic information about your faction's materials",inherits:["faction_inv_materials_tags_read","faction_inv_overview","faction_read"]},faction_inv_materials_rename:{name:"faction_inv_materials_rename",description:"Rename your faction's materials",inherits:["faction_inv_materials_read","faction_inv_materials_tags_read","faction_inv_overview","faction_read"]},faction_inv_materials_makeover:{name:"faction_inv_materials_makeover",description:"Make over your faction's materials",inherits:["faction_inv_materials_read","faction_inv_materials_tags_read","faction_inv_overview","faction_read"]},faction_inv_materials_tags_read:{name:"faction_inv_materials_tags_read",description:"Read the tags assigned to your faction's materials",inherits:["faction_inv_overview","faction_read"]},faction_inv_materials_tags_write:{name:"faction_inv_materials_tags_write",description:"Modify the tags assigned to your faction's materials",inherits:["faction_inv_materials_read","faction_inv_materials_tags_read","faction_inv_overview","faction_read"]},faction_inv_materials_all:{name:"faction_inv_materials_all",description:"Access and change anything in your faction's material inventory",inherits:["faction_inv_materials_tags_write","faction_inv_materials_makeover","faction_inv_materials_rename","faction_inv_materials_read","faction_inv_materials_tags_read","faction_inv_overview","faction_read"]},faction_inv_creatures_read:{name:"faction_inv_creatures_read",description:"Read basic information about your faction's creatures",inherits:["faction_inv_creatures_tags_read","faction_inv_overview","faction_read"]},faction_inv_creatures_rename:{name:"faction_inv_creatures_rename",description:"Rename your faction's creatures",inherits:["faction_inv_creatures_read","faction_inv_creatures_tags_read","faction_inv_overview","faction_read"]},faction_inv_creatures_assign:{name:"faction_inv_creatures_assign",description:"Assign your faction's creatures",inherits:["faction_inv_creatures_read","faction_inv_creatures_tags_read","faction_inv_overview","faction_read"]},faction_inv_creatures_makeover:{name:"faction_inv_creatures_makeover",description:"Make over your faction's creatures",inherits:["faction_inv_creatures_read","faction_inv_creatures_tags_read","faction_inv_overview","faction_read"]},faction_inv_creatures_tags_read:{name:"faction_inv_creatures_tags_read",description:"Read the tags assigned to your faction's creatures",inherits:["faction_inv_overview","faction_read"]},faction_inv_creatures_tags_write:{name:"faction_inv_creatures_tags_write",description:"Modify the tags assigned to your faction's creatures",inherits:["faction_inv_creatures_assign","faction_inv_creatures_read","faction_inv_creatures_tags_read","faction_inv_overview","faction_read"]},faction_inv_creatures_all:{name:"faction_inv_creatures_all",description:"Access and change anything in your faction's creature inventory",inherits:["faction_inv_creatures_tags_write","faction_inv_creatures_makeover","faction_inv_creatures_rename","faction_inv_creatures_assign","faction_inv_creatures_read","faction_inv_creatures_tags_read","faction_inv_overview","faction_read"]},faction_read:{name:"faction_read",description:"Read basic information about your faction",inherits:["character_read"]},faction_members:{name:"faction_members",description:"See your faction's members list",inherits:["faction_read","character_read"]},faction_stocks:{name:"faction_stocks",description:"See the stocks your faction owns",inherits:["faction_read","character_read"]},faction_credits_read:{name:"faction_credits_read",description:"See how many credits your faction owns",inherits:["faction_read","character_read"]},faction_credits_write:{name:"faction_credits_write",description:"Transfer credits on behalf of your faction",inherits:["faction_budgets_read","faction_credits_read","faction_read","character_read"]},faction_budgets_read:{name:"faction_budgets_read",description:"See your faction's budgets",inherits:["faction_read","character_read"]},faction_budgets_write:{name:"faction_budgets_write",description:"Change your faction's budgets",inherits:["faction_budgets_read","faction_credits_read","faction_read","character_read"]},faction_datacards_read:{name:"faction_datacards_read",description:"See your faction's datacard assignments",inherits:["faction_read","character_read"]},faction_datacards_write:{name:"faction_datacards_write",description:"Assign or revoke your faction's datacard assignments",inherits:["faction_datacards_read","faction_budgets_read","faction_credits_read","faction_read","character_read"]},faction_all:{name:"faction_all",description:"Access and change anything in your faction",inherits:["faction_budgets_write","faction_credits_write","faction_stocks","faction_members","faction_datacards_write","faction_datacards_read","faction_budgets_read","faction_credits_read","faction_read","character_read"]}},a=Object.keys(E);function u(J){return J in E}function f(J){return J.join(" ")}function n(J){return J.split(" ").filter((X)=>X.trim()&&u(X))}var D="https://www.swcombine.com/ws/oauth2";class F extends Error{code;description;constructor(J,X,Z){super(J);this.code=X;this.description=Z;this.name="SWCOAuthError"}static fromResponse(J){return new F(J.error_description||J.error,J.error,J.error_description)}}function T(J){let X=new URL(`${D}/auth/`);if(X.searchParams.set("response_type","code"),X.searchParams.set("client_id",J.clientId),X.searchParams.set("redirect_uri",J.redirectUri),X.searchParams.set("scope",f(J.scopes)),J.state)X.searchParams.set("state",J.state);if(J.accessType)X.searchParams.set("access_type",J.accessType);if(J.renewPreviouslyGranted)X.searchParams.set("renew_previously_granted","yes");return X.toString()}async function h(J){let X=new URLSearchParams({code:J.code,client_id:J.clientId,client_secret:J.clientSecret,redirect_uri:J.redirectUri,grant_type:"authorization_code"}),Z=await fetch(`${D}/token/`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:X.toString()}),$=await Z.json();if(!Z.ok||"error"in $)throw F.fromResponse($);return $}async function b(J){let X=new URLSearchParams({grant_type:"refresh_token",refresh_token:J.refreshToken,client_id:J.clientId,client_secret:J.clientSecret}),Z=await fetch(`${D}/token/`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:X.toString()}),$=await Z.json();if(!Z.ok||"error"in $)throw F.fromResponse($);return $}async function l(J){let X=new URL(`${D}/revoke`);X.searchParams.set("token",J.token),X.searchParams.set("client_id",J.clientId);let Z=await fetch(X.toString(),{method:"GET"});if(!Z.ok){let $=await Z.json();throw F.fromResponse($)}}class d{tokens=null;get(){return this.tokens}set(J){this.tokens=J}clear(){this.tokens=null}}class p{config;storage;constructor(J,X){this.config=J,this.storage=X??null}getAuthorizationUrl(J){let X=J?.scopes||this.config.defaultScopes||[];return T({clientId:this.config.clientId,redirectUri:this.config.redirectUri,scopes:X,...J})}async handleCallback(J){this.requireStorage("handleCallback");let X=await h({code:J,clientId:this.config.clientId,clientSecret:this.config.clientSecret,redirectUri:this.config.redirectUri});return await this.storeTokens(X),X}async getAccessToken(){this.requireStorage("getAccessToken");let J=await this.storage.get();if(!J)throw new F("No tokens stored. Please authenticate first.","no_tokens");if(J.expiresAt<=Date.now()+60000){if(!J.refreshToken)throw new F("Access token expired and no refresh token available","token_expired");let Z=await b({refreshToken:J.refreshToken,clientId:this.config.clientId,clientSecret:this.config.clientSecret});return await this.storeTokens(Z,J.refreshToken),Z.access_token}return J.accessToken}async refreshAccessToken(J){return await b({refreshToken:J,clientId:this.config.clientId,clientSecret:this.config.clientSecret})}async isAuthenticated(){this.requireStorage("isAuthenticated");let J=await this.storage.get();if(!J)return!1;if(J.refreshToken)return!0;return J.expiresAt>Date.now()}async getStoredTokens(){return this.requireStorage("getStoredTokens"),await this.storage.get()}async setTokens(J){this.requireStorage("setTokens"),await this.storage.set(J)}async revoke(){this.requireStorage("revoke");let J=await this.storage.get();if(J?.refreshToken)try{await l({token:J.refreshToken,clientId:this.config.clientId})}catch(X){console.warn("Failed to revoke token:",X)}await this.storage.clear()}async logout(){this.requireStorage("logout"),await this.storage.clear()}async storeTokens(J,X){let Z={accessToken:J.access_token,refreshToken:J.refresh_token||X,expiresAt:Date.now()+J.expires_in*1000};await this.storage.set(Z)}requireStorage(J){if(!this.storage)throw new F(`${J}() requires storage to be configured. Pass a TokenStorage instance to the OAuthManager constructor.`,"storage_required")}}class U extends Error{cause;constructor(J,X){super(J);this.cause=X;if(this.name="SWCError",Error.captureStackTrace)Error.captureStackTrace(this,this.constructor)}}class _ extends U{constructor(J,X){super(J,X);this.name="NetworkError"}}class x extends U{statusCode;response;constructor(J,X,Z){super(J);this.statusCode=X;this.response=Z;this.name="APIError"}}class R extends x{constructor(J,X){super(J,401,X);this.name="AuthenticationError"}}class G extends x{constructor(J,X){super(J,403,X);this.name="AuthorizationError"}}class w extends x{constructor(J,X){super(J,400,X);this.name="ValidationError"}}class M extends x{rateLimit;constructor(J,X,Z){super(J,429,Z);this.rateLimit=X;this.name="RateLimitError"}}class I extends x{constructor(J,X){super(J,404,X);this.name="NotFoundError"}}class C extends x{constructor(J,X,Z){super(J,X,Z);this.name="ServerError"}}var O={limit:["x-ratelimit-limit","x-rate-limit-limit"],remaining:["x-ratelimit-remaining","x-rate-limit-remaining"],reset:["x-ratelimit-reset","x-rate-limit-reset"],resetAfter:["x-ratelimit-reset-after","x-rate-limit-reset-after"]};function k(J){let X=v(J,O.limit);if(!X)return null;let Z=v(J,O.remaining),$=v(J,O.reset),j=v(J,O.resetAfter),Y=parseInt(X,10),z=Z?parseInt(Z,10):0,K;if($){let Q=parseInt($,10);if(!isNaN(Q))K=new Date(Q*1000);else K=new Date($)}else if(j){let Q=parseInt(j,10);K=new Date(Date.now()+Q*1000)}else K=new Date(Date.now()+3600000);let V=j?parseInt(j,10):void 0;return{limit:Y,remaining:z,reset:K,resetAfter:V}}function v(J,X){for(let Z of X){let $=J.get(Z);if($!==null)return $}return null}class A{auth;baseUrl;constructor(J,X){this.auth=J;this.baseUrl=X}async request(J){let{method:X,endpoint:Z,body:$,options:j={}}=J,Y=this.buildUrl(Z,j.query),z=typeof this.auth==="string"?this.auth:await this.auth.getAccessToken(),K=new Headers({"Content-Type":"application/json",Authorization:`OAuth ${z}`,...j.headers}),V={method:X,headers:K,signal:j.signal};if($&&(X==="POST"||X==="PUT"||X==="PATCH"))V.body=JSON.stringify($);try{let Q=await this.fetchWithTimeout(Y,V,j.timeout);return await this.handleResponse(Q)}catch(Q){if(Q instanceof x)throw Q;throw new _(`Network request failed: ${Q instanceof Error?Q.message:"Unknown error"}`,Q instanceof Error?Q:void 0)}}buildUrl(J,X){let Z=J.startsWith("/")?J:`/${J}`,$=new URL(Z,this.baseUrl);if(X)Object.entries(X).forEach(([j,Y])=>{if(Array.isArray(Y))Y.forEach((z)=>{$.searchParams.append(j,String(z))});else $.searchParams.append(j,String(Y))});return $.toString()}async fetchWithTimeout(J,X,Z){if(!Z)return fetch(J,X);let $=new AbortController,j=setTimeout(()=>$.abort(),Z);try{return await fetch(J,{...X,signal:$.signal})}finally{clearTimeout(j)}}async handleResponse(J){let{status:X,headers:Z}=J,$=k(Z);if(X>=200&&X<300)return{data:await this.parseResponseBody(J),status:X,headers:Z,rateLimit:$};let j=await this.parseResponseBody(J),Y=this.extractErrorMessage(j,X);if(X===400)throw new w(Y,j);if(X===401)throw new R(Y,j);if(X===403)throw new G(Y,j);if(X===404)throw new I(Y,j);if(X===429){if(!$)throw new M(Y,{limit:0,remaining:0,reset:new Date(Date.now()+3600000)},j);throw new M(Y,$,j)}if(X>=500)throw new C(Y,X,j);throw new x(Y,X,j)}async parseResponseBody(J){if(J.headers.get("content-type")?.includes("application/json"))try{return await J.json()}catch{return await J.text()}return await J.text()}extractErrorMessage(J,X){if(typeof J==="object"&&J!==null){if(J.error)return String(J.error);if(J.message)return String(J.message);if(J.error_description)return String(J.error_description)}return`HTTP ${X} error`}}class N{client;constructor(J){this.client=J}async request_get(J,X){return this.client.request({method:"GET",endpoint:J,options:X})}async request_post(J,X,Z){return this.client.request({method:"POST",endpoint:J,body:X,options:Z})}async request_put(J,X,Z){return this.client.request({method:"PUT",endpoint:J,body:X,options:Z})}async request_patch(J,X,Z){return this.client.request({method:"PATCH",endpoint:J,body:X,options:Z})}async request_delete(J,X,Z){return this.client.request({method:"DELETE",endpoint:J,body:X,options:Z})}}class W extends N{async helloWorld(J){return this.request_get("/api/helloworld",J)}async helloAuth(J){return this.request_get("/api/helloauth",J)}async permissions(J){return this.request_get("/api/permissions",J)}async rateLimits(J){return this.request_get("/api/ratelimits",J)}async time(J){return this.request_get("/api/time",J)}}class H extends N{creditlog;permissions;skills;privileges;privilege;credits;messages;handlecheck;constructor(J){super(J);let X=(Y,z)=>this.request_get(Y,z),Z=(Y,z,K)=>this.request_post(Y,z,K),$=(Y,z,K)=>this.request_put(Y,z,K),j=(Y,z,K)=>this.request_delete(Y,z,K);this.creditlog={get:(Y)=>{return X("/character/creditlog",Y)}},this.permissions={get:(Y)=>{return X("/character/permissions",Y)}},this.skills={get:(Y)=>{return X("/character/skills",Y)}},this.privileges={get:(Y)=>{return X("/character/privileges",Y)}},this.privilege={get:(Y,z)=>{return X(`/character/privilege/${Y}`,z)},post:(Y,z,K)=>{return Z(`/character/privilege/${Y}`,z,K)}},this.credits={get:(Y)=>{return X("/character/credits",Y)},post:(Y,z)=>{return Z("/character/credits",Y,z)}},this.messages={get:(Y,z)=>{let K=Y?`/character/messages/${Y}`:"/character/messages";return X(K,z)},put:(Y,z)=>{return $("/character/messages",Y,z)},delete:(Y,z)=>{return j(`/character/messages/${Y}`,void 0,z)}},this.handlecheck={get:(Y,z)=>{return X(`/character/handlecheck/${Y}`,z)}}}async get(J){return this.request_get("/character",J)}}class q extends N{budgets;budget;creditlog;members;stockholders;credits;constructor(J){super(J);let X=($,j)=>this.request_get($,j),Z=($,j,Y)=>this.request_post($,j,Y);this.budgets={get:($)=>{return X("/faction/budgets",$)}},this.budget={get:($,j)=>{return X(`/faction/budget/${$}`,j)}},this.creditlog={get:($)=>{return X("/faction/creditlog",$)}},this.members={get:($)=>{return X("/faction/members",$)}},this.stockholders={get:($)=>{return X("/faction/stockholders",$)}},this.credits={get:($)=>{return X("/faction/credits",$)},post:($,j)=>{return Z("/faction/credits",$,j)}}}async get(J,X){let Z=J?`/faction/${J}`:"/faction";return this.request_get(Z,X)}}class L extends N{ships;vehicles;stations;cities;facilities;planets;items;npcs;droids;creatures;materials;entity;constructor(J){super(J);let X=(z,K)=>this.request_get(z,K),Z=(z,K,V)=>this.request_post(z,K,V),$=(z,K,V)=>this.request_delete(z,K,V),j=(z)=>{return(K,V,Q)=>{let P=`/inventory/${K}/${z}`;if(V)P+=`/${V}`;let c=Q?.filters?this.buildFilterQuery(Q.filters):{},m={...Q,query:{...Q?.query,...c}};return X(P,m)}},Y=(z)=>{return{get:(K,V)=>{return X(`/inventory/entity/${z}/${K}`,V)},properties:{get:(K,V)=>{return X(`/inventory/entity/${z}/${K}/properties`,V)},post:(K,V,Q)=>{return Z(`/inventory/entity/${z}/${K}/properties`,V,Q)}},tags:{get:(K,V)=>{return X(`/inventory/entity/${z}/${K}/tags`,V)},post:(K,V,Q)=>{return Z(`/inventory/entity/${z}/${K}/tags`,V,Q)},delete:(K,V,Q)=>{return $(`/inventory/entity/${z}/${K}/tags`,V,Q)}}}};this.ships={get:j("ships")},this.vehicles={get:j("vehicles")},this.stations={get:j("stations")},this.cities={get:j("cities")},this.facilities={get:j("facilities")},this.planets={get:j("planets")},this.items={get:j("items")},this.npcs={get:j("npcs")},this.droids={get:j("droids")},this.creatures={get:j("creatures")},this.materials={get:j("materials")},this.entity={ships:Y("ships"),vehicles:Y("vehicles"),stations:Y("stations"),cities:Y("cities"),facilities:Y("facilities"),planets:Y("planets"),items:Y("items"),npcs:Y("npcs"),droids:Y("droids"),creatures:Y("creatures"),materials:Y("materials")}}async get(J,X){return this.request_get(`/inventory/${J}`,X)}buildFilterQuery(J){let X={};if(J.filter_type&&J.filter_type.length>0)J.filter_type.forEach((Z)=>{if(Array.isArray(X["filter_type[]"]))X["filter_type[]"].push(Z);else X["filter_type[]"]=[Z]});if(J.filter_value)Object.entries(J.filter_value).forEach(([Z,$])=>{(Array.isArray($)?$:[$]).forEach((Y)=>{let z=`filter_value[${Z}][]`;if(Array.isArray(X[z]))X[z].push(Y);else X[z]=[Y]})});if(J.filter_inclusion)Object.entries(J.filter_inclusion).forEach(([Z,$])=>{X[`filter_inclusion[${Z}]`]=$});return X}}var S="https://www.swcombine.com/ws/v2.0";class g{httpClient;api;character;faction;inventory;constructor(J,X){let Z,$;if("auth"in J)Z=J.auth,$=J.baseUrl??S;else if("oauth"in J)Z=J.oauth,$=J.baseUrl??S;else Z=J,$=X??S;this.httpClient=new A(Z,$),this.api=new W(this),this.character=new H(this),this.faction=new q(this),this.inventory=new L(this)}async request(J){return(await this.httpClient.request(J)).data}async requestWithResponse(J){return this.httpClient.request(J)}}class B{static swcStart=new Date(Date.UTC(1998,11,3,7,0,0));year;day;hour;minute;second;constructor(J){let{year:X,day:Z,hour:$=0,minute:j=0,second:Y=0}=J;this.year=X,this.day=Z,this.hour=$,this.minute=j,this.second=Y}static fromUnixTimestamp(J){let X=J;if(X<100000000000)X=X*1000;return this.calculateTimestampFromMillisecondsSinceStart(X-this.swcStart.getTime())}static fromDate(J){return this.calculateTimestampFromMillisecondsSinceStart(J.getTime()-this.swcStart.getTime())}static now(){return B.fromDate(new Date)}static calculateTimestampFromMillisecondsSinceStart(J){let Y=J,z=Math.floor(Y/31536000000);Y-=z*31536000000;let K=Math.floor(Y/86400000);Y-=K*86400000;let V=Math.floor(Y/3600000);Y-=V*3600000;let Q=Math.floor(Y/60000);Y-=Q*60000;let P=Math.floor(Y/1000);return new B({year:z,day:K+1,hour:V,minute:Q,second:P})}toUnixTimestamp(J){let X=this.calculateMillisecondsSinceStartFromTimestamp()+B.swcStart.getTime();if(J==="sec"||J==="seconds")return X/1000;else return X}toDate(){return new Date(this.calculateMillisecondsSinceStartFromTimestamp()+B.swcStart.getTime())}asMoment(){return{year:this.year,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}getYear(){return this.year}getDay(){return this.day}getHour(){return this.hour}getMinute(){return this.minute}getSecond(){return this.second}add(J){let X=this.toUnixTimestamp("sec");return B.fromUnixTimestamp(X+y(J))}subtract(J){let X=this.toUnixTimestamp("sec");return B.fromUnixTimestamp(Math.max(X-y(J),B.swcStart.getTime()/1000))}getDurationTo(J){let X=this.toUnixTimestamp("sec"),Z=J.toUnixTimestamp("sec");return i(Z-X)}toString(J="full"){switch(J){case"full":return`Year ${this.year} Day ${this.day}, ${this.hour}:${this.minute.toString().padStart(2,"0")}:${this.second.toString().padStart(2,"0")}`;case"minute":return`Year ${this.year} Day ${this.day}, ${this.hour}:${this.minute.toString().padStart(2,"0")}`;case"day":return`Year ${this.year} Day ${this.day}`;case"shortFull":return`Y${this.year} D${this.day}, ${this.hour}:${this.minute.toString().padStart(2,"0")}:${this.second.toString().padStart(2,"0")}`;case"shortMinute":return`Y${this.year} D${this.day}, ${this.hour}:${this.minute.toString().padStart(2,"0")}`;case"shortDay":return`Y${this.year} D${this.day}`}let X="",Z="",$=!1;return J.split("").forEach((j)=>{if(j==="{"&&!$){$=!0;return}if(j==="}"&&$){X+=this.substituteTag(Z),$=!1,Z="";return}if($)Z+=j;else X+=j}),X}substituteTag(J){if(J.localeCompare("y","en",{sensitivity:"accent"})===0)return this.year.toString();if(J.localeCompare("yy","en",{sensitivity:"accent"})===0)return this.year.toString().padStart(2,"0");if(J.localeCompare("d","en",{sensitivity:"accent"})===0)return this.day.toString();if(J.localeCompare("dd","en",{sensitivity:"accent"})===0)return this.day.toString().padStart(2,"0");if(J.localeCompare("h","en",{sensitivity:"accent"})===0)return this.hour.toString();if(J.localeCompare("hh","en",{sensitivity:"accent"})===0)return this.hour.toString().padStart(2,"0");if(J.localeCompare("m","en",{sensitivity:"accent"})===0)return this.minute.toString();if(J.localeCompare("mm","en",{sensitivity:"accent"})===0)return this.minute.toString().padStart(2,"0");if(J.localeCompare("s","en",{sensitivity:"accent"})===0)return this.second.toString();if(J.localeCompare("ss","en",{sensitivity:"accent"})===0)return this.second.toString().padStart(2,"0");if(J.localeCompare("hms","en",{sensitivity:"accent"})===0)return`${this.hour.toString().padStart(2,"0")}:${this.minute.toString().padStart(2,"0")}:${this.second.toString().padStart(2,"0")}`;return""}calculateMillisecondsSinceStartFromTimestamp(){let j=0;return j+=this.year*31536000000,j+=(this.day-1)*86400000,j+=this.hour*3600000,j+=this.minute*60000,j+=this.second*1000,j}}function y(J){return(J.years||0)*365*24*60*60+(J.days||0)*24*60*60+(J.hours||0)*60*60+(J.minutes||0)*60+(J.seconds||0)}function i(J){let Y=J,z=Math.floor(Y/31536000);Y-=z*31536000;let K=Math.floor(Y/86400);Y-=K*86400;let V=Math.floor(Y/3600);Y-=V*3600;let Q=Math.floor(Y/60);return Y-=Q*60,{years:z,days:K,hours:V,minutes:Q,seconds:Y}}var fJ="0.1.0";export{f as scopesToString,n as scopesFromString,l as revokeToken,b as refreshAccessToken,k as parseRateLimitHeaders,u as isValidScope,T as generateAuthorizationUrl,h as exchangeCodeForToken,w as ValidationError,fJ as VERSION,B as Timestamp,C as ServerError,E as Scopes,F as SWCOAuthError,U as SWCError,g as SWCClient,M as RateLimitError,p as OAuthManager,I as NotFoundError,_ as NetworkError,d as MemoryTokenStorage,L as InventoryResource,q as FactionResource,H as CharacterResource,G as AuthorizationError,R as AuthenticationError,W as ApiResource,x as APIError,a as ALL_SCOPE_KEYS};
2
+
3
+ //# debugId=B05C2413B260D4A564756E2164756E21