@hotmeshio/hotmesh 0.0.51 → 0.0.53

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 (126) hide show
  1. package/README.md +13 -9
  2. package/build/index.d.ts +1 -2
  3. package/build/index.js +1 -3
  4. package/build/modules/enums.d.ts +8 -3
  5. package/build/modules/enums.js +16 -8
  6. package/build/modules/errors.d.ts +98 -18
  7. package/build/modules/errors.js +90 -33
  8. package/build/package.json +7 -2
  9. package/build/services/activities/activity.d.ts +8 -0
  10. package/build/services/activities/activity.js +65 -16
  11. package/build/services/activities/await.js +6 -6
  12. package/build/services/activities/cycle.d.ts +2 -2
  13. package/build/services/activities/cycle.js +5 -5
  14. package/build/services/activities/hook.js +4 -4
  15. package/build/services/activities/interrupt.d.ts +3 -3
  16. package/build/services/activities/interrupt.js +15 -6
  17. package/build/services/activities/signal.d.ts +2 -2
  18. package/build/services/activities/signal.js +4 -4
  19. package/build/services/activities/trigger.js +12 -3
  20. package/build/services/activities/worker.js +6 -6
  21. package/build/services/compiler/deployer.js +33 -5
  22. package/build/services/compiler/validator.d.ts +2 -0
  23. package/build/services/compiler/validator.js +5 -1
  24. package/build/services/durable/client.d.ts +7 -1
  25. package/build/services/durable/client.js +56 -30
  26. package/build/services/durable/exporter.d.ts +7 -72
  27. package/build/services/durable/exporter.js +105 -295
  28. package/build/services/durable/handle.d.ts +11 -6
  29. package/build/services/durable/handle.js +59 -46
  30. package/build/services/durable/index.d.ts +0 -2
  31. package/build/services/durable/index.js +0 -2
  32. package/build/services/durable/schemas/factory.d.ts +33 -0
  33. package/build/services/durable/schemas/factory.js +2356 -0
  34. package/build/services/durable/search.js +8 -8
  35. package/build/services/durable/worker.js +117 -25
  36. package/build/services/durable/workflow.d.ts +46 -43
  37. package/build/services/durable/workflow.js +273 -277
  38. package/build/services/engine/index.js +3 -0
  39. package/build/services/exporter/index.d.ts +2 -4
  40. package/build/services/exporter/index.js +4 -5
  41. package/build/services/mapper/index.d.ts +6 -2
  42. package/build/services/mapper/index.js +6 -2
  43. package/build/services/pipe/functions/array.d.ts +2 -10
  44. package/build/services/pipe/functions/array.js +30 -28
  45. package/build/services/pipe/functions/conditional.d.ts +1 -0
  46. package/build/services/pipe/functions/conditional.js +3 -0
  47. package/build/services/pipe/functions/date.d.ts +1 -0
  48. package/build/services/pipe/functions/date.js +4 -0
  49. package/build/services/pipe/functions/index.d.ts +2 -0
  50. package/build/services/pipe/functions/index.js +2 -0
  51. package/build/services/pipe/functions/logical.d.ts +5 -0
  52. package/build/services/pipe/functions/logical.js +12 -0
  53. package/build/services/pipe/functions/object.d.ts +3 -0
  54. package/build/services/pipe/functions/object.js +25 -7
  55. package/build/services/pipe/index.d.ts +20 -3
  56. package/build/services/pipe/index.js +82 -16
  57. package/build/services/router/index.js +14 -3
  58. package/build/services/serializer/index.d.ts +3 -2
  59. package/build/services/serializer/index.js +11 -4
  60. package/build/services/store/clients/ioredis.js +6 -6
  61. package/build/services/store/clients/redis.js +7 -7
  62. package/build/services/store/index.d.ts +2 -0
  63. package/build/services/store/index.js +4 -1
  64. package/build/services/stream/clients/ioredis.js +8 -8
  65. package/build/services/stream/clients/redis.js +1 -1
  66. package/build/types/activity.d.ts +60 -5
  67. package/build/types/durable.d.ts +168 -33
  68. package/build/types/exporter.d.ts +26 -4
  69. package/build/types/index.d.ts +2 -2
  70. package/build/types/job.d.ts +69 -5
  71. package/build/types/pipe.d.ts +81 -3
  72. package/build/types/stream.d.ts +61 -1
  73. package/build/types/stream.js +4 -0
  74. package/index.ts +1 -2
  75. package/modules/enums.ts +16 -8
  76. package/modules/errors.ts +174 -32
  77. package/package.json +7 -2
  78. package/services/activities/activity.ts +67 -18
  79. package/services/activities/await.ts +6 -6
  80. package/services/activities/cycle.ts +7 -6
  81. package/services/activities/hook.ts +4 -4
  82. package/services/activities/interrupt.ts +19 -9
  83. package/services/activities/signal.ts +6 -5
  84. package/services/activities/trigger.ts +16 -4
  85. package/services/activities/worker.ts +7 -7
  86. package/services/compiler/deployer.ts +33 -6
  87. package/services/compiler/validator.ts +7 -3
  88. package/services/durable/client.ts +47 -14
  89. package/services/durable/exporter.ts +110 -318
  90. package/services/durable/handle.ts +63 -50
  91. package/services/durable/index.ts +0 -2
  92. package/services/durable/schemas/factory.ts +2358 -0
  93. package/services/durable/search.ts +8 -8
  94. package/services/durable/worker.ts +128 -29
  95. package/services/durable/workflow.ts +304 -288
  96. package/services/engine/index.ts +4 -0
  97. package/services/exporter/index.ts +10 -12
  98. package/services/mapper/index.ts +6 -2
  99. package/services/pipe/functions/array.ts +24 -37
  100. package/services/pipe/functions/conditional.ts +4 -0
  101. package/services/pipe/functions/date.ts +6 -0
  102. package/services/pipe/functions/index.ts +7 -5
  103. package/services/pipe/functions/logical.ts +11 -0
  104. package/services/pipe/functions/object.ts +26 -7
  105. package/services/pipe/index.ts +99 -21
  106. package/services/quorum/index.ts +1 -3
  107. package/services/router/index.ts +14 -3
  108. package/services/serializer/index.ts +12 -5
  109. package/services/store/clients/ioredis.ts +6 -6
  110. package/services/store/clients/redis.ts +7 -7
  111. package/services/store/index.ts +4 -1
  112. package/services/stream/clients/ioredis.ts +8 -8
  113. package/services/stream/clients/redis.ts +1 -1
  114. package/types/activity.ts +87 -15
  115. package/types/durable.ts +246 -73
  116. package/types/exporter.ts +31 -5
  117. package/types/index.ts +6 -7
  118. package/types/job.ts +130 -36
  119. package/types/pipe.ts +84 -3
  120. package/types/stream.ts +82 -23
  121. package/build/services/durable/factory.d.ts +0 -17
  122. package/build/services/durable/factory.js +0 -817
  123. package/build/services/durable/meshos.d.ts +0 -127
  124. package/build/services/durable/meshos.js +0 -380
  125. package/services/durable/factory.ts +0 -818
  126. package/services/durable/meshos.ts +0 -441
