sa2kit 1.6.25 → 1.6.26

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.
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkTKCYPDWU_js = require('../../chunk-TKCYPDWU.js');
4
- var chunkLQ3PBDTK_js = require('../../chunk-LQ3PBDTK.js');
4
+ var chunkBLQRF7C7_js = require('../../chunk-BLQRF7C7.js');
5
5
  var chunkKH6RQ4J5_js = require('../../chunk-KH6RQ4J5.js');
6
6
  var chunk6PRFP5EG_js = require('../../chunk-6PRFP5EG.js');
7
7
  var chunkZRAW3HXA_js = require('../../chunk-ZRAW3HXA.js');
@@ -3002,6 +3002,7 @@ var UniversalFileService = class extends events.EventEmitter {
3002
3002
  async initialize() {
3003
3003
  logger6.info("\u{1F680} [UniversalFileService] \u5F00\u59CB\u521D\u59CB\u5316\u6587\u4EF6\u670D\u52A1...");
3004
3004
  try {
3005
+ await this.validateConfiguration();
3005
3006
  await this.initializeStorageProviders();
3006
3007
  await this.initializeCDNProviders();
3007
3008
  await this.initializeFileProcessors();
@@ -3017,9 +3018,21 @@ var UniversalFileService = class extends events.EventEmitter {
3017
3018
  async reinitializeStorageProviders() {
3018
3019
  logger6.info("\u{1F504} [UniversalFileService] \u91CD\u65B0\u521D\u59CB\u5316\u5B58\u50A8\u63D0\u4F9B\u8005...");
3019
3020
  try {
3020
- const ossProvider = this.storageProviders.get("aliyun-oss");
3021
- if (ossProvider && "reinitialize" in ossProvider) {
3022
- logger6.info("\u{1F504} [UniversalFileService] \u91CD\u65B0\u521D\u59CB\u5316\u963F\u91CC\u4E91OSS\u63D0\u4F9B\u8005...");
3021
+ for (const [type, provider] of this.storageProviders) {
3022
+ if ("reinitialize" in provider) {
3023
+ try {
3024
+ logger6.info(`\u{1F504} [UniversalFileService] \u91CD\u65B0\u521D\u59CB\u5316\u5B58\u50A8\u63D0\u4F9B\u8005: ${type}...`);
3025
+ const config = this.config.storageProviders?.[type];
3026
+ if (config) {
3027
+ await provider.reinitialize(config);
3028
+ logger6.info(`\u2705 [UniversalFileService] \u5B58\u50A8\u63D0\u4F9B\u8005\u91CD\u65B0\u521D\u59CB\u5316\u5B8C\u6210: ${type}`);
3029
+ } else {
3030
+ logger6.warn(`\u26A0\uFE0F [UniversalFileService] \u5B58\u50A8\u63D0\u4F9B\u8005\u914D\u7F6E\u4E0D\u5B58\u5728: ${type}`);
3031
+ }
3032
+ } catch (error) {
3033
+ logger6.error(`\u274C [UniversalFileService] \u5B58\u50A8\u63D0\u4F9B\u8005\u91CD\u65B0\u521D\u59CB\u5316\u5931\u8D25: ${type}`, error);
3034
+ }
3035
+ }
3023
3036
  }
3024
3037
  logger6.info("\u2705 [UniversalFileService] \u5B58\u50A8\u63D0\u4F9B\u8005\u91CD\u65B0\u521D\u59CB\u5316\u5B8C\u6210");
3025
3038
  } catch (error) {
@@ -3336,6 +3349,42 @@ var UniversalFileService = class extends events.EventEmitter {
3336
3349
  this.off(eventType, listener);
3337
3350
  }
3338
3351
  // ============= 私有方法 =============
3352
+ /**
3353
+ * 验证配置是否完整
3354
+ */
3355
+ async validateConfiguration() {
3356
+ logger6.info("\u{1F50D} [UniversalFileService] \u9A8C\u8BC1\u914D\u7F6E\u6587\u4EF6...");
3357
+ if (!this.config) {
3358
+ throw new Error("\u6587\u4EF6\u670D\u52A1\u914D\u7F6E\u4E3A\u7A7A");
3359
+ }
3360
+ if (!this.config.storage) {
3361
+ throw new Error("\u5B58\u50A8\u914D\u7F6E\u4E3A\u7A7A");
3362
+ }
3363
+ if (this.config.storage.type === "aliyun-oss") {
3364
+ const ossConfig = this.config.storage;
3365
+ if (!ossConfig.accessKeyId || !ossConfig.accessKeySecret || !ossConfig.bucket || !ossConfig.region) {
3366
+ logger6.warn("\u26A0\uFE0F [UniversalFileService] OSS\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF0C\u7B49\u5F85\u914D\u7F6E\u52A0\u8F7D...");
3367
+ const maxRetries = 30;
3368
+ const retryInterval = 1e3;
3369
+ for (let i = 0; i < maxRetries; i++) {
3370
+ await new Promise((resolve) => setTimeout(resolve, retryInterval));
3371
+ const updatedConfig = this.config.storage;
3372
+ if (updatedConfig.accessKeyId && updatedConfig.accessKeySecret && updatedConfig.bucket && updatedConfig.region) {
3373
+ logger6.info("\u2705 [UniversalFileService] OSS\u914D\u7F6E\u52A0\u8F7D\u5B8C\u6210");
3374
+ break;
3375
+ }
3376
+ if (i === maxRetries - 1) {
3377
+ throw new Error("OSS\u914D\u7F6E\u52A0\u8F7D\u8D85\u65F6\uFF1A\u7F3A\u5C11\u5FC5\u9700\u7684\u914D\u7F6E\u9879 (accessKeyId, accessKeySecret, bucket, region)");
3378
+ }
3379
+ logger6.debug(`\u7B49\u5F85OSS\u914D\u7F6E\u52A0\u8F7D\u4E2D... (${i + 1}/${maxRetries})`);
3380
+ }
3381
+ }
3382
+ }
3383
+ if (!this.config.defaultStorage) {
3384
+ this.config.defaultStorage = this.config.storage.type;
3385
+ }
3386
+ logger6.info("\u2705 [UniversalFileService] \u914D\u7F6E\u9A8C\u8BC1\u5B8C\u6210");
3387
+ }
3339
3388
  async initializeStorageProviders() {
3340
3389
  logger6.info("\u{1F4E6} [UniversalFileService] \u5F00\u59CB\u521D\u59CB\u5316\u5B58\u50A8\u63D0\u4F9B\u8005...");
3341
3390
  if (this.storageProviders.size === 0) {
@@ -3364,7 +3413,7 @@ var UniversalFileService = class extends events.EventEmitter {
3364
3413
  try {
3365
3414
  if (this.config.storage) {
3366
3415
  if (this.config.storage.type === "aliyun-oss" && this.config.storage.enabled) {
3367
- const { AliyunOSSProvider: AliyunOSSProvider2 } = await import('../../AliyunOSSProvider-5RFTMVEB.js');
3416
+ const { AliyunOSSProvider: AliyunOSSProvider2 } = await import('../../AliyunOSSProvider-KOVWJQLL.js');
3368
3417
  const ossProvider = new AliyunOSSProvider2();
3369
3418
  this.registerStorageProvider(ossProvider);
3370
3419
  logger6.info("\u2705 [UniversalFileService] \u963F\u91CC\u4E91OSS\u63D0\u4F9B\u8005\u6CE8\u518C\u6210\u529F");
@@ -3582,6 +3631,28 @@ var UniversalFileService = class extends events.EventEmitter {
3582
3631
  throw new chunkZRAW3HXA_js.FileUploadError("\u65E0\u6743\u9650\u5220\u9664\u6B64\u6587\u4EF6");
3583
3632
  }
3584
3633
  }
3634
+ /**
3635
+ * 检查服务是否完全可用(包括存储提供者)
3636
+ */
3637
+ isFullyInitialized() {
3638
+ const hasStorageProvider = Array.from(this.storageProviders.values()).some(
3639
+ (provider) => provider.type === "aliyun-oss" || provider.type === "local"
3640
+ );
3641
+ return hasStorageProvider;
3642
+ }
3643
+ /**
3644
+ * 等待服务完全初始化(带超时)
3645
+ */
3646
+ async waitForInitialization(timeoutMs = 3e4) {
3647
+ const startTime = Date.now();
3648
+ while (!this.isFullyInitialized()) {
3649
+ if (Date.now() - startTime > timeoutMs) {
3650
+ throw new Error(`\u670D\u52A1\u521D\u59CB\u5316\u8D85\u65F6 (${timeoutMs}ms)`);
3651
+ }
3652
+ await new Promise((resolve) => setTimeout(resolve, 100));
3653
+ }
3654
+ logger6.info("\u2705 [UniversalFileService] \u670D\u52A1\u5B8C\u5168\u521D\u59CB\u5316\u5C31\u7EEA");
3655
+ }
3585
3656
  };
3586
3657
  var logger7 = chunk6PRFP5EG_js.createLogger("CacheManager");
3587
3658
  var CacheManager = class {
@@ -5002,8 +5073,13 @@ async function createFileServiceWithFactory(options = {}) {
5002
5073
  }
5003
5074
  const service = new UniversalFileService(finalConfig);
5004
5075
  if (autoInitialize) {
5005
- await service.initialize();
5006
- logger10.info("\u2705 \u6587\u4EF6\u670D\u52A1\u521B\u5EFA\u5E76\u521D\u59CB\u5316\u5B8C\u6210");
5076
+ try {
5077
+ await service.initialize();
5078
+ logger10.info("\u2705 \u6587\u4EF6\u670D\u52A1\u521B\u5EFA\u5E76\u521D\u59CB\u5316\u5B8C\u6210");
5079
+ } catch (initError) {
5080
+ logger10.warn("\u26A0\uFE0F \u6587\u4EF6\u670D\u52A1\u521D\u59CB\u5316\u5931\u8D25\uFF0C\u5C06\u63D0\u4F9B\u5EF6\u8FDF\u521D\u59CB\u5316\u7684\u652F\u6301:", initError);
5081
+ logger10.info("\u{1F4A1} \u63D0\u793A\uFF1A\u53EF\u8C03\u7528 service.reinitializeStorageProviders() \u6765\u91CD\u65B0\u521D\u59CB\u5316\u5B58\u50A8\u63D0\u4F9B\u8005");
5082
+ }
5007
5083
  } else {
5008
5084
  logger10.info("\u2705 \u6587\u4EF6\u670D\u52A1\u521B\u5EFA\u5B8C\u6210");
5009
5085
  }
@@ -5510,7 +5586,7 @@ Object.defineProperty(exports, "LocalStorageProvider", {
5510
5586
  });
5511
5587
  Object.defineProperty(exports, "AliyunOSSProvider", {
5512
5588
  enumerable: true,
5513
- get: function () { return chunkLQ3PBDTK_js.AliyunOSSProvider; }
5589
+ get: function () { return chunkBLQRF7C7_js.AliyunOSSProvider; }
5514
5590
  });
5515
5591
  exports.AliyunCDNProvider = AliyunCDNProvider;
5516
5592
  exports.ApiError = ApiError;