swcombine-sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +404 -0
  3. package/dist/cjs/SWCombine.js +120 -0
  4. package/dist/cjs/SWCombine.js.map +1 -0
  5. package/dist/cjs/auth/OAuthClient.js +195 -0
  6. package/dist/cjs/auth/OAuthClient.js.map +1 -0
  7. package/dist/cjs/auth/TokenManager.js +139 -0
  8. package/dist/cjs/auth/TokenManager.js.map +1 -0
  9. package/dist/cjs/auth/permissions.js +281 -0
  10. package/dist/cjs/auth/permissions.js.map +1 -0
  11. package/dist/cjs/auth/scopes.js +285 -0
  12. package/dist/cjs/auth/scopes.js.map +1 -0
  13. package/dist/cjs/http/HttpClient.js +216 -0
  14. package/dist/cjs/http/HttpClient.js.map +1 -0
  15. package/dist/cjs/http/errors.js +156 -0
  16. package/dist/cjs/http/errors.js.map +1 -0
  17. package/dist/cjs/index.js +48 -0
  18. package/dist/cjs/index.js.map +1 -0
  19. package/dist/cjs/resources/ApiResource.js +44 -0
  20. package/dist/cjs/resources/ApiResource.js.map +1 -0
  21. package/dist/cjs/resources/BaseResource.js +33 -0
  22. package/dist/cjs/resources/BaseResource.js.map +1 -0
  23. package/dist/cjs/resources/CharacterResource.js +178 -0
  24. package/dist/cjs/resources/CharacterResource.js.map +1 -0
  25. package/dist/cjs/resources/DatacardResource.js +42 -0
  26. package/dist/cjs/resources/DatacardResource.js.map +1 -0
  27. package/dist/cjs/resources/EventsResource.js +42 -0
  28. package/dist/cjs/resources/EventsResource.js.map +1 -0
  29. package/dist/cjs/resources/FactionResource.js +162 -0
  30. package/dist/cjs/resources/FactionResource.js.map +1 -0
  31. package/dist/cjs/resources/GalaxyResource.js +184 -0
  32. package/dist/cjs/resources/GalaxyResource.js.map +1 -0
  33. package/dist/cjs/resources/InventoryResource.js +95 -0
  34. package/dist/cjs/resources/InventoryResource.js.map +1 -0
  35. package/dist/cjs/resources/LocationResource.js +20 -0
  36. package/dist/cjs/resources/LocationResource.js.map +1 -0
  37. package/dist/cjs/resources/MarketResource.js +44 -0
  38. package/dist/cjs/resources/MarketResource.js.map +1 -0
  39. package/dist/cjs/resources/NewsResource.js +109 -0
  40. package/dist/cjs/resources/NewsResource.js.map +1 -0
  41. package/dist/cjs/resources/TypesResource.js +75 -0
  42. package/dist/cjs/resources/TypesResource.js.map +1 -0
  43. package/dist/cjs/types/index.js +25 -0
  44. package/dist/cjs/types/index.js.map +1 -0
  45. package/dist/esm/SWCombine.js +116 -0
  46. package/dist/esm/SWCombine.js.map +1 -0
  47. package/dist/esm/auth/OAuthClient.js +188 -0
  48. package/dist/esm/auth/OAuthClient.js.map +1 -0
  49. package/dist/esm/auth/TokenManager.js +135 -0
  50. package/dist/esm/auth/TokenManager.js.map +1 -0
  51. package/dist/esm/auth/permissions.js +275 -0
  52. package/dist/esm/auth/permissions.js.map +1 -0
  53. package/dist/esm/auth/scopes.js +274 -0
  54. package/dist/esm/auth/scopes.js.map +1 -0
  55. package/dist/esm/http/HttpClient.js +209 -0
  56. package/dist/esm/http/HttpClient.js.map +1 -0
  57. package/dist/esm/http/errors.js +152 -0
  58. package/dist/esm/http/errors.js.map +1 -0
  59. package/dist/esm/index.js +15 -0
  60. package/dist/esm/index.js.map +1 -0
  61. package/dist/esm/resources/ApiResource.js +40 -0
  62. package/dist/esm/resources/ApiResource.js.map +1 -0
  63. package/dist/esm/resources/BaseResource.js +29 -0
  64. package/dist/esm/resources/BaseResource.js.map +1 -0
  65. package/dist/esm/resources/CharacterResource.js +168 -0
  66. package/dist/esm/resources/CharacterResource.js.map +1 -0
  67. package/dist/esm/resources/DatacardResource.js +38 -0
  68. package/dist/esm/resources/DatacardResource.js.map +1 -0
  69. package/dist/esm/resources/EventsResource.js +38 -0
  70. package/dist/esm/resources/EventsResource.js.map +1 -0
  71. package/dist/esm/resources/FactionResource.js +153 -0
  72. package/dist/esm/resources/FactionResource.js.map +1 -0
  73. package/dist/esm/resources/GalaxyResource.js +175 -0
  74. package/dist/esm/resources/GalaxyResource.js.map +1 -0
  75. package/dist/esm/resources/InventoryResource.js +90 -0
  76. package/dist/esm/resources/InventoryResource.js.map +1 -0
  77. package/dist/esm/resources/LocationResource.js +16 -0
  78. package/dist/esm/resources/LocationResource.js.map +1 -0
  79. package/dist/esm/resources/MarketResource.js +39 -0
  80. package/dist/esm/resources/MarketResource.js.map +1 -0
  81. package/dist/esm/resources/NewsResource.js +103 -0
  82. package/dist/esm/resources/NewsResource.js.map +1 -0
  83. package/dist/esm/resources/TypesResource.js +69 -0
  84. package/dist/esm/resources/TypesResource.js.map +1 -0
  85. package/dist/esm/types/index.js +22 -0
  86. package/dist/esm/types/index.js.map +1 -0
  87. package/dist/types/SWCombine.d.ts +66 -0
  88. package/dist/types/SWCombine.d.ts.map +1 -0
  89. package/dist/types/auth/OAuthClient.d.ts +48 -0
  90. package/dist/types/auth/OAuthClient.d.ts.map +1 -0
  91. package/dist/types/auth/TokenManager.d.ts +66 -0
  92. package/dist/types/auth/TokenManager.d.ts.map +1 -0
  93. package/dist/types/auth/permissions.d.ts +173 -0
  94. package/dist/types/auth/permissions.d.ts.map +1 -0
  95. package/dist/types/auth/scopes.d.ts +309 -0
  96. package/dist/types/auth/scopes.d.ts.map +1 -0
  97. package/dist/types/http/HttpClient.d.ts +64 -0
  98. package/dist/types/http/HttpClient.d.ts.map +1 -0
  99. package/dist/types/http/errors.d.ts +54 -0
  100. package/dist/types/http/errors.d.ts.map +1 -0
  101. package/dist/types/index.d.ts +11 -0
  102. package/dist/types/index.d.ts.map +1 -0
  103. package/dist/types/resources/ApiResource.d.ts +56 -0
  104. package/dist/types/resources/ApiResource.d.ts.map +1 -0
  105. package/dist/types/resources/BaseResource.d.ts +16 -0
  106. package/dist/types/resources/BaseResource.d.ts.map +1 -0
  107. package/dist/types/resources/CharacterResource.d.ts +151 -0
  108. package/dist/types/resources/CharacterResource.d.ts.map +1 -0
  109. package/dist/types/resources/DatacardResource.d.ts +42 -0
  110. package/dist/types/resources/DatacardResource.d.ts.map +1 -0
  111. package/dist/types/resources/EventsResource.d.ts +34 -0
  112. package/dist/types/resources/EventsResource.d.ts.map +1 -0
  113. package/dist/types/resources/FactionResource.d.ts +166 -0
  114. package/dist/types/resources/FactionResource.d.ts.map +1 -0
  115. package/dist/types/resources/GalaxyResource.d.ts +134 -0
  116. package/dist/types/resources/GalaxyResource.d.ts.map +1 -0
  117. package/dist/types/resources/InventoryResource.d.ts +77 -0
  118. package/dist/types/resources/InventoryResource.d.ts.map +1 -0
  119. package/dist/types/resources/LocationResource.d.ts +18 -0
  120. package/dist/types/resources/LocationResource.d.ts.map +1 -0
  121. package/dist/types/resources/MarketResource.d.ts +34 -0
  122. package/dist/types/resources/MarketResource.d.ts.map +1 -0
  123. package/dist/types/resources/NewsResource.d.ts +54 -0
  124. package/dist/types/resources/NewsResource.d.ts.map +1 -0
  125. package/dist/types/resources/TypesResource.d.ts +72 -0
  126. package/dist/types/resources/TypesResource.d.ts.map +1 -0
  127. package/dist/types/types/index.d.ts +296 -0
  128. package/dist/types/types/index.d.ts.map +1 -0
  129. package/package.json +75 -0
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ /**
3
+ * OAuth 2.0 client for SW Combine API
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.OAuthClient = void 0;
10
+ const axios_1 = __importDefault(require("axios"));
11
+ const index_js_1 = require("../types/index.js");
12
+ const errors_js_1 = require("../http/errors.js");
13
+ // OAuth endpoints
14
+ const OAUTH_ENDPOINT_AUTH = 'https://www.swcombine.com/ws/oauth2/auth/';
15
+ const OAUTH_ENDPOINT_TOKEN = 'https://www.swcombine.com/ws/oauth2/token/';
16
+ const OAUTH_ENDPOINT_REVOKE = 'https://www.swcombine.com/ws/oauth2/revoke';
17
+ /**
18
+ * OAuth client for handling authorization flows
19
+ */
20
+ class OAuthClient {
21
+ constructor(config) {
22
+ this.clientId = config.clientId;
23
+ this.clientSecret = config.clientSecret;
24
+ this.redirectUri = config.redirectUri;
25
+ this.accessType = config.accessType ?? index_js_1.AccessType.Online;
26
+ this.renewPreviouslyGranted = config.renewPreviouslyGranted ?? false;
27
+ }
28
+ /**
29
+ * Get authorization URL for redirecting user
30
+ */
31
+ getAuthorizationUrl(options) {
32
+ if (!this.redirectUri) {
33
+ throw new Error('redirectUri is required for authorization flow');
34
+ }
35
+ const params = {
36
+ response_type: 'code',
37
+ client_id: this.clientId,
38
+ scope: options.scopes.join(' '),
39
+ redirect_uri: this.redirectUri,
40
+ state: options.state,
41
+ access_type: this.accessType,
42
+ };
43
+ // Add optional renewPreviouslyGranted parameter
44
+ if (this.renewPreviouslyGranted) {
45
+ params.renew_previously_granted = 'yes';
46
+ }
47
+ const searchParams = new URLSearchParams(params);
48
+ return `${OAUTH_ENDPOINT_AUTH}?${searchParams.toString()}`;
49
+ }
50
+ /**
51
+ * Handle OAuth callback and exchange code for token
52
+ */
53
+ async handleCallback(query) {
54
+ // Check for error in callback
55
+ if (query.error) {
56
+ return {
57
+ success: false,
58
+ error: query.error_description || query.error,
59
+ state: query.state,
60
+ };
61
+ }
62
+ // Check for authorization code
63
+ if (!query.code) {
64
+ return {
65
+ success: false,
66
+ error: 'No authorization code received',
67
+ state: query.state,
68
+ };
69
+ }
70
+ try {
71
+ // Exchange code for token
72
+ const token = await this.exchangeCodeForToken(query.code);
73
+ return {
74
+ success: true,
75
+ token,
76
+ state: query.state,
77
+ };
78
+ }
79
+ catch (error) {
80
+ return {
81
+ success: false,
82
+ error: error instanceof Error ? error.message : 'Token exchange failed',
83
+ state: query.state,
84
+ };
85
+ }
86
+ }
87
+ /**
88
+ * Exchange authorization code for access token
89
+ */
90
+ async exchangeCodeForToken(code) {
91
+ if (!this.redirectUri) {
92
+ throw new Error('redirectUri is required for token exchange');
93
+ }
94
+ const params = new URLSearchParams({
95
+ code,
96
+ client_id: this.clientId,
97
+ client_secret: this.clientSecret,
98
+ redirect_uri: this.redirectUri,
99
+ grant_type: index_js_1.GrantType.AuthorizationCode,
100
+ access_type: this.accessType,
101
+ });
102
+ try {
103
+ const response = await axios_1.default.post(OAUTH_ENDPOINT_TOKEN, params.toString(), {
104
+ headers: {
105
+ 'Content-Type': 'application/x-www-form-urlencoded',
106
+ 'Accept': 'application/json',
107
+ },
108
+ });
109
+ if (response.data.error) {
110
+ throw new errors_js_1.SWCError(`Failed to get token: ${response.data.error}`, {
111
+ type: 'auth',
112
+ response: response.data,
113
+ });
114
+ }
115
+ return this.parseTokenResponse(response.data);
116
+ }
117
+ catch (error) {
118
+ if (axios_1.default.isAxiosError(error) && error.response) {
119
+ throw errors_js_1.SWCError.fromHttpResponse(error.response.status, error.response.data, error.response.headers['x-request-id']);
120
+ }
121
+ throw error;
122
+ }
123
+ }
124
+ /**
125
+ * Refresh access token using refresh token
126
+ */
127
+ async refreshToken(refreshToken) {
128
+ const params = new URLSearchParams({
129
+ refresh_token: refreshToken,
130
+ client_id: this.clientId,
131
+ client_secret: this.clientSecret,
132
+ grant_type: index_js_1.GrantType.RefreshToken,
133
+ });
134
+ try {
135
+ const response = await axios_1.default.post(OAUTH_ENDPOINT_TOKEN, params.toString(), {
136
+ headers: {
137
+ 'Content-Type': 'application/x-www-form-urlencoded',
138
+ 'Accept': 'application/json',
139
+ },
140
+ });
141
+ if (response.data.error) {
142
+ throw new errors_js_1.SWCError(`Failed to refresh token: ${response.data.error}`, {
143
+ type: 'auth',
144
+ response: response.data,
145
+ });
146
+ }
147
+ return this.parseTokenResponse(response.data);
148
+ }
149
+ catch (error) {
150
+ if (axios_1.default.isAxiosError(error) && error.response) {
151
+ throw errors_js_1.SWCError.fromHttpResponse(error.response.status, error.response.data, error.response.headers['x-request-id']);
152
+ }
153
+ throw error;
154
+ }
155
+ }
156
+ /**
157
+ * Parse token response from API
158
+ */
159
+ parseTokenResponse(data) {
160
+ const expiresIn = data.expires_in ?? 3600; // Default to 1 hour
161
+ const expiresAt = Date.now() + expiresIn * 1000;
162
+ return {
163
+ accessToken: data.access_token,
164
+ refreshToken: data.refresh_token,
165
+ expiresAt,
166
+ };
167
+ }
168
+ /**
169
+ * Revoke a refresh token
170
+ */
171
+ async revokeToken(refreshToken) {
172
+ const params = new URLSearchParams({
173
+ token: refreshToken,
174
+ client_id: this.clientId,
175
+ });
176
+ try {
177
+ const response = await axios_1.default.get(`${OAUTH_ENDPOINT_REVOKE}?${params.toString()}`);
178
+ if (response.status !== 200) {
179
+ throw new errors_js_1.SWCError('Failed to revoke token', {
180
+ type: 'auth',
181
+ statusCode: response.status,
182
+ response: response.data,
183
+ });
184
+ }
185
+ }
186
+ catch (error) {
187
+ if (axios_1.default.isAxiosError(error) && error.response) {
188
+ throw errors_js_1.SWCError.fromHttpResponse(error.response.status, error.response.data, error.response.headers['x-request-id']);
189
+ }
190
+ throw error;
191
+ }
192
+ }
193
+ }
194
+ exports.OAuthClient = OAuthClient;
195
+ //# sourceMappingURL=OAuthClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OAuthClient.js","sourceRoot":"","sources":["../../../src/auth/OAuthClient.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;AAEH,kDAA0B;AAC1B,gDAO2B;AAC3B,iDAA6C;AAE7C,kBAAkB;AAClB,MAAM,mBAAmB,GAAG,2CAA2C,CAAC;AACxE,MAAM,oBAAoB,GAAG,4CAA4C,CAAC;AAC1E,MAAM,qBAAqB,GAAG,4CAA4C,CAAC;AAW3E;;GAEG;AACH,MAAa,WAAW;IAOtB,YAAY,MAAyB;QACnC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,qBAAU,CAAC,MAAM,CAAC;QACzD,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,IAAI,KAAK,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,OAAkC;QACpD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,MAAM,GAA2B;YACrC,aAAa,EAAE,MAAM;YACrB,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/B,YAAY,EAAE,IAAI,CAAC,WAAW;YAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,WAAW,EAAE,IAAI,CAAC,UAAU;SAC7B,CAAC;QAEF,gDAAgD;QAChD,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChC,MAAM,CAAC,wBAAwB,GAAG,KAAK,CAAC;QAC1C,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,GAAG,mBAAmB,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,KAAyB;QAC5C,8BAA8B;QAC9B,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK;gBAC7C,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB,CAAC;QACJ,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,gCAAgC;gBACvC,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,0BAA0B;YAC1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE1D,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK;gBACL,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB;gBACvE,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAAC,IAAY;QAC7C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,aAAa,EAAE,IAAI,CAAC,YAAY;YAChC,YAAY,EAAE,IAAI,CAAC,WAAW;YAC9B,UAAU,EAAE,oBAAS,CAAC,iBAAiB;YACvC,WAAW,EAAE,IAAI,CAAC,UAAU;SAC7B,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE;gBACzE,OAAO,EAAE;oBACP,cAAc,EAAE,mCAAmC;oBACnD,QAAQ,EAAE,kBAAkB;iBAC7B;aACF,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACxB,MAAM,IAAI,oBAAQ,CAAC,wBAAwB,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;oBAChE,IAAI,EAAE,MAAM;oBACZ,QAAQ,EAAE,QAAQ,CAAC,IAAI;iBACxB,CAAC,CAAC;YACL,CAAC;YAED,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,eAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAChD,MAAM,oBAAQ,CAAC,gBAAgB,CAC7B,KAAK,CAAC,QAAQ,CAAC,MAAM,EACrB,KAAK,CAAC,QAAQ,CAAC,IAAI,EACnB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CACvC,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,YAAoB;QACrC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,aAAa,EAAE,YAAY;YAC3B,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,aAAa,EAAE,IAAI,CAAC,YAAY;YAChC,UAAU,EAAE,oBAAS,CAAC,YAAY;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE;gBACzE,OAAO,EAAE;oBACP,cAAc,EAAE,mCAAmC;oBACnD,QAAQ,EAAE,kBAAkB;iBAC7B;aACF,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACxB,MAAM,IAAI,oBAAQ,CAAC,4BAA4B,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;oBACpE,IAAI,EAAE,MAAM;oBACZ,QAAQ,EAAE,QAAQ,CAAC,IAAI;iBACxB,CAAC,CAAC;YACL,CAAC;YAED,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,eAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAChD,MAAM,oBAAQ,CAAC,gBAAgB,CAC7B,KAAK,CAAC,QAAQ,CAAC,MAAM,EACrB,KAAK,CAAC,QAAQ,CAAC,IAAI,EACnB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CACvC,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,IAAS;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,oBAAoB;QAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC;QAEhD,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,YAAoB;QACpC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,KAAK,EAAE,YAAY;YACnB,SAAS,EAAE,IAAI,CAAC,QAAQ;SACzB,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,qBAAqB,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAElF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,oBAAQ,CAAC,wBAAwB,EAAE;oBAC3C,IAAI,EAAE,MAAM;oBACZ,UAAU,EAAE,QAAQ,CAAC,MAAM;oBAC3B,QAAQ,EAAE,QAAQ,CAAC,IAAI;iBACxB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,eAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAChD,MAAM,oBAAQ,CAAC,gBAAgB,CAC7B,KAAK,CAAC,QAAQ,CAAC,MAAM,EACrB,KAAK,CAAC,QAAQ,CAAC,IAAI,EACnB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CACvC,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAjND,kCAiNC"}
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ /**
3
+ * Token management for OAuth tokens
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TokenManager = void 0;
7
+ /**
8
+ * Manages OAuth tokens including expiration and refresh
9
+ */
10
+ class TokenManager {
11
+ constructor(token, storage) {
12
+ this.token = null;
13
+ if (token) {
14
+ if (typeof token === 'string') {
15
+ // Initialize with just access token (no expiry known)
16
+ this.token = {
17
+ accessToken: token,
18
+ expiresAt: Date.now() + 3600 * 1000, // Assume 1 hour
19
+ };
20
+ }
21
+ else {
22
+ this.token = token;
23
+ }
24
+ }
25
+ this.storage = storage;
26
+ }
27
+ /**
28
+ * Set token
29
+ */
30
+ setToken(token) {
31
+ if (typeof token === 'string') {
32
+ this.token = {
33
+ accessToken: token,
34
+ expiresAt: Date.now() + 3600 * 1000,
35
+ };
36
+ }
37
+ else {
38
+ this.token = token;
39
+ }
40
+ // Save to storage if available
41
+ if (this.storage && this.token) {
42
+ void this.storage.saveToken(this.token);
43
+ }
44
+ }
45
+ /**
46
+ * Get current token
47
+ */
48
+ getToken() {
49
+ return this.token;
50
+ }
51
+ /**
52
+ * Get access token (refreshes if expired)
53
+ */
54
+ async getAccessToken() {
55
+ if (!this.token) {
56
+ return null;
57
+ }
58
+ // Check if token is expired or about to expire (within 5 minutes)
59
+ if (this.shouldRefresh()) {
60
+ await this.refreshToken();
61
+ }
62
+ return this.token?.accessToken ?? null;
63
+ }
64
+ /**
65
+ * Check if token is expired
66
+ */
67
+ isExpired() {
68
+ if (!this.token) {
69
+ return true;
70
+ }
71
+ return Date.now() >= this.token.expiresAt;
72
+ }
73
+ /**
74
+ * Check if token should be refreshed (expired or expiring soon)
75
+ */
76
+ shouldRefresh() {
77
+ if (!this.token) {
78
+ return false;
79
+ }
80
+ // Refresh if expired or expiring within 5 minutes
81
+ const fiveMinutes = 5 * 60 * 1000;
82
+ return Date.now() >= this.token.expiresAt - fiveMinutes;
83
+ }
84
+ /**
85
+ * Check if refresh token is available
86
+ */
87
+ hasRefreshToken() {
88
+ return !!this.token?.refreshToken;
89
+ }
90
+ /**
91
+ * Get refresh token
92
+ */
93
+ getRefreshToken() {
94
+ return this.token?.refreshToken ?? null;
95
+ }
96
+ /**
97
+ * Refresh the access token
98
+ */
99
+ async refreshToken() {
100
+ if (!this.refreshCallback) {
101
+ throw new Error('Token refresh callback not set');
102
+ }
103
+ if (!this.hasRefreshToken()) {
104
+ throw new Error('No refresh token available');
105
+ }
106
+ // Call the refresh callback to get new token
107
+ const newToken = await this.refreshCallback();
108
+ this.setToken(newToken);
109
+ }
110
+ /**
111
+ * Set callback for token refresh
112
+ */
113
+ setRefreshCallback(callback) {
114
+ this.refreshCallback = callback;
115
+ }
116
+ /**
117
+ * Clear token
118
+ */
119
+ clear() {
120
+ this.token = null;
121
+ if (this.storage) {
122
+ void this.storage.clearToken();
123
+ }
124
+ }
125
+ /**
126
+ * Load token from storage
127
+ */
128
+ async loadFromStorage() {
129
+ if (!this.storage) {
130
+ return;
131
+ }
132
+ const token = await this.storage.loadToken();
133
+ if (token) {
134
+ this.token = token;
135
+ }
136
+ }
137
+ }
138
+ exports.TokenManager = TokenManager;
139
+ //# sourceMappingURL=TokenManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenManager.js","sourceRoot":"","sources":["../../../src/auth/TokenManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,281 @@
1
+ "use strict";
2
+ /**
3
+ * OAuth permission scopes for SW Combine API
4
+ * 130+ permissions organized by category
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.FACILITIES_ALL = exports.FACILITIES_TAGS_WRITE = exports.FACILITIES_TAGS_READ = exports.FACILITIES_MAKEOVER = exports.FACILITIES_ASSIGN = exports.FACILITIES_RENAME = exports.FACILITIES_READ = exports.CITIES_ALL = exports.CITIES_TAGS_WRITE = exports.CITIES_TAGS_READ = exports.CITIES_ASSIGN = exports.CITIES_RENAME = exports.CITIES_READ = exports.STATIONS_ALL = exports.STATIONS_TAGS_WRITE = exports.STATIONS_TAGS_READ = exports.STATIONS_MAKEOVER = exports.STATIONS_ASSIGN = exports.STATIONS_RENAME = exports.STATIONS_READ = exports.VEHICLES_ALL = exports.VEHICLES_TAGS_WRITE = exports.VEHICLES_TAGS_READ = exports.VEHICLES_MAKEOVER = exports.VEHICLES_ASSIGN = exports.VEHICLES_RENAME = exports.VEHICLES_READ = exports.SHIPS_ALL = exports.SHIPS_TAGS_WRITE = exports.SHIPS_TAGS_READ = exports.SHIPS_MAKEOVER = exports.SHIPS_ASSIGN = exports.SHIPS_RENAME = exports.SHIPS_READ = exports.MESSAGES_ALL = exports.MESSAGES_DELETE = exports.MESSAGES_SEND = exports.MESSAGES_READ = exports.CHARACTER_ALL = exports.CHARACTER_CREDITS_WRITE = exports.CHARACTER_CREDITS_READ = exports.CHARACTER_CREDITS = exports.CHARACTER_EVENTS = exports.CHARACTER_LOCATION = exports.CHARACTER_FORCE = exports.CHARACTER_PRIVILEGES = exports.CHARACTER_SKILLS = exports.CHARACTER_STATS = exports.CHARACTER_READ = exports.CHARACTER_AUTH = void 0;
8
+ exports.FACTION_SHIPS_TAGS_READ = exports.FACTION_SHIPS_MAKEOVER = exports.FACTION_SHIPS_ASSIGN = exports.FACTION_SHIPS_RENAME = exports.FACTION_SHIPS_READ = exports.FACTION_ALL = exports.FACTION_DATACARDS_WRITE = exports.FACTION_DATACARDS_READ = exports.FACTION_BUDGETS_WRITE = exports.FACTION_BUDGETS_READ = exports.FACTION_CREDITS_WRITE = exports.FACTION_CREDITS_READ = exports.FACTION_STOCKS = exports.FACTION_MEMBERS = exports.FACTION_READ = exports.CREATURES_ALL = exports.CREATURES_TAGS_WRITE = exports.CREATURES_TAGS_READ = exports.CREATURES_ASSIGN = exports.CREATURES_RENAME = exports.CREATURES_READ = exports.MATERIALS_ALL = exports.MATERIALS_TAGS_WRITE = exports.MATERIALS_TAGS_READ = exports.MATERIALS_ASSIGN = exports.MATERIALS_READ = exports.DROIDS_ALL = exports.DROIDS_TAGS_WRITE = exports.DROIDS_TAGS_READ = exports.DROIDS_ASSIGN = exports.DROIDS_RENAME = exports.DROIDS_READ = exports.NPCS_ALL = exports.NPCS_TAGS_WRITE = exports.NPCS_TAGS_READ = exports.NPCS_ASSIGN = exports.NPCS_RENAME = exports.NPCS_READ = exports.ITEMS_ALL = exports.ITEMS_TAGS_WRITE = exports.ITEMS_TAGS_READ = exports.ITEMS_ASSIGN = exports.ITEMS_RENAME = exports.ITEMS_READ = exports.PLANETS_ALL = exports.PLANETS_TAGS_WRITE = exports.PLANETS_TAGS_READ = exports.PLANETS_ASSIGN = exports.PLANETS_RENAME = exports.PLANETS_READ = void 0;
9
+ exports.FACTION_DROIDS_ASSIGN = exports.FACTION_DROIDS_RENAME = exports.FACTION_DROIDS_READ = exports.FACTION_NPCS_ALL = exports.FACTION_NPCS_TAGS_WRITE = exports.FACTION_NPCS_TAGS_READ = exports.FACTION_NPCS_ASSIGN = exports.FACTION_NPCS_RENAME = exports.FACTION_NPCS_READ = exports.FACTION_ITEMS_ALL = exports.FACTION_ITEMS_TAGS_WRITE = exports.FACTION_ITEMS_TAGS_READ = exports.FACTION_ITEMS_ASSIGN = exports.FACTION_ITEMS_RENAME = exports.FACTION_ITEMS_READ = exports.FACTION_PLANETS_ALL = exports.FACTION_PLANETS_TAGS_WRITE = exports.FACTION_PLANETS_TAGS_READ = exports.FACTION_PLANETS_ASSIGN = exports.FACTION_PLANETS_RENAME = exports.FACTION_PLANETS_READ = exports.FACTION_FACILITIES_ALL = exports.FACTION_FACILITIES_TAGS_WRITE = exports.FACTION_FACILITIES_TAGS_READ = exports.FACTION_FACILITIES_MAKEOVER = exports.FACTION_FACILITIES_ASSIGN = exports.FACTION_FACILITIES_RENAME = exports.FACTION_FACILITIES_READ = exports.FACTION_CITIES_ALL = exports.FACTION_CITIES_TAGS_WRITE = exports.FACTION_CITIES_TAGS_READ = exports.FACTION_CITIES_ASSIGN = exports.FACTION_CITIES_RENAME = exports.FACTION_CITIES_READ = exports.FACTION_STATIONS_ALL = exports.FACTION_STATIONS_TAGS_WRITE = exports.FACTION_STATIONS_TAGS_READ = exports.FACTION_STATIONS_MAKEOVER = exports.FACTION_STATIONS_ASSIGN = exports.FACTION_STATIONS_RENAME = exports.FACTION_STATIONS_READ = exports.FACTION_VEHICLES_ALL = exports.FACTION_VEHICLES_TAGS_WRITE = exports.FACTION_VEHICLES_TAGS_READ = exports.FACTION_VEHICLES_MAKEOVER = exports.FACTION_VEHICLES_ASSIGN = exports.FACTION_VEHICLES_RENAME = exports.FACTION_VEHICLES_READ = exports.FACTION_SHIPS_ALL = exports.FACTION_SHIPS_TAGS_WRITE = void 0;
10
+ exports.ALL_PERMISSIONS = exports.FACTION_CREATURES_ALL = exports.FACTION_CREATURES_TAGS_WRITE = exports.FACTION_CREATURES_TAGS_READ = exports.FACTION_CREATURES_ASSIGN = exports.FACTION_CREATURES_RENAME = exports.FACTION_CREATURES_READ = exports.FACTION_MATERIALS_ALL = exports.FACTION_MATERIALS_TAGS_WRITE = exports.FACTION_MATERIALS_TAGS_READ = exports.FACTION_MATERIALS_ASSIGN = exports.FACTION_MATERIALS_READ = exports.FACTION_DROIDS_ALL = exports.FACTION_DROIDS_TAGS_WRITE = exports.FACTION_DROIDS_TAGS_READ = void 0;
11
+ // ============================================================================
12
+ // Character Permissions
13
+ // ============================================================================
14
+ exports.CHARACTER_AUTH = 'character_auth';
15
+ exports.CHARACTER_READ = 'character_read';
16
+ exports.CHARACTER_STATS = 'character_stats';
17
+ exports.CHARACTER_SKILLS = 'character_skills';
18
+ exports.CHARACTER_PRIVILEGES = 'character_privileges';
19
+ exports.CHARACTER_FORCE = 'character_force';
20
+ exports.CHARACTER_LOCATION = 'character_location';
21
+ exports.CHARACTER_EVENTS = 'character_events';
22
+ exports.CHARACTER_CREDITS = 'character_credits';
23
+ exports.CHARACTER_CREDITS_READ = 'character_credits_read';
24
+ exports.CHARACTER_CREDITS_WRITE = 'character_credits_write';
25
+ exports.CHARACTER_ALL = 'character_all';
26
+ // ============================================================================
27
+ // Message Permissions
28
+ // ============================================================================
29
+ exports.MESSAGES_READ = 'messages_read';
30
+ exports.MESSAGES_SEND = 'messages_send';
31
+ exports.MESSAGES_DELETE = 'messages_delete';
32
+ exports.MESSAGES_ALL = 'messages_all';
33
+ // ============================================================================
34
+ // Personal Inventory Permissions - Ships
35
+ // ============================================================================
36
+ exports.SHIPS_READ = 'ships_read';
37
+ exports.SHIPS_RENAME = 'ships_rename';
38
+ exports.SHIPS_ASSIGN = 'ships_assign';
39
+ exports.SHIPS_MAKEOVER = 'ships_makeover';
40
+ exports.SHIPS_TAGS_READ = 'ships_tags_read';
41
+ exports.SHIPS_TAGS_WRITE = 'ships_tags_write';
42
+ exports.SHIPS_ALL = 'ships_all';
43
+ // ============================================================================
44
+ // Personal Inventory Permissions - Vehicles
45
+ // ============================================================================
46
+ exports.VEHICLES_READ = 'vehicles_read';
47
+ exports.VEHICLES_RENAME = 'vehicles_rename';
48
+ exports.VEHICLES_ASSIGN = 'vehicles_assign';
49
+ exports.VEHICLES_MAKEOVER = 'vehicles_makeover';
50
+ exports.VEHICLES_TAGS_READ = 'vehicles_tags_read';
51
+ exports.VEHICLES_TAGS_WRITE = 'vehicles_tags_write';
52
+ exports.VEHICLES_ALL = 'vehicles_all';
53
+ // ============================================================================
54
+ // Personal Inventory Permissions - Stations
55
+ // ============================================================================
56
+ exports.STATIONS_READ = 'stations_read';
57
+ exports.STATIONS_RENAME = 'stations_rename';
58
+ exports.STATIONS_ASSIGN = 'stations_assign';
59
+ exports.STATIONS_MAKEOVER = 'stations_makeover';
60
+ exports.STATIONS_TAGS_READ = 'stations_tags_read';
61
+ exports.STATIONS_TAGS_WRITE = 'stations_tags_write';
62
+ exports.STATIONS_ALL = 'stations_all';
63
+ // ============================================================================
64
+ // Personal Inventory Permissions - Cities
65
+ // ============================================================================
66
+ exports.CITIES_READ = 'cities_read';
67
+ exports.CITIES_RENAME = 'cities_rename';
68
+ exports.CITIES_ASSIGN = 'cities_assign';
69
+ exports.CITIES_TAGS_READ = 'cities_tags_read';
70
+ exports.CITIES_TAGS_WRITE = 'cities_tags_write';
71
+ exports.CITIES_ALL = 'cities_all';
72
+ // ============================================================================
73
+ // Personal Inventory Permissions - Facilities
74
+ // ============================================================================
75
+ exports.FACILITIES_READ = 'facilities_read';
76
+ exports.FACILITIES_RENAME = 'facilities_rename';
77
+ exports.FACILITIES_ASSIGN = 'facilities_assign';
78
+ exports.FACILITIES_MAKEOVER = 'facilities_makeover';
79
+ exports.FACILITIES_TAGS_READ = 'facilities_tags_read';
80
+ exports.FACILITIES_TAGS_WRITE = 'facilities_tags_write';
81
+ exports.FACILITIES_ALL = 'facilities_all';
82
+ // ============================================================================
83
+ // Personal Inventory Permissions - Planets
84
+ // ============================================================================
85
+ exports.PLANETS_READ = 'planets_read';
86
+ exports.PLANETS_RENAME = 'planets_rename';
87
+ exports.PLANETS_ASSIGN = 'planets_assign';
88
+ exports.PLANETS_TAGS_READ = 'planets_tags_read';
89
+ exports.PLANETS_TAGS_WRITE = 'planets_tags_write';
90
+ exports.PLANETS_ALL = 'planets_all';
91
+ // ============================================================================
92
+ // Personal Inventory Permissions - Items
93
+ // ============================================================================
94
+ exports.ITEMS_READ = 'items_read';
95
+ exports.ITEMS_RENAME = 'items_rename';
96
+ exports.ITEMS_ASSIGN = 'items_assign';
97
+ exports.ITEMS_TAGS_READ = 'items_tags_read';
98
+ exports.ITEMS_TAGS_WRITE = 'items_tags_write';
99
+ exports.ITEMS_ALL = 'items_all';
100
+ // ============================================================================
101
+ // Personal Inventory Permissions - NPCs
102
+ // ============================================================================
103
+ exports.NPCS_READ = 'npcs_read';
104
+ exports.NPCS_RENAME = 'npcs_rename';
105
+ exports.NPCS_ASSIGN = 'npcs_assign';
106
+ exports.NPCS_TAGS_READ = 'npcs_tags_read';
107
+ exports.NPCS_TAGS_WRITE = 'npcs_tags_write';
108
+ exports.NPCS_ALL = 'npcs_all';
109
+ // ============================================================================
110
+ // Personal Inventory Permissions - Droids
111
+ // ============================================================================
112
+ exports.DROIDS_READ = 'droids_read';
113
+ exports.DROIDS_RENAME = 'droids_rename';
114
+ exports.DROIDS_ASSIGN = 'droids_assign';
115
+ exports.DROIDS_TAGS_READ = 'droids_tags_read';
116
+ exports.DROIDS_TAGS_WRITE = 'droids_tags_write';
117
+ exports.DROIDS_ALL = 'droids_all';
118
+ // ============================================================================
119
+ // Personal Inventory Permissions - Materials
120
+ // ============================================================================
121
+ exports.MATERIALS_READ = 'materials_read';
122
+ exports.MATERIALS_ASSIGN = 'materials_assign';
123
+ exports.MATERIALS_TAGS_READ = 'materials_tags_read';
124
+ exports.MATERIALS_TAGS_WRITE = 'materials_tags_write';
125
+ exports.MATERIALS_ALL = 'materials_all';
126
+ // ============================================================================
127
+ // Personal Inventory Permissions - Creatures
128
+ // ============================================================================
129
+ exports.CREATURES_READ = 'creatures_read';
130
+ exports.CREATURES_RENAME = 'creatures_rename';
131
+ exports.CREATURES_ASSIGN = 'creatures_assign';
132
+ exports.CREATURES_TAGS_READ = 'creatures_tags_read';
133
+ exports.CREATURES_TAGS_WRITE = 'creatures_tags_write';
134
+ exports.CREATURES_ALL = 'creatures_all';
135
+ // ============================================================================
136
+ // Faction Permissions
137
+ // ============================================================================
138
+ exports.FACTION_READ = 'faction_read';
139
+ exports.FACTION_MEMBERS = 'faction_members';
140
+ exports.FACTION_STOCKS = 'faction_stocks';
141
+ exports.FACTION_CREDITS_READ = 'faction_credits_read';
142
+ exports.FACTION_CREDITS_WRITE = 'faction_credits_write';
143
+ exports.FACTION_BUDGETS_READ = 'faction_budgets_read';
144
+ exports.FACTION_BUDGETS_WRITE = 'faction_budgets_write';
145
+ exports.FACTION_DATACARDS_READ = 'faction_datacards_read';
146
+ exports.FACTION_DATACARDS_WRITE = 'faction_datacards_write';
147
+ exports.FACTION_ALL = 'faction_all';
148
+ // Faction Inventory - Ships
149
+ exports.FACTION_SHIPS_READ = 'faction_ships_read';
150
+ exports.FACTION_SHIPS_RENAME = 'faction_ships_rename';
151
+ exports.FACTION_SHIPS_ASSIGN = 'faction_ships_assign';
152
+ exports.FACTION_SHIPS_MAKEOVER = 'faction_ships_makeover';
153
+ exports.FACTION_SHIPS_TAGS_READ = 'faction_ships_tags_read';
154
+ exports.FACTION_SHIPS_TAGS_WRITE = 'faction_ships_tags_write';
155
+ exports.FACTION_SHIPS_ALL = 'faction_ships_all';
156
+ // Faction Inventory - Vehicles
157
+ exports.FACTION_VEHICLES_READ = 'faction_vehicles_read';
158
+ exports.FACTION_VEHICLES_RENAME = 'faction_vehicles_rename';
159
+ exports.FACTION_VEHICLES_ASSIGN = 'faction_vehicles_assign';
160
+ exports.FACTION_VEHICLES_MAKEOVER = 'faction_vehicles_makeover';
161
+ exports.FACTION_VEHICLES_TAGS_READ = 'faction_vehicles_tags_read';
162
+ exports.FACTION_VEHICLES_TAGS_WRITE = 'faction_vehicles_tags_write';
163
+ exports.FACTION_VEHICLES_ALL = 'faction_vehicles_all';
164
+ // Faction Inventory - Stations
165
+ exports.FACTION_STATIONS_READ = 'faction_stations_read';
166
+ exports.FACTION_STATIONS_RENAME = 'faction_stations_rename';
167
+ exports.FACTION_STATIONS_ASSIGN = 'faction_stations_assign';
168
+ exports.FACTION_STATIONS_MAKEOVER = 'faction_stations_makeover';
169
+ exports.FACTION_STATIONS_TAGS_READ = 'faction_stations_tags_read';
170
+ exports.FACTION_STATIONS_TAGS_WRITE = 'faction_stations_tags_write';
171
+ exports.FACTION_STATIONS_ALL = 'faction_stations_all';
172
+ // Faction Inventory - Cities
173
+ exports.FACTION_CITIES_READ = 'faction_cities_read';
174
+ exports.FACTION_CITIES_RENAME = 'faction_cities_rename';
175
+ exports.FACTION_CITIES_ASSIGN = 'faction_cities_assign';
176
+ exports.FACTION_CITIES_TAGS_READ = 'faction_cities_tags_read';
177
+ exports.FACTION_CITIES_TAGS_WRITE = 'faction_cities_tags_write';
178
+ exports.FACTION_CITIES_ALL = 'faction_cities_all';
179
+ // Faction Inventory - Facilities
180
+ exports.FACTION_FACILITIES_READ = 'faction_facilities_read';
181
+ exports.FACTION_FACILITIES_RENAME = 'faction_facilities_rename';
182
+ exports.FACTION_FACILITIES_ASSIGN = 'faction_facilities_assign';
183
+ exports.FACTION_FACILITIES_MAKEOVER = 'faction_facilities_makeover';
184
+ exports.FACTION_FACILITIES_TAGS_READ = 'faction_facilities_tags_read';
185
+ exports.FACTION_FACILITIES_TAGS_WRITE = 'faction_facilities_tags_write';
186
+ exports.FACTION_FACILITIES_ALL = 'faction_facilities_all';
187
+ // Faction Inventory - Planets
188
+ exports.FACTION_PLANETS_READ = 'faction_planets_read';
189
+ exports.FACTION_PLANETS_RENAME = 'faction_planets_rename';
190
+ exports.FACTION_PLANETS_ASSIGN = 'faction_planets_assign';
191
+ exports.FACTION_PLANETS_TAGS_READ = 'faction_planets_tags_read';
192
+ exports.FACTION_PLANETS_TAGS_WRITE = 'faction_planets_tags_write';
193
+ exports.FACTION_PLANETS_ALL = 'faction_planets_all';
194
+ // Faction Inventory - Items
195
+ exports.FACTION_ITEMS_READ = 'faction_items_read';
196
+ exports.FACTION_ITEMS_RENAME = 'faction_items_rename';
197
+ exports.FACTION_ITEMS_ASSIGN = 'faction_items_assign';
198
+ exports.FACTION_ITEMS_TAGS_READ = 'faction_items_tags_read';
199
+ exports.FACTION_ITEMS_TAGS_WRITE = 'faction_items_tags_write';
200
+ exports.FACTION_ITEMS_ALL = 'faction_items_all';
201
+ // Faction Inventory - NPCs
202
+ exports.FACTION_NPCS_READ = 'faction_npcs_read';
203
+ exports.FACTION_NPCS_RENAME = 'faction_npcs_rename';
204
+ exports.FACTION_NPCS_ASSIGN = 'faction_npcs_assign';
205
+ exports.FACTION_NPCS_TAGS_READ = 'faction_npcs_tags_read';
206
+ exports.FACTION_NPCS_TAGS_WRITE = 'faction_npcs_tags_write';
207
+ exports.FACTION_NPCS_ALL = 'faction_npcs_all';
208
+ // Faction Inventory - Droids
209
+ exports.FACTION_DROIDS_READ = 'faction_droids_read';
210
+ exports.FACTION_DROIDS_RENAME = 'faction_droids_rename';
211
+ exports.FACTION_DROIDS_ASSIGN = 'faction_droids_assign';
212
+ exports.FACTION_DROIDS_TAGS_READ = 'faction_droids_tags_read';
213
+ exports.FACTION_DROIDS_TAGS_WRITE = 'faction_droids_tags_write';
214
+ exports.FACTION_DROIDS_ALL = 'faction_droids_all';
215
+ // Faction Inventory - Materials
216
+ exports.FACTION_MATERIALS_READ = 'faction_materials_read';
217
+ exports.FACTION_MATERIALS_ASSIGN = 'faction_materials_assign';
218
+ exports.FACTION_MATERIALS_TAGS_READ = 'faction_materials_tags_read';
219
+ exports.FACTION_MATERIALS_TAGS_WRITE = 'faction_materials_tags_write';
220
+ exports.FACTION_MATERIALS_ALL = 'faction_materials_all';
221
+ // Faction Inventory - Creatures
222
+ exports.FACTION_CREATURES_READ = 'faction_creatures_read';
223
+ exports.FACTION_CREATURES_RENAME = 'faction_creatures_rename';
224
+ exports.FACTION_CREATURES_ASSIGN = 'faction_creatures_assign';
225
+ exports.FACTION_CREATURES_TAGS_READ = 'faction_creatures_tags_read';
226
+ exports.FACTION_CREATURES_TAGS_WRITE = 'faction_creatures_tags_write';
227
+ exports.FACTION_CREATURES_ALL = 'faction_creatures_all';
228
+ // ============================================================================
229
+ // Permission Collections
230
+ // ============================================================================
231
+ /**
232
+ * All available OAuth permission scopes
233
+ */
234
+ exports.ALL_PERMISSIONS = [
235
+ // Character
236
+ exports.CHARACTER_AUTH, exports.CHARACTER_READ, exports.CHARACTER_STATS, exports.CHARACTER_SKILLS, exports.CHARACTER_PRIVILEGES,
237
+ exports.CHARACTER_FORCE, exports.CHARACTER_LOCATION, exports.CHARACTER_EVENTS, exports.CHARACTER_CREDITS,
238
+ exports.CHARACTER_CREDITS_READ, exports.CHARACTER_CREDITS_WRITE, exports.CHARACTER_ALL,
239
+ // Messages
240
+ exports.MESSAGES_READ, exports.MESSAGES_SEND, exports.MESSAGES_DELETE, exports.MESSAGES_ALL,
241
+ // Personal Ships
242
+ exports.SHIPS_READ, exports.SHIPS_RENAME, exports.SHIPS_ASSIGN, exports.SHIPS_MAKEOVER,
243
+ exports.SHIPS_TAGS_READ, exports.SHIPS_TAGS_WRITE, exports.SHIPS_ALL,
244
+ // Personal Vehicles
245
+ exports.VEHICLES_READ, exports.VEHICLES_RENAME, exports.VEHICLES_ASSIGN, exports.VEHICLES_MAKEOVER,
246
+ exports.VEHICLES_TAGS_READ, exports.VEHICLES_TAGS_WRITE, exports.VEHICLES_ALL,
247
+ // Personal Stations
248
+ exports.STATIONS_READ, exports.STATIONS_RENAME, exports.STATIONS_ASSIGN, exports.STATIONS_MAKEOVER,
249
+ exports.STATIONS_TAGS_READ, exports.STATIONS_TAGS_WRITE, exports.STATIONS_ALL,
250
+ // Personal Cities
251
+ exports.CITIES_READ, exports.CITIES_RENAME, exports.CITIES_ASSIGN,
252
+ exports.CITIES_TAGS_READ, exports.CITIES_TAGS_WRITE, exports.CITIES_ALL,
253
+ // Personal Facilities
254
+ exports.FACILITIES_READ, exports.FACILITIES_RENAME, exports.FACILITIES_ASSIGN, exports.FACILITIES_MAKEOVER,
255
+ exports.FACILITIES_TAGS_READ, exports.FACILITIES_TAGS_WRITE, exports.FACILITIES_ALL,
256
+ // Personal Planets
257
+ exports.PLANETS_READ, exports.PLANETS_RENAME, exports.PLANETS_ASSIGN,
258
+ exports.PLANETS_TAGS_READ, exports.PLANETS_TAGS_WRITE, exports.PLANETS_ALL,
259
+ // Personal Items
260
+ exports.ITEMS_READ, exports.ITEMS_RENAME, exports.ITEMS_ASSIGN,
261
+ exports.ITEMS_TAGS_READ, exports.ITEMS_TAGS_WRITE, exports.ITEMS_ALL,
262
+ // Personal NPCs
263
+ exports.NPCS_READ, exports.NPCS_RENAME, exports.NPCS_ASSIGN,
264
+ exports.NPCS_TAGS_READ, exports.NPCS_TAGS_WRITE, exports.NPCS_ALL,
265
+ // Personal Droids
266
+ exports.DROIDS_READ, exports.DROIDS_RENAME, exports.DROIDS_ASSIGN,
267
+ exports.DROIDS_TAGS_READ, exports.DROIDS_TAGS_WRITE, exports.DROIDS_ALL,
268
+ // Personal Materials
269
+ exports.MATERIALS_READ, exports.MATERIALS_ASSIGN,
270
+ exports.MATERIALS_TAGS_READ, exports.MATERIALS_TAGS_WRITE, exports.MATERIALS_ALL,
271
+ // Personal Creatures
272
+ exports.CREATURES_READ, exports.CREATURES_RENAME, exports.CREATURES_ASSIGN,
273
+ exports.CREATURES_TAGS_READ, exports.CREATURES_TAGS_WRITE, exports.CREATURES_ALL,
274
+ // Faction
275
+ exports.FACTION_READ, exports.FACTION_MEMBERS, exports.FACTION_STOCKS,
276
+ exports.FACTION_CREDITS_READ, exports.FACTION_CREDITS_WRITE,
277
+ exports.FACTION_BUDGETS_READ, exports.FACTION_BUDGETS_WRITE,
278
+ exports.FACTION_DATACARDS_READ, exports.FACTION_DATACARDS_WRITE, exports.FACTION_ALL,
279
+ // Faction inventory... (continuing would be very long)
280
+ ];
281
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/auth/permissions.ts"],"names":[],"mappings":"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"}