@codenotch/codenotch.react 2.0.1 → 2.0.3

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 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAkB,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAGjK,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAoB,aAAa,EAAkB,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExH,OAAO,UAAU,MAAM,yBAAyB,CAAC;AAEjD;;;GAGG;AACH,QAAA,MAAM,GAAG,EAAE,aAAkB,CAAC;AA6B9B;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,iBAAS,IAAI,CAAC,YAAY,EAAE,GAAG,GAAG,IAAI,CA0DrC;AA2KD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,iBAAS,YAAY,IAAI,aAAa,CAErC;AAED;;;;;;;;;;;;;GAaG;AACH,iBAAS,YAAY,IAAI,aAAa,CAErC;AAED;;;;;;;;;;;;;;GAcG;AACH,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW,CAG5D;AAED,wFAAwF;AACxF,KAAK,qBAAqB,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,kBAAkB,CAAC,CAAC;AAElE,8FAA8F;AAC9F,KAAK,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAElF;;;;;;;;;;GAUG;AACH,iBAAS,aAAa,CAAC,CAAC,SAAS,aAAa,CAAC,GAAG,CAAC,EAC/C,SAAS,EAAE,CAAC,GACb,iBAAiB,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAQnG;AAED,OAAO,EACH,GAAG,EACH,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,IAAI,EACJ,UAAU,EACb,CAAC;AAEF,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAkB,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAGjK,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAoB,aAAa,EAAkB,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExH,OAAO,UAAU,MAAM,yBAAyB,CAAC;AAEjD;;;GAGG;AACH,QAAA,MAAM,GAAG,EAAE,aAAkB,CAAC;AA6B9B;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,iBAAS,IAAI,CAAC,YAAY,EAAE,GAAG,GAAG,IAAI,CA0DrC;AA+QD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,iBAAS,YAAY,IAAI,aAAa,CAErC;AAED;;;;;;;;;;;;;GAaG;AACH,iBAAS,YAAY,IAAI,aAAa,CAErC;AAED;;;;;;;;;;;;;;GAcG;AACH,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW,CAG5D;AAED,wFAAwF;AACxF,KAAK,qBAAqB,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,kBAAkB,CAAC,CAAC;AAElE,8FAA8F;AAC9F,KAAK,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAElF;;;;;;;;;;GAUG;AACH,iBAAS,aAAa,CAAC,CAAC,SAAS,aAAa,CAAC,GAAG,CAAC,EAC/C,SAAS,EAAE,CAAC,GACb,iBAAiB,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAQnG;AAED,OAAO,EACH,GAAG,EACH,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,IAAI,EACJ,UAAU,EACb,CAAC;AAEF,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC"}
package/dist/index.js CHANGED
@@ -194,8 +194,99 @@ function createApi() {
194
194
  }
195
195
  return await response.json();
196
196
  },
