@abloatai/cli 0.59.1 → 0.59.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli.cjs +76 -78
  2. package/package.json +3 -3
package/dist/cli.cjs CHANGED
@@ -1443,7 +1443,6 @@ var init_bytes = __esm({
1443
1443
  // ../../node_modules/postgres/src/connection.js
1444
1444
  function Connection(options, queues = {}, { onopen = noop, onend = noop, onclose = noop } = {}) {
1445
1445
  const {
1446
- sslnegotiation,
1447
1446
  ssl,
1448
1447
  max,
1449
1448
  user,
@@ -1461,7 +1460,7 @@ function Connection(options, queues = {}, { onopen = noop, onend = noop, onclose
1461
1460
  target_session_attrs
1462
1461
  } = options;
1463
1462
  const sent = queue_default(), id = uid++, backend = { pid: null, secret: null }, idleTimer = timer(end, options.idle_timeout), lifeTimer = timer(end, options.max_lifetime), connectTimer = timer(connectTimedOut, options.connect_timeout);
1464
- let socket = null, cancelMessage, errorResponse = null, result = new Result(), incoming = Buffer.alloc(0), needsTypes = options.fetch_types, backendParameters = {}, statements = {}, statementId = Math.random().toString(36).slice(2), statementCount = 1, closedTime = 0, remaining = 0, hostIndex = 0, retries = 0, length = 0, delay = 0, rows = 0, serverSignature = null, nextWriteTimer = null, terminated = false, incomings = null, results = null, initial = null, ending = null, stream = null, chunk = null, ended = null, nonce = null, query = null, final = null;
1463
+ let socket = null, cancelMessage, result = new Result(), incoming = Buffer.alloc(0), needsTypes = options.fetch_types, backendParameters = {}, statements = {}, statementId = Math.random().toString(36).slice(2), statementCount = 1, closedDate = 0, remaining = 0, hostIndex = 0, retries = 0, length = 0, delay = 0, rows = 0, serverSignature = null, nextWriteTimer = null, terminated = false, incomings = null, results = null, initial = null, ending = null, stream = null, chunk = null, ended = null, nonce = null, query = null, final = null;
1465
1464
  const connection2 = {
1466
1465
  queue: queues.closed,
1467
1466
  idleTimer,
@@ -1504,8 +1503,6 @@ function Connection(options, queues = {}, { onopen = noop, onend = noop, onclose
1504
1503
  function execute(q2) {
1505
1504
  if (terminated)
1506
1505
  return queryError(q2, Errors.connection("CONNECTION_DESTROYED", options));
1507
- if (stream)
1508
- return queryError(q2, Errors.generic("COPY_IN_PROGRESS", "You cannot execute queries during copy"));
1509
1506
  if (q2.cancelled)
1510
1507
  return;
1511
1508
  try {
@@ -1575,24 +1572,16 @@ function Connection(options, queues = {}, { onopen = noop, onend = noop, onclose
1575
1572
  socket.destroy();
1576
1573
  }
1577
1574
  async function secure() {
1578
- if (sslnegotiation !== "direct") {
1579
- write(SSLRequest);
1580
- const canSSL = await new Promise((r2) => socket.once("data", (x2) => r2(x2[0] === 83)));
1581
- if (!canSSL && ssl === "prefer")
1582
- return connected();
1583
- }
1584
- const options2 = {
1585
- socket,
1586
- servername: import_net.default.isIP(socket.host) ? void 0 : socket.host
1587
- };
1588
- if (sslnegotiation === "direct")
1589
- options2.ALPNProtocols = ["postgresql"];
1590
- if (ssl === "require" || ssl === "allow" || ssl === "prefer")
1591
- options2.rejectUnauthorized = false;
1592
- else if (typeof ssl === "object")
1593
- Object.assign(options2, ssl);
1575
+ write(SSLRequest);
1576
+ const canSSL = await new Promise((r2) => socket.once("data", (x2) => r2(x2[0] === 83)));
1577
+ if (!canSSL && ssl === "prefer")
1578
+ return connected();
1594
1579
  socket.removeAllListeners();
1595
- socket = import_tls.default.connect(options2);
1580
+ socket = import_tls.default.connect({
1581
+ socket,
1582
+ servername: import_net.default.isIP(socket.host) ? void 0 : socket.host,
1583
+ ...ssl === "require" || ssl === "allow" || ssl === "prefer" ? { rejectUnauthorized: false } : ssl === "verify-full" ? {} : typeof ssl === "object" ? ssl : {}
1584
+ });
1596
1585
  socket.on("secureConnect", connected);
1597
1586
  socket.on("error", error);
1598
1587
  socket.on("close", closed);
@@ -1646,7 +1635,7 @@ function Connection(options, queues = {}, { onopen = noop, onend = noop, onclose
1646
1635
  hostIndex = (hostIndex + 1) % port.length;
1647
1636
  }
1648
1637
  function reconnect() {
1649
- setTimeout(connect2, closedTime ? Math.max(0, closedTime + delay - import_perf_hooks.performance.now()) : 0);
1638
+ setTimeout(connect2, closedDate ? closedDate + delay - import_perf_hooks.performance.now() : 0);
1650
1639
  }
1651
1640
  function connected() {
1652
1641
  try {
@@ -1719,7 +1708,7 @@ function Connection(options, queues = {}, { onopen = noop, onend = noop, onclose
1719
1708
  if (initial)
1720
1709
  return reconnect();
1721
1710
  !hadError && (query || sent.length) && error(Errors.connection("CONNECTION_CLOSED", options, socket));
1722
- closedTime = import_perf_hooks.performance.now();
1711
+ closedDate = import_perf_hooks.performance.now();
1723
1712
  hadError && options.shared.retries++;
1724
1713
  delay = (typeof backoff2 === "function" ? backoff2(options.shared.retries) : backoff2) * 1e3;
1725
1714
  onclose(connection2, Errors.connection("CONNECTION_CLOSED", options, socket));
@@ -1824,16 +1813,8 @@ function Connection(options, queues = {}, { onopen = noop, onend = noop, onclose
1824
1813
  }
1825
1814
  }
1826
1815
  function ReadyForQuery(x2) {
1827
- if (query) {
1828
- if (errorResponse) {
1829
- query.retried ? errored(query.retried) : query.prepared && retryRoutines.has(errorResponse.routine) ? retry(query, errorResponse) : errored(errorResponse);
1830
- } else {
1831
- query.resolve(results || result);
1832
- }
1833
- } else if (errorResponse) {
1834
- errored(errorResponse);
1835
- }
1836
- query = results = errorResponse = null;
1816
+ query && query.options.simple && query.resolve(results || result);
1817
+ query = results = null;
1837
1818
  result = new Result();
1838
1819
  connectTimer.cancel();
1839
1820
  if (initial) {
@@ -1878,6 +1859,7 @@ function Connection(options, queues = {}, { onopen = noop, onend = noop, onclose
1878
1859
  result.count && query.cursorFn(result);
1879
1860
  write(Sync);
1880
1861
  }
1862
+ query.resolve(result);
1881
1863
  }
1882
1864
  function ParseComplete() {
1883
1865
  query.parsing = false;
@@ -2025,12 +2007,9 @@ function Connection(options, queues = {}, { onopen = noop, onend = noop, onclose
2025
2007
  query2.execute();
2026
2008
  }
2027
2009
  function ErrorResponse(x2) {
2028
- if (query) {
2029
- (query.cursorFn || query.describeFirst) && write(Sync);
2030
- errorResponse = Errors.postgres(parseError(x2));
2031
- } else {
2032
- errored(Errors.postgres(parseError(x2)));
2033
- }
2010
+ query && (query.cursorFn || query.describeFirst) && write(Sync);
2011
+ const error2 = Errors.postgres(parseError(x2));
2012
+ query && query.retried ? errored(query.retried) : query && query.prepared && retryRoutines.has(error2.routine) ? retry(query, error2) : errored(error2);
2034
2013
  }
2035
2014
  function retry(q2, error2) {
2036
2015
  delete statements[q2.signature];
@@ -2075,7 +2054,6 @@ function Connection(options, queues = {}, { onopen = noop, onend = noop, onclose
2075
2054
  final(callback) {
2076
2055
  socket.write(bytes_default().c().end());
2077
2056
  final = callback;
2078
- stream = null;
2079
2057
  }
2080
2058
  });
2081
2059
  query.resolve(stream);
@@ -2868,9 +2846,8 @@ function parseOptions(a, b4) {
2868
2846
  query.sslrootcert === "system" && (query.ssl = "verify-full");
2869
2847
  const ints = ["idle_timeout", "connect_timeout", "max_lifetime", "max_pipeline", "backoff", "keep_alive"];
2870
2848
  const defaults = {
2871
- max: globalThis.Cloudflare ? 3 : 10,
2849
+ max: 10,
2872
2850
  ssl: false,
2873
- sslnegotiation: null,
2874
2851
  idle_timeout: null,
2875
2852
  connect_timeout: 30,
2876
2853
  max_lifetime,
@@ -3976,7 +3953,7 @@ var init_observeCliError = __esm({
3976
3953
  import_errorObservation = require("@abloatai/transaction/errorObservation");
3977
3954
  import_errors5 = require("@abloatai/transaction/errors");
3978
3955
  dsn = process.env.ABLO_CLI_SENTRY_DSN ?? "https://1ac154bff10b06836e1ea9de9e0d92f0@o4510928209772544.ingest.de.sentry.io/4511660691423312" ?? "";
3979
- release = process.env.ABLO_CLI_RELEASE ?? "@abloatai/cli@0.59.1";
3956
+ release = process.env.ABLO_CLI_RELEASE ?? "@abloatai/cli@0.59.2";
3980
3957
  initialized = false;
3981
3958
  nativeProcessExit = process.exit.bind(process);
3982
3959
  exitBoundaryInstalled = false;
@@ -4311,7 +4288,7 @@ var init_src2 = __esm({
4311
4288
 
4312
4289
  // src/cliEnvironment.ts
4313
4290
  function cliVersion() {
4314
- return "0.59.1";
4291
+ return "0.59.2";
4315
4292
  }
4316
4293
  function cliOs() {
4317
4294
  const value = (0, import_node_os.platform)();
@@ -219915,9 +219892,9 @@ Additional information: BADCLIENT: Bad error code, ${badCode} not found in range
219915
219892
  }
219916
219893
  });
219917
219894
 
219918
- // ../../node_modules/balanced-match/dist/commonjs/index.js
219895
+ // ../../node_modules/@ts-morph/common/node_modules/balanced-match/dist/commonjs/index.js
219919
219896
  var require_commonjs = __commonJS({
219920
- "../../node_modules/balanced-match/dist/commonjs/index.js"(exports2) {
219897
+ "../../node_modules/@ts-morph/common/node_modules/balanced-match/dist/commonjs/index.js"(exports2) {
219921
219898
  "use strict";
219922
219899
  init_cjs_shims();
219923
219900
  Object.defineProperty(exports2, "__esModule", { value: true });
@@ -219978,9 +219955,9 @@ var require_commonjs = __commonJS({
219978
219955
  }
219979
219956
  });
219980
219957
 
219981
- // ../../node_modules/brace-expansion/dist/commonjs/index.js
219958
+ // ../../node_modules/@ts-morph/common/node_modules/brace-expansion/dist/commonjs/index.js
219982
219959
  var require_commonjs2 = __commonJS({
219983
- "../../node_modules/brace-expansion/dist/commonjs/index.js"(exports2) {
219960
+ "../../node_modules/@ts-morph/common/node_modules/brace-expansion/dist/commonjs/index.js"(exports2) {
219984
219961
  "use strict";
219985
219962
  init_cjs_shims();
219986
219963
  Object.defineProperty(exports2, "__esModule", { value: true });
@@ -220074,7 +220051,7 @@ var require_commonjs2 = __commonJS({
220074
220051
  }
220075
220052
  return out;
220076
220053
  }
220077
- function expandSequence(body, isAlphaSequence, max) {
220054
+ function expandSequence(body, isAlphaSequence, max, maxLength) {
220078
220055
  const n = body.split(/\.\./);
220079
220056
  const N2 = [];
220080
220057
  if (n[0] === void 0 || n[1] === void 0) {
@@ -220091,6 +220068,7 @@ var require_commonjs2 = __commonJS({
220091
220068
  test = gte;
220092
220069
  }
220093
220070
  const pad2 = n.some(isPadded);
220071
+ let length = 0;
220094
220072
  for (let i = x2; test(i, y3) && N2.length < max; i += incr) {
220095
220073
  let c;
220096
220074
  if (isAlphaSequence) {
@@ -220112,7 +220090,10 @@ var require_commonjs2 = __commonJS({
220112
220090
  }
220113
220091
  }
220114
220092
  }
220093
+ if (length + c.length > maxLength)
220094
+ break;
220115
220095
  N2.push(c);
220096
+ length += c.length;
220116
220097
  }
220117
220098
  return N2;
220118
220099
  }
@@ -220152,7 +220133,7 @@ var require_commonjs2 = __commonJS({
220152
220133
  }
220153
220134
  let values2;
220154
220135
  if (isSequence) {
220155
- values2 = expandSequence(m2.body, isAlphaSequence, max);
220136
+ values2 = expandSequence(m2.body, isAlphaSequence, max, maxLength);
220156
220137
  } else {
220157
220138
  let n = parseCommaParts(m2.body);
220158
220139
  if (n.length === 1 && n[0] !== void 0) {
@@ -220165,9 +220146,26 @@ var require_commonjs2 = __commonJS({
220165
220146
  continue;
220166
220147
  }
220167
220148
  }
220149
+ let dropsEmpties = dropEmpties && !m2.post.length && !pre;
220150
+ for (let d3 = 0; dropsEmpties && d3 < acc.length; d3++) {
220151
+ if (acc[d3]) {
220152
+ dropsEmpties = false;
220153
+ }
220154
+ }
220168
220155
  values2 = [];
220169
- for (let j2 = 0; j2 < n.length; j2++) {
220170
- values2.push.apply(values2, expand_(n[j2], max, maxLength, false));
220156
+ let valuesLength = 0;
220157
+ outer: for (let j2 = 0; j2 < n.length; j2++) {
220158
+ const expanded = expand_(n[j2], max, maxLength, false);
220159
+ for (let k3 = 0; k3 < expanded.length; k3++) {
220160
+ const v2 = expanded[k3];
220161
+ if (dropsEmpties && !v2)
220162
+ continue;
220163
+ if (values2.length >= max || valuesLength + v2.length > maxLength) {
220164
+ break outer;
220165
+ }
220166
+ values2.push(v2);
220167
+ valuesLength += v2.length;
220168
+ }
220171
220169
  }
220172
220170
  }
220173
220171
  acc = combine(acc, pre, values2, max, maxLength, dropEmpties && !m2.post.length);
@@ -220180,9 +220178,9 @@ var require_commonjs2 = __commonJS({
220180
220178
  }
220181
220179
  });
220182
220180
 
220183
- // ../../node_modules/minimatch/dist/commonjs/assert-valid-pattern.js
220181
+ // ../../node_modules/@ts-morph/common/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js
220184
220182
  var require_assert_valid_pattern = __commonJS({
220185
- "../../node_modules/minimatch/dist/commonjs/assert-valid-pattern.js"(exports2) {
220183
+ "../../node_modules/@ts-morph/common/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js"(exports2) {
220186
220184
  "use strict";
220187
220185
  init_cjs_shims();
220188
220186
  Object.defineProperty(exports2, "__esModule", { value: true });
@@ -220200,9 +220198,9 @@ var require_assert_valid_pattern = __commonJS({
220200
220198
  }
220201
220199
  });
220202
220200
 
220203
- // ../../node_modules/minimatch/dist/commonjs/brace-expressions.js
220201
+ // ../../node_modules/@ts-morph/common/node_modules/minimatch/dist/commonjs/brace-expressions.js
220204
220202
  var require_brace_expressions = __commonJS({
220205
- "../../node_modules/minimatch/dist/commonjs/brace-expressions.js"(exports2) {
220203
+ "../../node_modules/@ts-morph/common/node_modules/minimatch/dist/commonjs/brace-expressions.js"(exports2) {
220206
220204
  "use strict";
220207
220205
  init_cjs_shims();
220208
220206
  Object.defineProperty(exports2, "__esModule", { value: true });
@@ -220318,9 +220316,9 @@ var require_brace_expressions = __commonJS({
220318
220316
  }
220319
220317
  });
220320
220318
 
220321
- // ../../node_modules/minimatch/dist/commonjs/unescape.js
220319
+ // ../../node_modules/@ts-morph/common/node_modules/minimatch/dist/commonjs/unescape.js
220322
220320
  var require_unescape = __commonJS({
220323
- "../../node_modules/minimatch/dist/commonjs/unescape.js"(exports2) {
220321
+ "../../node_modules/@ts-morph/common/node_modules/minimatch/dist/commonjs/unescape.js"(exports2) {
220324
220322
  "use strict";
220325
220323
  init_cjs_shims();
220326
220324
  Object.defineProperty(exports2, "__esModule", { value: true });
@@ -220335,9 +220333,9 @@ var require_unescape = __commonJS({
220335
220333
  }
220336
220334
  });
220337
220335
 
220338
- // ../../node_modules/minimatch/dist/commonjs/ast.js
220336
+ // ../../node_modules/@ts-morph/common/node_modules/minimatch/dist/commonjs/ast.js
220339
220337
  var require_ast = __commonJS({
220340
- "../../node_modules/minimatch/dist/commonjs/ast.js"(exports2) {
220338
+ "../../node_modules/@ts-morph/common/node_modules/minimatch/dist/commonjs/ast.js"(exports2) {
220341
220339
  "use strict";
220342
220340
  init_cjs_shims();
220343
220341
  var _a;
@@ -220990,9 +220988,9 @@ var require_ast = __commonJS({
220990
220988
  }
220991
220989
  });
220992
220990
 
220993
- // ../../node_modules/minimatch/dist/commonjs/escape.js
220991
+ // ../../node_modules/@ts-morph/common/node_modules/minimatch/dist/commonjs/escape.js
220994
220992
  var require_escape = __commonJS({
220995
- "../../node_modules/minimatch/dist/commonjs/escape.js"(exports2) {
220993
+ "../../node_modules/@ts-morph/common/node_modules/minimatch/dist/commonjs/escape.js"(exports2) {
220996
220994
  "use strict";
220997
220995
  init_cjs_shims();
220998
220996
  Object.defineProperty(exports2, "__esModule", { value: true });
@@ -221007,9 +221005,9 @@ var require_escape = __commonJS({
221007
221005
  }
221008
221006
  });
221009
221007
 
221010
- // ../../node_modules/minimatch/dist/commonjs/index.js
221008
+ // ../../node_modules/@ts-morph/common/node_modules/minimatch/dist/commonjs/index.js
221011
221009
  var require_commonjs3 = __commonJS({
221012
- "../../node_modules/minimatch/dist/commonjs/index.js"(exports2) {
221010
+ "../../node_modules/@ts-morph/common/node_modules/minimatch/dist/commonjs/index.js"(exports2) {
221013
221011
  "use strict";
221014
221012
  init_cjs_shims();
221015
221013
  Object.defineProperty(exports2, "__esModule", { value: true });
@@ -222530,9 +222528,9 @@ var require_is_glob = __commonJS({
222530
222528
  }
222531
222529
  });
222532
222530
 
222533
- // ../../node_modules/fast-glob/node_modules/glob-parent/index.js
222531
+ // ../../node_modules/glob-parent/index.js
222534
222532
  var require_glob_parent = __commonJS({
222535
- "../../node_modules/fast-glob/node_modules/glob-parent/index.js"(exports2, module2) {
222533
+ "../../node_modules/glob-parent/index.js"(exports2, module2) {
222536
222534
  "use strict";
222537
222535
  init_cjs_shims();
222538
222536
  var isGlob = require_is_glob();
@@ -223652,9 +223650,9 @@ var require_braces = __commonJS({
223652
223650
  }
223653
223651
  });
223654
223652
 
223655
- // ../../node_modules/micromatch/node_modules/picomatch/lib/constants.js
223653
+ // ../../node_modules/picomatch/lib/constants.js
223656
223654
  var require_constants2 = __commonJS({
223657
- "../../node_modules/micromatch/node_modules/picomatch/lib/constants.js"(exports2, module2) {
223655
+ "../../node_modules/picomatch/lib/constants.js"(exports2, module2) {
223658
223656
  "use strict";
223659
223657
  init_cjs_shims();
223660
223658
  var path = require("path");
@@ -223854,9 +223852,9 @@ var require_constants2 = __commonJS({
223854
223852
  }
223855
223853
  });
223856
223854
 
223857
- // ../../node_modules/micromatch/node_modules/picomatch/lib/utils.js
223855
+ // ../../node_modules/picomatch/lib/utils.js
223858
223856
  var require_utils2 = __commonJS({
223859
- "../../node_modules/micromatch/node_modules/picomatch/lib/utils.js"(exports2) {
223857
+ "../../node_modules/picomatch/lib/utils.js"(exports2) {
223860
223858
  "use strict";
223861
223859
  init_cjs_shims();
223862
223860
  var path = require("path");
@@ -223916,9 +223914,9 @@ var require_utils2 = __commonJS({
223916
223914
  }
223917
223915
  });
223918
223916
 
223919
- // ../../node_modules/micromatch/node_modules/picomatch/lib/scan.js
223917
+ // ../../node_modules/picomatch/lib/scan.js
223920
223918
  var require_scan = __commonJS({
223921
- "../../node_modules/micromatch/node_modules/picomatch/lib/scan.js"(exports2, module2) {
223919
+ "../../node_modules/picomatch/lib/scan.js"(exports2, module2) {
223922
223920
  "use strict";
223923
223921
  init_cjs_shims();
223924
223922
  var utils = require_utils2();
@@ -224247,9 +224245,9 @@ var require_scan = __commonJS({
224247
224245
  }
224248
224246
  });
224249
224247
 
224250
- // ../../node_modules/micromatch/node_modules/picomatch/lib/parse.js
224248
+ // ../../node_modules/picomatch/lib/parse.js
224251
224249
  var require_parse2 = __commonJS({
224252
- "../../node_modules/micromatch/node_modules/picomatch/lib/parse.js"(exports2, module2) {
224250
+ "../../node_modules/picomatch/lib/parse.js"(exports2, module2) {
224253
224251
  "use strict";
224254
224252
  init_cjs_shims();
224255
224253
  var constants = require_constants2();
@@ -225250,9 +225248,9 @@ var require_parse2 = __commonJS({
225250
225248
  }
225251
225249
  });
225252
225250
 
225253
- // ../../node_modules/micromatch/node_modules/picomatch/lib/picomatch.js
225251
+ // ../../node_modules/picomatch/lib/picomatch.js
225254
225252
  var require_picomatch = __commonJS({
225255
- "../../node_modules/micromatch/node_modules/picomatch/lib/picomatch.js"(exports2, module2) {
225253
+ "../../node_modules/picomatch/lib/picomatch.js"(exports2, module2) {
225256
225254
  "use strict";
225257
225255
  init_cjs_shims();
225258
225256
  var path = require("path");
@@ -225392,9 +225390,9 @@ var require_picomatch = __commonJS({
225392
225390
  }
225393
225391
  });
225394
225392
 
225395
- // ../../node_modules/micromatch/node_modules/picomatch/index.js
225393
+ // ../../node_modules/picomatch/index.js
225396
225394
  var require_picomatch2 = __commonJS({
225397
- "../../node_modules/micromatch/node_modules/picomatch/index.js"(exports2, module2) {
225395
+ "../../node_modules/picomatch/index.js"(exports2, module2) {
225398
225396
  "use strict";
225399
225397
  init_cjs_shims();
225400
225398
  module2.exports = require_picomatch();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abloatai/cli",
3
- "version": "0.59.1",
3
+ "version": "0.59.2",
4
4
  "description": "The ablo command line: set up Ablo, connect your database, and push your schema from the terminal.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://docs.abloatai.com/cli",
@@ -41,10 +41,10 @@
41
41
  },
42
42
  "dependencies": {
43
43
  "@sentry/node": "^10.18.0",
44
- "@abloatai/transaction": "^0.59.1",
44
+ "@abloatai/transaction": "^0.59.2",
45
45
  "jiti": "^2.7.0",
46
46
  "zod": "^4.4.3",
47
- "@abloatai/humans": "^0.59.1"
47
+ "@abloatai/humans": "^0.59.2"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@ablo/product-analytics": "file:../product-analytics",