ekms 8.0.0-beta.21 → 8.0.0-beta.23

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. package/common/colors.instance.json +0 -28
  2. package/common/comparable.js +0 -13
  3. package/common/concept.js +9 -5
  4. package/common/countable.js +3 -3
  5. package/common/crew.js +1 -1
  6. package/common/currency.js +3 -3
  7. package/common/dialogues.js +48 -117
  8. package/common/dimension.instance.json +4 -4
  9. package/common/dimension.js +8 -8
  10. package/common/dimension.test.json +242 -1248
  11. package/common/edible.instance.json +30 -58
  12. package/common/emotions.js +1 -1
  13. package/common/events.js +3 -3
  14. package/common/fastfood.instance.json +873 -1072
  15. package/common/fastfood.js +20 -20
  16. package/common/formulas.instance.json +6 -6
  17. package/common/formulas.js +8 -8
  18. package/common/gdefaults.js +11 -11
  19. package/common/help.js +1 -1
  20. package/common/helpers/dialogues.js +2 -3
  21. package/common/helpers/properties.js +48 -58
  22. package/common/hierarchy.js +9 -13
  23. package/common/javascript.js +5 -5
  24. package/common/math.instance.json +12 -12
  25. package/common/math.js +5 -5
  26. package/common/meta.js +19 -26
  27. package/common/ordering.js +1 -1
  28. package/common/people.js +1 -2
  29. package/common/percentages.js +2 -2
  30. package/common/pipboy.instance.json +30 -86
  31. package/common/pipboy.js +25 -28
  32. package/common/pokemon.js +1 -1
  33. package/common/properties.js +48 -121
  34. package/common/punctuation.js +1 -1
  35. package/common/reports.instance.json +1 -1
  36. package/common/reports.js +48 -65
  37. package/common/scorekeeper.js +10 -18
  38. package/common/sdefaults.js +4 -4
  39. package/common/stm.js +1 -1
  40. package/common/tell.js +6 -6
  41. package/common/temperature.instance.json +0 -84
  42. package/common/testing.js +3 -3
  43. package/common/time.js +3 -3
  44. package/common/ui.js +5 -5
  45. package/package.json +2 -2
@@ -112,7 +112,7 @@
112
112
  ],
113
113
  "level": 0,
114
114
  "bridge": "{ ...next(operator) }",
115
- "generatorp": "({context, g}) => `put on`"
115
+ "generatorp": "({context}) => `put on`"
116
116
  },
117
117
  {
118
118
  "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:161",
@@ -134,7 +134,7 @@
134
134
  ],
135
135
  "level": 0,
136
136
  "bridge": "{ ...before, marker: operator('putOn', 0), dead: false }",
137
- "generatorp": "({context, g}) => `put on ${g(context.item)}`",
137
+ "generatorp": "async ({context, g}) => `put on ${await g(context.item)}`",
138
138
  "semantic": "({api, context}) => {\n api.change(context.item.marker)\n }"
139
139
  },
140
140
  {
@@ -151,7 +151,7 @@
151
151
  "changeable"
152
152
  ]
153
153
  ],
154
- "generatorp": "({context, g}) => `change ${g(context.item)}`",
154
+ "generatorp": "async ({context, g}) => `change ${await g(context.item)}`",
155
155
  "semantic": "({api, context}) => {\n api.change(context.item.marker)\n }"
156
156
  },
157
157
  {
@@ -162,7 +162,7 @@
162
162
  ],
163
163
  "level": 0,
164
164
  "bridge": "{ ...next(operator) }",
165
- "generatorp": "({context, g}) => `disarm`",
165
+ "generatorp": "({context}) => `disarm`",
166
166
  "semantic": "({api, context}) => {\n api.disarm()\n }"
167
167
  },
168
168
  {
@@ -173,7 +173,7 @@
173
173
  ],
174
174
  "level": 0,
175
175
  "bridge": "{ ...next(operator) }",
176
- "generatorp": "({context, g}) => `strip`",
176
+ "generatorp": "({context}) => `strip`",
177
177
  "semantic": "({api, context}) => {\n api.strip()\n }"