197
- startProcess: async (process, inputs) => {
198
- throw new Error('Not implemented.');
197
+ startProcess: async (processId, inputs) => {
198
+ if (env.clusterUrl === undefined)
199
+ throw new Error(MISSING_CLUSTER_URL_ERROR);
200
+ if (env.serviceName === undefined)
201
+ throw new Error(MISSING_SERVICE_NAME_ERROR);
202
+ // Exemple url: http://127.0.0.1:5005/test1/processes/helloWorldProcess/instances
203
+ // Format: {env.clusterUrl}/{env.serviceName}/processes/{process}/instances
204
+ /*
205
+ Response is like :
206
+ {
207
+ "instanceId": "0bb026e7-5470-486d-8164-dc83d7e32bd7",
208
+ "instanceToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjI5NTllZGY4LTdkY2UtND...0wYVg"
209
+ }
210
+ */
211
+ // Starts the process
212
+ const response = await fetch(`${env.clusterUrl}/${env.serviceName}/processes/${processId}/instances`, {
213
+ method: 'POST',
214
+ body: JSON.stringify({
215
+ "id": (0, uuid_1.v4)(),
216
+ "input": inputs
217
+ }),
218
+ headers: {
219
+ 'Content-Type': 'application/json',
220
+ }
221
+ });
222
+ if (response.status.toString().startsWith('2') === false) {
223
+ console.warn("Codenotch startProcess: failed to start process", response.status, response.statusText);
224
+ return {
225
+ isError: true,
226
+ output: undefined,
227
+ processInstanceId: '',
228
+ errorMessage: `Failed to start process: ${response.status} ${response.statusText}`
229
+ };
230
+ }
231
+ // Check response
232
+ const instanceData = await response.json();
233
+ if (!instanceData.instanceId || !instanceData.instanceToken) {
234
+ console.warn("Codenotch startProcess: invalid response data", instanceData);
235
+ return {
236
+ isError: true,
237
+ output: undefined,
238
+ processInstanceId: '',
239
+ errorMessage: `Failed to start process: invalid response data`
240
+ };
241
+ }
242
+ const getProcessResult = async () => {
243
+ // Instance get: http://127.0.0.1:5005/instances/826bd498-e410-4c48-b29a-e79a76b75ef1
244
+ // Token header: Codenotch-Instance-Token
245
+ /*
246
+ {
247
+ "id": "826bd498-e410-4c48-b29a-e79a76b75ef1",
248
+ "state": "SUCCESS",
249
+ "output": {
250
+ "result": "Hello, World!"
251
+ },
252
+ "errors": []
253
+ }
254
+ */
255
+ const instanceResp = await fetch(`${env.clusterUrl}/instances/${instanceData.instanceId}`, {
256
+ method: 'GET',
257
+ headers: {
258
+ 'Codenotch-Instance-Token': instanceData.instanceToken
259
+ }
260
+ });
261
+ const instanceDataResp = await instanceResp.json();
262
+ if (instanceDataResp.state === 'SUCCESS') {
263
+ return instanceDataResp.output;
264
+ }
265
+ console.log("instanceDataResp", instanceDataResp);
266
+ return undefined;
267
+ };
268
+ const timeout = 30000; // 30 seconds
269
+ const pollInterval = 500; // 0.5 second
270
+ const startTime = Date.now();
271
+ while (Date.now() - startTime < timeout) {
272
+ const result = await getProcessResult();
273
+ if (result !== undefined) {
274
+ return {
275
+ isError: false,
276
+ output: result,
277
+ processInstanceId: instanceData.instanceId,
278
+ errorMessage: ''
279
+ };
280
+ }
281
+ await new Promise(resolve => setTimeout(resolve, pollInterval));
282
+ }
283
+ console.warn(`Codenotch startProcess: process ${processId} timed out after ${timeout} ms`);
284
+ return {
285
+ isError: true,
286
+ output: undefined,
287
+ processInstanceId: instanceData.instanceId,
288
+ errorMessage: `Process timed out after ${timeout} ms`
289
+ };
199
290
  },
200
291
  getUrlParams: () => {
201
292
  let result = {};
@@ -58,7 +58,7 @@ export interface ICodenotchApi {
58
58
  /**
59
59
  * Start a server-side BPMN process and wait for its completion.
60
60
  */
61
- startProcess<TProcess, TInput, TOutput>(process: TProcess, inputs: TInput): Promise<IProcessResult<TOutput>>;
61
+ startProcess<TInput, TOutput>(processId: string, inputs: TInput): Promise<IProcessResult<TOutput>>;
62
62
  /** Runtime environment (cluster, service, language, theme dictionaries, manifests…). Populated by `init()`. */
63
63
  readonly env: ICodenotchEnv;
64
64
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Codenotch.d.ts","sourceRoot":"","sources":["../../src/models/Codenotch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Codenotch.d.ts","sourceRoot":"","sources":["../../src/models/Codenotch.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codenotch/codenotch.react",
3
- "version": "2.0.1",
3
+ "version": "2.0.3",
4
4
  "description": "React bindings for Codenotch applications: start BPMN processes, run cnql queries, listen to real-time signals, manage theme and language.",
5
5
  "keywords": [
6
6
  "codenotch",
package/src/index.ts CHANGED
@@ -177,8 +177,108 @@ function createApi(): ICodenotchApi {
177
177
 
178
178
  return await response.json();
179
179
  },
180
- startProcess: async <TProcess, TInput, TOutput>(process: TProcess, inputs: TInput): Promise<IProcessResult<TOutput>> => {
181
- throw new Error('Not implemented.');
180
+ startProcess: async <TInput, TOutput>(processId: string, inputs: TInput): Promise<IProcessResult<TOutput>> => {
181
+ if (env.clusterUrl === undefined) throw new Error(MISSING_CLUSTER_URL_ERROR);
182
+ if (env.serviceName === undefined) throw new Error(MISSING_SERVICE_NAME_ERROR);
183
+
184
+ // Exemple url: http://127.0.0.1:5005/test1/processes/helloWorldProcess/instances
185
+ // Format: {env.clusterUrl}/{env.serviceName}/processes/{process}/instances
186
+ /*
187
+ Response is like :
188
+ {
189
+ "instanceId": "0bb026e7-5470-486d-8164-dc83d7e32bd7",
190
+ "instanceToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjI5NTllZGY4LTdkY2UtND...0wYVg"
191
+ }
192
+ */
193
+
194
+
195
+ // Starts the process
196
+ const response = await fetch(`${env.clusterUrl}/${env.serviceName}/processes/${processId}/instances`,
197
+ {
198
+ method: 'POST',
199
+ body: JSON.stringify({
200
+ "id": v4(),
201
+ "input": inputs
202
+ }),
203
+ headers: {
204
+ 'Content-Type': 'application/json',
205
+ }
206
+ });
207
+ if (response.status.toString().startsWith('2') === false) {
208
+ console.warn("Codenotch startProcess: failed to start process", response.status, response.statusText);
209
+ return {
210
+ isError: true,
211
+ output: undefined as any,
212
+ processInstanceId: '',
213
+ errorMessage: `Failed to start process: ${response.status} ${response.statusText}`
214
+ };
215
+ }
216
+
217
+ // Check response
218
+ const instanceData: { instanceId: string; instanceToken: string } = await response.json();
219
+ if (!instanceData.instanceId || !instanceData.instanceToken) {
220
+ console.warn("Codenotch startProcess: invalid response data", instanceData);
221
+ return {
222
+ isError: true,
223
+ output: undefined as any,
224
+ processInstanceId: '',
225
+ errorMessage: `Failed to start process: invalid response data`
226
+ };
227
+ }
228
+
229
+ const getProcessResult = async () => {
230
+ // Instance get: http://127.0.0.1:5005/instances/826bd498-e410-4c48-b29a-e79a76b75ef1
231
+ // Token header: Codenotch-Instance-Token
232
+ /*
233
+ {
234
+ "id": "826bd498-e410-4c48-b29a-e79a76b75ef1",
235
+ "state": "SUCCESS",
236
+ "output": {
237
+ "result": "Hello, World!"
238
+ },
239
+ "errors": []
240
+ }
241
+ */
242
+ const instanceResp = await fetch(`${env.clusterUrl}/instances/${instanceData.instanceId}`, {
243
+ method: 'GET',
244
+ headers: {
245
+ 'Codenotch-Instance-Token': instanceData.instanceToken
246
+ }
247
+ });
248
+ const instanceDataResp: { state: string; output: any; errors: any[] } = await instanceResp.json();
249
+ if (instanceDataResp.state === 'SUCCESS') {
250
+ return instanceDataResp.output;
251
+ }
252
+ console.log("instanceDataResp", instanceDataResp);
253
+ return undefined;
254
+ };
255
+
256
+
257
+ const timeout = 30000; // 30 seconds
258
+ const pollInterval = 500; // 0.5 second
259
+ const startTime = Date.now();
260
+ while (Date.now() - startTime < timeout) {
261
+ const result = await getProcessResult();
262
+ if (result !== undefined) {
263
+ return {
264
+ isError: false,
265
+ output: result as TOutput,
266
+ processInstanceId: instanceData.instanceId,
267
+ errorMessage: ''
268
+ };
269
+ }
270
+ await new Promise(resolve => setTimeout(resolve, pollInterval));
271
+ }
272
+
273
+ console.warn(`Codenotch startProcess: process ${processId} timed out after ${timeout} ms`);
274
+ return {
275
+ isError: true,
276
+ output: undefined as any,
277
+ processInstanceId: instanceData.instanceId,
278
+ errorMessage: `Process timed out after ${timeout} ms`
279
+ };
280
+
281
+
182
282
  },
183
283
  getUrlParams: () => {
184
284
  let result: { [key: string]: string } = {};
@@ -66,7 +66,7 @@ export interface ICodenotchApi {
66
66
  /**
67
67
  * Start a server-side BPMN process and wait for its completion.
68
68
  */
69
- startProcess<TProcess, TInput, TOutput>(process: TProcess, inputs: TInput): Promise<IProcessResult<TOutput>>;
69
+ startProcess<TInput, TOutput>(processId: string, inputs: TInput): Promise<IProcessResult<TOutput>>;
70
70
 
71
71
  /** Runtime environment (cluster, service, language, theme dictionaries, manifests…). Populated by `init()`. */
72
72
  readonly env: ICodenotchEnv;