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.
- package/LICENSE +21 -0
- package/README.md +404 -0
- package/dist/cjs/SWCombine.js +120 -0
- package/dist/cjs/SWCombine.js.map +1 -0
- package/dist/cjs/auth/OAuthClient.js +195 -0
- package/dist/cjs/auth/OAuthClient.js.map +1 -0
- package/dist/cjs/auth/TokenManager.js +139 -0
- package/dist/cjs/auth/TokenManager.js.map +1 -0
- package/dist/cjs/auth/permissions.js +281 -0
- package/dist/cjs/auth/permissions.js.map +1 -0
- package/dist/cjs/auth/scopes.js +285 -0
- package/dist/cjs/auth/scopes.js.map +1 -0
- package/dist/cjs/http/HttpClient.js +216 -0
- package/dist/cjs/http/HttpClient.js.map +1 -0
- package/dist/cjs/http/errors.js +156 -0
- package/dist/cjs/http/errors.js.map +1 -0
- package/dist/cjs/index.js +48 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/resources/ApiResource.js +44 -0
- package/dist/cjs/resources/ApiResource.js.map +1 -0
- package/dist/cjs/resources/BaseResource.js +33 -0
- package/dist/cjs/resources/BaseResource.js.map +1 -0
- package/dist/cjs/resources/CharacterResource.js +178 -0
- package/dist/cjs/resources/CharacterResource.js.map +1 -0
- package/dist/cjs/resources/DatacardResource.js +42 -0
- package/dist/cjs/resources/DatacardResource.js.map +1 -0
- package/dist/cjs/resources/EventsResource.js +42 -0
- package/dist/cjs/resources/EventsResource.js.map +1 -0
- package/dist/cjs/resources/FactionResource.js +162 -0
- package/dist/cjs/resources/FactionResource.js.map +1 -0
- package/dist/cjs/resources/GalaxyResource.js +184 -0
- package/dist/cjs/resources/GalaxyResource.js.map +1 -0
- package/dist/cjs/resources/InventoryResource.js +95 -0
- package/dist/cjs/resources/InventoryResource.js.map +1 -0
- package/dist/cjs/resources/LocationResource.js +20 -0
- package/dist/cjs/resources/LocationResource.js.map +1 -0
- package/dist/cjs/resources/MarketResource.js +44 -0
- package/dist/cjs/resources/MarketResource.js.map +1 -0
- package/dist/cjs/resources/NewsResource.js +109 -0
- package/dist/cjs/resources/NewsResource.js.map +1 -0
- package/dist/cjs/resources/TypesResource.js +75 -0
- package/dist/cjs/resources/TypesResource.js.map +1 -0
- package/dist/cjs/types/index.js +25 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/esm/SWCombine.js +116 -0
- package/dist/esm/SWCombine.js.map +1 -0
- package/dist/esm/auth/OAuthClient.js +188 -0
- package/dist/esm/auth/OAuthClient.js.map +1 -0
- package/dist/esm/auth/TokenManager.js +135 -0
- package/dist/esm/auth/TokenManager.js.map +1 -0
- package/dist/esm/auth/permissions.js +275 -0
- package/dist/esm/auth/permissions.js.map +1 -0
- package/dist/esm/auth/scopes.js +274 -0
- package/dist/esm/auth/scopes.js.map +1 -0
- package/dist/esm/http/HttpClient.js +209 -0
- package/dist/esm/http/HttpClient.js.map +1 -0
- package/dist/esm/http/errors.js +152 -0
- package/dist/esm/http/errors.js.map +1 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/resources/ApiResource.js +40 -0
- package/dist/esm/resources/ApiResource.js.map +1 -0
- package/dist/esm/resources/BaseResource.js +29 -0
- package/dist/esm/resources/BaseResource.js.map +1 -0
- package/dist/esm/resources/CharacterResource.js +168 -0
- package/dist/esm/resources/CharacterResource.js.map +1 -0
- package/dist/esm/resources/DatacardResource.js +38 -0
- package/dist/esm/resources/DatacardResource.js.map +1 -0
- package/dist/esm/resources/EventsResource.js +38 -0
- package/dist/esm/resources/EventsResource.js.map +1 -0
- package/dist/esm/resources/FactionResource.js +153 -0
- package/dist/esm/resources/FactionResource.js.map +1 -0
- package/dist/esm/resources/GalaxyResource.js +175 -0
- package/dist/esm/resources/GalaxyResource.js.map +1 -0
- package/dist/esm/resources/InventoryResource.js +90 -0
- package/dist/esm/resources/InventoryResource.js.map +1 -0
- package/dist/esm/resources/LocationResource.js +16 -0
- package/dist/esm/resources/LocationResource.js.map +1 -0
- package/dist/esm/resources/MarketResource.js +39 -0
- package/dist/esm/resources/MarketResource.js.map +1 -0
- package/dist/esm/resources/NewsResource.js +103 -0
- package/dist/esm/resources/NewsResource.js.map +1 -0
- package/dist/esm/resources/TypesResource.js +69 -0
- package/dist/esm/resources/TypesResource.js.map +1 -0
- package/dist/esm/types/index.js +22 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/types/SWCombine.d.ts +66 -0
- package/dist/types/SWCombine.d.ts.map +1 -0
- package/dist/types/auth/OAuthClient.d.ts +48 -0
- package/dist/types/auth/OAuthClient.d.ts.map +1 -0
- package/dist/types/auth/TokenManager.d.ts +66 -0
- package/dist/types/auth/TokenManager.d.ts.map +1 -0
- package/dist/types/auth/permissions.d.ts +173 -0
- package/dist/types/auth/permissions.d.ts.map +1 -0
- package/dist/types/auth/scopes.d.ts +309 -0
- package/dist/types/auth/scopes.d.ts.map +1 -0
- package/dist/types/http/HttpClient.d.ts +64 -0
- package/dist/types/http/HttpClient.d.ts.map +1 -0
- package/dist/types/http/errors.d.ts +54 -0
- package/dist/types/http/errors.d.ts.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/resources/ApiResource.d.ts +56 -0
- package/dist/types/resources/ApiResource.d.ts.map +1 -0
- package/dist/types/resources/BaseResource.d.ts +16 -0
- package/dist/types/resources/BaseResource.d.ts.map +1 -0
- package/dist/types/resources/CharacterResource.d.ts +151 -0
- package/dist/types/resources/CharacterResource.d.ts.map +1 -0
- package/dist/types/resources/DatacardResource.d.ts +42 -0
- package/dist/types/resources/DatacardResource.d.ts.map +1 -0
- package/dist/types/resources/EventsResource.d.ts +34 -0
- package/dist/types/resources/EventsResource.d.ts.map +1 -0
- package/dist/types/resources/FactionResource.d.ts +166 -0
- package/dist/types/resources/FactionResource.d.ts.map +1 -0
- package/dist/types/resources/GalaxyResource.d.ts +134 -0
- package/dist/types/resources/GalaxyResource.d.ts.map +1 -0
- package/dist/types/resources/InventoryResource.d.ts +77 -0
- package/dist/types/resources/InventoryResource.d.ts.map +1 -0
- package/dist/types/resources/LocationResource.d.ts +18 -0
- package/dist/types/resources/LocationResource.d.ts.map +1 -0
- package/dist/types/resources/MarketResource.d.ts +34 -0
- package/dist/types/resources/MarketResource.d.ts.map +1 -0
- package/dist/types/resources/NewsResource.d.ts +54 -0
- package/dist/types/resources/NewsResource.d.ts.map +1 -0
- package/dist/types/resources/TypesResource.d.ts +72 -0
- package/dist/types/resources/TypesResource.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +296 -0
- package/dist/types/types/index.d.ts.map +1 -0
- 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":"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"}
|
|
@@ -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":";AAAA;;GAEG;;;AAaH;;GAEG;AACH,MAAa,YAAY;IAKvB,YAAY,KAA2B,EAAE,OAAsB;QAJvD,UAAK,GAAsB,IAAI,CAAC;QAKtC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,sDAAsD;gBACtD,IAAI,CAAC,KAAK,GAAG;oBACX,WAAW,EAAE,KAAK;oBAClB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,gBAAgB;iBACtD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACrB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,KAA0B;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG;gBACX,WAAW,EAAE,KAAK;gBAClB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;aACpC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;QAED,+BAA+B;QAC/B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,kEAAkE;QAClE,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5B,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,IAAI,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,kDAAkD;QAClD,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAClC,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,KAAK,EAAE,YAAY,IAAI,IAAI,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,QAAmC;QACpD,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAC7C,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;IACH,CAAC;CACF;AAjJD,oCAiJC"}
|
|
@@ -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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"}
|