@timeback/caliper 0.1.2 → 0.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.
@@ -6,12 +6,17 @@
6
6
  import type { ClientUrlMaps, Platform } from '@timeback/internal-client-infra';
7
7
  /**
8
8
  * Environment variable names for Caliper configuration.
9
+ *
10
+ * Supports fallback chains - tries each env var in order until one is defined:
11
+ * - `TIMEBACK_API_*` (canonical/preferred)
12
+ * - `TIMEBACK_*` (unified Timeback shorthand)
13
+ * - `CALIPER_*` (service-specific legacy)
9
14
  */
10
15
  export declare const CALIPER_ENV_VARS: {
11
- readonly baseUrl: "CALIPER_BASE_URL";
12
- readonly authUrl: "CALIPER_TOKEN_URL";
13
- readonly clientId: "CALIPER_CLIENT_ID";
14
- readonly clientSecret: "CALIPER_CLIENT_SECRET";
16
+ readonly baseUrl: readonly ["TIMEBACK_API_BASE_URL", "TIMEBACK_BASE_URL", "CALIPER_BASE_URL"];
17
+ readonly authUrl: readonly ["TIMEBACK_API_AUTH_URL", "TIMEBACK_AUTH_URL", "CALIPER_TOKEN_URL"];
18
+ readonly clientId: readonly ["TIMEBACK_API_CLIENT_ID", "TIMEBACK_CLIENT_ID", "CALIPER_CLIENT_ID"];
19
+ readonly clientSecret: readonly ["TIMEBACK_API_CLIENT_SECRET", "TIMEBACK_CLIENT_SECRET", "CALIPER_CLIENT_SECRET"];
15
20
  };
16
21
  /**
17
22
  * Caliper JSON-LD context version.
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAE9E;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;CAKnB,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,oBAAoB,+CAA+C,CAAA;AAEhF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,GAAE,QAA2B,GAAG,aAAa,CAM1F"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAE9E;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB;;;;;CAKnB,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,oBAAoB,+CAA+C,CAAA;AAEhF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,GAAE,QAA2B,GAAG,aAAa,CAM1F"}
package/dist/index.js CHANGED
@@ -704,7 +704,17 @@ class TimebackProvider {
704
704
  // ../../internal/client-infra/src/utils/utils.ts
705
705
  function getEnv(key) {
706
706
  try {
707
- return typeof process === "undefined" ? undefined : process.env[key];
707
+ if (typeof process === "undefined")
708
+ return;
709
+ if (typeof key === "string") {
710
+ return process.env[key];
711
+ }
712
+ for (const k of key) {
713
+ const value = process.env[k];
714
+ if (value !== undefined)
715
+ return value;
716
+ }
717
+ return;
708
718
  } catch {
709
719
  return;
710
720
  }
@@ -738,6 +748,18 @@ var DEFAULT_PROVIDER_REGISTRY = {
738
748
  };
739
749
 
740
750
  // ../../internal/client-infra/src/config/resolve.ts
751
+ function primaryEnvVar(key) {
752
+ if (typeof key === "string") {
753
+ return key;
754
+ }
755
+ if (key.length === 0) {
756
+ throw new Error(`Missing env var key: ${key}`);
757
+ }
758
+ return key[0];
759
+ }
760
+ function formatEnvVarKey(key) {
761
+ return primaryEnvVar(key);
762
+ }
741
763
  function validateEnv(env) {
742
764
  if (env !== "staging" && env !== "production") {
743
765
  throw new Error(`Invalid env "${env}": must be "staging" or "production"`);
@@ -748,10 +770,10 @@ function validateAuth(auth, envVars) {
748
770
  const clientId = auth?.clientId ?? getEnv(envVars.clientId);
749
771
  const clientSecret = auth?.clientSecret ?? getEnv(envVars.clientSecret);
750
772
  if (!clientId) {
751
- throw new Error(`Missing clientId: provide in config or set ${envVars.clientId}`);
773
+ throw new Error(`Missing clientId: provide in config or set ${formatEnvVarKey(envVars.clientId)}`);
752
774
  }
753
775
  if (!clientSecret) {
754
- throw new Error(`Missing clientSecret: provide in config or set ${envVars.clientSecret}`);
776
+ throw new Error(`Missing clientSecret: provide in config or set ${formatEnvVarKey(envVars.clientSecret)}`);
755
777
  }
756
778
  return { clientId, clientSecret };
757
779
  }
@@ -767,21 +789,21 @@ function buildMissingEnvError(envVars) {
767
789
  const clientId = getEnv(envVars.clientId);
768
790
  const clientSecret = getEnv(envVars.clientSecret);
769
791
  if (baseUrl === undefined && clientId === undefined) {
770
- const hint = envVars.env ?? envVars.baseUrl;
792
+ const hint = formatEnvVarKey(envVars.env ?? envVars.baseUrl);
771
793
  return `Missing env: provide in config or set ${hint}`;
772
794
  }
773
795
  const missing = [];
774
796
  if (baseUrl === undefined) {
775
- missing.push(envVars.env ?? envVars.baseUrl);
797
+ missing.push(formatEnvVarKey(envVars.env ?? envVars.baseUrl));
776
798
  }
777
799
  if (baseUrl !== undefined && authUrl === undefined) {
778
- missing.push(envVars.authUrl);
800
+ missing.push(formatEnvVarKey(envVars.authUrl));
779
801
  }
780
802
  if (clientId === undefined) {
781
- missing.push(envVars.clientId);
803
+ missing.push(formatEnvVarKey(envVars.clientId));
782
804
  }
783
805
  if (clientSecret === undefined) {
784
- missing.push(envVars.clientSecret);
806
+ missing.push(formatEnvVarKey(envVars.clientSecret));
785
807
  }
786
808
  return `Missing environment variables: ${missing.join(", ")}`;
787
809
  }
@@ -1487,10 +1509,10 @@ function validateOffsetListParams(params) {
1487
1509
  }
1488
1510
  // src/constants.ts
1489
1511
  var CALIPER_ENV_VARS = {
1490
- baseUrl: "CALIPER_BASE_URL",
1491
- authUrl: "CALIPER_TOKEN_URL",
1492
- clientId: "CALIPER_CLIENT_ID",
1493
- clientSecret: "CALIPER_CLIENT_SECRET"
1512
+ baseUrl: ["TIMEBACK_API_BASE_URL", "TIMEBACK_BASE_URL", "CALIPER_BASE_URL"],
1513
+ authUrl: ["TIMEBACK_API_AUTH_URL", "TIMEBACK_AUTH_URL", "CALIPER_TOKEN_URL"],
1514
+ clientId: ["TIMEBACK_API_CLIENT_ID", "TIMEBACK_CLIENT_ID", "CALIPER_CLIENT_ID"],
1515
+ clientSecret: ["TIMEBACK_API_CLIENT_SECRET", "TIMEBACK_CLIENT_SECRET", "CALIPER_CLIENT_SECRET"]
1494
1516
  };
1495
1517
  var CALIPER_DATA_VERSION = "http://purl.imsglobal.org/ctx/caliper/v1p2";
1496
1518
 
@@ -1522,7 +1544,7 @@ class Transport extends BaseTransport {
1522
1544
  }
1523
1545
  }
1524
1546
 
1525
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/external.js
1547
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/external.js
1526
1548
  var exports_external = {};
1527
1549
  __export(exports_external, {
1528
1550
  xor: () => xor,
@@ -1763,7 +1785,7 @@ __export(exports_external, {
1763
1785
  $brand: () => $brand
1764
1786
  });
1765
1787
 
1766
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/index.js
1788
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/index.js
1767
1789
  var exports_core2 = {};
1768
1790
  __export(exports_core2, {
1769
1791
  version: () => version,
@@ -2041,7 +2063,7 @@ __export(exports_core2, {
2041
2063
  $ZodAny: () => $ZodAny
2042
2064
  });
2043
2065
 
2044
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/core.js
2066
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/core.js
2045
2067
  var NEVER = Object.freeze({
2046
2068
  status: "aborted"
2047
2069
  });
@@ -2117,7 +2139,7 @@ function config(newConfig) {
2117
2139
  Object.assign(globalConfig, newConfig);
2118
2140
  return globalConfig;
2119
2141
  }
2120
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/util.js
2142
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/util.js
2121
2143
  var exports_util = {};
2122
2144
  __export(exports_util, {
2123
2145
  unwrapMessage: () => unwrapMessage,
@@ -2791,7 +2813,7 @@ class Class {
2791
2813
  constructor(..._args) {}
2792
2814
  }
2793
2815
 
2794
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/errors.js
2816
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/errors.js
2795
2817
  var initializer = (inst, def) => {
2796
2818
  inst.name = "$ZodError";
2797
2819
  Object.defineProperty(inst, "_zod", {
@@ -2928,7 +2950,7 @@ function prettifyError(error) {
2928
2950
  `);
2929
2951
  }
2930
2952
 
2931
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/parse.js
2953
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/parse.js
2932
2954
  var _parse = (_Err) => (schema, value, _ctx, _params) => {
2933
2955
  const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };
2934
2956
  const result = schema._zod.run({ value, issues: [] }, ctx);
@@ -3015,7 +3037,7 @@ var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {
3015
3037
  return _safeParseAsync(_Err)(schema, value, _ctx);
3016
3038
  };
3017
3039
  var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync($ZodRealError);
3018
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/regexes.js
3040
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/regexes.js
3019
3041
  var exports_regexes = {};
3020
3042
  __export(exports_regexes, {
3021
3043
  xid: () => xid,
@@ -3172,7 +3194,7 @@ var sha512_hex = /^[0-9a-fA-F]{128}$/;
3172
3194
  var sha512_base64 = /* @__PURE__ */ fixedBase64(86, "==");
