@immich/cli 2.2.72 → 2.2.74

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.nvmrc CHANGED
@@ -1 +1 @@
1
- 22.16.0
1
+ 22.17.1
package/bin/immich ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import '../dist/index.js';
package/dist/index.js CHANGED
@@ -1,7 +1,4 @@
1
1
  #! /usr/bin/env node
2
- var __defProp = Object.defineProperty;
3
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
2
  import require$$0 from "node:events";
6
3
  import require$$1 from "node:child_process";
7
4
  import path$1, { resolve, join, relative, sep, basename } from "node:path";
@@ -1789,13 +1786,12 @@ Expecting one of '${allowedValues.join("', '")}'`);
1789
1786
  * @private
1790
1787
  */
1791
1788
  _prepareUserArgs(argv, parseOptions) {
1792
- var _a;
1793
1789
  if (argv !== void 0 && !Array.isArray(argv)) {
1794
1790
  throw new Error("first parameter to parse must be array or undefined");
1795
1791
  }
1796
1792
  parseOptions = parseOptions || {};
1797
1793
  if (argv === void 0 && parseOptions.from === void 0) {
1798
- if ((_a = process2.versions) == null ? void 0 : _a.electron) {
1794
+ if (process2.versions?.electron) {
1799
1795
  parseOptions.from = "electron";
1800
1796
  }
1801
1797
  const execArgv = process2.execArgv ?? [];
@@ -2034,7 +2030,6 @@ Expecting one of '${allowedValues.join("', '")}'`);
2034
2030
  * @private
2035
2031
  */
2036
2032
  _dispatchHelpCommand(subcommandName) {
2037
- var _a, _b;
2038
2033
  if (!subcommandName) {
2039
2034
  this.help();
2040
2035
  }
@@ -2045,7 +2040,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
2045
2040
  return this._dispatchSubcommand(
2046
2041
  subcommandName,
2047
2042
  [],
2048
- [((_a = this._getHelpOption()) == null ? void 0 : _a.long) ?? ((_b = this._getHelpOption()) == null ? void 0 : _b.short) ?? "--help"]
2043
+ [this._getHelpOption()?.long ?? this._getHelpOption()?.short ?? "--help"]
2049
2044
  );
2050
2045
  }
2051
2046
  /**
@@ -2707,7 +2702,6 @@ Expecting one of '${allowedValues.join("', '")}'`);
2707
2702
  * @return {(string|Command)}
2708
2703
  */
