nestjs-temporal-core 2.0.7 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/README.md +124 -558
  2. package/dist/client/temporal-client.module.d.ts +4 -2
  3. package/dist/client/temporal-client.module.js +59 -78
  4. package/dist/client/temporal-client.module.js.map +1 -1
  5. package/dist/client/temporal-client.service.d.ts +4 -3
  6. package/dist/client/temporal-client.service.js +43 -27
  7. package/dist/client/temporal-client.service.js.map +1 -1
  8. package/dist/client/temporal-schedule.service.d.ts +8 -2
  9. package/dist/client/temporal-schedule.service.js +86 -65
  10. package/dist/client/temporal-schedule.service.js.map +1 -1
  11. package/dist/constants.d.ts +171 -32
  12. package/dist/constants.js +164 -19
  13. package/dist/constants.js.map +1 -1
  14. package/dist/decorators/communication.decorators.d.ts +5 -0
  15. package/dist/decorators/communication.decorators.js +66 -0
  16. package/dist/decorators/communication.decorators.js.map +1 -0
  17. package/dist/decorators/core.decorators.d.ts +6 -0
  18. package/dist/decorators/core.decorators.js +87 -0
  19. package/dist/decorators/core.decorators.js.map +1 -0
  20. package/dist/decorators/index.d.ts +5 -6
  21. package/dist/decorators/index.js +5 -6
  22. package/dist/decorators/index.js.map +1 -1
  23. package/dist/decorators/parameter.decorators.d.ts +2 -0
  24. package/dist/decorators/parameter.decorators.js +29 -0
  25. package/dist/decorators/parameter.decorators.js.map +1 -0
  26. package/dist/decorators/scheduling.decorators.d.ts +4 -0
  27. package/dist/decorators/scheduling.decorators.js +37 -0
  28. package/dist/decorators/scheduling.decorators.js.map +1 -0
  29. package/dist/decorators/workflow-starter.decorator.d.ts +2 -0
  30. package/dist/decorators/workflow-starter.decorator.js +14 -0
  31. package/dist/decorators/workflow-starter.decorator.js.map +1 -0
  32. package/dist/discovery/index.d.ts +2 -0
  33. package/dist/discovery/index.js +19 -0
  34. package/dist/discovery/index.js.map +1 -0
  35. package/dist/discovery/schedule-manager.service.d.ts +36 -0
  36. package/dist/discovery/schedule-manager.service.js +215 -0
  37. package/dist/discovery/schedule-manager.service.js.map +1 -0
  38. package/dist/discovery/workflow-discovery.service.d.ts +36 -0
  39. package/dist/discovery/workflow-discovery.service.js +216 -0
  40. package/dist/discovery/workflow-discovery.service.js.map +1 -0
  41. package/dist/index.d.ts +15 -8
  42. package/dist/index.js +27 -11
  43. package/dist/index.js.map +1 -1
  44. package/dist/interfaces/core.interface.d.ts +112 -0
  45. package/dist/interfaces/{base.interface.js → core.interface.js} +1 -1
  46. package/dist/interfaces/core.interface.js.map +1 -0
  47. package/dist/interfaces/discovery.interface.d.ts +61 -0
  48. package/dist/interfaces/{client.interface.js → discovery.interface.js} +1 -1
  49. package/dist/interfaces/discovery.interface.js.map +1 -0
  50. package/dist/interfaces/index.d.ts +4 -4
  51. package/dist/interfaces/index.js +4 -4
  52. package/dist/interfaces/index.js.map +1 -1
  53. package/dist/interfaces/scheduling.interface.d.ts +17 -0
  54. package/dist/interfaces/{temporal.interface.js → scheduling.interface.js} +1 -1
  55. package/dist/interfaces/scheduling.interface.js.map +1 -0
  56. package/dist/interfaces/worker.interface.d.ts +20 -17
  57. package/dist/interfaces/workflow.interface.d.ts +41 -1
  58. package/dist/temporal.module.d.ts +17 -1
  59. package/dist/temporal.module.js +120 -53
  60. package/dist/temporal.module.js.map +1 -1
  61. package/dist/temporal.service.d.ts +50 -8
  62. package/dist/temporal.service.js +166 -18
  63. package/dist/temporal.service.js.map +1 -1
  64. package/dist/tsconfig.tsbuildinfo +1 -1
  65. package/dist/worker/index.d.ts +1 -1
  66. package/dist/worker/index.js +1 -1
  67. package/dist/worker/index.js.map +1 -1
  68. package/dist/worker/temporal-metadata.accessor.d.ts +21 -6
  69. package/dist/worker/temporal-metadata.accessor.js +153 -22
  70. package/dist/worker/temporal-metadata.accessor.js.map +1 -1
  71. package/dist/worker/temporal-worker.module.d.ts +1 -1
  72. package/dist/worker/temporal-worker.module.js +6 -7
  73. package/dist/worker/temporal-worker.module.js.map +1 -1
  74. package/dist/worker/worker-manager.service.d.ts +24 -7
  75. package/dist/worker/worker-manager.service.js +218 -85
  76. package/dist/worker/worker-manager.service.js.map +1 -1
  77. package/package.json +51 -19
  78. package/dist/decorators/activity-method.decorator.d.ts +0 -2
  79. package/dist/decorators/activity-method.decorator.js +0 -35
  80. package/dist/decorators/activity-method.decorator.js.map +0 -1
  81. package/dist/decorators/activity.decorator.d.ts +0 -2
  82. package/dist/decorators/activity.decorator.js +0 -14
  83. package/dist/decorators/activity.decorator.js.map +0 -1
  84. package/dist/decorators/query-method.decorator.d.ts +0 -1
  85. package/dist/decorators/query-method.decorator.js +0 -17
  86. package/dist/decorators/query-method.decorator.js.map +0 -1
  87. package/dist/decorators/signal-method.decorator.d.ts +0 -1
  88. package/dist/decorators/signal-method.decorator.js +0 -17
  89. package/dist/decorators/signal-method.decorator.js.map +0 -1
  90. package/dist/decorators/workflow-method.decorator.d.ts +0 -2
  91. package/dist/decorators/workflow-method.decorator.js +0 -26
  92. package/dist/decorators/workflow-method.decorator.js.map +0 -1
  93. package/dist/decorators/workflow.decorator.d.ts +0 -2
  94. package/dist/decorators/workflow.decorator.js +0 -16
  95. package/dist/decorators/workflow.decorator.js.map +0 -1
  96. package/dist/interfaces/base.interface.d.ts +0 -13
  97. package/dist/interfaces/base.interface.js.map +0 -1
  98. package/dist/interfaces/client.interface.d.ts +0 -30
  99. package/dist/interfaces/client.interface.js.map +0 -1
  100. package/dist/interfaces/temporal.interface.d.ts +0 -33
  101. package/dist/interfaces/temporal.interface.js.map +0 -1
