@timeback/oneroster 0.1.3 → 0.1.5

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 (37) hide show
  1. package/dist/constants.d.ts +9 -4
  2. package/dist/constants.d.ts.map +1 -1
  3. package/dist/errors.js +30 -8
  4. package/dist/index.js +199 -147
  5. package/dist/resources/assessment/results.d.ts +2 -2
  6. package/dist/resources/assessment/results.d.ts.map +1 -1
  7. package/dist/resources/base.d.ts +10 -10
  8. package/dist/resources/base.d.ts.map +1 -1
  9. package/dist/resources/gradebook/categories.d.ts +3 -3
  10. package/dist/resources/gradebook/categories.d.ts.map +1 -1
  11. package/dist/resources/gradebook/results.d.ts +2 -2
  12. package/dist/resources/gradebook/results.d.ts.map +1 -1
  13. package/dist/resources/gradebook/score-scales.d.ts +2 -2
  14. package/dist/resources/gradebook/score-scales.d.ts.map +1 -1
  15. package/dist/resources/rostering/academic-sessions.d.ts +7 -8
  16. package/dist/resources/rostering/academic-sessions.d.ts.map +1 -1
  17. package/dist/resources/rostering/classes.d.ts +19 -19
  18. package/dist/resources/rostering/classes.d.ts.map +1 -1
  19. package/dist/resources/rostering/courses.d.ts +7 -7
  20. package/dist/resources/rostering/courses.d.ts.map +1 -1
  21. package/dist/resources/rostering/demographics.d.ts +2 -2
  22. package/dist/resources/rostering/demographics.d.ts.map +1 -1
  23. package/dist/resources/rostering/enrollments.d.ts +2 -2
  24. package/dist/resources/rostering/enrollments.d.ts.map +1 -1
  25. package/dist/resources/rostering/orgs.d.ts +2 -2
  26. package/dist/resources/rostering/orgs.d.ts.map +1 -1
  27. package/dist/resources/rostering/schools.d.ts +23 -23
  28. package/dist/resources/rostering/schools.d.ts.map +1 -1
  29. package/dist/resources/rostering/users.d.ts +10 -11
  30. package/dist/resources/rostering/users.d.ts.map +1 -1
  31. package/dist/types/callable.d.ts +25 -24
  32. package/dist/types/callable.d.ts.map +1 -1
  33. package/dist/types/index.d.ts +1 -0
  34. package/dist/types/index.d.ts.map +1 -1
  35. package/dist/types/list-params.d.ts +15 -0
  36. package/dist/types/list-params.d.ts.map +1 -0
  37. package/package.json +1 -1
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
  }
@@ -1504,10 +1526,10 @@ function validateSourcedId(sourcedId, context) {
1504
1526
  }
1505
1527
  // src/constants.ts
1506
1528
  var ONEROSTER_ENV_VARS = {
1507
- baseUrl: "ONEROSTER_BASE_URL",
1508
- clientId: "ONEROSTER_CLIENT_ID",
1509
- clientSecret: "ONEROSTER_CLIENT_SECRET",
1510
- authUrl: "ONEROSTER_TOKEN_URL"
1529
+ baseUrl: ["TIMEBACK_API_BASE_URL", "TIMEBACK_BASE_URL", "ONEROSTER_BASE_URL"],
1530
+ clientId: ["TIMEBACK_API_CLIENT_ID", "TIMEBACK_CLIENT_ID", "ONEROSTER_CLIENT_ID"],
1531
+ clientSecret: ["TIMEBACK_API_CLIENT_SECRET", "TIMEBACK_CLIENT_SECRET", "ONEROSTER_CLIENT_SECRET"],
1532
+ authUrl: ["TIMEBACK_API_AUTH_URL", "TIMEBACK_AUTH_URL", "ONEROSTER_TOKEN_URL"]
1511
1533
  };
1512
1534
 
1513
1535
  // src/lib/resolve.ts
@@ -1545,7 +1567,7 @@ class Transport extends BaseTransport {
1545
1567
  }
1546
1568
  }
1547
1569
 
1548
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/external.js
1570
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/external.js
1549
1571
  var exports_external = {};