178
178
  },
179
179
  {
@@ -184,7 +184,7 @@
184
184
  ],
185
185
  "level": 0,
186
186
  "bridge": "{ ...next(operator), item: after[0], name: after[1] }",
187
- "generatorp": "({context, g}) => `call ${g(context.item)} ${g(context.name)}`",
187
+ "generatorp": "async ({context, g}) => `call ${await g(context.item)} ${await g(context.name)}`",
188
188
  "semantic": "({api, context}) => {\n api.setName(context.item, context.name.name.value)\n }"
189
189
  },
190
190
  {
@@ -195,7 +195,7 @@
195
195
  ],
196
196
  "level": 0,
197
197
  "bridge": "{ ...next(operator), item: after[0] }",
198
- "generatorp": "({context, g}) => `put on ${g(context.item)}`",
198
+ "generatorp": "async ({context, g}) => `put on ${await g(context.item)}`",
199
199
  "semantic": "({api, context}) => {\n if (context.item.name) {\n api.wear({ name: context.item.name.value, type: 'outfit' })\n } else {\n api.wear({ type: context.item.value })\n }\n }"
200
200
  },
201
201
  {
@@ -209,7 +209,7 @@
209
209
  ],
210
210
  "level": 0,
211
211
  "bridge": "{ ...next(operator), item: after[0] }",
212
- "generatorp": "({context, g}) => `wear ${g(context.item)}`",
212
+ "generatorp": "async ({context, g}) => `wear ${await g(context.item)}`",
213
213
  "semantic": "({api, context}) => {\n if (context.item.name) {\n api.wear({ name: context.item.name.value, type: 'outfit' })\n } else {\n api.wear({ type: context.item.value })\n }\n }"
214
214
  },
215
215
  {
@@ -230,44 +230,44 @@
230
230
  ]
231
231
  ],
232
232
  "bridge": "{ ...next(operator), item: after[0] }",
233
- "generatorp": "({context, g}) => `equip ${g(context.item)}`",
234
- "semantic": "({api, context, e}) => {\n // const value = e(context.item)\n let condition\n if (context.item.condition) {\n condition = { selector: context.item.condition.marker, property: context.item.condition.property[0].marker }\n }\n api.equip({ type: context.item.value, condition })\n }"
233
+ "generatorp": "async ({context, g}) => `equip ${await g(context.item)}`",
234
+ "semantic": "async ({api, context}) => {\n let condition\n if (context.item.condition) {\n condition = { selector: context.item.condition.marker, property: context.item.condition.property[0].marker }\n }\n api.equip({ type: context.item.value, condition })\n }"
235
235
  },
236
236
  {
237
- "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:273",
237
+ "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:272",
238
238
  "id": "toDrink",
239
239
  "isA": [
240
240
  "verby"
241
241
  ],
242
242
  "level": 0,
243
243
  "bridge": "{ ...next(operator), item: after[0] }",
244
- "generatorp": "({context, g}) => `drink ${g(context.item)}`",
245
- "semantic": "({api, context, e}) => {\n const value = e(context.item)\n api.drink(value.value)\n }"
244
+ "generatorp": "async ({context, g}) => `drink ${await g(context.item)}`",
245
+ "semantic": "async ({api, context, e}) => {\n const value = await e(context.item)\n api.drink(value.value)\n }"
246
246
  },
247
247
  {
248
- "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:285",
248
+ "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:284",
249
249
  "id": "eat",
250
250
  "isA": [
251
251
  "verby"
252
252
  ],
253
253
  "level": 0,
254
254
  "bridge": "{ ...next(operator), item: after[0] }",
255
- "generatorp": "({context, g}) => `eat ${g(context.item)}`",
256
- "semantic": "({api, context, e}) => {\n // const value = e(context.item)\n // api.eat(value.value)\n api.eat(context.item.value)\n }"
255
+ "generatorp": "async ({context, g}) => `eat ${await g(context.item)}`",
256
+ "semantic": "async ({api, context}) => {\n api.eat(context.item.value)\n }"
257
257
  },
