@codenotch/codenotch.react 2.0.1 → 2.0.2

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;AA4QD;;;;;;;;;;;;;;;;;;;;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,96 @@ 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
+ });
219
+ if (response.status.toString().startsWith('2') === false) {
220
+ console.warn("Codenotch startProcess: failed to start process", response.status, response.statusText);
221
+ return {
222
+ isError: true,
223
+ output: undefined,
224
+ processInstanceId: '',
225
+ errorMessage: `Failed to start process: ${response.status} ${response.statusText}`
226
+ };
227
+ }
228
+ // Check response
229
+ const instanceData = await response.json();
230
+ if (!instanceData.instanceId || !instanceData.instanceToken) {
231
+ console.warn("Codenotch startProcess: invalid response data", instanceData);
232
+ return {
233
+ isError: true,
234
+ output: undefined,
235
+ processInstanceId: '',
236
+ errorMessage: `Failed to start process: invalid response data`
237
+ };
238
+ }
239
+ const getProcessResult = async () => {
240
+ // Instance get: http://127.0.0.1:5005/instances/826bd498-e410-4c48-b29a-e79a76b75ef1
241
+ // Token header: Codenotch-Instance-Token
242
+ /*
243
+ {
244
+ "id": "826bd498-e410-4c48-b29a-e79a76b75ef1",
245
+ "state": "SUCCESS",
246
+ "output": {
247
+ "result": "Hello, World!"
248
+ },
249
+ "errors": []
250
+ }
251
+ */
252
+ const instanceResp = await fetch(`${env.clusterUrl}/instances/${instanceData.instanceId}`, {
253
+ method: 'GET',
254
+ headers: {
255
+ 'Codenotch-Instance-Token': instanceData.instanceToken
256
+ }
257
+ });
258
+ const instanceDataResp = await instanceResp.json();
259
+ if (instanceDataResp.state === 'SUCCESS') {
260
+ return instanceDataResp.output;
261
+ }
262
+ console.log("instanceDataResp", instanceDataResp);
263
+ return undefined;
264
+ };
265
+ const timeout = 30000; // 30 seconds
266
+ const pollInterval = 500; // 0.5 second
267
+ const startTime = Date.now();
268
+ while (Date.now() - startTime < timeout) {
269
+ const result = await getProcessResult();
270
+ if (result !== undefined) {
271
+ return {
272
+ isError: false,
273
+ output: result,
274
+ processInstanceId: instanceData.instanceId,
275
+ errorMessage: ''
276
+ };
277
+ }
278
+ await new Promise(resolve => setTimeout(resolve, pollInterval));
279
+ }
280
+ console.warn(`Codenotch startProcess: process ${processId} timed out after ${timeout} ms`);
281
+ return {
282
+ isError: true,
283
+ output: undefined,
284
+ processInstanceId: instanceData.instanceId,
285
+ errorMessage: `Process timed out after ${timeout} ms`
286
+ };
199
287
  },
200
288
  getUrlParams: () => {
201
289
  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.2",
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,105 @@ 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
+ });
204
+ if (response.status.toString().startsWith('2') === false) {
205
+ console.warn("Codenotch startProcess: failed to start process", response.status, response.statusText);
206
+ return {
207
+ isError: true,
208
+ output: undefined as any,
209
+ processInstanceId: '',
210
+ errorMessage: `Failed to start process: ${response.status} ${response.statusText}`
211
+ };
212
+ }
213
+
214
+ // Check response
215
+ const instanceData: { instanceId: string; instanceToken: string } = await response.json();
216
+ if (!instanceData.instanceId || !instanceData.instanceToken) {
217
+ console.warn("Codenotch startProcess: invalid response data", instanceData);
218
+ return {
219
+ isError: true,
220
+ output: undefined as any,
221
+ processInstanceId: '',
222
+ errorMessage: `Failed to start process: invalid response data`
223
+ };
224
+ }
225
+
226
+ const getProcessResult = async () => {
227
+ // Instance get: http://127.0.0.1:5005/instances/826bd498-e410-4c48-b29a-e79a76b75ef1
228
+ // Token header: Codenotch-Instance-Token
229
+ /*
230
+ {
231
+ "id": "826bd498-e410-4c48-b29a-e79a76b75ef1",
232
+ "state": "SUCCESS",
233
+ "output": {
234
+ "result": "Hello, World!"
235
+ },
236
+ "errors": []
237
+ }
238
+ */
239
+ const instanceResp = await fetch(`${env.clusterUrl}/instances/${instanceData.instanceId}`, {
240
+ method: 'GET',
241
+ headers: {
242
+ 'Codenotch-Instance-Token': instanceData.instanceToken
243
+ }
244
+ });
245
+ const instanceDataResp: { state: string; output: any; errors: any[] } = await instanceResp.json();
246
+ if (instanceDataResp.state === 'SUCCESS') {
247
+ return instanceDataResp.output;
248
+ }
249
+ console.log("instanceDataResp", instanceDataResp);
250
+ return undefined;
251
+ };
252
+
253
+
254
+ const timeout = 30000; // 30 seconds
255
+ const pollInterval = 500; // 0.5 second
256
+ const startTime = Date.now();
257
+ while (Date.now() - startTime < timeout) {
258
+ const result = await getProcessResult();
259
+ if (result !== undefined) {
260
+ return {
261
+ isError: false,
262
+ output: result as TOutput,
263
+ processInstanceId: instanceData.instanceId,
264
+ errorMessage: ''
265
+ };
266
+ }
267
+ await new Promise(resolve => setTimeout(resolve, pollInterval));
268
+ }
269
+
270
+ console.warn(`Codenotch startProcess: process ${processId} timed out after ${timeout} ms`);
271
+ return {
272
+ isError: true,
273
+ output: undefined as any,
274
+ processInstanceId: instanceData.instanceId,
275
+ errorMessage: `Process timed out after ${timeout} ms`
276
+ };
277
+
278
+
182
279
  },
183
280
  getUrlParams: () => {
184
281
  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;