1550
1572
  __export(exports_external, {
1551
1573
  xor: () => xor,
@@ -1786,7 +1808,7 @@ __export(exports_external, {
1786
1808
  $brand: () => $brand
1787
1809
  });
1788
1810
 
1789
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/index.js
1811
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/index.js
1790
1812
  var exports_core2 = {};
1791
1813
  __export(exports_core2, {
1792
1814
  version: () => version,
@@ -2064,7 +2086,7 @@ __export(exports_core2, {
2064
2086
  $ZodAny: () => $ZodAny
2065
2087
  });
2066
2088
 
2067
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/core.js
2089
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/core.js
2068
2090
  var NEVER = Object.freeze({
2069
2091
  status: "aborted"
2070
2092
  });
@@ -2140,7 +2162,7 @@ function config(newConfig) {
2140
2162
  Object.assign(globalConfig, newConfig);
2141
2163
  return globalConfig;
2142
2164
  }
2143
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/util.js
2165
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/util.js
2144
2166
  var exports_util = {};
2145
2167
  __export(exports_util, {
2146
2168
  unwrapMessage: () => unwrapMessage,
@@ -2814,7 +2836,7 @@ class Class {
2814
2836
  constructor(..._args) {}
2815
2837
  }
2816
2838
 
2817
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/errors.js
2839
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/errors.js
2818
2840
  var initializer = (inst, def) => {
2819
2841
  inst.name = "$ZodError";
2820
2842
  Object.defineProperty(inst, "_zod", {
@@ -2951,7 +2973,7 @@ function prettifyError(error) {
2951
2973
  `);
2952
2974
  }
2953
2975
 
2954
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/parse.js
2976
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/parse.js
2955
2977
  var _parse = (_Err) => (schema, value, _ctx, _params) => {
2956
2978
  const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };
2957
2979
  const result = schema._zod.run({ value, issues: [] }, ctx);
@@ -3038,7 +3060,7 @@ var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {
3038
3060
  return _safeParseAsync(_Err)(schema, value, _ctx);
3039
3061
  };
3040
3062
  var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync($ZodRealError);
3041
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/regexes.js
3063
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/regexes.js
3042
3064
  var exports_regexes = {};
3043
3065
  __export(exports_regexes, {
3044
3066
  xid: () => xid,
@@ -3195,7 +3217,7 @@ var sha512_hex = /^[0-9a-fA-F]{128}$/;
3195
3217
  var sha512_base64 = /* @__PURE__ */ fixedBase64(86, "==");
3196
3218
  var sha512_base64url = /* @__PURE__ */ fixedBase64url(86);
3197
3219
 
3198
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/checks.js
3220
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/checks.js
3199
3221
  var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
3200
3222
  var _a;
3201
3223
  inst._zod ?? (inst._zod = {});
@@ -3742,7 +3764,7 @@ var $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (ins
3742
3764
  };
3743
3765
  });
3744
3766
 
3745
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/doc.js
3767
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/doc.js
3746
3768
  class Doc {
3747
3769
  constructor(args = []) {
3748
3770
  this.content = [];
@@ -3780,14 +3802,14 @@ class Doc {
3780
3802
  }
3781
3803
  }
3782
3804
 
3783
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/versions.js
3805
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/versions.js
3784
3806
  var version = {
3785
3807
  major: 4,
3786
3808
  minor: 3,
3787
- patch: 5
3809
+ patch: 6
3788
3810
  };
3789
3811
 
3790
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/schemas.js
3812
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/schemas.js
3791
3813
  var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
3792
3814
  var _a;
3793
3815
  inst ?? (inst = {});
@@ -5070,7 +5092,7 @@ var $ZodRecord = /* @__PURE__ */ $constructor("$ZodRecord", (inst, def) => {
5070
5092
  if (keyResult instanceof Promise) {
5071
5093
  throw new Error("Async schemas not supported in object keys currently");
5072
5094
  }
5073
- const checkNumericKey = typeof key === "string" && number.test(key) && keyResult.issues.length && keyResult.issues.some((iss) => iss.code === "invalid_type" && iss.expected === "number");
5095
+ const checkNumericKey = typeof key === "string" && number.test(key) && keyResult.issues.length;
5074
5096
  if (checkNumericKey) {
5075
5097
  const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);
5076
5098
  if (retryResult instanceof Promise) {
@@ -5749,7 +5771,7 @@ function handleRefineResult(result, payload, input, inst) {
5749
5771
  payload.issues.push(issue2(_iss));
5750
5772
  }
5751
5773
  }
5752
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/index.js
5774
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/index.js
5753
5775
  var exports_locales = {};
5754
5776
  __export(exports_locales, {
5755
5777
  zhTW: () => zh_TW_default,
@@ -5803,7 +5825,7 @@ __export(exports_locales, {
5803
5825
  ar: () => ar_default
5804
5826
  });
5805
5827
 
5806
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ar.js
5828
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ar.js
5807
5829
  var error = () => {
5808
5830
  const Sizable = {
5809
5831
  string: { unit: "حرف", verb: "أن يحوي" },
@@ -5909,7 +5931,7 @@ function ar_default() {
5909
5931
  localeError: error()
5910
5932
  };
5911
5933
  }
5912
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/az.js
5934
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/az.js
5913
5935
  var error2 = () => {
5914
5936
  const Sizable = {
5915
5937
  string: { unit: "simvol", verb: "olmalıdır" },
@@ -6014,7 +6036,7 @@ function az_default() {
6014
6036
  localeError: error2()
6015
6037
  };
6016
6038
  }
6017
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/be.js
6039
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/be.js
6018
6040
  function getBelarusianPlural(count, one, few, many) {
6019
6041
  const absCount = Math.abs(count);
6020
6042
  const lastDigit = absCount % 10;
@@ -6170,7 +6192,7 @@ function be_default() {
6170
6192
  localeError: error3()
6171
6193
  };
6172
6194
  }
6173
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/bg.js
6195
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/bg.js
6174
6196
  var error4 = () => {
6175
6197
  const Sizable = {
6176
6198
  string: { unit: "символа", verb: "да съдържа" },
@@ -6290,7 +6312,7 @@ function bg_default() {
6290
6312
  localeError: error4()
6291
6313
  };
6292
6314
  }
6293
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ca.js
6315
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ca.js
6294
6316
  var error5 = () => {
6295
6317
  const Sizable = {
6296
6318
  string: { unit: "caràcters", verb: "contenir" },
@@ -6397,7 +6419,7 @@ function ca_default() {
6397
6419
  localeError: error5()
6398
6420
  };
6399
6421
  }
6400
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/cs.js
6422
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/cs.js
6401
6423
  var error6 = () => {
6402
6424
  const Sizable = {
6403
6425
  string: { unit: "znaků", verb: "mít" },
@@ -6508,7 +6530,7 @@ function cs_default() {
6508
6530
  localeError: error6()
6509
6531
  };
6510
6532
  }
6511
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/da.js
6533
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/da.js
6512
6534
  var error7 = () => {
6513
6535
  const Sizable = {
6514
6536
  string: { unit: "tegn", verb: "havde" },
@@ -6623,7 +6645,7 @@ function da_default() {
6623
6645
  localeError: error7()
6624
6646
  };
6625
6647
  }
6626
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/de.js
6648
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/de.js
6627
6649
  var error8 = () => {
6628
6650
  const Sizable = {
6629
6651
  string: { unit: "Zeichen", verb: "zu haben" },
@@ -6731,7 +6753,7 @@ function de_default() {
6731
6753
  localeError: error8()
6732
6754
  };
6733
6755
  }
6734
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/en.js
6756
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/en.js
6735
6757
  var error9 = () => {
6736
6758
  const Sizable = {
6737
6759
  string: { unit: "characters", verb: "to have" },
@@ -6837,7 +6859,7 @@ function en_default() {
6837
6859
  localeError: error9()
6838
6860
  };
6839
6861
  }
6840
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/eo.js
6862
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/eo.js
6841
6863
  var error10 = () => {
6842
6864
  const Sizable = {
6843
6865
  string: { unit: "karaktrojn", verb: "havi" },
@@ -6946,7 +6968,7 @@ function eo_default() {
6946
6968
  localeError: error10()
6947
6969
  };
6948
6970
  }
6949
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/es.js
6971
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/es.js
6950
6972
  var error11 = () => {
6951
6973
  const Sizable = {
6952
6974
  string: { unit: "caracteres", verb: "tener" },
@@ -7078,7 +7100,7 @@ function es_default() {
7078
7100
  localeError: error11()
7079
7101
  };
7080
7102
  }
7081
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fa.js
7103
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fa.js
7082
7104
  var error12 = () => {
7083
7105
  const Sizable = {
7084
7106
  string: { unit: "کاراکتر", verb: "داشته باشد" },
@@ -7192,7 +7214,7 @@ function fa_default() {
7192
7214
  localeError: error12()
7193
7215
  };
7194
7216
  }
7195
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fi.js
7217
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fi.js
7196
7218
  var error13 = () => {
7197
7219
  const Sizable = {
7198
7220
  string: { unit: "merkkiä", subject: "merkkijonon" },
@@ -7304,7 +7326,7 @@ function fi_default() {
7304
7326
  localeError: error13()
7305
7327
  };
7306
7328
  }
7307
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fr.js
7329
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fr.js
7308
7330
  var error14 = () => {
7309
7331
  const Sizable = {
7310
7332
  string: { unit: "caractères", verb: "avoir" },
@@ -7412,7 +7434,7 @@ function fr_default() {
7412
7434
  localeError: error14()
7413
7435
  };
7414
7436
  }
7415
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fr-CA.js
7437
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fr-CA.js
7416
7438
  var error15 = () => {
7417
7439
  const Sizable = {
7418
7440
  string: { unit: "caractères", verb: "avoir" },
@@ -7519,7 +7541,7 @@ function fr_CA_default() {
7519
7541
  localeError: error15()
7520
7542
  };
7521
7543
  }
7522
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/he.js
7544
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/he.js
7523
7545
  var error16 = () => {
7524
7546
  const TypeNames = {
7525
7547
  string: { label: "מחרוזת", gender: "f" },
@@ -7712,7 +7734,7 @@ function he_default() {
7712
7734
  localeError: error16()
7713
7735
  };
7714
7736
  }
7715
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/hu.js
7737
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/hu.js
7716
7738
  var error17 = () => {
7717
7739
  const Sizable = {
7718
7740
  string: { unit: "karakter", verb: "legyen" },
@@ -7820,7 +7842,7 @@ function hu_default() {
7820
7842
  localeError: error17()
7821
7843
  };
7822
7844
  }
7823
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/hy.js
7845
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/hy.js
7824
7846
  function getArmenianPlural(count, one, many) {
7825
7847
  return Math.abs(count) === 1 ? one : many;
7826
7848
  }
@@ -7967,7 +7989,7 @@ function hy_default() {
7967
7989
  localeError: error18()
7968
7990
  };
7969
7991
  }
7970
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/id.js
7992
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/id.js
7971
7993
  var error19 = () => {
7972
7994
  const Sizable = {
7973
7995
  string: { unit: "karakter", verb: "memiliki" },
@@ -8073,7 +8095,7 @@ function id_default() {
8073
8095
  localeError: error19()
8074
8096
  };
8075
8097
  }
8076
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/is.js
8098
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/is.js
8077
8099
  var error20 = () => {
8078
8100
  const Sizable = {
8079
8101
  string: { unit: "stafi", verb: "að hafa" },
@@ -8182,7 +8204,7 @@ function is_default() {
8182
8204
  localeError: error20()
8183
8205
  };
8184
8206
  }
8185
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/it.js
8207
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/it.js
8186
8208
  var error21 = () => {
8187
8209
  const Sizable = {
8188
8210
  string: { unit: "caratteri", verb: "avere" },
@@ -8290,7 +8312,7 @@ function it_default() {
8290
8312
  localeError: error21()
8291
8313
  };
8292
8314
  }
8293
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ja.js
8315
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ja.js
8294
8316
  var error22 = () => {
8295
8317
  const Sizable = {
8296
8318
  string: { unit: "文字", verb: "である" },
@@ -8397,7 +8419,7 @@ function ja_default() {
8397
8419
  localeError: error22()
8398
8420
  };
8399
8421
  }
8400
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ka.js
8422
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ka.js
8401
8423
  var error23 = () => {
8402
8424
  const Sizable = {
8403
8425
  string: { unit: "სიმბოლო", verb: "უნდა შეიცავდეს" },
@@ -8509,7 +8531,7 @@ function ka_default() {
8509
8531
  localeError: error23()
8510
8532
  };
8511
8533
  }
8512
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/km.js
8534
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/km.js
8513
8535
  var error24 = () => {
8514
8536
  const Sizable = {
8515
8537
  string: { unit: "តួអក្សរ", verb: "គួរមាន" },
@@ -8620,11 +8642,11 @@ function km_default() {
8620
8642
  };
8621
8643
  }
8622
8644
 
8623
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/kh.js
8645
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/kh.js
8624
8646
  function kh_default() {
8625
8647
  return km_default();
8626
8648
  }
8627
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ko.js
8649
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ko.js
8628
8650
  var error25 = () => {
8629
8651
  const Sizable = {
8630
8652
  string: { unit: "문자", verb: "to have" },
@@ -8735,7 +8757,7 @@ function ko_default() {
8735
8757
  localeError: error25()
8736
8758
  };
8737
8759
  }
8738
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/lt.js
8760
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/lt.js
8739
8761
  var capitalizeFirstCharacter = (text) => {
8740
8762
  return text.charAt(0).toUpperCase() + text.slice(1);
8741
8763
  };
@@ -8938,7 +8960,7 @@ function lt_default() {
8938
8960
  localeError: error26()
8939
8961
  };
8940
8962
  }
8941
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/mk.js
8963
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/mk.js
8942
8964
  var error27 = () => {
8943
8965
  const Sizable = {
8944
8966
  string: { unit: "знаци", verb: "да имаат" },
@@ -9047,7 +9069,7 @@ function mk_default() {
9047
9069
  localeError: error27()
9048
9070
  };
9049
9071
  }
9050
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ms.js
9072
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ms.js
9051
9073
  var error28 = () => {
9052
9074
  const Sizable = {
9053
9075
  string: { unit: "aksara", verb: "mempunyai" },
@@ -9154,7 +9176,7 @@ function ms_default() {
9154
9176
  localeError: error28()
9155
9177
  };
9156
9178
  }
9157
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/nl.js
9179
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/nl.js
9158
9180
  var error29 = () => {
9159
9181
  const Sizable = {
9160
9182
  string: { unit: "tekens", verb: "heeft" },
@@ -9264,7 +9286,7 @@ function nl_default() {
9264
9286
  localeError: error29()
9265
9287
  };
9266
9288
  }
9267
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/no.js
9289
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/no.js
9268
9290
  var error30 = () => {
9269
9291
  const Sizable = {
9270
9292
  string: { unit: "tegn", verb: "å ha" },
@@ -9372,7 +9394,7 @@ function no_default() {
9372
9394
  localeError: error30()
9373
9395
  };
9374
9396
  }
9375
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ota.js
9397
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ota.js
9376
9398
  var error31 = () => {
9377
9399
  const Sizable = {
9378
9400
  string: { unit: "harf", verb: "olmalıdır" },
@@ -9481,7 +9503,7 @@ function ota_default() {
9481
9503
  localeError: error31()
9482
9504
  };
9483
9505
  }
9484
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ps.js
9506
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ps.js
9485
9507
  var error32 = () => {
9486
9508
  const Sizable = {
9487
9509
  string: { unit: "توکي", verb: "ولري" },
@@ -9595,7 +9617,7 @@ function ps_default() {
9595
9617
  localeError: error32()
9596
9618
  };
9597
9619
  }
9598
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/pl.js
9620
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/pl.js
9599
9621
  var error33 = () => {
9600
9622
  const Sizable = {
9601
9623
  string: { unit: "znaków", verb: "mieć" },
@@ -9704,7 +9726,7 @@ function pl_default() {
9704
9726
  localeError: error33()
9705
9727
  };
9706
9728
  }
9707
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/pt.js
9729
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/pt.js
9708
9730
  var error34 = () => {
9709
9731
  const Sizable = {
9710
9732
  string: { unit: "caracteres", verb: "ter" },
@@ -9812,7 +9834,7 @@ function pt_default() {
9812
9834
  localeError: error34()
9813
9835
  };
9814
9836
  }
9815
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ru.js
9837
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ru.js
9816
9838
  function getRussianPlural(count, one, few, many) {
9817
9839
  const absCount = Math.abs(count);
9818
9840
  const lastDigit = absCount % 10;
@@ -9968,7 +9990,7 @@ function ru_default() {
9968
9990
  localeError: error35()
9969
9991
  };
9970
9992
  }
9971
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/sl.js
9993
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/sl.js
9972
9994
  var error36 = () => {
9973
9995
  const Sizable = {
9974
9996
  string: { unit: "znakov", verb: "imeti" },
@@ -10077,7 +10099,7 @@ function sl_default() {
10077
10099
  localeError: error36()
10078
10100
  };
10079
10101
  }
10080
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/sv.js
10102
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/sv.js
10081
10103
  var error37 = () => {
10082
10104
  const Sizable = {
10083
10105
  string: { unit: "tecken", verb: "att ha" },
@@ -10187,7 +10209,7 @@ function sv_default() {
10187
10209
  localeError: error37()
10188
10210
  };
10189
10211
  }
10190
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ta.js
10212
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ta.js
10191
10213
  var error38 = () => {
10192
10214
  const Sizable = {
10193
10215
  string: { unit: "எழுத்துக்கள்", verb: "கொண்டிருக்க வேண்டும்" },
@@ -10297,7 +10319,7 @@ function ta_default() {
10297
10319
  localeError: error38()
10298
10320
  };
10299
10321
  }
10300
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/th.js
10322
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/th.js
10301
10323
  var error39 = () => {
10302
10324
  const Sizable = {
10303
10325
  string: { unit: "ตัวอักษร", verb: "ควรมี" },
@@ -10407,7 +10429,7 @@ function th_default() {
10407
10429
  localeError: error39()
10408
10430
  };
10409
10431
  }
10410
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/tr.js
10432
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/tr.js
10411
10433
  var error40 = () => {
10412
10434
  const Sizable = {
10413
10435
  string: { unit: "karakter", verb: "olmalı" },
@@ -10512,7 +10534,7 @@ function tr_default() {
10512
10534
  localeError: error40()
10513
10535
  };
10514
10536
  }
10515
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/uk.js
10537
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/uk.js
10516
10538
  var error41 = () => {
10517
10539
  const Sizable = {
10518
10540
  string: { unit: "символів", verb: "матиме" },
@@ -10621,11 +10643,11 @@ function uk_default() {
10621
10643
  };
10622
10644
  }
10623
10645
 
10624
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ua.js
10646
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ua.js
10625
10647
  function ua_default() {
10626
10648
  return uk_default();
10627
10649
  }
10628
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ur.js
10650
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ur.js
10629
10651
  var error42 = () => {
10630
10652
  const Sizable = {
10631
10653
  string: { unit: "حروف", verb: "ہونا" },
@@ -10735,7 +10757,7 @@ function ur_default() {
10735
10757
  localeError: error42()
10736
10758
  };
10737
10759
  }
10738
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/uz.js
10760
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/uz.js
10739
10761
  var error43 = () => {
10740
10762
  const Sizable = {
10741
10763
  string: { unit: "belgi", verb: "bo‘lishi kerak" },
@@ -10844,7 +10866,7 @@ function uz_default() {
10844
10866
  localeError: error43()
10845
10867
  };
10846
10868
  }
10847
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/vi.js
10869
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/vi.js
10848
10870
  var error44 = () => {
10849
10871
  const Sizable = {
10850
10872
  string: { unit: "ký tự", verb: "có" },
@@ -10952,7 +10974,7 @@ function vi_default() {
10952
10974
  localeError: error44()
10953
10975
  };
10954
10976
  }
10955
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/zh-CN.js
10977
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/zh-CN.js
10956
10978
  var error45 = () => {
10957
10979
  const Sizable = {
10958
10980
  string: { unit: "字符", verb: "包含" },
@@ -11061,7 +11083,7 @@ function zh_CN_default() {
11061
11083
  localeError: error45()
11062
11084
  };
11063
11085
  }
11064
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/zh-TW.js
11086
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/zh-TW.js
11065
11087
  var error46 = () => {
11066
11088
  const Sizable = {
11067
11089
  string: { unit: "字元", verb: "擁有" },
@@ -11168,7 +11190,7 @@ function zh_TW_default() {
11168
11190
  localeError: error46()
11169
11191
  };
11170
11192
  }
11171
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/yo.js
11193
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/yo.js
11172
11194
  var error47 = () => {
11173
11195
  const Sizable = {
11174
11196
  string: { unit: "àmi", verb: "ní" },
@@ -11275,7 +11297,7 @@ function yo_default() {
11275
11297
  localeError: error47()
11276
11298
  };
11277
11299
  }
11278
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/registries.js
11300
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/registries.js
11279
11301
  var _a;
11280
11302
  var $output = Symbol("ZodOutput");
11281
11303
  var $input = Symbol("ZodInput");
@@ -11325,7 +11347,7 @@ function registry() {
11325
11347
  }
11326
11348
  (_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());
11327
11349
  var globalRegistry = globalThis.__zod_globalRegistry;
11328
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/api.js
11350
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/api.js
11329
11351
  function _string(Class2, params) {
11330
11352
  return new Class2({
11331
11353
  type: "string",
@@ -12245,7 +12267,7 @@ function _stringFormat(Class2, format, fnOrRegex, _params = {}) {
12245
12267
  const inst = new Class2(def);
12246
12268
  return inst;
12247
12269
  }
12248
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/to-json-schema.js
12270
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/to-json-schema.js
12249
12271
  function initializeContext(params) {
12250
12272
  let target = params?.target ?? "draft-2020-12";
12251
12273
  if (target === "draft-4")
@@ -12441,7 +12463,7 @@ function finalize(ctx, schema) {
12441
12463
  }
12442
12464
  }
12443
12465
  }
12444
- if (refSchema.$ref) {
12466
+ if (refSchema.$ref && refSeen.def) {
12445
12467
  for (const key in schema2) {
12446
12468
  if (key === "$ref" || key === "allOf")
12447
12469
  continue;
@@ -12590,7 +12612,7 @@ var createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) =
12590
12612
  extractDefs(ctx, schema);
12591
12613
  return finalize(ctx, schema);
12592
12614
  };
12593
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/json-schema-processors.js
12615
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/json-schema-processors.js
12594
12616
  var formatMap = {
12595
12617
  guid: "uuid",
12596
12618
  url: "uri",
@@ -13135,7 +13157,7 @@ function toJSONSchema(input, params) {
13135
13157
  extractDefs(ctx, input);
13136
13158
  return finalize(ctx, input);
13137
13159
  }
13138
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/json-schema-generator.js
13160
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/json-schema-generator.js
13139
13161
  class JSONSchemaGenerator {
13140
13162
  get metadataRegistry() {
13141
13163
  return this.ctx.metadataRegistry;
@@ -13194,9 +13216,9 @@ class JSONSchemaGenerator {
13194
13216
  return plainResult;
13195
13217
  }
13196
13218
  }
13197
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/json-schema.js
13219
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/json-schema.js
13198
13220
  var exports_json_schema = {};
13199
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/schemas.js
13221
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/schemas.js
13200
13222
  var exports_schemas2 = {};
13201
13223
  __export(exports_schemas2, {
13202
13224
  xor: () => xor,
@@ -13365,7 +13387,7 @@ __export(exports_schemas2, {
13365
13387
  ZodAny: () => ZodAny
13366
13388
  });
13367
13389
 
13368
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/checks.js
13390
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/checks.js
13369
13391
  var exports_checks2 = {};
13370
13392
  __export(exports_checks2, {
13371
13393
  uppercase: () => _uppercase,
@@ -13399,7 +13421,7 @@ __export(exports_checks2, {
13399
13421
  endsWith: () => _endsWith
13400
13422
  });
13401
13423
 
13402
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/iso.js
13424
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/iso.js
13403
13425
  var exports_iso = {};
13404
13426
  __export(exports_iso, {
13405
13427
  time: () => time2,
@@ -13440,7 +13462,7 @@ function duration2(params) {
13440
13462
  return _isoDuration(ZodISODuration, params);
13441
13463
  }
13442
13464
 
13443
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/errors.js
13465
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/errors.js
13444
13466
  var initializer2 = (inst, issues) => {
13445
13467
  $ZodError.init(inst, issues);
13446
13468
  inst.name = "ZodError";
@@ -13475,7 +13497,7 @@ var ZodRealError = $constructor("ZodError", initializer2, {
13475
13497
  Parent: Error
13476
13498
  });
13477
13499
 
13478
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/parse.js
13500
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/parse.js
13479
13501
  var parse3 = /* @__PURE__ */ _parse(ZodRealError);
13480
13502
  var parseAsync2 = /* @__PURE__ */ _parseAsync(ZodRealError);
13481
13503
  var safeParse2 = /* @__PURE__ */ _safeParse(ZodRealError);
@@ -13489,7 +13511,7 @@ var safeDecode2 = /* @__PURE__ */ _safeDecode(ZodRealError);
13489
13511
  var safeEncodeAsync2 = /* @__PURE__ */ _safeEncodeAsync(ZodRealError);
13490
13512
  var safeDecodeAsync2 = /* @__PURE__ */ _safeDecodeAsync(ZodRealError);
13491
13513
 
13492
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/schemas.js
13514
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/schemas.js
13493
13515
  var ZodType = /* @__PURE__ */ $constructor("ZodType", (inst, def) => {
13494
13516
  $ZodType.init(inst, def);
13495
13517
  Object.assign(inst["~standard"], {
@@ -14565,7 +14587,7 @@ function json(params) {
14565
14587
  function preprocess(fn, schema) {
14566
14588
  return pipe(transform(fn), schema);
14567
14589
  }
14568
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/compat.js
14590
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/compat.js
14569
14591
  var ZodIssueCode = {
14570
14592
  invalid_type: "invalid_type",
14571
14593
  too_big: "too_big",
@@ -14589,7 +14611,7 @@ function getErrorMap() {
14589
14611
  }
14590
14612
  var ZodFirstPartyTypeKind;
14591
14613
  (function(ZodFirstPartyTypeKind2) {})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));
14592
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/from-json-schema.js
14614
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/from-json-schema.js
14593
14615
  var z = {
14594
14616
  ...exports_schemas2,
14595
14617
  ...exports_checks2,
@@ -15050,7 +15072,7 @@ function fromJSONSchema(schema, params) {
15050
15072
  };
15051
15073
  return convertSchema(schema, ctx);
15052
15074
  }
15053
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/coerce.js
15075
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/coerce.js
15054
15076
  var exports_coerce = {};
15055
15077
  __export(exports_coerce, {
15056
15078
  string: () => string3,
@@ -15075,7 +15097,7 @@ function date4(params) {
15075
15097
  return _coercedDate(ZodDate, params);
15076
15098
  }
15077
15099
 
15078
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/external.js
15100
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/external.js
15079
15101
  config(en_default());
15080
15102
  // ../../types/src/zod/primitives.ts
15081
15103
  var IsoDateTimeRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/;
@@ -15092,7 +15114,7 @@ var TimebackSubject = exports_external.enum([
15092
15114
  "Math",
15093
15115
  "None",
15094
15116
  "Other"
15095
- ]);
15117
+ ]).meta({ id: "TimebackSubject", description: "Subject area" });
15096
15118
  var TimebackGrade = exports_external.union([
15097
15119
  exports_external.literal(-1),
15098
15120
  exports_external.literal(0),
@@ -15109,7 +15131,10 @@ var TimebackGrade = exports_external.union([
15109
15131
  exports_external.literal(11),
15110
15132
  exports_external.literal(12),
15111
15133
  exports_external.literal(13)
15112
- ]);
15134
+ ]).meta({
15135
+ id: "TimebackGrade",
15136
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
15137
+ });
15113
15138
  var ScoreStatus = exports_external.enum([
15114
15139
  "exempt",
15115
15140
  "fully graded",
@@ -15341,62 +15366,84 @@ var CaliperListEventsParams = exports_external.object({
15341
15366
  }).strict();
15342
15367
  // ../../types/src/zod/config.ts
15343
15368
  var CourseIds = exports_external.object({
15344
- staging: exports_external.string().optional(),
15345
- production: exports_external.string().optional()
15346
- });
15347
- var CourseType = exports_external.enum(["base", "hole-filling", "optional"]);
15348
- var PublishStatus = exports_external.enum(["draft", "testing", "published", "deactivated"]);
15369
+ staging: exports_external.string().meta({ description: "Course ID in staging environment" }).optional(),
15370
+ production: exports_external.string().meta({ description: "Course ID in production environment" }).optional()
15371
+ }).meta({ id: "CourseIds", description: "Environment-specific course IDs (populated by sync)" });
15372
+ var CourseType = exports_external.enum(["base", "hole-filling", "optional"]).meta({ id: "CourseType", description: "Course classification type" });
15373
+ var PublishStatus = exports_external.enum(["draft", "testing", "published", "deactivated"]).meta({ id: "PublishStatus", description: "Course publication status" });
15349
15374
  var CourseGoals = exports_external.object({
15350
- dailyXp: exports_external.number().int().positive().optional(),
15351
- dailyLessons: exports_external.number().int().positive().optional(),
15352
- dailyActiveMinutes: exports_external.number().int().positive().optional(),
15353
- dailyAccuracy: exports_external.number().int().min(0).max(100).optional(),
15354
- dailyMasteredUnits: exports_external.number().int().positive().optional()
15355
- });
15375
+ dailyXp: exports_external.number().int().positive().meta({ description: "Target XP to earn per day" }).optional(),
15376
+ dailyLessons: exports_external.number().int().positive().meta({ description: "Target lessons to complete per day" }).optional(),
15377
+ dailyActiveMinutes: exports_external.number().int().positive().meta({ description: "Target active learning minutes per day" }).optional(),
15378
+ dailyAccuracy: exports_external.number().int().min(0).max(100).meta({ description: "Target accuracy percentage (0-100)" }).optional(),
15379
+ dailyMasteredUnits: exports_external.number().int().positive().meta({ description: "Target units to master per day" }).optional()
15380
+ }).meta({ id: "CourseGoals", description: "Daily learning goals for a course" });
15356
15381
  var CourseMetrics = exports_external.object({
15357
- totalXp: exports_external.number().int().positive().optional(),
15358
- totalLessons: exports_external.number().int().positive().optional(),
15359
- totalGrades: exports_external.number().int().positive().optional()
15360
- });
15382
+ totalXp: exports_external.number().int().positive().meta({ description: "Total XP available in the course" }).optional(),
15383
+ totalLessons: exports_external.number().int().positive().meta({ description: "Total number of lessons/activities" }).optional(),
15384
+ totalGrades: exports_external.number().int().positive().meta({ description: "Total grade levels covered" }).optional()
15385
+ }).meta({ id: "CourseMetrics", description: "Aggregate metrics for a course" });
15361
15386
  var CourseMetadata = exports_external.object({
15362
15387
  courseType: CourseType.optional(),
15363
- isSupplemental: exports_external.boolean().optional(),
15364
- isCustom: exports_external.boolean().optional(),
15388
+ isSupplemental: exports_external.boolean().meta({ description: "Whether this is supplemental to a base course" }).optional(),
15389
+ isCustom: exports_external.boolean().meta({ description: "Whether this is a custom course for an individual student" }).optional(),
15365
15390
  publishStatus: PublishStatus.optional(),
15366
- contactEmail: exports_external.email().optional(),
15367
- primaryApp: exports_external.string().optional(),
15391
+ contactEmail: exports_external.email().meta({ description: "Contact email for course issues" }).optional(),
15392
+ primaryApp: exports_external.string().meta({ description: "Primary application identifier" }).optional(),
15368
15393
  goals: CourseGoals.optional(),
15369
15394
  metrics: CourseMetrics.optional()
15370
- });
15395
+ }).meta({ id: "CourseMetadata", description: "Course metadata (matches API metadata object)" });
15371
15396
  var CourseDefaults = exports_external.object({
15372
- courseCode: exports_external.string().optional(),
15373
- level: exports_external.string().optional(),
15397
+ courseCode: exports_external.string().meta({ description: "Course code (e.g., 'MATH101')" }).optional(),
15398
+ level: exports_external.string().meta({ description: "Course level (e.g., 'AP', 'Honors')" }).optional(),
15374
15399
  metadata: CourseMetadata.optional()
15400
+ }).meta({
15401
+ id: "CourseDefaults",
15402
+ description: "Default properties that apply to all courses unless overridden"
15375
15403
  });
15376
15404
  var CourseEnvOverrides = exports_external.object({
15377
- level: exports_external.string().optional(),
15378
- sensor: exports_external.string().url().optional(),
15379
- launchUrl: exports_external.string().url().optional(),
15405
+ level: exports_external.string().meta({ description: "Course level for this environment" }).optional(),
15406
+ sensor: exports_external.url().meta({ description: "Caliper sensor endpoint URL for this environment" }).optional(),
15407
+ launchUrl: exports_external.url().meta({ description: "LTI launch URL for this environment" }).optional(),
15380
15408
  metadata: CourseMetadata.optional()
15409
+ }).meta({
15410
+ id: "CourseEnvOverrides",
15411
+ description: "Environment-specific course overrides (non-identity fields)"
15381
15412
  });
15382
15413
  var CourseOverrides = exports_external.object({
15383
- staging: CourseEnvOverrides.optional(),
15384
- production: CourseEnvOverrides.optional()
15385
- });
15414
+ staging: CourseEnvOverrides.meta({
15415
+ description: "Overrides for staging environment"
15416
+ }).optional(),
15417
+ production: CourseEnvOverrides.meta({
15418
+ description: "Overrides for production environment"
15419
+ }).optional()
15420
+ }).meta({ id: "CourseOverrides", description: "Per-environment course overrides" });
15386
15421
  var CourseConfig = CourseDefaults.extend({
15387
- subject: TimebackSubject,
15388
- grade: TimebackGrade.optional(),
15422
+ subject: TimebackSubject.meta({ description: "Subject area for this course" }),
15423
+ grade: TimebackGrade.meta({
15424
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
15425
+ }).optional(),
15389
15426
  ids: CourseIds.nullable().optional(),
15390
- sensor: exports_external.string().url().optional(),
15391
- launchUrl: exports_external.string().url().optional(),
15427
+ sensor: exports_external.url().meta({ description: "Caliper sensor endpoint URL for this course" }).optional(),
15428
+ launchUrl: exports_external.url().meta({ description: "LTI launch URL for this course" }).optional(),
15392
15429
  overrides: CourseOverrides.optional()
15430
+ }).meta({
15431
+ id: "CourseConfig",
15432
+ description: "Configuration for a single course. Must have either grade or courseCode (or both)."
15393
15433
  });
15394
15434
  var TimebackConfig = exports_external.object({
15395
- name: exports_external.string().min(1, "App name is required"),
15396
- defaults: CourseDefaults.optional(),
15397
- courses: exports_external.array(CourseConfig).min(1, "At least one course is required"),
15398
- sensor: exports_external.string().url().optional(),
15399
- launchUrl: exports_external.string().url().optional()
15435
+ $schema: exports_external.string().meta({ description: "JSON Schema reference for editor support" }).optional(),
15436
+ name: exports_external.string().min(1, "App name is required").meta({ description: "Display name for your app" }),
15437
+ defaults: CourseDefaults.meta({
15438
+ description: "Default properties applied to all courses"
15439
+ }).optional(),
15440
+ courses: exports_external.array(CourseConfig).min(1, "At least one course is required").meta({ description: "Courses available in this app" }),
15441
+ sensor: exports_external.url().meta({ description: "Default Caliper sensor endpoint URL for all courses" }).optional(),
15442
+ launchUrl: exports_external.url().meta({ description: "Default LTI launch URL for all courses" }).optional()
15443
+ }).meta({
15444
+ id: "TimebackConfig",
15445
+ title: "Timeback Config",
15446
+ description: "Configuration schema for timeback.config.json files"
15400
15447
  }).refine((config2) => {
15401
15448
  return config2.courses.every((c) => c.grade !== undefined || c.courseCode !== undefined);
15402
15449
  }, {
@@ -15417,18 +15464,24 @@ var TimebackConfig = exports_external.object({
15417
15464
  message: "Duplicate courseCode found; each must be unique",
15418
15465
  path: ["courses"]
15419
15466
  }).refine((config2) => {
15420
- return config2.courses.every((c) => c.sensor !== undefined || config2.sensor !== undefined);
15421
- }, {
15422
- message: "Each course must have an effective sensor; set a top-level `sensor` or per-course `sensor`",
15423
- path: ["courses"]
15424
- }).refine((config2) => {
15425
- return config2.courses.every((c) => c.launchUrl !== undefined || config2.launchUrl !== undefined);
15467
+ return config2.courses.every((c) => {
15468
+ if (c.sensor !== undefined || config2.sensor !== undefined) {
15469
+ return true;
15470
+ }
15471
+ const launchUrls = [
15472
+ c.launchUrl,
15473
+ config2.launchUrl,
15474
+ c.overrides?.staging?.launchUrl,
15475
+ c.overrides?.production?.launchUrl
15476
+ ].filter(Boolean);
15477
+ return launchUrls.length > 0;
15478
+ });
15426
15479
  }, {
15427
- message: "Each course must have an effective launchUrl; set a top-level `launchUrl` or per-course `launchUrl`",
15480
+ 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.",
15428
15481
  path: ["courses"]
15429
15482
  });
15430
15483
  // ../../types/src/zod/edubridge.ts
15431
- var EdubridgeDateString = exports_external.union([IsoDateString, IsoDateTimeString]);
15484
+ var EdubridgeDateString = IsoDateTimeString;
15432
15485
  var EduBridgeEnrollment = exports_external.object({
15433
15486
  id: exports_external.string(),
15434
15487
  role: exports_external.string(),
@@ -15492,12 +15545,9 @@ var EmailOrStudentId = exports_external.object({
15492
15545
  });
15493
15546
  var SubjectTrackInput = exports_external.object({
15494
15547
  subject: NonEmptyString,
15495
- gradeLevel: NonEmptyString,
15496
- targetCourseId: NonEmptyString,
15497
- metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15498
- });
15499
- var SubjectTrackUpsertInput = SubjectTrackInput.extend({
15500
- id: NonEmptyString
15548
+ grade: NonEmptyString,
15549
+ courseId: NonEmptyString,
15550
+ orgSourcedId: NonEmptyString.optional()
15501
15551
  });
15502
15552
  var EdubridgeListEnrollmentsParams = exports_external.object({
15503
15553
  userId: NonEmptyString
@@ -16471,7 +16521,8 @@ class BaseResource {
16471
16521
  return this.stream(params).toArray();
16472
16522
  }
16473
16523
  async first(params) {
16474
- const result = await this.list({ ...params, limit: 1 });
16524
+ const limitedParams = { ...params ?? {}, limit: 1 };
16525
+ const result = await new Paginator2(this.transport, this.basePath, limitedParams, this.unwrapKey, this.transform.bind(this)).firstPage();
16475
16526
  return result.data[0];
16476
16527
  }
16477
16528
  stream(params) {
@@ -16554,7 +16605,8 @@ class ReadOnlyResource {
16554
16605
  return this.stream(params).toArray();
16555
16606
  }
16556
16607
  async first(params) {
16557
- const result = await this.list({ ...params, limit: 1 });
16608
+ const limitedParams = { ...params ?? {}, limit: 1 };
16609
+ const result = await new Paginator2(this.transport, this.basePath, limitedParams, this.unwrapKey, this.transform.bind(this)).firstPage();
16558
16610
  return result.data[0];
16559
16611
  }
16560
16612
  stream(params) {