package/types/job.ts CHANGED
@@ -7,34 +7,85 @@ type ActivityData = {
7
7
  };
8
8
 
9
9
  type JobMetadata = {
10
- key?: string; //job_key
11
- guid?: string; //system assigned guid that corresponds to the transition message guid that spawned reentry
12
- gid: string; //system assigned guid; ensured created/deleted/created jobs are unique
13
- jid: string; //job_id (jid+dad+aid) is composite key for activity
14
- dad: string; //dimensional address for the activity (,0,0,1)
15
- aid: string; //activity_id as in the YAML file
16
- pj?: string; //parent_job_id (pj+pd+pa) is composite key for parent activity
17
- pg?: string; //parent_generational_id (system assigned at trigger inception); pg is the parent job's gid (just in case user created/deleted/created a job with same jid)
18
- pd?: string; //parent_dimensional_address
19
- pa?: string; //parent_activity_id
20
- px?: boolean; //sever the dependency chain if true (startChild/vs/executeChild)
21
- ngn?: string; //engine guid (one time subscriptions)
22
- app: string; //app_id
23
- vrs: string; //app version
24
- tpc: string; //subscription topic
25
- ts: string //201203120005 (slice of time) //time series
26
- jc: string; //GMT created //job_created
27
- ju: string; //GMT updated //job_updated
10
+ /** job_key */
11
+ key?: string;
12
+
13
+ /** system assigned guid that corresponds to the transition message guid that spawned reentry */
14
+ guid?: string;
15
+
16
+ /** system assigned guid; ensured created/deleted/created jobs are unique */
17
+ gid: string;
18
+
19
+ /** job_id (jid+dad+aid) is composite key for activity */
20
+ jid: string;
21
+
22
+ /** dimensional address for the activity (,0,0,1) */
23
+ dad: string;
24
+
25
+ /** activity_id as in the YAML file */
26
+ aid: string;
27
+
28
+ /** parent_job_id (pj+pd+pa) is composite key for parent activity */
29
+ pj?: string;
30
+
31
+ /** parent_generational_id (system assigned at trigger inception); pg is the parent job's gid (just in case user created/deleted/created a job with same jid) */
32
+ pg?: string;
33
+
34
+ /** parent_dimensional_address */
35
+ pd?: string;
36
+
37
+ /** parent_activity_id */
38
+ pa?: string;
39
+
40
+ /** sever the dependency chain if true (startChild/vs/execChild) */
41
+ px?: boolean;
42
+
43
+ /** engine guid (one time subscriptions) */
44
+ ngn?: string;
45
+
46
+ /** app_id */
47
+ app: string;
48
+
49
+ /** app version */
50
+ vrs: string;
51
+
52
+ /** subscription topic */
53
+ tpc: string;
54
+
55
+ /** 201203120005 (slice of time) //time series */
56
+ ts: string;
57
+
58
+ /** GMT created //job_created */
59
+ jc: string;
60
+
61
+ /** GMT updated //job_updated */
62
+ ju: string;
63
+
28
64
  js: JobStatus;
29
- atp: string; //activity_type
30
- stp: string; //activity_subtype
31
- spn: string; //open telemetry span context
32
- trc: string; //open telemetry trace context
33
- err?: string; //stringified job error json: {message: string, code: number, error?}
34
- expire?: number; //process data expire policy
65
+
66
+ /** activity_type */
67
+ atp: string;
68
+
69
+ /** activity_subtype */
70
+ stp: string;
71
+
72
+ /** open telemetry span context */
73
+ spn: string;
74
+
75
+ /** open telemetry trace context */
76
+ trc: string;
77
+
78
+ /** stringified job error json: {message: string, code: number, error?} */
79
+ err?: string;
80
+
81
+ /** process data expire policy */
82
+ expire?: number;
35
83
  };