3173
3195
  var sha512_base64url = /* @__PURE__ */ fixedBase64url(86);
3174
3196
 
3175
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/checks.js
3197
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/checks.js
3176
3198
  var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
3177
3199
  var _a;
3178
3200
  inst._zod ?? (inst._zod = {});
@@ -3719,7 +3741,7 @@ var $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (ins
3719
3741
  };
3720
3742
  });
3721
3743
 
3722
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/doc.js
3744
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/doc.js
3723
3745
  class Doc {
3724
3746
  constructor(args = []) {
3725
3747
  this.content = [];
@@ -3757,14 +3779,14 @@ class Doc {
3757
3779
  }
3758
3780
  }
3759
3781
 
3760
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/versions.js
3782
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/versions.js
3761
3783
  var version = {
3762
3784
  major: 4,
3763
3785
  minor: 3,
3764
- patch: 5
3786
+ patch: 6
3765
3787
  };
3766
3788
 
3767
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/schemas.js
3789
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/schemas.js
3768
3790
  var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
3769
3791
  var _a;
3770
3792
  inst ?? (inst = {});
@@ -5047,7 +5069,7 @@ var $ZodRecord = /* @__PURE__ */ $constructor("$ZodRecord", (inst, def) => {
5047
5069
  if (keyResult instanceof Promise) {
5048
5070
  throw new Error("Async schemas not supported in object keys currently");
5049
5071
  }
5050
- const checkNumericKey = typeof key === "string" && number.test(key) && keyResult.issues.length && keyResult.issues.some((iss) => iss.code === "invalid_type" && iss.expected === "number");
5072
+ const checkNumericKey = typeof key === "string" && number.test(key) && keyResult.issues.length;
5051
5073
  if (checkNumericKey) {
5052
5074
  const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);
5053
5075
  if (retryResult instanceof Promise) {
@@ -5726,7 +5748,7 @@ function handleRefineResult(result, payload, input, inst) {
5726
5748
  payload.issues.push(issue2(_iss));
5727
5749
  }
5728
5750
  }
5729
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/index.js
5751
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/index.js
5730
5752
  var exports_locales = {};
5731
5753
  __export(exports_locales, {
5732
5754
  zhTW: () => zh_TW_default,
@@ -5780,7 +5802,7 @@ __export(exports_locales, {
5780
5802
  ar: () => ar_default
5781
5803
  });
5782
5804
 
5783
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ar.js
5805
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ar.js
5784
5806
  var error = () => {
5785
5807
  const Sizable = {
5786
5808
  string: { unit: "حرف", verb: "أن يحوي" },
@@ -5886,7 +5908,7 @@ function ar_default() {
5886
5908
  localeError: error()
5887
5909
  };
5888
5910
  }
5889
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/az.js
5911
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/az.js
5890
5912
  var error2 = () => {
5891
5913
  const Sizable = {
5892
5914
  string: { unit: "simvol", verb: "olmalıdır" },
@@ -5991,7 +6013,7 @@ function az_default() {
5991
6013
  localeError: error2()
5992
6014
  };
5993
6015
  }
5994
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/be.js
6016
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/be.js
5995
6017
  function getBelarusianPlural(count, one, few, many) {
5996
6018
  const absCount = Math.abs(count);
5997
6019
  const lastDigit = absCount % 10;
@@ -6147,7 +6169,7 @@ function be_default() {
6147
6169
  localeError: error3()
6148
6170
  };
6149
6171
  }
6150
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/bg.js
6172
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/bg.js
6151
6173
  var error4 = () => {
6152
6174
  const Sizable = {
6153
6175
  string: { unit: "символа", verb: "да съдържа" },
@@ -6267,7 +6289,7 @@ function bg_default() {
6267
6289
  localeError: error4()
6268
6290
  };
6269
6291
  }
6270
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ca.js
6292
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ca.js
6271
6293
  var error5 = () => {
6272
6294
  const Sizable = {
6273
6295
  string: { unit: "caràcters", verb: "contenir" },
@@ -6374,7 +6396,7 @@ function ca_default() {
6374
6396
  localeError: error5()
6375
6397
  };
6376
6398
  }
6377
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/cs.js
6399
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/cs.js
6378
6400
  var error6 = () => {
6379
6401
  const Sizable = {
6380
6402
  string: { unit: "znaků", verb: "mít" },
@@ -6485,7 +6507,7 @@ function cs_default() {
6485
6507
  localeError: error6()
6486
6508
  };
6487
6509
  }
6488
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/da.js
6510
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/da.js
6489
6511
  var error7 = () => {
6490
6512
  const Sizable = {
6491
6513
  string: { unit: "tegn", verb: "havde" },
@@ -6600,7 +6622,7 @@ function da_default() {
6600
6622
  localeError: error7()
6601
6623
  };
6602
6624
  }
6603
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/de.js
6625
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/de.js
6604
6626
  var error8 = () => {
6605
6627
  const Sizable = {
6606
6628
  string: { unit: "Zeichen", verb: "zu haben" },
@@ -6708,7 +6730,7 @@ function de_default() {
6708
6730
  localeError: error8()
6709
6731
  };
6710
6732
  }
6711
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/en.js
6733
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/en.js
6712
6734
  var error9 = () => {
6713
6735
  const Sizable = {
6714
6736
  string: { unit: "characters", verb: "to have" },
@@ -6814,7 +6836,7 @@ function en_default() {
6814
6836
  localeError: error9()
6815
6837
  };
6816
6838
  }
6817
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/eo.js
6839
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/eo.js
6818
6840
  var error10 = () => {
6819
6841
  const Sizable = {
6820
6842
  string: { unit: "karaktrojn", verb: "havi" },
@@ -6923,7 +6945,7 @@ function eo_default() {
6923
6945
  localeError: error10()
6924
6946
  };
6925
6947
  }
6926
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/es.js
6948
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/es.js
6927
6949
  var error11 = () => {
6928
6950
  const Sizable = {
6929
6951
  string: { unit: "caracteres", verb: "tener" },
@@ -7055,7 +7077,7 @@ function es_default() {
7055
7077
  localeError: error11()
7056
7078
  };
7057
7079
  }
7058
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fa.js
7080
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fa.js
7059
7081
  var error12 = () => {
7060
7082
  const Sizable = {
7061
7083
  string: { unit: "کاراکتر", verb: "داشته باشد" },
@@ -7169,7 +7191,7 @@ function fa_default() {
7169
7191
  localeError: error12()
7170
7192
  };
7171
7193
  }
7172
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fi.js
7194
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fi.js
7173
7195
  var error13 = () => {
7174
7196
  const Sizable = {
7175
7197
  string: { unit: "merkkiä", subject: "merkkijonon" },
@@ -7281,7 +7303,7 @@ function fi_default() {
7281
7303
  localeError: error13()
7282
7304
  };
7283
7305
  }
7284
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fr.js
7306
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fr.js
7285
7307
  var error14 = () => {
7286
7308
  const Sizable = {
7287
7309
  string: { unit: "caractères", verb: "avoir" },
@@ -7389,7 +7411,7 @@ function fr_default() {
7389
7411
  localeError: error14()
7390
7412
  };
7391
7413
  }
7392
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fr-CA.js
7414
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fr-CA.js
7393
7415
  var error15 = () => {
7394
7416
  const Sizable = {
7395
7417
  string: { unit: "caractères", verb: "avoir" },
@@ -7496,7 +7518,7 @@ function fr_CA_default() {
7496
7518
  localeError: error15()
7497
7519
  };
7498
7520
  }
7499
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/he.js
7521
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/he.js
7500
7522
  var error16 = () => {
7501
7523
  const TypeNames = {
7502
7524
  string: { label: "מחרוזת", gender: "f" },
@@ -7689,7 +7711,7 @@ function he_default() {
7689
7711
  localeError: error16()
7690
7712
  };
7691
7713
  }
7692
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/hu.js
7714
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/hu.js
7693
7715
  var error17 = () => {
7694
7716
  const Sizable = {
7695
7717
  string: { unit: "karakter", verb: "legyen" },
@@ -7797,7 +7819,7 @@ function hu_default() {
7797
7819
  localeError: error17()
7798
7820
  };
7799
7821
  }
7800
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/hy.js
7822
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/hy.js
7801
7823
  function getArmenianPlural(count, one, many) {
7802
7824
  return Math.abs(count) === 1 ? one : many;
7803
7825
  }
@@ -7944,7 +7966,7 @@ function hy_default() {
7944
7966
  localeError: error18()
7945
7967
  };
7946
7968
  }
7947
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/id.js
7969
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/id.js
7948
7970
  var error19 = () => {
7949
7971
  const Sizable = {
7950
7972
  string: { unit: "karakter", verb: "memiliki" },
@@ -8050,7 +8072,7 @@ function id_default() {
8050
8072
  localeError: error19()
8051
8073
  };
8052
8074
  }
8053
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/is.js
8075
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/is.js
8054
8076
  var error20 = () => {
8055
8077
  const Sizable = {
8056
8078
  string: { unit: "stafi", verb: "að hafa" },
@@ -8159,7 +8181,7 @@ function is_default() {
8159
8181
  localeError: error20()
8160
8182
  };
8161
8183
  }
8162
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/it.js
8184
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/it.js
8163
8185
  var error21 = () => {
8164
8186
  const Sizable = {
8165
8187
  string: { unit: "caratteri", verb: "avere" },
@@ -8267,7 +8289,7 @@ function it_default() {
8267
8289
  localeError: error21()
8268
8290
  };
8269
8291
  }
8270
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ja.js
8292
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ja.js
8271
8293
  var error22 = () => {
8272
8294
  const Sizable = {
8273
8295
  string: { unit: "文字", verb: "である" },
@@ -8374,7 +8396,7 @@ function ja_default() {
8374
8396
  localeError: error22()
8375
8397
  };
8376
8398
  }
8377
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ka.js
8399
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ka.js
8378
8400
  var error23 = () => {
8379
8401
  const Sizable = {
8380
8402
  string: { unit: "სიმბოლო", verb: "უნდა შეიცავდეს" },
@@ -8486,7 +8508,7 @@ function ka_default() {
8486
8508
  localeError: error23()
8487
8509
  };
8488
8510
  }
8489
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/km.js
8511
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/km.js
8490
8512
  var error24 = () => {
8491
8513
  const Sizable = {
8492
8514
  string: { unit: "តួអក្សរ", verb: "គួរមាន" },
@@ -8597,11 +8619,11 @@ function km_default() {
8597
8619
  };
8598
8620
  }
8599
8621
 
8600
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/kh.js
8622
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/kh.js
8601
8623
  function kh_default() {
8602
8624
  return km_default();
8603
8625
  }
8604
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ko.js
8626
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ko.js
8605
8627
  var error25 = () => {
8606
8628
  const Sizable = {
8607
8629
  string: { unit: "문자", verb: "to have" },
@@ -8712,7 +8734,7 @@ function ko_default() {
8712
8734
  localeError: error25()
8713
8735
  };
8714
8736
  }
8715
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/lt.js
8737
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/lt.js
8716
8738
  var capitalizeFirstCharacter = (text) => {
8717
8739
  return text.charAt(0).toUpperCase() + text.slice(1);
8718
8740
  };
@@ -8915,7 +8937,7 @@ function lt_default() {
8915
8937
  localeError: error26()
8916
8938
  };
8917
8939
  }
8918
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/mk.js
8940
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/mk.js
8919
8941
  var error27 = () => {
8920
8942
  const Sizable = {
8921
8943
  string: { unit: "знаци", verb: "да имаат" },
@@ -9024,7 +9046,7 @@ function mk_default() {
9024
9046
  localeError: error27()
9025
9047
  };
9026
9048
  }
9027
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ms.js
9049
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ms.js
9028
9050
  var error28 = () => {
9029
9051
  const Sizable = {
9030
9052
  string: { unit: "aksara", verb: "mempunyai" },
@@ -9131,7 +9153,7 @@ function ms_default() {
9131
9153
  localeError: error28()
9132
9154
  };
9133
9155
  }
9134
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/nl.js
9156
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/nl.js
9135
9157
  var error29 = () => {
9136
9158
  const Sizable = {
9137
9159
  string: { unit: "tekens", verb: "heeft" },
@@ -9241,7 +9263,7 @@ function nl_default() {
9241
9263
  localeError: error29()
9242
9264
  };
9243
9265
  }
9244
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/no.js
9266
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/no.js
9245
9267
  var error30 = () => {
9246
9268
  const Sizable = {
9247
9269
  string: { unit: "tegn", verb: "å ha" },
@@ -9349,7 +9371,7 @@ function no_default() {
9349
9371
  localeError: error30()
9350
9372
  };
9351
9373
  }
9352
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ota.js
9374
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ota.js
9353
9375
  var error31 = () => {
9354
9376
  const Sizable = {
9355
9377
  string: { unit: "harf", verb: "olmalıdır" },
@@ -9458,7 +9480,7 @@ function ota_default() {
9458
9480
  localeError: error31()
9459
9481
  };
9460
9482
  }
9461
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ps.js
9483
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ps.js
9462
9484
  var error32 = () => {
9463
9485
  const Sizable = {
9464
9486
  string: { unit: "توکي", verb: "ولري" },
@@ -9572,7 +9594,7 @@ function ps_default() {
9572
9594
  localeError: error32()
9573
9595
  };
9574
9596
  }
9575
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/pl.js
9597
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/pl.js
9576
9598
  var error33 = () => {
9577
9599
  const Sizable = {
9578
9600
  string: { unit: "znaków", verb: "mieć" },
@@ -9681,7 +9703,7 @@ function pl_default() {
9681
9703
  localeError: error33()
9682
9704
  };
9683
9705
  }
9684
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/pt.js
9706
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/pt.js
9685
9707
  var error34 = () => {
9686
9708
  const Sizable = {
9687
9709
  string: { unit: "caracteres", verb: "ter" },
@@ -9789,7 +9811,7 @@ function pt_default() {
9789
9811
  localeError: error34()
9790
9812
  };
9791
9813
  }
9792
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ru.js
9814
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ru.js
9793
9815
  function getRussianPlural(count, one, few, many) {
9794
9816
  const absCount = Math.abs(count);
9795
9817
  const lastDigit = absCount % 10;
@@ -9945,7 +9967,7 @@ function ru_default() {
9945
9967
  localeError: error35()
9946
9968
  };
9947
9969
  }
9948
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/sl.js
9970
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/sl.js
9949
9971
  var error36 = () => {
9950
9972
  const Sizable = {
9951
9973
  string: { unit: "znakov", verb: "imeti" },
@@ -10054,7 +10076,7 @@ function sl_default() {
10054
10076
  localeError: error36()
10055
10077
  };
10056
10078
  }
10057
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/sv.js
10079
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/sv.js
10058
10080
  var error37 = () => {
10059
10081
  const Sizable = {
10060
10082
  string: { unit: "tecken", verb: "att ha" },
@@ -10164,7 +10186,7 @@ function sv_default() {
10164
10186
  localeError: error37()
10165
10187
  };
10166
10188
  }
10167
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ta.js
10189
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ta.js
10168
10190
  var error38 = () => {
10169
10191
  const Sizable = {
10170
10192
  string: { unit: "எழுத்துக்கள்", verb: "கொண்டிருக்க வேண்டும்" },
@@ -10274,7 +10296,7 @@ function ta_default() {
10274
10296
  localeError: error38()
10275
10297
  };
10276
10298
  }
10277
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/th.js
10299
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/th.js
10278
10300
  var error39 = () => {
10279
10301
  const Sizable = {
10280
10302
  string: { unit: "ตัวอักษร", verb: "ควรมี" },
@@ -10384,7 +10406,7 @@ function th_default() {
10384
10406
  localeError: error39()
10385
10407
  };
10386
10408
  }
10387
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/tr.js
10409
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/tr.js
10388
10410
  var error40 = () => {
10389
10411
  const Sizable = {
10390
10412
  string: { unit: "karakter", verb: "olmalı" },
@@ -10489,7 +10511,7 @@ function tr_default() {
10489
10511
  localeError: error40()
10490
10512
  };
10491
10513
  }
10492
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/uk.js
10514
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/uk.js
10493
10515
  var error41 = () => {
10494
10516
  const Sizable = {
10495
10517
  string: { unit: "символів", verb: "матиме" },
@@ -10598,11 +10620,11 @@ function uk_default() {
10598
10620
  };
10599
10621
  }
10600
10622
 
10601
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ua.js
10623
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ua.js
10602
10624
  function ua_default() {
10603
10625
  return uk_default();
10604
10626
  }
10605
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ur.js
10627
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ur.js
10606
10628
  var error42 = () => {
10607
10629
  const Sizable = {
10608
10630
  string: { unit: "حروف", verb: "ہونا" },
@@ -10712,7 +10734,7 @@ function ur_default() {
10712
10734
  localeError: error42()
10713
10735
  };
10714
10736
  }
10715
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/uz.js
10737
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/uz.js
10716
10738
  var error43 = () => {
10717
10739
  const Sizable = {
10718
10740
  string: { unit: "belgi", verb: "bo‘lishi kerak" },
@@ -10821,7 +10843,7 @@ function uz_default() {
10821
10843
  localeError: error43()
10822
10844
  };
10823
10845
  }
10824
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/vi.js
10846
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/vi.js
10825
10847
  var error44 = () => {
10826
10848
  const Sizable = {
10827
10849
  string: { unit: "ký tự", verb: "có" },
@@ -10929,7 +10951,7 @@ function vi_default() {
10929
10951
  localeError: error44()
10930
10952
  };
10931
10953
  }
10932
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/zh-CN.js
10954
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/zh-CN.js
10933
10955
  var error45 = () => {
10934
10956
  const Sizable = {
10935
10957
  string: { unit: "字符", verb: "包含" },
@@ -11038,7 +11060,7 @@ function zh_CN_default() {
11038
11060
  localeError: error45()
11039
11061
  };
11040
11062
  }
11041
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/zh-TW.js
11063
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/zh-TW.js
11042
11064
  var error46 = () => {
11043
11065
  const Sizable = {
11044
11066
  string: { unit: "字元", verb: "擁有" },
@@ -11145,7 +11167,7 @@ function zh_TW_default() {
11145
11167
  localeError: error46()
11146
11168
  };
11147
11169
  }
11148
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/yo.js
11170
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/yo.js
11149
11171
  var error47 = () => {
11150
11172
  const Sizable = {
11151
11173
  string: { unit: "àmi", verb: "ní" },
@@ -11252,7 +11274,7 @@ function yo_default() {
11252
11274
  localeError: error47()
11253
11275
  };
11254
11276
  }
11255
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/registries.js
11277
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/registries.js
11256
11278
  var _a;
11257
11279
  var $output = Symbol("ZodOutput");
11258
11280
  var $input = Symbol("ZodInput");
@@ -11302,7 +11324,7 @@ function registry() {
11302
11324
  }
11303
11325
  (_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());
11304
11326
  var globalRegistry = globalThis.__zod_globalRegistry;
11305
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/api.js
11327
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/api.js
11306
11328
  function _string(Class2, params) {
11307
11329
  return new Class2({
11308
11330
  type: "string",
@@ -12222,7 +12244,7 @@ function _stringFormat(Class2, format, fnOrRegex, _params = {}) {
12222
12244
  const inst = new Class2(def);
12223
12245
  return inst;
12224
12246
  }
12225
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/to-json-schema.js
12247
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/to-json-schema.js
12226
12248
  function initializeContext(params) {
12227
12249
  let target = params?.target ?? "draft-2020-12";
12228
12250
  if (target === "draft-4")
@@ -12418,7 +12440,7 @@ function finalize(ctx, schema) {
12418
12440
  }
12419
12441
  }
12420
12442
  }
12421
- if (refSchema.$ref) {
12443
+ if (refSchema.$ref && refSeen.def) {
12422
12444
  for (const key in schema2) {
12423
12445
  if (key === "$ref" || key === "allOf")
12424
12446
  continue;
@@ -12567,7 +12589,7 @@ var createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) =
12567
12589
  extractDefs(ctx, schema);
12568
12590
  return finalize(ctx, schema);
12569
12591
  };
12570
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/json-schema-processors.js
12592
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/json-schema-processors.js
12571
12593
  var formatMap = {
12572
12594
  guid: "uuid",
12573
12595
  url: "uri",
@@ -13112,7 +13134,7 @@ function toJSONSchema(input, params) {
13112
13134
  extractDefs(ctx, input);
13113
13135
  return finalize(ctx, input);
13114
13136
  }
13115
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/json-schema-generator.js
13137
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/json-schema-generator.js
13116
13138
  class JSONSchemaGenerator {
13117
13139
  get metadataRegistry() {
13118
13140
  return this.ctx.metadataRegistry;
@@ -13171,9 +13193,9 @@ class JSONSchemaGenerator {
13171
13193
  return plainResult;
13172
13194
  }
13173
13195
  }
13174
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/json-schema.js
13196
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/json-schema.js
13175
13197
  var exports_json_schema = {};
13176
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/schemas.js
13198
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/schemas.js
13177
13199
  var exports_schemas2 = {};
13178
13200
  __export(exports_schemas2, {
13179
13201
  xor: () => xor,
@@ -13342,7 +13364,7 @@ __export(exports_schemas2, {
13342
13364
  ZodAny: () => ZodAny
13343
13365
  });
13344
13366
 
13345
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/checks.js
13367
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/checks.js
13346
13368
  var exports_checks2 = {};
13347
13369
  __export(exports_checks2, {
13348
13370
  uppercase: () => _uppercase,
@@ -13376,7 +13398,7 @@ __export(exports_checks2, {
13376
13398
  endsWith: () => _endsWith
13377
13399
  });
13378
13400
 
13379
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/iso.js
13401
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/iso.js
13380
13402
  var exports_iso = {};
13381
13403
  __export(exports_iso, {
13382
13404
  time: () => time2,
@@ -13417,7 +13439,7 @@ function duration2(params) {
13417
13439
  return _isoDuration(ZodISODuration, params);
13418
13440
  }
13419
13441
 
13420
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/errors.js
13442
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/errors.js
13421
13443
  var initializer2 = (inst, issues) => {
13422
13444
  $ZodError.init(inst, issues);
13423
13445
  inst.name = "ZodError";
@@ -13452,7 +13474,7 @@ var ZodRealError = $constructor("ZodError", initializer2, {
13452
13474
  Parent: Error
13453
13475
  });
13454
13476
 
13455
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/parse.js
13477
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/parse.js
13456
13478
  var parse3 = /* @__PURE__ */ _parse(ZodRealError);
13457
13479
  var parseAsync2 = /* @__PURE__ */ _parseAsync(ZodRealError);
13458
13480
  var safeParse2 = /* @__PURE__ */ _safeParse(ZodRealError);
@@ -13466,7 +13488,7 @@ var safeDecode2 = /* @__PURE__ */ _safeDecode(ZodRealError);
13466
13488
  var safeEncodeAsync2 = /* @__PURE__ */ _safeEncodeAsync(ZodRealError);
13467
13489
  var safeDecodeAsync2 = /* @__PURE__ */ _safeDecodeAsync(ZodRealError);
13468
13490
 
13469
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/schemas.js
13491
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/schemas.js
13470
13492
  var ZodType = /* @__PURE__ */ $constructor("ZodType", (inst, def) => {
13471
13493
  $ZodType.init(inst, def);
13472
13494
  Object.assign(inst["~standard"], {
@@ -14542,7 +14564,7 @@ function json(params) {
14542
14564
  function preprocess(fn, schema) {
14543
14565
  return pipe(transform(fn), schema);
14544
14566
  }
14545
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/compat.js
14567
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/compat.js
14546
14568
  var ZodIssueCode = {
14547
14569
  invalid_type: "invalid_type",
14548
14570
  too_big: "too_big",
@@ -14566,7 +14588,7 @@ function getErrorMap() {
14566
14588
  }
14567
14589
  var ZodFirstPartyTypeKind;
14568
14590
  (function(ZodFirstPartyTypeKind2) {})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));
14569
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/from-json-schema.js
14591
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/from-json-schema.js
14570
14592
  var z = {
14571
14593
  ...exports_schemas2,
14572
14594
  ...exports_checks2,
@@ -15027,7 +15049,7 @@ function fromJSONSchema(schema, params) {
15027
15049
  };
15028
15050
  return convertSchema(schema, ctx);
15029
15051
  }
15030
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/coerce.js
15052
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/coerce.js
15031
15053
  var exports_coerce = {};
15032
15054
  __export(exports_coerce, {
15033
15055
  string: () => string3,
@@ -15052,7 +15074,7 @@ function date4(params) {
15052
15074
  return _coercedDate(ZodDate, params);
15053
15075
  }
15054
15076
 
15055
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/external.js
15077
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/external.js
15056
15078
  config(en_default());
15057
15079
  // ../../types/src/zod/primitives.ts
15058
15080
  var IsoDateTimeRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/;
@@ -15069,7 +15091,7 @@ var TimebackSubject = exports_external.enum([
15069
15091
  "Math",
15070
15092
  "None",
15071
15093
  "Other"
15072
- ]);
15094
+ ]).meta({ id: "TimebackSubject", description: "Subject area" });
15073
15095
  var TimebackGrade = exports_external.union([
15074
15096
  exports_external.literal(-1),
15075
15097
  exports_external.literal(0),
@@ -15086,7 +15108,10 @@ var TimebackGrade = exports_external.union([
15086
15108
  exports_external.literal(11),
15087
15109
  exports_external.literal(12),
15088
15110
  exports_external.literal(13)
15089
- ]);
15111
+ ]).meta({
15112
+ id: "TimebackGrade",
15113
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
15114
+ });
15090
15115
  var ScoreStatus = exports_external.enum([
15091
15116
  "exempt",
15092
15117
  "fully graded",
@@ -15318,62 +15343,84 @@ var CaliperListEventsParams = exports_external.object({
15318
15343
  }).strict();
15319
15344
  // ../../types/src/zod/config.ts
15320
15345
  var CourseIds = exports_external.object({
15321
- staging: exports_external.string().optional(),
15322
- production: exports_external.string().optional()
15323
- });
15324
- var CourseType = exports_external.enum(["base", "hole-filling", "optional"]);
15325
- var PublishStatus = exports_external.enum(["draft", "testing", "published", "deactivated"]);
15346
+ staging: exports_external.string().meta({ description: "Course ID in staging environment" }).optional(),
15347
+ production: exports_external.string().meta({ description: "Course ID in production environment" }).optional()
15348
+ }).meta({ id: "CourseIds", description: "Environment-specific course IDs (populated by sync)" });
15349
+ var CourseType = exports_external.enum(["base", "hole-filling", "optional"]).meta({ id: "CourseType", description: "Course classification type" });
15350
+ var PublishStatus = exports_external.enum(["draft", "testing", "published", "deactivated"]).meta({ id: "PublishStatus", description: "Course publication status" });
15326
15351
  var CourseGoals = exports_external.object({
15327
- dailyXp: exports_external.number().int().positive().optional(),
15328
- dailyLessons: exports_external.number().int().positive().optional(),
15329
- dailyActiveMinutes: exports_external.number().int().positive().optional(),
15330
- dailyAccuracy: exports_external.number().int().min(0).max(100).optional(),
15331
- dailyMasteredUnits: exports_external.number().int().positive().optional()
15332
- });
15352
+ dailyXp: exports_external.number().int().positive().meta({ description: "Target XP to earn per day" }).optional(),
15353
+ dailyLessons: exports_external.number().int().positive().meta({ description: "Target lessons to complete per day" }).optional(),
15354
+ dailyActiveMinutes: exports_external.number().int().positive().meta({ description: "Target active learning minutes per day" }).optional(),
15355
+ dailyAccuracy: exports_external.number().int().min(0).max(100).meta({ description: "Target accuracy percentage (0-100)" }).optional(),
15356
+ dailyMasteredUnits: exports_external.number().int().positive().meta({ description: "Target units to master per day" }).optional()
15357
+ }).meta({ id: "CourseGoals", description: "Daily learning goals for a course" });
15333
15358
  var CourseMetrics = exports_external.object({
15334
- totalXp: exports_external.number().int().positive().optional(),
15335
- totalLessons: exports_external.number().int().positive().optional(),
15336
- totalGrades: exports_external.number().int().positive().optional()
15337
- });
15359
+ totalXp: exports_external.number().int().positive().meta({ description: "Total XP available in the course" }).optional(),
15360
+ totalLessons: exports_external.number().int().positive().meta({ description: "Total number of lessons/activities" }).optional(),
15361
+ totalGrades: exports_external.number().int().positive().meta({ description: "Total grade levels covered" }).optional()
15362
+ }).meta({ id: "CourseMetrics", description: "Aggregate metrics for a course" });
15338
15363
  var CourseMetadata = exports_external.object({
15339
15364
  courseType: CourseType.optional(),
15340
- isSupplemental: exports_external.boolean().optional(),
15341
- isCustom: exports_external.boolean().optional(),
15365
+ isSupplemental: exports_external.boolean().meta({ description: "Whether this is supplemental to a base course" }).optional(),
15366
+ isCustom: exports_external.boolean().meta({ description: "Whether this is a custom course for an individual student" }).optional(),
15342
15367
  publishStatus: PublishStatus.optional(),
15343
- contactEmail: exports_external.email().optional(),
15344
- primaryApp: exports_external.string().optional(),
15368
+ contactEmail: exports_external.email().meta({ description: "Contact email for course issues" }).optional(),
15369
+ primaryApp: exports_external.string().meta({ description: "Primary application identifier" }).optional(),
15345
15370
  goals: CourseGoals.optional(),
15346
15371
  metrics: CourseMetrics.optional()
15347
- });
15372
+ }).meta({ id: "CourseMetadata", description: "Course metadata (matches API metadata object)" });
15348
15373
  var CourseDefaults = exports_external.object({
15349
- courseCode: exports_external.string().optional(),
15350
- level: exports_external.string().optional(),
15374
+ courseCode: exports_external.string().meta({ description: "Course code (e.g., 'MATH101')" }).optional(),
15375
+ level: exports_external.string().meta({ description: "Course level (e.g., 'AP', 'Honors')" }).optional(),
15351
15376
  metadata: CourseMetadata.optional()
15377
+ }).meta({
15378
+ id: "CourseDefaults",
15379
+ description: "Default properties that apply to all courses unless overridden"
15352
15380
  });
15353
15381
  var CourseEnvOverrides = exports_external.object({
15354
- level: exports_external.string().optional(),
15355
- sensor: exports_external.string().url().optional(),
15356
- launchUrl: exports_external.string().url().optional(),
15382
+ level: exports_external.string().meta({ description: "Course level for this environment" }).optional(),
15383
+ sensor: exports_external.url().meta({ description: "Caliper sensor endpoint URL for this environment" }).optional(),
15384
+ launchUrl: exports_external.url().meta({ description: "LTI launch URL for this environment" }).optional(),
15357
15385
  metadata: CourseMetadata.optional()
15386
+ }).meta({
15387
+ id: "CourseEnvOverrides",
15388
+ description: "Environment-specific course overrides (non-identity fields)"
15358
15389
  });
15359
15390
  var CourseOverrides = exports_external.object({
15360
- staging: CourseEnvOverrides.optional(),
15361
- production: CourseEnvOverrides.optional()
15362
- });
15391
+ staging: CourseEnvOverrides.meta({
15392
+ description: "Overrides for staging environment"
15393
+ }).optional(),
15394
+ production: CourseEnvOverrides.meta({
15395
+ description: "Overrides for production environment"
15396
+ }).optional()
15397
+ }).meta({ id: "CourseOverrides", description: "Per-environment course overrides" });
15363
15398
  var CourseConfig = CourseDefaults.extend({
15364
- subject: TimebackSubject,
15365
- grade: TimebackGrade.optional(),
15399
+ subject: TimebackSubject.meta({ description: "Subject area for this course" }),
15400
+ grade: TimebackGrade.meta({
15401
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
15402
+ }).optional(),
15366
15403
  ids: CourseIds.nullable().optional(),
15367
- sensor: exports_external.string().url().optional(),
15368
- launchUrl: exports_external.string().url().optional(),
15404
+ sensor: exports_external.url().meta({ description: "Caliper sensor endpoint URL for this course" }).optional(),
15405
+ launchUrl: exports_external.url().meta({ description: "LTI launch URL for this course" }).optional(),
15369
15406
  overrides: CourseOverrides.optional()
15407
+ }).meta({
15408
+ id: "CourseConfig",
15409
+ description: "Configuration for a single course. Must have either grade or courseCode (or both)."
15370
15410
  });
15371
15411
  var TimebackConfig = exports_external.object({
15372
- name: exports_external.string().min(1, "App name is required"),
15373
- defaults: CourseDefaults.optional(),
15374
- courses: exports_external.array(CourseConfig).min(1, "At least one course is required"),
15375
- sensor: exports_external.string().url().optional(),
15376
- launchUrl: exports_external.string().url().optional()
15412
+ $schema: exports_external.string().meta({ description: "JSON Schema reference for editor support" }).optional(),
15413
+ name: exports_external.string().min(1, "App name is required").meta({ description: "Display name for your app" }),
15414
+ defaults: CourseDefaults.meta({
15415
+ description: "Default properties applied to all courses"
15416
+ }).optional(),
15417
+ courses: exports_external.array(CourseConfig).min(1, "At least one course is required").meta({ description: "Courses available in this app" }),
15418
+ sensor: exports_external.url().meta({ description: "Default Caliper sensor endpoint URL for all courses" }).optional(),
15419
+ launchUrl: exports_external.url().meta({ description: "Default LTI launch URL for all courses" }).optional()
15420
+ }).meta({
15421
+ id: "TimebackConfig",
15422
+ title: "Timeback Config",
15423
+ description: "Configuration schema for timeback.config.json files"
15377
15424
  }).refine((config2) => {
15378
15425
  return config2.courses.every((c) => c.grade !== undefined || c.courseCode !== undefined);
15379
15426
  }, {
@@ -15394,18 +15441,24 @@ var TimebackConfig = exports_external.object({
15394
15441
  message: "Duplicate courseCode found; each must be unique",
15395
15442
  path: ["courses"]
15396
15443
  }).refine((config2) => {
15397
- return config2.courses.every((c) => c.sensor !== undefined || config2.sensor !== undefined);
15398
- }, {
15399
- message: "Each course must have an effective sensor; set a top-level `sensor` or per-course `sensor`",
15400
- path: ["courses"]
15401
- }).refine((config2) => {
15402
- return config2.courses.every((c) => c.launchUrl !== undefined || config2.launchUrl !== undefined);
15444
+ return config2.courses.every((c) => {
15445
+ if (c.sensor !== undefined || config2.sensor !== undefined) {
15446
+ return true;
15447
+ }
15448
+ const launchUrls = [
15449
+ c.launchUrl,
15450
+ config2.launchUrl,
15451
+ c.overrides?.staging?.launchUrl,
15452
+ c.overrides?.production?.launchUrl
15453
+ ].filter(Boolean);
15454
+ return launchUrls.length > 0;
15455
+ });
15403
15456
  }, {
15404
- message: "Each course must have an effective launchUrl; set a top-level `launchUrl` or per-course `launchUrl`",
15457
+ message: "Each course must have an effective sensor. Either set `sensor` explicitly (top-level or per-course), or provide a `launchUrl` so sensor can be derived from its origin.",
15405
15458
  path: ["courses"]
15406
15459
  });
15407
15460
  // ../../types/src/zod/edubridge.ts
15408
- var EdubridgeDateString = exports_external.union([IsoDateString, IsoDateTimeString]);
15461
+ var EdubridgeDateString = IsoDateTimeString;
15409
15462
  var EduBridgeEnrollment = exports_external.object({
15410
15463
  id: exports_external.string(),
15411
15464
  role: exports_external.string(),
@@ -15469,12 +15522,9 @@ var EmailOrStudentId = exports_external.object({
15469
15522
  });
15470
15523
  var SubjectTrackInput = exports_external.object({
15471
15524
  subject: NonEmptyString,
15472
- gradeLevel: NonEmptyString,
15473
- targetCourseId: NonEmptyString,
15474
- metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15475
- });
15476
- var SubjectTrackUpsertInput = SubjectTrackInput.extend({
15477
- id: NonEmptyString
15525
+ grade: NonEmptyString,
15526
+ courseId: NonEmptyString,
15527
+ orgSourcedId: NonEmptyString.optional()
15478
15528
  });
15479
15529
  var EdubridgeListEnrollmentsParams = exports_external.object({
15480
15530
  userId: NonEmptyString
package/dist/types.js CHANGED
@@ -84,10 +84,10 @@ var TYPESCRIPT_RUNNER = {
84
84
  };
85
85
  // src/constants.ts
86
86
  var CALIPER_ENV_VARS = {
87
- baseUrl: "CALIPER_BASE_URL",
88
- authUrl: "CALIPER_TOKEN_URL",
89
- clientId: "CALIPER_CLIENT_ID",
90
- clientSecret: "CALIPER_CLIENT_SECRET"
87
+ baseUrl: ["TIMEBACK_API_BASE_URL", "TIMEBACK_BASE_URL", "CALIPER_BASE_URL"],
88
+ authUrl: ["TIMEBACK_API_AUTH_URL", "TIMEBACK_AUTH_URL", "CALIPER_TOKEN_URL"],
89
+ clientId: ["TIMEBACK_API_CLIENT_ID", "TIMEBACK_CLIENT_ID", "CALIPER_CLIENT_ID"],
90
+ clientSecret: ["TIMEBACK_API_CLIENT_SECRET", "TIMEBACK_CLIENT_SECRET", "CALIPER_CLIENT_SECRET"]
91
91
  };
92
92
  var CALIPER_DATA_VERSION = "http://purl.imsglobal.org/ctx/caliper/v1p2";
93
93
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@timeback/caliper",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Caliper Analytics client SDK for Timeback",
5
5
  "type": "module",
6
6
  "exports": {