@cadenza.io/service 1.10.17 → 1.11.0

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.
package/dist/index.js CHANGED
@@ -338,36 +338,29 @@ var ServiceRegistry = class _ServiceRegistry {
338
338
  "Handle Instance Update",
339
339
  (ctx, emit) => {
340
340
  var _a2;
341
- const { service_instance } = ctx;
342
- const { uuid: uuid4, serviceName, address, port, exposed } = service_instance;
341
+ const { serviceInstance } = ctx;
342
+ const { uuid: uuid4, serviceName, address, port, exposed } = serviceInstance;
343
+ if (uuid4 === this.serviceInstanceId) return;
343
344
  if (!this.instances.has(serviceName))
344
345
  this.instances.set(serviceName, []);
345
346
  const instances = this.instances.get(serviceName);
346
347
  const existing = instances.find((i) => i.uuid === uuid4);
347
348
  if (existing) {
348
- Object.assign(existing, service_instance);
349
+ Object.assign(existing, serviceInstance);
349
350
  } else {
350
351
  if (this.deputies.has(serviceName) || this.remoteSignals.has(serviceName) || this.remoteSignals.has("*") && this.serviceName !== serviceName) {
351
- const communicationTypes = Array.from(
352
- new Set(
353
- (_a2 = this.deputies.get(serviceName).map((d) => d.communicationType)) != null ? _a2 : []
354
- )
352
+ const clientCreated = instances == null ? void 0 : instances.some(
353
+ (i) => i.address === address && i.port === port && i.clientCreated && i.isActive
355
354
  );
356
- if (!communicationTypes.includes("signal") && (this.remoteSignals.has(serviceName) || this.remoteSignals.has("*"))) {
357
- communicationTypes.push("signal");
358
- }
359
- emit("meta.service_registry.dependee_registered", {
360
- serviceName,
361
- serviceInstanceId: uuid4,
362
- serviceAddress: address,
363
- servicePort: port,
364
- protocol: exposed ? "https" : "http",
365
- communicationTypes
366
- });
367
- service_instance.clientCreated = true;
368
- for (const instance of this.instances.get(serviceName)) {
369
- if (instance.clientCreated) continue;
370
- instance.clientCreated = true;
355
+ if (!clientCreated) {
356
+ const communicationTypes = Array.from(
357
+ new Set(
358
+ (_a2 = this.deputies.get(serviceName).map((d) => d.communicationType)) != null ? _a2 : []
359
+ )
360
+ );
361
+ if (!communicationTypes.includes("signal") && (this.remoteSignals.has(serviceName) || this.remoteSignals.has("*"))) {
362
+ communicationTypes.push("signal");
363
+ }
371
364
  emit("meta.service_registry.dependee_registered", {
372
365
  serviceName,
373
366
  serviceInstanceId: uuid4,
@@ -376,9 +369,22 @@ var ServiceRegistry = class _ServiceRegistry {
376
369
  protocol: exposed ? "https" : "http",
377
370
  communicationTypes
378
371
  });
372
+ serviceInstance.clientCreated = true;
373
+ for (const instance of this.instances.get(serviceName)) {
374
+ if (instance.clientCreated) continue;
375
+ instance.clientCreated = true;
376
+ emit("meta.service_registry.dependee_registered", {
377
+ serviceName,
378
+ serviceInstanceId: uuid4,
379
+ serviceAddress: address,
380
+ servicePort: port,
381
+ protocol: exposed ? "https" : "http",
382
+ communicationTypes
383
+ });
384
+ }
379
385
  }
380
386
  }
381
- instances.push(service_instance);
387
+ instances.push(serviceInstance);
382
388
  }
383
389
  return true;
384
390
  },
@@ -459,16 +465,20 @@ var ServiceRegistry = class _ServiceRegistry {
459
465
  "is_non_responsive",
460
466
  "is_blocked",
461
467
  "health",
462
- "exposed"
468
+ "exposed",
469
+ "created"
463
470
  ]
464
471
  }).doOn("meta.service_registry_sync_requested").then(
465
- CadenzaService.createMetaTask("Split service instances", function* (ctx) {
466
- const { serviceInstances } = ctx;
467
- if (!serviceInstances) return;
468
- for (const serviceInstance of serviceInstances) {
469
- yield { serviceInstance };
472
+ CadenzaService.createMetaTask(
473
+ "Split service instances",
474
+ function* (ctx) {
475
+ const { serviceInstances } = ctx;
476
+ if (!serviceInstances) return;
477
+ for (const serviceInstance of serviceInstances) {
478
+ yield { serviceInstance };
479
+ }
470
480
  }
471
- }).then(this.handleInstanceUpdateTask)
481
+ ).then(this.handleInstanceUpdateTask)
472
482
  // .emits("meta.process_signal_queue_requested"), // TODO Has to happen after the endpoints has been created...
473
483
  );
474
484
  this.updateInstanceId = CadenzaService.createMetaTask(
@@ -572,7 +582,7 @@ var ServiceRegistry = class _ServiceRegistry {
572
582
  if (instancesToTry.length === 0) {
573
583
  if (this.useSocket) {
574
584
  emit(
575
- `meta.service_registry.socket_failed:${context.__instance}`,
585
+ `meta.service_registry.socket_failed:${context.__fetchId}`,
576
586
  context
577
587
  );
578
588
  }
@@ -585,17 +595,18 @@ var ServiceRegistry = class _ServiceRegistry {
585
595
  selected = instancesToTry[Math.floor(Math.random() * instancesToTry.length)];
586
596
  }
587
597
  context.__instance = selected.uuid;
598
+ context.__fetchId = `${selected.address}_${selected.port}`;
588
599
  context.__triedInstances = triedInstances;
589
600
  context.__triedInstances.push(selected.uuid);
590
601
  context.__retries = retries;
591
602
  if (this.useSocket) {
592
603
  emit(
593
- `meta.service_registry.selected_instance_for_socket:${context.__instance}`,
604
+ `meta.service_registry.selected_instance_for_socket:${context.__fetchId}`,
594
605
  context
595
606
  );
596
607
  } else {
597
608
  emit(
598
- `meta.service_registry.selected_instance_for_fetch:${context.__instance}`,
609
+ `meta.service_registry.selected_instance_for_fetch:${context.__fetchId}`,
599
610
  context
600
611
  );
601
612
  }
@@ -625,12 +636,12 @@ var ServiceRegistry = class _ServiceRegistry {
625
636
  errored: true
626
637
  };
627
638
  }
628
- const self2 = (_a2 = this.instances.get(this.serviceName)) == null ? void 0 : _a2.find((i) => i.uuid === this.serviceInstanceId);
639
+ const self = (_a2 = this.instances.get(this.serviceName)) == null ? void 0 : _a2.find((i) => i.uuid === this.serviceInstanceId);
629
640
  return __spreadProps(__spreadValues({}, ctx), {
630
641
  __status: "ok",
631
- __numberOfRunningGraphs: (_b2 = self2 == null ? void 0 : self2.numberOfRunningGraphs) != null ? _b2 : 0,
632
- __health: (_c2 = self2 == null ? void 0 : self2.health) != null ? _c2 : {},
633
- __active: (_d2 = self2 == null ? void 0 : self2.isActive) != null ? _d2 : false
642
+ __numberOfRunningGraphs: (_b2 = self == null ? void 0 : self.numberOfRunningGraphs) != null ? _b2 : 0,
643
+ __health: (_c2 = self == null ? void 0 : self.health) != null ? _c2 : {},
644
+ __active: (_d2 = self == null ? void 0 : self.isActive) != null ? _d2 : false
634
645
  });
635
646
  }).doOn("meta.socket.status_check_requested");
636
647
  this.insertServiceTask = CadenzaService.createCadenzaDBInsertTask(
@@ -759,11 +770,11 @@ var ServiceRegistry = class _ServiceRegistry {
759
770
  "Setup service",
760
771
  (ctx) => {
761
772
  var _a2, _b2;
762
- const { service_instance, data, __useSocket, __retryCount } = ctx;
763
- this.serviceInstanceId = (_a2 = service_instance == null ? void 0 : service_instance.uuid) != null ? _a2 : data == null ? void 0 : data.uuid;
773
+ const { serviceInstance, data, __useSocket, __retryCount } = ctx;
774
+ this.serviceInstanceId = (_a2 = serviceInstance == null ? void 0 : serviceInstance.uuid) != null ? _a2 : data == null ? void 0 : data.uuid;
764
775
  this.instances.set(
765
- (_b2 = data == null ? void 0 : data.service_name) != null ? _b2 : service_instance == null ? void 0 : service_instance.service_name,
766
- [__spreadValues({}, service_instance != null ? service_instance : data)]
776
+ (_b2 = data == null ? void 0 : data.service_name) != null ? _b2 : serviceInstance == null ? void 0 : serviceInstance.service_name,
777
+ [__spreadValues({}, serviceInstance != null ? serviceInstance : data)]
767
778
  );
768
779
  this.useSocket = __useSocket;
769
780
  this.retryCount = __retryCount;
@@ -1173,17 +1184,12 @@ var RestController = class _RestController {
1173
1184
  CadenzaService.createMetaTask(
1174
1185
  "Setup fetch client",
1175
1186
  (ctx, emit) => {
1176
- const {
1177
- serviceName,
1178
- serviceInstanceId,
1179
- serviceAddress,
1180
- servicePort,
1181
- protocol
1182
- } = ctx;
1187
+ const { serviceName, serviceAddress, servicePort, protocol } = ctx;
1183
1188
  const port = protocol === "https" ? 443 : servicePort;
1184
1189
  const URL = `${protocol}://${serviceAddress}:${port}`;
1190
+ const fetchId = `${serviceAddress}_${port}`;
1185
1191
  CadenzaService.createMetaTask(
1186
- "Send Handshake",
1192
+ `Send Handshake to ${URL}`,
1187
1193
  (ctx2, emit2) => __async(null, null, function* () {
1188
1194
  var _a2;
1189
1195
  console.log("Sending handshake", ctx2);
@@ -1201,10 +1207,7 @@ var RestController = class _RestController {
1201
1207
  (_a2 = result.__error) != null ? _a2 : `Failed to connect to service ${serviceName} ${ctx2.serviceInstanceId}`
1202
1208
  );
1203
1209
  }
1204
- console.log(
1205
- `Connected to service ${serviceName} ${ctx2.serviceInstanceId}`,
1206
- result
1207
- );
1210
+ console.log(`Connected to service ${serviceName} ${URL}`, result);
1208
1211
  for (const communicationType of ctx2.communicationTypes) {
1209
1212
  emit2("meta.fetch.service_communication_established", {
1210
1213
  data: {
@@ -1223,9 +1226,9 @@ var RestController = class _RestController {
1223
1226
  retryDelayMax: 5e3,
1224
1227
  retryDelayFactor: 1.5
1225
1228
  }
1226
- ).doOn(`meta.fetch.handshake_requested:${serviceInstanceId}`).emits("meta.fetch.handshake_complete");
1229
+ ).doOn(`meta.fetch.handshake_requested:${fetchId}`).emits("meta.fetch.handshake_complete").emitsOnFail("meta.fetch.handshake_failed");
1227
1230
  CadenzaService.createMetaTask(
1228
- "Delegate flow to REST server",
1231
+ `Delegate flow to REST server ${URL}`,
1229
1232
  (ctx2, emit2) => __async(null, null, function* () {
1230
1233
  if (ctx2.__remoteRoutineName === void 0) {
1231
1234
  return;
@@ -1256,11 +1259,11 @@ var RestController = class _RestController {
1256
1259
  }),
1257
1260
  "Sends delegation request"
1258
1261
  ).doOn(
1259
- `meta.service_registry.selected_instance_for_fetch:${serviceInstanceId}`,
1260
- `meta.service_registry.socket_failed:${serviceInstanceId}`
1262
+ `meta.service_registry.selected_instance_for_fetch:${fetchId}`,
1263
+ `meta.service_registry.socket_failed:${fetchId}`
1261
1264
  ).emitsOnFail("meta.fetch.delegate_failed");
1262
1265
  CadenzaService.createMetaTask(
1263
- "Transmit signal to server",
1266
+ `Transmit signal to server ${URL}`,
1264
1267
  (ctx2, emit2) => __async(null, null, function* () {
1265
1268
  if (ctx2.__signalName === void 0) {
1266
1269
  return;
@@ -1288,12 +1291,12 @@ var RestController = class _RestController {
1288
1291
  }),
1289
1292
  "Sends signal request"
1290
1293
  ).doOn(
1291
- `meta.service_registry.selected_instance_for_fetch:${serviceInstanceId}`,
1294
+ `meta.service_registry.selected_instance_for_fetch:${fetchId}`,
1292
1295
  `meta.signal_controller.remote_signal_registered:${serviceName}`,
1293
1296
  "meta.signal_controller.wildcard_signal_registered"
1294
1297
  ).emitsOnFail("meta.fetch.signal_transmission_failed");
1295
1298
  CadenzaService.createMetaTask(
1296
- "Request status",
1299
+ `Request status from ${URL}`,
1297
1300
  (ctx2) => __async(null, null, function* () {
1298
1301
  let status;
1299
1302
  try {
@@ -1316,12 +1319,20 @@ var RestController = class _RestController {
1316
1319
  CadenzaService.createMetaTask(
1317
1320
  "Prepare handshake",
1318
1321
  (ctx, emit) => {
1319
- const { serviceInstanceId, serviceName, communicationTypes } = ctx;
1320
- emit(`meta.fetch.handshake_requested:${serviceInstanceId}`, {
1322
+ const {
1323
+ serviceName,
1324
+ serviceInstanceId,
1325
+ communicationTypes,
1326
+ serviceAddress,
1327
+ servicePort
1328
+ } = ctx;
1329
+ const fetchId = `${serviceAddress}_${servicePort}`;
1330
+ emit(`meta.fetch.handshake_requested:${fetchId}`, {
1321
1331
  serviceInstanceId,
1322
1332
  serviceName,
1323
1333
  communicationTypes,
1324
1334
  handshakeData: {
1335
+ instanceId: CadenzaService.serviceRegistry.serviceInstanceId
1325
1336
  // JWT token...
1326
1337
  }
1327
1338
  });
@@ -1533,16 +1544,12 @@ var SocketController = class _SocketController {
1533
1544
  CadenzaService.createMetaTask(
1534
1545
  "Connect to socket server",
1535
1546
  (ctx) => {
1536
- const {
1537
- serviceName,
1538
- serviceInstanceId,
1539
- serviceAddress,
1540
- servicePort,
1541
- protocol
1542
- } = ctx;
1547
+ const { serviceName, serviceAddress, servicePort, protocol } = ctx;
1543
1548
  const socketProtocol = protocol === "https" ? "wss" : "ws";
1544
1549
  const port = protocol === "https" ? 443 : servicePort;
1545
- const socket = (0, import_socket2.io)(`${socketProtocol}://${serviceAddress}:${port}`, {
1550
+ const URL = `${socketProtocol}://${serviceAddress}:${port}`;
1551
+ const fetchId = `${serviceAddress}_${port}`;
1552
+ const socket = (0, import_socket2.io)(URL, {
1546
1553
  reconnection: true,
1547
1554
  reconnectionAttempts: 20,
1548
1555
  reconnectionDelay: 1e3,
@@ -1550,11 +1557,7 @@ var SocketController = class _SocketController {
1550
1557
  randomizationFactor: 0.5,
1551
1558
  retries: 5
1552
1559
  });
1553
- console.log(
1554
- "SocketClient: Connecting to",
1555
- `${socketProtocol}://${serviceAddress}:${port}`,
1556
- socket
1557
- );
1560
+ console.log("SocketClient: Connecting to", URL, socket);
1558
1561
  socket.on("connect", () => {
1559
1562
  console.log("SocketClient: CONNECTED");
1560
1563
  CadenzaService.broker.emit("meta.socket_client.connected", ctx);
@@ -1566,7 +1569,7 @@ var SocketController = class _SocketController {
1566
1569
  socket.on("delegation_progress", (ctx2) => {
1567
1570
  CadenzaService.broker.emit(
1568
1571
  `meta.socket_client.delegation_progress:${ctx2.__metadata.__deputyExecId}`,
1569
- __spreadValues({ serviceInstanceId }, ctx2)
1572
+ ctx2
1570
1573
  );
1571
1574
  });
1572
1575
  socket.on("status_update", (status) => {
@@ -1581,13 +1584,13 @@ var SocketController = class _SocketController {
1581
1584
  CadenzaService.broker.emit("meta.socket_client.error", err);
1582
1585
  });
1583
1586
  socket.on("disconnect", () => {
1584
- console.log("SocketClient: Disconnected", serviceInstanceId);
1587
+ console.log("SocketClient: Disconnected", URL);
1585
1588
  CadenzaService.broker.emit("meta.socket_client.disconnected", {
1586
- serviceInstanceId
1589
+ URL
1587
1590
  });
1588
1591
  });
1589
1592
  CadenzaService.createMetaTask(
1590
- `Delegate flow to ${serviceInstanceId}`,
1593
+ `Delegate flow to ${URL}`,
1591
1594
  (ctx2, emit) => __async(null, null, function* () {
1592
1595
  if (ctx2.__remoteRoutineName === void 0) {
1593
1596
  return;
@@ -1600,10 +1603,7 @@ var SocketController = class _SocketController {
1600
1603
  __error: `Timeout error: ${err}`,
1601
1604
  errored: true
1602
1605
  }, ctx2), ctx2.__metadata);
1603
- emit(
1604
- `meta.socket_client.delegate_failed:${serviceInstanceId}`,
1605
- resultContext
1606
- );
1606
+ emit(`meta.socket_client.delegate_failed`, resultContext);
1607
1607
  return;
1608
1608
  }
1609
1609
  const metadata = resultContext.__metadata;
@@ -1615,12 +1615,10 @@ var SocketController = class _SocketController {
1615
1615
  );
1616
1616
  });
1617
1617
  }),
1618
- `Delegate flow to instance ${serviceInstanceId} of service ${serviceName} with address ${serviceAddress}:${servicePort}`
1619
- ).doOn(
1620
- `meta.service_registry.selected_instance_for_socket:${serviceInstanceId}`
1621
- );
1618
+ `Delegate flow to service ${serviceName} with address ${URL}`
1619
+ ).doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`);
1622
1620
  CadenzaService.createMetaTask(
1623
- `Transmit signal to ${serviceInstanceId}`,
1621
+ `Transmit signal to ${URL}`,
1624
1622
  (ctx2, emit) => __async(null, null, function* () {
1625
1623
  var _a2;
1626
1624
  if (ctx2.__signalName === void 0) {
@@ -1634,7 +1632,7 @@ var SocketController = class _SocketController {
1634
1632
  errored: true
1635
1633
  }, ctx2), ctx2.__metadata);
1636
1634
  emit(
1637
- `meta.socket_client.signal_transmission_failed:${serviceInstanceId}`,
1635
+ `meta.socket_client.signal_transmission_failed`,
1638
1636
  response
1639
1637
  );
1640
1638
  return;
@@ -1647,15 +1645,13 @@ var SocketController = class _SocketController {
1647
1645
  }
1648
1646
  });
1649
1647
  }),
1650
- `Transmits signal to instance ${serviceInstanceId} of service ${serviceName} with address ${serviceAddress}:${servicePort}`
1651
- ).doOn(
1652
- `meta.service_registry.selected_instance_for_socket:${serviceInstanceId}`
1653
- );
1648
+ `Transmits signal to service ${serviceName} with address ${URL}`
1649
+ ).doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`);
1654
1650
  CadenzaService.createMetaTask(
1655
- "Shutdown SocketClient",
1651
+ `Shutdown SocketClient ${URL}`,
1656
1652
  () => socket.close(),
1657
1653
  "Shuts down the socket client"
1658
- ).doOn("meta.socket_shutdown_requested").emits("meta.socket_client_shutdown_complete");
1654
+ ).doOn(`meta.socket_shutdown_requested:${fetchId}`).emits("meta.socket_client_shutdown_complete");
1659
1655
  return true;
1660
1656
  },
1661
1657
  "Connects to a specified socket server"
@@ -2012,443 +2008,8 @@ var GraphMetadataController = class _GraphMetadataController {
2012
2008
  }
2013
2009
  };
2014
2010
 
2015
- // node_modules/lodash-es/_freeGlobal.js
2016
- var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
2017
- var freeGlobal_default = freeGlobal;
2018
-
2019
- // node_modules/lodash-es/_root.js
2020
- var freeSelf = typeof self == "object" && self && self.Object === Object && self;
2021
- var root = freeGlobal_default || freeSelf || Function("return this")();
2022
- var root_default = root;
2023
-
2024
- // node_modules/lodash-es/_Symbol.js
2025
- var Symbol2 = root_default.Symbol;
2026
- var Symbol_default = Symbol2;
2027
-
2028
- // node_modules/lodash-es/_getRawTag.js
2029
- var objectProto = Object.prototype;
2030
- var hasOwnProperty = objectProto.hasOwnProperty;
2031
- var nativeObjectToString = objectProto.toString;
2032
- var symToStringTag = Symbol_default ? Symbol_default.toStringTag : void 0;
2033
- function getRawTag(value) {
2034
- var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];
2035
- try {
2036
- value[symToStringTag] = void 0;
2037
- var unmasked = true;
2038
- } catch (e) {
2039
- }
2040
- var result = nativeObjectToString.call(value);
2041
- if (unmasked) {
2042
- if (isOwn) {
2043
- value[symToStringTag] = tag;
2044
- } else {
2045
- delete value[symToStringTag];
2046
- }
2047
- }
2048
- return result;
2049
- }
2050
- var getRawTag_default = getRawTag;
2051
-
2052
- // node_modules/lodash-es/_objectToString.js
2053
- var objectProto2 = Object.prototype;
2054
- var nativeObjectToString2 = objectProto2.toString;
2055
- function objectToString(value) {
2056
- return nativeObjectToString2.call(value);
2057
- }
2058
- var objectToString_default = objectToString;
2059
-
2060
- // node_modules/lodash-es/_baseGetTag.js
2061
- var nullTag = "[object Null]";
2062
- var undefinedTag = "[object Undefined]";
2063
- var symToStringTag2 = Symbol_default ? Symbol_default.toStringTag : void 0;
2064
- function baseGetTag(value) {
2065
- if (value == null) {
2066
- return value === void 0 ? undefinedTag : nullTag;
2067
- }
2068
- return symToStringTag2 && symToStringTag2 in Object(value) ? getRawTag_default(value) : objectToString_default(value);
2069
- }
2070
- var baseGetTag_default = baseGetTag;
2071
-
2072
- // node_modules/lodash-es/isObjectLike.js
2073
- function isObjectLike(value) {
2074
- return value != null && typeof value == "object";
2075
- }
2076
- var isObjectLike_default = isObjectLike;
2077
-
2078
- // node_modules/lodash-es/isSymbol.js
2079
- var symbolTag = "[object Symbol]";
2080
- function isSymbol(value) {
2081
- return typeof value == "symbol" || isObjectLike_default(value) && baseGetTag_default(value) == symbolTag;
2082
- }
2083
- var isSymbol_default = isSymbol;
2084
-
2085
- // node_modules/lodash-es/_arrayMap.js
2086
- function arrayMap(array, iteratee) {
2087
- var index = -1, length = array == null ? 0 : array.length, result = Array(length);
2088
- while (++index < length) {
2089
- result[index] = iteratee(array[index], index, array);
2090
- }
2091
- return result;
2092
- }
2093
- var arrayMap_default = arrayMap;
2094
-
2095
- // node_modules/lodash-es/isArray.js
2096
- var isArray = Array.isArray;
2097
- var isArray_default = isArray;
2098
-
2099
- // node_modules/lodash-es/_baseToString.js
2100
- var INFINITY = 1 / 0;
2101
- var symbolProto = Symbol_default ? Symbol_default.prototype : void 0;
2102
- var symbolToString = symbolProto ? symbolProto.toString : void 0;
2103
- function baseToString(value) {
2104
- if (typeof value == "string") {
2105
- return value;
2106
- }
2107
- if (isArray_default(value)) {
2108
- return arrayMap_default(value, baseToString) + "";
2109
- }
2110
- if (isSymbol_default(value)) {
2111
- return symbolToString ? symbolToString.call(value) : "";
2112
- }
2113
- var result = value + "";
2114
- return result == "0" && 1 / value == -INFINITY ? "-0" : result;
2115
- }
2116
- var baseToString_default = baseToString;
2117
-
2118
- // node_modules/lodash-es/toString.js
2119
- function toString(value) {
2120
- return value == null ? "" : baseToString_default(value);
2121
- }
2122
- var toString_default = toString;
2123
-
2124
- // node_modules/lodash-es/_arrayReduce.js
2125
- function arrayReduce(array, iteratee, accumulator, initAccum) {
2126
- var index = -1, length = array == null ? 0 : array.length;
2127
- if (initAccum && length) {
2128
- accumulator = array[++index];
2129
- }
2130
- while (++index < length) {
2131
- accumulator = iteratee(accumulator, array[index], index, array);
2132
- }
2133
- return accumulator;
2134
- }
2135
- var arrayReduce_default = arrayReduce;
2136
-
2137
- // node_modules/lodash-es/_basePropertyOf.js
2138
- function basePropertyOf(object) {
2139
- return function(key) {
2140
- return object == null ? void 0 : object[key];
2141
- };
2142
- }
2143
- var basePropertyOf_default = basePropertyOf;
2144
-
2145
- // node_modules/lodash-es/_deburrLetter.js
2146
- var deburredLetters = {
2147
- // Latin-1 Supplement block.
2148
- "\xC0": "A",
2149
- "\xC1": "A",
2150
- "\xC2": "A",
2151
- "\xC3": "A",
2152
- "\xC4": "A",
2153
- "\xC5": "A",
2154
- "\xE0": "a",
2155
- "\xE1": "a",
2156
- "\xE2": "a",
2157
- "\xE3": "a",
2158
- "\xE4": "a",
2159
- "\xE5": "a",
2160
- "\xC7": "C",
2161
- "\xE7": "c",
2162
- "\xD0": "D",
2163
- "\xF0": "d",
2164
- "\xC8": "E",
2165
- "\xC9": "E",
2166
- "\xCA": "E",
2167
- "\xCB": "E",
2168
- "\xE8": "e",
2169
- "\xE9": "e",
2170
- "\xEA": "e",
2171
- "\xEB": "e",
2172
- "\xCC": "I",
2173
- "\xCD": "I",
2174
- "\xCE": "I",
2175
- "\xCF": "I",
2176
- "\xEC": "i",
2177
- "\xED": "i",
2178
- "\xEE": "i",
2179
- "\xEF": "i",
2180
- "\xD1": "N",
2181
- "\xF1": "n",
2182
- "\xD2": "O",
2183
- "\xD3": "O",
2184
- "\xD4": "O",
2185
- "\xD5": "O",
2186
- "\xD6": "O",
2187
- "\xD8": "O",
2188
- "\xF2": "o",
2189
- "\xF3": "o",
2190
- "\xF4": "o",
2191
- "\xF5": "o",
2192
- "\xF6": "o",
2193
- "\xF8": "o",
2194
- "\xD9": "U",
2195
- "\xDA": "U",
2196
- "\xDB": "U",
2197
- "\xDC": "U",
2198
- "\xF9": "u",
2199
- "\xFA": "u",
2200
- "\xFB": "u",
2201
- "\xFC": "u",
2202
- "\xDD": "Y",
2203
- "\xFD": "y",
2204
- "\xFF": "y",
2205
- "\xC6": "Ae",
2206
- "\xE6": "ae",
2207
- "\xDE": "Th",
2208
- "\xFE": "th",
2209
- "\xDF": "ss",
2210
- // Latin Extended-A block.
2211
- "\u0100": "A",
2212
- "\u0102": "A",
2213
- "\u0104": "A",
2214
- "\u0101": "a",
2215
- "\u0103": "a",
2216
- "\u0105": "a",
2217
- "\u0106": "C",
2218
- "\u0108": "C",
2219
- "\u010A": "C",
2220
- "\u010C": "C",
2221
- "\u0107": "c",
2222
- "\u0109": "c",
2223
- "\u010B": "c",
2224
- "\u010D": "c",
2225
- "\u010E": "D",
2226
- "\u0110": "D",
2227
- "\u010F": "d",
2228
- "\u0111": "d",
2229
- "\u0112": "E",
2230
- "\u0114": "E",
2231
- "\u0116": "E",
2232
- "\u0118": "E",
2233
- "\u011A": "E",
2234
- "\u0113": "e",
2235
- "\u0115": "e",
2236
- "\u0117": "e",
2237
- "\u0119": "e",
2238
- "\u011B": "e",
2239
- "\u011C": "G",
2240
- "\u011E": "G",
2241
- "\u0120": "G",
2242
- "\u0122": "G",
2243
- "\u011D": "g",
2244
- "\u011F": "g",
2245
- "\u0121": "g",
2246
- "\u0123": "g",
2247
- "\u0124": "H",
2248
- "\u0126": "H",
2249
- "\u0125": "h",
2250
- "\u0127": "h",
2251
- "\u0128": "I",
2252
- "\u012A": "I",
2253
- "\u012C": "I",
2254
- "\u012E": "I",
2255
- "\u0130": "I",
2256
- "\u0129": "i",
2257
- "\u012B": "i",
2258
- "\u012D": "i",
2259
- "\u012F": "i",
2260
- "\u0131": "i",
2261
- "\u0134": "J",
2262
- "\u0135": "j",
2263
- "\u0136": "K",
2264
- "\u0137": "k",
2265
- "\u0138": "k",
2266
- "\u0139": "L",
2267
- "\u013B": "L",
2268
- "\u013D": "L",
2269
- "\u013F": "L",
2270
- "\u0141": "L",
2271
- "\u013A": "l",
2272
- "\u013C": "l",
2273
- "\u013E": "l",
2274
- "\u0140": "l",
2275
- "\u0142": "l",
2276
- "\u0143": "N",
2277
- "\u0145": "N",
2278
- "\u0147": "N",
2279
- "\u014A": "N",
2280
- "\u0144": "n",
2281
- "\u0146": "n",
2282
- "\u0148": "n",
2283
- "\u014B": "n",
2284
- "\u014C": "O",
2285
- "\u014E": "O",
2286
- "\u0150": "O",
2287
- "\u014D": "o",
2288
- "\u014F": "o",
2289
- "\u0151": "o",
2290
- "\u0154": "R",
2291
- "\u0156": "R",
2292
- "\u0158": "R",
2293
- "\u0155": "r",
2294
- "\u0157": "r",
2295
- "\u0159": "r",
2296
- "\u015A": "S",
2297
- "\u015C": "S",
2298
- "\u015E": "S",
2299
- "\u0160": "S",
2300
- "\u015B": "s",
2301
- "\u015D": "s",
2302
- "\u015F": "s",
2303
- "\u0161": "s",
2304
- "\u0162": "T",
2305
- "\u0164": "T",
2306
- "\u0166": "T",
2307
- "\u0163": "t",
2308
- "\u0165": "t",
2309
- "\u0167": "t",
2310
- "\u0168": "U",
2311
- "\u016A": "U",
2312
- "\u016C": "U",
2313
- "\u016E": "U",
2314
- "\u0170": "U",
2315
- "\u0172": "U",
2316
- "\u0169": "u",
2317
- "\u016B": "u",
2318
- "\u016D": "u",
2319
- "\u016F": "u",
2320
- "\u0171": "u",
2321
- "\u0173": "u",
2322
- "\u0174": "W",
2323
- "\u0175": "w",
2324
- "\u0176": "Y",
2325
- "\u0177": "y",
2326
- "\u0178": "Y",
2327
- "\u0179": "Z",
2328
- "\u017B": "Z",
2329
- "\u017D": "Z",
2330
- "\u017A": "z",
2331
- "\u017C": "z",
2332
- "\u017E": "z",
2333
- "\u0132": "IJ",
2334
- "\u0133": "ij",
2335
- "\u0152": "Oe",
2336
- "\u0153": "oe",
2337
- "\u0149": "'n",
2338
- "\u017F": "s"
2339
- };
2340
- var deburrLetter = basePropertyOf_default(deburredLetters);
2341
- var deburrLetter_default = deburrLetter;
2342
-
2343
- // node_modules/lodash-es/deburr.js
2344
- var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
2345
- var rsComboMarksRange = "\\u0300-\\u036f";
2346
- var reComboHalfMarksRange = "\\ufe20-\\ufe2f";
2347
- var rsComboSymbolsRange = "\\u20d0-\\u20ff";
2348
- var rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;
2349
- var rsCombo = "[" + rsComboRange + "]";
2350
- var reComboMark = RegExp(rsCombo, "g");
2351
- function deburr(string) {
2352
- string = toString_default(string);
2353
- return string && string.replace(reLatin, deburrLetter_default).replace(reComboMark, "");
2354
- }
2355
- var deburr_default = deburr;
2356
-
2357
- // node_modules/lodash-es/_asciiWords.js
2358
- var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
2359
- function asciiWords(string) {
2360
- return string.match(reAsciiWord) || [];
2361
- }
2362
- var asciiWords_default = asciiWords;
2363
-
2364
- // node_modules/lodash-es/_hasUnicodeWord.js
2365
- var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
2366
- function hasUnicodeWord(string) {
2367
- return reHasUnicodeWord.test(string);
2368
- }
2369
- var hasUnicodeWord_default = hasUnicodeWord;
2370
-
2371
- // node_modules/lodash-es/_unicodeWords.js
2372
- var rsAstralRange = "\\ud800-\\udfff";
2373
- var rsComboMarksRange2 = "\\u0300-\\u036f";
2374
- var reComboHalfMarksRange2 = "\\ufe20-\\ufe2f";
2375
- var rsComboSymbolsRange2 = "\\u20d0-\\u20ff";
2376
- var rsComboRange2 = rsComboMarksRange2 + reComboHalfMarksRange2 + rsComboSymbolsRange2;
2377
- var rsDingbatRange = "\\u2700-\\u27bf";
2378
- var rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff";
2379
- var rsMathOpRange = "\\xac\\xb1\\xd7\\xf7";
2380
- var rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf";
2381
- var rsPunctuationRange = "\\u2000-\\u206f";
2382
- var rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000";
2383
- var rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde";
2384
- var rsVarRange = "\\ufe0e\\ufe0f";
2385
- var rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
2386
- var rsApos = "['\u2019]";
2387
- var rsBreak = "[" + rsBreakRange + "]";
2388
- var rsCombo2 = "[" + rsComboRange2 + "]";
2389
- var rsDigits = "\\d+";
2390
- var rsDingbat = "[" + rsDingbatRange + "]";
2391
- var rsLower = "[" + rsLowerRange + "]";
2392
- var rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]";
2393
- var rsFitz = "\\ud83c[\\udffb-\\udfff]";
2394
- var rsModifier = "(?:" + rsCombo2 + "|" + rsFitz + ")";
2395
- var rsNonAstral = "[^" + rsAstralRange + "]";
2396
- var rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}";
2397
- var rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]";
2398
- var rsUpper = "[" + rsUpperRange + "]";
2399
- var rsZWJ = "\\u200d";
2400
- var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")";
2401
- var rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")";
2402
- var rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?";
2403
- var rsOptContrUpper = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?";
2404
- var reOptMod = rsModifier + "?";
2405
- var rsOptVar = "[" + rsVarRange + "]?";
2406
- var rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*";
2407
- var rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])";
2408
- var rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])";
2409
- var rsSeq = rsOptVar + reOptMod + rsOptJoin;
2410
- var rsEmoji = "(?:" + [rsDingbat, rsRegional, rsSurrPair].join("|") + ")" + rsSeq;
2411
- var reUnicodeWord = RegExp([
2412
- rsUpper + "?" + rsLower + "+" + rsOptContrLower + "(?=" + [rsBreak, rsUpper, "$"].join("|") + ")",
2413
- rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [rsBreak, rsUpper + rsMiscLower, "$"].join("|") + ")",
2414
- rsUpper + "?" + rsMiscLower + "+" + rsOptContrLower,
2415
- rsUpper + "+" + rsOptContrUpper,
2416
- rsOrdUpper,
2417
- rsOrdLower,
2418
- rsDigits,
2419
- rsEmoji
2420
- ].join("|"), "g");
2421
- function unicodeWords(string) {
2422
- return string.match(reUnicodeWord) || [];
2423
- }
2424
- var unicodeWords_default = unicodeWords;
2425
-
2426
- // node_modules/lodash-es/words.js
2427
- function words(string, pattern, guard) {
2428
- string = toString_default(string);
2429
- pattern = guard ? void 0 : pattern;
2430
- if (pattern === void 0) {
2431
- return hasUnicodeWord_default(string) ? unicodeWords_default(string) : asciiWords_default(string);
2432
- }
2433
- return string.match(pattern) || [];
2434
- }
2435
- var words_default = words;
2436
-
2437
- // node_modules/lodash-es/_createCompounder.js
2438
- var rsApos2 = "['\u2019]";
2439
- var reApos = RegExp(rsApos2, "g");
2440
- function createCompounder(callback) {
2441
- return function(string) {
2442
- return arrayReduce_default(words_default(deburr_default(string).replace(reApos, "")), callback, "");
2443
- };
2444
- }
2445
- var createCompounder_default = createCompounder;
2446
-
2447
- // node_modules/lodash-es/snakeCase.js
2448
- var snakeCase = createCompounder_default(function(result, word, index) {
2449
- return result + (index ? "_" : "") + word.toLowerCase();
2450
- });
2451
- var snakeCase_default = snakeCase;
2011
+ // src/Cadenza.ts
2012
+ var import_lodash_es2 = require("lodash-es");
2452
2013
 
2453
2014
  // src/types/database.ts
2454
2015
  var SCHEMA_TYPES = [
@@ -2471,6 +2032,7 @@ var SCHEMA_TYPES = [
2471
2032
 
2472
2033
  // src/database/DatabaseController.ts
2473
2034
  var import_pg = require("pg");
2035
+ var import_lodash_es = require("lodash-es");
2474
2036
  var _a, _b, _c, _d;
2475
2037
  var DatabaseController = class _DatabaseController {
2476
2038
  constructor() {
@@ -3060,6 +2622,15 @@ var DatabaseController = class _DatabaseController {
3060
2622
  }
3061
2623
  });
3062
2624
  }
2625
+ toCamelCase(rows) {
2626
+ return rows.map((row) => {
2627
+ const camelCasedRow = {};
2628
+ for (const [key, value] of Object.entries(row)) {
2629
+ camelCasedRow[(0, import_lodash_es.camelCase)(key)] = value;
2630
+ }
2631
+ return camelCasedRow;
2632
+ });
2633
+ }
3063
2634
  queryFunction(tableName, context) {
3064
2635
  return __async(this, null, function* () {
3065
2636
  const {
@@ -3072,9 +2643,8 @@ var DatabaseController = class _DatabaseController {
3072
2643
  } = context;
3073
2644
  let sql = `SELECT ${fields.length ? fields.join(", ") : "*"} FROM ${tableName}`;
3074
2645
  const params = [];
3075
- const conditions = [];
3076
2646
  if (Object.keys(filter).length > 0) {
3077
- conditions.push(this.buildWhereClause(filter, params));
2647
+ sql += " " + this.buildWhereClause(filter, params);
3078
2648
  }
3079
2649
  if (Object.keys(joins).length > 0) {
3080
2650
  sql += " " + this.buildJoinClause(joins);
@@ -3082,15 +2652,19 @@ var DatabaseController = class _DatabaseController {
3082
2652
  if (Object.keys(sort).length > 0) {
3083
2653
  sql += " ORDER BY " + Object.entries(sort).map(([field, direction]) => `${field} ${direction}`).join(", ");
3084
2654
  }
3085
- if (limit !== void 0) sql += ` LIMIT $${params.length + 1}`;
3086
- params.push(limit);
3087
- if (offset !== void 0) sql += ` OFFSET $${params.length + 1}`;
3088
- params.push(offset);
3089
- console.log("Query", sql);
2655
+ if (limit !== void 0) {
2656
+ sql += ` LIMIT $${params.length + 1}`;
2657
+ params.push(limit);
2658
+ }
2659
+ if (offset !== void 0) {
2660
+ sql += ` OFFSET $${params.length + 1}`;
2661
+ params.push(offset);
2662
+ }
3090
2663
  try {
3091
2664
  const result = yield this.dbClient.query(sql, params);
2665
+ const rows = this.toCamelCase(result.rows);
3092
2666
  return __spreadValues({
3093
- [`${tableName}s`]: result.rows,
2667
+ [`${(0, import_lodash_es.camelCase)(tableName)}s`]: rows,
3094
2668
  rowCount: result.rowCount,
3095
2669
  __success: true
3096
2670
  }, context);
@@ -3115,7 +2689,7 @@ var DatabaseController = class _DatabaseController {
3115
2689
  const resolvedData = yield this.resolveNestedData(data, tableName);
3116
2690
  const isBatch = Array.isArray(resolvedData);
3117
2691
  const rows = isBatch ? resolvedData : [resolvedData];
3118
- const sql = `INSERT INTO ${tableName} (${Object.keys(rows[0]).map(snakeCase_default).join(", ")}) VALUES `;
2692
+ const sql = `INSERT INTO ${tableName} (${Object.keys(rows[0]).map(import_lodash_es.snakeCase).join(", ")}) VALUES `;
3119
2693
  const values = rows.map(
3120
2694
  (row) => `(${Object.values(row).map((value, i) => {
3121
2695
  if (typeof value === "object" && (value == null ? void 0 : value.__effect)) {
@@ -3160,8 +2734,9 @@ var DatabaseController = class _DatabaseController {
3160
2734
  params
3161
2735
  );
3162
2736
  if (transaction) yield client.query("COMMIT");
2737
+ const resultRows = this.toCamelCase(result.rows);
3163
2738
  return {
3164
- [`${tableName}${isBatch ? "s" : ""}`]: isBatch ? result.rows : result.rows[0],
2739
+ [`${(0, import_lodash_es.camelCase)(tableName)}${isBatch ? "s" : ""}`]: isBatch ? resultRows : resultRows[0],
3165
2740
  rowCount: result.rowCount,
3166
2741
  __inserted: true
3167
2742
  };
@@ -3190,13 +2765,14 @@ var DatabaseController = class _DatabaseController {
3190
2765
  if (transaction) yield client.query("BEGIN");
3191
2766
  const resolvedData = yield this.resolveNestedData(data, tableName);
3192
2767
  const params = Object.values(resolvedData);
3193
- const setClause = Object.entries(Object.keys(resolvedData)).map(([i, key]) => `${snakeCase_default(key)} = $${parseInt(i) + 1}`).join(", ");
2768
+ const setClause = Object.entries(Object.keys(resolvedData)).map(([i, key]) => `${(0, import_lodash_es.snakeCase)(key)} = $${parseInt(i) + 1}`).join(", ");
3194
2769
  const whereClause = this.buildWhereClause(filter, params);
3195
2770
  const sql = `UPDATE ${tableName} SET ${setClause} ${whereClause} RETURNING *;`;
3196
2771
  const result = yield client.query(sql, params);
3197
2772
  if (transaction) yield client.query("COMMIT");
2773
+ const rows = this.toCamelCase(result.rows);
3198
2774
  return {
3199
- [`${tableName}`]: result.rows[0],
2775
+ [`${(0, import_lodash_es.camelCase)(tableName)}`]: rows[0],
3200
2776
  __updated: true
3201
2777
  };
3202
2778
  } catch (error) {
@@ -3227,8 +2803,9 @@ var DatabaseController = class _DatabaseController {
3227
2803
  const sql = `DELETE FROM ${tableName} ${whereClause} RETURNING *`;
3228
2804
  const result = yield client.query(sql, params);
3229
2805
  if (transaction) yield client.query("COMMIT");
2806
+ const rows = this.toCamelCase(result.rows);
3230
2807
  return {
3231
- [`${tableName}`]: result.rows[0],
2808
+ [`${(0, import_lodash_es.camelCase)(tableName)}`]: rows[0],
3232
2809
  __deleted: true
3233
2810
  };
3234
2811
  } catch (error) {
@@ -3249,7 +2826,7 @@ var DatabaseController = class _DatabaseController {
3249
2826
  const conditions = [];
3250
2827
  for (const [key, value] of Object.entries(filter)) {
3251
2828
  if (value !== void 0) {
3252
- conditions.push(`${snakeCase_default(key)} = $${params.length + 1}`);
2829
+ conditions.push(`${(0, import_lodash_es.snakeCase)(key)} = $${params.length + 1}`);
3253
2830
  params.push(value);
3254
2831
  }
3255
2832
  }
@@ -3258,7 +2835,7 @@ var DatabaseController = class _DatabaseController {
3258
2835
  buildJoinClause(joins) {
3259
2836
  let joinSql = "";
3260
2837
  for (const [table, join] of Object.entries(joins)) {
3261
- joinSql += ` LEFT JOIN ${snakeCase_default(table)} ${join.alias} ON ${join.on}`;
2838
+ joinSql += ` LEFT JOIN ${(0, import_lodash_es.snakeCase)(table)} ${join.alias} ON ${join.on}`;
3262
2839
  if (join.joins) joinSql += " " + this.buildJoinClause(join.joins);
3263
2840
  }
3264
2841
  return joinSql;
@@ -3682,7 +3259,7 @@ var CadenzaService = class {
3682
3259
  if ((_g = options.cadenzaDB) == null ? void 0 : _g.connect) {
3683
3260
  import_core3.default.broker.emit("meta.initializing_service", {
3684
3261
  // Seed the CadenzaDB
3685
- service_instance: {
3262
+ serviceInstance: {
3686
3263
  uuid: "cadenza-db",
3687
3264
  serviceName: "CadenzaDB",
3688
3265
  address: (_h = options.cadenzaDB) == null ? void 0 : _h.address,
@@ -3700,7 +3277,7 @@ var CadenzaService = class {
3700
3277
  (_j = options.relatedServices) == null ? void 0 : _j.forEach((service) => {
3701
3278
  var _a3;
3702
3279
  import_core3.default.broker.emit("meta.initializing_service", {
3703
- service_instance: {
3280
+ serviceInstance: {
3704
3281
  uuid: service[0],
3705
3282
  serviceName: service[1],
3706
3283
  address: service[2].split(":")[0],
@@ -3780,7 +3357,7 @@ var CadenzaService = class {
3780
3357
  port: parseInt((_e = process.env.CADENZA_DB_PORT) != null ? _e : "5000")
3781
3358
  },
3782
3359
  databaseType: "postgres",
3783
- databaseName: snakeCase_default(name),
3360
+ databaseName: (0, import_lodash_es2.snakeCase)(name),
3784
3361
  poolSize: parseInt((_f = process.env.DATABASE_POOL_SIZE) != null ? _f : "10")
3785
3362
  }, options);
3786
3363
  import_core3.default.broker.emit("meta.database_init_requested", {
@@ -4010,17 +3587,4 @@ var index_default = CadenzaService;
4010
3587
  TaskOptions,
4011
3588
  ThrottleTagGetter
4012
3589
  });
4013
- /*! Bundled license information:
4014
-
4015
- lodash-es/lodash.js:
4016
- (**
4017
- * @license
4018
- * Lodash (Custom Build) <https://lodash.com/>
4019
- * Build: `lodash modularize exports="es" -o ./`
4020
- * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
4021
- * Released under MIT license <https://lodash.com/license>
4022
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
4023
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
4024
- *)
4025
- */
4026
3590
  //# sourceMappingURL=index.js.map