36
84
 
37
- type JobStatus = number; //job_status semaphore
85
+ /**
86
+ * job_status semaphore
87
+ */
88
+ type JobStatus = number;
38
89
 
39
90
  type JobState = {
40
91
  metadata: JobMetadata;
@@ -49,35 +100,78 @@ type JobState = {
49
100
  };
50
101
 
51
102
  type JobInterruptOptions = {
52
- /** Optional reason when throwing the error */
103
+ /**
104
+ * optional Reason; will be used as the error `message` when thrown
105
+ * @default 'Job Interrupted'
106
+ */
53
107
  reason?: string;
54
- /** default is `true` when `undefined` (throw JobInterrupted/410 error) */
108
+
109
+ /**
110
+ * throw JobInterrupted error upon interrupting
111
+ * @default true
112
+ */
55
113
  throw?: boolean;
56
- /** default behavior is `false` when `undefined` (do NOT interrupt child jobs) */
114
+
115
+ /**
116
+ * interrupt child/descendant jobs
117
+ * @default false
118
+ */
57
119
  descend?: boolean;
58
- /** default is false; if true, errors related to inactivation (like overage...already inactive) are suppressed/ignored */
120
+
121
+ /**
122
+ * if true, errors related to inactivation (like overage...already inactive) are suppressed/ignored
123
+ * @default false
124
+ */
59
125
  suppress?: boolean;
60
- /** how long to wait in seconds before fully expiring/removing the hash from Redis; the job is inactive, but can remain in the cache indefinitely. minimum 1 second.*/
126
+
127
+ /**
128
+ * how long to wait in seconds before fully expiring/removing the hash from Redis;
129
+ * the job is inactive, but can remain in the cache indefinitely;
130
+ * @default 1 second.
131
+ */
61
132
  expire?: number;
133
+
134
+ /**
135
+ * Optional Error Code; will be used as the error `code` when thrown
136
+ * @default 410
137
+ */
138
+ code?: number;
139
+
140
+ /**
141
+ * Optional stack trace
142
+ */
143
+ stack?: string;
62
144
  };
63
145
 
64
- //format when publishing job meta/data on the wire when it completes
146
+ /**
147
+ * format when publishing job meta/data on the wire when it completes
148
+ */
65
149
  type JobOutput = {
66
150
  metadata: JobMetadata;
67
151
  data: JobData;
68
152
  };
69
153
 
70
- //jid+dad+aid is a composite guid; signal in and restore the full job context
154
+ /**
155
+ * jid+dad+aid is a composite guid; signal in and restore the full job context
156
+ */
71
157
  type PartialJobState = {
72
158
  metadata: JobMetadata | Pick<JobMetadata, 'jid' | 'dad' | 'aid'>;
73
159
  data: JobData;
74
160
  };
75
161
 
76
162
  type JobCompletionOptions = {
77
- emit?: boolean; //default false
78
- interrupt?: boolean; //default undefined
79
- expire?: number; // in seconds to wait before deleting/expiring job hash
80
- }
163
+ /** default false */
164
+ emit?: boolean;
165
+
166
+ /** default undefined */
167
+ interrupt?: boolean;
168
+
169
+ /**
170
+ * in seconds to wait before deleting/expiring job hash
171
+ * @default 1 second
172
+ */
173
+ expire?: number;
174
+ };
81
175
 