@@ -2,25 +2,67 @@ import { OnModuleInit } from '@nestjs/common';
2
2
  import { TemporalClientService } from './client/temporal-client.service';
3
3
  import { TemporalScheduleService } from './client/temporal-schedule.service';
4
4
  import { WorkerManager } from './worker/worker-manager.service';
5
+ import { WorkflowDiscoveryService } from './discovery/workflow-discovery.service';
6
+ import { ScheduleManagerService } from './discovery/schedule-manager.service';
7
+ import { StartWorkflowOptions, DiscoveryStats, ScheduleStats, WorkflowMethodInfo, ScheduledMethodInfo, WorkerStatus } from './interfaces';
5
8
  export declare class TemporalService implements OnModuleInit {
6
9
  private readonly clientService;
7
10
  private readonly scheduleService;
11
+ private readonly workflowDiscovery;
12
+ private readonly scheduleManager;
8
13
  private readonly workerManager?;
9
14
  private readonly logger;
10
- constructor(clientService: TemporalClientService, scheduleService: TemporalScheduleService, workerManager?: WorkerManager | undefined);
15
+ constructor(clientService: TemporalClientService, scheduleService: TemporalScheduleService, workflowDiscovery: WorkflowDiscoveryService, scheduleManager: ScheduleManagerService, workerManager?: WorkerManager | undefined);
11
16
  onModuleInit(): Promise<void>;
12
17
  getClient(): TemporalClientService;
13
18
  getScheduleService(): TemporalScheduleService;
19
+ getScheduleManager(): ScheduleManagerService;
20
+ getWorkflowDiscovery(): WorkflowDiscoveryService;
14
21
  getWorkerManager(): WorkerManager | undefined;
15
- hasWorker(): boolean;
16
- startWorkflow<T, A extends any[]>(workflowType: string, args: A, taskQueue: string, options?: {
17
- workflowId?: string;
18
- searchAttributes?: Record<string, unknown>;
19
- [key: string]: any;
20
- }): Promise<{
22
+ startWorkflow<T, A extends any[]>(workflowType: string, args: A, options?: Partial<StartWorkflowOptions>): Promise<{
21
23
  result: Promise<T>;
22
24
  workflowId: string;
23
25
  firstExecutionRunId: string;
24
- handle: import("@temporalio/client").WorkflowHandle;
26
+ handle: any;
27
+ }>;
28
+ signalWorkflow(workflowId: string, signalName: string, args?: any[]): Promise<void>;
29
+ queryWorkflow<T>(workflowId: string, queryName: string, args?: any[]): Promise<T>;
30
+ terminateWorkflow(workflowId: string, reason?: string): Promise<void>;
31
+ cancelWorkflow(workflowId: string): Promise<void>;
32
+ triggerSchedule(scheduleId: string): Promise<void>;
33
+ pauseSchedule(scheduleId: string, note?: string): Promise<void>;
34
+ resumeSchedule(scheduleId: string, note?: string): Promise<void>;
35
+ deleteSchedule(scheduleId: string, force?: boolean): Promise<void>;
36
+ getAvailableWorkflows(): string[];
37
+ getWorkflowInfo(workflowName: string): WorkflowMethodInfo | undefined;
38
+ getManagedSchedules(): string[];
39
+ getScheduleInfo(scheduleId: string): ScheduledMethodInfo | undefined;
40
+ hasWorkflow(workflowName: string): boolean;
41
+ hasSchedule(scheduleId: string): boolean;
42
+ hasWorker(): boolean;
43
+ getWorkerStatus(): WorkerStatus | null;
44
+ restartWorker(): Promise<void>;
45
+ getWorkerHealth(): Promise<{
46
+ status: 'healthy' | 'unhealthy' | 'degraded' | 'not_available';
47
+ details?: any;
48
+ }>;
49
+ getDiscoveryStats(): DiscoveryStats;
50
+ getScheduleStats(): ScheduleStats;
51
+ getSystemStatus(): Promise<{
52
+ client: {
53
+ available: boolean;
54
+ healthy: boolean;
55
+ };
56
+ worker: {
57
+ available: boolean;
58
+ status?: WorkerStatus;
59
+ health?: string;
60
+ };
61
+ discovery: DiscoveryStats;
62
+ schedules: ScheduleStats;
25
63
  }>;
64
+ private enhanceWorkflowOptions;
65
+ private validateWorkflowExists;
66
+ private validateScheduleExists;
67
+ private logInitializationSummary;
26
68
  }
@@ -11,28 +11,26 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
- var TemporalService_1;
15
14
  Object.defineProperty(exports, "__esModule", { value: true });
16
15
  exports.TemporalService = void 0;
17
16
  const common_1 = require("@nestjs/common");
18
17
  const temporal_client_service_1 = require("./client/temporal-client.service");
19
18
  const temporal_schedule_service_1 = require("./client/temporal-schedule.service");
20
19
  const worker_manager_service_1 = require("./worker/worker-manager.service");
21
- let TemporalService = TemporalService_1 = class TemporalService {
22
- constructor(clientService, scheduleService, workerManager) {
20
+ const workflow_discovery_service_1 = require("./discovery/workflow-discovery.service");
21
+ const schedule_manager_service_1 = require("./discovery/schedule-manager.service");
22
+ const constants_1 = require("./constants");
23
+ let TemporalService = class TemporalService {
24
+ constructor(clientService, scheduleService, workflowDiscovery, scheduleManager, workerManager) {
23
25
  this.clientService = clientService;
24
26
  this.scheduleService = scheduleService;
27
+ this.workflowDiscovery = workflowDiscovery;
28
+ this.scheduleManager = scheduleManager;
25
29
  this.workerManager = workerManager;
26
- this.logger = new common_1.Logger(TemporalService_1.name);
30
+ this.logger = new common_1.Logger(constants_1.LOG_CATEGORIES.CLIENT);
27
31
  }
28
32
  async onModuleInit() {
29
- this.logger.log('Temporal service initialized');
30
- if (this.workerManager) {
31
- this.logger.log('Worker manager is available');
32
- }
33
- else {
34
- this.logger.log('Worker manager is not available - running in client-only mode');
35
- }
33
+ await this.logInitializationSummary();
36
34
  }
37
35
  getClient() {
38
36
  return this.clientService;
@@ -40,25 +38,175 @@ let TemporalService = TemporalService_1 = class TemporalService {
40
38
  getScheduleService() {
41
39
  return this.scheduleService;
42
40
  }
41
+ getScheduleManager() {
42
+ return this.scheduleManager;
43
+ }
44
+ getWorkflowDiscovery() {
45
+ return this.workflowDiscovery;
46
+ }
43
47
  getWorkerManager() {
44
48
  return this.workerManager;
45
49
  }
50
+ async startWorkflow(workflowType, args, options = {}) {
51
+ const enhancedOptions = await this.enhanceWorkflowOptions(workflowType, options);
52
+ this.logger.debug(`Starting workflow: ${workflowType} with options: ${JSON.stringify(enhancedOptions)}`);
53
+ return this.clientService.startWorkflow(workflowType, args, enhancedOptions);
54
+ }
55
+ async signalWorkflow(workflowId, signalName, args = []) {
56
+ this.validateWorkflowExists(workflowId);
57
+ await this.clientService.signalWorkflow(workflowId, signalName, args);
58
+ this.logger.debug(`Sent signal '${signalName}' to workflow ${workflowId}`);
59
+ }
60
+ async queryWorkflow(workflowId, queryName, args = []) {
61
+ this.validateWorkflowExists(workflowId);
62
+ const result = await this.clientService.queryWorkflow(workflowId, queryName, args);
63
+ this.logger.debug(`Queried '${queryName}' on workflow ${workflowId}`);
64
+ return result;
65
+ }
66
+ async terminateWorkflow(workflowId, reason) {
67
+ await this.clientService.terminateWorkflow(workflowId, reason);
68
+ this.logger.log(`Terminated workflow ${workflowId}${reason ? `: ${reason}` : ''}`);
69
+ }
70
+ async cancelWorkflow(workflowId) {
71
+ await this.clientService.cancelWorkflow(workflowId);
72
+ this.logger.log(`Cancelled workflow ${workflowId}`);
73
+ }
74
+ async triggerSchedule(scheduleId) {
75
+ this.validateScheduleExists(scheduleId);
76
+ await this.scheduleManager.triggerSchedule(scheduleId);
77
+ this.logger.log(`Triggered schedule: ${scheduleId}`);
78
+ }
79
+ async pauseSchedule(scheduleId, note) {
80
+ this.validateScheduleExists(scheduleId);
81
+ await this.scheduleManager.pauseSchedule(scheduleId, note);
82
+ this.logger.log(`Paused schedule: ${scheduleId}${note ? ` (${note})` : ''}`);
83
+ }
84
+ async resumeSchedule(scheduleId, note) {
85
+ this.validateScheduleExists(scheduleId);
86
+ await this.scheduleManager.resumeSchedule(scheduleId, note);
87
+ this.logger.log(`Resumed schedule: ${scheduleId}${note ? ` (${note})` : ''}`);
88
+ }
89
+ async deleteSchedule(scheduleId, force = false) {
90
+ this.validateScheduleExists(scheduleId);
91
+ if (!force) {
92
+ this.logger.warn(`Deleting schedule ${scheduleId}. This action cannot be undone. Use force=true to confirm.`);
93
+ return;
94
+ }
95
+ await this.scheduleManager.deleteSchedule(scheduleId);
96
+ this.logger.log(`Deleted schedule: ${scheduleId}`);
97
+ }
98
+ getAvailableWorkflows() {
99
+ return this.workflowDiscovery.getWorkflowNames();
100
+ }
101
+ getWorkflowInfo(workflowName) {
102
+ return this.workflowDiscovery.getWorkflowMethod(workflowName);
103
+ }
104
+ getManagedSchedules() {
105
+ return this.scheduleManager.getManagedSchedules();
106
+ }
107
+ getScheduleInfo(scheduleId) {
108
+ return this.workflowDiscovery.getScheduledWorkflow(scheduleId);
109
+ }
110
+ hasWorkflow(workflowName) {
111
+ return this.workflowDiscovery.hasWorkflow(workflowName);
112
+ }
113
+ hasSchedule(scheduleId) {
114
+ return this.scheduleManager.isScheduleManaged(scheduleId);
115
+ }
46
116
  hasWorker() {
47
- return !!this.workerManager;
117
+ return Boolean(this.workerManager);
118
+ }
119
+ getWorkerStatus() {
120
+ return this.workerManager?.getWorkerStatus() || null;
121
+ }
122
+ async restartWorker() {
123
+ if (!this.workerManager) {
124
+ throw new Error('Worker manager not available');
125
+ }
126
+ await this.workerManager.restartWorker();
127
+ this.logger.log('Worker restarted successfully');
128
+ }
129
+ async getWorkerHealth() {
130
+ if (!this.workerManager) {
131
+ return { status: 'not_available' };
132
+ }
133
+ const health = await this.workerManager.healthCheck();
134
+ return health;
135
+ }
136
+ getDiscoveryStats() {
137
+ return this.workflowDiscovery.getStats();
138
+ }
139
+ getScheduleStats() {
140
+ return this.scheduleManager.getScheduleStats();
141
+ }
142
+ async getSystemStatus() {
143
+ const clientAvailable = Boolean(this.clientService.getRawClient());
144
+ const workerHealth = await this.getWorkerHealth();
145
+ return {
146
+ client: {
147
+ available: clientAvailable,
148
+ healthy: clientAvailable,
149
+ },
150
+ worker: {
151
+ available: this.hasWorker(),
152
+ status: this.getWorkerStatus() || undefined,
153
+ health: workerHealth.status,
154
+ },
155
+ discovery: this.getDiscoveryStats(),
156
+ schedules: this.getScheduleStats(),
157
+ };
48
158
  }
49
- async startWorkflow(workflowType, args, taskQueue, options = {}) {
50
- return this.clientService.startWorkflow(workflowType, args, {
51
- taskQueue,
159
+ async enhanceWorkflowOptions(workflowType, options) {
160
+ const workflowInfo = this.workflowDiscovery.getWorkflowMethod(workflowType);
161
+ if (workflowInfo) {
162
+ const controllers = this.workflowDiscovery.getWorkflowControllers();
163
+ const controller = controllers.find((c) => c.methods.some((m) => m.workflowName === workflowType));
164
+ const enhancedOptions = {
165
+ taskQueue: options.taskQueue || controller?.taskQueue || constants_1.DEFAULT_TASK_QUEUE,
166
+ ...workflowInfo.options,
167
+ ...options,
168
+ };
169
+ return enhancedOptions;
170
+ }
171
+ return {
172
+ taskQueue: constants_1.DEFAULT_TASK_QUEUE,
52
173
  ...options,
53
- });
174
+ };
175
+ }
176
+ validateWorkflowExists(workflowId) {
177
+ if (!workflowId || typeof workflowId !== 'string') {
178
+ throw new Error('Invalid workflow ID provided');
179
+ }
180
+ }
181
+ validateScheduleExists(scheduleId) {
182
+ if (!this.scheduleManager.isScheduleManaged(scheduleId)) {
183
+ throw new Error(`Schedule '${scheduleId}' is not managed by this service`);
184
+ }
185
+ }
186
+ async logInitializationSummary() {
187
+ const stats = this.getDiscoveryStats();
188
+ const scheduleStats = this.getScheduleStats();
189
+ this.logger.log('Enhanced Temporal service initialized');
190
+ this.logger.log(`Discovered: ${stats.controllers} controllers, ${stats.methods} workflows, ${stats.scheduled} scheduled`);
191
+ this.logger.log(`Schedules: ${scheduleStats.total} total, ${scheduleStats.active} active`);
192
+ if (this.workerManager) {
193
+ const workerStatus = this.workerManager.getWorkerStatus();
194
+ this.logger.log(`Worker: ${workerStatus.isInitialized ? 'initialized' : 'not initialized'}, ` +
195
+ `${workerStatus.activitiesCount} activities registered`);
196
+ }
197
+ else {
198
+ this.logger.log('Running in client-only mode (no worker)');
199
+ }
54
200
  }
55
201
  };
56
202
  exports.TemporalService = TemporalService;
57
- exports.TemporalService = TemporalService = TemporalService_1 = __decorate([
203
+ exports.TemporalService = TemporalService = __decorate([
58
204
  (0, common_1.Injectable)(),
59
- __param(2, (0, common_1.Optional)()),
205
+ __param(4, (0, common_1.Optional)()),
60
206
  __metadata("design:paramtypes", [temporal_client_service_1.TemporalClientService,
61
207
  temporal_schedule_service_1.TemporalScheduleService,
208
+ workflow_discovery_service_1.WorkflowDiscoveryService,
209
+ schedule_manager_service_1.ScheduleManagerService,
62
210
  worker_manager_service_1.WorkerManager])
63
211
  ], TemporalService);
64
212
  //# sourceMappingURL=temporal.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"temporal.service.js","sourceRoot":"","sources":["../src/temporal.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA4E;AAC5E,8EAAyE;AACzE,kFAA6E;AAC7E,4EAAgE;AAOzD,IAAM,eAAe,uBAArB,MAAM,eAAe;IAGxB,YACqB,aAAoC,EACpC,eAAwC,EAC7C,aAA8C;QAFzC,kBAAa,GAAb,aAAa,CAAuB;QACpC,oBAAe,GAAf,eAAe,CAAyB;QAC5B,kBAAa,GAAb,aAAa,CAAgB;QAL7C,WAAM,GAAG,IAAI,eAAM,CAAC,iBAAe,CAAC,IAAI,CAAC,CAAC;IAMxD,CAAC;IAEJ,KAAK,CAAC,YAAY;QACd,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAEhD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;QACrF,CAAC;IACL,CAAC;IAMD,SAAS;QACL,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAMD,kBAAkB;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAMD,gBAAgB;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAKD,SAAS;QACL,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;IAChC,CAAC;IAyBD,KAAK,CAAC,aAAa,CACf,YAAoB,EACpB,IAAO,EACP,SAAiB,EACjB,UAII,EAAE;QAEN,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAO,YAAY,EAAE,IAAI,EAAE;YAC9D,SAAS;YACT,GAAG,OAAO;SACb,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AAxFY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;IAOJ,WAAA,IAAA,iBAAQ,GAAE,CAAA;qCAFqB,+CAAqB;QACnB,mDAAuB;QACZ,sCAAa;GANrD,eAAe,CAwF3B"}
1
+ {"version":3,"file":"temporal.service.js","sourceRoot":"","sources":["../src/temporal.service.ts"],"names":[],"mappings":"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"}