exupery-core-async 0.3.34 → 0.3.35

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,3 +1,3 @@
1
1
  import * as _et from 'exupery-core-types';
2
- export type Basic_Procedure_Primed_With_Resources<Parameters, Error> = ($: Parameters) => _et.Procedure_Promise<Error>;
3
- export declare const __create_procedure_primed_with_resources: <Parameters, Error, Resources>(handler: Basic_Procedure_Primed_With_Resources<Parameters, Error>) => _et.Procedure_Primed_With_Resources<Parameters, Error>;
2
+ export type Basic_Procedure_Primed_With_Resources<Parameters, Error> = ($: Parameters) => _et.Command_Promise<Error>;
3
+ export declare const __create_procedure_primed_with_resources: <Parameters, Error, Resources>(handler: Basic_Procedure_Primed_With_Resources<Parameters, Error>) => _et.Command<Parameters, Error>;
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.__create_procedure_primed_with_resources = void 0;
4
- const create_procedure_promise_1 = require("./create_procedure_promise");
4
+ const create_command_promise_1 = require("./create_command_promise");
5
5
  const __create_procedure_primed_with_resources = (handler) => {
6
6
  return {
7
7
  'execute with synchronous data without error transformation': handler,
8
8
  'execute with synchronous data': (parameters, transform_error) => {
9
- return (0, create_procedure_promise_1.__create_procedure_promise)({
9
+ return (0, create_command_promise_1.__create_command_promise)({
10
10
  'execute': (on_success, on_error) => {
11
11
  handler(parameters).__start(on_success, (error) => {
12
12
  on_error(transform_error(error));
@@ -15,7 +15,7 @@ const __create_procedure_primed_with_resources = (handler) => {
15
15
  });
16
16
  },
17
17
  'execute with asynchronous data without error transformation': (query) => {
18
- return (0, create_procedure_promise_1.__create_procedure_promise)({
18
+ return (0, create_command_promise_1.__create_command_promise)({
19
19
  'execute': (on_success, on_error) => {
20
20
  query.__start(($) => {
21
21
  handler($).__start(on_success, on_error);
@@ -24,7 +24,7 @@ const __create_procedure_primed_with_resources = (handler) => {
24
24
  });
25
25
  },
26
26
  'execute with asynchronous data': (query, transform_error) => {
27
- return (0, create_procedure_promise_1.__create_procedure_promise)({
27
+ return (0, create_command_promise_1.__create_command_promise)({
28
28
  'execute': (on_success, on_error) => {
29
29
  query.__start(($) => {
30
30
  handler($).__start(on_success, (error) => {
@@ -0,0 +1,2 @@
1
+ import * as _et from 'exupery-core-types';
2
+ export declare const create_command_procedure: <Parameters, Error, Resources>(handler: ($r: Resources, $p: Parameters) => _et.Command_Promise<Error>) => _et.Command_Procedure<Parameters, Error, Resources>;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.create_command_procedure = void 0;
4
+ const create_command_1 = require("./create_command");
5
+ const create_command_procedure = (handler) => {
6
+ return ($r) => (0, create_command_1.__create_procedure_primed_with_resources)(($p) => handler($r, $p));
7
+ };
8
+ exports.create_command_procedure = create_command_procedure;
@@ -13,5 +13,5 @@ type Executer<E> = {
13
13
  * @param executer the function that produces the eventual value
14
14
  * @returns
15
15
  */
16
- export declare function __create_procedure_promise<E>(executer: Executer<E>): _et.Procedure_Promise<E>;
16
+ export declare function __create_command_promise<E>(executer: Executer<E>): _et.Command_Promise<E>;
17
17
  export {};
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.__create_procedure_promise = __create_procedure_promise;
4
- class Procedure_Promise_Class {
3
+ exports.__create_command_promise = __create_command_promise;
4
+ class Command_Promise_Class {
5
5
  constructor(executer) {
6
6
  this.executer = executer;
7
7
  }
@@ -9,7 +9,7 @@ class Procedure_Promise_Class {
9
9
  this.executer.execute(on_success, on_error);
10
10
  }
11
11
  map_error(handle_error) {
12
- return new Procedure_Promise_Class({
12
+ return new Command_Promise_Class({
13
13
  'execute': (on_success, on_error) => {
14
14
  this.executer.execute(on_success, (error) => {
15
15
  on_error(handle_error(error));
@@ -23,6 +23,6 @@ class Procedure_Promise_Class {
23
23
  * @param executer the function that produces the eventual value
24
24
  * @returns
25
25
  */
26
- function __create_procedure_promise(executer) {
27
- return new Procedure_Promise_Class(executer);
26
+ function __create_command_promise(executer) {
27
+ return new Command_Promise_Class(executer);
28
28
  }
@@ -0,0 +1,2 @@
1
+ import * as _et from 'exupery-core-types';
2
+ export declare const create_query_procedure: <Parameters, Result, Error, Resources>(handler: ($r: Resources, $p: Parameters) => _et.Query_Promise<Result, Error>) => _et.Query_Procedure<Parameters, Result, Error, Resources>;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.create_query = void 0;
3
+ exports.create_query_procedure = void 0;
4
4
  const create_query_primed_with_resources_1 = require("./create_query_primed_with_resources");
5
- const create_query = (handler) => {
5
+ const create_query_procedure = (handler) => {
6
6
  return ($r) => (0, create_query_primed_with_resources_1.__create_query_primed_with_resources)(($p) => handler($r, $p));
7
7
  };
8
- exports.create_query = create_query;
8
+ exports.create_query_procedure = create_query_procedure;
package/dist/index.d.ts CHANGED
@@ -1,13 +1,8 @@
1
- import * as _et from "exupery-core-types";
2
1
  export * from "./algorithms/query/create_query_promise";
3
2
  export * from "./algorithms/query/create_query_primed_with_resources";
4
- export * from "./algorithms/query/create_query";
5
- export * from "./algorithms/procedure/create_procedure";
6
- export * from "./algorithms/procedure/create_procedure_promise";
7
- export * from "./algorithms/procedure/create_procedure_primed_with_resources";
8
- export * from "./expressions/procedure";
9
- export * from "./expressions/query";
10
- export declare const query: {
11
- 'create result': <T, E>($: T) => _et.Query_Promise<T, E>;
12
- 'raise error': <T, E>($: E) => _et.Query_Promise<T, E>;
13
- };
3
+ export * from "./algorithms/query/create_query_procedure";
4
+ export * from "./algorithms/command/create_command_procedure";
5
+ export * from "./algorithms/command/create_command_promise";
6
+ export * from "./algorithms/command/create_command";
7
+ export * from "./procedures/command";
8
+ export * from "./procedures/query";
package/dist/index.js CHANGED
@@ -14,33 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.query = void 0;
18
- //types
19
- //functions
20
17
  __exportStar(require("./algorithms/query/create_query_promise"), exports);
21
18
  __exportStar(require("./algorithms/query/create_query_primed_with_resources"), exports);
22
- __exportStar(require("./algorithms/query/create_query"), exports);
23
- __exportStar(require("./algorithms/procedure/create_procedure"), exports);
24
- __exportStar(require("./algorithms/procedure/create_procedure_promise"), exports);
25
- __exportStar(require("./algorithms/procedure/create_procedure_primed_with_resources"), exports);
26
- // procedure exports
27
- __exportStar(require("./expressions/procedure"), exports);
28
- // query exports
29
- __exportStar(require("./expressions/query"), exports);
30
- const create_query_promise_1 = require("./algorithms/query/create_query_promise");
31
- exports.query = {
32
- 'create result': ($) => {
33
- return (0, create_query_promise_1.__create_query_promise)({
34
- 'execute': (on_value) => {
35
- on_value($);
36
- }
37
- });
38
- },
39
- 'raise error': ($) => {
40
- return (0, create_query_promise_1.__create_query_promise)({
41
- 'execute': (on_value, on_error) => {
42
- on_error($);
43
- }
44
- });
45
- }
46
- };
19
+ __exportStar(require("./algorithms/query/create_query_procedure"), exports);
20
+ __exportStar(require("./algorithms/command/create_command_procedure"), exports);
21
+ __exportStar(require("./algorithms/command/create_command_promise"), exports);
22
+ __exportStar(require("./algorithms/command/create_command"), exports);
23
+ __exportStar(require("./procedures/command"), exports);
24
+ __exportStar(require("./procedures/query"), exports);
@@ -0,0 +1,17 @@
1
+ import * as _et from 'exupery-core-types';
2
+ import { Basic_Procedure_Primed_With_Resources } from '../algorithms/command/create_command';
3
+ export declare namespace p {
4
+ const array_parallel: <Error, Element_Error>(the_array: _et.Array<_et.Command_Promise<Element_Error>>, aggregate_errors: _et.Transformer_Without_Parameters<_et.Array<Element_Error>, Error>) => _et.Command_Promise<Error>;
5
+ const array_serie: <Error>(array: _et.Array<_et.Command_Promise<Error>>) => _et.Command_Promise<Error>;
6
+ const assert_async: <Error>(assertion: _et.Query_Promise<boolean, Error>, error_if_failed: Error) => _et.Command_Promise<Error>;
7
+ const assert_sync: <Error>(assertion: boolean, error_if_failed: Error) => _et.Command_Promise<Error>;
8
+ const conditional_async: <Error>(precondition: _et.Query_Promise<boolean, Error>, procedure: _et.Command_Promise<Error>) => _et.Command_Promise<Error>;
9
+ const conditional_sync: <Error>(precondition: boolean, procedure: _et.Command_Promise<Error>) => _et.Command_Promise<Error>;
10
+ const conditional_on_processor: <Procedure_Input, Error>(precondition: _et.Process_Result<Procedure_Input, Error>, procedure: Basic_Procedure_Primed_With_Resources<Procedure_Input, Error>) => _et.Command_Promise<Error>;
11
+ const conditional_on_refiner: <Procedure_Input, Refinement_Error, Error>(precondition: _et.Refinement_Result<Procedure_Input, Refinement_Error>, error_transformer: _et.Transformer_Without_Parameters<Refinement_Error, Error>, procedure: Basic_Procedure_Primed_With_Resources<Procedure_Input, Error>) => _et.Command_Promise<Error>;
12
+ const dictionary_serie: <Error, Entry_Error>(dictionary: _et.Dictionary<_et.Command_Promise<Entry_Error>>, transform_error: _et.Transformer_Without_Parameters<_et.Key_Value_Pair<Entry_Error>, Error>) => _et.Command_Promise<Error>;
13
+ const dictionary_parallel: <Error, Entry_Error>(dictionary: _et.Dictionary<_et.Command_Promise<Entry_Error>>, aggregate_errors: _et.Transformer_Without_Parameters<_et.Dictionary<Entry_Error>, Error>) => _et.Command_Promise<Error>;
14
+ const dictionary_parallel_without_transforming_the_error: <Error, Entry_Error>(dictionary: _et.Dictionary<_et.Command_Promise<Entry_Error>>) => _et.Command_Promise<_et.Dictionary<Entry_Error>>;
15
+ const execute_with_async_data: <Parameters, Error>(procedure: _et.Command<Parameters, Error>, query: _et.Query_Promise<Parameters, Error>) => _et.Command_Promise<Error>;
16
+ const sequence: <Error>(steps: _et.Command_Promise<Error>[]) => _et.Command_Promise<Error>;
17
+ }
@@ -25,12 +25,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.p = void 0;
27
27
  const _ei = __importStar(require("exupery-core-internals"));
28
- const create_procedure_promise_1 = require("../algorithms/procedure/create_procedure_promise");
28
+ const create_command_promise_1 = require("../algorithms/command/create_command_promise");
29
29
  const create_asynchronous_processes_monitor_1 = require("../create_asynchronous_processes_monitor");
30
30
  var p;
31
31
  (function (p) {
32
32
  p.array_parallel = (the_array, aggregate_errors) => {
33
- return (0, create_procedure_promise_1.__create_procedure_promise)({
33
+ return (0, create_command_promise_1.__create_command_promise)({
34
34
  'execute': (on_success, on_error) => {
35
35
  const errors = [];
36
36
  (0, create_asynchronous_processes_monitor_1.create_asynchronous_processes_monitor)((monitor) => {
@@ -55,7 +55,7 @@ var p;
55
55
  });
56
56
  };
57
57
  p.array_serie = (array) => {
58
- return (0, create_procedure_promise_1.__create_procedure_promise)({
58
+ return (0, create_command_promise_1.__create_command_promise)({
59
59
  'execute': (on_success, on_error) => {
60
60
  let current = 0;
61
61
  const do_next = () => {
@@ -73,7 +73,7 @@ var p;
73
73
  });
74
74
  };
75
75
  p.assert_async = (assertion, error_if_failed) => {
76
- return (0, create_procedure_promise_1.__create_procedure_promise)({
76
+ return (0, create_command_promise_1.__create_command_promise)({
77
77
  'execute': (on_success, on_error) => {
78
78
  assertion.__start(($) => {
79
79
  if ($) {
@@ -89,7 +89,7 @@ var p;
89
89
  });
90
90
  };
91
91
  p.assert_sync = (assertion, error_if_failed) => {
92
- return (0, create_procedure_promise_1.__create_procedure_promise)({
92
+ return (0, create_command_promise_1.__create_command_promise)({
93
93
  'execute': (on_success, on_error) => {
94
94
  if (!assertion) {
95
95
  on_error(error_if_failed);
@@ -100,7 +100,7 @@ var p;
100
100
  });
101
101
  };
102
102
  p.conditional_async = (precondition, procedure) => {
103
- return (0, create_procedure_promise_1.__create_procedure_promise)({
103
+ return (0, create_command_promise_1.__create_command_promise)({
104
104
  'execute': (on_success, on_error) => {
105
105
  precondition.__start(($) => {
106
106
  if ($) {
@@ -114,7 +114,7 @@ var p;
114
114
  });
115
115
  };
116
116
  p.conditional_sync = (precondition, procedure) => {
117
- return (0, create_procedure_promise_1.__create_procedure_promise)({
117
+ return (0, create_command_promise_1.__create_command_promise)({
118
118
  'execute': (on_success, on_error) => {
119
119
  if (precondition) {
120
120
  procedure.__start(on_success, on_error);
@@ -126,7 +126,7 @@ var p;
126
126
  });
127
127
  };
128
128
  p.conditional_on_processor = (precondition, procedure) => {
129
- return (0, create_procedure_promise_1.__create_procedure_promise)({
129
+ return (0, create_command_promise_1.__create_command_promise)({
130
130
  'execute': (on_success, on_error) => {
131
131
  precondition.__extract_data(($) => {
132
132
  procedure($).__start(on_success, on_error);
@@ -135,7 +135,7 @@ var p;
135
135
  });
136
136
  };
137
137
  p.conditional_on_refiner = (precondition, error_transformer, procedure) => {
138
- return (0, create_procedure_promise_1.__create_procedure_promise)({
138
+ return (0, create_command_promise_1.__create_command_promise)({
139
139
  'execute': (on_success, on_error) => {
140
140
  precondition.process(($) => {
141
141
  procedure($).__start(on_success, on_error);
@@ -146,7 +146,7 @@ var p;
146
146
  });
147
147
  };
148
148
  p.dictionary_serie = (dictionary, transform_error) => {
149
- return (0, create_procedure_promise_1.__create_procedure_promise)({
149
+ return (0, create_command_promise_1.__create_command_promise)({
150
150
  'execute': (on_success, on_error) => {
151
151
  const op_dictionary_to_list_based_on_insertion_order = (dict) => {
152
152
  const temp = [];
@@ -178,7 +178,7 @@ var p;
178
178
  });
179
179
  };
180
180
  p.dictionary_parallel = (dictionary, aggregate_errors) => {
181
- return (0, create_procedure_promise_1.__create_procedure_promise)({
181
+ return (0, create_command_promise_1.__create_command_promise)({
182
182
  'execute': (on_success, on_error) => {
183
183
  const errors = {};
184
184
  (0, create_asynchronous_processes_monitor_1.create_asynchronous_processes_monitor)((monitor) => {
@@ -203,7 +203,7 @@ var p;
203
203
  });
204
204
  };
205
205
  p.dictionary_parallel_without_transforming_the_error = (dictionary) => {
206
- return (0, create_procedure_promise_1.__create_procedure_promise)({
206
+ return (0, create_command_promise_1.__create_command_promise)({
207
207
  'execute': (on_success, on_error) => {
208
208
  const errors = {};
209
209
  (0, create_asynchronous_processes_monitor_1.create_asynchronous_processes_monitor)((monitor) => {
@@ -228,7 +228,7 @@ var p;
228
228
  });
229
229
  };
230
230
  p.execute_with_async_data = (procedure, query) => {
231
- return (0, create_procedure_promise_1.__create_procedure_promise)({
231
+ return (0, create_command_promise_1.__create_command_promise)({
232
232
  'execute': (on_success, on_error) => {
233
233
  query.__start((query_result) => {
234
234
  procedure['execute with synchronous data without error transformation'](query_result).__start(on_success, on_error);
@@ -237,7 +237,7 @@ var p;
237
237
  });
238
238
  };
239
239
  p.sequence = (steps) => {
240
- return (0, create_procedure_promise_1.__create_procedure_promise)({
240
+ return (0, create_command_promise_1.__create_command_promise)({
241
241
  'execute': (on_success, on_error) => {
242
242
  const length = _ei.array_literal(steps).__get_number_of_elements();
243
243
  const runStep = (index) => {
@@ -2,6 +2,7 @@ import * as _et from 'exupery-core-types';
2
2
  export declare namespace q {
3
3
  const dictionary_parallel: <Result, Error, Entry_Error>(dictionary: _et.Dictionary<_et.Query_Promise<Result, Entry_Error>>, aggregate_errors: _et.Transformer_Without_Parameters<_et.Dictionary<Entry_Error>, Error>) => _et.Query_Promise<_et.Dictionary<Result>, Error>;
4
4
  const dictionary_parallel_without_error_aggregation: <Result, Error>($: _et.Dictionary<_et.Query_Promise<Result, Error>>) => _et.Query_Promise<_et.Dictionary<Result>, _et.Dictionary<Error>>;
5
- const fixed: <Query_Result, Error>(query_result: Query_Result) => _et.Query_Promise<Query_Result, Error>;
5
+ const fixed: <Result, Error>(result: Result) => _et.Query_Promise<Result, Error>;
6
+ const raise_error: <T, E>($: E) => _et.Query_Promise<T, E>;
6
7
  const transform: <In, Out, Error>(query: _et.Query_Promise<In, Error>, transform: ($: In) => Out) => _et.Query_Promise<Out, Error>;
7
8
  }
@@ -90,10 +90,17 @@ var q;
90
90
  }
91
91
  });
92
92
  };
93
- q.fixed = (query_result) => {
93
+ q.fixed = (result) => {
94
94
  return (0, create_query_promise_1.__create_query_promise)({
95
95
  'execute': (on_success, on_error) => {
96
- on_success(query_result);
96
+ on_success(result);
97
+ }
98
+ });
99
+ };
100
+ q.raise_error = ($) => {
101
+ return (0, create_query_promise_1.__create_query_promise)({
102
+ 'execute': (on_value, on_error) => {
103
+ on_error($);
97
104
  }
98
105
  });
99
106
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "exupery-core-async",
3
- "version": "0.3.34",
3
+ "version": "0.3.35",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Corno",
6
6
  "description": "async types for Exupery",
@@ -1,2 +0,0 @@
1
- import * as _et from 'exupery-core-types';
2
- export declare const create_procedure: <Parameters, Error, Resources>(handler: ($r: Resources, $p: Parameters) => _et.Procedure_Promise<Error>) => _et.Procedure<Parameters, Error, Resources>;
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.create_procedure = void 0;
4
- const create_procedure_primed_with_resources_1 = require("./create_procedure_primed_with_resources");
5
- const create_procedure = (handler) => {
6
- return ($r) => (0, create_procedure_primed_with_resources_1.__create_procedure_primed_with_resources)(($p) => handler($r, $p));
7
- };
8
- exports.create_procedure = create_procedure;
@@ -1,2 +0,0 @@
1
- import * as _et from 'exupery-core-types';
2
- export declare const create_query: <Parameters, Result, Error, Resources>(handler: ($r: Resources, $p: Parameters) => _et.Query_Promise<Result, Error>) => _et.Query<Parameters, Result, Error, Resources>;
@@ -1,17 +0,0 @@
1
- import * as _et from 'exupery-core-types';
2
- import { Basic_Procedure_Primed_With_Resources } from '../algorithms/procedure/create_procedure_primed_with_resources';
3
- export declare namespace p {
4
- const array_parallel: <Error, Element_Error>(the_array: _et.Array<_et.Procedure_Promise<Element_Error>>, aggregate_errors: _et.Transformer_Without_Parameters<_et.Array<Element_Error>, Error>) => _et.Procedure_Promise<Error>;
5
- const array_serie: <Error>(array: _et.Array<_et.Procedure_Promise<Error>>) => _et.Procedure_Promise<Error>;
6
- const assert_async: <Error>(assertion: _et.Query_Promise<boolean, Error>, error_if_failed: Error) => _et.Procedure_Promise<Error>;
7
- const assert_sync: <Error>(assertion: boolean, error_if_failed: Error) => _et.Procedure_Promise<Error>;
8
- const conditional_async: <Error>(precondition: _et.Query_Promise<boolean, Error>, procedure: _et.Procedure_Promise<Error>) => _et.Procedure_Promise<Error>;
9
- const conditional_sync: <Error>(precondition: boolean, procedure: _et.Procedure_Promise<Error>) => _et.Procedure_Promise<Error>;
10
- const conditional_on_processor: <Procedure_Input, Error>(precondition: _et.Process_Result<Procedure_Input, Error>, procedure: Basic_Procedure_Primed_With_Resources<Procedure_Input, Error>) => _et.Procedure_Promise<Error>;
11
- const conditional_on_refiner: <Procedure_Input, Refinement_Error, Error>(precondition: _et.Refinement_Result<Procedure_Input, Refinement_Error>, error_transformer: _et.Transformer_Without_Parameters<Refinement_Error, Error>, procedure: Basic_Procedure_Primed_With_Resources<Procedure_Input, Error>) => _et.Procedure_Promise<Error>;
12
- const dictionary_serie: <Error, Entry_Error>(dictionary: _et.Dictionary<_et.Procedure_Promise<Entry_Error>>, transform_error: _et.Transformer_Without_Parameters<_et.Key_Value_Pair<Entry_Error>, Error>) => _et.Procedure_Promise<Error>;
13
- const dictionary_parallel: <Error, Entry_Error>(dictionary: _et.Dictionary<_et.Procedure_Promise<Entry_Error>>, aggregate_errors: _et.Transformer_Without_Parameters<_et.Dictionary<Entry_Error>, Error>) => _et.Procedure_Promise<Error>;
14
- const dictionary_parallel_without_transforming_the_error: <Error, Entry_Error>(dictionary: _et.Dictionary<_et.Procedure_Promise<Entry_Error>>) => _et.Procedure_Promise<_et.Dictionary<Entry_Error>>;
15
- const execute_with_async_data: <Parameters, Error>(procedure: _et.Procedure_Primed_With_Resources<Parameters, Error>, query: _et.Query_Promise<Parameters, Error>) => _et.Procedure_Promise<Error>;
16
- const sequence: <Error>(steps: _et.Procedure_Promise<Error>[]) => _et.Procedure_Promise<Error>;
17
- }