@webda/core 2.1.1 → 2.1.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.
Files changed (65) hide show
  1. package/lib/application.spec.js.map +1 -1
  2. package/lib/core.d.ts +27 -2
  3. package/lib/core.js +21 -0
  4. package/lib/core.js.map +1 -1
  5. package/lib/core.spec.js.map +1 -1
  6. package/lib/models/aclmodel.d.ts +7 -7
  7. package/lib/models/aclmodel.js +1 -1
  8. package/lib/models/aclmodel.js.map +1 -1
  9. package/lib/models/aclmodel.spec.js.map +1 -1
  10. package/lib/models/coremodel.d.ts +2 -2
  11. package/lib/models/coremodel.js +6 -1
  12. package/lib/models/coremodel.js.map +1 -1
  13. package/lib/models/coremodel.spec.js.map +1 -1
  14. package/lib/models/ownermodel.spec.js.map +1 -1
  15. package/lib/models/rolemodel.spec.js.map +1 -1
  16. package/lib/queues/filequeue.spec.js.map +1 -1
  17. package/lib/queues/memoryqueue.spec.js.map +1 -1
  18. package/lib/router.spec.js.map +1 -1
  19. package/lib/services/asyncevents.spec.js.map +1 -1
  20. package/lib/services/authentication.js.map +1 -1
  21. package/lib/services/authentication.spec.js.map +1 -1
  22. package/lib/services/binary.spec.js.map +1 -1
  23. package/lib/services/cloudbinary.spec.js.map +1 -1
  24. package/lib/services/configuration.spec.js.map +1 -1
  25. package/lib/services/cryptoservice.js.map +1 -1
  26. package/lib/services/cryptoservice.spec.js.map +1 -1
  27. package/lib/services/debugmailer.spec.js.map +1 -1
  28. package/lib/services/echo.spec.js.map +1 -1
  29. package/lib/services/filebinary.spec.js.map +1 -1
  30. package/lib/services/fileconfiguration.spec.js.map +1 -1
  31. package/lib/services/invitationservice.spec.js.map +1 -1
  32. package/lib/services/kubernetesconfiguration.spec.js.map +1 -1
  33. package/lib/services/mailer.spec.js.map +1 -1
  34. package/lib/services/notificationservice.spec.js.map +1 -1
  35. package/lib/services/oauth.spec.js.map +1 -1
  36. package/lib/services/proxy.js.map +1 -1
  37. package/lib/services/proxy.spec.js.map +1 -1
  38. package/lib/services/resource.spec.js.map +1 -1
  39. package/lib/services/service.d.ts +16 -1
  40. package/lib/services/service.js +47 -0
  41. package/lib/services/service.js.map +1 -1
  42. package/lib/services/service.spec.js +28 -1
  43. package/lib/services/service.spec.js.map +1 -1
  44. package/lib/services/version.spec.js.map +1 -1
  45. package/lib/stores/file.spec.js.map +1 -1
  46. package/lib/stores/mapper.spec.js.map +1 -1
  47. package/lib/stores/memory.js +1 -2
  48. package/lib/stores/memory.js.map +1 -1
  49. package/lib/stores/memory.spec.js.map +1 -1
  50. package/lib/stores/store.d.ts +1 -0
  51. package/lib/stores/store.js +11 -0
  52. package/lib/stores/store.js.map +1 -1
  53. package/lib/stores/store.spec.js +5 -0
  54. package/lib/stores/store.spec.js.map +1 -1
  55. package/lib/test.js.map +1 -1
  56. package/lib/utils/context.d.ts +177 -79
  57. package/lib/utils/context.js +263 -133
  58. package/lib/utils/context.js.map +1 -1
  59. package/lib/utils/context.spec.js +20 -2
  60. package/lib/utils/context.spec.js.map +1 -1
  61. package/lib/utils/cookie.spec.js.map +1 -1
  62. package/lib/utils/httpcontext.spec.js.map +1 -1
  63. package/lib/utils/session.spec.js.map +1 -1
  64. package/lib/utils/waiter.spec.js.map +1 -1
  65. package/package.json +5 -5
@@ -10,46 +10,204 @@ import { JSONUtils } from "./serializers.js";
10
10
  class Cookie {
11
11
  }
