lgsso-sdk 1.0.9 → 1.0.91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lgsso-sdk.esm.js +436 -0
- package/dist/lgsso-sdk.esm.js.map +1 -0
- package/dist/lgsso-sdk.js +0 -1
- package/dist/lgsso-sdk.js.map +1 -0
- package/dist/lgsso-sdk.min.js.map +1 -0
- package/package.json +6 -2
- package/src/utils.js +0 -1
- package/rollup.config.js +0 -61
- package/yarn-error.log +0 -418
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: Robin LEI
|
|
3
|
+
* @Date: 2025-08-21 15:09:15
|
|
4
|
+
* @LastEditTime: 2025-08-21 15:22:11
|
|
5
|
+
* @FilePath: \lg-wms-admind:\业务代码\中联钢信\五服一管\lg-ssosdk\src\utils.js
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* 检查是否在浏览器环境
|
|
9
|
+
*/
|
|
10
|
+
function isBrowser() {
|
|
11
|
+
return typeof window !== 'undefined' && typeof document !== 'undefined';
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* 解析URL中的查询参数
|
|
16
|
+
* @param {string} name - 参数名
|
|
17
|
+
* @param {string} [url] - 可选URL,默认使用当前页面URL
|
|
18
|
+
* @returns {string|null} 参数值
|
|
19
|
+
*/
|
|
20
|
+
function getQueryParam(name, url) {
|
|
21
|
+
if (!isBrowser()) return null;
|
|
22
|
+
|
|
23
|
+
const targetUrl = url || window.location.href;
|
|
24
|
+
const urlObj = new URL(targetUrl);
|
|
25
|
+
|
|
26
|
+
// 先检查常规查询参数
|
|
27
|
+
let param = urlObj.searchParams.get(name);
|
|
28
|
+
if (param !== null) return param;
|
|
29
|
+
|
|
30
|
+
// 检查hash中的查询参数
|
|
31
|
+
if (urlObj.hash.includes('?')) {
|
|
32
|
+
const hashQuery = urlObj.hash.split('?')[1];
|
|
33
|
+
const hashParams = new URLSearchParams(hashQuery);
|
|
34
|
+
return hashParams.get(name);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* 移除URL中的指定参数
|
|
42
|
+
* @param {string} name - 参数名
|
|
43
|
+
*/
|
|
44
|
+
function removeQueryParam(name) {
|
|
45
|
+
if (!isBrowser()) return;
|
|
46
|
+
|
|
47
|
+
const url = new URL(window.location.href);
|
|
48
|
+
let params, newUrl;
|
|
49
|
+
|
|
50
|
+
// 处理hash模式(参数在#之后)
|
|
51
|
+
if (url.hash.includes('?')) {
|
|
52
|
+
const [hashPath, hashQuery] = url.hash.split('?');
|
|
53
|
+
params = new URLSearchParams(hashQuery);
|
|
54
|
+
|
|
55
|
+
if (params.has(name)) {
|
|
56
|
+
params.delete(name);
|
|
57
|
+
const newHash = params.toString() ? `${hashPath}?${params.toString()}` : hashPath;
|
|
58
|
+
url.hash = newHash;
|
|
59
|
+
newUrl = url.toString();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// 处理history模式(参数在?之后)
|
|
63
|
+
else {
|
|
64
|
+
params = new URLSearchParams(url.search);
|
|
65
|
+
if (params.has(name)) {
|
|
66
|
+
params.delete(name);
|
|
67
|
+
url.search = params.toString();
|
|
68
|
+
newUrl = url.toString();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// 更新URL
|
|
73
|
+
if (newUrl && newUrl !== window.location.href) {
|
|
74
|
+
window.location.replace(newUrl);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* 获取当前完整URL(包含所有参数)
|
|
80
|
+
* @returns {string} 当前URL
|
|
81
|
+
*/
|
|
82
|
+
function getCurrentUrlWithParams() {
|
|
83
|
+
if (!isBrowser()) return '';
|
|
84
|
+
return window.location.href;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* 合并配置对象
|
|
89
|
+
* @param {Object} defaults - 默认配置
|
|
90
|
+
* @param {Object} options - 用户配置
|
|
91
|
+
* @returns {Object} 合并后的配置
|
|
92
|
+
*/
|
|
93
|
+
function mergeConfigs(defaults, options) {
|
|
94
|
+
if (!options) return { ...defaults };
|
|
95
|
+
const merged = { ...defaults };
|
|
96
|
+
for (const key in options) {
|
|
97
|
+
if (options.hasOwnProperty(key)) {
|
|
98
|
+
merged[key] = options[key];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return merged;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* 通用HTTP请求工具
|
|
106
|
+
* @param {string} url - 请求URL
|
|
107
|
+
* @param {Object} options - 请求选项
|
|
108
|
+
* @param {string} [options.method='GET'] - 请求方法
|
|
109
|
+
* @param {Object} [options.data] - 请求数据
|
|
110
|
+
* @param {Object} [options.headers] - 请求头
|
|
111
|
+
* @param {number} [options.timeout=5000] - 超时时间(ms)
|
|
112
|
+
* @returns {Promise<Object>} 请求结果
|
|
113
|
+
*/
|
|
114
|
+
async function request(url, {
|
|
115
|
+
method = 'GET',
|
|
116
|
+
data = {},
|
|
117
|
+
headers = {},
|
|
118
|
+
timeout = 5000
|
|
119
|
+
} = {}) {
|
|
120
|
+
if (!isBrowser()) {
|
|
121
|
+
return {
|
|
122
|
+
code: -200,
|
|
123
|
+
msg: 'request方法只能在浏览器环境使用',
|
|
124
|
+
success: false
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// 超时控制
|
|
129
|
+
const controller = new AbortController();
|
|
130
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
131
|
+
|
|
132
|
+
// 构建请求配置
|
|
133
|
+
const options = {
|
|
134
|
+
method: method.toUpperCase(),
|
|
135
|
+
headers: {
|
|
136
|
+
'Content-Type': 'application/json',
|
|
137
|
+
...headers
|
|
138
|
+
},
|
|
139
|
+
signal: controller.signal
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
// 处理请求体(GET请求不携带body)
|
|
143
|
+
if (options.method !== 'GET' && data) {
|
|
144
|
+
options.body = JSON.stringify(data);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
try {
|
|
148
|
+
const response = await fetch(url, options);
|
|
149
|
+
clearTimeout(timeoutId);
|
|
150
|
+
|
|
151
|
+
// 处理HTTP错误状态码
|
|
152
|
+
if (!response.ok) {
|
|
153
|
+
return {
|
|
154
|
+
code: response.status,
|
|
155
|
+
msg: `HTTP请求失败: ${response.statusText}`,
|
|
156
|
+
success: false
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// 尝试解析JSON响应
|
|
161
|
+
try {
|
|
162
|
+
const result = await response.json();
|
|
163
|
+
return result;
|
|
164
|
+
} catch (jsonError) {
|
|
165
|
+
return {
|
|
166
|
+
code: -201,
|
|
167
|
+
msg: '响应数据不是有效的JSON格式',
|
|
168
|
+
success: false
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
} catch (error) {
|
|
172
|
+
clearTimeout(timeoutId);
|
|
173
|
+
|
|
174
|
+
// 超时错误处理
|
|
175
|
+
if (error.name === 'AbortError') {
|
|
176
|
+
return {
|
|
177
|
+
code: -202,
|
|
178
|
+
msg: `请求超时(${timeout}ms)`,
|
|
179
|
+
success: false
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// 其他网络错误
|
|
184
|
+
return {
|
|
185
|
+
code: -203,
|
|
186
|
+
msg: `网络请求失败: ${error.message}`,
|
|
187
|
+
success: false
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// 默认配置
|
|
193
|
+
const DEFAULT_CONFIG = {
|
|
194
|
+
accessCodeKey: 'accessCode',
|
|
195
|
+
tokenKey: 'scm_token',
|
|
196
|
+
timeout: 5000,
|
|
197
|
+
headers: {},
|
|
198
|
+
tokenApi: '',
|
|
199
|
+
refreshCodeApi: '',
|
|
200
|
+
logoutApi: '',
|
|
201
|
+
logOutUrl: '',
|
|
202
|
+
storage: localStorage, // 可替换为sessionStorage
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
let config = null;
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* 验证配置的有效性
|
|
209
|
+
* @param {Object} options - 配置选项
|
|
210
|
+
* @throws {Error} 当配置无效时抛出错误
|
|
211
|
+
*/
|
|
212
|
+
function validateConfig(options) {
|
|
213
|
+
if (typeof options.accessCodeKey !== 'string' || options.accessCodeKey.trim() === '') {
|
|
214
|
+
throw new Error('accessCodeKey必须是有效的字符串');
|
|
215
|
+
}
|
|
216
|
+
if (typeof options.tokenKey !== 'string' || options.tokenKey.trim() === '') {
|
|
217
|
+
throw new Error('tokenKey必须是有效的字符串');
|
|
218
|
+
}
|
|
219
|
+
if (options.storage && (typeof options.storage.setItem !== 'function' || typeof options.storage.getItem !== 'function')) {
|
|
220
|
+
throw new Error('storage必须实现setItem和getItem方法');
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* 创建SSO实例
|
|
226
|
+
* @returns {Object} SSO实例
|
|
227
|
+
*/
|
|
228
|
+
function createSSO() {
|
|
229
|
+
return {
|
|
230
|
+
/**
|
|
231
|
+
* 初始化SDK
|
|
232
|
+
* @param {Object} options - 配置参数
|
|
233
|
+
* @returns {Promise<Object>} 接口返回结果
|
|
234
|
+
*/
|
|
235
|
+
async init(options = {}) {
|
|
236
|
+
try {
|
|
237
|
+
// 合并并验证配置
|
|
238
|
+
config = mergeConfigs(DEFAULT_CONFIG, options);
|
|
239
|
+
validateConfig(config);
|
|
240
|
+
|
|
241
|
+
const accessCode = getQueryParam(config.accessCodeKey);
|
|
242
|
+
|
|
243
|
+
// 验证必要的API配置
|
|
244
|
+
if (!config.tokenApi) {
|
|
245
|
+
return { code: -100, msg: '缺少tokenApi配置', success: false };
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// 如果存在accessCode,尝试获取token
|
|
249
|
+
if (accessCode) {
|
|
250
|
+
const result = await request(
|
|
251
|
+
config.tokenApi,
|
|
252
|
+
{
|
|
253
|
+
method: 'POST',
|
|
254
|
+
data: { accessCode },
|
|
255
|
+
headers: config.headers,
|
|
256
|
+
timeout: config.timeout
|
|
257
|
+
}
|
|
258
|
+
);
|
|
259
|
+
|
|
260
|
+
if (result.code === 0 && result.data) {
|
|
261
|
+
config.storage.setItem(config.tokenKey, result.data);
|
|
262
|
+
removeQueryParam(config.accessCodeKey);
|
|
263
|
+
}
|
|
264
|
+
return result;
|
|
265
|
+
}
|
|
266
|
+
// 如果没有token,跳转到登录页
|
|
267
|
+
else if (!this.getToken()) {
|
|
268
|
+
if (isBrowser() && config.logOutUrl) {
|
|
269
|
+
window.location.href = `${config.logOutUrl}?redirect_uri=${encodeURIComponent(getCurrentUrlWithParams())}`;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
return { code: 0, msg: '初始化成功', success: true };
|
|
274
|
+
} catch (error) {
|
|
275
|
+
return { code: -100, msg: `初始化失败: ${error.message}`, success: false };
|
|
276
|
+
}
|
|
277
|
+
},
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* 获取存储的token
|
|
281
|
+
* @returns {string|null} token值或null
|
|
282
|
+
*/
|
|
283
|
+
getToken() {
|
|
284
|
+
if (!config || !isBrowser()) return null;
|
|
285
|
+
return config.storage.getItem(config.tokenKey);
|
|
286
|
+
},
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* 删除存储的token
|
|
290
|
+
*/
|
|
291
|
+
removeToken() {
|
|
292
|
+
if (!config || !isBrowser()) return;
|
|
293
|
+
config.storage.removeItem(config.tokenKey);
|
|
294
|
+
},
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* 退出登录
|
|
298
|
+
* @returns {Promise<Object>} 接口返回结果
|
|
299
|
+
*/
|
|
300
|
+
async logout() {
|
|
301
|
+
if (!config) {
|
|
302
|
+
return { code: -101, msg: '请先调用init方法初始化', success: false };
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
if (!config.logoutApi) {
|
|
306
|
+
return { code: -102, msg: '未配置logoutApi', success: false };
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
const token = this.getToken();
|
|
310
|
+
if (token) {
|
|
311
|
+
try {
|
|
312
|
+
const result = await request(
|
|
313
|
+
config.logoutApi,
|
|
314
|
+
{
|
|
315
|
+
method: 'POST',
|
|
316
|
+
headers: { ...config.headers, [config.tokenKey]: token },
|
|
317
|
+
timeout: config.timeout
|
|
318
|
+
}
|
|
319
|
+
);
|
|
320
|
+
this.removeToken();
|
|
321
|
+
|
|
322
|
+
if (isBrowser() && config.logOutUrl) {
|
|
323
|
+
window.location.href = `${config.logOutUrl}?redirect_uri=${encodeURIComponent(getCurrentUrlWithParams())}`;
|
|
324
|
+
}
|
|
325
|
+
return result;
|
|
326
|
+
} catch (error) {
|
|
327
|
+
return { code: -103, msg: `退出失败: ${error.message}`, success: false };
|
|
328
|
+
}
|
|
329
|
+
} else {
|
|
330
|
+
this.removeToken();
|
|
331
|
+
if (isBrowser() && config.logOutUrl) {
|
|
332
|
+
window.location.href = `${config.logOutUrl}?redirect_uri=${encodeURIComponent(getCurrentUrlWithParams())}`;
|
|
333
|
+
}
|
|
334
|
+
return { code: 0, msg: '已成功清除token', success: true };
|
|
335
|
+
}
|
|
336
|
+
},
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* 用token换取新accessCode并跳转到指定URL
|
|
340
|
+
* @param {string} redirectUrl - 目标跳转地址
|
|
341
|
+
* @returns {Promise<Object>} 接口返回结果
|
|
342
|
+
*/
|
|
343
|
+
async toUrl(redirectUrl) {
|
|
344
|
+
if (!config) {
|
|
345
|
+
return { code: -101, msg: '请先调用init方法初始化', success: false };
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
if (!redirectUrl) {
|
|
349
|
+
return { code: -104, msg: '请提供跳转地址', success: false };
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
if (!config.refreshCodeApi) {
|
|
353
|
+
return { code: -105, msg: '未配置refreshCodeApi', success: false };
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
const token = this.getToken();
|
|
357
|
+
if (!token) {
|
|
358
|
+
if (isBrowser() && config.logOutUrl) {
|
|
359
|
+
// 修改:使用参数传入的redirectUrl作为重定向地址
|
|
360
|
+
window.location.href = `${config.logOutUrl}?redirect_uri=${encodeURIComponent(redirectUrl)}`;
|
|
361
|
+
}
|
|
362
|
+
return { code: -106, msg: '未找到有效token', success: false };
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
try {
|
|
366
|
+
const result = await request(
|
|
367
|
+
config.refreshCodeApi,
|
|
368
|
+
{
|
|
369
|
+
method: 'POST',
|
|
370
|
+
headers: { ...config.headers, [config.tokenKey]: token },
|
|
371
|
+
timeout: config.timeout
|
|
372
|
+
}
|
|
373
|
+
);
|
|
374
|
+
|
|
375
|
+
if (result.code === 0 && result.data && isBrowser()) {
|
|
376
|
+
const url = new URL(redirectUrl);
|
|
377
|
+
url.searchParams.set(config.accessCodeKey, result.data);
|
|
378
|
+
window.location.href = url.toString();
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
return result;
|
|
382
|
+
} catch (error) {
|
|
383
|
+
return { code: -107, msg: `跳转失败: ${error.message}`, success: false };
|
|
384
|
+
}
|
|
385
|
+
},
|
|
386
|
+
|
|
387
|
+
/**
|
|
388
|
+
* 获取accessCode(通过token换取)
|
|
389
|
+
* @returns {Promise<Object>} 接口返回结果(data为accessCode)
|
|
390
|
+
*/
|
|
391
|
+
async getAccessCode() {
|
|
392
|
+
if (!config) {
|
|
393
|
+
return { code: -101, msg: '请先调用init方法初始化', success: false };
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
const token = this.getToken();
|
|
397
|
+
if (!token) {
|
|
398
|
+
return { code: -106, msg: '未找到有效token', success: false };
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
if (!config.refreshCodeApi) {
|
|
402
|
+
return { code: -105, msg: '未配置refreshCodeApi', success: false };
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
return request(
|
|
406
|
+
config.refreshCodeApi,
|
|
407
|
+
{
|
|
408
|
+
method: 'POST',
|
|
409
|
+
headers: { ...config.headers, [config.tokenKey]: token },
|
|
410
|
+
timeout: config.timeout
|
|
411
|
+
}
|
|
412
|
+
);
|
|
413
|
+
},
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* 获取当前配置
|
|
417
|
+
* @returns {Object|null} 当前配置
|
|
418
|
+
*/
|
|
419
|
+
getConfig() {
|
|
420
|
+
return { ...config }; // 返回配置的副本,防止外部修改
|
|
421
|
+
}
|
|
422
|
+
};
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
// 创建默认实例
|
|
426
|
+
const lgsso = createSSO();
|
|
427
|
+
|
|
428
|
+
/*
|
|
429
|
+
* @Author: Robin LEI
|
|
430
|
+
* @Date: 2025-08-21 15:08:08
|
|
431
|
+
* @LastEditTime: 2025-08-21 15:12:09
|
|
432
|
+
* @FilePath: \lg-wms-admind:\业务代码\中联钢信\五服一管\lg-ssosdk\src\index.js
|
|
433
|
+
*/
|
|
434
|
+
|
|
435
|
+
export { createSSO, lgsso as default, lgsso };
|
|
436
|
+
//# sourceMappingURL=lgsso-sdk.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lgsso-sdk.esm.js","sources":["../src/utils.js","../src/request.js","../src/sso.js","../src/index.js"],"sourcesContent":["/*\r\n * @Author: Robin LEI\r\n * @Date: 2025-08-21 15:09:15\r\n * @LastEditTime: 2025-08-21 15:22:11\r\n * @FilePath: \\lg-wms-admind:\\业务代码\\中联钢信\\五服一管\\lg-ssosdk\\src\\utils.js\r\n */\r\n/**\r\n * 检查是否在浏览器环境\r\n */\r\nexport function isBrowser() {\r\n return typeof window !== 'undefined' && typeof document !== 'undefined';\r\n}\r\n\r\n/**\r\n * 解析URL中的查询参数\r\n * @param {string} name - 参数名\r\n * @param {string} [url] - 可选URL,默认使用当前页面URL\r\n * @returns {string|null} 参数值\r\n */\r\nexport function getQueryParam(name, url) {\r\n if (!isBrowser()) return null;\r\n\r\n const targetUrl = url || window.location.href;\r\n const urlObj = new URL(targetUrl);\r\n\r\n // 先检查常规查询参数\r\n let param = urlObj.searchParams.get(name);\r\n if (param !== null) return param;\r\n\r\n // 检查hash中的查询参数\r\n if (urlObj.hash.includes('?')) {\r\n const hashQuery = urlObj.hash.split('?')[1];\r\n const hashParams = new URLSearchParams(hashQuery);\r\n return hashParams.get(name);\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * 移除URL中的指定参数\r\n * @param {string} name - 参数名\r\n */\r\nexport function removeQueryParam(name) {\r\n if (!isBrowser()) return;\r\n\r\n const url = new URL(window.location.href);\r\n let params, newUrl;\r\n\r\n // 处理hash模式(参数在#之后)\r\n if (url.hash.includes('?')) {\r\n const [hashPath, hashQuery] = url.hash.split('?');\r\n params = new URLSearchParams(hashQuery);\r\n\r\n if (params.has(name)) {\r\n params.delete(name);\r\n const newHash = params.toString() ? `${hashPath}?${params.toString()}` : hashPath;\r\n url.hash = newHash;\r\n newUrl = url.toString();\r\n }\r\n }\r\n // 处理history模式(参数在?之后)\r\n else {\r\n params = new URLSearchParams(url.search);\r\n if (params.has(name)) {\r\n params.delete(name);\r\n url.search = params.toString();\r\n newUrl = url.toString();\r\n }\r\n }\r\n\r\n // 更新URL\r\n if (newUrl && newUrl !== window.location.href) {\r\n window.location.replace(newUrl);\r\n }\r\n}\r\n\r\n/**\r\n * 获取当前完整URL(包含所有参数)\r\n * @returns {string} 当前URL\r\n */\r\nexport function getCurrentUrlWithParams() {\r\n if (!isBrowser()) return '';\r\n return window.location.href;\r\n}\r\n\r\n/**\r\n * 合并配置对象\r\n * @param {Object} defaults - 默认配置\r\n * @param {Object} options - 用户配置\r\n * @returns {Object} 合并后的配置\r\n */\r\nexport function mergeConfigs(defaults, options) {\r\n if (!options) return { ...defaults };\r\n const merged = { ...defaults };\r\n for (const key in options) {\r\n if (options.hasOwnProperty(key)) {\r\n merged[key] = options[key];\r\n }\r\n }\r\n return merged;\r\n}","import { isBrowser } from './utils';\r\n\r\n/**\r\n * 通用HTTP请求工具\r\n * @param {string} url - 请求URL\r\n * @param {Object} options - 请求选项\r\n * @param {string} [options.method='GET'] - 请求方法\r\n * @param {Object} [options.data] - 请求数据\r\n * @param {Object} [options.headers] - 请求头\r\n * @param {number} [options.timeout=5000] - 超时时间(ms)\r\n * @returns {Promise<Object>} 请求结果\r\n */\r\nexport async function request(url, {\r\n method = 'GET',\r\n data = {},\r\n headers = {},\r\n timeout = 5000\r\n} = {}) {\r\n if (!isBrowser()) {\r\n return {\r\n code: -200,\r\n msg: 'request方法只能在浏览器环境使用',\r\n success: false\r\n };\r\n }\r\n\r\n // 超时控制\r\n const controller = new AbortController();\r\n const timeoutId = setTimeout(() => controller.abort(), timeout);\r\n\r\n // 构建请求配置\r\n const options = {\r\n method: method.toUpperCase(),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...headers\r\n },\r\n signal: controller.signal\r\n };\r\n\r\n // 处理请求体(GET请求不携带body)\r\n if (options.method !== 'GET' && data) {\r\n options.body = JSON.stringify(data);\r\n }\r\n\r\n try {\r\n const response = await fetch(url, options);\r\n clearTimeout(timeoutId);\r\n\r\n // 处理HTTP错误状态码\r\n if (!response.ok) {\r\n return {\r\n code: response.status,\r\n msg: `HTTP请求失败: ${response.statusText}`,\r\n success: false\r\n };\r\n }\r\n\r\n // 尝试解析JSON响应\r\n try {\r\n const result = await response.json();\r\n return result;\r\n } catch (jsonError) {\r\n return {\r\n code: -201,\r\n msg: '响应数据不是有效的JSON格式',\r\n success: false\r\n };\r\n }\r\n } catch (error) {\r\n clearTimeout(timeoutId);\r\n\r\n // 超时错误处理\r\n if (error.name === 'AbortError') {\r\n return {\r\n code: -202,\r\n msg: `请求超时(${timeout}ms)`,\r\n success: false\r\n };\r\n }\r\n\r\n // 其他网络错误\r\n return {\r\n code: -203,\r\n msg: `网络请求失败: ${error.message}`,\r\n success: false\r\n };\r\n }\r\n}","import { request } from './request';\r\nimport { isBrowser, getQueryParam, removeQueryParam, getCurrentUrlWithParams, mergeConfigs } from './utils';\r\n\r\n// 默认配置\r\nconst DEFAULT_CONFIG = {\r\n accessCodeKey: 'accessCode',\r\n tokenKey: 'scm_token',\r\n timeout: 5000,\r\n headers: {},\r\n tokenApi: '',\r\n refreshCodeApi: '',\r\n logoutApi: '',\r\n logOutUrl: '',\r\n storage: localStorage, // 可替换为sessionStorage\r\n};\r\n\r\nlet config = null;\r\n\r\n/**\r\n * 验证配置的有效性\r\n * @param {Object} options - 配置选项\r\n * @throws {Error} 当配置无效时抛出错误\r\n */\r\nfunction validateConfig(options) {\r\n if (typeof options.accessCodeKey !== 'string' || options.accessCodeKey.trim() === '') {\r\n throw new Error('accessCodeKey必须是有效的字符串');\r\n }\r\n if (typeof options.tokenKey !== 'string' || options.tokenKey.trim() === '') {\r\n throw new Error('tokenKey必须是有效的字符串');\r\n }\r\n if (options.storage && (typeof options.storage.setItem !== 'function' || typeof options.storage.getItem !== 'function')) {\r\n throw new Error('storage必须实现setItem和getItem方法');\r\n }\r\n}\r\n\r\n/**\r\n * 创建SSO实例\r\n * @returns {Object} SSO实例\r\n */\r\nexport function createSSO() {\r\n return {\r\n /**\r\n * 初始化SDK\r\n * @param {Object} options - 配置参数\r\n * @returns {Promise<Object>} 接口返回结果\r\n */\r\n async init(options = {}) {\r\n try {\r\n // 合并并验证配置\r\n config = mergeConfigs(DEFAULT_CONFIG, options);\r\n validateConfig(config);\r\n\r\n const accessCode = getQueryParam(config.accessCodeKey);\r\n\r\n // 验证必要的API配置\r\n if (!config.tokenApi) {\r\n return { code: -100, msg: '缺少tokenApi配置', success: false };\r\n }\r\n\r\n // 如果存在accessCode,尝试获取token\r\n if (accessCode) {\r\n const result = await request(\r\n config.tokenApi,\r\n {\r\n method: 'POST',\r\n data: { accessCode },\r\n headers: config.headers,\r\n timeout: config.timeout\r\n }\r\n );\r\n\r\n if (result.code === 0 && result.data) {\r\n config.storage.setItem(config.tokenKey, result.data);\r\n removeQueryParam(config.accessCodeKey);\r\n }\r\n return result;\r\n }\r\n // 如果没有token,跳转到登录页\r\n else if (!this.getToken()) {\r\n if (isBrowser() && config.logOutUrl) {\r\n window.location.href = `${config.logOutUrl}?redirect_uri=${encodeURIComponent(getCurrentUrlWithParams())}`;\r\n }\r\n }\r\n\r\n return { code: 0, msg: '初始化成功', success: true };\r\n } catch (error) {\r\n return { code: -100, msg: `初始化失败: ${error.message}`, success: false };\r\n }\r\n },\r\n\r\n /**\r\n * 获取存储的token\r\n * @returns {string|null} token值或null\r\n */\r\n getToken() {\r\n if (!config || !isBrowser()) return null;\r\n return config.storage.getItem(config.tokenKey);\r\n },\r\n\r\n /**\r\n * 删除存储的token\r\n */\r\n removeToken() {\r\n if (!config || !isBrowser()) return;\r\n config.storage.removeItem(config.tokenKey);\r\n },\r\n\r\n /**\r\n * 退出登录\r\n * @returns {Promise<Object>} 接口返回结果\r\n */\r\n async logout() {\r\n if (!config) {\r\n return { code: -101, msg: '请先调用init方法初始化', success: false };\r\n }\r\n\r\n if (!config.logoutApi) {\r\n return { code: -102, msg: '未配置logoutApi', success: false };\r\n }\r\n\r\n const token = this.getToken();\r\n if (token) {\r\n try {\r\n const result = await request(\r\n config.logoutApi,\r\n {\r\n method: 'POST',\r\n headers: { ...config.headers, [config.tokenKey]: token },\r\n timeout: config.timeout\r\n }\r\n );\r\n this.removeToken();\r\n\r\n if (isBrowser() && config.logOutUrl) {\r\n window.location.href = `${config.logOutUrl}?redirect_uri=${encodeURIComponent(getCurrentUrlWithParams())}`;\r\n }\r\n return result;\r\n } catch (error) {\r\n return { code: -103, msg: `退出失败: ${error.message}`, success: false };\r\n }\r\n } else {\r\n this.removeToken();\r\n if (isBrowser() && config.logOutUrl) {\r\n window.location.href = `${config.logOutUrl}?redirect_uri=${encodeURIComponent(getCurrentUrlWithParams())}`;\r\n }\r\n return { code: 0, msg: '已成功清除token', success: true };\r\n }\r\n },\r\n\r\n /**\r\n * 用token换取新accessCode并跳转到指定URL\r\n * @param {string} redirectUrl - 目标跳转地址\r\n * @returns {Promise<Object>} 接口返回结果\r\n */\r\n async toUrl(redirectUrl) {\r\n if (!config) {\r\n return { code: -101, msg: '请先调用init方法初始化', success: false };\r\n }\r\n\r\n if (!redirectUrl) {\r\n return { code: -104, msg: '请提供跳转地址', success: false };\r\n }\r\n\r\n if (!config.refreshCodeApi) {\r\n return { code: -105, msg: '未配置refreshCodeApi', success: false };\r\n }\r\n\r\n const token = this.getToken();\r\n if (!token) {\r\n if (isBrowser() && config.logOutUrl) {\r\n // 修改:使用参数传入的redirectUrl作为重定向地址\r\n window.location.href = `${config.logOutUrl}?redirect_uri=${encodeURIComponent(redirectUrl)}`;\r\n }\r\n return { code: -106, msg: '未找到有效token', success: false };\r\n }\r\n\r\n try {\r\n const result = await request(\r\n config.refreshCodeApi,\r\n {\r\n method: 'POST',\r\n headers: { ...config.headers, [config.tokenKey]: token },\r\n timeout: config.timeout\r\n }\r\n );\r\n\r\n if (result.code === 0 && result.data && isBrowser()) {\r\n const url = new URL(redirectUrl);\r\n url.searchParams.set(config.accessCodeKey, result.data);\r\n window.location.href = url.toString();\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n return { code: -107, msg: `跳转失败: ${error.message}`, success: false };\r\n }\r\n },\r\n\r\n /**\r\n * 获取accessCode(通过token换取)\r\n * @returns {Promise<Object>} 接口返回结果(data为accessCode)\r\n */\r\n async getAccessCode() {\r\n if (!config) {\r\n return { code: -101, msg: '请先调用init方法初始化', success: false };\r\n }\r\n\r\n const token = this.getToken();\r\n if (!token) {\r\n return { code: -106, msg: '未找到有效token', success: false };\r\n }\r\n\r\n if (!config.refreshCodeApi) {\r\n return { code: -105, msg: '未配置refreshCodeApi', success: false };\r\n }\r\n\r\n return request(\r\n config.refreshCodeApi,\r\n {\r\n method: 'POST',\r\n headers: { ...config.headers, [config.tokenKey]: token },\r\n timeout: config.timeout\r\n }\r\n );\r\n },\r\n\r\n /**\r\n * 获取当前配置\r\n * @returns {Object|null} 当前配置\r\n */\r\n getConfig() {\r\n return { ...config }; // 返回配置的副本,防止外部修改\r\n }\r\n };\r\n}\r\n\r\n// 创建默认实例\r\nexport const lgsso = createSSO();\r\n","/*\r\n * @Author: Robin LEI\r\n * @Date: 2025-08-21 15:08:08\r\n * @LastEditTime: 2025-08-21 15:12:09\r\n * @FilePath: \\lg-wms-admind:\\业务代码\\中联钢信\\五服一管\\lg-ssosdk\\src\\index.js\r\n */\r\nimport { lgsso, createSSO } from './sso';\r\n// 导出所有公共API\r\nexport {\r\n lgsso,\r\n createSSO,\r\n};\r\n\r\n// 默认导出默认实例\r\nexport default lgsso;"],"names":[],"mappings":"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"}
|
package/dist/lgsso-sdk.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lgsso-sdk.js","sources":["../src/utils.js","../src/request.js","../src/sso.js","../src/index.js"],"sourcesContent":["/*\r\n * @Author: Robin LEI\r\n * @Date: 2025-08-21 15:09:15\r\n * @LastEditTime: 2025-08-21 15:22:11\r\n * @FilePath: \\lg-wms-admind:\\业务代码\\中联钢信\\五服一管\\lg-ssosdk\\src\\utils.js\r\n */\r\n/**\r\n * 检查是否在浏览器环境\r\n */\r\nexport function isBrowser() {\r\n return typeof window !== 'undefined' && typeof document !== 'undefined';\r\n}\r\n\r\n/**\r\n * 解析URL中的查询参数\r\n * @param {string} name - 参数名\r\n * @param {string} [url] - 可选URL,默认使用当前页面URL\r\n * @returns {string|null} 参数值\r\n */\r\nexport function getQueryParam(name, url) {\r\n if (!isBrowser()) return null;\r\n\r\n const targetUrl = url || window.location.href;\r\n const urlObj = new URL(targetUrl);\r\n\r\n // 先检查常规查询参数\r\n let param = urlObj.searchParams.get(name);\r\n if (param !== null) return param;\r\n\r\n // 检查hash中的查询参数\r\n if (urlObj.hash.includes('?')) {\r\n const hashQuery = urlObj.hash.split('?')[1];\r\n const hashParams = new URLSearchParams(hashQuery);\r\n return hashParams.get(name);\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * 移除URL中的指定参数\r\n * @param {string} name - 参数名\r\n */\r\nexport function removeQueryParam(name) {\r\n if (!isBrowser()) return;\r\n\r\n const url = new URL(window.location.href);\r\n let params, newUrl;\r\n\r\n // 处理hash模式(参数在#之后)\r\n if (url.hash.includes('?')) {\r\n const [hashPath, hashQuery] = url.hash.split('?');\r\n params = new URLSearchParams(hashQuery);\r\n\r\n if (params.has(name)) {\r\n params.delete(name);\r\n const newHash = params.toString() ? `${hashPath}?${params.toString()}` : hashPath;\r\n url.hash = newHash;\r\n newUrl = url.toString();\r\n }\r\n }\r\n // 处理history模式(参数在?之后)\r\n else {\r\n params = new URLSearchParams(url.search);\r\n if (params.has(name)) {\r\n params.delete(name);\r\n url.search = params.toString();\r\n newUrl = url.toString();\r\n }\r\n }\r\n\r\n // 更新URL\r\n if (newUrl && newUrl !== window.location.href) {\r\n window.location.replace(newUrl);\r\n }\r\n}\r\n\r\n/**\r\n * 获取当前完整URL(包含所有参数)\r\n * @returns {string} 当前URL\r\n */\r\nexport function getCurrentUrlWithParams() {\r\n if (!isBrowser()) return '';\r\n return window.location.href;\r\n}\r\n\r\n/**\r\n * 合并配置对象\r\n * @param {Object} defaults - 默认配置\r\n * @param {Object} options - 用户配置\r\n * @returns {Object} 合并后的配置\r\n */\r\nexport function mergeConfigs(defaults, options) {\r\n if (!options) return { ...defaults };\r\n const merged = { ...defaults };\r\n for (const key in options) {\r\n if (options.hasOwnProperty(key)) {\r\n merged[key] = options[key];\r\n }\r\n }\r\n return merged;\r\n}","import { isBrowser } from './utils';\r\n\r\n/**\r\n * 通用HTTP请求工具\r\n * @param {string} url - 请求URL\r\n * @param {Object} options - 请求选项\r\n * @param {string} [options.method='GET'] - 请求方法\r\n * @param {Object} [options.data] - 请求数据\r\n * @param {Object} [options.headers] - 请求头\r\n * @param {number} [options.timeout=5000] - 超时时间(ms)\r\n * @returns {Promise<Object>} 请求结果\r\n */\r\nexport async function request(url, {\r\n method = 'GET',\r\n data = {},\r\n headers = {},\r\n timeout = 5000\r\n} = {}) {\r\n if (!isBrowser()) {\r\n return {\r\n code: -200,\r\n msg: 'request方法只能在浏览器环境使用',\r\n success: false\r\n };\r\n }\r\n\r\n // 超时控制\r\n const controller = new AbortController();\r\n const timeoutId = setTimeout(() => controller.abort(), timeout);\r\n\r\n // 构建请求配置\r\n const options = {\r\n method: method.toUpperCase(),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...headers\r\n },\r\n signal: controller.signal\r\n };\r\n\r\n // 处理请求体(GET请求不携带body)\r\n if (options.method !== 'GET' && data) {\r\n options.body = JSON.stringify(data);\r\n }\r\n\r\n try {\r\n const response = await fetch(url, options);\r\n clearTimeout(timeoutId);\r\n\r\n // 处理HTTP错误状态码\r\n if (!response.ok) {\r\n return {\r\n code: response.status,\r\n msg: `HTTP请求失败: ${response.statusText}`,\r\n success: false\r\n };\r\n }\r\n\r\n // 尝试解析JSON响应\r\n try {\r\n const result = await response.json();\r\n return result;\r\n } catch (jsonError) {\r\n return {\r\n code: -201,\r\n msg: '响应数据不是有效的JSON格式',\r\n success: false\r\n };\r\n }\r\n } catch (error) {\r\n clearTimeout(timeoutId);\r\n\r\n // 超时错误处理\r\n if (error.name === 'AbortError') {\r\n return {\r\n code: -202,\r\n msg: `请求超时(${timeout}ms)`,\r\n success: false\r\n };\r\n }\r\n\r\n // 其他网络错误\r\n return {\r\n code: -203,\r\n msg: `网络请求失败: ${error.message}`,\r\n success: false\r\n };\r\n }\r\n}","import { request } from './request';\r\nimport { isBrowser, getQueryParam, removeQueryParam, getCurrentUrlWithParams, mergeConfigs } from './utils';\r\n\r\n// 默认配置\r\nconst DEFAULT_CONFIG = {\r\n accessCodeKey: 'accessCode',\r\n tokenKey: 'scm_token',\r\n timeout: 5000,\r\n headers: {},\r\n tokenApi: '',\r\n refreshCodeApi: '',\r\n logoutApi: '',\r\n logOutUrl: '',\r\n storage: localStorage, // 可替换为sessionStorage\r\n};\r\n\r\nlet config = null;\r\n\r\n/**\r\n * 验证配置的有效性\r\n * @param {Object} options - 配置选项\r\n * @throws {Error} 当配置无效时抛出错误\r\n */\r\nfunction validateConfig(options) {\r\n if (typeof options.accessCodeKey !== 'string' || options.accessCodeKey.trim() === '') {\r\n throw new Error('accessCodeKey必须是有效的字符串');\r\n }\r\n if (typeof options.tokenKey !== 'string' || options.tokenKey.trim() === '') {\r\n throw new Error('tokenKey必须是有效的字符串');\r\n }\r\n if (options.storage && (typeof options.storage.setItem !== 'function' || typeof options.storage.getItem !== 'function')) {\r\n throw new Error('storage必须实现setItem和getItem方法');\r\n }\r\n}\r\n\r\n/**\r\n * 创建SSO实例\r\n * @returns {Object} SSO实例\r\n */\r\nexport function createSSO() {\r\n return {\r\n /**\r\n * 初始化SDK\r\n * @param {Object} options - 配置参数\r\n * @returns {Promise<Object>} 接口返回结果\r\n */\r\n async init(options = {}) {\r\n try {\r\n // 合并并验证配置\r\n config = mergeConfigs(DEFAULT_CONFIG, options);\r\n validateConfig(config);\r\n\r\n const accessCode = getQueryParam(config.accessCodeKey);\r\n\r\n // 验证必要的API配置\r\n if (!config.tokenApi) {\r\n return { code: -100, msg: '缺少tokenApi配置', success: false };\r\n }\r\n\r\n // 如果存在accessCode,尝试获取token\r\n if (accessCode) {\r\n const result = await request(\r\n config.tokenApi,\r\n {\r\n method: 'POST',\r\n data: { accessCode },\r\n headers: config.headers,\r\n timeout: config.timeout\r\n }\r\n );\r\n\r\n if (result.code === 0 && result.data) {\r\n config.storage.setItem(config.tokenKey, result.data);\r\n removeQueryParam(config.accessCodeKey);\r\n }\r\n return result;\r\n }\r\n // 如果没有token,跳转到登录页\r\n else if (!this.getToken()) {\r\n if (isBrowser() && config.logOutUrl) {\r\n window.location.href = `${config.logOutUrl}?redirect_uri=${encodeURIComponent(getCurrentUrlWithParams())}`;\r\n }\r\n }\r\n\r\n return { code: 0, msg: '初始化成功', success: true };\r\n } catch (error) {\r\n return { code: -100, msg: `初始化失败: ${error.message}`, success: false };\r\n }\r\n },\r\n\r\n /**\r\n * 获取存储的token\r\n * @returns {string|null} token值或null\r\n */\r\n getToken() {\r\n if (!config || !isBrowser()) return null;\r\n return config.storage.getItem(config.tokenKey);\r\n },\r\n\r\n /**\r\n * 删除存储的token\r\n */\r\n removeToken() {\r\n if (!config || !isBrowser()) return;\r\n config.storage.removeItem(config.tokenKey);\r\n },\r\n\r\n /**\r\n * 退出登录\r\n * @returns {Promise<Object>} 接口返回结果\r\n */\r\n async logout() {\r\n if (!config) {\r\n return { code: -101, msg: '请先调用init方法初始化', success: false };\r\n }\r\n\r\n if (!config.logoutApi) {\r\n return { code: -102, msg: '未配置logoutApi', success: false };\r\n }\r\n\r\n const token = this.getToken();\r\n if (token) {\r\n try {\r\n const result = await request(\r\n config.logoutApi,\r\n {\r\n method: 'POST',\r\n headers: { ...config.headers, [config.tokenKey]: token },\r\n timeout: config.timeout\r\n }\r\n );\r\n this.removeToken();\r\n\r\n if (isBrowser() && config.logOutUrl) {\r\n window.location.href = `${config.logOutUrl}?redirect_uri=${encodeURIComponent(getCurrentUrlWithParams())}`;\r\n }\r\n return result;\r\n } catch (error) {\r\n return { code: -103, msg: `退出失败: ${error.message}`, success: false };\r\n }\r\n } else {\r\n this.removeToken();\r\n if (isBrowser() && config.logOutUrl) {\r\n window.location.href = `${config.logOutUrl}?redirect_uri=${encodeURIComponent(getCurrentUrlWithParams())}`;\r\n }\r\n return { code: 0, msg: '已成功清除token', success: true };\r\n }\r\n },\r\n\r\n /**\r\n * 用token换取新accessCode并跳转到指定URL\r\n * @param {string} redirectUrl - 目标跳转地址\r\n * @returns {Promise<Object>} 接口返回结果\r\n */\r\n async toUrl(redirectUrl) {\r\n if (!config) {\r\n return { code: -101, msg: '请先调用init方法初始化', success: false };\r\n }\r\n\r\n if (!redirectUrl) {\r\n return { code: -104, msg: '请提供跳转地址', success: false };\r\n }\r\n\r\n if (!config.refreshCodeApi) {\r\n return { code: -105, msg: '未配置refreshCodeApi', success: false };\r\n }\r\n\r\n const token = this.getToken();\r\n if (!token) {\r\n if (isBrowser() && config.logOutUrl) {\r\n // 修改:使用参数传入的redirectUrl作为重定向地址\r\n window.location.href = `${config.logOutUrl}?redirect_uri=${encodeURIComponent(redirectUrl)}`;\r\n }\r\n return { code: -106, msg: '未找到有效token', success: false };\r\n }\r\n\r\n try {\r\n const result = await request(\r\n config.refreshCodeApi,\r\n {\r\n method: 'POST',\r\n headers: { ...config.headers, [config.tokenKey]: token },\r\n timeout: config.timeout\r\n }\r\n );\r\n\r\n if (result.code === 0 && result.data && isBrowser()) {\r\n const url = new URL(redirectUrl);\r\n url.searchParams.set(config.accessCodeKey, result.data);\r\n window.location.href = url.toString();\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n return { code: -107, msg: `跳转失败: ${error.message}`, success: false };\r\n }\r\n },\r\n\r\n /**\r\n * 获取accessCode(通过token换取)\r\n * @returns {Promise<Object>} 接口返回结果(data为accessCode)\r\n */\r\n async getAccessCode() {\r\n if (!config) {\r\n return { code: -101, msg: '请先调用init方法初始化', success: false };\r\n }\r\n\r\n const token = this.getToken();\r\n if (!token) {\r\n return { code: -106, msg: '未找到有效token', success: false };\r\n }\r\n\r\n if (!config.refreshCodeApi) {\r\n return { code: -105, msg: '未配置refreshCodeApi', success: false };\r\n }\r\n\r\n return request(\r\n config.refreshCodeApi,\r\n {\r\n method: 'POST',\r\n headers: { ...config.headers, [config.tokenKey]: token },\r\n timeout: config.timeout\r\n }\r\n );\r\n },\r\n\r\n /**\r\n * 获取当前配置\r\n * @returns {Object|null} 当前配置\r\n */\r\n getConfig() {\r\n return { ...config }; // 返回配置的副本,防止外部修改\r\n }\r\n };\r\n}\r\n\r\n// 创建默认实例\r\nexport const lgsso = createSSO();\r\n","/*\r\n * @Author: Robin LEI\r\n * @Date: 2025-08-21 15:08:08\r\n * @LastEditTime: 2025-08-21 15:12:09\r\n * @FilePath: \\lg-wms-admind:\\业务代码\\中联钢信\\五服一管\\lg-ssosdk\\src\\index.js\r\n */\r\nimport { lgsso, createSSO } from './sso';\r\n// 导出所有公共API\r\nexport {\r\n lgsso,\r\n createSSO,\r\n};\r\n\r\n// 默认导出默认实例\r\nexport default lgsso;"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lgsso-sdk.min.js","sources":["../src/utils.js","../src/request.js","../src/sso.js"],"sourcesContent":["/*\r\n * @Author: Robin LEI\r\n * @Date: 2025-08-21 15:09:15\r\n * @LastEditTime: 2025-08-21 15:22:11\r\n * @FilePath: \\lg-wms-admind:\\业务代码\\中联钢信\\五服一管\\lg-ssosdk\\src\\utils.js\r\n */\r\n/**\r\n * 检查是否在浏览器环境\r\n */\r\nexport function isBrowser() {\r\n return typeof window !== 'undefined' && typeof document !== 'undefined';\r\n}\r\n\r\n/**\r\n * 解析URL中的查询参数\r\n * @param {string} name - 参数名\r\n * @param {string} [url] - 可选URL,默认使用当前页面URL\r\n * @returns {string|null} 参数值\r\n */\r\nexport function getQueryParam(name, url) {\r\n if (!isBrowser()) return null;\r\n\r\n const targetUrl = url || window.location.href;\r\n const urlObj = new URL(targetUrl);\r\n\r\n // 先检查常规查询参数\r\n let param = urlObj.searchParams.get(name);\r\n if (param !== null) return param;\r\n\r\n // 检查hash中的查询参数\r\n if (urlObj.hash.includes('?')) {\r\n const hashQuery = urlObj.hash.split('?')[1];\r\n const hashParams = new URLSearchParams(hashQuery);\r\n return hashParams.get(name);\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * 移除URL中的指定参数\r\n * @param {string} name - 参数名\r\n */\r\nexport function removeQueryParam(name) {\r\n if (!isBrowser()) return;\r\n\r\n const url = new URL(window.location.href);\r\n let params, newUrl;\r\n\r\n // 处理hash模式(参数在#之后)\r\n if (url.hash.includes('?')) {\r\n const [hashPath, hashQuery] = url.hash.split('?');\r\n params = new URLSearchParams(hashQuery);\r\n\r\n if (params.has(name)) {\r\n params.delete(name);\r\n const newHash = params.toString() ? `${hashPath}?${params.toString()}` : hashPath;\r\n url.hash = newHash;\r\n newUrl = url.toString();\r\n }\r\n }\r\n // 处理history模式(参数在?之后)\r\n else {\r\n params = new URLSearchParams(url.search);\r\n if (params.has(name)) {\r\n params.delete(name);\r\n url.search = params.toString();\r\n newUrl = url.toString();\r\n }\r\n }\r\n\r\n // 更新URL\r\n if (newUrl && newUrl !== window.location.href) {\r\n window.location.replace(newUrl);\r\n }\r\n}\r\n\r\n/**\r\n * 获取当前完整URL(包含所有参数)\r\n * @returns {string} 当前URL\r\n */\r\nexport function getCurrentUrlWithParams() {\r\n if (!isBrowser()) return '';\r\n return window.location.href;\r\n}\r\n\r\n/**\r\n * 合并配置对象\r\n * @param {Object} defaults - 默认配置\r\n * @param {Object} options - 用户配置\r\n * @returns {Object} 合并后的配置\r\n */\r\nexport function mergeConfigs(defaults, options) {\r\n if (!options) return { ...defaults };\r\n const merged = { ...defaults };\r\n for (const key in options) {\r\n if (options.hasOwnProperty(key)) {\r\n merged[key] = options[key];\r\n }\r\n }\r\n return merged;\r\n}","import { isBrowser } from './utils';\r\n\r\n/**\r\n * 通用HTTP请求工具\r\n * @param {string} url - 请求URL\r\n * @param {Object} options - 请求选项\r\n * @param {string} [options.method='GET'] - 请求方法\r\n * @param {Object} [options.data] - 请求数据\r\n * @param {Object} [options.headers] - 请求头\r\n * @param {number} [options.timeout=5000] - 超时时间(ms)\r\n * @returns {Promise<Object>} 请求结果\r\n */\r\nexport async function request(url, {\r\n method = 'GET',\r\n data = {},\r\n headers = {},\r\n timeout = 5000\r\n} = {}) {\r\n if (!isBrowser()) {\r\n return {\r\n code: -200,\r\n msg: 'request方法只能在浏览器环境使用',\r\n success: false\r\n };\r\n }\r\n\r\n // 超时控制\r\n const controller = new AbortController();\r\n const timeoutId = setTimeout(() => controller.abort(), timeout);\r\n\r\n // 构建请求配置\r\n const options = {\r\n method: method.toUpperCase(),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...headers\r\n },\r\n signal: controller.signal\r\n };\r\n\r\n // 处理请求体(GET请求不携带body)\r\n if (options.method !== 'GET' && data) {\r\n options.body = JSON.stringify(data);\r\n }\r\n\r\n try {\r\n const response = await fetch(url, options);\r\n clearTimeout(timeoutId);\r\n\r\n // 处理HTTP错误状态码\r\n if (!response.ok) {\r\n return {\r\n code: response.status,\r\n msg: `HTTP请求失败: ${response.statusText}`,\r\n success: false\r\n };\r\n }\r\n\r\n // 尝试解析JSON响应\r\n try {\r\n const result = await response.json();\r\n return result;\r\n } catch (jsonError) {\r\n return {\r\n code: -201,\r\n msg: '响应数据不是有效的JSON格式',\r\n success: false\r\n };\r\n }\r\n } catch (error) {\r\n clearTimeout(timeoutId);\r\n\r\n // 超时错误处理\r\n if (error.name === 'AbortError') {\r\n return {\r\n code: -202,\r\n msg: `请求超时(${timeout}ms)`,\r\n success: false\r\n };\r\n }\r\n\r\n // 其他网络错误\r\n return {\r\n code: -203,\r\n msg: `网络请求失败: ${error.message}`,\r\n success: false\r\n };\r\n }\r\n}","import { request } from './request';\r\nimport { isBrowser, getQueryParam, removeQueryParam, getCurrentUrlWithParams, mergeConfigs } from './utils';\r\n\r\n// 默认配置\r\nconst DEFAULT_CONFIG = {\r\n accessCodeKey: 'accessCode',\r\n tokenKey: 'scm_token',\r\n timeout: 5000,\r\n headers: {},\r\n tokenApi: '',\r\n refreshCodeApi: '',\r\n logoutApi: '',\r\n logOutUrl: '',\r\n storage: localStorage, // 可替换为sessionStorage\r\n};\r\n\r\nlet config = null;\r\n\r\n/**\r\n * 验证配置的有效性\r\n * @param {Object} options - 配置选项\r\n * @throws {Error} 当配置无效时抛出错误\r\n */\r\nfunction validateConfig(options) {\r\n if (typeof options.accessCodeKey !== 'string' || options.accessCodeKey.trim() === '') {\r\n throw new Error('accessCodeKey必须是有效的字符串');\r\n }\r\n if (typeof options.tokenKey !== 'string' || options.tokenKey.trim() === '') {\r\n throw new Error('tokenKey必须是有效的字符串');\r\n }\r\n if (options.storage && (typeof options.storage.setItem !== 'function' || typeof options.storage.getItem !== 'function')) {\r\n throw new Error('storage必须实现setItem和getItem方法');\r\n }\r\n}\r\n\r\n/**\r\n * 创建SSO实例\r\n * @returns {Object} SSO实例\r\n */\r\nexport function createSSO() {\r\n return {\r\n /**\r\n * 初始化SDK\r\n * @param {Object} options - 配置参数\r\n * @returns {Promise<Object>} 接口返回结果\r\n */\r\n async init(options = {}) {\r\n try {\r\n // 合并并验证配置\r\n config = mergeConfigs(DEFAULT_CONFIG, options);\r\n validateConfig(config);\r\n\r\n const accessCode = getQueryParam(config.accessCodeKey);\r\n\r\n // 验证必要的API配置\r\n if (!config.tokenApi) {\r\n return { code: -100, msg: '缺少tokenApi配置', success: false };\r\n }\r\n\r\n // 如果存在accessCode,尝试获取token\r\n if (accessCode) {\r\n const result = await request(\r\n config.tokenApi,\r\n {\r\n method: 'POST',\r\n data: { accessCode },\r\n headers: config.headers,\r\n timeout: config.timeout\r\n }\r\n );\r\n\r\n if (result.code === 0 && result.data) {\r\n config.storage.setItem(config.tokenKey, result.data);\r\n removeQueryParam(config.accessCodeKey);\r\n }\r\n return result;\r\n }\r\n // 如果没有token,跳转到登录页\r\n else if (!this.getToken()) {\r\n if (isBrowser() && config.logOutUrl) {\r\n window.location.href = `${config.logOutUrl}?redirect_uri=${encodeURIComponent(getCurrentUrlWithParams())}`;\r\n }\r\n }\r\n\r\n return { code: 0, msg: '初始化成功', success: true };\r\n } catch (error) {\r\n return { code: -100, msg: `初始化失败: ${error.message}`, success: false };\r\n }\r\n },\r\n\r\n /**\r\n * 获取存储的token\r\n * @returns {string|null} token值或null\r\n */\r\n getToken() {\r\n if (!config || !isBrowser()) return null;\r\n return config.storage.getItem(config.tokenKey);\r\n },\r\n\r\n /**\r\n * 删除存储的token\r\n */\r\n removeToken() {\r\n if (!config || !isBrowser()) return;\r\n config.storage.removeItem(config.tokenKey);\r\n },\r\n\r\n /**\r\n * 退出登录\r\n * @returns {Promise<Object>} 接口返回结果\r\n */\r\n async logout() {\r\n if (!config) {\r\n return { code: -101, msg: '请先调用init方法初始化', success: false };\r\n }\r\n\r\n if (!config.logoutApi) {\r\n return { code: -102, msg: '未配置logoutApi', success: false };\r\n }\r\n\r\n const token = this.getToken();\r\n if (token) {\r\n try {\r\n const result = await request(\r\n config.logoutApi,\r\n {\r\n method: 'POST',\r\n headers: { ...config.headers, [config.tokenKey]: token },\r\n timeout: config.timeout\r\n }\r\n );\r\n this.removeToken();\r\n\r\n if (isBrowser() && config.logOutUrl) {\r\n window.location.href = `${config.logOutUrl}?redirect_uri=${encodeURIComponent(getCurrentUrlWithParams())}`;\r\n }\r\n return result;\r\n } catch (error) {\r\n return { code: -103, msg: `退出失败: ${error.message}`, success: false };\r\n }\r\n } else {\r\n this.removeToken();\r\n if (isBrowser() && config.logOutUrl) {\r\n window.location.href = `${config.logOutUrl}?redirect_uri=${encodeURIComponent(getCurrentUrlWithParams())}`;\r\n }\r\n return { code: 0, msg: '已成功清除token', success: true };\r\n }\r\n },\r\n\r\n /**\r\n * 用token换取新accessCode并跳转到指定URL\r\n * @param {string} redirectUrl - 目标跳转地址\r\n * @returns {Promise<Object>} 接口返回结果\r\n */\r\n async toUrl(redirectUrl) {\r\n if (!config) {\r\n return { code: -101, msg: '请先调用init方法初始化', success: false };\r\n }\r\n\r\n if (!redirectUrl) {\r\n return { code: -104, msg: '请提供跳转地址', success: false };\r\n }\r\n\r\n if (!config.refreshCodeApi) {\r\n return { code: -105, msg: '未配置refreshCodeApi', success: false };\r\n }\r\n\r\n const token = this.getToken();\r\n if (!token) {\r\n if (isBrowser() && config.logOutUrl) {\r\n // 修改:使用参数传入的redirectUrl作为重定向地址\r\n window.location.href = `${config.logOutUrl}?redirect_uri=${encodeURIComponent(redirectUrl)}`;\r\n }\r\n return { code: -106, msg: '未找到有效token', success: false };\r\n }\r\n\r\n try {\r\n const result = await request(\r\n config.refreshCodeApi,\r\n {\r\n method: 'POST',\r\n headers: { ...config.headers, [config.tokenKey]: token },\r\n timeout: config.timeout\r\n }\r\n );\r\n\r\n if (result.code === 0 && result.data && isBrowser()) {\r\n const url = new URL(redirectUrl);\r\n url.searchParams.set(config.accessCodeKey, result.data);\r\n window.location.href = url.toString();\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n return { code: -107, msg: `跳转失败: ${error.message}`, success: false };\r\n }\r\n },\r\n\r\n /**\r\n * 获取accessCode(通过token换取)\r\n * @returns {Promise<Object>} 接口返回结果(data为accessCode)\r\n */\r\n async getAccessCode() {\r\n if (!config) {\r\n return { code: -101, msg: '请先调用init方法初始化', success: false };\r\n }\r\n\r\n const token = this.getToken();\r\n if (!token) {\r\n return { code: -106, msg: '未找到有效token', success: false };\r\n }\r\n\r\n if (!config.refreshCodeApi) {\r\n return { code: -105, msg: '未配置refreshCodeApi', success: false };\r\n }\r\n\r\n return request(\r\n config.refreshCodeApi,\r\n {\r\n method: 'POST',\r\n headers: { ...config.headers, [config.tokenKey]: token },\r\n timeout: config.timeout\r\n }\r\n );\r\n },\r\n\r\n /**\r\n * 获取当前配置\r\n * @returns {Object|null} 当前配置\r\n */\r\n getConfig() {\r\n return { ...config }; // 返回配置的副本,防止外部修改\r\n }\r\n };\r\n}\r\n\r\n// 创建默认实例\r\nexport const lgsso = createSSO();\r\n"],"names":["isBrowser","window","document","getCurrentUrlWithParams","location","href","async","request","url","method","data","headers","timeout","code","msg","success","controller","AbortController","timeoutId","setTimeout","abort","options","toUpperCase","signal","body","JSON","stringify","response","fetch","clearTimeout","ok","status","statusText","json","jsonError","error","name","message","DEFAULT_CONFIG","accessCodeKey","tokenKey","tokenApi","refreshCodeApi","logoutApi","logOutUrl","storage","localStorage","config","createSSO","init","defaults","merged","key","hasOwnProperty","mergeConfigs","trim","Error","setItem","getItem","validateConfig","accessCode","targetUrl","urlObj","URL","param","searchParams","get","hash","includes","hashQuery","split","URLSearchParams","getQueryParam","result","params","newUrl","hashPath","has","delete","newHash","toString","search","replace","removeQueryParam","this","getToken","encodeURIComponent","removeToken","removeItem","logout","token","toUrl","redirectUrl","set","getAccessCode","getConfig","lgsso"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lgsso-sdk",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.91",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "无框架依赖的单点登录SDK",
|
|
5
|
+
"description": "无框架依赖的单点登录SDK",
|
|
6
6
|
"main": "dist/lgsso-sdk.js",
|
|
7
7
|
"module": "dist/lgsso-sdk.esm.js",
|
|
8
8
|
"browser": "dist/lgsso-sdk.min.js",
|
|
9
9
|
"unpkg": "dist/lgsso-sdk.min.js",
|
|
10
10
|
"jsdelivr": "dist/lgsso-sdk.min.js",
|
|
11
|
+
"files": [
|
|
12
|
+
"dist/",
|
|
13
|
+
"src/"
|
|
14
|
+
],
|
|
11
15
|
"scripts": {
|
|
12
16
|
"build": "rollup -c",
|
|
13
17
|
"dev": "rollup -c -w",
|
package/src/utils.js
CHANGED
package/rollup.config.js
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import resolve from '@rollup/plugin-node-resolve';
|
|
2
|
-
import commonjs from '@rollup/plugin-commonjs';
|
|
3
|
-
import { terser } from 'rollup-plugin-terser';
|
|
4
|
-
|
|
5
|
-
export default [
|
|
6
|
-
{
|
|
7
|
-
input: 'src/index.js',
|
|
8
|
-
output: [
|
|
9
|
-
{
|
|
10
|
-
file: 'dist/lgsso-sdk.js',
|
|
11
|
-
format: 'umd',
|
|
12
|
-
name: 'lgsso',
|
|
13
|
-
sourcemap: true,
|
|
14
|
-
interop: 'auto',
|
|
15
|
-
exports: 'named',
|
|
16
|
-
// 新增:禁用CommonJS语法生成
|
|
17
|
-
strict: true, // 强制严格模式,避免意外的全局变量
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
file: 'dist/lgsso-sdk.min.js',
|
|
21
|
-
format: 'umd',
|
|
22
|
-
name: 'lgsso',
|
|
23
|
-
sourcemap: true,
|
|
24
|
-
plugins: [terser()],
|
|
25
|
-
interop: 'auto',
|
|
26
|
-
exports: 'named',
|
|
27
|
-
strict: true,
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
file: 'dist/lgsso-sdk.esm.js',
|
|
31
|
-
format: 'esm',
|
|
32
|
-
sourcemap: true
|
|
33
|
-
}
|
|
34
|
-
],
|
|
35
|
-
plugins: [
|
|
36
|
-
resolve({
|
|
37
|
-
browser: true, // 只解析浏览器环境的依赖
|
|
38
|
-
preferBuiltins: false, // 禁用Node.js内置模块(关键)
|
|
39
|
-
// 新增:明确排除Node.js核心模块
|
|
40
|
-
resolveOnly: (module) => !module.includes('node:'),
|
|
41
|
-
}),
|
|
42
|
-
commonjs({
|
|
43
|
-
transformMixedEsModules: true, // 强制转换混合模块(关键)
|
|
44
|
-
include: /node_modules/, // 处理所有node_modules依赖
|
|
45
|
-
// 新增:自定义转换规则,强制替换require为浏览器兼容语法
|
|
46
|
-
requireReturnsDefault: 'namespace', // 统一处理模块导出
|
|
47
|
-
}),
|
|
48
|
-
// 新增:手动替换可能残留的require(终极方案)
|
|
49
|
-
{
|
|
50
|
-
name: 'remove-require',
|
|
51
|
-
renderChunk(code) {
|
|
52
|
-
// 替换全局require为错误提示(避免运行时报错)
|
|
53
|
-
return code.replace(/require\(['"](.*?)['"]\)/g, (match) => {
|
|
54
|
-
console.warn(`残留的require: ${match}`); // 调试用
|
|
55
|
-
return `(function(){throw new Error('Unsupported require: ${match}')})()`;
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
]
|
|
60
|
-
}
|
|
61
|
-
];
|
package/yarn-error.log
DELETED
|
@@ -1,418 +0,0 @@
|
|
|
1
|
-
Arguments:
|
|
2
|
-
E:\node\node.exe E:\yarn\bin\yarn.js build
|
|
3
|
-
|
|
4
|
-
PATH:
|
|
5
|
-
E:\xftp\;E:\xshell\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\iCLS\;C:\Program Files\Intel\Intel(R) Management Engine Components\iCLS\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;E:\Git\cmd;E:\git小乌龟\bin;C:\Program Files\python;C:\Program Files\python\Scripts;E:\BtSoft\panel\script;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;E:\BtSoft\php\71;C:\ProgramData\ComposerSetup\bin;E:\yarn\bin\;E:\SVN\bin;E:\jdks\jdk-11.0.7_windows-x64_bin\jdk-11.0.7\bin;D:\java\library\apache-maven-3.3.9\bin;E:\nvm;E:\node;C:\Users\MECHREVO\AppData\Local\Yarn\bin;E:\go\bin;;E:\微信web开发者工具\dll;C:\Users\MECHREVO\AppData\Local\Microsoft\WindowsApps;E:\Microsoft VS Code\bin;C:\Users\MECHREVO\AppData\Roaming\Composer\vendor\bin;C:\Users\MECHREVO\AppData\Local\Yarn\bin;C:\Users\MECHREVO\AppData\Roaming\npm;node_modules;E:\nvm;E:\node;E:\cursor\resources\app\bin;c:\Users\MECHREVO\AppData\Roaming\Code\User\globalStorage\github.copilot-chat\debugCommand
|
|
6
|
-
|
|
7
|
-
Yarn version:
|
|
8
|
-
1.22.4
|
|
9
|
-
|
|
10
|
-
Node version:
|
|
11
|
-
14.18.0
|
|
12
|
-
|
|
13
|
-
Platform:
|
|
14
|
-
win32 x64
|
|
15
|
-
|
|
16
|
-
Trace:
|
|
17
|
-
SyntaxError: D:\业务代码\中联钢信\五服一管\lg-ssosdk\package.json: Unexpected token / in JSON at position 51
|
|
18
|
-
at JSON.parse (<anonymous>)
|
|
19
|
-
at E:\yarn\lib\cli.js:1625:59
|
|
20
|
-
at Generator.next (<anonymous>)
|
|
21
|
-
at step (E:\yarn\lib\cli.js:310:30)
|
|
22
|
-
at E:\yarn\lib\cli.js:321:13
|
|
23
|
-
|
|
24
|
-
npm manifest:
|
|
25
|
-
{
|
|
26
|
-
"name": "lgsso-sdk",
|
|
27
|
-
"version": "1.0.7", // 递增版本号
|
|
28
|
-
"type": "module",
|
|
29
|
-
"description": "无框架依赖的单点登录SDK",
|
|
30
|
-
"main": "dist/lgsso-sdk.js",// 明确区分ESM和CJS入口
|
|
31
|
-
"module": "dist/lgsso-sdk.esm.js", // 新增ESM入口
|
|
32
|
-
"browser": "dist/lgsso-sdk.min.js",
|
|
33
|
-
"unpkg": "dist/lgsso-sdk.min.js",
|
|
34
|
-
"jsdelivr": "dist/lgsso-sdk.min.js",
|
|
35
|
-
"scripts": {
|
|
36
|
-
"build": "rollup -c",
|
|
37
|
-
"dev": "rollup -c -w",
|
|
38
|
-
"test": "echo \"Error: no test specified\" && exit 0"
|
|
39
|
-
},
|
|
40
|
-
"keywords": [
|
|
41
|
-
"sso",
|
|
42
|
-
"single sign on",
|
|
43
|
-
"authentication",
|
|
44
|
-
"auth",
|
|
45
|
-
"login",
|
|
46
|
-
"logout"
|
|
47
|
-
],
|
|
48
|
-
"author": "",
|
|
49
|
-
"license": "MIT",
|
|
50
|
-
"devDependencies": {
|
|
51
|
-
"@rollup/plugin-commonjs": "^25.0.0",
|
|
52
|
-
"@rollup/plugin-node-resolve": "^15.0.0",
|
|
53
|
-
"rollup": "^3.29.4",
|
|
54
|
-
"rollup-plugin-terser": "^7.0.2"
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
yarn manifest:
|
|
59
|
-
No manifest
|
|
60
|
-
|
|
61
|
-
Lockfile:
|
|
62
|
-
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
|
63
|
-
# yarn lockfile v1
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
"@babel/code-frame@^7.10.4":
|
|
67
|
-
version "7.27.1"
|
|
68
|
-
resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be"
|
|
69
|
-
integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==
|
|
70
|
-
dependencies:
|
|
71
|
-
"@babel/helper-validator-identifier" "^7.27.1"
|
|
72
|
-
js-tokens "^4.0.0"
|
|
73
|
-
picocolors "^1.1.1"
|
|
74
|
-
|
|
75
|
-
"@babel/helper-validator-identifier@^7.27.1":
|
|
76
|
-
version "7.27.1"
|
|
77
|
-
resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8"
|
|
78
|
-
integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==
|
|
79
|
-
|
|
80
|
-
"@jridgewell/gen-mapping@^0.3.5":
|
|
81
|
-
version "0.3.13"
|
|
82
|
-
resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f"
|
|
83
|
-
integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==
|
|
84
|
-
dependencies:
|
|
85
|
-
"@jridgewell/sourcemap-codec" "^1.5.0"
|
|
86
|
-
"@jridgewell/trace-mapping" "^0.3.24"
|
|
87
|
-
|
|
88
|
-
"@jridgewell/resolve-uri@^3.1.0":
|
|
89
|
-
version "3.1.2"
|
|
90
|
-
resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
|
|
91
|
-
integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
|
|
92
|
-
|
|
93
|
-
"@jridgewell/source-map@^0.3.3":
|
|
94
|
-
version "0.3.11"
|
|
95
|
-
resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz#b21835cbd36db656b857c2ad02ebd413cc13a9ba"
|
|
96
|
-
integrity sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==
|
|
97
|
-
dependencies:
|
|
98
|
-
"@jridgewell/gen-mapping" "^0.3.5"
|
|
99
|
-
"@jridgewell/trace-mapping" "^0.3.25"
|
|
100
|
-
|
|
101
|
-
"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0":
|
|
102
|
-
version "1.5.5"
|
|
103
|
-
resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba"
|
|
104
|
-
integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==
|
|
105
|
-
|
|
106
|
-
"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
|
|
107
|
-
version "0.3.30"
|
|
108
|
-
resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz#4a76c4daeee5df09f5d3940e087442fb36ce2b99"
|
|
109
|
-
integrity sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==
|
|
110
|
-
dependencies:
|
|
111
|
-
"@jridgewell/resolve-uri" "^3.1.0"
|
|
112
|
-
"@jridgewell/sourcemap-codec" "^1.4.14"
|
|
113
|
-
|
|
114
|
-
"@rollup/plugin-commonjs@^25.0.0":
|
|
115
|
-
version "25.0.8"
|
|
116
|
-
resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.8.tgz#c77e608ab112a666b7f2a6bea625c73224f7dd34"
|
|
117
|
-
integrity sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==
|
|
118
|
-
dependencies:
|
|
119
|
-
"@rollup/pluginutils" "^5.0.1"
|
|
120
|
-
commondir "^1.0.1"
|
|
121
|
-
estree-walker "^2.0.2"
|
|
122
|
-
glob "^8.0.3"
|
|
123
|
-
is-reference "1.2.1"
|
|
124
|
-
magic-string "^0.30.3"
|
|
125
|
-
|
|
126
|
-
"@rollup/plugin-node-resolve@^15.0.0":
|
|
127
|
-
version "15.3.1"
|
|
128
|
-
resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz#66008953c2524be786aa319d49e32f2128296a78"
|
|
129
|
-
integrity sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==
|
|
130
|
-
dependencies:
|
|
131
|
-
"@rollup/pluginutils" "^5.0.1"
|
|
132
|
-
"@types/resolve" "1.20.2"
|
|
133
|
-
deepmerge "^4.2.2"
|
|
134
|
-
is-module "^1.0.0"
|
|
135
|
-
resolve "^1.22.1"
|
|
136
|
-
|
|
137
|
-
"@rollup/pluginutils@^5.0.1":
|
|
138
|
-
version "5.2.0"
|
|
139
|
-
resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.2.0.tgz#eac25ca5b0bdda4ba735ddaca5fbf26bd435f602"
|
|
140
|
-
integrity sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==
|
|
141
|
-
dependencies:
|
|
142
|
-
"@types/estree" "^1.0.0"
|
|
143
|
-
estree-walker "^2.0.2"
|
|
144
|
-
picomatch "^4.0.2"
|
|
145
|
-
|
|
146
|
-
"@types/estree@*", "@types/estree@^1.0.0":
|
|
147
|
-
version "1.0.8"
|
|
148
|
-
resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e"
|
|
149
|
-
integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
|
|
150
|
-
|
|
151
|
-
"@types/node@*":
|
|
152
|
-
version "24.3.0"
|
|
153
|
-
resolved "https://registry.npmjs.org/@types/node/-/node-24.3.0.tgz#89b09f45cb9a8ee69466f18ee5864e4c3eb84dec"
|
|
154
|
-
integrity sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==
|
|
155
|
-
dependencies:
|
|
156
|
-
undici-types "~7.10.0"
|
|
157
|
-
|
|
158
|
-
"@types/resolve@1.20.2":
|
|
159
|
-
version "1.20.2"
|
|
160
|
-
resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975"
|
|
161
|
-
integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==
|
|
162
|
-
|
|
163
|
-
acorn@^8.14.0:
|
|
164
|
-
version "8.15.0"
|
|
165
|
-
resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816"
|
|
166
|
-
integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==
|
|
167
|
-
|
|
168
|
-
balanced-match@^1.0.0:
|
|
169
|
-
version "1.0.2"
|
|
170
|
-
resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
|
171
|
-
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
|
|
172
|
-
|
|
173
|
-
brace-expansion@^2.0.1:
|
|
174
|
-
version "2.0.2"
|
|
175
|
-
resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7"
|
|
176
|
-
integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==
|
|
177
|
-
dependencies:
|
|
178
|
-
balanced-match "^1.0.0"
|
|
179
|
-
|
|
180
|
-
buffer-from@^1.0.0:
|
|
181
|
-
version "1.1.2"
|
|
182
|
-
resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
|
|
183
|
-
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
|
|
184
|
-
|
|
185
|
-
commander@^2.20.0:
|
|
186
|
-
version "2.20.3"
|
|
187
|
-
resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
|
188
|
-
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
|
189
|
-
|
|
190
|
-
commondir@^1.0.1:
|
|
191
|
-
version "1.0.1"
|
|
192
|
-
resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
|
|
193
|
-
integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
|
|
194
|
-
|
|
195
|
-
deepmerge@^4.2.2:
|
|
196
|
-
version "4.3.1"
|
|
197
|
-
resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a"
|
|
198
|
-
integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==
|
|
199
|
-
|
|
200
|
-
estree-walker@^2.0.2:
|
|
201
|
-
version "2.0.2"
|
|
202
|
-
resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
|
|
203
|
-
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
|
|
204
|
-
|
|
205
|
-
fs.realpath@^1.0.0:
|
|
206
|
-
version "1.0.0"
|
|
207
|
-
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
|
208
|
-
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
|
|
209
|
-
|
|
210
|
-
fsevents@~2.3.2:
|
|
211
|
-
version "2.3.3"
|
|
212
|
-
resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
|
|
213
|
-
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
|
|
214
|
-
|
|
215
|
-
function-bind@^1.1.2:
|
|
216
|
-
version "1.1.2"
|
|
217
|
-
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
|
|
218
|
-
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
|
|
219
|
-
|
|
220
|
-
glob@^8.0.3:
|
|
221
|
-
version "8.1.0"
|
|
222
|
-
resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e"
|
|
223
|
-
integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==
|
|
224
|
-
dependencies:
|
|
225
|
-
fs.realpath "^1.0.0"
|
|
226
|
-
inflight "^1.0.4"
|
|
227
|
-
inherits "2"
|
|
228
|
-
minimatch "^5.0.1"
|
|
229
|
-
once "^1.3.0"
|
|
230
|
-
|
|
231
|
-
has-flag@^4.0.0:
|
|
232
|
-
version "4.0.0"
|
|
233
|
-
resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
|
|
234
|
-
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
|
|
235
|
-
|
|
236
|
-
hasown@^2.0.2:
|
|
237
|
-
version "2.0.2"
|
|
238
|
-
resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
|
|
239
|
-
integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
|
|
240
|
-
dependencies:
|
|
241
|
-
function-bind "^1.1.2"
|
|
242
|
-
|
|
243
|
-
inflight@^1.0.4:
|
|
244
|
-
version "1.0.6"
|
|
245
|
-
resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
|
246
|
-
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
|
|
247
|
-
dependencies:
|
|
248
|
-
once "^1.3.0"
|
|
249
|
-
wrappy "1"
|
|
250
|
-
|
|
251
|
-
inherits@2:
|
|
252
|
-
version "2.0.4"
|
|
253
|
-
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
|
254
|
-
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
|
255
|
-
|
|
256
|
-
is-core-module@^2.16.0:
|
|
257
|
-
version "2.16.1"
|
|
258
|
-
resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4"
|
|
259
|
-
integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
|
|
260
|
-
dependencies:
|
|
261
|
-
hasown "^2.0.2"
|
|
262
|
-
|
|
263
|
-
is-module@^1.0.0:
|
|
264
|
-
version "1.0.0"
|
|
265
|
-
resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
|
|
266
|
-
integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==
|
|
267
|
-
|
|
268
|
-
is-reference@1.2.1:
|
|
269
|
-
version "1.2.1"
|
|
270
|
-
resolved "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7"
|
|
271
|
-
integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==
|
|
272
|
-
dependencies:
|
|
273
|
-
"@types/estree" "*"
|
|
274
|
-
|
|
275
|
-
jest-worker@^26.2.1:
|
|
276
|
-
version "26.6.2"
|
|
277
|
-
resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed"
|
|
278
|
-
integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==
|
|
279
|
-
dependencies:
|
|
280
|
-
"@types/node" "*"
|
|
281
|
-
merge-stream "^2.0.0"
|
|
282
|
-
supports-color "^7.0.0"
|
|
283
|
-
|
|
284
|
-
js-tokens@^4.0.0:
|
|
285
|
-
version "4.0.0"
|
|
286
|
-
resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
|
287
|
-
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
|
|
288
|
-
|
|
289
|
-
magic-string@^0.30.3:
|
|
290
|
-
version "0.30.17"
|
|
291
|
-
resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453"
|
|
292
|
-
integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==
|
|
293
|
-
dependencies:
|
|
294
|
-
"@jridgewell/sourcemap-codec" "^1.5.0"
|
|
295
|
-
|
|
296
|
-
merge-stream@^2.0.0:
|
|
297
|
-
version "2.0.0"
|
|
298
|
-
resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
|
|
299
|
-
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
|
|
300
|
-
|
|
301
|
-
minimatch@^5.0.1:
|
|
302
|
-
version "5.1.6"
|
|
303
|
-
resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
|
|
304
|
-
integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
|
|
305
|
-
dependencies:
|
|
306
|
-
brace-expansion "^2.0.1"
|
|
307
|
-
|
|
308
|
-
once@^1.3.0:
|
|
309
|
-
version "1.4.0"
|
|
310
|
-
resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
|
311
|
-
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
|
|
312
|
-
dependencies:
|
|
313
|
-
wrappy "1"
|
|
314
|
-
|
|
315
|
-
path-parse@^1.0.7:
|
|
316
|
-
version "1.0.7"
|
|
317
|
-
resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
|
|
318
|
-
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
|
|
319
|
-
|
|
320
|
-
picocolors@^1.1.1:
|
|
321
|
-
version "1.1.1"
|
|
322
|
-
resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
|
|
323
|
-
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
|
|
324
|
-
|
|
325
|
-
picomatch@^4.0.2:
|
|
326
|
-
version "4.0.3"
|
|
327
|
-
resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042"
|
|
328
|
-
integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==
|
|
329
|
-
|
|
330
|
-
randombytes@^2.1.0:
|
|
331
|
-
version "2.1.0"
|
|
332
|
-
resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
|
|
333
|
-
integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
|
|
334
|
-
dependencies:
|
|
335
|
-
safe-buffer "^5.1.0"
|
|
336
|
-
|
|
337
|
-
resolve@^1.22.1:
|
|
338
|
-
version "1.22.10"
|
|
339
|
-
resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39"
|
|
340
|
-
integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==
|
|
341
|
-
dependencies:
|
|
342
|
-
is-core-module "^2.16.0"
|
|
343
|
-
path-parse "^1.0.7"
|
|
344
|
-
supports-preserve-symlinks-flag "^1.0.0"
|
|
345
|
-
|
|
346
|
-
rollup-plugin-terser@^7.0.2:
|
|
347
|
-
version "7.0.2"
|
|
348
|
-
resolved "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d"
|
|
349
|
-
integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==
|
|
350
|
-
dependencies:
|
|
351
|
-
"@babel/code-frame" "^7.10.4"
|
|
352
|
-
jest-worker "^26.2.1"
|
|
353
|
-
serialize-javascript "^4.0.0"
|
|
354
|
-
terser "^5.0.0"
|
|
355
|
-
|
|
356
|
-
rollup@^3.29.4:
|
|
357
|
-
version "3.29.5"
|
|
358
|
-
resolved "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz#8a2e477a758b520fb78daf04bca4c522c1da8a54"
|
|
359
|
-
integrity sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==
|
|
360
|
-
optionalDependencies:
|
|
361
|
-
fsevents "~2.3.2"
|
|
362
|
-
|
|
363
|
-
safe-buffer@^5.1.0:
|
|
364
|
-
version "5.2.1"
|
|
365
|
-
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
|
|
366
|
-
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
|
|
367
|
-
|
|
368
|
-
serialize-javascript@^4.0.0:
|
|
369
|
-
version "4.0.0"
|
|
370
|
-
resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa"
|
|
371
|
-
integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==
|
|
372
|
-
dependencies:
|
|
373
|
-
randombytes "^2.1.0"
|
|
374
|
-
|
|
375
|
-
source-map-support@~0.5.20:
|
|
376
|
-
version "0.5.21"
|
|
377
|
-
resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
|
|
378
|
-
integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
|
|
379
|
-
dependencies:
|
|
380
|
-
buffer-from "^1.0.0"
|
|
381
|
-
source-map "^0.6.0"
|
|
382
|
-
|
|
383
|
-
source-map@^0.6.0:
|
|
384
|
-
version "0.6.1"
|
|
385
|
-
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
|
386
|
-
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
|
387
|
-
|
|
388
|
-
supports-color@^7.0.0:
|
|
389
|
-
version "7.2.0"
|
|
390
|
-
resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
|
|
391
|
-
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
|
|
392
|
-
dependencies:
|
|
393
|
-
has-flag "^4.0.0"
|
|
394
|
-
|
|
395
|
-
supports-preserve-symlinks-flag@^1.0.0:
|
|
396
|
-
version "1.0.0"
|
|
397
|
-
resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
|
|
398
|
-
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
|
|
399
|
-
|
|
400
|
-
terser@^5.0.0:
|
|
401
|
-
version "5.43.1"
|
|
402
|
-
resolved "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz#88387f4f9794ff1a29e7ad61fb2932e25b4fdb6d"
|
|
403
|
-
integrity sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==
|
|
404
|
-
dependencies:
|
|
405
|
-
"@jridgewell/source-map" "^0.3.3"
|
|
406
|
-
acorn "^8.14.0"
|
|
407
|
-
commander "^2.20.0"
|
|
408
|
-
source-map-support "~0.5.20"
|
|
409
|
-
|
|
410
|
-
undici-types@~7.10.0:
|
|
411
|
-
version "7.10.0"
|
|
412
|
-
resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz#4ac2e058ce56b462b056e629cc6a02393d3ff350"
|
|
413
|
-
integrity sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==
|
|
414
|
-
|
|
415
|
-
wrappy@1:
|
|
416
|
-
version "1.0.2"
|
|
417
|
-
resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
|
418
|
-
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
|