258
258
  {
259
- "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:298",
259
+ "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:295",
260
260
  "id": "take",
261
261
  "isA": [
262
262
  "verby"
263
263
  ],
264
264
  "level": 0,
265
265
  "bridge": "{ ...next(operator), item: after[0] }",
266
- "generatorp": "({context, g}) => `take ${g(context.item)}`",
267
- "semantic": "({api, context, e}) => {\n const value = e(context.item)\n api.take(value.value)\n }"
266
+ "generatorp": "async ({context, g}) => `take ${await g(context.item)}`",
267
+ "semantic": "async ({api, context, e}) => {\n const value = await e(context.item)\n api.take(value.value)\n }"
268
268
  },
269
269
  {
270
- "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:310",
270
+ "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:307",
271
271
  "id": "nameable",
272
272
  "isA": [
273
273
  "theAble"
@@ -327,8 +327,8 @@
327
327
  ],
328
328
  "level": 0,
329
329
  "bridge": "{ ...next(operator), item: after[0] }",
330
- "generatorp": "({context, g}) => `apply ${g(context.item)}`",
331
- "semantic": "({api, context, e}) => {\n // { item: 'stimpak', quantity: <number>, to?: [ { part: ['arm', 'leg', 'torso', head'], side?: ['left', 'right'] } ] }\n const quantity = context.item.quantity ? e(context.item.quantity).value : 1\n api.apply({ item: 'stimpak', quantity })\n }"
330
+ "generatorp": "async ({context, g}) => `apply ${await g(context.item)}`",
331
+ "semantic": "async ({api, context, e}) => {\n // { item: 'stimpak', quantity: <number>, to?: [ { part: ['arm', 'leg', 'torso', head'], side?: ['left', 'right'] } ] }\n const quantity = context.item.quantity ? (await e(context.item.quantity)).value : 1\n api.apply({ item: 'stimpak', quantity })\n }"
332
332
  },
333
333
  {
334
334
  "id": "go",
@@ -337,7 +337,7 @@
337
337
  ],
338
338
  "level": 0,
339
339
  "bridge": "{ ...next(operator), showable: after[0].showable }",
340
- "generatorp": "({context, g}) => `go to ${g(context.showable)}`",
340
+ "generatorp": "async ({context, g}) => `go to ${await g(context.showable)}`",
341
341
  "semantic": "({api, context}) => {\n api.setDisplay(context.showable.value)\n }"
342
342
  },
343
343
  {
@@ -347,7 +347,7 @@
347
347
  ],
348
348
  "level": 0,
349
349
  "bridge": "{ ...next(operator), showable: after[0] }",
350
- "generatorp": "({context, g}) => `to ${g(context.showable)}`"
350
+ "generatorp": "async ({context, g}) => `to ${await g(context.showable)}`"
351
351
  },
352
352
  {
353
353
  "id": "showWeapons",
@@ -356,7 +356,7 @@
356
356
  ],
357
357
  "level": 0,
358
358
  "bridge": "{ ...next(operator), showable: after[0] }",
359
- "generatorp": "({context, g}) => `show ${g(context.showable)}`",
359
+ "generatorp": "async ({context, g}) => `show ${await g(context.showable)}`",
360
360
  "semantic": "({api, context}) => {\n if (context.showable.quantity && context.showable.quantity.value == 'all') {\n api.showWeapons('all')\n } else {\n api.showWeapons(context.showable.value)\n }\n }"
361
361
  },
362
362
  {
@@ -366,7 +366,7 @@
366
366
  ],
367
367
  "level": 0,
368
368
  "bridge": "{ ...next(operator), showable: after[0] }",
369
- "generatorp": "({context, g}) => `show ${g(context.showable)}`",
369
+ "generatorp": "async ({context, g}) => `show ${await g(context.showable)}`",
370
370
  "semantic": "({api, context}) => {\n api.setDisplay(context.showable.value)\n }"
371
371
  },
372
372
  {
@@ -1477,20 +1477,6 @@
1477
1477
  1
1478
1478
  ]
1479
1479
  ],