12
12
  /**
13
- * @category CoreFeatures
14
- * @WebdaModel
13
+ * OperationContext is used when call to an operation
15
14
  */
16
- export class Context extends EventEmitter {
15
+ export class OperationContext extends EventEmitter {
17
16
  /**
18
17
  * @ignore
19
18
  * Used by Webda framework to set the body, session and output stream if known
20
19
  */
21
- constructor(webda, httpContext, stream = undefined) {
20
+ constructor(webda, stream = undefined) {
22
21
  super();
23
- this._ended = undefined;
24
- this.parameters = undefined;
25
- this._pathParams = {};
26
- this._serviceParams = {};
27
22
  this.global = false;
28
- this.extensions = {
29
- http: httpContext
30
- };
23
+ this.extensions = {};
31
24
  this._webda = webda;
32
25
  this._promises = [];
33
- this._outputHeaders = new Map();
34
- this.headersFlushed = false;
35
26
  this._body = undefined;
36
- this.statusCode = 204;
37
27
  this._stream = stream;
38
- this.parameters = {};
39
- this.headers = new Map();
40
28
  if (stream === undefined) {
41
29
  this.createStream();
42
30
  }
43
- this.processParameters();
44
- if (httpContext) {
45
- this.session = this.newSession();
31
+ }
32
+ /**
33
+ * Get an extension of the context
34
+ * @param name of the extension
35
+ * @returns extension object
36
+ */
37
+ getExtension(name) {
38
+ return this.extensions[name];
39
+ }
40
+ /**
41
+ *
42
+ * @param name to add
43
+ * @param extension object to store
44
+ */
45
+ setExtension(name, extension) {
46
+ this.extensions[name] = extension;
47
+ }
48
+ /**
49
+ * Return the webda
50
+ */
51
+ getWebda() {
52
+ return this._webda;
53
+ }
54
+ /**
55
+ * Register a promise with the context
56
+ * @param promise
57
+ */
58
+ addAsyncRequest(promise) {
59
+ this._promises.push(promise);
60
+ }
61
+ /**
62
+ * Get output as string, if a OutputStream is provided it will returned null
63
+ * @returns
64
+ */
65
+ getOutput() {
66
+ if (this._stream instanceof WritableStreamBuffer && this._stream.size()) {
67
+ return this._stream.getContents().toString();
68
+ }
69
+ return this._body;
70
+ }
71
+ /**
72
+ * Ensure the whole execution is finished
73
+ */
74
+ async end() {
75
+ this.emit("end");
76
+ await Promise.all(this._promises);
77
+ this.emit("close");
78
+ }
79
+ async getInput(sanitizedOptions = {
80
+ allowedTags: [],
81
+ allowedAttributes: {}
82
+ }) {
83
+ if (this._sanitized) {
84
+ return this._sanitized;
85
+ }
86
+ let recursiveSanitize = (obj, options = undefined) => {
87
+ if (typeof obj === "string") {
88
+ return sanitizeHtml(obj, options);
89
+ }
90
+ if (typeof obj === "object") {
91
+ Object.keys(obj).forEach(key => {
92
+ obj[key] = recursiveSanitize(obj[key], options);
93
+ });
94
+ }
95
+ return obj;
96
+ };
97
+ try {
98
+ this._sanitized = recursiveSanitize(JSON.parse(await this.getRawInputAsString(this.getWebda().getGlobalParams().requestLimit, this.getWebda().getGlobalParams().requestTimeout)), sanitizedOptions);
99
+ }
100
+ catch (err) {
101
+ this.log("ERROR", err, `Body: '${await this.getRawInputAsString()}'`);
102
+ return undefined;
103
+ }
104
+ return this._sanitized;
105
+ }
106
+ /**
107
+ * By default empty
108
+ * @returns
109
+ */
110
+ async getRawInputAsString(_limit = 1024 * 1024 * 10, _timeout = 60000, _encoding) {
111
+ return "";
112
+ }
113
+ /**
114
+ * @override
115
+ */
116
+ async getRawInput(limit = 1024 * 1024 * 10, timeout = 60000) {
117
+ return Buffer.from("");
118
+ }
119
+ /**
120
+ * @override
121
+ */
122
+ getRawStream() {
123
+ return undefined;
124
+ }
125
+ /**
126
+ * Get the HTTP stream to output raw data
127
+ * @returns {*}
128
+ */
129
+ getOutputStream() {
130
+ return this._stream;
131
+ }
132
+ /**
133
+ * Get linked session
134
+ * @returns
135
+ */
136
+ getSession() {
137
+ return this.session;
138
+ }
139
+ /**
140
+ * Remove samitized body
141
+ */
142
+ reinit() {
143
+ this._sanitized = undefined;
144
+ if (!this._stream || this._stream instanceof WritableStreamBuffer) {
145
+ this.createStream();
146
+ }
147
+ }
148
+ /**
149
+ * Create a buffer stream
150
+ */
151
+ createStream() {
152
+ this._stream = new WritableStreamBuffer({
153
+ initialSize: 100 * 1024,
154
+ incrementAmount: 100 * 1024
155
+ });
156
+ }
157
+ /**
158
+ * Proxy for simplification
159
+ * @param level
160
+ * @param args
161
+ */
162
+ log(level, ...args) {
163
+ this._webda.log(level, ...args);
164
+ }
165
+ /**
166
+ * Create a new session
167
+ * @returns
168
+ */
169
+ newSession() {
170
+ this.session = new (this._webda.getModel(this._webda.parameter("sessionModel") || "Webda/Session"))(this);
171
+ return this.session;
172
+ }
173
+ /**
174
+ * Remove everything that was about to be sent
175
+ */
176
+ resetResponse() {
177
+ this._body = undefined;
178
+ if (this._stream instanceof WritableStreamBuffer) {
179
+ this.createStream();
46
180
  }
47
181
  }
182
+ /**
183
+ * Write data to the client
184
+ *
185
+ * @param output If it is an object it will be serializeb with toPublicJSON, if it is a String it will be appended to the result, if it is a buffer it will replace the result
186
+ * @param ...args any arguments to pass to the toPublicJSON method
187
+ */
188
+ write(output, _encoding, _cb) {
189
+ if (!output) {
190
+ return false;
191
+ }
192
+ if (typeof output === "object" && !(output instanceof Buffer)) {
193
+ this._body = JSONUtils.stringify(output, undefined, 0, true);
194
+ }
195
+ else if (typeof output == "string") {
196
+ if (this._body == undefined) {
197
+ this._body = "";
198
+ }
199
+ this._body += output;
200
+ }
201
+ else {
202
+ this._body = output.toString();
203
+ }
204
+ return true;
205
+ }
48
206
  /**
49
207
  * Get Global Context
50
208
  */
51
209
  static getGlobalContext() {
52
- return Context.__globalContext;
210
+ return OperationContext.__globalContext;
53
211
  }
54
212
  /**
55
213
  * Set the Global Context
@@ -58,7 +216,7 @@ export class Context extends EventEmitter {
58
216
  */
59
217
  static setGlobalContext(ctx) {
60
218
  ctx.global = true;
61
- Context.__globalContext = ctx;
219
+ OperationContext.__globalContext = ctx;
62
220
  }
63
221
  /**
64
222
  * Return if context is global
@@ -66,6 +224,59 @@ export class Context extends EventEmitter {
66
224
  isGlobal() {
67
225
  return this.global;
68
226
  }
227
+ async init() {
228
+ return this;
229
+ }
230
+ /**
231
+ * Get the current user from session
232
+ */
233
+ async getCurrentUser(refresh = false) {
234
+ if (!this.getCurrentUserId()) {
235
+ return undefined;
236
+ }
237
+ // Caching the answer
238
+ if (!this.user || refresh) {
239
+ this.user = await this._webda.getService("Users").get(this.getCurrentUserId());
240
+ }
241
+ return this.user;
242
+ }
243
+ /**
244
+ * Get the current user id from session
245
+ */
246
+ getCurrentUserId() {
247
+ return undefined;
248
+ }
249
+ }
250
+ /**
251
+ * This represent in fact a WebContext
252
+ * In 3.0 an abstract version of Context will replace this (closer to OperationContext)
253
+ * @category CoreFeatures
254
+ * @WebdaModel
255
+ *
256
+ * @deprecated use WebContext instead - will be removed in 3.0
257
+ */
258
+ export class Context extends OperationContext {
259
+ /**
260
+ * @ignore
261
+ * Used by Webda framework to set the body, session and output stream if known
262
+ */
263
+ constructor(webda, httpContext, stream = undefined) {
264
+ super(webda, stream);
265
+ this._ended = undefined;
266
+ this.parameters = undefined;
267
+ this._pathParams = {};
268
+ this._serviceParams = {};
269
+ this.setHttpContext(httpContext);
270
+ this._outputHeaders = new Map();
271
+ this.headersFlushed = false;
272
+ this.statusCode = 204;
273
+ this.parameters = {};
274
+ this.headers = new Map();
275
+ this.processParameters();
276
+ if (httpContext) {
277
+ this.session = this.newSession();
278
+ }
279
+ }
69
280
  /**
70
281
  * Set current http context
71
282
  * @param httpContext current http context
@@ -74,13 +285,6 @@ export class Context extends EventEmitter {
74
285
  this.extensions["http"] = httpContext;
75
286
  this.reinit();
76
287
  }
77
- /**
78
- * Remove samitized body
79
- */
80
- reinit() {
81
- this._sanitized = undefined;
82
- this.createStream();
83
- }
84
288
  /**
85
289
  * Get current http context
86
290
  */
@@ -88,20 +292,22 @@ export class Context extends EventEmitter {
88
292
  return this.getExtension("http");
89
293
  }
90
294
  /**
91
- * Get an extension of the context
92
- * @param name of the extension
93
- * @returns extension object
295
+ * @override
94
296
  */
95
- getExtension(name) {
96
- return this.extensions[name];
297
+ async getRawInputAsString(limit = 1024 * 1024 * 10, timeout = 60000, encoding) {
298
+ return this.getHttpContext().getRawBodyAsString(limit, timeout, encoding);
97
299
  }
98
300
  /**
99
- *
100
- * @param name to add
101
- * @param extension object to store
301
+ * @override
102
302
  */
103
- setExtension(name, extension) {
104
- this.extensions[name] = extension;
303
+ async getRawInput(limit = 1024 * 1024 * 10, timeout = 60000) {
304
+ return this.getHttpContext().getRawBody(limit, timeout);
305
+ }
306
+ /**
307
+ * @override
308
+ */
309
+ getRawStream() {
310
+ return this.getHttpContext().getRawStream();
105
311
  }
106
312
  /**
107
313
  * Get output headers
@@ -122,13 +328,6 @@ export class Context extends EventEmitter {
122
328
  this.parameters = Object.assign({}, this._serviceParams);
123
329
  this.parameters = Object.assign(this.parameters, this._pathParams);
124
330
  }
125
- /**
126
- * Get linked session
127
- * @returns
128
- */
129
- getSession() {
130
- return this.session;
131
- }
132
331
  getServiceParameters() {
133
332
  return this._serviceParams;
134
333
  }
@@ -147,11 +346,8 @@ export class Context extends EventEmitter {
147
346
  * Remove everything that was about to be sent
148
347
  */
149
348
  resetResponse() {
150
- this._body = undefined;
151
349
  this._outputHeaders.clear();
152
- if (this._stream instanceof WritableStreamBuffer) {
153
- this.createStream();
154
- }
350
+ super.resetResponse();
155
351
  }
156
352
  /**
157
353
  * Write data to the client
@@ -160,25 +356,14 @@ export class Context extends EventEmitter {
160
356
  * @param ...args any arguments to pass to the toPublicJSON method
161
357
  */
162
358
  // @ts-ignore
163
- write(output, _encoding, _cb) {
359
+ write(output, encoding, cb) {
164
360
  if (this.statusCode === 204) {
165
361
  this.statusCode = 200;
166
362
  }
167
363
  if (typeof output === "object" && !(output instanceof Buffer)) {
168
364
  this.setHeader("Content-type", "application/json");
169
- this._body = JSONUtils.stringify(output, undefined, 0, true);
170
- return true;
171
- }
172
- else if (typeof output == "string") {
173
- if (this._body == undefined) {
174
- this._body = "";
175
- }
176
- this._body += output;
177
- return true;
178
- }
179
- else {
180
- this._body = output;
181
365
  }
366
+ return super.write(output, encoding, cb);
182
367
  }
183
368
  /**
184
369
  * Set a header value
@@ -226,9 +411,6 @@ export class Context extends EventEmitter {
226
411
  getResponseCookies() {
227
412
  return this._cookie;
228
413
  }
229
- addAsyncRequest(promise) {
230
- this._promises.push(promise);
231
- }
232
414
  isEnded() {
233
415
  return this._ended;
234
416
  }
@@ -238,7 +420,7 @@ export class Context extends EventEmitter {
238
420
  *
239
421
  ******************************/
240
422
  /**
241
- * Express response allow statusCode to be defined this was
423
+ * Express response allow statusCode to be defined this way
242
424
  * @param code to return
243
425
  */
244
426
  status(code) {
@@ -246,7 +428,7 @@ export class Context extends EventEmitter {
246
428
  return this;
247
429
  }
248
430
  /**
249
- * Express response allow answer to be sent this w
431
+ * Express response allow answer to be sent this way
250
432
  * @param code to return
251
433
  */
252
434
  json(obj) {
@@ -271,7 +453,7 @@ export class Context extends EventEmitter {
271
453
  }
272
454
  await Promise.all(this._promises);
273
455
  if (this._stream instanceof WritableStreamBuffer && this._stream.size()) {
274
- this._body = this._stream.getContents();
456
+ this._body = this._stream.getContents().toString();
275
457
  this.statusCode = 200;
276
458
  }
277
459
  if (!this.headersFlushed) {
@@ -283,32 +465,16 @@ export class Context extends EventEmitter {
283
465
  });
284
466
  return this._ended;
285
467
  }
468
+ /**
469
+ * Alias to keep compatibility with WebContext
470
+ * @param sanitizedOptions
471
+ * @returns
472
+ */
286
473
  async getRequestBody(sanitizedOptions = {
287
474
  allowedTags: [],
288
475
  allowedAttributes: {}
289
476
  }) {
290
- if (this._sanitized) {
291
- return this._sanitized;
292
- }
293
- let recursiveSanitize = (obj, options = undefined) => {
294
- if (typeof obj === "string") {
295
- return sanitizeHtml(obj, options);
296
- }
297
- if (typeof obj === "object") {
298
- Object.keys(obj).forEach(key => {
299
- obj[key] = recursiveSanitize(obj[key], options);
300
- });
301
- }
302
- return obj;
303
- };
304
- try {
305
- this._sanitized = recursiveSanitize(JSON.parse(await this.getHttpContext().getRawBodyAsString(this.getWebda().getGlobalParams().requestLimit, this.getWebda().getGlobalParams().requestTimeout)), sanitizedOptions);
306
- }
307
- catch (err) {
308
- this.log("ERROR", err, `Body: '${await this.getHttpContext().getRawBodyAsString()}'`);
309
- return undefined;
310
- }
311
- return this._sanitized;
477
+ return this.getInput(sanitizedOptions);
312
478
  }
313
479
  /**
314
480
  * Get request body
@@ -361,20 +527,7 @@ export class Context extends EventEmitter {
361
527
  * @returns {*}
362
528
  */
363
529
  getStream() {
364
- return this._stream;
365
- }
366
- /**
367
- * Get the current user from session
368
- */
369
- async getCurrentUser(refresh = false) {
370
- if (!this.getCurrentUserId()) {
371
- return undefined;
372
- }
373
- // Caching the answer
374
- if (!this.user || refresh) {
375
- this.user = await this._webda.getService("Users").get(this.getCurrentUserId());
376
- }
377
- return this.user;
530
+ return this.getOutputStream();
378
531
  }
379
532
  /**
380
533
  * Get the current user id from session
@@ -400,12 +553,6 @@ export class Context extends EventEmitter {
400
553
  }
401
554
  return Promise.reject(Error("Not implemented"));
402
555
  }
403
- /**
404
- * Return the webda
405
- */
406
- getWebda() {
407
- return this._webda;
408
- }
409
556
  /**
410
557
  * Get the request locale if found
411
558
  */
@@ -442,14 +589,6 @@ export class Context extends EventEmitter {
442
589
  logIn() {
443
590
  // Empty for compatibility
444
591
  }
445
- /**
446
- * Proxy for simplification
447
- * @param level
448
- * @param args
449
- */
450
- log(level, ...args) {
451
- this._webda.log(level, ...args);
452
- }
453
592
  /**
454
593
  * Return true if Headers got flushed already
455
594
  * @returns
@@ -464,20 +603,6 @@ export class Context extends EventEmitter {
464
603
  setFlushedHeaders(status = true) {
465
604
  this.headersFlushed = status;
466
605
  }
467
- createStream() {
468
- this._stream = new WritableStreamBuffer({
469
- initialSize: 100 * 1024,
470
- incrementAmount: 100 * 1024
471
- });
472
- }
473
- /**
474
- * Create a new session
475
- * @returns
476
- */
477
- newSession() {
478
- this.session = new (this._webda.getModel(this._webda.parameter("sessionModel") || "Webda/Session"))(this);
479
- return this.session;
480
- }
481
606
  async init() {
482
607
  this._stream.on("pipe", () => {
483
608
  this._webda.flushHeaders(this);
@@ -486,10 +611,15 @@ export class Context extends EventEmitter {
486
611
  if (this.getExtension("http")) {
487
612
  this.session = (await this._webda.getService("SessionManager").load(this)).getProxy();
488
613
  }
489
- return this;
614
+ return super.init();
490
615
  }
491
616
  emitError(err) {
492
617
  this.emit("error", err);
493
618
  }
494
619
  }
620
+ /**
621
+ * Replacement for Context
622
+ */
623
+ export class WebContext extends Context {
624
+ }
495
625
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/utils/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/utils/context.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ import { suite, test } from "@testdeck/mocha";
8
8
  import * as assert from "assert";
9
9
  import { Readable } from "stream";
10
10
  import { WebdaTest } from "../test.js";
11
- import { Context } from "./context.js";
11
+ import { Context, OperationContext, WebContext } from "./context.js";
12
12
  import { HttpContext } from "./httpcontext.js";
13
13
  let ContextTest = class ContextTest extends WebdaTest {
14
14
  async before() {
@@ -191,7 +191,7 @@ let ContextTest = class ContextTest extends WebdaTest {
191
191
  this.ctx.setHeader("X-Webda", "HEAD");
192
192
  assert.strictEqual(this.ctx.getResponseHeaders()["X-Webda"], "HEAD");
193
193
  this.ctx.write(400);
194
- assert.strictEqual(this.ctx.getResponseBody(), 400);
194
+ assert.strictEqual(this.ctx.getResponseBody(), "400");
195
195
  // @ts-ignore
196
196
  Object.observe = (obj, callback) => {
197
197
  callback([
@@ -231,6 +231,21 @@ let ContextTest = class ContextTest extends WebdaTest {
231
231
  this.ctx.getHttpContext().getHeaders()["accept-language"] = "zn-CH,zn;q=0.8,en-US;q=0.6,en;q=0.4,es;q=0.2";
232
232
  assert.strictEqual(this.ctx.getLocale(), "en");
233
233
  }
234
+ async operationContext() {
235
+ let ctx = new OperationContext(this.webda);
236
+ assert.strictEqual(ctx.getCurrentUserId(), undefined);
237
+ assert.strictEqual(await ctx.getRawInputAsString(), "");
238
+ assert.strictEqual((await ctx.getRawInput()).toString(), "");
239
+ assert.strictEqual(ctx.getRawStream(), undefined);
240
+ ctx.createStream();
241
+ ctx.getOutputStream().write("plop");
242
+ assert.strictEqual(ctx.getOutput(), "plop");
243
+ // cov
244
+ let http = new HttpContext("test.webda.io", "GET", "/");
245
+ ctx = new WebContext(this.webda, http);
246
+ await ctx.getRawInput();
247
+ ctx.getRawStream();
248
+ }
234
249
  };
235
250
  __decorate([
236
251
  test
@@ -268,6 +283,9 @@ __decorate([
268
283
  __decorate([
269
284
  test
270
285
  ], ContextTest.prototype, "fallbackLocale", null);
286
+ __decorate([
287
+ test
288
+ ], ContextTest.prototype, "operationContext", null);
271
289
  ContextTest = __decorate([
272
290
  suite
273
291
  ], ContextTest);