82
176
  export {
83
177
  JobCompletionOptions,
package/types/pipe.ts CHANGED
@@ -1,7 +1,88 @@
1
- type PipeItem = string | boolean | number | null;
1
+ /**
2
+ * Represents a single cell value in a pipeline row
3
+ * If the value is a string, the value will be a literal OR mapping expression
4
+ */
5
+ type PipeItem = string | boolean | number | null | object;
2
6
 
7
+ /**
8
+ * Array of `PipeItem` types.
9
+ */
3
10
  type PipeItems = PipeItem[];
4
11
 
5
- type Pipe = (PipeItem[] | Pipe)[];
12
+ /**
13
+ * Represents a new nested context in the pipeline.
14
+ * As the structure is recursive, the nested pipe may contain an
15
+ * array of `PipeItem[]`, `PipeObject`, OR `ReduceObject` items.
16
+ */
17
+ type PipeObject = { '@pipe': Array<PipeItem[] | PipeObject | ReduceObject> };
6
18
 
7
- export { Pipe, PipeItem, PipeItems };
19
+ /**
20
+ * Reduce is similar to Pipe in that it represents a new context
21
+ * and may include an array of `PipeItem[]`, `PipeObject`, or `ReduceObject`.
22
+ * But it also iterates and produces output. The context variables,
23
+ * `$input`, `$output`, `$item`, `$key`, and `$index` are available.
24
+ * @example
25
+ *
26
+ * // Example of a reduce expression. The optional object is empty and
27
+ * // serves as the $output during iteration. The last step in the iteration
28
+ * // sets $output. if ther are no more iterations, the $output is returned
29
+ * // and provided to the next step in the pipeline.
30
+ *
31
+ * // If data is:
32
+ * // { response: ['a', 'b', 'c'] }
33
+ *
34
+ * // The reduced/transformed expression will be:
35
+ * // { 'a': 0, 'b': 1, 'c': 2 }
36
+ *
37
+ * // Arrays and objects may be iterated over and transformed.
38
+ *
39
+ * //YAML
40
+ * '@pipe':
41
+ * - ['{data.response}', {}]
42
+ * - '@reduce':
43
+ * - '@pipe':
44
+ * - ['{$output}']
45
+ * - '@pipe':
46
+ * - ['{$item}']
47
+ * - '@pipe':
48
+ * - ['{$index}']
49
+ * - ['{@object.set}']
50
+ */
51
+ type ReduceObject = { '@reduce': Array<PipeItem[] | PipeObject | ReduceObject> };
52
+
53
+ /**
54
+ * Represents a sequence in the pipeline that can include arrays of `PipeItem`, `PipeObject`, or `ReduceObject`.
55
+ */
56
+ type Pipe = (PipeItem[] | PipeObject | ReduceObject)[];
57
+
58
+ /**
59
+ * Defines the context of a pipeline operation.
60
+ */
61
+ type PipeContext = {
62
+ /**
63
+ * Input of the current iteration.
64
+ */
65
+ $input: unknown[];
66
+
67
+ /**
68
+ * Output of the current iteration and the final output for the reducer.
69
+ */
70
+ $output: unknown;
71
+
72
+ /**
73
+ * Target item in the iterator.
74
+ */
75
+ $item: unknown;
76
+
77
+ /**
78
+ * Array index as string or object key.
79
+ */
80
+ $key: string;
81
+
82
+ /**
83
+ * Numeric index of the iterator.
84
+ */
85
+ $index: number;
86
+ };
87
+
88
+ export { Pipe, PipeContext, PipeItem, PipeItems, PipeObject, ReduceObject };
package/types/stream.ts CHANGED
@@ -1,21 +1,41 @@
1
+ /** Represents a policy for retrying stream operations based on error codes */
1
2
  export interface StreamRetryPolicy {
2
- [key: string]: [number, 'x']; //key is err code, val is the retry profile [(max retry count),(type (x:exponential (default)) (only 10, 100, 1000, 10000 allowed))
3
+ /**
4
+ * Key is error code, value is the retry profile.
5
+ * Tuple contains: [max retry count, retry type].
6
+ * 'x' denotes exponential backoff (default). Only 10, 100, 1000, 10000 are allowed retry intervals.
7
+ */
8
+ [key: string]: [number, 'x'?];
3
9
  }
4
10
 
5
- export type StreamCode = number; //3-digit status code
11
+ /** A 3-digit status code representing the outcome of a stream operation */
12
+ export type StreamCode = number;
6
13
 
14
+ /** Describes the structure of a stream error */
7
15
  export type StreamError = {
16
+ /** Descriptive message of the error */
8
17
  message: string;
18
+ /** Numeric code corresponding to the type of error */
9
19
  code: number;
10
- job_id?: string; //used when communicating errors externally
11
- stack?: string; //unhandled errors will have a stack
12
- name?: string; //unhandled errors will have a name
13
- error?: Record<string, unknown>; //custom user-defined error details go here
20
+ /** Optional job identifier, used when communicating errors externally */
21
+ job_id?: string;
22
+ /** Stack trace of the error if unhandled */
23
+ stack?: string;
24
+ /** Name of the error if unhandled */
25
+ name?: string;
26
+ /** Custom user-defined error details */
27
+ error?: Record<string, unknown>;
28
+ /** True if originating via a standard transition message with an `error` status */
29
+ is_stream_error?: boolean;
14
30
  }
15
31
 
32
+ /** Enumerated status values for stream operations */
16
33
  export enum StreamStatus {
34
+ /** Indicates successful completion of the stream operation */
17
35
  SUCCESS = 'success',
36
+ /** Indicates an error occurred during the stream operation */
18
37
  ERROR = 'error',
38
+ /** Indicates the stream operation is still pending */
19
39
  PENDING = 'pending',
20
40
  }
21
41
 
@@ -31,28 +51,52 @@ export enum StreamDataType {
31
51
  INTERRUPT = 'interrupt',
32
52
  }
33
53
 
54
+ /** Defines the structure of stream data used when passing stream messages (transitions) */
34
55
  export interface StreamData {
56
+ /** Metadata associated with the stream data */
35
57
  metadata: {
36
- guid: string; //every message is minted with a guid to distinguish retries from new messages
58
+ /** Globally unique identifier for the StreamData message to distinguish `retries` from new 'reentry/cycles' */
59
+ guid: string;
60
+ /** Workflow/job topic */
37
61
  topic?: string;
38
- jid?: string; //is optional if type is WEBHOOK (system assigned or user assigned)
39
- gid?: string; //is optional if type is WEBHOOK (system assigned job guid)
40
- dad?: string; //dimensional address
62
+ /** Workflow/job ID */
63
+ jid?: string;
64
+ /** Workflow Generational ID (internal GUID) */
65
+ gid?: string;
66
+ /** Dimensional address indicating the message routing specifics */
67
+ dad?: string;
68
+ /** Activity ID */
41
69
  aid: string;
42
- trc?: string; //trace id
43
- spn?: string; //span id
44
- try?: number; //current try count
45
- await?: boolean; //(waitfor) if explicitly false, do not await; sever the connection
70
+ /** OpenTelemetry Trace identifier */
71
+ trc?: string;
72
+ /** OpenTelemetry Span identifier */
73
+ spn?: string;
74
+ /** Current try count, used for retry logic */
75
+ try?: number;
76
+ /**
77
+ * Indicates if the message should wait for a response.
78
+ * If explicitly false, the connection is severed immediately
79
+ * upon verifying (and returning) the Job ID.
80
+ */
81
+ await?: boolean;
46
82
  };
83
+ /** Type of the data being streamed, optional */
47
84
  type?: StreamDataType;
85
+ /** Actual data being transmitted as a record of key-value pairs */
48
86
  data: Record<string, unknown>;
87
+ /** Policies related to retry logic, optional */
49
88
  policies?: {
50
89
  retry?: StreamRetryPolicy;
51
90
  };
52
- status?: StreamStatus; //assume success
53
- code?: number; //assume 200
91
+ /** Status of the stream, default assumed as 'success' */
92
+ status?: StreamStatus;
93
+ /** HTTP-like status code for the stream, default assumed as 200 */
94
+ code?: number;
95
+ /** Error stack trace */
96
+ stack?: string;
54
97
  }
55
98
 
99
+ /** Extends StreamData for responses, allowing for inheritance of the base properties */
56
100
  export interface StreamDataResponse extends StreamData {}
57
101
 
58
102
  export enum StreamRole {
@@ -60,21 +104,36 @@ export enum StreamRole {
60
104
  ENGINE = 'engine',
61
105
  SYSTEM = 'system', //reserved for system use (i.e, if worker or engine fails)
62
106
  }
63
-
107
+ /**
108
+ * Represents a type for messages that have been reclaimed from a stream.
109
+ * Each item is a tuple containing a messageId and its details.
110
+ */
64
111
  export type ReclaimedMessageType = [
65
- messageId: string, //stream id (e.g.,`<timestamp>-<count>`)
112
+ /** The stream ID, typically formatted as `<timestamp>-<count>` */
113
+ messageId: string,
114
+ /** Details of the message, consisting of a key and its value */
66
115
  details: [
67
- key: string, //`key' is always 'message'
68
- value: string //`value` is stringified StreamData (StreamDataType)
116
+ /** Key is always 'message' */
117
+ key: string,
118
+ /** Value is a stringified representation of StreamData */
119
+ value: string
69
120
  ]
70
- ][]; //wrapped in an outer array
121
+ ][];
71
122
 
123
+ /** Configuration parameters for a stream */
72
124
  export type StreamConfig = {
125
+ /** Namespace under which the stream operates */
73
126
  namespace: string;
127
+ /** Application identifier */
74
128
  appId: string;
129
+ /** Globally unique identifier for the stream */
75
130
  guid: string;
131
+ /** Role associated with the stream */
76
132
  role: StreamRole;
133
+ /** Optional topic for the stream */
77
134
  topic?: string;
78
- reclaimDelay?: number; //default 60_000
79
- reclaimCount?: number; //default 3 (any value greater throws an error)
135
+ /** Delay before a message can be reclaimed, defaults to 60,000 milliseconds */
136
+ reclaimDelay?: number;
137
+ /** Maximum number of reclaims allowed, defaults to 3. Values greater throw an error */
138
+ reclaimCount?: number;
80
139
  }
@@ -1,17 +0,0 @@
1
- /**
2
- * NOTE: Using `maxSystemRetries = 3` and `backoffCoefficient = 10`, errant
3
- * workflows will be retried on the following schedule (8 times in 27 hours):
4
- * => 10ms, 100ms, 1000ms, 10s, 100s, 1_000s, 10_000s, 100_000s
5
- * TODO: Max Interval, Min Interval, Initial Interval
6
- *
7
- * ERROR CODES:
8
- * 594: waitforsignal
9
- * 592: sleepFor
10
- * 596, 597, 598: fatal
11
- * 599: retry
12
- */
13
- declare const getWorkflowYAML: (app: string, version: string) => string;
14
- declare const APP_VERSION = "1";
15
- declare const APP_ID = "durable";
16
- declare const DEFAULT_COEFFICIENT = 10;
17
- export { getWorkflowYAML, APP_VERSION, APP_ID, DEFAULT_COEFFICIENT, };