2709
2704
  alias(alias) {
2710
- var _a;
2711
2705
  if (alias === void 0) return this._aliases[0];
2712
2706
  let command2 = this;
2713
2707
  if (this.commands.length !== 0 && this.commands[this.commands.length - 1]._executableHandler) {
@@ -2715,7 +2709,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
2715
2709
  }
2716
2710
  if (alias === command2._name)
2717
2711
  throw new Error("Command alias can't be the same as its name");
2718
- const matchingCommand = (_a = this.parent) == null ? void 0 : _a._findCommand(alias);
2712
+ const matchingCommand = this.parent?._findCommand(alias);
2719
2713
  if (matchingCommand) {
2720
2714
  const existingCmd = [matchingCommand.name()].concat(matchingCommand.aliases()).join("|");
2721
2715
  throw new Error(
@@ -2839,7 +2833,6 @@ Expecting one of '${allowedValues.join("', '")}'`);
2839
2833
  * @param {{ error: boolean } | Function} [contextOptions] - pass {error:true} to write to stderr instead of stdout
2840
2834
  */
2841
2835
  outputHelp(contextOptions) {
2842
- var _a;
2843
2836
  let deprecatedCallback;
2844
2837
  if (typeof contextOptions === "function") {
2845
2838
  deprecatedCallback = contextOptions;
@@ -2856,7 +2849,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
2856
2849
  }
2857
2850
  }
2858
2851
  context.write(helpInformation);
2859
- if ((_a = this._getHelpOption()) == null ? void 0 : _a.long) {
2852
+ if (this._getHelpOption()?.long) {
2860
2853
  this.emit(this._getHelpOption().long);
2861
2854
  }
2862
2855
  this.emit("afterHelp", context);
@@ -3193,12 +3186,11 @@ async function y(o2) {
3193
3186
  throw new l(e.status, e.data, e.headers);
3194
3187
  }
3195
3188
  class l extends Error {
3189
+ status;
3190
+ data;
3191
+ headers;
3196
3192
  constructor(e, i, f2) {
3197
- super(`Error: ${e}`);
3198
- __publicField(this, "status");
3199
- __publicField(this, "data");
3200
- __publicField(this, "headers");
3201
- this.status = e, this.data = i, this.headers = f2;
3193
+ super(`Error: ${e}`), this.status = e, this.data = i, this.headers = f2;
3202
3194
  }
3203
3195
  }
3204
3196
  const defaults = {
@@ -3221,9 +3213,10 @@ function createAlbum({ createAlbumDto }, opts) {
3221
3213
  body: createAlbumDto
3222
3214
  })));
3223
3215
  }
3224
- function addAssetsToAlbum({ id, key, bulkIdsDto }, opts) {
3216
+ function addAssetsToAlbum({ id, key, slug, bulkIdsDto }, opts) {
3225
3217
  return oazapfts.ok(oazapfts.fetchJson(`/albums/${encodeURIComponent(id)}/assets${q(m({
3226
- key
3218
+ key,
3219
+ slug
3227
3220
  }))}`, oazapfts.json({
3228
3221
  ...opts,
3229
3222
  method: "PUT",
@@ -3356,25 +3349,35 @@ var Permission;
3356
3349
  Permission2["AssetRead"] = "asset.read";
3357
3350
  Permission2["AssetUpdate"] = "asset.update";
3358
3351
  Permission2["AssetDelete"] = "asset.delete";
3352
+ Permission2["AssetStatistics"] = "asset.statistics";
3359
3353
  Permission2["AssetShare"] = "asset.share";
3360
3354
  Permission2["AssetView"] = "asset.view";
3361
3355
  Permission2["AssetDownload"] = "asset.download";
3362
3356
  Permission2["AssetUpload"] = "asset.upload";
3357
+ Permission2["AssetReplace"] = "asset.replace";
3363
3358
  Permission2["AlbumCreate"] = "album.create";
3364
3359
  Permission2["AlbumRead"] = "album.read";
3365
3360
  Permission2["AlbumUpdate"] = "album.update";
3366
3361
  Permission2["AlbumDelete"] = "album.delete";
3367
3362
  Permission2["AlbumStatistics"] = "album.statistics";
3368
- Permission2["AlbumAddAsset"] = "album.addAsset";
3369
- Permission2["AlbumRemoveAsset"] = "album.removeAsset";
3370
3363
  Permission2["AlbumShare"] = "album.share";
3371
3364
  Permission2["AlbumDownload"] = "album.download";
3365
+ Permission2["AlbumAssetCreate"] = "albumAsset.create";
3366
+ Permission2["AlbumAssetDelete"] = "albumAsset.delete";
3367
+ Permission2["AlbumUserCreate"] = "albumUser.create";
3368
+ Permission2["AlbumUserUpdate"] = "albumUser.update";
3369
+ Permission2["AlbumUserDelete"] = "albumUser.delete";
3370
+ Permission2["AuthChangePassword"] = "auth.changePassword";
3372
3371
  Permission2["AuthDeviceDelete"] = "authDevice.delete";
3373
3372
  Permission2["ArchiveRead"] = "archive.read";
3373
+ Permission2["DuplicateRead"] = "duplicate.read";
3374
+ Permission2["DuplicateDelete"] = "duplicate.delete";
3374
3375
  Permission2["FaceCreate"] = "face.create";
3375
3376
  Permission2["FaceRead"] = "face.read";
3376
3377
  Permission2["FaceUpdate"] = "face.update";
3377
3378
  Permission2["FaceDelete"] = "face.delete";
3379
+ Permission2["JobCreate"] = "job.create";
3380
+ Permission2["JobRead"] = "job.read";
3378
3381
  Permission2["LibraryCreate"] = "library.create";
3379
3382
  Permission2["LibraryRead"] = "library.read";
3380
3383
  Permission2["LibraryUpdate"] = "library.update";
@@ -3386,6 +3389,9 @@ var Permission;
3386
3389
  Permission2["MemoryRead"] = "memory.read";
3387
3390
  Permission2["MemoryUpdate"] = "memory.update";
3388
3391
  Permission2["MemoryDelete"] = "memory.delete";
3392
+ Permission2["MemoryStatistics"] = "memory.statistics";
3393
+ Permission2["MemoryAssetCreate"] = "memoryAsset.create";
3394
+ Permission2["MemoryAssetDelete"] = "memoryAsset.delete";
3389
3395
  Permission2["NotificationCreate"] = "notification.create";
3390
3396
  Permission2["NotificationRead"] = "notification.read";
3391
3397
  Permission2["NotificationUpdate"] = "notification.update";
@@ -3401,6 +3407,16 @@ var Permission;
3401
3407
  Permission2["PersonStatistics"] = "person.statistics";
3402
3408
  Permission2["PersonMerge"] = "person.merge";
3403
3409
  Permission2["PersonReassign"] = "person.reassign";
3410
+ Permission2["PinCodeCreate"] = "pinCode.create";
3411
+ Permission2["PinCodeUpdate"] = "pinCode.update";
3412
+ Permission2["PinCodeDelete"] = "pinCode.delete";
3413
+ Permission2["ServerAbout"] = "server.about";
3414
+ Permission2["ServerApkLinks"] = "server.apkLinks";
3415
+ Permission2["ServerStorage"] = "server.storage";
3416
+ Permission2["ServerStatistics"] = "server.statistics";
3417
+ Permission2["ServerLicenseRead"] = "serverLicense.read";
3418
+ Permission2["ServerLicenseUpdate"] = "serverLicense.update";
3419
+ Permission2["ServerLicenseDelete"] = "serverLicense.delete";
3404
3420
  Permission2["SessionCreate"] = "session.create";
3405
3421
  Permission2["SessionRead"] = "session.read";
3406
3422
  Permission2["SessionUpdate"] = "session.update";
@@ -3414,6 +3430,10 @@ var Permission;
3414
3430
  Permission2["StackRead"] = "stack.read";
3415
3431
  Permission2["StackUpdate"] = "stack.update";
3416
3432
  Permission2["StackDelete"] = "stack.delete";
3433
+ Permission2["SyncStream"] = "sync.stream";
3434
+ Permission2["SyncCheckpointRead"] = "syncCheckpoint.read";
3435
+ Permission2["SyncCheckpointUpdate"] = "syncCheckpoint.update";
3436
+ Permission2["SyncCheckpointDelete"] = "syncCheckpoint.delete";
3417
3437
  Permission2["SystemConfigRead"] = "systemConfig.read";
3418
3438
  Permission2["SystemConfigUpdate"] = "systemConfig.update";
3419
3439
  Permission2["SystemMetadataRead"] = "systemMetadata.read";
@@ -3423,10 +3443,25 @@ var Permission;
3423
3443
  Permission2["TagUpdate"] = "tag.update";
3424
3444
  Permission2["TagDelete"] = "tag.delete";
3425
3445
  Permission2["TagAsset"] = "tag.asset";
3426
- Permission2["AdminUserCreate"] = "admin.user.create";
3427
- Permission2["AdminUserRead"] = "admin.user.read";
3428
- Permission2["AdminUserUpdate"] = "admin.user.update";
3429
- Permission2["AdminUserDelete"] = "admin.user.delete";
3446
+ Permission2["UserRead"] = "user.read";
3447
+ Permission2["UserUpdate"] = "user.update";
3448
+ Permission2["UserLicenseCreate"] = "userLicense.create";
3449
+ Permission2["UserLicenseRead"] = "userLicense.read";
3450
+ Permission2["UserLicenseUpdate"] = "userLicense.update";
3451
+ Permission2["UserLicenseDelete"] = "userLicense.delete";
3452
+ Permission2["UserOnboardingRead"] = "userOnboarding.read";
3453
+ Permission2["UserOnboardingUpdate"] = "userOnboarding.update";
3454
+ Permission2["UserOnboardingDelete"] = "userOnboarding.delete";
3455
+ Permission2["UserPreferenceRead"] = "userPreference.read";
3456
+ Permission2["UserPreferenceUpdate"] = "userPreference.update";
3457
+ Permission2["UserProfileImageCreate"] = "userProfileImage.create";
3458
+ Permission2["UserProfileImageRead"] = "userProfileImage.read";
3459
+ Permission2["UserProfileImageUpdate"] = "userProfileImage.update";
3460
+ Permission2["UserProfileImageDelete"] = "userProfileImage.delete";
3461
+ Permission2["AdminUserCreate"] = "adminUser.create";
3462
+ Permission2["AdminUserRead"] = "adminUser.read";
3463
+ Permission2["AdminUserUpdate"] = "adminUser.update";
3464
+ Permission2["AdminUserDelete"] = "adminUser.delete";
3430
3465
  })(Permission || (Permission = {}));
3431
3466
  var AssetMediaStatus;
3432
3467
  (function(AssetMediaStatus2) {
@@ -3522,35 +3557,70 @@ var Error2;
3522
3557
  })(Error2 || (Error2 = {}));
3523
3558
  var SyncEntityType;
3524
3559
  (function(SyncEntityType2) {
3560
+ SyncEntityType2["AuthUserV1"] = "AuthUserV1";
3525
3561
  SyncEntityType2["UserV1"] = "UserV1";
3526
3562
  SyncEntityType2["UserDeleteV1"] = "UserDeleteV1";
3527
- SyncEntityType2["PartnerV1"] = "PartnerV1";
3528
- SyncEntityType2["PartnerDeleteV1"] = "PartnerDeleteV1";
3529
3563
  SyncEntityType2["AssetV1"] = "AssetV1";
3530
3564
  SyncEntityType2["AssetDeleteV1"] = "AssetDeleteV1";
3531
3565
  SyncEntityType2["AssetExifV1"] = "AssetExifV1";
3566
+ SyncEntityType2["PartnerV1"] = "PartnerV1";
3567
+ SyncEntityType2["PartnerDeleteV1"] = "PartnerDeleteV1";
3532
3568
  SyncEntityType2["PartnerAssetV1"] = "PartnerAssetV1";
3533
3569
  SyncEntityType2["PartnerAssetBackfillV1"] = "PartnerAssetBackfillV1";
3534
3570
  SyncEntityType2["PartnerAssetDeleteV1"] = "PartnerAssetDeleteV1";
3535
3571
  SyncEntityType2["PartnerAssetExifV1"] = "PartnerAssetExifV1";
3536
3572
  SyncEntityType2["PartnerAssetExifBackfillV1"] = "PartnerAssetExifBackfillV1";
3573
+ SyncEntityType2["PartnerStackBackfillV1"] = "PartnerStackBackfillV1";
3574
+ SyncEntityType2["PartnerStackDeleteV1"] = "PartnerStackDeleteV1";
3575
+ SyncEntityType2["PartnerStackV1"] = "PartnerStackV1";
3537
3576
  SyncEntityType2["AlbumV1"] = "AlbumV1";
3538
3577
  SyncEntityType2["AlbumDeleteV1"] = "AlbumDeleteV1";
3539
3578
  SyncEntityType2["AlbumUserV1"] = "AlbumUserV1";
3540
3579
  SyncEntityType2["AlbumUserBackfillV1"] = "AlbumUserBackfillV1";
3541
3580
  SyncEntityType2["AlbumUserDeleteV1"] = "AlbumUserDeleteV1";
3581
+ SyncEntityType2["AlbumAssetV1"] = "AlbumAssetV1";
3582
+ SyncEntityType2["AlbumAssetBackfillV1"] = "AlbumAssetBackfillV1";
3583
+ SyncEntityType2["AlbumAssetExifV1"] = "AlbumAssetExifV1";
3584
+ SyncEntityType2["AlbumAssetExifBackfillV1"] = "AlbumAssetExifBackfillV1";
3585
+ SyncEntityType2["AlbumToAssetV1"] = "AlbumToAssetV1";
3586
+ SyncEntityType2["AlbumToAssetDeleteV1"] = "AlbumToAssetDeleteV1";
3587
+ SyncEntityType2["AlbumToAssetBackfillV1"] = "AlbumToAssetBackfillV1";
3588
+ SyncEntityType2["MemoryV1"] = "MemoryV1";
3589
+ SyncEntityType2["MemoryDeleteV1"] = "MemoryDeleteV1";
3590
+ SyncEntityType2["MemoryToAssetV1"] = "MemoryToAssetV1";
3591
+ SyncEntityType2["MemoryToAssetDeleteV1"] = "MemoryToAssetDeleteV1";
3592
+ SyncEntityType2["StackV1"] = "StackV1";
3593
+ SyncEntityType2["StackDeleteV1"] = "StackDeleteV1";
3594
+ SyncEntityType2["PersonV1"] = "PersonV1";
3595
+ SyncEntityType2["PersonDeleteV1"] = "PersonDeleteV1";
3596
+ SyncEntityType2["AssetFaceV1"] = "AssetFaceV1";
3597
+ SyncEntityType2["AssetFaceDeleteV1"] = "AssetFaceDeleteV1";
3598
+ SyncEntityType2["UserMetadataV1"] = "UserMetadataV1";
3599
+ SyncEntityType2["UserMetadataDeleteV1"] = "UserMetadataDeleteV1";
3542
3600
  SyncEntityType2["SyncAckV1"] = "SyncAckV1";
3601
+ SyncEntityType2["SyncResetV1"] = "SyncResetV1";
3543
3602
  })(SyncEntityType || (SyncEntityType = {}));
3544
3603
  var SyncRequestType;
3545
3604
  (function(SyncRequestType2) {
3546
- SyncRequestType2["UsersV1"] = "UsersV1";
3547
- SyncRequestType2["PartnersV1"] = "PartnersV1";
3605
+ SyncRequestType2["AlbumsV1"] = "AlbumsV1";
3606
+ SyncRequestType2["AlbumUsersV1"] = "AlbumUsersV1";
3607
+ SyncRequestType2["AlbumToAssetsV1"] = "AlbumToAssetsV1";
3608
+ SyncRequestType2["AlbumAssetsV1"] = "AlbumAssetsV1";
3609
+ SyncRequestType2["AlbumAssetExifsV1"] = "AlbumAssetExifsV1";
3548
3610
  SyncRequestType2["AssetsV1"] = "AssetsV1";
3549
3611
  SyncRequestType2["AssetExifsV1"] = "AssetExifsV1";
3612
+ SyncRequestType2["AuthUsersV1"] = "AuthUsersV1";
3613
+ SyncRequestType2["MemoriesV1"] = "MemoriesV1";
3614
+ SyncRequestType2["MemoryToAssetsV1"] = "MemoryToAssetsV1";
3615
+ SyncRequestType2["PartnersV1"] = "PartnersV1";
3550
3616
  SyncRequestType2["PartnerAssetsV1"] = "PartnerAssetsV1";
3551
3617
  SyncRequestType2["PartnerAssetExifsV1"] = "PartnerAssetExifsV1";
3552
- SyncRequestType2["AlbumsV1"] = "AlbumsV1";
3553
- SyncRequestType2["AlbumUsersV1"] = "AlbumUsersV1";
3618
+ SyncRequestType2["PartnerStacksV1"] = "PartnerStacksV1";
3619
+ SyncRequestType2["StacksV1"] = "StacksV1";
3620
+ SyncRequestType2["UsersV1"] = "UsersV1";
3621
+ SyncRequestType2["PeopleV1"] = "PeopleV1";
3622
+ SyncRequestType2["AssetFacesV1"] = "AssetFacesV1";
3623
+ SyncRequestType2["UserMetadataV1"] = "UserMetadataV1";
3554
3624
  })(SyncRequestType || (SyncRequestType = {}));
3555
3625
  var TranscodeHWAccel;
3556
3626
  (function(TranscodeHWAccel2) {
@@ -9504,16 +9574,16 @@ const defaultQueueOptions = {
9504
9574
  verbose: false
9505
9575
  };
9506
9576
  class Queue {
9577
+ queue;
9578
+ store = /* @__PURE__ */ new Map();
9579
+ options;
9580
+ worker;
9507
9581
  /**
9508
9582
  * Create a new queue.
9509
9583
  * @param worker - The worker function that processes the task.
9510
9584
  * @param options - The queue options.
9511
9585
  */
9512
9586
  constructor(worker, options2) {
9513
- __publicField(this, "queue");
9514
- __publicField(this, "store", /* @__PURE__ */ new Map());
9515
- __publicField(this, "options");
9516
- __publicField(this, "worker");
9517
9587
  this.options = { ...defaultQueueOptions, ...options2 };
9518
9588
  this.worker = worker;
9519
9589
  this.store = /* @__PURE__ */ new Map();
@@ -12242,19 +12312,18 @@ function requireVisit() {
12242
12312
  return visitor;
12243
12313
  }
12244
12314
  function callVisitor(key, node, visitor, path2) {
12245
- var _a, _b, _c, _d, _e;
12246
12315
  if (typeof visitor === "function")
12247
12316
  return visitor(key, node, path2);
12248
12317
  if (identity2.isMap(node))
12249
- return (_a = visitor.Map) == null ? void 0 : _a.call(visitor, key, node, path2);
12318
+ return visitor.Map?.(key, node, path2);
12250
12319
  if (identity2.isSeq(node))
12251
- return (_b = visitor.Seq) == null ? void 0 : _b.call(visitor, key, node, path2);
12320
+ return visitor.Seq?.(key, node, path2);
12252
12321
  if (identity2.isPair(node))
12253
- return (_c = visitor.Pair) == null ? void 0 : _c.call(visitor, key, node, path2);
12322
+ return visitor.Pair?.(key, node, path2);
12254
12323
  if (identity2.isScalar(node))
12255
- return (_d = visitor.Scalar) == null ? void 0 : _d.call(visitor, key, node, path2);
12324
+ return visitor.Scalar?.(key, node, path2);
12256
12325
  if (identity2.isAlias(node))
12257
- return (_e = visitor.Alias) == null ? void 0 : _e.call(visitor, key, node, path2);
12326
+ return visitor.Alias?.(key, node, path2);
12258
12327
  return void 0;
12259
12328
  }
12260
12329
  function replaceNode(key, path2, node) {
@@ -12593,7 +12662,7 @@ function requireToJS() {
12593
12662
  ctx.onCreate(res);
12594
12663
  return res;
12595
12664
  }
12596
- if (typeof value === "bigint" && !(ctx == null ? void 0 : ctx.keep))
12665
+ if (typeof value === "bigint" && !ctx?.keep)
12597
12666
  return Number(value);
12598
12667
  return value;
12599
12668
  }
@@ -12665,7 +12734,7 @@ function requireAlias() {
12665
12734
  */
12666
12735
  resolve(doc, ctx) {
12667
12736
  let nodes;
12668
- if (ctx == null ? void 0 : ctx.aliasResolveCache) {
12737
+ if (ctx?.aliasResolveCache) {
12669
12738
  nodes = ctx.aliasResolveCache;
12670
12739
  } else {
12671
12740
  nodes = [];
@@ -12770,7 +12839,7 @@ function requireScalar() {
12770
12839
  this.value = value;
12771
12840
  }
12772
12841
  toJSON(arg, ctx) {
12773
- return (ctx == null ? void 0 : ctx.keep) ? this.value : toJS2.toJS(this.value, arg, ctx);
12842
+ return ctx?.keep ? this.value : toJS2.toJS(this.value, arg, ctx);
12774
12843
  }
12775
12844
  toString() {
12776
12845
  return String(this.value);
@@ -12801,19 +12870,15 @@ function requireCreateNode() {
12801
12870
  throw new Error(`Tag ${tagName} not found`);
12802
12871
  return tagObj;
12803
12872
  }
12804
- return tags2.find((t2) => {
12805
- var _a;
12806
- return ((_a = t2.identify) == null ? void 0 : _a.call(t2, value)) && !t2.format;
12807
- });
12873
+ return tags2.find((t2) => t2.identify?.(value) && !t2.format);
12808
12874
  }
12809
12875
  function createNode$1(value, tagName, ctx) {
12810
- var _a, _b, _c;
12811
12876
  if (identity2.isDocument(value))
12812
12877
  value = value.contents;
12813
12878
  if (identity2.isNode(value))
12814
12879
  return value;
12815
12880
  if (identity2.isPair(value)) {
12816
- const map2 = (_b = (_a = ctx.schema[identity2.MAP]).createNode) == null ? void 0 : _b.call(_a, ctx.schema, null, ctx);
12881
+ const map2 = ctx.schema[identity2.MAP].createNode?.(ctx.schema, null, ctx);
12817
12882
  map2.items.push(value);
12818
12883
  return map2;
12819
12884
  }
@@ -12832,7 +12897,7 @@ function requireCreateNode() {
12832
12897
  sourceObjects.set(value, ref);
12833
12898
  }
12834
12899
  }
12835
- if (tagName == null ? void 0 : tagName.startsWith("!!"))
12900
+ if (tagName?.startsWith("!!"))
12836
12901
  tagName = defaultTagPrefix + tagName.slice(2);
12837
12902
  let tagObj = findTagObject(value, tagName, schema2.tags);
12838
12903
  if (!tagObj) {
@@ -12851,7 +12916,7 @@ function requireCreateNode() {
12851
12916
  onTagObj(tagObj);
12852
12917
  delete ctx.onTagObj;
12853
12918
  }
12854
- const node = (tagObj == null ? void 0 : tagObj.createNode) ? tagObj.createNode(ctx.schema, value, ctx) : typeof ((_c = tagObj == null ? void 0 : tagObj.nodeClass) == null ? void 0 : _c.from) === "function" ? tagObj.nodeClass.from(ctx.schema, value, ctx) : new Scalar2.Scalar(value);
12919
+ const node = tagObj?.createNode ? tagObj.createNode(ctx.schema, value, ctx) : typeof tagObj?.nodeClass?.from === "function" ? tagObj.nodeClass.from(ctx.schema, value, ctx) : new Scalar2.Scalar(value);
12855
12920
  if (tagName)
12856
12921
  node.tag = tagName;
12857
12922
  else if (!tagObj.default)
@@ -13401,12 +13466,9 @@ ${indent}${start}${value}${end}`;
13401
13466
  const str = value.replace(/\n+/g, `$&
13402
13467
  ${indent}`);
13403
13468
  if (actualString) {
13404
- const test = (tag) => {
13405
- var _a;
13406
- return tag.default && tag.tag !== "tag:yaml.org,2002:str" && ((_a = tag.test) == null ? void 0 : _a.test(str));
13407
- };
13469
+ const test = (tag) => tag.default && tag.tag !== "tag:yaml.org,2002:str" && tag.test?.test(str);
13408
13470
  const { compat, tags: tags2 } = ctx.doc.schema;
13409
- if (tags2.some(test) || (compat == null ? void 0 : compat.some(test)))
13471
+ if (tags2.some(test) || compat?.some(test))
13410
13472
  return quotedString(value, ctx);
13411
13473
  }
13412
13474
  return implicitKey ? str : foldFlowLines2.foldFlowLines(str, indent, foldFlowLines2.FOLD_FLOW, getFoldOptions(ctx, false));
@@ -13497,7 +13559,6 @@ function requireStringify() {
13497
13559
  };
13498
13560
  }
13499
13561
  function getTagObject(tags2, item) {
13500
- var _a;
13501
13562
  if (item.tag) {
13502
13563
  const match = tags2.filter((t2) => t2.tag === item.tag);
13503
13564
  if (match.length > 0)
@@ -13507,10 +13568,7 @@ function requireStringify() {
13507
13568
  let obj;
13508
13569
  if (identity2.isScalar(item)) {
13509
13570
  obj = item.value;
13510
- let match = tags2.filter((t2) => {
13511
- var _a2;
13512
- return (_a2 = t2.identify) == null ? void 0 : _a2.call(t2, obj);
13513
- });
13571
+ let match = tags2.filter((t2) => t2.identify?.(obj));
13514
13572
  if (match.length > 1) {
13515
13573
  const testMatch = match.filter((t2) => t2.test);
13516
13574
  if (testMatch.length > 0)
@@ -13522,7 +13580,7 @@ function requireStringify() {
13522
13580
  tagObj = tags2.find((t2) => t2.nodeClass && obj instanceof t2.nodeClass);
13523
13581
  }
13524
13582
  if (!tagObj) {
13525
- const name = ((_a = obj == null ? void 0 : obj.constructor) == null ? void 0 : _a.name) ?? (obj === null ? "null" : typeof obj);
13583
+ const name = obj?.constructor?.name ?? (obj === null ? "null" : typeof obj);
13526
13584
  throw new Error(`Tag not resolved for ${name} value`);
13527
13585
  }
13528
13586
  return tagObj;
@@ -13542,13 +13600,12 @@ function requireStringify() {
13542
13600
  return props.join(" ");
13543
13601
  }
13544
13602
  function stringify$12(item, ctx, onComment, onChompKeep) {
13545
- var _a;
13546
13603
  if (identity2.isPair(item))
13547
13604
  return item.toString(ctx, onComment, onChompKeep);
13548
13605
  if (identity2.isAlias(item)) {
13549
13606
  if (ctx.doc.directives)
13550
13607
  return item.toString(ctx);
13551
- if ((_a = ctx.resolvedAliases) == null ? void 0 : _a.has(item)) {
13608
+ if (ctx.resolvedAliases?.has(item)) {
13552
13609
  throw new TypeError(`Cannot stringify circular structure without alias nodes`);
13553
13610
  } else {
13554
13611
  if (ctx.resolvedAliases)
@@ -13747,7 +13804,7 @@ function requireMerge() {
13747
13804
  }),
13748
13805
  stringify: () => MERGE_KEY
13749
13806
  };
13750
- const isMergeKey = (ctx, key) => (merge$1.identify(key) || identity2.isScalar(key) && (!key.type || key.type === Scalar2.Scalar.PLAIN) && merge$1.identify(key.value)) && (ctx == null ? void 0 : ctx.doc.schema.tags.some((tag) => tag.tag === merge$1.tag && tag.default));
13807
+ const isMergeKey = (ctx, key) => (merge$1.identify(key) || identity2.isScalar(key) && (!key.type || key.type === Scalar2.Scalar.PLAIN) && merge$1.identify(key.value)) && ctx?.doc.schema.tags.some((tag) => tag.tag === merge$1.tag && tag.default);
13751
13808
  function addMergeToJSMap(ctx, map2, value) {
13752
13809
  value = ctx && identity2.isAlias(value) ? value.resolve(ctx.doc) : value;
13753
13810
  if (identity2.isSeq(value))
@@ -13827,7 +13884,7 @@ function requireAddPairToJSMap() {
13827
13884
  return "";
13828
13885
  if (typeof jsKey !== "object")
13829
13886
  return String(jsKey);
13830
- if (identity2.isNode(key) && (ctx == null ? void 0 : ctx.doc)) {
13887
+ if (identity2.isNode(key) && ctx?.doc) {
13831
13888
  const strCtx = stringify2.createStringifyContext(ctx.doc, {});
13832
13889
  strCtx.anchors = /* @__PURE__ */ new Set();
13833
13890
  for (const node of ctx.anchors.keys())
@@ -13877,11 +13934,11 @@ function requirePair() {
13877
13934
  return new Pair2(key, value);
13878
13935
  }
13879
13936
  toJSON(_, ctx) {
13880
- const pair = (ctx == null ? void 0 : ctx.mapAsMap) ? /* @__PURE__ */ new Map() : {};
13937
+ const pair = ctx?.mapAsMap ? /* @__PURE__ */ new Map() : {};
13881
13938
  return addPairToJSMap2.addPairToJSMap(ctx, pair, this);
13882
13939
  }
13883
13940
  toString(ctx, onComment, onChompKeep) {
13884
- return (ctx == null ? void 0 : ctx.doc) ? stringifyPair2.stringifyPair(this, ctx, onComment, onChompKeep) : JSON.stringify(this);
13941
+ return ctx?.doc ? stringifyPair2.stringifyPair(this, ctx, onComment, onChompKeep) : JSON.stringify(this);
13885
13942
  }
13886
13943
  };
13887
13944
  Pair.Pair = Pair$1;
@@ -13988,7 +14045,7 @@ ${indent}${line}` : "\n";
13988
14045
  comment = iv.comment;
13989
14046
  if (iv.commentBefore)
13990
14047
  reqNewline = true;
13991
- } else if (item.value == null && (ik == null ? void 0 : ik.comment)) {
14048
+ } else if (item.value == null && ik?.comment) {
13992
14049
  comment = ik.comment;
13993
14050
  }
13994
14051
  }
@@ -14099,16 +14156,15 @@ function requireYAMLMap() {
14099
14156
  * collection will throw. Otherwise, overwrites the previous value.
14100
14157
  */
14101
14158
  add(pair, overwrite) {
14102
- var _a;
14103
14159
  let _pair;
14104
14160
  if (identity2.isPair(pair))
14105
14161
  _pair = pair;
14106
14162
  else if (!pair || typeof pair !== "object" || !("key" in pair)) {
14107
- _pair = new Pair2.Pair(pair, pair == null ? void 0 : pair.value);
14163
+ _pair = new Pair2.Pair(pair, pair?.value);
14108
14164
  } else
14109
14165
  _pair = new Pair2.Pair(pair.key, pair.value);
14110
14166
  const prev = findPair(this.items, _pair.key);
14111
- const sortEntries = (_a = this.schema) == null ? void 0 : _a.sortMapEntries;
14167
+ const sortEntries = this.schema?.sortMapEntries;
14112
14168
  if (prev) {
14113
14169
  if (!overwrite)
14114
14170
  throw new Error(`Key ${_pair.key} already set`);
@@ -14135,7 +14191,7 @@ function requireYAMLMap() {
14135
14191
  }
14136
14192
  get(key, keepScalar) {
14137
14193
  const it = findPair(this.items, key);
14138
- const node = it == null ? void 0 : it.value;
14194
+ const node = it?.value;
14139
14195
  return (!keepScalar && identity2.isScalar(node) ? node.value : node) ?? void 0;
14140
14196
  }
14141
14197
  has(key) {
@@ -14150,8 +14206,8 @@ function requireYAMLMap() {
14150
14206
  * @returns Instance of Type, Map, or Object
14151
14207
  */
14152
14208
  toJSON(_, ctx, Type) {
14153
- const map2 = Type ? new Type() : (ctx == null ? void 0 : ctx.mapAsMap) ? /* @__PURE__ */ new Map() : {};
14154
- if (ctx == null ? void 0 : ctx.onCreate)
14209
+ const map2 = Type ? new Type() : ctx?.mapAsMap ? /* @__PURE__ */ new Map() : {};
14210
+ if (ctx?.onCreate)
14155
14211
  ctx.onCreate(map2);
14156
14212
  for (const item of this.items)
14157
14213
  addPairToJSMap2.addPairToJSMap(ctx, map2, item);
@@ -14274,7 +14330,7 @@ function requireYAMLSeq() {
14274
14330
  }
14275
14331
  toJSON(_, ctx) {
14276
14332
  const seq2 = [];
14277
- if (ctx == null ? void 0 : ctx.onCreate)
14333
+ if (ctx?.onCreate)
14278
14334
  ctx.onCreate(seq2);
14279
14335
  let i = 0;
14280
14336
  for (const item of this.items)
@@ -14785,7 +14841,7 @@ function requireOmap() {
14785
14841
  if (!ctx)
14786
14842
  return super.toJSON(_);
14787
14843
  const map2 = /* @__PURE__ */ new Map();
14788
- if (ctx == null ? void 0 : ctx.onCreate)
14844
+ if (ctx?.onCreate)
14789
14845
  ctx.onCreate(map2);
14790
14846
  for (const pair of this.items) {
14791
14847
  let key, value;
@@ -15166,7 +15222,7 @@ function requireTimestamp() {
15166
15222
  }
15167
15223
  return new Date(date);
15168
15224
  },
15169
- stringify: ({ value }) => (value == null ? void 0 : value.toISOString().replace(/(T00:00:00)?\.000Z$/, "")) ?? ""
15225
+ stringify: ({ value }) => value?.toISOString().replace(/(T00:00:00)?\.000Z$/, "") ?? ""
15170
15226
  };
15171
15227
  timestamp.floatTime = floatTime;
15172
15228
  timestamp.intTime = intTime;
@@ -15349,7 +15405,6 @@ function requireStringifyDocument() {
15349
15405
  var stringify2 = requireStringify();
15350
15406
  var stringifyComment2 = requireStringifyComment();
15351
15407
  function stringifyDocument$1(doc, options2) {
15352
- var _a;
15353
15408
  const lines = [];
15354
15409
  let hasDirectives = options2.directives === true;
15355
15410
  if (options2.directives !== false && doc.directives) {
@@ -15394,7 +15449,7 @@ function requireStringifyDocument() {
15394
15449
  } else {
15395
15450
  lines.push(stringify2.stringify(doc.contents, ctx));
15396
15451
  }
15397
- if ((_a = doc.directives) == null ? void 0 : _a.docEnd) {
15452
+ if (doc.directives?.docEnd) {
15398
15453
  if (doc.comment) {
15399
15454
  const cs = commentString(doc.comment);
15400
15455
  if (cs.includes("\n")) {
@@ -15462,7 +15517,7 @@ function requireDocument() {
15462
15517
  }, options2);
15463
15518
  this.options = opt;
15464
15519
  let { version: version2 } = opt;
15465
- if (options2 == null ? void 0 : options2._directives) {
15520
+ if (options2?._directives) {
15466
15521
  this.directives = options2._directives.atDocument();
15467
15522
  if (this.directives.yaml.explicit)
15468
15523
  version2 = this.directives.yaml.version;
@@ -15832,7 +15887,7 @@ function requireResolveProps() {
15832
15887
  }
15833
15888
  switch (token.type) {
15834
15889
  case "space":
15835
- if (!flow && (indicator !== "doc-start" || (next == null ? void 0 : next.type) !== "flow-collection") && token.source.includes(" ")) {
15890
+ if (!flow && (indicator !== "doc-start" || next?.type !== "flow-collection") && token.source.includes(" ")) {
15836
15891
  tab = token;
15837
15892
  }
15838
15893
  hasSpace = true;
@@ -15914,7 +15969,7 @@ function requireResolveProps() {
15914
15969
  if (reqSpace && next && next.type !== "space" && next.type !== "newline" && next.type !== "comma" && (next.type !== "scalar" || next.source !== "")) {
15915
15970
  onError(next.offset, "MISSING_CHAR", "Tags and anchors must be separated from the next token by white space");
15916
15971
  }
15917
- if (tab && (atNewline && tab.indent <= parentIndent || (next == null ? void 0 : next.type) === "block-map" || (next == null ? void 0 : next.type) === "block-seq"))
15972
+ if (tab && (atNewline && tab.indent <= parentIndent || next?.type === "block-map" || next?.type === "block-seq"))
15918
15973
  onError(tab, "TAB_AS_INDENT", "Tabs are not allowed as indentation");
15919
15974
  return {
15920
15975
  comma,
@@ -15981,7 +16036,7 @@ function requireUtilFlowIndentCheck() {
15981
16036
  hasRequiredUtilFlowIndentCheck = 1;
15982
16037
  var utilContainsNewline2 = requireUtilContainsNewline();
15983
16038
  function flowIndentCheck(indent, fc, onError) {
15984
- if ((fc == null ? void 0 : fc.type) === "flow-collection") {
16039
+ if (fc?.type === "flow-collection") {
15985
16040
  const end = fc.end[0];
15986
16041
  if (end.indent === indent && (end.source === "]" || end.source === "}") && utilContainsNewline2.containsNewline(fc)) {
15987
16042
  const msg = "Flow end indicator should be more indented than parent";
@@ -16020,8 +16075,7 @@ function requireResolveBlockMap() {
16020
16075
  var utilMapIncludes2 = requireUtilMapIncludes();
16021
16076
  const startColMsg = "All mapping items must start at the same column";
16022
16077
  function resolveBlockMap$1({ composeNode: composeNode2, composeEmptyNode }, ctx, bm, onError, tag) {
16023
- var _a;
16024
- const NodeClass = (tag == null ? void 0 : tag.nodeClass) ?? YAMLMap2.YAMLMap;
16078
+ const NodeClass = tag?.nodeClass ?? YAMLMap2.YAMLMap;
16025
16079
  const map2 = new NodeClass(ctx.schema);
16026
16080
  if (ctx.atRoot)
16027
16081
  ctx.atRoot = false;
@@ -16031,7 +16085,7 @@ function requireResolveBlockMap() {
16031
16085
  const { start, key, sep: sep2, value } = collItem;
16032
16086
  const keyProps = resolveProps2.resolveProps(start, {
16033
16087
  indicator: "explicit-key-ind",
16034
- next: key ?? (sep2 == null ? void 0 : sep2[0]),
16088
+ next: key ?? sep2?.[0],
16035
16089
  offset,
16036
16090
  onError,
16037
16091
  parentIndent: bm.indent,
@@ -16058,7 +16112,7 @@ function requireResolveBlockMap() {
16058
16112
  if (keyProps.newlineAfterProp || utilContainsNewline2.containsNewline(key)) {
16059
16113
  onError(key ?? start[start.length - 1], "MULTILINE_IMPLICIT_KEY", "Implicit keys need to be on a single line");
16060
16114
  }
16061
- } else if (((_a = keyProps.found) == null ? void 0 : _a.indent) !== bm.indent) {
16115
+ } else if (keyProps.found?.indent !== bm.indent) {
16062
16116
  onError(offset, "BAD_INDENT", startColMsg);
16063
16117
  }
16064
16118
  ctx.atKey = true;
@@ -16080,7 +16134,7 @@ function requireResolveBlockMap() {
16080
16134
  offset = valueProps.end;
16081
16135
  if (valueProps.found) {
16082
16136
  if (implicitKey) {
16083
- if ((value == null ? void 0 : value.type) === "block-map" && !valueProps.hasNewline)
16137
+ if (value?.type === "block-map" && !valueProps.hasNewline)
16084
16138
  onError(offset, "BLOCK_AS_IMPLICIT_KEY", "Nested mappings are not allowed in compact mappings");
16085
16139
  if (ctx.options.strict && keyProps.start < valueProps.found.offset - 1024)
16086
16140
  onError(keyNode.range, "KEY_OVER_1024_CHARS", "The : indicator must be at most 1024 chars after the start of an implicit block mapping key");
@@ -16125,7 +16179,7 @@ function requireResolveBlockSeq() {
16125
16179
  var resolveProps2 = requireResolveProps();
16126
16180
  var utilFlowIndentCheck2 = requireUtilFlowIndentCheck();
16127
16181
  function resolveBlockSeq$1({ composeNode: composeNode2, composeEmptyNode }, ctx, bs, onError, tag) {
16128
- const NodeClass = (tag == null ? void 0 : tag.nodeClass) ?? YAMLSeq2.YAMLSeq;
16182
+ const NodeClass = tag?.nodeClass ?? YAMLSeq2.YAMLSeq;
16129
16183
  const seq2 = new NodeClass(ctx.schema);
16130
16184
  if (ctx.atRoot)
16131
16185
  ctx.atRoot = false;
@@ -16228,7 +16282,7 @@ function requireResolveFlowCollection() {
16228
16282
  function resolveFlowCollection$1({ composeNode: composeNode2, composeEmptyNode }, ctx, fc, onError, tag) {
16229
16283
  const isMap = fc.start.source === "{";
16230
16284
  const fcName = isMap ? "flow map" : "flow sequence";
16231
- const NodeClass = (tag == null ? void 0 : tag.nodeClass) ?? (isMap ? YAMLMap2.YAMLMap : YAMLSeq2.YAMLSeq);
16285
+ const NodeClass = tag?.nodeClass ?? (isMap ? YAMLMap2.YAMLMap : YAMLSeq2.YAMLSeq);
16232
16286
  const coll = new NodeClass(ctx.schema);
16233
16287
  coll.flow = true;
16234
16288
  const atRoot = ctx.atRoot;
@@ -16243,7 +16297,7 @@ function requireResolveFlowCollection() {
16243
16297
  const props = resolveProps2.resolveProps(start, {
16244
16298
  flow: fcName,
16245
16299
  indicator: "explicit-key-ind",
16246
- next: key ?? (sep2 == null ? void 0 : sep2[0]),
16300
+ next: key ?? sep2?.[0],
16247
16301
  offset,
16248
16302
  onError,
16249
16303
  parentIndent: fc.indent,
@@ -16427,7 +16481,6 @@ function requireComposeCollection() {
16427
16481
  return coll;
16428
16482
  }
16429
16483
  function composeCollection$1(CN, ctx, token, props, onError) {
16430
- var _a;
16431
16484
  const tagToken = props.tag;
16432
16485
  const tagName = !tagToken ? null : ctx.directives.tagName(tagToken.source, (msg) => onError(tagToken, "TAG_RESOLVE_FAILED", msg));
16433
16486
  if (token.type === "block-seq") {
@@ -16458,11 +16511,11 @@ function requireComposeCollection() {
16458
16511
  }
16459
16512
  }
16460
16513
  const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);
16461
- const res = ((_a = tag.resolve) == null ? void 0 : _a.call(tag, coll, (msg) => onError(tagToken, "TAG_RESOLVE_FAILED", msg), ctx.options)) ?? coll;
16514
+ const res = tag.resolve?.(coll, (msg) => onError(tagToken, "TAG_RESOLVE_FAILED", msg), ctx.options) ?? coll;
16462
16515
  const node = identity2.isNode(res) ? res : new Scalar2.Scalar(res);
16463
16516
  node.range = coll.range;
16464
16517
  node.tag = tagName;
16465
- if (tag == null ? void 0 : tag.format)
16518
+ if (tag?.format)
16466
16519
  node.format = tag.format;
16467
16520
  return node;
16468
16521
  }
@@ -16644,7 +16697,7 @@ function requireResolveBlockScalar() {
16644
16697
  const split = source.split(/\n( *)/);
16645
16698
  const first = split[0];
16646
16699
  const m2 = first.match(/^( *)/);
16647
- const line0 = (m2 == null ? void 0 : m2[1]) ? [m2[1], first.slice(m2[1].length)] : ["", first];
16700
+ const line0 = m2?.[1] ? [m2[1], first.slice(m2[1].length)] : ["", first];
16648
16701
  const lines = [line0];
16649
16702
  for (let i = 1; i < split.length; i += 2)
16650
16703
  lines.push([split[i], split[i + 1]]);
@@ -16761,7 +16814,7 @@ function requireResolveFlowScalar() {
16761
16814
  const last = /[ \t]*(.*)/sy;
16762
16815
  last.lastIndex = pos;
16763
16816
  match = last.exec(source);
16764
- return res + sep2 + ((match == null ? void 0 : match[1]) ?? "");
16817
+ return res + sep2 + (match?.[1] ?? "");
16765
16818
  }
16766
16819
  function doubleQuotedValue(source, onError) {
16767
16820
  let res = "";
@@ -16914,7 +16967,6 @@ function requireComposeScalar() {
16914
16967
  return scalar;
16915
16968
  }
16916
16969
  function findScalarTagByName(schema2, value, tagName, tagToken, onError) {
16917
- var _a;
16918
16970
  if (tagName === "!")
16919
16971
  return schema2[identity2.SCALAR];
16920
16972
  const matchWithTest = [];
@@ -16927,7 +16979,7 @@ function requireComposeScalar() {
16927
16979
  }
16928
16980
  }
16929
16981
  for (const tag of matchWithTest)
16930
- if ((_a = tag.test) == null ? void 0 : _a.test(value))
16982
+ if (tag.test?.test(value))
16931
16983
  return tag;
16932
16984
  const kt = schema2.knownTags[tagName];
16933
16985
  if (kt && !kt.collection) {
@@ -16938,15 +16990,9 @@ function requireComposeScalar() {
16938
16990
  return schema2[identity2.SCALAR];
16939
16991
  }
16940
16992
  function findScalarTagByTest({ atKey, directives: directives2, schema: schema2 }, value, token, onError) {
16941
- const tag = schema2.tags.find((tag2) => {
16942
- var _a;
16943
- return (tag2.default === true || atKey && tag2.default === "key") && ((_a = tag2.test) == null ? void 0 : _a.test(value));
16944
- }) || schema2[identity2.SCALAR];
16993
+ const tag = schema2.tags.find((tag2) => (tag2.default === true || atKey && tag2.default === "key") && tag2.test?.test(value)) || schema2[identity2.SCALAR];
16945
16994
  if (schema2.compat) {
16946
- const compat = schema2.compat.find((tag2) => {
16947
- var _a;
16948
- return tag2.default && ((_a = tag2.test) == null ? void 0 : _a.test(value));
16949
- }) ?? schema2[identity2.SCALAR];
16995
+ const compat = schema2.compat.find((tag2) => tag2.default && tag2.test?.test(value)) ?? schema2[identity2.SCALAR];
16950
16996
  if (tag.tag !== compat.tag) {
16951
16997
  const ts = directives2.tagString(tag.tag);
16952
16998
  const cs = directives2.tagString(compat.tag);
@@ -16977,7 +17023,7 @@ function requireUtilEmptyScalarPosition() {
16977
17023
  continue;
16978
17024
  }
16979
17025
  st = before[++i];
16980
- while ((st == null ? void 0 : st.type) === "space") {
17026
+ while (st?.type === "space") {
16981
17027
  offset += st.source.length;
16982
17028
  st = before[++i];
16983
17029
  }
@@ -17109,7 +17155,7 @@ function requireComposeDoc() {
17109
17155
  };
17110
17156
  const props = resolveProps2.resolveProps(start, {
17111
17157
  indicator: "doc-start",
17112
- next: value ?? (end == null ? void 0 : end[0]),
17158
+ next: value ?? end?.[0],
17113
17159
  offset,
17114
17160
  onError,
17115
17161
  parentIndent: 0,
@@ -17151,7 +17197,6 @@ function requireComposer() {
17151
17197
  return [offset, offset + (typeof source === "string" ? source.length : 1)];
17152
17198
  }
17153
17199
  function parsePrelude(prelude) {
17154
- var _a;
17155
17200
  let comment = "";
17156
17201
  let atComment = false;
17157
17202
  let afterEmptyLine = false;
@@ -17164,7 +17209,7 @@ function requireComposer() {
17164
17209
  afterEmptyLine = false;
17165
17210
  break;
17166
17211
  case "%":
17167
- if (((_a = prelude[i + 1]) == null ? void 0 : _a[0]) !== "#")
17212
+ if (prelude[i + 1]?.[0] !== "#")
17168
17213
  i += 1;
17169
17214
  atComment = false;
17170
17215
  break;
@@ -17603,7 +17648,7 @@ function requireCstVisit() {
17603
17648
  visit2.itemAtPath = (cst2, path2) => {
17604
17649
  let item = cst2;
17605
17650
  for (const [field, index] of path2) {
17606
- const tok = item == null ? void 0 : item[field];
17651
+ const tok = item?.[field];
17607
17652
  if (tok && "items" in tok) {
17608
17653
  item = tok.items[index];
17609
17654
  } else
@@ -17614,7 +17659,7 @@ function requireCstVisit() {
17614
17659
  visit2.parentCollection = (cst2, path2) => {
17615
17660
  const parent = visit2.itemAtPath(cst2, path2.slice(0, -1));
17616
17661
  const field = path2[path2.length - 1][0];
17617
- const coll = parent == null ? void 0 : parent[field];
17662
+ const coll = parent?.[field];
17618
17663
  if (coll && "items" in coll)
17619
17664
  return coll;
17620
17665
  throw new Error("Parent collection not found");
@@ -18385,7 +18430,7 @@ function requireParser() {
18385
18430
  return -1;
18386
18431
  }
18387
18432
  function isFlowToken(token) {
18388
- switch (token == null ? void 0 : token.type) {
18433
+ switch (token?.type) {
18389
18434
  case "alias":
18390
18435
  case "scalar":
18391
18436
  case "single-quoted-scalar":
@@ -18412,7 +18457,6 @@ function requireParser() {
18412
18457
  }
18413
18458
  }
18414
18459
  function getFirstKeyStartProps(prev) {
18415
- var _a;
18416
18460
  if (prev.length === 0)
18417
18461
  return [];
18418
18462
  let i = prev.length;
@@ -18426,7 +18470,7 @@ function requireParser() {
18426
18470
  break loop;
18427
18471
  }
18428
18472
  }
18429
- while (((_a = prev[++i]) == null ? void 0 : _a.type) === "space") {
18473
+ while (prev[++i]?.type === "space") {
18430
18474
  }
18431
18475
  return prev.splice(i, prev.length);
18432
18476
  }
@@ -18770,7 +18814,6 @@ function requireParser() {
18770
18814
  }
18771
18815
  }
18772
18816
  *blockMap(map2) {
18773
- var _a;
18774
18817
  const it = map2.items[map2.items.length - 1];
18775
18818
  switch (this.type) {
18776
18819
  case "newline":
@@ -18778,8 +18821,8 @@ function requireParser() {
18778
18821
  if (it.value) {
18779
18822
  const end = "end" in it.value ? it.value.end : void 0;
18780
18823
  const last = Array.isArray(end) ? end[end.length - 1] : void 0;
18781
- if ((last == null ? void 0 : last.type) === "comment")
18782
- end == null ? void 0 : end.push(this.sourceToken);
18824
+ if (last?.type === "comment")
18825
+ end?.push(this.sourceToken);
18783
18826
  else
18784
18827
  map2.items.push({ start: [this.sourceToken] });
18785
18828
  } else if (it.sep) {
@@ -18797,7 +18840,7 @@ function requireParser() {
18797
18840
  } else {
18798
18841
  if (this.atIndentedComment(it.start, map2.indent)) {
18799
18842
  const prev = map2.items[map2.items.length - 2];
18800
- const end = (_a = prev == null ? void 0 : prev.value) == null ? void 0 : _a.end;
18843
+ const end = prev?.value?.end;
18801
18844
  if (Array.isArray(end)) {
18802
18845
  Array.prototype.push.apply(end, it.start);
18803
18846
  end.push(this.sourceToken);
@@ -18965,15 +19008,14 @@ function requireParser() {
18965
19008
  yield* this.step();
18966
19009
  }
18967
19010
  *blockSequence(seq2) {
18968
- var _a;
18969
19011
  const it = seq2.items[seq2.items.length - 1];
18970
19012
  switch (this.type) {
18971
19013
  case "newline":
18972
19014
  if (it.value) {
18973
19015
  const end = "end" in it.value ? it.value.end : void 0;
18974
19016
  const last = Array.isArray(end) ? end[end.length - 1] : void 0;
18975
- if ((last == null ? void 0 : last.type) === "comment")
18976
- end == null ? void 0 : end.push(this.sourceToken);
19017
+ if (last?.type === "comment")
19018
+ end?.push(this.sourceToken);
18977
19019
  else
18978
19020
  seq2.items.push({ start: [this.sourceToken] });
18979
19021
  } else
@@ -18986,7 +19028,7 @@ function requireParser() {
18986
19028
  else {
18987
19029
  if (this.atIndentedComment(it.start, seq2.indent)) {
18988
19030
  const prev = seq2.items[seq2.items.length - 2];
18989
- const end = (_a = prev == null ? void 0 : prev.value) == null ? void 0 : _a.end;
19031
+ const end = prev?.value?.end;
18990
19032
  if (Array.isArray(end)) {
18991
19033
  Array.prototype.push.apply(end, it.start);
18992
19034
  end.push(this.sourceToken);
@@ -19246,7 +19288,7 @@ function requirePublicApi() {
19246
19288
  }
19247
19289
  function parseAllDocuments(source, options2 = {}) {
19248
19290
  const { lineCounter: lineCounter3, prettyErrors } = parseOptions(options2);
19249
- const parser$1 = new parser2.Parser(lineCounter3 == null ? void 0 : lineCounter3.addNewLine);
19291
+ const parser$1 = new parser2.Parser(lineCounter3?.addNewLine);
19250
19292
  const composer$1 = new composer2.Composer(options2);
19251
19293
  const docs = Array.from(composer$1.compose(parser$1.parse(source)));
19252
19294
  if (prettyErrors && lineCounter3)
@@ -19260,7 +19302,7 @@ function requirePublicApi() {
19260
19302
  }
19261
19303
  function parseDocument(source, options2 = {}) {
19262
19304
  const { lineCounter: lineCounter3, prettyErrors } = parseOptions(options2);
19263
- const parser$1 = new parser2.Parser(lineCounter3 == null ? void 0 : lineCounter3.addNewLine);
19305
+ const parser$1 = new parser2.Parser(lineCounter3?.addNewLine);
19264
19306
  const composer$1 = new composer2.Composer(options2);
19265
19307
  let doc = null;
19266
19308
  for (const _doc of composer$1.compose(parser$1.parse(source), true, source.length)) {
@@ -19500,16 +19542,16 @@ const sha1 = (filepath) => {
19500
19542
  });
19501
19543
  };
19502
19544
  class Batcher {
19545
+ items = [];
19546
+ batchSize;
19547
+ debounceTimeMs;
19548
+ onBatch;
19549
+ debounceTimer;
19503
19550
  constructor({
19504
19551
  batchSize,
19505
19552
  debounceTimeMs,
19506
19553
  onBatch
19507
19554
  }) {
19508
- __publicField(this, "items", []);
19509
- __publicField(this, "batchSize");
19510
- __publicField(this, "debounceTimeMs");
19511
- __publicField(this, "onBatch");
19512
- __publicField(this, "debounceTimer");
19513
19555
  this.batchSize = batchSize;
19514
19556
  this.debounceTimeMs = debounceTimeMs;
19515
19557
  this.onBatch = onBatch;
@@ -19591,11 +19633,10 @@ const startWatch = async (paths, options2, {
19591
19633
  }
19592
19634
  });
19593
19635
  const onFile = async (path2, stats) => {
19594
- var _a;
19595
- if (stats == null ? void 0 : stats.isDirectory()) {
19636
+ if (stats?.isDirectory()) {
19596
19637
  return;
19597
19638
  }
19598
- const ext = "." + ((_a = path2.split(".").pop()) == null ? void 0 : _a.toLowerCase());
19639
+ const ext = "." + path2.split(".").pop()?.toLowerCase();
19599
19640
  if (!ext || !extensions.has(ext)) {
19600
19641
  return;
19601
19642
  }
@@ -19661,8 +19702,8 @@ const checkForDuplicates = async (files, { concurrency, skipHash, progress }) =>
19661
19702
  } else {
19662
19703
  console.log(`Received ${files.length} files, hashing...`);
19663
19704
  }
19664
- const hashProgressBar = multiBar2 == null ? void 0 : multiBar2.create(files.length, 0, { message: "Hashing files " });
19665
- const checkProgressBar = multiBar2 == null ? void 0 : multiBar2.create(files.length, 0, { message: "Checking for duplicates" });
19705
+ const hashProgressBar = multiBar2?.create(files.length, 0, { message: "Hashing files " });
19706
+ const checkProgressBar = multiBar2?.create(files.length, 0, { message: "Checking for duplicates" });
19666
19707
  const newFiles = [];
19667
19708
  const duplicates = [];
19668
19709
  const checkBulkUploadQueue = new Queue(
@@ -19676,7 +19717,7 @@ const checkForDuplicates = async (files, { concurrency, skipHash, progress }) =>
19676
19717
  duplicates.push({ id: assetId, filepath });
19677
19718
  }
19678
19719
  }
19679
- checkProgressBar == null ? void 0 : checkProgressBar.increment(assets.length);
19720
+ checkProgressBar?.increment(assets.length);
19680
19721
  },
19681
19722
  { concurrency, retry: 3 }
19682
19723
  );
@@ -19692,7 +19733,7 @@ const checkForDuplicates = async (files, { concurrency, skipHash, progress }) =>
19692
19733
  checkBulkUploadRequests = [];
19693
19734
  void checkBulkUploadQueue.push(batch);
19694
19735
  }
19695
- hashProgressBar == null ? void 0 : hashProgressBar.increment();
19736
+ hashProgressBar?.increment();
19696
19737
  return results;
19697
19738
  },
19698
19739
  { concurrency, retry: 3 }
@@ -19705,7 +19746,7 @@ const checkForDuplicates = async (files, { concurrency, skipHash, progress }) =>
19705
19746
  void checkBulkUploadQueue.push(checkBulkUploadRequests);
19706
19747
  }
19707
19748
  await checkBulkUploadQueue.drained();
19708
- multiBar2 == null ? void 0 : multiBar2.stop();
19749
+ multiBar2?.stop();
19709
19750
  console.log(`Found ${newFiles.length} new files and ${duplicates.length} duplicate${s(duplicates.length)}`);
19710
19751
  const failedTasks = queue2.tasks.filter((task) => task.status === "failed");
19711
19752
  if (failedTasks.length > 0) {
@@ -19743,8 +19784,8 @@ const uploadFiles = async (files, { dryRun, concurrency, progress }) => {
19743
19784
  } else {
19744
19785
  console.log(`Uploading ${files.length} asset${s(files.length)} (${byteSize(totalSize)})`);
19745
19786
  }
19746
- uploadProgress == null ? void 0 : uploadProgress.start(totalSize, 0);
19747
- uploadProgress == null ? void 0 : uploadProgress.update({ value_formatted: 0, total_formatted: byteSize(totalSize) });
19787
+ uploadProgress?.start(totalSize, 0);
19788
+ uploadProgress?.update({ value_formatted: 0, total_formatted: byteSize(totalSize) });
19748
19789
  let duplicateCount = 0;
19749
19790
  let duplicateSize = 0;
19750
19791
  let successCount = 0;
@@ -19765,7 +19806,7 @@ const uploadFiles = async (files, { dryRun, concurrency, progress }) => {
19765
19806
  successCount++;
19766
19807
  successSize += stats.size ?? 0;
19767
19808
  }
19768
- uploadProgress == null ? void 0 : uploadProgress.update(successSize, { value_formatted: byteSize(successSize + duplicateSize) });
19809
+ uploadProgress?.update(successSize, { value_formatted: byteSize(successSize + duplicateSize) });
19769
19810
  return response;
19770
19811
  },
19771
19812
  { concurrency, retry: 3 }
@@ -19774,7 +19815,7 @@ const uploadFiles = async (files, { dryRun, concurrency, progress }) => {
19774
19815
  void queue2.push(item);
19775
19816
  }
19776
19817
  await queue2.drained();
19777
- uploadProgress == null ? void 0 : uploadProgress.stop();
19818
+ uploadProgress?.stop();
19778
19819
  console.log(`Successfully uploaded ${successCount} new asset${s(successCount)} (${byteSize(successSize)})`);
19779
19820
  if (duplicateCount > 0) {
19780
19821
  console.log(`Skipped ${duplicateCount} duplicate asset${s(duplicateCount)} (${byteSize(duplicateSize)})`);
@@ -19850,7 +19891,6 @@ const deleteFiles = async (files, options2) => {
19850
19891
  }
19851
19892
  };
19852
19893
  const updateAlbums = async (assets, options2) => {
19853
- var _a;
19854
19894
  if (!options2.album && !options2.albumName) {
19855
19895
  return;
19856
19896
  }
@@ -19900,7 +19940,7 @@ const updateAlbums = async (assets, options2) => {
19900
19940
  if (!albumToAssets.has(albumId)) {
19901
19941
  albumToAssets.set(albumId, []);
19902
19942
  }
19903
- (_a = albumToAssets.get(albumId)) == null ? void 0 : _a.push(asset.id);
19943
+ albumToAssets.get(albumId)?.push(asset.id);
19904
19944
  }
19905
19945
  }
19906
19946
  const albumUpdateProgress = new cliProgressExports.SingleBar(
@@ -19971,7 +20011,7 @@ const serverInfo = async (options2) => {
19971
20011
  console.log(` Videos: ${stats.videos}`);
19972
20012
  console.log(` Total: ${stats.total}`);
19973
20013
  };
19974
- const version = "2.2.72";
20014
+ const version = "2.2.74";
19975
20015
  const defaultConfigDirectory = path$1.join(os.homedir(), ".config/immich/");
19976
20016
  const program = new Command().name("immich").version(version).description("Command line interface for Immich").addOption(
19977
20017
  new Option("-d, --config-directory <directory>", "Configuration directory where auth.yml will be stored").env("IMMICH_CONFIG_DIR").default(defaultConfigDirectory)
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@immich/cli",
3
- "version": "2.2.72",
3
+ "version": "2.2.74",
4
4
  "description": "Command Line Interface (CLI) for Immich",
5
5
  "type": "module",
6
6
  "exports": "./dist/index.js",
7
7
  "bin": {
8
- "immich": "dist/index.js"
8
+ "immich": "./bin/immich"
9
9
  },
10
10
  "license": "GNU Affero General Public License version 3",
11
11
  "keywords": [
@@ -21,13 +21,13 @@
21
21
  "@types/lodash-es": "^4.17.12",
22
22
  "@types/micromatch": "^4.0.9",
23
23
  "@types/mock-fs": "^4.13.1",
24
- "@types/node": "^22.15.31",
24
+ "@types/node": "^22.16.5",
25
25
  "@vitest/coverage-v8": "^3.0.0",
26
26
  "byte-size": "^9.0.0",
27
27
  "cli-progress": "^3.12.0",
28
28
  "commander": "^12.0.0",
29
29
  "eslint": "^9.14.0",
30
- "eslint-config-prettier": "^10.0.0",
30
+ "eslint-config-prettier": "^10.1.8",
31
31
  "eslint-plugin-prettier": "^5.1.3",
32
32
  "eslint-plugin-unicorn": "^59.0.0",
33
33
  "globals": "^16.0.0",
@@ -36,7 +36,7 @@
36
36
  "prettier-plugin-organize-imports": "^4.0.0",
37
37
  "typescript": "^5.3.3",
38
38
  "typescript-eslint": "^8.28.0",
39
- "vite": "^6.0.0",
39
+ "vite": "^7.0.0",
40
40
  "vite-tsconfig-paths": "^5.0.0",
41
41
  "vitest": "^3.0.0",
42
42
  "vitest-fetch-mock": "^0.4.0",
@@ -69,6 +69,6 @@
69
69
  "micromatch": "^4.0.8"
70
70
  },
71
71
  "volta": {
72
- "node": "22.16.0"
72
+ "node": "22.17.1"
73
73
  }
74
74
  }