@immich/cli 2.2.103 → 2.2.104

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 (3) hide show
  1. package/.nvmrc +1 -1
  2. package/dist/index.js +173 -134
  3. package/package.json +5 -5
package/.nvmrc CHANGED
@@ -1 +1 @@
1
- 24.11.0
1
+ 24.11.1
package/dist/index.js CHANGED
@@ -3077,9 +3077,9 @@ function t(e) {
3077
3077
  )
3078
3078
  ) : new Headers(e);
3079
3079
  }
3080
- function J(o$1 = {}) {
3081
- async function e(r, n) {
3082
- const t2 = await p(r, n);
3080
+ function D(a2 = {}) {
3081
+ async function r(e, n) {
3082
+ const t2 = await p(e, n);
3083
3083
  let s2;
3084
3084
  try {
3085
3085
  s2 = await t2.text();
@@ -3092,8 +3092,8 @@ function J(o$1 = {}) {
3092
3092
  data: s2
3093
3093
  };
3094
3094
  }
3095
- async function i(r, n = {}) {
3096
- const { status: t2, headers: s2, contentType: u, data: c } = await e(r, {
3095
+ async function i(e, n = {}) {
3096
+ const { status: t2, headers: s2, contentType: u, data: c } = await r(e, {
3097
3097
  ...n,
3098
3098
  headers: o(
3099
3099
  {
@@ -3108,8 +3108,8 @@ function J(o$1 = {}) {
3108
3108
  data: c ? JSON.parse(c) : null
3109
3109
  } : { status: t2, headers: s2, data: c };
3110
3110
  }
3111
- async function f2(r, n = {}) {
3112
- const t2 = await p(r, n);
3111
+ async function f2(e, n = {}) {
3112
+ const t2 = await p(e, n);
3113
3113
  let s2;
3114
3114
  try {
3115
3115
  s2 = await t2.blob();
@@ -3117,28 +3117,28 @@ function J(o$1 = {}) {
3117
3117
  }
3118
3118
  return { status: t2.status, headers: t2.headers, data: s2 };
3119
3119
  }
3120
- async function p(r, n = {}) {
3120
+ async function p(e, n = {}) {
3121
3121
  const {
3122
3122
  baseUrl: t2,
3123
3123
  fetch: s2,
3124
3124
  ...u
3125
3125
  } = {
3126
- ...o$1,
3126
+ ...a2,
3127
3127
  ...n,
3128
- headers: o(o$1.headers, n.headers)
3129
- }, c = j$1(t2, r);
3128
+ headers: o(a2.headers, n.headers)
3129
+ }, c = j$1(t2, e);
3130
3130
  return await (s2 || fetch)(c, u);
3131
3131
  }
3132
3132
  return {
3133
3133
  ok: y,
3134
- fetchText: e,
3134
+ fetchText: r,
3135
3135
  fetchJson: i,
3136
3136
  fetchBlob: f2,
3137
3137
  mergeHeaders: o,
3138
- json({ body: r, headers: n, ...t2 }) {
3138
+ json({ body: e, headers: n, ...t2 }) {
3139
3139
  return {
3140
3140
  ...t2,
3141
- ...r != null && { body: JSON.stringify(r) },
3141
+ ...e != null && { body: JSON.stringify(e) },
3142
3142
  headers: o(
3143
3143
  {
3144
3144
  "Content-Type": "application/json"
@@ -3147,10 +3147,10 @@ function J(o$1 = {}) {
3147
3147
  )
3148
3148
  };
3149
3149
  },
3150
- form({ body: r, headers: n, ...t2 }) {
3150
+ form({ body: e, headers: n, ...t2 }) {
3151
3151
  return {
3152
3152
  ...t2,
3153
- ...r != null && { body: O(r) },
3153
+ ...e != null && { body: O(e) },
3154
3154
  headers: o(
3155
3155
  {
3156
3156
  "Content-Type": "application/x-www-form-urlencoded"
@@ -3159,17 +3159,17 @@ function J(o$1 = {}) {
3159
3159
  )
3160
3160
  };
3161
3161
  },
3162
- multipart({ body: r, headers: n, ...t$1 }) {
3163
- if (r == null)
3164
- return { ...t$1, body: r, headers: t(n) };
3165
- const s2 = new (o$1.formDataConstructor || t$1.formDataConstructor || FormData)(), u = (c, a2) => {
3166
- typeof a2 == "string" || a2 instanceof Blob ? s2.append(c, a2) : typeof a2 == "number" || typeof a2 == "boolean" ? s2.append(c, String(a2)) : s2.append(
3162
+ multipart({ body: e, headers: n, ...t$1 }) {
3163
+ if (e == null)
3164
+ return { ...t$1, body: e, headers: t(n) };
3165
+ const s2 = new (t$1.FormData || t$1.formDataConstructor || a2.FormData || a2.formDataConstructor || FormData)(), u = (c, o2) => {
3166
+ typeof o2 == "string" || o2 instanceof Blob ? s2.append(c, o2) : typeof o2 == "number" || typeof o2 == "boolean" ? s2.append(c, String(o2)) : s2.append(
3167
3167
  c,
3168
- new Blob([JSON.stringify(a2)], { type: "application/json" })
3168
+ new Blob([JSON.stringify(o2)], { type: "application/json" })
3169
3169
  );
3170
3170
  };
3171
- return Object.entries(r).forEach(([c, a2]) => {
3172
- Array.isArray(a2) ? a2.forEach((m2) => u(c, m2)) : u(c, a2);
3171
+ return Object.entries(e).forEach(([c, o2]) => {
3172
+ Array.isArray(o2) ? o2.forEach((m2) => u(c, m2)) : u(c, o2);
3173
3173
  }), {
3174
3174
  ...t$1,
3175
3175
  body: s2,
@@ -3179,25 +3179,24 @@ function J(o$1 = {}) {
3179
3179
  };
3180
3180
  }
3181
3181
  const j = [200, 201, 202, 204];
3182
- async function y(o2) {
3183
- const e = await o2;
3184
- if (j.some((i) => i == e.status))
3185
- return e.data;
3186
- throw new l(e.status, e.data, e.headers);
3182
+ async function y(a2) {
3183
+ const r = await a2;
3184
+ if (j.some((i) => i == r.status)) return r.data;
3185
+ throw new l(r.status, r.data, r.headers);
3187
3186
  }
3188
3187
  class l extends Error {
3189
3188
  status;
3190
3189
  data;
3191
3190
  headers;
3192
- constructor(e, i, f2) {
3193
- super(`Error: ${e}`), this.status = e, this.data = i, this.headers = f2;
3191
+ constructor(r, i, f2) {
3192
+ super(`Error: ${r}`), this.status = r, this.data = i, this.headers = f2;
3194
3193
  }
3195
3194
  }
3196
3195
  const defaults = {
3197
3196
  headers: {},
3198
3197
  baseUrl: "/api"
3199
3198
  };
3200
- const oazapfts = J(defaults);
3199
+ const oazapfts = D(defaults);
3201
3200
  function getAllAlbums({ assetId, shared }, opts) {
3202
3201
  return oazapfts.ok(oazapfts.fetchJson(`/albums${q(m({
3203
3202
  assetId,
@@ -3479,6 +3478,12 @@ var Permission;
3479
3478
  Permission2["UserProfileImageRead"] = "userProfileImage.read";
3480
3479
  Permission2["UserProfileImageUpdate"] = "userProfileImage.update";
3481
3480
  Permission2["UserProfileImageDelete"] = "userProfileImage.delete";
3481
+ Permission2["QueueRead"] = "queue.read";
3482
+ Permission2["QueueUpdate"] = "queue.update";
3483
+ Permission2["QueueJobCreate"] = "queueJob.create";
3484
+ Permission2["QueueJobRead"] = "queueJob.read";
3485
+ Permission2["QueueJobUpdate"] = "queueJob.update";
3486
+ Permission2["QueueJobDelete"] = "queueJob.delete";
3482
3487
  Permission2["WorkflowCreate"] = "workflow.create";
3483
3488
  Permission2["WorkflowRead"] = "workflow.read";
3484
3489
  Permission2["WorkflowUpdate"] = "workflow.update";
@@ -3581,6 +3586,73 @@ var PluginContext;
3581
3586
  PluginContext2["Album"] = "album";
3582
3587
  PluginContext2["Person"] = "person";
3583
3588
  })(PluginContext || (PluginContext = {}));
3589
+ var QueueJobStatus;
3590
+ (function(QueueJobStatus2) {
3591
+ QueueJobStatus2["Active"] = "active";
3592
+ QueueJobStatus2["Failed"] = "failed";
3593
+ QueueJobStatus2["Completed"] = "completed";
3594
+ QueueJobStatus2["Delayed"] = "delayed";
3595
+ QueueJobStatus2["Waiting"] = "waiting";
3596
+ QueueJobStatus2["Paused"] = "paused";
3597
+ })(QueueJobStatus || (QueueJobStatus = {}));
3598
+ var JobName;
3599
+ (function(JobName2) {
3600
+ JobName2["AssetDelete"] = "AssetDelete";
3601
+ JobName2["AssetDeleteCheck"] = "AssetDeleteCheck";
3602
+ JobName2["AssetDetectFacesQueueAll"] = "AssetDetectFacesQueueAll";
3603
+ JobName2["AssetDetectFaces"] = "AssetDetectFaces";
3604
+ JobName2["AssetDetectDuplicatesQueueAll"] = "AssetDetectDuplicatesQueueAll";
3605
+ JobName2["AssetDetectDuplicates"] = "AssetDetectDuplicates";
3606
+ JobName2["AssetEncodeVideoQueueAll"] = "AssetEncodeVideoQueueAll";
3607
+ JobName2["AssetEncodeVideo"] = "AssetEncodeVideo";
3608
+ JobName2["AssetEmptyTrash"] = "AssetEmptyTrash";
3609
+ JobName2["AssetExtractMetadataQueueAll"] = "AssetExtractMetadataQueueAll";
3610
+ JobName2["AssetExtractMetadata"] = "AssetExtractMetadata";
3611
+ JobName2["AssetFileMigration"] = "AssetFileMigration";
3612
+ JobName2["AssetGenerateThumbnailsQueueAll"] = "AssetGenerateThumbnailsQueueAll";
3613
+ JobName2["AssetGenerateThumbnails"] = "AssetGenerateThumbnails";
3614
+ JobName2["AuditLogCleanup"] = "AuditLogCleanup";
3615
+ JobName2["AuditTableCleanup"] = "AuditTableCleanup";
3616
+ JobName2["DatabaseBackup"] = "DatabaseBackup";
3617
+ JobName2["FacialRecognitionQueueAll"] = "FacialRecognitionQueueAll";
3618
+ JobName2["FacialRecognition"] = "FacialRecognition";
3619
+ JobName2["FileDelete"] = "FileDelete";
3620
+ JobName2["FileMigrationQueueAll"] = "FileMigrationQueueAll";
3621
+ JobName2["LibraryDeleteCheck"] = "LibraryDeleteCheck";
3622
+ JobName2["LibraryDelete"] = "LibraryDelete";
3623
+ JobName2["LibraryRemoveAsset"] = "LibraryRemoveAsset";
3624
+ JobName2["LibraryScanAssetsQueueAll"] = "LibraryScanAssetsQueueAll";
3625
+ JobName2["LibrarySyncAssets"] = "LibrarySyncAssets";
3626
+ JobName2["LibrarySyncFilesQueueAll"] = "LibrarySyncFilesQueueAll";
3627
+ JobName2["LibrarySyncFiles"] = "LibrarySyncFiles";
3628
+ JobName2["LibraryScanQueueAll"] = "LibraryScanQueueAll";
3629
+ JobName2["MemoryCleanup"] = "MemoryCleanup";
3630
+ JobName2["MemoryGenerate"] = "MemoryGenerate";
3631
+ JobName2["NotificationsCleanup"] = "NotificationsCleanup";
3632
+ JobName2["NotifyUserSignup"] = "NotifyUserSignup";
3633
+ JobName2["NotifyAlbumInvite"] = "NotifyAlbumInvite";
3634
+ JobName2["NotifyAlbumUpdate"] = "NotifyAlbumUpdate";
3635
+ JobName2["UserDelete"] = "UserDelete";
3636
+ JobName2["UserDeleteCheck"] = "UserDeleteCheck";
3637
+ JobName2["UserSyncUsage"] = "UserSyncUsage";
3638
+ JobName2["PersonCleanup"] = "PersonCleanup";
3639
+ JobName2["PersonFileMigration"] = "PersonFileMigration";
3640
+ JobName2["PersonGenerateThumbnail"] = "PersonGenerateThumbnail";
3641
+ JobName2["SessionCleanup"] = "SessionCleanup";
3642
+ JobName2["SendMail"] = "SendMail";
3643
+ JobName2["SidecarQueueAll"] = "SidecarQueueAll";
3644
+ JobName2["SidecarCheck"] = "SidecarCheck";
3645
+ JobName2["SidecarWrite"] = "SidecarWrite";
3646
+ JobName2["SmartSearchQueueAll"] = "SmartSearchQueueAll";
3647
+ JobName2["SmartSearch"] = "SmartSearch";
3648
+ JobName2["StorageTemplateMigration"] = "StorageTemplateMigration";
3649
+ JobName2["StorageTemplateMigrationSingle"] = "StorageTemplateMigrationSingle";
3650
+ JobName2["TagCleanup"] = "TagCleanup";
3651
+ JobName2["VersionCheck"] = "VersionCheck";
3652
+ JobName2["OcrQueueAll"] = "OcrQueueAll";
3653
+ JobName2["Ocr"] = "Ocr";
3654
+ JobName2["WorkflowRun"] = "WorkflowRun";
3655
+ })(JobName || (JobName = {}));
3584
3656
  var SearchSuggestionType;
3585
3657
  (function(SearchSuggestionType2) {
3586
3658
  SearchSuggestionType2["Country"] = "country";
@@ -4843,7 +4915,6 @@ class NodeFsHandler {
4843
4915
  }
4844
4916
  }
4845
4917
  }
4846
- /*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */
4847
4918
  const SLASH = "/";
4848
4919
  const SLASH_SLASH = "//";
4849
4920
  const ONE_DOT = ".";
@@ -6580,8 +6651,8 @@ var hasRequiredUtils$3;
6580
6651
  function requireUtils$3() {
6581
6652
  if (hasRequiredUtils$3) return utils$3;
6582
6653
  hasRequiredUtils$3 = 1;
6583
- (function(exports) {
6584
- exports.isInteger = (num) => {
6654
+ (function(exports$1) {
6655
+ exports$1.isInteger = (num) => {
6585
6656
  if (typeof num === "number") {
6586
6657
  return Number.isInteger(num);
6587
6658
  }
@@ -6590,13 +6661,13 @@ function requireUtils$3() {
6590
6661
  }
6591
6662
  return false;
6592
6663
  };
6593
- exports.find = (node, type2) => node.nodes.find((node2) => node2.type === type2);
6594
- exports.exceedsLimit = (min, max, step = 1, limit) => {
6664
+ exports$1.find = (node, type2) => node.nodes.find((node2) => node2.type === type2);
6665
+ exports$1.exceedsLimit = (min, max, step = 1, limit) => {
6595
6666
  if (limit === false) return false;
6596
- if (!exports.isInteger(min) || !exports.isInteger(max)) return false;
6667
+ if (!exports$1.isInteger(min) || !exports$1.isInteger(max)) return false;
6597
6668
  return (Number(max) - Number(min)) / Number(step) >= limit;
6598
6669
  };
6599
- exports.escapeNode = (block, n = 0, type2) => {
6670
+ exports$1.escapeNode = (block, n = 0, type2) => {
6600
6671
  const node = block.nodes[n];
6601
6672
  if (!node) return;
6602
6673
  if (type2 && node.type === type2 || node.type === "open" || node.type === "close") {
@@ -6606,7 +6677,7 @@ function requireUtils$3() {
6606
6677
  }
6607
6678
  }
6608
6679
  };
6609
- exports.encloseBrace = (node) => {
6680
+ exports$1.encloseBrace = (node) => {
6610
6681
  if (node.type !== "brace") return false;
6611
6682
  if (node.commas >> 0 + node.ranges >> 0 === 0) {
6612
6683
  node.invalid = true;
@@ -6614,7 +6685,7 @@ function requireUtils$3() {
6614
6685
  }
6615
6686
  return false;
6616
6687
  };
6617
- exports.isInvalidBrace = (block) => {
6688
+ exports$1.isInvalidBrace = (block) => {
6618
6689
  if (block.type !== "brace") return false;
6619
6690
  if (block.invalid === true || block.dollar) return true;
6620
6691
  if (block.commas >> 0 + block.ranges >> 0 === 0) {
@@ -6627,18 +6698,18 @@ function requireUtils$3() {
6627
6698
  }
6628
6699
  return false;
6629
6700
  };
6630
- exports.isOpenOrClose = (node) => {
6701
+ exports$1.isOpenOrClose = (node) => {
6631
6702
  if (node.type === "open" || node.type === "close") {
6632
6703
  return true;
6633
6704
  }
6634
6705
  return node.open === true || node.close === true;
6635
6706
  };
6636
- exports.reduce = (nodes) => nodes.reduce((acc, node) => {
6707
+ exports$1.reduce = (nodes) => nodes.reduce((acc, node) => {
6637
6708
  if (node.type === "text") acc.push(node.value);
6638
6709
  if (node.type === "range") node.type = "text";
6639
6710
  return acc;
6640
6711
  }, []);
6641
- exports.flatten = (...args) => {
6712
+ exports$1.flatten = (...args) => {
6642
6713
  const result = [];
6643
6714
  const flat = (arr) => {
6644
6715
  for (let i = 0; i < arr.length; i++) {
@@ -6690,12 +6761,6 @@ function requireStringify$1() {
6690
6761
  };
6691
6762
  return stringify$1;
6692
6763
  }
6693
- /*!
6694
- * is-number <https://github.com/jonschlinkert/is-number>
6695
- *
6696
- * Copyright (c) 2014-present, Jon Schlinkert.
6697
- * Released under the MIT License.
6698
- */
6699
6764
  var isNumber;
6700
6765
  var hasRequiredIsNumber;
6701
6766
  function requireIsNumber() {
@@ -6712,12 +6777,6 @@ function requireIsNumber() {
6712
6777
  };
6713
6778
  return isNumber;
6714
6779
  }
6715
- /*!
6716
- * to-regex-range <https://github.com/micromatch/to-regex-range>
6717
- *
6718
- * Copyright (c) 2015-present, Jon Schlinkert.
6719
- * Released under the MIT License.
6720
- */
6721
6780
  var toRegexRange_1;
6722
6781
  var hasRequiredToRegexRange;
6723
6782
  function requireToRegexRange() {
@@ -6929,12 +6988,6 @@ function requireToRegexRange() {
6929
6988
  toRegexRange_1 = toRegexRange;
6930
6989
  return toRegexRange_1;
6931
6990
  }
6932
- /*!
6933
- * fill-range <https://github.com/jonschlinkert/fill-range>
6934
- *
6935
- * Copyright (c) 2014-present, Jon Schlinkert.
6936
- * Licensed under the MIT License.
6937
- */
6938
6991
  var fillRange;
6939
6992
  var hasRequiredFillRange;
6940
6993
  function requireFillRange() {
@@ -7879,7 +7932,7 @@ var hasRequiredUtils$2;
7879
7932
  function requireUtils$2() {
7880
7933
  if (hasRequiredUtils$2) return utils$2;
7881
7934
  hasRequiredUtils$2 = 1;
7882
- (function(exports) {
7935
+ (function(exports$1) {
7883
7936
  const path2 = sysPath__default;
7884
7937
  const win32 = process.platform === "win32";
7885
7938
  const {
@@ -7888,36 +7941,36 @@ function requireUtils$2() {
7888
7941
  REGEX_SPECIAL_CHARS,
7889
7942
  REGEX_SPECIAL_CHARS_GLOBAL
7890
7943
  } = requireConstants$1();
7891
- exports.isObject = (val) => val !== null && typeof val === "object" && !Array.isArray(val);
7892
- exports.hasRegexChars = (str) => REGEX_SPECIAL_CHARS.test(str);
7893
- exports.isRegexChar = (str) => str.length === 1 && exports.hasRegexChars(str);
7894
- exports.escapeRegex = (str) => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, "\\$1");
7895
- exports.toPosixSlashes = (str) => str.replace(REGEX_BACKSLASH, "/");
7896
- exports.removeBackslashes = (str) => {
7944
+ exports$1.isObject = (val) => val !== null && typeof val === "object" && !Array.isArray(val);
7945
+ exports$1.hasRegexChars = (str) => REGEX_SPECIAL_CHARS.test(str);
7946
+ exports$1.isRegexChar = (str) => str.length === 1 && exports$1.hasRegexChars(str);
7947
+ exports$1.escapeRegex = (str) => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, "\\$1");
7948
+ exports$1.toPosixSlashes = (str) => str.replace(REGEX_BACKSLASH, "/");
7949
+ exports$1.removeBackslashes = (str) => {
7897
7950
  return str.replace(REGEX_REMOVE_BACKSLASH, (match) => {
7898
7951
  return match === "\\" ? "" : match;
7899
7952
  });
7900
7953
  };
7901
- exports.supportsLookbehinds = () => {
7954
+ exports$1.supportsLookbehinds = () => {
7902
7955
  const segs = process.version.slice(1).split(".").map(Number);
7903
7956
  if (segs.length === 3 && segs[0] >= 9 || segs[0] === 8 && segs[1] >= 10) {
7904
7957
  return true;
7905
7958
  }
7906
7959
  return false;
7907
7960
  };
7908
- exports.isWindows = (options2) => {
7961
+ exports$1.isWindows = (options2) => {
7909
7962
  if (options2 && typeof options2.windows === "boolean") {
7910
7963
  return options2.windows;
7911
7964
  }
7912
7965
  return win32 === true || path2.sep === "\\";
7913
7966
  };
7914
- exports.escapeLast = (input, char, lastIdx) => {
7967
+ exports$1.escapeLast = (input, char, lastIdx) => {
7915
7968
  const idx = input.lastIndexOf(char, lastIdx);
7916
7969
  if (idx === -1) return input;
7917
- if (input[idx - 1] === "\\") return exports.escapeLast(input, char, idx - 1);
7970
+ if (input[idx - 1] === "\\") return exports$1.escapeLast(input, char, idx - 1);
7918
7971
  return `${input.slice(0, idx)}\\${input.slice(idx)}`;
7919
7972
  };
7920
- exports.removePrefix = (input, state = {}) => {
7973
+ exports$1.removePrefix = (input, state = {}) => {
7921
7974
  let output = input;
7922
7975
  if (output.startsWith("./")) {
7923
7976
  output = output.slice(2);
@@ -7925,7 +7978,7 @@ function requireUtils$2() {
7925
7978
  }
7926
7979
  return output;
7927
7980
  };
7928
- exports.wrapOutput = (input, state = {}, options2 = {}) => {
7981
+ exports$1.wrapOutput = (input, state = {}, options2 = {}) => {
7929
7982
  const prepend = options2.contains ? "" : "^";
7930
7983
  const append = options2.contains ? "" : "$";
7931
7984
  let output = `${prepend}(?:${input})${append}`;
@@ -9859,12 +9912,6 @@ function requirePath() {
9859
9912
  return path;
9860
9913
  }
9861
9914
  var pattern = {};
9862
- /*!
9863
- * is-extglob <https://github.com/jonschlinkert/is-extglob>
9864
- *
9865
- * Copyright (c) 2014-2016, Jon Schlinkert.
9866
- * Licensed under the MIT License.
9867
- */
9868
9915
  var isExtglob;
9869
9916
  var hasRequiredIsExtglob;
9870
9917
  function requireIsExtglob() {
@@ -9883,12 +9930,6 @@ function requireIsExtglob() {
9883
9930
  };
9884
9931
  return isExtglob;
9885
9932
  }
9886
- /*!
9887
- * is-glob <https://github.com/jonschlinkert/is-glob>
9888
- *
9889
- * Copyright (c) 2014-2017, Jon Schlinkert.
9890
- * Released under the MIT License.
9891
- */
9892
9933
  var isGlob;
9893
9934
  var hasRequiredIsGlob;
9894
9935
  function requireIsGlob() {
@@ -10574,11 +10615,11 @@ var hasRequiredFs$2;
10574
10615
  function requireFs$2() {
10575
10616
  if (hasRequiredFs$2) return fs$2;
10576
10617
  hasRequiredFs$2 = 1;
10577
- (function(exports) {
10578
- Object.defineProperty(exports, "__esModule", { value: true });
10579
- exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;
10618
+ (function(exports$1) {
10619
+ Object.defineProperty(exports$1, "__esModule", { value: true });
10620
+ exports$1.createFileSystemAdapter = exports$1.FILE_SYSTEM_ADAPTER = void 0;
10580
10621
  const fs2 = require$$0$5;
10581
- exports.FILE_SYSTEM_ADAPTER = {
10622
+ exports$1.FILE_SYSTEM_ADAPTER = {
10582
10623
  lstat: fs2.lstat,
10583
10624
  stat: fs2.stat,
10584
10625
  lstatSync: fs2.lstatSync,
@@ -10586,11 +10627,11 @@ function requireFs$2() {
10586
10627
  };
10587
10628
  function createFileSystemAdapter(fsMethods) {
10588
10629
  if (fsMethods === void 0) {
10589
- return exports.FILE_SYSTEM_ADAPTER;
10630
+ return exports$1.FILE_SYSTEM_ADAPTER;
10590
10631
  }
10591
- return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);
10632
+ return Object.assign(Object.assign({}, exports$1.FILE_SYSTEM_ADAPTER), fsMethods);
10592
10633
  }
10593
- exports.createFileSystemAdapter = createFileSystemAdapter;
10634
+ exports$1.createFileSystemAdapter = createFileSystemAdapter;
10594
10635
  })(fs$2);
10595
10636
  return fs$2;
10596
10637
  }
@@ -10646,7 +10687,6 @@ function requireOut$3() {
10646
10687
  }
10647
10688
  return out$1;
10648
10689
  }
10649
- /*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
10650
10690
  var queueMicrotask_1;
10651
10691
  var hasRequiredQueueMicrotask;
10652
10692
  function requireQueueMicrotask() {
@@ -10658,7 +10698,6 @@ function requireQueueMicrotask() {
10658
10698
  }, 0));
10659
10699
  return queueMicrotask_1;
10660
10700
  }
10661
- /*! run-parallel. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
10662
10701
  var runParallel_1;
10663
10702
  var hasRequiredRunParallel;
10664
10703
  function requireRunParallel() {
@@ -10956,11 +10995,11 @@ var hasRequiredFs;
10956
10995
  function requireFs() {
10957
10996
  if (hasRequiredFs) return fs;
10958
10997
  hasRequiredFs = 1;
10959
- (function(exports) {
10960
- Object.defineProperty(exports, "__esModule", { value: true });
10961
- exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;
10998
+ (function(exports$1) {
10999
+ Object.defineProperty(exports$1, "__esModule", { value: true });
11000
+ exports$1.createFileSystemAdapter = exports$1.FILE_SYSTEM_ADAPTER = void 0;
10962
11001
  const fs2 = require$$0$5;
10963
- exports.FILE_SYSTEM_ADAPTER = {
11002
+ exports$1.FILE_SYSTEM_ADAPTER = {
10964
11003
  lstat: fs2.lstat,
10965
11004
  stat: fs2.stat,
10966
11005
  lstatSync: fs2.lstatSync,
@@ -10970,11 +11009,11 @@ function requireFs() {
10970
11009
  };
10971
11010
  function createFileSystemAdapter(fsMethods) {
10972
11011
  if (fsMethods === void 0) {
10973
- return exports.FILE_SYSTEM_ADAPTER;
11012
+ return exports$1.FILE_SYSTEM_ADAPTER;
10974
11013
  }
10975
- return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);
11014
+ return Object.assign(Object.assign({}, exports$1.FILE_SYSTEM_ADAPTER), fsMethods);
10976
11015
  }
10977
- exports.createFileSystemAdapter = createFileSystemAdapter;
11016
+ exports$1.createFileSystemAdapter = createFileSystemAdapter;
10978
11017
  })(fs);
10979
11018
  return fs;
10980
11019
  }
@@ -12048,13 +12087,13 @@ var hasRequiredSettings;
12048
12087
  function requireSettings() {
12049
12088
  if (hasRequiredSettings) return settings;
12050
12089
  hasRequiredSettings = 1;
12051
- (function(exports) {
12052
- Object.defineProperty(exports, "__esModule", { value: true });
12053
- exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;
12090
+ (function(exports$1) {
12091
+ Object.defineProperty(exports$1, "__esModule", { value: true });
12092
+ exports$1.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;
12054
12093
  const fs2 = require$$0$5;
12055
12094
  const os2 = require$$0$3;
12056
12095
  const CPU_COUNT = Math.max(os2.cpus().length, 1);
12057
- exports.DEFAULT_FILE_SYSTEM_ADAPTER = {
12096
+ exports$1.DEFAULT_FILE_SYSTEM_ADAPTER = {
12058
12097
  lstat: fs2.lstat,
12059
12098
  lstatSync: fs2.lstatSync,
12060
12099
  stat: fs2.stat,
@@ -12098,10 +12137,10 @@ function requireSettings() {
12098
12137
  return option2 === void 0 ? value : option2;
12099
12138
  }
12100
12139
  _getFileSystemMethods(methods = {}) {
12101
- return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods);
12140
+ return Object.assign(Object.assign({}, exports$1.DEFAULT_FILE_SYSTEM_ADAPTER), methods);
12102
12141
  }
12103
12142
  }
12104
- exports.default = Settings;
12143
+ exports$1.default = Settings;
12105
12144
  })(settings);
12106
12145
  return settings;
12107
12146
  }
@@ -12213,13 +12252,13 @@ var hasRequiredIdentity;
12213
12252
  function requireIdentity() {
12214
12253
  if (hasRequiredIdentity) return identity;
12215
12254
  hasRequiredIdentity = 1;
12216
- const ALIAS = Symbol.for("yaml.alias");
12217
- const DOC = Symbol.for("yaml.document");
12218
- const MAP = Symbol.for("yaml.map");
12219
- const PAIR = Symbol.for("yaml.pair");
12220
- const SCALAR = Symbol.for("yaml.scalar");
12221
- const SEQ = Symbol.for("yaml.seq");
12222
- const NODE_TYPE = Symbol.for("yaml.node.type");
12255
+ const ALIAS = /* @__PURE__ */ Symbol.for("yaml.alias");
12256
+ const DOC = /* @__PURE__ */ Symbol.for("yaml.document");
12257
+ const MAP = /* @__PURE__ */ Symbol.for("yaml.map");
12258
+ const PAIR = /* @__PURE__ */ Symbol.for("yaml.pair");
12259
+ const SCALAR = /* @__PURE__ */ Symbol.for("yaml.scalar");
12260
+ const SEQ = /* @__PURE__ */ Symbol.for("yaml.seq");
12261
+ const NODE_TYPE = /* @__PURE__ */ Symbol.for("yaml.node.type");
12223
12262
  const isAlias = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === ALIAS;
12224
12263
  const isDocument = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === DOC;
12225
12264
  const isMap = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === MAP;
@@ -12271,9 +12310,9 @@ function requireVisit() {
12271
12310
  if (hasRequiredVisit) return visit;
12272
12311
  hasRequiredVisit = 1;
12273
12312
  var identity2 = requireIdentity();
12274
- const BREAK = Symbol("break visit");
12275
- const SKIP = Symbol("skip children");
12276
- const REMOVE = Symbol("remove node");
12313
+ const BREAK = /* @__PURE__ */ Symbol("break visit");
12314
+ const SKIP = /* @__PURE__ */ Symbol("skip children");
12315
+ const REMOVE = /* @__PURE__ */ Symbol("remove node");
12277
12316
  function visit$1(node, visitor) {
12278
12317
  const visitor_ = initVisitor(visitor);
12279
12318
  if (identity2.isDocument(node)) {
@@ -12847,7 +12886,7 @@ function requireAlias() {
12847
12886
  toJS2.toJS(source, null, ctx);
12848
12887
  data = anchors3.get(source);
12849
12888
  }
12850
- if (!data || data.res === void 0) {
12889
+ if (data?.res === void 0) {
12851
12890
  const msg = "This should not happen: Alias anchor was not resolved?";
12852
12891
  throw new ReferenceError(msg);
12853
12892
  }
@@ -13798,7 +13837,7 @@ ${indent}:`;
13798
13837
  ${stringifyComment2.indentComment(cs, ctx.indent)}`;
13799
13838
  }
13800
13839
  if (valueStr === "" && !ctx.inFlow) {
13801
- if (ws === "\n")
13840
+ if (ws === "\n" && valueComment)
13802
13841
  ws = "\n\n";
13803
13842
  } else {
13804
13843
  ws += `
@@ -14545,7 +14584,7 @@ function requireStringifyNumber() {
14545
14584
  const num = typeof value === "number" ? value : Number(value);
14546
14585
  if (!isFinite(num))
14547
14586
  return isNaN(num) ? ".nan" : num < 0 ? "-.inf" : ".inf";
14548
- let n = JSON.stringify(value);
14587
+ let n = Object.is(value, -0) ? "-0" : JSON.stringify(value);
14549
14588
  if (!format && minFractionDigits && (!tag || tag === "tag:yaml.org,2002:float") && /^\d/.test(n)) {
14550
14589
  let i = n.indexOf(".");
14551
14590
  if (i < 0) {
@@ -15909,7 +15948,7 @@ function requireErrors() {
15909
15948
  if (/[^ ]/.test(lineStr)) {
15910
15949
  let count = 1;
15911
15950
  const end = error2.linePos[1];
15912
- if (end && end.line === line && end.col > col) {
15951
+ if (end?.line === line && end.col > col) {
15913
15952
  count = Math.max(1, Math.min(end.col - col, 80 - ci));
15914
15953
  }
15915
15954
  const pointer = " ".repeat(ci) + "^".repeat(count);
@@ -16275,7 +16314,7 @@ function requireResolveBlockSeq() {
16275
16314
  });
16276
16315
  if (!props.found) {
16277
16316
  if (props.anchor || props.tag || value) {
16278
- if (value && value.type === "block-seq")
16317
+ if (value?.type === "block-seq")
16279
16318
  onError(props.end, "BAD_INDENT", "All sequence items must start at the same column");
16280
16319
  else
16281
16320
  onError(offset, "MISSING_CHAR", "Sequence item without - indicator");
@@ -16472,7 +16511,7 @@ function requireResolveFlowCollection() {
16472
16511
  onError(valueProps.found, "KEY_OVER_1024_CHARS", "The : indicator must be at most 1024 chars after the start of an implicit flow sequence key");
16473
16512
  }
16474
16513
  } else if (value) {
16475
- if ("source" in value && value.source && value.source[0] === ":")
16514
+ if ("source" in value && value.source?.[0] === ":")
16476
16515
  onError(value, "MISSING_CHAR", `Missing space after : in ${fcName}`);
16477
16516
  else
16478
16517
  onError(valueProps.start, "MISSING_CHAR", `Missing , or : between ${fcName} items`);
@@ -16509,7 +16548,7 @@ function requireResolveFlowCollection() {
16509
16548
  const expectedEnd = isMap ? "}" : "]";
16510
16549
  const [ce, ...ee] = fc.end;
16511
16550
  let cePos = offset;
16512
- if (ce && ce.source === expectedEnd)
16551
+ if (ce?.source === expectedEnd)
16513
16552
  cePos = ce.offset + ce.source.length;
16514
16553
  else {
16515
16554
  const name = fcName[0].toUpperCase() + fcName.substring(1);
@@ -16575,7 +16614,7 @@ function requireComposeCollection() {
16575
16614
  let tag = ctx.schema.tags.find((t2) => t2.tag === tagName && t2.collection === expType);
16576
16615
  if (!tag) {
16577
16616
  const kt = ctx.schema.knownTags[tagName];
16578
- if (kt && kt.collection === expType) {
16617
+ if (kt?.collection === expType) {
16579
16618
  ctx.schema.tags.push(Object.assign({}, kt, { default: false }));
16580
16619
  tag = kt;
16581
16620
  } else {
@@ -17711,9 +17750,9 @@ var hasRequiredCstVisit;
17711
17750
  function requireCstVisit() {
17712
17751
  if (hasRequiredCstVisit) return cstVisit;
17713
17752
  hasRequiredCstVisit = 1;
17714
- const BREAK = Symbol("break visit");
17715
- const SKIP = Symbol("skip children");
17716
- const REMOVE = Symbol("remove item");
17753
+ const BREAK = /* @__PURE__ */ Symbol("break visit");
17754
+ const SKIP = /* @__PURE__ */ Symbol("skip children");
17755
+ const REMOVE = /* @__PURE__ */ Symbol("remove item");
17717
17756
  function visit2(cst2, visitor) {
17718
17757
  if ("type" in cst2 && cst2.type === "document")
17719
17758
  cst2 = { start: cst2.start, value: cst2.value };
@@ -18670,7 +18709,7 @@ function requireParser() {
18670
18709
  }
18671
18710
  *step() {
18672
18711
  const top = this.peek(1);
18673
- if (this.type === "doc-end" && (!top || top.type !== "doc-end")) {
18712
+ if (this.type === "doc-end" && top?.type !== "doc-end") {
18674
18713
  while (this.stack.length > 0)
18675
18714
  yield* this.pop();
18676
18715
  this.stack.push({
@@ -19148,7 +19187,7 @@ function requireParser() {
19148
19187
  do {
19149
19188
  yield* this.pop();
19150
19189
  top = this.peek(1);
19151
- } while (top && top.type === "flow-collection");
19190
+ } while (top?.type === "flow-collection");
19152
19191
  } else if (fc.end.length === 0) {
19153
19192
  switch (this.type) {
19154
19193
  case "comma":
@@ -19607,7 +19646,7 @@ const crawl = async (options2) => {
19607
19646
  ignore: [`**/${exclusionPattern}`]
19608
19647
  });
19609
19648
  globbedFiles.push(...crawledFiles);
19610
- return globbedFiles.sort();
19649
+ return globbedFiles.toSorted();
19611
19650
  };
19612
19651
  const sha1 = (filepath) => {
19613
19652
  const hash = createHash("sha1");
@@ -20100,7 +20139,7 @@ const serverInfo = async (options2) => {
20100
20139
  console.log(` Videos: ${stats.videos}`);
20101
20140
  console.log(` Total: ${stats.total}`);
20102
20141
  };
20103
- const version = "2.2.103";
20142
+ const version = "2.2.104";
20104
20143
  const defaultConfigDirectory = path$1.join(os.homedir(), ".config/immich/");
20105
20144
  const defaultConcurrency = Math.max(1, os.cpus().length - 1);
20106
20145
  const program = new Command().name("immich").version(version).description("Command line interface for Immich").addOption(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@immich/cli",
3
- "version": "2.2.103",
3
+ "version": "2.2.104",
4
4
  "description": "Command Line Interface (CLI) for Immich",
5
5
  "type": "module",
6
6
  "exports": "./dist/index.js",
@@ -20,7 +20,7 @@
20
20
  "@types/lodash-es": "^4.17.12",
21
21
  "@types/micromatch": "^4.0.9",
22
22
  "@types/mock-fs": "^4.13.1",
23
- "@types/node": "^22.19.1",
23
+ "@types/node": "^24.10.3",
24
24
  "@vitest/coverage-v8": "^3.0.0",
25
25
  "byte-size": "^9.0.0",
26
26
  "cli-progress": "^3.12.0",
@@ -28,10 +28,10 @@
28
28
  "eslint": "^9.14.0",
29
29
  "eslint-config-prettier": "^10.1.8",
30
30
  "eslint-plugin-prettier": "^5.1.3",
31
- "eslint-plugin-unicorn": "^60.0.0",
31
+ "eslint-plugin-unicorn": "^62.0.0",
32
32
  "globals": "^16.0.0",
33
33
  "mock-fs": "^5.2.0",
34
- "prettier": "^3.2.5",
34
+ "prettier": "^3.7.4",
35
35
  "prettier-plugin-organize-imports": "^4.0.0",
36
36
  "typescript": "^5.3.3",
37
37
  "typescript-eslint": "^8.28.0",
@@ -57,7 +57,7 @@
57
57
  "micromatch": "^4.0.8"
58
58
  },
59
59
  "volta": {
60
- "node": "24.11.0"
60
+ "node": "24.11.1"
61
61
  },
62
62
  "scripts": {
63
63
  "build": "vite build",