1480
- [
1481
- [
1482
- "is",
1483
- 0
1484
- ],
1485
- [
1486
- "list",
1487
- 1
1488
- ],
1489
- [
1490
- "unknown",
1491
- 1
1492
- ]
1493
- ],
1494
1480
  [
1495
1481
  [
1496
1482
  "is",
@@ -6958,20 +6944,6 @@
6958
6944
  1
6959
6945
  ]
6960
6946
  ],
6961
- [
6962
- [
6963
- "is",
6964
- 0
6965
- ],
6966
- [
6967
- "list",
6968
- 1
6969
- ],
6970
- [
6971
- "unknown",
6972
- 1
6973
- ]
6974
- ],
6975
6947
  [
6976
6948
  [
6977
6949
  "is",
@@ -24723,7 +24695,7 @@
24723
24695
  "bridge": "{ ...next(operator), item: after[0] }"
24724
24696
  },
24725
24697
  {
24726
- "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:273",
24698
+ "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:272",
24727
24699
  "id": "toDrink",
24728
24700
  "isA": [
24729
24701
  "verby"
@@ -24732,7 +24704,7 @@
24732
24704
  "bridge": "{ ...next(operator), item: after[0] }"
24733
24705
  },
24734
24706
  {
24735
- "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:285",
24707
+ "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:284",
24736
24708
  "id": "eat",
24737
24709
  "isA": [
24738
24710
  "verby"
@@ -24741,7 +24713,7 @@
24741
24713
  "bridge": "{ ...next(operator), item: after[0] }"
24742
24714
  },
24743
24715
  {
24744
- "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:298",
24716
+ "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:295",
24745
24717
  "id": "take",
24746
24718
  "isA": [
24747
24719
  "verby"
@@ -24750,7 +24722,7 @@
24750
24722
  "bridge": "{ ...next(operator), item: after[0] }"
24751
24723
  },
24752
24724
  {
24753
- "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:310",
24725
+ "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:307",
24754
24726
  "id": "nameable",
24755
24727
  "isA": [
24756
24728
  "theAble"
@@ -25815,34 +25787,6 @@
25815
25787
  1
25816
25788
  ]
25817
25789
  ],
25818
- [
25819
- [
25820
- "is",
25821
- 0
25822
- ],
25823
- [
25824
- "list",
25825
- 1
25826
- ],
25827
- [
25828
- "unknown",
25829
- 1
25830
- ]
25831
- ],
25832
- [
25833
- [
25834
- "is",
25835
- 0
25836
- ],
25837
- [
25838
- "list",
25839
- 1
25840
- ],
25841
- [
25842
- "unknown",
25843
- 1
25844
- ]
25845
- ],
25846
25790
  [
25847
25791
  [
25848
25792
  "is",
package/common/pipboy.js CHANGED
@@ -155,7 +155,7 @@ let configStruct = {
155
155
  isA: ['verby'],
156
156
  level: 0,
157
157
  bridge: "{ ...next(operator) }",
158
- generatorp: ({context, g}) => `put on`,
158
+ generatorp: ({context}) => `put on`,
159
159
  },
160
160
  {
161
161
  where: where(),
@@ -171,7 +171,7 @@ let configStruct = {
171
171
  isA: ['preposition'],
172
172
  level: 0,
173
173
  bridge: "{ ...before, marker: operator('putOn', 0), dead: false }",
174
- generatorp: ({context, g}) => `put on ${g(context.item)}`,
174
+ generatorp: async ({context, g}) => `put on ${await g(context.item)}`,
175
175
  semantic: ({api, context}) => {
176
176
  api.change(context.item.marker)
177
177
  }
@@ -183,7 +183,7 @@ let configStruct = {
183
183
  level: 0,
184
184
  bridge: "{ ...next(operator), item: after[0] }",
185
185
  localHierarchy: [ ['weapon', 'changeable'] ],
186
- generatorp: ({context, g}) => `change ${g(context.item)}`,
186
+ generatorp: async ({context, g}) => `change ${await g(context.item)}`,
187
187
  semantic: ({api, context}) => {
188
188
  api.change(context.item.marker)
189
189
  }
@@ -194,7 +194,7 @@ let configStruct = {
194
194
  isA: ['verby'],
195
195
  level: 0,
196
196
  bridge: "{ ...next(operator) }",
197
- generatorp: ({context, g}) => `disarm`,
197
+ generatorp: ({context}) => `disarm`,
198
198
  semantic: ({api, context}) => {
199
199
  api.disarm()
200
200
  }
@@ -205,7 +205,7 @@ let configStruct = {
205
205
  isA: ['verby'],
206
206
  level: 0,
207
207
  bridge: "{ ...next(operator) }",
208
- generatorp: ({context, g}) => `strip`,
208
+ generatorp: ({context}) => `strip`,
209
209
  semantic: ({api, context}) => {
210
210
  api.strip()
211
211
  }
@@ -216,7 +216,7 @@ let configStruct = {
216
216
  isA: ['verby'],
217
217
  level: 0,
218
218
  bridge: "{ ...next(operator), item: after[0], name: after[1] }",
219
- generatorp: ({context, g}) => `call ${g(context.item)} ${g(context.name)}`,
219
+ generatorp: async ({context, g}) => `call ${await g(context.item)} ${await g(context.name)}`,
220
220
  semantic: ({api, context}) => {
221
221
  api.setName(context.item, context.name.name.value)
222
222
  }
@@ -227,7 +227,7 @@ let configStruct = {
227
227
  isA: ['verby'],
228
228
  level: 0,
229
229
  bridge: "{ ...next(operator), item: after[0] }",
230
- generatorp: ({context, g}) => `put on ${g(context.item)}`,
230
+ generatorp: async ({context, g}) => `put on ${await g(context.item)}`,
231
231
  semantic: ({api, context}) => {
232
232
  if (context.item.name) {
233
233
  api.wear({ name: context.item.name.value, type: 'outfit' })
@@ -243,7 +243,7 @@ let configStruct = {
243
243
  words: ['where'], // the speech recognizer hears 'where' not 'wear'
244
244
  level: 0,
245
245
  bridge: "{ ...next(operator), item: after[0] }",
246
- generatorp: ({context, g}) => `wear ${g(context.item)}`,
246
+ generatorp: async ({context, g}) => `wear ${await g(context.item)}`,
247
247
  semantic: ({api, context}) => {
248
248
  if (context.item.name) {
249
249
  api.wear({ name: context.item.name.value, type: 'outfit' })
@@ -259,9 +259,8 @@ let configStruct = {
259
259
  level: 0,
260
260
  localHierarchy: [ ['weapon', 'equipable'], ['thisitthat', 'equipable'] ],
261
261
  bridge: "{ ...next(operator), item: after[0] }",
262
- generatorp: ({context, g}) => `equip ${g(context.item)}`,
263
- semantic: ({api, context, e}) => {
264
- // const value = e(context.item)
262
+ generatorp: async ({context, g}) => `equip ${await g(context.item)}`,
263
+ semantic: async ({api, context}) => {
265
264
  let condition
266
265
  if (context.item.condition) {
267
266
  condition = { selector: context.item.condition.marker, property: context.item.condition.property[0].marker }
@@ -275,9 +274,9 @@ let configStruct = {
275
274
  isA: ['verby'],
276
275
  level: 0,
277
276
  bridge: "{ ...next(operator), item: after[0] }",
278
- generatorp: ({context, g}) => `drink ${g(context.item)}`,
279
- semantic: ({api, context, e}) => {
280
- const value = e(context.item)
277
+ generatorp: async ({context, g}) => `drink ${await g(context.item)}`,
278
+ semantic: async ({api, context, e}) => {
279
+ const value = await e(context.item)
281
280
  api.drink(value.value)
282
281
  }
283
282
  },
@@ -287,10 +286,8 @@ let configStruct = {
287
286
  isA: ['verby'],
288
287
  level: 0,
289
288
  bridge: "{ ...next(operator), item: after[0] }",
290
- generatorp: ({context, g}) => `eat ${g(context.item)}`,
291
- semantic: ({api, context, e}) => {
292
- // const value = e(context.item)
293
- // api.eat(value.value)
289
+ generatorp: async ({context, g}) => `eat ${await g(context.item)}`,
290
+ semantic: async ({api, context}) => {
294
291
  api.eat(context.item.value)
295
292
  }
296
293
  },
@@ -300,9 +297,9 @@ let configStruct = {
300
297
  isA: ['verby'],
301
298
  level: 0,
302
299
  bridge: "{ ...next(operator), item: after[0] }",
303
- generatorp: ({context, g}) => `take ${g(context.item)}`,
304
- semantic: ({api, context, e}) => {
305
- const value = e(context.item)
300
+ generatorp: async ({context, g}) => `take ${await g(context.item)}`,
301
+ semantic: async ({api, context, e}) => {
302
+ const value = await e(context.item)
306
303
  api.take(value.value)
307
304
  }
308
305
  },
@@ -374,10 +371,10 @@ let configStruct = {
374
371
  isA: ['verby'],
375
372
  level: 0,
376
373
  bridge: "{ ...next(operator), item: after[0] }",
377
- generatorp: ({context, g}) => `apply ${g(context.item)}`,
378
- semantic: ({api, context, e}) => {
374
+ generatorp: async ({context, g}) => `apply ${await g(context.item)}`,
375
+ semantic: async ({api, context, e}) => {
379
376
  // { item: 'stimpak', quantity: <number>, to?: [ { part: ['arm', 'leg', 'torso', head'], side?: ['left', 'right'] } ] }
380
- const quantity = context.item.quantity ? e(context.item.quantity).value : 1
377
+ const quantity = context.item.quantity ? (await e(context.item.quantity)).value : 1
381
378
  api.apply({ item: 'stimpak', quantity })
382
379
  }
383
380
  },
@@ -386,7 +383,7 @@ let configStruct = {
386
383
  isA: ['verby'],
387
384
  level: 0,
388
385
  bridge: "{ ...next(operator), showable: after[0].showable }",
389
- generatorp: ({context, g}) => `go to ${g(context.showable)}`,
386
+ generatorp: async ({context, g}) => `go to ${await g(context.showable)}`,
390
387
  semantic: ({api, context}) => {
391
388
  api.setDisplay(context.showable.value)
392
389
  }
@@ -396,14 +393,14 @@ let configStruct = {
396
393
  isA: ['preposition'],
397
394
  level: 0,
398
395
  bridge: "{ ...next(operator), showable: after[0] }",
399
- generatorp: ({context, g}) => `to ${g(context.showable)}`,
396
+ generatorp: async ({context, g}) => `to ${await g(context.showable)}`,
400
397
  },
401
398
  {
402
399
  id: "showWeapons",
403
400
  isA: ['verby'],
404
401
  level: 0,
405
402
  bridge: "{ ...next(operator), showable: after[0] }",
406
- generatorp: ({context, g}) => `show ${g(context.showable)}`,
403
+ generatorp: async ({context, g}) => `show ${await g(context.showable)}`,
407
404
  semantic: ({api, context}) => {
408
405
  if (context.showable.quantity && context.showable.quantity.value == 'all') {
409
406
  api.showWeapons('all')
@@ -417,7 +414,7 @@ let configStruct = {
417
414
  isA: ['verby'],
418
415
  level: 0,
419
416
  bridge: "{ ...next(operator), showable: after[0] }",
420
- generatorp: ({context, g}) => `show ${g(context.showable)}`,
417
+ generatorp: async ({context, g}) => `show ${await g(context.showable)}`,
421
418
  semantic: ({api, context}) => {
422
419
  api.setDisplay(context.showable.value)
423
420
  }
package/common/pokemon.js CHANGED
@@ -41,7 +41,7 @@ const createConfig = async () => {
41
41
  })
42
42
  config.stop_auto_rebuild()
43
43
  await config.add(hierarchy)
44
- config.initializer( ({config, apis}) => {
44
+ await config.initializer( ({config, apis}) => {
45
45
  const api = apis('properties')
46
46
  /*
47
47
  api.createActionPrefix({